diff --git a/.travis.yml b/.travis.yml
index ca2574bc846a60dce0bc6731a5353bda9920497d..5bc5f49b2e530846c5a272598bdc4f332ec7ffc2 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -128,7 +128,7 @@ script:
  - php upgrade.php 3.6.0 3.7.0 ignoredbversion > upgrade360370.log
  - php upgrade2.php 3.6.0 3.7.0 ignoredbversion > upgrade360370-2.log
  - php upgrade.php 3.7.0 3.8.0 ignoredbversion > upgrade370380.log
- - cat upgrade370380.log
+# - cat upgrade370380.log
  - php upgrade2.php 3.7.0 3.8.0 ignoredbversion > upgrade370380-2.log
 # - cat upgrade370380-2.log
  - cd ../..
diff --git a/ChangeLog b/ChangeLog
index 68d6b1848f14a0d16a5a755cf7f541cd6194680f..eb82166af8b258fa4b6e4e6a18a2b74211dca09a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -41,16 +41,40 @@ Dolibarr better:
 - Hooks 'printLeftBlock' and 'formConfirm' are now compliant with hook development rules. They are
   "addreplace" hooks, so you must return content with "->resprints='mycontent'" and not with "return 'mycontent'"  
 - All fields "fk_societe" were renamed into "fk_soc".
+- Method select_PriceBaseType and load_PriceBaseType were merged into selectPriceBaseType
 
-***** ChangeLog for 3.7.1 compared to 3.7.* *****
-- Fix: Bug in the new photo system
-- Fix: Error management
-- Fix: [ Bug #2714 ] Members -> Memberxy-> Agenda -> technical Error
-- Fix: [ Bug #2713 ] 3.7.0 mailing-unsubscribe.php not unsubscribe
 
-- Path to save photos of products was moved in 3.7.0 to match path of other attached files. If you had loose 
-  your photo on the photo tab of products, you can set the constant "PRODUCT_USE_OLD_PATH_FOR_PHOTO" to
-  restore old path.
+***** ChangeLog for 3.7.2 compared to 3.7.1 *****
+FIX [ bug #2855 ] Wrong translation key in localtax report page
+FIX [ bug #1852 ] JS error when editing a customer order line
+FIX [ bug #2900 ] Courtesy title is not stored in create thirdparty form
+
+***** ChangeLog for 3.7.1 compared to 3.7.* *****
+FIX Bug in the new photo system
+FIX Error management
+FIX [ Bug #2714 ] Members -> Memberxy-> Agenda -> technical Error
+FIX [ Bug #2713 ] 3.7.0 mailing-unsubscribe.php not unsubscribe
+FIX #2901
+FIX when we create an agenda event with "Not applicable" status, it is automatically saved with "To do" status
+FIX check the user status during authentication
+FIX top links menu have target attribute with wrong value
+FIX extrafields required on thirdparty
+FIX create contact with extrafield is null when it is require
+FIX width multiselect
+FIX "script" tag with wrong syntax
+Fix bug debian 786479
+FIX update usergroup name
+Fix facturestats was not filtering on invoice type
+FIX #2856 : Wrong table design
+FIX button create payment hide if tax amount is less than 1
+FIX event for restricted user was restricted if company null
+FIX send mail, copy sendto don't read the list of contact
+FIX Properly escape untrusted data to prevent HTML injection.
+FIX send mail, copy sendto don't read the list of contact
+
+Path to save photos of products was moved in 3.7.0 to match path of other attached files. If you had loose 
+your photo on the photo tab of products, you can set the constant "PRODUCT_USE_OLD_PATH_FOR_PHOTO" to
+restore old path.
 
 WARNING: 
 
@@ -236,8 +260,8 @@ Dolibarr better:
 - Table llx_c_pays were renamed into llx_c_country.  
 - Triggers *_BUILDDOC are removed. Building a doc is not a business event. For action after 
   creation of a pdf or odt, hook "afterPDFCreation" or "afterODTCreation" must be used instead.
-- A lot of pages called fiche.php were renamed into card.php
-- A lot of pages called liste.php were renamed into list.php
+- A lot of pages named fiche.php were renamed into card.php
+- A lot of pages named liste.php were renamed into list.php
 - If you used warehouse/stock module, recheck setup of stock increase/decrease rules of the
   warehouse module and your Point Of Sale module setup if you use one.
 - Replaced USER_UPDATE_SESSION trigger with an updateSession hook may break modules using it.
@@ -279,6 +303,7 @@ Dolibarr better:
 - Fix: [ bug #2545 ] Missing object_margin.png in Amarok theme
 - Fix: [ bug #2542 ] Contracts store localtax preferences
 - Fix: Bad permission assignments for stock movements actions
+- Fix: [ bug #2891 ] Category hooks do not work
 
 ***** ChangeLog for 3.6.2 compared to 3.6.1 *****
 - Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice.
@@ -453,6 +478,10 @@ Fix: [ bug #2577 ] Incorrect invoice status in "Linked objects" page of a projec
 Fix: [ bug #2576 ] Unable to edit a dictionary entry that has # in its ref
 Fix: [ bug #2758 ] Product::update sets product note to "null" when $prod->note is null
 Fix: [ bug #2757 ] Deleting product category photo gives "Forbidden access" error
+Fix: [ bug #2976 ] "Report" tab is the current tab but it is not marked as selected by the UI
+Fix: [ bug #2861 ] Undefined variable $res when migrating
+Fix: [ bug #2837 ] Product list table column header does not match column body
+Fix: [ bug #2835 ] Customer prices of a product shows incorrect history order
 
 ***** ChangeLog for 3.5.6 compared to 3.5.5 *****
 Fix: Avoid missing class error for fetch_thirdparty method #1973
diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl
index c667754d4aba747d516f1698c20d44ef47f9c9fe..bdfc9d8972a112ecb55d3ed9fc7d218c222fe9f7 100755
--- a/build/makepack-dolibarr.pl
+++ b/build/makepack-dolibarr.pl
@@ -455,8 +455,9 @@ if ($nboftargetok) {
 		$ret=`rm -fr $BUILDROOT/$PROJECT/documents`;
 		$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/document`;
 		$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/documents`;
-		# Removed known external modules to avoir any error when packaging on test env 
+		# Removed known external modules to avoid any error when packaging from env where external modules are tested 
 		$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/ancotec*`;
+	    $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/cabinetmed*`;
 	    $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/calling*`;
 	    $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/bootstrap*`;
 	    $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/custom*`;
@@ -981,10 +982,10 @@ if ($nboftargetok) {
 			mkdir($DESTI.'/package_windows');
 			if (-d $DESTI.'/package_windows') { $NEWDESTI=$DESTI.'/package_windows'; } 
 
-     		print "Remove target $FILENAMEEXEDOLIWAMP.exe...\n";
+     		print "Remove target $NEWDESTI/$FILENAMEEXEDOLIWAMP.exe...\n";
     		unlink "$NEWDESTI/$FILENAMEEXEDOLIWAMP.exe";
  
- 			print "Check that in your Wine setup, you create a Z: drive that point to your /tmp directory.\n";
+ 			print "Check that in your Wine setup, you create a Z: drive that point to your / directory.\n";
 
  			$SOURCEBACK=$SOURCE;
  			$SOURCEBACK =~ s/\//\\/g;
diff --git a/build/makepack-howto.txt b/build/makepack-howto.txt
index 7f814a826df47232abe620268816f60b43e7adbe..2cc29a14a9a44203877426f5a18d03b2b65fcb0d 100644
--- a/build/makepack-howto.txt
+++ b/build/makepack-howto.txt
@@ -8,7 +8,7 @@ This files describe steps made by Dolibarr packaging team to make a
 beta version of Dolibarr, step by step.
 
 - Check all files are commited.
-- Update version/info in ChangeLog. To generate a changelog, you can do "git log `git merge-base x.y origin/develop`..x.y --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -i -e '^FIX\|NEW'"
+- Update version/info in ChangeLog. To generate a changelog, you can do "git log `git merge-base (x.y)-1 origin/develop`..x.y(.z) --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -i -e '^FIX\|NEW'"
 - Update version number with x.y.z-w in htdocs/filefunc.inc.php
 - Update version number with x.y.z-w in build/debian/changelog
 - Commit all changes.
@@ -29,7 +29,7 @@ This files describe steps made by Dolibarr packaging team to make a
 complete release of Dolibarr, step by step.
 
 - Check all files are commited.
-- Update version/info in ChangeLog. To generate a changelog, you can do "git log `git merge-base x.y origin/develop`..x.y --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -i -e '^FIX\|NEW'"
+- Update version/info in ChangeLog. To generate a changelog, you can do "git log `git merge-base (x.y)-1 origin/develop`..x.y(.z) --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -i -e '^FIX\|NEW'"
 - Update version number with x.y.z in htdocs/filefunc.inc.php
 - Update version number with x.y.z in build/debian/changelog
 - Commit all changes.
diff --git a/dev/ansible/README.md b/dev/ansible/README.md
index aeed9fc69833fd5c4f1b49fcda114d7f9b198dab..e498ebc334038736a58f257c8eca632a90332e48 100644
--- a/dev/ansible/README.md
+++ b/dev/ansible/README.md
@@ -3,7 +3,7 @@
 This is a quick tutorial:
 
 * Install ansible:
-> apt-get install 
+> apt-get install ansible
 
 * Add ip of server to manage into
 /etc/ansible/hosts
diff --git a/dev/codesniffer/ruleset.xml b/dev/codesniffer/ruleset.xml
index 7f16ad02a7671ff3ad6e43ce1f8cdd5165020b61..9b5c0931650adcadb6007f1249fdc3ea243b576d 100755
--- a/dev/codesniffer/ruleset.xml
+++ b/dev/codesniffer/ruleset.xml
@@ -350,6 +350,11 @@
 	</rule>
 	<rule ref="PEAR.NamingConventions.ValidVariableName" />
 
+	<!-- This is not in PSR2 -->
+	<rule ref="PEAR.NamingConventions.ValidVariableName.PrivateNoUnderscore">
+        <severity>0</severity>
+    </rule>
+	
 	<rule ref="PEAR.WhiteSpace.ObjectOperatorIndent" />
 
 	<!-- Need to be commented to be disabled
diff --git a/dev/fixaltlanguages.sh b/dev/fixaltlanguages.sh
index bfb9aa900b60f0f9e29a6db3963b6aeaf3cb96d0..7f42be5b9541e89383fc5d943e2874315f182e9a 100755
--- a/dev/fixaltlanguages.sh
+++ b/dev/fixaltlanguages.sh
@@ -49,7 +49,7 @@ then
     	    if [ -d $reflang ]
     	    then
 		    	echo "***** Process language "$aa"_"$bb" - Search original into "$reflang
-    			echo $dirshort est une langue alternative de $reflang
+    			echo $dirshort is an alternative language of $reflang
     			echo ./dev/translation/strip_language_file.php $aa"_"$aaupper $aa"_"$bb $2
     			./dev/translation/strip_language_file.php $aa"_"$aaupper $aa"_"$bb $2
     			for fic in `ls htdocs/langs/${aa}_${bb}/*.delta`; do f=`echo $fic | sed -e 's/\.delta//'`; echo $f; mv $f.delta $f; done 
diff --git a/dev/multitail/.multitailrc b/dev/multitail/.multitailrc
new file mode 100644
index 0000000000000000000000000000000000000000..6db59463a4a3d160882644237e804f8300d0473c
--- /dev/null
+++ b/dev/multitail/.multitailrc
@@ -0,0 +1,12 @@
+# This is an example of multitail setup file you can use to analyze dolibarr log files.
+# Usage: multitail -cS dolibarr documents/dolibarr.log
+colorscheme:dolibarr
+bright:1
+cs_re:yellow,red:.*EMERG.*
+cs_re:white,red:.*ALERT.*
+cs_re:green,red:.*CRIT.*
+cs_re:red:.*ERR.*
+cs_re:white,yellow:.*WARNING.*
+cs_re:green,yellow:.*NOTICE.*
+cs_re:green:.*INFO.*
+cs_re:white:.*DEBUG.*
\ No newline at end of file
diff --git a/dev/skeletons/modMyModule.class.php b/dev/skeletons/modMyModule.class.php
index 5bed0a26d33addae45dfc6845965f66575470f74..7c207e9877b3d4b6b3562cc0a1df1bc33e9e9d2a 100644
--- a/dev/skeletons/modMyModule.class.php
+++ b/dev/skeletons/modMyModule.class.php
@@ -167,6 +167,12 @@ class modMyModule extends DolibarrModules
 		// Example:
 		//$this->boxes=array(array(0=>array('file'=>'myboxa.php','note'=>'','enabledbydefaulton'=>'Home'),1=>array('file'=>'myboxb.php','note'=>''),2=>array('file'=>'myboxc.php','note'=>'')););
 
+		// Cronjobs
+		$this->cronjobs = array();			// List of cron jobs entries to add
+		// Example: $this->cronjobs=array(0=>array('label'=>'My label', 'jobtype'=>'method', 'class'=>'MyClass', 'method'=>'myMethod', 'parameters'=>'', 'comment'=>'Comment', 'frequency'=>3600, 'unitfrequency'=>3600),
+		//                                1=>array('label'=>'My label', 'jobtype'=>'command', 'command'=>'', 'parameters'=>'', 'comment'=>'Comment', 'frequency'=>3600, 'unitfrequency'=>3600)
+		// );
+
 		// Permissions
 		$this->rights = array();		// Permission array used by this module
 		$r=0;
@@ -180,7 +186,6 @@ class modMyModule extends DolibarrModules
 		// $this->rights[$r][5] = 'level2';				// In php code, permission will be checked by test if ($user->rights->permkey->level1->level2)
 		// $r++;
 
-
 		// Main menu entries
 		$this->menu = array();			// List of menus to add
 		$r=0;
diff --git a/dev/skeletons/skeleton_class.class.php b/dev/skeletons/skeleton_class.class.php
index 1f5b56e661b8b6d0fc8cf9dc45f4eef52f0f9eef..21c1beda9a13999c92a0cbe7787d9420ef793c02 100644
--- a/dev/skeletons/skeleton_class.class.php
+++ b/dev/skeletons/skeleton_class.class.php
@@ -1,7 +1,8 @@
 <?php
-/* Copyright (C) 2007-2012 Laurent Destailleur  <eldy@users.sourceforge.net>
- * Copyright (C) 2014	   Juanjo Menent		<jmenent@2byte.es>
- * Copyright (C) 2015	   Florian Henry		<florian.henry@open-concept.pro>
+/* Copyright (C) 2007-2012  Laurent Destailleur <eldy@users.sourceforge.net>
+ * Copyright (C) 2014       Juanjo Menent       <jmenent@2byte.es>
+ * Copyright (C) 2015       Florian Henry       <florian.henry@open-concept.pro>
+ * Copyright (C) 2015       Raphaël Doursenaud  <rdoursenaud@gpcsolutions.fr>
  * Copyright (C) ---Put here your own copyright and developer email---
  *
  * This program is free software; you can redistribute it and/or modify
@@ -19,407 +20,463 @@
  */
 
 /**
- *  \file       dev/skeletons/skeleton_class.class.php
- *  \ingroup    mymodule othermodule1 othermodule2
- *  \brief      This file is an example for a CRUD class file (Create/Read/Update/Delete)
- *				Put here some comments
+ * \file    dev/skeletons/skeleton_class.class.php
+ * \ingroup mymodule othermodule1 othermodule2
+ * \brief   This file is an example for a CRUD class file (Create/Read/Update/Delete)
+ *          Put some comments here
  */
 
 // Put here all includes required by your class file
-require_once(DOL_DOCUMENT_ROOT."/core/class/commonobject.class.php");
-//require_once(DOL_DOCUMENT_ROOT."/societe/class/societe.class.php");
-//require_once(DOL_DOCUMENT_ROOT."/product/class/product.class.php");
-
+require_once DOL_DOCUMENT_ROOT . '/core/class/commonobject.class.php';
+//require_once DOL_DOCUMENT_ROOT . '/societe/class/societe.class.php';
+//require_once DOL_DOCUMENT_ROOT . '/product/class/product.class.php';
 
 /**
- *	Put here description of your class
+ * Class Skeleton_Class
+ *
+ * Put here description of your class
  */
 class Skeleton_Class extends CommonObject
 {
-	var $db;							//!< To store db handler
-	var $error;							//!< To return error code (or message)
-	var $errors=array();				//!< To return several error codes (or messages)
-	var $element='skeleton';			//!< Id that identify managed objects
-	var $table_element='skeleton';		//!< Name of table without prefix where object is stored
+	/**
+	 * @var DoliDb Database handler
+	 */
+	protected $db;
+
+	/**
+	 * @var string Error code (or message)
+	 * @deprecated
+	 * @see Skeleton_Class::errors
+	 */
+	public $error;
+	/**
+	 * @var string[] Error codes (or messages)
+	 */
+	public $errors = array();
+	/**
+	 * @var string Id to identify managed objects
+	 */
+	public $element = 'skeleton';
+	/**
+	 * @var string Name of table without prefix where object is stored
+	 */
+	public $table_element = 'skeleton';
 
-	var $lines=array();
+	/**
+	 * @var Skeleton_ClassLine[] Lines
+	 */
+	public $lines = array();
 
-    var $id;
-    var $prop1;
-    var $prop2;
+	/**
+	 * @var int ID
+	 */
+	public $id;
+	/**
+	 * @var mixed Sample property 1
+	 */
+	public $prop1;
+	/**
+	 * @var mixed Sample property 2
+	 */
+	public $prop2;
 	//...
 
+	/**
+	 * Constructor
+	 *
+	 * @param DoliDb $db Database handler
+	 */
+	public function __construct( DoliDB $db )
+	{
+		$this->db = $db;
+
+		return 1;
+	}
+
+	/**
+	 * Create object into database
+	 *
+	 * @param  User $user      User that creates
+	 * @param  bool $notrigger false=launch triggers after, true=disable triggers
+	 *
+	 * @return int <0 if KO, Id of created object if OK
+	 */
+	public function create( User $user, $notrigger = false )
+	{
+		dol_syslog( __METHOD__, LOG_DEBUG );
 
-    /**
-     *  Constructor
-     *
-     *  @param	DoliDb		$db      Database handler
-     */
-    function __construct($db)
-    {
-        $this->db = $db;
-        return 1;
-    }
-
-
-    /**
-     *  Create object into database
-     *
-     *  @param	User	$user        User that creates
-     *  @param  int		$notrigger   0=launch triggers after, 1=disable triggers
-     *  @return int      		   	 <0 if KO, Id of created object if OK
-     */
-    function create($user, $notrigger=0)
-    {
-    	global $conf, $langs;
-		$error=0;
+		$error = 0;
 
 		// Clean parameters
-        if (isset($this->prop1)) $this->prop1=trim($this->prop1);
-        if (isset($this->prop2)) $this->prop2=trim($this->prop2);
+		if (isset( $this->prop1 )) {
+			$this->prop1 = trim( $this->prop1 );
+		}
+		if (isset( $this->prop2 )) {
+			$this->prop2 = trim( $this->prop2 );
+		}
 		//...
 
 		// Check parameters
 		// Put here code to add control on parameters values
 
-        // Insert request
-		$sql = "INSERT INTO ".MAIN_DB_PREFIX.$this->table_element."(";
-		$sql.= " field1,";
-		$sql.= " field2";
+		// Insert request
+		$sql = 'INSERT INTO ' . MAIN_DB_PREFIX . $this->table_element . '(';
+		$sql .= ' field1,';
+		$sql .= ' field2';
 		//...
-        $sql.= ") VALUES (";
-        $sql.= " '".$this->prop1."',";
-        $sql.= " '".$this->prop2."'";
+		$sql .= ') VALUES (';
+		$sql .= ' \'' . $this->prop1 . '\',';
+		$sql .= ' \'' . $this->prop2 . '\'';
 		//...
-		$sql.= ")";
+		$sql .= ')';
 
 		$this->db->begin();
 
-	   	dol_syslog(__METHOD__, LOG_DEBUG);
-        $resql=$this->db->query($sql);
-    	if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
+		$resql = $this->db->query( $sql );
+		if (!$resql) {
+			$error ++;
+			$this->errors[] = 'Error ' . $this->db->lasterror();
+			dol_syslog( __METHOD__ . ' ' . join( ',', $this->errors ), LOG_ERR );
+		}
 
-		if (! $error)
-        {
-            $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.$this->table_element);
+		if (!$error) {
+			$this->id = $this->db->last_insert_id( MAIN_DB_PREFIX . $this->table_element );
 
-			if (! $notrigger)
-			{
-	            // Uncomment this and change MYOBJECT to your own tag if you
-	            // want this action to call a trigger.
+			if (!$notrigger) {
+				// Uncomment this and change MYOBJECT to your own tag if you
+				// want this action to call a trigger.
 
-	            //// Call triggers
-	            //$result=$this->call_trigger('MYOBJECT_CREATE',$user);
-	            //if ($result < 0) $error++;
-	            //// End call triggers
+				//// Call triggers
+				//$result=$this->call_trigger('MYOBJECT_CREATE',$user);
+				//if ($result < 0) $error++;
+				//// End call triggers
 			}
-        }
+		}
 
-        // Commit or rollback
-        if ($error)
-		{
+		// Commit or rollback
+		if ($error) {
 			$this->db->rollback();
-			return -1*$error;
-		}
-		else
-		{
+
+			return - 1 * $error;
+		} else {
 			$this->db->commit();
-            return $this->id;
+
+			return $this->id;
 		}
-    }
-
-
-    /**
-     *  Load object in memory from the database
-     *
-     *  @param	int		$id    	Id object
-     *  @param	string	$ref	Ref
-     *  @return int          	<0 if KO, 0 if not found, >0 if OK
-     */
-    function fetch($id,$ref='')
-    {
-    	global $langs;
-        $sql = "SELECT";
-		$sql.= " t.rowid,";
-		$sql.= " t.field1,";
-		$sql.= " t.field2";
+	}
+
+	/**
+	 * Load object in memory from the database
+	 *
+	 * @param int    $id  Id object
+	 * @param string $ref Ref
+	 *
+	 * @return int <0 if KO, 0 if not found, >0 if OK
+	 */
+	public function fetch( $id, $ref = null )
+	{
+		dol_syslog( __METHOD__, LOG_DEBUG );
+
+		$sql = 'SELECT';
+		$sql .= ' t.rowid,';
+		$sql .= ' t.field1,';
+		$sql .= ' t.field2';
 		//...
-        $sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element." as t";
-        if ($ref) $sql.= " WHERE t.ref = '".$ref."'";
-        else $sql.= " WHERE t.rowid = ".$id;
-
-    	dol_syslog(get_class($this)."::fetch");
-        $resql=$this->db->query($sql);
-        if ($resql)
-        {
-        	$numrows = $this->db->num_rows($resql);
-            if ($numrows)
-            {
-                $obj = $this->db->fetch_object($resql);
-
-                $this->id    = $obj->rowid;
-                $this->prop1 = $obj->field1;
-                $this->prop2 = $obj->field2;
+		$sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element . ' as t';
+		if (null !== $ref) {
+			$sql .= ' WHERE t.ref = ' . '\'' . $ref . '\'';
+		} else {
+			$sql .= ' WHERE t.rowid = ' . $id;
+		}
+
+		$resql = $this->db->query( $sql );
+		if ($resql) {
+			$numrows = $this->db->num_rows( $resql );
+			if ($numrows) {
+				$obj = $this->db->fetch_object( $resql );
+
+				$this->id = $obj->rowid;
+				$this->prop1 = $obj->field1;
+				$this->prop2 = $obj->field2;
 				//...
-            }
-            $this->db->free($resql);
-
-            return ($numrows?1:0);
-        }
-        else
-        {
-      	    $this->error="Error ".$this->db->lasterror();
-            return -1;
-        }
-    }
-
-    /**
-     *  Load object in memory from the database
-     *
-     * @param string $sortorder Sort Order
+			}
+			$this->db->free( $resql );
+
+			if ($numrows) {
+				return 1;
+			} else {
+				return 0;
+			}
+		} else {
+			$this->errors[] = 'Error ' . $this->db->lasterror();
+			dol_syslog( __METHOD__ . ' ' . join( ',', $this->errors ), LOG_ERR );
+
+			return - 1;
+		}
+	}
+
+	/**
+	 * Load object in memory from the database
+	 *
+	 * @param string $sortorder Sort Order
 	 * @param string $sortfield Sort field
-	 * @param int $limit offset limit
-	 * @param int $offset offset limit
-	 * @param array $filter filter array
+	 * @param int    $limit     offset limit
+	 * @param int    $offset    offset limit
+	 * @param array  $filter    filter array
+	 *
 	 * @return int <0 if KO, >0 if OK
-     */
-    function fetchAll($sortorder, $sortfield, $limit, $offset, $filter = array())
-    {
-    	global $langs;
-    	$sql = "SELECT";
-    	$sql.= " t.rowid,";
-    	$sql.= " t.field1,";
-    	$sql.= " t.field2";
-    	//...
-    	$sql.= " FROM ".MAIN_DB_PREFIX."mytable as t";
-
-    	// Manage filter
-    	$sqlwhere=array();
-    	if (count($filter)>0) {
-    		foreach ( $filter as $key => $value ) {
-    			//$sqlwhere []= ' AND '. $key . ' LIKE \'%' . $this->db->escape($value) . '%\'';
-    		}
-    	}
-    	if (count($sqlwhere)>0) {
-    		$sql.= ' WHERE '.implode(' AND ', $sqlwhere);
-    	}
-    	$sql .= " ORDER BY " . $sortfield . " " . $sortorder . " " . $this->db->plimit($limit + 1, $offset);
-
-    	$this->lines = array ();
-
-    	dol_syslog(get_class($this)."::fetchAll", LOG_DEBUG);
-    	$resql=$this->db->query($sql);
-    	if ($resql)
-    	{
-    		$num = $this->db->num_rows($resql);
-
-    		while ($obj = $this->db->fetch_object($resql))
-    		{
-    			$line=new Skeleton_ClassLine();
-
-    			$line->id    = $obj->rowid;
-    			$line->prop1 = $obj->field1;
-    			$line->prop2 = $obj->field2;
-
-    			$this->lines[]=$line;
-    			//...
-    		}
-    		$this->db->free($resql);
-
-    		return $num;
-    	}
-    	else
-    	{
-    		$this->error="Error ".$this->db->lasterror();
-    		dol_syslog(get_class($this)."::fetchAll ".$this->error, LOG_ERR);
-    		return -1;
-    	}
-    }
-
-
-    /**
-     *  Update object into database
-     *
-     *  @param	User	$user        User that modifies
-     *  @param  int		$notrigger	 0=launch triggers after, 1=disable triggers
-     *  @return int     		   	 <0 if KO, >0 if OK
-     */
-    function update($user, $notrigger=0)
-    {
-    	global $conf, $langs;
-		$error=0;
+	 */
+	public function fetchAll( $sortorder, $sortfield, $limit, $offset, array $filter = array() )
+	{
+		dol_syslog( __METHOD__, LOG_DEBUG );
+
+		$sql = 'SELECT';
+		$sql .= ' t.rowid,';
+		$sql .= ' t.field1,';
+		$sql .= ' t.field2';
+		//...
+		$sql .= ' FROM ' . MAIN_DB_PREFIX . 'mytable as t';
+
+		// Manage filter
+		$sqlwhere = array();
+		if (count( $filter ) > 0) {
+			foreach ($filter as $key => $value) {
+				$sqlwhere [] = ' AND ' . $key . ' LIKE \'%' . $this->db->escape( $value ) . '%\'';
+			}
+		}
+		if (count( $sqlwhere ) > 0) {
+			$sql .= ' WHERE ' . implode( ' AND ', $sqlwhere );
+		}
+		$sql .= ' ORDER BY ' . $sortfield . ' ' . $sortorder . ' ' . $this->db->plimit( $limit + 1, $offset );
+
+		$this->lines = array();
+
+		$resql = $this->db->query( $sql );
+		if ($resql) {
+			$num = $this->db->num_rows( $resql );
+
+			while ($obj = $this->db->fetch_object( $resql )) {
+				$line = new Skeleton_ClassLine();
+
+				$line->id = $obj->rowid;
+				$line->prop1 = $obj->field1;
+				$line->prop2 = $obj->field2;
+
+				$this->lines[] = $line;
+				//...
+			}
+			$this->db->free( $resql );
+
+			return $num;
+		} else {
+			$this->errors[] = 'Error ' . $this->db->lasterror();
+			dol_syslog( __METHOD__ . ' ' . join( ',', $this->errors ), LOG_ERR );
+
+			return - 1;
+		}
+	}
+
+	/**
+	 * Update object into database
+	 *
+	 * @param  User $user      User that modifies
+	 * @param  bool $notrigger false=launch triggers after, true=disable triggers
+	 *
+	 * @return int <0 if KO, >0 if OK
+	 */
+	public function update( User $user, $notrigger = false )
+	{
+		$error = 0;
+
+		dol_syslog( __METHOD__, LOG_DEBUG );
 
 		// Clean parameters
-        if (isset($this->prop1)) $this->prop1=trim($this->prop1);
-        if (isset($this->prop2)) $this->prop2=trim($this->prop2);
+		if (isset( $this->prop1 )) {
+			$this->prop1 = trim( $this->prop1 );
+		}
+		if (isset( $this->prop2 )) {
+			$this->prop2 = trim( $this->prop2 );
+		}
 		//...
 
 		// Check parameters
 		// Put here code to add a control on parameters values
 
-        // Update request
-        $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element." SET";
-        $sql.= " field1=".(isset($this->field1)?"'".$this->db->escape($this->field1)."'":"null").",";
-        $sql.= " field2=".(isset($this->field2)?"'".$this->db->escape($this->field2)."'":"null")."";
+		// Update request
+		$sql = 'UPDATE ' . MAIN_DB_PREFIX . $this->table_element . ' SET';
+		if (isset( $this->field1 )) {
+			$sql .= ' field1=\'' . $this->db->escape( $this->field1 ) . '\',';
+		} else {
+			$sql .= ' field1=null' . ',';
+		}
+		if (isset( $this->field2 )) {
+			$sql .= ' field2=\'' . $this->db->escape( $this->field2 ) . '\'';
+		} else {
+			$sql .= ' field2=null';
+		}
 		//...
-        $sql.= " WHERE rowid=".$this->id;
+		$sql .= ' WHERE rowid=' . $this->id;
 
 		$this->db->begin();
 
-		dol_syslog(__METHOD__);
-        $resql = $this->db->query($sql);
-    	if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
+		$resql = $this->db->query( $sql );
+		if (!$resql) {
+			$error ++;
+			$this->errors[] = 'Error ' . $this->db->lasterror();
+			dol_syslog( __METHOD__ . ' ' . join( ',', $this->errors ), LOG_ERR );
+		}
 
-		if (! $error && ! $notrigger)
-		{
-            // Uncomment this and change MYOBJECT to your own tag if you
-            // want this action calls a trigger.
+		if (!$error && !$notrigger) {
+			// Uncomment this and change MYOBJECT to your own tag if you
+			// want this action calls a trigger.
 
-            //// Call triggers
-            //$result=$this->call_trigger('MYOBJECT_MODIFY',$user);
-            //if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail}
-            //// End call triggers
+			//// Call triggers
+			//$result=$this->call_trigger('MYOBJECT_MODIFY',$user);
+			//if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail}
+			//// End call triggers
 		}
 
-        // Commit or rollback
-		if ($error)
-		{
+		// Commit or rollback
+		if ($error) {
 			$this->db->rollback();
-			return -1*$error;
-		}
-		else
-		{
+
+			return - 1 * $error;
+		} else {
 			$this->db->commit();
+
 			return 1;
 		}
-    }
-
+	}
 
- 	/**
-	 *  Delete object in database
+	/**
+	 * Delete object in database
 	 *
-     *	@param  User	$user        User that deletes
-     *  @param  int		$notrigger	 0=launch triggers after, 1=disable triggers
-	 *  @return	int					 <0 if KO, >0 if OK
+	 * @param User $user      User that deletes
+	 * @param bool $notrigger false=launch triggers after, true=disable triggers
+	 *
+	 * @return int <0 if KO, >0 if OK
 	 */
-	function delete($user, $notrigger=0)
+	public function delete( User $user, $notrigger = false )
 	{
-		global $conf, $langs;
-		$error=0;
+		dol_syslog( __METHOD__, LOG_DEBUG );
+
+		$error = 0;
 
 		$this->db->begin();
 
-		if (! $error)
-		{
-			if (! $notrigger)
-			{
+		if (!$error) {
+			if (!$notrigger) {
 				// Uncomment this and change MYOBJECT to your own tag if you
-		        // want this action calls a trigger.
+				// want this action calls a trigger.
 
-	            //// Call triggers
-	            //$result=$this->call_trigger('MYOBJECT_DELETE',$user);
-	            //if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail}
-	            //// End call triggers
+				//// Call triggers
+				//$result=$this->call_trigger('MYOBJECT_DELETE',$user);
+				//if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail}
+				//// End call triggers
 			}
 		}
 
-		if (! $error)
-		{
-    		$sql = "DELETE FROM ".MAIN_DB_PREFIX.$this->table_element;
-    		$sql.= " WHERE rowid=".$this->id;
+		if (!$error) {
+			$sql = 'DELETE FROM ' . MAIN_DB_PREFIX . $this->table_element;
+			$sql .= ' WHERE rowid=' . $this->id;
 
-    		dol_syslog(__METHOD__);
-    		$resql = $this->db->query($sql);
-        	if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
+			$resql = $this->db->query( $sql );
+			if (!$resql) {
+				$error ++;
+				$this->errors[] = 'Error ' . $this->db->lasterror();
+				dol_syslog( __METHOD__ . ' ' . join( ',', $this->errors ), LOG_ERR );
+			}
 		}
 
-        // Commit or rollback
-		if ($error)
-		{
+		// Commit or rollback
+		if ($error) {
 			$this->db->rollback();
-			return -1*$error;
-		}
-		else
-		{
+
+			return - 1 * $error;
+		} else {
 			$this->db->commit();
+
 			return 1;
 		}
 	}
 
-
-
 	/**
-	 *	Load an object from its id and create a new one in database
+	 * Load an object from its id and create a new one in database
+	 *
+	 * @param int $fromid Id of object to clone
 	 *
-	 *	@param	int		$fromid     Id of object to clone
-	 * 	@return	int					New id of clone
+	 * @return int New id of clone
 	 */
-	function createFromClone($fromid)
+	public function createFromClone( $fromid )
 	{
-		global $user,$langs;
+		dol_syslog( __METHOD__, LOG_DEBUG );
 
-		$error=0;
-
-		$object=new Skeleton_Class($this->db);
+		global $user;
+		$error = 0;
+		$object = new Skeleton_Class( $this->db );
 
 		$this->db->begin();
 
 		// Load source object
-		$object->fetch($fromid);
-		$object->id=0;
-		$object->statut=0;
+		$object->fetch( $fromid );
+		// Reset object
+		$object->id = 0;
 
 		// Clear fields
 		// ...
 
 		// Create clone
-		$result=$object->create($user);
+		$result = $object->create( $user );
 
 		// Other options
-		if ($result < 0)
-		{
-			$this->error=$object->error;
-			$error++;
-		}
-
-		if (! $error)
-		{
-
-
+		if ($result < 0) {
+			$error ++;
+			$this->errors = $object->errors;
+			dol_syslog( __METHOD__ . ' ' . join( ',', $this->errors ), LOG_ERR );
 		}
 
 		// End
-		if (! $error)
-		{
+		if (!$error) {
 			$this->db->commit();
+
 			return $object->id;
-		}
-		else
-		{
+		} else {
 			$this->db->rollback();
-			return -1;
+
+			return - 1;
 		}
 	}
 
-
 	/**
-	 *	Initialise object with example values
-	 *	Id must be 0 if object instance is a specimen
+	 * Initialise object with example values
+	 * Id must be 0 if object instance is a specimen
 	 *
-	 *	@return	void
+	 * @return void
 	 */
-	function initAsSpecimen()
+	public function initAsSpecimen()
 	{
-		$this->id=0;
-		$this->prop1='prop1';
-		$this->prop2='prop2';
+		$this->id = 0;
+		$this->prop1 = 'prop1';
+		$this->prop2 = 'prop2';
 	}
 
 }
 
+/**
+ * Class Skeleton_ClassLine
+ */
 class Skeleton_ClassLine
 {
-	var $id;
-	var $prop1;
-	var $prop2;
+	/**
+	 * @var int ID
+	 */
+	public $id;
+	/**
+	 * @var mixed Sample line property 1
+	 */
+	public $prop1;
+	/**
+	 * @var mixed Sample line property 2
+	 */
+	public $prop2;
 }
diff --git a/dev/skeletons/skeleton_page.php b/dev/skeletons/skeleton_page.php
index ac329318ae53c58b500d01b345f4821cecb4f54f..9e6d76ee6d84bdf3408fe6ad23e130f9a363bcdf 100644
--- a/dev/skeletons/skeleton_page.php
+++ b/dev/skeletons/skeleton_page.php
@@ -352,8 +352,9 @@ if ($id && (empty($action) || $action == 'view'))
 
 
 	// Example 2 : Adding links to objects
-	// The class must extends CommonObject class to have this method available
-	//$somethingshown=$object->showLinkedObjectBlock();
+	//$somethingshown=$form->showLinkedObjectBlock($object);
+	//$linktoelem = $form->showLinkToObjectBlock($object);
+	//if ($linktoelem) print '<br>'.$linktoelem;
 
 }
 
diff --git a/dev/translation/strip_language_file.php b/dev/translation/strip_language_file.php
index 6102ed3826c071d26b877be136829b379835c10e..d612ff66abf10e8cc5352d3efad829669a750066 100755
--- a/dev/translation/strip_language_file.php
+++ b/dev/translation/strip_language_file.php
@@ -314,7 +314,7 @@ foreach($filesToProcess as $fileToProcess)
 				continue;
 			}
 
-			// String exists in both files and does not match
+			// String exists in both files and value into alternative language differs from main language but also from english files
 			if (
 				(! empty($aSecondary[$key]) && $aSecondary[$key] != $aPrimary[$key]
 			    && ! empty($aEnglish[$key]) && $aSecondary[$key] != $aEnglish[$key])
diff --git a/htdocs/accountancy/admin/card.php b/htdocs/accountancy/admin/card.php
index d555ed46092c0a2136568d8457ddb3d4f484dbb9..51517993bb5e109459e90895021bf890aaaf9432 100644
--- a/htdocs/accountancy/admin/card.php
+++ b/htdocs/accountancy/admin/card.php
@@ -23,12 +23,14 @@
  * \brief		Card accounting account
  */
 require '../../main.inc.php';
-	
+
 // Class
 require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
 require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php';
 require_once DOL_DOCUMENT_ROOT.'/accountancy/class/html.formventilation.class.php';
 
+$error=0;
+
 // Langs
 $langs->load("bills");
 $langs->load("accountancy");
@@ -41,7 +43,7 @@ $rowid = GETPOST('rowid', 'int');
 // Security check
 if (!$user->admin)
     accessforbidden();
-	
+
 $accounting = new AccountingAccount($db);
 
 // Action
@@ -49,11 +51,11 @@ if ($action == 'add')
 {
 	if (! GETPOST('cancel', 'alpha')) {
 		$sql = 'SELECT pcg_version FROM ' . MAIN_DB_PREFIX . 'accounting_system WHERE rowid=' . $conf->global->CHARTOFACCOUNTS;
-		
+
 		dol_syslog('accountancy/admin/card.php:: $sql=' . $sql);
 		$result = $db->query($sql);
 		$obj = $db->fetch_object($result);
-		
+
 		$accounting->fk_pcg_version = $obj->pcg_version;
 		$accounting->pcg_type = GETPOST('pcg_type');
 		$accounting->pcg_subtype = GETPOST('pcg_subtype');
@@ -61,17 +63,17 @@ if ($action == 'add')
 		$accounting->account_parent = GETPOST('account_parent', 'int');
 		$accounting->label = GETPOST('label', 'alpha');
 		$accounting->active = 1;
-		
+
 		$res = $accounting->create($user);
-		
+
 		if ($res == 0) {
 		} else {
 			if ($res == - 3) {
-				$_error = 1;
+				$error = 1;
 				$action = "create";
 			}
 			if ($res == - 4) {
-				$_error = 2;
+				$error = 2;
 				$action = "create";
 			}
 		}
@@ -82,22 +84,22 @@ else if ($action == 'edit')
 {
 	if (! GETPOST('cancel', 'alpha')) {
 		$result = $accounting->fetch($id);
-		
+
 		$sql = 'SELECT pcg_version FROM ' . MAIN_DB_PREFIX . 'accounting_system WHERE rowid=' . $conf->global->CHARTOFACCOUNTS;
-		
+
 		dol_syslog('accountancy/admin/card.php:: $sql=' . $sql);
 		$result2 = $db->query($sql);
 		$obj = $db->fetch_object($result2);
-		
+
 		$accounting->fk_pcg_version = $obj->pcg_version;
 		$accounting->pcg_type = GETPOST('pcg_type');
 		$accounting->pcg_subtype = GETPOST('pcg_subtype');
 		$accounting->account_number = GETPOST('account_number', 'int');
 		$accounting->account_parent = GETPOST('account_parent', 'int');
 		$accounting->label = GETPOST('label', 'alpha');
-		
+
 		$result = $accounting->update($user);
-		
+
 		if ($result > 0) {
 			header("Location: " . $_SERVER["PHP_SELF"] . "?id=" . $id);
 			exit();
@@ -112,15 +114,15 @@ else if ($action == 'edit')
 else if ($action == 'delete')
 {
 	$result = $accounting->fetch($id);
-	
+
 	if (! empty($accounting->id)) {
 		$result = $accounting->delete($user);
-		
+
 		if ($result > 0) {
 			Header("Location: account.php");
 		}
 	}
-	
+
 	if ($result < 0) {
 		setEventMessage($accounting->error, 'errors');
 	}
@@ -137,7 +139,7 @@ $htmlacc = new FormVentilation($db);
 if ($action == 'create')
 {
 	print_fiche_titre($langs->trans('NewAccount'));
-	
+
 	print '<form name="add" action="' . $_SERVER["PHP_SELF"] . '" method="POST">' . "\n";
 	print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">';
 	print '<input type="hidden" name="action" value="add">';
@@ -145,7 +147,7 @@ if ($action == 'create')
 	dol_fiche_head();
 
 	print '<table class="border" width="100%">';
-	
+
 	print '<tr><td width="25%">' . $langs->trans("AccountNumber") . '</td>';
 	print '<td><input name="account_number" size="30" value="' . $accounting->account_number . '"</td></tr>';
 	print '<tr><td>' . $langs->trans("Label") . '</td>';
@@ -162,7 +164,7 @@ if ($action == 'create')
 	print '<td>';
 	print $htmlacc->select_pcgsubtype($accounting->pcg_subtype, 'pcg_subtype');
 	print '</td></tr>';
-	
+
 	print '</table>';
 
 	dol_fiche_end();
@@ -172,35 +174,35 @@ if ($action == 'create')
 	print '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
 	print '<input class="button" type="submit" name="cancel" value="' . $langs->trans("Cancel") . '">';
 	print '</div>';
-	
+
 	print '</form>';
 }
 else if ($id)
 {
 	$rowid = $id;
 	$account = $accounting->fetch($rowid);
-	
+
 	if ($account > 0) {
 		dol_htmloutput_mesg($mesg);
-		
+
 		$head = accounting_prepare_head($accounting);
-		
+
 		if ($action == 'update')
 		{
 			$soc = new Societe($db);
 			if ($object->socid) {
 				$soc->fetch($object->socid);
 			}
-			
+
 			dol_fiche_head($head, 'card', $langs->trans('AccountAccounting'), 0, 'billr');
-			
+
 			print '<form name="update" action="' . $_SERVER["PHP_SELF"] . '" method="POST">' . "\n";
 			print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">';
 			print '<input type="hidden" name="action" value="edit">';
 			print '<input type="hidden" name="id" value="' . $id . '">';
-			
+
 			print '<table class="border" width="100%">';
-			
+
 			print '<tr><td width="25%">' . $langs->trans("AccountNumber") . '</td>';
 			print '<td><input name="account_number" size="30" value="' . $accounting->account_number . '"</td></tr>';
 			print '<tr><td>' . $langs->trans("Label") . '</td>';
@@ -217,7 +219,7 @@ else if ($id)
 			print '<td>';
 			print $htmlacc->select_pcgsubtype($accounting->pcg_subtype, 'pcg_subtype');
 			print '</td></tr>';
-			
+
 			print '</table>';
 
 			dol_fiche_end();
@@ -227,71 +229,71 @@ else if ($id)
 			print '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
 			print '<input type="submit" name="cancel" class="button" value="' . $langs->trans("Cancel") . '">';
 			print '</div>';
-			
+
 			print '</form>';
 		}
 		else
 		{
 			$linkback = '<a href="../admin/account.php">' . $langs->trans("BackToChartofaccounts") . '</a>';
-			
+
 			dol_fiche_head($head, 'card', $langs->trans('AccountAccounting'), 0, 'billr');
-			
+
 			print '<table class="border" width="100%">';
-			
+
 			// Account number
 			print '<tr><td width="25%">' . $langs->trans("AccountNumber") . '</td>';
 			print '<td>' . $accounting->account_number . '</td>';
 			print '<td align="right" width="25%">' . $linkback . '</td></tr>';
-			
+
 			print '<tr><td>' . $langs->trans("Label") . '</td>';
 			print '<td colspan="2">' . $accounting->label . '</td></tr>';
-			
+
 			$accp = new AccountingAccount($db);
 			if (! empty($accounting->account_parent)) {
 				$accp->fetch($accounting->account_parent, '');
 			}
 			print '<tr><td>' . $langs->trans("Accountparent") . '</td>';
 			print '<td colspan="2">' . $accp->account_number . ' - ' . $accp->label . '</td></tr>';
-			
+
 			print '<tr><td>' . $langs->trans("Pcgtype") . '</td>';
 			print '<td colspan="2">' . $accounting->pcg_type . '</td></tr>';
-			
+
 			print '<tr><td>' . $langs->trans("Pcgsubtype") . '</td>';
 			print '<td colspan="2">' . $accounting->pcg_subtype . '</td></tr>';
-			
+
 			print '<tr><td>' . $langs->trans("Active") . '</td>';
 			print '<td colspan="2">';
-			
+
 			if (empty($accounting->active)) {
 				print img_picto($langs->trans("Disabled"), 'switch_off');
 			} else {
 				print img_picto($langs->trans("Activated"), 'switch_on');
 			}
-			
+
 			print '</td></tr>';
-			
+
 			print '</table>';
 
 			dol_fiche_end();
-			
+
 			/*
 			 * Barre d'actions
 			 */
-			
+
 			print '<div class="tabsAction">';
-			
+
 			if ($user->admin) {
 				print '<a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?action=update&id=' . $id . '">' . $langs->trans('Modify') . '</a>';
 			} else {
 				print '<a class="butActionRefused" href="#" title="' . dol_escape_htmltag($langs->trans("NotAllowed")) . '">' . $langs->trans('Modify') . '</a>';
 			}
-			
+
 			if ($user->admin) {
 				print '<a class="butActionDelete" href="' . $_SERVER["PHP_SELF"] . '?action=delete&id=' . $id . '">' . $langs->trans('Delete') . '</a>';
 			} else {
 				print '<a class="butActionRefused" href="#" title="' . dol_escape_htmltag($langs->trans("NotAllowed")) . '">' . $langs->trans('Delete') . '</a>';
 			}
-			
+
 			print '</div>';
 		}
 	}
diff --git a/htdocs/accountancy/bookkeeping/card.php b/htdocs/accountancy/bookkeeping/card.php
index a24ed34e052ac289f483f09330977b92659a0e0f..e25ceb976ff9bfe32512985fd66f1756121a1b79 100644
--- a/htdocs/accountancy/bookkeeping/card.php
+++ b/htdocs/accountancy/bookkeeping/card.php
@@ -1,7 +1,7 @@
 <?php
 /* Copyright (C) 2013-2014 Olivier Geffroy		<jeff@jeffinfo.com>
  * Copyright (C) 2013-2014 Florian Henry		<florian.henry@open-concept.pro>
- * Copyright (C) 2013-2014 Alexandre Spangaro	<alexandre.spangaro@gmail.com>
+ * Copyright (C) 2013-2015 Alexandre Spangaro	<alexandre.spangaro@gmail.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -205,36 +205,42 @@ if ($action == 'create') {
 	print '<form action="' . $_SERVER["PHP_SELF"] . '" name="create_mvt" method="POST">';
 	print '<input type="hidden" name="action" value="confirm_create">' . "\n";
 	print '<input type="hidden" name="next_num_mvt" value="' . $next_num_mvt . '">' . "\n";
-	
+
+	dol_fiche_head();
+
 	print '<table class="border" width="100%">';
-	print '<tr class="pair">';
+	print '<tr>';
 	print '<td>' . $langs->trans("NumMvts") . '</td>';
 	print '<td>' . $next_num_mvt . '</td>';
 	print '</tr>';
-	print '<tr class="impair">';
+	print '<tr>';
 	print '<td>' . $langs->trans("Docdate") . '</td>';
 	print '<td>';
 	print $html->select_date('', 'doc_date', '', '', '', "create_mvt", 1, 1);
 	print '</td>';
 	
 	print '</tr>';
-	print '<tr class="pair">';
+	print '<tr>';
 	print '<td>' . $langs->trans("Codejournal") . '</td>';
 	
 	print '<td>' . $html->selectarray('code_journal', $code_journal_array) . '</td>';
 	print '</tr>';
-	print '<tr class="impair">';
+	print '<tr>';
 	print '<td>' . $langs->trans("Docref") . '</td>';
 	print '<td><input type="text" size="20" name="doc_ref" value=""/></td>';
 	print '</tr>';
-	print '<tr class="pair">';
+	print '<tr>';
 	print '<td>' . $langs->trans("Doctype") . '</td>';
 	print '<td><input type="text" size="20" name="doc_type" value=""/></td>';
 	print '</tr>';
 	print '</table>';
-	print '<br>';
-	print '<input type="submit" class="butAction" value="' . $langs->trans("Save") . '">';
-	
+
+    dol_fiche_end();
+
+	print '<div align="center"><input type="submit" class="butAction" value="' . $langs->trans("Save") . '">';
+    print '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="button" value="'.$langs->trans("Cancel").'" class="button" onclick="history.go(-1)" />';
+    print '</div>';
+
 	print '</form>';
 } 
 else
diff --git a/htdocs/accountancy/customer/card.php b/htdocs/accountancy/customer/card.php
index 487f4dc27190e5f8e2ed8b4b65515f29d892452e..d3d6ff8a945cec10515c9844f5d2d7431cde8d66 100644
--- a/htdocs/accountancy/customer/card.php
+++ b/htdocs/accountancy/customer/card.php
@@ -1,7 +1,7 @@
 <?PHP
 /* Copyright (C) 2013-2014 Olivier Geffroy		<jeff@jeffinfo.com>
  * Copyright (C) 2013-2014 Florian Henry		<florian.henry@open-concept.pro>
- * Copyright (C) 2013-2014 Alexandre Spangaro	<alexandre.spangaro@gmail.com>
+ * Copyright (C) 2013-2015 Alexandre Spangaro	<alexandre.spangaro@gmail.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -44,7 +44,6 @@ if ($user->societe_id > 0)
 /*
  * Actions
  */
-
 if ($action == 'ventil' && $user->rights->accounting->ventilation->dispatch) {
 	if (! GETPOST('cancel', 'alpha'))
 	{
@@ -63,6 +62,10 @@ if ($action == 'ventil' && $user->rights->accounting->ventilation->dispatch) {
 	}
 }
 
+/*
+ * View
+ */
+
 llxHeader("", "", "FicheVentilation");
 
 if ($cancel == $langs->trans("Cancel")) {
@@ -108,6 +111,8 @@ if (! empty($id)) {
 			$linkback='<a href="'.DOL_URL_ROOT.'/accountancy/customer/lines.php">'.$langs->trans("Back").'</a>';
 			print_fiche_titre($langs->trans('CustomersVentilation'),$linkback,'title_setup');
 
+            dol_fiche_head();
+
 			print '<table class="border" width="100%">';
 
 			// Ref facture
@@ -120,13 +125,13 @@ if (! empty($id)) {
 			print '<tr><td width="20%">' . $langs->trans("Line") . '</td>';
 			print '<td>' . nl2br($objp->description) . '</td></tr>';
 			print '<tr><td width="20%">' . $langs->trans("Account") . '</td><td>';
-			print $objp->account_number . '-' . $objp->label;
-			print '<tr><td width="20%">' . $langs->trans("NewAccount") . '</td><td>';
 			print $formventilation->select_account($objp->fk_code_ventilation, 'codeventil', 1);
 			print '</td></tr>';
 			print '</table>';
+			
+            dol_fiche_end();
 
-			print '<br><div class="center">';
+			print '<div class="center">';
 			print '<input class="button" type="submit" value="' . $langs->trans("Save") . '">';
 			print '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
 			print '<input class="button" type="submit" name="cancel" value="' . $langs->trans("Cancel") . '">';
@@ -144,4 +149,4 @@ if (! empty($id)) {
 }
 
 llxFooter();
-$db->close();
+$db->close();
\ No newline at end of file
diff --git a/htdocs/accountancy/customer/index.php b/htdocs/accountancy/customer/index.php
index df6351554164cb71d74fb8e4ebba87ae6cc57ec3..5a1ffc30bb727976482f8557c17b70cd4227a760 100644
--- a/htdocs/accountancy/customer/index.php
+++ b/htdocs/accountancy/customer/index.php
@@ -1,9 +1,9 @@
 <?php
 /* Copyright (C) 2013      Olivier Geffroy		<jeff@jeffinfo.com>
  * Copyright (C) 2013-2014 Florian Henry		<florian.henry@open-concept.pro>
- * Copyright (C) 2013-2014 Alexandre Spangaro	<alexandre.spangaro@gmail.com>
+ * Copyright (C) 2013-2015 Alexandre Spangaro	<alexandre.spangaro@gmail.com>
  * Copyright (C) 2014	   Juanjo Menent		<jmenent@2byte.es>
- * Copyright (C) 2015       Jean-François Ferry		<jfefe@aternatik.fr>
+ * Copyright (C) 2015      Jean-François Ferry  <jfefe@aternatik.fr>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -172,8 +172,8 @@ if ($resql) {
 
 	while ( $i < $num ) {
 		$row = $db->fetch_row($resql);
-
-		print '<tr><td>' . length_accountg($row[0]) . '</td>';
+		$var=!$var;
+		print '<tr '.$bc[$var].'><td>' . length_accountg($row[0]) . '</td>';
 		print '<td align="left">' . $row[1] . '</td>';
 		print '<td align="right">' . price($row[2]) . '</td>';
 		print '<td align="right">' . price($row[3]) . '</td>';
diff --git a/htdocs/accountancy/customer/lines.php b/htdocs/accountancy/customer/lines.php
index 3a368f8d3ad9e28f8f0555f67b80bee682c1e86a..7941a7df4a82ae08fa220c97fd6dca491fbe13bb 100644
--- a/htdocs/accountancy/customer/lines.php
+++ b/htdocs/accountancy/customer/lines.php
@@ -43,7 +43,7 @@ $search_facture = GETPOST('search_facture','alpha');
 $search_label   = GETPOST('search_label','alpha');
 $search_desc    = GETPOST('search_desc','alpha');
 $search_amount  = GETPOST('search_amount','alpha');
-$search_acount  = GETPOST('search_account','alpha');
+$search_account = GETPOST('search_account','alpha');
 
 // Security check
 if ($user->societe_id > 0)
diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php
index fc3157c318a98e6181f480cc450012fd42789dd7..75e54b2a5905ebf27933195d6f532a0d15e04df4 100644
--- a/htdocs/accountancy/journal/bankjournal.php
+++ b/htdocs/accountancy/journal/bankjournal.php
@@ -555,9 +555,9 @@ else
 	$h=0;
 	$head[$h][0] = $_SERVER["PHP_SELF"].'?id_account='.$id_accountancy_journal;
 	$head[$h][1] = $langs->trans("Report");
-	$head[$h][2] = 'report';
+	$head[$h][2] = 'card';
 
-	dol_fiche_head($head, $hselected);
+	dol_fiche_head($head, 'card', $langs->trans("BankJournal"), 0, 'payment');
 
 	print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'?id_account='.$id_accountancy_journal.'">';
 	print '<table width="100%" class="border">';
diff --git a/htdocs/accountancy/supplier/card.php b/htdocs/accountancy/supplier/card.php
index 51d09428c25a5ae4b7ff9317eef3bf9097ae09aa..42837680428cba7d412a11862208bc2c0523d4ba 100644
--- a/htdocs/accountancy/supplier/card.php
+++ b/htdocs/accountancy/supplier/card.php
@@ -1,11 +1,11 @@
 <?php
 /* Copyright (C) 2004       Rodolphe Quiedeville  <rodolphe@quiedeville.org>
  * Copyright (C) 2005       Simon TOSSER          <simon@kornog-computing.com>
- * Copyright (C) 2013-2014  Alexandre Spangaro    <alexandre.spangaro@gmail.com>
+ * Copyright (C) 2013-2015  Alexandre Spangaro    <alexandre.spangaro@gmail.com>
  * Copyright (C) 2013-2014  Olivier Geffroy       <jeff@jeffinfo.com>
  * Copyright (C) 2013-2014	Florian Henry	      <florian.henry@open-concept.pro>
  * Copyright (C) 2014	    Juanjo Menent		  <jmenent@2byte.es>
- * Copyright (C) 2015       Jean-François Ferry		<jfefe@aternatik.fr>
+ * Copyright (C) 2015       Jean-François Ferry	  <jfefe@aternatik.fr>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -34,31 +34,32 @@ require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
 require_once DOL_DOCUMENT_ROOT.'/accountancy/class/html.formventilation.class.php';
 
 // Langs
-$langs->load("compta");
 $langs->load("bills");
-$langs->load("other");
-$langs->load("main");
 $langs->load("accountancy");
 
-$action = GETPOST('action');
-$id = GETPOST('id', 'int');
+$action = GETPOST('action', 'alpha');
 $codeventil = GETPOST('codeventil');
+$id = GETPOST('id');
 
 // Security check
 if ($user->societe_id > 0)
 	accessforbidden();
 
-if ($action == 'ventil' && $user->rights->accounting->ventilation->dispatch)
-{
-	$sql = " UPDATE " . MAIN_DB_PREFIX . "facture_fourn_det";
-	$sql .= " SET fk_code_ventilation = " . $codeventil;
-	$sql .= " WHERE rowid = " . $id;
-	
-	dol_syslog('accountancy/journal/sellsjournal.php:: $sql=' . $sql);
-	
-	$resql = $db->query($sql);
-	if (! $resql) {
-		setEventMessage($db->lasterror(), 'errors');
+if ($action == 'ventil' && $user->rights->accounting->ventilation->dispatch) {
+	if (! GETPOST('cancel', 'alpha'))
+	{
+		$sql = " UPDATE " . MAIN_DB_PREFIX . "facture_fourn_det";
+		$sql .= " SET fk_code_ventilation = " . $codeventil;
+		$sql .= " WHERE rowid = " . $id;
+		
+		dol_syslog('accountancy/supplier/card.php:: $sql=' . $sql);
+		$resql = $db->query($sql);
+		if (! $resql) {
+			setEventMessage($db->lasterror(), 'errors');
+		}
+	} else {
+		header("Location: ./lines.php");
+		exit();
 	}
 }
 
@@ -78,7 +79,7 @@ $form = new Form($db);
 $facturefournisseur_static = new FactureFournisseur($db);
 $formventilation = new FormVentilation($db);
 
-if ($_GET["id"]) {
+if (! empty($id)) {
 	$sql = "SELECT f.ref as facnumber, f.rowid as facid, l.fk_product, l.description, l.rowid, l.fk_code_ventilation, ";
 	$sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label";
 	$sql .= ", aa.account_number, aa.label";
@@ -87,11 +88,14 @@ if ($_GET["id"]) {
 	$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "accountingaccount as aa ON l.fk_code_ventilation = aa.rowid";
 	$sql .= " INNER JOIN " . MAIN_DB_PREFIX . "facture_fourn as f ON f.rowid = l.fk_facture_fourn ";
 	$sql .= " WHERE f.fk_statut > 0 AND l.rowid = " . $id;
+	
 	if (! empty($conf->multicompany->enabled)) {
 		$sql .= " AND f.entity IN (" . getEntity("facture_fourn", 1) . ")";
 	}
 	
+	dol_syslog("/accounting/supplier/card.php sql=" . $sql, LOG_DEBUG);
 	$result = $db->query($sql);
+
 	if ($result) {
 		$num_lines = $db->num_rows($result);
 		$i = 0;
@@ -103,7 +107,10 @@ if ($_GET["id"]) {
 			print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">';
 			print '<input type="hidden" name="action" value="ventil">';
 			
-			print_fiche_titre($langs->trans("SuppliersVentilation"));
+			$linkback='<a href="'.DOL_URL_ROOT.'/accountancy/supplier/lines.php">'.$langs->trans("Back").'</a>';
+			print_fiche_titre($langs->trans('SuppliersVentilation'),$linkback,'title_setup');
+
+            dol_fiche_head();
 			
 			print '<table class="border" width="100%" cellspacing="0" cellpadding="4">';
 			
@@ -119,19 +126,24 @@ if ($_GET["id"]) {
 			print '<tr><td width="20%">' . $langs->trans("ProductLabel") . '</td>';
 			print '<td>' . dol_trunc($objp->product_label, 24) . '</td>';
 			print '<tr><td width="20%">' . $langs->trans("Account") . '</td><td>';
-			print $objp->account_number . '-' . $objp->label;
-			print '<tr><td width="20%">' . $langs->trans("NewAccount") . '</td><td>';
 			print $formventilation->select_account($objp->fk_code_ventilation, 'codeventil', 1);
 			print '</td></tr>';
-			print '<tr><td>&nbsp;</td><td><input type="submit" class="button" value="' . $langs->trans("Update") . '"></td></tr>';
-			
 			print '</table>';
+
+            dol_fiche_end();
+
+			print '<div class="center">';
+			print '<input class="button" type="submit" value="' . $langs->trans("Save") . '">';
+			print '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
+			print '<input class="button" type="submit" name="cancel" value="' . $langs->trans("Cancel") . '">';
+			print '</div>';
+
 			print '</form>';
 		} else {
-			print "Error 1";
+			print "Error";
 		}
 	} else {
-		print "Error 2";
+		print "Error";
 	}
 } else {
 	print "Error ID incorrect";
diff --git a/htdocs/accountancy/supplier/index.php b/htdocs/accountancy/supplier/index.php
index 3bdf2f45a7c11271b39f81780d1622b4aa9a8efa..2c2392bfa27aa264dcd0bff9c3f4d7b1f4c4836c 100644
--- a/htdocs/accountancy/supplier/index.php
+++ b/htdocs/accountancy/supplier/index.php
@@ -1,7 +1,7 @@
 <?php
 /* Copyright (C) 2013-2014 Olivier Geffroy		<jeff@jeffinfo.com>
  * Copyright (C) 2013-2014 Florian Henry		<florian.henry@open-concept.pro>
- * Copyright (C) 2013-2014 Alexandre Spangaro	<alexandre.spangaro@gmail.com>
+ * Copyright (C) 2013-2015 Alexandre Spangaro	<alexandre.spangaro@gmail.com>
  * Copyright (C) 2014	   Juanjo Menent		<jmenent@2byte.es>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -158,8 +158,8 @@ if ($resql) {
 	while ( $i < $num ) {
 		
 		$row = $db->fetch_row($resql);
-		
-		print '<tr><td>' . length_accountg($row[0]) . '</td>';
+		$var=!$var;
+		print '<tr '.$bc[$var].'><td>' . length_accountg($row[0]) . '</td>';
 		print '<td align="left">' . $row[1] . '</td>';
 		print '<td align="right">' . price($row[2]) . '</td>';
 		print '<td align="right">' . price($row[3]) . '</td>';
diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php
index 9cf77779bf4e14ada86ab39f9fe8fa57fc972dbe..0edc9e1142f37100a7f1fcd3d56514268bc507a3 100644
--- a/htdocs/accountancy/supplier/lines.php
+++ b/htdocs/accountancy/supplier/lines.php
@@ -44,7 +44,7 @@ $search_facture = GETPOST('search_facture','alpha');
 $search_label   = GETPOST('search_label','alpha');
 $search_desc    = GETPOST('search_desc','alpha');
 $search_amount  = GETPOST('search_amount','alpha');
-$search_acount  = GETPOST('search_account','alpha');
+$search_account = GETPOST('search_account','alpha');
 
 // Security check
 if ($user->societe_id > 0)
diff --git a/htdocs/adherents/canvas/actions_adherentcard_common.class.php b/htdocs/adherents/canvas/actions_adherentcard_common.class.php
index 9987f9bc530ab2d2daf614a6172a58fccfd5f2ca..6a8660c7f467510e27b1af96d1021a0d52ab9fd4 100644
--- a/htdocs/adherents/canvas/actions_adherentcard_common.class.php
+++ b/htdocs/adherents/canvas/actions_adherentcard_common.class.php
@@ -55,6 +55,8 @@ abstract class ActionsAdherentCardCommon
 	 */
 	private function getInstanceDao()
 	{
+		dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING);
+
 		if (! is_object($this->object))
 		{
 			$modelclassfile = dol_buildpath('/'.$this->dirmodule.'/canvas/'.$this->canvas.'/dao_'.$this->targetmodule.'_'.$this->canvas.'.class.php');
diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php
index 100d1e23e748f58e079eb452d8311ce782ac42ff..924d9bc44816bd792fc1c563161271bd1b273e7d 100644
--- a/htdocs/adherents/card.php
+++ b/htdocs/adherents/card.php
@@ -1045,7 +1045,7 @@ else
 		{
 			if ($object->photo) print "<br>\n";
 			print '<table class="nobordernopadding">';
-			if ($object->photo) print '<tr><td align="center"><input type="checkbox" class="flat" name="deletephoto" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>';
+			if ($object->photo) print '<tr><td align="center"><input type="checkbox" class="flat photodelete" name="deletephoto" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>';
 			print '<tr><td>'.$langs->trans("PhotoFile").'</td></tr>';
 			print '<tr><td><input type="file" class="flat" name="photo" id="photoinput"></td></tr>';
 			print '</table>';
diff --git a/htdocs/adherents/class/adherent_type.class.php b/htdocs/adherents/class/adherent_type.class.php
index ee15a261820eb4e5fce79fcb051572e1a72e6408..23ecfd6ea03f6a96ed53e238f997bdafca5fa9b7 100644
--- a/htdocs/adherents/class/adherent_type.class.php
+++ b/htdocs/adherents/class/adherent_type.class.php
@@ -39,7 +39,6 @@ class AdherentType extends CommonObject
 
     /**
      * @var int
-     * @deprecated Use rowid
      */
     public $ref;
 
diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php
index 05035fa1f9fd0a3e6d32bb5df6fb10fafebc510d..ff6c1eb796339fdb383e85af1e3b7c491f0af576 100644
--- a/htdocs/adherents/list.php
+++ b/htdocs/adherents/list.php
@@ -107,7 +107,7 @@ if ($sall)
         foreach ($scrit as $crit)
         {
             $sql.=" AND (";
-            if (is_numeric($sall)) $sql.= "d.rowid = ".$sall." OR ";
+            if (is_numeric($sall)) $sql.= "d.rowid = ".$db->escape($sall)." OR ";
             $sql.=" d.firstname LIKE '%".$db->escape($sall)."%' OR d.lastname LIKE '%".$db->escape($sall)."%' OR d.societe LIKE '%".$db->escape($sall)."%'";
             $sql.=" OR d.email LIKE '%".$db->escape($sall)."%' OR d.login LIKE '%".$db->escape($sall)."%' OR d.address LIKE '%".$db->escape($sall)."%'";
             $sql.=" OR d.town LIKE '%".$db->escape($sall)."%' OR d.note_public LIKE '%".$db->escape($sall)."%' OR d.note_private LIKE '%".$db->escape($sall)."%')";
@@ -115,7 +115,7 @@ if ($sall)
 }
 if ($type > 0)
 {
-	$sql.=" AND t.rowid=".$type;
+	$sql.=" AND t.rowid=".$db->escape($type);
 }
 if (isset($_GET["statut"]) || isset($_POST["statut"]))
 {
diff --git a/htdocs/admin/company.php b/htdocs/admin/company.php
index d5c78761989dc8923123cfecfc30eaf29a3a5cb0..db4c1dff2096b8d4908b551d79e7d7c458854b21 100644
--- a/htdocs/admin/company.php
+++ b/htdocs/admin/company.php
@@ -4,6 +4,7 @@
  * Copyright (C) 2005-2012	Regis Houssin			<regis.houssin@capnetworks.com>
  * Copyright (C) 2010-2014	Juanjo Menent			<jmenent@2byte.es>
  * Copyright (C) 2011		Philippe Grand			<philippe.grand@atoo-net.com>
+ * Copyright (C) 2015       Alexandre Spangaro      <alexandre.spangaro@gmail.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -151,6 +152,7 @@ if ( ($action == 'update' && empty($_POST["cancel"]))
     dolibarr_set_const($db, "MAIN_INFO_PROFID6",$_POST["MAIN_INFO_PROFID6"],'chaine',0,'',$conf->entity);
 
     dolibarr_set_const($db, "MAIN_INFO_TVAINTRA",$_POST["tva"],'chaine',0,'',$conf->entity);
+	dolibarr_set_const($db, "MAIN_INFO_SOCIETE_OBJECT",$_POST["object"],'chaine',0,'',$conf->entity);
 
     dolibarr_set_const($db, "SOCIETE_FISCAL_MONTH_START",$_POST["fiscalmonthstart"],'chaine',0,'',$conf->entity);
 
@@ -383,7 +385,7 @@ if ($action == 'edit' || $action == 'updateedit')
     }
     else
     {
-        print '<img height="30" src="'.DOL_URL_ROOT.'/theme/common/nophoto.jpg">';
+        print '<img height="30" src="'.DOL_URL_ROOT.'/public/theme/common/nophoto.jpg">';
     }
     print '</td></tr></table>';
     print '</td></tr>';
@@ -420,7 +422,7 @@ if ($action == 'edit' || $action == 'updateedit')
     print '<tr '.$bc[$var].'><td><label for="legal_form">'.$langs->trans("JuridicalStatus").'</label></td><td>';
     if ($mysoc->country_code)
     {
-        print $formcompany->select_juridicalstatus($conf->global->MAIN_INFO_SOCIETE_FORME_JURIDIQUE,$mysoc->country_code);
+        print $formcompany->select_juridicalstatus($conf->global->MAIN_INFO_SOCIETE_FORME_JURIDIQUE, $mysoc->country_code, '', 'legal_form');
     }
     else
     {
@@ -528,6 +530,12 @@ if ($action == 'edit' || $action == 'updateedit')
     $var=!$var;
     print '<tr '.$bc[$var].'><td width="35%"><label for="intra_vat">'.$langs->trans("VATIntra").'</label></td><td>';
     print '<input name="tva" id="intra_vat" size="20" value="' . (! empty($conf->global->MAIN_INFO_TVAINTRA) ? $conf->global->MAIN_INFO_TVAINTRA : '') . '">';
+    print '</td></tr>';
+	
+	// Object of the company
+    $var=!$var;
+    print '<tr '.$bc[$var].'><td width="35%"><label for="object">'.$langs->trans("CompanyObject").'</label></td><td>';
+    print '<textarea class="flat" name="object" id="object" cols="80" rows="'.ROWS_5.'">'.(! empty($conf->global->MAIN_INFO_SOCIETE_OBJECT) ? $conf->global->MAIN_INFO_SOCIETE_OBJECT : '').'</textarea></td></tr>';
     print '</td></tr>';
 
     print '</table>';
@@ -769,7 +777,7 @@ else
     }
     else
     {
-        print '<img height="30" src="'.DOL_URL_ROOT.'/theme/common/nophoto.jpg">';
+        print '<img height="30" src="'.DOL_URL_ROOT.'/public/theme/common/nophoto.jpg">';
     }
     print '</td></tr></table>';
 
@@ -929,6 +937,9 @@ else
     }
     print '</td>';
     print '</tr>';
+	
+	$var=!$var;
+    print '<tr '.$bc[$var].'><td width="35%" valign="top">'.$langs->trans("CompanyObject").'</td><td>' . (! empty($conf->global->MAIN_INFO_SOCIETE_OBJECT) ? nl2br($conf->global->MAIN_INFO_SOCIETE_OBJECT) : '') . '</td></tr>';
 
     print '</table>';
     print '</form>';
diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php
index 2c37bcd9e427db952cbbdebff5bd525e12c5b6b0..9ef2ff7c7e47b2cea34882a8913c9bdd23590169 100644
--- a/htdocs/admin/dict.php
+++ b/htdocs/admin/dict.php
@@ -70,7 +70,7 @@ $hookmanager->initHooks(array('admin'));
 // Put here declaration of dictionaries properties
 
 // Sort order to show dictionary (0 is space). All other dictionaries (added by modules) will be at end of this.
-$taborder=array(9,0,4,3,2,0,1,8,19,16,27,0,5,11,0,6,0,10,23,12,13,0,14,0,7,17,0,22,20,18,21,0,15,0,24,0,25,0,26);
+$taborder=array(9,0,4,3,2,0,1,8,19,16,27,0,5,11,0,6,0,10,23,12,13,0,14,0,7,17,24,0,22,20,18,21,0,15,0,25,0,26);
 
 // Name of SQL tables of dictionaries
 $tabname=array();
@@ -832,7 +832,7 @@ if ($id)
         $fieldlist=explode(',',$tabfield[$id]);
 
         // Line for title
-        print '<tr class="liste_titre">';
+        print '<tr class="liste_titre nohover">';
         foreach ($fieldlist as $field => $value)
         {
             // Determine le nom du champ par rapport aux noms possibles
diff --git a/htdocs/admin/ihm.php b/htdocs/admin/ihm.php
index 7f1d17183d2832b1073395deebe5df3770fa9fb6..398999d6dd9e627e254c7c562e74eb00e05f209b 100644
--- a/htdocs/admin/ihm.php
+++ b/htdocs/admin/ihm.php
@@ -1,6 +1,6 @@
 <?php
 /* Copyright (C) 2001-2005	Rodolphe Quiedeville	<rodolphe@quiedeville.org>
- * Copyright (C) 2004-2014	Laurent Destailleur		<eldy@users.sourceforge.net>
+ * Copyright (C) 2004-2015	Laurent Destailleur		<eldy@users.sourceforge.net>
  * Copyright (C) 2005-2012	Regis Houssin			<regis.houssin@capnetworks.com>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -78,10 +78,13 @@ if ($action == 'update')
 	dolibarr_set_const($db, "MAIN_MOTD",						dol_htmlcleanlastbr($_POST["main_motd"]),'chaine',0,'',$conf->entity);
 	dolibarr_set_const($db, "MAIN_HOME",						dol_htmlcleanlastbr($_POST["main_home"]),'chaine',0,'',$conf->entity);
 	dolibarr_set_const($db, "MAIN_HELP_DISABLELINK",			$_POST["MAIN_HELP_DISABLELINK"],'chaine',0,'',0);	    // Param for all entities
+	dolibarr_set_const($db, "MAIN_BUGTRACK_ENABLELINK",         $_POST["MAIN_BUGTRACK_ENABLELINK"],'chaine',0,'',$conf->entity);
+
+	if (GETPOST('check_THEME_ELDY_USE_HOVER') == 'on') dolibarr_set_const($db,"THEME_ELDY_USE_HOVER", 1,'chaine',0,'',$conf->entity);
+	else dolibarr_set_const($db,"THEME_ELDY_USE_HOVER",0,'chaine',0,'',$conf->entity);
 
 	// This one is not always defined
 	if (isset($_POST["MAIN_USE_PREVIEW_TABS"])) dolibarr_set_const($db, "MAIN_USE_PREVIEW_TABS", $_POST["MAIN_USE_PREVIEW_TABS"],'chaine',0,'',$conf->entity);
-	if (isset($_POST["MAIN_BUGTRACK_ENABLELINK"])) dolibarr_set_const($db, "MAIN_BUGTRACK_ENABLELINK", $_POST["MAIN_BUGTRACK_ENABLELINK"],'chaine',0,'',$conf->entity);
 
 	$_SESSION["mainmenu"]="";   // Le gestionnaire de menu a pu changer
 
@@ -279,22 +282,19 @@ if ($action == 'edit')	// Edit
 	print '<td width="20">&nbsp;</td>';
 	print '</tr>';
 
-	if ($conf->global->MAIN_FEATURES_LEVEL >= 1 || ! empty($conf->global->MAIN_BUGTRACK_ENABLELINK))
-	{
-		 // Show bugtrack link
-		$var=!$var;
-		print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("ShowBugTrackLink", $langs->transnoentitiesnoconv("FindBug")).'</td><td>';
-		print $form->selectyesno('MAIN_BUGTRACK_ENABLELINK',$conf->global->MAIN_BUGTRACK_ENABLELINK,1);
-		print '</td>';
-		print '<td width="20">&nbsp;</td>';
-		print '</tr>';
-	}
+	// Show bugtrack link
+	$var=!$var;
+	print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("ShowBugTrackLink", $langs->transnoentitiesnoconv("FindBug")).'</td><td>';
+	print $form->selectyesno('MAIN_BUGTRACK_ENABLELINK',$conf->global->MAIN_BUGTRACK_ENABLELINK,1);
+	print '</td>';
+	print '<td width="20">&nbsp;</td>';
+	print '</tr>';
 
     // Message on login page
 	$var=!$var;
     print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("MessageLogin").'</td><td colspan="2">';
 
-    $doleditor = new DolEditor('main_home', (isset($conf->global->MAIN_HOME)?$conf->global->MAIN_HOME:''), '', 142, 'dolibarr_notes', 'In', false, true, true, ROWS_4, 90);
+    $doleditor = new DolEditor('main_home', (isset($conf->global->MAIN_HOME)?$conf->global->MAIN_HOME:''), '', 142, 'dolibarr_notes', 'In', false, true, true, ROWS_4, '90%');
 	$doleditor->Create();
 
 	print '</td></tr>'."\n";
@@ -303,7 +303,7 @@ if ($action == 'edit')	// Edit
     $var=!$var;
     print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("MessageOfDay").'</td><td colspan="2">';
 
-    $doleditor = new DolEditor('main_motd', (isset($conf->global->MAIN_MOTD)?$conf->global->MAIN_MOTD:''), '', 142, 'dolibarr_notes', 'In', false, true, true, ROWS_4, 90);
+    $doleditor = new DolEditor('main_motd', (isset($conf->global->MAIN_MOTD)?$conf->global->MAIN_MOTD:''), '', 142, 'dolibarr_notes', 'In', false, true, true, ROWS_4, '90%');
 	$doleditor->Create();
 
 	print '</td></tr>'."\n";
@@ -465,15 +465,12 @@ else	// Show
     print yn((isset($conf->global->MAIN_HELP_DISABLELINK)?$conf->global->MAIN_HELP_DISABLELINK:0),1);
     print '</td></tr>';
 
-    if ($conf->global->MAIN_FEATURES_LEVEL >= 1 || ! empty($conf->global->MAIN_BUGTRACK_ENABLELINK))
-    {
-    	// Show bugtrack link
-    	$var=!$var;
-    	print '<tr '.$bc[$var].'"><td width="35%">'.$langs->trans("ShowBugTrackLink", $langs->transnoentitiesnoconv("FindBug")).'</td><td>';
-    	print yn($conf->global->MAIN_BUGTRACK_ENABLELINK)."</td>";
-    	print '<td width="20">&nbsp;</td>';
-    	print "</tr>";
-    }
+	// Show bugtrack link
+	$var=!$var;
+	print '<tr '.$bc[$var].'"><td width="35%">'.$langs->trans("ShowBugTrackLink", $langs->transnoentitiesnoconv("FindBug")).'</td><td>';
+	print yn($conf->global->MAIN_BUGTRACK_ENABLELINK)."</td>";
+	print '<td width="20">&nbsp;</td>';
+	print "</tr>";
 
     // Message login
     $var=!$var;
diff --git a/htdocs/admin/mails.php b/htdocs/admin/mails.php
index 2b50008d58a888209631f41857a9f9ec57aa3ddd..53937687b57325d1771c634fe24b31aeb2266d2c 100644
--- a/htdocs/admin/mails.php
+++ b/htdocs/admin/mails.php
@@ -121,7 +121,7 @@ if (! empty($_POST['removedfile']) || ! empty($_POST['removedfilehtml']))
 		$pathtodelete=$listofpaths[$keytodelete];
 		$filetodelete=$listofnames[$keytodelete];
 		$result = dol_delete_file($pathtodelete,1);
-		if ($result >= 0)
+		if ($result)
 		{
 			setEventMessage($langs->trans("FileWasRemoved"), $filetodelete);
 
diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php
index aab09001bd8b72f4bf32ad5525ee90bec63c0017..86cfae1d606d82d697d006e2c737a411680c1474 100644
--- a/htdocs/admin/modules.php
+++ b/htdocs/admin/modules.php
@@ -5,7 +5,7 @@
  * Copyright (C) 2004      Eric Seigne          <eric.seigne@ryxeo.com>
  * Copyright (C) 2005-2012 Regis Houssin        <regis.houssin@capnetworks.com>
  * Copyright (C) 2011	   Juanjo Menent        <jmenent@2byte.es>
- * Copyright (C) 2015       Jean-François Ferry		<jfefe@aternatik.fr>
+ * Copyright (C) 2015      Jean-François Ferry	<jfefe@aternatik.fr>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
diff --git a/htdocs/admin/tools/index.php b/htdocs/admin/tools/index.php
index ae1fad8c27293d6567cd8ec66aa29e946f2f27ee..4ea716c322bb73c4eb8cc5b96219239c97fe29eb 100644
--- a/htdocs/admin/tools/index.php
+++ b/htdocs/admin/tools/index.php
@@ -53,7 +53,9 @@ print '<br><br>';
 
 
 // Show logo
-print '<div class="center"><div class="logo_setup"></div></div>';
+//print '<div class="center"><div class="logo_setup"></div></div>';
+print '<center><div class="logo_setup"></div></center>';				// For a reason I don't know, the div class="center does not works, we must keep the <center>
+
 
 llxFooter();
 $db->close();
diff --git a/htdocs/admin/tools/purge.php b/htdocs/admin/tools/purge.php
index 9003a92cddf27646f129a711d79f9ed8424fdbf5..e40caa3e36e95c7cf6f92e36eadd7e48421902ae 100644
--- a/htdocs/admin/tools/purge.php
+++ b/htdocs/admin/tools/purge.php
@@ -89,7 +89,7 @@ if ($action=='purge' && ! preg_match('/^confirm/i',$choice) && ($choice != 'allf
 				// If (file that is not logfile) or (if logfile with option logfile)
 				if ($filesarray[$key]['fullname'] != $filelog || $choice=='logfile')
 				{
-					$count+=dol_delete_file($filesarray[$key]['fullname']);
+					$count+=(dol_delete_file($filesarray[$key]['fullname'])?1:0);
 				}
 			}
 		}
diff --git a/htdocs/api/class/api.class.php b/htdocs/api/class/api.class.php
index 9f03ae84acfcc66e8627b49d1390191800f46fc7..fc892b8d41238e0a73d4a0d28f2bb4f22aa715dd 100644
--- a/htdocs/api/class/api.class.php
+++ b/htdocs/api/class/api.class.php
@@ -22,24 +22,24 @@ require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
 
 /**
  * Class for API
- * 
+ *
  */
 class DolibarrApi
 {
-    
+
     /**
      * @var DoliDb        $db Database object
      */
     static protected $db;
-    
+
     /**
      * @var Restler     $r	Restler object
      */
     var $r;
-            
+
     /**
      * Constructor
-     * 
+     *
      * @param	DoliDb	$db		Database handler
      */
     function __construct($db) {
@@ -51,7 +51,7 @@ class DolibarrApi
      * Executed method when API is called without parameter
      *
      * Display a short message an return a http code 200
-     * 
+     *
      * @return array
      */
     function index()
@@ -67,10 +67,10 @@ class DolibarrApi
 
     /**
      * Clean sensible object datas
-     * 
+     *
      * @param   object  $object	Object to clean
      * @return	array	Array of cleaned object properties
-     * 
+     *
      * @todo use an array for properties to clean
      *
      */
@@ -78,14 +78,16 @@ class DolibarrApi
 
         // Remove $db object property for object
 		unset($object->db);
-        
+
         // If object has lines, remove $db property
         if(isset($object->lines) && count($object->lines) > 0)  {
-            for($i=0; $i < count($object->lines); $i++) {
+            $nboflines = count($object->lines);
+        	for ($i=0; $i < $nbofline; $i++)
+            {
                 $this->_cleanObjectDatas($object->lines[$i]);
             }
         }
-        
+
         // If object has linked objects, remove $db property
         if(isset($object->linkedObjects) && count($object->linkedObjects) > 0)  {
             foreach($object->linkedObjects as $type_object => $linked_object) {
@@ -96,12 +98,12 @@ class DolibarrApi
         }
 		return $object;
     }
-	
+
 	/**
 	 * Check user access to a resource
-	 * 
+	 *
 	 * Check access by user to a given resource
-	 * 
+	 *
 	 * @param string	$resource		element to check
 	 * @param int		$resource_id	Object ID if we want to check a particular record (optional) is linked to a owned thirdparty (optional).
 	 * @param type		$dbtablename	'TableName&SharedElement' with Tablename is table where object is stored. SharedElement is an optional key to define where to check entity. Not used if objectid is null (optional)
@@ -111,18 +113,18 @@ class DolibarrApi
 	 * @throws RestException
 	 */
 	static function _checkAccessToResource($resource, $resource_id=0, $dbtablename='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid') {
-		
+
 		// Features/modules to check
 		$featuresarray = array($resource);
-		if (preg_match('/&/', $resource)) { 
-			$featuresarray = explode("&", $resource); 
+		if (preg_match('/&/', $resource)) {
+			$featuresarray = explode("&", $resource);
 		}
-		else if (preg_match('/\|/', $resource)) { 
-			$featuresarray = explode("|", $resource); 
+		else if (preg_match('/\|/', $resource)) {
+			$featuresarray = explode("|", $resource);
 		}
 
 		// More subfeatures to check
-		if (! empty($feature2)) { 
+		if (! empty($feature2)) {
 			$feature2 = explode("|", $feature2);
 		}
 
@@ -141,18 +143,18 @@ class DolibarrApiInit extends DolibarrApi
 		global $db;
 		$this->db = $db;
 	}
-	
+
 	/**
 	 * Login
-	 * 
+	 *
 	 * Log user with username and password
-	 * 
+	 *
 	 * @param   string  $login			Username
 	 * @param   string  $password		User password
 	 * @param   int     $entity			User entity
      * @return  array   Response status and user token
-     * 
-	 * @throws RestException	
+     *
+	 * @throws RestException
 	 */
 	public function login($login, $password, $entity = 0) {
 
@@ -171,22 +173,22 @@ class DolibarrApiInit extends DolibarrApi
 		{
 			throw new RestException(403, 'Access denied');
 		}
-		
+
 		// Generate token for user
 		$token = dol_hash($login.uniqid().$conf->global->MAIN_API_KEY,1);
-		
+
 		// We store API token into database
 		$sql = "UPDATE ".MAIN_DB_PREFIX."user";
 		$sql.= " SET api_key = '".$this->db->escape($token)."'";
 		$sql.= " WHERE login = '".$this->db->escape($login)."'";
-		
+
 		dol_syslog(get_class($this)."::login", LOG_DEBUG);	// No log
 		$result = $this->db->query($sql);
 		if (!$result)
 		{
 			throw new RestException(500, 'Error when updating user :'.$this->db->error_msg);
 		}
-		
+
 		//return token
 		return array(
 			'success' => array(
@@ -199,7 +201,7 @@ class DolibarrApiInit extends DolibarrApi
 
 	/**
      * Get status (Dolibarr version)
-     * 
+     *
 	 * @access protected
 	 * @class  DolibarrApiAccess {@requires admin}
 	 */
diff --git a/htdocs/api/class/api_access.class.php b/htdocs/api/class/api_access.class.php
index 1e3d43ed9db87fef018fef070e712ad4855b79c7..9cd40f56498cf4f0deab9a8d94ad10dca4db9b22 100644
--- a/htdocs/api/class/api_access.class.php
+++ b/htdocs/api/class/api_access.class.php
@@ -18,7 +18,7 @@
 use \Luracast\Restler\iAuthenticate;
 use \Luracast\Restler\Resources;
 use \Luracast\Restler\Defaults;
-use Luracast\Restler\RestException;
+use \Luracast\Restler\RestException;
 
 
 /**
@@ -46,22 +46,14 @@ class DolibarrApiAccess implements iAuthenticate
 
     // @codingStandardsIgnoreStart
 
-    /**
-     * @return string string to be used with WWW-Authenticate header
-     * @example Basic
-     * @example Digest
-     * @example OAuth
-     */
-    public function __getWWWAuthenticateString();
-
 	/**
 	 * Check access
 	 *
-	 * @return boolean
+	 * @return bool
+	 * @throws RestException
 	 */
 	public function _isAllowed()
-    {
-    // @codingStandardsIgnoreEnd
+	{
 		global $db;
 
 		$stored_key = '';
@@ -74,7 +66,8 @@ class DolibarrApiAccess implements iAuthenticate
 			$sql.= " FROM ".MAIN_DB_PREFIX."user as u";
 			$sql.= " WHERE u.api_key = '".$db->escape($_GET['api_key'])."'";
 
-			if ($db->query($sql))
+			$result = $db->query($sql);
+			if ($result)
 			{
 				if ($db->num_rows($result))
 				{
@@ -115,20 +108,26 @@ class DolibarrApiAccess implements iAuthenticate
         return in_array(static::$role, (array) static::$requires) || static::$role == 'admin';
 	}
 
-    // @codingStandardsIgnoreStart
-	public function __getWWWAuthenticateString()
+	/**
+	 * @return string string to be used with WWW-Authenticate header
+	 * @example Basic
+	 * @example Digest
+	 * @example OAuth
+	 */
+	public function _getWWWAuthenticateString()
     {
         return '';
     }
     // @codingStandardsIgnoreEnd
 
 	/**
-     * Verify access
-     *
-     * @param   array   $m   Properties of method
-     *
-     * @access private
-     */
+	 * Verify access
+	 *
+	 * @param   array $m Properties of method
+	 *
+	 * @access private
+	 * @return bool
+	 */
     public static function verifyAccess(array $m)
     {
         $requires = isset($m['class']['DolibarrApiAccess']['properties']['requires'])
diff --git a/htdocs/cashdesk/admin/cashdesk.php b/htdocs/cashdesk/admin/cashdesk.php
index a8ef98b0b0b4b02e832bdcc3f81a74354cc7ada7..48804958b209e9d1cd74d5593ff53d792db7c71f 100644
--- a/htdocs/cashdesk/admin/cashdesk.php
+++ b/htdocs/cashdesk/admin/cashdesk.php
@@ -102,7 +102,7 @@ print "</tr>\n";
 $var=!$var;
 print '<tr '.$bc[$var].'><td width=\"50%\">'.$langs->trans("CashDeskThirdPartyForSell").'</td>';
 print '<td colspan="2">';
-print $form->select_thirdparty($conf->global->CASHDESK_ID_THIRDPARTY,'socid','s.client in (1,3)',0,array(),1);
+print $form->select_company($conf->global->CASHDESK_ID_THIRDPARTY,'socid','s.client in (1,3)',1,0,1,array(),0);
 print '</td></tr>';
 if (! empty($conf->banque->enabled))
 {
@@ -133,17 +133,17 @@ if (! empty($conf->stock->enabled))
 	if (empty($conf->productbatch->enabled)) {
 	   print $form->selectyesno('CASHDESK_NO_DECREASE_STOCK',$conf->global->CASHDESK_NO_DECREASE_STOCK,1);
 	}
-	else 
+	else
 	{
 	    if (!$conf->global->CASHDESK_NO_DECREASE_STOCK) {
 	       $res = dolibarr_set_const($db,"CASHDESK_NO_DECREASE_STOCK",1,'chaine',0,'',$conf->entity);
 	    }
-	    print $langs->trans('StockDecreaseForPointOfSaleDisabledbyBatch'); 
+	    print $langs->trans('StockDecreaseForPointOfSaleDisabledbyBatch');
 	}
 	print '</td></tr>';
 
 	$disabled=$conf->global->CASHDESK_NO_DECREASE_STOCK;
-	
+
 	$var=!$var;
 	print '<tr '.$bc[$var].'><td>'.$langs->trans("CashDeskIdWareHouse").'</td>';	// Force warehouse (this is not a default value)
 	print '<td colspan="2">';
diff --git a/htdocs/cashdesk/facturation_dhtml.php b/htdocs/cashdesk/facturation_dhtml.php
index e481fcbecf63635263d67ea6c6dff4744af7829e..8d4ebf8af31c282c5693f558d7a7119e688158c7 100644
--- a/htdocs/cashdesk/facturation_dhtml.php
+++ b/htdocs/cashdesk/facturation_dhtml.php
@@ -1,6 +1,7 @@
 <?php
-/* Copyright (C) 2007-2008 Jeremie Ollivier <jeremie.o@laposte.net>
- * Copyright (C) 2008-2009 Laurent Destailleur   <eldy@uers.sourceforge.net>
+/* Copyright (C) 2007-2008 	Jeremie Ollivier 	<jeremie.o@laposte.net>
+ * Copyright (C) 2008-2009 	Laurent Destailleur <eldy@uers.sourceforge.net>
+ * Copyright (C) 2015		Regis Houssin		<regis.houssin@capnetworks.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -41,8 +42,10 @@ require_once DOL_DOCUMENT_ROOT.'/cashdesk/include/environnement.php';
 //header("Content-type: text/html; charset=UTF-8");
 header("Content-type: text/html; charset=".$conf->file->character_set_client);
 
+$search = GETPOST("code", "alpha");
+
 // Search from criteria
-if (dol_strlen($_GET["code"]) >= 0)	// If search criteria is on char length at least
+if (dol_strlen($search) >= 0)	// If search criteria is on char length at least
 {
 	$sql = "SELECT p.rowid, p.ref, p.label, p.tva_tx";
 	if (! empty($conf->stock->enabled) && !empty($conf_fkentrepot)) $sql.= ", ps.reel";
@@ -54,11 +57,15 @@ if (dol_strlen($_GET["code"]) >= 0)	// If search criteria is on char length at l
 	// Add criteria on ref/label
 	if (! empty($conf->global->PRODUCT_DONOTSEARCH_ANYWHERE))
 	{
-		$sql.= " AND (p.ref LIKE '".$_GET['code']."%' OR p.label LIKE '".$_GET['code']."%')";
+		$sql.= " AND (p.ref LIKE '".$db->escape($search)."%' OR p.label LIKE '".$db->escape($search)."%'";
+		if (! empty($conf->barcode->enabled)) $sql.= " OR p.barcode LIKE '".$db->escape($search)."%'";
+		$sql.= ")";
 	}
 	else
 	{
-		$sql.= " AND (p.ref LIKE '%".$_GET['code']."%' OR p.label LIKE '%".$_GET['code']."%')";
+		$sql.= " AND (p.ref LIKE '%".$db->escape($search)."%' OR p.label LIKE '%".$db->escape($search)."%'";
+		if (! empty($conf->barcode->enabled)) $sql.= " OR p.barcode LIKE '%".$db->escape($search)."%'";
+		$sql.= ")";
 	}
 	$sql.= " ORDER BY label";
 
diff --git a/htdocs/cashdesk/javascript/dhtml.js b/htdocs/cashdesk/javascript/dhtml.js
index caf0cd94abd1e0a1ea96a58d85cee395ae68e2ee..a2af98d65a8701da21864f78735b98e2efe76c51 100644
--- a/htdocs/cashdesk/javascript/dhtml.js
+++ b/htdocs/cashdesk/javascript/dhtml.js
@@ -1,5 +1,6 @@
 
-/* Copyright (C) 2007-2008 Jeremie Ollivier <jeremie.o@laposte.net>
+/* Copyright (C) 2007-2008	Jeremie Ollivier	<jeremie.o@laposte.net>
+ * Copyright (C) 2015		Regis Houssin		<regis.houssin@capnetworks.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -59,8 +60,8 @@ function afficheDonnees(aId, aTexte) {
 
 
 // aCible : id du bloc de destination; aCode : argument a passer a la page php chargee du traitement et de l'affichage
-function verifResultat(aCible, aCode) {
-	if (aCode != '') {
+function verifResultat(aCible, aCode, iLimit = 1) {
+	if (aCode != '' && aCode.length >= iLimit) {
 
 		if (texte = file ('facturation_dhtml.php?code='+escape(aCode))) {
 
diff --git a/htdocs/cashdesk/tpl/facturation1.tpl.php b/htdocs/cashdesk/tpl/facturation1.tpl.php
index b004314f66c74cb48b75962ac352362487abb420..b9335e804469ef965f32c4fa876a8be3bcecf0c5 100644
--- a/htdocs/cashdesk/tpl/facturation1.tpl.php
+++ b/htdocs/cashdesk/tpl/facturation1.tpl.php
@@ -2,6 +2,7 @@
 /* Copyright (C) 2007-2008	Jeremie Ollivier	<jeremie.o@laposte.net>
  * Copyright (C) 2011		Laurent Destailleur	<eldy@users.sourceforge.net>
  * Copyright (C) 2011		Juanjo Menent		<jmenent@2byte.es>
+ * Copyright (C) 2015		Regis Houssin		<regis.houssin@capnetworks.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -43,8 +44,8 @@ $langs->load("cashdesk");
 			<!-- Affichage de la reference et de la designation -->
 			<td><input class="texte_ref" type="text" id ="txtRef" name="txtRef" value="<?php echo $obj_facturation->ref() ?>"
 				onchange="javascript: setSource('REF');"
-				onkeyup="javascript: verifResultat('resultats_dhtml', this.value);"
-				onfocus="javascript: this.select(); verifResultat('resultats_dhtml', this.value);"
+				onkeyup="javascript: verifResultat('resultats_dhtml', this.value, <?php echo (isset($conf->global->BARCODE_USE_SEARCH_TO_SELECT) ? (int) $conf->global->BARCODE_USE_SEARCH_TO_SELECT : 1) ?>);"
+				onfocus="javascript: this.select(); verifResultat('resultats_dhtml', this.value, <?php echo (isset($conf->global->BARCODE_USE_SEARCH_TO_SELECT) ? (int) $conf->global->BARCODE_USE_SEARCH_TO_SELECT : 1) ?>);"
 				onBlur="javascript: document.getElementById('resultats_dhtml').innerHTML = '';"/>
 			</td>
 			<td class="select_design">
diff --git a/htdocs/categories/card.php b/htdocs/categories/card.php
index 7ba04331454127b95ad360f011d44b16331a249c..814badf95a769fc5dbbe6b96d3fac12ad8162f16 100644
--- a/htdocs/categories/card.php
+++ b/htdocs/categories/card.php
@@ -65,6 +65,10 @@ $object = new Categorie($db);
 $extrafields = new ExtraFields($db);
 $extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
 
+// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array array
+$hookmanager->initHooks(array('categorycard'));
+
+
 /*
  *	Actions
  */
diff --git a/htdocs/categories/categorie.php b/htdocs/categories/categorie.php
index 155593b5efd1d75aa233e8e5466b091a3ba323d0..5edede7417ec43035bd065741f0a57ef4f0fbfe7 100644
--- a/htdocs/categories/categorie.php
+++ b/htdocs/categories/categorie.php
@@ -208,7 +208,7 @@ if (empty($reshook))
 			}
 			else
 			{
-				setEventMessages($cat->error,$this->errors,'errors');
+				setEventMessages( $cat->error, $cat->errors, 'errors' );
 			}
 		}
 	}
diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php
index 167a256a990d0583e803b2156f065ad60e5ba051..190f58d9388ec516c1794e3d85b1319e8654a5eb 100644
--- a/htdocs/categories/class/categorie.class.php
+++ b/htdocs/categories/class/categorie.class.php
@@ -48,6 +48,67 @@ class Categorie extends CommonObject
 	const TYPE_MEMBER = 3;
 	const TYPE_CONTACT = 4;
 
+	/**
+	 * @var array ID mapping from type string
+	 *
+	 * @note Move to const array when PHP 5.6 will be our minimum target
+	 */
+	private $MAP_ID = array(
+		'product'  => 0,
+		'supplier' => 1,
+		'customer' => 2,
+		'member'   => 3,
+		'contact'  => 4,
+	);
+	/**
+	 * @var array Foreign keys mapping from type string
+	 *
+	 * @note Move to const array when PHP 5.6 will be our minimum target
+	 */
+	private $MAP_CAT_FK = array(
+		'product'  => 'product',
+		'customer' => 'soc',
+		'supplier' => 'soc',
+		'member'   => 'member',
+		'contact'  => 'socpeople',
+	);
+	/**
+	 * @var array Category tables mapping from type string
+	 *
+	 * @note Move to const array when PHP 5.6 will be our minimum target
+	 */
+	private $MAP_CAT_TABLE = array(
+		'product'  => 'product',
+		'customer' => 'societe',
+		'supplier' => 'fournisseur',
+		'member'   => 'member',
+		'contact'  => 'contact',
+	);
+	/**
+	 * @var array Object class mapping from type string
+	 *
+	 * @note Move to const array when PHP 5.6 will be our minimum target
+	 */
+	private $MAP_OBJ_CLASS = array(
+		'product'  => 'Product',
+		'customer' => 'Societe',
+		'supplier' => 'Fournisseur',
+		'member'   => 'Adherent',
+		'contact'  => 'Contact',
+	);
+	/**
+	 * @var array Object table mapping from type string
+	 *
+	 * @note Move to const array when PHP 5.6 will be our minimum target
+	 */
+	private $MAP_OBJ_TABLE = array(
+		'product'  => 'product',
+		'customer' => 'societe',
+		'supplier' => 'societe',
+		'member'   => 'adherent',
+		'contact'  => 'socpeople',
+	);
+
 	public $element='category';
 	public $table_element='categories';
 
@@ -56,13 +117,21 @@ class Categorie extends CommonObject
 	var $label;
 	var $description;
 	var $socid;
-	var $type;					// 0=Product, 1=Supplier, 2=Customer/Prospect, 3=Member, 4=Contact
+	/**
+	 * @var int Category type
+	 *
+	 * @see Categorie::TYPE_PRODUCT
+	 * @see Categorie::TYPE_SUPPLIER
+	 * @see Categorie::TYPE_CUSTOMER
+	 * @see Categorie::TYPE_MEMBER
+	 * @see Categorie::TYPE_CONTACT
+	 */
+	var $type;
 	var $import_key;
 
 	var $cats=array();			// Tableau en memoire des categories
 	var $motherof=array();
 
-
 	/**
 	 *	Constructor
 	 *
@@ -477,11 +546,12 @@ class Categorie extends CommonObject
 	}
 
 	/**
-	 * 	Link an object to the category
+	 * Link an object to the category
+	 *
+	 * @param   CommonObject $obj  Object to link to category
+	 * @param   string       $type Type of category ('customer', 'supplier', 'contact', 'product', 'member')
 	 *
-	 *	@param		Object	$obj	Object to link to category
-	 * 	@param		string	$type	Type of category ('societe', 'member', 'product', 'contact', 'fournisseur)
-	 * 	@return		int				1 : OK, -1 : erreur SQL, -2 : id not defined, -3 : Already linked
+	 * @return  int                1 : OK, -1 : erreur SQL, -2 : id not defined, -3 : Already linked
 	 */
 	function add_type($obj,$type)
 	{
@@ -492,28 +562,21 @@ class Categorie extends CommonObject
 		if ($this->id == -1) return -2;
 
 		// For backward compatibility
-		if ($type == 'company')  $type='societe';
-		elseif ($type == 'customer') $type='societe';
-		elseif ($type == 'supplier') $type='fournisseur';
-
-		/**
-		 * llx_categorie_contact => fk_socpeople
-		 * llx_categorie_fournisseur, llx_categorie_societe => fk_soc
-		 * llx_categorie_member => fk_member
-		 * llx_categorie_product => fk_product
-		 */
-		if ($type == 'contact') {
-			$column_name = 'socpeople';
-		} elseif ($type == 'fournisseur' || ($type == 'societe')) {
-			$column_name = 'soc';
-		} else {
-			$column_name = $type;
+		if ($type == 'societe') {
+			$type = 'customer';
+			dol_syslog( get_class( $this ) . "::add_type(): type 'societe' is deprecated, please use 'customer' instead",
+				LOG_WARNING );
+		} elseif ($type == 'fournisseur') {
+			$type = 'supplier';
+			dol_syslog( get_class( $this ) . "::add_type(): type 'fournisseur' is deprecated, please use 'supplier' instead",
+				LOG_WARNING );
 		}
 
         $this->db->begin();
 
-		$sql  = "INSERT INTO ".MAIN_DB_PREFIX."categorie_".$type." (fk_categorie, fk_".$column_name.")";
-		$sql .= " VALUES (".$this->id.", ".$obj->id.")";
+		$sql = "INSERT INTO " . MAIN_DB_PREFIX . "categorie_" . $this->MAP_CAT_TABLE[$type];
+		$sql .= " (fk_categorie, fk_" . $this->MAP_CAT_FK[$type] . ")";
+		$sql .= " VALUES (" . $this->id . ", " . $obj->id . ")";
 
 		dol_syslog(get_class($this).'::add_type', LOG_DEBUG);
 		if ($this->db->query($sql))
@@ -596,9 +659,10 @@ class Categorie extends CommonObject
 	/**
 	 * Delete object from category
 	 *
-	 * @param 	Object	$obj	Object
-	 * @param	string	$type	Type of category ('member', 'customer', 'supplier', 'product', 'contact')
-	 * @return 	int				1 if OK, -1 if KO
+	 * @param   CommonObject $obj  Object
+	 * @param   string       $type Type of category ('customer', 'supplier', 'contact', 'product', 'member')
+	 *
+	 * @return  int          1 if OK, -1 if KO
 	 */
 	function del_type($obj,$type)
 	{
@@ -607,19 +671,21 @@ class Categorie extends CommonObject
 		$error=0;
 
 		// For backward compatibility
-		if ($type == 'company')  $type='societe';
-		if ($type == 'customer') $type='societe';
-		if ($type == 'supplier') $type='fournisseur';
-
-		$column_name=$type;
-        if ($type=='contact') $column_name='socpeople';
-        if ($type=='fournisseur') $column_name='societe';
+		if ($type == 'societe') {
+			$type = 'customer';
+			dol_syslog( get_class( $this ) . "::del_type(): type 'societe' is deprecated, please use 'customer' instead",
+				LOG_WARNING );
+		} elseif ($type == 'fournisseur') {
+			$type = 'supplier';
+			dol_syslog( get_class( $this ) . "::del_type(): type 'fournisseur' is deprecated, please use 'supplier' instead",
+				LOG_WARNING );
+		}
 
         $this->db->begin();
 
-		$sql  = "DELETE FROM ".MAIN_DB_PREFIX."categorie_".$type;
-		$sql .= " WHERE fk_categorie = ".$this->id;
-		$sql .= " AND   fk_".$column_name."   = ".$obj->id;
+		$sql = "DELETE FROM " . MAIN_DB_PREFIX . "categorie_" . $this->MAP_CAT_TABLE[$type];
+		$sql .= " WHERE fk_categorie = " . $this->id;
+		$sql .= " AND   fk_" . $this->MAP_CAT_FK[$type] . "  = " . $obj->id;
 
 		dol_syslog(get_class($this).'::del_type', LOG_DEBUG);
 		if ($this->db->query($sql))
@@ -652,41 +718,32 @@ class Categorie extends CommonObject
 	}
 
 	/**
-	 * 	Return list of fetched instance of elements having this category
+	 * Return list of fetched instance of elements having this category
+	 *
+	 * @param   string $type Type of category ('customer', 'supplier', 'contact', 'product', 'member')
 	 *
- 	 * 	@param		string	$type			Type of category ('member', 'customer', 'supplier', 'product', 'contact')
-	 *	@return		mixed					-1 if KO, array of instance of object if OK
+	 * @return  mixed        -1 if KO, array of instance of object if OK
 	 */
 	function getObjectsInCateg($type)
 	{
-		$field=''; $classname=''; $category_table=''; $object_table='';
-		if ($type=='product')  { $field='product'; $classname='Product'; }
-		if ($type=='customer') { $field='soc'; $classname='Societe'; $category_table='societe'; $object_table='societe'; }
-		if ($type=='supplier') { $field='soc'; $classname='Fournisseur'; $category_table='fournisseur'; $object_table='societe'; }
-		if ($type=='member')   { $field='member'; $classname='Adherent'; $category_table=''; $object_table='adherent'; }
-		if ($type=='contact')  { $field='socpeople'; $classname='Contact'; $category_table='contact'; $object_table='socpeople'; }
-
 		$objs = array();
 
-		// Clean parameters
-		if (empty($category_table)) $category_table=$field;
-		if (empty($object_table)) $object_table=$field;
+		$obj = new $this->MAP_OBJ_CLASS[$type]( $this->db );
 
-		$sql = "SELECT c.fk_".$field;
-		$sql.= " FROM ".MAIN_DB_PREFIX."categorie_".$category_table." as c";
-		$sql.= ", ".MAIN_DB_PREFIX.$object_table." as o";
-		$sql.= " WHERE o.entity IN (".getEntity($field, 1).")";
+		$sql = "SELECT c.fk_" . $this->MAP_CAT_FK[$type];
+		$sql .= " FROM " . MAIN_DB_PREFIX . "categorie_" . $this->MAP_CAT_TABLE[$type] . " as c";
+		$sql .= ", " . MAIN_DB_PREFIX . $this->MAP_OBJ_TABLE[$type] . " as o";
+		$sql .= " WHERE o.entity IN (" . getEntity( $obj->element, 1).")";
 		$sql.= " AND c.fk_categorie = ".$this->id;
-		$sql.= " AND c.fk_".$field." = o.rowid";
+		$sql .= " AND c.fk_" . $this->MAP_CAT_FK[$type] . " = o.rowid";
 
 		dol_syslog(get_class($this)."::getObjectsInCateg", LOG_DEBUG);
 		$resql = $this->db->query($sql);
 		if ($resql)
 		{
-			while ($rec = $this->db->fetch_array($resql))
-			{
-				$obj = new $classname($this->db);
-				$obj->fetch($rec['fk_'.$field]);
+			while ($rec = $this->db->fetch_array($resql)) {
+				$obj = new $this->MAP_OBJ_CLASS[$type]( $this->db );
+				$obj->fetch( $rec['fk_' . $this->MAP_CAT_FK[$type]]);
 				$objs[] = $obj;
 			}
 			return $objs;
@@ -699,40 +756,17 @@ class Categorie extends CommonObject
 	}
 
 	/**
-	 * check for the presence of an object in a category
+	 * Check for the presence of an object in a category
+	 *
+	 * @param   string $type      Type of category ('customer', 'supplier', 'contact', 'product', 'member')
+	 * @param   int    $object_id id of the object to search
 	 *
-	 * @param	string	$type				Type of category ('member', 'customer', 'supplier', 'product', 'contact')
-	 * @param 	int    	$object_id			id of the object to search
-	 * @return 	int   						number of occurrences
+	 * @return  int                        number of occurrences
 	 */
-	function containsObject($type, $object_id)
+	function containsObject($type, $object_id )
 	{
-		$field = '';
-		$category_table = '';
-
-		if ($type == 'product') {
-			$field = 'product';
-		}
-		if ($type == 'customer') {
-			$field = 'societe';
-		}
-		if ($type == 'supplier') {
-			$field = 'societe';
-			$category_table = 'fournisseur';
-		}
-		if ($type == 'member') {
-			$field = 'member';
-			$category_table = '';
-		}
-		if ($type == 'contact') {
-			$field = 'socpeople';
-			$category_table = 'contact';
-		}
-		if (empty($category_table)) {
-			$category_table = $field;
-		}
-		$sql = "SELECT COUNT(*) as nb FROM " . MAIN_DB_PREFIX . "categorie_" . $category_table;
-		$sql .= " WHERE fk_categorie = " . $this->id . " AND fk_" . $field . " = " . $object_id;
+		$sql = "SELECT COUNT(*) as nb FROM " . MAIN_DB_PREFIX . "categorie_" . $this->MAP_CAT_TABLE[$type];
+		$sql .= " WHERE fk_categorie = " . $this->id . " AND fk_" . $this->MAP_CAT_FK[$type] . " = " . $object_id;
 		dol_syslog(get_class($this)."::containsObject", LOG_DEBUG);
 		$resql = $this->db->query($sql);
 		if ($resql) {
@@ -772,7 +806,6 @@ class Categorie extends CommonObject
 		}
 	}
 
-
 	/**
 	 * 	Load this->motherof that is array(id_son=>id_parent, ...)
 	 *
@@ -808,23 +841,34 @@ class Categorie extends CommonObject
 	}
 
 	/**
-	 * 	Reconstruit l'arborescence des categories sous la forme d'un tableau
-	 *	Renvoi un tableau de tableau('id','id_mere',...) trie selon arbre et avec:
-	 *				id = id de la categorie
-	 *				id_mere = id de la categorie mere
-	 *				id_children = tableau des id enfant
-	 *				label = nom de la categorie
-	 *				fulllabel = nom avec chemin complet de la categorie
-	 *				fullpath = chemin complet compose des id
+	 * Reconstruit l'arborescence des categories sous la forme d'un tableau
+	 * Renvoi un tableau de tableau('id','id_mere',...) trie selon arbre et avec:
+	 *                id = id de la categorie
+	 *                id_mere = id de la categorie mere
+	 *                id_children = tableau des id enfant
+	 *                label = nom de la categorie
+	 *                fulllabel = nom avec chemin complet de la categorie
+	 *                fullpath = chemin complet compose des id
+	 *
+	 * @param   string $type        Type of categories ('customer', 'supplier', 'contact', 'product', 'member'). Old
+	 *                              mode (0, 1, 2, ...) is deprecated.
+	 * @param   int    $markafterid Removed all categories including the leaf $markafterid in category tree.
 	 *
-	 *	@param      string	$type		      Type of categories (0=product, 1=suppliers, 2=customers, 3=members)
-     *  @param      int		$markafterid      Removed all categories including the leaf $markafterid in category tree.
-	 *	@return		array		      		  Array of categories. this->cats and this->motherof are set.
+	 * @return  array               Array of categories. this->cats and this->motherof are set.
 	 */
 	function get_full_arbo($type,$markafterid=0)
 	{
 	    global $conf, $langs;
 
+		// For backward compatibility
+		if (is_numeric( $type )) {
+			// We want to reverse lookup
+			$map_type = array_flip( $this->MAP_ID );
+			$type = $map_type[$type];
+			dol_syslog( get_class( $this ) . "::get_full_arbo(): numeric types are deprecated, please use string instead",
+				LOG_WARNING );
+		}
+
 		$this->cats = array();
 
 		// Init this->motherof that is array(id_son=>id_parent, ...)
@@ -836,8 +880,8 @@ class Categorie extends CommonObject
 		if (! empty($conf->global->MAIN_MULTILANGS)) $sql.= ", t.label as label_trans, t.description as description_trans";
 		$sql.= " FROM ".MAIN_DB_PREFIX."categorie as c";
 		if (! empty($conf->global->MAIN_MULTILANGS)) $sql.= " LEFT  JOIN ".MAIN_DB_PREFIX."categorie_lang as t ON t.fk_category=c.rowid AND t.lang='".$current_lang."'";
-		$sql.= " WHERE c.entity IN (".getEntity('category',1).")";
-		$sql.= " AND c.type = ".$type;
+		$sql .= " WHERE c.entity IN (" . getEntity( 'category', 1 ) . ")";
+		$sql .= " AND c.type = " . $this->MAP_ID[$type];
 
 		dol_syslog(get_class($this)."::get_full_arbo get category list", LOG_DEBUG);
 		$resql = $this->db->query($sql);
@@ -1171,37 +1215,35 @@ class Categorie extends CommonObject
 	}
 
 	/**
-	 * 	Return list of categories (id or instances) linked to element of id $id and type $type
-	 *  Should be named getListOfCategForObject
+	 * Return list of categories (object instances or labels) linked to element of id $id and type $type
+	 * Should be named getListOfCategForObject
 	 *
-	 * 	@param		int		$id			Id of element
- 	 * 	@param		string	$type		Type of category ('member', 'customer', 'supplier', 'product', 'contact'). Old mode (0, 1, 2, ...) is deprecated.
-	 * 	@param		string	$mode		'object'=Get array of fetched category instances, 'label'=Get array of category labels
-	 * 	@return		mixed				Array of category objects or < 0 if KO
+	 * @param   int    $id   Id of element
+	 * @param   string $type Type of category ('customer', 'supplier', 'contact', 'product', 'member'). Old mode
+	 *                       (0, 1, 2, ...) is deprecated.
+	 * @param   string $mode 'object'=Get array of fetched category instances, 'label'=Get array of category
+	 *                       labels
+	 *
+	 * @return  mixed        Array of category objects or < 0 if KO
 	 */
 	function containing($id,$type,$mode='object')
 	{
 		$cats = array();
 
-		$typeid=-1; $table='';
-		if ($type == '0' || $type == 'product') {
-			$typeid=self::TYPE_PRODUCT;     $table='product';   $type='product';
-		} else if ($type == '1' || $type == 'supplier') {
-			$typeid=self::TYPE_SUPPLIER;    $table='soc';       $type='fournisseur';
-		} else if ($type == '2' || $type == 'customer') {
-			$typeid=self::TYPE_CUSTOMER;    $table='soc';       $type='societe';
-		} else if ($type == '3' || $type == 'member') {
-			$typeid=self::TYPE_MEMBER;      $table='member';    $type='member';
-		} else if ($type == '4' || $type == 'contact') {
-			$typeid=self::TYPE_CONTACT;     $table='socpeople'; $type='contact';
+		// For backward compatibility
+		if (is_numeric($type))
+		{
+			dol_syslog(__METHOD__ . ': using numeric value for parameter type is deprecated. Use string code instead.', LOG_WARNING);
+			// We want to reverse lookup
+			$map_type = array_flip($this->MAP_ID);
+			$type = $map_type[$type];
 		}
 
 		$sql = "SELECT ct.fk_categorie, c.label";
-		$sql.= " FROM ".MAIN_DB_PREFIX."categorie_".$type." as ct, ".MAIN_DB_PREFIX."categorie as c";
-		$sql.= " WHERE ct.fk_categorie = c.rowid AND ct.fk_".$table." = ".$id." AND c.type = ".$typeid;
-		$sql.= " AND c.entity IN (".getEntity('category',1).")";
+		$sql .= " FROM " . MAIN_DB_PREFIX . "categorie_" . $this->MAP_CAT_TABLE[$type] . " as ct, " . MAIN_DB_PREFIX . "categorie as c";
+		$sql .= " WHERE ct.fk_categorie = c.rowid AND ct.fk_" . $this->MAP_CAT_FK[$type] . " = " . $id . " AND c.type = " . $this->MAP_ID[$type];
+		$sql .= " AND c.entity IN (" . getEntity( 'category', 1 ) . ")";
 
-		dol_syslog(get_class($this).'::containing', LOG_DEBUG);
 		$res = $this->db->query($sql);
 		if ($res)
 		{
@@ -1241,19 +1283,26 @@ class Categorie extends CommonObject
 	 */
 	function rechercher($id, $nom, $type, $exact = false, $case = false)
 	{
+		// Deprecation warning
+		if (is_numeric($type)) {
+			dol_syslog(__METHOD__ . ': using numeric types is deprecated.', LOG_WARNING);
+		}
+
 		$cats = array();
 
-		$typeid=-1;
-		if ($type == 0 || $type == 'product')       { $typeid=self::TYPE_PRODUCT; }
-		else if ($type == 1 || $type == 'supplier') { $typeid=self::TYPE_SUPPLIER; }
-		else if ($type == 2 || $type == 'customer') { $typeid=self::TYPE_CUSTOMER; }
-		else if ($type == 3 || $type == 'member')   { $typeid=self::TYPE_MEMBER; }
-        else if ($type == 4 || $type == 'contact')  { $typeid=self::TYPE_CONTACT; }
+		// For backward compatibility
+		if (is_numeric( $type )) {
+			// We want to reverse lookup
+			$map_type = array_flip( $this->MAP_ID );
+			$type = $map_type;
+			dol_syslog( get_class( $this ) . "::rechercher(): numeric types are deprecated, please use string instead",
+				LOG_WARNING );
+		}
 
 		// Generation requete recherche
-		$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."categorie";
-		$sql.= " WHERE type = ".$typeid;
-		$sql.= " AND entity IN (".getEntity('category',1).")";
+		$sql = "SELECT rowid FROM " . MAIN_DB_PREFIX . "categorie";
+		$sql .= " WHERE type = " . $this->MAP_ID[$type];
+		$sql .= " AND entity IN (" . getEntity( 'category', 1 ) . ")";
 		if ($nom)
 		{
 			if (! $exact)
diff --git a/htdocs/categories/edit.php b/htdocs/categories/edit.php
index c3acb807e01a7ae9df5fa7d29d5f1669f1f3f411..a10823e609808a92ed0f754ebce2dd58e9b0312f 100644
--- a/htdocs/categories/edit.php
+++ b/htdocs/categories/edit.php
@@ -56,6 +56,9 @@ $object = new Categorie($db);
 $extrafields = new ExtraFields($db);
 $extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
 
+// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array array
+$hookmanager->initHooks(array('categorycard'));
+
 /*
  * Actions
  */
diff --git a/htdocs/categories/viewcat.php b/htdocs/categories/viewcat.php
index 36e6f53ecc3901ed5c6e06494bd0d614c0207851..87d6dc57d6301a683a99dfdac2530070c4bcfd92 100644
--- a/htdocs/categories/viewcat.php
+++ b/htdocs/categories/viewcat.php
@@ -64,6 +64,9 @@ $type=$object->type;
 $extrafields = new ExtraFields($db);
 $extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
 
+// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array array
+$hookmanager->initHooks(array('categorycard'));
+
 /*
  *	Actions
  */
diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php
index aa34c83523c7114d2e9f3e6fafe4ecec707d7510..044cf9908eab7e1f32891f675956e6d86762bf7d 100644
--- a/htdocs/comm/action/card.php
+++ b/htdocs/comm/action/card.php
@@ -1,6 +1,6 @@
 <?php
 /* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
- * Copyright (C) 2004-2014 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2004-2015 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C) 2005      Simon TOSSER         <simon@kornog-computing.com>
  * Copyright (C) 2005-2012 Regis Houssin        <regis.houssin@capnetworks.com>
  * Copyright (C) 2010-2013 Juanjo Menent        <jmenent@2byte.es>
@@ -96,7 +96,7 @@ if (GETPOST('removedassigned') || GETPOST('removedassigned') == '0')
 {
 	$idtoremove=GETPOST('removedassigned');
 
-	if (! empty($_SESSION['assignedtouser'])) $tmpassigneduserids=dol_json_decode($_SESSION['assignedtouser'],1);
+	if (! empty($_SESSION['assignedtouser'])) $tmpassigneduserids=json_decode($_SESSION['assignedtouser'],1);
 	else $tmpassigneduserids=array();
 
 	foreach ($tmpassigneduserids as $key => $val)
@@ -104,7 +104,7 @@ if (GETPOST('removedassigned') || GETPOST('removedassigned') == '0')
 		if ($val['id'] == $idtoremove || $val['id'] == -1) unset($tmpassigneduserids[$key]);
 	}
 	//var_dump($_POST['removedassigned']);exit;
-	$_SESSION['assignedtouser']=dol_json_encode($tmpassigneduserids);
+	$_SESSION['assignedtouser']=json_encode($tmpassigneduserids);
 	$donotclearsession=1;
 	if ($action == 'add') $action = 'create';
 	if ($action == 'update') $action = 'edit';
@@ -119,10 +119,10 @@ if (GETPOST('addassignedtouser') || GETPOST('updateassignedtouser'))
 		$assignedtouser=array();
 		if (! empty($_SESSION['assignedtouser']))
 		{
-			$assignedtouser=dol_json_decode($_SESSION['assignedtouser'], true);
+			$assignedtouser=json_decode($_SESSION['assignedtouser'], true);
 		}
 		$assignedtouser[GETPOST('assignedtouser')]=array('id'=>GETPOST('assignedtouser'), 'transparency'=>GETPOST('transparency'),'mandatory'=>1);
-		$_SESSION['assignedtouser']=dol_json_encode($assignedtouser);
+		$_SESSION['assignedtouser']=json_encode($assignedtouser);
 	}
 	$donotclearsession=1;
 	if ($action == 'add') $action = 'create';
@@ -151,7 +151,7 @@ if ($action == 'add')
 		exit;
 	}
 
-    $percentage=in_array(GETPOST('status'),array(-1,100))?GETPOST('status'):GETPOST("percentage");	// If status is -1 or 100, percentage is not defined and we must use status
+    $percentage=in_array(GETPOST('status'),array(-1,100))?GETPOST('status'):(in_array(GETPOST('complete'),array(-1,100))?GETPOST('complete'):GETPOST("percentage"));	// If status is -1 or 100, percentage is not defined and we must use status
 
     // Clean parameters
 	$datep=dol_mktime($fulldayevent?'00':GETPOST("aphour"), $fulldayevent?'00':GETPOST("apmin"), 0, GETPOST("apmonth"), GETPOST("apday"), GETPOST("apyear"));
@@ -215,7 +215,7 @@ if ($action == 'add')
 		$object->duree=((float) (GETPOST('dureehour') * 60) + (float) GETPOST('dureemin')) * 60;
 
 		$listofuserid=array();
-		if (! empty($_SESSION['assignedtouser'])) $listofuserid=dol_json_decode($_SESSION['assignedtouser']);
+		if (! empty($_SESSION['assignedtouser'])) $listofuserid=json_decode($_SESSION['assignedtouser'], true);
 		$i=0;
 		foreach($listofuserid as $key => $value)
 		{
@@ -387,7 +387,7 @@ if ($action == 'update')
 		if (! empty($_SESSION['assignedtouser']))	// Now concat assigned users
 		{
 			// Restore array with key with same value than param 'id'
-			$tmplist1=dol_json_decode($_SESSION['assignedtouser'], true); $tmplist2=array();
+			$tmplist1=json_decode($_SESSION['assignedtouser'], true); $tmplist2=array();
 			foreach($tmplist1 as $key => $val)
 			{
 				if ($val['id'] > 0 && $val['id'] != $assignedtouser) $listofuserid[$val['id']]=$val;
@@ -671,19 +671,19 @@ if ($action == 'create')
     }
 
 	// Assigned to
-	print '<tr><td class="nowrap">'.$langs->trans("ActionAffectedTo").'</td><td>';
+	print '<tr><td class="tdtop nowrap">'.$langs->trans("ActionAffectedTo").'</td><td>';
 	$listofuserid=array();
 	if (empty($donotclearsession))
 	{
 		$assignedtouser=GETPOST("assignedtouser")?GETPOST("assignedtouser"):(! empty($object->userownerid) && $object->userownerid > 0 ? $object->userownerid : $user->id);
 		if ($assignedtouser) $listofuserid[$assignedtouser]=array('id'=>$assignedtouser,'mandatory'=>0,'transparency'=>$object->transparency);	// Owner first
-		$_SESSION['assignedtouser']=dol_json_encode($listofuserid);
+		$_SESSION['assignedtouser']=json_encode($listofuserid);
 	}
 	else
 	{
 		if (!empty($_SESSION['assignedtouser']))
 		{
-			$listofuserid=dol_json_decode($_SESSION['assignedtouser'], true);
+			$listofuserid=json_decode($_SESSION['assignedtouser'], true);
 		}
 	}
 	print $form->select_dolusers_forevent(($action=='create'?'add':'update'), 'assignedtouser', 1, '', 0, '', '', 0, 0, 0, 'AND u.statut != 0');
@@ -727,7 +727,7 @@ if ($action == 'create')
 	print '</td></tr>';
 
 	print '<tr><td class="nowrap">'.$langs->trans("ActionOnContact").'</td><td>';
-	$form->select_contacts(GETPOST('socid','int'),GETPOST('contactid'),'contactid',1);
+	$form->select_contacts(GETPOST('socid','int'), GETPOST('contactid'), 'contactid', 1, '', '', 0, 'minwidth200');
 	print '</td></tr>';
 
 
@@ -739,7 +739,7 @@ if ($action == 'create')
 		// Projet associe
 		$langs->load("projects");
 
-		print '<tr><td valign="top">'.$langs->trans("Project").'</td><td>';
+		print '<tr><td>'.$langs->trans("Project").'</td><td>';
 
 		$numproject=$formproject->select_projects((! empty($societe->id)?$societe->id:0),GETPOST("projectid")?GETPOST("projectid"):'','projectid');
 		if ($numproject==0)
@@ -768,7 +768,7 @@ if ($action == 'create')
 	print '</td></tr>';
 
     // Description
-    print '<tr><td valign="top">'.$langs->trans("Description").'</td><td>';
+    print '<tr><td class="tdtop">'.$langs->trans("Description").'</td><td>';
     require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
     $doleditor=new DolEditor('note',(GETPOST('note')?GETPOST('note'):$object->note),'',180,'dolibarr_notes','In',true,true,$conf->fckeditor->enabled,ROWS_6,90);
     $doleditor->Create();
@@ -915,7 +915,7 @@ if ($id > 0)
 	    }
 
 		// Assigned to
-		print '<tr><td class="nowrap">'.$langs->trans("ActionAssignedTo").'</td><td colspan="3">';
+		print '<tr><td class="tdtop nowrap">'.$langs->trans("ActionAssignedTo").'</td><td colspan="3">';
 		$listofuserid=array();
 		if (empty($donotclearsession))
 		{
@@ -929,13 +929,13 @@ if ($id > 0)
 					if ($val['id'] && $val['id'] != $object->userownerid) $listofuserid[$val['id']]=$val;
 				}
 			}
-			$_SESSION['assignedtouser']=dol_json_encode($listofuserid);
+			$_SESSION['assignedtouser']=json_encode($listofuserid);
 		}
 		else
 		{
 			if (!empty($_SESSION['assignedtouser']))
 			{
-				$listofuserid=dol_json_decode($_SESSION['assignedtouser'], true);
+				$listofuserid=json_decode($_SESSION['assignedtouser'], true);
 			}
 		}
 		print $form->select_dolusers_forevent(($action=='create'?'add':'update'), 'assignedtouser', 1, '', 0, '', '', 0, 0, 0, 'AND u.statut != 0');
@@ -968,7 +968,7 @@ if ($id > 0)
 
 			// Contact
 			print '<td>'.$langs->trans("Contact").'</td><td width="30%">';
-			$form->select_contacts($object->socid, $object->contactid,'contactid',1);
+			$form->select_contacts($object->socid, $object->contactid, 'contactid', 1, '', '', 0, 'minwidth200');
 			print '</td></tr>';
 		}
 
@@ -981,7 +981,7 @@ if ($id > 0)
 			// Projet associe
 			$langs->load("project");
 
-			print '<tr><td width="30%" valign="top">'.$langs->trans("Project").'</td><td colspan="3">';
+			print '<tr><td width="30%">'.$langs->trans("Project").'</td><td colspan="3">';
 			$numprojet=$formproject->select_projects($object->socid,$object->fk_project,'projectid');
 			if ($numprojet==0)
 			{
@@ -1004,7 +1004,7 @@ if ($id > 0)
 		}
 
         // Description
-        print '<tr><td valign="top">'.$langs->trans("Description").'</td><td colspan="3">';
+        print '<tr><td class="tdtop">'.$langs->trans("Description").'</td><td colspan="3">';
         // Editeur wysiwyg
         require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
         $doleditor=new DolEditor('note',$object->note,'',240,'dolibarr_notes','In',true,true,$conf->fckeditor->enabled,ROWS_5,90);
@@ -1101,13 +1101,13 @@ if ($id > 0)
 					if ($val['id'] && $val['id'] != $object->userownerid) $listofuserid[$val['id']]=$val;
 				}
 			}
-			$_SESSION['assignedtouser']=dol_json_encode($listofuserid);
+			$_SESSION['assignedtouser']=json_encode($listofuserid);
 		}
 		else
 		{
 			if (!empty($_SESSION['assignedtouser']))
 			{
-				$listofuserid=dol_json_decode($_SESSION['assignedtouser'], true);
+				$listofuserid=json_decode($_SESSION['assignedtouser'], true);
 			}
 		}
 		print $form->select_dolusers_forevent('view','assignedtouser',1);
@@ -1168,7 +1168,7 @@ if ($id > 0)
 		// Project
 		if (! empty($conf->projet->enabled))
 		{
-			print '<tr><td width="30%" valign="top">'.$langs->trans("Project").'</td><td colspan="3">';
+			print '<tr><td width="30%">'.$langs->trans("Project").'</td><td colspan="3">';
 			if ($object->fk_project)
 			{
 				$project=new Project($db);
@@ -1192,7 +1192,7 @@ if ($id > 0)
 		}
 
 		// Description
-		print '<tr><td valign="top">'.$langs->trans("Description").'</td><td colspan="3">';
+		print '<tr><td class="tdtop">'.$langs->trans("Description").'</td><td colspan="3">';
 		print dol_htmlentitiesbr($object->note);
 		print '</td></tr>';
 
@@ -1267,7 +1267,7 @@ if ($id > 0)
 		print '<input type="hidden" name="month" value="'.dol_print_date($object->datep,'%m').'">';
 		print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">';
 		//print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">';
-		print img_picto($langs->trans("ViewCal"),'object_calendar','class="hideonsmartphone"').' <input type="submit" style="min-width: 120px" class="button" name="viewcal" value="'.$langs->trans("ViewCal").'">';
+		print img_picto($langs->trans("ViewCal"),'object_calendar','class="hideonsmartphone pictoactionview"').' <input type="submit" style="min-width: 120px" class="button buttonactionview" name="viewcal" value="'.$langs->trans("ViewCal").'">';
 		print '</form>'."\n";
 		print '<form name="listactionsfilterweek" action="'.DOL_URL_ROOT.'/comm/action/index.php" method="POST" style="float: left; padding-right: 10px;">';
 		print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
@@ -1276,7 +1276,7 @@ if ($id > 0)
 		print '<input type="hidden" name="month" value="'.dol_print_date($object->datep,'%m').'">';
 		print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">';
 		//print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">';
-		print img_picto($langs->trans("ViewCal"),'object_calendarweek','class="hideonsmartphone"').' <input type="submit" style="min-width: 120px" class="button" name="viewweek" value="'.$langs->trans("ViewWeek").'">';
+		print img_picto($langs->trans("ViewCal"),'object_calendarweek','class="hideonsmartphone pictoactionview"').' <input type="submit" style="min-width: 120px" class="button buttonactionview" name="viewweek" value="'.$langs->trans("ViewWeek").'">';
 		print '</form>'."\n";
 		print '<form name="listactionsfilterday" action="'.DOL_URL_ROOT.'/comm/action/index.php" method="POST" style="float: left; padding-right: 10px;">';
 		print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
@@ -1285,7 +1285,7 @@ if ($id > 0)
 		print '<input type="hidden" name="month" value="'.dol_print_date($object->datep,'%m').'">';
 		print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">';
 		//print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">';
-		print img_picto($langs->trans("ViewCal"),'object_calendarday','class="hideonsmartphone"').' <input type="submit" style="min-width: 120px" class="button" name="viewday" value="'.$langs->trans("ViewDay").'">';
+		print img_picto($langs->trans("ViewCal"),'object_calendarday','class="hideonsmartphone pictoactionview"').' <input type="submit" style="min-width: 120px" class="button buttonactionview" name="viewday" value="'.$langs->trans("ViewDay").'">';
 		print '</form>'."\n";
 		print '<form name="listactionsfilterperuser" action="'.DOL_URL_ROOT.'/comm/action/peruser.php" method="POST" style="float: left; padding-right: 10px;">';
 		print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
@@ -1294,7 +1294,7 @@ if ($id > 0)
 		print '<input type="hidden" name="month" value="'.dol_print_date($object->datep,'%m').'">';
 		print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">';
 		//print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">';
-		print img_picto($langs->trans("ViewCal"),'object_calendarperuser','class="hideonsmartphone"').' <input type="submit" style="min-width: 120px" class="button" name="viewperuser" value="'.$langs->trans("ViewPerUser").'">';
+		print img_picto($langs->trans("ViewCal"),'object_calendarperuser','class="hideonsmartphone pictoactionview"').' <input type="submit" style="min-width: 120px" class="button buttonactionview" name="viewperuser" value="'.$langs->trans("ViewPerUser").'">';
 		print '</form>'."\n";
 		print '</div>';
 
diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php
index fb4c6f45d84c9520035a634c09eee460a6c727e9..530083fb30adce79ac1ea3e7770e0824ea785985 100644
--- a/htdocs/comm/action/class/actioncomm.class.php
+++ b/htdocs/comm/action/class/actioncomm.class.php
@@ -61,6 +61,7 @@ class ActionComm extends CommonObject
     /**
      * @var string
      * @deprecated Use $label
+     * @see label
      */
     public $libelle;
 
@@ -71,6 +72,7 @@ class ActionComm extends CommonObject
      * Object user that create action
      * @var User
      * @deprecated
+     * @see authorid
      */
     var $author;
 
@@ -78,6 +80,7 @@ class ActionComm extends CommonObject
      * Object user that modified action
      * @var User
      * @deprecated
+     * @see usermodid
      */
     var $usermod;
     var $authorid;		// Id user that create action
@@ -114,6 +117,7 @@ class ActionComm extends CommonObject
      * Object user of owner
      * @var User
      * @deprecated
+     * @see userownerid
      */
     var $usertodo;
 
@@ -121,6 +125,7 @@ class ActionComm extends CommonObject
      * Object user that did action
      * @var User
      * @deprecated
+     * @see userdoneid
      */
     var $userdone;
 
@@ -130,12 +135,16 @@ class ActionComm extends CommonObject
     /**
      * Company linked to action (optional)
      * @var Societe|null
+     * @deprecated
+     * @see socid
      */
     var $societe;
 
     /**
      * Contact linked to action (optional)
      * @var Contact|null
+     * @deprecated
+     * @see contactid
      */
     var $contact;
 
@@ -468,7 +477,7 @@ class ActionComm extends CommonObject
                 $this->fulldayevent			= $obj->fulldayevent;
                 $this->location				= $obj->location;
                 $this->transparency			= $obj->transparency;
-                $this->punctual				= $obj->punctual;
+                $this->punctual				= $obj->punctual;       // deprecated
 
                 $this->socid				= $obj->fk_soc;			// To have fetch_thirdparty method working
                 $this->contactid			= $obj->fk_contact;		// To have fetch_contact method working
diff --git a/htdocs/comm/action/document.php b/htdocs/comm/action/document.php
index 82d88089684b273fe8dd4d003f3b9b97a90606ee..d45a18e3e8c4d0c09d05fa40a48f98494fc5541f 100644
--- a/htdocs/comm/action/document.php
+++ b/htdocs/comm/action/document.php
@@ -1,6 +1,6 @@
 <?php
 /* Copyright (C) 2003-2004 Rodolphe Quiedeville  <rodolphe@quiedeville.org>
- * Copyright (C) 2004-2012 Laurent Destailleur   <eldy@users.sourceforge.net>
+ * Copyright (C) 2004-2015 Laurent Destailleur   <eldy@users.sourceforge.net>
  * Copyright (C) 2005      Marc Barilley / Ocebo <marc@ocebo.com>
  * Copyright (C) 2005-2012 Regis Houssin         <regis.houssin@capnetworks.com>
  * Copyright (C) 2005      Simon TOSSER          <simon@kornog-computing.com>
@@ -143,7 +143,7 @@ if ($object->id > 0)
 	print '<tr><td>'.$langs->trans("Title").'</td><td colspan="3">'.$object->label.'</td></tr>';
 
 	// Full day event
-	print '<tr><td>'.$langs->trans("EventOnFullDay").'</td><td colspan="3">'.yn($object->fulldayevent).'</td></tr>';
+	print '<tr><td>'.$langs->trans("EventOnFullDay").'</td><td colspan="3">'.yn($object->fulldayevent, 3).'</td></tr>';
 
 	// Date start
 	print '<tr><td width="30%">'.$langs->trans("DateActionStart").'</td><td colspan="3">';
@@ -186,13 +186,13 @@ if ($object->id > 0)
 				if ($val['id'] && $val['id'] != $object->userownerid) $listofuserid[$val['id']]=$val;
 			}
 		}
-		$_SESSION['assignedtouser']=dol_json_encode($listofuserid);
+		$_SESSION['assignedtouser']=json_encode($listofuserid);
 	}
 	else
 	{
 		if (!empty($_SESSION['assignedtouser']))
 		{
-			$listofuserid=dol_json_decode($_SESSION['assignedtouser'], true);
+			$listofuserid=json_decode($_SESSION['assignedtouser'], true);
 		}
 	}
 	print $form->select_dolusers_forevent('view','assignedtouser',1);
@@ -235,7 +235,7 @@ if ($object->id > 0)
 	// Project
 	if (! empty($conf->projet->enabled))
 	{
-		print '<tr><td valign="top">'.$langs->trans("Project").'</td><td colspan="3">';
+		print '<tr><td class="tdtop">'.$langs->trans("Project").'</td><td colspan="3">';
 		if ($object->fk_project)
 		{
 			$project=new Project($db);
@@ -274,7 +274,7 @@ if ($object->id > 0)
 	}
 
 
-	print '<tr><td width="30%" nowrap>'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.count($filearray).'</td></tr>';
+	print '<tr><td width="30%" class="nowrap">'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.count($filearray).'</td></tr>';
 	print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td colspan="3">'.$totalsize.' '.$langs->trans("bytes").'</td></tr>';
 
 	print '</table>';
@@ -294,7 +294,7 @@ if ($object->id > 0)
 		print '<input type="hidden" name="month" value="'.dol_print_date($object->datep,'%m').'">';
 		print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">';
 		//print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">';
-		print img_picto($langs->trans("ViewCal"),'object_calendar','class="hideonsmartphone"').' <input type="submit" style="min-width: 120px" class="button" name="viewcal" value="'.$langs->trans("ViewCal").'">';
+		print img_picto($langs->trans("ViewCal"),'object_calendar','class="hideonsmartphone pictoactionview"').' <input type="submit" style="min-width: 120px" class="button buttonactionview" name="viewcal" value="'.$langs->trans("ViewCal").'">';
 		print '</form>'."\n";
 		print '<form name="listactionsfilterweek" action="'.DOL_URL_ROOT.'/comm/action/index.php" method="POST" style="float: left; padding-right: 10px;">';
 		print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
@@ -303,7 +303,7 @@ if ($object->id > 0)
 		print '<input type="hidden" name="month" value="'.dol_print_date($object->datep,'%m').'">';
 		print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">';
 		//print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">';
-		print img_picto($langs->trans("ViewCal"),'object_calendarweek','class="hideonsmartphone"').' <input type="submit" style="min-width: 120px" class="button" name="viewweek" value="'.$langs->trans("ViewWeek").'">';
+		print img_picto($langs->trans("ViewCal"),'object_calendarweek','class="hideonsmartphone pictoactionview"').' <input type="submit" style="min-width: 120px" class="button buttonactionview" name="viewweek" value="'.$langs->trans("ViewWeek").'">';
 		print '</form>'."\n";
 		print '<form name="listactionsfilterday" action="'.DOL_URL_ROOT.'/comm/action/index.php" method="POST" style="float: left; padding-right: 10px;">';
 		print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
@@ -312,7 +312,7 @@ if ($object->id > 0)
 		print '<input type="hidden" name="month" value="'.dol_print_date($object->datep,'%m').'">';
 		print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">';
 		//print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">';
-		print img_picto($langs->trans("ViewCal"),'object_calendarday','class="hideonsmartphone"').' <input type="submit" style="min-width: 120px" class="button" name="viewday" value="'.$langs->trans("ViewDay").'">';
+		print img_picto($langs->trans("ViewCal"),'object_calendarday','class="hideonsmartphone pictoactionview"').' <input type="submit" style="min-width: 120px" class="button buttonactionview" name="viewday" value="'.$langs->trans("ViewDay").'">';
 		print '</form>'."\n";
 		print '<form name="listactionsfilterperuser" action="'.DOL_URL_ROOT.'/comm/action/peruser.php" method="POST" style="float: left; padding-right: 10px;">';
 		print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
@@ -321,7 +321,7 @@ if ($object->id > 0)
 		print '<input type="hidden" name="month" value="'.dol_print_date($object->datep,'%m').'">';
 		print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">';
 		//print '<input type="hidden" name="day" value="'.dol_print_date($object->datep,'%d').'">';
-		print img_picto($langs->trans("ViewCal"),'object_calendarperuser','class="hideonsmartphone"').' <input type="submit" style="min-width: 120px" class="button" name="viewperuser" value="'.$langs->trans("ViewPerUser").'">';
+		print img_picto($langs->trans("ViewCal"),'object_calendarperuser','class="hideonsmartphone pictoactionview"').' <input type="submit" style="min-width: 120px" class="button buttonactionview" name="viewperuser" value="'.$langs->trans("ViewPerUser").'">';
 		print '</form>'."\n";
 		print '</div>';
 
diff --git a/htdocs/comm/askpricesupplier/card.php b/htdocs/comm/askpricesupplier/card.php
index c49881ba5427fc2d4e6320a0ee009e6494dc7c7f..bfbcc9d4273ef9457000e1d4674bc1deebfd0177 100644
--- a/htdocs/comm/askpricesupplier/card.php
+++ b/htdocs/comm/askpricesupplier/card.php
@@ -1709,10 +1709,12 @@ if ($action == 'create')
 
 		$somethingshown = $formfile->show_documents('askpricesupplier', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', 0, '', $soc->default_lang);
 
-		/*
-		 * Linked object block
-		*/
-		$somethingshown = $object->showLinkedObjectBlock();
+		// Linked object block
+		$somethingshown = $form->showLinkedObjectBlock($object);
+
+		// Show links to link elements
+		//$linktoelem = $form->showLinkToObjectBlock($object);
+		//if ($linktoelem) print '<br>'.$linktoelem;
 
 		print '</div><div class="fichehalfright"><div class="ficheaddleft">';
 
@@ -1736,8 +1738,8 @@ if ($action == 'create')
 
 		$ref = dol_sanitizeFileName($object->ref);
 		include_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php';
-		$fileparams = dol_most_recent_file($conf->askpricesupplier->dir_output . '/' . $ref, preg_quote($ref, '/'));
-		$file = $fileparams ['fullname'];
+		$fileparams = dol_most_recent_file($conf->askpricesupplier->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
+		$file = $fileparams['fullname'];
 
 		// Define output language
 		$outputlangs = $langs;
@@ -1762,8 +1764,8 @@ if ($action == 'create')
 				dol_print_error($db, $result);
 				exit();
 			}
-			$fileparams = dol_most_recent_file($conf->askpricesupplier->dir_output . '/' . $ref, preg_quote($ref, '/'));
-			$file = $fileparams ['fullname'];
+			$fileparams = dol_most_recent_file($conf->askpricesupplier->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
+			$file = $fileparams['fullname'];
 		}
 
 		print '<br>';
diff --git a/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php b/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php
index 2e39d8592cf9bb31a42855fa81cdc3698f7a2919..2854a0a0d4b4806dc60bdff2d49eaf08f485f9ef 100644
--- a/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php
+++ b/htdocs/comm/askpricesupplier/class/askpricesupplier.class.php
@@ -59,14 +59,42 @@ class AskPriceSupplier extends CommonObject
     var $client;		// Objet societe client (a charger par fetch_client)
 
     var $fk_project;
+	/**
+	 * @deprecated
+	 * @see user_author_id
+	 */
     var $author;
     var $ref;
 	var $ref_fourn;  //Reference saisie lors de l'ajout d'une ligne à la demande
     var $statut;					// 0 (draft), 1 (validated), 2 (signed), 3 (not signed), 4 (billed)
-    var $datec;						// Date of creation
     var $date;						// Date of proposal
     var $date_livraison;
 
+	/**
+	 * @deprecated
+	 * @see date_creation
+	 */
+	var $datec;
+
+	/**
+	 * Creation date
+	 * @var int
+	 */
+	public $date_creation;
+
+	/**
+	 * @deprecated
+	 * @see date_validation
+	 */
+	var $datev;
+
+	/**
+	 * Validation date
+	 * @var int
+	 */
+	public $date_validation;
+
+
     var $user_author_id;
     var $user_valid_id;
     var $user_close_id;
@@ -76,9 +104,22 @@ class AskPriceSupplier extends CommonObject
     var $total_localtax1;			// Total Local Taxes 1
     var $total_localtax2;			// Total Local Taxes 2
     var $total_ttc;					// Total with tax
-    var $price;						// deprecated (for compatibility)
-    var $tva;						// deprecated (for compatibility)
-    var $total;						// deprecated (for compatibility)
+
+	/**
+	 * @deprecated
+	 * @see price_ht
+	 */
+    var $price;
+	/**
+	 * @deprecated
+	 * @see total_tva
+	 */
+    var $tva;
+	/**
+	 * @deprecated
+	 * @see total_ttc
+	 */
+    var $total;
 
     var $cond_reglement_id;
     var $cond_reglement_code;
@@ -88,7 +129,11 @@ class AskPriceSupplier extends CommonObject
     var $remise;
     var $remise_percent;
     var $remise_absolue;
-    var $note;						// deprecated (for compatibility)
+	/**
+	 * @deprecated
+	 * @see note_public, note_private
+	 */
+    var $note;
     var $note_private;
     var $note_public;
     var $shipping_method_id;
@@ -1031,7 +1076,7 @@ class AskPriceSupplier extends CommonObject
                 $this->remise               = $obj->remise;
                 $this->remise_percent       = $obj->remise_percent;
                 $this->remise_absolue       = $obj->remise_absolue;
-                $this->total                = $obj->total; // TODO obsolete
+                $this->total                = $obj->total; // TODO deprecated
                 $this->total_ht             = $obj->total_ht;
                 $this->total_tva            = $obj->tva;
                 $this->total_localtax1		= $obj->localtax1;
@@ -1040,14 +1085,14 @@ class AskPriceSupplier extends CommonObject
                 $this->socid                = $obj->fk_soc;
                 $this->fk_project           = $obj->fk_projet;
                 $this->modelpdf             = $obj->model_pdf;
-                $this->note                 = $obj->note_private; // TODO obsolete
+                $this->note                 = $obj->note_private; // TODO deprecated
                 $this->note_private         = $obj->note_private;
                 $this->note_public          = $obj->note_public;
                 $this->statut               = $obj->fk_statut;
                 $this->statut_libelle       = $obj->statut_label;
 
-                $this->datec                = $this->db->jdate($obj->datec); // TODO obsolete
-                $this->datev                = $this->db->jdate($obj->datev); // TODO obsolete
+                $this->datec                = $this->db->jdate($obj->datec); // TODO deprecated
+                $this->datev                = $this->db->jdate($obj->datev); // TODO deprecated
                 $this->date_creation		= $this->db->jdate($obj->datec); //Creation date
                 $this->date_validation		= $this->db->jdate($obj->datev); //Validation date
                 $this->date_livraison       = $this->db->jdate($obj->date_livraison);
@@ -2431,7 +2476,17 @@ class AskPriceSupplierLine  extends CommonObject
     var $fk_parent_line;
     var $desc;          	// Description ligne
     var $fk_product;		// Id produit predefini
-    var $product_type = 0;	// Type 0 = product, 1 = Service
+	/**
+	 * @deprecated
+	 * @see product_type
+	 */
+	var $fk_product_type;
+	/**
+	 * Product type
+	 * @var int
+	 * @see Product::TYPE_PRODUCT, Product::TYPE_SERVICE
+	 */
+    public $product_type = Product::TYPE_PRODUCT;
 
     var $qty;
     var $tva_tx;
@@ -2459,14 +2514,43 @@ class AskPriceSupplierLine  extends CommonObject
     var $total_tva;			// Total TVA  de la ligne toute quantite et incluant la remise ligne
     var $total_ttc;			// Total TTC de la ligne toute quantite et incluant la remise ligne
 
-    // Ne plus utiliser
+	/**
+	 * @deprecated
+	 * @see remise_percent, fk_remise_except
+	 */
     var $remise;
+	/**
+	 * @deprecated
+	 * @see subprice
+	 */
     var $price;
 
     // From llx_product
-    var $ref;						// Reference produit
-    var $libelle;       // Label produit
-    var $product_desc;  // Description produit
+	/**
+	 * @deprecated
+	 * @see product_ref
+	 */
+	var $ref;
+	/**
+	 * Product reference
+	 * @var string
+	 */
+	public $product_ref;
+	/**
+	 * @deprecated
+	 * @see product_label
+	 */
+	var $libelle;
+	/**
+	 *  Product label
+	 * @var string
+	 */
+	public $product_label;
+	/**
+	 * Product description
+	 * @var string
+	 */
+	public $product_desc;
 
     var $localtax1_tx;		// Local tax 1
     var $localtax2_tx;		// Local tax 2
diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php
index af9b7205d1644640e7915d7abe9f12deb5eb6ca3..aba9433cabcc7ee00304656d5c8b809626090267 100644
--- a/htdocs/comm/card.php
+++ b/htdocs/comm/card.php
@@ -35,6 +35,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
 require_once DOL_DOCUMENT_ROOT.'/societe/class/client.class.php';
 require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
+require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php';
 if (! empty($conf->facture->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
 if (! empty($conf->propal->enabled)) require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
 if (! empty($conf->commande->enabled)) require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
@@ -140,7 +141,7 @@ if (empty($reshook))
 		if ($result < 0) setEventMessage($object->error,$object->errors,'errors');
 	}
 
-	// update prospect level
+	// set communication status
 	if ($action == 'setstcomm')
 	{
 		$object->fetch($id);
@@ -468,6 +469,14 @@ if ($id > 0)
 		print '</div></td></tr>';
 	}
 
+	// Categories
+	if (!empty( $conf->categorie->enabled ) && !empty( $user->rights->categorie->lire )) {
+		print '<tr><td>' . $langs->trans( "Categories" ) . '</td>';
+		print '<td colspan="3">';
+		print $form->showCategories( $object->id, 'customer', 1 );
+		print "</td></tr>";
+	}
+
 	// Other attributes
 	$parameters=array('socid'=>$object->id, 'colspan' => ' colspan="3"', 'colspanvalue' => '3');
 	$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action);    // Note that $action and $object may have been modified by hook
diff --git a/htdocs/comm/mailing/class/mailing.class.php b/htdocs/comm/mailing/class/mailing.class.php
index 69a3520d1e827d8b7a9ddfbfe2f1a26ed996fead..1df5a7ad18f9ec4e28817c3494320d1de9d4846e 100644
--- a/htdocs/comm/mailing/class/mailing.class.php
+++ b/htdocs/comm/mailing/class/mailing.class.php
@@ -421,7 +421,7 @@ class Mailing extends CommonObject
 		$resql=$this->db->query($sql);
 		if ($resql)
 		{
-			return 1;
+			return $this->delete_targets();
 		}
 		else
 		{
@@ -429,6 +429,29 @@ class Mailing extends CommonObject
 			return -1;
 		}
 	}
+	
+	/**
+	 *  Delete targets emailing
+	 *
+	 *  @return int       1 if OK, 0 if error
+	 */
+	function delete_targets()
+	{
+		$sql = "DELETE FROM ".MAIN_DB_PREFIX."mailing_cibles";
+		$sql.= " WHERE fk_mailing = ".$this->id;
+
+		dol_syslog("Mailing::delete_targets", LOG_DEBUG);
+		$resql=$this->db->query($sql);
+		if ($resql)
+		{
+			return 1;
+		}
+		else
+		{
+			$this->error=$this->db->lasterror();
+			return 0;
+		}
+	}
 
 
 	/**
diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php
index 5be006c005386a5fd25dae4b8788f0423f03e260..8cd48a75f40d11fca167e1b04d3ec0b92d40c58d 100644
--- a/htdocs/comm/propal.php
+++ b/htdocs/comm/propal.php
@@ -41,6 +41,7 @@ require_once DOL_DOCUMENT_ROOT . '/core/modules/propale/modules_propale.php';
 require_once DOL_DOCUMENT_ROOT . '/core/lib/propal.lib.php';
 require_once DOL_DOCUMENT_ROOT . '/core/lib/functions2.lib.php';
 require_once DOL_DOCUMENT_ROOT . '/core/class/extrafields.class.php';
+require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php';
 if (! empty($conf->projet->enabled)) {
 	require_once DOL_DOCUMENT_ROOT . '/projet/class/project.class.php';
 	require_once DOL_DOCUMENT_ROOT . '/core/class/html.formprojet.class.php';
@@ -305,7 +306,8 @@ if (empty($reshook))
 					$object->fk_project = GETPOST('projectid');
 					$object->modelpdf = GETPOST('model');
 					$object->author = $user->id; // deprecated
-					$object->note = GETPOST('note');
+					$object->note_private = GETPOST('note_private');
+					$object->note_public = GETPOST('note_public');
 					$object->statut = Propal::STATUS_DRAFT;
 					$object->fk_incoterms = GETPOST('incoterm_id', 'int');
 					$object->location_incoterms = GETPOST('location_incoterms', 'alpha');
@@ -331,7 +333,8 @@ if (empty($reshook))
 				$object->fk_project = GETPOST('projectid');
 				$object->modelpdf = GETPOST('model');
 				$object->author = $user->id; // deprecated
-				$object->note = GETPOST('note');
+				$object->note_private = GETPOST('note_private');
+				$object->note_public = GETPOST('note_public');
 				$object->fk_incoterms = GETPOST('incoterm_id', 'int');
 				$object->location_incoterms = GETPOST('location_incoterms', 'alpha');
 
@@ -640,7 +643,6 @@ if (empty($reshook))
 	include DOL_DOCUMENT_ROOT.'/core/actions_sendmails.inc.php';
 
 
-
 	// Go back to draft
 	if ($action == 'modif' && $user->rights->propal->creer)
 	{
@@ -1257,6 +1259,7 @@ $formother = new FormOther($db);
 $formfile = new FormFile($db);
 $formpropal = new FormPropal($db);
 $companystatic = new Societe($db);
+if (! empty($conf->projet->enabled)) { $formproject = new FormProjets($db); }
 
 $now = dol_now();
 
@@ -1341,7 +1344,7 @@ if ($action == 'create')
 	print '<table class="border" width="100%">';
 
 	// Reference
-	print '<tr><td class="fieldrequired">' . $langs->trans('Ref') . '</td><td colspan="2">' . $langs->trans("Draft") . '</td></tr>';
+	print '<tr><td width="25%" class="fieldrequired">' . $langs->trans('Ref') . '</td><td colspan="2">' . $langs->trans("Draft") . '</td></tr>';
 
 	// Ref customer
 	print '<tr><td>' . $langs->trans('RefCustomer') . '</td><td colspan="2">';
@@ -1445,13 +1448,20 @@ if ($action == 'create')
 	}
 	print '</td></tr>';
 
-	// Model
-	print '<tr>';
-	print '<td>' . $langs->trans("DefaultModel") . '</td>';
-	print '<td colspan="2">';
-	$liste = ModelePDFPropales::liste_modeles($db);
-	print $form->selectarray('model', $liste, ($conf->global->PROPALE_ADDON_PDF_ODT_DEFAULT ? $conf->global->PROPALE_ADDON_PDF_ODT_DEFAULT : $conf->global->PROPALE_ADDON_PDF));
-	print "</td></tr>";
+	// Project
+	if (! empty($conf->projet->enabled) && $socid > 0)
+	{
+		$projectid = GETPOST('projectid')?GETPOST('projectid'):0;
+		if ($origin == 'project') $projectid = ($originid ? $originid : 0);
+
+		$langs->load("projects");
+		print '<tr>';
+		print '<td>' . $langs->trans("Project") . '</td><td colspan="2">';
+		$numprojet = $formproject->select_projects($soc->id, $projectid, 'projectid', 0);
+		print ' &nbsp; <a href="../projet/card.php?socid=' . $soc->id . '&action=create&status=1&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create&socid='.$soc->id).'">' . $langs->trans("AddProject") . '</a>';
+		print '</td>';
+		print '</tr>';
+	}
 
 	// Incoterms
 	if (!empty($conf->incoterm->enabled))
@@ -1463,25 +1473,41 @@ if ($action == 'create')
 		print '</td></tr>';
 	}
 
-	// Project
-	if (! empty($conf->projet->enabled) && $socid > 0)
-	{
-		$formproject = new FormProjets($db);
+	// Template to use by default
+	print '<tr>';
+	print '<td>' . $langs->trans("DefaultModel") . '</td>';
+	print '<td colspan="2">';
+	$liste = ModelePDFPropales::liste_modeles($db);
+	print $form->selectarray('model', $liste, ($conf->global->PROPALE_ADDON_PDF_ODT_DEFAULT ? $conf->global->PROPALE_ADDON_PDF_ODT_DEFAULT : $conf->global->PROPALE_ADDON_PDF));
+	print "</td></tr>";
 
-		$projectid = 0;
-		if ($origin == 'project')
-			$projectid = ($originid ? $originid : 0);
+	// Public note
+	print '<tr>';
+	print '<td class="border" valign="top">' . $langs->trans('NotePublic') . '</td>';
+	print '<td valign="top" colspan="2">';
+	$note_public = '';
+	if (is_object($objectsrc)) 	// Take value from source object
+	{
+		$note_public = $objectsrc->note_public;
+	}
+	$doleditor = new DolEditor('note_public', $note_public, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, '90%');
+	print $doleditor->Create(1);
 
+	// Private note
+	if (empty($user->societe_id))
+	{
 		print '<tr>';
-		print '<td>' . $langs->trans("Project") . '</td><td colspan="2">';
-
-		$numprojet = $formproject->select_projects($soc->id, $projectid, 'projectid', 0);
-		if ($numprojet == 0) {
-			$langs->load("projects");
-			print ' &nbsp; <a href="../projet/card.php?socid=' . $soc->id . '&action=create">' . $langs->trans("AddProject") . '</a>';
+		print '<td class="border" valign="top">' . $langs->trans('NotePrivate') . '</td>';
+		print '<td valign="top" colspan="2">';
+		$note_private = '';
+		if (! empty($origin) && ! empty($originid) && is_object($objectsrc)) 		// Take value from source object
+		{
+			$note_private = $objectsrc->note_private;
 		}
-		print '</td>';
-		print '</tr>';
+		$doleditor = new DolEditor('note_private', $note_private, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, '90%');
+		print $doleditor->Create(1);
+		// print '<textarea name="note_private" wrap="soft" cols="70" rows="'.ROWS_3.'">'.$note_private.'.</textarea>
+		print '</td></tr>';
 	}
 
 	// Other attributes
@@ -2281,10 +2307,13 @@ if ($action == 'create')
 
 		$somethingshown = $formfile->show_documents('propal', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', 0, '', $soc->default_lang);
 
-		/*
-		 * Linked object block
-		*/
-		$somethingshown = $object->showLinkedObjectBlock();
+		// Linked object block
+		$somethingshown = $form->showLinkedObjectBlock($object);
+
+		// Show links to link elements
+		$linktoelem = $form->showLinkToObjectBlock($object);
+		if ($linktoelem) print '<br>'.$linktoelem;
+
 
 		print '</div><div class="fichehalfright"><div class="ficheaddleft">';
 		// print '</td><td valign="top" width="50%">';
@@ -2311,8 +2340,8 @@ if ($action == 'create')
 
 		$ref = dol_sanitizeFileName($object->ref);
 		include_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php';
-		$fileparams = dol_most_recent_file($conf->propal->dir_output . '/' . $ref, preg_quote($ref, '/'));
-		$file = $fileparams ['fullname'];
+		$fileparams = dol_most_recent_file($conf->propal->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
+		$file = $fileparams['fullname'];
 
 		// Define output language
 		$outputlangs = $langs;
@@ -2336,8 +2365,8 @@ if ($action == 'create')
 				dol_print_error($db, $result);
 				exit();
 			}
-			$fileparams = dol_most_recent_file($conf->propal->dir_output . '/' . $ref, preg_quote($ref, '/'));
-			$file = $fileparams ['fullname'];
+			$fileparams = dol_most_recent_file($conf->propal->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
+			$file = $fileparams['fullname'];
 		}
 
 		print '<br>';
diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php
index af46db14d9a4afd37ec47e1a8ffb7928f2b175e9..b80b96654c1be1e8ef0fcf78f3cbb11fedf5c803 100644
--- a/htdocs/comm/propal/class/propal.class.php
+++ b/htdocs/comm/propal/class/propal.class.php
@@ -75,26 +75,35 @@ class Propal extends CommonObject
 
 	/**
 	 * Status of the quote
-	 * Check the following constants:
-	 * - STATUS_DRAFT
-	 * - STATUS_VALIDATED
-	 * - STATUS_SIGNED
-	 * - STATUS_NOTSIGNED
-	 * - STATUS_BILLED
 	 * @var int
+	 * @see Propal::STATUS_DRAFT, Propal::STATUS_VALIDATED, Propal::STATUS_SIGNED, Propal::STATUS_NOTSIGNED, Propal::STATUS_BILLED
 	 */
     var $statut;
 
 	/**
-	 * Date of creation
-	 * @var
+	 * @deprecated
+	 * @see date_creation
 	 */
     var $datec;
+
 	/**
-	 * Date of validation
-	 * @var
+	 * Creation date
+	 * @var int
+	 */
+	public $date_creation;
+
+	/**
+	 * @deprecated
+	 * @see date_validation
 	 */
     var $datev;
+
+	/**
+	 * Validation date
+	 * @var int
+	 */
+	public $date_validation;
+
 	/**
 	 * Date of the quote
 	 * @var
@@ -102,8 +111,8 @@ class Propal extends CommonObject
     var $date;
 
 	/**
-	 * Same than date ¿?
-	 * @var
+	 * @deprecated
+	 * @see date
 	 */
     var $datep;
     var $date_livraison;
@@ -121,14 +130,17 @@ class Propal extends CommonObject
 
 	/**
 	 * @deprecated
+	 * @see total_ht
 	 */
     var $price;
 	/**
 	 * @deprecated
+	 * @see total_tva
 	 */
     var $tva;
 	/**
 	 * @deprecated
+	 * @see total_ttc
 	 */
     var $total;
 
@@ -142,6 +154,7 @@ class Propal extends CommonObject
     var $remise_absolue;
 	/**
 	 * @deprecated
+	 * @see note_private, note_public
 	 */
     var $note;
     var $note_private;
@@ -1048,8 +1061,10 @@ class Propal extends CommonObject
      */
     function createFromClone($socid=0)
     {
-        global $user,$langs,$conf,$hookmanager;
-
+        global $db, $user,$langs,$conf,$hookmanager;
+		
+		dol_include_once('/projet/class.project.class.php');
+				
         $this->context['createfromclone']='createfromclone';
 
         $error=0;
@@ -1074,7 +1089,16 @@ class Propal extends CommonObject
                 $this->socid 				= $objsoc->id;
                 $this->cond_reglement_id	= (! empty($objsoc->cond_reglement_id) ? $objsoc->cond_reglement_id : 0);
                 $this->mode_reglement_id	= (! empty($objsoc->mode_reglement_id) ? $objsoc->mode_reglement_id : 0);
-                $this->fk_project			= '';
+				
+				$project = new Project($db);
+				
+				if($objFrom->fk_project > 0 && $project->fetch($objFrom->fk_project)) {
+					if($project->socid <= 0) $this->fk_project = $objFrom->fk_project;
+					else $this->fk_project = '';
+				} else {
+					$this->fk_project = '';
+				}
+                
                 $this->fk_delivery_address	= '';
             }
 
@@ -1222,7 +1246,7 @@ class Propal extends CommonObject
                 $this->remise               = $obj->remise;
                 $this->remise_percent       = $obj->remise_percent;
                 $this->remise_absolue       = $obj->remise_absolue;
-                $this->total                = $obj->total; // TODO obsolete
+                $this->total                = $obj->total; // TODO deprecated
                 $this->total_ht             = $obj->total_ht;
                 $this->total_tva            = $obj->tva;
                 $this->total_localtax1		= $obj->localtax1;
@@ -1231,14 +1255,14 @@ class Propal extends CommonObject
                 $this->socid                = $obj->fk_soc;
                 $this->fk_project           = $obj->fk_projet;
                 $this->modelpdf             = $obj->model_pdf;
-                $this->note                 = $obj->note_private; // TODO obsolete
+                $this->note                 = $obj->note_private; // TODO deprecated
                 $this->note_private         = $obj->note_private;
                 $this->note_public          = $obj->note_public;
                 $this->statut               = $obj->fk_statut;
                 $this->statut_libelle       = $obj->statut_label;
 
-                $this->datec                = $this->db->jdate($obj->datec); // TODO obsolete
-                $this->datev                = $this->db->jdate($obj->datev); // TODO obsolete
+                $this->datec                = $this->db->jdate($obj->datec); // TODO deprecated
+                $this->datev                = $this->db->jdate($obj->datev); // TODO deprecated
                 $this->date_creation		= $this->db->jdate($obj->datec); //Creation date
                 $this->date_validation		= $this->db->jdate($obj->datev); //Validation date
                 $this->date                 = $this->db->jdate($obj->dp);	// Proposal date
@@ -1967,9 +1991,12 @@ class Propal extends CommonObject
      *
      *	@return     int     	<0 si ko, >0 si ok
      *  @deprecated
+     * @see classifyBilled()
      */
     function classer_facturee()
     {
+		dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING);
+
     	return $this->classifyBilled();
     }
 
@@ -2724,7 +2751,7 @@ class Propal extends CommonObject
      *	Return clicable link of object (with eventually picto)
      *
      *	@param      int		$withpicto		Add picto into link
-     *	@param      string	$option			Where point the link ('compta', 'expedition', 'document', ...)
+     *	@param      string	$option			Where point the link ('expedition', 'document', ...)
      *	@param      string	$get_params    	Parametres added to url
      *	@return     string          		String with URL
      */
@@ -2912,17 +2939,19 @@ class PropaleLigne  extends CommonObjectLine
     var $oldline;
 
     // From llx_propaldet
-    var $rowid;
     var $fk_propal;
     var $fk_parent_line;
     var $desc;          	// Description ligne
     var $fk_product;		// Id produit predefini
+	/**
+	 * @deprecated
+	 * @see product_type
+	 */
+	var $fk_product_type;
 	/**
 	 * Product type.
-	 * Use the following constants:
-	 * - Product::TYPE_PRODUCT
-	 * - Product::TYPE_SERVICE
 	 * @var int
+	 * @see Product::TYPE_PRODUCT, Product::TYPE_SERVICE
 	 */
     var $product_type = Product::TYPE_PRODUCT;
 
@@ -2952,14 +2981,43 @@ class PropaleLigne  extends CommonObjectLine
     var $total_tva;			// Total TVA  de la ligne toute quantite et incluant la remise ligne
     var $total_ttc;			// Total TTC de la ligne toute quantite et incluant la remise ligne
 
-    // Ne plus utiliser
+	/**
+	 * @deprecated
+	 * @see $remise_percent, $fk_remise_except
+	 */
     var $remise;
+	/**
+	 * @deprecated
+	 * @see subprice
+	 */
     var $price;
 
     // From llx_product
-    var $ref;						// Reference produit
-    var $libelle;       // Label produit
-    var $product_desc;  // Description produit
+	/**
+	 * @deprecated
+	 * @see product_ref
+	 */
+    var $ref;
+	/**
+	 * Product reference
+	 * @var string
+	 */
+	public $product_ref;
+	/**
+	 * @deprecated
+	 * @see product_label
+	 */
+    var $libelle;
+	/**
+	 *  Product label
+	 * @var string
+	 */
+	public $product_label;
+	/**
+	 * Product description
+	 * @var string
+	 */
+    public $product_desc;
 
     var $localtax1_tx;		// Local tax 1
     var $localtax2_tx;		// Local tax 2
@@ -3007,7 +3065,8 @@ class PropaleLigne  extends CommonObjectLine
 		{
 			$objp = $this->db->fetch_object($result);
 
-			$this->rowid			= $objp->rowid;
+			$this->id               = $objp->rowid;
+			$this->rowid			= $objp->rowid;     // deprecated
 			$this->fk_propal		= $objp->fk_propal;
 			$this->fk_parent_line	= $objp->fk_parent_line;
 			$this->label			= $objp->custom_label;
@@ -3016,7 +3075,7 @@ class PropaleLigne  extends CommonObjectLine
 			$this->price			= $objp->price;		// deprecated
 			$this->subprice			= $objp->subprice;
 			$this->tva_tx			= $objp->tva_tx;
-			$this->remise			= $objp->remise;
+			$this->remise			= $objp->remise;    // deprecated
 			$this->remise_percent	= $objp->remise_percent;
 			$this->fk_remise_except = $objp->fk_remise_except;
 			$this->fk_product		= $objp->fk_product;
diff --git a/htdocs/comm/propal/document.php b/htdocs/comm/propal/document.php
index d224c20bc9729b8ba6449399e4acc6885507e8d3..af603d0606b3f31b27b69a290d6dab35f08de5f0 100644
--- a/htdocs/comm/propal/document.php
+++ b/htdocs/comm/propal/document.php
@@ -34,6 +34,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
 
 $langs->load('compta');
 $langs->load('other');
+$langs->load('companies');
 
 $action		= GETPOST('action','alpha');
 $confirm	= GETPOST('confirm','alpha');
diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php
index 9fbdb2ffd7ef55daf8555c269e5f3708c0bad20a..c8e96919f8431dfc1e93aaea57ea5ccced5d8ccb 100644
--- a/htdocs/comm/propal/list.php
+++ b/htdocs/comm/propal/list.php
@@ -56,6 +56,7 @@ $search_refcustomer=GETPOST('search_refcustomer','alpha');
 $search_societe=GETPOST('search_societe','alpha');
 $search_montant_ht=GETPOST('search_montant_ht','alpha');
 $search_author=GETPOST('search_author','alpha');
+$search_product_category=GETPOST('search_product_category','int');
 $search_town=GETPOST('search_town','alpha');
 $viewstatut=$db->escape(GETPOST('viewstatut'));
 $object_statut=$db->escape(GETPOST('propal_statut'));
@@ -91,6 +92,7 @@ if (GETPOST("button_removefilter") || GETPOST("button_removefilter_x"))	// Both
     $search_societe='';
     $search_montant_ht='';
     $search_author='';
+    $search_product_category='';
     $search_town='';
     $year='';
     $month='';
@@ -145,14 +147,15 @@ if (! $sortorder) $sortorder='DESC';
 $limit = $conf->liste_limit;
 
 
-if (! $sall) $sql = 'SELECT';
-else $sql = 'SELECT DISTINCT';
+$sql = 'SELECT';
+if ($sall || $search_product_category > 0) $sql = 'SELECT DISTINCT';
 $sql.= ' s.rowid, s.nom as name, s.town, s.client, s.code_client,';
 $sql.= ' p.rowid as propalid, p.note_private, p.total_ht, p.ref, p.ref_client, p.fk_statut, p.fk_user_author, p.datep as dp, p.fin_validite as dfv,';
 if (! $user->rights->societe->client->voir && ! $socid) $sql .= " sc.fk_soc, sc.fk_user,";
 $sql.= ' u.login';
 $sql.= ' FROM '.MAIN_DB_PREFIX.'societe as s, '.MAIN_DB_PREFIX.'propal as p';
-if ($sall) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'propaldet as pd ON p.rowid=pd.fk_propal';
+if ($sall || $search_product_category > 0) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'propaldet as pd ON p.rowid=pd.fk_propal';
+if ($search_product_category > 0) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_product as cp ON cp.fk_product=pd.fk_product';
 $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'user as u ON p.fk_user_author = u.rowid';
 // We'll need this table joined to the select in order to filter by sale
 if ($search_sale > 0 || (! $user->rights->societe->client->voir && ! $socid)) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
@@ -190,7 +193,8 @@ if ($search_montant_ht != '')
 if ($sall) {
     $sql .= natural_search(array('s.nom', 'p.note_private', 'p.note_public', 'pd.description'), $sall);
 }
-if ($socid) $sql.= ' AND s.rowid = '.$socid;
+if ($search_product_category > 0) $sql.=" AND cp.fk_categorie = ".$search_product_category;
+if ($socid > 0) $sql.= ' AND s.rowid = '.$socid;
 if ($viewstatut <> '')
 {
 	$sql.= ' AND p.fk_statut IN ('.$viewstatut.')';
@@ -223,7 +227,7 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST))
 	$result = $db->query($sql);
 	$nbtotalofrecords = $db->num_rows($result);
 }
-
+//print $sql;
 
 $sql.= $db->plimit($limit + 1,$offset);
 $result=$db->query($sql);
@@ -265,15 +269,28 @@ if ($result)
  	if ($user->rights->societe->client->voir || $socid)
  	{
  		$langs->load("commercial");
-	 	$moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': ';
+	 	$moreforfilter.='<div class="divsearchfield">';
+ 		$moreforfilter.=$langs->trans('ThirdPartiesOfSaleRepresentative'). ': ';
 		$moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user);
-	 	$moreforfilter.=' &nbsp; &nbsp; &nbsp; ';
+	 	$moreforfilter.='</div>';
  	}
 	// If the user can view prospects other than his'
 	if ($user->rights->societe->client->voir || $socid)
 	{
-	    $moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': ';
+	 	$moreforfilter.='<div class="divsearchfield">';
+		$moreforfilter.=$langs->trans('LinkedToSpecificUsers'). ': ';
 	    $moreforfilter.=$form->select_dolusers($search_user,'search_user',1);
+	    $moreforfilter.='</div>';
+	}
+	// If the user can view prospects other than his'
+	if ($conf->categorie->enabled && $user->rights->produit->lire)
+	{
+		include_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
+		$moreforfilter.='<div class="divsearchfield">';
+		$moreforfilter.=$langs->trans('IncludingProductWithTag'). ': ';
+		$cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT, null, 'parent', null, null, 1);
+		$moreforfilter.=$form->selectarray('search_product_category', $cate_arbo, $search_product_category, 1, 0, 0, '', 0, 0, 0, 0, '', 1);
+		$moreforfilter.='</div>';
 	}
 	if (! empty($moreforfilter))
 	{
diff --git a/htdocs/comm/propal/note.php b/htdocs/comm/propal/note.php
index 05cd2db3f04d576ab25ea1324b858a47f212839c..1e5ace7353ed6836a1c0bc87d06b9e737b4cb51a 100644
--- a/htdocs/comm/propal/note.php
+++ b/htdocs/comm/propal/note.php
@@ -1,6 +1,6 @@
 <?php
 /* Copyright (C) 2004      Rodolphe Quiedeville <rodolphe@quiedeville.org>
- * Copyright (C) 2004-2012 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2004-2015 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C) 2004      Eric Seigne          <eric.seigne@ryxeo.com>
  * Copyright (C) 2005-2012 Regis Houssin        <regis.houssin@capnetworks.com>
  * Copyright (C) 2013      Florian Henry		  	<florian.henry@open-concept.pro>
@@ -32,6 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/propal.lib.php';
 $langs->load('propal');
 $langs->load('compta');
 $langs->load('bills');
+$langs->load("companies");
 
 $id = GETPOST('id','int');
 $ref=GETPOST('ref','alpha');
@@ -103,7 +104,7 @@ if ($id > 0 || ! empty($ref))
 			print "<tr><td>".$langs->trans("Company")."</td>";
 			print '<td colspan="3">'.$object->client->getNomUrl(1).'</td></tr>';
 
-			// Ligne info remises tiers
+			// Discounts
 			print '<tr><td>'.$langs->trans('Discounts').'</td><td colspan="3">';
 			if ($societe->remise_percent) print $langs->trans("CompanyHasRelativeDiscount",$societe->remise_percent);
 			else print $langs->trans("CompanyHasNoRelativeDiscount");
diff --git a/htdocs/comm/prospect/list.php b/htdocs/comm/prospect/list.php
index e807b3fcbc4080eb94c52ab42ac40539a29047b2..80ef52a372acc2428b12b5bf8f9401ebe00d45e8 100644
--- a/htdocs/comm/prospect/list.php
+++ b/htdocs/comm/prospect/list.php
@@ -204,6 +204,9 @@ if (empty($reshook))
 
 $formother=new FormOther($db);
 $form=new Form($db);
+$prospectstatic=new Client($db);
+$prospectstatic->client=2;
+$prospectstatic->loadCacheOfProspStatus();
 
 $sql = "SELECT s.rowid as socid, s.nom as name, s.zip, s.town, s.datec, s.status as status, s.code_client, s.client,";
 $sql.= " s.prefix_comm, s.fk_prospectlevel, s.fk_stcomm as stcomm_id,";
@@ -353,7 +356,7 @@ if ($resql)
 	print '<input class="flat" type="text" size="10" name="search_datec" value="'.$search_datec.'">';
     print '</td>';
 
- 	// Prospect levelt
+ 	// Prospect level
  	print '<td class="liste_titre" align="center">';
  	$options_from = '<option value="">&nbsp;</option>';	 	// Generate in $options_from the list of each option sorted
  	foreach ($tab_level as $tab_level_sortorder => $tab_level_label)
@@ -380,9 +383,12 @@ if ($resql)
 
     // Prospect status
     print '<td class="liste_titre" align="center">';
-	// TODO Add here a list of prospect status
-    //print $form->selectarray($htmlname, $array, $search_stcomm);
-    //print '&nbsp;';
+    $arraystcomm=array();
+	foreach($prospectstatic->cacheprospectstatus as $key => $val)
+	{
+		$arraystcomm[$val['id']]=$val['label'];
+	}
+    print $form->selectarray('search_stcomm', $arraystcomm, $search_stcomm, 1);
     print '</td>';
 
     print '<td class="liste_titre" align="center">';
@@ -390,7 +396,7 @@ if ($resql)
     print '</td>';
 
     print '<td class="liste_titre" align="center">';
-     print $form->selectarray('search_status', array('0'=>$langs->trans('ActivityCeased'),'1'=>$langs->trans('InActivity')),$search_status);
+    print $form->selectarray('search_status', array('0'=>$langs->trans('ActivityCeased'),'1'=>$langs->trans('InActivity')),$search_status);
     print '</td>';
 
     // Print the search button
@@ -407,10 +413,6 @@ if ($resql)
 	$i = 0;
 	$var=true;
 
-	$prospectstatic=new Client($db);
-	$prospectstatic->client=2;
-	$prospectstatic->loadCacheOfProspStatus();
-
 	while ($i < min($num,$conf->liste_limit))
 	{
 		$obj = $db->fetch_object($resql);
diff --git a/htdocs/commande/apercu.php b/htdocs/commande/apercu.php
index e6878eef1792ca61b72ba0b720f0f19121d7087c..f3d83b837dde44c99cdfe88ede6e622a00f81e43 100644
--- a/htdocs/commande/apercu.php
+++ b/htdocs/commande/apercu.php
@@ -129,7 +129,7 @@ if ($id > 0 || ! empty($ref))
 			print '</tr>';
 
 			// Si fichier detail PDF existe
-			// TODO obsolete ?
+			// TODO deprecated ?
 			if (file_exists($filedetail))
 			{
 				print "<tr ".$bc[$var]."><td>Commande detaillee</td>";
diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php
index 4b7d0104ec95c39897c5022a53a348c19e944532..79f752f83558a598ab9df8d3d3e9dbc571995701 100644
--- a/htdocs/commande/card.php
+++ b/htdocs/commande/card.php
@@ -2,7 +2,7 @@
 /* Copyright (C) 2003-2006	Rodolphe Quiedeville	<rodolphe@quiedeville.org>
  * Copyright (C) 2004-2014	Laurent Destailleur		<eldy@users.sourceforge.net>
  * Copyright (C) 2005		Marc Barilley / Ocebo	<marc@ocebo.com>
- * Copyright (C) 2005-2013	Regis Houssin			<regis.houssin@capnetworks.com>
+ * Copyright (C) 2005-2015	Regis Houssin			<regis.houssin@capnetworks.com>
  * Copyright (C) 2006		Andre Cianfarani		<acianfa@free.fr>
  * Copyright (C) 2010-2013	Juanjo Menent			<jmenent@2byte.es>
  * Copyright (C) 2011		Philippe Grand			<philippe.grand@atoo-net.com>
@@ -1214,6 +1214,7 @@ llxHeader('', $langs->trans('Order'), 'EN:Customers_Orders|FR:Commandes_Clients|
 $form = new Form($db);
 $formfile = new FormFile($db);
 $formorder = new FormOrder($db);
+if (! empty($conf->projet->enabled)) { $formproject = new FormProjets($db); }
 
 /**
  * *******************************************************************
@@ -1320,7 +1321,7 @@ if ($action == 'create' && $user->rights->commande->creer)
 	print '<table class="border" width="100%">';
 
 	// Reference
-	print '<tr><td class="fieldrequired">' . $langs->trans('Ref') . '</td><td colspan="2">' . $langs->trans("Draft") . '</td></tr>';
+	print '<tr><td width="25%" class="fieldrequired">' . $langs->trans('Ref') . '</td><td colspan="2">' . $langs->trans("Draft") . '</td></tr>';
 
 	// Reference client
 	print '<tr><td>' . $langs->trans('RefCustomer') . '</td><td colspan="2">';
@@ -1422,14 +1423,16 @@ if ($action == 'create' && $user->rights->commande->creer)
 	// Project
 	if (! empty($conf->projet->enabled) && $socid > 0)
 	{
-		$formproject = new FormProjets($db);
+		$projectid = GETPOST('projectid')?GETPOST('projectid'):0;
+		if ($origin == 'project') $projectid = ($originid ? $originid : 0);
 
-		print '<tr><td>' . $langs->trans('Project') . '</td><td colspan="2">';
+		$langs->load("projects");
+		print '<tr>';
+		print '<td>' . $langs->trans("Project") . '</td><td colspan="2">';
 		$numprojet = $formproject->select_projects($soc->id, $projectid, 'projectid', 0);
-		if ($numprojet == 0) {
-			print ' &nbsp; <a href="' . DOL_URL_ROOT . '/projet/card.php?socid=' . $soc->id . '&action=create">' . $langs->trans("AddProject") . '</a>';
-		}
-		print '</td></tr>';
+		print ' &nbsp; <a href="../projet/card.php?socid=' . $soc->id . '&action=create&status=1&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create&socid='.$soc->id).'">' . $langs->trans("AddProject") . '</a>';
+		print '</td>';
+		print '</tr>';
 	}
 
 	// Incoterms
@@ -1458,29 +1461,30 @@ if ($action == 'create' && $user->rights->commande->creer)
 	print $form->selectarray('model', $liste, $conf->global->COMMANDE_ADDON_PDF);
 	print "</td></tr>";
 
-	// Note publique
+	// Note public
 	print '<tr>';
 	print '<td class="border" valign="top">' . $langs->trans('NotePublic') . '</td>';
 	print '<td valign="top" colspan="2">';
 
-	$doleditor = new DolEditor('note_public', $note_public, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70);
+	$doleditor = new DolEditor('note_public', $note_public, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, '90%');
 	print $doleditor->Create(1);
 	// print '<textarea name="note_public" wrap="soft" cols="70" rows="'.ROWS_3.'">'.$note_public.'</textarea>';
 	print '</td></tr>';
 
-	// Note privee
+	// Note private
 	if (empty($user->societe_id)) {
 		print '<tr>';
 		print '<td class="border" valign="top">' . $langs->trans('NotePrivate') . '</td>';
 		print '<td valign="top" colspan="2">';
 
-		$doleditor = new DolEditor('note_private', $note_private, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70);
+		$doleditor = new DolEditor('note_private', $note_private, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, '90%');
 		print $doleditor->Create(1);
 		// print '<textarea name="note" wrap="soft" cols="70" rows="'.ROWS_3.'">'.$note_private.'</textarea>';
 		print '</td></tr>';
 	}
 
-	if (! empty($origin) && ! empty($originid) && is_object($objectsrc)) {
+	if (! empty($origin) && ! empty($originid) && is_object($objectsrc))
+	{
 		// TODO for compatibility
 		if ($origin == 'contrat') {
 			// Calcul contrat->price (HT), contrat->total (TTC), contrat->tva
@@ -1514,8 +1518,11 @@ if ($action == 'create' && $user->rights->commande->creer)
 		}
 
 		print '<tr><td>' . $langs->trans('TotalTTC') . '</td><td colspan="2">' . price($objectsrc->total_ttc) . "</td></tr>";
-	} else {
-		if (! empty($conf->global->PRODUCT_SHOW_WHEN_CREATE)) {
+	}
+	else
+	{
+		if (! empty($conf->global->PRODUCT_SHOW_WHEN_CREATE))
+		{
 			/*
 			 * Services/produits predefinis
 			*/
@@ -2298,10 +2305,13 @@ if ($action == 'create' && $user->rights->commande->creer)
 			$delallowed = $user->rights->commande->supprimer;
 			$somethingshown = $formfile->show_documents('commande', $comref, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', '', '', $soc->default_lang);
 
-			/*
-			 * Linked object block
-			 */
-			$somethingshown = $object->showLinkedObjectBlock();
+			// Linked object block
+			$somethingshown = $form->showLinkedObjectBlock($object);
+
+			// Show links to link elements
+			//$linktoelem = $form->showLinkToObjectBlock($object);
+			//if ($linktoelem) print '<br>'.$linktoelem;
+
 
 			print '</div><div class="fichehalfright"><div class="ficheaddleft">';
 			// print '</td><td valign="top" width="50%">';
@@ -2324,8 +2334,7 @@ if ($action == 'create' && $user->rights->commande->creer)
 
 			$ref = dol_sanitizeFileName($object->ref);
 			include_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php';
-			$fileparams = dol_most_recent_file($conf->commande->dir_output . '/' . $ref, preg_quote($ref, '/'));
-			$file = $fileparams ['fullname'];
+			$file = $fileparams['fullname'];
 
 			// Define output language
 			$outputlangs = $langs;
@@ -2349,8 +2358,8 @@ if ($action == 'create' && $user->rights->commande->creer)
 					dol_print_error($db, $result);
 					exit();
 				}
-				$fileparams = dol_most_recent_file($conf->commande->dir_output . '/' . $ref, preg_quote($ref, '/'));
-				$file = $fileparams ['fullname'];
+				$fileparams = dol_most_recent_file($conf->commande->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
+				$file = $fileparams['fullname'];
 			}
 
 			print '<br>';
diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php
index 18c8b5546375d47bd4842bdf632c1940d509ee0f..c941dfc1ff8eaf51793f4cdabaecab1aea1cb04b 100644
--- a/htdocs/commande/class/commande.class.php
+++ b/htdocs/commande/class/commande.class.php
@@ -74,17 +74,15 @@ class Commande extends CommonOrder
 
 	/**
 	 * Status of the order. Check the following constants:
-	 * - STATUS_CANCELED
-	 * - STATUS_DRAFT
-	 * - STATUS_ACCEPTED
-	 * - STATUS_CLOSED
 	 * @var int
+	 * @see Commande::STATUS_CANCELED, Commande::STATUS_DRAFT, Commande::STATUS_ACCEPTED, Commande::STATUS_CLOSED
 	 */
     var $statut;
 	/**
 	 * @deprecated
+	 * @see billed
 	 */
-    var $facturee;		// deprecated
+    var $facturee;
     var $billed;		// billed or not
 
     var $brouillon;
@@ -100,7 +98,11 @@ class Commande extends CommonOrder
     var $fk_delivery_address;
     var $address;
     var $date;				// Date commande
-    var $date_commande;		// Date commande (deprecated)
+	/**
+	 * @deprecated
+	 * @see date
+	 */
+    var $date_commande;
     var $date_livraison;	// Date livraison souhaitee
     var $shipping_method_id;
     var $fk_remise_except;
@@ -116,7 +118,11 @@ class Commande extends CommonOrder
     var $rang;
     var $special_code;
     var $source;			// Origin of order
-    var $note;				// deprecated
+	/**
+	 * @deprecated
+	 * @see note_private, note_public
+	 */
+    var $note;
     var $note_private;
     var $note_public;
     var $extraparams=array();
@@ -1033,7 +1039,9 @@ class Commande extends CommonOrder
      */
     function createFromProposal($object)
     {
-        global $conf,$user,$langs,$hookmanager;
+        global $db, $conf,$user,$langs,$hookmanager;
+
+		dol_include_once('/core/class/extrafields.class.php');
 
         $error=0;
 
@@ -1104,9 +1112,15 @@ class Commande extends CommonOrder
 
             // get extrafields from original line
 			$object->fetch_optionals($object->id);
-			foreach($object->array_options as $options_key => $value)
-				$this->array_options[$options_key] = $value;
-
+			
+			$e = new ExtraFields($db);
+			$element_extrafields = $e->fetch_name_optionals_label($this->element);
+			
+			foreach($object->array_options as $options_key => $value) {
+				if(array_key_exists(str_replace('options_', '', $options_key), $element_extrafields)){
+					$this->array_options[$options_key] = $value;
+				}
+			}
             // Possibility to add external linked objects with hooks
             $this->linked_objects[$this->origin] = $this->origin_id;
             if (is_array($object->other_linked_objects) && ! empty($object->other_linked_objects))
@@ -1728,6 +1742,7 @@ class Commande extends CommonOrder
 
                 $i++;
             }
+
             $this->db->free($result);
 
             return 1;
@@ -1776,7 +1791,7 @@ class Commande extends CommonOrder
      *	@param      int		$filtre_statut      Filter on status
      * 	@return     int                			<0 if KO, Nb of lines found if OK
      *
-     *	TODO deprecated, move to Shipping class
+     *	TODO deprecate, move to Shipping class
      */
     function loadExpeditions($filtre_statut=-1)
     {
@@ -1823,7 +1838,7 @@ class Commande extends CommonOrder
      *
      * @return	int		Nb of shipments
      *
-     * TODO deprecated, move to Shipping class
+     * TODO deprecate, move to Shipping class
      */
     function nb_expedition()
     {
@@ -1849,7 +1864,7 @@ class Commande extends CommonOrder
      *	@param      int		$filtre_statut      Filtre sur statut
      *	@return     int                 		0 si OK, <0 si KO
      *
-     *	TODO  deprecated, move to Shipping class
+     *	TODO  deprecate, move to Shipping class
      */
     function livraison_array($filtre_statut=self::STATUS_CANCELED)
     {
@@ -2399,9 +2414,12 @@ class Commande extends CommonOrder
 	 *
 	 * @return     int     <0 if ko, >0 if ok
 	 * @deprecated
+	 * @see classifyBilled()
 	 */
 	function classer_facturee()
 	{
+		dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING);
+
 		return $this->classifyBilled();
 	}
 
@@ -3346,6 +3364,7 @@ class OrderLine extends CommonOrderLine
 	 * Id of parent order
 	 * @var int
 	 * @deprecated Use fk_commande
+	 * @see fk_commande
 	 */
 	public $commande_id;
 
@@ -3367,6 +3386,7 @@ class OrderLine extends CommonOrderLine
 
 	/**
 	 * @deprecated
+	 * @see remise_percent, fk_remise_except
 	 */
 	var $remise;
 
diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php
index c8badb1a880d61498b8ec33f712f9b690c2c66db..f336cefda987257dda737828dfead12a78840a0c 100644
--- a/htdocs/compta/bank/class/account.class.php
+++ b/htdocs/compta/bank/class/account.class.php
@@ -41,6 +41,7 @@ class Account extends CommonObject
     /**
      * @var	int		Use id instead of rowid
      * @deprecated
+     * @see id
      */
     var $rowid;
     var $id;
@@ -240,6 +241,11 @@ class Account extends CommonObject
      */
     function addline($date, $oper, $label, $amount, $num_chq, $categorie, $user, $emetteur='',$banque='')
     {
+	    // Deprecatîon warning
+	    if (is_numeric($oper)) {
+		    dol_syslog(__METHOD__ . ": using numeric operations is deprecated", LOG_WARNING);
+	    }
+
         // Clean parameters
         $emetteur=trim($emetteur);
         $banque=trim($banque);
diff --git a/htdocs/compta/bank/virement.php b/htdocs/compta/bank/virement.php
index 08a76512cf49bb72ca6e2d8389159ef90deb636a..d81390a0205ac722ca1c9b1cb200ea87576d8ac2 100644
--- a/htdocs/compta/bank/virement.php
+++ b/htdocs/compta/bank/virement.php
@@ -1,7 +1,7 @@
 <?php
 /* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
  * Copyright (C) 2004-2008 Laurent Destailleur  <eldy@users.sourceforge.net>
- * Copyright (C) 2005-2009 Regis Houssin        <regis.houssin@capnetworks.com>
+ * Copyright (C) 2005-2015 Regis Houssin        <regis.houssin@capnetworks.com>
  * Copyright (C) 2012	   Juanjo Menent        <jmenent@2byte.es>
  * Copyright (C) 2015      Jean-François Ferry	<jfefe@aternatik.fr>
  * Copyright (C) 2015      Marcos García        <marcosgdf@gmail.com>
@@ -177,7 +177,7 @@ $form->select_comptes($account_to,'account_to',0,'',1);
 print "</td>\n";
 
 print "<td>";
-$form->select_date($dateo,'','','','','add');
+$form->select_date((! empty($dateo)?$dateo:''),'','','','','add');
 print "</td>\n";
 print '<td><input name="label" class="flat" type="text" size="40" value="'.$label.'"></td>';
 print '<td><input name="amount" class="flat" type="text" size="8" value="'.$amount.'"></td>';
diff --git a/htdocs/compta/deplacement/class/deplacement.class.php b/htdocs/compta/deplacement/class/deplacement.class.php
index dc2d281e2a1f3e66d7693f47e7ab89d50bc54b0a..f09875456c2d10c45b0f4fd5136dfdf32fc6eb88 100644
--- a/htdocs/compta/deplacement/class/deplacement.class.php
+++ b/htdocs/compta/deplacement/class/deplacement.class.php
@@ -44,7 +44,11 @@ class Deplacement extends CommonObject
 	var $fk_user_author;
 	var $fk_user;
 	var $km;
-	var $note;			// TODO obsolete
+	/**
+	 * @deprecated
+	 * @see note_private, note_public
+	 */
+	var $note;			// TODO deprecated
 	var $note_private;
 	var $note_public;
 	var $socid;
diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php
index 88d6bb587e4eb1950658bfb045fab6ce99e8ad4d..a461d1b9c82b367f295fd4d78513dbb0ef48e710 100644
--- a/htdocs/compta/facture.php
+++ b/htdocs/compta/facture.php
@@ -3,7 +3,7 @@
  * Copyright (C) 2004      Eric Seigne           <eric.seigne@ryxeo.com>
  * Copyright (C) 2004-2014 Laurent Destailleur   <eldy@users.sourceforge.net>
  * Copyright (C) 2005      Marc Barilley / Ocebo <marc@ocebo.com>
- * Copyright (C) 2005-2012 Regis Houssin         <regis.houssin@capnetworks.com>
+ * Copyright (C) 2005-2015 Regis Houssin         <regis.houssin@capnetworks.com>
  * Copyright (C) 2006      Andre Cianfarani      <acianfa@free.fr>
  * Copyright (C) 2010-2015 Juanjo Menent         <jmenent@2byte.es>
  * Copyright (C) 2012-2013 Christophe Battarel   <christophe.battarel@altairis.fr>
@@ -1759,10 +1759,8 @@ if (empty($reshook))
 			$upload_dir = $conf->facture->dir_output;
 			$file = $upload_dir . '/' . GETPOST('file');
 			$ret = dol_delete_file($file, 0, 0, 0, $object);
-			if ($ret)
-				setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile')));
-			else
-				setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors');
+			if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('urlfile')));
+			else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('urlfile')), 'errors');
 			$action = '';
 		}
 	}
@@ -1856,6 +1854,8 @@ $form = new Form($db);
 $formother = new FormOther($db);
 $formfile = new FormFile($db);
 $bankaccountstatic = new Account($db);
+if (! empty($conf->projet->enabled)) { $formproject = new FormProjets($db); }
+
 $now = dol_now();
 
 llxHeader('', $langs->trans('Bill'), 'EN:Customers_Invoices|FR:Factures_Clients|ES:Facturas_a_clientes');
@@ -2082,22 +2082,21 @@ if ($action == 'create')
 	}
 
 	print '<tr><td valign="top" class="fieldrequired">' . $langs->trans('Type') . '</td><td colspan="2">';
-	print '<table class="nobordernopadding">' . "\n";
+
+	print '<div class="tagtable">' . "\n";
 
 	// Standard invoice
-	print '<tr height="18"><td width="16px" valign="middle">';
-	print '<input type="radio" id="radio_standard" name="type" value="0"' . (GETPOST('type') == 0 ? ' checked' : '') . '>';
-	print '</td><td valign="middle">';
-	$desc = $form->textwithpicto($langs->trans("InvoiceStandardAsk"), $langs->transnoentities("InvoiceStandardDesc"), 1);
+	print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">';
+	$tmp='<input type="radio" id="radio_standard" name="type" value="0"' . (GETPOST('type') == 0 ? ' checked' : '') . '> ';
+	$desc = $form->textwithpicto($tmp.$langs->trans("InvoiceStandardAsk"), $langs->transnoentities("InvoiceStandardDesc"), 1, 'help', '', 0, 3);
 	print $desc;
-	print '</td></tr>' . "\n";
+	print '</div></div>';
 
 	if ((empty($origin)) || ((($origin == 'propal') || ($origin == 'commande')) && (! empty($originid))))
 	{
 		// Deposit
-		print '<tr height="18"><td width="16px" valign="middle">';
-		print '<input type="radio" id="radio_deposit" name="type" value="3"' . (GETPOST('type') == 3 ? ' checked' : '') . '>';
-		print '</td><td valign="middle" class="nowrap">';
+		print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">';
+		$tmp='<input type="radio" id="radio_deposit" name="type" value="3"' . (GETPOST('type') == 3 ? ' checked' : '') . '> ';
 		print '<script type="text/javascript" language="javascript">
 		jQuery(document).ready(function() {
 			jQuery("#typedeposit, #valuedeposit").click(function() {
@@ -2105,9 +2104,13 @@ if ($action == 'create')
 			});
 		});
 		</script>';
-		$desc = $form->textwithpicto($langs->trans("InvoiceDeposit"), $langs->transnoentities("InvoiceDepositDesc"), 1);
-		print '<table class="nobordernopadding"><tr><td>' . $desc . '</td>';
-		if (($origin == 'propal') || ($origin == 'commande')) {
+
+		$desc = $form->textwithpicto($tmp.$langs->trans("InvoiceDeposit"), $langs->transnoentities("InvoiceDepositDesc"), 1, 'help', '', 0, 3);
+		print '<table class="nobordernopadding"><tr><td>';
+		print $desc;
+		print '</td>';
+		if (($origin == 'propal') || ($origin == 'commande'))
+		{
 			print '<td class="nowrap" style="padding-left: 5px">';
 			$arraylist = array('amount' => 'FixAmount','variable' => 'VarAmount');
 			print $form->selectarray('typedeposit', $arraylist, GETPOST('typedeposit'), 0, 0, 0, '', 1);
@@ -2115,44 +2118,41 @@ if ($action == 'create')
 			print '<td class="nowrap" style="padding-left: 5px">' . $langs->trans('Value') . ':<input type="text" id="valuedeposit" name="valuedeposit" size="3" value="' . GETPOST('valuedeposit', 'int') . '"/>';
 		}
 		print '</td></tr></table>';
-		print '</td></tr>' . "\n";
+
+		print '</div></div>';
 	}
 
 	if ($socid > 0)
 	{
 		if (! empty($conf->global->INVOICE_USE_SITUATION))
 		{
-		// First situation invoice
-		print '<tr height="18"><td width="16px" valign="middle">';
-		print '<input type="radio" name="type" value="5"' . (GETPOST('type') == 5 ? ' checked' : '') . '>';
-		print '</td><td valign="middle">';
-		$desc = $form->textwithpicto($langs->trans("InvoiceFirstSituationAsk"), $langs->transnoentities("InvoiceFirstSituationDesc"), 1);
-		print $desc;
-		print '</td></tr>' . "\n";
-
-		// Next situation invoice
-		$opt = $form->load_situation_invoices(GETPOST('originid'), $socid);
-		print '<tr height="18"><td valign="middle">';
-		print '<input type="radio" name="type" value="5"' . (GETPOST('type') == 5 && GETPOST('originid') ? ' checked' : '') . ' ';
-		if ($opt == '<option value ="0" selected>' . $langs->trans('NoSituations') . '</option>' || (GETPOST('origin') && GETPOST('origin') != 'facture')) print 'disabled';
-		print '>';
-		print '</td><td valign="middle">';
-		$text = $langs->trans("InvoiceSituationAsk") . ' ';
-		$text .= '<select class="flat" id="situations" name="situations">';
-		$text .= $opt;
-		$text .= '</select>';
-		$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceSituationDesc"), 1);
-		print $desc;
-		print '</td></tr>' . "\n";
+			// First situation invoice
+			print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">';
+			$tmp='<input type="radio" name="type" value="5"' . (GETPOST('type') == 5 ? ' checked' : '') . '> ';
+			$desc = $form->textwithpicto($tmp.$langs->trans("InvoiceFirstSituationAsk"), $langs->transnoentities("InvoiceFirstSituationDesc"), 1, 'help', '', 0, 3);
+			print $desc;
+			print '</div></div>';
+
+			// Next situation invoice
+			$opt = $form->selectSituationInvoices(GETPOST('originid'), $socid);
+			print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">';
+			$tmp='<input type="radio" name="type" value="5"' . (GETPOST('type') == 5 && GETPOST('originid') ? ' checked' : '');
+			if ($opt == ('<option value ="0" selected>' . $langs->trans('NoSituations') . '</option>') || (GETPOST('origin') && GETPOST('origin') != 'facture')) $tmp.=' disabled';
+			$tmp.= '> ';
+			$text = $tmp.$langs->trans("InvoiceSituationAsk") . ' ';
+			$text .= '<select class="flat" id="situations" name="situations">';
+			$text .= $opt;
+			$text .= '</select>';
+			$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceSituationDesc"), 1, 'help', '', 0, 3);
+			print $desc;
+			print '</div></div>';
 		}
 
 		// Replacement
-		print '<tr height="18"><td valign="middle">';
-		print '<input type="radio" name="type" id="radio_replacement" value="1"' . (GETPOST('type') == 1 ? ' checked' : '');
-		if (! $options)
-			print ' disabled';
-		print '>';
-		print '</td><td valign="middle">';
+		print '<!-- replacement line --><div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">';
+		$tmp='<input type="radio" name="type" id="radio_replacement" value="1"' . (GETPOST('type') == 1 ? ' checked' : '');
+		if (! $options) $tmp.=' disabled';
+		$tmp.='> ';
 		print '<script type="text/javascript" language="javascript">
 		jQuery(document).ready(function() {
 			jQuery("#fac_replacement").change(function() {
@@ -2160,7 +2160,7 @@ if ($action == 'create')
 			});
 		});
 		</script>';
-		$text = $langs->trans("InvoiceReplacementAsk") . ' ';
+		$text = $tmp.$langs->trans("InvoiceReplacementAsk") . ' ';
 		$text .= '<select class="flat" name="fac_replacement" id="fac_replacement"';
 		if (! $options)
 			$text .= ' disabled';
@@ -2172,20 +2172,19 @@ if ($action == 'create')
 			$text .= '<option value="-1">' . $langs->trans("NoReplacableInvoice") . '</option>';
 		}
 		$text .= '</select>';
-		$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceReplacementDesc"), 1);
+		$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceReplacementDesc"), 1, 'help', '', 0, 3);
 		print $desc;
-		print '</td></tr>' . "\n";
+		print '</div></div>';
 	}
 	else
 	{
-		print '<tr height="18"><td valign="middle">';
-		print '<input type="radio" name="type" id="radio_replacement" value="0" disabled>';
-		print '</td><td valign="middle">';
-		$text = $langs->trans("InvoiceReplacement") . ' ';
+		print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">';
+		$tmp='<input type="radio" name="type" id="radio_replacement" value="0" disabled> ';
+		$text = $tmp.$langs->trans("InvoiceReplacement") . ' ';
 		$text.= '('.$langs->trans("YouMustCreateInvoiceFromThird").') ';
-		$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceReplacementDesc"), 1);
+		$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceReplacementDesc"), 1, 'help', '', 0, 3);
 		print $desc;
-		print '</td></tr>' . "\n";
+		print '</div></div>';
 	}
 
 	if (empty($origin))
@@ -2193,12 +2192,10 @@ if ($action == 'create')
 		if ($socid > 0)
 		{
 			// Credit note
-			print '<tr height="18"><td valign="top">';
-			print '<input type="radio" id="radio_creditnote" name="type" value="2"' . (GETPOST('type') == 2 ? ' checked' : '');
-			if (! $optionsav)
-				print ' disabled';
-			print '>';
-			print '</td><td valign="top">';
+			print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">';
+			$tmp='<input type="radio" id="radio_creditnote" name="type" value="2"' . (GETPOST('type') == 2 ? ' checked' : '');
+			if (! $optionsav) $tmp.=' disabled';
+			$tmp.= '> ';
 			// Show credit note options only if we checked credit note
 			print '<script type="text/javascript" language="javascript">
 			jQuery(document).ready(function() {
@@ -2214,7 +2211,7 @@ if ($action == 'create')
 				});
 			});
 			</script>';
-			$text = $langs->transnoentities("InvoiceAvoirAsk") . ' ';
+			$text = $tmp.$langs->transnoentities("InvoiceAvoirAsk") . ' ';
 			// $text.='<input type="text" value="">';
 			$text .= '<select class="flat" name="fac_avoir" id="fac_avoir"';
 			if (! $optionsav)
@@ -2227,7 +2224,7 @@ if ($action == 'create')
 				$text .= '<option value="-1">' . $langs->trans("NoInvoiceToCorrect") . '</option>';
 			}
 			$text .= '</select>';
-			$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceAvoirDesc"), 1);
+			$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceAvoirDesc"), 1, 'help', '', 0, 3);
 			print $desc;
 
 			print '<div id="credit_note_options">';
@@ -2235,22 +2232,22 @@ if ($action == 'create')
 	        print '<br>&nbsp;&nbsp;&nbsp; <input type="checkbox" name="invoiceAvoirWithPaymentRestAmount" id="invoiceAvoirWithPaymentRestAmount" value="1" onclick="if($(this).is(\':checked\') ) { $(\'#radio_creditnote\').prop("checked", true);  $(\'#invoiceAvoirWithLines\').removeAttr(\'checked\');   }" '.(GETPOST('invoiceAvoirWithPaymentRestAmount','int')>0 ? 'checked':'').' /> <label for="invoiceAvoirWithPaymentRestAmount">'.$langs->trans('invoiceAvoirWithPaymentRestAmount')."</label>";
 			print '</div>';
 
-			print '</td></tr>' . "\n";
+			print '</div></div>';
 		}
 		else
 		{
-			print '<tr height="18"><td valign="middle">';
-			print '<input type="radio" name="type" id="radio_creditnote" value="0" disabled>';
-			print '</td><td valign="middle">';
-			$text = $langs->trans("InvoiceAvoir") . ' ';
+			print '<div class="tagtr listofinvoicetype"><div class="tagtd listofinvoicetype">';
+			$tmp='<input type="radio" name="type" id="radio_creditnote" value="0" disabled> ';
+			$text = $tmp.$langs->trans("InvoiceAvoir") . ' ';
 			$text.= '('.$langs->trans("YouMustCreateInvoiceFromThird").') ';
-			$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceAvoirDesc"), 1);
+			$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceAvoirDesc"), 1, 'help', '', 0, 3);
 			print $desc;
-			print '</td></tr>' . "\n";
+			print '</div></div>' . "\n";
 		}
 	}
 
-	print '</table>';
+	print '</div>';
+
 	print '</td></tr>';
 
 	if ($socid > 0)
@@ -2295,12 +2292,15 @@ if ($action == 'create')
     print '</td></tr>';
 
 	// Project
-	if (! empty($conf->projet->enabled) && $socid > 0) {
-		$formproject = new FormProjets($db);
+	if (! empty($conf->projet->enabled) && $socid > 0)
+	{
+		$projectid = GETPOST('projectid')?GETPOST('projectid'):0;
+		if ($origin == 'project') $projectid = ($originid ? $originid : 0);
 
 		$langs->load('projects');
 		print '<tr><td>' . $langs->trans('Project') . '</td><td colspan="2">';
-		$formproject->select_projects($soc->id, $projectid, 'projectid', 0);
+		$numprojet = $formproject->select_projects($soc->id, $projectid, 'projectid', 0);
+		print ' &nbsp; <a href="../projet/card.php?socid=' . $soc->id . '&action=create&status=1&backtopage='.urlencode($_SERVER["PHP_SELF"].'?action=create&socid='.$soc->id).'">' . $langs->trans("AddProject") . '</a>';
 		print '</td></tr>';
 	}
 
@@ -2322,7 +2322,7 @@ if ($action == 'create')
 		print $object->showOptionals($extrafields, 'edit');
 	}
 
-	// Modele PDF
+	// Template to use by default
 	print '<tr><td>' . $langs->trans('Model') . '</td>';
 	print '<td>';
 	include_once DOL_DOCUMENT_ROOT . '/core/modules/facture/modules_facture.php';
@@ -2339,7 +2339,7 @@ if ($action == 'create')
 	{
 		$note_public = $objectsrc->note_public;
 	}
-	$doleditor = new DolEditor('note_public', $note_public, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70);
+	$doleditor = new DolEditor('note_public', $note_public, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, '90%');
 	print $doleditor->Create(1);
 
 	// Private note
@@ -2353,7 +2353,7 @@ if ($action == 'create')
 		{
 			$note_private = $objectsrc->note_private;
 		}
-		$doleditor = new DolEditor('note_private', $note_private, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, 70);
+		$doleditor = new DolEditor('note_private', $note_private, '', 80, 'dolibarr_notes', 'In', 0, false, true, ROWS_3, '90%');
 		print $doleditor->Create(1);
 		// print '<textarea name="note_private" wrap="soft" cols="70" rows="'.ROWS_3.'">'.$note_private.'.</textarea>
 		print '</td></tr>';
@@ -2420,7 +2420,9 @@ if ($action == 'create')
 			print '<tr><td>' . $langs->transcountry("AmountLT2", $mysoc->country_code) . '</td><td colspan="2">' . price($objectsrc->total_localtax2) . "</td></tr>";
 		}
 		print '<tr><td>' . $langs->trans('TotalTTC') . '</td><td colspan="2">' . price($objectsrc->total_ttc) . "</td></tr>";
-	} else {
+	}
+	else
+	{
 		// Show deprecated optional form to add product line here
 		if (! empty($conf->global->PRODUCT_SHOW_WHEN_CREATE)) {
 			print '<tr><td colspan="3">';
@@ -2479,7 +2481,7 @@ if ($action == 'create')
 	// Button "Create Draft"
 	print '<div class="center">';
 	print '<input type="submit" class="button" name="bouton" value="' . $langs->trans('CreateDraft') . '">';
-	print '&nbsp; &nbsp; &nbsp;';
+	print '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
 	print '<input type="button" class="button" value="' . $langs->trans("Cancel") . '" onClick="javascript:history.go(-1)">';
 	print '</div>';
 
@@ -3488,50 +3490,50 @@ if ($action == 'create')
 	// Show global modifiers
 	if (! empty($conf->global->INVOICE_US_SITUATION))
 	{
-	if ($object->situation_cycle_ref && $object->statut == 0) {
-		print '<tr class="liste_titre nodrag nodrop">';
-		print '<form name="updatealllines" id="updatealllines" action="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '"#updatealllines" method="POST">';
-		print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '" />';
-		print '<input type="hidden" name="action" value="updatealllines" />';
-		print '<input type="hidden" name="id" value="' . $object->id . '" />';
-
-		if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER)) {
-			print '<td align="center" width="5">&nbsp;</td>';
-		}
-		print '<td>' . $langs->trans('ModifyAllLines') . '</td>';
-		print '<td align="right" width="50">&nbsp;</td>';
-		print '<td align="right" width="80">&nbsp;</td>';
-		if ($inputalsopricewithtax) print '<td align="right" width="80">&nbsp;</td>';
-		print '<td align="right" width="50">&nbsp</td>';
-		print '<td align="right" width="50">&nbsp</td>';
-		print '<td align="right" width="50">' . $langs->trans('Progress') . '</td>';
-		if (! empty($conf->margin->enabled) && empty($user->societe_id))
-		{
-			print '<td align="right" class="margininfos" width="80">&nbsp;</td>';
-			if ((! empty($conf->global->DISPLAY_MARGIN_RATES) || ! empty($conf->global->DISPLAY_MARK_RATES)) && $user->rights->margins->liretous) {
-				print '<td align="right" class="margininfos" width="50">&nbsp;</td>';
-			}
-		}
-		print '<td align="right" width="50">&nbsp;</td>';
-		print '<td>&nbsp;</td>';
-		print '<td width="10">&nbsp;</td>';
-		print '<td width="10">&nbsp;</td>';
-		print "</tr>\n";
-
-		if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER)) {
-			print '<td align="center" width="5">&nbsp;</td>';
-		}
-		print '<tr width="100%" height="18" class="nodrag nodrop">';
-		print '<td>&nbsp;</td>';
-		print '<td width="50">&nbsp;</td>';
-		print '<td width="80">&nbsp;</td>';
-		print '<td width="50">&nbsp;</td>';
-		print '<td width="50">&nbsp;</td>';
-		print '<td align="right" class="nowrap"><input type="text" size="1" value="" name="all_progress">%</td>';
-		print '<td colspan="4" align="right"><input class="button" type="submit" name="all_percent" value="Modifier" /></td>';
-		print '</tr>';
-		print '</form>';
-	}
+		if ($object->situation_cycle_ref && $object->statut == 0) {
+			print '<tr class="liste_titre nodrag nodrop">';
+			print '<form name="updatealllines" id="updatealllines" action="' . $_SERVER['PHP_SELF'] . '?id=' . $object->id . '"#updatealllines" method="POST">';
+			print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '" />';
+			print '<input type="hidden" name="action" value="updatealllines" />';
+			print '<input type="hidden" name="id" value="' . $object->id . '" />';
+
+			if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER)) {
+				print '<td align="center" width="5">&nbsp;</td>';
+			}
+			print '<td>' . $langs->trans('ModifyAllLines') . '</td>';
+			print '<td align="right" width="50">&nbsp;</td>';
+			print '<td align="right" width="80">&nbsp;</td>';
+			if ($inputalsopricewithtax) print '<td align="right" width="80">&nbsp;</td>';
+			print '<td align="right" width="50">&nbsp</td>';
+			print '<td align="right" width="50">&nbsp</td>';
+			print '<td align="right" width="50">' . $langs->trans('Progress') . '</td>';
+			if (! empty($conf->margin->enabled) && empty($user->societe_id))
+			{
+				print '<td align="right" class="margininfos" width="80">&nbsp;</td>';
+				if ((! empty($conf->global->DISPLAY_MARGIN_RATES) || ! empty($conf->global->DISPLAY_MARK_RATES)) && $user->rights->margins->liretous) {
+					print '<td align="right" class="margininfos" width="50">&nbsp;</td>';
+				}
+			}
+			print '<td align="right" width="50">&nbsp;</td>';
+			print '<td>&nbsp;</td>';
+			print '<td width="10">&nbsp;</td>';
+			print '<td width="10">&nbsp;</td>';
+			print "</tr>\n";
+
+			if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER)) {
+				print '<td align="center" width="5">&nbsp;</td>';
+			}
+			print '<tr width="100%" class="nodrag nodrop">';
+			print '<td>&nbsp;</td>';
+			print '<td width="50">&nbsp;</td>';
+			print '<td width="80">&nbsp;</td>';
+			print '<td width="50">&nbsp;</td>';
+			print '<td width="50">&nbsp;</td>';
+			print '<td align="right" class="nowrap"><input type="text" size="1" value="" name="all_progress">%</td>';
+			print '<td colspan="4" align="right"><input class="button" type="submit" name="all_percent" value="Modifier" /></td>';
+			print '</tr>';
+			print '</form>';
+		}
 	}
 
 	// Show object lines
@@ -3754,7 +3756,7 @@ if ($action == 'create')
 	}
 	print '<br>';
 
-	//Select mail models is same action as presend
+	// Select mail models is same action as presend
 	if (GETPOST('modelselected')) {
 		$action = 'presend';
 	}
@@ -3774,77 +3776,10 @@ if ($action == 'create')
 		$somethingshown = $formfile->numoffiles;
 
 		// Linked object block
-		$somethingshown = $object->showLinkedObjectBlock();
-
-		$linktoelem='';
+		$somethingshown = $form->showLinkedObjectBlock($object);
 
-		if (! empty($conf->commande->enabled))
-		{
-			$linktoelem.=($linktoelem?' &nbsp; ':'').'<a href="#" id="linktoorder">' . $langs->trans('LinkedOrder') . '</a>';
-
-			print '
-				<script type="text/javascript" language="javascript">
-				jQuery(document).ready(function() {
-					jQuery("#linktoorder").click(function() {
-						jQuery("#orderlist").toggle();
-						jQuery("#linktoorder").toggle();
-					});
-				});
-				</script>
-				';
-
-			print '<div id="orderlist" style="display:none">';
-
-			$sql = "SELECT s.rowid as socid, s.nom as name, s.client, c.rowid, c.ref, c.ref_client, c.total_ht";
-			$sql .= " FROM " . MAIN_DB_PREFIX . "societe as s";
-			$sql .= ", " . MAIN_DB_PREFIX . "commande as c";
-			$sql .= ' WHERE c.fk_soc = s.rowid AND c.fk_soc = ' . $soc->id . '';
-
-			$resqlorderlist = $db->query($sql);
-			if ($resqlorderlist)
-			{
-				$num = $db->num_rows($resqlorderlist);
-				$i = 0;
-
-				print '<br><form action="" method="POST" name="LinkedOrder">';
-				print '<table class="noborder">';
-				print '<tr class="liste_titre">';
-				print '<td class="nowrap"></td>';
-				print '<td align="center">' . $langs->trans("Ref") . '</td>';
-				print '<td align="left">' . $langs->trans("RefCustomer") . '</td>';
-				print '<td align="left">' . $langs->trans("AmountHTShort") . '</td>';
-				print '<td align="left">' . $langs->trans("Company") . '</td>';
-				print '</tr>';
-				while ($i < $num)
-				{
-					$objp = $db->fetch_object($resqlorderlist);
-					if ($objp->socid == $soc->id) {
-						$var = ! $var;
-						print '<tr ' . $bc [$var] . '>';
-						print '<td aling="left">';
-						print '<input type="radio" name="linkedOrder" value=' . $objp->rowid . '>';
-						print '<td align="center">' . $objp->ref . '</td>';
-						print '<td>' . $objp->ref_client . '</td>';
-						print '<td>' . price($objp->total_ht) . '</td>';
-						print '<td>' . $objp->name . '</td>';
-						print '</td>';
-						print '</tr>';
-					}
-
-					$i ++;
-				}
-				print '</table>';
-				print '<div class="center"><input type="submit" class="button" value="' . $langs->trans('ToLink') . '"> &nbsp; <input type="submit" class="button" name="cancel" value="' . $langs->trans('Cancel') . '"></div>';
-				print '</form>';
-				$db->free($resqlorderlist);
-			} else {
-				dol_print_error($db);
-			}
-
-			print '</div>';
-		}
-
-		// Show link to elements
+		// Show links to link elements
+		$linktoelem = $form->showLinkToObjectBlock($object,array('order'));
 		if ($linktoelem) print '<br>'.$linktoelem;
 
 		// Link for paypal payment
@@ -3886,8 +3821,8 @@ if ($action == 'create')
 
 		$ref = dol_sanitizeFileName($object->ref);
 		include_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php';
-		$fileparams = dol_most_recent_file($conf->facture->dir_output . '/' . $ref, preg_quote($ref, '/'));
-		$file = $fileparams ['fullname'];
+		$fileparams = dol_most_recent_file($conf->facture->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
+		$file = $fileparams['fullname'];
 
 		// Define output language
 		$outputlangs = $langs;
@@ -3911,14 +3846,16 @@ if ($action == 'create')
 				dol_print_error($db, $result);
 				exit();
 			}
-			$fileparams = dol_most_recent_file($conf->facture->dir_output . '/' . $ref, preg_quote($ref, '/'));
-			$file = $fileparams ['fullname'];
+			$fileparams = dol_most_recent_file($conf->facture->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
+			$file = $fileparams['fullname'];
 		}
 
 		print '<br>';
 		print_titre($langs->trans($titreform));
 
 		// Cree l'objet formulaire mail
+		dol_fiche_head();
+
 		include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php';
 		$formmail = new FormMail($db);
 		$formmail->param['langsmodels']=(empty($newlang)?$langs->defaultlang:$newlang);
@@ -3990,7 +3927,7 @@ if ($action == 'create')
 
 		print $formmail->get_form();
 
-		print '<br>';
+		dol_fiche_end();
 	}
 }
 
diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php
index a347ccdbca85ab359e5250547a67ee7cd0467a88..fc3d8936edfe6db3bd322ea24d267c1985e98cf1 100644
--- a/htdocs/compta/facture/class/facture.class.php
+++ b/htdocs/compta/facture/class/facture.class.php
@@ -92,18 +92,16 @@ class Facture extends CommonInvoice
 	var $revenuestamp;
 	/**
 	 * @deprecated
+	 * @see note_private, note_public
 	 */
 	var $note;
 	var $note_private;
 	var $note_public;
 
 	/**
-	 * Check constants for more info:
-	 * - STATUS_DRAFT
-	 * - STATUS_VALIDATED
-	 * - STATUS_PAID
-	 * - STATUS_ABANDONED
+	 * Invoice status
 	 * @var int
+	 * @see Facture::STATUS_DRAFT, Facture::STATUS_VALIDATED, Facture::STATUS_PAID, Facture::STATUS_ABANDONED
 	 */
 	var $statut;
 	//! Fermeture apres paiement partiel: discount_vat, badcustomer, abandon
@@ -131,6 +129,9 @@ class Facture extends CommonInvoice
 	 * @deprecated
 	 */
 	var $products=array();
+	/**
+	 * @var FactureLigne[]
+	 */
 	var $lines=array();
 	var $line;
 	var $extraparams=array();
@@ -1119,7 +1120,8 @@ class Facture extends CommonInvoice
 				$objp = $this->db->fetch_object($result);
 				$line = new FactureLigne($this->db);
 
-				$line->rowid	        = $objp->rowid;
+				$line->id               = $objp->rowid;
+				$line->rowid	        = $objp->rowid;             // deprecated
 				$line->label            = $objp->custom_label;		// deprecated
 				$line->desc             = $objp->description;		// Description line
 				$line->product_type     = $objp->product_type;		// Type of line
@@ -2105,6 +2107,11 @@ class Facture extends CommonInvoice
 	 */
 	function addline($desc, $pu_ht, $qty, $txtva, $txlocaltax1=0, $txlocaltax2=0, $fk_product=0, $remise_percent=0, $date_start='', $date_end='', $ventil=0, $info_bits=0, $fk_remise_except='', $price_base_type='HT', $pu_ttc=0, $type=self::TYPE_STANDARD, $rang=-1, $special_code=0, $origin='', $origin_id=0, $fk_parent_line=0, $fk_fournprice=null, $pa_ht=0, $label='', $array_options=0, $situation_percent=100, $fk_prev_id='', $fk_unit = null)
 	{
+		// Deprecation warning
+		if ($label) {
+			dol_syslog(__METHOD__ . ": using line label is deprecated", LOG_WARNING);
+		}
+
 		global $mysoc, $conf, $langs;
 
 		dol_syslog(get_class($this)."::addline facid=$this->id,desc=$desc,pu_ht=$pu_ht,qty=$qty,txtva=$txtva, txlocaltax1=$txlocaltax1, txlocaltax2=$txlocaltax2, fk_product=$fk_product,remise_percent=$remise_percent,date_start=$date_start,date_end=$date_end,ventil=$ventil,info_bits=$info_bits,fk_remise_except=$fk_remise_except,price_base_type=$price_base_type,pu_ttc=$pu_ttc,type=$type, fk_unit=$fk_unit", LOG_DEBUG);
@@ -2289,6 +2296,11 @@ class Facture extends CommonInvoice
 	 */
 	function updateline($rowid, $desc, $pu, $qty, $remise_percent, $date_start, $date_end, $txtva, $txlocaltax1=0, $txlocaltax2=0, $price_base_type='HT', $info_bits=0, $type= self::TYPE_STANDARD, $fk_parent_line=0, $skip_update_total=0, $fk_fournprice=null, $pa_ht=0, $label='', $special_code=0, $array_options=0, $situation_percent=0, $fk_unit = null)
 	{
+		// Deprecation warning
+		if ($label) {
+			dol_syslog(__METHOD__ . ": using line label is deprecated", LOG_WARNING);
+		}
+
 		include_once DOL_DOCUMENT_ROOT.'/core/lib/price.lib.php';
 
 		global $mysoc;
@@ -3203,7 +3215,7 @@ class Facture extends CommonInvoice
 			$response = new WorkboardResponse();
 			$response->warning_delay=$conf->facture->client->warning_delay/60/60/24;
 			$response->label=$langs->trans("CustomerBillsUnpaid");
-			$response->url=DOL_URL_ROOT.'/compta/facture/impayees.php';
+			$response->url=DOL_URL_ROOT.'/compta/facture/list.php?search_status=1';
 			$response->img=img_object($langs->trans("Bills"),"bill");
 
 			while ($obj=$this->db->fetch_object($resql))
@@ -3685,7 +3697,10 @@ class FactureLigne extends CommonInvoiceLine
 	var $fk_facture;
 	//! Id parent line
 	var $fk_parent_line;
-	var $label;				// deprecated
+	/**
+	 * @deprecated
+	 */
+	var $label;
 	//! Description ligne
 	var $desc;
 
@@ -3717,8 +3732,16 @@ class FactureLigne extends CommonInvoiceLine
 	//var $remise;			// Montant calcule de la remise % sur PU HT (exemple 20)
 
 	// From llx_product
+	/**
+	 * @deprecated
+	 * @see product_ref
+	 */
 	var $ref;				// Product ref (deprecated)
 	var $product_ref;       // Product ref
+	/**
+	 * @deprecated
+	 * @see product_label
+	 */
 	var $libelle;      		// Product label (deprecated)
 	var $product_label;     // Product label
 	var $product_desc;  	// Description produit
diff --git a/htdocs/compta/facture/class/facturestats.class.php b/htdocs/compta/facture/class/facturestats.class.php
index 4028849b5fa90e5dc1f593e8ee0e1075291f2e11..5d8d22cfa9de8277c4b4a11d5dac71a5600364fd 100644
--- a/htdocs/compta/facture/class/facturestats.class.php
+++ b/htdocs/compta/facture/class/facturestats.class.php
@@ -84,6 +84,8 @@ class FactureStats extends Stats
 			$this->where.=" AND f.fk_soc = ".$this->socid;
 		}
         if ($this->userid > 0) $this->where.=' AND f.fk_user_author = '.$this->userid;
+		if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $this->where.= " AND f.type IN (0,1,2)";
+		else $this->where.= " AND f.type IN (0,1,2,3)";
 	}
 
 
@@ -206,7 +208,7 @@ class FactureStats extends Stats
 
 		$sql = "SELECT product.ref, COUNT(product.ref) as nb, SUM(tl.".$this->field_line.") as total, AVG(tl.".$this->field_line.") as avg";
 		$sql.= " FROM ".$this->from.", ".$this->from_line.", ".MAIN_DB_PREFIX."product as product";
-		//if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
+		if (!$user->rights->societe->client->voir && !$this->socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
 		$sql.= " WHERE ".$this->where;
 		$sql.= " AND f.rowid = tl.fk_facture AND tl.fk_product = product.rowid";
     	$sql.= " AND f.datef BETWEEN '".$this->db->idate(dol_get_first_day($year,1,false))."' AND '".$this->db->idate(dol_get_last_day($year,12,false))."'";
diff --git a/htdocs/compta/facture/document.php b/htdocs/compta/facture/document.php
index 60c475647435f6dc1c958e66ca0a3bc3d99bf78f..e4f9846309a3b0110b3fdc9d9ae892da82830d00 100644
--- a/htdocs/compta/facture/document.php
+++ b/htdocs/compta/facture/document.php
@@ -37,6 +37,7 @@ $langs->load('propal');
 $langs->load('compta');
 $langs->load('other');
 $langs->load("bills");
+$langs->load('companies');
 
 
 $id=(GETPOST('id','int')?GETPOST('id','int'):GETPOST('facid','int'));  // For backward compatibility
diff --git a/htdocs/compta/facture/fiche-rec.php b/htdocs/compta/facture/fiche-rec.php
index 6c82dcd4d8aef33e514403b3f2339bf2cbbc9201..2668f0f1af6a493b674ac39c50a1f84cca5dd320 100644
--- a/htdocs/compta/facture/fiche-rec.php
+++ b/htdocs/compta/facture/fiche-rec.php
@@ -2,10 +2,11 @@
 /* Copyright (C) 2002-2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
  * Copyright (C) 2004-2014 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C) 2005-2012 Regis Houssin        <regis.houssin@capnetworks.com>
- * Copyright (C) 2013      Florian Henry	<florian.henry@open-concept.pro>
- * Copyright (C) 2013      Juanjo Menent	<jmenent@2byte.es>
+ * Copyright (C) 2013      Florian Henry	    <florian.henry@open-concept.pro>
+ * Copyright (C) 2013      Juanjo Menent	    <jmenent@2byte.es>
  * Copyright (C) 2015      Jean-François Ferry	<jfefe@aternatik.fr>
  * Copyright (C) 2012      Cedric Salvador      <csalvador@gpcsolutions.fr>
+ * Copyright (C) 2015      Alexandre Spangaro   <alexandre.spangaro@gmail.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -128,6 +129,8 @@ if ($action == 'create')
 		print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
 		print '<input type="hidden" name="action" value="add">';
 		print '<input type="hidden" name="facid" value="'.$object->id.'">';
+		
+		dol_fiche_head();
 
 		$rowspan=4;
 		if (! empty($conf->projet->enabled) && $object->fk_project > 0) $rowspan++;
@@ -139,7 +142,7 @@ if ($action == 'create')
 		// Third party
 		print '<tr><td>'.$langs->trans("Customer").'</td><td>'.$object->client->getNomUrl(1,'customer').'</td>';
 		print '<td>';
-		//print $langs->trans("NotePrivate");
+		print $langs->trans("Comment");
 		print '</td></tr>';
 
 		// Title
@@ -371,10 +374,15 @@ if ($action == 'create')
 			print '</select>';
 			print '</td></tr>';
 		}
-		print '<tr><td colspan="3" align="center"><br><input type="submit" class="button" value="'.$langs->trans("Create").'"></td></tr>';
-		print "</form>\n";
 		print "</table>\n";
 
+        dol_fiche_end();
+
+		print '<div align="center"><input type="submit" class="button" value="'.$langs->trans("Create").'">';
+        print '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
+	    print '<input type="button" class="button" value="' . $langs->trans("Cancel") . '" onClick="javascript:history.go(-1)">';
+        print '</div>';
+		print "</form>\n";
 	}
 	else
 	{
@@ -432,7 +440,7 @@ else
 			$form->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->mode_reglement_id,'none');
 			print "</td></tr>";
 
-			print '<tr><td>'.$langs->trans("Note").'</td><td colspan="3">'.nl2br($object->note_private)."</td></tr>";
+			print '<tr><td>'.$langs->trans("Comment").'</td><td colspan="3">'.nl2br($object->note_private)."</td></tr>";
 
 			print "</table>";
 
diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php
index 08a14b75602ba4455fb58ba9d813d23c1bee31f5..a68ed8ef9038c6604ba6dea0ecd8666b252d8220 100644
--- a/htdocs/compta/facture/list.php
+++ b/htdocs/compta/facture/list.php
@@ -10,6 +10,7 @@
  * Copyright (C) 2013      Florian Henry		  	<florian.henry@open-concept.pro>
  * Copyright (C) 2013      Cédric Salvador       <csalvador@gpcsolutions.fr>
  * Copyright (C) 2015      Jean-François Ferry	<jfefe@aternatik.fr>
+ * Copyright (C) 2015	   Ferran Marcet		<fmarcet@2byte.es>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -88,6 +89,9 @@ $search_sale = GETPOST('search_sale','int');
 $day	= GETPOST('day','int');
 $month	= GETPOST('month','int');
 $year	= GETPOST('year','int');
+$day_lim	= GETPOST('day_lim','int');
+$month_lim	= GETPOST('month_lim','int');
+$year_lim	= GETPOST('year_lim','int');
 $filtre	= GETPOST('filtre');
 
 // Security check
@@ -213,6 +217,19 @@ else if ($year > 0)
 {
     $sql.= " AND f.datef BETWEEN '".$db->idate(dol_get_first_day($year,1,false))."' AND '".$db->idate(dol_get_last_day($year,12,false))."'";
 }
+if ($month_lim > 0)
+{
+	if ($year_lim > 0 && empty($day_lim))
+		$sql.= " AND f.date_lim_reglement BETWEEN '".$db->idate(dol_get_first_day($year_lim,$month_lim,false))."' AND '".$db->idate(dol_get_last_day($year_lim,$month_lim,false))."'";
+	else if ($year_lim > 0 && ! empty($day_lim))
+		$sql.= " AND f.date_lim_reglement BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $month_lim, $day_lim, $year_lim))."' AND '".$db->idate(dol_mktime(23, 59, 59, $month_lim, $day_lim, $year_lim))."'";
+	else
+		$sql.= " AND date_format(f.date_lim_reglement, '%m') = '".$month_lim."'";
+}
+else if ($year_lim > 0)
+{
+	$sql.= " AND f.date_lim_reglement BETWEEN '".$db->idate(dol_get_first_day($year_lim,1,false))."' AND '".$db->idate(dol_get_last_day($year_lim,12,false))."'";
+}
 if ($search_sale > 0) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$search_sale;
 if ($search_user > 0)
 {
@@ -322,7 +339,11 @@ if ($resql)
     print '<input class="flat" type="text" size="1" maxlength="2" name="month" value="'.$month.'">';
     $formother->select_year($year?$year:-1,'year',1, 20, 5);
     print '</td>';
-    print '<td class="liste_titre" align="left">&nbsp;</td>';
+ 	print '<td class="liste_titre" align="center">';
+    if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="day_lim" value="'.$day_lim.'">';
+    print '<input class="flat" type="text" size="1" maxlength="2" name="month_lim" value="'.$month_lim.'">';
+    $formother->select_year($year_lim?$year_lim:-1,'year_lim',1, 20, 5);
+    print '</td>';
     print '<td class="liste_titre" align="left"><input class="flat" type="text" size="8" name="search_societe" value="'.$search_societe.'"></td>';
     print '<td class="liste_titre" align="right"><input class="flat" type="text" size="6" name="search_montant_ht" value="'.$search_montant_ht.'"></td>';
     print '<td class="liste_titre" align="right">&nbsp;</td>';
diff --git a/htdocs/compta/facture/mergepdftool.php b/htdocs/compta/facture/mergepdftool.php
index ff1bde244662557d532441bd21fec4bb76785fca..146ee53736c1e9162583d17ddd77e0e68df15384 100644
--- a/htdocs/compta/facture/mergepdftool.php
+++ b/htdocs/compta/facture/mergepdftool.php
@@ -275,7 +275,7 @@ if ($action == "builddoc" && $user->rights->facture->lire && ! GETPOST('button_s
 	{
 	    $arrayofinclusion=array();
 	    foreach($_POST['toGenerate'] as $tmppdf) $arrayofinclusion[]=preg_quote($tmppdf.'.pdf','/');
-		$factures = dol_dir_list($conf->facture->dir_output,'all',1,implode('|',$arrayofinclusion),'\.meta$|\.png','date',SORT_DESC);
+		$factures = dol_dir_list($conf->facture->dir_output,'all',1,implode('|',$arrayofinclusion),'\.meta$|\.png','date',SORT_DESC,0,true);
 
 		// liste les fichiers
 		$files = array();
@@ -284,7 +284,7 @@ if ($action == "builddoc" && $user->rights->facture->lire && ! GETPOST('button_s
 		{
 			foreach($factures as $facture)
 			{
-				if(strstr($facture["name"],$basename))
+				if (strstr($facture["name"],$basename))
 				{
 					$files[] = $conf->facture->dir_output.'/'.$basename.'/'.$facture["name"];
 				}
diff --git a/htdocs/compta/facture/prelevement.php b/htdocs/compta/facture/prelevement.php
index 6954ad462491767c6801d87c606d5fb9bebe31b5..0e1763d4b86cda0d87debf5700758db68a4c6f56 100644
--- a/htdocs/compta/facture/prelevement.php
+++ b/htdocs/compta/facture/prelevement.php
@@ -36,6 +36,7 @@ if (!$user->rights->facture->lire) accessforbidden();
 $langs->load("bills");
 $langs->load("banks");
 $langs->load("withdrawals");
+$langs->load('companies');
 
 $id=(GETPOST('id','int')?GETPOST('id','int'):GETPOST('facid','int'));  // For backward compatibility
 $ref=GETPOST('ref','alpha');
@@ -396,7 +397,7 @@ if ($object->id > 0)
 	}
 	print "</td>";
 	print '</tr>';
-	
+
 	// Montants
 	print '<tr><td>'.$langs->trans('AmountHT').'</td>';
 	print '<td align="right" colspan="2" class="nowrap">'.price($object->total_ht).'</td>';
diff --git a/htdocs/compta/index.php b/htdocs/compta/index.php
index 3d3a8ab21979fb844ddf67733bba738d07de9d38..11296bda93eee136d92105321bf33c4350ee6598 100644
--- a/htdocs/compta/index.php
+++ b/htdocs/compta/index.php
@@ -775,7 +775,7 @@ if (! empty($conf->facture->enabled) && $user->rights->facture->lire)
 		$i = 0;
 
 		print '<table class="noborder" width="100%">';
-		print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("BillsCustomersUnpaid",$num).' <a href="'.DOL_URL_ROOT.'/compta/facture/impayees.php"><span class="badge">'.$num.'</span></a></td>';
+		print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("BillsCustomersUnpaid",$num).' <a href="'.DOL_URL_ROOT.'/compta/facture/list.php?search_status=1"><span class="badge">'.$num.'</span></a></td>';
 		if (! empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) print '<td align="right">'.$langs->trans("AmountHT").'</td>';
 		print '<td align="right">'.$langs->trans("AmountTTC").'</td>';
 		print '<td align="right">'.$langs->trans("Received").'</td>';
diff --git a/htdocs/compta/localtax/clients.php b/htdocs/compta/localtax/clients.php
index 90d6cbe8599cda83449fcee00e6adb6d9bd11cfe..31eaf4375c3c75c91decc88fd9c902443c11e358 100644
--- a/htdocs/compta/localtax/clients.php
+++ b/htdocs/compta/localtax/clients.php
@@ -109,7 +109,7 @@ $calc=$conf->global->MAIN_INFO_LOCALTAX_CALC.$local;
 if ($conf->global->$calc==0 || $conf->global->$calc==1)	// Calculate on invoice for goods and services
 {
     $nom=$langs->transcountry($local==1?"LT1ReportByCustomersInInputOutputMode":"LT2ReportByCustomersInInputOutputMode",$mysoc->country_code);
-    $calcmode=$calc==0?$langs->trans("CalcModeLT".$local):$langs->trans("CalcModeLT'.$local.'Rec");
+    $calcmode=$calc==0?$langs->trans("CalcModeLT".$local):$langs->trans("CalcModeLT".$local."Rec");
     $calcmode.='<br>('.$langs->trans("TaxModuleSetupToModifyRulesLT",DOL_URL_ROOT.'/admin/company.php').')';
     $period=$form->select_date($date_start,'date_start',0,0,0,'',1,0,1).' - '.$form->select_date($date_end,'date_end',0,0,0,'',1,0,1);
     if (! empty($conf->global->MAIN_MODULE_COMPTABILITE)) $description.='<br>'.$langs->trans("WarningDepositsNotIncluded");
diff --git a/htdocs/compta/localtax/quadri_detail.php b/htdocs/compta/localtax/quadri_detail.php
index 612014ac74133086f848a55d59a091de7717a273..7396c6251658863a18eb5f4be4715c51e6a21b1c 100644
--- a/htdocs/compta/localtax/quadri_detail.php
+++ b/htdocs/compta/localtax/quadri_detail.php
@@ -129,7 +129,7 @@ $calc=$conf->global->MAIN_INFO_LOCALTAX_CALC.$local;
 if ($conf->global->$calc==0 || $conf->global->$calc==1)	// Calculate on invoice for goods and services
 {
     $nom=$langs->trans($local==1?"LT1ReportByQuartersInDueDebtMode":"LT2ReportByQuartersInDueDebtMode");
-    $calcmode=$calc==0?$langs->trans("CalcModeLT".$local):$langs->trans("CalcModeLT'.$local.'Rec");
+    $calcmode=$calc==0?$langs->trans("CalcModeLT".$local):$langs->trans("CalcModeLT".$local."Rec");
     $calcmode.='<br>('.$langs->trans("TaxModuleSetupToModifyRulesLT",DOL_URL_ROOT.'/admin/company.php').')';
     $period=$form->select_date($date_start,'date_start',0,0,0,'',1,0,1).' - '.$form->select_date($date_end,'date_end',0,0,0,'',1,0,1);
     $prevyear=$year_start; $prevquarter=$q;
@@ -161,7 +161,7 @@ if ($conf->global->$calc==0 || $conf->global->$calc==1)	// Calculate on invoice
 if ($conf->global->$calc==2) 	// Invoice for goods, payment for services
 {
     $nom=$langs->trans($local==1?"LT1ReportByQuartersInInputOutputMode":"LT2ReportByQuartersInInputOutputMode");
-    $calcmode=$calc==0?$langs->trans("CalcModeLT".$local):$langs->trans("CalcModeLT'.$local.'Rec");
+    $calcmode=$calc==0?$langs->trans("CalcModeLT".$local):$langs->trans("CalcModeLT".$local."Rec");
     $calcmode.='<br>('.$langs->trans("TaxModuleSetupToModifyRulesLT",DOL_URL_ROOT.'/admin/company.php').')';
     $period=$form->select_date($date_start,'date_start',0,0,0,'',1,0,1).' - '.$form->select_date($date_end,'date_end',0,0,0,'',1,0,1);
     $prevyear=$year_start; $prevquarter=$q;
diff --git a/htdocs/compta/paiement.php b/htdocs/compta/paiement.php
index 58865c38540f93d4a37b76cff82dfed8ef055b4c..98fe402266c41f47e4d3e992a16219a7856c6706 100644
--- a/htdocs/compta/paiement.php
+++ b/htdocs/compta/paiement.php
@@ -6,7 +6,7 @@
  * Copyright (C) 2007      Franky Van Liedekerke <franky.van.liedekerke@telenet.be>
  * Copyright (C) 2012      Cédric Salvador       <csalvador@gpcsolutions.fr>
  * Copyright (C) 2014      Raphaël Doursenaud    <rdoursenaud@gpcsolutions.fr>
- * Copyright (C) 2014		Teddy Andreotti			<125155@supinfo.com>
+ * Copyright (C) 2014      Teddy Andreotti       <125155@supinfo.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -403,6 +403,8 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie
 		print '<input type="hidden" name="type" id="invoice_type" value="'.$facture->type.'">';
 		print '<input type="hidden" name="thirdpartylabel" id="thirdpartylabel" value="'.dol_escape_htmltag($facture->client->name).'">';
 
+		dol_fiche_head();
+
 		print '<table class="border" width="100%">';
 
         // Third party
@@ -462,6 +464,8 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie
 
         print '</table>';
 
+		dol_fiche_end();
+
         /*
          * List of unpaid invoices
          */
diff --git a/htdocs/compta/paiement/class/paiement.class.php b/htdocs/compta/paiement/class/paiement.class.php
index 077bbde2420591d7d723e4cc6ce501498a03c881..60d669fcacfb7b29da7665a12c9f89768d113696 100644
--- a/htdocs/compta/paiement/class/paiement.class.php
+++ b/htdocs/compta/paiement/class/paiement.class.php
@@ -40,7 +40,16 @@ class Paiement extends CommonObject
 	var $ref;
 	var $facid;
 	var $datepaye;
-    var $total;             // deprecated
+	/**
+	 * @deprecated
+	 * @see amount, amounts
+	 */
+    var $total;
+	/**
+	 * @deprecated
+	 * @see amount, amounts
+	 */
+	var $montant;
 	var $amount;            // Total amount of payment
 	var $amounts=array();   // Array of amounts
 	var $author;
diff --git a/htdocs/compta/salaries/document.php b/htdocs/compta/salaries/document.php
new file mode 100644
index 0000000000000000000000000000000000000000..71f10388acefbf903161c1aaf891949534b22612
--- /dev/null
+++ b/htdocs/compta/salaries/document.php
@@ -0,0 +1,136 @@
+<?php
+/* Copyright (C) 2003-2007 Rodolphe Quiedeville  <rodolphe@quiedeville.org>
+ * Copyright (C) 2004-2015 Laurent Destailleur   <eldy@users.sourceforge.net>
+ * Copyright (C) 2005      Marc Barilley / Ocebo <marc@ocebo.com>
+ * Copyright (C) 2005-2009 Regis Houssin         <regis.houssin@capnetworks.com>
+ * Copyright (C) 2005      Simon TOSSER          <simon@kornog-computing.com>
+ * Copyright (C) 2011-2012 Juanjo Menent         <jmenent@2byte.es>
+ * Copyright (C) 2013      Cédric Salvador       <csalvador@gpcsolutions.fr>
+ * Copyright (C) 2015      Alexandre Spangaro    <alexandre.spangaro@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * or see http://www.gnu.org/
+ */
+
+/**
+ *       \file       htdocs/compta/salaries/document.php
+ *       \ingroup    salaries
+ *       \brief      Page of linked files onto salaries
+ */
+
+require '../../main.inc.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/salaries.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/compta/salaries/class/paymentsalary.class.php';
+
+$langs->load("other");
+$langs->load("salaries");
+$langs->load("companies");
+
+$id = GETPOST('id','int');
+$ref = GETPOST('ref', 'alpha');
+$action = GETPOST('action','alpha');
+$confirm = GETPOST('confirm','alpha');
+
+// Security check
+if ($user->societe_id) $socid=$user->societe_id;
+$result = restrictedArea($user, 'salaries', $id, '');
+
+
+// Get parameters
+$sortfield = GETPOST('sortfield','alpha');
+$sortorder = GETPOST('sortorder','alpha');
+$page = GETPOST('page','int');
+if ($page == -1) { $page = 0; }
+$offset = $conf->liste_limit * $page;
+$pageprev = $page - 1;
+$pagenext = $page + 1;
+if (! $sortorder) $sortorder="ASC";
+if (! $sortfield) $sortfield="name";
+
+
+$object = new PaymentSalary($db);
+$object->fetch($id, $ref);
+
+$upload_dir = $conf->salaries->dir_output.'/'.dol_sanitizeFileName($object->id);
+$modulepart='salaries';
+
+
+/*
+ * Actions
+ */
+
+include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_pre_headers.tpl.php';
+
+
+/*
+ * View
+ */
+
+$form = new Form($db);
+
+llxHeader("","",$langs->trans("SalaryPayment"));
+
+
+if ($object->id)
+{
+	$object->fetch_thirdparty();
+
+	$head=salaries_prepare_head($object);
+
+	dol_fiche_head($head, 'documents',  $langs->trans("SalaryPayment"), 0, 'payment');
+
+
+	// Construit liste des fichiers
+	$filearray=dol_dir_list($upload_dir,"files",0,'','(\.meta|_preview\.png)$',$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1);
+	$totalsize=0;
+	foreach($filearray as $key => $file)
+	{
+		$totalsize+=$file['size'];
+	}
+
+
+    print '<table class="border" width="100%">';
+
+    $linkback = '<a href="'.DOL_URL_ROOT.'/compta/salaries/index.php'.(! empty($socid)?'?socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>';
+
+	// Ref
+	print '<tr><td width="30%">'.$langs->trans("Ref").'</td><td>';
+	print $form->showrefnav($object, 'id', $linkback, 1, 'rowid', 'ref', '');
+	print '</td></tr>';
+
+	// Societe
+	//print "<tr><td>".$langs->trans("Company")."</td><td>".$object->client->getNomUrl(1)."</td></tr>";
+
+    print '<tr><td>'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.count($filearray).'</td></tr>';
+    print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td colspan="3">'.$totalsize.' '.$langs->trans("bytes").'</td></tr>';
+    print '</table>';
+
+    print '</div>';
+
+    $modulepart = 'salaries';
+    $permission = $user->rights->salaries->write;
+    $param = '&id=' . $object->id;
+    include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_post_headers.tpl.php';
+
+}
+else
+{
+	print $langs->trans("ErrorUnknown");
+}
+
+llxFooter();
+
+$db->close();
diff --git a/htdocs/compta/sociales/charges.php b/htdocs/compta/sociales/charges.php
index 740f6f3bf5e6045bbabe4e5900ea91e42d5ca8ac..4d638e23cf7b2663ed235dcdb694f112222372e0 100644
--- a/htdocs/compta/sociales/charges.php
+++ b/htdocs/compta/sociales/charges.php
@@ -501,7 +501,7 @@ if ($id > 0)
 			}
 
 			// Emettre paiement
-			if ($object->paye == 0 && ((price2num($object->amount) < 0 && round($resteapayer) < 0) || (price2num($object->amount) > 0 && round($resteapayer) > 0)) && $user->rights->tax->charges->creer)
+			if ($object->paye == 0 && ((price2num($object->amount) < 0 && price2num($resteapayer, 'MT') < 0) || (price2num($object->amount) > 0 && price2num($resteapayer, 'MT') > 0)) && $user->rights->tax->charges->creer)
 			{
 				print "<a class=\"butAction\" href=\"".DOL_URL_ROOT."/compta/paiement_charge.php?id=$object->id&amp;action=create\">".$langs->trans("DoPayment")."</a>";
 			}
diff --git a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php
index d58e0add8ab86b52e9264791dd89035a411ebd79..45b2c51acfa01425b1cbf1ca7a338d139f733db5 100644
--- a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php
+++ b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php
@@ -40,6 +40,11 @@ class PaymentSocialContribution extends CommonObject
 	var $datec='';
 	var $tms='';
 	var $datep='';
+	/**
+	 * @deprecated
+	 * @see amount
+	 */
+	var $total;
     var $amount;            // Total amount of payment
     var $amounts=array();   // Array of amounts
 	var $fk_typepaiement;
diff --git a/htdocs/contact/canvas/actions_contactcard_common.class.php b/htdocs/contact/canvas/actions_contactcard_common.class.php
index 9e6624dda72c57a0107a547af543c26f7375608f..ad628fd65747c9bf4ec3f3f5fa7b9d2e075a7215 100644
--- a/htdocs/contact/canvas/actions_contactcard_common.class.php
+++ b/htdocs/contact/canvas/actions_contactcard_common.class.php
@@ -51,6 +51,8 @@ abstract class ActionsContactCardCommon
 	 */
 	private function getInstanceDao()
 	{
+		dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING);
+
 		if (! is_object($this->object))
 		{
 			$modelclassfile = dol_buildpath('/'.$this->dirmodule.'/canvas/'.$this->canvas.'/dao_'.$this->targetmodule.'_'.$this->canvas.'.class.php');
diff --git a/htdocs/contact/card.php b/htdocs/contact/card.php
index 3d75c4a2036b6d9797067de5aa12ab86c29ec9c7..e39c5502b4d1bbaae8945336b44ec07f3a0ee5d1 100644
--- a/htdocs/contact/card.php
+++ b/htdocs/contact/card.php
@@ -40,6 +40,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
 require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
 require_once DOL_DOCUMENT_ROOT. '/core/class/html.form.class.php';
 require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
+require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php';
 $langs->load("companies");
 $langs->load("users");
 $langs->load("other");
@@ -201,7 +202,11 @@ if (empty($reshook))
 
         // Fill array 'array_options' with data from add form
 		$ret = $extrafields->setOptionalsFromPost($extralabels,$object);
-		if ($ret < 0) $error++;
+		if ($ret < 0)
+		{
+			$error++;
+			$action = 'create';
+		}
 
         if (! GETPOST("lastname"))
         {
@@ -216,7 +221,17 @@ if (empty($reshook))
             {
                 $error++; $errors=array_merge($errors,($object->error?array($object->error):$object->errors));
                 $action = 'create';
-            }
+			} else {
+				// Categories association
+				$contcats = GETPOST( 'contcats', 'array' );
+				if (!empty( $contcats )) {
+					$cat = new Categorie( $db );
+					foreach ($contcats as $id_category) {
+						$cat->fetch( $id_category );
+						$cat->add_type( $object, 'contact' );
+					}
+				}
+			}
         }
 
         if (! $error && $id > 0)
@@ -309,8 +324,22 @@ if (empty($reshook))
 
             $result = $object->update($contactid, $user);
 
-            if ($result > 0)
-            {
+			if ($result > 0) {
+				// Categories association
+				// First we delete all categories association
+				$sql = 'DELETE FROM ' . MAIN_DB_PREFIX . 'categorie_contact';
+				$sql .= ' WHERE fk_socpeople = ' . $object->id;
+				$db->query( $sql );
+
+				// Then we add the associated categories
+				$categories = GETPOST( 'contcats', 'array' );
+				if (!empty( $categories )) {
+					$cat = new Categorie( $db );
+					foreach ($categories as $id_category) {
+						$cat->fetch( $id_category );
+						$cat->add_type( $object, 'contact' );
+					}
+				}
                 $object->old_lastname='';
                 $object->old_firstname='';
                 $action = 'view';
@@ -576,6 +605,15 @@ else
             print $form->selectarray('priv',$selectarray,(GETPOST("priv",'alpha')?GETPOST("priv",'alpha'):$object->priv),0);
             print '</td></tr>';
 
+			// Categories
+			if (! empty($conf->categorie->enabled)  && ! empty($user->rights->categorie->lire)) {
+				print '<tr><td>' . fieldLabel( 'Categories', 'contcats' ) . '</td><td colspan="3">';
+				$cate_arbo = $form->select_all_categories( Categorie::TYPE_CONTACT, null, 'parent', null, null, 1 );
+				print $form->multiselectarray( 'contcats', $cate_arbo, GETPOST( 'contcats', 'array' ), null, null, null,
+					null, '90%' );
+				print "</td></tr>";
+			}
+
             // Other attributes
             $parameters=array('colspan' => ' colspan="3"');
             $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action);    // Note that $action and $object may have been modified by hook
@@ -815,6 +853,20 @@ else
             print $object->getLibStatut(4);
             print '</td></tr>';
 
+			// Categories
+			if (!empty( $conf->categorie->enabled ) && !empty( $user->rights->categorie->lire )) {
+				print '<tr><td>' . fieldLabel( 'Categories', 'contcats' ) . '</td>';
+				print '<td colspan="3">';
+				$cate_arbo = $form->select_all_categories( Categorie::TYPE_CONTACT, null, null, null, null, 1 );
+				$c = new Categorie( $db );
+				$cats = $c->containing( $object->id, Categorie::TYPE_CONTACT );
+				foreach ($cats as $cat) {
+					$arrayselected[] = $cat->id;
+				}
+				print $form->multiselectarray( 'contcats', $cate_arbo, $arrayselected, '', 0, '', 0, '90%' );
+				print "</td></tr>";
+			}
+
             // Other attributes
             $parameters=array('colspan' => ' colspan="3"');
             $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action);    // Note that $action and $object may have been modified by hook
@@ -1039,6 +1091,15 @@ else
 		print $object->getLibStatut(4);
 		print '</td>';
 		print '</tr>'."\n";
+
+		// Categories
+		if (! empty($conf->categorie->enabled)  && ! empty($user->rights->categorie->lire)) {
+			print '<tr><td>' . $langs->trans( "Categories" ) . '</td>';
+			print '<td colspan="3">';
+			print $form->showCategories( $object->id, 'contact', 1 );
+			print '</td></tr>';
+		}
+
         // Other attributes
         $parameters=array('socid'=>$socid, 'colspan' => ' colspan="3"');
         $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action);    // Note that $action and $object may have been modified by hook
@@ -1101,18 +1162,14 @@ else
 		{
         	if ($user->rights->societe->contact->creer)
             {
-                print '<a class="butAction" href="card.php?id='.$object->id.'&action=edit">'.$langs->trans('Modify').'</a>';
+                print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=edit">'.$langs->trans('Modify').'</a>';
             }
 
             if (! $object->user_id && $user->rights->user->user->creer)
             {
-                print '<a class="butAction" href="card.php?id='.$object->id.'&action=create_user">'.$langs->trans("CreateDolibarrLogin").'</a>';
+                print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=create_user">'.$langs->trans("CreateDolibarrLogin").'</a>';
             }
 
-            if ($user->rights->societe->contact->supprimer)
-            {
-                print '<a class="butActionDelete" href="card.php?id='.$object->id.'&action=delete'.($backtopage?'&backtopage='.urlencode($backtopage):'').'">'.$langs->trans('Delete').'</a>';
-            }
             // Activer
             if ($object->statut == 0 && $user->rights->societe->contact->creer)
             {
@@ -1122,6 +1179,12 @@ else
             if ($object->statut == 1 && $user->rights->societe->contact->creer)
             {
                 print '<a class="butActionDelete" href="'.$_SERVER['PHP_SELF'].'?action=disable&id='.$object->id.'">'.$langs->trans("DisableUser").'</a>';
+            }
+
+		    // Delete
+		    if ($user->rights->societe->contact->supprimer)
+            {
+                print '<a class="butActionDelete" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=delete'.($backtopage?'&backtopage='.urlencode($backtopage):'').'">'.$langs->trans('Delete').'</a>';
             }
         }
 
diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php
index 72590c82e82523b97a9432dd6979c1030482c5e2..ebc167ae6d6c572e68a6d1215f3851905bdb7e64 100644
--- a/htdocs/contact/class/contact.class.php
+++ b/htdocs/contact/class/contact.class.php
@@ -50,9 +50,21 @@ class Contact extends CommonObject
 	var $zip;
 	var $town;
 
-	var $fk_departement;		// deprecated
-	var $departement_code;		// deprecated
-	var $departement;			// deprecated
+	/**
+	 * @deprecated
+	 * @see state_id
+	 */
+	var $fk_departement;
+	/**
+	 * @deprecated
+	 * @see state_code
+	 */
+	var $departement_code;
+	/**
+	 * @deprecated
+	 * @see state
+	 */
+	var $departement;
 	var $state_id;	        	// Id of department
 	var $state_code;		    // Code of department
 	var $state;			        // Label of department
@@ -80,7 +92,11 @@ class Contact extends CommonObject
 	var $birthday;
 	var $default_lang;
     var $note_public;           // Public note
-	var $note;                  // deprecated
+	/**
+	 * @deprecated
+	 * @see note_public, note_private
+	 */
+	var $note;
 	var $note_private;			// Private note
     var $no_email;				// 1=Don't send e-mail to this contact, 0=do
 
@@ -629,6 +645,13 @@ class Contact extends CommonObject
 					}
 				}
 
+				// Retreive all extrafield for contact
+                // fetch optionals attributes and labels
+                require_once(DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php');
+                $extrafields=new ExtraFields($this->db);
+                $extralabels=$extrafields->fetch_name_optionals_label($this->table_element,true);
+               	$this->fetch_optionals($this->id,$extralabels);
+
 				return 1;
 			}
 			else
@@ -895,6 +918,11 @@ class Contact extends CommonObject
 		$result='';
         $label = '<u>' . $langs->trans("ShowContact") . '</u>';
         $label.= '<br><b>' . $langs->trans("Name") . ':</b> '.$this->getFullName($langs);
+        //if ($this->cibility_id) $label.= '<br><b>' . $langs->trans("Civility") . ':</b> '.$this->civility_id;		// TODO Translate cibilty_id code
+        $label.= '<br><b>' . $langs->trans("Poste") . ':</b> '.$this->poste;
+        $label.= '<br><b>' . $langs->trans("EMail") . ':</b> '.$this->email;
+        $label.= '<br><b>' . $langs->trans("Phone") . ':</b> '.join(', ',array($this->phone_pro,$this->phone_mobile,$this->phone_perso));
+        $label.= '<br><b>' . $langs->trans("Address") . ':</b> '.dol_format_address($this, 1, ' ', $langs);
 
         $link = '<a href="'.DOL_URL_ROOT.'/contact/card.php?id='.$this->id.$moreparam.'" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">';
 		$linkend='</a>';
@@ -1101,4 +1129,4 @@ class Contact extends CommonObject
 
 		return CommonObject::commonReplaceThirdparty($db, $origin_id, $dest_id, $tables);
 	}
-}
\ No newline at end of file
+}
diff --git a/htdocs/contact/document.php b/htdocs/contact/document.php
index 2241a1e67f1fe284d6d172335628bd90ecd7fadc..9a5ab3b0f0761d42054e5bc063125bd0dcd0168a 100644
--- a/htdocs/contact/document.php
+++ b/htdocs/contact/document.php
@@ -80,8 +80,9 @@ llxHeader("",$langs->trans("Contact"), $helpurl);
 if ($object->id)
 {
     $head = contact_prepare_head($object);
+	$title = (! empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("Contacts") : $langs->trans("ContactsAddresses"));
 
-    dol_fiche_head($head, 'documents',  $langs->trans("Contact"), 0, 'contact');
+    dol_fiche_head($head, 'documents', $title, 0, 'contact');
 
 
     // Construit liste des fichiers
diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php
index 72eee453c9fbb348058fa5cb0c300b951c032a33..11d46ad3fc470e139cc46acb0b8557300ee7a3a8 100644
--- a/htdocs/contact/list.php
+++ b/htdocs/contact/list.php
@@ -159,7 +159,7 @@ else
 	if ($search_priv == '1') $sql .= " AND (p.priv='1' AND p.fk_user_creat=".$user->id.")";
 }
 
-if ($search_categ > 0)   $sql.= " AND cs.fk_categorie = ".$search_categ;
+if ($search_categ > 0)   $sql.= " AND cs.fk_categorie = ".$db->escape($search_categ);
 if ($search_categ == -2) $sql.= " AND cs.fk_categorie IS NULL";
 
 if ($search_firstlast_only) {
@@ -256,11 +256,11 @@ if ($result)
 {
 	$contactstatic=new Contact($db);
 
-    $param ='&begin='.urlencode($begin).'&view='.urlencode($view).'&userid='.urlencode($userid).'&contactname='.urlencode($sall);
-    $param.='&type='.urlencode($type).'&view='.urlencode($view).'&search_lastname='.urlencode($search_lastname).'&search_firstname='.urlencode($search_firstname).'&search_societe='.urlencode($search_societe).'&search_email='.urlencode($search_email);
-    if (!empty($search_categ)) $param.='&search_categ='.$search_categ;
-    if ($search_status != '') $param.='&amp;search_status='.$search_status;
-    if ($search_priv == '0' || $search_priv == '1') $param.="&search_priv=".urlencode($search_priv);
+    $param ='&begin='.htmlspecialchars($begin).'&view='.htmlspecialchars($view).'&userid='.htmlspecialchars($userid).'&contactname='.htmlspecialchars($sall);
+    $param.='&type='.htmlspecialchars($type).'&view='.htmlspecialchars($view).'&search_lastname='.htmlspecialchars($search_lastname).'&search_firstname='.htmlspecialchars($search_firstname).'&search_societe='.htmlspecialchars($search_societe).'&search_email='.htmlspecialchars($search_email);
+    if (!empty($search_categ)) $param.='&search_categ='.htmlspecialchars($search_categ);
+    if ($search_status != '') $param.='&amp;search_status='.htmlspecialchars($search_status);
+    if ($search_priv == '0' || $search_priv == '1') $param.="&search_priv=".htmlspecialchars($search_priv);
 
 	$num = $db->num_rows($result);
     $i = 0;
@@ -269,7 +269,7 @@ if ($result)
 
     print '<form method="post" action="'.$_SERVER["PHP_SELF"].'">';
     print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
-    print '<input type="hidden" name="view" value="'.$view.'">';
+    print '<input type="hidden" name="view" value="'.htmlspecialchars($view).'">';
     print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
     print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
 
@@ -317,36 +317,36 @@ if ($result)
     // Ligne des champs de filtres
     print '<tr class="liste_titre">';
     print '<td class="liste_titre">';
-    print '<input class="flat" type="text" name="search_lastname" size="9" value="'.$search_lastname.'">';
+    print '<input class="flat" type="text" name="search_lastname" size="9" value="'.dol_escape_htmltag($search_lastname).'">';
     print '</td>';
     print '<td class="liste_titre">';
-    print '<input class="flat" type="text" name="search_firstname" size="9" value="'.$search_firstname.'">';
+    print '<input class="flat" type="text" name="search_firstname" size="9" value="'.dol_escape_htmltag($search_firstname).'">';
     print '</td>';
     print '<td class="liste_titre">';
-    print '<input class="flat" type="text" name="search_poste" size="9" value="'.$search_poste.'">';
+    print '<input class="flat" type="text" name="search_poste" size="9" value="'.dol_escape_htmltag($search_poste).'">';
     print '</td>';
     if (empty($conf->global->SOCIETE_DISABLE_CONTACTS))
     {
         print '<td class="liste_titre">';
-        print '<input class="flat" type="text" name="search_societe" size="9" value="'.$search_societe.'">';
+        print '<input class="flat" type="text" name="search_societe" size="9" value="'.dol_escape_htmltag($search_societe).'">';
         print '</td>';
     }
     print '<td class="liste_titre">';
-    print '<input class="flat" type="text" name="search_phonepro" size="8" value="'.$search_phonepro.'">';
+    print '<input class="flat" type="text" name="search_phonepro" size="8" value="'.dol_escape_htmltag($search_phonepro).'">';
     print '</td>';
     print '<td class="liste_titre">';
-    print '<input class="flat" type="text" name="search_phonemob" size="8" value="'.$search_phonemob.'">';
+    print '<input class="flat" type="text" name="search_phonemob" size="8" value="'.dol_escape_htmltag($search_phonemob).'">';
     print '</td>';
     print '<td class="liste_titre">';
-    print '<input class="flat" type="text" name="search_fax" size="8" value="'.$search_fax.'">';
+    print '<input class="flat" type="text" name="search_fax" size="8" value="'.dol_escape_htmltag($search_fax).'">';
     print '</td>';
     print '<td class="liste_titre">';
-    print '<input class="flat" type="text" name="search_email" size="8" value="'.$search_email.'">';
+    print '<input class="flat" type="text" name="search_email" size="8" value="'.dol_escape_htmltag($search_email).'">';
     print '</td>';
     if (! empty($conf->skype->enabled))
     {
         print '<td class="liste_titre">';
-        print '<input class="flat" type="text" name="search_skype" size="8" value="'.$search_skype.'">';
+        print '<input class="flat" type="text" name="search_skype" size="8" value="'.dol_escape_htmltag($search_skype).'">';
         print '</td>';
     }
 	print '<td class="liste_titre">&nbsp;</td>';
diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php
index dd48b27684f4848e1e3cc3b94664daa027ffd8f9..6bf7dcaeacc0c08f7a70862cd714c681da09907b 100644
--- a/htdocs/contrat/card.php
+++ b/htdocs/contrat/card.php
@@ -823,10 +823,8 @@ else if ($action == 'remove_file' && $user->rights->contrat->creer) {
 		$upload_dir = $conf->contrat->dir_output;
 		$file = $upload_dir . '/' . GETPOST('file');
 		$ret = dol_delete_file($file, 0, 0, 0, $object);
-		if ($ret)
-			setEventMessage($langs->trans("FileWasRemoved", GETPOST('file')));
-		else
-			setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('file')), 'errors');
+		if ($ret) setEventMessage($langs->trans("FileWasRemoved", GETPOST('file')));
+		else setEventMessage($langs->trans("ErrorFailToDeleteFile", GETPOST('file')), 'errors');
 	}
 }
 
@@ -1873,10 +1871,13 @@ else
 
         $somethingshown = $formfile->show_documents('contract', $filename, $filedir, $urlsource, $genallowed, $delallowed, $object->modelpdf, 1, 0, 0, 28, 0, '', 0, '', $soc->default_lang);
 
-        /*
-         * Linked object block
-         */
-        $somethingshown=$object->showLinkedObjectBlock();
+		// Linked object block
+		$somethingshown = $form->showLinkedObjectBlock($object);
+
+		// Show links to link elements
+		$linktoelem = $form->showLinkToObjectBlock($object);
+		if ($linktoelem) print '<br>'.$linktoelem;
+
 
         print '</div><div class="fichehalfright"><div class="ficheaddleft">';
 
diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php
index 08bc8387387985648e621865448385ba5872166e..fb0038b509f49cbaecad4abf6ae4cb94a07525ec 100644
--- a/htdocs/contrat/class/contrat.class.php
+++ b/htdocs/contrat/class/contrat.class.php
@@ -154,6 +154,7 @@ class Contrat extends CommonObject
 
 	/**
 	 * @deprecated Use fk_project instead
+	 * @see fk_project
 	 */
 	var $fk_projet;
 
@@ -1642,6 +1643,8 @@ class Contrat extends CommonObject
 	 */
 	function update_statut($user)
 	{
+		dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING);
+
 		// If draft, we keep it (should not happen)
 		if ($this->statut == 0) return 1;
 
@@ -2165,6 +2168,7 @@ class ContratLigne extends CommonObjectLine
 	/**
 	 * @var string
 	 * @deprecated Use $label instead
+	 * @see label
 	 */
 	public $libelle;
 
@@ -2189,6 +2193,7 @@ class ContratLigne extends CommonObjectLine
 	/**
 	 * @var float
 	 * @deprecated Use $price_ht instead
+	 * @see price_ht
 	 */
 	public $price;
 
diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php
index 25b5d80fa983889a0afa96b3718596c34f802bdc..669f2b097757bc55a8c89a3520c8045171432db9 100644
--- a/htdocs/contrat/list.php
+++ b/htdocs/contrat/list.php
@@ -100,7 +100,8 @@ $sql.= ", ".MAIN_DB_PREFIX."contrat as c";
 $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."contratdet as cd ON c.rowid = cd.fk_contrat";
 $sql.= " WHERE c.fk_soc = s.rowid ";
 $sql.= " AND c.entity = ".$conf->entity;
-if ($socid) $sql.= " AND s.rowid = ".$socid;
+if ($socid) $sql.= " AND s.rowid = ".$db->escape($socid);
+if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
 
 if ($search_name) {
     $sql .= natural_search('s.nom', $search_name);
@@ -112,7 +113,7 @@ if (!empty($search_ref_supplier)) {
 	$sql .= natural_search(array('c.ref_supplier'), $search_ref_supplier);
 }
 
-if ($search_sale > 0) 
+if ($search_sale > 0)
 {
 	$sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$search_sale;
 }
@@ -131,7 +132,7 @@ if ($resql)
     $i = 0;
 
     print_barre_liste($langs->trans("ListOfContracts"), $page, $_SERVER["PHP_SELF"], '&search_contract='.$search_contract.'&search_name='.$search_name, $sortfield, $sortorder,'',$num,$totalnboflines,'title_commercial.png');
-    
+
     print '<form method="POST" action="'.$_SERVER['PHP_SELF'].'">';
     print '<table class="liste" width="100%">';
 
@@ -144,7 +145,7 @@ if ($resql)
     	$moreforfilter.=$formother->select_salesrepresentatives($search_sale,'search_sale',$user);
     	$moreforfilter.=' &nbsp; &nbsp; &nbsp; ';
     }
-    
+
     if ($moreforfilter)
     {
     	print '<tr class="liste_titre">';
@@ -152,13 +153,14 @@ if ($resql)
     	print $moreforfilter;
     	print '</td></tr>';
     }
-    
+
     print '<tr class="liste_titre">';
-    $param='&amp;search_contract='.$search_contract;
-    $param.='&amp;search_name='.$search_name;
-    $param.='&amp;search_ref_supplier='.$search_ref_supplier;
+
+    $param='&search_contract='.$search_contract;
+    $param.='&search_name='.$search_name;
+    $param.='&search_ref_supplier='.$search_ref_supplier;
     $param.='&search_sale=' .$search_sale;
-    
+
     print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"], "c.rowid","","$param",'',$sortfield,$sortorder);
     print_liste_field_titre($langs->trans("RefCustomer"), $_SERVER["PHP_SELF"], "c.ref_supplier","","$param",'',$sortfield,$sortorder);
     print_liste_field_titre($langs->trans("Company"), $_SERVER["PHP_SELF"], "s.nom","","$param",'',$sortfield,$sortorder);
@@ -175,13 +177,13 @@ if ($resql)
     print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
     print '<tr class="liste_titre">';
     print '<td class="liste_titre">';
-    print '<input type="text" class="flat" size="3" name="search_contract" value="'.$search_contract.'">';
+    print '<input type="text" class="flat" size="3" name="search_contract" value="'.dol_escape_htmltag($search_contract).'">';
     print '</td>';
     print '<td class="liste_titre">';
-    print '<input type="text" class="flat" size="7" name="search_ref_supplier value="'.$search_ref_supplier.'">';
+    print '<input type="text" class="flat" size="7" name="search_ref_supplier value="'.dol_escape_htmltag($search_ref_supplier).'">';
     print '</td>';
     print '<td class="liste_titre">';
-    print '<input type="text" class="flat" size="24" name="search_name" value="'.$search_name.'">';
+    print '<input type="text" class="flat" size="24" name="search_name" value="'.dol_escape_htmltag($search_name).'">';
     print '</td>';
     print '<td class="liste_titre">&nbsp;</td>';
     //print '<td class="liste_titre">&nbsp;</td>';
@@ -202,7 +204,7 @@ if ($resql)
         print '<td>'.$obj->ref_supplier.'</td>';
         print '<td><a href="../comm/card.php?socid='.$obj->socid.'">'.img_object($langs->trans("ShowCompany"),"company").' '.$obj->name.'</a></td>';
         //print '<td align="center">'.dol_print_date($obj->datec).'</td>';
-        
+
         // Sales Rapresentatives
         print '<td>';
         if($obj->socid)
@@ -237,8 +239,8 @@ if ($resql)
         	print '&nbsp';
         }
         print '</td>';
-        
-        
+
+
         print '<td align="center">'.dol_print_date($db->jdate($obj->date_contrat)).'</td>';
         //print '<td align="center">'.$staticcontrat->LibStatut($obj->statut,3).'</td>';
         print '<td align="center">'.($obj->nb_initial>0?$obj->nb_initial:'').'</td>';
diff --git a/htdocs/core/actions_extrafields.inc.php b/htdocs/core/actions_extrafields.inc.php
index 03d724b9bba4c67fa91a8e3954d08adb611c318e..4c5f0b512d24d24271ca45d8c064261a12dd6a7c 100644
--- a/htdocs/core/actions_extrafields.inc.php
+++ b/htdocs/core/actions_extrafields.inc.php
@@ -1,5 +1,5 @@
 <?php
-/* Copyright (C) 2011-2012 Laurent Destailleur  <eldy@users.sourceforge.net>
+/* Copyright (C) 2011-2015 Laurent Destailleur  <eldy@users.sourceforge.net>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -148,7 +148,21 @@ if ($action == 'add')
     				}
     			}
 
-                $result=$extrafields->addExtraField($_POST['attrname'],$_POST['label'],$_POST['type'],$_POST['pos'],$extrasize,$elementtype,(GETPOST('unique')?1:0),(GETPOST('required')?1:0),$default_value,$params,(GETPOST('alwayseditable')?1:0));
+                $result=$extrafields->addExtraField(
+                	GETPOST('attrname'),
+                	GETPOST('label'),
+                	GETPOST('type'),
+                	GETPOST('pos'),
+                	$extrasize,
+                	$elementtype,
+                	(GETPOST('unique')?1:0),
+                	(GETPOST('required')?1:0),
+                	$default_value,
+                	$params,
+                	(GETPOST('alwayseditable')?1:0),
+                	(GETPOST('perms')?GETPOST('perms'):''),
+                	(GETPOST('list')?1:0)
+                );
     			if ($result > 0)
     			{
     				setEventMessage($langs->trans('SetupSaved'));
@@ -285,7 +299,20 @@ if ($action == 'update')
     					$params['options'][$key] = $value;
     				}
     			}
-    			$result=$extrafields->update($_POST['attrname'],$_POST['label'],$_POST['type'],$extrasize,$elementtype,(GETPOST('unique')?1:0),(GETPOST('required')?1:0),$pos,$params,(GETPOST('alwayseditable')?1:0));
+    			$result=$extrafields->update(
+    				GETPOST('attrname'),
+    				GETPOST('label'),
+    				GETPOST('type'),
+    				$extrasize,
+    				$elementtype,
+    				(GETPOST('unique')?1:0),
+    				(GETPOST('required')?1:0),
+    				$pos,
+    				$params,
+    				(GETPOST('alwayseditable')?1:0),
+    				(GETPOST('perms')?GETPOST('perms'):''),
+                	(GETPOST('list')?1:0)
+    			);
     			if ($result > 0)
     			{
     				setEventMessage($langs->trans('SetupSaved'));
diff --git a/htdocs/core/class/CMailFile.class.php b/htdocs/core/class/CMailFile.class.php
index 6e41384dbce9fd856019ba63a7ddf9e5d6aa8c98..1aadc47b79ee190a46d8d9bd4c7677a47fa0173d 100644
--- a/htdocs/core/class/CMailFile.class.php
+++ b/htdocs/core/class/CMailFile.class.php
@@ -37,7 +37,7 @@
 class CMailFile
 {
 	var $subject;      	// Topic:       Subject of email
-	var $addr_from;    	// From:		Label and EMail of sender (must include '<>'). For example '<myemail@mydomain.com>' or 'John Doe <myemail@mydomain.com>' or '<myemail+trackingid@mydomain.com>')
+	var $addr_from;    	// From:		Label and EMail of sender (must include '<>'). For example '<myemail@example.com>' or 'John Doe <myemail@example.com>' or '<myemail+trackingid@example.com>')
 	                   	// Sender:      Who send the email ("Sender" has sent emails on behalf of "From").
 	                   	//              Use it when the "From" is an email of a domain that is a SPF protected domain, and sending smtp server is not this domain. In such case, use for Sender an email of the protected domain.
 	                   	// Return-Path: Email where to send bounds.
@@ -387,7 +387,7 @@ class CMailFile
 				// If Windows, sendmail_from must be defined
 				if (isset($_SERVER["WINDIR"]))
 				{
-					if (empty($this->addr_from)) $this->addr_from = 'robot@mydomain.com';
+					if (empty($this->addr_from)) $this->addr_from = 'robot@example.com';
 					@ini_set('sendmail_from',$this->getValidAddress($this->addr_from,2));
 				}
 
diff --git a/htdocs/core/class/commondocgenerator.class.php b/htdocs/core/class/commondocgenerator.class.php
index 22a33f4d2a8f0a9f59500d2cc85117a5356f9b9f..d0730149b36217159e0e759ef0185db1c0d5e296 100644
--- a/htdocs/core/class/commondocgenerator.class.php
+++ b/htdocs/core/class/commondocgenerator.class.php
@@ -118,6 +118,7 @@ abstract class CommonDocGenerator
             'mycompany_idprof5'=>$mysoc->idprof5,
             'mycompany_idprof6'=>$mysoc->idprof6,
         	'mycompany_vatnumber'=>$mysoc->tva_intra,
+			'mycompany_object'=>$mysoc->object,
         	// Only private not exists for "mysoc"
             'mycompany_note_private'=>$mysoc->note_private,
 
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index 0bd0625ee5d997041a6b02065f7b3edd794b1388..8ae7332fc6ea5c4e1f408de1662e5f5928f4812a 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -7,7 +7,7 @@
  * Copyright (C) 2012-2013 Christophe Battarel  <christophe.battarel@altairis.fr>
  * Copyright (C) 2011-2014 Philippe Grand	    <philippe.grand@atoo-net.com>
  * Copyright (C) 2012-2015 Marcos García        <marcosgdf@gmail.com>
- * Copyright (C) 2012-2014 Raphaël Doursenaud   <rdoursenaud@gpcsolutions.fr>
+ * Copyright (C) 2012-2015 Raphaël Doursenaud   <rdoursenaud@gpcsolutions.fr>
  * Copyright (C) 2012      Cedric Salvador      <csalvador@gpcsolutions.fr>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -44,6 +44,7 @@ abstract class CommonObject
     /**
      * @var string 		Error string
      * @deprecated		Use instead the array of error strings
+     * @see             errors
      */
     public $error;
 
@@ -82,7 +83,7 @@ abstract class CommonObject
     public $errors=array();
 
     /**
-     * @var string		Can be used to pass information when only object is provided to method
+     * @var string[]	Can be used to pass information when only object is provided to method
      */
     public $context=array();
 
@@ -96,7 +97,24 @@ abstract class CommonObject
     public $lastname;
     public $firstname;
     public $civility_id;
+	/**
+	 * @deprecated
+	 * @see thirdparty
+	 */
+	public $client;
+	/**
+	 * @var Societe
+	 */
     public $thirdparty;
+	/**
+	 * @deprecated
+	 * @see project
+	 */
+	public $projet;
+	/**
+	 * @var Project
+	 */
+	public $project;
 
     // No constructor as it is an abstract class
 
@@ -113,13 +131,15 @@ abstract class CommonObject
      */
     static function isExistingObject($element, $id, $ref='', $ref_ext='')
     {
-    	global $db;
+    	global $db,$conf;
 
 		$sql = "SELECT rowid, ref, ref_ext";
 		$sql.= " FROM ".MAIN_DB_PREFIX.$element;
-		if ($id > 0) $sql.= " WHERE rowid = ".$db->escape($id);
-		else if ($ref) $sql.= " WHERE ref = '".$db->escape($ref)."'";
-		else if ($ref_ext) $sql.= " WHERE ref_ext = '".$db->escape($ref_ext)."'";
+		$sql.= " WHERE entity IN (".getEntity($element).")" ;
+
+		if ($id > 0) $sql.= " AND rowid = ".$db->escape($id);
+		else if ($ref) $sql.= " AND ref = '".$db->escape($ref)."'";
+		else if ($ref_ext) $sql.= " AND ref_ext = '".$db->escape($ref_ext)."'";
 		else {
 			$error='ErrorWrongParameters';
 			dol_print_error(get_class()."::isExistingObject ".$error, LOG_ERR);
@@ -525,9 +545,9 @@ abstract class CommonObject
      *      Return array with list of possible values for type of contacts
      *
      *      @param	string	$source     'internal', 'external' or 'all'
-     *      @param	string	$order		Sort order by : 'code' or 'rowid'
-     *      @param  string	$option     0=Return array id->label, 1=Return array code->label
-     *      @param  string	$activeonly 0=all status of contact, 1=only the active
+     *      @param	string	$order		Sort order by 'code' or 'rowid'
+     *      @param  int		$option     0=Return array id->label, 1=Return array code->label
+     *      @param  int		$activeonly 0=all status of contact, 1=only the active
      *		@param	string	$code		Type of contact (Example: 'CUSTOMER', 'SERVICE')
      *      @return array       		Array list of type of contacts (id->label if option=0, code->label if option=1)
      */
@@ -541,7 +561,7 @@ abstract class CommonObject
         $sql = "SELECT DISTINCT tc.rowid, tc.code, tc.libelle";
         $sql.= " FROM ".MAIN_DB_PREFIX."c_type_contact as tc";
         $sql.= " WHERE tc.element='".$this->element."'";
-        if ($activeonly == 1) $sql.= " AND tc.active=1"; // only the active type
+        if ($activeonly == 1) $sql.= " AND tc.active=1"; // only the active types
         if (! empty($source) && $source != 'all') $sql.= " AND tc.source='".$source."'";
         if (! empty($code)) $sql.= " AND tc.code='".$code."'";
         $sql.= " ORDER by tc.".$order;
@@ -626,12 +646,12 @@ abstract class CommonObject
     }
 
     /**
-     *		Charge le contact d'id $id dans this->contact
+     *		Load object contact with id=$this->contactid into $this->contact
      *
      *		@param	int		$contactid      Id du contact. Use this->contactid if empty.
      *		@return	int						<0 if KO, >0 if OK
      */
-    function fetch_contact($contactid='')
+    function fetch_contact($contactid=null)
     {
     	if (empty($contactid)) $contactid=$this->contactid;
 
@@ -759,10 +779,14 @@ abstract class CommonObject
      */
     function fetch_projet()
     {
+    	include_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
+
+    	if (empty($this->fk_project) && ! empty($this->fk_projet)) $this->fk_project = $this->fk_projet;	// For backward compatibility
         if (empty($this->fk_project)) return 0;
 
         $project = new Project($this->db);
         $result = $project->fetch($this->fk_project);
+
         $this->projet = $project;	// deprecated
         $this->project = $project;
         return $result;
@@ -858,14 +882,14 @@ abstract class CommonObject
     /**
      *	Update a specific field into database
      *
-     *	@param	string	$field		Field to update
-     *	@param	mixed	$value		New value
-     *	@param	string	$table		To force other table element or element line (should not be used)
-     *	@param	int		$id			To force other object id (should not be used)
-     *	@param	string	$format		Data format ('text', 'date'). 'text' is used if not defined
-     *	@param	string	$id_field	To force rowid field name. 'rowid' is used it not defined
-     *	@param	string	$user		Update last update fields also if user object provided
-     *	@return	int					<0 if KO, >0 if OK
+     *	@param	string		$field		Field to update
+     *	@param	mixed		$value		New value
+     *	@param	string		$table		To force other table element or element line (should not be used)
+     *	@param	int			$id			To force other object id (should not be used)
+     *	@param	string		$format		Data format ('text', 'date'). 'text' is used if not defined
+     *	@param	string		$id_field	To force rowid field name. 'rowid' is used it not defined
+     *	@param	User|string	$user		Update last update fields also if user object provided
+     *	@return	int						<0 if KO, >0 if OK
      */
     function setValueFrom($field, $value, $table='', $id='', $format='', $id_field='', $user='')
     {
@@ -1639,9 +1663,10 @@ abstract class CommonObject
     /**
      * 	Update public note (kept for backward compatibility)
      *
-     *  @param      string		$note		New value for note
-     *  @return     int      		   		<0 if KO, >0 if OK
-     *  @deprecated
+     * @param      string		$note		New value for note
+     * @return     int      		   		<0 if KO, >0 if OK
+     * @deprecated
+     * @see update_note()
      */
     function update_note_public($note)
     {
@@ -1655,10 +1680,10 @@ abstract class CommonObject
      *	@param	int		$exclspec          	>0 = Exclude special product (product_type=9)
      *  @param  string	$roundingadjust    	'none'=Do nothing, 'auto'=Use default method (MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND if defined, or '0'), '0'=Force use total of rounding, '1'=Force use rounding of total
      *  @param	int		$nodatabaseupdate	1=Do not update database. Update only properties of object.
-     *  @param	Societe	$seller				If roundingadjust is '0' or '1', it means we recalculate total for lines before calculating total for object. For this, we need seller object.
+     *  @param	Societe	$seller				If roundingadjust is '0' or '1', it means we recalculate total for lines before calculating total for object and for this, we need seller object.
      *	@return	int    			           	<0 if KO, >0 if OK
      */
-    function update_price($exclspec=0,$roundingadjust='none',$nodatabaseupdate=0,$seller='')
+    function update_price($exclspec=0,$roundingadjust='none',$nodatabaseupdate=0,$seller=null)
     {
     	global $conf;
 
@@ -2555,88 +2580,19 @@ abstract class CommonObject
     // TODO: All functions here must be redesigned and moved as they are not business functions but output functions
     // --------------------
 
-    /* This is to show linked object block */
-
     /**
-     *  Show linked object block
-     *  TODO Move this into html.class.php
-     *  But for the moment we don't know if it's possible as we keep a method available on overloaded objects.
+     *  Show linked object block.
      *
-     *  @return	int
+     *  @return		int		<0 if KO, >0 if OK
+     *  @deprecated 3.8 Use instead $form->shoLinkedObjectBlock($object)
      */
     function showLinkedObjectBlock()
     {
-        global $conf,$langs,$hookmanager;
-        global $bc;
-
-        $this->fetchObjectLinked();
-
-        // Bypass the default method
-        $hookmanager->initHooks(array('commonobject'));
-        $parameters=array();
-        $reshook=$hookmanager->executeHooks('showLinkedObjectBlock',$parameters,$this,$action);    // Note that $action and $object may have been modified by hook
-
-        if (empty($reshook))
-        {
-        	$num = count($this->linkedObjects);
-
-        	foreach($this->linkedObjects as $objecttype => $objects)
-        	{
-        		$tplpath = $element = $subelement = $objecttype;
-
-        		if (preg_match('/^([^_]+)_([^_]+)/i',$objecttype,$regs))
-        		{
-        			$element = $regs[1];
-        			$subelement = $regs[2];
-        			$tplpath = $element.'/'.$subelement;
-        		}
-
-        		// To work with non standard path
-        		if ($objecttype == 'facture')          {
-        			$tplpath = 'compta/'.$element;
-        			if (empty($conf->facture->enabled)) continue;	// Do not show if module disabled
-        		}
-        		else if ($objecttype == 'propal')           {
-        			$tplpath = 'comm/'.$element;
-        			if (empty($conf->propal->enabled)) continue;	// Do not show if module disabled
-        		}
-        		else if ($objecttype == 'askpricesupplier')           {
-        			$tplpath = 'comm/'.$element;
-        			if (empty($conf->askpricesupplier->enabled)) continue;	// Do not show if module disabled
-        		}
-        		else if ($objecttype == 'shipping' || $objecttype == 'shipment') {
-        			$tplpath = 'expedition';
-        			if (empty($conf->expedition->enabled)) continue;	// Do not show if module disabled
-        		}
-        		else if ($objecttype == 'delivery')         {
-        			$tplpath = 'livraison';
-        			if (empty($conf->expedition->enabled)) continue;	// Do not show if module disabled
-        		}
-        		else if ($objecttype == 'invoice_supplier') {
-        			$tplpath = 'fourn/facture';
-        		}
-        		else if ($objecttype == 'order_supplier')   {
-        			$tplpath = 'fourn/commande';
-        		}
-
-        		global $linkedObjectBlock;
-        		$linkedObjectBlock = $objects;
-
-        		// Output template part (modules that overwrite templates must declare this into descriptor)
-        		$dirtpls=array_merge($conf->modules_parts['tpl'],array('/'.$tplpath.'/tpl'));
-        		foreach($dirtpls as $reldir)
-        		{
-        			$res=@include dol_buildpath($reldir.'/linkedobjectblock.tpl.php');
-        			if ($res) break;
-        		}
-        	}
-
-        	return $num;
-        }
+    	global $form;
+    	return $form->showLinkedObjectBlock($this);
     }
 
 
-
     /* This is to show add lines */
 
     /**
@@ -2684,9 +2640,9 @@ abstract class CommonObject
 	 *	But for the moment we don't know if it'st possible as we keep a method available on overloaded objects.
 	 *
 	 *	@param	string		$action				Action code
-	 *	@param  string		$seller            	Object of seller third party
-	 *	@param  string  	$buyer             	Object of buyer third party
-	 *	@param	string		$selected		   	Object line selected
+	 *	@param  Societe		$seller            	Object of seller third party
+	 *	@param  Societe  	$buyer             	Object of buyer third party
+	 *	@param	int			$selected		   	Object line selected
 	 *	@param  int	    	$dateSelector      	1=Show also date range input fields
 	 *	@return	void
 	 */
@@ -2799,16 +2755,16 @@ abstract class CommonObject
 	 *	Return HTML content of a detail line
 	 *	TODO Move this into an output class file (htmlline.class.php)
 	 *
-	 *	@param	string		$action				GET/POST action
-	 *	@param CommonObjectLine $line		       	Selected object line to output
-	 *	@param  string	    $var               	Is it a an odd line (true)
-	 *	@param  int		    $num               	Number of line (0)
-	 *	@param  int		    $i					I
-	 *	@param  int		    $dateSelector      	1=Show also date range input fields
-	 *	@param  string	    $seller            	Object of seller third party
-	 *	@param  string	    $buyer             	Object of buyer third party
-	 *	@param	string		$selected		   	Object line selected
-	 *  @param  object		$extrafieldsline	Object of extrafield line attribute
+	 *	@param	string				$action				GET/POST action
+	 *	@param 	CommonObjectLine 	$line		       	Selected object line to output
+	 *	@param  string	    		$var               	Is it a an odd line (true)
+	 *	@param  int		    		$num               	Number of line (0)
+	 *	@param  int		    		$i					I
+	 *	@param  int		    		$dateSelector      	1=Show also date range input fields
+	 *	@param  Societe	    		$seller            	Object of seller third party
+	 *	@param  Societe	    		$buyer             	Object of buyer third party
+	 *	@param	int					$selected		   	Object line selected
+	 *  @param  object				$extrafieldsline	Object of extrafield line attribute
 	 *	@return	void
 	 */
 	function printObjectLine($action,$line,$var,$num,$i,$dateSelector,$seller,$buyer,$selected=0,$extrafieldsline=0)
@@ -3083,228 +3039,24 @@ abstract class CommonObject
     }
 
 
-	/**
-	 *	get Margin info
-	 *
-	 * 	@param 	string 	$force_price	True of not
-	 * 	@return mixed					Array with info
-	 */
-	function getMarginInfos($force_price=false)
-	{
-		global $conf;
-		require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php';
-
-		$marginInfos = array(
-				'pa_products' => 0,
-				'pv_products' => 0,
-				'margin_on_products' => 0,
-				'margin_rate_products' => '',
-				'mark_rate_products' => '',
-				'pa_services' => 0,
-				'pv_services' => 0,
-				'margin_on_services' => 0,
-				'margin_rate_services' => '',
-				'mark_rate_services' => '',
-				'pa_total' => 0,
-				'pv_total' => 0,
-				'total_margin' => 0,
-				'total_margin_rate' => '',
-				'total_mark_rate' => ''
-		);
-
-		foreach($this->lines as $line) {
-			if (empty($line->pa_ht) && isset($line->fk_fournprice) && !$force_price) {
-				$product = new ProductFournisseur($this->db);
-				if ($product->fetch_product_fournisseur_price($line->fk_fournprice))
-					$line->pa_ht = $product->fourn_unitprice * (1 - $product->fourn_remise_percent / 100);
-				if (isset($conf->global->MARGIN_TYPE) && $conf->global->MARGIN_TYPE == "2" && $product->fourn_unitcharges > 0)
-					$line->pa_ht += $product->fourn_unitcharges;
-			}
-			// si prix d'achat non renseigné et devrait l'être, alors prix achat = prix vente
-			if ((!isset($line->pa_ht) || $line->pa_ht == 0) && $line->subprice > 0 && (isset($conf->global->ForceBuyingPriceIfNull) && $conf->global->ForceBuyingPriceIfNull == 1)) {
-				$line->pa_ht = $line->subprice * (1 - ($line->remise_percent / 100));
-			}
-
-			// calcul des marges
-			if (isset($line->fk_remise_except) && isset($conf->global->MARGIN_METHODE_FOR_DISCOUNT)) {    // remise
-			    $pa = $line->qty * $line->pa_ht;
-			    $pv = $line->qty * $line->subprice * (1 - $line->remise_percent / 100);
-				if ($conf->global->MARGIN_METHODE_FOR_DISCOUNT == '1') { // remise globale considérée comme produit
-					$marginInfos['pa_products'] += $pa;
-					$marginInfos['pv_products'] += $pv;
-					$marginInfos['pa_total'] +=  $pa;
-					$marginInfos['pv_total'] +=  $pv;
-					// if credit note, margin = -1 * (abs(selling_price) - buying_price)
-					if ($pv < 0)
-						$marginInfos['margin_on_products'] += -1 * (abs($pv) - $pa);
-					else
-						$marginInfos['margin_on_products'] += $pv - $pa;
-				}
-				elseif ($conf->global->MARGIN_METHODE_FOR_DISCOUNT == '2') { // remise globale considérée comme service
-					$marginInfos['pa_services'] += $pa;
-					$marginInfos['pv_services'] += $pv;
-					$marginInfos['pa_total'] +=  $pa;
-					$marginInfos['pv_total'] +=  $pv;
-					// if credit note, margin = -1 * (abs(selling_price) - buying_price)
-					if ($pv < 0)
-						$marginInfos['margin_on_services'] += -1 * (abs($pv) - $pa);
-					else
-						$marginInfos['margin_on_services'] += $pv - $pa;
-				}
-				elseif ($conf->global->MARGIN_METHODE_FOR_DISCOUNT == '3') { // remise globale prise en compte uniqt sur total
-					$marginInfos['pa_total'] += $pa;
-					$marginInfos['pv_total'] += $pv;
-				}
-			}
-			else {
-				$type=$line->product_type?$line->product_type:$line->fk_product_type;
-				if ($type == 0) {  // product
-				    $pa = $line->qty * $line->pa_ht;
-				    $pv = $line->qty * $line->subprice * (1 - $line->remise_percent / 100);
-					$marginInfos['pa_products'] += $pa;
-					$marginInfos['pv_products'] += $pv;
-					$marginInfos['pa_total'] +=  $pa;
-					$marginInfos['pv_total'] +=  $pv;
-					// if credit note, margin = -1 * (abs(selling_price) - buying_price)
-					if ($pv < 0)
-						$marginInfos['margin_on_products'] += -1 * (abs($pv) - $pa);
-					else
-						$marginInfos['margin_on_products'] += $pv - $pa;
-				}
-				elseif ($type == 1) {  // service
-				    $pa = $line->qty * $line->pa_ht;
-				    $pv = $line->qty * $line->subprice * (1 - $line->remise_percent / 100);
-					$marginInfos['pa_services'] += $pa;
-					$marginInfos['pv_services'] += $pv;
-					$marginInfos['pa_total'] +=  $pa;
-					$marginInfos['pv_total'] +=  $pv;
-					// if credit note, margin = -1 * (abs(selling_price) - buying_price)
-					if ($pv < 0)
-						$marginInfos['margin_on_services'] += -1 * (abs($pv) - $pa);
-					else
-						$marginInfos['margin_on_services'] += $pv - $pa;
-				}
-			}
-		}
-		if ($marginInfos['pa_products'] > 0)
-			$marginInfos['margin_rate_products'] = 100 * $marginInfos['margin_on_products'] / $marginInfos['pa_products'];
-		if ($marginInfos['pv_products'] > 0)
-			$marginInfos['mark_rate_products'] = 100 * $marginInfos['margin_on_products'] / $marginInfos['pv_products'];
-
-		if ($marginInfos['pa_services'] > 0)
-			$marginInfos['margin_rate_services'] = 100 * $marginInfos['margin_on_services'] / $marginInfos['pa_services'];
-		if ($marginInfos['pv_services'] > 0)
-			$marginInfos['mark_rate_services'] = 100 * $marginInfos['margin_on_services'] / $marginInfos['pv_services'];
-
-		// if credit note, margin = -1 * (abs(selling_price) - buying_price)
-		if ($marginInfos['pv_total'] < 0)
-			$marginInfos['total_margin'] = -1 * (abs($marginInfos['pv_total']) - $marginInfos['pa_total']);
-		else
-			$marginInfos['total_margin'] = $marginInfos['pv_total'] - $marginInfos['pa_total'];
-		if ($marginInfos['pa_total'] > 0)
-			$marginInfos['total_margin_rate'] = 100 * $marginInfos['total_margin'] / $marginInfos['pa_total'];
-		if ($marginInfos['pv_total'] > 0)
-			$marginInfos['total_mark_rate'] = 100 * $marginInfos['total_margin'] / $marginInfos['pv_total'];
-
-		return $marginInfos;
-	}
-
 	/**
 	 * Show the array with all margin infos
 	 *
-	 * @param 	string 	$force_price	Force price
-	 * @return	void
+	 * @param 		boolean	$force_price	Force price
+	 * @return		void
+	 * @deprecated	3.8 Load FormMargin class and make a direct call to displayMarginInfos
 	 */
 	function displayMarginInfos($force_price=false)
 	{
-		global $langs, $conf, $user;
-
-    	if (! empty($user->societe_id)) return;
-
-    	if (! $user->rights->margins->liretous) return;
-
-        $rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT, $conf->global->MAIN_MAX_DECIMALS_TOT);
-
-		$marginInfo = $this->getMarginInfos($force_price);
-
-		if (! empty($conf->global->MARGIN_ADD_SHOWHIDE_BUTTON))	// TODO Warning this feature rely on an external js file that may be removed. Using native js function document.cookie should be better
-		{
-			print $langs->trans('ShowMarginInfos').' : ';
-	        $hidemargininfos = $_COOKIE['DOLUSER_MARGININFO_HIDE_SHOW'];
-	    	print '<span id="showMarginInfos" class="linkobject '.(!empty($hidemargininfos)?'':'hideobject').'">'.img_picto($langs->trans("Disabled"),'switch_off').'</span>';
-	    	print '<span id="hideMarginInfos" class="linkobject '.(!empty($hidemargininfos)?'hideobject':'').'">'.img_picto($langs->trans("Enabled"),'switch_on').'</span>';
-
-    	    print '<script>$(document).ready(function() {
-        	    $("span#showMarginInfos").click(function() { $.getScript( "'.dol_buildpath('/includes/jquery/plugins/jquerytreeview/lib/jquery.cookie.js', 1).'", function( data, textStatus, jqxhr ) { $.cookie("DOLUSER_MARGININFO_HIDE_SHOW", 0); $(".margininfos").show(); $("span#showMarginInfos").addClass("hideobject"); $("span#hideMarginInfos").removeClass("hideobject");})});
-        	    $("span#hideMarginInfos").click(function() { $.getScript( "'.dol_buildpath('/includes/jquery/plugins/jquerytreeview/lib/jquery.cookie.js', 1).'", function( data, textStatus, jqxhr ) { $.cookie("DOLUSER_MARGININFO_HIDE_SHOW", 1); $(".margininfos").hide(); $("span#hideMarginInfos").addClass("hideobject"); $("span#showMarginInfos").removeClass("hideobject");})});
-      	        });</script>';
-    	    if (!empty($hidemargininfos)) print '<script>$(document).ready(function() {$(".margininfos").hide();});</script>';
-		}
-
-		print '<table class="nobordernopadding margintable" width="100%">';
-		print '<tr class="liste_titre">';
-		print '<td class="liste_titre">'.$langs->trans('Margins').'</td>';
-		print '<td class="liste_titre" align="right">'.$langs->trans('SellingPrice').'</td>';
-		if ($conf->global->MARGIN_TYPE == "1")
-			print '<td class="liste_titre" align="right">'.$langs->trans('BuyingPrice').'</td>';
-		else
-			print '<td class="liste_titre" align="right">'.$langs->trans('CostPrice').'</td>';
-		print '<td class="liste_titre" align="right">'.$langs->trans('Margin').'</td>';
-		if (! empty($conf->global->DISPLAY_MARGIN_RATES))
-			print '<td class="liste_titre" align="right">'.$langs->trans('MarginRate').'</td>';
-		if (! empty($conf->global->DISPLAY_MARK_RATES))
-			print '<td class="liste_titre" align="right">'.$langs->trans('MarkRate').'</td>';
-		print '</tr>';
-
-		if (! empty($conf->product->enabled))
-		{
-			//if ($marginInfo['margin_on_products'] != 0 && $marginInfo['margin_on_services'] != 0) {
-			print '<tr class="impair">';
-			print '<td>'.$langs->trans('MarginOnProducts').'</td>';
-			print '<td align="right">'.price($marginInfo['pv_products'], null, null, null, null, $rounding).'</td>';
-			print '<td align="right">'.price($marginInfo['pa_products'], null, null, null, null, $rounding).'</td>';
-			print '<td align="right">'.price($marginInfo['margin_on_products'], null, null, null, null, $rounding).'</td>';
-			if (! empty($conf->global->DISPLAY_MARGIN_RATES))
-				print '<td align="right">'.(($marginInfo['margin_rate_products'] == '')?'':price($marginInfo['margin_rate_products'], null, null, null, null, $rounding).'%').'</td>';
-			if (! empty($conf->global->DISPLAY_MARK_RATES))
-				print '<td align="right">'.(($marginInfo['mark_rate_products'] == '')?'':price($marginInfo['mark_rate_products'], null, null, null, null, $rounding).'%').'</td>';
-			print '</tr>';
-		}
-
-		if (! empty($conf->service->enabled))
-		{
-			print '<tr class="pair">';
-			print '<td>'.$langs->trans('MarginOnServices').'</td>';
-			print '<td align="right">'.price($marginInfo['pv_services'], null, null, null, null, $rounding).'</td>';
-			print '<td align="right">'.price($marginInfo['pa_services'], null, null, null, null, $rounding).'</td>';
-			print '<td align="right">'.price($marginInfo['margin_on_services'], null, null, null, null, $rounding).'</td>';
-			if (! empty($conf->global->DISPLAY_MARGIN_RATES))
-				print '<td align="right">'.(($marginInfo['margin_rate_services'] == '')?'':price($marginInfo['margin_rate_services'], null, null, null, null, $rounding).'%').'</td>';
-			if (! empty($conf->global->DISPLAY_MARK_RATES))
-				print '<td align="right">'.(($marginInfo['mark_rate_services'] == '')?'':price($marginInfo['mark_rate_services'], null, null, null, null, $rounding).'%').'</td>';
-			print '</tr>';
-		}
-
-		if (! empty($conf->product->enabled) && ! empty($conf->service->enabled))
-		{
-			print '<tr class="impair">';
-			print '<td>'.$langs->trans('TotalMargin').'</td>';
-			print '<td align="right">'.price($marginInfo['pv_total'], null, null, null, null, $rounding).'</td>';
-			print '<td align="right">'.price($marginInfo['pa_total'], null, null, null, null, $rounding).'</td>';
-			print '<td align="right">'.price($marginInfo['total_margin'], null, null, null, null, $rounding).'</td>';
-			if (! empty($conf->global->DISPLAY_MARGIN_RATES))
-				print '<td align="right">'.(($marginInfo['total_margin_rate'] == '')?'':price($marginInfo['total_margin_rate'], null, null, null, null, $rounding).'%').'</td>';
-			if (! empty($conf->global->DISPLAY_MARK_RATES))
-				print '<td align="right">'.(($marginInfo['total_mark_rate'] == '')?'':price($marginInfo['total_mark_rate'], null, null, null, null, $rounding).'%').'</td>';
-			print '</tr>';
-		}
-		print '</table>';
+		include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmargin.class.php';
+		$formmargin=new FormMargin($this->db);
+		$formmargin->displayMarginInfos($this, $force_price);
 	}
 
 
 	/**
 	 *	Add resources to the current object : add entry into llx_element_resources
-	 *Need $this->element & $this->id
+	 *	Need $this->element & $this->id
 	 *
 	 *	@param		int		$resource_id		Resource id
 	 *	@param		string	$resource_element	Resource element
@@ -3726,7 +3478,7 @@ abstract class CommonObject
             {
                	$attributeKey = substr($key,8);   // Remove 'options_' prefix
                	$attributeType  = $extrafields->attribute_type[$attributeKey];
-               	$attributeSize  = $extrafields->attribute_size[$attributeKey];
+               	//$attributeSize  = $extrafields->attribute_size[$attributeKey];	Not required to insert an extrafield value. Only used for definition.
                	$attributeLabel = $extrafields->attribute_label[$attributeKey];
                	$attributeParam = $extrafields->attribute_param[$attributeKey];
                	switch ($attributeType)
@@ -3751,19 +3503,19 @@ abstract class CommonObject
             		case 'datetime':
             			$this->array_options[$key]=$this->db->idate($this->array_options[$key]);
             			break;
-           		case 'link':
-				$param_list=array_keys($attributeParam ['options']);
-				// 0 : ObjectName
-				// 1 : classPath
-				$InfoFieldList = explode(":", $param_list[0]);
-				dol_include_once($InfoFieldList[1]);
-				$object = new $InfoFieldList[0]($this->db);
-				if ($value)
-				{
-					$object->fetch(0,$value);
-					$this->array_options[$key]=$object->id;
-				}
-				break;
+           			case 'link':
+						$param_list=array_keys($attributeParam ['options']);
+						// 0 : ObjectName
+						// 1 : classPath
+						$InfoFieldList = explode(":", $param_list[0]);
+						dol_include_once($InfoFieldList[1]);
+						$object = new $InfoFieldList[0]($this->db);
+						if ($value)
+						{
+							$object->fetch(0,$value);
+							$this->array_options[$key]=$object->id;
+						}
+						break;
                	}
             }
             $this->db->begin();
@@ -3771,6 +3523,7 @@ abstract class CommonObject
             $sql_del = "DELETE FROM ".MAIN_DB_PREFIX.$this->table_element."_extrafields WHERE fk_object = ".$this->id;
             dol_syslog(get_class($this)."::insertExtraFields delete", LOG_DEBUG);
             $this->db->query($sql_del);
+
             $sql = "INSERT INTO ".MAIN_DB_PREFIX.$this->table_element."_extrafields (fk_object";
             foreach($this->array_options as $key => $value)
             {
@@ -3825,7 +3578,7 @@ abstract class CommonObject
      *
      * @return string
      */
-    function showOptionals($extrafields, $mode='view', $params=0, $keyprefix='')
+    function showOptionals($extrafields, $mode='view', $params=null, $keyprefix='')
     {
 		global $_POST, $conf;
 
@@ -3955,15 +3708,16 @@ abstract class CommonObject
 	 * This function is meant to be called from replaceThirdparty with the appropiate tables
 	 * Column name fk_soc MUST be used to identify thirdparties
 	 *
-	 * @param DoliDB $db Database handler
-	 * @param int $origin_id Old thirdparty id
-	 * @param int $dest_id New thirdparty id
-	 * @param array $tables Tables that need to be changed
+	 * @param DoliDB 	$db 			Database handler
+	 * @param int 		$origin_id 		Old thirdparty id (the thirdparty to delete)
+	 * @param int 		$dest_id 		New thirdparty id (the thirdparty that will received element of the other)
+	 * @param array 	$tables 		Tables that need to be changed
 	 * @return bool
 	 */
 	public static function commonReplaceThirdparty(DoliDB $db, $origin_id, $dest_id, array $tables)
 	{
-		foreach ($tables as $table) {
+		foreach ($tables as $table)
+		{
 			$sql = 'UPDATE '.MAIN_DB_PREFIX.$table.' SET fk_soc = '.$dest_id.' WHERE fk_soc = '.$origin_id;
 
 			if (!$db->query($sql)) {
diff --git a/htdocs/core/class/commonobjectline.class.php b/htdocs/core/class/commonobjectline.class.php
index 07019a0fa1dcdacee7f9167461bd9d211017a13a..ef854a2452e51b93dce2feddb0d6ed9e73ab4529 100644
--- a/htdocs/core/class/commonobjectline.class.php
+++ b/htdocs/core/class/commonobjectline.class.php
@@ -39,6 +39,7 @@ abstract class CommonObjectLine extends CommonObject
 	 * Id of the line
 	 * @var int
 	 * @deprecated Try to use id property as possible (even if field into database is still rowid)
+	 * @see id
 	 */
 	public $rowid;
 
diff --git a/htdocs/core/class/commonorder.class.php b/htdocs/core/class/commonorder.class.php
index b4882af8a582db32d060d84bb37404434350158b..5309b5524ee23f4499945accf4aa52700b73bcc2 100644
--- a/htdocs/core/class/commonorder.class.php
+++ b/htdocs/core/class/commonorder.class.php
@@ -43,6 +43,7 @@ abstract class CommonOrderLine extends CommonObjectLine
 	 * Product ref
 	 * @var string
 	 * @deprecated Use product_ref
+	 * @see product_ref
 	 */
 	public $ref;
 
@@ -56,6 +57,7 @@ abstract class CommonOrderLine extends CommonObjectLine
 	 * Product label
 	 * @var string
 	 * @deprecated Use product_label
+	 * @see product_label
 	 */
 	public $libelle;
 
@@ -78,7 +80,9 @@ abstract class CommonOrderLine extends CommonObjectLine
 	public $qty;
 
 	/**
+	 * Unit price
 	 * @deprecated
+	 * @see subprice
 	 */
 	var $price;
 
diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php
index 6370062a6a9dcf6fab6448480476acd0c312007a..13d2881563f552009f3f669733c309c9b4ed92d6 100644
--- a/htdocs/core/class/conf.class.php
+++ b/htdocs/core/class/conf.class.php
@@ -404,7 +404,7 @@ class Conf
 		$this->css  = "/theme/".$this->theme."/style.css.php";
 
 		// conf->email_from = email pour envoi par dolibarr des mails automatiques
-		$this->email_from = "robot@domain.com";
+		$this->email_from = "robot@example.com";
 		if (! empty($this->global->MAIN_MAIL_EMAIL_FROM)) $this->email_from = $this->global->MAIN_MAIL_EMAIL_FROM;
 
 		// conf->notification->email_from = email pour envoi par Dolibarr des notifications
diff --git a/htdocs/core/class/dolprintipp.class.php b/htdocs/core/class/dolprintipp.class.php
index 4b934b331f3dc79c5bf15b64cf3d149f3e1de2e3..fdd0fc2732cf01cc155ce683015a9636c55c9a8f 100644
--- a/htdocs/core/class/dolprintipp.class.php
+++ b/htdocs/core/class/dolprintipp.class.php
@@ -91,7 +91,14 @@ class dolprintIPP
             }
         }
         // Getting Jobs
-        $ipp->getJobs(false,0,'completed',false);
+        try {
+        	$ipp->getJobs(false,0,'completed',false);			// May return errors if setup not correct
+        }
+        catch(Exception $e)
+        {
+			print $e->getMessage();
+        }
+
         print '<table width="100%" class="noborder">';
         print '<tr class="liste_titre">';
         print "<td>Id</td>";
@@ -102,19 +109,22 @@ class dolprintIPP
         print "<td>Cancel</td>";
         print "</tr>\n";
         $jobs = $ipp->jobs_attributes;
-        $var = True;
+        $var = true;
         //print '<pre>'.print_r($jobs,true).'</pre>';
-        foreach ($jobs as $value )
+        if (is_array($jobs))
         {
-            $var=!$var;
-            print "<tr ".$bc[$var].">";
-            print '<td>'.$value->job_id->_value0.'</td>';
-            print '<td>'.$value->job_originating_user_name->_value0.'</td>';
-            print '<td>'.$value->printer_uri->_value0.'</td>';
-            print '<td>'.$value->job_name->_value0.'</td>';
-            print '<td>'.$value->job_state->_value0.'</td>';
-            print '<td>'.$value->job_uri->_value0.'</td>';
-            print '</tr>';
+	        foreach ($jobs as $value)
+	        {
+	            $var=!$var;
+	            print "<tr ".$bc[$var].">";
+	            print '<td>'.$value->job_id->_value0.'</td>';
+	            print '<td>'.$value->job_originating_user_name->_value0.'</td>';
+	            print '<td>'.$value->printer_uri->_value0.'</td>';
+	            print '<td>'.$value->job_name->_value0.'</td>';
+	            print '<td>'.$value->job_state->_value0.'</td>';
+	            print '<td>'.$value->job_uri->_value0.'</td>';
+	            print '</tr>';
+	        }
         }
         print "</table>";
     }
diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php
index e2313d157d5d3da96d90909f86643354c2b8b5f6..34abeeb8c6e462cd0c575792aea8dda45e064808 100644
--- a/htdocs/core/class/extrafields.class.php
+++ b/htdocs/core/class/extrafields.class.php
@@ -39,7 +39,7 @@ class ExtraFields
 	var $attribute_type;
 	// Tableau contenant le nom des champs en clef et le label de ces champs en value
 	var $attribute_label;
-	// Tableau contenant le nom des champs en clef et la taille de ces champs en value
+	// Tableau contenant le nom des champs en clef et la taille/longueur max de ces champs en value
 	var $attribute_size;
 	// Tableau contenant le nom des choix en clef et la valeur de ces choix en value
 	var $attribute_choice;
@@ -124,6 +124,7 @@ class ExtraFields
 		if (empty($label)) return -1;
 
 		if ($elementtype == 'thirdparty') $elementtype='societe';
+		if ($elementtype == 'contact') $elementtype='socpeople';
 
 		// Create field into database except for separator type which is not stored in database
 		if ($type != 'separate')
@@ -169,6 +170,7 @@ class ExtraFields
 	private function create($attrname, $type='varchar', $length=255, $elementtype='member', $unique=0, $required=0, $default_value='',$param='', $perms='', $list=0)
 	{
 		if ($elementtype == 'thirdparty') $elementtype='societe';
+		if ($elementtype == 'contact') $elementtype='socpeople';
 
 		$table=$elementtype.'_extrafields';
 
@@ -248,6 +250,7 @@ class ExtraFields
 		global $conf;
 
 		if ($elementtype == 'thirdparty') $elementtype='societe';
+		if ($elementtype == 'contact') $elementtype='socpeople';
 
 		// Clean parameters
 		if (empty($pos)) $pos=0;
@@ -308,6 +311,7 @@ class ExtraFields
 	function delete($attrname, $elementtype='member')
 	{
 		if ($elementtype == 'thirdparty') $elementtype='societe';
+		if ($elementtype == 'contact') $elementtype='socpeople';
 
 		$table=$elementtype.'_extrafields';
 
@@ -342,6 +346,7 @@ class ExtraFields
 		global $conf;
 
 		if ($elementtype == 'thirdparty') $elementtype='societe';
+		if ($elementtype == 'contact') $elementtype='socpeople';
 
 		if (isset($attrname) && $attrname != '' && preg_match("/^\w[a-zA-Z0-9-_]*$/",$attrname))
 		{
@@ -389,6 +394,7 @@ class ExtraFields
 	function update($attrname,$label,$type,$length,$elementtype,$unique=0,$required=0,$pos=0,$param='',$alwayseditable=0, $perms='',$list='')
 	{
 		if ($elementtype == 'thirdparty') $elementtype='societe';
+		if ($elementtype == 'contact') $elementtype='socpeople';
 
 		$table=$elementtype.'_extrafields';
 
@@ -486,6 +492,8 @@ class ExtraFields
 
 		// Clean parameters
 		if ($elementtype == 'thirdparty') $elementtype='societe';
+		if ($elementtype == 'contact') $elementtype='socpeople';
+
 		if (empty($list)) $list=0;
 
 		if (isset($attrname) && $attrname != '' && preg_match("/^\w[a-zA-Z0-9-_]*$/",$attrname))
@@ -570,6 +578,7 @@ class ExtraFields
 		if ( empty($elementtype) ) return array();
 
 		if ($elementtype == 'thirdparty') $elementtype='societe';
+		if ($elementtype == 'contact') $elementtype='socpeople';
 
 		$array_name_label=array();
 
diff --git a/htdocs/core/class/hookmanager.class.php b/htdocs/core/class/hookmanager.class.php
index 47810e204bdf995685dd80b64785160690f4cbb2..ee7742660c171697d0636f23fd3717a54787f5b7 100644
--- a/htdocs/core/class/hookmanager.class.php
+++ b/htdocs/core/class/hookmanager.class.php
@@ -116,9 +116,9 @@ class HookManager
      * 	    @param		array	$parameters		Array of parameters
      * 		@param		Object	$object			Object to use hooks on
      * 	    @param		string	$action			Action code on calling page ('create', 'edit', 'view', 'add', 'update', 'delete'...)
-     * 		@return		mixed					For doActions,formObjectOptions,pdf_xxx:    								Return 0 if we want to keep standard actions, >0 if we want to stop standard actions, <0 means KO.
-     * 											For printSearchForm,printLeftBlock,printTopRightMenu,formAddObjectLine,...: Return HTML string. TODO Deprecated. Must always return an int and things to print into ->resprints.
-     *                                          Can also return some values into an array ->results.
+     * 		@return		mixed					For 'addreplace hooks (doActions,formObjectOptions,pdf_xxx,...):  					Return 0 if we want to keep standard actions, >0 if we want to stop standard actions, <0 if KO.
+     * 											For 'output' hooks (printLeftBlock, formAddObjectLine, formBuilddocOptions, ...):	Return 0, <0 if KO. Things to print are returned into ->resprints and set into ->resPrint.
+     *                                          All types can also return some values into an array ->results.
      * 											$this->error or this->errors are also defined by class called by this function if error.
      */
 	function executeHooks($method, $parameters=false, &$object='', &$action='')
@@ -135,7 +135,8 @@ class HookManager
         	array(
         		'addMoreActionsButtons',
 		        'addStatisticLine',
-		        'doActions',
+        	    'deleteFile',
+        		'doActions',
         		'formCreateThirdpartyOptions',
 		        'formObjectOptions',
 		        'formattachOptions',
@@ -147,7 +148,7 @@ class HookManager
         		'formatEvent'
         		)
         	)) $hooktype='addreplace';
-        // Deprecated hook types
+        // Deprecated hook types ('returnvalue')
         if (preg_match('/^pdf_/',$method) && $method != 'pdf_writelinedesc') $hooktype='returnvalue';		// pdf_xxx except pdf_writelinedesc are 'returnvalue' hooks. When there is 2 hooks of this type, only last one win. TODO Move them into 'output' or 'addreplace' hooks.
         if ($method == 'insertExtraFields')
         {
@@ -195,7 +196,7 @@ class HookManager
                     	if (isset($actionclassinstance->results) && is_array($actionclassinstance->results))  $this->resArray =array_merge($this->resArray, $actionclassinstance->results);
                     	if (! empty($actionclassinstance->resprints)) $this->resPrint.=$actionclassinstance->resprints;
                     }
-                    // Generic hooks that return a string or array (printSearchForm, printLeftBlock, formAddObjectLine, formBuilddocOptions, ...)
+                    // Generic hooks that return a string or array (printLeftBlock, formAddObjectLine, formBuilddocOptions, ...)
                     else
 					{
                     	// TODO. this should be done into the method of hook by returning nothing
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index b4e5a8a0ec08095e4ecc843e637b3fcd5bd4c233..c236df1819929e7a1bf933183c94e091aa961193 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -41,6 +41,8 @@
 /**
  *	Class to manage generation of HTML components
  *	Only common components must be here.
+ *
+ *  TODO Merge all function load_cache_* and loadCache* (except load_cache_vatrates) into one generic function loadCacheTable
  */
 class Form
 {
@@ -101,7 +103,7 @@ class Form
             }
         }
         else
-        {
+		{
             $ret.='<table class="nobordernopadding" width="100%"><tr><td class="nowrap">';
             $ret.=$langs->trans($text);
             $ret.='</td>';
@@ -376,7 +378,7 @@ class Form
      *	@return	string							Code html du tooltip (texte+picto)
      *	@see	Use function textwithpicto if you can.
      */
-    function textwithtooltip($text, $htmltext, $tooltipon = 1, $direction = 0, $img = '', $extracss = '', $notabs = 0, $incbefore = '', $noencodehtmltext = 0)
+    function textwithtooltip($text, $htmltext, $tooltipon = 1, $direction = 0, $img = '', $extracss = '', $notabs = 2, $incbefore = '', $noencodehtmltext = 0)
     {
         global $conf;
 
@@ -391,14 +393,19 @@ class Form
         $htmltext=str_replace("\r","",$htmltext);
         $htmltext=str_replace("\n","",$htmltext);
 
+        $extrastyle='';
+        if ($direction < 0) { $extracss=($extracss?$extracss.' ':'').'inline-block'; $extrastyle='padding: 0px; padding-left: 3px !important;'; }
+        if ($direction > 0) { $extracss=($extracss?$extracss.' ':'').'inline-block'; $extrastyle='padding: 0px; padding-right: 3px !important;'; }
+
         $htmltext=str_replace('"',"&quot;",$htmltext);
-        if ($tooltipon == 2 || $tooltipon == 3) $paramfortooltipimg=' class="classfortooltip inline-block'.($extracss?' '.$extracss:'').'" style="padding: 0px;" title="'.($noencodehtmltext?$htmltext:dol_escape_htmltag($htmltext,1)).'"'; // Attribut to put on td img tag to store tooltip
-        else $paramfortooltipimg =($extracss?' class="'.$extracss.'"':''); // Attribut to put on td text tag
-        if ($tooltipon == 1 || $tooltipon == 3) $paramfortooltiptd=' class="classfortooltip inline-block'.($extracss?' '.$extracss:'').'" style="padding: 0px;" title="'.($noencodehtmltext?$htmltext:dol_escape_htmltag($htmltext,1)).'"'; // Attribut to put on td tag to store tooltip
-        else $paramfortooltiptd =($extracss?' class="'.$extracss.'"':''); // Attribut to put on td text tag
+        if ($tooltipon == 2 || $tooltipon == 3) $paramfortooltipimg=' class="classfortooltip inline-block'.($extracss?' '.$extracss:'').'" style="padding: 0px;'.($extrastyle?' '.$extrastyle:'').'" title="'.($noencodehtmltext?$htmltext:dol_escape_htmltag($htmltext,1)).'"'; // Attribut to put on td img tag to store tooltip
+        else $paramfortooltipimg =($extracss?' class="'.$extracss.'"':'').($extrastyle?' style="'.$extrastyle.'"':''); // Attribut to put on td text tag
+        if ($tooltipon == 1 || $tooltipon == 3) $paramfortooltiptd=' class="classfortooltip inline-block'.($extracss?' '.$extracss:'').'" style="padding: 0px;'.($extrastyle?' '.$extrastyle:'').'" title="'.($noencodehtmltext?$htmltext:dol_escape_htmltag($htmltext,1)).'"'; // Attribut to put on td tag to store tooltip
+        else $paramfortooltiptd =($extracss?' class="'.$extracss.'"':'').($extrastyle?' style="'.$extrastyle.'"':''); // Attribut to put on td text tag
         $s="";
         if (empty($notabs)) $s.='<table class="nobordernopadding" summary=""><tr style="height: auto;">';
         elseif ($notabs == 2) $s.='<div class="inline-block nowrap">';
+        // Define value if value is before
         if ($direction < 0) {
             $s.='<'.$tag.$paramfortooltipimg;
             if ($tag == 'td') {
@@ -407,16 +414,12 @@ class Form
             $s.= '>'.$img.'</'.$tag.'>';
         }
         // Use another method to help avoid having a space in value in order to use this value with jquery
-        // TODO add this in css
-        //if ($text != '') $s.='<'.$tag.$paramfortooltiptd.'>'.(($direction < 0)?'&nbsp;':'').$text.(($direction > 0)?'&nbsp;':'').'</'.$tag.'>';
-        $paramfortooltiptd.= (($direction < 0)?' class="inline-block" style="padding: 0px; padding-left: 3px !important;"':'');
-        $paramfortooltiptd.= (($direction > 0)?' class="inline-block" style="padding: 0px; padding-right: 3px !important;"':'');
+        // Define label
         if ((string) $text != '') $s.='<'.$tag.$paramfortooltiptd.'>'.$text.'</'.$tag.'>';
+        // Define value if value is after
         if ($direction > 0) {
             $s.='<'.$tag.$paramfortooltipimg;
-            if ($tag == 'td') {
-                $s .= ' valign="top" width="14"';
-            }
+            if ($tag == 'td') $s .= ' valign="middle" width="14"';
             $s.= '>'.$img.'</'.$tag.'>';
         }
         if (empty($notabs)) $s.='</tr></table>';
@@ -437,7 +440,7 @@ class Form
      *  @param	int		$notabs				0=Include table and tr tags, 1=Do not include table and tr tags, 2=use div, 3=use span
      * 	@return	string						HTML code of text, picto, tooltip
      */
-    function textwithpicto($text, $htmltext, $direction = 1, $type = 'help', $extracss = '', $noencodehtmltext = 0, $notabs = 0)
+    function textwithpicto($text, $htmltext, $direction = 1, $type = 'help', $extracss = '', $noencodehtmltext = 0, $notabs = 2)
     {
         global $conf;
 
@@ -496,14 +499,14 @@ class Form
 
         $sql = "SELECT rowid, code as code_iso, code_iso as code_iso3, label, favorite";
         $sql.= " FROM ".MAIN_DB_PREFIX."c_country";
-        $sql.= " WHERE active = 1";
+        $sql.= " WHERE active > 0";
         //$sql.= " ORDER BY code ASC";
 
         dol_syslog(get_class($this)."::select_country", LOG_DEBUG);
         $resql=$this->db->query($sql);
         if ($resql)
         {
-            $out.= '<select id="select'.$htmlname.'" class="flat selectcountry" name="'.$htmlname.'" '.$htmloption.'>';
+            $out.= '<select id="select'.$htmlname.'" class="flat selectcountry minwidth300" name="'.$htmlname.'" '.$htmloption.'>';
             $num = $this->db->num_rows($resql);
             $i = 0;
             if ($num)
@@ -531,7 +534,7 @@ class Form
 					if (empty($row['favorite']) && $atleastonefavorite)
 					{
 						$atleastonefavorite=0;
-						$out.= '<option value="" disabled>----------------------</option>';
+						$out.= '<option value="" disabled class="selectoptiondisabledwhite">----------------------</option>';
 					}
                     if ($selected && $selected != '-1' && ($selected == $row['rowid'] || $selected == $row['code_iso'] || $selected == $row['code_iso3'] || $selected == $row['label']) )
                     {
@@ -554,6 +557,10 @@ class Form
             dol_print_error($this->db);
         }
 
+        // Make select dynamic
+        include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
+        $out .= ajax_combobox('select'.$htmlname);
+
         return $out;
     }
 
@@ -580,7 +587,7 @@ class Form
 
         $sql = "SELECT rowid, code";
         $sql.= " FROM ".MAIN_DB_PREFIX."c_incoterms";
-        $sql.= " WHERE active = 1";
+        $sql.= " WHERE active > 0";
         $sql.= " ORDER BY code ASC";
 
         dol_syslog(get_class($this)."::select_incoterm", LOG_DEBUG);
@@ -707,22 +714,23 @@ class Form
     /**
      *	Load into cache cache_types_fees, array of types of fees
      *
-     *	@return     int             Nb of lines loaded, 0 if already loaded, <0 if ko
-     *	TODO move in DAO class
+     *	@return     int             Nb of lines loaded, <0 if KO
      */
     function load_cache_types_fees()
     {
         global $langs;
 
-        $langs->load("trips");
+        $num = count($this->cache_types_fees);
+        if ($num > 0) return 0;    // Cache already loaded
+
+        dol_syslog(__METHOD__, LOG_DEBUG);
 
-        if (count($this->cache_types_fees)) return 0;    // Cache already load
+        $langs->load("trips");
 
         $sql = "SELECT c.code, c.label";
         $sql.= " FROM ".MAIN_DB_PREFIX."c_type_fees as c";
-        //$sql.= " ORDER BY c.label ASC";				  // No sort here, sort must be done after translation
+        $sql.= " WHERE active > 0";
 
-        dol_syslog(get_class($this).'::load_cache_types_fees', LOG_DEBUG);
         $resql=$this->db->query($sql);
         if ($resql)
         {
@@ -744,7 +752,7 @@ class Form
             return $num;
         }
         else
-        {
+		{
             dol_print_error($this->db);
             return -1;
         }
@@ -762,7 +770,7 @@ class Form
     {
         global $user, $langs;
 
-        dol_syslog(get_class($this)."::select_type_fees ".$selected.", ".$htmlname, LOG_DEBUG);
+        dol_syslog(__METHOD__." selected=".$selected.", htmlname=".$htmlname, LOG_DEBUG);
 
         $this->load_cache_types_fees();
 
@@ -798,11 +806,28 @@ class Form
      *  @param		array		$ajaxoptions			Options for ajax_autocompleter
      * 	@param		int			$forcecombo				Force to use combo box
      *  @return		string								Return select box for thirdparty.
+	 *  @deprecated	3.8 Use select_company instead. For exemple $form->select_thirdparty(GETPOST('socid'),'socid','',0) => $form->select_company(GETPOST('socid'),'socid','',1,0,0,array(),0)
      */
     function select_thirdparty($selected='', $htmlname='socid', $filter='', $limit=20, $ajaxoptions=array(), $forcecombo=0)
     {
-    	global $langs,$conf;
+   		return $this->select_thirdparty_list($selected,$htmlname,$filter,1,0,$forcecombo,array(),'',0,$limit);
+    }
 
+    /**
+     *  Output html form to select a third party
+     *
+     *	@param	string	$selected       Preselected type
+     *	@param  string	$htmlname       Name of field in form
+     *  @param  string	$filter         optional filters criteras (example: 's.rowid <> x')
+     *	@param	int		$showempty		Add an empty field
+     * 	@param	int		$showtype		Show third party type in combolist (customer, prospect or supplier)
+     * 	@param	int		$forcecombo		Force to use combo box
+     *  @param	array	$events			Ajax event options to run on change. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled')))
+     *	@param	int		$limit			Maximum number of elements
+     * 	@return	string					HTML string with select box for thirdparty.
+     */
+    function select_company($selected='', $htmlname='socid', $filter='', $showempty=0, $showtype=0, $forcecombo=0, $events=array(), $limit=0)
+    {
     	$out='';
 
     	/* TODO Use ajax_autocompleter like for products (not finished)
@@ -835,31 +860,12 @@ class Form
     	}
     	else
     	{*/
-    		$out.=$this->select_thirdparty_list($selected,$htmlname,$filter,1,0,$forcecombo,array(),'',0,$limit);
+    		$out.=$this->select_thirdparty_list($selected, $htmlname, $filter, $showempty, $showtype, $forcecombo, $events, '', 0, $limit);
     	//}
 
     	return $out;
     }
 
-    /**
-     *  Output html form to select a third party
-     *
-     *	@param	string	$selected       Preselected type
-     *	@param  string	$htmlname       Name of field in form
-     *  @param  string	$filter         optional filters criteras (example: 's.rowid <> x')
-     *	@param	int		$showempty		Add an empty field
-     * 	@param	int		$showtype		Show third party type in combolist (customer, prospect or supplier)
-     * 	@param	int		$forcecombo		Force to use combo box
-     *  @param	array	$events			Event options to run on change. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled')))
-     *	@param	int		$limit			Maximum number of elements
-     * 	@return	string					HTML string with
-	 *  @deprecated						Use select_thirdparty instead
-     */
-    function select_company($selected='', $htmlname='socid', $filter='', $showempty=0, $showtype=0, $forcecombo=0, $events=array(), $limit=0)
-    {
-		return $this->select_thirdparty_list($selected, $htmlname, $filter, $showempty, $showtype, $forcecombo, $events, '', 0, $limit);
-    }
-
     /**
      *  Output html form to select a third party
      *
@@ -890,7 +896,7 @@ class Form
         if (! empty($user->societe_id)) $sql.= " AND s.rowid = ".$user->societe_id;
         if ($filter) $sql.= " AND (".$filter.")";
         if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
-        if (! empty($conf->global->COMPANY_HIDE_INACTIVE_IN_COMBOBOX)) $sql.= " AND s.status<>0 ";
+        if (! empty($conf->global->COMPANY_HIDE_INACTIVE_IN_COMBOBOX)) $sql.= " AND s.status <> 0";
         // Add criteria
         if ($filterkey && $filterkey != '')
         {
@@ -1117,7 +1123,7 @@ class Form
         if ($showsoc > 0) $sql.= " LEFT OUTER JOIN  ".MAIN_DB_PREFIX ."societe as s ON s.rowid=sp.fk_soc";
         $sql.= " WHERE sp.entity IN (".getEntity('societe', 1).")";
         if ($socid > 0) $sql.= " AND sp.fk_soc=".$socid;
-        if (! empty($conf->global->CONTACT_HIDE_INACTIVE_IN_COMBOBOX)) $sql.= " AND sp.statut<>0";
+        if (! empty($conf->global->CONTACT_HIDE_INACTIVE_IN_COMBOBOX)) $sql.= " AND sp.statut <> 0";
         $sql.= " ORDER BY sp.lastname ASC";
 
         dol_syslog(get_class($this)."::select_contacts", LOG_DEBUG);
@@ -1223,6 +1229,7 @@ class Form
      *  @param	int		$force_entity	0 or Id of environment to force
      * 	@return	void
      *  @deprecated
+     *  @see select_dolusers()
      */
     function select_users($selected='',$htmlname='userid',$show_empty=0,$exclude='',$disabled=0,$include='',$enableonly='',$force_entity=0)
     {
@@ -1244,10 +1251,11 @@ class Form
      *  @param	int		$showstatus		0=show user status only if status is disabled, 1=always show user status into label, -1=never show user status
      *  @param	string	$morefilter		Add more filters into sql request
      *  @param	string	$show_every		0=default list, 1=add also a value "Everybody" at beginning of list
+     *  @param	string	$enableonlytext	If option $enableonly is set, we use this text to explain into label why record is disabled. Not used if enableonly is empty.
      * 	@return	string					HTML select string
      *  @see select_dolgroups
      */
-    function select_dolusers($selected='', $htmlname='userid', $show_empty=0, $exclude='', $disabled=0, $include='', $enableonly='', $force_entity=0, $maxlength=0, $showstatus=0, $morefilter='', $show_every=0)
+    function select_dolusers($selected='', $htmlname='userid', $show_empty=0, $exclude='', $disabled=0, $include='', $enableonly='', $force_entity=0, $maxlength=0, $showstatus=0, $morefilter='', $show_every=0, $enableonlytext='')
     {
         global $conf,$user,$langs;
 
@@ -1343,8 +1351,8 @@ class Form
                     $userstatic->lastname=$obj->lastname;
                     $userstatic->firstname=$obj->firstname;
 
-                    $disableline=0;
-                    if (is_array($enableonly) && count($enableonly) && ! in_array($obj->rowid,$enableonly)) $disableline=1;
+                    $disableline='';
+                    if (is_array($enableonly) && count($enableonly) && ! in_array($obj->rowid,$enableonly)) $disableline=($enableonlytext?$enableonlytext:'1');
 
                     if ((is_object($selected) && $selected->id == $obj->rowid) || (! is_object($selected) && $selected == $obj->rowid))
                     {
@@ -1394,6 +1402,10 @@ class Form
                      	}
                     }
 					$out.=($moreinfo?')':'');
+					if ($disableline && $disableline != '1')
+					{
+						$out.=' - '.$disableline;	// This is text from $enableonlytext parameter
+					}
                     $out.= '</option>';
 
                     $i++;
@@ -1451,12 +1463,12 @@ class Form
 			$out.='<input type="hidden" class="removedassignedhidden" name="removedassigned" value="">';
 			$out.='<script type="text/javascript" language="javascript">jQuery(document).ready(function () {    jQuery(".removedassigned").click(function() {        jQuery(".removedassignedhidden").val(jQuery(this).val());    });})</script>';
 			$out.=$this->select_dolusers('', $htmlname, $show_empty, $exclude, $disabled, $include, $enableonly, $force_entity, $maxlength, $showstatus, $morefilter);
-			$out.='<input type="submit" class="button" name="'.$action.'assignedtouser" value="'.dol_escape_htmltag($langs->trans("Add")).'">';
+			$out.=' <input type="submit" class="button" name="'.$action.'assignedtouser" value="'.dol_escape_htmltag($langs->trans("Add")).'">';
 		}
 		$assignedtouser=array();
 		if (!empty($_SESSION['assignedtouser']))
 		{
-			$assignedtouser=dol_json_decode($_SESSION['assignedtouser'], true);
+			$assignedtouser=json_decode($_SESSION['assignedtouser'], true);
 		}
 		$nbassignetouser=count($assignedtouser);
 
@@ -2312,19 +2324,22 @@ class Form
     /**
      *      Charge dans cache la liste des conditions de paiements possibles
      *
-     *      @return     int             Nb lignes chargees, 0 si deja chargees, <0 si ko
+     *      @return     int             Nb of lines loaded, <0 if KO
      */
     function load_cache_conditions_paiements()
     {
         global $langs;
 
-        if (count($this->cache_conditions_paiements)) return 0;    // Cache deja charge
+        $num = count($this->cache_conditions_paiements);
+        if ($num > 0) return 0;    // Cache already loaded
 
-        $sql = "SELECT rowid, code, libelle";
+        dol_syslog(__METHOD__, LOG_DEBUG);
+
+        $sql = "SELECT rowid, code, libelle as label";
         $sql.= " FROM ".MAIN_DB_PREFIX.'c_payment_term';
-        $sql.= " WHERE active=1";
+        $sql.= " WHERE active > 0";
         $sql.= " ORDER BY sortorder";
-        dol_syslog(get_class($this).'::load_cache_conditions_paiements', LOG_DEBUG);
+
         $resql = $this->db->query($sql);
         if ($resql)
         {
@@ -2335,14 +2350,18 @@ class Form
                 $obj = $this->db->fetch_object($resql);
 
                 // Si traduction existe, on l'utilise, sinon on prend le libelle par defaut
-                $libelle=($langs->trans("PaymentConditionShort".$obj->code)!=("PaymentConditionShort".$obj->code)?$langs->trans("PaymentConditionShort".$obj->code):($obj->libelle!='-'?$obj->libelle:''));
+                $label=($langs->trans("PaymentConditionShort".$obj->code)!=("PaymentConditionShort".$obj->code)?$langs->trans("PaymentConditionShort".$obj->code):($obj->label!='-'?$obj->label:''));
                 $this->cache_conditions_paiements[$obj->rowid]['code'] =$obj->code;
-                $this->cache_conditions_paiements[$obj->rowid]['label']=$libelle;
+                $this->cache_conditions_paiements[$obj->rowid]['label']=$label;
                 $i++;
             }
-            return 1;
+
+			//$this->cache_conditions_paiements=dol_sort_array($this->cache_conditions_paiements, 'label');		// We use the sortorder
+
+            return $num;
         }
-        else {
+        else
+		{
             dol_print_error($this->db);
             return -1;
         }
@@ -2351,19 +2370,21 @@ class Form
     /**
      *      Charge dans cache la liste des délais de livraison possibles
      *
-     *      @return     int             Nb lignes chargees, 0 si deja chargees, <0 si ko
+     *      @return     int             Nb of lines loaded, <0 if KO
      */
     function load_cache_availability()
     {
         global $langs;
 
-        if (count($this->cache_availability)) return 0;    // Cache deja charge
+        $num = count($this->cache_availability);
+        if ($num > 0) return 0;    // Cache already loaded
+
+        dol_syslog(__METHOD__, LOG_DEBUG);
 
         $sql = "SELECT rowid, code, label";
         $sql.= " FROM ".MAIN_DB_PREFIX.'c_availability';
-        $sql.= " WHERE active=1";
-        $sql.= " ORDER BY rowid";
-        dol_syslog(get_class($this).'::load_cache_availability', LOG_DEBUG);
+        $sql.= " WHERE active > 0";
+
         $resql = $this->db->query($sql);
         if ($resql)
         {
@@ -2379,9 +2400,13 @@ class Form
                 $this->cache_availability[$obj->rowid]['label']=$label;
                 $i++;
             }
-            return 1;
+
+            $this->cache_availability = dol_sort_array($this->cache_availability, 'label');
+
+            return $num;
         }
-        else {
+        else
+		{
             dol_print_error($this->db);
             return -1;
         }
@@ -2402,6 +2427,8 @@ class Form
 
         $this->load_cache_availability();
 
+        dol_syslog(__METHOD__." selected=".$selected.", htmlname=".$htmlname, LOG_DEBUG);
+
         print '<select class="flat" name="'.$htmlname.'">';
         if ($addempty) print '<option value="0">&nbsp;</option>';
         foreach($this->cache_availability as $id => $arrayavailability)
@@ -2424,19 +2451,19 @@ class Form
     /**
      *      Load into cache cache_demand_reason, array of input reasons
      *
-     *      @return     int             Nb of lines loaded, 0 if already loaded, <0 if ko
+     *      @return     int             Nb of lines loaded, <0 if KO
      */
     function loadCacheInputReason()
     {
         global $langs;
 
-        if (count($this->cache_demand_reason)) return 0;    // Cache already loaded
+        $num = count($this->cache_demand_reason);
+        if ($num > 0) return 0;    // Cache already loaded
 
         $sql = "SELECT rowid, code, label";
         $sql.= " FROM ".MAIN_DB_PREFIX.'c_input_reason';
-        $sql.= " WHERE active=1";
-        $sql.= " ORDER BY rowid";
-        dol_syslog(get_class($this)."::loadCacheInputReason", LOG_DEBUG);
+        $sql.= " WHERE active > 0";
+
         $resql = $this->db->query($sql);
         if ($resql)
         {
@@ -2454,12 +2481,14 @@ class Form
                 $tmparray[$obj->rowid]['label']=$label;
                 $i++;
             }
+
             $this->cache_demand_reason=dol_sort_array($tmparray, 'label', 'asc');
 
             unset($tmparray);
-            return 1;
+            return $num;
         }
-        else {
+        else
+		{
             dol_print_error($this->db);
             return -1;
         }
@@ -2505,19 +2534,21 @@ class Form
     /**
      *      Charge dans cache la liste des types de paiements possibles
      *
-     *      @return     int             Nb lignes chargees, 0 si deja chargees, <0 si ko
+     *      @return     int             Nb of lines loaded, <0 if KO
      */
     function load_cache_types_paiements()
     {
         global $langs;
 
-        if (count($this->cache_types_paiements)) return 0;    // Cache deja charge
+        $num=count($this->cache_types_paiements);
+        if ($num > 0) return $num;    // Cache already loaded
+
+        dol_syslog(__METHOD__, LOG_DEBUG);
 
         $sql = "SELECT id, code, libelle, type";
         $sql.= " FROM ".MAIN_DB_PREFIX."c_paiement";
         $sql.= " WHERE active > 0";
-        $sql.= " ORDER BY id";
-        dol_syslog(get_class($this)."::load_cache_types_paiements", LOG_DEBUG);
+
         $resql = $this->db->query($sql);
         if ($resql)
         {
@@ -2528,16 +2559,19 @@ class Form
                 $obj = $this->db->fetch_object($resql);
 
                 // Si traduction existe, on l'utilise, sinon on prend le libelle par defaut
-                $libelle=($langs->trans("PaymentTypeShort".$obj->code)!=("PaymentTypeShort".$obj->code)?$langs->trans("PaymentTypeShort".$obj->code):($obj->libelle!='-'?$obj->libelle:''));
+                $label=($langs->trans("PaymentTypeShort".$obj->code)!=("PaymentTypeShort".$obj->code)?$langs->trans("PaymentTypeShort".$obj->code):($obj->libelle!='-'?$obj->libelle:''));
                 $this->cache_types_paiements[$obj->id]['code'] =$obj->code;
-                $this->cache_types_paiements[$obj->id]['label']=$libelle;
+                $this->cache_types_paiements[$obj->id]['label']=$label;
                 $this->cache_types_paiements[$obj->id]['type'] =$obj->type;
                 $i++;
             }
+
+            $this->cache_types_paiements = dol_sort_array($this->cache_types_paiements, 'label');
+
             return $num;
         }
         else
-        {
+		{
             dol_print_error($this->db);
             return -1;
         }
@@ -2557,6 +2591,8 @@ class Form
     {
         global $langs,$user;
 
+        dol_syslog(__METHOD__." selected=".$selected.", htmlname=".$htmlname, LOG_DEBUG);
+
         $this->load_cache_conditions_paiements();
 
         print '<select class="flat" name="'.$htmlname.'">';
@@ -2595,7 +2631,7 @@ class Form
     {
         global $langs,$user;
 
-        dol_syslog(get_class($this)."::select_type_paiements ".$selected.", ".$htmlname.", ".$filtertype.", ".$format,LOG_DEBUG);
+        dol_syslog(__METHOD__." ".$selected.", ".$htmlname.", ".$filtertype.", ".$format, LOG_DEBUG);
 
         $filterarray=array();
         if ($filtertype == 'CRDT')  	$filterarray=array(0,2,3);
@@ -2635,26 +2671,13 @@ class Form
 
 
     /**
-     *      Selection HT or TTC
+     *  Selection HT or TTC
      *
-     *      @param	string	$selected        Id pre-selectionne
-     *      @param  string	$htmlname        Nom de la zone select
-     * 		@return	void
-     */
-    function select_PriceBaseType($selected='',$htmlname='price_base_type')
-    {
-        print $this->load_PriceBaseType($selected,$htmlname);
-    }
-
-
-    /**
-     *      Selection HT or TTC
-     *
-     *      @param	string	$selected        Id pre-selectionne
-     *      @param  string	$htmlname        Nom de la zone select
-     * 		@return	void
+     *  @param	string	$selected       Id pre-selectionne
+     *  @param  string	$htmlname       Nom de la zone select
+     * 	@return	string					Code of HTML select to chose tax or not
      */
-    function load_PriceBaseType($selected='',$htmlname='price_base_type')
+    function selectPriceBaseType($selected='',$htmlname='price_base_type')
     {
         global $langs;
 
@@ -2699,9 +2722,9 @@ class Form
         $langs->load("admin");
         $langs->load("deliveries");
 
-        $sql = "SELECT rowid, code, libelle";
+        $sql = "SELECT rowid, code, libelle as label";
         $sql.= " FROM ".MAIN_DB_PREFIX."c_shipment_mode";
-        $sql.= " WHERE active = 1";
+        $sql.= " WHERE active > 0";
         if ($filtre) $sql.=" AND ".$filtre;
         $sql.= " ORDER BY libelle ASC";
 
@@ -2722,7 +2745,7 @@ class Form
                     } else {
                         print '<option value="'.$obj->rowid.'">';
                     }
-                    print $langs->trans("SendingMethod".strtoupper($obj->code));
+                    print ($langs->trans("SendingMethod".strtoupper($obj->code)) != "SendingMethod".strtoupper($obj->code)) ? $langs->trans("SendingMethod".strtoupper($obj->code)) : $obj->label;
                     print '</option>';
                     $i++;
                 }
@@ -2774,12 +2797,12 @@ class Form
 	/**
 	 * Creates HTML last in cycle situation invoices selector
 	 *
-	 * @param       string  $selected   Preselected ID
-	 * @param       int     $socid      Company ID
+	 * @param     string  $selected   		Preselected ID
+	 * @param     int     $socid      		Company ID
 	 *
 	 * @return    string                     HTML select
 	 */
-	function load_situation_invoices($selected = '', $socid = '')
+	function selectSituationInvoices($selected = '', $socid = 0)
 	{
 		global $langs;
 
@@ -2787,7 +2810,7 @@ class Form
 
 		$opt = '<option value ="" selected></option>';
 		$sql = 'SELECT rowid, facnumber, situation_cycle_ref, situation_counter, situation_final, fk_soc FROM ' . MAIN_DB_PREFIX . 'facture WHERE situation_counter>=1';
-		$sql .= ' order by situation_cycle_ref, situation_counter desc';
+		$sql.= ' ORDER by situation_cycle_ref, situation_counter desc';
 		$resql = $this->db->query($sql);
 		if ($resql && $this->db->num_rows($resql) > 0) {
 			// Last seen cycle
@@ -2813,10 +2836,13 @@ class Form
 					}
 				}
 			}
-		} else {
+		}
+		else
+		{
 				dol_syslog("Error sql=" . $sql . ", error=" . $this->error, LOG_ERR);
 		}
-		if ($opt == '<option value ="" selected></option>') {
+		if ($opt == '<option value ="" selected></option>')
+		{
 			$opt = '<option value ="0" selected>' . $langs->trans('NoSituations') . '</option>';
 		}
 		return $opt;
@@ -2825,7 +2851,7 @@ class Form
     /**
      *      Creates HTML units selector (code => label)
      *
-     *      @param	string	$selected       Preselected code ('km', 'm', 'l', 'p', ...)
+     *      @param	string	$selected       Preselected Unit ID
      *      @param  string	$htmlname       Select name
      *      @param	int		$showempty		Add a nempty line
      * 		@return	string                  HTML select
@@ -2838,7 +2864,9 @@ class Form
 
         $return= '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'">';
 
-        $sql = 'select rowid, label from '.MAIN_DB_PREFIX.'c_units where active=1';
+        $sql = 'SELECT rowid, label from '.MAIN_DB_PREFIX.'c_units';
+        $sql.= ' WHERE active > 0';
+
         $resql = $this->db->query($sql);
         if($resql && $this->db->num_rows($resql) > 0)
         {
@@ -2846,13 +2874,13 @@ class Form
 
             while($res = $this->db->fetch_object($resql))
             {
-                if ($selected == $res[0])
+                if ($selected == $res->rowid)
                 {
-                    $return.='<option value="'.$res->code.'" selected>'.$langs->trans($res->label).'</option>';
+                    $return.='<option value="'.$res->rowid.'" selected>'.$langs->trans($res->label).'</option>';
                 }
                 else
                 {
-                    $return.='<option value="'.$res->code.'">'.$langs->trans($res->label).'</option>';
+                    $return.='<option value="'.$res->rowid.'">'.$langs->trans($res->label).'</option>';
                 }
             }
             $return.='</select>';
@@ -3025,6 +3053,7 @@ class Form
      *     @param	int			$width				Force width of box
      *     @return 	void
      *     @deprecated
+     *     @see formconfirm()
      */
     function form_confirm($page, $title, $question, $action, $formquestion='', $selectedchoice="", $useajax=0, $height=170, $width=500)
     {
@@ -3082,7 +3111,7 @@ class Form
 
         	// Now add questions
             $more.='<table class="paddingrightonly" width="100%">'."\n";
-            $more.='<tr><td colspan="3" valign="top">'.(! empty($formquestion['text'])?$formquestion['text']:'').'</td></tr>'."\n";
+            $more.='<tr><td colspan="3">'.(! empty($formquestion['text'])?$formquestion['text']:'').'</td></tr>'."\n";
             foreach ($formquestion as $key => $input)
             {
                 if (is_array($input) && ! empty($input))
@@ -3091,15 +3120,15 @@ class Form
 
                     if ($input['type'] == 'text')
                     {
-                        $more.='<tr><td valign="top">'.$input['label'].'</td><td valign="top" colspan="2" align="left"><input type="text" class="flat" id="'.$input['name'].'" name="'.$input['name'].'"'.$size.' value="'.$input['value'].'" /></td></tr>'."\n";
+                        $more.='<tr><td>'.$input['label'].'</td><td colspan="2" align="left"><input type="text" class="flat" id="'.$input['name'].'" name="'.$input['name'].'"'.$size.' value="'.$input['value'].'" /></td></tr>'."\n";
                     }
                     else if ($input['type'] == 'password')
                     {
-                        $more.='<tr><td valign="top">'.$input['label'].'</td><td valign="top" colspan="2" align="left"><input type="password" class="flat" id="'.$input['name'].'" name="'.$input['name'].'"'.$size.' value="'.$input['value'].'" /></td></tr>'."\n";
+                        $more.='<tr><td>'.$input['label'].'</td><td colspan="2" align="left"><input type="password" class="flat" id="'.$input['name'].'" name="'.$input['name'].'"'.$size.' value="'.$input['value'].'" /></td></tr>'."\n";
                     }
                     else if ($input['type'] == 'select')
                     {
-                        $more.='<tr><td valign="top">';
+                        $more.='<tr><td>';
                         if (! empty($input['label'])) $more.=$input['label'].'</td><td valign="top" colspan="2" align="left">';
                         $more.=$this->selectarray($input['name'],$input['values'],$input['default'],1);
                         $more.='</td></tr>'."\n";
@@ -3107,13 +3136,13 @@ class Form
                     else if ($input['type'] == 'checkbox')
                     {
                         $more.='<tr>';
-                        $more.='<td valign="top">'.$input['label'].' </td><td valign="top" align="left">';
+                        $more.='<td>'.$input['label'].' </td><td align="left">';
                         $more.='<input type="checkbox" class="flat" id="'.$input['name'].'" name="'.$input['name'].'"';
                         if (! is_bool($input['value']) && $input['value'] != 'false') $more.=' checked';
                         if (is_bool($input['value']) && $input['value']) $more.=' checked';
                         if (isset($input['disabled'])) $more.=' disabled';
                         $more.=' /></td>';
-                        $more.='<td valign="top" align="left">&nbsp;</td>';
+                        $more.='<td align="left">&nbsp;</td>';
                         $more.='</tr>'."\n";
                     }
                     else if ($input['type'] == 'radio')
@@ -3124,10 +3153,10 @@ class Form
                             $more.='<tr>';
                             if ($i==0) $more.='<td valign="top">'.$input['label'].'</td>';
                             else $more.='<td>&nbsp;</td>';
-                            $more.='<td valign="top" width="20"><input type="radio" class="flat" id="'.$input['name'].'" name="'.$input['name'].'" value="'.$selkey.'"';
+                            $more.='<td width="20"><input type="radio" class="flat" id="'.$input['name'].'" name="'.$input['name'].'" value="'.$selkey.'"';
                             if ($input['disabled']) $more.=' disabled';
                             $more.=' /></td>';
-                            $more.='<td valign="top" align="left">';
+                            $more.='<td align="left">';
                             $more.=$selval;
                             $more.='</td></tr>'."\n";
                             $i++;
@@ -3135,8 +3164,8 @@ class Form
                     }
                     else if ($input['type'] == 'other')
                     {
-                        $more.='<tr><td valign="top">';
-                        if (! empty($input['label'])) $more.=$input['label'].'</td><td valign="top" colspan="2" align="left">';
+                        $more.='<tr><td>';
+                        if (! empty($input['label'])) $more.=$input['label'].'</td><td colspan="2" align="left">';
                         $more.=$input['value'];
                         $more.='</td></tr>'."\n";
                     }
@@ -3508,9 +3537,9 @@ class Form
      *
      *  @param	string	$page        	Page
      *  @param  string	$selected    	Id of user preselected
-     *  @param  string	$htmlname    	Name of input html field
-     *  @param  array	$exclude         List of users id to exclude
-     *  @param  array	$include         List of users id to include
+     *  @param  string	$htmlname    	Name of input html field. If 'none', we just output the user link.
+     *  @param  array	$exclude		List of users id to exclude
+     *  @param  array	$include        List of users id to include
      *  @return	void
      */
     function form_users($page, $selected='', $htmlname='userid', $exclude='', $include='')
@@ -3530,12 +3559,10 @@ class Form
             print '</tr></table></form>';
         }
         else
-        {
+		{
             if ($selected)
             {
                 require_once DOL_DOCUMENT_ROOT .'/user/class/user.class.php';
-                //$this->load_cache_contacts();
-                //print $this->cache_contacts[$selected];
                 $theuser=new User($this->db);
                 $theuser->fetch($selected);
                 print $theuser->getNomUrl(1);
@@ -3646,12 +3673,12 @@ class Form
 
 
     /**
-     *    Affiche formulaire de selection des contacts
+     *    Show forms to select a contact
      *
-     *    @param	string	$page        	Page
-     *    @param	Societe	$societe		Third party
-     *    @param    int		$selected    	Id contact pre-selectionne
-     *    @param    string	$htmlname    	Nom du formulaire select
+     *    @param	string		$page        	Page
+     *    @param	Societe		$societe		Filter on third party
+     *    @param    int			$selected    	Id contact pre-selectionne
+     *    @param    string		$htmlname    	Name of HTML select. If 'none', we just show contact link.
      *    @return	void
      */
     function form_contacts($page, $societe, $selected='', $htmlname='contactid')
@@ -3681,8 +3708,6 @@ class Form
             if ($selected)
             {
                 require_once DOL_DOCUMENT_ROOT .'/contact/class/contact.class.php';
-                //$this->load_cache_contacts();
-                //print $this->cache_contacts[$selected];
                 $contact=new Contact($this->db);
                 $contact->fetch($selected);
                 print $contact->getFullName($langs);
@@ -3798,12 +3823,14 @@ class Form
     	global $langs;
 
     	$num = count($this->cache_vatrates);
-    	if ($num > 0) return $num;    // Cache deja charge
+    	if ($num > 0) return $num;    // Cache already loaded
 
-    	$sql  = "SELECT DISTINCT t.taux, t.recuperableonly";
+        dol_syslog(__METHOD__, LOG_DEBUG);
+
+        $sql  = "SELECT DISTINCT t.taux, t.recuperableonly";
     	$sql.= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_country as c";
     	$sql.= " WHERE t.fk_pays = c.rowid";
-    	$sql.= " AND t.active = 1";
+    	$sql.= " AND t.active > 0";
     	$sql.= " AND c.code IN (".$country_code.")";
     	$sql.= " ORDER BY t.taux ASC, t.recuperableonly ASC";
 
@@ -3837,7 +3864,8 @@ class Form
     }
 
     /**
-     *  Output an HTML select vat rate
+     *  Output an HTML select vat rate.
+     *  The name of this function should be selectVat. We keep bad name for compatibility purpose.
      *
      *  @param	string	$htmlname           Name of html select field
      *  @param  float	$selectedrate       Force preselected vat rate. Use '' for no forcing.
@@ -4244,6 +4272,7 @@ class Form
 
     	$hourSelected=0; $minSelected=0;
 
+    	// Hours
         if ($iSecond != '')
         {
             require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
@@ -4274,6 +4303,7 @@ class Form
 
         $retstring.=' '.$langs->trans('HourShort');
 
+        // Minutes
         if ($minunderhours) $retstring.='<br>';
         else $retstring.="&nbsp;";
 
@@ -4327,24 +4357,26 @@ class Form
         global $conf, $langs;
 
         // Do we want a multiselect ?
-        $multiselect = 0;
-        if (preg_match('/^multi/',$htmlname)) $multiselect = 1;
+        //$jsbeautify = 0;
+        //if (preg_match('/^multi/',$htmlname)) $jsbeautify = 1;
+		$jsbeautify = 1;
 
         if ($value_as_key) $array=array_combine($array, $array);
 
         $out='';
 
         // Add code for jquery to use multiselect
-        if ($addjscombo && empty($conf->dol_use_jmobile) && $multiselect)
+        if ($addjscombo && empty($conf->dol_use_jmobile) && $jsbeautify)
         {
+        	$minLengthToAutocomplete=0;
         	$tmpplugin=empty($conf->global->MAIN_USE_JQUERY_MULTISELECT)?constant('REQUIRE_JQUERY_MULTISELECT')?constant('REQUIRE_JQUERY_MULTISELECT'):'select2':$conf->global->MAIN_USE_JQUERY_MULTISELECT;
         	$out.='<!-- JS CODE TO ENABLE '.$tmpplugin.' for id '.$htmlname.' -->
         			<script type="text/javascript">
         				$(document).ready(function () {
         					$(\''.(preg_match('/^\./',$htmlname)?$htmlname:'#'.$htmlname).'\').'.$tmpplugin.'({
         				    dir: \'ltr\',
-        					width: \'off\',
-        					minimumInputLength: 0
+        					width: \'resolve\',		/* off or resolve */
+        					minimumInputLength: '.$minLengthToAutocomplete.'
         				});
         			});
         		   </script>';
@@ -4419,7 +4451,7 @@ class Form
     {
     	$out = '';
 
-        // Add code for jquery to use multiselect
+        // Add code for jquery to use select2
         if ($addjscombo && empty($conf->dol_use_jmobile))
         {
         	$tmpplugin='select2';
@@ -4605,6 +4637,236 @@ class Form
 	}
 
 
+    /**
+     *  Show linked object block.
+     *
+     *  @param	CommonObject	$object		Object we want to show links to
+     *  @return	int							<0 if KO, >0 if OK
+     */
+    function showLinkedObjectBlock($object)
+    {
+        global $conf,$langs,$hookmanager;
+        global $bc;
+
+        $object->fetchObjectLinked();
+
+        // Bypass the default method
+        $hookmanager->initHooks(array('commonobject'));
+        $parameters=array();
+        $reshook=$hookmanager->executeHooks('showLinkedObjectBlock',$parameters,$object,$action);    // Note that $action and $object may have been modified by hook
+
+        if (empty($reshook))
+        {
+        	$num = count($object->linkedObjects);
+
+        	foreach($object->linkedObjects as $objecttype => $objects)
+        	{
+        		$tplpath = $element = $subelement = $objecttype;
+
+        		if (preg_match('/^([^_]+)_([^_]+)/i',$objecttype,$regs))
+        		{
+        			$element = $regs[1];
+        			$subelement = $regs[2];
+        			$tplpath = $element.'/'.$subelement;
+        		}
+
+        		// To work with non standard path
+        		if ($objecttype == 'facture')          {
+        			$tplpath = 'compta/'.$element;
+        			if (empty($conf->facture->enabled)) continue;	// Do not show if module disabled
+        		}
+        		else if ($objecttype == 'propal')           {
+        			$tplpath = 'comm/'.$element;
+        			if (empty($conf->propal->enabled)) continue;	// Do not show if module disabled
+        		}
+        		else if ($objecttype == 'askpricesupplier')           {
+        			$tplpath = 'comm/'.$element;
+        			if (empty($conf->askpricesupplier->enabled)) continue;	// Do not show if module disabled
+        		}
+        		else if ($objecttype == 'shipping' || $objecttype == 'shipment') {
+        			$tplpath = 'expedition';
+        			if (empty($conf->expedition->enabled)) continue;	// Do not show if module disabled
+        		}
+        		else if ($objecttype == 'delivery')         {
+        			$tplpath = 'livraison';
+        			if (empty($conf->expedition->enabled)) continue;	// Do not show if module disabled
+        		}
+        		else if ($objecttype == 'invoice_supplier') {
+        			$tplpath = 'fourn/facture';
+        		}
+        		else if ($objecttype == 'order_supplier')   {
+        			$tplpath = 'fourn/commande';
+        		}
+
+        		global $linkedObjectBlock;
+        		$linkedObjectBlock = $objects;
+
+        		// Output template part (modules that overwrite templates must declare this into descriptor)
+        		$dirtpls=array_merge($conf->modules_parts['tpl'],array('/'.$tplpath.'/tpl'));
+        		foreach($dirtpls as $reldir)
+        		{
+        			$res=@include dol_buildpath($reldir.'/linkedobjectblock.tpl.php');
+        			if ($res) break;
+        		}
+        	}
+
+        	return $num;
+        }
+    }
+
+    /**
+     *  Show block with links to link to other objects.
+     *
+     *  @param	CommonObject	$object				Object we want to show links to
+     *  @param	array			$restrictlinksto	Restrict links to some elements, for exemple array('order') or array('supplier_order')
+     *  @return	int									<0 if KO, >0 if OK
+     */
+    function showLinkToObjectBlock($object, $restrictlinksto=array())
+    {
+        global $conf, $langs, $hookmanager;
+        global $bc;
+
+		$linktoelem='';
+
+		if (! is_object($object->thirdparty)) $object->fetch_thirdparty();
+
+
+		if (((! is_array($restrictlinksto)) || in_array('order',$restrictlinksto))
+			&& ! empty($conf->commande->enabled))
+		{
+			$linktoelem.=($linktoelem?' &nbsp; ':'').'<a href="#" id="linktoorder">' . $langs->trans('LinkedOrder') . '</a>';
+
+			print '
+				<script type="text/javascript" language="javascript">
+				jQuery(document).ready(function() {
+					jQuery("#linktoorder").click(function() {
+						jQuery("#orderlist").toggle();
+						jQuery("#linktoorder").toggle();
+					});
+				});
+				</script>
+				';
+
+			print '<div id="orderlist"'.(empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)?' style="display:none"':'').'>';
+
+			$sql = "SELECT s.rowid as socid, s.nom as name, s.client, c.rowid, c.ref, c.ref_client, c.total_ht";
+			$sql .= " FROM " . MAIN_DB_PREFIX . "societe as s";
+			$sql .= ", " . MAIN_DB_PREFIX . "commande as c";
+			$sql .= ' WHERE c.fk_soc = s.rowid AND c.fk_soc = ' . $object->thirdparty->id . '';
+
+			$resqlorderlist = $this->db->query($sql);
+			if ($resqlorderlist)
+			{
+				$num = $this->db->num_rows($resqlorderlist);
+				$i = 0;
+
+				print '<br><form action="" method="POST" name="LinkedOrder">';
+				print '<table class="noborder">';
+				print '<tr class="liste_titre">';
+				print '<td class="nowrap"></td>';
+				print '<td align="center">' . $langs->trans("Ref") . '</td>';
+				print '<td align="left">' . $langs->trans("RefCustomer") . '</td>';
+				print '<td align="left">' . $langs->trans("AmountHTShort") . '</td>';
+				print '<td align="left">' . $langs->trans("Company") . '</td>';
+				print '</tr>';
+				while ($i < $num)
+				{
+					$objp = $this->db->fetch_object($resqlorderlist);
+
+					$var = ! $var;
+					print '<tr ' . $bc [$var] . '>';
+					print '<td aling="left">';
+					print '<input type="radio" name="linkedOrder" value=' . $objp->rowid . '>';
+					print '<td align="center">' . $objp->ref . '</td>';
+					print '<td>' . $objp->ref_client . '</td>';
+					print '<td>' . price($objp->total_ht) . '</td>';
+					print '<td>' . $objp->name . '</td>';
+					print '</td>';
+					print '</tr>';
+
+					$i ++;
+				}
+				print '</table>';
+				print '<div class="center"><input type="submit" class="button" value="' . $langs->trans('ToLink') . '">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" class="button" name="cancel" value="' . $langs->trans('Cancel') . '"></div>';
+				print '</form>';
+				$this->db->free($resqlorderlist);
+			} else {
+				dol_print_error($this->db);
+			}
+
+			print '</div>';
+		}
+
+		if (((! is_array($restrictlinksto)) || in_array('supplier_order',$restrictlinksto))
+			&& ! empty($conf->fournisseur->enabled))
+		{
+			$linktoelem.=($linktoelem?' &nbsp; ':'').'<a href="#" id="linktoorder">' . $langs->trans('LinkedOrder') . '</a>';
+
+			print '
+			<script type="text/javascript" language="javascript">
+			jQuery(document).ready(function() {
+				jQuery("#linktoorder").click(function() {
+					jQuery("#orderlist").toggle();
+					jQuery("#linktoorder").toggle();
+				});
+			});
+			</script>
+			';
+
+			print '<div id="orderlist"'.(empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)?' style="display:none"':'').'>';
+
+			$sql = "SELECT s.rowid as socid, s.nom as name, s.client, c.rowid, c.ref, c.ref_supplier, c.total_ht";
+			$sql .= " FROM " . MAIN_DB_PREFIX . "societe as s";
+			$sql .= ", " . MAIN_DB_PREFIX . "commande_fournisseur as c";
+			$sql .= ' WHERE c.fk_soc = s.rowid AND c.fk_soc = ' . $object->thirdparty->id;
+
+			$resqlorderlist = $this->db->query($sql);
+			if ($resqlorderlist)
+			{
+				$num = $this->db->num_rows($resqlorderlist);
+				$i = 0;
+
+				print '<br><form action="" method="POST" name="LinkedOrder">';
+				print '<table class="noborder">';
+				print '<tr class="liste_titre">';
+				print '<td class="nowrap"></td>';
+				print '<td align="center">' . $langs->trans("Ref") . '</td>';
+				print '<td align="left">' . $langs->trans("RefSupplier") . '</td>';
+				print '<td align="left">' . $langs->trans("AmountHTShort") . '</td>';
+				print '<td align="left">' . $langs->trans("Company") . '</td>';
+				print '</tr>';
+				while ($i < $num) {
+					$objp = $this->db->fetch_object($resqlorderlist);
+					if ($objp->socid == $societe->id) {
+						$var = ! $var;
+						print '<tr ' . $bc [$var] . '>';
+						print '<td aling="left">';
+						print '<input type="radio" name="linkedOrder" value=' . $objp->rowid . '>';
+						print '<td align="center">' . $objp->ref . '</td>';
+						print '<td>' . $objp->ref_supplier . '</td>';
+						print '<td>' . price($objp->total_ht) . '</td>';
+						print '<td>' . $objp->name . '</td>';
+						print '</td>';
+						print '</tr>';
+					}
+
+					$i ++;
+				}
+				print '</table>';
+				print '<br><div class="center"><input type="submit" class="button" value="' . $langs->trans('ToLink') . '"> &nbsp; <input type="submit" class="button" name="cancel" value="' . $langs->trans('Cancel') . '"></div>';
+				print '</form>';
+				$this->db->free($resqlorderlist);
+			} else {
+				dol_print_error($this->db);
+			}
+
+			print '</div>';
+		}
+
+
+		return $linktoelem;
+    }
+
     /**
      *	Return an html string with a select combo box to choose yes or no
      *
@@ -4701,15 +4963,15 @@ class Form
      *    To add a particular filter on select, you must set $object->next_prev_filter to SQL criteria.
      *
      *    @param	object	$object			Object to show
-     *    @param   string	$paramid   		Name of parameter to use to name the id into the URL link
-     *    @param   string	$morehtml  		More html content to output just before the nav bar
+     *    @param	string	$paramid   		Name of parameter to use to name the id into the URL link
+     *    @param	string	$morehtml  		More html content to output just before the nav bar
      *    @param	int		$shownav	  	Show Condition (navigation is shown if value is 1)
-     *    @param   string	$fieldid   		Nom du champ en base a utiliser pour select next et previous
-     *    @param   string	$fieldref   	Nom du champ objet ref (object->ref) a utiliser pour select next et previous
-     *    @param   string	$morehtmlref  	Code html supplementaire a afficher apres ref
-     *    @param   string	$moreparam  	More param to add in nav link url.
+     *    @param	string	$fieldid   		Nom du champ en base a utiliser pour select next et previous (we make the select max and min on this field)
+     *    @param	string	$fieldref   	Nom du champ objet ref (object->ref) a utiliser pour select next et previous
+     *    @param	string	$morehtmlref  	Code html supplementaire a afficher apres ref
+     *    @param	string	$moreparam  	More param to add in nav link url.
      *	  @param	int		$nodbprefix		Do not include DB prefix to forge table name
-     * 	  @return  string    				Portion HTML avec ref + boutons nav
+     * 	  @return	string    				Portion HTML avec ref + boutons nav
      */
     function showrefnav($object,$paramid,$morehtml='',$shownav=1,$fieldid='rowid',$fieldref='ref',$morehtmlref='',$moreparam='',$nodbprefix=0)
     {
@@ -4722,33 +4984,47 @@ class Form
         //print "paramid=$paramid,morehtml=$morehtml,shownav=$shownav,$fieldid,$fieldref,$morehtmlref,$moreparam";
         $object->load_previous_next_ref((isset($object->next_prev_filter)?$object->next_prev_filter:''),$fieldid,$nodbprefix);
 
-        $previous_ref = $object->ref_previous?'<a data-role="button" data-icon="arrow-l" data-iconpos="left" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_previous).$moreparam.'">'.(empty($conf->dol_use_jmobile)?img_picto($langs->trans("Previous"),'previous.png'):'&nbsp;').'</a>':'';
-        $next_ref     = $object->ref_next?'<a data-role="button" data-icon="arrow-r" data-iconpos="right" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_next).$moreparam.'">'.(empty($conf->dol_use_jmobile)?img_picto($langs->trans("Next"),'next.png'):'&nbsp;').'</a>':'';
+        //$previous_ref = $object->ref_previous?'<a data-role="button" data-icon="arrow-l" data-iconpos="left" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_previous).$moreparam.'">'.(empty($conf->dol_use_jmobile)?img_picto($langs->trans("Previous"),'previous.png'):'&nbsp;').'</a>':'';
+        //$next_ref     = $object->ref_next?'<a data-role="button" data-icon="arrow-r" data-iconpos="right" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_next).$moreparam.'">'.(empty($conf->dol_use_jmobile)?img_picto($langs->trans("Next"),'next.png'):'&nbsp;').'</a>':'';
+        $previous_ref = $object->ref_previous?'<a data-role="button" data-icon="arrow-l" data-iconpos="left" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_previous).$moreparam.'">'.(empty($conf->dol_use_jmobile)?'<':'&nbsp;').'</a>':'';
+        $next_ref     = $object->ref_next?'<a data-role="button" data-icon="arrow-r" data-iconpos="right" href="'.$_SERVER["PHP_SELF"].'?'.$paramid.'='.urlencode($object->ref_next).$moreparam.'">'.(empty($conf->dol_use_jmobile)?'>':'&nbsp;').'</a>':'';
 
         //print "xx".$previous_ref."x".$next_ref;
-        if ($previous_ref || $next_ref || $morehtml) {
-            $ret.='<table class="nobordernopadding" width="100%"><tr class="nobordernopadding"><td class="nobordernopadding">';
-        }
+        //if ($previous_ref || $next_ref || $morehtml) {
+            //$ret.='<table class="nobordernopadding" width="100%"><tr class="nobordernopadding"><td class="nobordernopadding">';
+            $ret.='<div style="vertical-align: middle"><div class="inline-block floatleft refid'.(($shownav && ($previous_ref || $next_ref))?' refidpadding':'').'">';
+        //}
 
         $ret.=dol_htmlentities($object->$fieldref);
         if ($morehtmlref)
         {
             $ret.=' '.$morehtmlref;
         }
+			$ret.='</div>';
 
+        if ($previous_ref || $next_ref || $morehtml)
+        {
+        	$ret.='<div class="pagination"><ul>';
+        }
         if ($morehtml)
         {
-            $ret.='</td><td class="paddingrightonly" align="right">'.$morehtml;
+            //$ret.='</td><td class="paddingrightonly" align="right">'.$morehtml;
+            $ret.='<li class="noborder litext">'.$morehtml.'</li>';
         }
         if ($shownav && ($previous_ref || $next_ref))
         {
-            $ret.='</td><td class="nobordernopadding" align="center" width="20">'.$previous_ref.'</td>';
-            $ret.='<td class="nobordernopadding" align="center" width="20">'.$next_ref;
+            //$ret.='</td><td class="nobordernopadding" align="center" width="20">'.$previous_ref.'</td>';
+            //$ret.='<td class="nobordernopadding" align="center" width="20">'.$next_ref;
+            $ret.='<li class="pagination">'.$previous_ref.'</li>';
+            $ret.='<li class="pagination">'.$next_ref.'</li>';
         }
         if ($previous_ref || $next_ref || $morehtml)
         {
-            $ret.='</td></tr></table>';
+            //$ret.='</td></tr></table>';
+            $ret.='</ul></div>';
         }
+		$ret.='</div>';
+
         return $ret;
     }
 
@@ -4788,11 +5064,14 @@ class Form
      *    	@param	string		$modulepart		Key to define module concerned ('societe', 'userphoto', 'memberphoto')
      *     	@param  object		$object			Object containing data to retrieve file name
      * 		@param	int			$width			Width of photo
+     * 		@param	int			$height			Height of photo (auto if 0)
+     * 		@param	int			$caneditfield	Add edit fields
+     * 		@param	string		$cssclass		CSS name to use on img for photo
      * 	  	@return string    					HTML code to output photo
      */
-    static function showphoto($modulepart,$object,$width=100)
+    static function showphoto($modulepart, $object, $width=100, $height=0, $caneditfield=0, $cssclass='photowithmargin')
     {
-        global $conf;
+        global $conf,$langs;
 
         $entity = (! empty($object->entity) ? $object->entity : $conf->entity);
         $id = (! empty($object->id) ? $object->id : $object->rowid);
@@ -4819,7 +5098,7 @@ class Form
             if ($object->photo) $file=get_exdir($id, 2, 0, 0, $object, 'invoice_supplier').'photos/'.$object->photo;
             if (! empty($conf->global->MAIN_OLD_IMAGE_LINKS)) $altfile=$object->id.".jpg";	// For backward compatibility
             $email=$object->email;
-        }else {
+        } else {
         	$dir=$conf->$modulepart->dir_output;
         	if ($object->photo) $file=get_exdir($id, 2, 0, 0, $adherent, 'member').'photos/'.$object->photo;
         	if (! empty($conf->global->MAIN_OLD_IMAGE_LINKS)) $altfile=$object->id.".jpg";	// For backward compatibility
@@ -4831,30 +5110,51 @@ class Form
             $cache='0';
             if ($file && file_exists($dir."/".$file))
             {
-                // TODO Link to large image
                 $ret.='<a href="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($file).'&cache='.$cache.'">';
-                $ret.='<img alt="Photo" id="photologo'.(preg_replace('/[^a-z]/i','_',$file)).'" class="photologo" border="0" width="'.$width.'" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($file).'&cache='.$cache.'">';
+                $ret.='<img alt="Photo" id="photologo'.(preg_replace('/[^a-z]/i','_',$file)).'" class="'.$cssclass.'" '.($width?' width="'.$width.'"':'').($height?' height="'.$height.'"':'').' src="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($file).'&cache='.$cache.'">';
                 $ret.='</a>';
             }
             else if ($altfile && file_exists($dir."/".$altfile))
             {
                 $ret.='<a href="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($file).'&cache='.$cache.'">';
-                $ret.='<img alt="Photo alt" id="photologo'.(preg_replace('/[^a-z]/i','_',$file)).'" class="photologo" border="0" width="'.$width.'" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($altfile).'&cache='.$cache.'">';
+                $ret.='<img alt="Photo alt" id="photologo'.(preg_replace('/[^a-z]/i','_',$file)).'" class="'.$cssclass.'" '.($width?' width="'.$width.'"':'').($height?' height="'.$height.'"':'').' src="'.DOL_URL_ROOT.'/viewimage.php?modulepart='.$modulepart.'&entity='.$entity.'&file='.urlencode($altfile).'&cache='.$cache.'">';
                 $ret.='</a>';
             }
             else
-            {
-                if (! empty($conf->gravatar->enabled) && $email)
+			{
+				$nophoto='/public/theme/common/nophoto.jpg';
+				if (in_array($modulepart,array('userphoto','contact')))	// For module thar are "physical" users
+				{
+					$nophoto='/public/theme/common/user_anonymous.png';
+					if ($object->gender == 'man') $nophoto='/public/theme/common/user_man.png';
+					if ($object->gender == 'woman') $nophoto='/public/theme/common/user_woman.png';
+				}
+
+				if (! empty($conf->gravatar->enabled) && $email)
                 {
+	                /**
+	                 * @see https://gravatar.com/site/implement/images/php/
+	                 */
                     global $dolibarr_main_url_root;
                     $ret.='<!-- Put link to gravatar -->';
-                    $ret.='<img alt="Photo found on Gravatar" title="Photo Gravatar.com - email '.$email.'" border="0" width="'.$width.'" src="http://www.gravatar.com/avatar/'.dol_hash($email,3).'?s='.$width.'&d='.urlencode(dol_buildpath('/theme/common/nophoto.jpg',2)).'">';	// gravatar need md5 hash
+                    $ret.='<img class="photo'.$modulepart.'" alt="Gravatar avatar" title="'.$email.' Gravatar avatar" border="0"'.($width?' width="'.$width.'"':'').($height?' height="'.$height.'"':'').' src="https://www.gravatar.com/avatar/'.dol_hash(strtolower(trim($email)),3).'?s='.$width.'&d='.urlencode(dol_buildpath($nophoto,2)).'">';	// gravatar need md5 hash
                 }
                 else
-                {
-                    $ret.='<img alt="No photo" border="0" width="'.$width.'" src="'.DOL_URL_ROOT.'/theme/common/nophoto.jpg">';
+				{
+                    $ret.='<img class="photo'.$modulepart.'" alt="No photo" border="0"'.($width?' width="'.$width.'"':'').($height?' height="'.$height.'"':'').' src="'.DOL_URL_ROOT.$nophoto.'">';
                 }
             }
+
+            if ($caneditfield)
+            {
+                if ($object->photo) $ret.="<br>\n";
+                $ret.='<table class="nobordernopadding hideonsmartphone">';
+                if ($object->photo) $ret.='<tr><td align="center"><input type="checkbox" class="flat photodelete" name="deletephoto" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>';
+                $ret.='<tr><td>'.$langs->trans("PhotoFile").'</td></tr>';
+                $ret.='<tr><td><input type="file" class="flat" name="photo" id="photoinput"></td></tr>';
+                $ret.='</table>';
+            }
+
         }
         else dol_print_error('','Call of showphoto with wrong parameters');
 
diff --git a/htdocs/core/class/html.formadmin.class.php b/htdocs/core/class/html.formadmin.class.php
index e5d8fa5688e862cdeb6228ed58be5f6213f983b4..d3ffa569a7a6e3d831421bdd5b834883ddf92856 100644
--- a/htdocs/core/class/html.formadmin.class.php
+++ b/htdocs/core/class/html.formadmin.class.php
@@ -105,6 +105,10 @@ class FormAdmin
 		}
 		$out.= '</select>';
 
+		// Make select dynamic
+        include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
+        $out.= ajax_combobox($htmlname);
+
 		return $out;
 	}
 
diff --git a/htdocs/core/class/html.formcompany.class.php b/htdocs/core/class/html.formcompany.class.php
index 4f600ac0705c00ff6fcc1b6be10913d8685e9731..a005fb2b22821d8c2cb37508deadf3b829699f48 100644
--- a/htdocs/core/class/html.formcompany.class.php
+++ b/htdocs/core/class/html.formcompany.class.php
@@ -210,6 +210,7 @@ class FormCompany
 	 *    @param    string	$country_codeid    	Country code or id: 0=list for all countries, otherwise country code or country rowid to show
 	 *    @param    string	$htmlname			Id of department
 	 * 	  @return	string						String with HTML select
+	 *    @see select_country
 	 */
 	function select_state($selected='',$country_codeid=0, $htmlname='state_id')
 	{
@@ -234,7 +235,7 @@ class FormCompany
 		$result=$this->db->query($sql);
 		if ($result)
 		{
-			if (!empty($htmlname)) $out.= '<select id="'.$htmlname.'" class="flat" name="'.$htmlname.'">';
+			if (!empty($htmlname)) $out.= '<select id="'.$htmlname.'" class="flat minwidth300" name="'.$htmlname.'">';
 			if ($country_codeid) $out.= '<option value="0">&nbsp;</option>';
 			$num = $this->db->num_rows($result);
 			$i = 0;
@@ -277,13 +278,17 @@ class FormCompany
 				}
 			}
 			if (! empty($htmlname)) $out.= '</select>';
-			if (! empty($htmlname) && $user->admin) $out.= info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
+			if (! empty($htmlname) && $user->admin) $out.= ' '.info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
 		}
 		else
 		{
 			dol_print_error($this->db);
 		}
 
+        // Make select dynamic
+        include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
+        $out .= ajax_combobox($htmlname);
+
 		return $out;
 	}
 
@@ -418,6 +423,7 @@ class FormCompany
 	 *    @param    string		$filter          	Add a SQL filter on list
 	 *    @return	void
 	 *    @deprecated Use print xxx->select_juridicalstatus instead
+	 *    @see select_juridicalstatus()
 	 */
 	function select_forme_juridique($selected='', $country_codeid=0, $filter='')
 	{
@@ -431,9 +437,10 @@ class FormCompany
 	 *    @param	string		$selected        	Preselected code of juridical type
 	 *    @param    int			$country_codeid     0=list for all countries, otherwise list only country requested
      *    @param    string		$filter          	Add a SQL filter on list
+     *    @param	string		$htmlname			HTML name of select
      *    @return	string							String with HTML select
 	 */
-	function select_juridicalstatus($selected='', $country_codeid=0, $filter='')
+	function select_juridicalstatus($selected='', $country_codeid=0, $filter='', $htmlname='forme_juridique_code')
 	{
 		global $conf,$langs,$user;
 		$langs->load("dict");
@@ -454,7 +461,7 @@ class FormCompany
 		if ($resql)
 		{
 			$out.= '<div id="particulier2" class="visible">';
-			$out.= '<select class="flat" name="forme_juridique_code" id="legal_form">';
+			$out.= '<select class="flat minwidth200" name="'.$htmlname.'" id="'.$htmlname.'">';
 			if ($country_codeid) $out.= '<option value="0">&nbsp;</option>';	// When country_codeid is set, we force to add an empty line because it does not appears from select. When not set, we already get the empty line from select.
 
 			$num = $this->db->num_rows($resql);
@@ -488,7 +495,7 @@ class FormCompany
 						// Show break when we are in multi country mode
 						if (empty($country_codeid) && $val['country_code'])
 						{
-							$out.= '<option value="0">----- '.$val['country']." -----</option>\n";
+							$out.= '<option value="0" disabled class="selectoptiondisabledwhite">----- '.$val['country']." -----</option>\n";
 							$country=$val['country'];
 						}
 					}
@@ -507,7 +514,12 @@ class FormCompany
 				}
 			}
 			$out.= '</select>';
-			if ($user->admin) $out.= info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
+			if ($user->admin) $out.= ' '.info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
+
+		    // Make select dynamic
+        	include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
+	        $out .= ajax_combobox($htmlname);
+
 			$out.= '</div>';
 		}
 		else
diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php
index 926ee8a337a4051134504a777770606d99748dcf..699060afcfc98d25e7397a1acda0360dbfdc6ad7 100644
--- a/htdocs/core/class/html.formfile.class.php
+++ b/htdocs/core/class/html.formfile.class.php
@@ -249,7 +249,7 @@ class FormFile
      *      @param      string				$modelselected      Model to preselect by default
      *      @param      string				$allowgenifempty	Allow generation even if list of template ($genallowed) is empty (show however a warning)
      *      @param      string				$forcenomultilang	Do not show language option (even if MAIN_MULTILANGS defined)
-     *      @param      int					$iconPDF            Obsolete, see getDocumentsLink
+     *      @param      int					$iconPDF            Deprecated, see getDocumentsLink
      * 		@param		int					$maxfilenamelength	Max length for filename shown
      * 		@param		string				$noform				Do not output html form tags
      * 		@param		string				$param				More param on http links
@@ -261,6 +261,11 @@ class FormFile
      */
     function showdocuments($modulepart,$modulesubdir,$filedir,$urlsource,$genallowed,$delallowed=0,$modelselected='',$allowgenifempty=1,$forcenomultilang=0,$iconPDF=0,$maxfilenamelength=28,$noform=0,$param='',$title='',$buttonlabel='',$codelang='',$morepicto='')
     {
+		// Deprecation warning
+		if (0 !== $iconPDF) {
+			dol_syslog(__METHOD__ . ": passing iconPDF parameter is deprecated", LOG_WARNING);
+		}
+
         global $langs, $conf, $user, $hookmanager;
         global $form, $bc;
 
@@ -684,7 +689,7 @@ class FormFile
     	$out='';
     	$this->numoffiles=0;
 
-		$file_list=dol_dir_list($filedir, 'files', 0, preg_quote(basename($modulesubdir).'.pdf','/'), '\.meta$|\.png$');
+		$file_list=dol_dir_list($filedir, 'files', 0, preg_quote(basename($modulesubdir),'/').'[^\-]+', '\.meta$|\.png$');
 
     	// For ajax treatment
     	$out.= '<div id="gen_pdf_'.$modulesubdir.'" class="linkobject hideobject">'.img_picto('', 'refresh').'</div>'."\n";
@@ -713,7 +718,7 @@ class FormFile
     			$mime=dol_mimetype($relativepath,'',0);
     			if (preg_match('/text/',$mime)) $out.= ' target="_blank"';
     			$out.= '>';
-    			$out.= img_pdf($file["name"],2);
+    			$out.= img_mime($relativepath, $file["name"]);
     			$out.= '</a>'."\n";
 
     			$this->numoffiles++;
diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php
index b9d5048db745d4f27e03fee3ff9ef4d92d46d369..4e1a8ffc0c55d2a5f8ac2b843f87f7a1ad23e8dd 100644
--- a/htdocs/core/class/html.formmail.class.php
+++ b/htdocs/core/class/html.formmail.class.php
@@ -48,7 +48,16 @@ class FormMail extends Form
 
     var $withsubstit;			// Show substitution array
     var $withfrom;
-    var $withto;				// Show recipient emails
+	/**
+	 * @var int
+	 * @deprecated Fill withto with array before calling method.
+	 * @see withto
+	 */
+	public $withtosocid;
+	/**
+	 * @var int|int[]
+	 */
+    public $withto;				// Show recipient emails
     var $withtofree;			// Show free text for recipient emails
     var $withtocc;
     var $withtoccc;
@@ -275,7 +284,7 @@ class FormMail extends Form
         	$out.= "\n<!-- Debut form mail -->\n";
         	if ($this->withform == 1)
         	{
-        		$out.= '<form method="POST" name="mailform" enctype="multipart/form-data" action="'.$this->param["returnurl"].'">'."\n";
+        		$out.= '<form method="POST" name="mailform" id="mailform" enctype="multipart/form-data" action="'.$this->param["returnurl"].'">'."\n";
 				$out.= '<input style="display:none" type="submit" id="sendmail" name="sendmail">';
         		$out.= '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'" />';
         		$out.= '<input type="hidden" name="trackid" value="'.$this->trackid.'" />';
@@ -703,6 +712,23 @@ class FormMail extends Form
         	$out.= '</table>'."\n";
 
         	if ($this->withform == 1) $out.= '</form>'."\n";
+
+        	// Disable enter key if option MAIN_MAILFORM_DISABLE_ENTER is set
+        	if (! empty($conf->global->MAIN_MAILFORM_DISABLE_ENTERKEY))
+        	{
+	        	$out.= '<script type="text/javascript" language="javascript">';
+		        $out.= 'jQuery(document).ready(function () {';
+				$out.= '	$(document).on("keypress", \'#mailform\', function (e) {		/* Note this is calle at every key pressed ! */
+	    						var code = e.keyCode || e.which;
+	    						if (code == 13) {
+	        						e.preventDefault();
+	        						return false;
+	    						}
+							});';
+				$out.='		})';
+				$out.= '</script>';
+        	}
+
         	$out.= "<!-- Fin form mail -->\n";
 
         	return $out;
diff --git a/htdocs/core/class/html.formmargin.class.php b/htdocs/core/class/html.formmargin.class.php
new file mode 100644
index 0000000000000000000000000000000000000000..a52238be1b934231ead8d5cb5742464376cb927c
--- /dev/null
+++ b/htdocs/core/class/html.formmargin.class.php
@@ -0,0 +1,273 @@
+<?php
+/* Copyright (c) 2015 Laurent Destailleur  <eldy@users.sourceforge.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ *	\file       htdocs/core/class/html.formmargin.class.php
+ *  \ingroup    core
+ *	\brief      Fichier de la classe des fonctions predefinie de composants html autre
+ */
+
+
+/**
+ *	Classe permettant la generation de composants html autre
+ *	Only common components are here.
+ */
+class FormMargin
+{
+    var $db;
+    var $error;
+
+
+    /**
+     *	Constructor
+     *
+     *	@param	DoliDB		$db      Database handler
+     */
+    function __construct($db)
+    {
+        $this->db = $db;
+
+        return 1;
+    }
+
+
+
+	/**
+	 *	get array with margin information from lines of object
+	 *
+	 * 	@param	CommonObject	$object			Object we want to get margin information for
+	 * 	@param 	boolean			$force_price	True of not
+	 * 	@return array							Array with info
+	 */
+	function getMarginInfosArray($object, $force_price=false)
+	{
+		global $conf, $db;
+
+		// Default returned array
+		$marginInfos = array(
+				'pa_products' => 0,
+				'pv_products' => 0,
+				'margin_on_products' => 0,
+				'margin_rate_products' => '',
+				'mark_rate_products' => '',
+				'pa_services' => 0,
+				'pv_services' => 0,
+				'margin_on_services' => 0,
+				'margin_rate_services' => '',
+				'mark_rate_services' => '',
+				'pa_total' => 0,
+				'pv_total' => 0,
+				'total_margin' => 0,
+				'total_margin_rate' => '',
+				'total_mark_rate' => ''
+		);
+
+		foreach($object->lines as $line)
+		{
+			if (empty($line->pa_ht) && isset($line->fk_fournprice) && !$force_price)
+			{
+				require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.product.class.php';
+				$product = new ProductFournisseur($db);
+				if ($product->fetch_product_fournisseur_price($line->fk_fournprice))
+					$line->pa_ht = $product->fourn_unitprice * (1 - $product->fourn_remise_percent / 100);
+				if (isset($conf->global->MARGIN_TYPE) && $conf->global->MARGIN_TYPE == "2" && $product->fourn_unitcharges > 0)
+					$line->pa_ht += $product->fourn_unitcharges;
+			}
+			// si prix d'achat non renseigné et devrait l'être, alors prix achat = prix vente
+			if ((!isset($line->pa_ht) || $line->pa_ht == 0) && $line->subprice > 0 && (isset($conf->global->ForceBuyingPriceIfNull) && $conf->global->ForceBuyingPriceIfNull == 1)) {
+				$line->pa_ht = $line->subprice * (1 - ($line->remise_percent / 100));
+			}
+
+			// calcul des marges
+			if (isset($line->fk_remise_except) && isset($conf->global->MARGIN_METHODE_FOR_DISCOUNT)) {    // remise
+			    $pa = $line->qty * $line->pa_ht;
+			    $pv = $line->qty * $line->subprice * (1 - $line->remise_percent / 100);
+				if ($conf->global->MARGIN_METHODE_FOR_DISCOUNT == '1') { // remise globale considérée comme produit
+					$marginInfos['pa_products'] += $pa;
+					$marginInfos['pv_products'] += $pv;
+					$marginInfos['pa_total'] +=  $pa;
+					$marginInfos['pv_total'] +=  $pv;
+					// if credit note, margin = -1 * (abs(selling_price) - buying_price)
+					if ($pv < 0)
+						$marginInfos['margin_on_products'] += -1 * (abs($pv) - $pa);
+					else
+						$marginInfos['margin_on_products'] += $pv - $pa;
+				}
+				elseif ($conf->global->MARGIN_METHODE_FOR_DISCOUNT == '2') { // remise globale considérée comme service
+					$marginInfos['pa_services'] += $pa;
+					$marginInfos['pv_services'] += $pv;
+					$marginInfos['pa_total'] +=  $pa;
+					$marginInfos['pv_total'] +=  $pv;
+					// if credit note, margin = -1 * (abs(selling_price) - buying_price)
+					if ($pv < 0)
+						$marginInfos['margin_on_services'] += -1 * (abs($pv) - $pa);
+					else
+						$marginInfos['margin_on_services'] += $pv - $pa;
+				}
+				elseif ($conf->global->MARGIN_METHODE_FOR_DISCOUNT == '3') { // remise globale prise en compte uniqt sur total
+					$marginInfos['pa_total'] += $pa;
+					$marginInfos['pv_total'] += $pv;
+				}
+			}
+			else {
+				$type=$line->product_type?$line->product_type:$line->fk_product_type;
+				if ($type == 0) {  // product
+				    $pa = $line->qty * $line->pa_ht;
+				    $pv = $line->qty * $line->subprice * (1 - $line->remise_percent / 100);
+					$marginInfos['pa_products'] += $pa;
+					$marginInfos['pv_products'] += $pv;
+					$marginInfos['pa_total'] +=  $pa;
+					$marginInfos['pv_total'] +=  $pv;
+					// if credit note, margin = -1 * (abs(selling_price) - buying_price)
+					if ($pv < 0)
+						$marginInfos['margin_on_products'] += -1 * (abs($pv) - $pa);
+					else
+						$marginInfos['margin_on_products'] += $pv - $pa;
+				}
+				elseif ($type == 1) {  // service
+				    $pa = $line->qty * $line->pa_ht;
+				    $pv = $line->qty * $line->subprice * (1 - $line->remise_percent / 100);
+					$marginInfos['pa_services'] += $pa;
+					$marginInfos['pv_services'] += $pv;
+					$marginInfos['pa_total'] +=  $pa;
+					$marginInfos['pv_total'] +=  $pv;
+					// if credit note, margin = -1 * (abs(selling_price) - buying_price)
+					if ($pv < 0)
+						$marginInfos['margin_on_services'] += -1 * (abs($pv) - $pa);
+					else
+						$marginInfos['margin_on_services'] += $pv - $pa;
+				}
+			}
+		}
+		if ($marginInfos['pa_products'] > 0)
+			$marginInfos['margin_rate_products'] = 100 * $marginInfos['margin_on_products'] / $marginInfos['pa_products'];
+		if ($marginInfos['pv_products'] > 0)
+			$marginInfos['mark_rate_products'] = 100 * $marginInfos['margin_on_products'] / $marginInfos['pv_products'];
+
+		if ($marginInfos['pa_services'] > 0)
+			$marginInfos['margin_rate_services'] = 100 * $marginInfos['margin_on_services'] / $marginInfos['pa_services'];
+		if ($marginInfos['pv_services'] > 0)
+			$marginInfos['mark_rate_services'] = 100 * $marginInfos['margin_on_services'] / $marginInfos['pv_services'];
+
+		// if credit note, margin = -1 * (abs(selling_price) - buying_price)
+		if ($marginInfos['pv_total'] < 0)
+			$marginInfos['total_margin'] = -1 * (abs($marginInfos['pv_total']) - $marginInfos['pa_total']);
+		else
+			$marginInfos['total_margin'] = $marginInfos['pv_total'] - $marginInfos['pa_total'];
+		if ($marginInfos['pa_total'] > 0)
+			$marginInfos['total_margin_rate'] = 100 * $marginInfos['total_margin'] / $marginInfos['pa_total'];
+		if ($marginInfos['pv_total'] > 0)
+			$marginInfos['total_mark_rate'] = 100 * $marginInfos['total_margin'] / $marginInfos['pv_total'];
+
+		return $marginInfos;
+	}
+
+	/**
+	 * 	Show the array with all margin infos
+	 *
+	 *	@param	CommonObject	$object			Object we want to get margin information for
+	 * 	@param 	boolean			$force_price	Force price
+	 * 	@return	void
+	 */
+	function displayMarginInfos($object, $force_price=false)
+	{
+		global $langs, $conf, $user;
+
+    	if (! empty($user->societe_id)) return;
+
+    	if (! $user->rights->margins->liretous) return;
+
+        $rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT, $conf->global->MAIN_MAX_DECIMALS_TOT);
+
+		$marginInfo = $this->getMarginInfosArray($object, $force_price);
+
+		if (! empty($conf->global->MARGIN_ADD_SHOWHIDE_BUTTON))	// TODO Warning this feature rely on an external js file that may be removed. Using native js function document.cookie should be better
+		{
+			print $langs->trans('ShowMarginInfos').' : ';
+	        $hidemargininfos = $_COOKIE['DOLUSER_MARGININFO_HIDE_SHOW'];
+	    	print '<span id="showMarginInfos" class="linkobject '.(!empty($hidemargininfos)?'':'hideobject').'">'.img_picto($langs->trans("Disabled"),'switch_off').'</span>';
+	    	print '<span id="hideMarginInfos" class="linkobject '.(!empty($hidemargininfos)?'hideobject':'').'">'.img_picto($langs->trans("Enabled"),'switch_on').'</span>';
+
+    	    print '<script>$(document).ready(function() {
+        	    $("span#showMarginInfos").click(function() { $.getScript( "'.dol_buildpath('/includes/jquery/plugins/jquerytreeview/lib/jquery.cookie.js', 1).'", function( data, textStatus, jqxhr ) { $.cookie("DOLUSER_MARGININFO_HIDE_SHOW", 0); $(".margininfos").show(); $("span#showMarginInfos").addClass("hideobject"); $("span#hideMarginInfos").removeClass("hideobject");})});
+        	    $("span#hideMarginInfos").click(function() { $.getScript( "'.dol_buildpath('/includes/jquery/plugins/jquerytreeview/lib/jquery.cookie.js', 1).'", function( data, textStatus, jqxhr ) { $.cookie("DOLUSER_MARGININFO_HIDE_SHOW", 1); $(".margininfos").hide(); $("span#hideMarginInfos").addClass("hideobject"); $("span#showMarginInfos").removeClass("hideobject");})});
+      	        });</script>';
+    	    if (!empty($hidemargininfos)) print '<script>$(document).ready(function() {$(".margininfos").hide();});</script>';
+		}
+
+		print '<table class="nobordernopadding margintable" width="100%">';
+		print '<tr class="liste_titre">';
+		print '<td class="liste_titre">'.$langs->trans('Margins').'</td>';
+		print '<td class="liste_titre" align="right">'.$langs->trans('SellingPrice').'</td>';
+		if ($conf->global->MARGIN_TYPE == "1")
+			print '<td class="liste_titre" align="right">'.$langs->trans('BuyingPrice').'</td>';
+		else
+			print '<td class="liste_titre" align="right">'.$langs->trans('CostPrice').'</td>';
+		print '<td class="liste_titre" align="right">'.$langs->trans('Margin').'</td>';
+		if (! empty($conf->global->DISPLAY_MARGIN_RATES))
+			print '<td class="liste_titre" align="right">'.$langs->trans('MarginRate').'</td>';
+		if (! empty($conf->global->DISPLAY_MARK_RATES))
+			print '<td class="liste_titre" align="right">'.$langs->trans('MarkRate').'</td>';
+		print '</tr>';
+
+		if (! empty($conf->product->enabled))
+		{
+			//if ($marginInfo['margin_on_products'] != 0 && $marginInfo['margin_on_services'] != 0) {
+			print '<tr class="impair">';
+			print '<td>'.$langs->trans('MarginOnProducts').'</td>';
+			print '<td align="right">'.price($marginInfo['pv_products'], null, null, null, null, $rounding).'</td>';
+			print '<td align="right">'.price($marginInfo['pa_products'], null, null, null, null, $rounding).'</td>';
+			print '<td align="right">'.price($marginInfo['margin_on_products'], null, null, null, null, $rounding).'</td>';
+			if (! empty($conf->global->DISPLAY_MARGIN_RATES))
+				print '<td align="right">'.(($marginInfo['margin_rate_products'] == '')?'':price($marginInfo['margin_rate_products'], null, null, null, null, $rounding).'%').'</td>';
+			if (! empty($conf->global->DISPLAY_MARK_RATES))
+				print '<td align="right">'.(($marginInfo['mark_rate_products'] == '')?'':price($marginInfo['mark_rate_products'], null, null, null, null, $rounding).'%').'</td>';
+			print '</tr>';
+		}
+
+		if (! empty($conf->service->enabled))
+		{
+			print '<tr class="pair">';
+			print '<td>'.$langs->trans('MarginOnServices').'</td>';
+			print '<td align="right">'.price($marginInfo['pv_services'], null, null, null, null, $rounding).'</td>';
+			print '<td align="right">'.price($marginInfo['pa_services'], null, null, null, null, $rounding).'</td>';
+			print '<td align="right">'.price($marginInfo['margin_on_services'], null, null, null, null, $rounding).'</td>';
+			if (! empty($conf->global->DISPLAY_MARGIN_RATES))
+				print '<td align="right">'.(($marginInfo['margin_rate_services'] == '')?'':price($marginInfo['margin_rate_services'], null, null, null, null, $rounding).'%').'</td>';
+			if (! empty($conf->global->DISPLAY_MARK_RATES))
+				print '<td align="right">'.(($marginInfo['mark_rate_services'] == '')?'':price($marginInfo['mark_rate_services'], null, null, null, null, $rounding).'%').'</td>';
+			print '</tr>';
+		}
+
+		if (! empty($conf->product->enabled) && ! empty($conf->service->enabled))
+		{
+			print '<tr class="impair">';
+			print '<td>'.$langs->trans('TotalMargin').'</td>';
+			print '<td align="right">'.price($marginInfo['pv_total'], null, null, null, null, $rounding).'</td>';
+			print '<td align="right">'.price($marginInfo['pa_total'], null, null, null, null, $rounding).'</td>';
+			print '<td align="right">'.price($marginInfo['total_margin'], null, null, null, null, $rounding).'</td>';
+			if (! empty($conf->global->DISPLAY_MARGIN_RATES))
+				print '<td align="right">'.(($marginInfo['total_margin_rate'] == '')?'':price($marginInfo['total_margin_rate'], null, null, null, null, $rounding).'%').'</td>';
+			if (! empty($conf->global->DISPLAY_MARK_RATES))
+				print '<td align="right">'.(($marginInfo['total_mark_rate'] == '')?'':price($marginInfo['total_mark_rate'], null, null, null, null, $rounding).'%').'</td>';
+			print '</tr>';
+		}
+		print '</table>';
+	}
+
+}
+
diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php
index 08c19463d27dd680cf76c5dad65550968dd470b8..4f286d26eb7590f794e40aa12066b9796e7bd02c 100644
--- a/htdocs/core/class/html.formother.class.php
+++ b/htdocs/core/class/html.formother.class.php
@@ -592,6 +592,7 @@ class FormOther
      * 		@param 	array		$arrayofcolors	Array of colors. Example: array('29527A','5229A3','A32929','7A367A','B1365F','0D7813')
      * 		@return	void
      * 		@deprecated
+     *      @see selectColor()
      */
     function select_color($set_color='', $prefix='f_color', $form_name='', $showcolorbox=1, $arrayofcolors='')
     {
@@ -599,7 +600,7 @@ class FormOther
     }
 
     /**
-     *		Output a HTML code to select a color
+     *		Output a HTML code to select a color. Field will return an hexa color like '334455'.
      *
      *		@param	string		$set_color		Pre-selected color
      *		@param	string		$prefix			Name of HTML field
@@ -611,6 +612,11 @@ class FormOther
      */
     function selectColor($set_color='', $prefix='f_color', $form_name='', $showcolorbox=1, $arrayofcolors='', $morecss='')
     {
+	    // Deprecation warning
+	    if ($form_name) {
+		    dol_syslog(__METHOD__ . ": form_name parameter is deprecated", LOG_WARNING);
+	    }
+
         global $langs,$conf;
 
         $out='';
diff --git a/htdocs/core/class/html.formprojet.class.php b/htdocs/core/class/html.formprojet.class.php
index 9469b680631c45a326071ce920e87ba64778b241..6411c76eeabd2620c4f015b195e207b285ec6b56 100644
--- a/htdocs/core/class/html.formprojet.class.php
+++ b/htdocs/core/class/html.formprojet.class.php
@@ -53,9 +53,10 @@ class FormProjets
 	 *	@param	int		$show_empty		Add an empty line
 	 *  @param	int		$discard_closed Discard closed projects (0=Keep,1=hide completely,2=Disable)
      *  @param	int		$forcefocus		Force focus on field (works with javascript only)
+     *  @param	int		$disabled		Disabled
 	 *	@return int         			Nber of project if OK, <0 if KO
 	 */
-	function select_projects($socid=-1, $selected='', $htmlname='projectid', $maxlength=24, $option_only=0, $show_empty=1, $discard_closed=0, $forcefocus=0)
+	function select_projects($socid=-1, $selected='', $htmlname='projectid', $maxlength=24, $option_only=0, $show_empty=1, $discard_closed=0, $forcefocus=0, $disabled=0)
 	{
 		global $user,$conf,$langs;
 
@@ -82,7 +83,7 @@ class FormProjets
 		if ($socid > 0)  $sql.= " AND (p.fk_soc=".$socid." OR p.fk_soc IS NULL)";
 		$sql.= " ORDER BY p.ref ASC";
 
-		dol_syslog(get_class($this)."::select_projects", LOG_DEBUG);
+		dol_syslog(__METHOD__, LOG_DEBUG);
 		$resql=$this->db->query($sql);
 		if ($resql)
 		{
@@ -100,7 +101,7 @@ class FormProjets
 			}
 
 			if (empty($option_only)) {
-				$out.= '<select class="flat'.($minmax?' '.$minmax:'').'" id="'.$htmlname.'" name="'.$htmlname.'"'.$nodatarole.'>';
+				$out.= '<select class="flat'.($minmax?' '.$minmax:'').'"'.($disabled?' disabled="disabled"':'').' id="'.$htmlname.'" name="'.$htmlname.'"'.$nodatarole.'>';
 			}
 			if (!empty($show_empty)) {
 				$out.= '<option value="0">&nbsp;</option>';
@@ -147,13 +148,15 @@ class FormProjets
 							$labeltoshow.=' - '.$langs->trans("LinkedToAnotherCompany");
 						}
 
-						if (!empty($selected) && $selected == $obj->rowid && $obj->fk_statut > 0)
+						if (!empty($selected) && $selected == $obj->rowid)
 						{
-							$out.= '<option value="'.$obj->rowid.'" selected>'.$labeltoshow.'</option>';
+							$out.= '<option value="'.$obj->rowid.'" selected';
+							//if ($disabled) $out.=' disabled';						// with select2, field can't be preselected if disabled
+							$out.= '>'.$labeltoshow.'</option>';
 						}
 						else
 						{
-							if ($hideunselectables && $disabled)
+							if ($hideunselectables && $disabled && ($selected != $obj->rowid))
 							{
 								$resultat='';
 							}
@@ -189,17 +192,173 @@ class FormProjets
 		}
 	}
 
+	/**
+	 *	Output a combo list with projects qualified for a third party
+	 *
+	 *	@param	int		$socid      	Id third party (-1=all, 0=only projects not linked to a third party, id=projects not linked or linked to third party id)
+	 *	@param  int		$selected   	Id task preselected
+	 *	@param  string	$htmlname   	Nom de la zone html
+	 *	@param	int		$maxlength		Maximum length of label
+	 *	@param	int		$option_only	Return only html options lines without the select tag
+	 *	@param	int		$show_empty		Add an empty line
+	 *  @param	int		$discard_closed Discard closed projects (0=Keep,1=hide completely,2=Disable)
+     *  @param	int		$forcefocus		Force focus on field (works with javascript only)
+     *  @param	int		$disabled		Disabled
+	 *	@return int         			Nber of project if OK, <0 if KO
+	 */
+	function select_task($socid=-1, $selected='', $htmlname='taskid', $maxlength=24, $option_only=0, $show_empty=1, $discard_closed=0, $forcefocus=0, $disabled=0)
+	{
+		global $user,$conf,$langs;
+
+		require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
+
+		$out='';
+
+		$hideunselectables = false;
+		if (! empty($conf->global->PROJECT_HIDE_UNSELECTABLES)) $hideunselectables = true;
+
+		$projectsListId = false;
+		if (empty($user->rights->projet->all->lire))
+		{
+			$projectstatic=new Project($this->db);
+			$projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,0,1);
+		}
+
+		// Search all projects
+		$sql = 'SELECT t.rowid, t.ref as tref, t.label as tlabel, p.ref, p.title, p.fk_soc, p.fk_statut, p.public';
+		$sql.= ' FROM '.MAIN_DB_PREFIX .'projet as p, '.MAIN_DB_PREFIX.'projet_task as t';
+		$sql.= " WHERE p.entity = ".$conf->entity;
+		$sql.= " AND t.fk_projet = p.rowid";
+		if ($projectsListId !== false) $sql.= " AND p.rowid IN (".$projectsListId.")";
+		if ($socid == 0) $sql.= " AND (p.fk_soc=0 OR p.fk_soc IS NULL)";
+		if ($socid > 0)  $sql.= " AND (p.fk_soc=".$socid." OR p.fk_soc IS NULL)";
+		$sql.= " ORDER BY p.ref, t.ref ASC";
+
+		dol_syslog(__METHOD__, LOG_DEBUG);
+		$resql=$this->db->query($sql);
+		if ($resql)
+		{
+			$minmax='';
+
+			// Use select2 selector
+			$nodatarole='';
+			if (! empty($conf->use_javascript_ajax))
+			{
+				include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
+	           	$comboenhancement = ajax_combobox($htmlname, '', 0, $forcefocus);
+            	$out.=$comboenhancement;
+            	$nodatarole=($comboenhancement?' data-role="none"':'');
+            	$minmax='minwidth100';
+			}
+
+			if (empty($option_only)) {
+				$out.= '<select class="flat'.($minmax?' '.$minmax:'').'"'.($disabled?' disabled="disabled"':'').' id="'.$htmlname.'" name="'.$htmlname.'"'.$nodatarole.'>';
+			}
+			if (!empty($show_empty)) {
+				$out.= '<option value="0">&nbsp;</option>';
+			}
+			$num = $this->db->num_rows($resql);
+			$i = 0;
+			if ($num)
+			{
+				while ($i < $num)
+				{
+					$obj = $this->db->fetch_object($resql);
+					// If we ask to filter on a company and user has no permission to see all companies and project is linked to another company, we hide project.
+					if ($socid > 0 && (empty($obj->fk_soc) || $obj->fk_soc == $socid) && ! $user->rights->societe->lire)
+					{
+						// Do nothing
+					}
+					else
+					{
+						if ($discard_closed == 1 && $obj->fk_statut == 2)
+						{
+							$i++;
+							continue;
+						}
+
+						$labeltoshow=dol_trunc($obj->ref,18);
+						//if ($obj->public) $labeltoshow.=' ('.$langs->trans("SharedProject").')';
+						//else $labeltoshow.=' ('.$langs->trans("Private").')';
+						$labeltoshow.=' '.dol_trunc($obj->title,$maxlength);
+
+						$disabled=0;
+						if ($obj->fk_statut == 0)
+						{
+							$disabled=1;
+							$labeltoshow.=' - '.$langs->trans("Draft");
+						}
+						else if ($obj->fk_statut == 2)
+						{
+							if ($discard_close == 2) $disabled=1;
+							$labeltoshow.=' - '.$langs->trans("Closed");
+						}
+						else if ($socid > 0 && (! empty($obj->fk_soc) && $obj->fk_soc != $socid))
+						{
+							$disabled=1;
+							$labeltoshow.=' - '.$langs->trans("LinkedToAnotherCompany");
+						}
+						// Label for task
+						$labeltoshow.=' - '.$obj->tref.' '.dol_trunc($obj->tlabel,$maxlenght);
+						
+						if (!empty($selected) && $selected == $obj->rowid)
+						{
+							$out.= '<option value="'.$obj->rowid.'" selected';
+							//if ($disabled) $out.=' disabled';						// with select2, field can't be preselected if disabled
+							$out.= '>'.$labeltoshow.'</option>';
+						}
+						else
+						{
+							if ($hideunselectables && $disabled && ($selected != $obj->rowid))
+							{
+								$resultat='';
+							}
+							else
+							{
+								$resultat='<option value="'.$obj->rowid.'"';
+								if ($disabled) $resultat.=' disabled';
+								//if ($obj->public) $labeltoshow.=' ('.$langs->trans("Public").')';
+								//else $labeltoshow.=' ('.$langs->trans("Private").')';
+								$resultat.='>';
+								$resultat.=$labeltoshow;
+								$resultat.='</option>';
+							}
+							$out.= $resultat;
+						}
+					}
+					$i++;
+				}
+			}
+			if (empty($option_only)) {
+				$out.= '</select>';
+			}
+
+			print $out;
+
+			$this->db->free($resql);
+			return $num;
+		}
+		else
+		{
+			dol_print_error($this->db);
+			return -1;
+		}
+	}
+	
+	
 	/**
 	 *    Build a HTML select list of element of same thirdparty to suggest to link them to project
 	 *
 	 *    @param	string		$table_element		Table of the element to update
 	 *    @param	int			$socid				socid to filter
-	 *    @return	string							The HTML select list of element
+	 *    @return	int|string						The HTML select list of element or '' if nothing or -1 if KO
 	 */
 	function select_element($table_element,$socid=0)
 	{
 		global $conf, $langs;
 
+		if ($table_element == 'projet_task') return '';		// Special cas of element we never link to a project (already always done)
+
 		$projectkey="fk_projet";
 		switch ($table_element)
 		{
@@ -231,7 +390,7 @@ class FormProjets
 
 		$sql.= " FROM ".MAIN_DB_PREFIX.$table_element;
 		$sql.= " WHERE ".$projectkey." is null";
-		if (!empty($socid)) $sql.= " AND fk_soc=".$socid;
+		if (! empty($socid) && ! in_array($table_element, array('don'))) $sql.= " AND fk_soc=".$socid;
 		if (! in_array($table_element, array('expensereport_det'))) $sql.= ' AND entity='.getEntity('project');
 		$sql.= " ORDER BY ref DESC";
 
diff --git a/htdocs/core/class/translate.class.php b/htdocs/core/class/translate.class.php
index 0e55da2769a5deeaf048943e9964cd7781eead12..9b4987ddb56572b7d83f6b09912c2af533f25bb3 100644
--- a/htdocs/core/class/translate.class.php
+++ b/htdocs/core/class/translate.class.php
@@ -707,6 +707,7 @@ class Translate
 	 *  @param	string	$amount				If not '', show currency + amount according to langs ($10, 10€).
 	 *  @return	string						Amount + Currency symbol encoded into UTF8
 	 *  @deprecated							Use method price to output a price
+	 *  @see price()
 	 */
 	function getCurrencyAmount($currency_code, $amount)
 	{
diff --git a/htdocs/core/db/DoliDB.class.php b/htdocs/core/db/DoliDB.class.php
index 6a7c52760258f2af898f127b9cbb1f5ebde2c3e0..c4908595493032904bb14c17e62586b97b70d36a 100644
--- a/htdocs/core/db/DoliDB.class.php
+++ b/htdocs/core/db/DoliDB.class.php
@@ -55,7 +55,7 @@ abstract class DoliDB implements Database
 	public $transaction_opened;
 	/** @var string Last successful query */
 	public $lastquery;
-	/** @ar string Last failed query */
+	/** @var string Last failed query */
 	public $lastqueryerror;
 	/** @var string Last error message */
 	public $lasterror;
diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php
index 3901e3231df2fec9daa0b37c5290799c82c5c7bb..05204885c9cbd82d5fe812a706f0756d136249a1 100644
--- a/htdocs/core/lib/admin.lib.php
+++ b/htdocs/core/lib/admin.lib.php
@@ -833,6 +833,7 @@ function unActivateModule($value, $requiredby=1)
     {
         $objMod = new $modName($db);
         $result=$objMod->remove();
+        if ($result <= 0) $ret=$objMod->error;
     }
     else
     {
@@ -846,7 +847,7 @@ function unActivateModule($value, $requiredby=1)
     }
 
     // Desactivation des modules qui dependent de lui
-    if ($requiredby)
+    if (! $ret && $requiredby)
     {
         $countrb=count($objMod->requiredby);
         for ($i = 0; $i < $countrb; $i++)
@@ -1083,18 +1084,18 @@ function form_constantes($tableau,$strictw3c=0)
             if ($const == 'ADHERENT_MAILMAN_URL')
             {
                 print '. '.$langs->trans("Example").': <a href="#" id="exampleclick1">'.img_down().'</a><br>';
-                //print 'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&subscribees=%EMAIL%&send_welcome_msg_to_this_batch=1';
+                //print 'http://lists.exampe.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&subscribees=%EMAIL%&send_welcome_msg_to_this_batch=1';
                 print '<div id="example1" class="hidden">';
-                print 'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members/add?subscribees_upload=%EMAIL%&amp;adminpw=%MAILMAN_ADMINPW%&amp;subscribe_or_invite=0&amp;send_welcome_msg_to_this_batch=0&amp;notification_to_list_owner=0';
+                print 'http://lists.example.com/cgi-bin/mailman/admin/%LISTE%/members/add?subscribees_upload=%EMAIL%&amp;adminpw=%MAILMAN_ADMINPW%&amp;subscribe_or_invite=0&amp;send_welcome_msg_to_this_batch=0&amp;notification_to_list_owner=0';
                 print '</div>';
             }
             if ($const == 'ADHERENT_MAILMAN_UNSUB_URL')
             {
                 print '. '.$langs->trans("Example").': <a href="#" id="exampleclick2">'.img_down().'</a><br>';
                 print '<div id="example2" class="hidden">';
-                print 'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members/remove?unsubscribees_upload=%EMAIL%&amp;adminpw=%MAILMAN_ADMINPW%&amp;send_unsub_ack_to_this_batch=0&amp;send_unsub_notifications_to_list_owner=0';
+                print 'http://lists.example.com/cgi-bin/mailman/admin/%LISTE%/members/remove?unsubscribees_upload=%EMAIL%&amp;adminpw=%MAILMAN_ADMINPW%&amp;send_unsub_ack_to_this_batch=0&amp;send_unsub_notifications_to_list_owner=0';
                 print '</div>';
-                //print 'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members/remove?adminpw=%MAILMAN_ADMINPW%&unsubscribees=%EMAIL%';
+                //print 'http://lists.example.com/cgi-bin/mailman/admin/%LISTE%/members/remove?adminpw=%MAILMAN_ADMINPW%&unsubscribees=%EMAIL%';
             }
             if ($const == 'ADHERENT_MAILMAN_LISTS')
             {
@@ -1105,7 +1106,7 @@ function form_constantes($tableau,$strictw3c=0)
             	print 'TYPE:Type1:mymailmanlist1,TYPE:Type2:mymailmanlist2<br>';
             	if ($conf->categorie->enabled) print 'CATEG:Categ1:mymailmanlist1,CATEG:Categ2:mymailmanlist2<br>';
             	print '</div>';
-            	//print 'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members/remove?adminpw=%MAILMAN_ADMINPW%&unsubscribees=%EMAIL%';
+            	//print 'http://lists.example.com/cgi-bin/mailman/admin/%LISTE%/members/remove?adminpw=%MAILMAN_ADMINPW%&unsubscribees=%EMAIL%';
             }
 
             print "</td>\n";
diff --git a/htdocs/core/lib/agenda.lib.php b/htdocs/core/lib/agenda.lib.php
index 8013896d7bd787d9915239d9c8088d6df47e3cb8..fd2a3cd40993557b8bf23aa46f1372732527c8bf 100644
--- a/htdocs/core/lib/agenda.lib.php
+++ b/htdocs/core/lib/agenda.lib.php
@@ -103,7 +103,7 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh
 		print '<td class="nowrap" style="padding-bottom: 2px; padding-right: 4px;">';
 		print $langs->trans("ThirdParty").' &nbsp; ';
 		print '</td><td class="nowrap maxwidthonsmartphone" style="padding-bottom: 2px;">';
-		print $form->select_thirdparty($socid, 'socid');
+		print $form->select_company($socid, 'socid');
 		print '</td></tr>';
 	}
 
@@ -421,6 +421,15 @@ function actions_prepare_head($object)
 	$head[$h][2] = 'card';
 	$h++;
 
+    // Tab to link resources
+	if ($conf->resource->enabled)
+	{
+		$head[$h][0] = DOL_URL_ROOT.'/resource/element_resource.php?element=action&element_id='.$object->id;
+		$head[$h][1] = $langs->trans("Resources");
+		$head[$h][2] = 'resources';
+		$h++;
+	}
+
     // Attached files
     require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
     $upload_dir = $conf->agenda->dir_output . "/" . $object->id;
diff --git a/htdocs/core/lib/ajax.lib.php b/htdocs/core/lib/ajax.lib.php
index 0b119ada66ae9ba9e37b792c3292442961b2b340..db47ad041e247930e582b33fc3da81d9d9e4222d 100644
--- a/htdocs/core/lib/ajax.lib.php
+++ b/htdocs/core/lib/ajax.lib.php
@@ -1,6 +1,6 @@
 <?php
 /* Copyright (C) 2007-2010 Laurent Destailleur  <eldy@users.sourceforge.net>
- * Copyright (C) 2007-2014 Regis Houssin        <regis.houssin@capnetworks.com>
+ * Copyright (C) 2007-2015 Regis Houssin        <regis.houssin@capnetworks.com>
  * Copyright (C) 2012      Christophe Battarel  <christophe.battarel@altairis.fr>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -328,16 +328,19 @@ function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $
 
 	if (empty($minLengthToAutocomplete)) $minLengthToAutocomplete=0;
 
-	$msg = '<script type="text/javascript">
-		$(document).ready(function() {
-			$(\'#'.$htmlname.'\').select2({
-				width: \'resolve\',
-				minimumInputLength: '.$minLengthToAutocomplete.',
-			})';
+    $tmpplugin='select2';
+    $msg='<!-- JS CODE TO ENABLE '.$tmpplugin.' for id '.$htmlname.' -->
+          <script type="text/javascript">
+        	$(document).ready(function () {
+        		$(\''.(preg_match('/^\./',$htmlname)?$htmlname:'#'.$htmlname).'\').'.$tmpplugin.'({
+        		    dir: \'ltr\',
+        			width: \'resolve\',		/* off or resolve */
+					minimumInputLength: '.$minLengthToAutocomplete.'
+				})';
 	if ($forcefocus) $msg.= '.select2(\'focus\')';
-	$msg.= ';';
+	$msg.= ';'."\n";
 
-	if (count($event))
+	if (count($events))
 	{
 		$msg.= '
 			jQuery("#'.$htmlname.'").change(function () {
diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php
index 4eb338528360f7b540f0f706377dd952a91510a9..c4385b6324eaf1b1aefed7383edd5542349804ef 100644
--- a/htdocs/core/lib/company.lib.php
+++ b/htdocs/core/lib/company.lib.php
@@ -82,7 +82,7 @@ function societe_prepare_head(Societe $object)
     	$h++;
     }
     //show categorie tab
-    if (! empty($conf->categorie->enabled)  && ! empty($user->rights->categorie->lire))
+    /*if (! empty($conf->categorie->enabled)  && ! empty($user->rights->categorie->lire))
     {
 		require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php';
         $type = Categorie::TYPE_CUSTOMER;
@@ -91,7 +91,16 @@ function societe_prepare_head(Societe $object)
         $head[$h][1] = $langs->trans('Categories');
         $head[$h][2] = 'category';
         $h++;
-    }
+    }*/
+
+    // Tab to link resources
+	if ($conf->resource->enabled && ! empty($conf->global->RESOURCE_ON_THIRDPARTIES))
+	{
+		$head[$h][0] = DOL_URL_ROOT.'/resource/element_resource.php?element=societe&element_id='.$object->id;
+		$head[$h][1] = $langs->trans("Resources");
+		$head[$h][2] = 'resources';
+		$h++;
+	}
 
     // Show more tabs from modules
     // Entries must be declared in modules descriptor with line
@@ -355,7 +364,7 @@ function getState($id,$withcode='',$dbtouse=0)
         }
         else
         {
-            return $langs->trans("NotDefined");
+            return $langs->transnoentitiesnoconv("NotDefined");
         }
     }
     else dol_print_error($dbtouse,'');
@@ -657,7 +666,7 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='')
     print "</tr>";
 
 
-    $sql = "SELECT p.rowid, p.lastname, p.firstname, p.fk_pays as country_id, p.poste, p.phone, p.phone_mobile, p.phone_perso, p.fax, p.email, p.skype, p.statut ";
+    $sql = "SELECT p.rowid, p.lastname, p.firstname, p.fk_pays as country_id, p.civility, p.poste, p.phone as phone_pro, p.phone_mobile, p.phone_perso, p.fax, p.email, p.skype, p.statut ";
     $sql .= ", p.civility as civility_id, p.address, p.zip, p.town";
     $sql .= " FROM ".MAIN_DB_PREFIX."socpeople as p";
     $sql .= " WHERE p.fk_soc = ".$object->id;
@@ -667,6 +676,8 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='')
 
     dol_syslog('core/lib/company.lib.php :: show_contacts', LOG_DEBUG);
     $result = $db->query($sql);
+    if (! $result) dol_print_error($db);
+
     $num = $db->num_rows($result);
 
 	$var=true;
@@ -686,6 +697,14 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='')
             $contactstatic->lastname = $obj->lastname;
             $contactstatic->firstname = $obj->firstname;
             $contactstatic->civility_id = $obj->civility_id;
+            $contactstatic->poste = $obj->poste;
+            $contactstatic->address = $obj->address;
+            $contactstatic->zip = $obj->zip;
+            $contactstatic->town = $obj->town;
+            $contactstatic->phone_pro = $obj->phone_pro;
+            $contactstatic->phone_mobile = $obj->phone_mobile;
+            $contactstatic->phone_perso = $obj->phone_perso;
+            $contactstatic->email = $obj->email;
             print $contactstatic->getNomUrl(1,'',0,'&backtopage='.urlencode($backtopage));
 			print '</td><td>';
             if ($obj->poste) print $obj->poste;
@@ -710,11 +729,13 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='')
             	print '</a> ';
             }
             if ($coords) { print dol_print_address($coords,'address_contact_'.$obj->rowid, 'contact', $obj->rowid); $outdone++; }
-            if ($obj->phone || $obj->phone_mobile || $obj->phone_perso) print ($outdone?'<br>':'');
-            if ($obj->phone) { print dol_print_phone($obj->phone,$country_code['code'],$obj->rowid,$object->id,'AC_TEL','&nbsp;','phone'); $outdone++; }
+
+            if ($obj->phone_pro || $obj->phone_mobile || $obj->phone_perso || $obj->fax) print ($outdone?'<br>':'');
+            if ($obj->phone_pro) { print dol_print_phone($obj->phone_pro,$country_code['code'],$obj->rowid,$object->id,'AC_TEL','&nbsp;','phone'); $outdone++; }
             if ($obj->phone_mobile) { print dol_print_phone($obj->phone_mobile,$country_code['code'],$obj->rowid,$object->id,'AC_TEL','&nbsp;','phone'); $outdone++; }
             if ($obj->phone_perso) { print dol_print_phone($obj->phone_perso,$country_code['code'],$obj->rowid,$object->id,'AC_TEL','&nbsp;','phone'); $outdone++; }
             if ($obj->fax) { print dol_print_phone($obj->fax,$country_code['code'],$obj->rowid,$object->id,'AC_FAX','&nbsp;','fax'); $outdone++; }
+
             print '<div style="clear: both;"></div>';
             $outdone=0;
             if ($obj->email) print dol_print_email($obj->email,$obj->rowid,$object->id,'AC_EMAIL',0,0,1);
diff --git a/htdocs/core/lib/contact.lib.php b/htdocs/core/lib/contact.lib.php
index 3a50b79edd7825121cf268dc370c3a2ee2300f84..40dab648de1cb00e3137b70b993acd4c7d787fbd 100644
--- a/htdocs/core/lib/contact.lib.php
+++ b/htdocs/core/lib/contact.lib.php
@@ -87,16 +87,6 @@ function contact_prepare_head(Contact $object)
     $head[$tab][2] = 'documents';
     $tab++;
 
-    if (! empty($conf->categorie->enabled)  && ! empty($user->rights->categorie->lire))
-    {
-		require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php';
-    	$type = Categorie::TYPE_CONTACT;
-    	$head[$tab][0] = DOL_URL_ROOT.'/categories/categorie.php?id='.$object->id."&type=".$type;
-    	$head[$tab][1] = $langs->trans('Categories');
-    	$head[$tab][2] = 'category';
-    	$tab++;
-    }
-
     // Info
     $head[$tab][0] = DOL_URL_ROOT.'/contact/info.php?id='.$object->id;
 	$head[$tab][1] = $langs->trans("Info");
diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php
index 44507bbb919ad82ca6e34cd2ee4e44e52504e226..088c36e06df8754af3892a22ceddc806c55e82f1 100644
--- a/htdocs/core/lib/date.lib.php
+++ b/htdocs/core/lib/date.lib.php
@@ -278,8 +278,8 @@ function convertSecondToTime($iSecond, $format='all', $lengthOfDay=86400, $lengt
  *	                 			YYYYMMDDHHMMSS
  *								YYYYMMDDTHHMMSSZ
  *								YYYY-MM-DDTHH:MM:SSZ (RFC3339)
- *		                		DD/MM/YY or DD/MM/YYYY (this format should not be used anymore)
- *		                		DD/MM/YY HH:MM:SS or DD/MM/YYYY HH:MM:SS (this format should not be used anymore)
+ *		                		DD/MM/YY or DD/MM/YYYY (deprecated)
+ *		                		DD/MM/YY HH:MM:SS or DD/MM/YYYY HH:MM:SS (deprecated)
  *  @param	int		$gm         1 =Input date is GM date,
  *                              0 =Input date is local date using PHP server timezone
  *  @return	int					Date as a timestamp
@@ -292,7 +292,7 @@ function dol_stringtotime($string, $gm=1)
     // Convert date with format DD/MM/YYY HH:MM:SS. This part of code should not be used.
     if (preg_match('/^([0-9]+)\/([0-9]+)\/([0-9]+)\s?([0-9]+)?:?([0-9]+)?:?([0-9]+)?/i',$string,$reg))
     {
-        dol_syslog("dol_stringtotime call to function with deprecated parameter", LOG_WARNING);
+        dol_syslog("dol_stringtotime call to function with deprecated parameter format", LOG_WARNING);
         // Date est au format 'DD/MM/YY' ou 'DD/MM/YY HH:MM:SS'
         // Date est au format 'DD/MM/YYYY' ou 'DD/MM/YYYY HH:MM:SS'
         $sday = $reg[1];
diff --git a/htdocs/core/lib/donation.lib.php b/htdocs/core/lib/donation.lib.php
index 1fdd23996106d38ef50a4603b64e46579b935375..5cc5c2d6785680be8df10b39771e55fb4e3ff579 100644
--- a/htdocs/core/lib/donation.lib.php
+++ b/htdocs/core/lib/donation.lib.php
@@ -24,15 +24,14 @@
 /**
  *	Prepare array with list of admin tabs
  *
- *	@param	Donation	$object		Donation
  *	@return	array					Array of tabs to show
  */
-function donation_admin_prepare_head($object)
+function donation_admin_prepare_head()
 {
 	global $langs, $conf;
 
 	$h = 0;
-	$head = array ();
+	$head = array();
 
 	$head[$h][0] = DOL_URL_ROOT . '/don/admin/donation.php';
 	$head[$h][1] = $langs->trans("Miscellaneous");
@@ -43,14 +42,14 @@ function donation_admin_prepare_head($object)
 	// Entries must be declared in modules descriptor with line
 	// $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab
 	// $this->tabs = array('entity:-tabname); to remove a tab
-	complete_head_from_modules($conf, $langs, $object, $head, $h, 'donation_admin');
+	complete_head_from_modules($conf, $langs, null, $head, $h, 'donation_admin');
 	
 	$head[$h][0] = DOL_URL_ROOT . '/don/admin/donation_extrafields.php';
 	$head[$h][1] = $langs->trans("ExtraFields");
     $head[$h][2] = 'attributes';
 	$h++;
 
-	complete_head_from_modules($conf, $langs, $object, $head, $h, 'donation_admin', 'remove');
+	complete_head_from_modules($conf, $langs, null, $head, $h, 'donation_admin', 'remove');
 
 	return $head;
 }
@@ -66,7 +65,7 @@ function donation_prepare_head($object)
 	global $langs, $conf;
 
 	$h = 0;
-	$head = array ();
+	$head = array();
 
 	$head[$h][0] = DOL_URL_ROOT . '/don/card.php?id=' . $object->id;
 	$head[$h][1] = $langs->trans("Card");
@@ -79,6 +78,15 @@ function donation_prepare_head($object)
 	// $this->tabs = array('entity:-tabname); to remove a tab
 	complete_head_from_modules($conf, $langs, $object, $head, $h, 'donation');
 
+	require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
+	$upload_dir = $conf->don->dir_output . '/' . get_exdir($filename,2,0,1,$object,'donation'). '/'. dol_sanitizeFileName($object->ref);
+	$nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$'));
+	$head[$h][0] = DOL_URL_ROOT.'/don/document.php?id='.$object->id;
+	$head[$h][1] = $langs->trans('Documents');
+	if($nbFiles > 0) $head[$h][1].= ' <span class="badge">'.$nbFiles.'</span>';
+	$head[$h][2] = 'documents';
+	$h++;
+
 	$head[$h][0] = DOL_URL_ROOT . '/don/info.php?id=' . $object->id;
 	$head[$h][1] = $langs->trans("Info");
 	$head[$h][2] = 'info';
diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php
index daae392cd393af2a443b385d43d713bb82e65e51..a8eeb8d3214e5e4477c86619eb580e40c5d41500 100644
--- a/htdocs/core/lib/files.lib.php
+++ b/htdocs/core/lib/files.lib.php
@@ -152,7 +152,7 @@ function dol_dir_list($path, $types="all", $recursive=0, $filter="", $excludefil
 						// if we're in a directory and we want recursive behavior, call this function again
 						if ($recursive)
 						{
-							$file_list = array_merge($file_list,dol_dir_list($path."/".$file, $types, $recursive, $filter, $excludefilter, $sortcriteria, $sortorder, $mode));
+							$file_list = array_merge($file_list,dol_dir_list($path."/".$file, $types, $recursive, $filter, $excludefilter, $sortcriteria, $sortorder, $mode, $nohook));
 						}
 					}
 					else if (! $isdir && (($types == "files") || ($types == "all")))
@@ -793,12 +793,12 @@ function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite, $disable
 /**
  *  Remove a file or several files with a mask
  *
- *  @param	string	$file           File to delete or mask of file to delete
- *  @param  int		$disableglob    Disable usage of glob like *
+ *  @param	string	$file           File to delete or mask of files to delete
+ *  @param  int		$disableglob    Disable usage of glob like * so function is an exact delete function that will return error if no file found
  *  @param  int		$nophperrors    Disable all PHP output errors
  *  @param	int		$nohook			Disable all hooks
  *  @param	object	$object			Current object in use
- *  @return boolean         		True if file is deleted (or if glob is used and there's nothing to delete), False if error
+ *  @return boolean         		True if no error (file is deleted or if glob is used and there's nothing to delete), False if error
  */
 function dol_delete_file($file,$disableglob=0,$nophperrors=0,$nohook=0,$object=null)
 {
@@ -823,19 +823,20 @@ function dol_delete_file($file,$disableglob=0,$nophperrors=0,$nohook=0,$object=n
 		$reshook=$hookmanager->executeHooks('deleteFile', $parameters, $object);
 	}
 
-	if (empty($nohook) && isset($reshook) && $reshook != '') // 0:not deleted, 1:deleted, null or '' for bypass
+	if (empty($nohook) && $reshook != 0) // reshook = 0 to do standard actions, 1 = ok, -1 = ko
 	{
-		return $reshook;
+		if ($reshook < 0) return false;
+		return true;
 	}
 	else
 	{
 		$error=0;
 
 		//print "x".$file." ".$disableglob;exit;
-		$ok=true;
 		$file_osencoded=dol_osencode($file);    // New filename encoded in OS filesystem encoding charset
 		if (empty($disableglob) && ! empty($file_osencoded))
 		{
+			$ok=true;
 			$globencoded=str_replace('[','\[',$file_osencoded);
 			$globencoded=str_replace(']','\]',$globencoded);
 			$listofdir=glob($globencoded);
@@ -853,6 +854,7 @@ function dol_delete_file($file,$disableglob=0,$nophperrors=0,$nohook=0,$object=n
 		}
 		else
 		{
+			$ok=false;
 			if ($nophperrors) $ok=@unlink($file_osencoded);
 			else $ok=unlink($file_osencoded);
 			if ($ok) dol_syslog("Removed file ".$file_osencoded, LOG_DEBUG);
@@ -958,9 +960,9 @@ function dol_delete_preview($object)
 
 	if (file_exists($file) && is_writable($file))
 	{
-		if ( ! dol_delete_file($file,1) )
+		if (! dol_delete_file($file,1))
 		{
-			$object->error=$langs->trans("ErrorFailedToOpenFile",$file);
+			$object->error=$langs->trans("ErrorFailedToDeleteFile",$file);
 			return 0;
 		}
 	}
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index 8b6dfa38657bad7f9cd33f2c7952101c2a276485..de6cacff1753ecbf8fbb53b69b41f4c6a65f159b 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -45,10 +45,13 @@ include_once DOL_DOCUMENT_ROOT .'/core/lib/json.lib.php';
  * @param	string 	$class		Class name
  * @param 	string 	$member		Name of property
  * @return 	mixed				Return value of static property
- * @deprecated Dolibarr now requires 5.3.0+
+ * @deprecated Dolibarr now requires 5.3.0+, use $class::$property syntax
+ * @see https://php.net/manual/language.oop5.static.php
  */
 function getStaticMember($class, $member)
 {
+	dol_syslog(__FUNCTION__ . " is deprecated", LOG_WARNING);
+
 	// This part is deprecated. Uncomment if for php 5.2.*, and comment next isset class::member
 	/*if (version_compare(phpversion(), '5.3.0', '<'))
 	{
@@ -215,7 +218,7 @@ function dol_shutdown()
 	global $conf,$user,$langs,$db;
 	$disconnectdone=false; $depth=0;
 	if (is_object($db) && ! empty($db->connected)) { $depth=$db->transaction_opened; $disconnectdone=$db->close(); }
-	dol_syslog("--- End access to ".$_SERVER["PHP_SELF"].(($disconnectdone && $depth)?' (Warn: db disconnection forced, transaction depth was '.$depth.')':''), (($disconnectdone && $depth)?LOG_WARNING:LOG_DEBUG));
+	dol_syslog("--- End access to ".$_SERVER["PHP_SELF"].(($disconnectdone && $depth)?' (Warn: db disconnection forced, transaction depth was '.$depth.')':''), (($disconnectdone && $depth)?LOG_WARNING:LOG_INFO));
 }
 
 
@@ -227,7 +230,7 @@ function dol_shutdown()
  *  @param	int		$method	     Type of method (0 = get then post, 1 = only get, 2 = only post, 3 = post then get, 4 = post then get then cookie)
  *  @param  int     $filter      Filter to apply when $check is set to custom. (See http://php.net/manual/en/filter.filters.php for détails)
  *  @param  mixed   $options     Options to pass to filter_var when $check is set to custom
- *  @return string||string[]     Value found (string or array), or '' if check fails
+ *  @return string|string[]      Value found (string or array), or '' if check fails
  */
 function GETPOST($paramname,$check='',$method=0,$filter=NULL,$options=NULL)
 {
@@ -387,11 +390,12 @@ function dol_buildpath($path, $type=0)
  *
  * 	@param	object	$object		Object to clone
  *	@return object				Object clone
- *  @deprecated Dolibarr no longer supports PHP4, you can now use native function
+ *  @deprecated Dolibarr no longer supports PHP4, use PHP5 native clone construct
+ *  @see https://php.net/manual/language.oop5.cloning.php
  */
 function dol_clone($object)
 {
-	dol_syslog("Functions.lib::dol_clone Clone object");
+	dol_syslog(__FUNCTION__ . " is deprecated", LOG_WARNING);
 
 	$myclone=clone($object);
 	return $myclone;
@@ -541,7 +545,7 @@ function dol_escape_js($stringtoescape, $mode=0, $noescapebackslashn=0)
 
 
 /**
- *  Returns text escaped for inclusion in HTML alt or title tags
+ *  Returns text escaped for inclusion in HTML alt or title tags, or into values of HTMPL input fields
  *
  *  @param      string		$stringtoescape		String to escape
  *  @param		int			$keepb				Do not clean b tags
@@ -740,7 +744,7 @@ function dol_get_fiche_head($links=array(), $active='0', $title='', $notab=0, $p
 		else
 			$isactive=false;
 
-		if ($i <=$limittoshow || $isactive )
+		if ($i <= $limittoshow || $isactive )
 		{
 			$out.='<div class="inline-block tabsElem'.($isactive ? ' tabsElemActive' : '').((! $isactive && ! empty($conf->global->MAIN_HIDE_INACTIVETAB_ON_PRINT))?' hideonprint':'').'"><!-- id tab = '.(empty($links[$i][2])?'':$links[$i][2]).' -->';
 			if (isset($links[$i][2]) && $links[$i][2] == 'image')
@@ -774,13 +778,13 @@ function dol_get_fiche_head($links=array(), $active='0', $title='', $notab=0, $p
 			if (isset($links[$i][2]) && $links[$i][2] == 'image')
 			{
 				if (!empty($links[$i][0]))
-					$outmore.='<a  class="tabimage" href="'.$links[$i][0].'">'.$links[$i][1].'</a>'."\n";
+					$outmore.='<a class="tabimage" href="'.$links[$i][0].'">'.$links[$i][1].'</a>'."\n";
 				else
-					$outmore.='<span  class="tabspan">'.$links[$i][1].'</span>'."\n";
+					$outmore.='<span class="tabspan">'.$links[$i][1].'</span>'."\n";
 
 			}
 			else if (! empty($links[$i][1]))
-				$outmore.='<a "'.(! empty($links[$i][2])?' id="'.$links[$i][2].'"':'').'  class="inline-block" href="'.$links[$i][0].'">'.$links[$i][1].'</a>'."\n";
+				$outmore.='<a'.(! empty($links[$i][2])?' id="'.$links[$i][2].'"':'').' class="inline-block" href="'.$links[$i][0].'">'.$links[$i][1].'</a>'."\n";
 
 			$outmore.='</div>';
 		}
@@ -789,7 +793,7 @@ function dol_get_fiche_head($links=array(), $active='0', $title='', $notab=0, $p
 
 	if ($displaytab > $limittoshow)
 	{
-		$tabsname=str_replace ("@", "", $picto);		
+		$tabsname=str_replace("@", "", $picto);
 		$out.='<div id="moretabs'.$tabsname.'" class="inline-block tabsElem">';
 		$out.='<a href="" data-role="button" style="background-color: #f0f0f0;" class="tab inline-block">'.$langs->trans("More").'...</a>';
 		$out.='<div id="moretabsList'.$tabsname.'" style="position: absolute; left: -999em;text-align: left;margin:0px;padding:2px">'.$outmore.'</div>';
@@ -831,6 +835,25 @@ function dol_get_fiche_end($notab=0)
 	else return '';
 }
 
+/**
+ * Show a string with the label tag dedicated to the HTML edit field.
+ *
+ * @param	string	$langkey		Translation key
+ * @param 	string	$fieldkey		Key of the html select field the text refers to
+ * @param	int		$fieldrequired	1=Field is mandatory
+ */
+function fieldLabel($langkey, $fieldkey, $fieldrequired=0)
+{
+	global $conf, $langs;
+	$ret='';
+	if ($fieldrequired) $ret.='<span class="fieldrequired">';
+	if (empty($conf->dol_use_jmobile)) $ret.='<label for="'.$fieldkey.'">';
+	$ret.=$langs->trans($langkey);
+	if (empty($conf->dol_use_jmobile)) $ret.='</label>';
+	if ($fieldrequired) $ret.='</span>';
+	return $ret;
+}
+
 /**
  * Return string to add class property on html element with pair/impair.
  *
@@ -854,6 +877,7 @@ function dol_bc($var,$moreclass='')
  *      @param	string		$sep			Separator to use to build string
  *      @param	Translate	$outputlangs	Object lang that contains language for text translation.
  *      @return string          			Formated string
+ *      @see dol_print_address
  */
 function dol_format_address($object,$withcountry=0,$sep="\n",$outputlangs='')
 {
@@ -1581,6 +1605,7 @@ function dol_user_country()
  *  @param  int		$mode        thirdparty|contact|member|other
  *  @param  int		$id          Id of object
  *  @return void
+ *  @see dol_format_address
  */
 function dol_print_address($address, $htmlid, $mode, $id)
 {
@@ -1622,7 +1647,7 @@ function dol_print_address($address, $htmlid, $mode, $id)
 /**
  *	Return true if email syntax is ok
  *
- *	@param	    string		$address    			email (Ex: "toto@titi.com", "John Do <johndo@titi.com>")
+ *	@param	    string		$address    			email (Ex: "toto@examle.com", "John Do <johndo@example.com>")
  *  @param		int			$acceptsupervisorkey	If 1, the special string '__SUPERVISOREMAIL__' is also accepted as valid
  *	@return     boolean     						true if email syntax is OK, false if KO or empty string
  */
@@ -1702,11 +1727,15 @@ function dol_substr($string,$start,$length,$stringencoding='')
  *  @param		string	$url			Param to add an url to click values
  *  @return		void
  *  @deprecated
+ *  @see DolGraph
  */
 function dol_print_graph($htmlid,$width,$height,$data,$showlegend=0,$type='pie',$showpercent=0,$url='')
 {
+	dol_syslog(__FUNCTION__ . " is deprecated", LOG_WARNING);
+
 	global $conf,$langs;
 	global $theme_datacolor;    // To have var kept when function is called several times
+
 	if (empty($conf->use_javascript_ajax)) return;
 	$jsgraphlib='flot';
 	$datacolor=array();
@@ -2186,7 +2215,7 @@ function img_help($usehelpcursor = 1, $usealttitle = 1)
 		else $usealttitle = $langs->trans('Info');
 	}
 
-	return img_picto($usealttitle, 'info.png', ($usehelpcursor ? 'style="cursor: help"' : ''));
+	return img_picto($usealttitle, 'info.png', ($usehelpcursor ? 'style="vertical-align: middle; cursor: help"' : 'style="vertical-align: middle;"'));
 }
 
 /**
@@ -2201,7 +2230,7 @@ function img_info($titlealt = 'default')
 
 	if ($titlealt == 'default') $titlealt = $langs->trans('Informations');
 
-	return img_picto($titlealt, 'info.png');
+	return img_picto($titlealt, 'info.png', 'style="vertical-align: middle;"');
 }
 
 /**
@@ -2217,7 +2246,7 @@ function img_warning($titlealt = 'default', $float = 0)
 
 	if ($titlealt == 'default') $titlealt = $langs->trans('Warning');
 
-	return img_picto($titlealt, 'warning.png', ($float ? 'style="float: right"' : ''));
+	return img_picto($titlealt, 'warning.png', 'class="pictowarning"'.($float ? ' style="float: right"' : ''));
 }
 
 /**
@@ -2380,9 +2409,12 @@ function img_mime($file, $titlealt = '')
  *	@param  int		$option		Option
  *	@return string      		Return img tag
  *  @deprecated
+ *  @see img_picto
  */
 function img_phone($titlealt = 'default', $option = 0)
 {
+	dol_syslog(__FUNCTION__ . " is deprecated", LOG_WARNING);
+
 	global $conf,$langs;
 
 	if ($titlealt == 'default') $titlealt = $langs->trans('Call');
@@ -2452,7 +2484,7 @@ function info_admin($text, $infoonimgalt = 0, $nodiv=0)
 		return img_picto($text, 'info', 'class="hideonsmartphone"');
 	}
 
-	return ($nodiv?'':'<div class="info hideonsmartphone">').img_picto($langs->trans('InfoAdmin'), 'info', 'class="hideonsmartphone"').' '.$text.($nodiv?'':'</div>');
+	return ($nodiv?'':'<div class="info hideonsmartphone">').img_picto($langs->trans('InfoAdmin'), ($nodiv?'info':'info_black'), 'class="hideonsmartphone"').' '.$text.($nodiv?'':'</div>');
 }
 
 
@@ -2607,11 +2639,12 @@ function dol_print_error_email($prefixcode)
  *	@param  string	$td          Options of attribute td ("" by defaut, example: 'align="center"')
  *	@param  string	$sortfield   Current field used to sort
  *	@param  string	$sortorder   Current sort order
+ *  @param	string	$prefix		 Prefix for css
  *	@return	void
  */
-function print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $td="", $sortfield="", $sortorder="")
+function print_liste_field_titre($name, $file="", $field="", $begin="", $moreparam="", $td="", $sortfield="", $sortorder="", $prefix="")
 {
-	print getTitleFieldOfList($name, 0, $file, $field, $begin, $moreparam, $td, $sortfield, $sortorder);
+	print getTitleFieldOfList($name, 0, $file, $field, $begin, $moreparam, $td, $sortfield, $sortorder, $prefix);
 }
 
 /**
@@ -2626,9 +2659,10 @@ function print_liste_field_titre($name, $file="", $field="", $begin="", $morepar
  *	@param  string	$moreattrib  Add more attributes on th ("" by defaut)
  *	@param  string	$sortfield   Current field used to sort
  *	@param  string	$sortorder   Current sort order
+ *  @param	string	$prefix		 Prefix for css
  *	@return	string
  */
-function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="")
+function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $moreparam="", $moreattrib="", $sortfield="", $sortorder="", $prefix="")
 {
 	global $conf;
 	//print "$name, $file, $field, $begin, $options, $moreattrib, $sortfield, $sortorder<br>\n";
@@ -2642,7 +2676,7 @@ function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $m
 	// If field is used as sort criteria we use a specific class
 	// Example if (sortfield,field)=("nom","xxx.nom") or (sortfield,field)=("nom","nom")
 	if ($field && ($sortfield == $field || $sortfield == preg_replace("/^[^\.]+\./","",$field))) $out.= '<'.$tag.' class="liste_titre_sel" '. $moreattrib.'>';
-	else $out.= '<'.$tag.' class="liste_titre" '. $moreattrib.'>';
+	else $out.= '<'.$tag.' class="'.$prefix.'liste_titre" '. $moreattrib.'>';
 
 	if (! empty($conf->dol_optimize_smallscreen) && empty($thead) && $field)    // If this is a sort field
 	{
@@ -2702,9 +2736,12 @@ function getTitleFieldOfList($name, $thead=0, $file="", $field="", $begin="", $m
  *	@param	string	$title			Title to show
  *	@return	string					Title to show
  *  @deprecated						Use print_fiche_titre instead
+ *  @see print_fiche_titre
  */
 function print_titre($title)
 {
+	dol_syslog(__FUNCTION__ . " is deprecated", LOG_WARNING);
+
 	print '<div class="titre">'.$title.'</div>';
 }
 
@@ -2717,6 +2754,7 @@ function print_titre($title)
  *	@param	int		$pictoisfullpath	1=Icon name is a full absolute url of image
  * 	@param	int		$id					To force an id on html objects
  * 	@return	void
+ *  @deprecated Use print load_fiche_titre instead
  */
 function print_fiche_titre($title, $mesg='', $picto='title_generic.png', $pictoisfullpath=0, $id='')
 {
@@ -2822,34 +2860,34 @@ function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $so
 
 			if ($cpt>=1)
 			{
-				$pagelist.= '<li class="pagination"><a href="'.$file.'?page=0'.$options.'&amp;sortfield='.$sortfield.'&amp;sortorder='.$sortorder.'">1</a></li>';
+				$pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><a '.(empty($conf->dol_use_jmobile)?'':'data-role="button" ').'href="'.$file.'?page=0'.$options.'&amp;sortfield='.$sortfield.'&amp;sortorder='.$sortorder.'">1</a></li>';
 				if ($cpt >= 2) $pagelist.='<li><span class="inactive">...</span></li>';
 			}
 			do
 			{
 				if ($cpt==$page)
 				{
-					$pagelist.= '<li class="pagination"><span class="active">'.($page+1).'</span></li>';
+					$pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><span '.(empty($conf->dol_use_jmobile)?'class="active"':'data-role="button"').'>'.($page+1).'</span></li>';
 				}
 				else
 				{
-					$pagelist.= '<li class="pagination"><a href="'.$file.'?page='.$cpt.$options.'&amp;sortfield='.$sortfield.'&amp;sortorder='.$sortorder.'">'.($cpt+1).'</a></li>';
+					$pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><a '.(empty($conf->dol_use_jmobile)?'':'data-role="button" ').'href="'.$file.'?page='.$cpt.$options.'&amp;sortfield='.$sortfield.'&amp;sortorder='.$sortorder.'">'.($cpt+1).'</a></li>';
 				}
 				$cpt++;
 			}
 			while ($cpt < $nbpages && $cpt<=$page+$maxnbofpage);
 			if ($cpt<$nbpages)
 			{
-				if ($cpt<$nbpages-1) $pagelist.= '<li class="pagination"><span class="inactive">...</span></li>';
-				$pagelist.= '<li class="pagination"><a href="'.$file.'?page='.($nbpages-1).$options.'&amp;sortfield='.$sortfield.'&amp;sortorder='.$sortorder.'">'.$nbpages.'</a></li>';
+				if ($cpt<$nbpages-1) $pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><span '.(empty($conf->dol_use_jmobile)?'class="inactive"':'data-role="button"').'>...</span></li>';
+				$pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><a '.(empty($conf->dol_use_jmobile)?'':'data-role="button" ').'href="'.$file.'?page='.($nbpages-1).$options.'&amp;sortfield='.$sortfield.'&amp;sortorder='.$sortorder.'">'.$nbpages.'</a></li>';
 			}
 		}
 		else
 		{
-			$pagelist.= '<li class="pagination"><span class="active">'.($page+1)."</li>";
+			$pagelist.= '<li'.(empty($conf->dol_use_jmobile)?' class="pagination"':'').'><span '.(empty($conf->dol_use_jmobile)?'class="active"':'data-role="button"').'>'.($page+1)."</li>";
 		}
 	}
-	print_fleche_navigation($page,$file,$options,$nextpage,$pagelist,$morehtml);
+	print_fleche_navigation($page,$file,$options,$nextpage,$pagelist,$morehtml);		// output the div and ul for previous/last completed with page numbers into $pagelist
 	print '</td>';
 
 	print '</tr></table>'."\n";
@@ -4059,9 +4097,12 @@ function dol_nboflines_bis($text,$maxlinesize=0,$charset='UTF-8')
  *
  * @return		float		Time (millisecondes) with microsecondes in decimal part
  * @deprecated Dolibarr does not support PHP4, you should use native function
+ * @see microtime()
  */
 function dol_microtime_float()
 {
+	dol_syslog(__FUNCTION__ . " is deprecated", LOG_WARNING);
+
 	return microtime(true);
 }
 
@@ -4090,8 +4131,8 @@ function dol_textishtml($msg,$option=0)
 		elseif (preg_match('/<(br|div|font|li|span|strong|table)>/i',$msg)) 	  return true;
 		elseif (preg_match('/<(br|div|font|li|span|strong|table)\s+[^<>\/]*>/i',$msg)) return true;
 		elseif (preg_match('/<(br|div|font|li|span|strong|table)\s+[^<>\/]*\/>/i',$msg)) return true;
-		elseif (preg_match('/<img\s+[^<>]*src[^<>]*>/i',$msg)) return true;	// must accept <img src="http://mydomain.com/aaa.png" />
-		elseif (preg_match('/<a\s+[^<>]*href[^<>]*>/i',$msg)) return true;	// must accept <a href="http://mydomain.com/aaa.png" />
+		elseif (preg_match('/<img\s+[^<>]*src[^<>]*>/i',$msg)) return true;	// must accept <img src="http://example.com/aaa.png" />
+		elseif (preg_match('/<a\s+[^<>]*href[^<>]*>/i',$msg)) return true;	// must accept <a href="http://example.com/aaa.png" />
 		elseif (preg_match('/<h[0-9]>/i',$msg))			return true;
 		elseif (preg_match('/&[A-Z0-9]{1,6};/i',$msg))	return true;    // Html entities names (http://www.w3schools.com/tags/ref_entities.asp)
 		elseif (preg_match('/&#[0-9]{2,3};/i',$msg))	return true;    // Html entities numbers (http://www.w3schools.com/tags/ref_entities.asp)
@@ -4281,6 +4322,8 @@ function dolGetFirstLastname($firstname,$lastname,$nameorder=-1)
  */
 function setEventMessage($mesgs, $style='mesgs')
 {
+	dol_syslog(__FUNCTION__ . " is deprecated", LOG_WARNING);
+
 	if (! is_array($mesgs))		// If mesgs is a string
 	{
 		if ($mesgs) $_SESSION['dol_events'][$style][] = $mesgs;
@@ -4828,7 +4871,7 @@ function complete_head_from_modules($conf,$langs,$object,&$head,&$h,$type,$mode=
  * Print common footer :
  * 		conf->global->MAIN_HTML_FOOTER
  * 		conf->global->MAIN_GOOGLE_AN_ID
- * 		DOL_TUNING
+ * 		conf->global->MAIN_SHOW_TUNING_INFO or $_SERVER["MAIN_SHOW_TUNING_INFO"]
  * 		conf->logbuffer
  *
  * @param	string	$zone	'private' (for private pages) or 'public' (for public pages)
@@ -4865,7 +4908,7 @@ function printCommonFooter($zone='private')
 	}
 
 	// End of tuning
-	if (! empty($_SERVER['DOL_TUNING']) || ! empty($conf->global->MAIN_SHOW_TUNING_INFO))
+	if (! empty($_SERVER['MAIN_SHOW_TUNING_INFO']) || ! empty($conf->global->MAIN_SHOW_TUNING_INFO))
 	{
 		print "\n".'<script type="text/javascript">'."\n";
 		print 'window.console && console.log("';
diff --git a/htdocs/core/lib/functions2.lib.php b/htdocs/core/lib/functions2.lib.php
index e06577cf8f507e05fedd5c6c064b10ac0e8b64d3..09801972ce596f4763958b167ca089ef564257c8 100644
--- a/htdocs/core/lib/functions2.lib.php
+++ b/htdocs/core/lib/functions2.lib.php
@@ -394,9 +394,9 @@ function dol_print_object_info($object)
 
 /**
  *	Return an email formatted to include a tracking id
- *  For example  myemail@mydomain.com becom myemail+trackingid@mydomain.com
+ *  For example  myemail@example.com becom myemail+trackingid@example.com
  *
- *	@param	string	$email       	Email address (Ex: "toto@titi.com", "John Do <johndo@titi.com>")
+ *	@param	string	$email       	Email address (Ex: "toto@example.com", "John Do <johndo@example.com>")
  *	@param	string	$trackingid    	Tracking id (Ex: thi123 for thirdparty with id 123)
  *	@return boolean     			True if domain email is OK, False if KO
  */
@@ -409,7 +409,7 @@ function dolAddEmailTrackId($email, $trackingid)
 /**
  *	Return true if email has a domain name that can't be resolved
  *
- *	@param	string	$mail       Email address (Ex: "toto@titi.com", "John Do <johndo@titi.com>")
+ *	@param	string	$mail       Email address (Ex: "toto@example.com", "John Do <johndo@example.com>")
  *	@return boolean     		True if domain email is OK, False if KO
  */
 function isValidMailDomain($mail)
@@ -1918,22 +1918,24 @@ function fetchObjectByElement($element_id,$element_type) {
  *	Convert an array with RGB value into hex RGB value
  *
  *  @param	array	$arraycolor			Array
- *  @param	string	$colorifnotfound	Color code to return if entry not defined
+ *  @param	string	$colorifnotfound	Color code to return if entry not defined or not a RGB format
  *  @return	string						RGB hex value (without # before). For example: FF00FF
  *  @see	Make the opposite of colorStringToArray
  */
 function colorArrayToHex($arraycolor,$colorifnotfound='888888')
 {
 	if (! is_array($arraycolor)) return $colorifnotfound;
+	if (empty($arraycolor)) return $colorifnotfound;
 	return dechex($arraycolor[0]).dechex($arraycolor[1]).dechex($arraycolor[2]);
 }
 
 
 /**
- *	Convert a string RGB value ('FFFFFF', '255,255,255') into an array RGB array(255,255,255)
+ *	Convert a string RGB value ('FFFFFF', '255,255,255') into an array RGB array(255,255,255).
+ *  If entry is already an array, return it.
  *
  *  @param	string	$stringcolor		String with hex (FFFFFF) or comma RGB ('255,255,255')
- *  @param	string	$colorifnotfound	Color code to return if entry not defined
+ *  @param	array	$colorifnotfound	Color code array to return if entry not defined
  *  @return	string						RGB hex value (without # before). For example: FF00FF
  *  @see	Make the opposite of colorArrayToHex
  */
diff --git a/htdocs/core/lib/geturl.lib.php b/htdocs/core/lib/geturl.lib.php
index 8f6847bcb9a6ec7860334d0aac5dea0b516f7dc9..af0c6b91da03c049781368d8de798d16c66ffe0a 100644
--- a/htdocs/core/lib/geturl.lib.php
+++ b/htdocs/core/lib/geturl.lib.php
@@ -28,7 +28,7 @@
  * @param	string	$postorget			'POST', 'GET', 'HEAD'
  * @param	string	$param				Parameters of URL (x=value1&y=value2)
  * @param	string	$followlocation		1=Follow location, 0=Do not follow
- * @param	array	$addheaders			Array of string to add into header. Example: ('Accept: application/xrds+xml', ....)
+ * @param	array	$addheaders			Array of string to add into header. Example: array('Accept: application/xrds+xml', ....)
  * @return	array						Returns an associative array containing the response from the server array('content'=>response,'curl_error_no'=>errno,'curl_error_msg'=>errmsg...)
  */
 function getURLContent($url,$postorget='GET',$param='',$followlocation=1,$addheaders=array())
@@ -74,15 +74,17 @@ function getURLContent($url,$postorget='GET',$param='',$followlocation=1,$addhea
     else if ($postorget == 'PUT')
     {
     	curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); // HTTP request is 'PUT'
-    	if ( ! is_array($param) )
-		parse_str($param, $array_param);
-    	curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($array_param));	// Setting param x=a&y=z as PUT fields	
+    	curl_setopt($ch, CURLOPT_POSTFIELDS, $param);	// Setting param x=a&y=z as PUT fields
     }
     else if ($postorget == 'HEAD')
     {
     	curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'HEAD'); // HTTP request is 'HEAD'
     	curl_setopt($ch, CURLOPT_NOBODY, true);
     }
+    else if ($postorget == 'DELETE')
+    {
+    	curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');	// POST
+    }
     else
     {
     	curl_setopt($ch, CURLOPT_POST, 0);			// GET
diff --git a/htdocs/core/lib/images.lib.php b/htdocs/core/lib/images.lib.php
index f7592c69c08d0fdca8dea29b106ba6f88560263d..7e47f755a7e31d2f64914af29912e434632a0eca 100644
--- a/htdocs/core/lib/images.lib.php
+++ b/htdocs/core/lib/images.lib.php
@@ -547,161 +547,3 @@ function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName='_small', $
 
 	return $imgThumbName;
 }
-
-
-/**
- *	This function returns the html for the moneymeter.
- *
- *	@param	int		$actualValue	amount of actual money
- *	@param	int		$pendingValue	amount of money of pending memberships
- *	@param	int		$intentValue	amount of intended money (that's without the amount of actual money)
- *	@return string					thermometer htmlLegenda
- */
-function moneyMeter($actualValue=0, $pendingValue=0, $intentValue=0)
-{
-	global $langs;
-
-	// variables
-	$height="200";
-	$maximumValue=125000;
-
-	$imageDir = "http://eucd.info/images/therm/";
-
-	$imageTop = $imageDir . "therm_top.png";
-	$imageMiddleActual = $imageDir . "therm_actual.png";
-	$imageMiddlePending = $imageDir . "therm_pending.png";
-	$imageMiddleIntent = $imageDir . "therm_intent.png";
-	$imageMiddleGoal = $imageDir . "therm_goal.png";
-	$imageIndex = $imageDir . "therm_index.png";
-	$imageBottom =  $imageDir . "therm_bottom.png";
-	$imageColorActual = $imageDir . "therm_color_actual.png";
-	$imageColorPending = $imageDir . "therm_color_pending.png";
-	$imageColorIntent = $imageDir . "therm_color_intent.png";
-
-	$formThermTop = '
-        <!-- Thermometer Begin -->
-        <table cellpadding="0" cellspacing="4" border="0">
-        <tr><td>
-        <table cellpadding="0" cellspacing="0" border="0">
-          <tr>
-            <td colspan="2"><img src="' . $imageTop . '" width="58" height="6" border="0"></td>
-          </tr>
-          <tr>
-            <td>
-              <table cellpadding="0" cellspacing="0" border="0">';
-
-	$formSection = '
-          <tr><td><img src="{image}" width="26" height="{height}" border="0"></td></tr>';
-
-	$formThermbottom = '
-              </table>
-            </td>
-            <td><img src="' . $imageIndex . '" width="32" height="200" border="0"></td>
-          </tr>
-          <tr>
-            <td colspan="2"><img src="' . $imageBottom . '" width="58" height="32" border="0"></td>
-          </tr>
-        </table>
-        </td>
-      </tr></table>';
-
-	// legenda
-
-	$legendaActual = "&euro; " . round($actualValue);
-	$legendaPending = "&euro; " . round($pendingValue);
-	$legendaIntent = "&euro; " . round($intentValue);
-	$legendaTotal = "&euro; " . round($actualValue + $pendingValue + $intentValue);
-	$formLegenda = '
-
-        <table cellpadding="0" cellspacing="0" border="0">
-          <tr><td><img src="' . $imageColorActual . '" width="9" height="9">&nbsp;</td><td><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><b>'.$langs->trans("Paid").':<br>' . $legendaActual . '</b></font></td></tr>
-          <tr><td><img src="' . $imageColorPending . '" width="9" height="9">&nbsp;</td><td><font size="1" face="Verdana, Arial, Helvetica, sans-serif">'.$langs->trans("Waiting").':<br>' . $legendaPending . '</font></td></tr>
-          <tr><td><img src="' . $imageColorIntent . '" width="9" height="9">&nbsp;</td><td><font size="1" face="Verdana, Arial, Helvetica, sans-serif">'.$langs->trans("Promesses").':<br>' . $legendaIntent . '</font></td></tr>
-          <tr><td>&nbsp;</td><td><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Total:<br>' . $legendaTotal . '</font></td></tr>
-        </table>
-
-        <!-- Thermometer End -->';
-
-	// check and edit some values
-
-	$error = 0;
-	if ( $maximumValue <= 0 || $height <= 0 || $actualValue < 0 || $pendingValue < 0 || $intentValue < 0)
-	{
-		return "The money meter could not be processed<br>\n";
-	}
-	if ( $actualValue > $maximumValue )
-	{
-		$actualValue = $maximumValue;
-		$pendingValue = 0;
-		$intentValue = 0;
-	}
-	else
-	{
-		if ( ($actualValue + $pendingValue) > $maximumValue )
-		{
-	  $pendingValue = $maximumValue - $actualValue;
-	  $intentValue = 0;
-		}
-		else
-		{
-	  if ( ($actualValue + $pendingValue + $intentValue) > $maximumValue )
-	  {
-	  	$intentValue = $maximumValue - $actualValue - $pendingValue;
-	  }
-		}
-	}
-
-	// start writing the html (from bottom to top)
-
-	// bottom
-	$thermometer = $formThermbottom;
-
-	// actual
-	$sectionHeight = round(($actualValue / $maximumValue) * $height);
-	$totalHeight = $sectionHeight;
-	if ( $sectionHeight > 0 )
-	{
-		$section = $formSection;
-		$section = str_replace("{image}", $imageMiddleActual, $section);
-		$section = str_replace("{height}", $sectionHeight, $section);
-		$thermometer = $section . $thermometer;
-	}
-
-	// pending
-	$sectionHeight = round(($pendingValue / $maximumValue) * $height);
-	$totalHeight += $sectionHeight;
-	if ( $sectionHeight > 0 )
-	{
-		$section = $formSection;
-		$section = str_replace("{image}", $imageMiddlePending, $section);
-		$section = str_replace("{height}", $sectionHeight, $section);
-		$thermometer = $section . $thermometer;
-	}
-
-	// intent
-	$sectionHeight = round(($intentValue / $maximumValue) * $height);
-	$totalHeight += $sectionHeight;
-	if ( $sectionHeight > 0 )
-	{
-		$section = $formSection;
-		$section = str_replace("{image}", $imageMiddleIntent, $section);
-		$section = str_replace("{height}", $sectionHeight, $section);
-		$thermometer = $section . $thermometer;
-	}
-
-	// goal
-	$sectionHeight = $height- $totalHeight;
-	if ( $sectionHeight > 0 )
-	{
-		$section = $formSection;
-		$section = str_replace("{image}", $imageMiddleGoal, $section);
-		$section = str_replace("{height}", $sectionHeight, $section);
-		$thermometer = $section . $thermometer;
-	}
-
-	// top
-	$thermometer = $formThermTop . $thermometer;
-
-	return $thermometer . $formLegenda;
-}
-
diff --git a/htdocs/core/lib/json.lib.php b/htdocs/core/lib/json.lib.php
index 121e719bb6f597583bf2132ebf4aa98d62d17487..e3f00a064e5c100f5d6acae07461494d56f89adc 100644
--- a/htdocs/core/lib/json.lib.php
+++ b/htdocs/core/lib/json.lib.php
@@ -42,6 +42,7 @@ if (! function_exists('json_encode'))
  *
  * @param	mixed	$elements		PHP Object to json encode
  * @return 	string					Json encoded string
+ * @deprecated PHP >= 5.3 supports native json_encode
  */
 function dol_json_encode($elements)
 {
@@ -219,6 +220,7 @@ if (! function_exists('json_decode'))
  * @param	string	$json		Json encoded to PHP Object or Array
  * @param	bool	$assoc		False return an object, true return an array. Try to always use it with true !
  * @return 	mixed				Object or Array or false on error
+ * @deprecated PHP >= 5.3 supports native json_decode
  */
 function dol_json_decode($json, $assoc=false)
 {
diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php
index ee024c60c2a19e0dfbfcb9443f537d07a8e51f49..556dbc0a1c63e53e0e7a66cf76c6b9f3f18e0a31 100644
--- a/htdocs/core/lib/project.lib.php
+++ b/htdocs/core/lib/project.lib.php
@@ -507,7 +507,7 @@ function projectLinesa(&$inc, $parent, &$lines, &$level, $var, $showproject, &$t
  * @param	int			$preselectedday			Preselected day
  * @return  $inc
  */
-function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$tasksrole, $mine, $restricteditformytask=0, $preselectedday='')
+function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$tasksrole, $mine, $restricteditformytask=1, $preselectedday='')
 {
 	global $db, $user, $bc, $langs;
 	global $form, $formother, $projectstatic, $taskstatic;
@@ -541,8 +541,8 @@ function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$t
 			{
 				$projectstatic->id=$lines[$i]->fk_project;
 				$projectstatic->ref=$lines[$i]->projectref;
+				$projectstatic->title=$lines[$i]->projectlabel;
 				$projectstatic->public=$lines[$i]->public;
-				$projectstatic->label=$langs->transnoentitiesnoconv("YourRole").': '.$projectsrole[$lines[$i]->fk_project];
 
 				$taskstatic->id=$lines[$i]->id;
 
@@ -550,7 +550,7 @@ function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$t
 
 				// Project
 				print "<td>";
-				print $projectstatic->getNomUrl(1);
+				print $projectstatic->getNomUrl(1,'',0,$langs->transnoentitiesnoconv("YourRole").': '.$projectsrole[$lines[$i]->fk_project]);
 				print "</td>";
 
 				// Ref
@@ -676,7 +676,7 @@ function projectLinesPerDay(&$inc, $parent, $lines, &$level, &$projectsrole, &$t
  * @param   int			$restricteditformytask	0=No restriction, 1=Enable add time only if task is a task i am affected to
  * @return  $inc
  */
-function projectLinesPerWeek(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$level, &$projectsrole, &$tasksrole, $mine, $restricteditformytask=0)
+function projectLinesPerWeek(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$level, &$projectsrole, &$tasksrole, $mine, $restricteditformytask=1)
 {
 	global $db, $user, $bc, $langs;
 	global $form, $formother, $projectstatic, $taskstatic;
@@ -711,9 +711,9 @@ function projectLinesPerWeek(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$
 				print '<td class="nowrap">';
 				$projectstatic->id=$lines[$i]->fk_project;
 				$projectstatic->ref=$lines[$i]->projectref;
+				$projectstatic->title=$lines[$i]->projectlabel;
 				$projectstatic->public=$lines[$i]->public;
-				$projectstatic->label=$langs->transnoentitiesnoconv("YourRole").': '.$projectsrole[$lines[$i]->fk_project];
-				print $projectstatic->getNomUrl(1);
+				print $projectstatic->getNomUrl(1,'',0,$langs->transnoentitiesnoconv("YourRole").': '.$projectsrole[$lines[$i]->fk_project]);
 				print "</td>";
 
 				// Ref
diff --git a/htdocs/core/lib/report.lib.php b/htdocs/core/lib/report.lib.php
index 4fcb087ba184507da9d074a9b534c070a6463883..681f6e7a913c70aacb2e4bb82fbac01ddb1a11bc 100644
--- a/htdocs/core/lib/report.lib.php
+++ b/htdocs/core/lib/report.lib.php
@@ -39,7 +39,7 @@
 */
 function report_header($nom,$variante,$period,$periodlink,$description,$builddate,$exportlink='',$moreparam=array(),$calcmode='')
 {
-	global $langs, $hselected;
+	global $langs;
 
 	if (empty($hselected)) $hselected='report';
 	
@@ -50,7 +50,7 @@ function report_header($nom,$variante,$period,$periodlink,$description,$builddat
 	$head[$h][1] = $langs->trans("Report");
 	$head[$h][2] = 'report';
 
-	dol_fiche_head($head, $hselected);
+	dol_fiche_head($head, 'report');
 
 	print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
 	foreach($moreparam as $key => $value)
diff --git a/htdocs/core/lib/salaries.lib.php b/htdocs/core/lib/salaries.lib.php
index 8f74066de0130d1ed20fb4ab2045bcedf36fda0c..7c104b4da82c435286fa3a4273e7e6bfdf1ada96 100644
--- a/htdocs/core/lib/salaries.lib.php
+++ b/htdocs/core/lib/salaries.lib.php
@@ -42,6 +42,15 @@ function salaries_prepare_head($object) {
     // $this->tabs = array('entity:-tabname);   												to remove a tab
     complete_head_from_modules($conf,$langs,$object,$head,$h,'salaries');
 
+	require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
+	$upload_dir = $conf->salaries->dir_output . "/" . dol_sanitizeFileName($object->ref);
+	$nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$'));
+	$head[$h][0] = DOL_URL_ROOT.'/compta/salaries/document.php?id='.$object->id;
+	$head[$h][1] = $langs->trans('Documents');
+	if($nbFiles > 0) $head[$h][1].= ' <span class="badge">'.$nbFiles.'</span>';
+	$head[$h][2] = 'documents';
+	$h++;
+
     /*
 	$head[$h][0] = DOL_URL_ROOT.'/compta/salaries/info.php?id='.$object->id;
 	$head[$h][1] = $langs->trans("Info");
diff --git a/htdocs/core/lib/security.lib.php b/htdocs/core/lib/security.lib.php
index 0879fc814b731e289f93bed9b69e0e9d8858f82b..64e44cafbf4a08b1360cacd5f20f5ed8fc5d530d 100644
--- a/htdocs/core/lib/security.lib.php
+++ b/htdocs/core/lib/security.lib.php
@@ -340,7 +340,7 @@ function restrictedArea($user, $features, $objectid=0, $tableandshare='', $featu
 
 /**
  * Check access by user to object
- * 
+ *
  * @param User		$user			User to check
  * @param array		$featuresarray	Features/modules to check
  * @param int		$objectid		Object ID if we want to check a particular record (optional) is linked to a owned thirdparty (optional).
@@ -348,18 +348,18 @@ function restrictedArea($user, $features, $objectid=0, $tableandshare='', $featu
  * @param string	$feature2		Feature to check, second level of permission (optional). Can be or check with 'level1|level2'.
  * @param string	$dbt_keyfield	Field name for socid foreign key if not fk_soc. Not used if objectid is null (optional)
  * @param string	$dbt_select		Field name for select if not rowid. Not used if objectid is null (optional)
- * 
+ *
  * @return	bool		True if user has access, False otherwise
  */
-function checkUserAccessToObject($user, $featuresarray, $objectid=0, $tableandshare='', $feature2='', $dbt_keyfield='', $dbt_select='') 
+function checkUserAccessToObject($user, $featuresarray, $objectid=0, $tableandshare='', $feature2='', $dbt_keyfield='', $dbt_select='')
 {
 	global $db, $conf;
-	
+
 	// More parameters
 	$params = explode('&', $tableandshare);
 	$dbtablename=(! empty($params[0]) ? $params[0] : '');
 	$sharedelement=(! empty($params[1]) ? $params[1] : $dbtablename);
-	
+
 	foreach ($featuresarray as $feature)
 	{
 		$sql='';
diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php
index b70c1e2517a7dd7639a17edaf6342e97a4626551..e3895bacf54ce7142c002350becbb53ebc54e4fe 100644
--- a/htdocs/core/lib/usergroups.lib.php
+++ b/htdocs/core/lib/usergroups.lib.php
@@ -317,7 +317,7 @@ function show_theme($fuser,$edit=0,$foruserprofile=false)
     	print '</tr>';
     }
 
-    $var=!$var;
+    //$var=!$var;
     print '<tr '.$bc[$var].'><td colspan="'.$colspan.'">';
 
     print '<table class="nobordernopadding" width="100%"><tr><td><div align="center">';
@@ -372,6 +372,19 @@ function show_theme($fuser,$edit=0,$foruserprofile=false)
     print '</div></td></tr></table>';
 
     print '</td></tr>';
+
+	if (! $foruserprofile)
+	{
+	    $var=!$var;
+	    print '<tr '.$bc[$var].'>';
+	    print '<td>'.$langs->trans("HighlightLinesOnMouseHover").'</td>';
+	    $hoverdisabled=(isset($conf->global->THEME_ELDY_USE_HOVER) && $conf->global->THEME_ELDY_USE_HOVER == '0');
+	    print '<td colspan="'.($colspan-1).'"><input '.$bc[$var].' name="check_THEME_ELDY_USE_HOVER"'.($edit?'':' disabled').' type="checkbox" '.($hoverdisabled?"":" checked").'>';
+	    print ' ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')';
+	    print '</td>';
+	    print '</tr>';
+	}
+
     print '</table>';
 }
 
diff --git a/htdocs/core/login/functions_dolibarr.php b/htdocs/core/login/functions_dolibarr.php
index 74da1f97ff0ead2a062887c72e9854c0feaa9a6c..365961651919b445f9f10013368ac0489d090ff0 100644
--- a/htdocs/core/login/functions_dolibarr.php
+++ b/htdocs/core/login/functions_dolibarr.php
@@ -1,6 +1,6 @@
 <?php
-/* Copyright (C) 2007-2014 Laurent Destailleur  <eldy@users.sourceforge.net>
- * Copyright (C) 2007-2009 Regis Houssin        <regis.houssin@capnetworks.com>
+/* Copyright (C) 2007-2015 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2007-2015 Regis Houssin        <regis.houssin@capnetworks.com>
  * Copyright (C) 2010-2011 Juanjo Menent		<jmenent@2byte.es>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -58,6 +58,7 @@ function check_user_password_dolibarr($usertotest,$passwordtotest,$entitytotest=
 		$sql.=' WHERE ('.$usernamecol1." = '".$db->escape($usertotest)."'";
 		if (preg_match('/@/',$usertotest)) $sql.=' OR '.$usernamecol2." = '".$db->escape($usertotest)."'";
 		$sql.=') AND '.$entitycol." IN (0," . ($entity ? $entity : 1) . ")";
+		$sql.=' AND statut = 1';
 
 		$resql=$db->query($sql);
 		if ($resql)
diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql
index 27ea9515162cc9c58a5961c8aa6eabc7b373660f..d65108e5f1a8fbe0430465f4131c26aa8ee703d9 100644
--- a/htdocs/core/menus/init_menu_auguria.sql
+++ b/htdocs/core/menus/init_menu_auguria.sql
@@ -224,8 +224,8 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left
 insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $leftmenu=="bookkeeping"', __HANDLER__, 'left', 2721__+MAX_llx_menu__, 'accountancy', '', 2720__+MAX_llx_menu__, '/accountancy/bookkeeping/listbyyear.php', 'ByYear', 1, 'accountancy', '$user->rights->accounting->mouvements->lire', '', 0, 0, __ENTITY__);
 insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $leftmenu=="bookkeeping"', __HANDLER__, 'left', 2722__+MAX_llx_menu__, 'accountancy', '', 2720__+MAX_llx_menu__, '/accountancy/bookkeeping/balancebymonth.php', 'AccountBalanceByMonth', 1, 'accountancy', '$user->rights->accounting->mouvements->lire', '', 0, 1, __ENTITY__);
 -- Fiscal year & Chart of accounts
-insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled"', __HANDLER__, 'left', 2750__+MAX_llx_menu__, 'home', '', 6__+MAX_llx_menu__, '/accountancy/admin/fiscalyear.php?leftmenu=setup', 'Fiscalyear', 1, 'main', '$user->rights->accounting->fiscalyear', '', 2, 20, __ENTITY__);
-insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled"', __HANDLER__, 'left', 2751__+MAX_llx_menu__, 'home', '', 6__+MAX_llx_menu__, '/accountancy/admin/account.php?mainmenu=accountancy', 'Chartofaccounts', 1, 'main', '$user->rights->accounting->chartofaccount', '', 2, 21, __ENTITY__);
+insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled', __HANDLER__, 'left', 2750__+MAX_llx_menu__, 'home', '', 6__+MAX_llx_menu__, '/accountancy/admin/fiscalyear.php?leftmenu=setup', 'Fiscalyear', 1, 'accountancy', '$user->rights->accounting->fiscalyear', '', 2, 20, __ENTITY__);
+insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled', __HANDLER__, 'left', 2751__+MAX_llx_menu__, 'home', '', 6__+MAX_llx_menu__, '/accountancy/admin/account.php?mainmenu=accountancy', 'Chartofaccounts', 1, 'accountancy', '$user->rights->accounting->chartofaccount', '', 2, 21, __ENTITY__);
 -- Check deposit
 insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)', __HANDLER__, 'left', 1711__+MAX_llx_menu__, 'accountancy', 'checks', 14__+MAX_llx_menu__, '/compta/paiement/cheque/index.php?leftmenu=checks&amp;mainmenu=bank', 'MenuChequeDeposits', 0, 'bills', '$user->rights->banque->lire', '', 2, 9, __ENTITY__);
 insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)', __HANDLER__, 'left', 1712__+MAX_llx_menu__, 'accountancy', '', 1711__+MAX_llx_menu__, '/compta/paiement/cheque/card.php?leftmenu=checks&amp;action=new', 'NewCheckDeposit', 1, 'compta', '$user->rights->banque->lire', '', 2, 0, __ENTITY__);
diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php
index b1197202d1b331ec95ac7a358e642b23ec6283ec..ef83701518c12d2f6ae24524ba171f1799fc3300 100644
--- a/htdocs/core/menus/standard/eldy.lib.php
+++ b/htdocs/core/menus/standard/eldy.lib.php
@@ -462,15 +462,16 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 		{
 			$langs->load("users");
 
-			if ($user->admin)
-			{
-				$langs->load("admin");
-				$langs->load("help");
+			//if ($user->admin)
+			//{
 
 				// Setup
-				$newmenu->add("/admin/index.php?mainmenu=home&amp;leftmenu=setup", $langs->trans("Setup"), 0, 1, '', $mainmenu, 'setup');
+				$newmenu->add("/admin/index.php?mainmenu=home&amp;leftmenu=setup", $langs->trans("Setup"), 0, $user->admin, '', $mainmenu, 'setup');
 				if (empty($leftmenu) || $leftmenu=="setup")
 				{
+					$langs->load("admin");
+					$langs->load("help");
+
 					$warnpicto='';
 					if (empty($conf->global->MAIN_INFO_SOCIETE_NOM) || empty($conf->global->MAIN_INFO_SOCIETE_COUNTRY))
 					{
@@ -503,9 +504,12 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 				}
 
 				// System tools
-				$newmenu->add("/admin/tools/index.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("SystemTools"), 0, 1, '', $mainmenu, 'admintools');
+				$newmenu->add("/admin/tools/index.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("SystemTools"), 0, $user->admin, '', $mainmenu, 'admintools');
 				if (empty($leftmenu) || preg_match('/^admintools/',$leftmenu))
 				{
+					$langs->load("admin");
+					$langs->load("help");
+
 					$newmenu->add('/admin/system/dolibarr.php?mainmenu=home&amp;leftmenu=admintools_info', $langs->trans('InfoDolibarr'), 1);
 					if (empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/system/modules.php?mainmenu=home&amp;leftmenu=admintools_info', $langs->trans('Modules'), 2);
 					if (empty($leftmenu) || $leftmenu=='admintools_info') $newmenu->add('/admin/triggers.php?mainmenu=home&amp;leftmenu=admintools_info', $langs->trans('Triggers'), 2);
@@ -534,7 +538,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 				{
 					if (empty($user->societe_id))
 					{
-						$newmenu->add("/admin/tools/index.php?mainmenu=home&amp;leftmenu=modulesadmintools", $langs->trans("ModulesSystemTools"), 0, 1, '', $mainmenu, 'modulesadmintools');
+						$newmenu->add("/admin/tools/index.php?mainmenu=home&amp;leftmenu=modulesadmintools", $langs->trans("ModulesSystemTools"), 0, $user->admin, '', $mainmenu, 'modulesadmintools');
 						// Special case: This entry can't be embedded into modules because we need it for both module service and products and we don't want duplicate lines.
 						if ((empty($leftmenu) || $leftmenu=="modulesadmintools") && $user->admin)
 						{
@@ -543,18 +547,21 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 						}
 					}
 				}
-			}
+			//}
 
-			$newmenu->add("/user/home.php?leftmenu=users", $langs->trans("MenuUsersAndGroups"), 0, 1, '', $mainmenu, 'users');
-			if (empty($leftmenu) || $leftmenu == 'none' || $leftmenu=="users")
+			$newmenu->add("/user/home.php?leftmenu=users", $langs->trans("MenuUsersAndGroups"), 0, $user->rights->user->user->lire, '', $mainmenu, 'users');
+			if ($user->rights->user->user->lire)
 			{
-				$newmenu->add("", $langs->trans("Users"), 1, $user->rights->user->user->lire || $user->admin);
-				$newmenu->add("/user/card.php?action=create", $langs->trans("NewUser"),2, $user->rights->user->user->creer || $user->admin, '', 'home');
-				$newmenu->add("/user/index.php", $langs->trans("ListOfUsers"), 2, $user->rights->user->user->lire || $user->admin);
-				$newmenu->add("/user/hierarchy.php", $langs->trans("HierarchicView"), 2, $user->rights->user->user->lire || $user->admin);
-				$newmenu->add("", $langs->trans("Groups"), 1, $user->rights->user->user->lire || $user->admin);
-				$newmenu->add("/user/group/card.php?action=create", $langs->trans("NewGroup"), 2, ($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin);
-				$newmenu->add("/user/group/index.php", $langs->trans("ListOfGroups"), 2, ($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin);
+				if (empty($leftmenu) || $leftmenu == 'none' || $leftmenu=="users")
+				{
+					$newmenu->add("", $langs->trans("Users"), 1, $user->rights->user->user->lire || $user->admin);
+					$newmenu->add("/user/card.php?action=create", $langs->trans("NewUser"),2, $user->rights->user->user->creer || $user->admin, '', 'home');
+					$newmenu->add("/user/index.php", $langs->trans("ListOfUsers"), 2, $user->rights->user->user->lire || $user->admin);
+					$newmenu->add("/user/hierarchy.php", $langs->trans("HierarchicView"), 2, $user->rights->user->user->lire || $user->admin);
+					$newmenu->add("", $langs->trans("Groups"), 1, $user->rights->user->user->lire || $user->admin);
+					$newmenu->add("/user/group/card.php?action=create", $langs->trans("NewGroup"), 2, ($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin);
+					$newmenu->add("/user/group/index.php", $langs->trans("ListOfGroups"), 2, ($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin);
+				}
 			}
 		}
 
@@ -582,13 +589,13 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
 			{
 				$langs->load("commercial");
 				$newmenu->add("/comm/prospect/list.php?leftmenu=prospects", $langs->trans("ListProspectsShort"), 1, $user->rights->societe->lire, '', $mainmenu, 'prospects');
-
+				/* no more required, there is a filter that can do more
 				if (empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/comm/prospect/list.php?sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;search_stcomm=-1", $langs->trans("LastProspectDoNotContact"), 2, $user->rights->societe->lire);
 				if (empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/comm/prospect/list.php?sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;search_stcomm=0", $langs->trans("LastProspectNeverContacted"), 2, $user->rights->societe->lire);
 				if (empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/comm/prospect/list.php?sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;search_stcomm=1", $langs->trans("LastProspectToContact"), 2, $user->rights->societe->lire);
 				if (empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/comm/prospect/list.php?sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;search_stcomm=2", $langs->trans("LastProspectContactInProcess"), 2, $user->rights->societe->lire);
 				if (empty($leftmenu) || $leftmenu=="prospects") $newmenu->add("/comm/prospect/list.php?sortfield=s.datec&amp;sortorder=desc&amp;begin=&amp;search_stcomm=3", $langs->trans("LastProspectContactDone"), 2, $user->rights->societe->lire);
-
+				*/
 				$newmenu->add("/societe/soc.php?leftmenu=prospects&amp;action=create&amp;type=p", $langs->trans("MenuNewProspect"), 2, $user->rights->societe->creer);
 				//$newmenu->add("/contact/list.php?leftmenu=customers&amp;type=p", $langs->trans("Contacts"), 2, $user->rights->societe->contact->lire);
 			}
diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php
index 017d1eb86624320b3a0f10f94a352b8b6430008c..472e260cfa6c3eeacaf66f78c912bf0c61ba14a0 100644
--- a/htdocs/core/modules/DolibarrModules.class.php
+++ b/htdocs/core/modules/DolibarrModules.class.php
@@ -42,6 +42,7 @@ abstract class DolibarrModules
     /**
      * @var string Relative path to module style sheet
      * @deprecated
+     * @see module_parts
      */
     public $style_sheet = '';
 
@@ -60,6 +61,11 @@ abstract class DolibarrModules
      */
     public $const = array();
 
+    /**
+     * @var array Module cron jobs entries
+     */
+    public $cronjobs = array();
+
     /**
      * @var array Module access rights
      */
@@ -209,18 +215,21 @@ abstract class DolibarrModules
         // Insert activation module constant
         if (! $err) $err+=$this->_active();
 
-        // Insert new pages for tabs into llx_const
+        // Insert new pages for tabs (into llx_const)
         if (! $err) $err+=$this->insert_tabs();
 
         // Insert activation of module's parts
         if (! $err) $err+=$this->insert_module_parts();
 
-        // Insert constant defined by modules, into llx_const
+        // Insert constant defined by modules (into llx_const)
         if (! $err) $err+=$this->insert_const();
 
-        // Insert boxes def into llx_boxes_def and boxes setup into llx_boxes
+        // Insert boxes def into llx_boxes_def and boxes setup (into llx_boxes)
         if (! $err && ! preg_match('/noboxes/',$options)) $err+=$this->insert_boxes($options);
 
+        // Insert cron job entries (entry in llx_cronjobs)
+        if (! $err) $err+=$this->insert_cronjobs();
+
         // Insert permission definitions of module into llx_rights_def. If user is admin, grant this permission to user.
         if (! $err) $err+=$this->insert_permissions(1);
 
@@ -307,6 +316,9 @@ abstract class DolibarrModules
         // Remove list of module's available boxes (entry in llx_boxes)
         if (! $err && ! preg_match('/(newboxdefonly|noboxes)/',$options)) $err+=$this->delete_boxes();	// We don't have to delete if option ask to keep boxes safe or ask to add new box def only
 
+        // Remove list of module's cron job entries (entry in llx_cronjobs)
+        if (! $err) $err+=$this->delete_cronjobs();
+
         // Remove module's permissions from list of available permissions (entries in llx_rights_def)
         if (! $err) $err+=$this->delete_permissions();
 
@@ -823,6 +835,130 @@ abstract class DolibarrModules
         return $err;
     }
 
+    /**
+     * Adds cronjobs
+     *
+     * @return  int             Error count (0 if OK)
+     */
+    function insert_cronjobs()
+    {
+        require_once DOL_DOCUMENT_ROOT . '/core/class/infobox.class.php';
+
+        global $conf;
+
+        $err=0;
+
+        if (is_array($this->cronjobs))
+        {
+            foreach ($this->cronjobs as $key => $value)
+            {
+                $label  = isset($this->cronjobs[$key]['label'])?$this->cronjobs[$key]['label']:'';
+                $jobtype  = isset($this->cronjobs[$key]['jobtype'])?$this->cronjobs[$key]['jobtype']:'';
+                $class  = isset($this->cronjobs[$key]['class'])?$this->cronjobs[$key]['class']:'';
+                $method = isset($this->cronjobs[$key]['method'])?$this->cronjobs[$key]['method']:'';
+                $command  = isset($this->cronjobs[$key]['command'])?$this->cronjobs[$key]['command']:'';
+                $parameters  = isset($this->cronjobs[$key]['parameters'])?$this->cronjobs[$key]['parameters']:'';
+                $comment = isset($this->cronjobs[$key]['comment'])?$this->cronjobs[$key]['comment']:'';
+                $frequency = isset($this->cronjobs[$key]['frequency'])?$this->cronjobs[$key]['frequency']:'';
+                $unitfrequency = isset($this->cronjobs[$key]['unitfrequency'])?$this->cronjobs[$key]['unitfrequency']:'';
+
+                // Search if boxes def already present
+                $sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."cronjob";
+                $sql.= " WHERE module_name = '".$this->db->escape($this->rights_class)."'";
+                if ($class) $sql.= " AND classesname = '".$this->db->escape($class)."'";
+                if ($method) $sql.= " AND methodename = '".$this->db->escape($method)."'";
+                if ($command) $sql.= " AND command = '".$this->db->escape($command)."'";
+                $sql.= " AND entity = ".$conf->entity;
+
+                $now=dol_now();
+
+                dol_syslog(get_class($this)."::insert_cronjobs", LOG_DEBUG);
+                $result=$this->db->query($sql);
+                if ($result)
+                {
+                    $obj = $this->db->fetch_object($result);
+                    if ($obj->nb == 0)
+                    {
+                        $this->db->begin();
+
+                        if (! $err)
+                        {
+                            $sql = "INSERT INTO ".MAIN_DB_PREFIX."cronjob (module_name, datec, label, jobtype, classesname, methodename, command, params, note, frequency, unitfrequency, entity)";
+                            $sql.= " VALUES (";
+                            $sql.= "'".$this->db->escape($this->rights_class)."', ";
+                            $sql.= "'".$this->db->idate($now)."', ";
+                            $sql.= "'".$this->db->escape($label)."', ";
+                            $sql.= "'".$this->db->escape($jobtype)."', ";
+                            $sql.= ($class?"'".$this->db->escape($class)."'":"null").",";
+                            $sql.= ($method?"'".$this->db->escape($method)."'":"null").",";
+                            $sql.= ($command?"'".$this->db->escape($command)."'":"null").",";
+                            $sql.= ($parameters?"'".$this->db->escape($parameters)."'":"null").",";
+                            $sql.= ($comment?"'".$this->db->escape($comment)."'":"null").",";
+                            $sql.= "'".$this->db->escape($frequency)."', ";
+                            $sql.= "'".$this->db->escape($unitfrequency)."', ";
+                            $sql.= $conf->entity;
+                            $sql.= ")";
+print $sql;
+
+                            dol_syslog(get_class($this)."::insert_cronjobs", LOG_DEBUG);
+                            $resql=$this->db->query($sql);
+                            if (! $resql) $err++;
+
+                        }
+
+                        if (! $err)
+                        {
+                            $this->db->commit();
+                        }
+                        else
+                        {
+                            $this->error=$this->db->lasterror();
+                            $this->db->rollback();
+                        }
+                    }
+                    // else box already registered into database
+                }
+                else
+              {
+                    $this->error=$this->db->lasterror();
+                    $err++;
+                }
+            }
+        }
+
+        return $err;
+    }
+
+
+    /**
+     * Removes boxes
+     *
+     * @return  int Error count (0 if OK)
+     */
+    function delete_cronjobs()
+    {
+        global $conf;
+
+        $err=0;
+
+        if (is_array($this->cronjobs))
+        {
+            $sql = "DELETE FROM ".MAIN_DB_PREFIX."cronjob";
+            $sql.= " WHERE module_name = '".$this->db->escape($this->rights_class)."'";
+            $sql.= " AND entity = ".$conf->entity;
+
+            dol_syslog(get_class($this)."::delete_cronjobs", LOG_DEBUG);
+            $resql=$this->db->query($sql);
+            if (! $resql)
+            {
+                $this->error=$this->db->lasterror();
+                $err++;
+            }
+        }
+
+        return $err;
+    }
+
     /**
      * Removes tabs
      *
diff --git a/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php b/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php
index 4014452d8c2e12fa31b7638a9394672c8690d50c..4bff78bff54f2f275537be0567e24430d0253059 100644
--- a/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php
+++ b/htdocs/core/modules/askpricesupplier/modules_askpricesupplier.php
@@ -156,10 +156,13 @@ abstract class ModeleNumRefAskPriceSupplier
  *  @param      int			$hidedesc       Hide description
  *  @param      int			$hideref        Hide ref
  * 	@return     int         				0 if KO, 1 if OK
- * @deprecated Use the new function generateDocument of Propal class
+ * @deprecated Use the new function generateDocument of AskPriceSupplier class
+ * @see AskPriceSupplier::generateDocument()
  */
 function askpricesupplier_pdf_create(DoliDB $db, AskPriceSupplier $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0)
 {
+	dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING);
+
 	return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref);
 }
 
diff --git a/htdocs/core/modules/commande/modules_commande.php b/htdocs/core/modules/commande/modules_commande.php
index 9253f4dc650832aa1c9327784ad31ec13f41835c..10ab1a2300fb878299cf1283e42965743850711e 100644
--- a/htdocs/core/modules/commande/modules_commande.php
+++ b/htdocs/core/modules/commande/modules_commande.php
@@ -161,8 +161,11 @@ abstract class ModeleNumRefCommandes
  *  @param      int			$hideref        Hide ref
  *  @return     int         				0 if KO, 1 if OK
  *  @deprecated Use the new function generateDocument of Commande class
+ *  @see Commande::generateDocument()
  */
 function commande_pdf_create(DoliDB $db, Commande $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0)
 {
+	dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING);
+
 	return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref);
 }
diff --git a/htdocs/core/modules/contract/modules_contract.php b/htdocs/core/modules/contract/modules_contract.php
index d4311bf30289ec441b0d984e841b281099b83c70..1efeaef3466ccbe79abf82b2b9ade2f713294ed1 100644
--- a/htdocs/core/modules/contract/modules_contract.php
+++ b/htdocs/core/modules/contract/modules_contract.php
@@ -156,8 +156,11 @@ class ModelNumRefContracts
  *  @param  int			$hideref        Hide ref
  *  @return int         				0 if KO, 1 if OK
  * @deprecated Use the new function generateDocument of Contrat class
+ * @see Contrat::generateDocument()
  */
 function contract_pdf_create(DoliDB $db, Contrat $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0)
 {
+	dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING);
+
 	return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref);
 }
diff --git a/htdocs/core/modules/dons/html_cerfafr.modules.php b/htdocs/core/modules/dons/html_cerfafr.modules.php
index 69c862d916d6c3cfb6515206d1152d56d944abdd..67131a2864510b0e4830bbeeef4db696f9764e03 100644
--- a/htdocs/core/modules/dons/html_cerfafr.modules.php
+++ b/htdocs/core/modules/dons/html_cerfafr.modules.php
@@ -3,7 +3,7 @@
  * Copyright (C) 2005-2006	Laurent Destailleur		<eldy@users.sourceforge.net>
  * Copyright (C) 2012		Regis Houssin			<regis.houssin@capnetworks.com>
  * Copyright (C) 2012       Marcos García           <marcosgdf@gmail.com>
- * Copyright (C) 2014       Alexandre Spangaro		<alexandre.spangaro@gmail.com>
+ * Copyright (C) 2014-2015  Alexandre Spangaro		<alexandre.spangaro@gmail.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -181,11 +181,11 @@ class html_cerfafr extends ModeleDon
 				if (preg_match('/fr/i',$outputlangs->defaultlang)) {
 					if ($conf->global->DONATION_ART200 >= 1)
 					{
-						$art200='<input type="checkbox" checked>200 du CGI';
+						$art200='<input type="checkbox" disabled="true" checked>200 du CGI';
 					}
 					else
 					{
-						$art200='<input type="checkbox">200 du CGI';
+						$art200='<input type="checkbox" disabled="true">200 du CGI';
 					}
 				}
 				$form = str_replace('__ARTICLE200__',$art200,$form);
@@ -194,11 +194,11 @@ class html_cerfafr extends ModeleDon
 				if (preg_match('/fr/i',$outputlangs->defaultlang)) {
 					if ($conf->global->DONATION_ART238 >= 1)
 					{
-						$art238='<input type="checkbox" checked>238 bis du CGI';
+						$art238='<input type="checkbox" disabled="true" checked>238 bis du CGI';
 					}
 					else
 					{
-						$art238='<input type="checkbox">238 bis du CGI';
+						$art238='<input type="checkbox" disabled="true">238 bis du CGI';
 					}
 				}
 				$form = str_replace('__ARTICLE238__',$art238,$form);
@@ -207,11 +207,11 @@ class html_cerfafr extends ModeleDon
 				if (preg_match('/fr/i',$outputlangs->defaultlang)) {
 					if ($conf->global->DONATION_ART885 >= 1)
 					{
-						$art885='<input type="checkbox" checked>885-0 V bis du CGI';
+						$art885='<input type="checkbox" disabled="true" checked>885-0 V bis du CGI';
 					}
 					else
 					{
-						$art885='<input type="checkbox">885-0 V bis du CGI';
+						$art885='<input type="checkbox" disabled="true">885-0 V bis du CGI';
 					}
 				}
 				$form = str_replace('__ARTICLE885__',$art885,$form);
diff --git a/htdocs/core/modules/expedition/modules_expedition.php b/htdocs/core/modules/expedition/modules_expedition.php
index 0300d380fe8b2fd697cc7de8b51732f8d8df0913..0cc89498dae48001b2e231d76020508d5d030162 100644
--- a/htdocs/core/modules/expedition/modules_expedition.php
+++ b/htdocs/core/modules/expedition/modules_expedition.php
@@ -154,8 +154,11 @@ abstract class ModelNumRefExpedition
  *  @param      int			$hideref        Hide ref
  * 	@return 	int 						1 if OK -1 if KO
  * 	@deprecated Use the new function generateDocument of Expedition class
+ * @see Expedition::generateDocument()
  */
 function expedition_pdf_create(DoliDB $db, Expedition $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0)
 {
+	dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING);
+
 	return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref);
 }
diff --git a/htdocs/core/modules/facture/mod_facture_mars.php b/htdocs/core/modules/facture/mod_facture_mars.php
index 25c6d2cd2ad7cdb9dc4ccd530476b4bf470777d8..e477e086fe06ee445ef8e742a3f345f9cf796b58 100644
--- a/htdocs/core/modules/facture/mod_facture_mars.php
+++ b/htdocs/core/modules/facture/mod_facture_mars.php
@@ -1,6 +1,6 @@
 <?php
 /* Copyright (C) 2005-2008 Laurent Destailleur  <eldy@users.sourceforge.net>
- * Copyright (C) 2005-2009 Regis Houssin        <regis.houssin@capnetworks.com>
+ * Copyright (C) 2005-2015 Regis Houssin        <regis.houssin@capnetworks.com>
  * Copyright (C) 2013      Juanjo Menent		<jmenent@2byte.es>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -127,10 +127,10 @@ class mod_facture_mars extends ModeleNumRefFactures
 	 */
 	function getNextValue($objsoc,$facture,$mode='next')
 	{
-		global $db,$conf;
+		global $db;
 
 		$prefix=$this->prefixinvoice;
-		
+
 		if ($facture->type == 1) $prefix=$this->prefixreplacement;
 		else if ($facture->type == 2) $prefix=$this->prefixcreditnote;
 		else if ($facture->type == 3) $prefix=$this->prefixdeposit;
@@ -141,7 +141,7 @@ class mod_facture_mars extends ModeleNumRefFactures
 		$sql = "SELECT MAX(CAST(SUBSTRING(facnumber FROM ".$posindice.") AS SIGNED)) as max";	// This is standard SQL
 		$sql.= " FROM ".MAIN_DB_PREFIX."facture";
 		$sql.= " WHERE facnumber LIKE '".$prefix."____-%'";
-		$sql.= " AND entity = ".$conf->entity;
+		$sql.= " AND entity IN (".getEntity('facture', 1).")";
 
 		$resql=$db->query($sql);
 		dol_syslog(get_class($this)."::getNextValue", LOG_DEBUG);
@@ -165,7 +165,7 @@ class mod_facture_mars extends ModeleNumRefFactures
             $sql = "SELECT facnumber as ref";
             $sql.= " FROM ".MAIN_DB_PREFIX."facture";
             $sql.= " WHERE facnumber LIKE '".$prefix."____-".$num."'";
-            $sql.= " AND entity = ".$conf->entity;
+            $sql.= " AND entity IN (".getEntity('facture', 1).")";
 
             dol_syslog(get_class($this)."::getNextValue", LOG_DEBUG);
             $resql=$db->query($sql);
diff --git a/htdocs/core/modules/facture/mod_facture_terre.php b/htdocs/core/modules/facture/mod_facture_terre.php
index dc06c6202eca64a3bfa862513d0b36a2f44996a0..31d8eac736bcf5aa79ebf2b9d1ee86b4f0ccd23e 100644
--- a/htdocs/core/modules/facture/mod_facture_terre.php
+++ b/htdocs/core/modules/facture/mod_facture_terre.php
@@ -1,6 +1,6 @@
 <?php
 /* Copyright (C) 2005-2008 Laurent Destailleur  <eldy@users.sourceforge.net>
- * Copyright (C) 2005-2009 Regis Houssin        <regis.houssin@capnetworks.com>
+ * Copyright (C) 2005-2015 Regis Houssin        <regis.houssin@capnetworks.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -111,7 +111,7 @@ class mod_facture_terre extends ModeleNumRefFactures
 			$this->error=$langs->trans('ErrorNumRefModel',$max);
 			return false;
 		}
-		
+
 		// Check deposit num
 		$fayymm='';
 
@@ -146,7 +146,7 @@ class mod_facture_terre extends ModeleNumRefFactures
 	 */
 	function getNextValue($objsoc,$facture,$mode='next')
 	{
-		global $db,$conf;
+		global $db;
 
 		if ($facture->type == 2) $prefix=$this->prefixcreditnote;
 		else if ($facture->type == 3) $prefix=$this->prefixdeposit;
@@ -157,7 +157,7 @@ class mod_facture_terre extends ModeleNumRefFactures
 		$sql = "SELECT MAX(CAST(SUBSTRING(facnumber FROM ".$posindice.") AS SIGNED)) as max";	// This is standard SQL
 		$sql.= " FROM ".MAIN_DB_PREFIX."facture";
 		$sql.= " WHERE facnumber LIKE '".$prefix."____-%'";
-		$sql.= " AND entity = ".$conf->entity;
+		$sql.= " AND entity IN (".getEntity('facture', 1).")";
 
 		$resql=$db->query($sql);
 		dol_syslog(get_class($this)."::getNextValue", LOG_DEBUG);
@@ -181,7 +181,7 @@ class mod_facture_terre extends ModeleNumRefFactures
             $sql = "SELECT facnumber as ref";
             $sql.= " FROM ".MAIN_DB_PREFIX."facture";
             $sql.= " WHERE facnumber LIKE '".$prefix."____-".$num."'";
-            $sql.= " AND entity = ".$conf->entity;
+            $sql.= " AND entity IN (".getEntity('facture', 1).")";
 
             dol_syslog(get_class($this)."::getNextValue", LOG_DEBUG);
             $resql=$db->query($sql);
diff --git a/htdocs/core/modules/facture/modules_facture.php b/htdocs/core/modules/facture/modules_facture.php
index 2bf03edf55708c046572947da28c7d30c6ad444a..afae663b02b445f8bb9d2f79dd604931ed48263f 100644
--- a/htdocs/core/modules/facture/modules_facture.php
+++ b/htdocs/core/modules/facture/modules_facture.php
@@ -156,9 +156,12 @@ abstract class ModeleNumRefFactures
  *  @param  int			$hideref        Hide ref
  *	@return int        					<0 if KO, >0 if OK
  * @deprecated Use the new function generateDocument of Facture class
+ * @see Facture::generateDocument()
  */
 function facture_pdf_create(DoliDB $db, Facture $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0)
 {
+	dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING);
+
 	return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref);
 }
 
diff --git a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php
index c10c24508e85123861519bddf8f49374ff23a45f..9fe2eaf74881a89aed712d679fe46146493397f1 100644
--- a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php
+++ b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php
@@ -241,7 +241,7 @@ class pdf_soleil extends ModelePDFFicheinter
 
 				$pdf->SetXY($this->marge_gauche, $tab_top + 5);
 				$text=$object->description;
-				if ($object->duree > 0)
+				if ($object->duration > 0)
 				{
 				    $totaltime=convertSecondToTime($object->duration,'all',$conf->global->MAIN_DURATION_OF_WORKDAY);
 				    $text.=($text?' - ':'').$langs->trans("Total").": ".$totaltime;
@@ -436,9 +436,9 @@ class pdf_soleil extends ModelePDFFicheinter
 		$pdf->MultiCell(0, 3, '');		// Set interline to 3
 		$pdf->SetXY($this->marge_gauche, $tab_top + 8);
 		$text=$object->description;
-		if ($object->duree > 0)
+		if ($object->duration > 0)
 		{
-			$totaltime=convertSecondToTime($object->duree,'all',$conf->global->MAIN_DURATION_OF_WORKDAY);
+			$totaltime=convertSecondToTime($object->duration,'all',$conf->global->MAIN_DURATION_OF_WORKDAY);
 			$text.=($text?' - ':'').$langs->trans("Total").": ".$totaltime;
 		}
 		$desc=dol_htmlentitiesbr($text,1);
diff --git a/htdocs/core/modules/livraison/modules_livraison.php b/htdocs/core/modules/livraison/modules_livraison.php
index 0a439ed8fe775c89fe06fec578d0da033d984720..c3c762cbed118f1d2c6f2244b8a4acd0c5fa7608 100644
--- a/htdocs/core/modules/livraison/modules_livraison.php
+++ b/htdocs/core/modules/livraison/modules_livraison.php
@@ -156,9 +156,12 @@ abstract class ModeleNumRefDeliveryOrder
  *	@param	Translate	$outputlangs	objet lang a utiliser pour traduction
  *  @return int         				0 if KO, 1 if OK
  * @deprecated Use the new function generateDocument of Livraison class
+ * @see Livraison::generateDocument()
  */
 function delivery_order_pdf_create(DoliDB $db, Livraison $object, $modele, $outputlangs='')
 {
+	dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING);
+
 	return $object->generateDocument($modele, $outputlangs);
 }
 
diff --git a/htdocs/core/modules/mailings/example.modules.php b/htdocs/core/modules/mailings/example.modules.php
index 428285fb20b8bb13966133306a345dd477137671..f0f8b99e3c57354da82936d571bca9c316c70a1c 100644
--- a/htdocs/core/modules/mailings/example.modules.php
+++ b/htdocs/core/modules/mailings/example.modules.php
@@ -69,7 +69,7 @@ class mailing_example extends MailingTargets
 		// ...
 	    // $target[n]=array('email'=>'email_n','name'=>'name_n','firstname'=>'firstname_n', 'other'=>'other_n');
 
-		// Example: $target[0]=array('email'=>'myemail@mydomain.com', 'name'=>'Doe', 'firstname'=>'John', 'other'=>'Other information');
+		// Example: $target[0]=array('email'=>'myemail@example.com', 'name'=>'Doe', 'firstname'=>'John', 'other'=>'Other information');
 
 		// ----- Your code end here -----
 
diff --git a/htdocs/core/modules/mailings/fraise.modules.php b/htdocs/core/modules/mailings/fraise.modules.php
index 963e8ef0c289965953d1cddac06f642f71e29938..2716bdc1e4ca704c1854ae49cb78b74208682c40 100644
--- a/htdocs/core/modules/mailings/fraise.modules.php
+++ b/htdocs/core/modules/mailings/fraise.modules.php
@@ -153,6 +153,11 @@ class mailing_fraise extends MailingTargets
      */
     function add_to_target($mailing_id,$filtersarray=array())
     {
+	    // Deprecation warning
+	    if ($filtersarray) {
+		    dol_syslog(__METHOD__ . ": filtersarray parameter is deprecated", LOG_WARNING);
+	    }
+
     	global $langs,$_POST;
 		$langs->load("members");
         $langs->load("companies");
diff --git a/htdocs/core/modules/modCategorie.class.php b/htdocs/core/modules/modCategorie.class.php
index 51a55d0cab067063138f21b7dec7472325fe1bc3..b64c9671a99c01b87aa30ced9f689ba9e09a32f7 100644
--- a/htdocs/core/modules/modCategorie.class.php
+++ b/htdocs/core/modules/modCategorie.class.php
@@ -162,7 +162,7 @@ class modCategorie extends DolibarrModules
         $this->export_enabled[$r]='$conf->adherent->enabled';
 		$this->export_permission[$r]=array(array("categorie","lire"),array("adherent","lire"));
 		$this->export_fields_array[$r]=array('u.rowid'=>"CategId",'u.label'=>"Label",'u.description'=>"Description",'p.rowid'=>'MemberId','p.lastname'=>'LastName','p.firstname'=>'Firstname');
-		$this->export_TypeFields_array[$r]=array('u.label'=>"Text",'u.description'=>"Text",'p.rowid'=>'List:adherent:nom','p.lastname'=>'Text','p.firstname'=>'Text');
+		$this->export_TypeFields_array[$r]=array('u.label'=>"Text",'u.description'=>"Text",'p.lastname'=>'Text','p.firstname'=>'Text');
 		$this->export_entities_array[$r]=array('p.rowid'=>'member','p.lastname'=>'member','p.firstname'=>'member');	// We define here only fields that use another picto
 		$this->export_sql_start[$r]='SELECT DISTINCT ';
 		$this->export_sql_end[$r]  =' FROM '.MAIN_DB_PREFIX.'categorie as u, '.MAIN_DB_PREFIX.'categorie_member as cp, '.MAIN_DB_PREFIX.'adherent as p';
@@ -213,7 +213,6 @@ class modCategorie extends DolibarrModules
 		$this->export_TypeFields_array[$r] = array (
 			'u.label' => "Text",
 			'u.description' => "Text",
-			'p.rowid' => 'List:contact:lastname',
 			'p.lastname' => 'Text',
 			'p.firstname' => 'Text',
 			's.nom'=>"Text",
diff --git a/htdocs/core/modules/modDon.class.php b/htdocs/core/modules/modDon.class.php
index e25bd6d3bf91b0141f50775b74521a68089796b5..c546292c2b462195017fe2663dc23d821cd96942 100644
--- a/htdocs/core/modules/modDon.class.php
+++ b/htdocs/core/modules/modDon.class.php
@@ -57,7 +57,7 @@ class modDon  extends DolibarrModules
 		$this->picto='bill';
 
 		// Data directories to create when module is enabled
-		$this->dirs = array("/dons/temp");
+		$this->dirs = array("/don/temp");
 
 		// Dependancies
 		$this->depends = array();
@@ -67,50 +67,49 @@ class modDon  extends DolibarrModules
 		$this->config_page_url = array("donation.php@don");
 
 		// Constants
-		$this->const = array ();
-
-		$this->const[0] = array (
-				"DON_ADDON_MODEL",
-				"chaine",
-				"html_cerfafr",
-				"Nom du gestionnaire de generation de recu de dons",
-				"0"
-		);
-		$this->const[1] = array (
-				"DONATION_ART200",
-				"yesno",
-				"0",
-				"Option Française - Eligibilité Art200 du CGI",
-				"0"
-		);
-		$this->const[2] = array (
-				"DONATION_ART238",
-				"yesno",
-				"0",
-				"Option Française - Eligibilité Art238 bis du CGI",
-				"0"
-		);
-		$this->const[3] = array (
-				"DONATION_ART885",
-				"yesno",
-				"0",
-				"Option Française - Eligibilité Art885-0 V bis du CGI",
-				"0"
-		);
-		$this->const[4] = array (
-				"DONATION_MESSAGE",
-				"chaine",
-				"Thank you",
-				"Message affiché sur le récépissé de versements ou dons",
-				"0"
-		);
-		$this->const[5] = array (
-				"DONATION_ACCOUNTINGACCOUNT",
-				"chaine",
-				"7581",
-				"Compte comptable de remise des versements ou dons",
-				"0"
-		);
+		$this->const = array();
+		$r=0;
+
+		$this->const[$r][0] = "DON_ADDON_MODEL";
+		$this->const[$r][1] = "chaine";
+		$this->const[$r][2] = "html_cerfafr";
+		$this->const[$r][3] = 'Nom du gestionnaire de generation de recu de dons';
+		$this->const[$r][4] = 0;
+
+		$r++;
+		$this->const[$r][0] = "DONATION_ART200";
+		$this->const[$r][1] = "yesno";
+		$this->const[$r][2] = "0";
+		$this->const[$r][3] = 'Option Française - Eligibilité Art200 du CGI';
+		$this->const[$r][4] = 0;
+
+		$r++;
+		$this->const[$r][0] = "DONATION_ART238";
+		$this->const[$r][1] = "yesno";
+		$this->const[$r][2] = "0";
+		$this->const[$r][3] = 'Option Française - Eligibilité Art238 bis du CGI';
+		$this->const[$r][4] = 0;
+
+		$r++;
+		$this->const[$r][0] = "DONATION_ART885";
+		$this->const[$r][1] = "yesno";
+		$this->const[$r][2] = "0";
+		$this->const[$r][3] = 'Option Française - Eligibilité Art885-0 V bis du CGI';
+		$this->const[$r][4] = 0;
+
+		$r++;
+		$this->const[$r][0] = "DONATION_MESSAGE";
+		$this->const[$r][1] = "chaine";
+		$this->const[$r][2] = "Thank you";
+		$this->const[$r][3] = 'Message affiché sur le récépissé de versements ou dons';
+		$this->const[$r][4] = 0;
+
+		$r++;
+		$this->const[$r][0] = "DONATION_ACCOUNTINGACCOUNT";
+		$this->const[$r][1] = "chaine";
+		$this->const[$r][2] = "7581";
+		$this->const[$r][3] = 'Compte comptable de remise des versements ou dons';
+		$this->const[$r][4] = 0;
 
 		// Boxes
 		$this->boxes = array();
@@ -153,8 +152,8 @@ class modDon  extends DolibarrModules
 		global $conf;
 
 		$sql = array(
-			 "DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = '".$this->const[0][4]."' AND entity = ".$conf->entity,
-			 "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('".$this->const[0][4]."','donation',".$conf->entity.")",
+			 "DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = '".$this->const[0][2]."' AND entity = ".$conf->entity,
+			 "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('".$this->const[0][2]."','donation',".$conf->entity.")",
 		);
 
 		return $this->_init($sql,$options);
diff --git a/htdocs/core/modules/modFacture.class.php b/htdocs/core/modules/modFacture.class.php
index f47fe099d0a9c5428048d206d767768d5f9fbc89..6a4ec011747d8583fc1952a434cd8c4273fdd7b0 100644
--- a/htdocs/core/modules/modFacture.class.php
+++ b/htdocs/core/modules/modFacture.class.php
@@ -211,7 +211,10 @@ class modFacture extends DolibarrModules
         			case 'sellist':
 						$tmp='';
 						$tmpparam=unserialize($obj->param);	// $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null
-						if ($tmpparam['options'] && is_array($tmpparam['options'])) $tmp=array_shift(array_keys($tmpparam['options']));
+						if ($tmpparam['options'] && is_array($tmpparam['options'])) {
+							$tmpkeys=array_keys($tmpparam['options']);
+							$tmp=array_shift($tmpkeys);
+						}
 						if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp;
 						break;
         			}
@@ -270,7 +273,10 @@ class modFacture extends DolibarrModules
 					case 'sellist':
 						$tmp='';
 						$tmpparam=unserialize($obj->param);	// $tmp ay be array 'options' => array 'c_currencies:code_iso:code_iso' => null
-						if ($tmpparam['options'] && is_array($tmpparam['options'])) $tmp=array_shift(array_keys($tmpparam['options']));
+						if ($tmpparam['options'] && is_array($tmpparam['options'])) {
+							$tmpkeys=array_keys($tmpparam['options']);
+							$tmp=array_shift($tmpkeys);
+						}
 						if (preg_match('/[a-z0-9_]+:[a-z0-9_]+:[a-z0-9_]+/', $tmp)) $typeFilter="List:".$tmp;
 						break;
 				}
diff --git a/htdocs/core/modules/modFournisseur.class.php b/htdocs/core/modules/modFournisseur.class.php
index ef8b3f7888cd19b731c1c221f4980c5ca909eda2..d43535dd4e136b7875671393491a04658c688043 100644
--- a/htdocs/core/modules/modFournisseur.class.php
+++ b/htdocs/core/modules/modFournisseur.class.php
@@ -279,10 +279,13 @@ class modFournisseur extends DolibarrModules
 		$this->export_label[$r]='Factures fournisseurs et lignes de facture';
 		$this->export_icon[$r]='bill';
 		$this->export_permission[$r]=array(array("fournisseur","facture","export"));
-		$this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.ref'=>"InvoiceRef",'f.ref_supplier'=>"RefSupplier",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.total_ht'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.total_tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_public'=>"InvoiceNote",'fd.rowid'=>'LineId','fd.description'=>"LineDescription",'fd.tva_tx'=>"LineVATRate",'fd.qty'=>"LineQty",'fd.remise_percent'=>"Discount",'fd.total_ht'=>"LineTotalHT",'fd.total_ttc'=>"LineTotalTTC",'fd.tva'=>"LineTotalVAT",'fd.product_type'=>'TypeOfLineServiceOrProduct','fd.fk_product'=>'ProductId','p.ref'=>'ProductRef','p.label'=>'ProductLabel','p.accountancy_code_buy'=>'ProductAccountancyBuyCode');
+		$this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.ref'=>"InvoiceRef",'f.ref_supplier'=>"RefSupplier",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.total_ht'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.total_tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_public'=>"InvoiceNote",'fd.rowid'=>'LineId','fd.description'=>"LineDescription",'fd.tva_tx'=>"LineVATRate",'fd.qty'=>"LineQty",'fd.remise_percent'=>"Discount",'fd.total_ht'=>"LineTotalHT",'fd.total_ttc'=>"LineTotalTTC",'fd.tva'=>"LineTotalVAT",'fd.product_type'=>'TypeOfLineServiceOrProduct','fd.fk_product'=>'ProductId',
+		                                      'p.ref'=>'ProductRef','p.label'=>'ProductLabel','p.accountancy_code_buy'=>'ProductAccountancyBuyCode','project.rowid'=>'ProjectId','project.ref'=>'ProjectRef','project.title'=>'ProjectLabel');
 		//$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:CompanyName",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.total_tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_public'=>"Text",'fd.description'=>"Text",'fd.tva_tx'=>"Text",'fd.qty'=>"Number",'fd.total_ht'=>"Number",'fd.total_ttc'=>"Number",'fd.tva'=>"Number",'fd.product_type'=>'Number','fd.fk_product'=>'List:product:label','p.ref'=>'Text','p.label'=>'Text');
-		$this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.ref_supplier'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.total_tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_public'=>"Text",'fd.description'=>"Text",'fd.tva_tx'=>"Text",'fd.qty'=>"Number",'fd.total_ht'=>"Number",'fd.total_ttc'=>"Number",'fd.tva'=>"Number",'fd.product_type'=>'Number','fd.fk_product'=>'List:product:label','p.ref'=>'Text','p.label'=>'Text');
-		$this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.idprof5'=>'company','s.idprof6'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.ref'=>"invoice",'f.ref_supplier'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.total_ht'=>"invoice",'f.total_ttc'=>"invoice",'f.total_tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_public'=>"invoice",'fd.rowid'=>'invoice_line','fd.description'=>"invoice_line",'fd.tva_tx'=>"invoice_line",'fd.qty'=>"invoice_line",'fd.remise_percent'=>"invoice_line",'fd.total_ht'=>"invoice_line",'fd.total_ttc'=>"invoice_line",'fd.tva'=>"invoice_line",'fd.product_type'=>'invoice_line','fd.fk_product'=>'product','p.ref'=>'product','p.label'=>'product','p.accountancy_code_buy'=>'product');
+		$this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.ref_supplier'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.total_tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_public'=>"Text",'fd.description'=>"Text",'fd.tva_tx'=>"Text",'fd.qty'=>"Number",'fd.total_ht'=>"Number",'fd.total_ttc'=>"Number",'fd.tva'=>"Number",'fd.product_type'=>'Number','fd.fk_product'=>'List:product:label',
+		                                          'p.ref'=>'Text','p.label'=>'Text','project.ref'=>'Text','project.title'=>'Text');
+		$this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.idprof5'=>'company','s.idprof6'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.ref'=>"invoice",'f.ref_supplier'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.total_ht'=>"invoice",'f.total_ttc'=>"invoice",'f.total_tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_public'=>"invoice",'fd.rowid'=>'invoice_line','fd.description'=>"invoice_line",'fd.tva_tx'=>"invoice_line",'fd.qty'=>"invoice_line",'fd.remise_percent'=>"invoice_line",'fd.total_ht'=>"invoice_line",'fd.total_ttc'=>"invoice_line",'fd.tva'=>"invoice_line",'fd.product_type'=>'invoice_line','fd.fk_product'=>'product',
+		                                         'p.ref'=>'product','p.label'=>'product','p.accountancy_code_buy'=>'product','project.rowid'=>'project','project.ref'=>'project','project.title'=>'project');
 		$this->export_dependencies_array[$r]=array('invoice_line'=>'fd.rowid','product'=>'fd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them
 		// Add extra fields object
 		$sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'facture_fourn'";
@@ -362,6 +365,7 @@ class modFournisseur extends DolibarrModules
 		$this->export_sql_end[$r]  =' FROM '.MAIN_DB_PREFIX.'societe as s';
 		$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON s.fk_pays = c.rowid,';
 		$this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'facture_fourn as f';
+		$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'projet as project on (f.fk_projet = project.rowid)';
 		$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facture_fourn_extrafields as extra ON f.rowid = extra.fk_object';
 		$this->export_sql_end[$r] .=' , '.MAIN_DB_PREFIX.'facture_fourn_det as fd';
 		$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facture_fourn_det_extrafields as extraline ON fd.rowid = extraline.fk_object';
@@ -374,10 +378,13 @@ class modFournisseur extends DolibarrModules
 		$this->export_label[$r]='Factures fournisseurs et reglements';
 		$this->export_icon[$r]='bill';
 		$this->export_permission[$r]=array(array("fournisseur","facture","export"));
-		$this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.ref'=>"InvoiceRef",'f.ref_supplier'=>"RefSupplier",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.total_ht'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.total_tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_public'=>"InvoiceNote",'p.rowid'=>'PaymentId','pf.amount'=>'AmountPayment','p.datep'=>'DatePayment','p.num_paiement'=>'PaymentNumber');
+		$this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6','s.tva_intra'=>'VATIntra','f.rowid'=>"InvoiceId",'f.ref'=>"InvoiceRef",'f.ref_supplier'=>"RefSupplier",'f.datec'=>"InvoiceDateCreation",'f.datef'=>"DateInvoice",'f.total_ht'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.total_tva'=>"TotalVAT",'f.paye'=>"InvoicePaid",'f.fk_statut'=>'InvoiceStatus','f.note_public'=>"InvoiceNote",'p.rowid'=>'PaymentId','pf.amount'=>'AmountPayment',
+		                                      'p.datep'=>'DatePayment','p.num_paiement'=>'PaymentNumber','project.rowid'=>'ProjectId','project.ref'=>'ProjectRef','project.title'=>'ProjectLabel');
 		//$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:CompanyName",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.total_tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_public'=>"Text",'pf.amount'=>'Number','p.datep'=>'Date','p.num_paiement'=>'Number');
-		$this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.ref_supplier'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.total_tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_public'=>"Text",'pf.amount'=>'Number','p.datep'=>'Date','p.num_paiement'=>'Number');
-		$this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.idprof5'=>'company','s.idprof6'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.ref'=>"invoice",'f.ref_supplier'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.total_ht'=>"invoice",'f.total_ttc'=>"invoice",'f.total_tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_public'=>"invoice",'p.rowid'=>'payment','pf.amount'=>'payment','p.datep'=>'payment','p.num_paiement'=>'payment');
+		$this->export_TypeFields_array[$r]=array('s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','c.code'=>'Text','s.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.ref_supplier'=>"Text",'f.datec'=>"Date",'f.datef'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.total_tva'=>"Number",'f.paye'=>"Boolean",'f.fk_statut'=>'Status','f.note_public'=>"Text",'pf.amount'=>'Number',
+		                                          'p.datep'=>'Date','p.num_paiement'=>'Number','project.ref'=>'Text','project.title'=>'Text');
+		$this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.idprof5'=>'company','s.idprof6'=>'company','s.tva_intra'=>'company','f.rowid'=>"invoice",'f.ref'=>"invoice",'f.ref_supplier'=>"invoice",'f.datec'=>"invoice",'f.datef'=>"invoice",'f.total_ht'=>"invoice",'f.total_ttc'=>"invoice",'f.total_tva'=>"invoice",'f.paye'=>"invoice",'f.fk_statut'=>'invoice','f.note_public'=>"invoice",'p.rowid'=>'payment','pf.amount'=>'payment',
+		                                          'p.datep'=>'payment','p.num_paiement'=>'payment','project.rowid'=>'project','project.ref'=>'project','project.title'=>'project');
 		$this->export_dependencies_array[$r]=array('payment'=>'p.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them
 		// Add extra fields object
 		$sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'facture_fourn'";
@@ -420,6 +427,7 @@ class modFournisseur extends DolibarrModules
 		$this->export_sql_end[$r]  =' FROM '.MAIN_DB_PREFIX.'societe as s';
 		$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON s.fk_pays = c.rowid,';
 		$this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'facture_fourn as f';
+		$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'projet as project on (f.fk_projet = project.rowid)';
 		$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facture_fourn_extrafields as extra ON f.rowid = extra.fk_object';
 		$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiementfourn_facturefourn as pf ON pf.fk_facturefourn = f.rowid';
 		$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiementfourn as p ON pf.fk_paiementfourn = p.rowid';
@@ -432,14 +440,17 @@ class modFournisseur extends DolibarrModules
 		$this->export_label[$r]='Commandes fournisseurs et lignes de commandes';
 		$this->export_icon[$r]='order';
 		$this->export_permission[$r]=array(array("fournisseur","commande","export"));
-		$this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6','s.tva_intra'=>'VATIntra','f.rowid'=>"OrderId",'f.ref'=>"Ref",'f.ref_supplier'=>"RefSupplier",'f.date_creation'=>"DateCreation",'f.date_commande'=>"OrderDate",'f.total_ht'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.tva'=>"TotalVAT",'f.fk_statut'=>'Status','f.date_approve'=>'DateApprove','f.date_approve2'=>'DateApprove2','f.note_public'=>"NotePublic",'f.note_private'=>"NotePrivate",'ua1.login'=>'ApprovedBy','ua2.login'=>'ApprovedBy2','fd.rowid'=>'LineId','fd.description'=>"LineDescription",'fd.tva_tx'=>"LineVATRate",'fd.qty'=>"LineQty",'fd.remise_percent'=>"Discount",'fd.total_ht'=>"LineTotalHT",'fd.total_ttc'=>"LineTotalTTC",'fd.total_tva'=>"LineTotalVAT",'fd.product_type'=>'TypeOfLineServiceOrProduct','fd.fk_product'=>'ProductId','p.ref'=>'ProductRef','p.label'=>'ProductLabel');
+		$this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','c.code'=>'CountryCode','s.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.idprof5'=>'ProfId5','s.idprof6'=>'ProfId6','s.tva_intra'=>'VATIntra','f.rowid'=>"OrderId",'f.ref'=>"Ref",'f.ref_supplier'=>"RefSupplier",'f.date_creation'=>"DateCreation",'f.date_commande'=>"OrderDate",'f.total_ht'=>"TotalHT",'f.total_ttc'=>"TotalTTC",'f.tva'=>"TotalVAT",'f.fk_statut'=>'Status','f.date_approve'=>'DateApprove','f.date_approve2'=>'DateApprove2','f.note_public'=>"NotePublic",'f.note_private'=>"NotePrivate",'ua1.login'=>'ApprovedBy','ua2.login'=>'ApprovedBy2','fd.rowid'=>'LineId','fd.description'=>"LineDescription",'fd.tva_tx'=>"LineVATRate",'fd.qty'=>"LineQty",'fd.remise_percent'=>"Discount",'fd.total_ht'=>"LineTotalHT",'fd.total_ttc'=>"LineTotalTTC",'fd.total_tva'=>"LineTotalVAT",'fd.product_type'=>'TypeOfLineServiceOrProduct','fd.fk_product'=>'ProductId',
+											  'p.ref'=>'ProductRef','p.label'=>'ProductLabel','project.rowid'=>'ProjectId','project.ref'=>'ProjectRef','project.title'=>'ProjectLabel');
 		if (empty($conf->global->SUPPLIER_ORDER_DOUBLE_APPROVAL))
 		{
 			unset($this->export_fields_array['f.date_approve2']);
 			unset($this->export_fields_array['ua2.login']);
 		}
-		$this->export_TypeFields_array[$r]=array('s.rowid'=>"company",'s.nom'=>'Text','s.address'=>'Text','s.cp'=>'Text','s.ville'=>'Text','c.code'=>'Text','s.tel'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.idprof5'=>'Text','s.idprof6'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.ref_supplier'=>"Text",'f.date_creation'=>"Date",'f.date_commande'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.tva'=>"Number",'f.fk_statut'=>'Status','f.date_approve'=>'Date','f.date_approve2'=>'Date','f.note_public'=>"Text",'f.note_private'=>"Text",'fd.description'=>"Text",'fd.tva_tx'=>"Number",'fd.qty'=>"Number",'fd.remise_percent'=>"Number",'fd.total_ht'=>"Number",'fd.total_ttc'=>"Number",'fd.total_tva'=>"Number",'fd.product_type'=>'Number','fd.fk_product'=>'List:product:label','p.ref'=>'Text','p.label'=>'Text');
-		$this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.idprof5'=>'company','s.idprof6'=>'company','s.tva_intra'=>'company','ua1.login'=>'user','ua2.login'=>'user','fd.rowid'=>'order_line','fd.description'=>"order_line",'fd.tva_tx'=>"order_line",'fd.qty'=>"order_line",'fd.remise_percent'=>"order_line",'fd.total_ht'=>"order_line",'fd.total_ttc'=>"order_line",'fd.total_tva'=>"order_line",'fd.product_type'=>'order_line','fd.fk_product'=>'product','p.ref'=>'product','p.label'=>'product');
+		$this->export_TypeFields_array[$r]=array('s.rowid'=>"company",'s.nom'=>'Text','s.address'=>'Text','s.cp'=>'Text','s.ville'=>'Text','c.code'=>'Text','s.tel'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.idprof5'=>'Text','s.idprof6'=>'Text','s.tva_intra'=>'Text','f.ref'=>"Text",'f.ref_supplier'=>"Text",'f.date_creation'=>"Date",'f.date_commande'=>"Date",'f.total_ht'=>"Number",'f.total_ttc'=>"Number",'f.tva'=>"Number",'f.fk_statut'=>'Status','f.date_approve'=>'Date','f.date_approve2'=>'Date','f.note_public'=>"Text",'f.note_private'=>"Text",'fd.description'=>"Text",'fd.tva_tx'=>"Number",'fd.qty'=>"Number",'fd.remise_percent'=>"Number",'fd.total_ht'=>"Number",'fd.total_ttc'=>"Number",'fd.total_tva'=>"Number",'fd.product_type'=>'Number','fd.fk_product'=>'List:product:label',
+		                                          'p.ref'=>'Text','p.label'=>'Text','project.ref'=>'Text','project.title'=>'Text');
+		$this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','c.code'=>'company','s.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.idprof5'=>'company','s.idprof6'=>'company','s.tva_intra'=>'company','ua1.login'=>'user','ua2.login'=>'user','fd.rowid'=>'order_line','fd.description'=>"order_line",'fd.tva_tx'=>"order_line",'fd.qty'=>"order_line",'fd.remise_percent'=>"order_line",'fd.total_ht'=>"order_line",'fd.total_ttc'=>"order_line",'fd.total_tva'=>"order_line",'fd.product_type'=>'order_line','fd.fk_product'=>'product',
+		                                         'p.ref'=>'product','p.label'=>'product','project.rowid'=>'project','project.ref'=>'project','project.title'=>'project');
 		$this->export_dependencies_array[$r]=array('order_line'=>'fd.rowid','product'=>'fd.rowid'); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them
 		// Add extra fields object
 		$sql="SELECT name, label, type, param FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'commande_fournisseur'";
@@ -520,6 +531,7 @@ class modFournisseur extends DolibarrModules
 		$this->export_sql_end[$r]  =' FROM '.MAIN_DB_PREFIX.'societe as s';
 		$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON s.fk_pays = c.rowid,';
 		$this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'commande_fournisseur as f';
+		$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'projet as project on (f.fk_projet = project.rowid)';
 		$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as ua1 ON ua1.rowid = f.fk_user_approve';
 		$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'user as ua2 ON ua2.rowid = f.fk_user_approve2';
 		$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'commande_fournisseur_extrafields as extra ON f.rowid = extra.fk_object,';
diff --git a/htdocs/core/modules/modGravatar.class.php b/htdocs/core/modules/modGravatar.class.php
index 2f32818bb106116914785d4171e0dcee9c10cacf..aae38ae391b2009fe240888752ead2f048c17a15 100644
--- a/htdocs/core/modules/modGravatar.class.php
+++ b/htdocs/core/modules/modGravatar.class.php
@@ -1,6 +1,6 @@
 <?php
 /* Copyright (C) 2003      Rodolphe Quiedeville <rodolphe@quiedeville.org>
- * Copyright (C) 2004-2009 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2004-2015 Laurent Destailleur  <eldy@users.sourceforge.net>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -62,7 +62,7 @@ class modGravatar extends DolibarrModules
 		// Name of image file used for this module.
 		// If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue'
 		// If file is in module/images directory, use this->picto=DOL_URL_ROOT.'/module/images/file.png'
-		$this->picto='technic';
+		$this->picto='gravatar';
 
 		// Data directories to create when module is enabled.
 		// Example: this->dirs = array("/mymodule/temp");
@@ -99,6 +99,13 @@ class modGravatar extends DolibarrModules
 		//$r++;
 
 
+		// Cronjobs
+		$this->cronjobs = array();			// List of cron jobs entries to add
+		// Example: $this->cronjobs=array(0=>array('label'=>'My label', 'jobtype'=>'method', 'class'=>'MyClass', 'method'=>'myMethod', 'parameters'=>'', 'comment'=>'Comment', 'frequency'=>3600, 'unitfrequency'=>3600),
+		//                                1=>array('label'=>'My label', 'jobtype'=>'command', 'command'=>'', 'parameters'=>'', 'comment'=>'Comment', 'frequency'=>3600, 'unitfrequency'=>3600)
+		// );
+		$r=0;
+
 		// Permissions
 		$this->rights = array();		// Permission array used by this module
 		$r=0;
diff --git a/htdocs/core/modules/modMailmanSpip.class.php b/htdocs/core/modules/modMailmanSpip.class.php
index 95a3ecd03c42aa416f18df7f1957f54f7c341913..1b5bbab61c69706e26fe96084195aecc297a6b03 100644
--- a/htdocs/core/modules/modMailmanSpip.class.php
+++ b/htdocs/core/modules/modMailmanSpip.class.php
@@ -66,8 +66,8 @@ class modMailmanSpip extends DolibarrModules
 
 		// Constants
 		$this->const = array();
-		$this->const[1] = array("ADHERENT_MAILMAN_UNSUB_URL","chaine","http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&user=%EMAIL%","Url de désinscription aux listes mailman");
-		$this->const[2] = array("ADHERENT_MAILMAN_URL","chaine","http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&send_welcome_msg_to_this_batch=1&subscribees=%EMAIL%","Url pour les inscriptions mailman");
+		$this->const[1] = array("ADHERENT_MAILMAN_UNSUB_URL","chaine","http://lists.example.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&user=%EMAIL%","Url de désinscription aux listes mailman");
+		$this->const[2] = array("ADHERENT_MAILMAN_URL","chaine","http://lists.example.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&send_welcome_msg_to_this_batch=1&subscribees=%EMAIL%","Url pour les inscriptions mailman");
 		$this->const[3] = array("ADHERENT_MAILMAN_LISTS","chaine","","Mailing-list to subscribe new members to");
 
 		// Boxes
diff --git a/htdocs/core/modules/modPrinting.class.php b/htdocs/core/modules/modPrinting.class.php
index e288bd83e4d9c05cebe0a03e2e77c1a534459a2a..bb18d7d022c4667bf207a2fcbe53cb859d101b81 100644
--- a/htdocs/core/modules/modPrinting.class.php
+++ b/htdocs/core/modules/modPrinting.class.php
@@ -1,6 +1,6 @@
 <?php
-/* Copyright (C) 2014 Laurent Destailleur  <eldy@users.sourceforge.net>
- * Copyright (C) 2014 Frederic France      <frederic.france@free.fr>
+/* Copyright (C) 2014-2015 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2014      Frederic France      <frederic.france@free.fr>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -16,22 +16,21 @@
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
 
-/**     \defgroup   printing     Module printing
- *      \brief      Module for activation of printing icon
+/** \defgroup   printing     Module printing
+ *  \brief      Module for activation of printing icon to make direct printing
  */
 
 /**
  *  \file       htdocs/core/modules/modPrinting.class.php
  *  \ingroup    printing
- *  \brief      Fichier de description et activation du module Printing
+ *  \brief      File of class to describe and activate module Direct Printing
  */
 include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php';
 
 
 
 /**
- *  \class      modPrinting
- *  \brief      Classe de description et activation du module Printing
+ *  Class to describe and activate module Direct Printing
  */
 class modPrinting extends DolibarrModules
 {
@@ -47,7 +46,7 @@ class modPrinting extends DolibarrModules
         $this->numero = 64000;
         // Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
         // It is used to group modules in module setup page
-        $this->family = "other";
+        $this->family = "technic";
         // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
         $this->name = preg_replace('/^mod/i','',get_class($this));
 		// Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
@@ -59,7 +58,7 @@ class modPrinting extends DolibarrModules
         // Name of image file used for this module.
         // If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue'
         // If file is in module/img directory under name object_pictovalue.png, use this->picto='pictovalue@module'
-        $this->picto = 'technic';
+        $this->picto = 'printer';
 
         // Data directories to create when module is enabled.
         $this->dirs = array();
diff --git a/htdocs/core/modules/modResource.class.php b/htdocs/core/modules/modResource.class.php
index aa97f5608dfce3720d488355aa543bea2a27ec79..1f7a92f47b7f6500a01fd2c686d005293a6cd429 100644
--- a/htdocs/core/modules/modResource.class.php
+++ b/htdocs/core/modules/modResource.class.php
@@ -1,6 +1,5 @@
 <?php
-/* Module to manage resources into Dolibarr ERP/CRM
- * Copyright (C) 2013-2014	Jean-François Ferry	<jfefe@aternatik.fr>
+/* Copyright (C) 2013-2014 Jean-François Ferry <jfefe@aternatik.fr>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -14,6 +13,8 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Module to manage resources into Dolibarr ERP/CRM
  */
 
 /**
@@ -51,7 +52,7 @@ class modResource extends DolibarrModules
 
 		// Family can be 'crm','financial','hr','projects','products','ecm','technic','other'
 		// It is used to group modules in module setup page
-		$this->family = "hr";
+		$this->family = "projects";
 		// Module label (no space allowed)
 		// used if translation string 'ModuleXXXName' not found
 		// (where XXX is value of numeric property 'numero' of module)
@@ -67,7 +68,7 @@ class modResource extends DolibarrModules
 		$this->const_name = 'MAIN_MODULE_' . strtoupper($this->name);
 		// Where to store the module in setup page
 		// (0=common,1=interface,2=others,3=very specific)
-		$this->special = 0;
+		$this->special = 2;
 		// Name of image file used for this module.
 		// If file is in theme/yourtheme/img directory under name object_pictovalue.png
 		// use this->picto='pictovalue'
@@ -151,8 +152,7 @@ class modResource extends DolibarrModules
 		// (reresource 'x' by type of category (0=product, 1=supplier, 2=customer, 3=member)
 
 		$this->tabs = array(
-			'action:+resources:Resources:resource:$user->rights->resource->read:/resource/element_resource.php?element=action&element_id=__ID__',
-			'thirdparty:+resources:Resources:resource:$user->rights->resource->read:/resource/element_resource.php?element=societe&element_id=__ID__'
+//			'thirdparty:+resources:Resources:resource:$user->rights->resource->read:/resource/element_resource.php?element=societe&element_id=__ID__'
 		);
 
 		// Boxes
diff --git a/htdocs/core/modules/modSalaries.class.php b/htdocs/core/modules/modSalaries.class.php
index 038d11f4ebaf6428e60e5de2965d2c2e831307f4..fa8a0ebd811e3f3d5f6a1a021555ad7d61a2d624 100644
--- a/htdocs/core/modules/modSalaries.class.php
+++ b/htdocs/core/modules/modSalaries.class.php
@@ -136,15 +136,15 @@ class modSalaries extends DolibarrModules
 		$r++;
 		$this->export_code[$r]=$this->rights_class.'_'.$r;
 		$this->export_label[$r]='Salaries and payments';
-		$this->export_permission[$r]=array(array("salary","export"));
-		$this->export_fields_array[$r]=array('u.firstname'=>"Firstname",'u.lastname'=>"Lastname",'u.login'=>"Login",'u.salary'=>'CurrentSalary','p.rowid'=>'PaymentId','p.datep'=>'DatePayment','p.datesp'=>'DateStartPeriod','p.dateep'=>'DateEndPeriod','p.amount'=>'AmountPayment','p.num_paiement'=>'Numero','p.label'=>'Label','p.note'=>'Note');
-		$this->export_TypeFields_array[$r]=array('u.firstname'=>"Text",'u.lastname'=>"Text",'u.login'=>'Text','u.salary'=>"Number",'p.datep'=>'Date','p.datesp'=>'Date','p.dateep'=>'Date','p.amount'=>'Number','p.num_paiement'=>'Number','p.label'=>'Text');
-		$this->export_entities_array[$r]=array('u.firstname'=>'user','u.lastname'=>'user','u.login'=>'user','u.salary'=>'user','p.datep'=>'payment','p.datesp'=>'payment','p.dateep'=>'payment','p.amount'=>'payment','p.label'=>'payment','p.note'=>'payment','p.num_paiement'=>'payment');
+		$this->export_permission[$r]=array(array("salaries","export"));
+		$this->export_fields_array[$r]=array('u.firstname'=>"Firstname",'u.lastname'=>"Lastname",'u.login'=>"Login",'u.salary'=>'CurrentSalary','p.datep'=>'DatePayment','p.datesp'=>'DateStartPeriod','p.dateep'=>'DateEndPeriod','p.amount'=>'AmountPayment','p.num_payment'=>'Numero','p.label'=>'Label','p.note'=>'Note');
+		$this->export_TypeFields_array[$r]=array('u.firstname'=>"Text",'u.lastname'=>"Text",'u.login'=>'Text','u.salary'=>"Number",'p.datep'=>'Date','p.datesp'=>'Date','p.dateep'=>'Date','p.amount'=>'Number','p.num_payment'=>'Number','p.label'=>'Text');
+		$this->export_entities_array[$r]=array('u.firstname'=>'user','u.lastname'=>'user','u.login'=>'user','u.salary'=>'user','p.datep'=>'payment','p.datesp'=>'payment','p.dateep'=>'payment','p.amount'=>'payment','p.label'=>'payment','p.note'=>'payment','p.num_payment'=>'payment');
 
 		$this->export_sql_start[$r]='SELECT DISTINCT ';
 		$this->export_sql_end[$r]  =' FROM '.MAIN_DB_PREFIX.'user as u';
-		$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiementsalary as p ON p.fk_user = u.rowid';
-		$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_paiement as cp ON p.fk_typepaiement = cp.rowid';
+		$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'payment_salary as p ON p.fk_user = u.rowid';
+		$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_paiement as cp ON p.fk_typepayment = cp.id';
 		$this->export_sql_end[$r] .=' AND u.entity IN ('.getEntity('user',1).')';
 	}
 
diff --git a/htdocs/core/modules/modSyncSupplierWebServices.class.php b/htdocs/core/modules/modSyncSupplierWebServices.class.php
index c17892ee217e180286ef841e2ec88854199f4e0d..37366270a57499e4133c5d2c1a69079ab2ffb40c 100644
--- a/htdocs/core/modules/modSyncSupplierWebServices.class.php
+++ b/htdocs/core/modules/modSyncSupplierWebServices.class.php
@@ -25,7 +25,7 @@
 include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php';
 
 /**
- *	Class to describe a WebServices module
+ *	Class to describe a sync supplier web services module
  */
 class modSyncSupplierWebServices extends DolibarrModules
 {
diff --git a/htdocs/core/modules/printing/printgcp.modules.php b/htdocs/core/modules/printing/printgcp.modules.php
index a0e0d37d074dffe49f63cb3aa3eebc6ae3dbc8d0..b32eece2e1a684bc0d705533e6453b89b06036a0 100644
--- a/htdocs/core/modules/printing/printgcp.modules.php
+++ b/htdocs/core/modules/printing/printgcp.modules.php
@@ -320,14 +320,14 @@ class printing_printgcp extends PrintingDriver
     }
 
     /**
-     *  Curl request
+     *  Make a curl request
      *
-     *  @param  string  $url            url to hit
-     *  @param  array   $postfields     array of post fields
-     *  @param  string[]   $headers        array of http headers
-     *  @return string                   response from curl
+     *  @param  string  	$url            url to hit
+     *  @param  array   	$postfields     array of post fields
+     *  @param  string[]   	$headers        array of http headers
+     *  @return string                   	response from curl
      */
-    private function makeCurl($url,$postfields=array(),$headers=array())
+    private function makeCurl($url, $postfields=array(), $headers=array())
     {
         // Curl Init
         $curl = curl_init($url);
diff --git a/htdocs/core/modules/project/modules_project.php b/htdocs/core/modules/project/modules_project.php
index f79de70816450ac94cff6ac4e3110ee39088a45d..acc1c2738f47e837c1cfad1d99989cc2e01586ba 100644
--- a/htdocs/core/modules/project/modules_project.php
+++ b/htdocs/core/modules/project/modules_project.php
@@ -153,9 +153,12 @@ abstract class ModeleNumRefProjects
  *  @param  int			$hideref        Hide ref
  *  @return int         				0 if KO, 1 if OK
  * @deprecated Use the new function generateDocument of Project class
+ * @see Project::generateDocument()
  */
 function project_pdf_create(DoliDB $db, Project $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0)
 {
+	dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING);
+
 	return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref);
 }
 
diff --git a/htdocs/core/modules/project/task/modules_task.php b/htdocs/core/modules/project/task/modules_task.php
index 9f9cb5041c8f815c4a44973c663721a52ea82899..bea4d342e29394f0ad2c26131593204dd6de84a6 100644
--- a/htdocs/core/modules/project/task/modules_task.php
+++ b/htdocs/core/modules/project/task/modules_task.php
@@ -154,9 +154,12 @@ abstract class ModeleNumRefTask
  *  @param  HookManager	$hookmanager	Hook manager instance
  *  @return int         				0 if KO, 1 if OK
  * @deprecated Use the new function generateDocument of Task class
+ * @see Task::generateDocument()
  */
 function task_pdf_create(DoliDB $db, Task $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0, $hookmanager=false)
 {
+	dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING);
+
 	return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $hookmanager);
 }
 
diff --git a/htdocs/core/modules/propale/modules_propale.php b/htdocs/core/modules/propale/modules_propale.php
index 9ad90e9e3b5ab0736e6f5a1dddfca459a6eac414..6c0be15f0df91a3f2b92a84a40fe39de13a85188 100644
--- a/htdocs/core/modules/propale/modules_propale.php
+++ b/htdocs/core/modules/propale/modules_propale.php
@@ -157,9 +157,12 @@ abstract class ModeleNumRefPropales
  *  @param      int			$hideref        Hide ref
  * 	@return     int         				0 if KO, 1 if OK
  * @deprecated Use the new function generateDocument of Propal class
+ * @see Propal::generateDocument()
  */
 function propale_pdf_create(DoliDB $db, Propal $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0)
 {
+	dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING);
+
 	return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref);
 }
 
diff --git a/htdocs/core/modules/supplier_order/modules_commandefournisseur.php b/htdocs/core/modules/supplier_order/modules_commandefournisseur.php
index a968955ea7345b11234e09a888c9a85a2fc4c383..c14c260779533af1dfd82db7a2fd6efeb5547d1b 100644
--- a/htdocs/core/modules/supplier_order/modules_commandefournisseur.php
+++ b/htdocs/core/modules/supplier_order/modules_commandefournisseur.php
@@ -151,9 +151,12 @@ abstract class ModeleNumRefSuppliersOrders
  *  @param      int			$hideref        Hide ref
  *  @return     int          				0 if KO, 1 if OK
  * @deprecated Use the new function generateDocument of CommandeFournisseur class
+ * @see CommandeFournisseur::generateDocument()
  */
 function supplier_order_pdf_create(DoliDB $db, CommandeFournisseur $object, $modele, $outputlangs, $hidedetails=0, $hidedesc=0, $hideref=0)
 {
+	dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING);
+
 	return $object->generateDocument($modele, $outputlangs, $hidedetails, $hidedesc, $hideref);
 }
 
diff --git a/htdocs/core/tpl/admin_extrafields_add.tpl.php b/htdocs/core/tpl/admin_extrafields_add.tpl.php
index 44de526942fc76a69ec8516f8319eaece43e2c11..fc13acc7072b894697d4c39643066413281603ae 100644
--- a/htdocs/core/tpl/admin_extrafields_add.tpl.php
+++ b/htdocs/core/tpl/admin_extrafields_add.tpl.php
@@ -1,5 +1,5 @@
 <?php
-/* Copyright (C) 2010-2012	Laurent Destailleur	<eldy@users.sourceforge.net>
+/* Copyright (C) 2010-2015	Laurent Destailleur	<eldy@users.sourceforge.net>
  * Copyright (C) 2012		Regis Houssin		<regis.houssin@capnetworks.com>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -20,7 +20,7 @@
  * The following vars must be defined
  * $type2label
  * $form
- * $conf, $lang, 
+ * $conf, $lang,
  */
 
 ?>
@@ -113,6 +113,12 @@
 <tr><td><?php echo $langs->trans("Required"); ?></td><td class="valeur"><input id="required" type="checkbox" name="required" <?php echo (GETPOST('required')?' checked':''); ?>></td></tr>
 <!-- Always editable -->
 <tr><td><?php echo $langs->trans("AlwaysEditable"); ?></td><td class="valeur"><input id="alwayseditable" type="checkbox" name="alwayseditable" <?php echo (GETPOST('alwayseditable')?' checked':''); ?>></td></tr>
+<?php if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { ?>
+<!-- By default visible into list -->
+<tr><td><?php echo $langs->trans("ByDefaultInList"); ?>
+<?php echo img_info($langs->trans("FeatureNotYetSupported")); ?>
+</td><td class="valeur"><input id="list" type="checkbox" name="list" <?php echo (GETPOST('list')?' checked':''); ?>></td></tr>
+<?php } ?>
 </table>
 
 <div align="center"><br><input type="submit" name="button" class="button" value="<?php echo $langs->trans("Save"); ?>"> &nbsp;
diff --git a/htdocs/core/tpl/admin_extrafields_edit.tpl.php b/htdocs/core/tpl/admin_extrafields_edit.tpl.php
index 9c283b83867d7a460f5f6dab664a9ffea22d562d..286eba8c3b7813dcf1a39a766630352dc1fd004d 100644
--- a/htdocs/core/tpl/admin_extrafields_edit.tpl.php
+++ b/htdocs/core/tpl/admin_extrafields_edit.tpl.php
@@ -56,6 +56,8 @@ $required=$extrafields->attribute_required[$attrname];
 $pos=$extrafields->attribute_pos[$attrname];
 $alwayseditable=$extrafields->attribute_alwayseditable[$attrname];
 $param=$extrafields->attribute_param[$attrname];
+$perms=$extrafields->attribute_perms[$attrname];
+$list=$extrafields->attribute_list[$attrname];
 
 if((($type == 'select') || ($type == 'checkbox') || ($type == 'radio')) && is_array($param))
 {
@@ -113,7 +115,12 @@ if(($type == 'select') || ($type == 'sellist') || ($type == 'checkbox') || ($typ
 <tr><td><?php echo $langs->trans("Required"); ?></td><td class="valeur"><input id="required" type="checkbox" name="required" <?php echo ($required?' checked':''); ?>></td></tr>
 <!-- Always editable -->
 <tr><td><?php echo $langs->trans("AlwaysEditable"); ?></td><td class="valeur"><input id="alwayseditable" type="checkbox" name="alwayseditable" <?php echo ($alwayseditable?' checked':''); ?>></td></tr>
-
+<!-- By default visible into list -->
+<?php if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { ?>
+<tr><td><?php echo $langs->trans("ByDefaultInList"); ?>
+<?php echo img_info($langs->trans("FeatureNotYetSupported")); ?>
+</td><td class="valeur"><input id="list" type="checkbox" name="list" <?php echo ($list?' checked':''); ?>></td></tr>
+<?php } ?>
 </table>
 
 <div align="center"><br><input type="submit" name="button" class="button" value="<?php echo $langs->trans("Save"); ?>"> &nbsp;
diff --git a/htdocs/core/tpl/document_actions_post_headers.tpl.php b/htdocs/core/tpl/document_actions_post_headers.tpl.php
index c7d5dc2c0834a9620467bbf2c43f4c4656f931de..84b869cd8138c389319fd959a723848489d2b7e7 100644
--- a/htdocs/core/tpl/document_actions_post_headers.tpl.php
+++ b/htdocs/core/tpl/document_actions_post_headers.tpl.php
@@ -49,7 +49,7 @@ if (empty($conf->global->MAIN_DISABLE_SUGGEST_REF_AS_PREFIX))
 	//var_dump($modulepart);
 	if (in_array($modulepart,array('facture_fournisseur','commande_fournisseur','facture','commande','propal','askpricesupplier','ficheinter','contract','project','project_task','expensereport')))
 	{
-		$savingdocmask=$object->ref.'___file__';
+		$savingdocmask=$object->ref.'-__file__';
 	}
 	/*if (in_array($modulepart,array('member')))
 	{
diff --git a/htdocs/core/tpl/document_actions_pre_headers.tpl.php b/htdocs/core/tpl/document_actions_pre_headers.tpl.php
index 36b6ce75fe1ac4d5aea8d2ae2428d343d2371ef6..40bd0a5368e86a1aada3d2eaf8b9e4908b1891fb 100644
--- a/htdocs/core/tpl/document_actions_pre_headers.tpl.php
+++ b/htdocs/core/tpl/document_actions_pre_headers.tpl.php
@@ -59,11 +59,8 @@ if ($action == 'confirm_deletefile' && $confirm == 'yes')
         if ($urlfile)
         {
             $ret = dol_delete_file($file, 0, 0, 0, $object);
-            if ($ret) {
-                setEventMessage($langs->trans("FileWasRemoved", $urlfile));
-            } else {
-                setEventMessage($langs->trans("ErrorFailToDeleteFile", $urlfile), 'errors');
-            }
+            if ($ret) setEventMessage($langs->trans("FileWasRemoved", $urlfile));
+            else setEventMessage($langs->trans("ErrorFailToDeleteFile", $urlfile), 'errors');
         }
         elseif ($linkid)
         {
diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php
index 9c6cfd2e1bea015808b072649ace0f61371a852f..db55be8754c536d6429f7f6e557add5bc82f1a74 100644
--- a/htdocs/core/tpl/objectline_create.tpl.php
+++ b/htdocs/core/tpl/objectline_create.tpl.php
@@ -215,7 +215,7 @@ else {
 	<?php } ?>
 
 	<td class="nobottom" align="right"><?php
-	if ($seller->tva_assuj == "0") echo '<input type="hidden" name="tva_tx" id="tva_tx" value="0">0';
+	if ($seller->tva_assuj == "0") echo '<input type="hidden" name="tva_tx" id="tva_tx" value="0">'.vatrate(0, true);
 	else echo $form->load_tva('tva_tx', (isset($_POST["tva_tx"])?$_POST["tva_tx"]:-1), $seller, $buyer);
 	?>
 	</td>
diff --git a/htdocs/core/tpl/objectline_edit.tpl.php b/htdocs/core/tpl/objectline_edit.tpl.php
index d64ef7a2b3e2c2e74f838d7e929352b783100a08..51ded55f1c778286d9d1ad9953d94cc0afec934c 100644
--- a/htdocs/core/tpl/objectline_edit.tpl.php
+++ b/htdocs/core/tpl/objectline_edit.tpl.php
@@ -292,10 +292,10 @@ if (! empty($conf->margin->enabled))
 		{
 		?>
 			$('#savelinebutton').click(function (e) {
-				return checkEditLine(e, "marginRate");
+				return checkEditLine(e, "np_marginRate");
 			});
 			$("input[name='np_marginRate']:first").blur(function(e) {
-				return checkEditLine(e, "marginRate");
+				return checkEditLine(e, "np_marginRate");
 			});
 		<?php
 		}
@@ -303,10 +303,10 @@ if (! empty($conf->margin->enabled))
 		{
 		?>
 			$('#savelinebutton').click(function (e) {
-				return checkEditLine(e, "markRate");
+				return checkEditLine(e, "np_markRate");
 			});
 			$("input[name='np_markRate']:first").blur(function(e) {
-				return checkEditLine(e, "markRate");
+				return checkEditLine(e, "np_markRate");
 			});
 		<?php
 		}
diff --git a/htdocs/core/tpl/resource_add.tpl.php b/htdocs/core/tpl/resource_add.tpl.php
index f9cd20b5dc3c0af0b973eca8cb74b3fc92623928..d16b8b629f8825878b2335ed1f7a8b70c3eb04d7 100644
--- a/htdocs/core/tpl/resource_add.tpl.php
+++ b/htdocs/core/tpl/resource_add.tpl.php
@@ -1,14 +1,13 @@
 <?php
 
+// BEGIN TPL RESOURCE_ADD.TPL.PHP
 
-//$langs->load($resource_type);
+require_once(DOL_DOCUMENT_ROOT.'/resource/class/html.formresource.class.php');
 
 $form = new Form($db);
-if(!class_exists('FormResource'))
-    require_once(DOL_DOCUMENT_ROOT.'/resource/class/html.formresource.class.php');
 $formresources = new FormResource($db);
 
-$out .= '<div class="tagtable centpercent border allwidth">';
+$out .= '<div class="tagtable centpercent border allwidth nohover">';
 
 $out .= '<form class="tagtr '.($var==true?'pair':'impair').'" action="'.$_SERVER["PHP_SELF"].'" method="POST">';
 $out .= '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
@@ -27,10 +26,8 @@ $out .= '</div>';
 $out .= '<div class="tagtd"><label>'.$langs->trans('Busy').'</label> '.$form->selectyesno('busy',$linked_resource['busy']?1:0,1).'</div>';
 $out .= '<div class="tagtd"><label>'.$langs->trans('Mandatory').'</label> '.$form->selectyesno('mandatory',$linked_resource['mandatory']?1:0,1).'</div>';
 
-$out .= '<div class="tagtd">';
-$out .='<input type="submit" id="add-resource-place" class="button" value="'.$langs->trans("Add").'"';
-$out .=' />';
-$out .='<input type="submit" name="cancel" class="button" value="'.$langs->trans("Cancel").'" />';
+$out .= '<div class="tagtd" align="right">';
+$out .='<input type="submit" id="add-resource-place" class="button" value="'.$langs->trans("Add").'"/>';
 $out .= '</div>';
 
 $out .='</form>';
@@ -40,6 +37,4 @@ $out .= '<br />';
 
 print $out;
 
-
-
 // FIN DU TPL
diff --git a/htdocs/core/tpl/resource_view.tpl.php b/htdocs/core/tpl/resource_view.tpl.php
index 75a6999660335e6af0249932e144afa3b538f36c..3b846e9314c5664d682e69f225fa51bad4a14bd1 100644
--- a/htdocs/core/tpl/resource_view.tpl.php
+++ b/htdocs/core/tpl/resource_view.tpl.php
@@ -6,36 +6,32 @@ $form= new Form($db);
 
 if( (array) $linked_resources && count($linked_resources) > 0)
 {
-	$var=false;
+	$var=true;
 
 	// TODO: DEBUT DU TPL
 	if($mode == 'edit' )
 	{
-
 		print '<div class="tagtable centpercent noborder allwidth">';
 		print '<form class="tagtr liste_titre">';
 		print '<div class="tagtd">'.$langs->trans('Type').'</div>';
 		print '<div class="tagtd">'.$langs->trans('Resource').'</div>';
-		print '<div class="tagtd">'.$langs->trans('Busy').'</div>';
-		print '<div class="tagtd">'.$langs->trans('Mandatory').'</div>';
-		print '<div class="tagtd">'.$langs->trans('Edit').'</div>';
+		print '<div class="tagtd" align="center">'.$langs->trans('Busy').'</div>';
+		print '<div class="tagtd" align="center">'.$langs->trans('Mandatory').'</div>';
+		print '<div class="tagtd"></div>';
 		print '</form>';
 		//print '</div>';
-
 	}
 	else
 	{
-
 		print '<div class="tagtable centpercent noborder allwidth">';
 		print '<form class="tagtr liste_titre">';
 		print '<div class="tagtd">'.$langs->trans('Type').'</div>';
 		print '<div class="tagtd">'.$langs->trans('Resource').'</div>';
-		print '<div class="tagtd">'.$langs->trans('Busy').'</div>';
-		print '<div class="tagtd">'.$langs->trans('Mandatory').'</div>';
-		print '<div class="tagtd">'.$langs->trans('Action').'</div>';
+		print '<div class="tagtd" align="center">'.$langs->trans('Busy').'</div>';
+		print '<div class="tagtd" align="center">'.$langs->trans('Mandatory').'</div>';
+		print '<div class="tagtd"></div>';
 		print '</form>';
 		//print '</div>';
-
 	}
 
 
@@ -55,7 +51,7 @@ if( (array) $linked_resources && count($linked_resources) > 0)
 
 			print '<div class="tagtd">'.$object_resource->type_label.'</div>';
 			print '<div class="tagtd">'.$object_resource->getNomUrl(1).'</div>';
-			print '<div class="tagtd">'.$form->selectyesno('busy',$linked_resource['busy']?1:0,1).'</div>';
+			print '<div class="tagtd" align="center">'.$form->selectyesno('busy',$linked_resource['busy']?1:0,1).'</div>';
 			print '<div class="tagtd">'.$form->selectyesno('mandatory',$linked_resource['mandatory']?1:0,1).'</div>';
 			print '<div class="tagtd"><input type="submit" class="button" value="'.$langs->trans("Update").'"></div>';
 			print '</form>';
@@ -77,20 +73,20 @@ if( (array) $linked_resources && count($linked_resources) > 0)
 			print $object_resource->getNomUrl(1);
 			print '</div class="tagtd">';
 
-			print '<div class="tagtd">';
-			print $linked_resource['busy']?1:0;
+			print '<div class="tagtd" align="center">';
+			print yn($linked_resource['busy']);
 			print '</div>';
 
-			print '<div class="tagtd">';
-			print $linked_resource['mandatory']?1:0;
+			print '<div class="tagtd" align="center">';
+			print yn($linked_resource['mandatory']);
 			print '</div>';
 
-			print '<div class="tagtd">';
+			print '<div class="tagtd" align="right">';
 			print '<a href="'.$_SERVER['PHP_SELF'].'?mode=edit&resource_type='.$linked_resource['resource_type'].'&element='.$element.'&element_id='.$element_id.'&lineid='.$linked_resource['rowid'].'">';
 			print img_edit();
 			print '</a>';
 			print '&nbsp;';
-			print '<a href="'.$_SERVER['PHP_SELF'].'?action=delete_resource&id='.$linked_resource['resource_id'].'&element='.$element.'&element_id='.$element_id.'&lineid='.$linked_resource['rowid'].'">';			
+			print '<a href="'.$_SERVER['PHP_SELF'].'?action=delete_resource&id='.$linked_resource['resource_id'].'&element='.$element.'&element_id='.$element_id.'&lineid='.$linked_resource['rowid'].'">';
 			print img_delete();
 			print '</a>';
 			print '</div>';
diff --git a/htdocs/core/triggers/dolibarrtriggers.class.php b/htdocs/core/triggers/dolibarrtriggers.class.php
index 0682bb76a713abb09c58e7931708f003fcf68f28..d4cffc24a0164c7addeac1289d389f85c3ca4b19 100644
--- a/htdocs/core/triggers/dolibarrtriggers.class.php
+++ b/htdocs/core/triggers/dolibarrtriggers.class.php
@@ -61,6 +61,7 @@ abstract class DolibarrTriggers
 	 * Error reported by the trigger
 	 * @var string
 	 * @deprecated Use $this->errors
+	 * @see errors
 	 */
 	public $error = '';
 
@@ -145,4 +146,4 @@ abstract class DolibarrTriggers
 	 */
 	abstract function runTrigger($action, $object, User $user, Translate $langs, Conf $conf);
 
-}
\ No newline at end of file
+}
diff --git a/htdocs/cron/card.php b/htdocs/cron/card.php
index 8d87380b12ced3fd3c1d350de0a360c95b37ebc7..500506b532edb540b517d7408dd1890399b601fd 100644
--- a/htdocs/cron/card.php
+++ b/htdocs/cron/card.php
@@ -1,7 +1,7 @@
 <?php
 /* Copyright (C) 2012      Nicolas Villa aka Boyquotes http://informetic.fr
  * Copyright (C) 2013      Florian Henry <florian.henry@open-concpt.pro>
- * Copyright (C) 2013      Laurent Destailleur <eldy@users.sourceforge.net>
+ * Copyright (C) 2013-2015 Laurent Destailleur <eldy@users.sourceforge.net>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -227,7 +227,6 @@ llxHeader('',$langs->trans("CronAdd"));
 if ($action=='edit' || empty($action) || $action=='delete' || $action=='execute')
 {
 	$head=cron_prepare_head($object);
-	print dol_get_fiche_head($head, 'card', $langs->trans("CronTask"), 0, 'cron');
 }
 elseif ($action=='create')
 {
@@ -292,6 +291,8 @@ if (($action=="create") || ($action=="edit"))
 		print '<input type="hidden" name="action" value="add">'."\n";
 	}
 
+	dol_fiche_head('');
+
 	print '<table class="border" width="100%">';
 
 	print '<tr><td width="30%">';
@@ -474,7 +475,9 @@ if (($action=="create") || ($action=="edit"))
 
 	print '</table>';
 
-	print '<div align="center"><br>';
+	dol_fiche_end();
+
+	print '<div align="center">';
 	print '<input type="submit" name="save" class="button" value="'.$langs->trans("Save").'">';
 	print '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
 	print '<input type="submit" name="cancel" class="button" value="'.$langs->trans("Cancel").'">';
@@ -482,12 +485,15 @@ if (($action=="create") || ($action=="edit"))
 
 	print "</form>\n";
 
-}else {
-
+}
+else
+{
 	/*
-	 * view Template
+	 * view card
 	 */
 
+	dol_fiche_head($head, 'card', $langs->trans("CronTask"), 0, 'cron');
+
 	// box add_jobs_box
 	print '<table class="border" width="100%">';
 
@@ -572,6 +578,17 @@ if (($action=="create") || ($action=="edit"))
 	print "</td></tr>";
 
 	print '<tr><td>';
+	print $langs->trans('Active')."</td><td>";
+	print yn($object->status);
+	print "</td></tr>";
+
+	print '</table>';
+
+	print '<br>';
+
+	print '<table class="border" width="100%">';
+
+	print '<tr><td width="30%">';
 	print $langs->trans('CronDtLastLaunch')."</td><td>";
 	if(!empty($object->datelastrun)) {print dol_print_date($object->datelastrun,'dayhourtext');} else {print $langs->trans('CronNone');}
 	print "</td></tr>";
@@ -598,7 +615,6 @@ if (($action=="create") || ($action=="edit"))
 
 	print '</table>';
 
-
 	dol_fiche_end();
 
 
@@ -633,7 +649,9 @@ if (($action=="create") || ($action=="edit"))
 	else {
 		print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?action=execute&id='.$object->id.'">'.$langs->trans("CronExecute").'</a>';
 	}
-	print '<br><br></div>';
+	print '</div>';
+
+	print '<br>';
 }
 
 
diff --git a/htdocs/cron/info.php b/htdocs/cron/info.php
index ceec1d34adbc00667570a3c31d59a5d941016ba9..1e13bd725b3adc5011b1215dfc25cd873b0a0122 100644
--- a/htdocs/cron/info.php
+++ b/htdocs/cron/info.php
@@ -26,6 +26,8 @@ require_once DOL_DOCUMENT_ROOT."/cron/class/cronjob.class.php";
 require_once DOL_DOCUMENT_ROOT.'/core/lib/cron.lib.php';
 require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
 
+$langs->load("admin");
+$langs->load("cron");
 
 // Security check
 if (!$user->rights->cron->read) accessforbidden();
diff --git a/htdocs/cron/list.php b/htdocs/cron/list.php
index 43a4a76e725f6448421dd82a133387ef6874b3a4..15f9234e7b2d66caedc0b88336c5a068655ebecc 100644
--- a/htdocs/cron/list.php
+++ b/htdocs/cron/list.php
@@ -1,7 +1,7 @@
 <?php
 /* Copyright (C) 2012      Nicolas Villa aka Boyquotes http://informetic.fr
  * Copyright (C) 2013      Florian Henry <florian.henry@open-concept.pro>
- * Copyright (C) 2013      Laurent Destailleur <eldy@users.srouceforge.net>
+ * Copyright (C) 2013-2015 Laurent Destailleur <eldy@users.srouceforge.net>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -165,6 +165,7 @@ print '<input type="hidden" name="status" value="'.$status.'" >';
 print '<table width="100%" class="noborder">';
 print '<tr class="liste_titre">';
 $arg_url='&page='.$page.'&status='.$status.'&search_label='.$search_label;
+print_liste_field_titre($langs->trans("ID"),$_SERVER["PHP_SELF"],"t.rowid","",$arg_url,'',$sortfield,$sortorder);
 print_liste_field_titre($langs->trans("CronLabel"),$_SERVER["PHP_SELF"],"t.label","",$arg_url,'',$sortfield,$sortorder);
 print_liste_field_titre($langs->trans("CronTask"),'','',"",$arg_url,'',$sortfield,$sortorder);
 print_liste_field_titre($langs->trans("CronDtStart"),$_SERVER["PHP_SELF"],"t.datestart","",$arg_url,'',$sortfield,$sortorder);
@@ -176,11 +177,11 @@ print_liste_field_titre($langs->trans("CronNbRun"),$_SERVER["PHP_SELF"],"t.nbrun
 print_liste_field_titre($langs->trans("CronLastResult"),$_SERVER["PHP_SELF"],"t.lastresult","",$arg_url,'',$sortfield,$sortorder);
 print_liste_field_titre($langs->trans("CronLastOutput"),$_SERVER["PHP_SELF"],"t.lastoutput","",$arg_url,'',$sortfield,$sortorder);
 print_liste_field_titre($langs->trans("Enabled"),$_SERVER["PHP_SELF"],"t.status","",$arg_url,'align="center"',$sortfield,$sortorder);
-print '<td></td>';
+print_liste_field_titre('');
 print '</tr>';
 
 print '<tr class="liste_titre">';
-
+print '<td>&nbsp;</td>';
 print '<td class="liste_titre">';
 print '<input type="text" class="flat" name="search_label" value="'.$search_label.'" size="10">';
 print '</td>';
@@ -201,7 +202,6 @@ print '<input class="liste_titre" type="image" src="'.img_picto($langs->trans("S
 print '&nbsp; ';
 print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">';
 print '</td>';
-
 print '</tr>';
 
 
@@ -218,16 +218,26 @@ if (count($object->lines) > 0)
 		print '<tr class="'.$style.'">';
 
 		print '<td>';
-		if(!empty($line->label)) {
+		print '<a href="'.DOL_URL_ROOT.'/cron/card.php?id='.$line->id.'">';
+		print img_picto('', 'object_cron').' ';
+		print $line->id;
+		print '</a>';
+		print '</td>';
+
+		print '<td>';
+		if (! empty($line->label))
+		{
 			print '<a href="'.DOL_URL_ROOT.'/cron/card.php?id='.$line->id.'">'.$line->label.'</a>';
 		}
-		else {
+		else
+		{
 			print $langs->trans('CronNone');
 		}
 		print '</td>';
 
 		print '<td>';
-		if ($line->jobtype=='method') {
+		if ($line->jobtype=='method')
+		{
 			print $langs->trans('CronModule').':'.$line->module_name.'<BR>';
 			print $langs->trans('CronClass').':'. $line->classesname.'<BR>';
 			print $langs->trans('CronObject').':'. $line->objectname.'<BR>';
@@ -279,20 +289,23 @@ if (count($object->lines) > 0)
 		if(!empty($line->lastoutput)) {print dol_trunc(nl2br($line->lastoutput),100);} else {print $langs->trans('CronNone');}
 		print '</td>';
 
+		// Status
 		print '<td align="center">';
 		print yn($line->status);
 		print '</td>';
 
 		print '<td align="right">';
-		if ($user->rights->cron->delete) {
-			print "<a href=\"".$_SERVER["PHP_SELF"]."?id=".$line->id."&status=".$status."&action=delete\" title=\"".$langs->trans('CronDelete')."\">".img_delete()."</a> &nbsp;";
+		if ($user->rights->cron->delete)
+		{
+			print "<a href=\"".$_SERVER["PHP_SELF"]."?id=".$line->id."&status=".$status."&action=delete\" title=\"".dol_escape_htmltag($langs->trans('CronDelete'))."\">".img_picto($langs->trans('CronDelete'),'delete')."</a> &nbsp;";
 		} else {
-			print "<a href=\"#\" title=\"".$langs->trans('NotEnoughPermissions')."\">".img_delete()."</a> &nbsp; ";
+			print "<a href=\"#\" title=\"".dol_escape_htmltag($langs->trans('NotEnoughPermissions'))."\">".img_picto($langs->trans('NotEnoughPermissions'), 'delete')."</a> &nbsp; ";
 		}
-		if ($user->rights->cron->execute) {
-			print "<a href=\"".$_SERVER["PHP_SELF"]."?id=".$line->id."&status=".$status."&action=execute\" title=\"".$langs->trans('CronExecute')."\">".img_picto('',"play")."</a>";
+		if ($user->rights->cron->execute)
+		{
+			print "<a href=\"".$_SERVER["PHP_SELF"]."?id=".$line->id."&status=".$status."&action=execute\" title=\"".dol_escape_htmltag($langs->trans('CronExecute'))."\">".img_picto($langs->trans('CronExecute'),"play")."</a>";
 		} else {
-			print "<a href=\"#\" title=\"".$langs->trans('NotEnoughPermissions')."\">".img_picto('',"execute")."</a>";
+			print "<a href=\"#\" title=\"".dol_escape_htmltag($langs->trans('NotEnoughPermissions'))."\">".img_picto($langs->trans('NotEnoughPermissions'),"execute")."</a>";
 		}
 		print '</td>';
 
@@ -301,7 +314,7 @@ if (count($object->lines) > 0)
 }
 else
 {
-	print '<tr><td colspan="8">'.$langs->trans('CronNoJobs').'</td></tr>';
+	print '<tr><td colspan="9">'.$langs->trans('CronNoJobs').'</td></tr>';
 }
 
 print '</table>';
diff --git a/htdocs/don/admin/donation.php b/htdocs/don/admin/donation.php
index 3327026f028cff27be5604f19ae9b1d47b975542..0815deaf085514105946448ba5f50f2a81f8fba3 100644
--- a/htdocs/don/admin/donation.php
+++ b/htdocs/don/admin/donation.php
@@ -386,7 +386,7 @@ if (is_resource($handle))
                     {
                         print '&nbsp;';
                         print '</td><td align="center">';
-                        print '<a href="dons.php?action=setdoc&value='.$name.'&amp;scandir='.$module->scandir.'&amp;label='.urlencode($module->name).'">'.img_picto($langs->trans("Enabled"),'switch_on').'</a>';
+                        print '<a href="'.$_SERVER["PHP_SELF"].'?action=setdoc&value='.$name.'&amp;scandir='.$module->scandir.'&amp;label='.urlencode($module->name).'">'.img_picto($langs->trans("Enabled"),'switch_on').'</a>';
                     }
                     print '</td>';
                 }
diff --git a/htdocs/don/card.php b/htdocs/don/card.php
index a1e1b50f89dda96b363ea952765cc9035fbe1337..75e30da80a3ca8b94768a581f43024dc8c4279ab 100644
--- a/htdocs/don/card.php
+++ b/htdocs/don/card.php
@@ -388,16 +388,18 @@ if (! empty($id) && $action == 'edit')
 
 	$hselected='card';
 	$head = donation_prepare_head($object);
-	dol_fiche_head($head, $hselected, $langs->trans("Donation"), 0, 'generic');
 
 	print '<form name="update" action="' . $_SERVER["PHP_SELF"] . '" method="POST">';
 	print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
-	print '<table class="border" width="100%">';
-
 	print '<input type="hidden" name="action" value="update">';
 	print '<input type="hidden" name="rowid" value="'.$object->id.'">';
 	print '<input type="hidden" name="amount" value="'.$object->amount.'">';
 
+
+	dol_fiche_head($head, $hselected, $langs->trans("Donation"), 0, 'generic');
+
+	print '<table class="border" width="100%">';
+
 	// Ref
 	print "<tr>".'<td>'.$langs->trans("Ref").'</td><td colspan="2">';
 	print $object->getNomUrl();
@@ -468,7 +470,7 @@ if (! empty($id) && $action == 'edit')
 
         $langs->load('projects');
         print '<tr><td>'.$langs->trans('Project').'</td><td>';
-		$formproject->select_projects(-1, $object->fk_projet,'fk_projet', 0, 1, 0, 1);
+		$formproject->select_projects(-1, $object->fk_projet,'fk_projet', 0, 0, 1, 1);
         print '</td></tr>';
     }
 
@@ -482,11 +484,11 @@ if (! empty($id) && $action == 'edit')
 
 	print "</table>\n";
 
-	print '<br><div class="center"><input type="submit" class="button" name="save" value="'.$langs->trans("Save").'"> &nbsp; &nbsp; <input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'"></div>';
+	dol_fiche_end();
 
-	print "</form>\n";
+	print '<div class="center"><input type="submit" class="button" name="save" value="'.$langs->trans("Save").'"> &nbsp; &nbsp; <input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'"></div>';
 
-	print "</div>\n";
+	print "</form>\n";
 }
 
 
@@ -655,7 +657,10 @@ if (! empty($id) && $action != 'edit')
     {
         print '<tr>';
 		print '<td>'.$langs->trans("Project").'</td>';
-		print '<td>'.$object->projet.'</td>';
+		print '<td>';
+		$object->fetch_projet();
+		print $object->project->getNomUrl(4);
+		print '</td>';
 		print '</tr>';
     }
 
@@ -713,7 +718,14 @@ if (! empty($id) && $action != 'edit')
 	// Delete
 	if ($user->rights->don->supprimer)
 	{
-		print '<div class="inline-block divButAction"><a class="butActionDelete" href="' . $_SERVER["PHP_SELF"] . '?rowid='.$object->id.'&action=delete">'.$langs->trans("Delete")."</a></div>";
+		if ($don->statut == -1 || $don->statut == 0)
+		{
+			print '<div class="inline-block divButAction"><a class="butActionDelete" href="card.php?rowid='.$don->id.'&action=delete">'.$langs->trans("Delete")."</a></div>";
+		}
+		else
+		{
+			print '<div class="inline-block divButAction"><a class="butActionDelete butActionRefused" href="#">'.$langs->trans("Delete")."</a></div>";
+		}
 	}
 	else
 	{
diff --git a/htdocs/don/class/don.class.php b/htdocs/don/class/don.class.php
index e3910b6fe5187c92ca45ba5240fd9aa9641feaa7..fa7bc6dffd8e9dbdaac225df072cbad218b4ea5e 100644
--- a/htdocs/don/class/don.class.php
+++ b/htdocs/don/class/don.class.php
@@ -63,6 +63,11 @@ class Don extends CommonObject
 	var $modelpdf;
     var $projet;
 
+	/**
+	 * @deprecated
+	 * @see note_private, note_public
+	 */
+	var $commentaire;
 
     /**
      *  Constructor
@@ -522,27 +527,28 @@ class Don extends CommonObject
      */
     function delete($user, $notrigger=0)
     {
-		global $conf, $langs;
+		global $user, $conf, $langs;
 		require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php';
 
 		$error = 0;
 
 		$this->db->begin();
 
-        // Delete donation
-        if (! $error)
+   		if (! $error)
         {
-	        $sql = "DELETE FROM " . MAIN_DB_PREFIX . "don";
-	        $sql.= " WHERE rowid=" . $this->id;
+            if (!$notrigger)
+            {
+                // Call trigger
+                $result=$this->call_trigger('DON_DELETE',$user);
 
-	        $resql = $this->db->query($sql);
-	        if (!$resql)
-	        {
-	        	$this->errors[] = $this->db->lasterror();
-	        	$error++;
-	        }
+                if ($result < 0) {
+                    $error++;
+                }
+                // End call triggers
+            }
         }
 
+        // Delete donation
         if (! $error)
         {
 	        $sql = "DELETE FROM " . MAIN_DB_PREFIX . "don_extrafields";
@@ -558,16 +564,15 @@ class Don extends CommonObject
 
 		if (! $error)
         {
-            if (!$notrigger)
-            {
-                // Call trigger
-                $result=$this->call_trigger('DON_DELETE',$user);
+	        $sql = "DELETE FROM " . MAIN_DB_PREFIX . "don";
+	        $sql.= " WHERE rowid=" . $this->id;
 
-                if ($result < 0) {
-                    $error++;
-                }
-                // End call triggers
-            }
+	        $resql = $this->db->query($sql);
+	        if (!$resql)
+	        {
+	        	$this->errors[] = $this->db->lasterror();
+	        	$error++;
+	        }
         }
 
     	if (! $error)
@@ -577,7 +582,7 @@ class Don extends CommonObject
         }
         else
        {
-        	foreach ( $this->errors as $errmsg )
+        	foreach($this->errors as $errmsg)
         	{
 				dol_syslog(get_class($this) . "::delete " . $errmsg, LOG_ERR);
 				$this->error .= ($this->error ? ', ' . $errmsg : $errmsg);
diff --git a/htdocs/don/class/paymentdonation.class.php b/htdocs/don/class/paymentdonation.class.php
index a6c56f9f2354bc6db1d9eff215fcd99e1a93a788..2d75cd392fc0dbe68fd2bfba823b7d1f99fb28b8 100644
--- a/htdocs/don/class/paymentdonation.class.php
+++ b/htdocs/don/class/paymentdonation.class.php
@@ -49,6 +49,12 @@ class PaymentDonation extends CommonObject
 	var $fk_user_creat;
 	var $fk_user_modif;
 
+	/**
+	 * @deprecated
+	 * @see amount, amounts
+	 */
+	var $total;
+
 	/**
 	 *	Constructor
 	 *
@@ -590,4 +596,4 @@ class PaymentDonation extends CommonObject
 
 		return $result;
 	}
-}
\ No newline at end of file
+}
diff --git a/htdocs/don/document.php b/htdocs/don/document.php
new file mode 100644
index 0000000000000000000000000000000000000000..3bc60e25176e5b29f9480fbc17121e5826d10afa
--- /dev/null
+++ b/htdocs/don/document.php
@@ -0,0 +1,136 @@
+<?php
+/* Copyright (C) 2003-2007 Rodolphe Quiedeville  <rodolphe@quiedeville.org>
+ * Copyright (C) 2004-2015 Laurent Destailleur   <eldy@users.sourceforge.net>
+ * Copyright (C) 2005      Marc Barilley / Ocebo <marc@ocebo.com>
+ * Copyright (C) 2005-2009 Regis Houssin         <regis.houssin@capnetworks.com>
+ * Copyright (C) 2005      Simon TOSSER          <simon@kornog-computing.com>
+ * Copyright (C) 2011-2012 Juanjo Menent         <jmenent@2byte.es>
+ * Copyright (C) 2013      Cédric Salvador       <csalvador@gpcsolutions.fr>
+ * Copyright (C) 2015      Alexandre Spangaro    <alexandre.spangaro@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * or see http://www.gnu.org/
+ */
+
+/**
+ *       \file       htdocs/don/document.php
+ *       \ingroup    donation
+ *       \brief      Page of linked files onto donation
+ */
+
+require '../main.inc.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/donation.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php';
+
+$langs->load("other");
+$langs->load("donations");
+$langs->load("companies");
+
+$id = GETPOST('id','int');
+$ref = GETPOST('ref', 'alpha');
+$action = GETPOST('action','alpha');
+$confirm = GETPOST('confirm','alpha');
+
+// Security check
+if ($user->societe_id) $socid=$user->societe_id;
+$result = restrictedArea($user, 'don', $id, '');
+
+
+// Get parameters
+$sortfield = GETPOST('sortfield','alpha');
+$sortorder = GETPOST('sortorder','alpha');
+$page = GETPOST('page','int');
+if ($page == -1) { $page = 0; }
+$offset = $conf->liste_limit * $page;
+$pageprev = $page - 1;
+$pagenext = $page + 1;
+if (! $sortorder) $sortorder="ASC";
+if (! $sortfield) $sortfield="name";
+
+
+$object = new Don($db);
+$object->fetch($id, $ref);
+
+$upload_dir = $conf->don->dir_output . '/' . get_exdir($filename,2,0,1,$object,'donation'). '/'. dol_sanitizeFileName($object->ref);
+$modulepart='don';
+
+
+/*
+ * Actions
+ */
+
+include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_pre_headers.tpl.php';
+
+
+/*
+ * View
+ */
+
+$form = new Form($db);
+
+llxHeader("","",$langs->trans("Donations"));
+
+
+if ($object->id)
+{
+	$object->fetch_thirdparty();
+
+	$head=donation_prepare_head($object);
+
+	dol_fiche_head($head, 'documents',  $langs->trans("Donation"), 0, 'generic');
+
+
+	// Construit liste des fichiers
+	$filearray=dol_dir_list($upload_dir,"files",0,'','(\.meta|_preview\.png)$',$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1);
+	$totalsize=0;
+	foreach($filearray as $key => $file)
+	{
+		$totalsize+=$file['size'];
+	}
+
+
+    print '<table class="border" width="100%">';
+
+    $linkback = '<a href="'.DOL_URL_ROOT.'/don/index.php'.(! empty($socid)?'?socid='.$socid:'').'">'.$langs->trans("BackToList").'</a>';
+
+	// Ref
+	print '<tr><td width="30%">'.$langs->trans("Ref").'</td><td>';
+	print $form->showrefnav($object, 'id', $linkback, 1, 'rowid', 'ref', '');
+	print '</td></tr>';
+
+	// Societe
+	//print "<tr><td>".$langs->trans("Company")."</td><td>".$object->client->getNomUrl(1)."</td></tr>";
+
+    print '<tr><td>'.$langs->trans("NbOfAttachedFiles").'</td><td colspan="3">'.count($filearray).'</td></tr>';
+    print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td colspan="3">'.$totalsize.' '.$langs->trans("bytes").'</td></tr>';
+    print '</table>';
+
+    print '</div>';
+
+    $modulepart = 'don';
+    $permission = $user->rights->don->lire;
+    $param = '&id=' . $object->id;
+    include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_post_headers.tpl.php';
+
+}
+else
+{
+	print $langs->trans("ErrorUnknown");
+}
+
+llxFooter();
+
+$db->close();
diff --git a/htdocs/don/info.php b/htdocs/don/info.php
index 04cbae7a5877869e1767f0695811b9114b1a1b7d..ff41b1947df5c1041cda26757162f469a739d7e1 100644
--- a/htdocs/don/info.php
+++ b/htdocs/don/info.php
@@ -48,7 +48,7 @@ if ($id)
 	
 	$head = donation_prepare_head($object);
 	
-	dol_fiche_head($head, 'info', $langs->trans("Donation"), 0, 'bill');
+	dol_fiche_head($head, 'info', $langs->trans("Donation"), 0, 'generic');
 
     print '<table width="100%"><tr><td>';
     dol_print_object_info($object);
diff --git a/htdocs/don/payment/payment.php b/htdocs/don/payment/payment.php
index 52cf8f38a12a6ab48fef569339e0b910e04c6686..a31b7a71068319c70c3fa7411934b7b2a6d7935b 100644
--- a/htdocs/don/payment/payment.php
+++ b/htdocs/don/payment/payment.php
@@ -163,7 +163,6 @@ if (GETPOST("action") == 'create')
 	$total = $don->amount;
 
 	print_fiche_titre($langs->trans("DoPayment"));
-	print "<br>\n";
 
 	if ($mesg)
 	{
@@ -175,6 +174,8 @@ if (GETPOST("action") == 'create')
 	print '<input type="hidden" name="rowid" value="'.$chid.'">';
 	print '<input type="hidden" name="chid" value="'.$chid.'">';
 	print '<input type="hidden" name="action" value="add_payment">';
+	
+    dol_fiche_head();
 
 	print '<table cellspacing="0" class="border" width="100%" cellpadding="2">';
 
@@ -232,7 +233,7 @@ if (GETPOST("action") == 'create')
 
 	print '</table>';
 
-	print '<br>';
+    dol_fiche_end();
 
 	/*
  	 * Autres charges impayees
diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php
index 2475f420dd005571ebcf6b9ba6d58e6f4a90dc27..47878c7e75f315e6125476ef9ae917c2cb8f2e9f 100644
--- a/htdocs/expedition/card.php
+++ b/htdocs/expedition/card.php
@@ -1502,12 +1502,12 @@ else if ($id || $ref)
 
 		$somethingshown=$formfile->show_documents('expedition',$objectref,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,28,0,'','','',$soc->default_lang);
 
-		/*
-		 * Linked object block
-		*/
-		$somethingshown=$object->showLinkedObjectBlock();
+		// Linked object block
+		$somethingshown = $form->showLinkedObjectBlock($object);
 
-		if ($genallowed && ! $somethingshown) $somethingshown=1;
+		// Show links to link elements
+		//$linktoelem = $form->showLinkToObjectBlock($object);
+		//if ($linktoelem) print '<br>'.$linktoelem;
 
 		print '</td><td valign="top" width="50%">';
 
@@ -1530,7 +1530,7 @@ else if ($id || $ref)
 	{
 		$ref = dol_sanitizeFileName($object->ref);
 		include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
-		$fileparams = dol_most_recent_file($conf->expedition->dir_output . '/sending/' . $ref, preg_quote($ref,'/'));
+		$fileparams = dol_most_recent_file($conf->expedition->dir_output . '/sending/' . $ref, preg_quote($ref, '/').'[^\-]+');
 		$file=$fileparams['fullname'];
 
 		// Define output language
@@ -1557,7 +1557,7 @@ else if ($id || $ref)
 				dol_print_error($db,$result);
 				exit;
 			}
-			$fileparams = dol_most_recent_file($conf->expedition->dir_output . '/sending/' . $ref, preg_quote($ref,'/'));
+			$fileparams = dol_most_recent_file($conf->expedition->dir_output . '/sending/' . $ref, preg_quote($ref, '/').'[^\-]+');
 			$file=$fileparams['fullname'];
 		}
 
diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php
index e0b5b791adacf19a2da43ad4323d8837576cb3b5..28d61ca45f7820d1d7250f584cdf81e304e26ce4 100644
--- a/htdocs/expedition/class/expedition.class.php
+++ b/htdocs/expedition/class/expedition.class.php
@@ -77,7 +77,21 @@ class Expedition extends CommonObject
 	var $trueSize;
 
 	var $date_delivery;		// Date delivery planed
-	var $date_expedition;	// Date delivery real
+	/**
+	 * @deprecated
+	 * @see date_shipping
+	 */
+	var $date;
+	/**
+	 * @deprecated
+	 * @see date_shipping
+	 */
+	var $date_expedition;
+	/**
+	 * Effective delivery date
+	 * @var int
+	 */
+	public $date_shipping;
 	var $date_creation;
 	var $date_valid;
 
@@ -459,8 +473,8 @@ class Expedition extends CommonObject
 				$this->statut               = $obj->fk_statut;
 				$this->user_author_id       = $obj->fk_user_author;
 				$this->date_creation        = $this->db->jdate($obj->date_creation);
-				$this->date                 = $this->db->jdate($obj->date_expedition);	// TODO obsolete
-				$this->date_expedition      = $this->db->jdate($obj->date_expedition);	// TODO obsolete
+				$this->date                 = $this->db->jdate($obj->date_expedition);	// TODO deprecated
+				$this->date_expedition      = $this->db->jdate($obj->date_expedition);	// TODO deprecated
 				$this->date_shipping        = $this->db->jdate($obj->date_expedition);	// Date real
 				$this->date_delivery        = $this->db->jdate($obj->date_delivery);	// Date planed
 				$this->fk_delivery_address  = $obj->fk_address;
@@ -783,10 +797,11 @@ class Expedition extends CommonObject
 
 		$orderline = new OrderLine($this->db);
 		$orderline->fetch($id);
-		$fk_product = $orderline->fk_product;
 
-		if (! empty($orderline->fk_product))
+		if (! empty($conf->stock->enabled) && ! empty($orderline->fk_product))
 		{
+			$fk_product = $orderline->fk_product;
+
 			if (! ($entrepot_id > 0) && empty($conf->global->STOCK_WAREHOUSE_NOT_REQUIRED_FOR_SHIPMENTS))
 			{
 				$this->error=$langs->trans("ErrorWarehouseRequiredIntoShipmentLine");
@@ -1708,9 +1723,10 @@ class ExpeditionLigne
 
 	// From llx_commandedet or llx_propaldet
 	var $qty_asked;
-	var $libelle;       // Label produit
-	var $product_desc;  // Description produit
-	var $ref;
+	public $product_ref;
+	public $product_label;
+	public $product_desc;
+
 
 	// Invoicing
 	var $remise_percent;
@@ -1720,6 +1736,24 @@ class ExpeditionLigne
 	var $total_localtax1;   // Total Local tax 1
 	var $total_localtax2;   // Total Local tax 2
 
+	public $fk_origin_line;
+
+	// Deprecated
+	/**
+	 * @deprecated
+	 * @see fk_origin_line
+	 */
+	var $origin_line_id;
+	/**
+	 * @deprecated
+	 * @see product_ref
+	 */
+	var $ref;
+	/**
+	 * @deprecated
+	 * @see product_label
+	 */
+	var $libelle;
 
     /**
      *	Constructor
diff --git a/htdocs/expedition/tpl/linkedobjectblock.tpl.php b/htdocs/expedition/tpl/linkedobjectblock.tpl.php
index 9c6d2c7679a3fa0278648d4c682d38b86a176992..abca7594962b065bbff59f93659f9e63cd511801 100644
--- a/htdocs/expedition/tpl/linkedobjectblock.tpl.php
+++ b/htdocs/expedition/tpl/linkedobjectblock.tpl.php
@@ -41,6 +41,7 @@ print_titre($langs->trans('RelatedShippings'));
 	<td align="right"><?php echo $langs->trans("Status"); ?></td>
 </tr>
 <?php
+$total=0;
 $var=true;
 foreach($linkedObjectBlock as $object)
 {
@@ -71,4 +72,4 @@ foreach($linkedObjectBlock as $object)
 </tr>
 </table>
 
-<!-- END PHP TEMPLATE -->
\ No newline at end of file
+<!-- END PHP TEMPLATE -->
diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php
index 2d9bcbceead41d32e99adf19ca5973ccd53662d4..0b688790af763a37826e737f111c791d449aa626 100644
--- a/htdocs/expensereport/card.php
+++ b/htdocs/expensereport/card.php
@@ -46,6 +46,7 @@ $date_start = dol_mktime(0, 0, 0, GETPOST('date_debutmonth'), GETPOST('date_debu
 $date_end = dol_mktime(0, 0, 0, GETPOST('date_finmonth'), GETPOST('date_finday'), GETPOST('date_finyear'));
 $date = dol_mktime(0, 0, 0, GETPOST('datemonth'), GETPOST('dateday'), GETPOST('dateyear'));
 $fk_projet=GETPOST('fk_projet');
+$ref=GETPOST("ref",'alpha');
 
 // If socid provided by ajax company selector
 if (! empty($_REQUEST['socid_id']))
@@ -92,7 +93,7 @@ if ($cancel) $action='';
 if ($action == 'confirm_delete' && GETPOST("confirm") == "yes" && $id > 0 && $user->rights->expensereport->supprimer)
 {
 	$object = new ExpenseReport($db);
-	$result=$object->delete($id);
+	$result=$object->delete($id, $user);
 	if ($result >= 0)
 	{
 		header("Location: index.php");
@@ -214,59 +215,67 @@ if ($action == "confirm_save" && GETPOST("confirm") == "yes" && $id > 0 && $user
 		$expediteur->fetch($object->fk_user_author);
 		$emailFrom = $expediteur->email;
 
-		// SUBJECT
-		$subject = $langs->trans("ExpenseReportWaitingForApproval");
+		if ($emailTo && $emailFrom)
+		{
+			// SUBJECT
+			$subject = $langs->trans("ExpenseReportWaitingForApproval");
 
-		// CONTENT
-		$link = $urlwithroot.'/expensereport/card.php?id='.$object->id;
-		$message = $langs->trans("ExpenseReportWaitingForApprovalMessage", $expediteur->getFullName($langs), get_date_range($object->date_debut,$object->date_fin,'',$langs), $link);
+			// CONTENT
+			$link = $urlwithroot.'/expensereport/card.php?id='.$object->id;
+			$message = $langs->trans("ExpenseReportWaitingForApprovalMessage", $expediteur->getFullName($langs), get_date_range($object->date_debut,$object->date_fin,'',$langs), $link);
 
-		// Rebuild pdf
-		/*
-		$object->setDocModel($user,"");
-		$resultPDF = expensereport_pdf_create($db,$id,'',"",$langs);
+			// Rebuild pdf
+			/*
+			$object->setDocModel($user,"");
+			$resultPDF = expensereport_pdf_create($db,$id,'',"",$langs);
 
-		if($resultPDF):
-		// ATTACHMENT
-		$filename=array(); $filedir=array(); $mimetype=array();
-		array_push($filename,dol_sanitizeFileName($object->ref).".pdf");
-		array_push($filedir,$conf->expensereport->dir_output . "/" . dol_sanitizeFileName($object->ref) . "/" . dol_sanitizeFileName($object->ref).".pdf");
-		array_push($mimetype,"application/pdf");
-		*/
+			if($resultPDF):
+			// ATTACHMENT
+			$filename=array(); $filedir=array(); $mimetype=array();
+			array_push($filename,dol_sanitizeFileName($object->ref).".pdf");
+			array_push($filedir,$conf->expensereport->dir_output . "/" . dol_sanitizeFileName($object->ref) . "/" . dol_sanitizeFileName($object->ref).".pdf");
+			array_push($mimetype,"application/pdf");
+			*/
 
-		// PREPARE SEND
-		$mailfile = new CMailFile($subject,$emailTo,$emailFrom,$message,$filedir,$mimetype,$filename);
+			// PREPARE SEND
+			$mailfile = new CMailFile($subject,$emailTo,$emailFrom,$message,$filedir,$mimetype,$filename);
 
-		if ($mailfile)
-		{
-			// SEND
-			$result=$mailfile->sendfile();
-			if ($result)
-			{
-				$mesg=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($emailFrom,2),$mailfile->getValidAddress($emailTo,2));
-				setEventMessage($mesg);
-				header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id);
-				exit;
-			}
-			else
+			if ($mailfile)
 			{
-				$langs->load("other");
-				if ($mailfile->error)
+				// SEND
+				$result=$mailfile->sendfile();
+				if ($result)
 				{
-					$mesg='';
-					$mesg.=$langs->trans('ErrorFailedToSendMail',$from,$sendto);
-					$mesg.='<br>'.$mailfile->error;
-					setEventMessage($mesg,'errors');
+					$mesg=$langs->trans('MailSuccessfulySent',$mailfile->getValidAddress($emailFrom,2),$mailfile->getValidAddress($emailTo,2));
+					setEventMessage($mesg);
+					header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id);
+					exit;
 				}
 				else
 				{
-					setEventMessage('No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS', 'warnings');
+					$langs->load("other");
+					if ($mailfile->error)
+					{
+						$mesg='';
+						$mesg.=$langs->trans('ErrorFailedToSendMail',$from,$sendto);
+						$mesg.='<br>'.$mailfile->error;
+						setEventMessage($mesg,'errors');
+					}
+					else
+					{
+						setEventMessage('No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS', 'warnings');
+					}
 				}
 			}
+			else
+			{
+				setEventMessages($mailfile->error,$mailfile->errors,'errors');
+				$action='';
+			}
 		}
 		else
 		{
-			setEventMessages($mailfile->error,$mailfile->errors,'errors');
+			setEventMessage($langs->trans("NoEmailSentBadSenderOrRecipientEmail"), 'warnings');
 			$action='';
 		}
 	}
@@ -304,66 +313,73 @@ if ($action == "confirm_save_from_refuse" && GETPOST("confirm") == "yes" && $id
 
 	if ($result > 0)
 	{
-		// Send mail
 		if (! empty($conf->global->DEPLACEMENT_TO_CLEAN))
 		{
+			// Send mail
+
 			// TO
 			$destinataire = new User($db);
 			$destinataire->fetch($object->fk_user_validator);
 			$emailTo = $destinataire->email;
 
-			// FROM
-			$expediteur = new User($db);
-			$expediteur->fetch($object->fk_user_author);
-			$emailFrom = $expediteur->email;
-
-			// SUBJECT
-			$subject = "' ERP - Note de frais à re-approuver";
-
-			// CONTENT
-			$dateRefusEx = explode(" ",$object->date_refuse);
-
-			$message = "Bonjour {$destinataire->firstname},\n\n";
-			$message.= "Le {$dateRefusEx[0]} à {$dateRefusEx[1]} vous avez refusé d'approuver la note de frais \"{$object->ref}\". Vous aviez émis le motif suivant : {$object->detail_refuse}\n\n";
-			$message.= "L'auteur vient de modifier la note de frais, veuillez trouver la nouvelle version en pièce jointe.\n";
-			$message.= "- Déclarant : {$expediteur->firstname} {$expediteur->lastname}\n";
-			$message.= "- Période : du {$object->date_debut} au {$object->date_fin}\n";
-			$message.= "- Lien : {$dolibarr_main_url_root}/expensereport/card.php?id={$object->id}\n\n";
-			$message.= "Bien cordialement,\n' SI";
-
-			// Génération du pdf avant attachement
-			$object->setDocModel($user,"");
-			$resultPDF = expensereport_pdf_create($db,$object,'',"",$langs);
+			if ($emailTo)
+			{
+				// FROM
+				$expediteur = new User($db);
+				$expediteur->fetch($object->fk_user_author);
+				$emailFrom = $expediteur->email;
 
-			if($resultPDF):
-			// ATTACHMENT
-			$filename=array(); $filedir=array(); $mimetype=array();
-			array_push($filename,dol_sanitizeFileName($object->ref).".pdf");
-			array_push($filedir,$conf->expensereport->dir_output . "/" . dol_sanitizeFileName($object->ref) . "/" . dol_sanitizeFileName($object->ref_number).".pdf");
-			array_push($mimetype,"application/pdf");
+				// SUBJECT
+				$subject = "' ERP - Note de frais à re-approuver";
 
-			// PREPARE SEND
-			$mailfile = new CMailFile($subject,$emailTo,$emailFrom,$message,$filedir,$mimetype,$filename);
+				// CONTENT
+				$dateRefusEx = explode(" ",$object->date_refuse);
 
-			if(!$mailfile->error):
+				$message = "Bonjour {$destinataire->firstname},\n\n";
+				$message.= "Le {$dateRefusEx[0]} à {$dateRefusEx[1]} vous avez refusé d'approuver la note de frais \"{$object->ref}\". Vous aviez émis le motif suivant : {$object->detail_refuse}\n\n";
+				$message.= "L'auteur vient de modifier la note de frais, veuillez trouver la nouvelle version en pièce jointe.\n";
+				$message.= "- Déclarant : {$expediteur->firstname} {$expediteur->lastname}\n";
+				$message.= "- Période : du {$object->date_debut} au {$object->date_fin}\n";
+				$message.= "- Lien : {$dolibarr_main_url_root}/expensereport/card.php?id={$object->id}\n\n";
+				$message.= "Bien cordialement,\n' SI";
 
-			// SEND
-			$result=$mailfile->sendfile();
-			if ($result):
-			Header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id);
-			exit;
-			endif;
+				// Génération du pdf avant attachement
+				$object->setDocModel($user,"");
+				$resultPDF = expensereport_pdf_create($db,$object,'',"",$langs);
 
-			else:
+				if($resultPDF)
+				{
+					// ATTACHMENT
+					$filename=array(); $filedir=array(); $mimetype=array();
+					array_push($filename,dol_sanitizeFileName($object->ref).".pdf");
+					array_push($filedir,$conf->expensereport->dir_output . "/" . dol_sanitizeFileName($object->ref) . "/" . dol_sanitizeFileName($object->ref_number).".pdf");
+					array_push($mimetype,"application/pdf");
 
-			$mesg="Impossible d'envoyer l'email.";
+					// PREPARE SEND
+					$mailfile = new CMailFile($subject,$emailTo,$emailFrom,$message,$filedir,$mimetype,$filename);
 
-			endif;
-			// END - Send mail
-			else:
-			dol_print_error($db,$resultPDF);
-			exit;
-			endif;
+					if (! $mailfile->error)
+					{
+						// SEND
+						$result=$mailfile->sendfile();
+						if ($result)
+						{
+							Header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id);
+							exit;
+						}
+						else
+						{
+							$mesg=$mailfile->error;
+						}
+						// END - Send mail
+					}
+					else
+					{
+						dol_print_error($db,$resultPDF);
+						exit;
+					}
+				}
+			}
 		}
 	}
 	else
@@ -1168,10 +1184,10 @@ if ($action == 'create')
 }
 else
 {
-	if($id > 0)
+	if($id > 0 || $ref)
 	{
 		$object = new ExpenseReport($db);
-		$result = $object->fetch($id);
+		$result = $object->fetch($id, $ref);
 
 		if ($result > 0)
 		{
@@ -1218,7 +1234,7 @@ else
 
             	// Ref
             	print '<tr><td width="25%">'.$langs->trans("Ref").'</td><td>';
-            	print $form->showrefnav($object, 'id', $linkback, 1, 'rowid', 'ref', '');
+            	print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref', '');
             	print '</td></tr>';
 
 				print '<tr>';
@@ -1376,7 +1392,7 @@ else
 
             	// Ref
             	print '<tr><td width="25%">'.$langs->trans("Ref").'</td><td>';
-            	print $form->showrefnav($object, 'id', $linkback, 1, 'ref', 'ref', '');
+            	print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref', '');
             	print '</td></tr>';
 
 				print '<tr>';
@@ -1450,6 +1466,7 @@ else
 					print '</tr>';
 				}
 
+				// User to inform
 				if($object->fk_statut<3)	// informed
 				{
 					print '<tr>';
@@ -1460,6 +1477,7 @@ else
 						$userfee=new User($db);
 						$userfee->fetch($object->fk_user_validator);
 						print $userfee->getNomUrl(1);
+						if (empty($userfee->email) || ! isValidEmail($userfee->email)) print img_warning($langs->trans("EmailNotValid"));
 					}
 					print '</td></tr>';
 				}
@@ -1530,7 +1548,7 @@ else
 				$sql.= ' FROM '.MAIN_DB_PREFIX.'expensereport_det as fde';
 				$sql.= ' INNER JOIN '.MAIN_DB_PREFIX.'c_type_fees as ctf ON fde.fk_c_type_fees=ctf.id';
 				$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'projet as pjt ON fde.fk_projet=pjt.rowid';
-				$sql.= ' WHERE fde.fk_expensereport = '.$id;
+				$sql.= ' WHERE fde.fk_expensereport = '.$object->id;
 
 				$resql = $db->query($sql);
 				if ($resql)
@@ -1692,8 +1710,8 @@ else
 						print_fiche_titre($langs->trans("AddLine"),'','');
 
 						print '<form method="post" action="'.$_SERVER['PHP_SELF'].'" name="addline">';
-						print '<input type="hidden" name="id" value="'.$id.'">';
-						print '<input type="hidden" name="fk_expensereport" value="'.$id.'" />';
+						print '<input type="hidden" name="id" value="'.$object->id.'">';
+						print '<input type="hidden" name="fk_expensereport" value="'.$object->id.'" />';
 						print '<input type="hidden" name="action" value="addline" />';
 
 						print '<table class="noborder" width="100%">';
@@ -1789,7 +1807,7 @@ print '<div class="tabsAction">';
 if ($action != 'create' && $action != 'edit')
 {
 	$object = new ExpenseReport($db);
-	$object->fetch($id);
+	$object->fetch($id, $ref);
 
 
 	/* Si l'état est "Brouillon"
@@ -1802,18 +1820,18 @@ if ($action != 'create' && $action != 'edit')
 		if ($object->fk_user_author == $user->id)
 		{
 			// Modify
-			print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit&id='.$id.'">'.$langs->trans('Modify').'</a>';
+			print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit&id='.$object->id.'">'.$langs->trans('Modify').'</a>';
 
 			// Validate
 			if (count($object->lines) > 0 || count($object->lignes) > 0)
 			{
-				print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=save&id='.$id.'">'.$langs->trans('ValidateAndSubmit').'</a>';
+				print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=save&id='.$object->id.'">'.$langs->trans('ValidateAndSubmit').'</a>';
 			}
 
 			if ($user->rights->expensereport->supprimer)
 			{
 				// Delete
-				print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$id.'">'.$langs->trans('Delete').'</a>';
+				print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$object->id.'">'.$langs->trans('Delete').'</a>';
 			}
 		}
 	}
@@ -1828,17 +1846,17 @@ if ($action != 'create' && $action != 'edit')
 		if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid)
 		{
 			// Modify
-			print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit&id='.$id.'">'.$langs->trans('Modify').'</a>';
+			print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit&id='.$object->id.'">'.$langs->trans('Modify').'</a>';
 
 			// Brouillonner (le statut refusée est identique à brouillon)
 			//print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$id.'">'.$langs->trans('BROUILLONNER').'</a>';
 			// Enregistrer depuis le statut "Refusée"
-			print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=save_from_refuse&id='.$id.'">'.$langs->trans('ValidateAndSubmit').'</a>';
+			print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=save_from_refuse&id='.$object->id.'">'.$langs->trans('ValidateAndSubmit').'</a>';
 
 			if ($user->rights->expensereport->supprimer)
 			{
 				// Delete
-				print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$id.'">'.$langs->trans('Delete').'</a>';
+				print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$object->id.'">'.$langs->trans('Delete').'</a>';
 			}
 		}
 	}
@@ -1848,7 +1866,7 @@ if ($action != 'create' && $action != 'edit')
 		if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid)
 		{
 			// Brouillonner
-			print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$id.'">'.$langs->trans('SetToDraft').'</a>';
+			print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$object->id.'">'.$langs->trans('SetToDraft').'</a>';
 		}
 	}
 
@@ -1862,7 +1880,7 @@ if ($action != 'create' && $action != 'edit')
 		if ($object->fk_user_author == $user->id)
 		{
 			// Brouillonner
-			print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$id.'">'.$langs->trans('SetToDraft').'</a>';
+			print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$object->id.'">'.$langs->trans('SetToDraft').'</a>';
 		}
 	}
 
@@ -1871,21 +1889,21 @@ if ($action != 'create' && $action != 'edit')
 		//if($object->fk_user_validator==$user->id)
 		//{
 			// Validate
-			print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=validate&id='.$id.'">'.$langs->trans('Approve').'</a>';
+			print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=validate&id='.$object->id.'">'.$langs->trans('Approve').'</a>';
 			// Deny
-			print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=refuse&id='.$id.'">'.$langs->trans('Deny').'</a>';
+			print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=refuse&id='.$object->id.'">'.$langs->trans('Deny').'</a>';
 		//}
 
 		if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid)
 		{
 			// Cancel
-			print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=cancel&id='.$id.'">'.$langs->trans('Cancel').'</a>';
+			print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=cancel&id='.$object->id.'">'.$langs->trans('Cancel').'</a>';
 		}
 
 		if($user->rights->expensereport->supprimer)
 		{
 			// Delete
-			print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$id.'">'.$langs->trans('Delete').'</a>';
+			print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$object->id.'">'.$langs->trans('Delete').'</a>';
 		}
 	}
 
@@ -1896,18 +1914,18 @@ if ($action != 'create' && $action != 'edit')
 	if ($user->rights->expensereport->to_paid && $object->fk_statut == 5)
 	{
 		// Pay
-		print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=paid&id='.$id.'">'.$langs->trans('TO_PAID').'</a>';
+		print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=paid&id='.$object->id.'">'.$langs->trans('TO_PAID').'</a>';
 
 		// Cancel
 		if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid)
 		{
-			print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=cancel&id='.$id.'">'.$langs->trans('Cancel').'</a>';
+			print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=cancel&id='.$object->id.'">'.$langs->trans('Cancel').'</a>';
 		}
 
 		if($user->rights->expensereport->supprimer)
 		{
 			// Delete
-			print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$id.'">'.$langs->trans('Delete').'</a>';
+			print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$object->id.'">'.$langs->trans('Delete').'</a>';
 		}
 	}
 
@@ -1919,11 +1937,11 @@ if ($action != 'create' && $action != 'edit')
 	if ($user->rights->expensereport->approve && $user->rights->expensereport->to_paid && $object->fk_statut==6)
 	{
 		// Cancel
-		print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=cancel&id='.$id.'">'.$langs->trans('Cancel').'</a>';
+		print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=cancel&id='.$object->id.'">'.$langs->trans('Cancel').'</a>';
 		if($user->rights->expensereport->supprimer)
 		{
 			// Delete
-			print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$id.'">'.$langs->trans('Delete').'</a>';
+			print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$object->id.'">'.$langs->trans('Delete').'</a>';
 		}
 	}
 
@@ -1937,11 +1955,11 @@ if ($action != 'create' && $action != 'edit')
 		if ($user->id == $object->fk_user_author || $user->id == $object->fk_user_valid)
 		{
 			// Brouillonner
-			print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$id.'">'.$langs->trans('ReOpen').'</a>';
+			print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=brouillonner&id='.$object->id.'">'.$langs->trans('ReOpen').'</a>';
 		}
 
 		// Delete
-		print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$id.'">'.$langs->trans('Delete').'</a>';
+		print '<a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?action=delete&id='.$object->id.'">'.$langs->trans('Delete').'</a>';
 
 	}
 }
diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php
index 3a0a15d6d819144ad6e9cd2d92084a7cd74f9fab..98a6aea00e7ebc268e59ecbc8764d73a8cbf9a0f 100644
--- a/htdocs/expensereport/class/expensereport.class.php
+++ b/htdocs/expensereport/class/expensereport.class.php
@@ -109,24 +109,9 @@ class ExpenseReport extends CommonObject
 		$this->total_tva = 0;
 
 		// List of language codes for status
-		$this->statuts[0]='Draft';
-		$this->statuts[2]='Validated';
-		$this->statuts[4]='Canceled';
-		$this->statuts[5]='Approved';
-		$this->statuts[6]='Paid';
-		$this->statuts[99]='Refused';
-		$this->statuts_short[0]='Draft';
-		$this->statuts_short[2]='Validated';
-		$this->statuts_short[4]='Canceled';
-		$this->statuts_short[5]='Approved';
-		$this->statuts_short[6]='Paid';
-		$this->statuts_short[99]='Refused';
-		$this->statuts_logo[0]='statut0';
-		$this->statuts_logo[2]='statut1';
-		$this->statuts_logo[4]='statut5';
-		$this->statuts_logo[5]='statut3';
-		$this->statuts_logo[6]='statut6';
-		$this->statuts_logo[99]='statut8';
+        $this->statuts_short = array(0 => 'Draft', 2 => 'Validated', 4 => 'Canceled', 5 => 'Approved', 6 => 'Paid', 99 => 'Refused');
+        $this->statuts = array(0 => 'Draft', 2 => 'Validated', 4 => 'Canceled', 5 => 'Approved', 6 => 'Paid', 99 => 'Refused');
+        $this->statuts_logo = array(0 => 'statut0', 2 => 'statut1', 4 => 'statut5', 5 => 'statut3', 6 => 'statut6', 99 => 'statut8');
 
 		return 1;
 	}
@@ -363,7 +348,8 @@ class ExpenseReport extends CommonObject
 				$this->code_statut 		= $obj->code_statut;
 				$this->code_paiement 	= $obj->code_paiement;
 
-				$this->lignes = array();
+				$this->lignes = array();	// deprecated
+				$this->lines = array();
 
 				$result=$this->fetch_lines();
 
@@ -787,9 +773,10 @@ class ExpenseReport extends CommonObject
 	 * delete
 	 *
 	 * @param 	int		$rowid		Id to delete (optional)
+	 * @param	User	$fuser		User that delete
 	 * @return	int					<0 if KO, >0 if OK
 	 */
-	function delete($rowid=0)
+	function delete($rowid=0, User $fuser=null)
 	{
 		global $user,$langs,$conf;
 
@@ -825,10 +812,10 @@ class ExpenseReport extends CommonObject
 	/**
 	 * Set to status validate
 	 *
-	 * @param 	User	$user		User
+	 * @param 	User	$fuser		User
 	 * @return	int					<0 if KO, >0 if OK
 	 */
-	function setValidate($user)
+	function setValidate($fuser)
 	{
 		global $conf,$langs;
 
@@ -851,13 +838,13 @@ class ExpenseReport extends CommonObject
 		{
 			$prefix="ER";
 			if (! empty($conf->global->EXPENSE_REPORT_PREFIX)) $prefix=$conf->global->EXPENSE_REPORT_PREFIX;
-			$this->ref = strtoupper($user->login).$expld_car.$prefix.$this->ref.$expld_car.dol_print_date($this->date_debut,'%y%m%d');
+			$this->ref = strtoupper($fuser->login).$expld_car.$prefix.$this->ref.$expld_car.dol_print_date($this->date_debut,'%y%m%d');
 		}
 
 		if ($this->fk_statut != 2)
 		{
 			$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element;
-			$sql.= " SET ref = '".$this->ref."', fk_statut = 2, fk_user_valid = ".$user->id.",";
+			$sql.= " SET ref = '".$this->ref."', fk_statut = 2, fk_user_valid = ".$fuser->id.",";
 			$sql.= " ref_number_int = ".$ref_number_int;
 			$sql.= ' WHERE rowid = '.$this->id;
 
@@ -882,10 +869,10 @@ class ExpenseReport extends CommonObject
 	/**
 	 * set_save_from_refuse
 	 *
-	 * @param 	User	$user		User
+	 * @param 	User	$fuser		User
 	 * @return	int					<0 if KO, >0 if OK
 	 */
-	function set_save_from_refuse($user)
+	function set_save_from_refuse($fuser)
 	{
 		global $conf,$langs;
 
@@ -927,10 +914,10 @@ class ExpenseReport extends CommonObject
 	/**
 	 * Set status to approved
 	 *
-	 * @param 	User	$user		User
+	 * @param 	User	$fuser		User
 	 * @return	int					<0 if KO, >0 if OK
 	 */
-	function setApproved($user)
+	function setApproved($fuser)
 	{
 		$now=dol_now();
 
@@ -939,7 +926,7 @@ class ExpenseReport extends CommonObject
 		if ($this->fk_statut != 5)
 		{
 			$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element;
-			$sql.= " SET ref = '".$this->ref."', fk_statut = 5, fk_user_approve = ".$user->id.",";
+			$sql.= " SET ref = '".$this->ref."', fk_statut = 5, fk_user_approve = ".$fuser->id.",";
 			$sql.= " date_approve='".$this->date_approve."'";
 			$sql.= ' WHERE rowid = '.$this->id;
 			if ($this->db->query($sql))
@@ -961,10 +948,10 @@ class ExpenseReport extends CommonObject
 	/**
 	 * setDeny
 	 *
-	 * @param User		$user		User
+	 * @param User		$fuser		User
 	 * @param Details	$details	Details
 	 */
-	function setDeny($user,$details)
+	function setDeny($fuser,$details)
 	{
 		$now = dol_now();
 
@@ -972,7 +959,7 @@ class ExpenseReport extends CommonObject
 		if ($this->fk_statut != 99)
 		{
 			$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element;
-			$sql.= " SET ref = '".$this->ref."', fk_statut = 99, fk_user_refuse = ".$user->id.",";
+			$sql.= " SET ref = '".$this->ref."', fk_statut = 99, fk_user_refuse = ".$fuser->id.",";
 			$sql.= " date_refuse='".$this->db->idate($now)."',";
 			$sql.= " detail_refuse='".$this->db->escape($details)."'";
 			$sql.= " fk_user_approve=NULL,";
@@ -980,7 +967,7 @@ class ExpenseReport extends CommonObject
 			if ($this->db->query($sql))
 			{
 				$this->fk_statut = 99;
-				$this->fk_user_refuse = $user->id;
+				$this->fk_user_refuse = $fuser->id;
 				$this->detail_refuse = $details;
 				$this->date_refuse = $now;
 				return 1;
@@ -1000,10 +987,10 @@ class ExpenseReport extends CommonObject
 	/**
 	 * setPaid
 	 *
-	 * @param 	User	$user		User
+	 * @param 	User	$fuser		User
 	 * @return	int					<0 if KO, >0 if OK
 	 */
-	function setPaid($user)
+	function setPaid($fuser)
 	{
 		$now= dol_now();
 
@@ -1011,7 +998,7 @@ class ExpenseReport extends CommonObject
 		if ($this->fk_statut != 6)
 		{
 			$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element;
-			$sql.= " SET fk_statut = 6, fk_user_paid = ".$user->id.",";
+			$sql.= " SET fk_statut = 6, fk_user_paid = ".$fuser->id.",";
 			$sql.= " date_paiement='".$this->db->idate($this->date_paiement)."'";
 			$sql.= ' WHERE rowid = '.$this->id;
 
@@ -1035,10 +1022,10 @@ class ExpenseReport extends CommonObject
 	/**
 	 * set_unpaid
 	 *
-	 * @param 	User	$user		User
+	 * @param 	User	$fuser		User
 	 * @return	int					<0 if KO, >0 if OK
 	 */
-	function set_unpaid($user)
+	function set_unpaid($fuser)
 	{
 		if ($this->fk_c_deplacement_statuts != 5)
 		{
@@ -1064,17 +1051,17 @@ class ExpenseReport extends CommonObject
 	/**
 	 * set_cancel
 	 *
-	 * @param 	User	$user		User
+	 * @param 	User	$fuser		User
 	 * @param	string	$detail		Detail
 	 * @return	int					<0 if KO, >0 if OK
 	 */
-	function set_cancel($user,$detail)
+	function set_cancel($fuser,$detail)
 	{
 		$this->date_cancel = $this->db->idate(gmmktime());
 		if ($this->fk_statut != 4)
 		{
 			$sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element;
-			$sql.= " SET fk_statut = 4, fk_user_cancel = ".$user->id;
+			$sql.= " SET fk_statut = 4, fk_user_cancel = ".$fuser->id;
 			$sql.= ", date_cancel='".$this->date_cancel."'";
 			$sql.= " ,detail_cancel='".$this->db->escape($detail)."'";
 			$sql.= ' WHERE rowid = '.$this->id;
@@ -1286,10 +1273,10 @@ class ExpenseReport extends CommonObject
 	 * deleteline
 	 *
 	 * @param 	int		$rowid		Row id
-	 * @param 	User	$user		User
+	 * @param 	User	$fuser		User
 	 * @return 	int					<0 if KO, >0 if OK
 	 */
-	function deleteline($rowid, $user='')
+	function deleteline($rowid, $fuser='')
 	{
 		$this->db->begin();
 
@@ -1314,16 +1301,16 @@ class ExpenseReport extends CommonObject
 	/**
 	 * periode_existe
 	 *
-	 * @param 	User	$user			User
+	 * @param 	User	$fuser			User
 	 * @param 	Date	$date_debut		Start date
 	 * @param 	Date	$date_fin		End date
 	 * @return	int						<0 if KO, >0 if OK
 	 */
-	function periode_existe($user, $date_debut, $date_fin)
+	function periode_existe($fuser, $date_debut, $date_fin)
 	{
 		$sql = "SELECT rowid, date_debut, date_fin";
 		$sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element;
-		$sql.= " WHERE fk_user_author = '{$user->id}'";
+		$sql.= " WHERE fk_user_author = '{$fuser->id}'";
 
 		dol_syslog(get_class($this)."::periode_existe sql=".$sql);
 		$result = $this->db->query($sql);
@@ -1632,12 +1619,12 @@ class ExpenseReportLine
 	/**
 	 * update
 	 *
-	 * @param	User	$user		User
+	 * @param	User	$fuser		User
 	 * @return 	int					<0 if KO, >0 if OK
 	 */
-	function update($user)
+	function update($fuser)
 	{
-		global $user,$langs,$conf;
+		global $fuser,$langs,$conf;
 
 		$error=0;
 
diff --git a/htdocs/expensereport/index.php b/htdocs/expensereport/index.php
index 4af39adb6333d2daed9fbd9cdee71bf1a85cb399..5b157f6df8bd3dc4c2e157ed40a7f26a4d99f170 100644
--- a/htdocs/expensereport/index.php
+++ b/htdocs/expensereport/index.php
@@ -107,7 +107,7 @@ print_fiche_titre($langs->trans("ExpensesArea"));
 print '<div class="fichecenter"><div class="fichethirdleft">';
 
 
-print '<table class="noborder" width="100%">';
+print '<table class="noborder nohover" width="100%">';
 print '<tr class="liste_titre">';
 print '<td colspan="4">'.$langs->trans("Statistics").'</td>';
 print "</tr>\n";
diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php
index 58002c19dbadd4bc9e0a9504ca384f59f21a0028..c0b30b6c87330b6f4ee1131065e7ec2233df2cd4 100644
--- a/htdocs/expensereport/list.php
+++ b/htdocs/expensereport/list.php
@@ -180,6 +180,7 @@ if ($resql)
 
 	print_barre_liste($langs->trans("ListTripsAndExpenses"), $page, $_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$nbtotalofrecords);
 	print '<form action="'.$_SERVER["PHP_SELF"].'" method="POST">'."\n";
+
 	print '<table class="noborder" width="100%">';
 	print "<tr class=\"liste_titre\">";
 	print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"d.rowid","",$param,'',$sortfield,$sortorder);
@@ -190,7 +191,7 @@ if ($resql)
 	print_liste_field_titre($langs->trans("TotalVAT"),$_SERVER["PHP_SELF"],"d.total_tva","",$param,'align="right"',$sortfield,$sortorder);
 	print_liste_field_titre($langs->trans("TotalTTC"),$_SERVER["PHP_SELF"],"d.total_ttc","",$param,'align="right"',$sortfield,$sortorder);
 	print_liste_field_titre($langs->trans("Statut"),$_SERVER["PHP_SELF"],"","",$param,'align="right"',$sortfield,$sortorder);
-	print '<td class="liste_titre">&nbsp;</td>';
+	print_liste_field_titre('');
 	print "</tr>\n";
 
 	// Filters
diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php
index dac78d9ae3bf610bb2ab1f91238c1cba4976c785..523b826ee903d04481843c7e2e0ad095d6504a85 100644
--- a/htdocs/fichinter/card.php
+++ b/htdocs/fichinter/card.php
@@ -5,6 +5,7 @@
  * Copyright (C) 2011-2013  Juanjo Menent			<jmenent@2byte.es>
  * Copyright (C) 2013       Florian Henry           <florian.henry@open-concept.pro>
  * Copyright (C) 2014       Ferran Marcet           <fmarcet@2byte.es>
+ * Copyright (C) 201		Charlie Benke           <charlies@patas-monkey.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -159,7 +160,7 @@ else if ($action == 'confirm_modify' && $confirm == 'yes' && $user->rights->fich
 else if ($action == 'add' && $user->rights->ficheinter->creer)
 {
     $object->socid			= $socid;
-    $object->duree			= GETPOST('duree','int');
+    $object->duration			= GETPOST('duration','int');
     $object->fk_project		= GETPOST('projectid','int');
     $object->fk_contrat		= GETPOST('contratid','int');
     $object->author			= $user->id;
@@ -248,7 +249,14 @@ else if ($action == 'add' && $user->rights->ficheinter->creer)
 									$prod = new Product($db);
 									$prod->id=$lines[$i]->fk_product;
 									$prod->getMultiLangs();
-
+									// We show if duration is present on service (so we get it)
+									$prod->fetch($lines[$i]->fk_product);
+									if ($prod->duration_value && $prod->duration_unit == 'h' && $conf->global->FICHINTER_USE_SERVICE_DURATION)
+									{
+										$durationproduct=$prod->duration_value * 3600 * $lines[$i]->qty;
+									}
+									else
+										$durationproduct=3600;
 									$outputlangs = $langs;
 									$newlang='';
 									if (empty($newlang) && GETPOST('lang_id')) $newlang=GETPOST('lang_id');
@@ -277,11 +285,11 @@ else if ($action == 'add' && $user->rights->ficheinter->creer)
 							$date_intervention=dol_mktime(0,0,0,$timearray['mon'],$timearray['mday'],$timearray['year']);
 							if ($product_type == 1)
 							{ //service
-								$duration = 3600;
+								$duration = $durationproduct;
 							}
 							else
 							{ //product
-							    $duration = 0;
+								$duration = 0;
 							}
 
 							$predef = '';
@@ -1019,7 +1027,7 @@ if ($action == 'create')
 		print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
 
 		dol_fiche_head('');
-		
+
 		print '<table class="border" width="100%">';
 
 		print '<input type="hidden" name="socid" value='.$soc->id.'>';
@@ -1125,7 +1133,7 @@ if ($action == 'create')
 		}
 
 		dol_fiche_end();
-		
+
 		print '<div class="center">';
 		print '<input type="submit" class="button" value="'.$langs->trans("CreateDraftIntervention").'">';
 		print '</div>';
@@ -1135,7 +1143,7 @@ if ($action == 'create')
 	else
 	{
 		dol_fiche_head('');
-		
+
 		print '<form name="fichinter" action="'.$_SERVER['PHP_SELF'].'" method="POST">';
 		print '<table class="border" width="100%">';
 		print '<tr><td class="fieldrequired">'.$langs->trans("ThirdParty").'</td><td>';
@@ -1144,7 +1152,7 @@ if ($action == 'create')
 		print '</table>';
 
 		dol_fiche_end();
-		
+
 		print '<div class="center">';
 		print '<input type="hidden" name="action" value="create">';
 		print '<input type="submit" class="button" value="'.$langs->trans("CreateDraftIntervention").'">';
@@ -1248,7 +1256,7 @@ else if ($id > 0 || ! empty($ref))
 	{
 		// Duration
 		print '<tr><td>'.$langs->trans("TotalDuration").'</td>';
-		print '<td colspan="3">'.convertSecondToTime($object->duree, 'all', $conf->global->MAIN_DURATION_OF_WORKDAY).'</td>';
+		print '<td colspan="3">'.convertSecondToTime($object->duration, 'all', $conf->global->MAIN_DURATION_OF_WORKDAY).'</td>';
 		print '</tr>';
 	}
 
@@ -1701,7 +1709,6 @@ else if ($id > 0 || ! empty($ref))
 	if ($action != 'presend')
 	{
 		print '<div class="fichecenter"><div class="fichehalfleft">';
-		//print '<table width="100%"><tr><td width="50%" valign="top">';
 
 		/*
 		 * Built documents
@@ -1719,12 +1726,14 @@ else if ($id > 0 || ! empty($ref))
 		//print "<br>\n";
 		$somethingshown=$formfile->show_documents('ficheinter',$filename,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,28,0,'','','',$soc->default_lang);
 
-		/*
-		 * Linked object block
-		*/
-		$somethingshown=$object->showLinkedObjectBlock();
+		// Linked object block
+		$somethingshown = $form->showLinkedObjectBlock($object);
+
+		// Show links to link elements
+		//$linktoelem = $form->showLinkToObjectBlock($object);
+		//if ($linktoelem) print '<br>'.$linktoelem;
+
 
-		//print '</td><td valign="top" width="50%">';
 		print '</div><div class="fichehalfright"><div class="ficheaddleft">';
 
 		// List of actions on element
@@ -1733,7 +1742,6 @@ else if ($id > 0 || ! empty($ref))
 		$somethingshown=$formactions->showactions($object,'fichinter',$socid);
 
 		print '</div></div></div>';
-		//print "</td></tr></table>\n";
 	}
 
 
@@ -1747,7 +1755,7 @@ else if ($id > 0 || ! empty($ref))
 	{
 		$ref = dol_sanitizeFileName($object->ref);
 		include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
-		$fileparams = dol_most_recent_file($conf->ficheinter->dir_output . '/' . $ref, preg_quote($ref,'/'));
+		$fileparams = dol_most_recent_file($conf->ficheinter->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
 		$file=$fileparams['fullname'];
 
 		// Define output language
@@ -1774,7 +1782,7 @@ else if ($id > 0 || ! empty($ref))
 				dol_print_error($db,$result);
 				exit;
 			}
-			$fileparams = dol_most_recent_file($conf->ficheinter->dir_output . '/' . $ref, preg_quote($ref,'/'));
+			$fileparams = dol_most_recent_file($conf->ficheinter->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
 			$file=$fileparams['fullname'];
 		}
 
diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php
index b72dec1f6fa9910393a48624886cc8dbaa70faf3..5e88cc94243cea0d7e612765c352e7f434469ed9 100644
--- a/htdocs/fichinter/class/fichinter.class.php
+++ b/htdocs/fichinter/class/fichinter.class.php
@@ -53,7 +53,7 @@ class Fichinter extends CommonObject
 	var $datec;
 	var $datev;
 	var $datem;
-	var $duree;
+	var $duration;
 	var $statut;		// 0=draft, 1=validated, 2=invoiced
 	var $description;
 	var $note_private;
@@ -116,7 +116,7 @@ class Fichinter extends CommonObject
 				return -1;
 			}
 		}
-		if (! is_numeric($this->duree)) $this->duree = 0;
+		if (! is_numeric($this->duration)) $this->duration = 0;
 
 		if ($this->socid <= 0)
 		{
@@ -234,8 +234,8 @@ class Fichinter extends CommonObject
 	 */
 	function update($user, $notrigger=0)
 	{
-	 	if (! is_numeric($this->duree)) {
-	 		$this->duree = 0;
+	 	if (! is_numeric($this->duration)) {
+	 		$this->duration = 0;
 	 	}
 	 	if (! dol_strlen($this->fk_project)) {
 	 		$this->fk_project = 0;
@@ -245,7 +245,7 @@ class Fichinter extends CommonObject
 
 		$sql = "UPDATE ".MAIN_DB_PREFIX."fichinter SET ";
 		$sql.= "description  = '".$this->db->escape($this->description)."'";
-		$sql.= ", duree = ".$this->duree;
+		$sql.= ", duree = ".$this->duration;
 		$sql.= ", fk_projet = ".$this->fk_project;
 		$sql.= ", note_private = ".($this->note_private?"'".$this->db->escape($this->note_private)."'":"null");
 		$sql.= ", note_public = ".($this->note_public?"'".$this->db->escape($this->note_public)."'":"null");
@@ -306,7 +306,7 @@ class Fichinter extends CommonObject
 				$this->description  = $obj->description;
 				$this->socid        = $obj->fk_soc;
 				$this->statut       = $obj->fk_statut;
-				$this->duree        = $obj->duree;
+				$this->duration     = $obj->duree;
 				$this->datec        = $this->db->jdate($obj->datec);
 				$this->datev        = $this->db->jdate($obj->datev);
 				$this->datem        = $this->db->jdate($obj->datem);
@@ -951,7 +951,7 @@ class Fichinter extends CommonObject
 		$this->datec = $now;
 		$this->note_private='Private note';
 		$this->note_public='SPECIMEN';
-		$this->duree = 0;
+		$this->duration = 0;
 		$nbp = 25;
 		$xnbp = 0;
 		while ($xnbp < $nbp)
@@ -964,7 +964,7 @@ class Fichinter extends CommonObject
 			$this->lines[$xnbp]=$line;
 			$xnbp++;
 
-			$this->duree+=$line->duration;
+			$this->duration+=$line->duration;
 		}
 	}
 
diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php
index 7c0e9f14a0bb29a221dfedd47610044da71e31a5..45ba2b24f8c18356d675d1e0a4b38446a96dd813 100644
--- a/htdocs/filefunc.inc.php
+++ b/htdocs/filefunc.inc.php
@@ -37,22 +37,17 @@ if (! defined('EURO')) define('EURO',chr(128));
 // Define syslog constants
 if (! defined('LOG_DEBUG'))
 {
-    if (function_exists("define_syslog_variables"))
-    {
-    	define_syslog_variables(); // Deprecated since php 5.3.0, syslog variables no longer need to be initialized
-    }
-    else
-    {
-    	// Pour PHP sans syslog (comme sous Windows)
-    	define('LOG_EMERG',0);
-    	define('LOG_ALERT',1);
-    	define('LOG_CRIT',2);
-    	define('LOG_ERR',3);
-    	define('LOG_WARNING',4);
-    	define('LOG_NOTICE',5);
-    	define('LOG_INFO',6);
-    	define('LOG_DEBUG',7);
-    }
+	if (! function_exists("syslog")) {
+		// For PHP versions without syslog (like running on Windows OS)
+		define('LOG_EMERG',0);
+		define('LOG_ALERT',1);
+		define('LOG_CRIT',2);
+		define('LOG_ERR',3);
+		define('LOG_WARNING',4);
+		define('LOG_NOTICE',5);
+		define('LOG_INFO',6);
+		define('LOG_DEBUG',7);
+	}
 }
 
 // End of common declaration part
diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php
index ccd17a2f97bb33fa5159f58c22b271c8c98fbb4f..6628aeb19d772da80ad164e42ee60485ecf8dbd7 100644
--- a/htdocs/fourn/class/fournisseur.commande.class.php
+++ b/htdocs/fourn/class/fournisseur.commande.class.php
@@ -55,6 +55,7 @@ class CommandeFournisseur extends CommonOrder
 	/**
 	 * TODO: Remove
 	 * @deprecated
+	 * @see product_ref
 	 */
     var $ref;
     var $product_ref;
@@ -78,8 +79,13 @@ class CommandeFournisseur extends CommonOrder
     var $total_localtax2;   // Total Local tax 2
     var $total_ttc;
     var $source;
+	/**
+	 * @deprecated
+	 * @see note_private, note_public
+	 */
     var $note;
-    var $note_public;
+	public $note_private;
+    public $note_public;
     var $model_pdf;
     var $fk_project;
     var $cond_reglement_id;
@@ -2465,6 +2471,7 @@ class CommandeFournisseurLigne extends CommonOrderLine
 	 * Supplier ref
 	 * @var string
 	 * @deprecated Use ref_supplier
+	 * @see ref_supplier
 	 */
 	public $ref_fourn;
 
diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php
index 1cfbe941d9aa9f37a2ad89eb9459b2e01e73e639..03ff0ff1eb2173c18f04c79bde371a482aa256db 100644
--- a/htdocs/fourn/class/fournisseur.facture.class.php
+++ b/htdocs/fourn/class/fournisseur.facture.class.php
@@ -58,12 +58,9 @@ class FactureFournisseur extends CommonInvoice
     var $type = self::TYPE_STANDARD;
 
 	/**
-	 * Check constants for more info:
-	 * - STATUS_DRAFT
-	 * - STATUS_VALIDATED
-	 * - STATUS_PAID
-	 * - STATUS_ABANDONED
+	 * Supplier invoice status
 	 * @var int
+	 * @see FactureFournisseur::STATUS_DRAFT, FactureFournisseur::STATUS_VALIDATED, FactureFournisseur::STATUS_PAID, FactureFournisseur::STATUS_ABANDONED
 	 */
     var $statut;
     //! 1 si facture payee COMPLETEMENT, 0 sinon (ce champ ne devrait plus servir car insuffisant)
@@ -85,7 +82,11 @@ class FactureFournisseur extends CommonInvoice
     var $total_localtax1;
     var $total_localtax2;
     var $total_ttc;
-    var $note;			// deprecated
+	/**
+	 * @deprecated
+	 * @see note_private, note_public
+	 */
+    var $note;
     var $note_private;
     var $note_public;
     var $propalid;
@@ -100,7 +101,10 @@ class FactureFournisseur extends CommonInvoice
 	 * @var SupplierInvoiceLine[]
 	 */
     public $lines = array();
-    var $fournisseur;	// deprecated
+	/**
+	 * @deprecated
+	 */
+    var $fournisseur;
 
 	//Incorterms
 	var $fk_incoterms;
@@ -1896,9 +1900,17 @@ class SupplierInvoiceLine extends CommonObjectLine
 
 	var $oldline;
 
+	/**
+	 * @deprecated
+	 * @see product_ref
+	 */
 	public $ref;
 	public $product_ref;
 	public $ref_supplier;
+	/**
+	 * @deprecated
+	 * @see label
+	 */
 	public $libelle;
 	public $product_desc;
 
@@ -1906,8 +1918,10 @@ class SupplierInvoiceLine extends CommonObjectLine
 	 * Unit price before taxes
 	 * @var float
 	 * @deprecated Use $subprice
+	 * @see subprice
 	 */
 	public $pu_ht;
+	public $subprice;
 
 	/**
 	 * Unit price included taxes
@@ -1919,8 +1933,10 @@ class SupplierInvoiceLine extends CommonObjectLine
 	 * Total VAT amount
 	 * @var float
 	 * @deprecated Use $total_tva instead
+	 * @see total_tva
 	 */
 	public $tva;
+	public $total_tva;
 
 	/**
 	 * Id of the corresponding supplier invoice
@@ -1932,7 +1948,7 @@ class SupplierInvoiceLine extends CommonObjectLine
 	 * Product label
 	 * @var string
 	 */
-	var $label;				// deprecated
+	var $label;
 
 	/**
 	 * Description of the line
diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php
index 48c238d60beee80cc64e980490549e1de1c04355..9c4a95c7c52af5cccebcb771e024f4248f60ef89 100644
--- a/htdocs/fourn/class/fournisseur.product.class.php
+++ b/htdocs/fourn/class/fournisseur.product.class.php
@@ -42,7 +42,11 @@ class ProductFournisseur extends Product
     var $product_fourn_price_id;  // id of ligne product-supplier
 
     var $id;                      // product id
-    var $fourn_ref;               // deprecated
+	/**
+	 * @deprecated
+	 * @see ref_supplier
+	 */
+    var $fourn_ref;
     var $delivery_time_days;
     var $ref_supplier;			  // ref supplier (can be set by get_buyprice)
     var $vatrate_supplier;		  // default vat rate for this supplier/qty/product (can be set by get_buyprice)
@@ -161,6 +165,7 @@ class ProductFournisseur extends Product
     function update_buyprice($qty, $buyprice, $user, $price_base_type, $fourn, $availability, $ref_fourn, $tva_tx, $charges=0, $remise_percent=0, $remise=0, $newnpr=0, $delivery_time_days=0)
     {
         global $conf, $langs;
+        //global $mysoc;
 
         // Clean parameter
         if (empty($qty)) $qty=0;
@@ -348,7 +353,8 @@ class ProductFournisseur extends Product
             if ($obj)
             {
             	$this->product_fourn_price_id	= $rowid;
-            	$this->fourn_ref				= $obj->ref_fourn;
+            	$this->fourn_ref				= $obj->ref_fourn; // deprecated
+	            $this->ref_supplier             = $obj->ref_fourn;
             	$this->fourn_price				= $obj->price;
             	$this->fourn_charges            = $obj->charges;
             	$this->fourn_qty                = $obj->quantity;
diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php
index 35165b3329888fda8c3f9456e416050ff4cdb9c0..b79663445ed4c7d1fc26f82062dff3d9508795c5 100644
--- a/htdocs/fourn/commande/card.php
+++ b/htdocs/fourn/commande/card.php
@@ -2265,7 +2265,7 @@ elseif (! empty($object->id))
 	{
 		$ref = dol_sanitizeFileName($object->ref);
 		include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
-		$fileparams = dol_most_recent_file($conf->fournisseur->commande->dir_output . '/' . $ref, preg_quote($ref,'/'));
+		$fileparams = dol_most_recent_file($conf->fournisseur->commande->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
 		$file=$fileparams['fullname'];
 
 		// Define output language
@@ -2292,7 +2292,7 @@ elseif (! empty($object->id))
 				dol_print_error($db,$result);
 				exit;
 			}
-			$fileparams = dol_most_recent_file($conf->fournisseur->commande->dir_output . '/' . $ref, preg_quote($ref,'/'));
+			$fileparams = dol_most_recent_file($conf->fournisseur->commande->dir_output . '/' . $ref, preg_quote($ref, '/').'[^\-]+');
 			$file=$fileparams['fullname'];
 		}
 
@@ -2763,10 +2763,13 @@ elseif (! empty($object->id))
 		print $formfile->showdocuments('commande_fournisseur',$comfournref,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,0,0,'','','',$object->thirdparty->default_lang);
 		$somethingshown=$formfile->numoffiles;
 
-		/*
-		 * Linked object block
-		 */
-		$somethingshown=$object->showLinkedObjectBlock();
+		// Linked object block
+		$somethingshown = $form->showLinkedObjectBlock($object);
+
+		// Show links to link elements
+		//$linktoelem = $form->showLinkToObjectBlock($object);
+		//if ($linktoelem) print '<br>'.$linktoelem;
+
 
 		print '</div><div class="fichehalfright"><div class="ficheaddleft">';
 
diff --git a/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php b/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php
index 3fb22d4a1015bb862610c8b71be8c27875b4eb1f..0c2d5eed0afb5342593e5312f21f0e6dfe1271e8 100644
--- a/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php
+++ b/htdocs/fourn/commande/tpl/linkedobjectblock.tpl.php
@@ -39,6 +39,7 @@ print_titre($langs->trans('RelatedSupplierOrders'));
 	<td align="right"><?php echo $langs->trans("Status"); ?></td>
 </tr>
 <?php
+$total=0;
 $var=true;
 foreach($linkedObjectBlock as $object)
 {
@@ -68,4 +69,4 @@ foreach($linkedObjectBlock as $object)
 </tr>
 </table>
 
-<!-- END PHP TEMPLATE -->
\ No newline at end of file
+<!-- END PHP TEMPLATE -->
diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php
index bf310d92f8d5c79056d6bd62663a48bc3766e72e..cda640f2f383017ad0058de514b42bd42605c32d 100644
--- a/htdocs/fourn/facture/card.php
+++ b/htdocs/fourn/facture/card.php
@@ -1508,7 +1508,16 @@ if ($action == 'create')
 	        $langs->load('orders');
 	        $txt=$langs->trans("SupplierOrder");
         }
-        print '<tr><td>'.$txt.'</td><td colspan="2">'.$objectsrc->getNomUrl(1).'</td></tr>';
+        print '<tr><td>'.$txt.'</td><td colspan="2">'.$objectsrc->getNomUrl(1);
+        //We check if Origin document has already an invoice attached to it
+        $objectsrc->fetchObjectLinked($originid,'','','invoice_supplier');
+        $cntinvoice=count($objectsrc->linkedObjects['invoice_supplier']);
+        if ($cntinvoice>=1)
+        {
+        	setEventMessage('WarningBillExist','warnings');
+        	echo ' ('.$langs->trans('LatestRelatedBill').end($objectsrc->linkedObjects['facture'])->getNomUrl(1).')';
+        }
+        echo '</td></tr>';
         print '<tr><td>'.$langs->trans('TotalHT').'</td><td colspan="2">'.price($objectsrc->total_ht).'</td></tr>';
         print '<tr><td>'.$langs->trans('TotalVAT').'</td><td colspan="2">'.price($objectsrc->total_tva)."</td></tr>";
         if ($mysoc->country_code=='ES')
@@ -2403,80 +2412,14 @@ else
                 print $formfile->showdocuments('facture_fournisseur',$subdir,$filedir,$urlsource,$genallowed,$delallowed,$modelpdf,1,0,0,40,0,'','','',$societe->default_lang);
                 $somethingshown=$formfile->numoffiles;
 
-                /*
-                 * Linked object block
-                 */
-                $somethingshown=$object->showLinkedObjectBlock();
-
-                $linktoelem='';
+				// Linked object block
+				$somethingshown = $form->showLinkedObjectBlock($object);
 
-                if (empty($somethingshown) && ! empty($conf->fournisseur->enabled))
-                {
-                	$linktoelem.=($linktoelem?' &nbsp; ':'').'<a href="#" id="linktoorder">' . $langs->trans('LinkedOrder') . '</a>';
-
-                	print '
-						<script type="text/javascript" language="javascript">
-						jQuery(document).ready(function() {
-							jQuery("#linktoorder").click(function() {
-								jQuery("#orderlist").toggle();
-								jQuery("#linktoorder").toggle();
-                			});
-						});
-						</script>
-						';
-
-                	print '<div id="orderlist" style="display:none">';
-
-                	$sql = "SELECT s.rowid as socid, s.nom as name, s.client, c.rowid, c.ref, c.ref_supplier, c.total_ht";
-                	$sql .= " FROM " . MAIN_DB_PREFIX . "societe as s";
-                	$sql .= ", " . MAIN_DB_PREFIX . "commande_fournisseur as c";
-                	$sql .= ' WHERE c.fk_soc = s.rowid AND c.fk_soc = ' . $societe->id;
-
-                	$resqlorderlist = $db->query($sql);
-                	if ($resqlorderlist) {
-                		$num = $db->num_rows($resqlorderlist);
-                		$i = 0;
-
-                		print '<br><form action="" method="POST" name="LinkedOrder">';
-                		print '<table class="noborder">';
-                		print '<tr class="liste_titre">';
-                		print '<td class="nowrap"></td>';
-                		print '<td align="center">' . $langs->trans("Ref") . '</td>';
-                		print '<td align="left">' . $langs->trans("RefSupplier") . '</td>';
-                		print '<td align="left">' . $langs->trans("AmountHTShort") . '</td>';
-                		print '<td align="left">' . $langs->trans("Company") . '</td>';
-                		print '</tr>';
-                		while ($i < $num) {
-                			$objp = $db->fetch_object($resqlorderlist);
-                			if ($objp->socid == $societe->id) {
-                				$var = ! $var;
-                				print '<tr ' . $bc [$var] . '>';
-                				print '<td aling="left">';
-                				print '<input type="radio" name="linkedOrder" value=' . $objp->rowid . '>';
-                				print '<td align="center">' . $objp->ref . '</td>';
-                				print '<td>' . $objp->ref_supplier . '</td>';
-                				print '<td>' . price($objp->total_ht) . '</td>';
-                				print '<td>' . $objp->name . '</td>';
-                				print '</td>';
-                				print '</tr>';
-                			}
-
-                			$i ++;
-                		}
-                		print '</table>';
-                		print '<br><div class="center"><input type="submit" class="button" value="' . $langs->trans('ToLink') . '"> &nbsp; <input type="submit" class="button" name="cancel" value="' . $langs->trans('Cancel') . '"></div>';
-                		print '</form>';
-                		$db->free($resqlorderlist);
-                	} else {
-                		dol_print_error($db);
-                	}
-
-                	print '</div>';
-                }
-
-				// Show link to elements
+				// Show links to link elements
+				$linktoelem = $form->showLinkToObjectBlock($object,array('supplier_order'));
 				if ($linktoelem) print '<br>'.$linktoelem;
 
+
 				print '</div><div class="fichehalfright"><div class="ficheaddleft">';
                 //print '</td><td valign="top" width="50%">';
                 //print '<br>';
@@ -2500,7 +2443,7 @@ else
         {
             $ref = dol_sanitizeFileName($object->ref);
             include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
-            $fileparams = dol_most_recent_file($conf->fournisseur->facture->dir_output.'/'.get_exdir($object->id,2,0,0,$object,'invoice_supplier').$ref, preg_quote($ref,'/'));
+            $fileparams = dol_most_recent_file($conf->fournisseur->facture->dir_output.'/'.get_exdir($object->id,2,0,0,$object,'invoice_supplier').$ref, preg_quote($ref,'/').'([^\-])+');
             $file=$fileparams['fullname'];
 
             // Define output language
@@ -2527,7 +2470,7 @@ else
                     dol_print_error($db,$result);
                     exit;
                 }
-                $fileparams = dol_most_recent_file($conf->fournisseur->facture->dir_output.'/'.get_exdir($object->id,2,0,0,$object,'invoice_supplier').$ref, preg_quote($ref,'/'));
+                $fileparams = dol_most_recent_file($conf->fournisseur->facture->dir_output.'/'.get_exdir($object->id,2,0,0,$object,'invoice_supplier').$ref, preg_quote($ref,'/').'([^\-])+');
                 $file=$fileparams['fullname'];
             }
 
diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php
index 010e9b95ae6a5e02eb749ffcae51b49624be7a5c..26cfbacb6bfd35e3d01138a6b5b20cbb1e57a9f6 100644
--- a/htdocs/fourn/facture/list.php
+++ b/htdocs/fourn/facture/list.php
@@ -8,7 +8,8 @@
  * Copyright (C) 2015      Marcos García        <marcosgdf@gmail.com>
  * Copyright (C) 2015	   juanjo Menent		<jmenent@2byte.es>
  * Copyright (C) 2015 	   Abbes Bahfir 	<bafbes@gmail.com>
-
+ * Copyright (C) 2015	   Ferran Marcet		<fmarcet@2byte.es>
+ * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 3 of the License, or
@@ -74,8 +75,12 @@ $search_company = GETPOST("search_company","alpha");
 $search_amount_no_tax = GETPOST("search_amount_no_tax","alpha");
 $search_amount_all_tax = GETPOST("search_amount_all_tax","alpha");
 $search_status=GETPOST('search_status','alpha');
+$day = GETPOST("day","int");
 $month = GETPOST("month","int");
 $year = GETPOST("year","int");
+$day_lim	= GETPOST('day_lim','int');
+$month_lim	= GETPOST('month_lim','int');
+$year_lim	= GETPOST('year_lim','int');
 $filter = GETPOST("filtre");
 
 if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter"))		// Both test must be present to be compatible with all browsers
@@ -163,15 +168,30 @@ if ($search_ref_supplier)
 }
 if ($month > 0)
 {
-	if ($year > 0)
+	if ($year > 0 && empty($day))
 	$sql.= " AND fac.datef BETWEEN '".$db->idate(dol_get_first_day($year,$month,false))."' AND '".$db->idate(dol_get_last_day($year,$month,false))."'";
+	else if ($year > 0 && ! empty($day))
+		$sql.= " AND fac.datef BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $month, $day, $year))."' AND '".$db->idate(dol_mktime(23, 59, 59, $month, $day, $year))."'";
 	else
-	$sql.= " AND date_format(fac.datef, '%m') = '$month'";
+	$sql.= " AND date_format(fac.datef, '%m') = '".$month."'";
 }
 else if ($year > 0)
 {
 	$sql.= " AND fac.datef BETWEEN '".$db->idate(dol_get_first_day($year,1,false))."' AND '".$db->idate(dol_get_last_day($year,12,false))."'";
 }
+if ($month_lim > 0)
+{
+	if ($year_lim > 0 && empty($day_lim))
+		$sql.= " AND fac.date_lim_reglement BETWEEN '".$db->idate(dol_get_first_day($year_lim,$month_lim,false))."' AND '".$db->idate(dol_get_last_day($year_lim,$month_lim,false))."'";
+	else if ($year_lim > 0 && ! empty($day_lim))
+		$sql.= " AND fac.date_lim_reglement BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $month_lim, $day_lim, $year_lim))."' AND '".$db->idate(dol_mktime(23, 59, 59, $month_lim, $day_lim, $year_lim))."'";
+	else
+		$sql.= " AND date_format(fac.date_lim_reglement, '%m') = '".$month_lim."'";
+}
+else if ($year_lim > 0)
+{
+	$sql.= " AND fac.datef BETWEEN '".$db->idate(dol_get_first_day($year_lim,1,false))."' AND '".$db->idate(dol_get_last_day($year_lim,12,false))."'";
+}
 if ($search_label)
 {
     $sql .= natural_search('fac.libelle', $search_label);
@@ -260,11 +280,15 @@ if ($resql)
 		print '</td>';
 	}
 	print '<td class="liste_titre" colspan="1" align="center">';
+	if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="day" value="'.$day.'">';
 	print '<input class="flat" type="text" size="1" maxlength="2" name="month" value="'.$month.'">';
-	$syear = $year;
-	$formother->select_year($syear?$syear:-1,'year',1, 20, 5);
+	$formother->select_year($year?$year:-1,'year',1, 20, 5);
+	print '</td>';
+	print '<td class="liste_titre" colspan="1" align="center">';
+	if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print '<input class="flat" type="text" size="1" maxlength="2" name="day_lim" value="'.$day_lim.'">';
+	print '<input class="flat" type="text" size="1" maxlength="2" name="month_lim" value="'.$month_lim.'">';
+	$formother->select_year($year_lim?$year_lim:-1,'year_lim',1, 20, 5);
 	print '</td>';
-	print '<td class="liste_titre">&nbsp;</td>';
 	print '<td class="liste_titre" align="left">';
 	print '<input class="flat" size="16" type="text" name="search_label" value="'.$search_label.'">';
 	print '</td>';
diff --git a/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php b/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php
index 6bbee5a33fc01c590c764478fb9056446b589956..81f259d67c6ae4e07084f5871bbadddf7252e9c5 100644
--- a/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php
+++ b/htdocs/fourn/facture/tpl/linkedobjectblock.tpl.php
@@ -40,6 +40,7 @@ print_titre($langs->trans("RelatedSupplierInvoices"));
 	<td align="right"><?php echo $langs->trans("Status"); ?></td>
 </tr>
 <?php
+$total=0;
 $var=true;
 foreach($linkedObjectBlock as $object)
 {
@@ -68,4 +69,4 @@ foreach($linkedObjectBlock as $object)
 </tr>
 </table>
 
-<!-- END PHP TEMPLATE -->
\ No newline at end of file
+<!-- END PHP TEMPLATE -->
diff --git a/htdocs/holiday/class/holiday.class.php b/htdocs/holiday/class/holiday.class.php
index 90492fa16f11124ee55e802780136d84eb2ee3ca..f76d9843e026a8c448f3bbd8f5957f12b5319ecc 100644
--- a/htdocs/holiday/class/holiday.class.php
+++ b/htdocs/holiday/class/holiday.class.php
@@ -38,6 +38,10 @@ class Holiday extends CommonObject
     var $error;
     var $errors=array();
 
+	/**
+	 * @deprecated
+	 * @see id
+	 */
     var $rowid;
     var $ref;
 
diff --git a/htdocs/holiday/index.php b/htdocs/holiday/index.php
index 86c4eca49eb27c5aa570502d9b3e13f289dff7c9..5b9e7d4c0babb29ebf40698053f46dcfbf8b164c 100644
--- a/htdocs/holiday/index.php
+++ b/htdocs/holiday/index.php
@@ -78,12 +78,15 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both
 	$search_statut="";
 }
 
+
 /*
  * Actions
  */
 
 // None
 
+
+
 /*
  * View
  */
@@ -219,19 +222,19 @@ if ($id > 0)
 	print '<table class="border" width="100%">';
 
 	// Ref
-	print '<tr><td width="25%" valign="top">'.$langs->trans("Ref").'</td>';
+	print '<tr><td width="25%">'.$langs->trans("Ref").'</td>';
 	print '<td colspan="2">';
 	print $form->showrefnav($fuser,'id','',$user->rights->user->user->lire || $user->admin);
 	print '</td>';
 	print '</tr>';
 
 	// LastName
-	print '<tr><td width="25%" valign="top">'.$langs->trans("LastName").'</td>';
+	print '<tr><td width="25%">'.$langs->trans("LastName").'</td>';
 	print '<td colspan="2">'.$fuser->lastname.'</td>';
 	print "</tr>\n";
 
 	// FirstName
-	print '<tr><td width="25%" valign="top">'.$langs->trans("FirstName").'</td>';
+	print '<tr><td width="25%">'.$langs->trans("FirstName").'</td>';
 	print '<td colspan="2">'.$fuser->firstname.'</td>';
 	print "</tr>\n";
 
@@ -250,14 +253,10 @@ $nbdeduced=$holiday->getConfCP('nbHolidayDeducted');
 $nb_holiday = $nbaquis / $nbdeduced;
 print $langs->trans('SoldeCPUser',round($nb_holiday,2)).($nbdeduced != 1 ? ' ('.$nbaquis.' / '.$nbdeduced.')' : '');
 
-if ($id > 0)
-{
-	dol_fiche_end();
-	print '</br>';
-}
-else {
-	dol_fiche_end();
-}
+dol_fiche_end();
+
+if ($id > 0) print '</br>';
+
 
 print '<form method="get" action="'.$_SERVER["PHP_SELF"].'">'."\n";
 print '<table class="noborder" width="100%;">';
@@ -387,7 +386,7 @@ if (! empty($holiday->holiday))
 if($holiday_payes == '2')
 {
     print '<tr>';
-    print '<td colspan="9" class="pair" style="text-align: center; padding: 5px;">'.$langs->trans('None').'</td>';
+    print '<td colspan="9" '.$bc[false].'">'.$langs->trans('None').'</td>';
     print '</tr>';
 }
 
diff --git a/htdocs/includes/printipp/BasicIPP.php b/htdocs/includes/printipp/BasicIPP.php
index 1cc7851fab2e796db2d915625ac6ee0c3072c6c0..67f0bfaaa26ce69f5d01d5cd0c8c8ec747f460b8 100644
--- a/htdocs/includes/printipp/BasicIPP.php
+++ b/htdocs/includes/printipp/BasicIPP.php
@@ -42,20 +42,20 @@ class ippException extends \Exception
 {
     protected $errno;
 
-    public function __construct($msg, $errno = null) 
+    public function __construct($msg, $errno = null)
     {
         parent::__construct($msg);
         $this->errno = $errno;
     }
 
-    public function getErrorFormatted() 
+    public function getErrorFormatted()
     {
         $return = sprintf("[ipp]: %s -- " . _(" file %s, line %s"),
             $this->getMessage() , $this->getFile() , $this->getLine());
         return $return;
     }
 
-    public function getErrno() 
+    public function getErrno()
     {
         return $this->errno;
     }
@@ -74,7 +74,7 @@ class BasicIPP
     public $ssl = false;
     public $debug_level = 3; // max 3: almost silent
     public $alert_on_end_tag; // debugging purpose: echo "END tag OK" if (1 and  reads while end tag)
-    public $with_exceptions = 0; // compatibility mode for old scripts
+    public $with_exceptions = 1; // compatibility mode for old scripts		// DOL_LDR_CHANGE set this to 1
     public $handle_http_exceptions = 1;
 
     // readables variables
@@ -136,7 +136,7 @@ class BasicIPP
     protected $unix = false; // true -> use unix sockets instead of http
     protected $output;
 
-    public function __construct() 
+    public function __construct()
     {
         $tz = getenv("date.timezone");
         if (!$tz)
@@ -154,32 +154,32 @@ class BasicIPP
         self::_initTags();
     }
 
-    public function setPort($port = '631') 
+    public function setPort($port = '631')
     {
         $this->port = $port;
         self::_putDebug("Port is " . $this->port, 2);
     }
 
-    public function setUnix($socket = '/var/run/cups/cups.sock') 
+    public function setUnix($socket = '/var/run/cups/cups.sock')
     {
         $this->host = $socket;
         $this->unix = true;
         self::_putDebug("Host is " . $this->host, 2);
     }
 
-    public function setHost($host = 'localhost') 
+    public function setHost($host = 'localhost')
     {
         $this->host = $host;
         $this->unix = false;
         self::_putDebug("Host is " . $this->host, 2);
     }
 
-    public function setTimeout($timeout) 
+    public function setTimeout($timeout)
     {
         $this->timeout = $timeout;
     }
 
-    public function setPrinterURI($uri) 
+    public function setPrinterURI($uri)
     {
         $length = strlen($uri);
         $length = chr($length);
@@ -193,19 +193,19 @@ class BasicIPP
         $this->setup->uri = 1;
     }
 
-    public function setData($data) 
+    public function setData($data)
     {
         $this->data = $data;
         self::_putDebug("Data set", 2);
     }
 
-    public function setRawText() 
+    public function setRawText()
     {
         $this->setup->datatype = 'TEXT';
         $this->meta->mime_media_type = "";
         $this->setup->mime_media_type = 1;
         $this->datahead = chr(0x16);
-        if (is_readable($this->data)) 
+        if (is_readable($this->data))
         {
             //It's a filename.  Open and stream.
             $data = fopen($this->data, "rb");
@@ -224,7 +224,7 @@ class BasicIPP
         self::_putDebug(_("Forcing data to be interpreted as RAW TEXT") , 2);
     }
 
-    public function unsetRawText() 
+    public function unsetRawText()
     {
         $this->setup->datatype = 'BINARY';
         $this->datahead = '';
@@ -232,24 +232,24 @@ class BasicIPP
         self::_putDebug(_("Unset forcing data to be interpreted as RAW TEXT") , 2);
     }
 
-    public function setBinary() 
+    public function setBinary()
     {
         self::unsetRawText();
     }
 
-    public function setFormFeed() 
+    public function setFormFeed()
     {
         $this->datatail = "\r\n" . chr(0x0c);
         unset($this->setup->noFormFeed);
     }
 
-    public function unsetFormFeed() 
+    public function unsetFormFeed()
     {
         $this->datatail = '';
         $this->setup->noFormFeed = 1;
     }
 
-    public function setCharset($charset = 'utf-8') 
+    public function setCharset($charset = 'utf-8')
     {
         $charset = strtolower($charset);
         $this->charset = $charset;
@@ -262,7 +262,7 @@ class BasicIPP
         $this->setup->charset = 1;
     }
 
-    public function setLanguage($language = 'en_us') 
+    public function setLanguage($language = 'en_us')
     {
         $language = strtolower($language);
         $this->meta->language = chr(0x48) // natural-language type | value-tag
@@ -274,7 +274,7 @@ class BasicIPP
         $this->setup->language = 1;
     }
 
-    public function setDocumentFormat($mime_media_type = 'application/octet-stream') 
+    public function setDocumentFormat($mime_media_type = 'application/octet-stream')
     {
         self::setBinary();
         $length = chr(strlen($mime_media_type));
@@ -287,12 +287,12 @@ class BasicIPP
     }
 
     // setDocumentFormat alias for backward compatibility
-    public function setMimeMediaType($mime_media_type = "application/octet-stream") 
+    public function setMimeMediaType($mime_media_type = "application/octet-stream")
     {
         self::setDocumentFormat($mime_media_type);
     }
 
-    public function setCopies($nbrcopies = 1) 
+    public function setCopies($nbrcopies = 1)
     {
         $this->meta->copies = "";
 
@@ -311,7 +311,7 @@ class BasicIPP
         $this->setup->copies = 1;
     }
 
-    public function setDocumentName($document_name = "") 
+    public function setDocumentName($document_name = "")
     {
         $this->meta->document_name = "";
         if (!$document_name) {
@@ -329,10 +329,10 @@ class BasicIPP
 
     }
 
-    public function setJobName($jobname = '', $absolute = false) 
+    public function setJobName($jobname = '', $absolute = false)
     {
         $this->meta->jobname = '';
-        if ($jobname == '') 
+        if ($jobname == '')
         {
             $this->meta->jobname = '';
             return true;
@@ -356,7 +356,7 @@ class BasicIPP
         $this->setup->jobname = 1;
     }
 
-    public function setUserName($username = 'PHP-SERVER') 
+    public function setUserName($username = 'PHP-SERVER')
     {
         $this->requesting_user = $username;
         $this->meta->username = '';
@@ -368,7 +368,7 @@ class BasicIPP
         }
         /*
         $value_length = 0x00;
-        for ($i = 0; $i < strlen($username); $i++) 
+        for ($i = 0; $i < strlen($username); $i++)
         {
             $value_length+= 0x01;
         }
@@ -377,19 +377,19 @@ class BasicIPP
         */
         $this->meta->username = chr(0x42) // keyword type || value-tag
             . chr(0x00) . chr(0x14) // name-length
-            . "requesting-user-name" 
+            . "requesting-user-name"
             . self::_giveMeStringLength($username) // value-length
             . $username;
         self::_putDebug(sprintf(_("Username: %s") , $username) , 2);
         $this->setup->username = 1;
     }
 
-    public function setAuthentification($username, $password) 
+    public function setAuthentification($username, $password)
     {
         self::setAuthentication($username, $password);
     }
 
-    public function setAuthentication($username, $password) 
+    public function setAuthentication($username, $password)
     {
         $this->password = $password;
         $this->username = $username;
@@ -397,7 +397,7 @@ class BasicIPP
         $this->setup->password = 1;
     }
 
-    public function setSides($sides = 2) 
+    public function setSides($sides = 2)
     {
         $this->meta->sides = '';
         if (!$sides)
@@ -405,7 +405,7 @@ class BasicIPP
             return true;
         }
 
-        switch ($sides) 
+        switch ($sides)
         {
             case 1:
                 $sides = "one-sided";
@@ -428,7 +428,7 @@ class BasicIPP
         self::_putDebug(sprintf(_("Sides value set to %s") , $sides) , 2);
     }
 
-    public function setFidelity() 
+    public function setFidelity()
     {
         // whether the server can't replace any attributes
         // (eg, 2 sided print is not possible,
@@ -441,7 +441,7 @@ class BasicIPP
         self::_putDebug(_("Fidelity attribute is set (paranoid mode)") , 3);
     }
 
-    public function unsetFidelity() 
+    public function unsetFidelity()
     {
         // whether the server can replace any attributes
         // (eg, 2 sided print is not possible,
@@ -460,17 +460,17 @@ class BasicIPP
         if (!$message) {
             return true;
         }
-        $this->meta->message = 
+        $this->meta->message =
             chr(0x41) // attribute type = textWithoutLanguage
-                . chr(0x00) 
-                . chr(0x07) 
-                . "message" 
+                . chr(0x00)
+                . chr(0x07)
+                . "message"
                 . self::_giveMeStringLength(substr($message, 0, 127))
                 . substr($message, 0, 127);
         self::_putDebug(sprintf(_('Setting message to "%s"') , $message) , 2);
     }
 
-    public function setPageRanges($page_ranges) 
+    public function setPageRanges($page_ranges)
     {
         // $pages_ranges = string:  "1:5 10:25 40:52 ..."
         // to unset, specify an empty string.
@@ -482,37 +482,37 @@ class BasicIPP
         $first = true;
         #$page_ranges = split(' ', $page_ranges);
         $page_ranges = preg_split('# #', $page_ranges);
-        foreach($page_ranges as $page_range) 
+        foreach($page_ranges as $page_range)
         {
             $value = self::_rangeOfIntegerBuild($page_range);
             if ($first)
             {
-                $this->meta->page_ranges .= 
-                $this->tags_types['rangeOfInteger']['tag'] 
-                    . self::_giveMeStringLength('page-ranges') 
-                    . 'page-ranges' 
-                    . self::_giveMeStringLength($value) 
+                $this->meta->page_ranges .=
+                $this->tags_types['rangeOfInteger']['tag']
+                    . self::_giveMeStringLength('page-ranges')
+                    . 'page-ranges'
+                    . self::_giveMeStringLength($value)
                     . $value;
             }
             else
             {
-                $this->meta->page_ranges .= 
-                $this->tags_types['rangeOfInteger']['tag'] 
-                    . self::_giveMeStringLength('') 
-                    . self::_giveMeStringLength($value) 
+                $this->meta->page_ranges .=
+                $this->tags_types['rangeOfInteger']['tag']
+                    . self::_giveMeStringLength('')
+                    . self::_giveMeStringLength($value)
                     . $value;
                 $first = false;
             }
         }
     }
 
-    public function setAttribute($attribute, $values) 
+    public function setAttribute($attribute, $values)
     {
         $operation_attributes_tags = array_keys($this->operation_tags);
         $job_attributes_tags = array_keys($this->job_tags);
         $printer_attributes_tags = array_keys($this->printer_tags);
         self::unsetAttribute($attribute);
-        if (in_array($attribute, $operation_attributes_tags)) 
+        if (in_array($attribute, $operation_attributes_tags))
         {
             if (!is_array($values))
             {
@@ -526,13 +526,13 @@ class BasicIPP
                 }
             }
         }
-        elseif (in_array($attribute, $job_attributes_tags)) 
+        elseif (in_array($attribute, $job_attributes_tags))
         {
             if (!is_array($values))
             {
                 self::_setJobAttribute($attribute, $values);
             }
-            else 
+            else
             {
                 foreach($values as $value)
                 {
@@ -540,7 +540,7 @@ class BasicIPP
                 }
             }
         }
-        elseif (in_array($attribute, $printer_attributes_tags)) 
+        elseif (in_array($attribute, $printer_attributes_tags))
         {
             if (!is_array($values))
             {
@@ -569,14 +569,14 @@ class BasicIPP
         }
     }
 
-    public function unsetAttribute($attribute) 
+    public function unsetAttribute($attribute)
     {
         $operation_attributes_tags = array_keys($this->operation_tags);
         $job_attributes_tags = array_keys($this->job_tags);
         $printer_attributes_tags = array_keys($this->printer_tags);
-        if (in_array($attribute, $operation_attributes_tags)) 
+        if (in_array($attribute, $operation_attributes_tags))
         {
-            unset( 
+            unset(
                 $this->operation_tags[$attribute]['value'],
                 $this->operation_tags[$attribute]['systag']
             );
@@ -595,7 +595,7 @@ class BasicIPP
                 $this->printer_tags[$attribute]['systag']
             );
         }
-        else 
+        else
         {
             trigger_error(
                 sprintf(_('unsetAttribute: Tag "%s" is not a printer or a job attribute'),
@@ -623,7 +623,7 @@ class BasicIPP
      *
      * @throws ippException
      */
-    public function setLog($log_destination, $destination_type = 'file', $level = 2) 
+    public function setLog($log_destination, $destination_type = 'file', $level = 2)
     {
         if (!file_exists($log_destination) && is_writable(dirname($log_destination)))
         {
@@ -631,7 +631,7 @@ class BasicIPP
             chmod($log_destination, 0777);
         }
 
-        switch ($destination_type) 
+        switch ($destination_type)
         {
             case 'file':
             case 3:
@@ -654,7 +654,7 @@ class BasicIPP
         $this->log_level = $level;
     }
 
-    public function printDebug() 
+    public function printDebug()
     {
         for ($i = 0; $i < $this->debug_count; $i++)
         {
@@ -664,7 +664,7 @@ class BasicIPP
         $this->debug_count = 0;
     }
 
-    public function getDebug() 
+    public function getDebug()
     {
         $debug = '';
         for ($i = 0; $i < $this->debug_count; $i++)
@@ -679,7 +679,7 @@ class BasicIPP
     //
     // OPERATIONS
     //
-    public function printJob() 
+    public function printJob()
     {
         // this BASIC version of printJob do not parse server
         // output for job's attributes
@@ -692,7 +692,7 @@ class BasicIPP
         if (!$this->_stringJob()) {
             return FALSE;
         }
-        if (is_readable($this->data)) 
+        if (is_readable($this->data))
         {
             self::_putDebug(_("Printing a FILE"));
             $this->output = $this->stringjob;
@@ -718,7 +718,7 @@ class BasicIPP
         else
         {
             self::_putDebug(_("Printing DATA"));
-            $this->output = 
+            $this->output =
                 $this->stringjob
                     . $this->datahead
                     . $this->data
@@ -732,7 +732,7 @@ class BasicIPP
         {
             self::_parseServerOutput();
         }
-        if (isset($this->serveroutput) && isset($this->serveroutput->status)) 
+        if (isset($this->serveroutput) && isset($this->serveroutput->status))
         {
             $this->status = array_merge($this->status, array(
                 $this->serveroutput->status
@@ -740,25 +740,25 @@ class BasicIPP
             if ($this->serveroutput->status == "successfull-ok")
             {
                 self::_errorLog(
-                    sprintf("printing job %s: ", $this->last_job) 
+                    sprintf("printing job %s: ", $this->last_job)
                         . $this->serveroutput->status,
                     3);
             }
             else
             {
                 self::_errorLog(
-                    sprintf("printing job: ", $this->last_job) 
+                    sprintf("printing job: ", $this->last_job)
                         . $this->serveroutput->status,
                     1);
             }
                 return $this->serveroutput->status;
         }
 
-    $this->status = 
+    $this->status =
         array_merge($this->status, array("OPERATION FAILED"));
-        $this->jobs = 
+        $this->jobs =
             array_merge($this->jobs, array(""));
-        $this->jobs_uri = 
+        $this->jobs_uri =
             array_merge($this->jobs_uri, array(""));
 
         self::_errorLog("printing job : OPERATION FAILED", 1);
@@ -768,7 +768,7 @@ class BasicIPP
     //
     // HTTP OUTPUT
     //
-    protected function _sendHttp($post_values, $uri) 
+    protected function _sendHttp($post_values, $uri)
     {
         /*
             This function Copyright (C) 2005-2006 Thomas Harding, Manuel Lemos
@@ -780,13 +780,15 @@ class BasicIPP
         $this->serveroutput->body = "";
         $http = new http_class;
         if (!$this->unix) {
+        	// DOL_LDR_CHANGE
+        	if (empty($this->host)) $this->host='127.0.0.1';
             $http->host = $this->host;
         }
         else {
             $http->host = "localhost";
         }
         $http->with_exceptions = $this->with_exceptions;
-        if ($this->debug_http) 
+        if ($this->debug_http)
         {
             $http->debug = 1;
             $http->html_debug = 0;
@@ -824,20 +826,20 @@ class BasicIPP
                 "File" => $post_values["File"]
             );
         }
-        if (isset($post_values["FileType"]) 
+        if (isset($post_values["FileType"])
             && !strcmp($post_values["FileType"], "TEXT")
         )
         {
             $arguments["BodyStream"][] = array("Data" => Chr(12));
         }
         $arguments["RequestURI"] = $uri;
-        if ($this->with_exceptions && $this->handle_http_exceptions) 
+        if ($this->with_exceptions && $this->handle_http_exceptions)
         {
             try
             {
                 $success = $http->Open($arguments);
             }
-            catch(httpException $e) 
+            catch(httpException $e)
             {
                 throw new ippException(
                     sprintf("http error: %s", $e->getMessage()),
@@ -846,19 +848,19 @@ class BasicIPP
         }
         else
         {
-            $success = $http->Open($arguments);
+        	$success = $http->Open($arguments);
         }
-        if ($success[0] == true) 
+        if ($success[0] == true)
         {
             $success = $http->SendRequest($arguments);
-            if ($success[0] == true) 
+            if ($success[0] == true)
             {
                 self::_putDebug("H T T P    R E Q U E S T :");
                 self::_putDebug("Request headers:");
-                for (Reset($http->request_headers) , $header = 0; $header < count($http->request_headers); Next($http->request_headers) , $header++) 
+                for (Reset($http->request_headers) , $header = 0; $header < count($http->request_headers); Next($http->request_headers) , $header++)
                 {
                     $header_name = Key($http->request_headers);
-                    if (GetType($http->request_headers[$header_name]) == "array") 
+                    if (GetType($http->request_headers[$header_name]) == "array")
                     {
                         for ($header_value = 0; $header_value < count($http->request_headers[$header_name]); $header_value++)
                         {
@@ -872,7 +874,7 @@ class BasicIPP
                 }
                 self::_putDebug("Request body:");
                 self::_putDebug(
-                    htmlspecialchars($http->request_body) 
+                    htmlspecialchars($http->request_body)
                         . "*********** END REQUEST BODY *********"
                 );
                 $i = 0;
@@ -881,16 +883,16 @@ class BasicIPP
                 $http->ReadReplyHeaders($headers);
                 self::_putDebug("H T T P    R E S P O N S E :");
                 self::_putDebug("Response headers:");
-                for (Reset($headers) , $header = 0; $header < count($headers); Next($headers) , $header++) 
+                for (Reset($headers) , $header = 0; $header < count($headers); Next($headers) , $header++)
                 {
                     $header_name = Key($headers);
-                    if (GetType($headers[$header_name]) == "array") 
+                    if (GetType($headers[$header_name]) == "array")
                     {
-                        for ($header_value = 0; $header_value < count($headers[$header_name]); $header_value++) 
+                        for ($header_value = 0; $header_value < count($headers[$header_name]); $header_value++)
                         {
                             self::_putDebug($header_name . ": " . $headers[$header_name][$header_value]);
-                            $this->serveroutput->headers[$i] = 
-                                $header_name . ": " 
+                            $this->serveroutput->headers[$i] =
+                                $header_name . ": "
                                     . $headers[$header_name][$header_value];
                             $i++;
                         }
@@ -898,16 +900,16 @@ class BasicIPP
                     else
                     {
                         self::_putDebug($header_name . ": " . $headers[$header_name]);
-                        $this->serveroutput->headers[$i] = 
-                            $header_name 
-                                . ": " 
+                        $this->serveroutput->headers[$i] =
+                            $header_name
+                                . ": "
                                 . $headers[$header_name];
                         $i++;
                     }
                 }
                 self::_putDebug("\n\nResponse body:\n");
                 $this->serveroutput->body = "";
-                for (;;) 
+                for (;;)
                 {
                     $http->ReadReplyBody($body, 1024);
                     if (strlen($body) == 0) {
@@ -927,7 +929,7 @@ class BasicIPP
     //
     // INIT
     //
-    protected function _initTags() 
+    protected function _initTags()
     {
         $this->tags_types = array(
             "unsupported" => array(
@@ -1090,7 +1092,7 @@ class BasicIPP
     //
     // SETUP
     //
-    protected function _setOperationId() 
+    protected function _setOperationId()
     {
         $prepend = '';
         $this->operation_id+= 1;
@@ -1098,7 +1100,7 @@ class BasicIPP
         self::_putDebug("operation id is: " . $this->operation_id, 2);
     }
 
-    protected function _setJobId() 
+    protected function _setJobId()
     {
         $this->meta->jobid+= 1;
         $prepend = '';
@@ -1109,7 +1111,7 @@ class BasicIPP
         return $prepend . $this->meta->jobid;
     }
 
-    protected function _setJobUri($job_uri) 
+    protected function _setJobUri($job_uri)
     {
         $this->meta->job_uri = chr(0x45) // type uri
             . chr(0x00) . chr(0x07) // name-length
@@ -1122,7 +1124,7 @@ class BasicIPP
     //
     // RESPONSE PARSING
     //
-    protected function _parseServerOutput() 
+    protected function _parseServerOutput()
     {
         $this->serveroutput->response = array();
         if (!self::_parseHttpHeaders()) {
@@ -1141,10 +1143,10 @@ class BasicIPP
         return true;
     }
 
-    protected function _parseHttpHeaders() 
+    protected function _parseHttpHeaders()
     {
         $response = "";
-        switch ($this->serveroutput->headers[0]) 
+        switch ($this->serveroutput->headers[0])
         {
             case "http/1.1 200 ok: ":
                 $this->serveroutput->httpstatus = "HTTP/1.1 200 OK";
@@ -1201,12 +1203,12 @@ class BasicIPP
         return TRUE;
     }
 
-    protected function _parseIppVersion() 
+    protected function _parseIppVersion()
     {
         $ippversion =
             (ord($this->serveroutput->body[$this->_parsing->offset]) * 256)
                 + ord($this->serveroutput->body[$this->_parsing->offset + 1]);
-        switch ($ippversion) 
+        switch ($ippversion)
         {
             case 0x0101:
                 $this->serveroutput->ipp_version = "1.1";
@@ -1229,7 +1231,7 @@ class BasicIPP
         return;
     }
 
-    protected function _parseStatusCode() 
+    protected function _parseStatusCode()
     {
         $status_code =
             (ord($this->serveroutput->body[$this->_parsing->offset]) * 256)
@@ -1240,27 +1242,27 @@ class BasicIPP
         {
             return false;
         }
-        if ($status_code < 0x00FF) 
+        if ($status_code < 0x00FF)
         {
             $this->serveroutput->status = "successfull";
         }
-        elseif ($status_code < 0x01FF) 
+        elseif ($status_code < 0x01FF)
         {
             $this->serveroutput->status = "informational";
         }
-        elseif ($status_code < 0x02FF) 
+        elseif ($status_code < 0x02FF)
         {
             $this->serveroutput->status = "redirection";
         }
-        elseif ($status_code < 0x04FF) 
+        elseif ($status_code < 0x04FF)
         {
             $this->serveroutput->status = "client-error";
         }
-        elseif ($status_code < 0x05FF) 
+        elseif ($status_code < 0x05FF)
         {
             $this->serveroutput->status = "server-error";
         }
-        switch ($status_code) 
+        switch ($status_code)
         {
             case 0x0000:
                 $this->serveroutput->status = "successfull-ok";
@@ -1407,7 +1409,7 @@ class BasicIPP
         return;
     }
 
-    protected function _parseRequestID() 
+    protected function _parseRequestID()
     {
         $this->serveroutput->request_id =
             self::_interpretInteger(
@@ -1418,7 +1420,7 @@ class BasicIPP
         return;
     }
 
-    protected function _interpretInteger($value) 
+    protected function _interpretInteger($value)
     {
         // they are _signed_ integers
         $value_parsed = 0;
@@ -1426,8 +1428,8 @@ class BasicIPP
         {
             $value_parsed +=
                 (
-                    (1 << (($i - 1) * 8)) 
-                        * 
+                    (1 << (($i - 1) * 8))
+                        *
                         ord($value[strlen($value) - $i])
                 );
         }
@@ -1438,14 +1440,14 @@ class BasicIPP
         return $value_parsed;
     }
 
-    protected function _parseResponse() 
+    protected function _parseResponse()
     {
     }
 
     //
     // REQUEST BUILDING
     //
-    protected function _stringJob() 
+    protected function _stringJob()
     {
         if (!isset($this->setup->charset)) {
             self::setCharset();
@@ -1453,7 +1455,7 @@ class BasicIPP
         if (!isset($this->setup->datatype)) {
             self::setBinary();
         }
-        if (!isset($this->setup->uri)) 
+        if (!isset($this->setup->uri))
         {
             $this->getPrinters();
             unset($this->jobs[count($this->jobs) - 1]);
@@ -1463,7 +1465,7 @@ class BasicIPP
             {
                 self::setPrinterURI($this->available_printers[0]);
             }
-            else 
+            else
             {
                 trigger_error(
                     _("_stringJob: Printer URI is not set: die"),
@@ -1523,7 +1525,7 @@ class BasicIPP
             . $this->meta->document_name
             . $this->meta->mime_media_type
             . $operationattributes;
-        if ($this->meta->copies || $this->meta->sides || $this->meta->page_ranges || !empty($jobattributes)) 
+        if ($this->meta->copies || $this->meta->sides || $this->meta->page_ranges || !empty($jobattributes))
         {
             $this->stringjob .=
                 chr(0x02) // start job-attributes | job-attributes-tag
@@ -1540,31 +1542,31 @@ class BasicIPP
         return TRUE;
     }
 
-    protected function _buildValues(&$operationattributes, &$jobattributes, &$printerattributes) 
+    protected function _buildValues(&$operationattributes, &$jobattributes, &$printerattributes)
     {
         $operationattributes = '';
-        foreach($this->operation_tags as $key => $values) 
+        foreach($this->operation_tags as $key => $values)
         {
             $item = 0;
             if (array_key_exists('value', $values))
             {
-                foreach($values['value'] as $item_value) 
+                foreach($values['value'] as $item_value)
                 {
                     if ($item == 0)
                     {
                         $operationattributes .=
-                            $values['systag'] 
-                                . self::_giveMeStringLength($key) 
-                                . $key 
-                                . self::_giveMeStringLength($item_value) 
+                            $values['systag']
+                                . self::_giveMeStringLength($key)
+                                . $key
+                                . self::_giveMeStringLength($item_value)
                                 . $item_value;
                     }
                     else
                     {
-                        $operationattributes .= 
-                            $values['systag'] 
-                                . self::_giveMeStringLength('') 
-                                . self::_giveMeStringLength($item_value) 
+                        $operationattributes .=
+                            $values['systag']
+                                . self::_giveMeStringLength('')
+                                . self::_giveMeStringLength($item_value)
                                 . $item_value;
                     }
                     $item++;
@@ -1572,17 +1574,17 @@ class BasicIPP
             }
         }
         $jobattributes = '';
-        foreach($this->job_tags as $key => $values) 
+        foreach($this->job_tags as $key => $values)
         {
             $item = 0;
-            if (array_key_exists('value', $values)) 
+            if (array_key_exists('value', $values))
             {
-                foreach($values['value'] as $item_value) 
+                foreach($values['value'] as $item_value)
                 {
                     if ($item == 0)
-                    { 
+                    {
                         $jobattributes .=
-                            $values['systag'] 
+                            $values['systag']
                                 . self::_giveMeStringLength($key)
                                 . $key
                                 . self::_giveMeStringLength($item_value)
@@ -1601,12 +1603,12 @@ class BasicIPP
             }
         }
         $printerattributes = '';
-        foreach($this->printer_tags as $key => $values) 
+        foreach($this->printer_tags as $key => $values)
         {
             $item = 0;
             if (array_key_exists('value', $values))
             {
-                foreach($values['value'] as $item_value) 
+                foreach($values['value'] as $item_value)
                 {
                     if ($item == 0)
                     {
@@ -1635,7 +1637,7 @@ class BasicIPP
         return true;
     }
 
-    protected function _giveMeStringLength($string) 
+    protected function _giveMeStringLength($string)
     {
         $length = strlen($string);
         if ($length > ((0xFF << 8) + 0xFF)  )
@@ -1660,12 +1662,12 @@ class BasicIPP
         return chr($int2) . chr($int1);
     }
 
-    protected function _enumBuild($tag, $value) 
+    protected function _enumBuild($tag, $value)
     {
-        switch ($tag) 
+        switch ($tag)
         {
             case "orientation-requested":
-                switch ($value) 
+                switch ($value)
                 {
                     case 'portrait':
                         $value = chr(3);
@@ -1686,7 +1688,7 @@ class BasicIPP
                 break;
 
             case "print-quality":
-                switch ($value) 
+                switch ($value)
                 {
                     case 'draft':
                         $value = chr(3);
@@ -1703,7 +1705,7 @@ class BasicIPP
                 break;
 
             case "finishing":
-                switch ($value) 
+                switch ($value)
                 {
                     case 'none':
                         $value = chr(3);
@@ -1791,9 +1793,9 @@ class BasicIPP
         return $prepend . $value;
     }
 
-    protected function _integerBuild($value) 
+    protected function _integerBuild($value)
     {
-        if ($value >= 2147483647 || $value < - 2147483648) 
+        if ($value >= 2147483647 || $value < - 2147483648)
         {
             trigger_error(
                 _("Values must be between -2147483648 and 2147483647: assuming '0'") , E_USER_WARNING);
@@ -1820,7 +1822,7 @@ class BasicIPP
         return $value;
     }
 
-    protected function _rangeOfIntegerBuild($integers) 
+    protected function _rangeOfIntegerBuild($integers)
     {
         #$integers = split(":", $integers);
         $integers = preg_split("#:#", $integers);
@@ -1830,11 +1832,11 @@ class BasicIPP
         return $outvalue[0] . $outvalue[1];
     }
 
-    protected function _setJobAttribute($attribute, $value) 
+    protected function _setJobAttribute($attribute, $value)
     {
         //used by setAttribute
         $tag_type = $this->job_tags[$attribute]['tag'];
-        switch ($tag_type) 
+        switch ($tag_type)
         {
             case 'integer':
                 $this->job_tags[$attribute]['value'][] = self::_integerBuild($value);
@@ -1889,11 +1891,11 @@ class BasicIPP
         $this->job_tags[$attribute]['systag'] = $this->tags_types[$tag_type]['tag'];
     }
 
-    protected function _setOperationAttribute($attribute, $value) 
+    protected function _setOperationAttribute($attribute, $value)
     {
         //used by setAttribute
         $tag_type = $this->operation_tags[$attribute]['tag'];
-        switch ($tag_type) 
+        switch ($tag_type)
         {
             case 'integer':
                 $this->operation_tags[$attribute]['value'][] = self::_integerBuild($value);
@@ -1914,11 +1916,11 @@ class BasicIPP
         $this->operation_tags[$attribute]['systag'] = $this->tags_types[$tag_type]['tag'];
     }
 
-    protected function _setPrinterAttribute($attribute, $value) 
+    protected function _setPrinterAttribute($attribute, $value)
     {
         //used by setAttribute
         $tag_type = $this->printer_tags[$attribute]['tag'];
-        switch ($tag_type) 
+        switch ($tag_type)
         {
             case 'integer':
                 $this->printer_tags[$attribute]['value'][] = self::_integerBuild($value);
@@ -1942,7 +1944,7 @@ class BasicIPP
     //
     // DEBUGGING
     //
-    protected function _putDebug($string, $level = 1) 
+    protected function _putDebug($string, $level = 1)
     {
         if ($level === false) {
             return;
@@ -1961,7 +1963,7 @@ class BasicIPP
     //
     // LOGGING
     //
-    protected function _errorLog($string_to_log, $level) 
+    protected function _errorLog($string_to_log, $level)
     {
         if ($level > $this->log_level) {
             return;
@@ -1969,7 +1971,7 @@ class BasicIPP
 
         $string = sprintf('%s : %s:%s user %s : %s', basename($_SERVER['PHP_SELF']) , $this->host, $this->port, $this->requesting_user, $string_to_log);
 
-        if ($this->log_type == 0) 
+        if ($this->log_type == 0)
         {
             error_log($string);
             return;
diff --git a/htdocs/index.php b/htdocs/index.php
index 61f3f274ecf8bc70ae89784c0130349a04f94273..8c37688c0f8a75d4a1bc39b4ff8ed675f562d013 100644
--- a/htdocs/index.php
+++ b/htdocs/index.php
@@ -1,7 +1,7 @@
 <?php
 /* Copyright (C) 2001-2004 Rodolphe Quiedeville	<rodolphe@quiedeville.org>
  * Copyright (C) 2004-2013 Laurent Destailleur	<eldy@users.sourceforge.net>
- * Copyright (C) 2005-2012 Regis Houssin	<regis.houssin@capnetworks.com>
+ * Copyright (C) 2005-2015 Regis Houssin	<regis.houssin@capnetworks.com>
  * Copyright (C) 2011-2012 Juanjo Menent	<jmenent@2byte.es>
  * Copyright (C) 2015      Marcos García        <marcosgdf@gmail.com>
  *
@@ -268,16 +268,16 @@ if (empty($user->societe_id))
 	            else $board=$boardloaded[$classe];
 
 	            $var=!$var;
-	            if ($langfile[$key]) $langs->load($langfile[$key]);
+	            if (!empty($langfile[$key])) $langs->load($langfile[$key]);
 	            $text=$langs->trans($titres[$key]);
-	            print '<div class="boxstats">';
 	            print '<a href="'.$links[$key].'" class="nobold nounderline">';
+	            print '<div class="boxstats">';
 	            print img_object("",$icons[$key]).' '.$text.'<br>';
-	            print '</a>';
-	            print '<a href="'.$links[$key].'">';
+	            //print '</a>';
+	            //print '<a href="'.$links[$key].'">';
 	            print $board->nb[$val];
-	            print '</a>';
 	            print '</div>';
+	            print '</a>';
 	        }
 	    }
     }
diff --git a/htdocs/install/mysql/data/llx_10_c_regions.sql b/htdocs/install/mysql/data/llx_10_c_regions.sql
index e16643843233110d1ba92b0b82999a5842ad3956..6ef8096d8b42caaa8f3de51afee9403ab9d5a3a9 100644
--- a/htdocs/install/mysql/data/llx_10_c_regions.sql
+++ b/htdocs/install/mysql/data/llx_10_c_regions.sql
@@ -39,7 +39,8 @@ insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values ( 1,
 insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values ( 1,   2,'97209',3,'Martinique');
 insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values ( 1,   3,'97302',3,'Guyane');
 insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values ( 1,   4,'97411',3,'Réunion');
-insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values ( 1,   6,'',3,'Mayotte');
+insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values ( 1,   6,'97601',3,'Mayotte');
+
 insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values ( 1,  11,'75056',1,'Île-de-France');
 insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values ( 1,  21,'51108',0,'Champagne-Ardenne');
 insert into llx_c_regions (fk_pays,code_region,cheflieu,tncc,nom) values ( 1,  22,'80021',0,'Picardie');
diff --git a/htdocs/install/mysql/data/llx_20_c_departements.sql b/htdocs/install/mysql/data/llx_20_c_departements.sql
index 116f95720527e3522ac2033bac0deae7e44d4534..bc727447abebff8af382e40e12e829e6c81a3bb4 100644
--- a/htdocs/install/mysql/data/llx_20_c_departements.sql
+++ b/htdocs/install/mysql/data/llx_20_c_departements.sql
@@ -35,6 +35,12 @@
 insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 0, '0',    '0',0,'-','-');
 
 -- Departements France (id country=1)
+insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 1,'971','97105',3,'GUADELOUPE','Guadeloupe');
+insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 2,'972','97209',3,'MARTINIQUE','Martinique');
+insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 3,'973','97302',3,'GUYANE','Guyane');
+insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 4,'974','97411',3,'REUNION','Réunion');
+insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 6,'976','97601',3,'MAYOTTE','Mayotte');
+
 insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values (82,'01','01053',5,'AIN','Ain');
 insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values (22,'02','02408',5,'AISNE','Aisne');
 insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values (83,'03','03190',5,'ALLIER','Allier');
@@ -131,11 +137,6 @@ insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,no
 insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values (11,'93','93008',3,'SEINE-SAINT-DENIS','Seine-Saint-Denis');
 insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values (11,'94','94028',2,'VAL-DE-MARNE','Val-de-Marne');
 insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values (11,'95','95500',2,'VAL-D OISE','Val-d Oise');
-insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 1,'971','97105',3,'GUADELOUPE','Guadeloupe');
-insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 2,'972','97209',3,'MARTINIQUE','Martinique');
-insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 3,'973','97302',3,'GUYANE','Guyane');
-insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 4,'974','97411',3,'REUNION','Réunion');
-insert into llx_c_departements (fk_region, code_departement,cheflieu,tncc,ncc,nom) values ( 6,'976','97601',3,'MAYOTTE','Mayotte');
 
 
 -- Provinces Belgium (id country=2)
diff --git a/htdocs/install/mysql/data/llx_c_forme_juridique.sql b/htdocs/install/mysql/data/llx_c_forme_juridique.sql
index a0e1e05886085539080db866c134bcc32383752f..750ca7de9306219b10d6f8a8396017d3b12209d4 100644
--- a/htdocs/install/mysql/data/llx_c_forme_juridique.sql
+++ b/htdocs/install/mysql/data/llx_c_forme_juridique.sql
@@ -73,7 +73,7 @@ insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'31','Perso
 insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'32','Personne morale de droit étranger, non immatriculée au RCS');
 insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'35','Régime auto-entrepreneur');
                                                                      
-insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'41','Établissement public ou régie à caractère industriel ou commercial');
+insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'41','Etablissement public ou régie à caractère industriel ou commercial');
                                                                      
 insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'51','Société coopérative commerciale particulière');
 insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'52','Société en nom collectif');
@@ -84,7 +84,7 @@ insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'56','Soci
 insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'57','Société par actions simplifiée (SAS)');
 insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'58','Entreprise Unipersonnelle à Responsabilité Limitée (EURL)');
 insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'59','Société par actions simplifiée unipersonnelle (SASU)');
-insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'60', 'Entreprise Individuelle à Responsabilité Limitée (EIRL)');
+insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'60','Entreprise Individuelle à Responsabilité Limitée (EIRL)');
 insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'61','Caisse d''épargne et de prévoyance');
 insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'62','Groupement d''intérêt économique (GIE)');
 insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'63','Société coopérative agricole');
@@ -94,7 +94,7 @@ insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'69','Perso
                                                                      
 insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'71','Administration de l état');
 insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'72','Collectivité territoriale');
-insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'73','Établissement public administratif');
+insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'73','Etablissement public administratif');
 insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'74','Personne morale de droit public administratif');
                                                                      
 insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'81','Organisme gérant régime de protection social à adhésion obligatoire');
diff --git a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql
index e73b716a654860099ac0b45117dd4c6487a8d7f5..dd0aba11632b67527e1397427907bebdc26b87f5 100755
--- a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql
+++ b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql
@@ -98,36 +98,36 @@ ALTER TABLE llx_accountingaccount add column fk_user_author integer DEFAULT NULL
 ALTER TABLE llx_accountingaccount add column fk_user_modif integer DEFAULT NULL AFTER fk_user_author;
 
 -- Qual
-UPDATE llx_const SET name = 'ACCOUNTING_MODE' WHERE name = 'COMPTA_MODE';
-UPDATE llx_const SET name = 'ACCOUNTING_ACCOUNT_CUSTOMER' WHERE name = 'COMPTA_ACCOUNT_CUSTOMER';
-UPDATE llx_const SET name = 'ACCOUNTING_ACCOUNT_SUPPLIER' WHERE name = 'COMPTA_ACCOUNT_SUPPLIER';
-UPDATE llx_const SET name = 'ACCOUNTING_PRODUCT_BUY_ACCOUNT' WHERE name = 'COMPTA_PRODUCT_BUY_ACCOUNT';
-UPDATE llx_const SET name = 'ACCOUNTING_PRODUCT_SOLD_ACCOUNT' WHERE name = 'COMPTA_PRODUCT_SOLD_ACCOUNT';
-UPDATE llx_const SET name = 'ACCOUNTING_SERVICE_BUY_ACCOUNT' WHERE name = 'COMPTA_SERVICE_BUY_ACCOUNT';
-UPDATE llx_const SET name = 'ACCOUNTING_SERVICE_SOLD_ACCOUNT' WHERE name = 'COMPTA_SERVICE_SOLD_ACCOUNT';
-UPDATE llx_const SET name = 'ACCOUNTING_VAT_ACCOUNT' WHERE name = 'COMPTA_VAT_ACCOUNT';
-UPDATE llx_const SET name = 'ACCOUNTING_VAT_BUY_ACCOUNT' WHERE name = 'COMPTA_VAT_BUY_ACCOUNT';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_MODE')__ WHERE __DECRYPT('name')__ = 'COMPTA_MODE';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_ACCOUNT_CUSTOMER')__ WHERE __DECRYPT('name')__ = 'COMPTA_ACCOUNT_CUSTOMER';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_ACCOUNT_SUPPLIER')__ WHERE __DECRYPT('name')__ = 'COMPTA_ACCOUNT_SUPPLIER';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_PRODUCT_BUY_ACCOUNT')__ WHERE __DECRYPT('name')__ = 'COMPTA_PRODUCT_BUY_ACCOUNT';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_PRODUCT_SOLD_ACCOUNT')__ WHERE __DECRYPT('name')__ = 'COMPTA_PRODUCT_SOLD_ACCOUNT';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_SERVICE_BUY_ACCOUNT')__ WHERE __DECRYPT('name')__ = 'COMPTA_SERVICE_BUY_ACCOUNT';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_SERVICE_SOLD_ACCOUNT')__ WHERE __DECRYPT('name')__ = 'COMPTA_SERVICE_SOLD_ACCOUNT';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_VAT_ACCOUNT')__ WHERE __DECRYPT('name')__ = 'COMPTA_VAT_ACCOUNT';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_VAT_BUY_ACCOUNT')__ WHERE __DECRYPT('name')__ = 'COMPTA_VAT_BUY_ACCOUNT';
 
 -- Compatibility with module Accounting Expert
-UPDATE llx_const SET name = 'ACCOUNTING_EXPORT_MODELCSV' WHERE name = 'ACCOUNTINGEX_MODELCSV';
-UPDATE llx_const SET name = 'ACCOUNTING_EXPORT_SEPARATORCSV' WHERE name = 'ACCOUNTINGEX_SEPARATORCSV';
-UPDATE llx_const SET name = 'ACCOUNTING_EXPORT_DATE' WHERE name = 'ACCOUNTINGEX_EXP_DATE';
-UPDATE llx_const SET name = 'ACCOUNTING_EXPORT_PIECE' WHERE name = 'ACCOUNTINGEX_EXP_PIECE';
-UPDATE llx_const SET name = 'ACCOUNTING_EXPORT_GLOBAL_ACCOUNT' WHERE name = 'ACCOUNTINGEX_EXP_GLOBAL_ACCOUNT';
-UPDATE llx_const SET name = 'ACCOUNTING_EXPORT_LABEL' WHERE name = 'ACCOUNTINGEX_EXP_LABEL';
-UPDATE llx_const SET name = 'ACCOUNTING_EXPORT_AMOUNT' WHERE name = 'ACCOUNTINGEX_EXP_AMOUNT';
-UPDATE llx_const SET name = 'ACCOUNTING_EXPORT_DEVISE' WHERE name = 'ACCOUNTINGEX_EXP_DEVISE';
-UPDATE llx_const SET name = 'ACCOUNTING_ACCOUNT_SUSPENSE' WHERE name = 'ACCOUNTINGEX_ACCOUNT_SUSPENSE';
-UPDATE llx_const SET name = 'ACCOUNTING_SELL_JOURNAL' WHERE name = 'ACCOUNTINGEX_SELL_JOURNAL';
-UPDATE llx_const SET name = 'ACCOUNTING_PURCHASE_JOURNAL' WHERE name = 'ACCOUNTINGEX_PURCHASE_JOURNAL';
-UPDATE llx_const SET name = 'ACCOUNTING_SOCIAL_JOURNAL' WHERE name = 'ACCOUNTINGEX_SOCIAL_JOURNAL';
-UPDATE llx_const SET name = 'ACCOUNTING_MISCELLANEOUS_JOURNAL' WHERE name = 'ACCOUNTINGEX_MISCELLANEOUS_JOURNAL';
-UPDATE llx_const SET name = 'ACCOUNTING_ACCOUNT_TRANSFER_CASH' WHERE name = 'ACCOUNTINGEX_ACCOUNT_TRANSFER_CASH';
-UPDATE llx_const SET name = 'ACCOUNTING_LENGTH_GACCOUNT' WHERE name = 'ACCOUNTINGEX_LENGTH_GACCOUNT';
-UPDATE llx_const SET name = 'ACCOUNTING_LENGTH_AACCOUNT' WHERE name = 'ACCOUNTINGEX_LENGTH_AACCOUNT';
-UPDATE llx_const SET name = 'ACCOUNTING_LIMIT_LIST_VENTILATION' WHERE name = 'ACCOUNTINGEX_LIMIT_LIST_VENTILATION';
-UPDATE llx_const SET name = 'ACCOUNTING_LIST_SORT_VENTILATION_TODO' WHERE name = 'ACCOUNTINGEX_LIST_SORT_VENTILATION_TODO';
-UPDATE llx_const SET name = 'ACCOUNTING_LIST_SORT_VENTILATION_DONE' WHERE name = 'ACCOUNTINGEX_LIST_SORT_VENTILATION_DONE';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_EXPORT_MODELCSV')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_MODELCSV';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_EXPORT_SEPARATORCSV')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_SEPARATORCSV';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_EXPORT_DATE')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_EXP_DATE';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_EXPORT_PIECE')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_EXP_PIECE';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_EXPORT_GLOBAL_ACCOUNT')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_EXP_GLOBAL_ACCOUNT';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_EXPORT_LABEL')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_EXP_LABEL';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_EXPORT_AMOUNT')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_EXP_AMOUNT';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_EXPORT_DEVISE')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_EXP_DEVISE';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_ACCOUNT_SUSPENSE')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_ACCOUNT_SUSPENSE';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_SELL_JOURNAL')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_SELL_JOURNAL';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_PURCHASE_JOURNAL')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_PURCHASE_JOURNAL';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_SOCIAL_JOURNAL')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_SOCIAL_JOURNAL';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_MISCELLANEOUS_JOURNAL')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_MISCELLANEOUS_JOURNAL';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_ACCOUNT_TRANSFER_CASH')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_ACCOUNT_TRANSFER_CASH';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_LENGTH_GACCOUNT')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_LENGTH_GACCOUNT';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_LENGTH_AACCOUNT')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_LENGTH_AACCOUNT';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_LIMIT_LIST_VENTILATION')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_LIMIT_LIST_VENTILATION';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_LIST_SORT_VENTILATION_TODO')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_LIST_SORT_VENTILATION_TODO';
+UPDATE llx_const SET name = __ENCRYPT('ACCOUNTING_LIST_SORT_VENTILATION_DONE')__ WHERE __DECRYPT('name')__ = 'ACCOUNTINGEX_LIST_SORT_VENTILATION_DONE';
 
 -- Drop old table
 DROP TABLE llx_compta;
@@ -208,10 +208,14 @@ UPDATE llx_product SET fk_barcode_type = NULL WHERE fk_barcode_type NOT IN (SELE
 ALTER TABLE  llx_product_price ADD INDEX idx_product_price_fk_user_author (fk_user_author);
 UPDATE llx_product_price set fk_user_author = null where fk_user_author = 0;
 UPDATE llx_product_price set fk_user_author = null where fk_user_author not in (select rowid from llx_user);
+-- drop foreign key for avoid a mysql crash
+ALTER TABLE  llx_product_price DROP FOREIGN KEY fk_product_price_user_author;
 ALTER TABLE  llx_product_price ADD CONSTRAINT fk_product_price_user_author FOREIGN KEY (fk_user_author) REFERENCES  llx_user (rowid);
 -- fk_product
 ALTER TABLE  llx_product_price ADD INDEX idx_product_price_fk_product (fk_product);
 DELETE from llx_product_price where fk_product NOT IN (SELECT rowid from llx_product);
+-- drop foreign key for avoid a mysql crash
+ALTER TABLE  llx_product_price DROP FOREIGN KEY fk_product_price_product;
 ALTER TABLE  llx_product_price ADD CONSTRAINT fk_product_price_product FOREIGN KEY (fk_product) REFERENCES  llx_product (rowid);
 
 ALTER TABLE llx_commande_fournisseur MODIFY COLUMN date_livraison datetime; 
@@ -1133,9 +1137,9 @@ ALTER TABLE llx_c_email_templates ADD UNIQUE INDEX uk_c_email_templates(entity,
 ALTER TABLE llx_c_email_templates ADD INDEX idx_type(type_template);
 
 -- Remove OSC module
-DELETE FROM llx_const WHERE name = 'MAIN_MODULE_BOUTIQUE';
-DELETE FROM llx_const WHERE name = 'OSC_DB_HOST';
-DELETE FROM llx_menu WHERE module = 'boutique';
+DELETE FROM llx_const WHERE __DECRYPT('name')__ = 'MAIN_MODULE_BOUTIQUE';
+DELETE FROM llx_const WHERE __DECRYPT('name')__ = 'OSC_DB_HOST';
+DELETE FROM llx_menu WHERE __DECRYPT('module')__ = 'boutique';
 
 -- Add option always editable on extrafield
 ALTER TABLE llx_extrafields ADD alwayseditable INTEGER DEFAULT 0 AFTER pos;
@@ -1181,4 +1185,5 @@ insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,localtax1,localtax1_typ
 
 ALTER TABLE llx_livraison MODIFY COLUMN date_delivery DATETIME NULL DEFAULT NULL;
 
-INSERT INTO llx_const (name, value, type, note, visible, entity) SELECT 'PRODUCT_USE_OLD_PATH_FOR_PHOTO','1','chaine','Use old path for products images',0,1 FROM llx_const WHERE name='MAIN_VERSION_LAST_INSTALL' AND value < '3.7.0';
+-- This constant is for compatibility if user come from 3.6 or lower. Must not be enabled on 3.7.0 or +
+INSERT INTO llx_const (name, value, type, note, visible, entity) SELECT __ENCRYPT('PRODUCT_USE_OLD_PATH_FOR_PHOTO')__,__ENCRYPT('1')__,'chaine','Use old path for products images',1,0 FROM llx_const WHERE __DECRYPT('name')__ = 'MAIN_VERSION_LAST_INSTALL' AND __DECRYPT('value')__ < '3.7.0'; 
diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql
index c44fa88c49cf1c1990a983bd5a8a12f1fa5d3ea3..1b3633c9ae543dfcee9928d88fcc98e3c2fe6d5a 100755
--- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql
+++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql
@@ -29,6 +29,11 @@ insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,localtax1,localtax1_typ
 -- Taiwan VAT Rates
 insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,note,active) values ( 2131, 213, '5', '0', 'VAT 5%', 1);
 
+ALTER TABLE llx_societe_rib ADD COLUMN rum varchar(32) after default_rib;
+ALTER TABLE llx_societe_rib ADD COLUMN frstrecur varchar(16) default 'FRST' after rum;
+
+ALTER TABLE llx_cronjob ADD COLUMN entity integer DEFAULT 0;
+ALTER TABLE llx_cronjob MODIFY COLUMN params text NULL;
 
 -- Loan
 create table llx_loan
@@ -123,7 +128,10 @@ ALTER TABLE llx_product_fournisseur_price ADD COLUMN fk_supplier_price_expressio
 ALTER TABLE llx_product ADD COLUMN fk_price_expression integer DEFAULT NULL;
 ALTER TABLE llx_product_price ADD COLUMN fk_price_expression integer DEFAULT NULL;
 
+ALTER TABLE llx_product ADD COLUMN fifo double(24,8) after pmp;
+ALTER TABLE llx_product ADD COLUMN lifo double(24,8) after fifo;
 
+  
 --create table for user conf of printing driver
 CREATE TABLE llx_printing
 (
@@ -149,12 +157,12 @@ ALTER TABLE llx_facturedet ADD COLUMN situation_percent real;
 ALTER TABLE llx_facturedet ADD COLUMN fk_prev_id integer;
 
 -- Convert SMTP config to main entity, so new entities don't get the old values
-UPDATE llx_const SET entity = 1 WHERE entity = 0 AND name = "MAIN_MAIL_SENDMODE";
-UPDATE llx_const SET entity = 1 WHERE entity = 0 AND name = "MAIN_MAIL_SMTP_PORT";
-UPDATE llx_const SET entity = 1 WHERE entity = 0 AND name = "MAIN_MAIL_SMTP_SERVER";
-UPDATE llx_const SET entity = 1 WHERE entity = 0 AND name = "MAIN_MAIL_SMTPS_ID";
-UPDATE llx_const SET entity = 1 WHERE entity = 0 AND name = "MAIN_MAIL_SMTPS_PW";
-UPDATE llx_const SET entity = 1 WHERE entity = 0 AND name = "MAIN_MAIL_EMAIL_TLS";
+UPDATE llx_const SET entity = __ENCRYPT('1')__ WHERE __DECRYPT('entity')__ = 0 AND __DECRYPT('name')__ = "MAIN_MAIL_SENDMODE";
+UPDATE llx_const SET entity = __ENCRYPT('1')__ WHERE __DECRYPT('entity')__ = 0 AND __DECRYPT('name')__ = "MAIN_MAIL_SMTP_PORT";
+UPDATE llx_const SET entity = __ENCRYPT('1')__ WHERE __DECRYPT('entity')__ = 0 AND __DECRYPT('name')__ = "MAIN_MAIL_SMTP_SERVER";
+UPDATE llx_const SET entity = __ENCRYPT('1')__ WHERE __DECRYPT('entity')__ = 0 AND __DECRYPT('name')__ = "MAIN_MAIL_SMTPS_ID";
+UPDATE llx_const SET entity = __ENCRYPT('1')__ WHERE __DECRYPT('entity')__ = 0 AND __DECRYPT('name')__ = "MAIN_MAIL_SMTPS_PW";
+UPDATE llx_const SET entity = __ENCRYPT('1')__ WHERE __DECRYPT('entity')__ = 0 AND __DECRYPT('name')__ = "MAIN_MAIL_EMAIL_TLS";
 
 
 create table llx_bank_account_extrafields
@@ -167,8 +175,10 @@ create table llx_bank_account_extrafields
 
 
 ALTER TABLE llx_stock_mouvement MODIFY COLUMN label varchar(255);
+ALTER TABLE llx_stock_mouvement MODIFY COLUMN price double(24,8) DEFAULT 0;
 ALTER TABLE llx_stock_mouvement ADD COLUMN inventorycode varchar(128);
 
+
 ALTER TABLE llx_product_association ADD COLUMN incdec integer DEFAULT 1;
 
 
@@ -637,12 +647,12 @@ ALTER TABLE llx_actioncomm ADD COLUMN email_sender varchar(256);
 ALTER TABLE llx_actioncomm ADD COLUMN email_to varchar(256);
 ALTER TABLE llx_actioncomm ADD COLUMN errors_to varchar(256);
 
--- Recuring events
+-- Recurring events
 ALTER TABLE llx_actioncomm ADD COLUMN recurid varchar(128);
 ALTER TABLE llx_actioncomm ADD COLUMN recurrule varchar(128);
 ALTER TABLE llx_actioncomm ADD COLUMN recurdateend datetime;
 
-ALTER TABLE llx_stcomm ADD COLUMN picto varchar(128);
+ALTER TABLE llx_c_stcomm ADD COLUMN picto varchar(128);
 
 -- New trigger for Supplier invoice unvalidation
 INSERT INTO llx_c_action_trigger (code, label, description, elementtype, rang) VALUES ('BILL_SUPPLIER_UNVALIDATE','Supplier invoice unvalidated','Executed when a supplier invoice status is set back to draft','invoice_supplier',15);
diff --git a/htdocs/install/mysql/tables/llx_actioncomm.sql b/htdocs/install/mysql/tables/llx_actioncomm.sql
index a555d37c84dc08130567a3314fa8b2c9d885a227..62eaae22e6f133778c8af8b489705b16fb3e5583 100644
--- a/htdocs/install/mysql/tables/llx_actioncomm.sql
+++ b/htdocs/install/mysql/tables/llx_actioncomm.sql
@@ -40,7 +40,8 @@ create table llx_actioncomm
   fk_soc			integer,
   fk_contact		integer,
   fk_parent			integer NOT NULL default 0,
-  fk_user_action	integer,						-- user id of owner of action (note that assigned users to event are store into another table) 
+  fk_user_action	integer,						-- user id of owner of action (note that assigned users to event are store into another table)
+  fk_user_done		integer,						-- user id of user that has made action (deprecated)
 
   transparency      integer,						-- transparency (ical standard). used to say if user assigned to event are busy or not by event. This field may be deprecated if we want to store transparency for each assigned user, so into table llx_actioncomm_resources.
 
diff --git a/htdocs/install/mysql/tables/llx_cronjob.sql b/htdocs/install/mysql/tables/llx_cronjob.sql
index a7ed4858024ab9793b417596068e0efac713d817..5580b5ab83099bac71d5ab6587223f41fdfc1d44 100644
--- a/htdocs/install/mysql/tables/llx_cronjob.sql
+++ b/htdocs/install/mysql/tables/llx_cronjob.sql
@@ -29,7 +29,7 @@ CREATE TABLE llx_cronjob
   	classesname 		varchar(255),
   	objectname		varchar(255),
   	methodename		varchar(255),
-  	params 			text NOT NULL,
+  	params 			text,
 	md5params 		varchar(32),
   	module_name 		varchar(255),
   	priority 		integer DEFAULT 0,
@@ -47,5 +47,6 @@ CREATE TABLE llx_cronjob
   	fk_user_author 		integer DEFAULT NULL,
   	fk_user_mod 		integer DEFAULT NULL,
 	note text,
-	libname			varchar(255)
+	libname			varchar(255),
+	entity			integer DEFAULT 0
 )ENGINE=innodb;
diff --git a/htdocs/install/mysql/tables/llx_product.sql b/htdocs/install/mysql/tables/llx_product.sql
index 5abbdcdde97bda340c19e1c72c9160a77309e451..22006040327e9d2a5719ec576a282dda6488b571 100755
--- a/htdocs/install/mysql/tables/llx_product.sql
+++ b/htdocs/install/mysql/tables/llx_product.sql
@@ -71,7 +71,9 @@ create table llx_product
   volume					float        DEFAULT NULL,
   volume_units				tinyint      DEFAULT NULL,
   stock						integer,						-- Current physical stock (dernormalized field)
-  pmp						double(24,8) DEFAULT 0 NOT NULL,
+  pmp						double(24,8) DEFAULT 0 NOT NULL,		-- To store valuation of stock calculated using average price method, for this product
+  fifo						double(24,8),							-- To store valuation of stock calculated using fifo method, for this product
+  lifo						double(24,8),							-- To store valuation of stock calculated using lifo method, for this product
   canvas					varchar(32)  DEFAULT NULL,
   finished					tinyint      DEFAULT NULL,
   hidden					tinyint      DEFAULT 0,			-- Not used. Deprecated.
diff --git a/htdocs/install/mysql/tables/llx_societe_rib.sql b/htdocs/install/mysql/tables/llx_societe_rib.sql
index 0500c32c74443a4ae94de1f75150af4fe988e0ae..3331da246967a18ce84565c9488fb57a40f07386 100644
--- a/htdocs/install/mysql/tables/llx_societe_rib.sql
+++ b/htdocs/install/mysql/tables/llx_societe_rib.sql
@@ -37,7 +37,9 @@ create table llx_societe_rib
   proprio        varchar(60),
   owner_address  varchar(255),
   default_rib    smallint NOT NULL DEFAULT 0,
-  import_key     varchar(14)    -- import key
-
+  
+  rum            varchar(32),	 				-- RUM value to use for SEPA generation
+  frstrecur      varchar(16) default 'FRST',  -- 'FRST' or 'RECUR'
 
+  import_key     varchar(14)    -- import key
 )ENGINE=innodb;
diff --git a/htdocs/install/mysql/tables/llx_stock_mouvement.sql b/htdocs/install/mysql/tables/llx_stock_mouvement.sql
index a367c6952c5a50e3e441572b669e82684247d515..3db9a4475cda39e7fac46be03d4423c9f2cff25b 100644
--- a/htdocs/install/mysql/tables/llx_stock_mouvement.sql
+++ b/htdocs/install/mysql/tables/llx_stock_mouvement.sql
@@ -1,6 +1,6 @@
 -- ============================================================================
--- Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
--- Copyright (C) 2009 Laurent Destailleur  <eldy@users.sourceofrge.net>
+-- Copyright (C) 2003      Rodolphe Quiedeville <rodolphe@quiedeville.org>
+-- Copyright (C) 2009-2015 Laurent Destailleur  <eldy@users.sourceofrge.net>
 --
 -- This program is free software; you can redistribute it and/or modify
 -- it under the terms of the GNU General Public License as published by
@@ -21,18 +21,18 @@ create table llx_stock_mouvement
 (
   rowid           integer AUTO_INCREMENT PRIMARY KEY,
   tms             timestamp,
-  datem           datetime,
-  fk_product      integer NOT NULL,
-  batch           varchar(30) DEFAULT NULL,
-  eatby           date DEFAULT NULL,
-  sellby          date DEFAULT NULL,
-  fk_entrepot     integer NOT NULL,
-  value           real,
-  price           float(13,4) DEFAULT 0,
-  type_mouvement  smallint,
-  fk_user_author  integer,
-  label           varchar(255),		-- comment on movement
-  inventorycode   varchar(128),		-- code used to group different movement line into one operation (may be an inventory, a mass picking)
+  datem           datetime,							-- Date and hour of movement
+  fk_product      integer NOT NULL,				-- Id of product
+  batch           varchar(30) DEFAULT NULL,		-- Lot or serial number
+  eatby           date DEFAULT NULL,				-- Eatby date
+  sellby          date DEFAULT NULL,				-- Sellby date
+  fk_entrepot     integer NOT NULL,				-- Id warehouse
+  value			  real,								-- Qty of movement
+  price           double(24,8) DEFAULT 0,			-- Entry price (used to calculate PMP, FIFO or LIFO value)
+  type_mouvement  smallint,						-- Type/Direction of movement
+  fk_user_author  integer,							-- Id user making movement
+  label           varchar(255),						-- Comment on movement
+  inventorycode   varchar(128),						-- Code used to group different movement line into one operation (may be an inventory, a mass picking)
   fk_origin       integer,
   origintype      varchar(32)
 )ENGINE=innodb;
diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php
index 70ebd8550c5da4416a186924d47c72f57ceab4e9..6f14791f6b48a16215d65069a3bc778f07bfb26e 100644
--- a/htdocs/install/upgrade2.php
+++ b/htdocs/install/upgrade2.php
@@ -363,7 +363,13 @@ if (! GETPOST("action") || preg_match('/upgrade/i',GETPOST('action')))
         if (versioncompare($versiontoarray,$afterversionarray) >= 0 && versioncompare($versiontoarray,$beforeversionarray) <= 0)
         {
        	    migrate_event_assignement($db,$langs,$conf);
-
+        }
+        
+        // Scripts for lat version
+        $afterversionarray=explode('.','3.7.9');
+        $beforeversionarray=explode('.','3.8.9');
+        if (versioncompare($versiontoarray,$afterversionarray) >= 0 && versioncompare($versiontoarray,$beforeversionarray) <= 0)
+        {
         	// Reload modules (this must be always and only into last targeted version)
 			$listofmodule=array(
 				    	'MAIN_MODULE_AGENDA',
@@ -3680,7 +3686,7 @@ function migrate_delete_old_files($db,$langs,$conf)
                 print ' '.$langs->trans("RemoveItManuallyAndPressF5ToContinue").'</div>';
             }
             else
-            {
+			{
                 //print $langs->trans("FileWasRemoved",$filetodelete);
             }
         }
@@ -3818,8 +3824,9 @@ function migrate_reload_modules($db,$langs,$conf,$listofmodule=array())
 	    if ($moduletoreload == 'MAIN_MODULE_SERVICE')    // Permission has changed into 2.7
 	    {
 	        dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Service");
+	        
+	        $res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modService.class.php';
 	        if ($res) {
-	            $res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modService.class.php';
 	            $mod=new modService($db);
 	            //$mod->remove('noboxes');
 	            $mod->init('newboxdefonly');
@@ -3828,8 +3835,9 @@ function migrate_reload_modules($db,$langs,$conf,$listofmodule=array())
 	    if ($moduletoreload == 'MAIN_MODULE_COMMANDE')   // Permission has changed into 2.9
 	    {
 	        dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Commande");
+	        
+	        $res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modCommande.class.php';
 	        if ($res) {
-	            $res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modCommande.class.php';
 	            $mod=new modCommande($db);
 	            //$mod->remove('noboxes');
 	            $mod->init('newboxdefonly');
@@ -3838,8 +3846,8 @@ function migrate_reload_modules($db,$langs,$conf,$listofmodule=array())
 	    if ($moduletoreload == 'MAIN_MODULE_FACTURE')    // Permission has changed into 2.9
 	    {
 	        dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Facture");
+	        $res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modFacture.class.php';
 	        if ($res) {
-	            $res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modFacture.class.php';
 	            $mod=new modFacture($db);
 	            //$mod->remove('noboxes');
 	            $mod->init('newboxdefonly');
@@ -3878,8 +3886,8 @@ function migrate_reload_modules($db,$langs,$conf,$listofmodule=array())
 	    if ($moduletoreload == 'MAIN_MODULE_ECM')    // Permission has changed into 3.0 and 3.1
 	    {
 	        dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module ECM");
+	        $res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modECM.class.php';
 	        if ($res) {
-	            $res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modECM.class.php';
 	            $mod=new modECM($db);
 	            $mod->remove('noboxes');	// We need to remove because a permission id has been removed
 	            $mod->init('newboxdefonly');
diff --git a/htdocs/langs/ar_SA/admin.lang b/htdocs/langs/ar_SA/admin.lang
index d0a43020f135b63b8d46bd51e28bd3d8fcbdbf35..f4954f84fc2e32ffd9b94b73262d56156dcaf712 100644
--- a/htdocs/langs/ar_SA/admin.lang
+++ b/htdocs/langs/ar_SA/admin.lang
@@ -1,175 +1,175 @@
 # Dolibarr language file - Source file is en_US - admin
-Foundation=أساس
-Version=النسخة
-VersionProgram=نسخة البرنامج
+Foundation=جمعية
+Version=إصدار
+VersionProgram=إصدار البرنامج
 VersionLastInstall=تثبيت الإصدار الأولي
-VersionLastUpgrade=آخر تحديث لهذه النسخة
-VersionExperimental=تجريبية
-VersionDevelopment=تطويرية
-VersionUnknown=غير معروفة
-VersionRecommanded=موصى بها
-FileCheck=Files Integrity
-FilesMissing=Missing Files
-FilesUpdated=Updated Files
-FileCheckDolibarr=Check Dolibarr Files Integrity
-XmlNotFound=Xml File of Dolibarr Integrity Not Found
-SessionId=رمز المرحلة
-SessionSaveHandler=معالج لحفظ المراحل
-SessionSavePath=مرحلة التخزين المحلية
-PurgeSessions=إزالة المراحل
-ConfirmPurgeSessions=Do you really want to purge all sessions ? This will disconnect every user (except yourself).
-NoSessionListWithThisHandler=معالج حفظ المرحلة المهيأ في لغة البي إتش بي لا يسمح بسرد كل المراحل التي تعمل
+VersionLastUpgrade=آخر تحديث لهذا الإصدار
+VersionExperimental=إصدار تجريبي
+VersionDevelopment=إصدارتطويري
+VersionUnknown=إصدار غير معروف
+VersionRecommanded=إصدار موصى به
+FileCheck=تكامل الملفات
+FilesMissing=الملفات المفقودة
+FilesUpdated=الملفات المحدثة
+FileCheckDolibarr=التحقق من تكامل الملفات
+XmlNotFound= لم يتم العثور على الملف اكس أمال لدوليبار 
+SessionId=معرف الجلسة
+SessionSaveHandler=مدير لحفظ الجلسات
+SessionSavePath= موقع حفظ الجلسات
+PurgeSessions=إزالة الجلسات
+ConfirmPurgeSessions=هل تريد حقا تطهير جميع الجلسات؟ وهذا بفصل كل مستخدم (باستثناء نفسك).
+NoSessionListWithThisHandler=مدير حفظ الجلسة المهيأ في لغة البي إتش بي لا يسمح بسرد كل الجلسات الجارية
 LockNewSessions=قم بإقفال الإتصالات الجديدة
-ConfirmLockNewSessions=هل أنت متأكد من أنك تريد تقييد أي اتصال جديدة من دوليبار لنفسك. <b>%s</b> المستخدم الوحيد الذي سيتمكن من الإتصال بعد هذه العملية.
-UnlockNewSessions=إزالة قفل الإتصال
-YourSession=المرحلة الخاصة بك
-Sessions=مرحلة المستخدمين
+ConfirmLockNewSessions=هل أنت متأكد من أنك تريد تقييد أي اتصال جديد من دوليبار لشخصك. <b>%s</b> المستخدم الوحيد الذي سيتمكن من الإتصال بعد هذه العملية.
+UnlockNewSessions=إزالة قفل الإتصالات
+YourSession=الجلسة الخاصة بك
+Sessions=جلسات المستخدمين
 WebUserGroup=خادم الويب المستخدم / المجموعة
-NoSessionFound=يبدو أن البي إتش بي الخاص بك لا يسمح بسرد كل المراحل النشطة. الدليل  (<b>%s</b>) المستخدم لحفظ المراحل قد يكون محمي (على سبيل المثال, محمي من قبل نظام الحماية الخاص ببرنامج التشغيل او لغة البي إتش بي.)
-HTMLCharset=الترميزات الخاصة بصفحة الإتش تي إم إل
+NoSessionFound=يبدو أن البي إتش بي الخاص بك لا يسمح بإعداد قائمة الجلسات النشطة.قد يكون الدليل (<b>%s</b>) المستخدم لحفظ الجلسات محمي (محمي من قبل نظام الحماية الخاص ببرنامج التشغيل او لغة البي إتش بي, على سبيل المثال.)
+HTMLCharset=الترميزات الخاصة بصفحات الإتش تي إم إل
 DBStoringCharset=الترميز الخاص بقاعدة البيانات لتخزين المعلومات
-DBSortingCharset=الترميز الخاص بقاعدة البيانات لتخزين المعلومات
-WarningModuleNotActive=يجب أن يكون النموذج <b>%s</b> مفعل
-WarningOnlyPermissionOfActivatedModules=فقط التصاريح المتعلقة بالنماذج المنشطة تظهر هنا. يمكنك تفعيل نماذج أخرى في الصفحة الرئيسية-> لإعداد ت-> صفحة النماذج
-DolibarrSetup=تركيب أو تطوير دوليبار
+DBSortingCharset=الترميز الخاص بقاعدة البيانات لفرز المعلومات
+WarningModuleNotActive=يجب أن تكون الوحدة <b>%s</b> مفعلة لإستعمال هذه الوظيفة
+WarningOnlyPermissionOfActivatedModules=حذاري،فقط التصاريح المتعلقة بالوحدات المنشطة تظهر هنا. يمكنك تفعيل وحدات أخرى في الصفحة الرئيسية-> الإعداد ت-> صفحة الوحدات
+DolibarrSetup=تثبيت أو تطوير دوليبار
 DolibarrUser=مستخدم دوليبار
 InternalUser=مستخدم داخلي
 ExternalUser=مستخدم خارجي
 InternalUsers=مستخدمين داخليين
 ExternalUsers=مستخدمين خارجيين
-GlobalSetup=الإعداد الكلية
+GlobalSetup=الإعداد الكلي
 GUISetup=العرض
 SetupArea=منطقة الإعداد
-FormToTestFileUploadForm=نموذج لاختبار تحميل ملف (وفقا لبرنامج الإعداد)
-IfModuleEnabled=ملاحظة : نعم فعالة فقط في حال كان النموذج <b>%s</b> مفعل
-RemoveLock=قم بحذف الملف <b>%s</b> إذا كان موجوداً لتمكن اداة التحديث
+FormToTestFileUploadForm=وحدة لاختبار تحميل ملف (وفقا لبرنامج الإعداد)
+IfModuleEnabled=ملاحظة : نعم فعال فقط في حال كانت الوحدة <b>%s</b> مفعلة
+RemoveLock=قم بحذف الملف <b>%s</b> إذا كان موجوداً لتمكين اداة التحديث
 RestoreLock=قم بإستعادة الملف <b>%s</b> مع إذن القراءة فقط, وذلك لعرض أي استخدام خاص ب أداة التحديث
 SecuritySetup=الإعداد الأمني
-ErrorModuleRequirePHPVersion=خطأ ، هذا النموذج يتطلب نسخة بي إتش بي %s أو أعلى
-ErrorModuleRequireDolibarrVersion=خطأ ، هذا النموذج يتطلب نسخة دوليبار %s أو أعلى
-ErrorDecimalLargerThanAreForbidden=خطأ, برنامج دوليبار <b>%s</b> الحالي لا يدعم دقة أعلى من الحالية
-DictionarySetup=Dictionary setup
-Dictionary=Dictionaries
-Chartofaccounts=Chart of accounts
-Fiscalyear=Fiscal years
-ErrorReservedTypeSystemSystemAuto=القيمة 'system' و 'systemauto' لهذا النوع محفوظ. يمكنك إستخدام 'user' كقيمة لإضافة السجل الخاص بك
+ErrorModuleRequirePHPVersion=خطأ ، هذا الوحدة يتطلب نسخة بي إتش بي %s أو أعلى
+ErrorModuleRequireDolibarrVersion=خطأ ، هذه الوحدة تتطلب إصدار دوليبار %s أو أعلى
+ErrorDecimalLargerThanAreForbidden=خطأ, برنامج دوليبار الحالي لا يدعم دقة أعلى من <b>%s</b> 
+DictionarySetup=إعداد القواميس
+Dictionary=القواميس
+Chartofaccounts=الحسابات
+Fiscalyear=السنة المالية
+ErrorReservedTypeSystemSystemAuto=القيم 'system' و 'systemauto' لهذا النوع مخصص. يمكنك إستخدام 'user' كقيمة لإضافة التسجيلاتك الخاصة بك
 ErrorCodeCantContainZero=لا يمكن إستخدام القيمة 0 لهذا الكود
-DisableJavascript=Disable JavaScript and Ajax functions (Recommended for blind person or text browsers)
-ConfirmAjax=إستخدم تأكيد أجاكس المنبثق
-UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
-UseSearchToSelectCompany=Use autocompletion fields to choose third parties instead of using a list box.
-ActivityStateToSelectCompany= أضف فلتر كخيار لعرض/إخفاء الجهات الأخرى التي تقوم بنشاط حالياً أو توقفت عنه
-UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
-UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box).
-DelaiedFullListToSelectCompany=Wait you press a key before loading content of thirdparties combo list (This may increase performance if you have a large number of thirdparties)
-DelaiedFullListToSelectContact=Wait you press a key before loading content of contact combo list (This may increase performance if you have a large number of contact)
-SearchFilter=فلاتر خيارات البحث
+DisableJavascript=تعطيل وظائف جافا سكريبت واياكس  (مستحسن للشخص الاعمى أو  لمتصفحات النصوص)
+ConfirmAjax=إستخدام نوافذ تأكيد أجاكس 
+UseSearchToSelectCompanyTooltipp=إذا كان لديك عدد كبير من الأجزاء الثالثة (> 100000)، يمكنك زيادة السرعة من خلال وضع الثابت COMPANY_DONOTSEARCH_ANYWHERE  إلى 1. في إعداد->أخرى. وبعد ذلك يقتصر البحث على بداية السلسلة.
+UseSearchToSelectCompany=استخدام حقول التكملة لاختيار الأطراف الثالثة بدلا من استخدام list boxes
+ActivityStateToSelectCompany= إضافة خيار للتصفية عند البحث لإظهار / إخفاء الأطراف  الثالثة في الخدمة أو التي توقفت عن الخدمة 
+ UseSearchToSelectContactTooltip=إذا كان لديك عدد كبير من الأجزاء الثالثة (> 100000)، يمكنك زيادة السرعة من خلال وضع الثابت COMPANY_DONOTSEARCH_ANYWHERE  إلى 1.
+UseSearchToSelectContact=استخدام حقول التكملة لاختيار الأطراف الثالثة بدلا من استخدام list boxes
+DelaiedFullListToSelectCompany=الانتظار حتى الضغط على مفتاح قبل تحميل محتويات قائمة الاطراف الثالثة (يمكن هذا أن يزيد من الأداء إذا كان لديك عدد كبير من الاطراف الثالثة)
+DelaiedFullListToSelectContact=الانتظار حتى الضغط على مفتاح قبل تحميل محتويات قائمة جهات الاتصال (يمكن هذا أن يزيد من الأداء إذا كان لديك عدد كبير من جهات الاتصال)
+SearchFilter=خيارات عوامل تصفية البحث
 NumberOfKeyToSearch=عدد الحروف لبدء البحث: %s
-ViewFullDateActions=أظهر التواريخ الكاملة للأحداث في الصفحة الثالثة
+ViewFullDateActions=أظهر التواريخ الكاملة للأحداث في صفحة الاطراف الثالثة
 NotAvailableWhenAjaxDisabled=غير متوفر عندما يكون أجاكس معطلاً
 JavascriptDisabled=الجافا سكربت معطل
 UsePopupCalendar=استخدام الصفحات المنبثقة لإدخال التواريخ
 UsePreviewTabs=إستخدم زر المعاينة
 ShowPreview=آظهر المعاينة
-PreviewNotAvailable=المعاينة غير متاحة
-ThemeCurrentlyActive=الثيم النشط حالياً
+PreviewNotAvailable=المعاينة غير جاهزة
+ThemeCurrentlyActive=الثيم الناشط حالياً
 CurrentTimeZone=حسب توقيت خادم البي إتش بي
-MySQLTimeZone=TimeZone MySql (database)
-TZHasNoEffect=Dates are stored and returned by database server as if they were kept as submited string. The timezone has effect only when using UNIX_TIMESTAMP function (that should not be used by Dolibarr, so database TZ should have no effect, even if changed after data was entered).
+MySQLTimeZone=حسب توقيت خادم MySql
+TZHasNoEffect=يتم تخزين التواريخ و إعادتها من قبل خادم قاعدة البيانات كما لو كانت مخزنة كسلسلة. المنطقة الزمنية هي فعالة فقط عند استخدام وظيفة UNIX_TIMESTAMP (التي لا ينبغي أن تستخدم من قبل Dolibarr، لذلك لا يجب أن يكون أي تأثير للمنطقة الزمنية لقاعدة البيانات، حتى و لو تغيرت بعد أن تم إدخال البيانات )
 Space=فراغ
 Table=جدول
 Fields=حقول
 Index=الفهرس
 Mask=القناع
-NextValue=قيمة التالية
+NextValue=القيمة التالية
 NextValueForInvoices=القيمة التالية (الفواتير)
 NextValueForCreditNotes=القيمة التالية (ملاحظات دائن)
-NextValueForDeposit=Next value (deposit)
-NextValueForReplacements=Next value (replacements)
-MustBeLowerThanPHPLimit=ملاحظة : البي إتش بي الخاص بك يحد من حجم الملفات المرفوعة <b>%s</b> %s, مهما كان الحجم المدخل
+NextValueForDeposit=القيمة التالية (المدفوعات)
+NextValueForReplacements=القيمة التالية (فواتير الاستبدال)
+MustBeLowerThanPHPLimit=ملاحظة : البي إتش بي الخاص بك يحدد من حجم الملفات المرسلة <b>%s</b> %s,مهما كانت قيمة هذه المعلمة
 NoMaxSizeByPHPLimit=ملاحظة : لم يتم وضح حد في إعدادات الـ PHP الخاص بك
 MaxSizeForUploadedFiles=الحجم الأقصى لتحميل الملفات (0 لمنع أي تحميل)
-UseCaptchaCode=إستخدم الرسوم كرمز (كابتشا) في صفحة الدخول
+UseCaptchaCode=إستخدم رسوم (كابتشا) في صفحة الدخول
 UseAvToScanUploadedFiles=استخدام مضاد الفيروسات لفحص الملفات المحملة
 AntiVirusCommand= المسار الكامل لبرنامج مكافحة الفيروسات
-AntiVirusCommandExample= مثل ل ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe
-AntiVirusParam= المزيد من الصلاحيات بإستخدام command line
-AntiVirusParamExample= مثال على ClamWin:--database="C:\\Program Files (x86)\\ClamWin\\lib"
-ComptaSetup=نموذج وحدة المحاسبة
-UserSetup=إعداد مستخدم الإدارة
-MenuSetup=إعداد قائمة الإدارة
+AntiVirusCommandExample=كلاموين على سبيل المثال : "c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Exemple pour ClamAv : /usr/bin/clamscan"
+AntiVirusParam= المزيد من الصلاحيات بإستخدام سطر الأوامر
+AntiVirusParamExample=كلاموين على سبيل المثال :"--database="C:\\Program Files (x86)\\ClamWin\\lib"
+ComptaSetup=إعداد وحدة المحاسبة
+UserSetup=إعداد إدارة المستخدمين
+MenuSetup=إعداد إدارة  القوائم 
 MenuLimits=الحدود و الدقة
-MenuIdParent=رمز القائمة العليا
-DetailMenuIdParent=رمز القائمة العليا (فراغ للقائمة العليا)
-DetailPosition=رتب الرقم لتعريف موقع القائمة
+MenuIdParent=معرف القائمة الوَالِدَةٌ
+DetailMenuIdParent=معرف القائمة الوَالِدَةٌ (فراغ لقائمة عليا)
+DetailPosition=رقم الترتيب لتعريف الموقع في القائمة
 PersonalizedMenusNotSupported=القوائم الشخصية غير مدعومة
 AllMenus=الكل
-NotConfigured=النموذج غير مهيء
-Setup=الإعداد
-Activation=التفعيل
+NotConfigured=وحدة غير مهيئة
+Setup=إعداد
+Activation=تفعيل
 Active=نشطة
-SetupShort=الإعداد
-OtherOptions=الخيارات الأخرى
-OtherSetup=الإعدادات الأخرى
+SetupShort=إعداد
+OtherOptions=خيارات الأخرى
+OtherSetup=إعدادات الأخرى
 CurrentValueSeparatorDecimal=الفاصلة العشرية
 CurrentValueSeparatorThousand=ألفاصلة الألفية
-Destination=Destination
-IdModule=Module ID
-IdPermissions=Permissions ID
-Modules=النموذج
-ModulesCommon=النماذج الرئيسية
-ModulesOther=نماذج أخرى
-ModulesInterfaces=واجهة النماذج
-ModulesSpecial=نماذج محددة للغاية
-ParameterInDolibarr=الوحدة %s
-LanguageParameter=وحدة اللغة %s
-LanguageBrowserParameter=الوحدة %s
-LocalisationDolibarrParameters=الوحدات المحلية
-ClientTZ=Client Time Zone (user)
-ClientHour=Client time (user)
-OSTZ=Server OS Time Zone
-PHPTZ=المنطقة الزمنية خادم PHP
-PHPServerOffsetWithGreenwich=عرض وزنية جرينتش لخادم لغة الـ PHP (ثانية)
-ClientOffsetWithGreenwich=عرض وزنية الجرينتش للعميل / المتصفح (ثانية)
+Destination=المقصد
+IdModule=معرف الوحدة
+IdPermissions=معرف التصريح
+Modules=الوحدات
+ModulesCommon=الوحدات الرئيسية
+ModulesOther=وحدات أخرى
+ModulesInterfaces=واجهة الوحدات
+ModulesSpecial=وحدات محددة الغاية
+ParameterInDolibarr=المتغيرة %s
+LanguageParameter=متغيرة اللغة %s
+LanguageBrowserParameter=المتغيرة %s
+LocalisationDolibarrParameters=متغيرات تحديد الموقع
+ClientTZ=توقيت الزبون (المستخدم)
+ClientHour=ساعة الزبون (المستخدم)
+OSTZ=توقيت نظام التشغيل
+PHPTZ=المنطقة الزمنية لخادم PHP
+PHPServerOffsetWithGreenwich=فارق الزمن بين خط جرينتش و خادم الـ PHP (ثانية)
+ClientOffsetWithGreenwich=فارق الزمن بين خط الجرينتش و العميل / المتصفح (ثانية)
 DaylingSavingTime=التوقيت الصيفي
-CurrentHour=PHP خادم ساعة
-CompanyTZ=المنطقة الزمنية لشركة من الشركات الرئيسية)
-CompanyHour=ساعة وشركة من الشركات الرئيسية)
-CurrentSessionTimeOut=إنتها مدة التصفح الحالية
-YouCanEditPHPTZ=To set a different PHP timezone (not required), you can try to add a file .htacces with a line like this "SetEnv TZ Europe/Paris"
+CurrentHour=ساعة خادم الـ PHP 
+CompanyTZ=المنطقة الزمنية للشركة الرئيسية
+CompanyHour=ساعةالشركة الرئيسية
+CurrentSessionTimeOut=مهلة مدة الجلسة الحالية
+YouCanEditPHPTZ=لضبط منطقة زمنية أخرى لل PHP (غير ضروري)، يمكنك محاولة إضافة ملف  .htaccess مع خط مثل "SetEnv TZ Europe/Paris"
 OSEnv=بيئة نظام التشغيل
-Box=مربع
-Boxes=مربعات
-MaxNbOfLinesForBoxes=الحد الأقصى لعدد الخطوط في المربعات
-PositionByDefault=الطلبية الإفتراضية
-Position=Position
-MenusDesc=يمكن لرؤساء القوائم تعريف المحتوى لعمودين من القوائم (عمود افقي وعمود عمودي).
-MenusEditorDesc=محرر القوائم يسمح لك بتعريف مدخلات شخصية في القوائم. استخدامها بعناية لتجنب التأثير على برنامج دوليبار وجعله غير مستقر بالإضافة إلى جعل روابط القوائم غير متاحة. <br> بعض النماذج تظيف خانات في القوائم (في القائمة <b>الكل</b> في معظم الحالات). إذا أزلت بعض هذه القيود عن طريق الخطأ ، يمكنك ان تستعيدها وتعطيل وتمكين النموذج.
+Box=صندوق
+Boxes=صناديق
+MaxNbOfLinesForBoxes=الحد الأقصى لعدد الخطوط في الصناديق
+PositionByDefault=الموقع الإفتراضي
+Position=الموقع
+MenusDesc=مديري القوائم يحددون محتويات اثنين من أشرطة القوائم ( الشريط  الأفقي و العمودي). فمن الممكن تعيين مدير مختلف اعتمادا على إذا ما كان المستخدم داخلي أو خارجي.
+MenusEditorDesc=محرري القوائم يسمحون لك بتعريف مدخلات شخصية في القوائم. يجب استخدامها بعناية لتجنب التأثير على برنامج دوليبار وجعله غير مستقر بالإضافة إلى جعل روابط القوائم غير متاحة. <br> بعض الوحدات تظيف خانات في القوائم (في القائمة <b>الكل</b> في معظم الحالات). إذا أزلت بعض هذه القيود عن طريق الخطأ ، يمكنك ان تستعيدها بتعطيل وتمكين الوحدة.
 MenuForUsers=قائمة للمستخدمين
-LangFile=ملف لانج
-System=النظام
-SystemInfo=نظام المعلومات
+LangFile=ملف .lang
+System=نظام
+SystemInfo=معلومات النظام
 SystemTools=أدوات النظام
 SystemToolsArea=منظقة أدوات نظام
-SystemToolsAreaDesc=هذه المنقة توفر مميزات إدارية. استخدام القائمة لاختيار الخصائص التي تبحث عنها.
-Purge=أحذف
-PurgeAreaDesc=تسمح لك هذه الصفحة بحذف كل الملفات التي بنيت أو تم تخزينها بواسطة دوليبار (الملفات المؤقتة ، أو كافة الملفات في المجلد <b>%s</b>) استخدام هذه الميزة ليست ضرورية. هذه الخدمة مقدمة للمستخدمين الذين يستخدمون برنامج دوليبار على خادم لا يوف لهم صلاحيات حذف الملفات التي أنشئت من قبل خادم الويب.
-PurgeDeleteLogFile=قم بحذف ملفات السجلات <b>%s</b> المعرفة لنموذج النظام (لا يوجد خطر على المعلومات)
-PurgeDeleteTemporaryFiles=قم بحذف جميع الملفات المؤقتة (لا يوجد خطر على البيانات)
-PurgeDeleteAllFilesInDocumentsDir=حذف كل الملفات في المجلد <b>%s</b> الملفات المؤقتة ، بل أيضا ملفات استرجاع قاعدة البيانات, الملفات الملحقة بعناصر (أطراف ثالثة أو خارجية ، فواتير...) وتم تحمليها في نموذج إي سي إم, سيتم حذفها
+SystemToolsAreaDesc=هذه المنظقة توفر مميزات إدارية. استخدام القائمة لاختيار الخصائص التي تبحث عنها.
+Purge=حذف
+PurgeAreaDesc=تسمح لك هذه الصفحة بحذف كل الملفات التي بنيت أو تم تخزينها بواسطة دوليبار (ملفات المؤقتة ،أو كافة الملفات في المجلد <b>%s</b>) استخدام هذه الميزة ليست ضرورية. هذه الخدمة مقدمة للمستخدمين الذين يستخدمون برنامج دوليبار على خادم لا يوفر لهم صلاحيات حذف الملفات التي أنشئت من قبل خادم الويب.
+PurgeDeleteLogFile=حأذف الجريدة <b>%s</b> المعرفة لوحدة 'تسجيلات وآثار' (لا يوجد خطر على المعلومات)
+PurgeDeleteTemporaryFiles=أحذف جميع الملفات المؤقتة (لا يوجد خطر على البيانات)
+PurgeDeleteAllFilesInDocumentsDir=أحذف كل الملفات في المجلد <b>%s</b>. الملفات المؤقتة ، و أيضا ملفات استرجاع قاعدة البيانات, الملفات الملحقة بعناصر (الأطراف ثالالثة أو الخارجية ، الفواتير...) وتم تحمليها في وحدة إي ذي إم, سيتم حذفها
 PurgeRunNow=إحذف الآن
-PurgeNothingToDelete=لم يتم حذف مجلد او ملف
+PurgeNothingToDelete=لا دليل أو ملف للحذف.
 PurgeNDirectoriesDeleted=<b>%s</b> ملفات او مجلدات حذفت
-PurgeAuditEvents=احذف جميع الأحداث المتعلقة بالأمان
+PurgeAuditEvents=احذف جميع الأحداث المتعلقة بالأمن
 ConfirmPurgeAuditEvents=هل أنت متأكد من حذف جميع الأحداث الأمنية؟ جميع سجلات الأمن سيتم حذفها ولن يتم حذف أي بيانات أخرى.
 NewBackup=نسخة احتياطية جديدة
 GenerateBackup=قم بإنشاء نسخة احتياطية
 Backup=نسخة احتياطية
 Restore=استعادة
-RunCommandSummary=تم إطلاق عملية النسخة الإحتياطية بالأمر التالي
+RunCommandSummary=تتم إطلاق عملية النسخة الإحتياطية بالأمر التالي
 RunCommandSummaryToLaunch=يمكن إطلاق عمل النسخة الإحتياطية بالأمر التالي
 WebServerMustHavePermissionForCommand=يجب أن يحتوي خادم الويب على صلاحيات لتشغيل مثل هذا الأمر
-BackupResult=نتيجة للنسخة الإحتياطية
+BackupResult=نتيجة النسخة الإحتياطية
 BackupFileSuccessfullyCreated=تم إنشاء ملف النسخة الاحتياطية بنجاح
 YouCanDownloadBackupFile=يمكن الآن تنزيل ملف النسخة الإحتياطية
 NoBackupFileAvailable=لا يوجد ملفات احتياطية.
@@ -177,426 +177,427 @@ ExportMethod=طريقة التصدير
 ImportMethod=طريقة الاستيراد
 ToBuildBackupFileClickHere=لعمل نسخة إحتياطية, اضغط <a href="%s">هنا</a>.
 ImportMySqlDesc=لاستيراد ملف النسخة الاحتياطية ، يجب استخدام mysql نافذة الأوامر للدوز او اللاينكس :
-ImportPostgreSqlDesc=لاستيراد ملف النسخة الاحتياطية ، يجب استخدام pg_restore من نافذة الأوامر للدوز او اللاينكس :
+ImportPostgreSqlDesc=لاستيراد ملف النسخة الاحتياطية ، يجب استخدام الأمر pg_restore 
 ImportMySqlCommand=%s %s < mybackupfile.sql
 ImportPostgreSqlCommand=%s %s mybackupfile.sql
 FileNameToGenerate=اسم الملف المراد إنشائه
 Compression=ضغط الملف
 CommandsToDisableForeignKeysForImport=الأمر المستخدم لتعطيل المفتاح الخارجي في حالة الإستيراد
 CommandsToDisableForeignKeysForImportWarning=إجباري في حال اردت إسترجاع نسخة قاعدة البيانات الإحتياطية
-ExportCompatibility=توفق الملف المصدر
-MySqlExportParameters=تصدير قيم قاعدة البيانات MySql
-PostgreSqlExportParameters= تصدير قيم قاعدة البيانات PostgreSQL
+ExportCompatibility=توافق الملف المصدر
+MySqlExportParameters=قيم تصدير قاعدة البيانات MySql
+PostgreSqlExportParameters=قيم تصدير قاعدة البيانات PostgreSQL
 UseTransactionnalMode=إستخدم صيغة المعاملات
-FullPathToMysqldumpCommand=المسار الكامل لأوامر mysqldump
-FullPathToPostgreSQLdumpCommand=المسار الكامل لأوامر pg_dump
+FullPathToMysqldumpCommand=المسار الكامل للامر mysqldump
+FullPathToPostgreSQLdumpCommand=المسار الكامل للامر pg_dump
 ExportOptions=خيارات التصدير
-AddDropDatabase=أمر إضافة, حذف قاعدة بيانات
-AddDropTable=أمر إضافة حذف الجدول
+AddDropDatabase= إضافةأوامر : DROP DATABASE
+AddDropTable=إضافةأوامر : DROP TABLE
 ExportStructure=البنية
 Datas=البيانات
 NameColumn=اسم الأعمدة
-ExtendedInsert=الإضافة الممددة
-NoLockBeforeInsert=لا يوجد أوامر قفل حول الإضافة
+ExtendedInsert=أوامر INSERT الممددة
+NoLockBeforeInsert=لا أوامر قفل قبل الإضافة
 DelayedInsert=إضافة متأخرة
 EncodeBinariesInHexa=ترميز البيانات الأحادية لستة عشرية
-IgnoreDuplicateRecords=تجاهل الأخطاء في السجلات المكررة (تجاهل الإدراج)
+IgnoreDuplicateRecords=تجاهل الأخطاء في السجلات المكررة (INSERT IGNORE)
 Yes=نعم
 No=لا
 AutoDetectLang=اكتشاف تلقائي (لغة المتصفح)
-FeatureDisabledInDemo=الميزة معلطة في العرض التجريبي
+FeatureDisabledInDemo=الميزة معطلة في العرض التجريبي
 Rights=الصلاحيات
-BoxesDesc=المربعات هي المناطق التي تُظهر بعض المعلومات في بعض الصفحات. يمكنك اختيار إظهار أو إخفائها بإختيار الصفحات المطلوبة و الضغط على 'تنشيط', او بالضغط على الزر الآخر لتعطيلها.
-OnlyActiveElementsAreShown=فقط العناصر من <a href="%s">النماذج المفعلة </a> سوف تظهر.
-ModulesDesc=Dolibarr تحديد الوحدات التي تم تمكين وظيفة في مجال البرمجيات. وتتطلب بعض وحدات الأذونات ، يجب ان تمنح للمستخدمين ، وبعد أن تمكن وحدة.
-ModulesInterfaceDesc=فإن التفاعل بين وحدات Dolibarr يسمح لك بإضافة السمات الخارجية تعتمد على البرمجيات والنظم والخدمات.
-ModulesSpecialDesc=وحدات خاصة أو محددة جدا ونادرا ما تستخدم وحدات.
-ModulesJobDesc=توفير وحدات تجارية بسيطة ومحددة سلفا من Dolibarr الإعداد لأعمال معين.
+BoxesDesc=الصناديق هي المناطق التي تُظهر بعض المعلومات في بعض الصفحات. يمكنك اختيار إظهارها أو إخفائها بإختيار الصفحات المطلوبة و الضغط على 'تنشيط', او بالضغط على الزر الآخر لتعطيلها.
+OnlyActiveElementsAreShown=فقط العناصر من <a href="%s">الوحدات المفعلة </a> سوف تظهر.
+ModulesDesc=الوحدات Dolibarr  تحدد الميزات المتوفرة في التطبيق. وتتطلب بعض الوحدات حقوق يجب ان تمنح للمستخدمين بعد أن تمكن.
+ModulesInterfaceDesc=وحدات التفاعل تسمح لك صلة DOLIBARR ببرمجيات ،نظم وخدمات خارجية
+ModulesSpecialDesc=الوحدات الإضافية هي وحدات ذو استخدام محدد جدا و أقل من الوحدات البسيطة القياسية.
+ModulesJobDesc=الوحدات الإضافية المهنية هي وحدات يسمحون إعداد مسبق لأعمال معينة.
 ModulesMarketPlaceDesc=يمكنك العثور على مزيد من وحدات للتحميل على مواقع الإنترنت الخارجية على شبكة الانترنت...
-ModulesMarketPlaces=مزيد من وحدات...
-DoliStoreDesc=DoliStore ، في السوق الرسمي لتخطيط موارد المؤسسات وحدات Dolibarr / خارجي إدارة علاقات العملاء
-DoliPartnersDesc=List with some companies that can provide/develop on-demand modules or features (Note: any Open Source company knowning PHP language can provide you specific development)
-WebSiteDesc=مزودي موقع ويب يمكنك البحث للعثور على المزيد من وحدات...
+ModulesMarketPlaces=المزيد من وحدات...
+DoliStoreDesc=DoliStore ، السوق الرسمي للوحدات و الملحقات الإضافية ل Dolibarr
+DoliPartnersDesc=قائمة بعض الشركات التي يمكن أن توفر / تطور وحدات أو وظائف مخصصة (ملاحظة: أي شركة للمصدر المفتوح تعرف لغة PHP يمكن أن توفرتطوير معين)
+WebSiteDesc=موقع ويب لمزودي وحدات DOLIBARR يمكنك البحث فيهاللعثور على المزيد من الوحدات...
 URL=رابط
-BoxesAvailable=صناديق متاحة
-BoxesActivated=تفعيل صناديق
-ActivateOn=على تفعيل
-ActiveOn=على تفعيلها
-SourceFile=ملف المصدر
-AutomaticIfJavascriptDisabled=تلقائيا إذا تم تعطيل جافاسكريبت
-AvailableOnlyIfJavascriptNotDisabled=متاحا إلا إذا كان جافا سكريبت غير المعوقين
-AvailableOnlyIfJavascriptAndAjaxNotDisabled=متاحا إلا إذا كان جافا سكريبت غير المعوقين
+BoxesAvailable=الصناديق المتاحة
+BoxesActivated=الصناديق المفعلة
+ActivateOn=للتفعيل على
+ActiveOn=مفعلة على
+SourceFile=الملف المصدر
+AutomaticIfJavascriptDisabled=قدتم تعطيل جافاسكريبت التلقائي 
+AvailableOnlyIfJavascriptNotDisabled=متاحا إلا إذا كان جافاسكريبت معطل
+AvailableOnlyIfJavascriptAndAjaxNotDisabled=متاحا إلا إذا كان جافاسكريبت و اجاكس معطلة
 Required=مطلوب
-UsedOnlyWithTypeOption=Used by some agenda option only
+UsedOnlyWithTypeOption=مستخدم من قبل بعض بنود جدول الأعمال فقط
 Security=الأمن
-Passwords=كلمة السر
-DoNotStoreClearPassword=لا تخزن كلمات السر في قاعدة بيانات واضحة في
-MainDbPasswordFileConfEncrypted=كلمة السر في قاعدة بيانات مشفرة conf.php
-InstrucToEncodePass=لديك كلمة المرور المشفرة في ملف <b>conf.php</b> ، استبدال خط <br> <b>dolibarr_main_db_pass $ ="..."</b> <br> من قبل <br> <b>"= $ crypted dolibarr_main_db_pass : ٪ ق"</b>
+Passwords=كلمات السر
+DoNotStoreClearPassword=لا تخزن كلمات السر واضحة في قاعدة البيانات (تفعيل مستحسن)
+MainDbPasswordFileConfEncrypted=تشفير كلمة السر في قاعدة البيانات في conf.php (تفعيل مستحسن)
+InstrucToEncodePass=للحصول على كلمة السر المشفرة في ملف التكوين conf.php، استبدل في هذا  الملف الخط $dolibarr_main_db_pass="crypted:..." ب $dolibarr_main_db_pass="%s"
 InstrucToClearPass=لديك كلمة السر فك الشفرة (واضح) في <b>conf.php</b> الملف ، استبدال السطر <br> <b>dolibarr_main_db_pass $ = ":..." crypted</b> <br> من قبل <br> <b>dolibarr_main_db_pass $ = "٪ ق"</b>
-ProtectAndEncryptPdfFiles=حماية الملفات ولدت الشعبي (لا recommandd ، تقتحم الجماهيري الشعبي وتوليد)
-ProtectAndEncryptPdfFilesDesc=حماية وجود وثيقة من وثائق وتبقي الشعبي توفيرها لقراءة وطباعة أي متصفح الشعبي. ومع ذلك ، وتحريرها ونسخها وليس من الممكن بعد الآن. علما أن استخدام هذه الميزة تجعل بناء عالمي لا يعمل المتراكمة الشعبي (مثل الفواتير غير المدفوعة).
+ProtectAndEncryptPdfFiles=حماية وثائق PDF المولدة (التنشيط غير مستحسن، يجعل توليد PDF الجماعي معطلة)
+ProtectAndEncryptPdfFilesDesc=حماية وثائق PDF يترك الوثيقة حرة للقراءة والطباعة مع أي برنامج قارئ لل PDF. على العكس، التعديل و النسخ أصبح مستحيلا. ملاحظة أن، بالإضافة إلى ذلك، استخدام هذا الخيار يمنع توليد ال PDF التراكمي (مثل الفواتير غير المدفوعة).
 Feature=ميزة
 DolibarrLicense=الترخيص
-DolibarrProjectLeader=المشروع
-Developpers=مطوري / المساهمين
-OtherDeveloppers=غيرها من مطوري / المساهمين
+DolibarrProjectLeader=مدير المشروع
+Developpers=المطورين / المساهمين
+OtherDeveloppers=غيرها من المطورين / المساهمين
 OfficialWebSite=Dolibarr الدولي الموقع الرسمي
-OfficialWebSiteFr=الفرنسية الموقع الرسمي
-OfficialWiki=Dolibarr يكي
-OfficialDemo=Dolibarr الانترنت التجريبي
-OfficialMarketPlace=المسؤول عن وحدات السوق الخارجية / أدونس
-OfficialWebHostingService=Referenced web hosting services (Cloud hosting)
-ReferencedPreferredPartners=Preferred Partners
-OtherResources=Autres ressources
-ForDocumentationSeeWiki=For user's or developer's documentation (Doc, FAQs...),<br>take a look at the Dolibarr Wiki:<br><b><a href="%s" target=للمستخدم أو للتطوير وثائق (مستدات ،...)، أسئلة وأجوبة <br> إلقاء نظرة على ويكي Dolibarr : <br> <a href="%s" target="_blank"><b>ق ٪</b></a>
-ForAnswersSeeForum=For any other questions/help, you can use the Dolibarr forum:<br><b><a href="%s" target=عن أي أسئلة أخرى / مساعدة ، يمكنك استخدام Dolibarr المنتدى : <br> <a href="%s" target="_blank"><b>ق ٪</b></a>
-HelpCenterDesc1=هذا المجال يمكن أن تساعدك في الحصول على مساعدة لتقديم خدمات الدعم على Dolibarr.
-HelpCenterDesc2=جزء من هذه الخدمة متوفرة باللغة <b>الانكليزية فقط.</b>
-CurrentTopMenuHandler=مناول الحالية الأعلى
-CurrentLeftMenuHandler=مناول الحالية القائمة اليمنى
-CurrentMenuHandler=الحالية القائمة معالج
-CurrentSmartphoneMenuHandler=معالج الحالية القائمة الذكي
+OfficialWebSiteFr=الموقع الرسمي بالفرنسية 
+OfficialWiki=Dolibarr ويكي
+OfficialDemo=عرض على الخط ل dolibarr
+OfficialMarketPlace=السوق الرسمي للوحدات والملحقات المضافة
+OfficialWebHostingService=خدمات الإقامة المشار إليها (السحاب)
+ReferencedPreferredPartners=الشركاء المفضلين
+OtherResources=ملتقيات أخرى
+ForDocumentationSeeWiki= مما يخص وثائق المطور أو الأسئلة الشائعة استشارة الويكي دوليبار ,<br>consultez le wiki Dolibarr:<br><b><a href="%s" target="_blank">%s</a></b>
+ForAnswersSeeForum=بالنسبة لكل المسائل الأخرى / مساعدة، يمكنك استخدام المنتدى دوليبار :<br><b><a href="%s" target="_blank">%s</a></b>
+HelpCenterDesc1=هذا البرنامج يمكن أن يساعدك في الحصول على مساعدة لإيجاد خدمات دعم على دوليبار
+HelpCenterDesc2=اختر الخدمة التي تناسب حاجتك من خلال النقر على الرابط المناسب (بعض هذه الخدمات متوفرة باللغة الإنجليزية فقط).
+CurrentTopMenuHandler=المدير الحالي للقائمة الأعلى
+CurrentLeftMenuHandler=المدير الحالي للقائمة اليمنى
+CurrentMenuHandler=المدير الحالي للقائمة 
+CurrentSmartphoneMenuHandler=المدير الحالي للقائمة للهاتف الذكي
 MeasuringUnit=وحدة قياس
 Emails=البريد الإلكتروني
 EMailsSetup=إعداد رسائل البريد الإلكتروني
-EMailsDesc=تسمح لك هذه الصفحة الخاصة بك فوق PHP معايير لإرسال رسائل البريد الإلكتروني. في معظم الحالات على يونيكس / نظام لينكس ، PHP الخاصة بك الإعداد صحيح وهذه الثوابت هي عديمة الفائدة.
-MAIN_MAIL_SMTP_PORT=بروتوكول نقل البريد الإلكتروني / SMTPS ميناء (افتراضيا في php.ini : <b>٪)</b>
-MAIN_MAIL_SMTP_SERVER=بروتوكول نقل البريد الإلكتروني / SMTPS المضيف (افتراضيا في php.ini : <b>٪)</b>
-MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=بروتوكول نقل البريد الإلكتروني / SMTPS ميناء (غير محددة في مثل PHP على أنظمة يونكس)
-MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=بروتوكول نقل البريد الإلكتروني / SMTPS المضيف (غير محددة في مثل PHP على أنظمة يونكس)
-MAIN_MAIL_EMAIL_FROM=مرسل البريد الإلكتروني للرسائل البريد الإلكتروني تلقائيا (افتراضيا في php.ini : <b>٪)</b>
-MAIN_MAIL_ERRORS_TO=أرسلت مرسل البريد الإلكتروني المستخدمة في رسائل البريد الإلكتروني عائدات خطأ
-MAIN_MAIL_AUTOCOPY_TO= إرسال منهجية خفية الكربون نسخة من جميع رسائل البريد الإلكتروني المرسلة إلى
-MAIN_MAIL_AUTOCOPY_PROPOSAL_TO= Send systematically a hidden carbon-copy of proposals sent by email to
-MAIN_MAIL_AUTOCOPY_ORDER_TO= Send systematically a hidden carbon-copy of orders sent by email to
-MAIN_MAIL_AUTOCOPY_INVOICE_TO= Send systematically a hidden carbon-copy of invoice sent by emails to
-MAIN_DISABLE_ALL_MAILS=تعطيل جميع رسائل البريد الإلكتروني الإرسال (لأغراض الاختبار أو تجريبية)
-MAIN_MAIL_SENDMODE=طريقة استخدام لإرسال رسائل البريد الإلكتروني
-MAIN_MAIL_SMTPS_ID=إذا الهوية SMTP التوثيق اللازم
-MAIN_MAIL_SMTPS_PW=كلمة السر اذا SMTP التوثيق اللازم
-MAIN_MAIL_EMAIL_TLS= استخدام تلس (خدمة تصميم المواقع) تشفير
-MAIN_DISABLE_ALL_SMS=تعطيل كافة sendings SMS (لأغراض الاختبار أو تجريبية)
-MAIN_SMS_SENDMODE=طريقة استخدامه لإرسال الرسائل القصيرة SMS
+EMailsDesc=تسمح لك هذه الصفحة الخاصة إستبدال معايير ال PHP لإرسال رسائل البريد الإلكتروني. في معظم الحالات على نظام يونيكس / لينكس ،لإعداد PHP لهذه الثوابت صحيح و هذه الصفحة عديمة الفائدة.
+MAIN_MAIL_SMTP_PORT=منفذ إعداد PHP SMTP / SMTPS (افتراضيا في لغة PHP): <b>%s</b>)
+MAIN_MAIL_SMTP_SERVER= اسم الضيف أو عنوان   SMTP / SMTPS IP  (افتراضيا في لغة PHP: <b>%s</b>)
+MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=منفذ SMTP / SMTPS (غير معرف في PHP على الأنظمة شبه يونكس)
+MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=سم الضيف أو عنوان  SMTP / SMTPS IP (غير معرف في PHP على الأنظمة شبه يونكس)
+MAIN_MAIL_EMAIL_FROM=مرسل البريد الإلكتروني لرسائل البريد الإلكتروني التلقائية (افتراضيا في php.ini : <b>٪)</b>
+MAIN_MAIL_ERRORS_TO=عنوان بريد إلكتروني مستخدم في عائدات رسائل البريد الإلكتروني  الخاطئة
+MAIN_MAIL_AUTOCOPY_TO= إرسال منهجي لصورة مخبأة من رسائل البريد الإلكتروني المرسلة إلى
+MAIN_MAIL_AUTOCOPY_PROPOSAL_TO=إرسال منهجي لصورة مخبأة من رسائل للفواتير الأولية المرسلة إلى
+MAIN_MAIL_AUTOCOPY_ASKPRICESUPPLIER_TO=إرسال منهجي لصورة مخبأة من طلبات الأسعار المرسلة إلى 
+MAIN_MAIL_AUTOCOPY_ORDER_TO=إرسال منهجي لصورة مخبأة من الأوامر التجارية المرسلة إلى 
+MAIN_MAIL_AUTOCOPY_INVOICE_TO= إرسال منهجي لصورة مخبأة من رسائل للفواتير المرسلة إلى
+MAIN_DISABLE_ALL_MAILS=تعطيل جميع رسائل البريد الإلكتروني الإرسال (لأغراض الاختبار أو التجريب)
+MAIN_MAIL_SENDMODE=طريقة إرسال رسائل البريد الإلكتروني
+MAIN_MAIL_SMTPS_ID= الهوية SMTP في حال يكون التوثيق SMTP لازم
+MAIN_MAIL_SMTPS_PW=كلمة السر SMTP في حال يكون التوثيق SMTP لازم
+MAIN_MAIL_EMAIL_TLS= استخدام تشفير TLS (خدمة تصميم المواقع) 
+MAIN_DISABLE_ALL_SMS=تعطيل كافة إرسالات SMS (لأغراض الاختبار أو التجريب)
+MAIN_SMS_SENDMODE=طريقة إرسال الرسائل القصيرة SMS
 MAIN_MAIL_SMS_FROM=رقم الهاتف المرسل الافتراضي لإرسال الرسائل القصيرة
-FeatureNotAvailableOnLinux=ميزة لا تتوفر على مثل أنظمة يونكس. sendmail برنامج الاختبار الخاص بك محليا.
-SubmitTranslation=إذا كان ترجمة لهذه اللغة ليست كاملة أو تجد الأخطاء ، يمكنك تصحيح هذا عن طريق تحرير الملفات إلى الدليل <b>langs / ق ٪</b> ، وإرسال ملفات تعديل على www.dolibarr.org المنتدى.
-ModuleSetup=إعداد وحدة
-ModulesSetup=نمائط الإعداد
+FeatureNotAvailableOnLinux=ميزة لا تتوفر على الأنظمة مثل يونكس. اختبر برنامج sendmail الخاص بك محليا.
+SubmitTranslation=إذا كانت الترجمة لهذه اللغة ليست كاملة أو توجد الأخطاء ، يمكنك تصحيح ذلك عن طريق تحرير الملفات في الدليل <b>langs / s ٪</b> ، وإرسالها للتعديل على المنتدى www.dolibarr.org
+ModuleSetup=إعداد الوحدة
+ModulesSetup=إعداد الوحدات
 ModuleFamilyBase=نظام
-ModuleFamilyCrm=Ressource العملاء إدارة (إدارة علاقات العملاء)
+ModuleFamilyCrm=إدارة العلاقات مع الزبائن
 ModuleFamilyProducts=إدارة المنتجات
 ModuleFamilyHr=إدارة الموارد البشرية
 ModuleFamilyProjects=مشاريع / العمل التعاوني
 ModuleFamilyOther=أخرى
-ModuleFamilyTechnic=Multi بين وحدات وأدوات
-ModuleFamilyExperimental=نماذج تجريبية
-ModuleFamilyFinancial=الوحدات المالية (المحاسبة / الخزانة)
+ModuleFamilyTechnic=أدات بين عدة وحدات 
+ModuleFamilyExperimental=وحدات تجريبية
+ModuleFamilyFinancial=وحدات المالية (المحاسبة / الخزانة)
 ModuleFamilyECM=إدارة المحتوى في المؤسسة
-MenuHandlers=قائمة مناولي
-MenuAdmin=قائمة تحرير
-DoNotUseInProduction=Do not use in production
+MenuHandlers=مديري  القوائم 
+MenuAdmin=تحرير القائمة 
+DoNotUseInProduction=لا يستخدم في الإنتاج
 ThisIsProcessToFollow=هذا هو الإعداد لهذه العملية :
-ThisIsAlternativeProcessToFollow=This is an alternative setup to process:
-StepNb=الخطوة ق ٪
-FindPackageFromWebSite=العثور على الحزمة التي توفر ميزة تريد (على سبيل المثال على موقع الويب ق ٪).
-DownloadPackageFromWebSite=Download package %s.
-UnpackPackageInDolibarrRoot=Unpack package file into directory dedicated to external modules: <b>%s</b>
-SetupIsReadyForUse=الانتهاء من تركيب وDolibarr على استعداد لاستخدام هذا العنصر الجديد.
-NotExistsDirect=The alternative root directory is not defined.<br>
-InfDirAlt=Since version 3 it is possible to define an alternative root directory.This allows you to store, same place, plug-ins and custom templates.<br>Just create a directory at the root of Dolibarr (eg: custom).<br>
-InfDirExample=<br>Then declare it in the file conf.php<br> $dolibarr_main_url_root_alt='http://myserver/custom'<br>$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'<br>*These lines are commented with "#", to uncomment only remove the character.
-YouCanSubmitFile=Select module:
-CurrentVersion=Dolibarr النسخة الحالية
-CallUpdatePage=الذهاب إلى صفحة التحديثات وdatas هيكل قاعدة البيانات : ٪ s.
-LastStableVersion=آخر نسخة مستقرة
-UpdateServerOffline=Update server offline
-GenericMaskCodes=يمكنك إدخال أي قناع الترقيم. في هذا القناع ، وبعد ويمكن استخدام العلامات : <br> <b>(000000)</b> يطابق عدد الذي سيكون على كل يزداد ٪ s. كما تدخل العديد من أصفار على النحو المنشود طول المضادة. المضاد وسيتم الانتهاء من اصفار من اليسار من أجل الحصول على أكبر عدد اصفار كما القناع. <br> <b>000000 +000) (نفس</b> السابقة ولكن يقابل المقابلة لعدد للحق من علامة + يطبق اعتبارا من أول ٪ s. <br> <b>000000 @ (س)</b> نفس السابقة ولكن المضاد هو إعادة الصفر عندما يتم التوصل إلى الشهر خ خ ما بين 1 و 12). إذا كان هذا الخيار هو المستخدمة وس 2 أو أعلى ، ثم تسلسل (ذ ذ م م)) ((سنة أو ملم)) (مطلوب أيضا. <br> <b>(ب)</b> اليوم (01 الى 31). <br> <b>() ملم</b> في الشهر (01 الى 12). <br> <b>(كذا)</b> ، <b>(سنة))</b> أو <b>(ذ</b> السنة أكثر من 2 أو 4 أو 1 الأرقام. <br>
-GenericMaskCodes2=<b>{cccc}</b> the client code on n characters<br><b>{cccc000}</b> the client code on n characters is followed by a counter dedicated for customer. This counter dedicated to customer is reset at same time than global counter.<br><b>{tttt}</b> The code of thirdparty type on n characters (see dictionary-thirdparty types).<br>
-GenericMaskCodes3=جميع الشخصيات الاخرى في قناع سوف تظل سليمة. <br> المساحات غير مسموح بها. <br>
-GenericMaskCodes4a=<u>ومثال على 99th ق ٪ من طرف ثالث TheCompany عمله 2007-01-31 :</u> <br>
-GenericMaskCodes4b=<u>ومثال على طرف ثالث على خلق 2007-03-01 :</u> <br>
-GenericMaskCodes4c=<u>Example on product created on 2007-03-01:</u><br>
-GenericMaskCodes5=<b>ABC{yy}{mm}-{000000}</b> will give <b>ABC0701-000099</b><br><b>{0000+100@1}-ZZZ/{dd}/XXX</b> will give <b>0199-ZZZ/31/XXX</b>
-GenericNumRefModelDesc=العودة للتخصيص وفقا لعدد محدد القناع.
-ServerAvailableOnIPOrPort=الخدمة متاحة في معالجة <b>٪ ق ق ٪</b> على الميناء
-ServerNotAvailableOnIPOrPort=الخدمة غير متاحة في التصدي <b>٪ ق ق ٪</b> على الميناء
-DoTestServerAvailability=اختبار خدمة التوصيل
-DoTestSend=ارسال الاختبار
-DoTestSendHTML=اختبار ارسال هتمل
-ErrorCantUseRazIfNoYearInMask=Error, can't use option @ to reset counter each year if sequence {yy} or {yyyy} is not in mask.
-ErrorCantUseRazInStartedYearIfNoYearMonthInMask=خطأ ، لا يمكن للمستخدم الخيار في حال تسلسل @ (ذ ذ م م)) ((سنة أو ملم)) (لا تخفي.
-UMask=معلمة جديدة UMask صورة يونيكس / لينكس / بي إس دي نظام الملفات.
-UMaskExplanation=تسمح لك هذه المعلمة لتحديد الاذونات التي حددها تقصير من الملفات التي أنشأتها Dolibarr على الخادم (خلال تحميلها على سبيل المثال). <br> يجب أن يكون ثمانية القيمة (على سبيل المثال ، 0666 وسائل القراءة والكتابة للجميع). <br> م شمال شرق paramètre سرت sous الامم المتحدة لتقييم الأداء ويندوز serveur.
-SeeWikiForAllTeam=إلقاء نظرة على صفحة ويكي قائمة كاملة لجميع الجهات الفاعلة والمنظمة
-UseACacheDelay= التخزين المؤقت للتأخير في الرد على الصادرات ثانية (0 فارغة أو لا مخبأ)
-DisableLinkToHelpCenter=الاختباء وصلة <b>"هل تحتاج إلى مساعدة أو دعم"</b> على صفحة تسجيل الدخول
-DisableLinkToHelp=إخفاء ارتباط <b>"ق ٪ أخبار يساعد"</b> على القائمة اليمنى
-AddCRIfTooLong=ليس هناك التفاف تلقائي ، حتى إذا خرج من خط صفحة على وثائق لفترة طويلة جدا ، يجب إضافة حرف إرجاع نفسك في ناحية النص.
-ModuleDisabled=نميطة المعوقين
-ModuleDisabledSoNoEvent=نميطة المعوقين بغية خلق حالة أبدا
-ConfirmPurge=هل أنت متأكد من ذلك لتنفيذ تطهير؟ <br> وهذا من شأنه بالتأكيد حذف جميع بيانات ملفك بأي حال من الأحوال لترميمها (صورة إدارة المحتوى في المؤسسة ، والملفات المرفقة...).
-MinLength=الحد الأدني لمدة
+ThisIsAlternativeProcessToFollow=هذه هي العملية البديلة للإعداد:
+StepNb=الخطوة رقم ٪s
+FindPackageFromWebSite=العثور على الحزمة التي توفر الميزة تريد (على سبيل المثال على موقع الويب s٪).
+DownloadPackageFromWebSite=تحميل الحزمة %s
+UnpackPackageInDolibarrRoot=قم بفك الحزمة في الدليل المخصص للوحدات الخارجية
+SetupIsReadyForUse=لقد إنتهى الاعداد. إن Dolibarr على استعداد لاستخدام هذا العنصر الجديد.
+NotExistsDirect=لا يوجد أي دليل بديل.
+InfDirAlt=منذ الإصدار 3 هو من الممكن تحديد دليل بديل يسمح لك بتخزين في نفس المكان وحدات ومواضيع مخصصة. بمجرد إنشاء دليل على جذر Dolibarr (مثل: custom)
+InfDirExample=ثم أعلن في الملف conf.php::<br> $dolibarr_main_url_root_alt='http://monserveur/custom'<br>$dolibarr_main_document_root_alt='/repertoire/de/dolibarr/htdocs/custom'<br>.*لقد تم تعليق هذه الخطوط ب "#".لحذف هذا التعليق، عليكببحذف الحرف ببساطة.
+YouCanSubmitFile=اختر الوحدة:
+CurrentVersion= النسخة الحالية ل Dolibarr
+CallUpdatePage= الذهاب إلى صفحة التحديثات و هيكل و قاعدة البيانات : %s.
+LastStableVersion= آخر نسخة مستقرة
+UpdateServerOffline=خادم التحديث غير متواجد حاليا
+GenericMaskCodes=يمكنك إدخال أي قناع ترقيم. في هذا القناع،يمكن استخدام العلامات التالية :<br><b>{000000}</b> يوازي رقم يتزايد كل ٪s. وضع عدد الأصفار يوازي الطول المطلوب للعداد. سيتمم العداد بعدد من 0 على اليسار من أجل الحصول على العدد المطلوب في القناع.<br><b>{000000+000}</b> كما من قبل، ولكن بفارق مقابل للعدد على يمين ال + يتم تطبيقه من أول s٪ . <br><b> {000000@x}</b> كما في السابق، و لكن يعاد العداد الى صفر لتعيين الشهر س من العام (س بين 1 و 12، أو  0 لاستخدام شهر بداية العام المالي المحدد في التكوين الخاص بك، أو 99 للإعادة للصفركل شهر). إذا تم استخدام هذا الخيار وس هو 2 أو أكثر، كان التسلسل إلزامي. <br><b>{dd}</b> يوم (01-31). <br><b>{mm}</b> أشهر (01-12). <br><b>{yy}</b>, <b>{yyyy}</b>أو <b>{y}</b> سنة على 2 أو 4 أو 1 أرقام.
+GenericMaskCodes2=رمز العميل على ن أحرف<br><b>{cccc000}</b> ويتبع رمز العميل على ن أحرف بعداد خاص بالعميل. هذا العداد خاص بالعميل هو أيضا يعاد ضبطه لصفر في نفس الوقت مع العداد العام. رمز نوع الطرف الثالث على ن أحرف (انظر معجم أنواع الأطراف الثالثة).
+GenericMaskCodes3=جميع الأحرف الاخرى في القناع سوف تظل بدون تغيير. <br> الفراغات غير مسموح بها. <br>
+GenericMaskCodes4a=<u>مثال على الطرف الثالث 99%s الشركة المنشئة في 2007-01-31 :</u><br>
+GenericMaskCodes4b=<u>ومثال على طرف ثالث خلق في 2007-03-01 :</u> <br>
+GenericMaskCodes4c=<u>ومثال على منتج خلق في 2007-03-01 :</u> <br>
+GenericMaskCodes5=<b>ABC{yy}{mm}-{000000}</b>تعطي <b>ABC0703-000099</b><br><b>{0000+100@1}-XXX-{dd}-YYY</b> تعطي <b>0199-XXX-31-YYY</b>
+GenericNumRefModelDesc=تعطي رقم يخصص وفقا لقناع يحدد.
+ServerAvailableOnIPOrPort=الخادم شغال ؜على العنوان %s على الميناء %s
+ServerNotAvailableOnIPOrPort=الخادم غير شغال ؜على العنوان %s على الميناء %s
+DoTestServerAvailability=اختبار توفر الخادم
+DoTestSend=اختبار الارسال
+DoTestSendHTML=اختبار ارسال HTML
+ErrorCantUseRazIfNoYearInMask=خطأ، لا يمكن استخدام الخيار @ لإعادة الضبط في بداية السنة، أو إذا كان التسلسل {yy} أو {yyyy} غير موجود في القناع.
+ErrorCantUseRazInStartedYearIfNoYearMonthInMask=خطأ، لا يمكن استخدام الخيار @ إذا كان التسلسل {yy}{mm} أو {mm}{yyyy} غير موجود في القناع
+UMask=قناع من الملفات الجديدة تحت الأنظمة يونيكس / لينكس / بي إس دي.
+UMaskExplanation=تسمح لك هذه المعلمة تحديد الاذونات على الملفات التي أنشأتها على الخادم Dolibarr (خلال تحميلها على سبيل المثال). <br> يجب أن يكون رقم ثماني (على سبيل المثال ، 0666 : وسائل القراءة والكتابة للجميع). <br> هذا الضبط ليس له أي تأثير على خادم ويندوز.
+SeeWikiForAllTeam=إلقاء نظرة على صفحة الويكي لرؤية قائمة كاملة لجميع الجهات الفاعلة والمنظمة
+UseACacheDelay= التأخير للتخزين المؤقت اللصادرات - ثانية (0 فارغ أو لا مخبأ)
+DisableLinkToHelpCenter=اختباء وصلة <b>"هل تحتاج إلى مساعدة أو دعم"</b> على صفحة تسجيل الدخول
+DisableLinkToHelp=إخفاء رابط "%sمساعدة عبر الإنترنت" من القائمة اليسرى اليمنى
+AddCRIfTooLong=لا يوجد كسر خط التلقائي، حتى إذا كان النص طويل جدا على الوثائق، عليك أن تضيف بنفسك الإرجاع في مربع إدخال النص
+ModuleDisabled=وحدة معطلة
+ModuleDisabledSoNoEvent=وحدة معطلة,مما يجعل الحدث لن يخلق أبدا
+ConfirmPurge=هل أنت متأكد من إرادة تنفيذ ذلك التطهير؟ <br> هذا من شأنه بالتأكيد حذف جميع ملفاتك (صورة إدارة المحتوى في المؤسسة ، والملفات المرفقة...).
+MinLength=الحد الأدني
 LanguageFilesCachedIntoShmopSharedMemory=لانغ لتحميل الملفات. في الذاكرة المشتركة
 ExamplesWithCurrentSetup=أمثلة مع تشغيل الإعداد الحالي
-ListOfDirectories=قائمة الدلائل المفتوحة قوالب
-ListOfDirectoriesForModelGenODT=قائمة الدلائل التي تحتوي على ملفات ذات شكل قوالب المفتوحة. <br><br> هنا وضع المسار الكامل من الدلائل. <br> إضافة حرف إرجاع بين الدليل ايه. <br> لإضافة دليل وحدة [جد] ، أضيف هنا <b>DOL_DATA_ROOT / إدارة المحتوى في المؤسسة / yourdirectoryname.</b> <br><br> في هذه الدلائل يجب أن تنتهي مع <b>ملفات. odt.</b>
-NumberOfModelFilesFound=Number of ODT/ODS templates files found in those directories
-ExampleOfDirectoriesForModelGen=أمثلة على بناء الجملة : <br> ج : mydir \\ <br> / الوطن / mydir <br> DOL_DATA_ROOT / إدارة المحتوى في المؤسسة / ecmdir
-FollowingSubstitutionKeysCanBeUsed=<br> لمعرفة كيفية إنشاء قوالب المستند ODT، قبل تخزينها في تلك الدلائل، وقراءة وثائق ويكي:
-FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Create_an_ODT_document_template
-FirstnameNamePosition=موقف الإسم / اسم
-DescWeather=سيتم عرض الصور التالية على لوحة أجهزة القياس عند عدد من الإجراءات في وقت متأخر تصل الى القيم التالية:
-KeyForWebServicesAccess=مفتاح لاستخدام خدمات الشبكة العالمية (المعلمة &quot;dolibarrkey&quot; في webservices)
-TestSubmitForm=اختبار شكل مساهمة
-ThisForceAlsoTheme=وسوف تستخدم هذه القائمة أيضا استخدام مدير موضوعه الخاصة بكل ما هو خيار المستخدم. أيضا هذه القائمة مدير متخصصة للهواتف الذكية لا يعمل على جميع الهواتف الذكية. استخدم مدير آخر القائمة إذا واجهت مشاكل في يدكم.
-ThemeDir=جلود دليل
+ListOfDirectories=قائمة دلائل اللغة في الذاكرة المفتوحة 
+ListOfDirectoriesForModelGenODT=قائمة الدلائل التي تحتوي على ملفات ذات شكل قوالب مفتوحة. <br><br> ضع المسار الكامل من للدلائل. <br> إضافة حرف إرجاع بين الدلائل. <br> لإضافة دليل وحدة [GED] ، عين <br><b>DOL_DATA_ROOT/ecm/nomdurepertoireged</b><br><br>.  الملفات ذات شكل قالب في هذه الدلائل يجب أن تنتهي ب <b>.odt</b>
+NumberOfModelFilesFound=عدد الملفات ذو قالب ODT /ODS اللتي وجدت في هذه الدلائل
+ExampleOfDirectoriesForModelGen=مثال في بناء الجملة:  :<br>c:\\mydir<br>/home/mydir<br>DOL_DATA_ROOT/ecm/ecmdir 
+FollowingSubstitutionKeysCanBeUsed=<br>لمعرفة كيفية كتابة قوالب مستندات ODT قبل وضعها في واحدة من هذه الدلائل، راجع وثائق الويكي:
+FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Créer_un_modèle_de_document_ODT
+FirstnameNamePosition=ترتيب العرض : الاسم / اللقب
+DescWeather=سيتم عرض الصور التالية على لوحة القيادة عندما عدد العناصر المتأخرة تصل الى القيمة التالية:
+KeyForWebServicesAccess=المفتاح لاستخدام خدمات الشبكة العالمية (المعلمة "dolibarrkey" في هذه الخدمات)
+TestSubmitForm=استمارة اختبار الإدخال
+ThisForceAlsoTheme=استخدام هذا المدير للقائمة يجبر أيضا استخدام الموضوع خاصة، مهما كان خيار المستخدم للموضوع. أيضا هذا المدير المتخصص بالهواتف الذكية لا يعمل على جميع الهواتف الذكية. استخدم مدير آخر القائمة إذا واجهت مشاكل في استخدامه.
+ThemeDir=دليل المواضيع
 ConnectionTimeout=بمناسبه المهلة
-ResponseTimeout=استجابة مهلة
+ResponseTimeout= مهلة الاستجابة للتصالات
 SmsTestMessage=رسالة اختبار من __PHONEFROM__ إلى __PHONETO__
-ModuleMustBeEnabledFirst=يجب تمكين <b>%s</b> الوحدة الأولى قبل استخدام هذه الميزة.
-SecurityToken=المفتاح لعناوين المواقع الآمنة
-NoSmsEngine=لا مدير مرسل الرسائل القصيرة المتاحة. لم يتم تثبيت SMS المرسل مع مدير التوزيع الافتراضي (لأنها تعتمد على مورد خارجي)، ولكن يمكنك أن تجد بعض على http://www.dolistore.com
+ModuleMustBeEnabledFirst=يجب تمكين الوحدة <b>%s</b> قبل استخدام هذه الميزة.
+SecurityToken=مفتاح تأمين المواقع 
+NoSmsEngine=لا مدير مرسل للرسائل القصيرة متاح. لم يتم تثبيت مرسل SMS مع مدير التوزيع الافتراضي (لأنها تعتمد على مورد خارجي)، لكن يمكنك أن تجد بعض منها على http://www.dolistore.com
 PDF=PDF
-PDFDesc=يمكنك تعيين كل الخيارات العالمية المتصلة جيل PDF
-PDFAddressForging=قواعد لتشكيل مربعات العناوين
-HideAnyVATInformationOnPDF=إخفاء كل المعلومات المتعلقة ضريبة القيمة المضافة على إنشاء قوات الدفاع الشعبي
-HideDescOnPDF=Hide products description on generated PDF
-HideRefOnPDF=Hide products ref. on generated PDF
-HideDetailsOnPDF=Hide products lines details on generated PDF
-Library=المكتبة
-UrlGenerationParameters=المعلمات لتأمين عناوين المواقع
-SecurityTokenIsUnique=استخدام معلمة securekey فريدة لكل URL
-EnterRefToBuildUrl=أدخل مرجع لكائن %s
-GetSecuredUrl=الحصول على عنوان محسوب
-ButtonHideUnauthorized=Hide buttons for unauthorized actions instead of showing disabled buttons
-OldVATRates=Old VAT rate
-NewVATRates=New VAT rate
-PriceBaseTypeToChange=Modify on prices with base reference value defined on
-MassConvert=Launch mass convert
+PDFDesc=يمكنك التعيين هنا خيارات عامة متعلقة بإنشاء وثائق PDF
+PDFAddressForging=قواعد لتشكيل مناطق العناوين
+HideAnyVATInformationOnPDF=إخفاء كل المعلومات المتعلقة بالضريبة على القيمة المضافة عند إنشاء وثائق PDF
+HideDescOnPDF=إخفاءالوصف  عند إنشاء وثائق PDF
+HideRefOnPDF=إخفاءالمرجع عند إنشاء وثائق PDF
+HideDetailsOnPDF=إخفاءالتفاصيل عند إنشاء وثائق PDF
+Library=مكتبة
+UrlGenerationParameters=تأمين عناوين المواقع
+SecurityTokenIsUnique=استخدام معلمة securekey فريدة خاصة لكل URL
+EnterRefToBuildUrl=أدخل المرجع لإنشاءالموقع %s
+GetSecuredUrl=الحصول على عنوان محسوب للموقع 
+ButtonHideUnauthorized=إخفاء الأزرار الغير مأذون بها (بدلا من رؤيتها باللون الرمادي)
+OldVATRates=قيمة الضريبة على القيمة المضافة السابقة
+NewVATRates=قيمة الضريبة على القيمة المضافة الجديدة
+PriceBaseTypeToChange=تعديل على الأسعار التي مرجعها الأساسي هو
+MassConvert=تحويل جماعي
 String=سلسلة
-TextLong=Long text
-Int=Integer
-Float=Float
-DateAndTime=Date and hour
-Unique=Unique
-Boolean=Boolean (Checkbox)
+TextLong=نص طويل
+Int=عدد طبيعي
+Float=عشري
+DateAndTime=التاريخ و الوقت
+Unique=وحيد
+Boolean=قيمة منطقية (خانة اختيار)
 ExtrafieldPhone = هاتف
 ExtrafieldPrice = الأسعار
-ExtrafieldMail = Email
-ExtrafieldSelect = Select list
-ExtrafieldSelectList = Select from table
-ExtrafieldSeparator=Separator
-ExtrafieldCheckBox=Checkbox
-ExtrafieldRadio=Radio button
-ExtrafieldCheckBoxFromList= Checkbox from table
-ExtrafieldLink=Link to an object
-ExtrafieldParamHelpselect=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...<br><br>In order to have the list depending on another :<br>1,value1|parent_list_code:parent_key<br>2,value2|parent_list_code:parent_key
-ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
-ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
-ExtrafieldParamHelpsellist=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt  extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter
-ExtrafieldParamHelpchkbxlst=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt  extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter
-LibraryToBuildPDF=Library used to build PDF
-WarningUsingFPDF=Warning: Your <b>conf.php</b> contains directive <b>dolibarr_pdf_force_fpdf=1</b>. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.<br>To solve this and have a full support of PDF generation, please download <a href="http://www.tcpdf.org/" target="_blank">TCPDF library</a>, then comment or remove the line <b>$dolibarr_pdf_force_fpdf=1</b>, and add instead <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b>
-LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:<br>1 : local tax apply on products and services without vat (localtax is calculated on amount without tax)<br>2 : local tax apply on products and services including vat (localtax is calculated on amount + main tax)<br>3 : local tax apply on products without vat (localtax is calculated on amount without tax)<br>4 : local tax apply on products including vat (vat is calculated on amount + main vat)<br>5 : local tax apply on services without vat (localtax is calculated on amount without tax)<br>6 : local tax apply on services including vat (localtax is calculated on amount + tax)
-SMS=SMS
-LinkToTestClickToDial=Enter a phone number to call to show a link to test the ClickToDial url for user <strong>%s</strong>
-RefreshPhoneLink=Refresh link
-LinkToTest=Clickable link generated for user <strong>%s</strong> (click phone number to test)
-KeepEmptyToUseDefault=Keep empty to use default value
-DefaultLink=Default link
-ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url)
-ExternalModule=External module - Installed into directory %s
-BarcodeInitForThirdparties=Mass barcode init for thirdparties
-BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services
-CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> records on <strong>%s</strong> %s without barcode defined.
-InitEmptyBarCode=Init value for next %s empty records
-EraseAllCurrentBarCode=Erase all current barcode values
-ConfirmEraseAllCurrentBarCode=Are you sure you want to erase all current barcode values ?
-AllBarcodeReset=All barcode values have been removed
-NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled into barcode module setup.
-NoRecordWithoutBarcodeDefined=No record with no barcode value defined.
+ExtrafieldMail = البريد الالكتروني
+ExtrafieldSelect =قائمة اختيار
+ExtrafieldSelectList =قائمة عقب جدول
+ExtrafieldSeparator=فاصل  بين الحقول
+ExtrafieldCheckBox=خانة اختيار
+ExtrafieldRadio=زر راديو
+ExtrafieldCheckBoxFromList=قائمة صندوق عقب جدول
+ExtrafieldLink=ربط على كائن
+ExtrafieldParamHelpselect=يجب أن تكون القائمة على شكل مفتاح،قيمة<br><br>. على سبيل المثال: 1-v1,2-v2,3-v3... كي تكون القائمة لا تعتمد على أخرى:1,valeur1|code_liste_parent:clef_parent<br>2,valeur2|code_liste_parent:clef_parent
+ExtrafieldParamHelpcheckbox=يجب أن تكون القائمة على شكل مفتاح، قيمة. على سبيل المثال: <br>1,valeur1<br>2,valeur2<br>3,valeur3<br>...
+ExtrafieldParamHelpradio=يجب أن تكون القائمة على شكل مفتاح، قيمة. على سبيل المثال: <br>1,valeur1<br>2,valeur2<br>3,valeur3<br>...
+ExtrafieldParamHelpsellist=القائمة تأتي من جدول <BR> بناء الجملة:... 
+ExtrafieldParamHelpchkbxlst=خانات الاختيارتأتي من جدول <BR> بناء الجملة:... 
+LibraryToBuildPDF=المكتبة المستخدمة لتوليد ...PDF
+WarningUsingFPDF=تحذير: يحتوي الملف conf.php  على التوجيه ...dolibarr_pdf_force_fpdf = 1 
+LocalTaxDesc=بعض البلدان تطبق 2 أو 3 الضرائب على كل خط الفاتورة...
+SMS=رسالةقصيرة
+LinkToTestClickToDial=أدخل رقم الهاتف للاتصال لاختبار الارتباط دعوة "ClickToDial" للمستخدم %s
+RefreshPhoneLink=تحديث الرابط 
+LinkToTest=صلة للنقر أنشئت للمستخدم (انقر على الرقم للاختبار)
+KeepEmptyToUseDefault=أترك الحقل فارغا للاستخدام الافتراضي
+DefaultLink=الارتباط الافتراضي
+ValueOverwrittenByUserSetup=يرجى ملاحظة أن هذه القيمة يمكن تجاوزها من قبل قيمة محددة لتكوين المستخدم (يمكن لكل مستخدم أن يكون URL خاص به "ClickToDial")
+ExternalModule=المساعد - مثبت في الدليل %s
+BarcodeInitForThirdparties=تهيئة الباركود بالجملة للأطراف الثالثة
+BarcodeInitForProductsOrServices=تهيئة أو تطهير الرموز الشريطية بالجملة للمنتجات أو الخدمات
+CurrentlyNWithoutBarCode=حاليا لديك %s تسجيلات على %s دون باركود محدد.
+InitEmptyBarCode=قم بتعيين القيم الفارغة للسجلات %s التالية
+EraseAllCurrentBarCode=مسح كافة قيم الباركود
+ConfirmEraseAllCurrentBarCode=هل أنت متأكد أنك تريد حذف كل القيم الباركود؟
+AllBarcodeReset=تم حذف كل الرموز الشريطية
+NoBarcodeNumberingTemplateDefined=لم يتم تفعيل أي نمط ترقيم الباركود في وحدة الباركود.
+NoRecordWithoutBarcodeDefined=لا يوجد سجل دون تعيين الباركود.
 
 # Modules
-Module0Name=& مجموعات المستخدمين
+Module0Name=المجموعات و المستخدمين
 Module0Desc=إدارة المستخدمين والمجموعات
-Module1Name=أطراف ثالثة
-Module1Desc=شركات الاتصالات وإدارة
+Module1Name=الأطراف الثالثة
+Module1Desc=شركات الاتصالات والإدارة
 Module2Name=التجارية
 Module2Desc=الإدارة التجارية
 Module10Name=المحاسبة
 Module10Desc=إدارة المحاسبة البسيطة (ارسال الفواتير والمدفوعات)
-Module20Name=مقترحات
-Module20Desc=مقترحات تجارية إدارة
-Module22Name=كتلة بالبريد الإلكتروني
-Module22Desc=البريد الإلكتروني الدمار إدارة
-Module23Name= طاقة
-Module23Desc= مراقبة استهلاك الطاقة
+Module20Name=فواتير أولية (المقترحات التجارية)
+Module20Desc=إدارة الفواتير الأولية 
+Module22Name=البريد الإلكتروني
+Module22Desc=إدارة البريد الإلكتروني بالجملة 
+Module23Name=الطاقة
+Module23Desc=مراقبة استهلاك الطاقة
 Module25Name=طلبات الزبائن
-Module25Desc=طلبات الزبائن إدارة
-Module30Name=فواتير
-Module30Desc=ويلاحظ اعتماد الفواتير وإدارة العملاء. فواتير إدارة الموردين
+Module25Desc=إدارة طلبات الزبائن
+Module30Name=فواتير و موجودات
+Module30Desc=إدارة فواتير و موجودات العملاء.إدارة  فواتير الموردين
 Module40Name=الموردين
-Module40Desc=الموردين وإدارة وشراء (الأوامر والفواتير)
-Module42Name=Syslog
-Module42Desc=قطع الأشجار مرافق (syslog)
-Module49Name=المحررين
-Module49Desc=المحررين إدارة
+Module40Desc=إدارة الموردين والمشتريات (الأوامر والفواتير)
+Module42Name=تسجيلات وآثار
+Module42Desc=إنشاءالتسجيلات (ملفات، syslogs، ...)
+Module49Name=برامج التحرير
+Module49Desc=إدارة برامج التحرير
 Module50Name=المنتجات
-Module50Desc=منتجات إدارة
+Module50Desc=إدارة المنتجات 
 Module51Name=الرسائل الجماعية
-Module51Desc=الدمار ورقة الرسائل الإدارية
-Module52Name=الاسهم
-Module52Desc=مخزون إدارة المنتجات
+Module51Desc=إدارة بعث الرسائل الجماعية
+Module52Name=المخزونات
+Module52Desc=إدارة مخازين المنتجات
 Module53Name=الخدمات
-Module53Desc=الخدمات الإدارية
-Module54Name=Contracts/Subscriptions
-Module54Desc=Management of contracts (services or reccuring subscriptions)
-Module55Name=Barcodes
-Module55Desc=Barcodes إدارة
+Module53Desc=إدارة الخدمات
+Module54Name=العقود / الاشتراكات
+Module54Desc=إدارة العقود (الخدمات أو الاشتراكات المتكررة)
+Module55Name=الرموز الشريطية
+Module55Desc=إدارة  الرموز الشريطية
 Module56Name=الخدمات الهاتفية
-Module56Desc=تكامل الخدمات الهاتفية
+Module56Desc=إدارة الخدمات الهاتفية
 Module57Name=أوامر دائمة
-Module57Desc=Standing orders and withdrawal management. Also includes generation of SEPA file for european countries.
+Module57Desc=الانسحابات
 Module58Name=ClickToDial
-Module58Desc=ClickToDial التكامل
+Module58Desc=إدماج أنظمة Asterisk,ClickToDial ...
 Module59Name=Bookmark4u
-Module59Desc=إضافة مهمة لتوليد Bookmark4u الحساب من حساب Dolibarr
+Module59Desc=إضافة مهمة لتوليد حساب Bookmark4u منذ حساب Dolibarr
 Module70Name=المداخلات
-Module70Desc=التدخلات الإدارية
-Module75Name=ويلاحظ نفقات رحلات
-Module75Desc=ونفقات الرحلات تلاحظ إدارة
-Module80Name=الإرسال
-Module80Desc=الإرسال وتسليم الأوامر الإدارية
-Module85Name=المصارف والنقد
-Module85Desc=إدارة حسابات مصرفية أو نقدا
-Module100Name=ExternalSite
-Module100Desc=وتشمل أي موقع خارجي في القوائم Dolibarr ومشاهدته في إطار Dolibarr
-Module105Name=ساعي البريد ورشفة
-Module105Desc=ساعي البريد أو SPIP واجهة وحدة عضو
+Module70Desc=إدارة المداخلات
+Module75Name=ملاحظات النفقات و الرحلات
+Module75Desc=إدارة ملاحظات النفقات و الرحلات
+Module80Name=المرسلات
+Module80Desc=إدارة المرسلات وإستلامات الزبائن 
+Module85Name=البنوك و الصناديق
+Module85Desc=إدارة البنوك و الصناديق
+Module100Name=مواقع خارجية
+Module100Desc=يزيد مواقع خارجية في قوائم Dolibarr وإعلانها في إطار Dolibarr
+Module105Name=Mailman و SPIP
+Module105Desc=Mailman و SPIP واجهة للوحدة "أعضاء"
 Module200Name=LDAP
-Module200Desc=دليل LDAP نمازتلا
+Module200Desc=التزامن مع دليل LDAP
 Module210Name=PostNuke
-Module210Desc=PostNuke التكامل
-Module240Name=بيانات الصادرات
-Module240Desc=أداة لتصدير Dolibarr datas (مساعدين)
-Module250Name=بيانات الاستيراد
-Module250Desc=أداة لاستيراد datas في Dolibarr (مساعدين)
+Module210Desc=التكامل مع PostNuke
+Module240Name=تصدير البيانات
+Module240Desc=أداة لتصديربيانات Dolibarr (عن طريق مساعد)
+Module250Name=استيراد البيانات 
+Module250Desc=أداة لاستيراد البيانات في Dolibarr (عن طريق مساعد)
 Module310Name=أعضاء
-Module310Desc=أعضاء إدارة المؤسسة
-Module320Name=تغذية RSS
-Module320Desc=إضافة تغذية RSS داخل الشاشة صفحة Dolibarr
-Module330Name=العناوين
-Module330Desc=العناوين إدارة
-Module400Name=Projects/Opportunities/Leads
-Module400Desc=Management of projects, opportunities or leads. You can then assign any element (invoice, order, proposal, intervention, ...) to a project and get a transversal view from the project view.
+Module310Desc=إدارة أعضاء جمعية
+Module320Name=تدفق RSS
+Module320Desc=إضافة تدفق RSS داخل شاشات صفحة Dolibarr
+Module330Name=إشارات مرجعية
+Module330Desc=إدارة إشارات مرجعية
+Module400Name=المشاريع / فرص التجارية
+Module400Desc=إدارة المشاريع / فرص التجارية
 Module410Name=Webcalendar
-Module410Desc=Webcalendar التكامل
-Module500Name=Special expenses (tax, social contributions, dividends)
-Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries
-Module510Name=Salaries
-Module510Desc=Management of employees salaries and payments
-Module520Name=Loan
-Module520Desc=Management of loans
-Module600Name=الإخطارات
-Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty)
+Module410Desc=واجهة مع الجدول الزمني Webcalendar 
+Module500Name=مصروفات خاصة (ضرائب,رسوم وأرباح)
+Module500Desc=إدارة المصروفات الخاصة (الضرائب,الرسوم والأرباح)
+Module510Name=الموظفين
+Module510Desc=إدارة مدفوعات أجور الموظفين
+Module520Name=القروض
+Module520Desc=إدارة القروض
+Module600Name=الإشعارات
+Module600Desc=إرسال بريد إلكتروني للإشعار على بعض صفقات لأحداث Dolibarr، إلى الجهات الثالثة (بعدما نفذ التكوين على كل طرف ثالث)
 Module700Name=التبرعات
-Module700Desc=التبرعات إدارة
-Module770Name=Expense Report
-Module770Desc=Management and claim expense reports (transportation, meal, ...)
-Module1120Name=Supplier commercial proposal
-Module1120Desc=Request supplier commercial proposal and prices
-Module1200Name=فرس النبي
-Module1200Desc=فرس النبي التكامل
+Module700Desc=إدارة التبرعات 
+Module770Name=ملاحظات النفقات
+Module770Desc=الإدارة والإبلاغ عن النفقات (النقل وجبات الطعام، ...)
+Module1120Name=الفواتير الأولية للموردين
+Module1120Desc=إدارة الفواتير الأولية للموردين
+Module1200Name=مانتيس
+Module1200Desc=التفاعل مع ال bug tracker مانتيس
 Module1400Name=المحاسبة
-Module1400Desc=المحاسبة الإدارية (ضعف الأحزاب)
-Module1520Name=Document Generation
-Module1520Desc=Mass mail document generation
-Module1780Name=Tags/Categories
-Module1780Desc=Create tags/category (products, customers, suppliers, contacts or members)
+Module1400Desc=إدارة المحاسبة (طرف مزدوج)
+Module1520Name=توليد الوثائق
+Module1520Desc=توليد وثائق البريد المباشر
+Module1780Name=تسميات / تصنيفات
+Module1780Desc=خلق تسميات / تصنيفات (بالنسبة للمنتجات والعملاء والموردين، والاتصالات و أفراد) 
 Module2000Name=Fckeditor
-Module2000Desc=سوغ محرر
-Module2200Name=Dynamic Prices
-Module2200Desc=Enable the usage of math expressions for prices
-Module2300Name=Cron
-Module2300Desc=Scheduled job management
+Module2000Desc=يسمح بمصادرة بعض الحقول النصية بفضل محرر متقدم
+Module2200Name=أسعار محسوبة ديناميكيا
+Module2200Desc=أفعال استخدام للعبارات الرياضية
+Module2300Name=أشغال مبرمجة
+Module2300Desc=أشغال مبرمجة
 Module2400Name=جدول الأعمال
 Module2400Desc=الأعمال / الإدارة المهام وجدول الأعمال
 Module2500Name=إدارة المحتوى الإلكتروني
 Module2500Desc=حفظ وتبادل الوثائق
-Module2600Name=WebServices
-Module2600Desc=تمكين خدمات الويب Dolibarr الملقم
-Module2650Name=WebServices (client)
-Module2650Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Supplier orders supported only for the moment)
+Module2600Name=خدمات الويب
+Module2600Desc=تمكين خدمات الويب Dolibarr 
+Module2650Name=خدمات الويب(الزبائن)
+Module2650Desc=تفعيل خدمات العملاء على شبكة الإنترنت (يمكن استخدامها لدفع البيانات لخادمين خارجيين. أوامر الموردين مستعملة فقط في الوقت الحاضر)
 Module2700Name=غرفتر
-Module2700Desc=استخدام خدمة غرفتر على الانترنت (www.gravatar.com) لإظهار الصورة من المستخدمين / أعضاء (وجدت مع رسائل البريد الإلكتروني الخاصة بهم). في حاجة الى الوصول الى شبكة الانترنت
-Module2800Desc=FTP Client
+Module2700Desc=ااستخدام الخدمة عبر الإنترنت غرفتر (www.gravatar.com) لعرض الصور المستخدمين / الأعضاء (اعتمادا على بريدهم الإلكتروني ). تحتاج الوصول إلى الإنترنت.
+Module2800Desc=زبون FTP
 Module2900Name=GeoIPMaxmind
-Module2900Desc=GeoIP التحويلات Maxmind القدرات
+Module2900Desc=قدرات التحويلات GeoIP Maxmind
 Module3100Name=Skype
-Module3100Desc=Add a Skype button into card of adherents / third parties / contacts
+Module3100Desc=إضافة زر سكايب في الأوراق المنضمة /الأطراف  الثالثة / الاتصالات
 Module5000Name=شركة متعددة
-Module5000Desc=يسمح لك لإدارة الشركات المتعددة
-Module6000Name=Workflow
-Module6000Desc=Workflow management
-Module20000Name=Leave Requests management
-Module20000Desc=Declare and follow employees leaves requests
-Module39000Name=Product lot
-Module39000Desc=Lot or serial number, eat-by and sell-by date management on products
+Module5000Desc=إدارة الشركات المتعددة
+Module6000Name=تدفق العمل
+Module6000Desc=إدارة تدفق العمل
+Module20000Name=إدارة طلبات إجازة
+Module20000Desc=إعلان ومتابعة  طلبات إجازة للموظفين
+Module39000Name=المنتجات بالقسمة و الرقم التسلسلي
+Module39000Desc=إدارة المنتجات بالقسمة أو الرقم التسلسلي.
 Module50000Name=PayBox
-Module50000Desc=وحدة لتقديم على صفحة الدفع عبر الإنترنت عن طريق بطاقة الائتمان مع PayBox
+Module50000Desc=وحدة لتقديم الدفع على صفحة الإنترنت عن طريق بطاقة الائتمان مع PayBox
 Module50100Name=نقطة البيع
-Module50100Desc=نقطة بيع وحدة
+Module50100Desc=إدارة وحدة نقطة بيع 
 Module50200Name=باي بال
-Module50200Desc=وحدة لتقديم على صفحة الدفع عبر الإنترنت عن طريق بطاقة الائتمان مع بايبال
-Module50400Name=Accounting (advanced)
-Module50400Desc=Accounting management (double parties)
+Module50200Desc=وحدة لتقديم الدفع على صفحة الإنترنت عن طريق بطاقة الائتمان مع  بايبال
+Module50400Name=المحاسبة (متقدمة)
+Module50400Desc=إدارة المحاسبة (طرف مزدوج)
 Module54000Name=PrintIPP
-Module54000Desc=Direct print (without opening the documents) using Cups IPP interface (Printer must be visible from server, and CUPS must be installe on server).
-Module55000Name=Open Poll
-Module55000Desc=Module to make online polls (like Doodle, Studs, Rdvz, ...)
-Module59000Name=Margins
-Module59000Desc=Module to manage margins
-Module60000Name=Commissions
-Module60000Desc=Module to manage commissions
+Module54000Desc=الطباعة المباشرة (دون فتح الوثيقة) باستخدام تفاعل  IPP (يجب أن تكون الطابعة مرئية من الخادم، يجب تثبيت CUPS على الخادم).
+Module55000Name=استطلاعات الرأي
+Module55000Desc=وحدة لدمجاستطلاعات الرأي  (مثلDoodle, Studs, Rdvz, ...)
+Module59000Name=الهوامش
+Module59000Desc=وحدة لإدارة الهوامش
+Module60000Name=اللجان
+Module60000Desc=وحدة لإدارة اللجان
 Permission11=قراءة الفواتير
-Permission12=خلق الفواتير
-Permission13=تعديل الفواتير
-Permission14=التحقق من صحة الفواتير
-Permission15=ارسال الفواتير عن طريق البريد الإلكتروني
-Permission16=خلق دفع الفواتير
-Permission19=حذف الفواتير
-Permission21=قراءة مقترحات تجارية
-Permission22=إنشاء / تعديل مقترحات تجارية
-Permission24=مصادقة على مقترحات تجارية
-Permission25=ارسال مقترحات تجارية
+Permission12=خلق فواتير الزبائن
+Permission13=تعديل فواتير الزبائن
+Permission14=التحقق من صحة فواتير الزبائن
+Permission15=ارسال فواتير الزبائن عن طريق البريد الإلكتروني
+Permission16=خلق دفع فواتير الزبائن
+Permission19=حذف فواتير الزبائن
+Permission21=قراءة المقترحات التجارية
+Permission22=إنشاء / تعديل المقترحات التجارية
+Permission24=مصادقة على المقترحات التجارية
+Permission25=ارسال المقترحات التجارية
 Permission26=وثيقة المقترحات التجارية
-Permission27=حذف مقترحات تجارية
-Permission28=الصادرات التجارية مقترحات
+Permission27=حذف المقترحات التجارية
+Permission28=تصدير المقترحات التجارية
 Permission31=قراءة المنتجات
 Permission32=إنشاء / تعديل المنتجات
 Permission34=حذف المنتجات
-Permission36=انظر / إدارة المنتجات المخفية
-Permission38=منتجات التصدير
-Permission41=قراءة المشاريع والمهام
-Permission42=إنشاء / تعديل مشاريع تعديل مهام بلدي المشاريع
-Permission44=حذف مشاريع
+Permission36=نظر / إدارة المنتجات المخفية
+Permission38=تصدير المنتجات 
+Permission41=قراءة المشاريع والمهام (المشتركة أو التي أنا بالاتصال معها)
+Permission42=إنشاء / تعديل المشاريع مهام (المشتركة أو التي أنا بالاتصال معها)
+Permission44=حذف المشاريع (المشتركة أو التي أنا بالاتصال معها)
 Permission61=قراءة التدخلات
 Permission62=إنشاء / تعديل التدخلات
 Permission64=حذف التدخلات
 Permission67=تصدير التدخلات
 Permission71=قراءة الأعضاء
-Permission72=إنشاء / تعديل أعضاء
-Permission74=حذف أعضاء
-Permission75=Setup types of membership
-Permission76=تصدير datas
+Permission72=إنشاء / تعديل الأعضاء
+Permission74=حذف الأعضاء
+Permission75=تكوين أنواع الأعضاء
+Permission76=تصدير الأعضاء
 Permission78=قراءة الاشتراكات
-Permission79=إنشاء / تعديل والاشتراكات
+Permission79=إنشاء / تعديل الاشتراكات
 Permission81=قراءة أوامر العملاء
 Permission82=إنشاء / تعديل أوامر العملاء
-Permission84=صحة أوامر العملاء
+Permission84=تأكيد أوامر العملاء
 Permission86=إرسال أوامر العملاء
-Permission87=وثيقة أوامر العملاء
+Permission87=إغلاق أوامر العملاء
 Permission88=إلغاء أوامر العملاء
 Permission89=حذف أوامر العملاء
 Permission91=قراءة المساهمات الاجتماعية وضريبة القيمة المضافة
@@ -952,7 +953,7 @@ DelaysOfToleranceBeforeWarning=محذرا من التأخير قبل التسا
 DelaysOfToleranceDesc=تتيح لك هذه الشاشة لتحديد التأخير قبل السماح تنبيه يقال على الشاشة مع picto ٪ ق لكل عنصر في وقت متأخر.
 Delays_MAIN_DELAY_ACTIONS_TODO=تأخير التسامح (أيام) قبل اتخاذ إجراءات في حالة تأهب على المخطط لم تتحقق
 Delays_MAIN_DELAY_ORDERS_TO_PROCESS=تأخير التسامح (أيام) قبل تنبيه على أوامر لم
-Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=التسامح التأخير (في أيام) قبل التنبيه على أوامر الموردين لم تتم معالجة حتى الآن
+Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=التسامح التأخير (في أيام) قبل التنبيه على أوامر الموردين لم تتم مديرة حتى الآن
 Delays_MAIN_DELAY_PROPALS_TO_CLOSE=التسامح التأخير (في يوم) في حالة تأهب على المقترحات المعروضة ليقفل
 Delays_MAIN_DELAY_PROPALS_TO_BILL=تأخير التسامح (أيام) قبل تنبيه بشأن المقترحات لا توصف
 Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=تأخير التسامح (في يوم) في حالة تأهب قبل يوم والخدمات لتفعيل
@@ -1109,7 +1110,7 @@ UsersSetup=شاهد الإعداد وحدة
 UserMailRequired=مطلوب بريد إلكتروني لإنشاء مستخدم جديد
 ##### Company setup #####
 CompanySetup=وحدة الإعداد للشركات
-CompanyCodeChecker=نموذج للجيل الثالث لقانون الأحزاب ومراجعة (عميل أو مورد)
+CompanyCodeChecker=وحدة للجيل الثالث لقانون الأحزاب ومراجعة (عميل أو مورد)
 AccountCodeManager=رمز وحدة لتوليد المحاسبة (عميل أو مورد)
 ModuleCompanyCodeAquarium=عودة رمز المحاسبة التي بناها: <br> يتبع %s بواسطة طرف ثالث رمز المورد عن مورد قانون المحاسبة، <br> يتبع %s بواسطة طرف ثالث رمز العملاء لعميل قانون المحاسبة.
 ModuleCompanyCodePanicum=العودة فارغة مدونة المحاسبة.
@@ -1153,9 +1154,9 @@ WebCalCheckWebcalSetup=ربما Webcal نميطة الإعداد غير صحيح
 BillsSetup=وحدة إعداد الفواتير
 BillsDate=تاريخ الفواتير
 BillsNumberingModule=الفواتير والقروض وتلاحظ وحدة الترقيم
-BillsPDFModules=فاتورة نماذج الوثائق
+BillsPDFModules=فاتورة وحدات الوثائق
 CreditNoteSetup=علما الإعداد وحدة الائتمان
-CreditNotePDFModules=المذكرة وثيقة من وثائق الائتمان النماذج
+CreditNotePDFModules=المذكرة وثيقة من وثائق الائتمان الوحدات
 CreditNote=علما الائتمان
 CreditNotes=ويلاحظ الائتمان
 ForceInvoiceDate=قوة تاريخ الفاتورة تاريخ المصادقة على
@@ -1170,8 +1171,8 @@ WatermarkOnDraftInvoices=Watermark on draft invoices (none if empty)
 PropalSetup=وحدة إعداد مقترحات تجارية
 CreateForm=خلق أشكال
 NumberOfProductLines=عدد خطوط الإنتاج
-ProposalsNumberingModules=اقتراح نماذج تجارية الترقيم
-ProposalsPDFModules=اقتراح نماذج الوثائق التجارية
+ProposalsNumberingModules=اقتراح وحدات تجارية الترقيم
+ProposalsPDFModules=اقتراح وحدات الوثائق التجارية
 ClassifiedInvoiced=صنف في الفاتورة
 HideTreadedPropal=إخفاء تعامل تجاري المقترحات الواردة في قائمة
 AddShippingDateAbility=إضافة قدرة الشحن والتاريخ
@@ -1190,7 +1191,7 @@ BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination o
 ##### Orders #####
 OrdersSetup=أوامر إدارة الإعداد
 OrdersNumberingModules=أوامر الترقيم نمائط
-OrdersModelModule=وثائق من أجل النماذج
+OrdersModelModule=وثائق من أجل الوحدات
 HideTreadedOrders=Hide the treated or cancelled orders in the list
 ValidOrderAfterPropalClosed=للمصادقة على النظام بعد اقتراح أوثق ، لا يجعل من الممكن للخطوة من جانب النظام المؤقت
 FreeLegalTextOnOrders=بناء على أوامر النص الحر
@@ -1206,7 +1207,7 @@ Bookmark4uSetup=إعداد وحدة Bookmark4u
 InterventionsSetup=وحدة التدخل الإعداد
 FreeLegalTextOnInterventions=حرر النص على وثائق التدخل
 FicheinterNumberingModules=الترقيم وحدات التدخل
-TemplatePDFInterventions=تدخل بطاقة نماذج الوثائق
+TemplatePDFInterventions=تدخل بطاقة وحدات الوثائق
 WatermarkOnDraftInterventionCards=Watermark on intervention card documents (none if empty)
 ##### Contracts #####
 ContractsSetup=Contracts/Subscriptions module setup
@@ -1253,7 +1254,7 @@ LDAPUserDn=المستخدمين DN
 LDAPUserDnExample=Complete DN (ex: ou=users,dc=society,dc=DN الكامل (مثلا : où= المستخدمين ، العاصمة= المجتمع ، العاصمة= كوم)
 LDAPGroupDn=الجماعات DN
 LDAPGroupDnExample=Complete DN (ex: ou=groups,dc=society,dc=DN الكامل (مثلا : où= المجموعات العاصمة= المجتمع ، العاصمة= كوم)
-LDAPServerExample=خادم معالجة (مثلا : localhost ، 192.168.0.2 ، ldaps : / / ldap.example.com /)
+LDAPServerExample=خادم مديرة (مثلا : localhost ، 192.168.0.2 ، ldaps : / / ldap.example.com /)
 LDAPServerDnExample=Complete DN (ex: dc=company,dc=DN الكامل (مثلا : العاصمة= شركة العاصمة= كوم)
 LDAPPasswordExample=كلمة السر الادارية
 LDAPDnSynchroActive=مستخدمين والمجموعات التزامن
@@ -1442,14 +1443,14 @@ ListOfAvailableNotifications=List of events you can set notification on, for eac
 FixedEmailTarget=Fixed email target
 ##### Sendings #####
 SendingsSetup=ارسال وحدة الإعداد
-SendingsReceiptModel=ارسال استلام نموذج
+SendingsReceiptModel=ارسال استلام وحدة
 SendingsNumberingModules=Sendings ترقيم الوحدات
 SendingsAbility=Support shipment sheets for customer deliveries
 NoNeedForDeliveryReceipts=في معظم الحالات ، تستخدم الإرسال إيصالات سواء صحائف لتسليم العميل (قائمة المنتجات ارسال) ، وصحائف التي وقعت عليها recevied الزبون. حتى المنتج تسليم الإيصالات هي سمة مزدوجة ونادرا ما تفعيلها.
 FreeLegalTextOnShippings=Free text on shipments
 ##### Deliveries #####
 DeliveryOrderNumberingModules=تلقي شحنات المنتجات الترقيم وحدة
-DeliveryOrderModel=تلقي شحنات المنتجات النموذجية
+DeliveryOrderModel=تلقي شحنات المنتجات الوحدةية
 DeliveriesOrderAbility=دعم المنتجات تسليم الإيصالات
 FreeLegalTextOnDeliveryReceipts=نص حر بتسليم إيصالات
 ##### FCKeditor #####
@@ -1482,7 +1483,7 @@ MenuHandler=قائمة مناول
 MenuModule=مصدر في وحدة
 HideUnauthorizedMenu= إخفاء القوائم غير المصرح به (الرمادي)
 DetailId=معرف القائمة
-DetailMenuHandler=قائمة المعالج حيث تظهر قائمة جديدة
+DetailMenuHandler=قائمة المدير حيث تظهر قائمة جديدة
 DetailMenuModule=اسم وحدة قائمة في حال الدخول من وحدة
 DetailType=نوع القائمة (أعلى أو إلى اليسار)
 DetailTitre=قائمة علامة أو بطاقة رمز للترجمة
@@ -1530,7 +1531,7 @@ AGENDA_DEFAULT_FILTER_TYPE=Set automatically this type of event into search filt
 AGENDA_DEFAULT_FILTER_STATUS=Set automatically this status for events into search filter of agenda view
 AGENDA_DEFAULT_VIEW=Which tab do you want to open by default when selecting menu Agenda
 ##### ClickToDial #####
-ClickToDialDesc=هذا النموذج يسمح لإضافة رمز بعد رقم هاتف Dolibarr الاتصالات. وهناك اضغط على هذه الأيقونة ، سوف يطلب من أحد serveur معينة مع تحديد عنوان لكم أدناه. ويمكن استخدام هذه الكلمة لدعوة من مركز نظام Dolibarr التي يمكن الاتصال على رقم الهاتف هذا المسبار النظام على سبيل المثال.
+ClickToDialDesc=هذا الوحدة يسمح لإضافة رمز بعد رقم هاتف Dolibarr الاتصالات. وهناك اضغط على هذه الأيقونة ، سوف يطلب من أحد serveur معينة مع تحديد عنوان لكم أدناه. ويمكن استخدام هذه الكلمة لدعوة من مركز نظام Dolibarr التي يمكن الاتصال على رقم الهاتف هذا المسبار النظام على سبيل المثال.
 ##### Point Of Sales (CashDesk) #####
 CashDesk=نقاط البيع
 CashDeskSetup=مكتب الإعداد وحدة نقدية
@@ -1545,7 +1546,7 @@ StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatib
 CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required.
 ##### Bookmark #####
 BookmarkSetup=إعداد وحدة المرجعية
-BookmarkDesc=هذا النموذج يسمح لك لإدارة العناوين. يمكنك أيضا إضافة أي Dolibarr اختصارات لصفحات أو مواقع الويب externale على القائمة اليمنى.
+BookmarkDesc=هذا الوحدة يسمح لك لإدارة العناوين. يمكنك أيضا إضافة أي Dolibarr اختصارات لصفحات أو مواقع الويب externale على القائمة اليمنى.
 NbOfBoomarkToShow=أكبر عدد ممكن من العناوين تظهر في القائمة اليمنى
 ##### WebServices #####
 WebServicesSetup=إعداد وحدة Webservices
@@ -1561,7 +1562,7 @@ BankOrderGlobalDesc=عرض عام النظام
 BankOrderES=الأسبانية
 BankOrderESDesc=الأسبانية عرض النظام
 ##### Multicompany #####
-MultiCompanySetup=نموذج متعدد شركة الإعداد
+MultiCompanySetup=وحدة متعدد شركة الإعداد
 ##### Suppliers #####
 SuppliersSetup=المورد الإعداد وحدة
 SuppliersCommandModel=قالب كاملة من أجل المورد (logo...)
@@ -1578,7 +1579,7 @@ TestGeoIPResult=اختبار لتحويل الملكية الفكرية --> ال
 ##### Projects #####
 ProjectsNumberingModules=مشاريع وحدة الترقيم
 ProjectsSetup=مشروع إعداد وحدة
-ProjectsModelModule=المشروع نموذج التقرير وثيقة
+ProjectsModelModule=المشروع وحدة التقرير وثيقة
 TasksNumberingModules=Tasks numbering module
 TaskModelModule=Tasks reports document model
 ##### ECM (GED) #####
diff --git a/htdocs/langs/ar_SA/install.lang b/htdocs/langs/ar_SA/install.lang
index b805743f44f987ba6d24e5fc35fb3e1a9424ffdd..7536fe5bf4aa68a62ac9efd59c36651ba815df21 100644
--- a/htdocs/langs/ar_SA/install.lang
+++ b/htdocs/langs/ar_SA/install.lang
@@ -2,19 +2,19 @@
 InstallEasy=فقط اتبع التعليمات خطوة بخطوة.
 MiscellaneousChecks=التحقق من الشروط الأساسية
 DolibarrWelcome=مرحبا بكم في Dolibarr
-ConfFileExists=ملفات موجودة <b>٪ ق.</b>
-ConfFileDoesNotExists=ملفات <b>ل ٪</b> لا وجود له!
-ConfFileDoesNotExistsAndCouldNotBeCreated=ملفات <b>ل ٪</b> لا وجود له وأنه لا يمكن خلق!
-ConfFileCouldBeCreated=ملفات <b>ل ٪</b> ويمكن أن تنشأ.
-ConfFileIsNotWritable=ملفات <b>٪ ق</b> ليست للكتابة. التحقق من الأذونات. أولا لتركيب وخدمة الويب الخاص بك يجب أن تمنح ليكون قادرا على الكتابة في هذا الملف خلال عملية التهيئة ( "chmod 666" على سبيل المثال ، مثل نظام التشغيل يونكس).
-ConfFileIsWritable=ملفات للكتابة هو <b>٪ ق.</b>
-ConfFileReload=تحديث جميع المعلومات من ملف التكوين.
-PHPSupportSessions=ويدعم هذا PHP الدورات.
-PHPSupportPOSTGETOk=ويدعم هذا PHP المتغيرات والحصول على الوظائف.
-PHPSupportPOSTGETKo=فمن الممكن PHP الإعداد الخاص بك لا يدعم الوظائف المتغيرات و / أو الحصول عليه. التحقق من اتصالك <b>variables_order</b> معلمة في php.ini.
-PHPSupportGD=PHP هذا الدعم البيانية ش ج المهام.
-PHPSupportUTF8=PHP دعم UTF8 هذه المهام.
-PHPMemoryOK=الحد الأقصى الخاص بك PHP دورة الذاكرة ومن المقرر <b>٪ ق.</b> وينبغي أن يكون هذا كافيا.
+ConfFileExists=ملف الإعداد <b>%s</b> موجود  مسبقاً
+ConfFileDoesNotExists=ملف الإعداد <b>%s</b> غير موجود
+ConfFileDoesNotExistsAndCouldNotBeCreated=ملف الإعداد <b>%s</b> مفقود ولا يمكن إنشائه.
+ConfFileCouldBeCreated=يمكن إنشاء ملف الإعداد <b>%s</b>
+ConfFileIsNotWritable=لا يمكن الكتابة الى ملف الإعداد <b>%s</b>. تحقق من الصلاحيات. اذا كان هذا التنصيب هو الأول، تحقق من أن السيرفر قادر ولديه جميع صلاحيات الكتابة والقراءة خلال عملية التنصيب، مثال: (chmod 666) لمستخدمي سيرفرات يونكس.
+ConfFileIsWritable=ملف الإعداد <b>%s</b> قابل للكتابة.
+ConfFileReload=إعادة تحميل جميع المعلومات من ملف الإعداد.
+PHPSupportSessions=يدعم هذا الـ PHP ميزة الجلسات الزمنية.
+PHPSupportPOSTGETOk=يدعم هذا الـ PHP وظائف POST و GET.
+PHPSupportPOSTGETKo=من المحتمل أن نسخة الـ PHP لديك لاتدعم وظائف POST - GET. تحقق من <b>variables_order</b> في ملف php.ini
+PHPSupportGD=يدعم اصدار الـ PHP هذا وظائف GD الرسومية.
+PHPSupportUTF8=يدعم هذاا الاصدار من PHP وظائف الترميز UTF8.
+PHPMemoryOK=تم إعداد الجلسة الزمنية للذاكرة في  PHP الى <b>%s</b> . من المفترض ان تكون كافية.
 PHPMemoryTooLow=الحد الأقصى الخاص بك PHP دورة الذاكرة ومن المقرر <b>٪ ق</b> بايت. لهذا ينبغي أن يكون منخفضا جدا. تغيير <b>php.ini</b> وضع <b>memory_limit</b> المعلم إلى ما لا يقل عن <b>٪ ق</b> بايت.
 Recheck=اضغط هنا لمزيد من الاختبار ذو معنى
 ErrorPHPDoesNotSupportSessions=PHP تركيب الخاص بك لا يدعم الدورات. هذه الميزة هو مطلوب لجعل العمل Dolibarr. التحقق من اتصالك PHP الإعداد.
diff --git a/htdocs/langs/ca_ES/accountancy.lang b/htdocs/langs/ca_ES/accountancy.lang
index bb9b358c045f01051eecca5063c4127d6cb21672..00a9929f987df2b06382a167ce577c79b72db5a4 100644
--- a/htdocs/langs/ca_ES/accountancy.lang
+++ b/htdocs/langs/ca_ES/accountancy.lang
@@ -1,19 +1,19 @@
 # Dolibarr language file - en_US - Accounting Expert
 CHARSET=UTF-8
 
-Accounting=Accounting
-Globalparameters=Global parameters
-Chartofaccounts=Chart of accounts
-Fiscalyear=Fiscal years
-Menuaccount=Accounting accounts
+Accounting=Comptabilitat experta
+Globalparameters=Paràmetres globals
+Chartofaccounts=Pla comptable
+Fiscalyear=Anys fiscals
+Menuaccount=Comptes de comptabilitat
 Menuthirdpartyaccount=Thirdparty accounts
-MenuTools=Tools
+MenuTools=Utilitats
 
 ConfigAccountingExpert=Configuration of the module accounting expert
 Journaux=Journals
 JournalFinancial=Financial journals
 Exports=Exports
-Export=Export
+Export=Exporta
 Modelcsv=Model of export
 OptionsDeactivatedForThisExportModel=For this export model, options are deactivated
 Selectmodelcsv=Select a model of export
@@ -124,8 +124,8 @@ CustomerInvoicePayment=Payment of invoice customer
 
 ThirdPartyAccount=Thirdparty account
 
-NewAccountingMvt=New movement
-NumMvts=Number of movement
+NewAccountingMvt=Nou moviment
+NumMvts=Nombre de moviment
 ListeMvts=List of the movement
 ErrorDebitCredit=Debit and Credit cannot have a value at the same time
 
@@ -134,7 +134,7 @@ DescThirdPartyReport=Consult here the list of the thirdparty customers and the s
 
 ListAccounts=List of the accounting accounts
 
-Pcgversion=Version of the plan
+Pcgversion=Versió del pla
 Pcgtype=Class of account
 Pcgsubtype=Under class of account
 Accountparent=Root of the account
diff --git a/htdocs/langs/ca_ES/trips.lang b/htdocs/langs/ca_ES/trips.lang
index 5e9ca6a8d9f74f416c00841a7c5389f456902168..47d44923fa4272d96a951bb2ff4d690e8e59687d 100644
--- a/htdocs/langs/ca_ES/trips.lang
+++ b/htdocs/langs/ca_ES/trips.lang
@@ -32,14 +32,14 @@ ConfirmDeleteLine=Are you sure you want to delete this line ?
 PDFStandardExpenseReports=Standard template to generate a PDF document for expense report
 ExpenseReportLine=Expense report line
 TF_OTHER=Altre
-TF_TRANSPORTATION=Transportation
+TF_TRANSPORTATION=Transport
 TF_LUNCH=Dieta
 TF_METRO=Metro
-TF_TRAIN=Train
+TF_TRAIN=Tren
 TF_BUS=Bus
-TF_CAR=Car
-TF_PEAGE=Toll
-TF_ESSENCE=Fuel
+TF_CAR=Cotxe
+TF_PEAGE=Peatge
+TF_ESSENCE=Combustible
 TF_HOTEL=Hostel
 TF_TAXI=Taxi
 
@@ -75,7 +75,7 @@ DATE_PAIEMENT=Payment date
 TO_PAID=Pay
 BROUILLONNER=Reopen
 SendToValid=Sent to approve
-ModifyInfoGen=Edit
+ModifyInfoGen=Edita
 ValidateAndSubmit=Validate and submit for approval
 
 NOT_VALIDATOR=You are not allowed to approve this expense report
diff --git a/htdocs/langs/cs_CZ/accountancy.lang b/htdocs/langs/cs_CZ/accountancy.lang
index bb9b358c045f01051eecca5063c4127d6cb21672..62ec8d5c6ade16db5ac64d204ee32ff2945dc345 100644
--- a/htdocs/langs/cs_CZ/accountancy.lang
+++ b/htdocs/langs/cs_CZ/accountancy.lang
@@ -1,160 +1,160 @@
 # Dolibarr language file - en_US - Accounting Expert
 CHARSET=UTF-8
 
-Accounting=Accounting
-Globalparameters=Global parameters
-Chartofaccounts=Chart of accounts
-Fiscalyear=Fiscal years
-Menuaccount=Accounting accounts
-Menuthirdpartyaccount=Thirdparty accounts
-MenuTools=Tools
-
-ConfigAccountingExpert=Configuration of the module accounting expert
-Journaux=Journals
-JournalFinancial=Financial journals
-Exports=Exports
+Accounting=Účetnictví
+Globalparameters=Globální parametry
+Chartofaccounts=Graf účtů
+Fiscalyear=Fiskální roky
+Menuaccount=Účetní závěrka
+Menuthirdpartyaccount=Účty třetích stran
+MenuTools=Nástroje
+
+ConfigAccountingExpert=Konfigurace modulu účetního experta
+Journaux=Deníky
+JournalFinancial=Finanční deníky
+Exports=Exporty
 Export=Export
-Modelcsv=Model of export
-OptionsDeactivatedForThisExportModel=For this export model, options are deactivated
-Selectmodelcsv=Select a model of export
-Modelcsv_normal=Classic export
-Modelcsv_CEGID=Export towards CEGID Expert
-BackToChartofaccounts=Return chart of accounts
-Back=Return
-
-Definechartofaccounts=Define a chart of accounts
-Selectchartofaccounts=Select a chart of accounts
-Validate=Validate
-Addanaccount=Add an accounting account
-AccountAccounting=Accounting account
-Ventilation=Breakdown
-ToDispatch=To dispatch
-Dispatched=Dispatched
-
-CustomersVentilation=Breakdown customers
-SuppliersVentilation=Breakdown suppliers
-TradeMargin=Trade margin
-Reports=Reports
-ByCustomerInvoice=By invoices customers
-ByMonth=By Month
-NewAccount=New accounting account
-Update=Update
-List=List
-Create=Create
-UpdateAccount=Modification of an accounting account
-UpdateMvts=Modification of a movement
-WriteBookKeeping=Record accounts in general ledger
-Bookkeeping=General ledger
-AccountBalanceByMonth=Account balance by month
-
-AccountingVentilation=Breakdown accounting
-AccountingVentilationSupplier=Breakdown accounting supplier
-AccountingVentilationCustomer=Breakdown accounting customer
-Line=Line
-
-CAHTF=Total purchase supplier HT
-InvoiceLines=Lines of invoice to be ventilated
-InvoiceLinesDone=Ventilated lines of invoice
-IntoAccount=In the accounting account
-
-Ventilate=Ventilate
-VentilationAuto=Automatic breakdown
-
-Processing=Processing
-EndProcessing=The end of processing
-AnyLineVentilate=Any lines to ventilate
-SelectedLines=Selected lines
-Lineofinvoice=Line of invoice
-VentilatedinAccount=Ventilated successfully in the accounting account
-NotVentilatedinAccount=Not ventilated in the accounting account
-
-ACCOUNTING_SEPARATORCSV=Column separator in export file
-
-ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to be breakdown shown by page (maximum recommended : 50)
-ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the breakdown pages "Has to breakdown" by the most recent elements
-ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the breakdown pages "Breakdown" by the most recent elements
-
-AccountLength=Length of the accounting accounts shown in Dolibarr
-AccountLengthDesc=Function allowing to feign a length of accounting account by replacing spaces by the zero figure. This function touches only the display, it does not modify the accounting accounts registered in Dolibarr. For the export, this function is necessary to be compatible with certain software.
-ACCOUNTING_LENGTH_GACCOUNT=Length of the general accounts
-ACCOUNTING_LENGTH_AACCOUNT=Length of the third party accounts
-
-ACCOUNTING_SELL_JOURNAL=Sell journal
-ACCOUNTING_PURCHASE_JOURNAL=Purchase journal
-ACCOUNTING_BANK_JOURNAL=Bank journal
-ACCOUNTING_CASH_JOURNAL=Cash journal
-ACCOUNTING_MISCELLANEOUS_JOURNAL=Miscellaneous journal
-ACCOUNTING_SOCIAL_JOURNAL=Social journal
-
-ACCOUNTING_ACCOUNT_TRANSFER_CASH=Account of transfer
-ACCOUNTING_ACCOUNT_SUSPENSE=Account of wait
-
-ACCOUNTING_PRODUCT_BUY_ACCOUNT=Accounting account by default for bought products (if not defined in the product sheet)
-ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Accounting account by default for the sold products (if not defined in the product sheet)
-ACCOUNTING_SERVICE_BUY_ACCOUNT=Accounting account by default for the bought services (if not defined in the service sheet)
-ACCOUNTING_SERVICE_SOLD_ACCOUNT=Accounting account by default for the sold services (if not defined in the service sheet)
-
-Doctype=Type of document
-Docdate=Date
+Modelcsv=Model exportu
+OptionsDeactivatedForThisExportModel=Možnosti pro tento exportní model jsou deaktivovány
+Selectmodelcsv=Vyberte způsob exportu
+Modelcsv_normal=Klasický export
+Modelcsv_CEGID=Export směrem CEGID Expert
+BackToChartofaccounts=Návrat účtové osnovy
+Back=Návrat
+
+Definechartofaccounts=Definovat účtové osnovy
+Selectchartofaccounts=Vyberte účtové osnovy
+Validate=Potvrdit
+Addanaccount=Přidat účetní účet
+AccountAccounting=Účetní účet
+Ventilation=Přerušení
+ToDispatch=Nahlásit
+Dispatched=Odesláno
+
+CustomersVentilation=Členění zákazníků
+SuppliersVentilation=Členění dodvatelů
+TradeMargin=Obchodní marže
+Reports=Zprávy
+ByCustomerInvoice=Fakturováno zákazníky
+ByMonth=Měsíčně
+NewAccount=Nový účetní účet
+Update=Aktualizovat
+List=Seznam
+Create=Vytvořit
+UpdateAccount=Změna účetního účtu
+UpdateMvts=Změna pohybu
+WriteBookKeeping=Účetní záznamy v hlavní účetní knize
+Bookkeeping=Hlavní účetní kniha
+AccountBalanceByMonth=Zůstatek na účtu podle měsíce
+
+AccountingVentilation=Členění účetnictví
+AccountingVentilationSupplier=Členění účetnictví dodavatel
+AccountingVentilationCustomer=Členění účetnictví zákazník
+Line=Linka
+
+CAHTF=Celkové platby dodavatele HT
+InvoiceLines=Řádky faktury, které mají být prověřeny
+InvoiceLinesDone=Prověření řádků faktury
+IntoAccount=V účetním účtu 
+
+Ventilate=Prověřit
+VentilationAuto=Automatické členění
+
+Processing=Pracuji .....
+EndProcessing=Konec zpracování
+AnyLineVentilate=Prověřit všechny řádky
+SelectedLines=Vybrané řádky
+Lineofinvoice=Řádky faktury
+VentilatedinAccount=Úspěšně prověření v účetním účtu
+NotVentilatedinAccount=Neprověřeno v účetním účtu
+
+ACCOUNTING_SEPARATORCSV=Oddělovač sloupců v souboru exportu
+
+ACCOUNTING_LIMIT_LIST_VENTILATION=Počet prvků, které mají být zobrazeny rozdělením podle stránky (doporučené maximum: 50)
+ACCOUNTING_LIST_SORT_VENTILATION_TODO=Začněte třídění rozkladných stránek "Má k rozdělení" nejnovějšími elementy
+ACCOUNTING_LIST_SORT_VENTILATION_DONE=Začněte třídění rozpisu stránek "Breakdown", podle nejnovějších prvků
+
+AccountLength=Délka účetnické osnovy uvedené v Dolibarr
+AccountLengthDesc=Funkce povolující simulovat délku účetního účtu nahrazením místa prostřednictvím nulového obrázku. Tato funkce se týká pouze zobrazení, to nemění účetní účty zaregistrované v Dolibarr. Pro export této funkce je nutné, aby byla kompatibilní s daným softwarem.
+ACCOUNTING_LENGTH_GACCOUNT=Délka hlavních účtů
+ACCOUNTING_LENGTH_AACCOUNT=Délka účtů třetích stran
+
+ACCOUNTING_SELL_JOURNAL=Prodejní deník
+ACCOUNTING_PURCHASE_JOURNAL=Nákupní deník
+ACCOUNTING_BANK_JOURNAL=Bankovní deník
+ACCOUNTING_CASH_JOURNAL=Peněžní deník
+ACCOUNTING_MISCELLANEOUS_JOURNAL=Ostatní deník
+ACCOUNTING_SOCIAL_JOURNAL=Sociální deník
+
+ACCOUNTING_ACCOUNT_TRANSFER_CASH=Převodní účet
+ACCOUNTING_ACCOUNT_SUSPENSE=Čekající účet
+
+ACCOUNTING_PRODUCT_BUY_ACCOUNT=Účetní účet ve výchozím nastavení pro zakoupené produkty (pokud není definován v listu produktu)
+ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Účetní účet ve výchozím nastavení pro prodané produkty (pokud není definován v listu produktu)
+ACCOUNTING_SERVICE_BUY_ACCOUNT=Účetní účet ve výchozím nastavení pro zakoupené služby (pokud není definován v servisním listu)
+ACCOUNTING_SERVICE_SOLD_ACCOUNT=Účetní účet ve výchozím nastavení pro prodané služby (pokud není definován v servisním listu)
+
+Doctype=Typ dokumentu
+Docdate=Datum
 Docref=Reference
-Numerocompte=Account
-Code_tiers=Thirdparty
-Labelcompte=Label account
-Debit=Debit
-Credit=Credit
-Amount=Amount
+Numerocompte=Účet
+Code_tiers=Třetí strana
+Labelcompte=Štítek účtu
+Debit=Debet
+Credit=Kredit
+Amount=Částka
 Sens=Sens
-Codejournal=Journal
+Codejournal=Deník
 
-DelBookKeeping=Delete the records of the general ledger
+DelBookKeeping=Odstranit záznamy hlavní knihy
 
-SellsJournal=Sells journal
-PurchasesJournal=Purchases journal
-DescSellsJournal=Sells journal
-DescPurchasesJournal=Purchases journal
-BankJournal=Bank journal
-DescBankJournal=Bank journal including all the types of payments other than cash
-CashJournal=Cash journal
-DescCashJournal=Cash journal including the type of payment cash
+SellsJournal=Prodejní denák
+PurchasesJournal=Nákupní deník
+DescSellsJournal=Prodejní deník
+DescPurchasesJournal=Nákupní deník
+BankJournal=Bankovní deník
+DescBankJournal=Bankovní deník včetně všech typů jiných než hotovostních plateb
+CashJournal=Peněžní deník
+DescCashJournal=Peněžní deník včetně typů platby v hotovosti
 
-CashPayment=Cash Payment
+CashPayment=Platba v hotovosti
 
-SupplierInvoicePayment=Payment of invoice supplier
-CustomerInvoicePayment=Payment of invoice customer
+SupplierInvoicePayment=Platba dodavatelské faktury
+CustomerInvoicePayment=Platba zákaznické faktury
 
-ThirdPartyAccount=Thirdparty account
+ThirdPartyAccount=Účet třetí strany
 
-NewAccountingMvt=New movement
-NumMvts=Number of movement
-ListeMvts=List of the movement
-ErrorDebitCredit=Debit and Credit cannot have a value at the same time
+NewAccountingMvt=Nový pohyb
+NumMvts=Číslo pohybu
+ListeMvts=Seznam pohybů
+ErrorDebitCredit=Debetní a kreditní nemůže mít hodnotu ve stejnou dobu
 
-ReportThirdParty=List thirdparty account
-DescThirdPartyReport=Consult here the list of the thirdparty customers and the suppliers and their accounting accounts
+ReportThirdParty=Seznam účtů třetí strany
+DescThirdPartyReport=Poraďte se zde seznam třetích stran, zákazníky a dodavateli a jejich účetní účty
 
-ListAccounts=List of the accounting accounts
+ListAccounts=Seznam účetních účtů
 
-Pcgversion=Version of the plan
-Pcgtype=Class of account
-Pcgsubtype=Under class of account
-Accountparent=Root of the account
-Active=Statement
+Pcgversion=Verze plánu
+Pcgtype=Třída účtu
+Pcgsubtype=Podle třídy účtu
+Accountparent=kořen účtu
+Active=Prohlášení
 
-NewFiscalYear=New fiscal year
+NewFiscalYear=Nový fiskální rok
 
-DescVentilCustomer=Consult here the annual breakdown accounting of your invoices customers
-TotalVente=Total turnover HT
-TotalMarge=Total sales margin
-DescVentilDoneCustomer=Consult here the list of the lines of invoices customers and their accounting account
-DescVentilTodoCustomer=Ventilate your lines of customer invoice with an accounting account
-ChangeAccount=Change the accounting account for lines selected by the account:
+DescVentilCustomer=Seznamte se zde s ročním rozdělením účetnictví faktur zákazníků
+TotalVente=Celkový obrat HT
+TotalMarge=Celkové tržby marže
+DescVentilDoneCustomer=Seznamte se zde se seznamem linek faktur zákazníků a jejich účetních účtů
+DescVentilTodoCustomer=Prověřte své řádky zákaznické faktury s účetním účtem.
+ChangeAccount=Změna účetních účtů pro řádky vybraných účtů:
 Vide=-
-DescVentilSupplier=Consult here the annual breakdown accounting of your invoices suppliers
-DescVentilTodoSupplier=Ventilate your lines of invoice supplier with an accounting account
-DescVentilDoneSupplier=Consult here the list of the lines of invoices supplier and their accounting account
+DescVentilSupplier=Poraďte se zde s ročním rozdělením účetnictví faktur dodavatelů
+DescVentilTodoSupplier=Prověřte zde své řádky dodavatelských faktur s účetním účtem
+DescVentilDoneSupplier=Poraďte se zde se seznamem linek faktur dodavatele a jejich účetních účtů 
 
-ValidateHistory=Validate Automatically
+ValidateHistory=Ověřit automaticky
 
-ErrorAccountancyCodeIsAlreadyUse=Error, you cannot delete this accounting account because it is used
+ErrorAccountancyCodeIsAlreadyUse=Chyba, nelze odstranit tento účetní účet, protože ho zrovna používáte
 
-FicheVentilation=Breakdown card
+FicheVentilation=Karta členění
diff --git a/htdocs/langs/cs_CZ/admin.lang b/htdocs/langs/cs_CZ/admin.lang
index 05b7ea91f2821bf13e08994fa2f268941f6b0731..c41c67ab5728d4fe75bed633b811ea879dc292a3 100644
--- a/htdocs/langs/cs_CZ/admin.lang
+++ b/htdocs/langs/cs_CZ/admin.lang
@@ -8,11 +8,11 @@ VersionExperimental=Experimentální
 VersionDevelopment=Vývoj
 VersionUnknown=Neznámý
 VersionRecommanded=Doporučené
-FileCheck=Files Integrity
-FilesMissing=Missing Files
-FilesUpdated=Updated Files
-FileCheckDolibarr=Check Dolibarr Files Integrity
-XmlNotFound=Xml File of Dolibarr Integrity Not Found
+FileCheck=Soubory Integrity
+FilesMissing=Chybějící soubory
+FilesUpdated=Aktualizované soubory
+FileCheckDolibarr=Zkontrolujte Dolibarr soubory Integrity
+XmlNotFound=Soubor XML ze Dolibarr integrity nebyly načteny
 SessionId=ID relace
 SessionSaveHandler=Manipulátor uložených relací
 SessionSavePath=Místo uložení relace
@@ -48,19 +48,19 @@ SecuritySetup=Bezpečnostní nastavení
 ErrorModuleRequirePHPVersion=Chyba, tento modul vyžaduje PHP verze %s nebo vyšší
 ErrorModuleRequireDolibarrVersion=Chyba, tento modul vyžaduje Dolibarr verze %s nebo vyšší
 ErrorDecimalLargerThanAreForbidden=Chyba, přesnost vyšší než <b>%s</b> není podporována.
-DictionarySetup=Dictionary setup
-Dictionary=Dictionaries
-Chartofaccounts=Chart of accounts
-Fiscalyear=Fiscal years
+DictionarySetup=Nastavení slovníku
+Dictionary=Slovníky
+Chartofaccounts=Graf účtů
+Fiscalyear=Fiskální roky
 ErrorReservedTypeSystemSystemAuto=Hodnota &quot;system&quot; a &quot;systemauto&quot; je vyhrazena. Můžete použít &quot;user&quot; k pŕidání vlastního záznamu
 ErrorCodeCantContainZero=Kód nemůže obsahovat hodnotu 0
-DisableJavascript=Disable JavaScript and Ajax functions (Recommended for blind person or text browsers)
+DisableJavascript=Vypnout JavaScript a Ajax funkce (Doporučuje se pro nevidomého či textové prohlížeče)
 ConfirmAjax=Použít Ajax potvrzovací okénka
 UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
-UseSearchToSelectCompany=Use autocompletion fields to choose third parties instead of using a list box.
+UseSearchToSelectCompany=Používat automatické doplňování polí pro výběr třetích stran namísto použití pole se seznamem.
 ActivityStateToSelectCompany= Přidat možnost filtru pro zobrazení / skrytí třetích stran, které jsou v současné době v činnosti nebo ji ukončili
 UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
-UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box).
+UseSearchToSelectContact=Používat automatické doplňování polí výběr kontaktu (namísto použití seznamu).
 DelaiedFullListToSelectCompany=Wait you press a key before loading content of thirdparties combo list (This may increase performance if you have a large number of thirdparties)
 DelaiedFullListToSelectContact=Wait you press a key before loading content of contact combo list (This may increase performance if you have a large number of contact)
 SearchFilter=Nastavení vyhledávání
@@ -113,9 +113,9 @@ OtherOptions=Další možnosti
 OtherSetup=Další nastavení
 CurrentValueSeparatorDecimal=Desetinný oddělovač
 CurrentValueSeparatorThousand=Oddělovač tisíců
-Destination=Destination
-IdModule=Module ID
-IdPermissions=Permissions ID
+Destination=Destinace
+IdModule=Modul ID
+IdPermissions=Oprávnění ID
 Modules=Moduly
 ModulesCommon=Hlavní moduly
 ModulesOther=Další moduly
@@ -127,7 +127,7 @@ LanguageBrowserParameter=Parametr %s
 LocalisationDolibarrParameters=Lokalizační parametry
 ClientTZ=Časové pásmo klienta (uživatele)
 ClientHour=Klientův čas (uživatelův)
-OSTZ=Server OS Time Zone
+OSTZ=Server OS Časové pásmo
 PHPTZ=Časové pásmo PHP serveru
 PHPServerOffsetWithGreenwich=Vyrovnání PHP serveru se šířkou Greenwich (v sekundách)
 ClientOffsetWithGreenwich=Vyrovnání prohlížeče se šířkou Greenwich (v sekundách)
@@ -142,7 +142,7 @@ Box=Box
 Boxes=Boxy
 MaxNbOfLinesForBoxes=Maximální počet řádků pro boxy
 PositionByDefault=Výchozí pořadí
-Position=Position
+Position=Pozice
 MenusDesc=V nastavení menu nastavíte obsah obou panelů nabídek (horizontální i vertikální).
 MenusEditorDesc=Edito menu vám umožní upravovat položky v menu. Používejte jej opatrně, při nesprávném použití může dojít k nestabilnímu chodu systému Dolibarr nebo ke ztrátě některých položek v menu. <br> Některé moduly přidají položky v menu. Pokud jste omylem odstranili některé z těchto položek, můžete je obnovit vypnutím a opětovným zapnutím modulu.
 MenuForUsers=Menu pro uživatele
@@ -246,8 +246,8 @@ OfficialWebSiteFr=Oficiální francouzské internetové stránky
 OfficialWiki=Dolibarr dokumentace na Wiki
 OfficialDemo=Dolibarr on-line demo
 OfficialMarketPlace=Oficiální trh pro externí moduly / addons
-OfficialWebHostingService=Referenced web hosting services (Cloud hosting)
-ReferencedPreferredPartners=Preferred Partners
+OfficialWebHostingService=Odkazované webhostingové služby (Cloud hosting)
+ReferencedPreferredPartners=Preferovaní partneři
 OtherResources=Autres ressources
 ForDocumentationSeeWiki=Pro uživatelskou nebo vývojářskou dokumentaci (Doc, FAQs ...) <br> navštivte Dolibarr Wiki: <br> <a href="%s" target="_blank"><b>%s</b></a>
 ForAnswersSeeForum=V případě jakýchkoliv dalších dotazů nebo nápovědy použijte fórum Dolibarr: <br> <a href="%s" target="_blank"><b>%s</b></a>
@@ -297,11 +297,11 @@ MenuHandlers=Menu handlery
 MenuAdmin=Menu editor
 DoNotUseInProduction=Nepoužívejte ve výrobě
 ThisIsProcessToFollow=Nastaveno na proces:
-ThisIsAlternativeProcessToFollow=This is an alternative setup to process:
+ThisIsAlternativeProcessToFollow=To je alternativa k nastavení procesu:
 StepNb=Krok %s
 FindPackageFromWebSite=Nalezni balíček, obsahující funkci jež chcete (např. na oficiálních stránkách %s).
-DownloadPackageFromWebSite=Download package %s.
-UnpackPackageInDolibarrRoot=Unpack package file into directory dedicated to external modules: <b>%s</b>
+DownloadPackageFromWebSite=Download balíčku %s.
+UnpackPackageInDolibarrRoot=Rozbalte soubor balíčku do adresáře, vyhrazenému pro externí moduly: <b>%s</b>
 SetupIsReadyForUse=Instalace je dokončena a Dolibarr je připraven k použití.
 NotExistsDirect=Alternativní kořenový adresář není definován. <br>
 InfDirAlt=Od verze 3 je možné definovat alternativní kořenovou složku. To umožňuje ukládat na stejné místo plug-iny a vlastní šablony. <br> Stačí vytvořit adresář v kořenovém adresáři Dolibarr (např.: custom). <br>
@@ -310,7 +310,7 @@ YouCanSubmitFile=Vyberte modul:
 CurrentVersion=Dolibarr aktuální verze
 CallUpdatePage=Přejděte na stránku, která aktualizuje databázovou strukturu a údaje: %s.
 LastStableVersion=Poslední stabilní verze
-UpdateServerOffline=Update server offline
+UpdateServerOffline=Aktualizace serveru v režimu offline
 GenericMaskCodes=Můžete zadat jakoukoliv masku číselné řady. V masce můžete použít následující značky: <br><b>{000000}</b> číslo, automaticky inkrementované o 1 při každým %s. Počet nul odpovídá požadovanému počtu číslic. Číslo se zleva doplní nulami pro dosažení požadovaného počtu číslic. <br><b>{000000+000}</b> stejné jako předchozí, ale ofset odpovídající číslu napravo od znaku + bude použit pro první %s. <br><b>{000000@x}</b> stejné jako předchozí, ale počítadlo se resetuje na nulu, když je dosaženo měsíce x (x je v rozmezí 1 ~ 12, nebo 0 pro použití prvního měsíce fiskálního roku definované ve vaší konfiguraci, nebo 99 pro vynulování každý měsíc ). Pokud se tato volba používá, a x je 2 nebo vyšší, pak je rovněž požadovaná posloupnost {yy}{mm} či {yyyy}{mm}. <br><b>{dd}</b> den (01 až 31).<br><b>{mm}</b> měsíc (01 to 12).<br><b>{yy}</b>, <b>{yyyy}</b> nebo <b>{y}</b> rok, 2, 4 nebo 1 číslo. <br>
 GenericMaskCodes2=<b>{cccc}</b> the client code on n characters<br><b>{cccc000}</b> the client code on n characters is followed by a counter dedicated for customer. This counter dedicated to customer is reset at same time than global counter.<br><b>{tttt}</b> The code of thirdparty type on n characters (see dictionary-thirdparty types).<br>
 GenericMaskCodes3=Všechny ostatní znaky v masce zůstanou nedotčeny. <br> Mezery nejsou povoleny. <br>
@@ -324,7 +324,7 @@ ServerNotAvailableOnIPOrPort=Server není k dispozici na adrese <b>%s</b> na por
 DoTestServerAvailability=Zkouška spojení se serverem
 DoTestSend=Vyzkoušet odeslání
 DoTestSendHTML=Vyzkoušet odesílání HTML
-ErrorCantUseRazIfNoYearInMask=Error, can't use option @ to reset counter each year if sequence {yy} or {yyyy} is not in mask.
+ErrorCantUseRazIfNoYearInMask=Chyba, nelze použít volbu @ pro reset čítače každý rok, když posloupnost {yy} nebo {yyyy} není v masce.
 ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Chyba, nelze použít volbu @ pokud posloupnost {yy}{mm} or {yyyy}{mm} není uvedena v masce.
 UMask=Umask parametr pro nové soubory na Unix / Linux / BSD / Mac systému souborů.
 UMaskExplanation=Tento parametr umožňuje definovat výchozí oprávnění souborl vytvořených Dolibarr systémem na serveru (např. během nahrávání). <br> Musí se jednat o osmičkovou hodnotu (např. 0666 znamená číst a psát pro všechny). <br> Tento parametr je na serverech Windows k ničemu.
@@ -389,8 +389,8 @@ ExtrafieldSelectList = Vyberte z tabulky
 ExtrafieldSeparator=Oddělovač
 ExtrafieldCheckBox=Zaškrtávací políčko
 ExtrafieldRadio=Přepínač
-ExtrafieldCheckBoxFromList= Checkbox from table
-ExtrafieldLink=Link to an object
+ExtrafieldCheckBoxFromList= Kontrolní pole z tabulky
+ExtrafieldLink=Odkaz na objekt
 ExtrafieldParamHelpselect=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...<br><br>In order to have the list depending on another :<br>1,value1|parent_list_code:parent_key<br>2,value2|parent_list_code:parent_key
 ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
 ExtrafieldParamHelpradio=Parameters list have to be like key,value<br><br> for example : <br>1,value1<br>2,value2<br>3,value3<br>...
@@ -398,7 +398,7 @@ ExtrafieldParamHelpsellist=Parameters list comes from a table<br>Syntax : table_
 ExtrafieldParamHelpchkbxlst=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt  extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter
 LibraryToBuildPDF=Knihovna použít k vytvoření PDF
 WarningUsingFPDF=Upozornění: Váš <b>conf.php</b> obsahuje direktivu <b>dolibarr_pdf_force_fpdf = 1.</b> To znamená, že můžete používat knihovnu FPDF pro generování PDF souborů. Tato knihovna je stará a nepodporuje mnoho funkcí (Unicode, obraz transparentnost, azbuka, arabské a asijské jazyky, ...), takže může dojít k chybám při generování PDF. <br> Chcete-li vyřešit tento a mají plnou podporu generování PDF, stáhněte si <a href="http://www.tcpdf.org/" target="_blank">TCPDF knihovny</a> , pak komentář nebo odebrat řádek <b>$ dolibarr_pdf_force_fpdf = 1,</b> a místo něj doplnit <b>$ dolibarr_lib_TCPDF_PATH = 'path_to_TCPDF_dir &quot;</b>
-LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:<br>1 : local tax apply on products and services without vat (localtax is calculated on amount without tax)<br>2 : local tax apply on products and services including vat (localtax is calculated on amount + main tax)<br>3 : local tax apply on products without vat (localtax is calculated on amount without tax)<br>4 : local tax apply on products including vat (vat is calculated on amount + main vat)<br>5 : local tax apply on services without vat (localtax is calculated on amount without tax)<br>6 : local tax apply on services including vat (localtax is calculated on amount + tax)
+LocalTaxDesc=Některé země uplatňovat 2 nebo 3 daně na každé faktuře řádek. Pokud se jedná o tento případ, zvolit typ pro druhé a třetí daňové a jeho rychlosti. Možné typ jsou: <br> 1: místní daň vztahovat na výrobky a služby bez DPH (localtax je vypočtena na částku bez daně) <br> 2: místní daň platí o produktech a službách, včetně DPH (localtax je vypočtena na částku + hlavní daně) <br> 3: místní daň vztahovat na výrobky bez DPH (localtax je vypočtena na částku bez daně) <br> 4: místní daň vztahovat na produkty, včetně DPH (DPH se vypočítá na množství + hlavní DPH) <br> 5: místní daň platí o službách bez DPH (localtax je vypočtena na částku bez daně) <br> 6: místní daň platí o službách, včetně DPH (localtax je vypočtena na částku + daň)
 SMS=SMS
 LinkToTestClickToDial=Zadejte telefonní číslo pro volání ukázat odkaz na test ClickToDial URL pro <strong>%s</strong>
 RefreshPhoneLink=Obnovit odkaz
@@ -406,16 +406,16 @@ LinkToTest=Klikací odkaz generovány pro uživatele <strong>%s</strong> (klikn
 KeepEmptyToUseDefault=Mějte prázdný použít výchozí hodnoty
 DefaultLink=Výchozí odkaz
 ValueOverwrittenByUserSetup=Pozor, tato hodnota může být přepsána uživatelem specifické nastavení (každý uživatel může nastavit vlastní clicktodial url)
-ExternalModule=External module - Installed into directory %s
-BarcodeInitForThirdparties=Mass barcode init for thirdparties
-BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services
-CurrentlyNWithoutBarCode=Currently, you have <strong>%s</strong> records on <strong>%s</strong> %s without barcode defined.
-InitEmptyBarCode=Init value for next %s empty records
-EraseAllCurrentBarCode=Erase all current barcode values
-ConfirmEraseAllCurrentBarCode=Are you sure you want to erase all current barcode values ?
-AllBarcodeReset=All barcode values have been removed
-NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled into barcode module setup.
-NoRecordWithoutBarcodeDefined=No record with no barcode value defined.
+ExternalModule=Externí modul - instalován do adresáře %s
+BarcodeInitForThirdparties=Mass čárový kód init pro thirdparties
+BarcodeInitForProductsOrServices=Mass init čárový kód nebo reset pro výrobky nebo služby
+CurrentlyNWithoutBarCode=V současné době máte <strong>%s</strong> záznamů <strong>s%</strong> s bez čárového kódu definována.
+InitEmptyBarCode=Init hodnota pro příští %s prázdnými záznamů
+EraseAllCurrentBarCode=Vymazat všechny aktuální hodnoty čárových kódů
+ConfirmEraseAllCurrentBarCode=Jste si jisti, že chcete vymazat všechny aktuální hodnoty čárových kódů?
+AllBarcodeReset=Byly odstraněny všechny hodnoty čárových kódů
+NoBarcodeNumberingTemplateDefined=Žádné šablony číslování čárových kódů aktivované v nastavení modulu čárových kódů.
+NoRecordWithoutBarcodeDefined=Žádný záznam s žádnou hodnotou čárového kódu definována.
 
 # Modules
 Module0Name=Uživatelé a skupiny
@@ -450,14 +450,14 @@ Module52Name=Zásoby
 Module52Desc=Skladové hospodářství (výrobky)
 Module53Name=Služby
 Module53Desc=Správa služeb
-Module54Name=Contracts/Subscriptions
-Module54Desc=Management of contracts (services or reccuring subscriptions)
+Module54Name=Smlouvy/Objednávky
+Module54Desc=Správa smluv (služeb nebo reccuring předplatné)
 Module55Name=Čárové kódy
 Module55Desc=Barcode řízení
 Module56Name=Telefonie
 Module56Desc=Telefonie integrace
 Module57Name=Trvalé příkazy
-Module57Desc=Standing orders and withdrawal management. Also includes generation of SEPA file for european countries.
+Module57Desc=Trvalé příkazy a řízení výběrů. Také zahrnuje generování souboru SEPA pro evropské země.
 Module58Name=ClickToDial
 Module58Desc=Integrace ClickToDial systému (Asterisk, ...)
 Module59Name=Bookmark4u
@@ -488,45 +488,45 @@ Module320Name=RSS Feed
 Module320Desc=Přidat RSS kanál uvnitř obrazovek Dolibarr
 Module330Name=Záložky
 Module330Desc=Správa záložek
-Module400Name=Projects/Opportunities/Leads
-Module400Desc=Management of projects, opportunities or leads. You can then assign any element (invoice, order, proposal, intervention, ...) to a project and get a transversal view from the project view.
+Module400Name=Projekty/Příležitosti/Vedení
+Module400Desc=Řízení projektů, příležitostí nebo vedení. Můžete přiřadit libovolný prvek (faktura, objednávka, návrh, intervence, ...) na projekt a získat příčný pohled z pohledu projektu.
 Module410Name=WebCalendar
 Module410Desc=WebCalendar integrace
 Module500Name=Zvláštní náklady (daně, sociální příspěvky a dividendy)
-Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries
-Module510Name=Salaries
-Module510Desc=Management of employees salaries and payments
-Module520Name=Loan
-Module520Desc=Management of loans
+Module500Desc=Řízení zvláštních výdajů, jako jsou daně, sociální příspěvky, divideny a platy
+Module510Name=Platy
+Module510Desc=Řízení výplat zaměstnanců a plateb
+Module520Name=Půjčka
+Module520Desc=Správa úvěrů
 Module600Name=Upozornění
-Module600Desc=Send EMail notifications on some Dolibarr business events to third-party contacts (setup defined on each thirdparty)
+Module600Desc=Posílat e-mailové upozornění na některé Dolibarr firemních akcí až kontaktů třetích stran (nastavení definován na každém thirdparty)
 Module700Name=Dary
 Module700Desc=Darování řízení
-Module770Name=Expense Report
+Module770Name=Seznam rozšíření
 Module770Desc=Management and claim expense reports (transportation, meal, ...)
-Module1120Name=Supplier commercial proposal
+Module1120Name=Dodavatel obchodní nabídky
 Module1120Desc=Request supplier commercial proposal and prices
 Module1200Name=Mantis
 Module1200Desc=Mantis integrace
 Module1400Name=Účetnictví
 Module1400Desc=Vedení účetnictví (dvojité strany)
-Module1520Name=Document Generation
+Module1520Name=Dokument Generation
 Module1520Desc=Mass mail document generation
-Module1780Name=Tags/Categories
-Module1780Desc=Create tags/category (products, customers, suppliers, contacts or members)
+Module1780Name=Tagy/Kategorie
+Module1780Desc=Vytvořit tagy/kategorie (produkty, zákazníci, dodavatelé, kontakty nebo členi)
 Module2000Name=WYSIWYG editor
 Module2000Desc=Nechte upravit některé textové pole pomocí pokročilého editoru
-Module2200Name=Dynamic Prices
-Module2200Desc=Enable the usage of math expressions for prices
+Module2200Name=Dynamické ceny
+Module2200Desc=Povolit použití matematických výrazů pro ceny
 Module2300Name=Cron
-Module2300Desc=Scheduled job management
+Module2300Desc=Plánovaná správa úloh
 Module2400Name=Pořad jednání
 Module2400Desc=Události / úkoly a agendy vedení
 Module2500Name=Elektronický Redakční
 Module2500Desc=Uložit a sdílet dokumenty
 Module2600Name=WebServices
 Module2600Desc=Povolit Dolibarr webových služeb serveru
-Module2650Name=WebServices (client)
+Module2650Name=WebServices (klient)
 Module2650Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Supplier orders supported only for the moment)
 Module2700Name=Gravatar
 Module2700Desc=Pomocí on-line služby (Gravatar www.gravatar.com) ukázat fotku uživatelů / členů (nalezen s jejich e-maily). Potřebujete přístup k internetu
@@ -534,14 +534,14 @@ Module2800Desc=FTP klient
 Module2900Name=GeoIPMaxmind
 Module2900Desc=GeoIP Maxmind konverze možnosti
 Module3100Name=Skype
-Module3100Desc=Add a Skype button into card of adherents / third parties / contacts
+Module3100Desc=Přidat tlačítko Skype do karty přívrženců / třetích stran / kontakty
 Module5000Name=Multi-společnost
 Module5000Desc=Umožňuje spravovat více společností
 Module6000Name=Workflow
 Module6000Desc=Workflow management
-Module20000Name=Leave Requests management
-Module20000Desc=Declare and follow employees leaves requests
-Module39000Name=Product lot
+Module20000Name=Nechte řízení požadavků
+Module20000Desc=Deklarovat a dodržovat zaměstnanci opustí požadavky
+Module39000Name=Množství produktu
 Module39000Desc=Lot or serial number, eat-by and sell-by date management on products
 Module50000Name=Paybox
 Module50000Desc=Modul nabídnout on-line platby kreditní kartou stránku s Paybox
@@ -549,12 +549,12 @@ Module50100Name=Bod prodeje
 Module50100Desc=Místě prodeje modulu
 Module50200Name=Paypal
 Module50200Desc=Modul nabídnout on-line platby kreditní kartou stránku s Paypal
-Module50400Name=Accounting (advanced)
-Module50400Desc=Accounting management (double parties)
+Module50400Name=Účetnictví (pokročilé)
+Module50400Desc=Manažerské účetnictví (dvojité strany)
 Module54000Name=PrintIPP
-Module54000Desc=Direct print (without opening the documents) using Cups IPP interface (Printer must be visible from server, and CUPS must be installe on server).
-Module55000Name=Open Poll
-Module55000Desc=Module to make online polls (like Doodle, Studs, Rdvz, ...)
+Module54000Desc=Přímý tisk (bez otevření dokumentů) pomocí poháry IPP rozhraní (tiskárna musí být viditelné ze serveru, a CUPS musí být installe na serveru).
+Module55000Name=Otevřít anketu
+Module55000Desc=Modul, tvorbu on-line průzkumů a anket (jako Doodle, šroub, Rdvz, ...)
 Module59000Name=Okraje
 Module59000Desc=Modul pro správu marže
 Module60000Name=Provize
@@ -588,7 +588,7 @@ Permission67=Vývozní intervence
 Permission71=Přečtěte členů
 Permission72=Vytvořit / upravit členů
 Permission74=Smazat členů
-Permission75=Setup types of membership
+Permission75=Nastavení typu uživatele
 Permission76=Export údaje
 Permission78=Přečtěte si předplatné
 Permission79=Vytvořit / upravit předplatné
@@ -611,8 +611,8 @@ Permission106=Export sendings
 Permission109=Odstranit sendings
 Permission111=Přečtěte finančních účtů
 Permission112=Vytvořit / upravit / smazat a porovnat transakce
-Permission113=Setup financial accounts (create, manage categories)
-Permission114=Reconciliate transactions
+Permission113=Nastavení finančních účtů (vytváření, správa kategorií)
+Permission114=Konsolidace transakce
 Permission115=Vývozních transakcí, a výpisy z účtů
 Permission116=Převody mezi účty
 Permission117=Správa kontroly dispečinku
@@ -629,22 +629,22 @@ Permission151=Přečtěte si trvalé příkazy
 Permission152=Vytvořit / upravit trvalých příkazů žádost
 Permission153=Převodovka trvalých příkazů příjmy
 Permission154=Kredit / odmítnout trvalých příkazů příjmy
-Permission161=Read contracts/subscriptions
+Permission161=Přečtené smlouvy/předplatné
 Permission162=Create/modify contracts/subscriptions
-Permission163=Activate a service/subscription of a contract
-Permission164=Disable a service/subscription of a contract
-Permission165=Delete contracts/subscriptions
-Permission171=Read trips and expenses (own and his subordinates)
-Permission172=Create/modify trips and expenses
-Permission173=Delete trips and expenses
-Permission174=Read all trips and expenses
-Permission178=Export trips and expenses
+Permission163=Aktivace služby / předplatné smlouvy
+Permission164=Zakázat servisní / předplatné smlouvy
+Permission165=Smazat zakázky / předplatné
+Permission171=Přečtěte si výlety a náklady (vlastní a jeho podřízené)
+Permission172=Vytvořit / upravit výlety a výdaje
+Permission173=Odstranění výlety a výdaje
+Permission174=Přečtěte si všechny výlety a výdaje
+Permission178=Export výlety a výdaje
 Permission180=Přečtěte si dodavatele
 Permission181=Přečtěte si dodavatelských objednávek
 Permission182=Vytvořit / upravit dodavatelské objednávky
 Permission183=Ověřit dodavatelských objednávek
 Permission184=Schválit dodavatelských objednávek
-Permission185=Order or cancel supplier orders
+Permission185=Objednat nebo zrušit dodavately objednávky
 Permission186=Příjem objednávek s dodavately
 Permission187=Zavřít dodavatelské objednávky
 Permission188=Zrušit dodavatelských objednávek
@@ -695,7 +695,7 @@ Permission300=Přečtěte čárových kódů
 Permission301=Vytvořit / upravit čárových kódů
 Permission302=Odstranit čárových kódů
 Permission311=Přečtěte služby
-Permission312=Assign service/subscription to contract
+Permission312=Přiřadit službu / předplatné smlouvu
 Permission331=Přečtěte si záložky
 Permission332=Vytvořit / upravit záložky
 Permission333=Odstranění záložky
@@ -712,15 +712,15 @@ Permission401=Přečtěte slevy
 Permission402=Vytvořit / upravit slevy
 Permission403=Ověřit slevy
 Permission404=Odstranit slevy
-Permission510=Read Salaries
-Permission512=Create/modify salaries
-Permission514=Delete salaries
-Permission517=Export salaries
-Permission520=Read Loans
-Permission522=Create/modify loans
-Permission524=Delete loans
-Permission525=Access loan calculator
-Permission527=Export loans
+Permission510=Číst platy
+Permission512=Vytvořit/upravit platy
+Permission514=Smazat platy
+Permission517=Export výplat
+Permission520=Přečtěte si Úvěry
+Permission522=Vytvořit/upravit úvěry
+Permission524=Smazat úvěry
+Permission525=Přístup na úvěrovou kalkulačku
+Permission527=Export úvěrů
 Permission531=Přečtěte služby
 Permission532=Vytvořit / upravit služby
 Permission534=Odstranit služby
@@ -729,16 +729,16 @@ Permission538=Export služeb
 Permission701=Přečtěte si dary
 Permission702=Vytvořit / upravit dary
 Permission703=Odstranit dary
-Permission771=Read expense reports (own and his subordinates)
-Permission772=Create/modify expense reports
-Permission773=Delete expense reports
-Permission774=Read all expense reports (even for user not subordinates)
-Permission775=Approve expense reports
-Permission776=Pay expense reports
-Permission779=Export expense reports
+Permission771=Přečtěte si přehled výdajů (vlastní i jeho podřízení)
+Permission772=Vytvořit/upravit vyúčtování výdajů
+Permission773=Smazat zprávy o výdajích
+Permission774=Přečtěte si všechny zprávy o výdajích (a to i pro uživatele, ne podřízení)
+Permission775=Schválit vyúčtování výdajů
+Permission776=Zaplatit vyúčtování výdajů
+Permission779=Export výkazů o výdajích
 Permission1001=Přečtěte si zásoby
-Permission1002=Create/modify warehouses
-Permission1003=Delete warehouses
+Permission1002=Vytvoření/úprava skladišť
+Permission1003=Odstranění skladišť
 Permission1004=Přečtěte skladové pohyby
 Permission1005=Vytvořit / upravit skladové pohyby
 Permission1101=Přečtěte si dodací
@@ -753,7 +753,7 @@ Permission1185=Schválit dodavatelských objednávek
 Permission1186=Objednávky Objednat dodavatel
 Permission1187=Potvrzení přijetí dodavatelských objednávek
 Permission1188=Odstranit dodavatelských objednávek
-Permission1190=Approve (second approval) supplier orders
+Permission1190=Schválit (druhé schválení) dodavatele zakázky
 Permission1201=Získejte výsledek exportu
 Permission1202=Vytvořit / Upravit vývoz
 Permission1231=Přečtěte si dodavatelské faktury
@@ -766,10 +766,10 @@ Permission1237=Export dodavatelské objednávky a informace o nich
 Permission1251=Spustit Hmotné dovozy externích dat do databáze (načítání dat)
 Permission1321=Export zákazníků faktury, atributy a platby
 Permission1421=Export objednávek zákazníků a atributy
-Permission23001=Read Scheduled job
-Permission23002=Create/update Scheduled job
-Permission23003=Delete Scheduled job
-Permission23004=Execute Scheduled job
+Permission23001=Čtení naplánovaných úloh
+Permission23002=Vytvoření/aktualizace naplánované úlohy
+Permission23003=Smazat naplánovanou úlohu
+Permission23004=Provést naplánovanou úlohu
 Permission2401=Přečtěte akce (události nebo úkoly) které souvisí s jeho účet
 Permission2402=Vytvořit / upravit akce (události nebo úkoly) které souvisí s jeho účet
 Permission2403=Odstranit akce (události nebo úkoly) které souvisí s jeho účet
@@ -786,40 +786,40 @@ Permission50101=Použijte místě prodeje
 Permission50201=Přečtěte transakce
 Permission50202=Importní operace
 Permission54001=Vytisknout
-Permission55001=Read polls
-Permission55002=Create/modify polls
-Permission59001=Read commercial margins
-Permission59002=Define commercial margins
-Permission59003=Read every user margin
-DictionaryCompanyType=Thirdparties type
-DictionaryCompanyJuridicalType=Juridical kinds of thirdparties
-DictionaryProspectLevel=Prospect potential level
-DictionaryCanton=State/Cantons
-DictionaryRegion=Regions
-DictionaryCountry=Countries
-DictionaryCurrency=Currencies
-DictionaryCivility=Civility title
-DictionaryActions=Type of agenda events
-DictionarySocialContributions=Social contributions types
-DictionaryVAT=VAT Rates or Sales Tax Rates
-DictionaryRevenueStamp=Amount of revenue stamps
-DictionaryPaymentConditions=Payment terms
-DictionaryPaymentModes=Payment modes
-DictionaryTypeContact=Contact/Address types
+Permission55001=Přečtěte si průzkumy
+Permission55002=Vytvořit/upravit ankety
+Permission59001=Přečtěte si obchodní marže
+Permission59002=Definovat obchodní marže
+Permission59003=Přečtěte si všechny marže uživatele
+DictionaryCompanyType=Typy třetích stran
+DictionaryCompanyJuridicalType=Právní formy třetích stran
+DictionaryProspectLevel=Potencionální úroveň cílů
+DictionaryCanton=Stát/Kantony
+DictionaryRegion=Regiony
+DictionaryCountry=Země
+DictionaryCurrency=Měny
+DictionaryCivility=Zdvořilostní oslovení
+DictionaryActions=Typ agendy událostí
+DictionarySocialContributions=Typy příspěvků na sociální zabezpečení
+DictionaryVAT=Sazby DPH nebo daň z prodeje
+DictionaryRevenueStamp=Výše příjmů známek
+DictionaryPaymentConditions=Platební podmínky
+DictionaryPaymentModes=Platební režimy
+DictionaryTypeContact=Typy kontaktů/adres
 DictionaryEcotaxe=Ecotax (WEEE)
-DictionaryPaperFormat=Paper formats
-DictionaryFees=Type of fees
-DictionarySendingMethods=Shipping methods
-DictionaryStaff=Staff
-DictionaryAvailability=Delivery delay
-DictionaryOrderMethods=Ordering methods
-DictionarySource=Origin of proposals/orders
-DictionaryAccountancyplan=Chart of accounts
-DictionaryAccountancysystem=Models for chart of accounts
-DictionaryEMailTemplates=Emails templates
+DictionaryPaperFormat=Formáty papíru
+DictionaryFees=Druh poplatků
+DictionarySendingMethods=Metody dopravy
+DictionaryStaff=Zaměstnanci
+DictionaryAvailability=Zpoždění dodávky
+DictionaryOrderMethods=Metody objednávání
+DictionarySource=Původ nabídky/objednávky
+DictionaryAccountancyplan=Graf účtů
+DictionaryAccountancysystem=Modely pro účetní osnovy
+DictionaryEMailTemplates=E-maily šablony
 SetupSaved=Nastavení uloženo
 BackToModuleList=Zpět na seznam modulů
-BackToDictionaryList=Back to dictionaries list
+BackToDictionaryList=Zpět k seznamu slovníků
 VATReceivedOnly=Zvláštní sazba není účtován
 VATManagement=DPH řízení
 VATIsUsedDesc=Sazba DPH ve výchozím nastavení při vytváření vyhlídky, faktury, objednávky atd. sledovat aktivní standardní pravidlo: <br> Pokud prodávající není předmětem DPH, pak se DPH ve výchozím nastavení = 0. Konec vlády. <br> Je-li (prodejní country = nákup zemi), pak se DPH standardně = DPH výrobku v zemi prodeje. Konec vlády. <br> Pokud se prodávající a kupující v Evropském společenství a zboží je doprava výrobků (auto, loď, letadlo), výchozí DPH = 0 (DPH by měla být věnována ze strany kupujícího v customoffice své země, a ne u prodejce). Konec vlády. <br> Pokud se prodávající a kupující v Evropském společenství a kupujícím není společnost, pak se DPH standardně = DPH z výrobků prodaných. Konec vlády. <br> Pokud se prodávající a kupující v Evropském společenství a kupujícím je společnost, pak se DPH ve výchozím nastavení = 0. Konec vlády. <br> Jinak navrhovaná výchozí DPH = 0. Konec vlády.
@@ -827,7 +827,7 @@ VATIsNotUsedDesc=Ve výchozím nastavení je navrhovaná DPH 0, který lze použ
 VATIsUsedExampleFR=Ve Francii, to znamená, že podniky a organizace, které mají skutečnou fiskální systém (zjednodušený reálný nebo normální reálné). Systém, v němž je deklarován DPH.
 VATIsNotUsedExampleFR=Ve Francii, to znamená, asociace, které jsou bez DPH prohlášené nebo společnosti, organizace nebo svobodných povolání, které se rozhodly pro Micro Enterprise daňového systému (s DPH v povolení) a placenými franšízové ​​DPH bez DPH prohlášení. Tato volba se zobrazí odkaz &quot;nepoužitelné DPH - art-293B CGI&quot; na fakturách.
 ##### Local Taxes #####
-LTRate=Rate
+LTRate=Rychlost
 LocalTax1IsUsed=Použití druhé daně
 LocalTax1IsNotUsed=Nepoužívejte druhá daň
 LocalTax1IsUsedDesc=Použijte druhý typ daně (kromě DPH)
@@ -852,12 +852,12 @@ LocalTax2IsUsedDescES= RE sazba ve výchozím nastavení při vytváření vyhl
 LocalTax2IsNotUsedDescES= Ve výchozím nastavení je navrhovaná IRPF je 0. Konec vlády.
 LocalTax2IsUsedExampleES= Ve Španělsku, na volné noze a nezávislí odborníci, kteří poskytují služby a firmy, kteří se rozhodli daňového systému modulů.
 LocalTax2IsNotUsedExampleES= Ve Španělsku jsou bussines, které nejsou předmětem daňového systému modulů.
-CalcLocaltax=Reports on local taxes
-CalcLocaltax1=Sales - Purchases
+CalcLocaltax=Zprávy o místních daních
+CalcLocaltax1=Prodej - Nákupy
 CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases
-CalcLocaltax2=Purchases
-CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases
-CalcLocaltax3=Sales
+CalcLocaltax2=Nákupy
+CalcLocaltax2Desc=Místní zprávy Daně jsou celkem localtaxes nákupů
+CalcLocaltax3=Odbyt
 CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales
 LabelUsedByDefault=Label používá ve výchozím nastavení, pokud není překlad lze nalézt kód
 LabelOnDocuments=Štítek na dokumenty
@@ -926,7 +926,7 @@ PermanentLeftSearchForm=Permanentní vyhledávací formulář na levém menu
 DefaultLanguage=Výchozí jazyk používat (kód jazyka)
 EnableMultilangInterface=Povolit vícejazyčné rozhraní
 EnableShowLogo=Zobrazit logo na levém menu
-EnableHtml5=Enable Html5 (Developement - Only available on Eldy template)
+EnableHtml5=Povolit HTML5 (Developement - k dispozici pouze na Eldy šablony)
 SystemSuccessfulyUpdated=Systém byl úspěšně aktualizován
 CompanyInfo=Společnosti / Nadace informace
 CompanyIds=Společnost / nadace identity
@@ -971,14 +971,14 @@ EventsSetup=Nastavení pro akce kulatiny
 LogEvents=Události bezpečnostní audit
 Audit=Audit
 InfoDolibarr=Informace Dolibarr
-InfoBrowser=Infos Browser
+InfoBrowser=Informace o prohlížeči
 InfoOS=Informace OS
 InfoWebServer=Informace webový server
 InfoDatabase=Informace databáze
 InfoPHP=Informace PHP
 InfoPerf=Infos představení
-BrowserName=Browser name
-BrowserOS=Browser OS
+BrowserName=Název prohlížeče
+BrowserOS=Prohlížeč OS
 ListEvents=Audit událostí
 ListOfSecurityEvents=Seznam Dolibarr událostí zabezpečení
 SecurityEventsPurged=Bezpečnostní akce očistil
@@ -999,7 +999,7 @@ TriggerDisabledAsModuleDisabled=Trigger v tomto souboru jsou zakázány jako mod
 TriggerAlwaysActive=Trigger v tomto souboru jsou vždy aktivní, ať už jsou aktivované Dolibarr moduly.
 TriggerActiveAsModuleActive=Trigger v tomto souboru jsou aktivní jako modul <b>%s</b> je povoleno.
 GeneratedPasswordDesc=Definujte zde pravidlo, které chcete použít k vytvoření nového hesla, pokud se zeptáte mít automaticky generované heslo
-DictionaryDesc=Define here all reference datas. You can complete predefined value with yours.
+DictionaryDesc=Definujte zde všechny referenční data. Můžete doplnit předdefinovanou hodnotu s vašimi.
 ConstDesc=Na této stránce můžete upravovat všechny ostatní parametry nejsou k dispozici v předchozích stránkách. Oni jsou vyhrazeny parametry pro zkušené vývojáře nebo troubleshouting.
 OnceSetupFinishedCreateUsers=Upozornění, že jste správce Dolibarr uživatel. Správce Uživatelské slouží k nastavení Dolibarr. Pro běžné použití Dolibarr, se doporučuje používat non správce uživateli vytvořené od uživatelů a skupin Menu.
 MiscellaneousDesc=Definujte zde všechny ostatní parametry vztahující se k bezpečnosti.
@@ -1017,14 +1017,14 @@ NoEventOrNoAuditSetup=Žádná událost zabezpečení byl zaznamenán ještě. T
 NoEventFoundWithCriteria=Žádná událost zabezpečení byl nalezen na těchto vyhledávacích kritérii.
 SeeLocalSendMailSetup=Podívejte se na místní sendmail nastavení
 BackupDesc=Chcete-li provést kompletní zálohu Dolibarr, musíte:
-BackupDesc2=Save content of documents directory (<b>%s</b>) that contains all uploaded and generated files (you can make a zip for example).
-BackupDesc3=Save content of your database (<b>%s</b>) into a dump file. For this, you can use following assistant.
+BackupDesc2=Uložení obsahu dokumentů adresáře <b>(% s),</b> který obsahuje všechny nahrané a vytvořené soubory (můžete udělat zip například).
+BackupDesc3=Uložte obsah databáze <b>(%s),</b> do souboru výpisu. K tomu můžete použít následující asistenta.
 BackupDescX=Archivní adresář by měl být skladován na bezpečném místě.
 BackupDescY=Vygenerovaný soubor výpisu by měl být skladován na bezpečném místě.
 BackupPHPWarning=Záloha nemůže být garantováno s touto metodou. Preferuji předchozí
 RestoreDesc=Chcete-li obnovit zálohu Dolibarr, musíte:
-RestoreDesc2=Restore archive file (zip file for example) of documents directory to extract tree of files in documents directory of a new Dolibarr installation or into this current documents directoy (<b>%s</b>).
-RestoreDesc3=Restore the data, from a backup dump file, into the database of the new Dolibarr installation or into the database of this current installation (<b>%s</b>). Warning, once restore is finished, you must use a login/password, that existed when backup was made, to connect again. To restore a backup database into this current installation, you can follow this assistant.
+RestoreDesc2=Obnovit archivní soubor (soubor zip například) z adresáře dokumentů extrahovat strom souborů v dokumentech adresáři nového zařízení Dolibarr nebo do tohoto aktuálních dokumentech directoy <b>(%s).</b>
+RestoreDesc3=Obnovení dat, ze záložního souboru výpisu, do databáze nové instalace Dolibarr nebo do databáze tohoto stávající instalace <b>(%s).</b> Varování, po obnovení je dokončeno, musíte použít login / heslo, které existovaly, když byla provedena záloha, se znovu připojit. Chcete-li obnovit záložní databázi do této stávající instalace, můžete sledovat tento asistenta.
 RestoreMySQL=MySQL import
 ForcedToByAModule= Toto pravidlo je nucen <b>%s</b> aktivovaným modulem
 PreviousDumpFiles=Dostupné databázové soubory zálohování výpisu
@@ -1051,26 +1051,26 @@ MAIN_PROXY_PASS=Heslo používat proxy server
 DefineHereComplementaryAttributes=Definujte zde všechny atributy, které ještě nejsou k dispozici ve výchozím nastavení, a že chcete být podporovány %s.
 ExtraFields=Doplňkové atributy
 ExtraFieldsLines=Doplňkové atributy (linky)
-ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines)
-ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines)
+ExtraFieldsSupplierOrdersLines=Doplňkové atributy (objednávka linky)
+ExtraFieldsSupplierInvoicesLines=Doplňkové atributy (linky faktura)
 ExtraFieldsThirdParties=Doplňkové atributy (thirdparty)
 ExtraFieldsContacts=Doplňkové atributy (kontakt / adresa)
 ExtraFieldsMember=Doplňkové atributy (člen)
 ExtraFieldsMemberType=Doplňkové atributy (člen typ)
-ExtraFieldsCustomerOrders=Complementary attributes (orders)
-ExtraFieldsCustomerInvoices=Complementary attributes (invoices)
+ExtraFieldsCustomerOrders=Doplňkové atributy (objednávky)
+ExtraFieldsCustomerInvoices=Doplňkové atributy (faktury)
 ExtraFieldsSupplierOrders=Doplňkové atributy (objednávky)
 ExtraFieldsSupplierInvoices=Doplňkové atributy (faktury)
 ExtraFieldsProject=Doplňkové atributy (projekty)
 ExtraFieldsProjectTask=Doplňkové atributy (úkoly)
-ExtraFieldHasWrongValue=Attribute %s has a wrong value.
+ExtraFieldHasWrongValue=Atribut %s má nesprávnou hodnotu.
 AlphaNumOnlyCharsAndNoSpace=pouze alphanumericals znaky bez mezer
-AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space
+AlphaNumOnlyLowerCharsAndNoSpace=pouze alfanumerické znaky s malými písmeny bez mezer
 SendingMailSetup=Nastavení sendings e-mailem
 SendmailOptionNotComplete=Upozornění na některých operačních systémech Linux, posílat e-maily z vašeho e-mailu, musíte sendmail provedení instalace obsahuje volbu-BA (parametr mail.force_extra_parameters do souboru php.ini). Pokud někteří příjemci nikdy přijímat e-maily, zkuste upravit tento parametr společně s PHP mail.force_extra_parameters =-BA).
 PathToDocuments=Cesta k dokumentům
 PathDirectory=Adresář
-SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail direct" will generate a mail message that might be not correctly parsed by some receiving mail servers. Result is that some mails can't be read by people hosted by those bugged platforms. It's case for some Internet providers (Ex: Orange in France). This is not a problem into Dolibarr nor into PHP but onto receiving mail server. You can however add option MAIN_FIX_FOR_BUGGED_MTA to 1 into setup - other to modify Dolibarr to avoid this. However, you may experience problem with other servers that respect strictly the SMTP standard. The other solution (recommended) is to use the method "SMTP socket library" that has no disadvantages.
+SendmailOptionMayHurtBuggedMTA=Funkce se odesílat e-maily pomocí metody "PHP mail direct" bude generovat e-mailové zprávy, které by mohly být není správně analyzovat některými dostávají poštovní servery. Výsledkem je, že některé maily nelze číst lidé hostovaných těmito platformami odposloucháván. To je případ některých poskytovatelů služeb Internetu (Ex: Orange ve Francii). To není problém do Dolibarr ani do PHP, ale na přijímání e-mailový server. Můžete však přidat možnost MAIN_FIX_FOR_BUGGED_MTA do 1 do nastavení - jiné upravovat Dolibarr k tomu nedošlo. Nicméně, může dojít k problému s jinými servery, které respektují přísně standard SMTP. Jiné řešení (doporučeno), je použít metodu "SMTP socket knihovnu", které nemá žádné nevýhody.
 TranslationSetup=Konfigurace de la traduction
 TranslationDesc=Volba jazyka viditelné na obrazovce lze měnit: <br> * Globálně z menu <strong>Domů - Nastavení - Zobrazení</strong> <br> * Pro uživatele pouze ze <strong>zobrazení</strong> na kartě <strong>Uživatelské</strong> uživatelského karty (klikněte na přihlášení v horní části obrazovky).
 TotalNumberOfActivatedModules=Celkový počet aktivovaných funkcí modulů: <b>%s</b>
@@ -1081,20 +1081,20 @@ OnlyFollowingModulesAreOpenedToExternalUsers=Na vědomí, že pouze následujíc
 SuhosinSessionEncrypt=Úložiště relace šifrována Suhosin
 ConditionIsCurrently=Podmínkou je v současné době %s
 YouUseBestDriver=Pomocí ovladače %s, že je nejlepší řidič současné době k dispozici.
-YouDoNotUseBestDriver=You use drive %s but driver %s is recommended.
+YouDoNotUseBestDriver=Můžete použít disk %s, ale ovladač %s je doporučen.
 NbOfProductIsLowerThanNoPb=Máte jen %s produktů / služeb do databáze. To však není nutné žádné zvláštní optimalizace.
 SearchOptim=Optimalizace pro vyhledávače
 YouHaveXProductUseSearchOptim=Máte %s produkt do databáze. Měli byste přidat konstantní PRODUCT_DONOTSEARCH_ANYWHERE do 1 do Home-Nastavení-Ostatní, můžete omezit vyhledávání na začátku řetězce, která umožňují pro databáze používat index, a vy byste měli dostat okamžitou odpověď.
 BrowserIsOK=Používáte %s webovém prohlížeči. Tento prohlížeč je v pořádku pro bezpečnost a výkon.
 BrowserIsKO=Používáte %s webovém prohlížeči. Tento prohlížeč je známo, že špatná volba pro bezpečnost, výkon a spolehlivost. Jsme Doporučuji vám používat Firefox, Chrome, Operu nebo Safari.
-XDebugInstalled=XDebug is loaded.
+XDebugInstalled=Xdebug je načten.
 XCacheInstalled=XCache načten.
-AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp".
-FieldEdition=Edition of field %s
+AddRefInList=Displej zákazník / dodavatel ref do seznamu (vyberte seznam nebo ComboBox) a většina z hypertextový odkaz. Třetí strany budou zobrazí s názvem "CC12345 - SC45678 - Velké firmy coorp", namísto "The velké společnosti coorp".
+FieldEdition=Editace položky %s
 FixTZ=TimeZone fix
 FillThisOnlyIfRequired=Example: +2 (fill only if timezone offset problems are experienced)
-GetBarCode=Get barcode
-EmptyNumRefModelDesc=The code is free. This code can be modified at any time.
+GetBarCode=Získat čárový kód
+EmptyNumRefModelDesc=Kód je volný. Tento kód můžete kdykoliv změnit.
 ##### Module password generation
 PasswordGenerationStandard=Zpět heslo generované podle interního algoritmu Dolibarr: 8 znaků obsahující sdílené čísla a znaky malými písmeny.
 PasswordGenerationNone=Nenaznačují žádné vygenerované heslo. Heslo musí být v provedení ručně.
@@ -1122,8 +1122,8 @@ WatermarkOnDraft=Vodoznak na návrhu dokumentu
 JSOnPaimentBill=Activate feature to autofill payment lines on payment form
 CompanyIdProfChecker=Pravidla pro profesionální IDs
 MustBeUnique=Musí být jedinečný?
-MustBeMandatory=Mandatory to create third parties ?
-MustBeInvoiceMandatory=Mandatory to validate invoices ?
+MustBeMandatory=Musí být povinné pro třetí strany?
+MustBeInvoiceMandatory=Povinné pro ověření faktur?
 Miscellaneous=Smíšený
 ##### Webcal setup #####
 WebCalSetup=WebCalendar LINK
@@ -1137,7 +1137,7 @@ WebCalServer=Server hosting kalendář databáze
 WebCalDatabaseName=Název databáze
 WebCalUser=Uživatel přístup k databázi
 WebCalSetupSaved=WebCalendar nastavení bylo úspěšně uloženo.
-WebCalTestOk=Connection to server '%s' on database '%s' with user '%s' successful.
+WebCalTestOk=Připojení k serveru "% s" na databázi '% s' s uživatelem '% s' je úspěšné.
 WebCalTestKo1=Připojení k &quot;%s&quot; serveru úspěšná, ale databáze &quot;%s&quot; by nebylo možno dosáhnout.
 WebCalTestKo2=Připojení k serveru &quot;%s&quot; s uživatelem &quot;%s 'se nezdařilo.
 WebCalErrorConnectOkButWrongDatabase=Připojení úspěšné, ale databáze nevypadá být WebCalendar databáze.
@@ -1179,24 +1179,24 @@ AddDeliveryAddressAbility=Přidat dodací lhůta schopnost
 UseOptionLineIfNoQuantity=Řada výrobků / služeb s nulové hodnoty je považován za možnost
 FreeLegalTextOnProposal=Volný text o obchodních návrhů
 WatermarkOnDraftProposal=Vodoznak na předloh návrhů komerčních (none-li prázdný)
-BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal
+BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Zeptejte se na umístění bankovního účtu nabídky
 ##### AskPriceSupplier #####
-AskPriceSupplierSetup=Price requests suppliers module setup
+AskPriceSupplierSetup=Cena požaduje nastavení dodavatelé modul
 AskPriceSupplierNumberingModules=Price requests suppliers numbering models
 AskPriceSupplierPDFModules=Price requests suppliers documents models
-FreeLegalTextOnAskPriceSupplier=Free text on price requests suppliers
+FreeLegalTextOnAskPriceSupplier=Volný text na žádosti o cenový dodavatele
 WatermarkOnDraftAskPriceSupplier=Watermark on draft price requests suppliers (none if empty)
-BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Ask for bank account destination of price request
+BANK_ASK_PAYMENT_BANK_DURING_ASKPRICESUPPLIER=Zeptejte se na bankovní účet destinaci nabídce ceny
 ##### Orders #####
 OrdersSetup=Objednat řízení nastavení
 OrdersNumberingModules=Objednávky číslování modelů
 OrdersModelModule=Objednat dokumenty modely
-HideTreadedOrders=Hide the treated or cancelled orders in the list
+HideTreadedOrders=Skrýt ošetřené nebo zrušené objednávky v seznamu
 ValidOrderAfterPropalClosed=Pro potvrzení objednávky po návrhu užší, umožňuje, aby krok za prozatímní pořadí
 FreeLegalTextOnOrders=Volný text o objednávkách
 WatermarkOnDraftOrders=Vodoznak na konceptech objednávek (pokud žádný prázdný)
 ShippableOrderIconInList=Add an icon in Orders list which indicate if order is shippable
-BANK_ASK_PAYMENT_BANK_DURING_ORDER=Ask for bank account destination of order
+BANK_ASK_PAYMENT_BANK_DURING_ORDER=Zeptejte se na bankovní účet destinaci objednávky
 ##### Clicktodial #####
 ClickToDialSetup=Klikněte pro Dial Nastavení modulu
 ClickToDialUrlDesc=Url volána, když se provádí kliknutím na tel. Piktogram. Do pole URL můžete použít značky <br> <b>__PHONETO__</b> Který bude nahrazen s telefonním číslem osoby volat <br> <b>__PHONEFROM__</b> Který bude nahrazen tel. číslo volajícího (vaše) <br> <b>__LOGIN__</b> Který bude nahrazen s clicktodial přihlášení (definované na kartě uživatele) <br> <b>__PASS__</b> Který bude nahrazen s clicktodial heslo (definované na kartě uživatele).
@@ -1209,11 +1209,11 @@ FicheinterNumberingModules=Intervenční číslování modely
 TemplatePDFInterventions=Intervenční karet dokumenty modely
 WatermarkOnDraftInterventionCards=Vodoznak na dokumentech intervenčních karty (pokud žádný prázdný)
 ##### Contracts #####
-ContractsSetup=Contracts/Subscriptions module setup
+ContractsSetup=Nastavení modulu Zakázky/předplatné
 ContractsNumberingModules=Zakázky číslování moduly
-TemplatePDFContracts=Contracts documents models
-FreeLegalTextOnContracts=Free text on contracts
-WatermarkOnDraftContractCards=Watermark on draft contracts (none if empty)
+TemplatePDFContracts=Kontrakty dokumenty modely
+FreeLegalTextOnContracts=Volný text na smlouvách
+WatermarkOnDraftContractCards=Vodoznak o návrzích smluv (none-li prázdný)
 ##### Members #####
 MembersSetup=Členové modul nastavení
 MemberMainOptions=Hlavní volby
@@ -1288,9 +1288,9 @@ LDAPSynchroKO=Nepodařilo synchronizace testu
 LDAPSynchroKOMayBePermissions=Nepodařilo synchronizace test. Zkontrolujte, zda je přípojka na server je správně nakonfigurován a umožňuje LDAP udpates
 LDAPTCPConnectOK=TCP připojení k LDAP serveru (Server úspěšných = %s, %s port =)
 LDAPTCPConnectKO=TCP připojení k LDAP serveru selhalo (Server = %s, Port = %s)
-LDAPBindOK=Connect/Authentificate to LDAP server successful (Server=%s, Port=%s, Admin=%s, Password=%s)
+LDAPBindOK=Připojení/Autentifikace k LDAP serveru úspěšná (Server =%s, Port =%s Admin =%s, Heslo =%s)
 LDAPBindKO=Připojit / Authentificate k LDAP serveru selhalo (Server = %s, Port = %s, Admin = %s, Password = %s)
-LDAPUnbindSuccessfull=Disconnect successful
+LDAPUnbindSuccessfull=Odpojení úspěšné
 LDAPUnbindFailed=Odpojení se nezdařilo
 LDAPConnectToDNSuccessfull=Připojení k DN (%s) úspěšná
 LDAPConnectToDNFailed=Připojení k DN (%s) se nezdařila
@@ -1336,8 +1336,8 @@ LDAPFieldCountry=Země
 LDAPFieldCountryExample=Příklad: c
 LDAPFieldDescription=Popis
 LDAPFieldDescriptionExample=Příklad: popis
-LDAPFieldNotePublic=Public Note
-LDAPFieldNotePublicExample=Example : publicnote
+LDAPFieldNotePublic=Veřejná poznámka
+LDAPFieldNotePublicExample=Příklad: publicnote
 LDAPFieldGroupMembers= Členové skupiny
 LDAPFieldGroupMembersExample= Příklad: uniqueMember
 LDAPFieldBirthdate=Datum narození
@@ -1349,7 +1349,7 @@ LDAPFieldSidExample=Příklad: objectSID
 LDAPFieldEndLastSubscription=Datum ukončení předplatného
 LDAPFieldTitle=Post / Funkce
 LDAPFieldTitleExample=Příklad: title
-LDAPParametersAreStillHardCoded=LDAP parameters are still hardcoded (in contact class)
+LDAPParametersAreStillHardCoded=Parametry LDAP jsou stále napevno (v třídě kontaktu)
 LDAPSetupNotComplete=Nastavení LDAP není úplná (přejděte na záložku Ostatní)
 LDAPNoUserOrPasswordProvidedAccessIsReadOnly=Žádný správce nebo heslo k dispozici. LDAP přístup budou anonymní a pouze pro čtení.
 LDAPDescContact=Tato stránka umožňuje definovat atributy LDAP název stromu LDAP pro každý údajům o kontaktech Dolibarr.
@@ -1362,9 +1362,9 @@ PerfDolibarr=Výkon Nastavení / optimalizace zpráva
 YouMayFindPerfAdviceHere=Najdete na této stránce nějaké kontroly nebo rad týkajících se výkonnosti.
 NotInstalled=Ne, takľe není váš server zpomalit tím.
 ApplicativeCache=Aplikačních mezipaměti
-MemcachedNotAvailable=No applicative cache found. You can enhance performance by installing a cache server Memcached and a module able to use this cache server.<br>More information here <a href="http://wiki.dolibarr.org/index.php/Module_MemCached_EN">http://wiki.dolibarr.org/index.php/Module_MemCached_EN</a>.<br>Note that a lot of web hosting provider does not provide such cache server.
-MemcachedModuleAvailableButNotSetup=Module memcached for applicative cache found but setup of module is not complete.
-MemcachedAvailableAndSetup=Module memcached dedicated to use memcached server is enabled.
+MemcachedNotAvailable=Žádné applicative mezipaměti nalezen. Můžete zvýšit výkon instalací Memcached mezipaměti serveru a modul schopný použít tento mezipaměti serveru. <br> Více informací zde <a href="http://wiki.dolibarr.org/index.php/Module_MemCached_EN">http://wiki.dolibarr.org/index.php/Module_MemCached_EN</a> . <br> Všimněte si, že spousta poskytovatele web hosting neposkytuje takovou mezipaměti serveru.
+MemcachedModuleAvailableButNotSetup=Modul Memcached pro aplikační mezipaměť nalezen, ale nastavení modulu není kompletní.
+MemcachedAvailableAndSetup=Modul Memcached určené k použití Memcached serveru je povoleno.
 OPCodeCache=Opcode mezipaměti
 NoOPCodeCacheFound=Žádné opcode nalezená keš. Může být použít další opcode paměť než XCache nebo eAccelerator (dobré), může být, že nemáte opcode cache (velmi špatně).
 HTTPCacheStaticResources=HTTP cache pro statické zdroje (css, img, javascript)
@@ -1386,7 +1386,7 @@ ModifyProductDescAbility=Personalizace popisy produktů ve formách
 ViewProductDescInFormAbility=Vizualizace popisy produktů ve formách (jinak jako vyskakovací bublině)
 ViewProductDescInThirdpartyLanguageAbility=Vizualizace Popisy výrobků v thirdparty jazyce
 UseSearchToSelectProductTooltip=Also if you have a large number of product (> 100 000), you can increase speed by setting constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
-UseSearchToSelectProduct=Use a search form to choose a product (rather than a drop-down list).
+UseSearchToSelectProduct=Použijte vyhledávací formulář pro výběr produku (spíše než rozevíracího seznamu).
 UseEcoTaxeAbility=Podpora Eco-taxe (WEEE)
 SetDefaultBarcodeTypeProducts=Výchozí typ čárového kódu použít pro produkty
 SetDefaultBarcodeTypeThirdParties=Výchozí typ čárového kódu použít k třetím osobám
@@ -1420,9 +1420,9 @@ BarcodeDescUPC=Čárových kódů typu UPC
 BarcodeDescISBN=Čárový kód typu ISBN
 BarcodeDescC39=Čárový kód typu C39
 BarcodeDescC128=Čárový kód typu C128
-GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".<br>For example: /usr/local/bin/genbarcode
+GenbarcodeLocation=Čárový kód generování nástroj pro příkazovou řádku (používaný vnitřním motorem u některých typů čárových kódů). Musí být v souladu s "genbarcode". <br> Například: / usr / local / bin / genbarcode
 BarcodeInternalEngine=Vnitřní motor
-BarCodeNumberManager=Manager to auto define barcode numbers
+BarCodeNumberManager=Manažer automatického definování čísel čárových kódů
 ##### Prelevements #####
 WithdrawalsSetup=Odstoupení modul nastavení
 ##### ExternalRSS #####
@@ -1434,19 +1434,19 @@ RSSUrlExample=Zajímavý RSS zdroj
 MailingSetup=E-mailem Nastavení modulu
 MailingEMailFrom=Odesílatele (From) pro emailů zasílaných e-mailem na modul
 MailingEMailError=Zpět E-mail (chyby-do) e-maily s chybami
-MailingDelay=Seconds to wait after sending next message
+MailingDelay=Sekund čekání po odeslání další zprávy
 ##### Notification #####
-NotificationSetup=EMail notification module setup
+NotificationSetup=Nastavení modulu e-mailových oznámení
 NotificationEMailFrom=Odesílatele (From) e-maily zaslané na oznámení
-ListOfAvailableNotifications=List of events you can set notification on, for each thirdparty (go into thirdparty card to setup) or by setting a fixed email (List depends on activated modules)
-FixedEmailTarget=Fixed email target
+ListOfAvailableNotifications=Seznam akcí můžete nastavit upozornění na, pro každou thirdparty (jít do thirdparty karty do nastavení), nebo tím, že stanoví fixní e-mail (seznam závisí na aktivovaných modulech)
+FixedEmailTarget=Pevná emailový cíl
 ##### Sendings #####
 SendingsSetup=Odeslání Nastavení modulu
 SendingsReceiptModel=Odeslání stvrzenky modelu
 SendingsNumberingModules=Sendings číslování moduly
-SendingsAbility=Support shipment sheets for customer deliveries
+SendingsAbility=Podpora zásilka listy pro dodávky zákazníkům
 NoNeedForDeliveryReceipts=Ve většině případů jsou sendings příjmy použity jak listů pro dodávky zákazníkům (seznam výrobků k odeslání) a na arších, které je recevied a podepsán zákazníkem. Takže dodávek výrobků příjmy je duplicitní funkce a je zřídka aktivován.
-FreeLegalTextOnShippings=Free text on shipments
+FreeLegalTextOnShippings=Volný text o přepravě
 ##### Deliveries #####
 DeliveryOrderNumberingModules=Produkty dodávky příjem číslování modul
 DeliveryOrderModel=Produkty dodávky přijetí modelu
@@ -1457,7 +1457,7 @@ AdvancedEditor=Rozšířené editor
 ActivateFCKeditor=Aktivace pokročilé editor pro:
 FCKeditorForCompany=WYSIWIG vytvoření / edici prvky popisu a poznámka (s výjimkou výrobků / služeb)
 FCKeditorForProduct=WYSIWIG vytvoření / edice produktů / služeb popis a poznámky
-FCKeditorForProductDetails=WYSIWIG creation/edition of products details lines for all entities (proposals, orders, invoices, etc...). <font class="warning">Warning: Using this option for this case is seriously not recommended as it can create problems with special characters and page formating when building PDF files.</font>
+FCKeditorForProductDetails=WYSIWIG tvorba / vydání z výrobků Detaily linky pro všechny subjekty (návrhy, objednávky, faktury, atd ...). <font class="warning">Upozornění: Použití této možnosti pro tento případ je vážně nedoporučuje, protože to může způsobit problémy se speciálními znaky a formátování stránky při vytváření PDF soubory.</font>
 FCKeditorForMailing= WYSIWIG vytvoření / edice pro hromadné eMailings (Nástroje-&gt; e-mailem)
 FCKeditorForUserSignature=WYSIWIG vytvoření / edice uživatelského podpisu
 FCKeditorForMail=WYSIWIG vytvoření / edice pro veškerou poštu (kromě outils-&gt; e-mailem)
@@ -1467,8 +1467,8 @@ OSCommerceTestOk=Připojení k serveru &quot;%s&quot; na databázi &quot;%s&quot
 OSCommerceTestKo1=Připojení k &quot;%s&quot; serveru úspěšná, ale databáze &quot;%s&quot; by nebylo možno dosáhnout.
 OSCommerceTestKo2=Připojení k serveru &quot;%s&quot; s uživatelem &quot;%s 'se nezdařilo.
 ##### Stock #####
-StockSetup=Warehouse module setup
-UserWarehouse=Use user personal warehouses
+StockSetup=Konfigurace modulu Sklady
+UserWarehouse=Používejte osobní uživatelské sklady
 IfYouUsePointOfSaleCheckModule=If you use a Point of Sale module (POS module provided by default or another external module), this setup may be ignored by your Point Of Sale module. Most point of sales modules are designed to create immediatly an invoice and decrease stock by default whatever are options here. So, if you need or not to have a stock decrease when registering a sell from your Point Of Sale, check also your POS module set up.
 ##### Menu #####
 MenuDeleted=Menu smazán
@@ -1504,11 +1504,11 @@ ConfirmDeleteLine=Jste si jisti, že chcete smazat tento řádek?
 ##### Tax #####
 TaxSetup=Daně, sociální příspěvky a dividendy modul nastavení
 OptionVatMode=DPH z důvodu
-OptionVATDefault=Cash basis
-OptionVATDebitOption=Accrual basis
+OptionVATDefault=Cash základ
+OptionVATDebitOption=Akruální báze
 OptionVatDefaultDesc=DPH je splatná: <br> - Na dobírku za zboží (používáme data vystavení faktury) <br> - Plateb za služby
 OptionVatDebitOptionDesc=DPH je splatná: <br> - Na dobírku za zboží (používáme data vystavení faktury) <br> - Na fakturu (debetní) na služby
-SummaryOfVatExigibilityUsedByDefault=Time of VAT exigibility by default according to chosen option:
+SummaryOfVatExigibilityUsedByDefault=Čas DPH exigibility standardně dle zvolené varianty:
 OnDelivery=Na dobírku
 OnPayment=Na zaplacení
 OnInvoice=Na faktuře
@@ -1526,20 +1526,20 @@ AgendaSetup=Akce a agenda Nastavení modulu
 PasswordTogetVCalExport=Klíč povolit export odkaz
 PastDelayVCalExport=Neexportovat události starší než
 AGENDA_USE_EVENT_TYPE=Use events types (managed into menu Setup -> Dictionary -> Type of agenda events)
-AGENDA_DEFAULT_FILTER_TYPE=Set automatically this type of event into search filter of agenda view
-AGENDA_DEFAULT_FILTER_STATUS=Set automatically this status for events into search filter of agenda view
-AGENDA_DEFAULT_VIEW=Which tab do you want to open by default when selecting menu Agenda
+AGENDA_DEFAULT_FILTER_TYPE=Nastavit automaticky tento typ události do vyhledávacího filtru pohledu agendy
+AGENDA_DEFAULT_FILTER_STATUS=Nastavit automaticky tento stav pro události do vyhledávacího filtru pohledu agendy
+AGENDA_DEFAULT_VIEW=Karta, kterou chcete otevřít ve výchozím nastavení při výběru v menu Agenda
 ##### ClickToDial #####
 ClickToDialDesc=Tento modul umožňuje přidat ikonu po telefonních čísel. Klepnutím na tuto ikonu bude volat server s konkrétní URL, kterou definujete níže. To lze použít k volání call centra systému z Dolibarr které mohou volat na telefonní číslo SIP systému pro příklad.
 ##### Point Of Sales (CashDesk) #####
 CashDesk=Bod prodeje
 CashDeskSetup=Místě prodeje modulu nastavení
-CashDeskThirdPartyForSell=Default generic third party to use for sells
+CashDeskThirdPartyForSell=Výchozí obecná třetí strana použitá pro prodej
 CashDeskBankAccountForSell=Výchozí účet použít pro příjem plateb v hotovosti
 CashDeskBankAccountForCheque= Výchozí účet použít pro příjem plateb šekem
 CashDeskBankAccountForCB= Výchozí účet použít pro příjem plateb prostřednictvím kreditní karty
 CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock).
-CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease
+CashDeskIdWareHouse=Vynutit a omezit sklad používat pro pokles zásob
 StockDecreaseForPointOfSaleDisabled=Stock decrease from Point Of Sale disabled
 StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with lot management
 CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sell from Point Of Sale. So a warehouse is required.
@@ -1567,7 +1567,7 @@ SuppliersSetup=Dodavatel modul nastavení
 SuppliersCommandModel=Kompletní šablona se s dodavately řádu (logo. ..)
 SuppliersInvoiceModel=Kompletní šablona dodavatelské faktury (logo. ..)
 SuppliersInvoiceNumberingModel=Dodavatelských faktur číslování modelů
-IfSetToYesDontForgetPermission=If set to yes, don't forget to provide permissions to groups or users allowed for the second approval
+IfSetToYesDontForgetPermission=Pokud je nastaveno na ano, nezapomeňte poskytnout oprávnění skupiny nebo uživatele povolených pro druhou schválení
 ##### GeoIPMaxmind #####
 GeoIPMaxmindSetup=GeoIP Maxmind modul nastavení
 PathToGeoIPMaxmindCountryDataFile=Cesta k souboru obsahující Maxmind IP pro země překladu. <br> Příklady: <br> / Usr / local / share / GeoIP / GeoIP.dat <br> / Usr / share / GeoIP / GeoIP.dat
@@ -1585,40 +1585,40 @@ TaskModelModule=Úkoly zprávy Vzor dokladu
 ECMSetup = GED Setup
 ECMAutoTree = Automatické strom složek a dokumentů
 ##### Fiscal Year #####
-FiscalYears=Fiscal years
-FiscalYear=Fiscal year
-FiscalYearCard=Fiscal year card
-NewFiscalYear=New fiscal year
-EditFiscalYear=Edit fiscal year
-OpenFiscalYear=Open fiscal year
-CloseFiscalYear=Close fiscal year
-DeleteFiscalYear=Delete fiscal year
-ConfirmDeleteFiscalYear=Are you sure to delete this fiscal year ?
-Opened=Opened
-Closed=Closed
-AlwaysEditable=Can always be edited
+FiscalYears=Fiskální roky
+FiscalYear=Fiskální rok
+FiscalYearCard=Karta fiskálního roku
+NewFiscalYear=Nový fiskální rok
+EditFiscalYear=Upravit fiskální rok
+OpenFiscalYear=Otevřeno fiskální rok
+CloseFiscalYear=Zavřít fiskální rok
+DeleteFiscalYear=Smazat fiskální rok
+ConfirmDeleteFiscalYear=Jste si jisti, že chcete tento fiskální rok smazat?
+Opened=Otevřeno
+Closed=Zavřeno
+AlwaysEditable=Může být vždy upraveno
 MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application)
-NbMajMin=Minimum number of uppercase characters
-NbNumMin=Minimum number of numeric characters
-NbSpeMin=Minimum number of special characters
-NbIteConsecutive=Maximum number of repeating same characters
+NbMajMin=Minimální počet velkých písmen
+NbNumMin=Minimální počet číselných znaků
+NbSpeMin=Minimální počet speciálních znaků
+NbIteConsecutive=Maximální počet opakování stejných znaků
 NoAmbiCaracAutoGeneration=Do not use ambiguous characters ("1","l","i","|","0","O") for automatic generation
-SalariesSetup=Setup of module salaries
-SortOrder=Sort order
-Format=Format
+SalariesSetup=Nastavení modulu platů
+SortOrder=Řazení objedávek
+Format=Formát
 TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type
-IncludePath=Include path (defined into variable %s)
-ExpenseReportsSetup=Setup of module Expense Reports
-TemplatePDFExpenseReports=Document templates to generate expense report document
-NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only.
+IncludePath=Zahrnout cestu (definováno v proměnné% s)
+ExpenseReportsSetup=Nastavení modulu Expense Reports
+TemplatePDFExpenseReports=Šablon dokumentů ke generování dokumentu sestavy výdajů
+NoModueToManageStockDecrease=Žádný modul schopen řídit automatickou legální pokles byl aktivován. Sklad snížení bude provedeno pouze na ruční zadávání.
 NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only.
 YouMayFindNotificationsFeaturesIntoModuleNotification=You may find options for EMail notifications by enabling and configuring the module "Notification".
-ListOfNotificationsPerContact=List of notifications per contact*
-ListOfFixedNotifications=List of fixed notifications
+ListOfNotificationsPerContact=Seznam oznámení na kontakt *
+ListOfFixedNotifications=Seznam pevných oznámení
 GoOntoContactCardToAddMore=Go on the tab "Notifications" of a thirdparty contact to add or remove notifications for contacts/addresses
-Threshold=Threshold
-BackupDumpWizard=Wizard to build database backup dump file
-SomethingMakeInstallFromWebNotPossible=Installation of external module is not possible from the web interface for the following reason:
-SomethingMakeInstallFromWebNotPossible2=For this reason, process to upgrade described here is only manual steps a privileged user can do.
+Threshold=Práh
+BackupDumpWizard=Průvodce vybudovat záložní databázi soubor s výpisem
+SomethingMakeInstallFromWebNotPossible=Instalace externího modulu není možné z webového rozhraní z tohoto důvodu:
+SomethingMakeInstallFromWebNotPossible2=Z tohoto důvodu, proces upgradovat popsáno zde je pouze ruční kroky privilegovaný uživatel může dělat.
 InstallModuleFromWebHasBeenDisabledByFile=Install of external module from application has been disabled by your administrator. You must ask him to remove the file <strong>%s</strong> to allow this feature.
 ConfFileMuseContainCustom=Installing an external module from application save the module files into directory <strong>%s</strong>. To have this directory processed by Dolibarr, you must setup your <strong>conf/conf.php</strong> to have option<br>- <strong>$dolibarr_main_url_root_alt</strong> enabled to value <strong>$dolibarr_main_url_root_alt="/custom"</strong><br>- <strong>$dolibarr_main_document_root_alt</strong> enabled to value <strong>"%s/custom"</strong>
diff --git a/htdocs/langs/cs_CZ/agenda.lang b/htdocs/langs/cs_CZ/agenda.lang
index 4d1d71528a4029aecf0174faec7c90775f3e3702..b7222546db9030d35cda24955dba6f01e9d4f34f 100644
--- a/htdocs/langs/cs_CZ/agenda.lang
+++ b/htdocs/langs/cs_CZ/agenda.lang
@@ -1,69 +1,69 @@
 # Dolibarr language file - Source file is en_US - agenda
 IdAgenda=ID události
 Actions=Události
-ActionsArea=Akce plocha (Akce a úkoly)
-Agenda=Pořad jednání
-Agendas=Pořad
+ActionsArea=Plocha událostí (Akce a úkoly)
+Agenda=Agenda
+Agendas=Agendy
 Calendar=Kalendář
 Calendars=Kalendáře
-LocalAgenda=Internal calendar
-ActionsOwnedBy=Event owned by
+LocalAgenda=Interní kalendář
+ActionsOwnedBy=Vlastnictví události
 AffectedTo=Přiřazeno
 DoneBy=Provedl
-Event=Event
+Event=Událost
 Events=Události
 EventsNb=Počet událostí
 MyEvents=Moje události
-OtherEvents=Další akce
+OtherEvents=Další události
 ListOfActions=Seznam událostí
 Location=Umístění
-EventOnFullDay=Akce po celý den (y)
-SearchAnAction= Hledat událost / úkol
+EventOnFullDay=Událost pro celý den (y)
+SearchAnAction= Hledat událost/úkol
 MenuToDoActions=Všechny neúplné události
-MenuDoneActions=Všechny ukončené akce
+MenuDoneActions=Všechny ukončené události
 MenuToDoMyActions=Moje neúplné události
-MenuDoneMyActions=Moje ukončených akcí
-ListOfEvents=List of events (internal calendar)
-ActionsAskedBy=Akce hlášeny
-ActionsToDoBy=Akce přiřazené
-ActionsDoneBy=Akce provedené
-ActionsForUser=Events for user
-ActionsForUsersGroup=Events for all users of group
-ActionAssignedTo=Event assigned to
-AllMyActions= Všechny mé akce / úkoly
+MenuDoneMyActions=Moje ukončené události
+ListOfEvents=Výpis událostí (interní kalendář)
+ActionsAskedBy=Nahlášené události
+ActionsToDoBy=Přiřazené události
+ActionsDoneBy=Provedené události
+ActionsForUser=Události pro uživatele
+ActionsForUsersGroup=Události pro všechny uživatelské skupiny
+ActionAssignedTo=Událost přiřazena
+AllMyActions= Všechny mé události/úkoly
 AllActions= Všechny události / úkoly
 ViewList=Zobrazení seznamu
-ViewCal=Měsíční pohled
+ViewCal=Měsíční zobrazení
 ViewDay=Denní zobrazení
-ViewWeek=Zobrazit týden
-ViewPerUser=Per user view
+ViewWeek=Týdenní zobrazení
+ViewPerUser=Zobrazení za uživatele
 ViewWithPredefinedFilters= Zobrazit s předem definovanými filtry
-AutoActions= Automatické plnění
-AgendaAutoActionDesc= Definujte zde události, na které chcete Dolibarr vytvořit automaticky událost v programu. Pokud není zaškrtnutá (ve výchozím nastavení), bude pouze manuální činnosti být zahrnuty do pořadu jednání.
-AgendaSetupOtherDesc= Tato stránka poskytuje možnosti, jak dát export vašich akcí Dolibarr do externího kalendáře (thunderbird, Google kalendář, ...)
-AgendaExtSitesDesc=Tato stránka umožňuje deklarovat externí zdroje kalendářů vidět své akce do programu Dolibarr.
+AutoActions= Automatické naplnění
+AgendaAutoActionDesc= Definujte zde události, pro které chcete vytvořit automaticky událost v programu. Pokud není ve výchozím nastavení zaškrtnuta, budou zahrnuty pouze manuální akce v agendě.
+AgendaSetupOtherDesc= Tato stránka poskytuje možnosti, jak povolit export vašich akcí do externího kalendáře (Thunderbird, Google kalendář, ...)
+AgendaExtSitesDesc=Tato stránka umožňuje deklarovat externí zdroje kalendářů pro možnost vidět své akce v agendách programu.
 ActionsEvents=Události, pro které Dolibarr vytvoří akci v programu automaticky
-PropalValidatedInDolibarr=Návrh %s ověřena
+PropalValidatedInDolibarr=Návrh %s ověřen
 InvoiceValidatedInDolibarr=Faktura %s ověřena
-InvoiceValidatedInDolibarrFromPos=Invoice %s validated from POS
-InvoiceBackToDraftInDolibarr=Faktura %s vrátit do stavu návrhu
+InvoiceValidatedInDolibarrFromPos=Faktura %s ověřena z POS
+InvoiceBackToDraftInDolibarr=Faktura %s vrácena do stavu návrhu
 InvoiceDeleteDolibarr=Faktura %s smazána
-OrderValidatedInDolibarr=Objednat %s ověřena
-OrderDeliveredInDolibarr=Order %s classified delivered
-OrderCanceledInDolibarr=Objednat %s zrušen
-OrderBilledInDolibarr=Order %s classified billed
-OrderApprovedInDolibarr=Objednat %s schválen
-OrderRefusedInDolibarr=Order %s refused
-OrderBackToDraftInDolibarr=Objednat %s vrátit do stavu návrhu
-OrderCanceledInDolibarr=Objednat %s zrušen
-ProposalSentByEMail=Komerční návrh %s zaslána e-mailem
-OrderSentByEMail=%s zákazníků objednávka zaslána e-mailem
-InvoiceSentByEMail=%s faktuře Zákazníka zaslána e-mailem
-SupplierOrderSentByEMail=%s Dodavatel objednávka zaslána e-mailem
-SupplierInvoiceSentByEMail=%s dodavatelské faktury zasílané e-mailem
-ShippingSentByEMail=Shipment %s sent by EMail
-ShippingValidated= Shipment %s validated
-InterventionSentByEMail=Intervention %s sent by EMail
+OrderValidatedInDolibarr=Objednávka %s ověřena
+OrderDeliveredInDolibarr=Objednávka %s označena jako dodaná
+OrderCanceledInDolibarr=Objednávka %s zrušena
+OrderBilledInDolibarr=Objednávka %s označena jako zaúčtovaná
+OrderApprovedInDolibarr=Objednávka %s schválena
+OrderRefusedInDolibarr=Objednávka %s zamítnuta
+OrderBackToDraftInDolibarr=Objednávka %s vrácena do stavu návrhu
+OrderCanceledInDolibarr=Objednávka %s zrušena
+ProposalSentByEMail=Komerční návrh %s zaslán e-mailem
+OrderSentByEMail=Zákaznická objednávka %s zaslána e-mailem
+InvoiceSentByEMail=Zákaznická faktura %s zaslána e-mailem
+SupplierOrderSentByEMail=Dodavatelská objednávka %s zaslána e-mailem
+SupplierInvoiceSentByEMail=Dodavatelská faktura %s zaslána e-mailem
+ShippingSentByEMail=Zásilka %s zaslána na e-mail
+ShippingValidated= Zásilka %s ověřena
+InterventionSentByEMail=Intervenceí %s zaslána e-mailem
 NewCompanyToDolibarr= Třetí strana vytvořena
 DateActionPlannedStart= Plánované datum zahájení
 DateActionPlannedEnd= Plánované datum ukončení
@@ -72,27 +72,27 @@ DateActionDoneEnd= Skutečné datum ukončení
 DateActionStart= Datum zahájení
 DateActionEnd= Datum ukončení
 AgendaUrlOptions1=Můžete také přidat následující parametry filtrování výstupu:
-AgendaUrlOptions2=<b>login=%s</b> to restrict output to actions created by or assigned to user <b>%s</b>.
-AgendaUrlOptions3=<b>logina=%s</b> to restrict output to actions owned by a user <b>%s</b>.
+AgendaUrlOptions2=<b>login=%s</b> omezuje výstup do akcí vytvořených nebo přiřazených uživateli <b>%s</b>.
+AgendaUrlOptions3=<b>logina=%s</b> omezuje výstup na akce vlastněné uživatelem <b>%s</b>.
 AgendaUrlOptions4=<b>logint = %s</b> omezit výstup na akce přiřazených uživatelských <b>%s.</b>
-AgendaUrlOptionsProject=<b>project=PROJECT_ID</b> to restrict output to actions associated to project <b>PROJECT_ID</b>.
+AgendaUrlOptionsProject=<b>projekt=PROJECT_ID</b> omezit výstup na akce spojené s projektem <b>PROJECT_ID</b>.
 AgendaShowBirthdayEvents=Zobrazit narozeniny kontaktů
 AgendaHideBirthdayEvents=Skrýt narozeniny kontaktů
 Busy=Zaneprázdněný
 ExportDataset_event1=Seznam agendy událostí
-DefaultWorkingDays=Default working days range in week (Example: 1-5, 1-6)
-DefaultWorkingHours=Default working hours in day (Example: 9-18)
+DefaultWorkingDays=Výchozí pracovní dny se pohybují v týdnu. (Příklad: 1-5, 1-6)
+DefaultWorkingHours=Výchozí pracovní hodiny dne. (Příklad: 9-18)
 # External Sites ical
-ExportCal=Export kalendář
+ExportCal=Export kalendáře
 ExtSites=Importovat externí kalendáře
-ExtSitesEnableThisTool=Show external calendars (defined into global setup) into agenda. Does not affect external calendars defined by users.
+ExtSitesEnableThisTool=Zobrazit externí kalendáře (definováno v globálním nastavení) do agendy. Nemá vliv na externí kalendáře definované uživateli.
 ExtSitesNbOfAgenda=Počet kalendářů
 AgendaExtNb=Kalendář nb %s
-ExtSiteUrlAgenda=URL pro přístup. Soubor iCal
-ExtSiteNoLabel=Ne Popis
-WorkingTimeRange=Working time range
-WorkingDaysRange=Working days range
-AddEvent=Create event
-MyAvailability=My availability
-ActionType=Event type
-DateActionBegin=Start event date
+ExtSiteUrlAgenda=URL pro přístup *.iCal souboru
+ExtSiteNoLabel=Nepodepsáno
+WorkingTimeRange=Rozsah pracovní doby
+WorkingDaysRange=Rozsah pracovních dnů
+AddEvent=Vytvořit událost
+MyAvailability=Moje dostupnost
+ActionType=Typ události
+DateActionBegin=Datum zahájení události
diff --git a/htdocs/langs/cs_CZ/bills.lang b/htdocs/langs/cs_CZ/bills.lang
index 56e82e77ef45764f2f2f3a2130c69c7e313a5cbf..3357958b063459df018c36b34d752849a00b269a 100644
--- a/htdocs/langs/cs_CZ/bills.lang
+++ b/htdocs/langs/cs_CZ/bills.lang
@@ -1,204 +1,204 @@
 # Dolibarr language file - Source file is en_US - bills
 Bill=Faktura
 Bills=Faktury
-BillsCustomers=Customers invoices
-BillsCustomer=Customers invoice
-BillsSuppliers=Suppliers invoices
-BillsCustomersUnpaid=Unpaid customers invoices
+BillsCustomers=Zákaznické faktury
+BillsCustomer=Zákaznická faktura
+BillsSuppliers=Dodavatelské faktury
+BillsCustomersUnpaid=Nezaplacené faktury zákazníků
 BillsCustomersUnpaidForCompany=Nezaplacené faktury pro zákazníka %s
 BillsSuppliersUnpaid=Nezaplacené faktury dodavatele
 BillsSuppliersUnpaidForCompany=Nezaplacené faktury dodavatele pro %s
 BillsLate=Opožděné platby
-BillsStatistics=Customers invoices statistics
-BillsStatisticsSuppliers=Suppliers invoices statistics
-DisabledBecauseNotErasable=Zakázáno, protože nelze smazat
+BillsStatistics=Statistiky zákaznických faktur
+BillsStatisticsSuppliers=Statistiky dodavatelských faktur
+DisabledBecauseNotErasable=Zakázáno, protože nelze odstranit
 InvoiceStandard=Standardní faktura
 InvoiceStandardAsk=Standardní faktura
-InvoiceStandardDesc=Tento druh faktury je společná faktura.
-InvoiceDeposit=Zálohové faktury
-InvoiceDepositAsk=Zálohové faktury
-InvoiceDepositDesc=Tento druh faktury se děje, když je záloha byla přijata.
+InvoiceStandardDesc=Tento druh faktury je obyčejná faktura.
+InvoiceDeposit=Zálohová faktura
+InvoiceDepositAsk=Zálohová faktura
+InvoiceDepositDesc=Tento druh faktury se vystaví, když je záloha přijata.
 InvoiceProForma=Proforma faktura
 InvoiceProFormaAsk=Proforma faktura
-InvoiceProFormaDesc=<b>Proforma faktura</b> je obraz skutečné faktury, ale nemá evidence hodnotu.
+InvoiceProFormaDesc=<b>Proforma faktura</b> je obraz skutečné faktury, ale nemá účetní hodnotu.
 InvoiceReplacement=Náhradní faktura
 InvoiceReplacementAsk=Náhradní faktura faktury
-InvoiceReplacementDesc=<b>Replacement invoice</b> is used to cancel and replace completely an invoice with no payment already received.<br><br>Note: Only invoices with no payment on it can be replaced. If the invoice you replace is not yet closed, it will be automatically closed to 'abandoned'.
+InvoiceReplacementDesc=<b>Náhradní faktura</b> se používá ke zrušení a nahrazení neuhrazené a vrácené faktury. <br><br> Poznámka: Pouze neuhrazená faktura může být nahrazena. Pokud není uzavřena, bude automaticky nastavena jako  'opuštěná '.
 InvoiceAvoir=Dobropis
-InvoiceAvoirAsk=Dobropis opravit fakturu
-InvoiceAvoirDesc=<b>Dobropis</b> je negativní faktura slouží k řešení skutečnost, že faktura je množství, které se liší než částka skutečně vyplacena (protože zákazník zaplatil příliš mnoho omylem, nebo nebude vyplacena úplně, protože on se vrátil některé produkty, například).
-invoiceAvoirWithLines=Create Credit Note with lines from the origin invoice
-invoiceAvoirWithPaymentRestAmount=Create Credit Note with remaining unpaid of origin invoice
-invoiceAvoirLineWithPaymentRestAmount=Credit Note for remaining unpaid amount
-ReplaceInvoice=Vyměňte faktury %s
+InvoiceAvoirAsk=Opravit fakturu na dobropis
+InvoiceAvoirDesc=<b>Dobropis</b> je negativní faktura řešící skutečnost, že na původní faktuře je částka, které se liší od částky skutečně vyplacené. (zákazník zaplatil více omylem, nebo nezaplatil vše, protože například vrátil některé produkty).
+invoiceAvoirWithLines=Vytvořit dobropis s linkami od počátku faktury
+invoiceAvoirWithPaymentRestAmount=Vytvořit dobropis se zbývající neuhrazenou původní fakturou
+invoiceAvoirLineWithPaymentRestAmount=Dobropis na zbývající nezaplacené částky
+ReplaceInvoice=Nahradit faktury %s
 ReplacementInvoice=Náhradní faktura
 ReplacedByInvoice=Nahrazeno faktuře %s
 ReplacementByInvoice=Nahrazeno faktuře
 CorrectInvoice=Správné faktura %s
 CorrectionInvoice=Oprava faktury
-UsedByInvoice=Použita na úhradu faktur %s
+UsedByInvoice=Použito na úhradu faktur %s
 ConsumedBy=Spotřebované
-NotConsumed=Která nebyla spotřebována,
-NoReplacableInvoice=Žádné výměnné faktury
-NoInvoiceToCorrect=Ne fakturu opravit
-InvoiceHasAvoir=Opraveno jedním nebo několika faktur
-CardBill=Faktura karty
-PredefinedInvoices=Předdefinované Faktury
+NotConsumed=Nebylo spotřebováno
+NoReplacableInvoice=Žádné faktury k výměně
+NoInvoiceToCorrect=Źádné faktury k opravě
+InvoiceHasAvoir=Opravena jedna nebo několik faktur
+CardBill=Karta faktury
+PredefinedInvoices=Předdefinované faktury
 Invoice=Faktura
 Invoices=Faktury
 InvoiceLine=Faktura linka
-InvoiceCustomer=Zákazník faktura
-CustomerInvoice=Zákazník faktura
-CustomersInvoices=Zákazníci faktury
-SupplierInvoice=Dodavatel fakturu
-SuppliersInvoices=Dodavatelé faktury
-SupplierBill=Dodavatel fakturu
-SupplierBills=dodavatelé faktury
+InvoiceCustomer=Faktura zákazníka
+CustomerInvoice=Faktura zákazníka
+CustomersInvoices=Faktury zákazníků
+SupplierInvoice=Faktura dodavatele
+SuppliersInvoices=Faktury dodavatelů
+SupplierBill=Faktura dodavatele
+SupplierBills=Faktury dodavatelů
 Payment=Platba
-PaymentBack=Platba zpět
+PaymentBack=Vrácení platby
 Payments=Platby
-PaymentsBack=Platby zpět
-PaidBack=Placené zpět
+PaymentsBack=Vrácení plateb
+PaidBack=Navrácené
 DatePayment=Datum platby
 DeletePayment=Odstranit platby
 ConfirmDeletePayment=Jste si jisti, že chcete smazat tuto platbu?
-ConfirmConvertToReduc=Chcete převést tento dobropis nebo ukládáním do absolutního slevu? <br> Částka bude tak uložena mezi všemi slevy a může být použit jako slevu pro aktuální nebo budoucí faktury pro tohoto zákazníka.
-SupplierPayments=Dodavatelé platby
+ConfirmConvertToReduc=Chcete převést tento dobropis nebo depozit  na absolutní slevu? <br> Částka bude tak uložena ke všem slevám a může být použit jako sleva pro aktuální nebo budoucí faktury tohoto zákazníka.
+SupplierPayments=Platby dodavatelům
 ReceivedPayments=Přijaté platby
 ReceivedCustomersPayments=Platby přijaté od zákazníků
-PayedSuppliersPayments=Payments payed to suppliers
-ReceivedCustomersPaymentsToValid=Přijaté platby zákazníci ověřují
-PaymentsReportsForYear=Platby zprávy pro %s
-PaymentsReports=Platby zprávy
-PaymentsAlreadyDone=Platby neučinily
-PaymentsBackAlreadyDone=Platby zpět neučinily
-PaymentRule=Platba pravidlo
+PayedSuppliersPayments=Platby uhrazené dodavatelům
+ReceivedCustomersPaymentsToValid=Ověřené přijaté platby od zákazníků
+PaymentsReportsForYear=Zprávy o platbách pro %s
+PaymentsReports=Zprávy o platbách
+PaymentsAlreadyDone=Provedené platby
+PaymentsBackAlreadyDone=Provedené platby zpět
+PaymentRule=Pravidlo platby
 PaymentMode=Typ platby
-PaymentTerm=Payment term
-PaymentConditions=Payment terms
-PaymentConditionsShort=Payment terms
+PaymentTerm=Termín platby
+PaymentConditions=Platební podmínky
+PaymentConditionsShort=Platební podmínky
 PaymentAmount=Částka platby
 ValidatePayment=Ověření platby
-PaymentHigherThanReminderToPay=Platební vyšší než upomínce k zaplacení
-HelpPaymentHigherThanReminderToPay=Pozor, výše platby z jednoho nebo více účtů je vyšší než ve zbytku platit. <br> Upravte položky, jinak potvrdí a přemýšlet o vytvoření dobropisu přeplatku obdrží pro každou přeplatku faktury.
-HelpPaymentHigherThanReminderToPaySupplier=Attention, the payment amount of one or more bills is higher than the rest to pay. <br> Edit your entry, otherwise confirm.
-ClassifyPaid=Klasifikaci &quot;Zaplaceno&quot;
-ClassifyPaidPartially=Klasifikovat &quot;Placené částečně&quot;
-ClassifyCanceled=Klasifikovat &quot;Opuštěné&quot;
-ClassifyClosed=Klasifikaci &quot;uzavřeným&quot;
-ClassifyUnBilled=Classify 'Unbilled'
+PaymentHigherThanReminderToPay=Platba vyšší než upomínka k zaplacení
+HelpPaymentHigherThanReminderToPay=Pozor, výše platby z jednoho nebo více účtů je vyšší než v zůstatku. <br> Upravte položky nebo potvrďte a připravte vytvoření dobropisu přeplatku přijatého pro každou fakturu.
+HelpPaymentHigherThanReminderToPaySupplier=Pozor, částka platby z jednoho nebo více účtů je vyšší, než ostatní úhrady. <br> Upravte položku, nebo potvrďte.
+ClassifyPaid=Klasifikace 'Zaplaceno'
+ClassifyPaidPartially=Klasifikace 'Částečně uhrazeno'
+ClassifyCanceled=Klasifikace 'Opuštěné'
+ClassifyClosed=Klasifikace 'Uzavřeno'
+ClassifyUnBilled=Označit jako "Nevyfakturovaný"
 CreateBill=Vytvořit fakturu
-AddBill=Create invoice or credit note
+AddBill=Vytvořit fakturu nebo dobropis
 AddToDraftInvoices=Přidat k návrhu fakturu
 DeleteBill=Odstranit fakturu
-SearchACustomerInvoice=Hledat zákaznické faktuře
-SearchASupplierInvoice=Hledat na dodavatelské faktury
+SearchACustomerInvoice=Hledat zákaznickou fakturu
+SearchASupplierInvoice=Hledat dodavatelskou fakturu
 CancelBill=Storno faktury
-SendRemindByMail=Poslat připomínku EMail
-DoPayment=Do platbu
-DoPaymentBack=Do platební záda
-ConvertToReduc=Převod do budoucnosti slevou
-EnterPaymentReceivedFromCustomer=Zadejte platby, které obdržel od zákazníka
-EnterPaymentDueToCustomer=Provést platbu ze strany zákazníka
-DisabledBecauseRemainderToPayIsZero=Disabled because remaining unpaid is zero
+SendRemindByMail=Poslat upomínku e-mailem
+DoPayment=Proveďte platbu
+DoPaymentBack=Vraťte platbu
+ConvertToReduc=Převod do budoucí slevy
+EnterPaymentReceivedFromCustomer=Zadejte platbu obdrženoou od zákazníka
+EnterPaymentDueToCustomer=Provést platbu pro zákazníka
+DisabledBecauseRemainderToPayIsZero=Zakázáno, protože zbývající nezaplacená částka je nula
 Amount=Množství
-PriceBase=Cena základní
+PriceBase=Základní cena
 BillStatus=Stav faktury
-BillStatusDraft=Návrh (musí být ověřena)
-BillStatusPaid=Placený
-BillStatusPaidBackOrConverted=Placené nebo převedeny na slevu
-BillStatusConverted=Placená (připravena pro závěrečné faktuře)
-BillStatusCanceled=Opuštěný
-BillStatusValidated=Ověřené (třeba věnovat)
+BillStatusDraft=Návrh (musí být ověřeno)
+BillStatusPaid=Placeno
+BillStatusPaidBackOrConverted=Placeno nebo převedeno na slevu
+BillStatusConverted=Placeno (připraveno na závěrečné faktuře)
+BillStatusCanceled=Opuštěno
+BillStatusValidated=Ověřeno (je třeba uhradit)
 BillStatusStarted=Začínáme
-BillStatusNotPaid=Nezaplatil
-BillStatusClosedUnpaid=Uzavřená (neplacené)
-BillStatusClosedPaidPartially=Placené (částečně)
+BillStatusNotPaid=Nezaplaceno
+BillStatusClosedUnpaid=Uzavřeno (neuhrazené)
+BillStatusClosedPaidPartially=Placeno (částečně)
 BillShortStatusDraft=Návrh
-BillShortStatusPaid=Placený
+BillShortStatusPaid=Placeno
 BillShortStatusPaidBackOrConverted=Zpracované
 BillShortStatusConverted=Zpracované
-BillShortStatusCanceled=Opuštěný
-BillShortStatusValidated=Ověřené
+BillShortStatusCanceled=Opuštěno
+BillShortStatusValidated=Ověřeno
 BillShortStatusStarted=Začínáme
-BillShortStatusNotPaid=Nezaplatil
+BillShortStatusNotPaid=Nezaplaceno
 BillShortStatusClosedUnpaid=Zavřeno
-BillShortStatusClosedPaidPartially=Placené (částečně)
+BillShortStatusClosedPaidPartially=Placeno (částečně)
 PaymentStatusToValidShort=Chcete-li ověřit
-ErrorVATIntraNotConfigured=Intracommunautary DIČ zatím není definován
-ErrorNoPaiementModeConfigured=Žádná výchozí platební režim definován. Přejít na faktury modulu nastavení to opravit.
-ErrorCreateBankAccount=Vytvořte si bankovní účet, pak přejděte na nastavení panelu faktur modulu definovat platebních režimů
+ErrorVATIntraNotConfigured=Intracommunautary DIČ zatím není definováno
+ErrorNoPaiementModeConfigured=Není definován žádný výchozí platební režim. Přejděte do modulu nastavení faktur a opravte to.
+ErrorCreateBankAccount=Vytvořte si bankovní účet a pak přejděte do modulu nastavení faktur a nadefinujte platební režimy
 ErrorBillNotFound=Faktura %s neexistuje
-ErrorInvoiceAlreadyReplaced=Chyba pokusu o ověření fakturu nahradit faktury %s. Ale tenhle byl již nahrazen faktuře %s.
-ErrorDiscountAlreadyUsed=Chyba sleva již používá
-ErrorInvoiceAvoirMustBeNegative=Chyba musí být správná faktura mít zápornou částku
-ErrorInvoiceOfThisTypeMustBePositive=Chyba musí být tento typ faktury mají kladné hodnoty
-ErrorCantCancelIfReplacementInvoiceNotValidated=Chyba, nelze zrušit, pokud faktura, která byla nahrazena jinou fakturu, která je stále ve stavu návrhu
+ErrorInvoiceAlreadyReplaced=Chyba při pokusu o ověření faktury a nahrazení fakturou %s. Ta byla již nahrazena fakturou %s.
+ErrorDiscountAlreadyUsed=Chyba, sleva byla již použita
+ErrorInvoiceAvoirMustBeNegative=Chyba, správná faktura musí mít zápornou částku
+ErrorInvoiceOfThisTypeMustBePositive=Chyba, tento typ faktury musí mít kladnou částku
+ErrorCantCancelIfReplacementInvoiceNotValidated=Chyba, nelze zrušit, pokud faktura, která byla nahrazena jinou fakturu je stále ve stavu návrhu
 BillFrom=Z
 BillTo=Na
 ActionsOnBill=Akce na faktuře
 NewBill=Nová faktura
 LastBills=Poslední %s faktury
-LastCustomersBills=Poslední %s zákazníkům faktury
-LastSuppliersBills=Poslední %s dodavatelů faktury
+LastCustomersBills=Poslední %s zákazníci faktury
+LastSuppliersBills=Poslední %s dodavatelé faktury
 AllBills=Všechny faktury
 OtherBills=Ostatní faktury
 DraftBills=Návrhy faktury
-CustomersDraftInvoices=Zákazníci návrh faktury
-SuppliersDraftInvoices=Dodavatelé návrh faktury
-Unpaid=Nezaplacený
+CustomersDraftInvoices=Návrh zákaznické faktury
+SuppliersDraftInvoices=Návrh dodavatelské faktury
+Unpaid=Nezaplaceno
 ConfirmDeleteBill=Jste si jisti, že chcete smazat tuto fakturu?
-ConfirmValidateBill=Jste si jisti, že chcete ověřit tuto fakturu s referenčními <b>%s?</b>
-ConfirmUnvalidateBill=Jste si jisti, že chcete změnit fakturační <b>%s</b> do stavu návrhu?
-ConfirmClassifyPaidBill=Jste si jisti, že chcete změnit fakturační <b>%s</b> do stavu placené?
-ConfirmCancelBill=Jste si jisti, že chcete zrušit faktury <b>%s?</b>
-ConfirmCancelBillQuestion=Proč chcete klasifikovat faktura &quot;opuštěný&quot;?
-ConfirmClassifyPaidPartially=Jste si jisti, že chcete změnit fakturační <b>%s</b> do stavu placené?
-ConfirmClassifyPaidPartiallyQuestion=Tato faktura nebyla zaplacena úplně. Jaké jsou důvody pro vás zavřít tuto fakturu?
-ConfirmClassifyPaidPartiallyReasonAvoir=Remaining unpaid <b>(%s %s)</b> is a discount granted because payment was made before term. I regularise the VAT with a credit note.
-ConfirmClassifyPaidPartiallyReasonDiscountNoVat=Remaining unpaid <b>(%s %s)</b> is a discount granted because payment was made before term. I accept to lose the VAT on this discount.
-ConfirmClassifyPaidPartiallyReasonDiscountVat=Remaining unpaid <b>(%s %s)</b> is a discount granted because payment was made before term. I recover the VAT on this discount without a credit note.
-ConfirmClassifyPaidPartiallyReasonBadCustomer=Bad zákazník
-ConfirmClassifyPaidPartiallyReasonProductReturned=Produkty částečně vrátil
+ConfirmValidateBill=Jste si jisti, že chcete ověřit tuto fakturu s referenčním <b>%s?</b>
+ConfirmUnvalidateBill=Jste si jisti, že chcete změnit fakturu <b>%s</b> do stavu návrhu?
+ConfirmClassifyPaidBill=Jste si jisti, že chcete změnit fakturu <b>%s</b> do stavu uhrazeno?
+ConfirmCancelBill=Jste si jisti, že chcete zrušit fakturu <b>%s?</b>
+ConfirmCancelBillQuestion=Proč chcete klasifikovat fakturu jako 'opuštěnou' ?
+ConfirmClassifyPaidPartially=Jste si jisti, že chcete změnit fakturu <b>%s</b> do stavu placeno?
+ConfirmClassifyPaidPartiallyQuestion=Tato faktura nebyla zaplacena úplně. Z jakých důvodů chcete uzavřít tuto fakturu?
+ConfirmClassifyPaidPartiallyReasonAvoir=Zbývající neuhrazené <b>(%s %s),</b> je poskytnutá sleva, protože platba byla provedena před termínem splatnosti. Opravte částku DPH  dobropisem.
+ConfirmClassifyPaidPartiallyReasonDiscountNoVat=Zbývající neuhrazené <b>(%s %s),</b> je poskytnutá sleva, protože platba byla provedena před termínem splatnosti. Souhlasím se ztrátou DPH z této slevy.
+ConfirmClassifyPaidPartiallyReasonDiscountVat=Zbývající neuhrazené <b>(%s %s),</b> je poskytnutá sleva, protože platba byla provedena před termínem splatnosti. Vrátím zpět DPH na této slevě bez dobropisu
+ConfirmClassifyPaidPartiallyReasonBadCustomer=Špatný zákazník
+ConfirmClassifyPaidPartiallyReasonProductReturned=Produkty částečně vrácené
 ConfirmClassifyPaidPartiallyReasonOther=Částka opuštěná jiného důvodu
-ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=Tato volba je možné, pokud faktura byly opatřeny vhodným komentářem. (Příklad &quot;Pouze daň odpovídající ceně, která byla skutečně zaplacena dává práva na odpočet&quot;)
-ConfirmClassifyPaidPartiallyReasonDiscountVatDesc=V některých zemích by tato volba být možné pouze tehdy, pokud faktura obsahuje správnou notu.
-ConfirmClassifyPaidPartiallyReasonAvoirDesc=Použijte tuto volbu, pokud všechny ostatní nesluší
-ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=<b>Špatný zákazník</b> je zákazník, který odmítne zaplatit svůj dluh.
-ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=Tato volba se používá, když platba není kompletní, protože některé z výrobků byly vráceny
-ConfirmClassifyPaidPartiallyReasonOtherDesc=Použijte tuto volbu, pokud všechny ostatní nehodí, například v následující situaci: <br> - Platba není kompletní, protože některé výrobky byly odeslány zpět <br> - Nárokovaná částka příliš důležité, protože sleva byla zapomenuta <br> Ve všech případech, částku přes nárokované musí být opraven v systému evidence vytvořením dobropisu.
+ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=Tato volba je možná, pokud faktura byla opatřena vhodným komentářem. (Příklad: "Pouze daň odpovídající ceně, která byla skutečně zaplacena dává práva na odpočet")
+ConfirmClassifyPaidPartiallyReasonDiscountVatDesc=V některých zemích je tato volba možná pouze tehdy, pokud faktura obsahuje správnou poznámku.
+ConfirmClassifyPaidPartiallyReasonAvoirDesc=Použijte tuto volbu, pokud všechny ostatní volby nelze použít
+ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=<b>Špatný zákazník</b> je zákazník, který odmítá zaplatit svůj dluh.
+ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=Tato volba se používá když platba není kompletní, protože některé z výrobků byly vráceny
+ConfirmClassifyPaidPartiallyReasonOtherDesc=Použijte tuto volbu, pokud se všechny ostatní nehodí, například v následujících situacích: <br> - Platba není kompletní, protože některé výrobky byly vráceny <br> - Nárokovaná částka je příliš důležitá, protože sleva nebyla uplatněna <br> Ve všech případech, kdy se částka liší od nárokované, musí být provedena oprava v systému evidence vytvořením dobropisu.
 ConfirmClassifyAbandonReasonOther=Ostatní
 ConfirmClassifyAbandonReasonOtherDesc=Tato volba se používá ve všech ostatních případech. Například proto, že máte v plánu vytvořit nahrazující fakturu.
-ConfirmCustomerPayment=Myslíte si potvrzení této platební vstup pro %s <b>%s?</b>
-ConfirmSupplierPayment=Do you confirm this payment input for <b>%s</b> %s ?
-ConfirmValidatePayment=Jste si jisti, že chcete ověřit tuto platbu? Žádná změna může být provedena, jakmile je platba ověřena.
+ConfirmCustomerPayment=Chcete potvrdit tento platební vstup pro %s <b>%s?</b>
+ConfirmSupplierPayment=Chcete potvrdit tento platební vstup pro <b>%s</b> %s ?
+ConfirmValidatePayment=Jste si jisti, že chcete ověřit tuto platbu? Po ověření platby už nebudete moci provést žádnou změnu.
 ValidateBill=Ověřit fakturu
-UnvalidateBill=Unvalidate fakturu
+UnvalidateBill=Neověřit fakturu
 NumberOfBills=Nb faktur
-NumberOfBillsByMonth=Nb faktur měsíce
-AmountOfBills=Výše faktur
-AmountOfBillsByMonthHT=Výše faktur měsíčně (bez daně)
+NumberOfBillsByMonth=Nb faktury měsíce
+AmountOfBills=Částka faktur
+AmountOfBillsByMonthHT=Čýstka faktur měsíčně (bez daně)
 ShowSocialContribution=Zobrazit sociální příspěvek
 ShowBill=Zobrazit fakturu
 ShowInvoice=Zobrazit fakturu
-ShowInvoiceReplace=Zobrazit výměně fakturu
+ShowInvoiceReplace=Zobrazit opravenou fakturu
 ShowInvoiceAvoir=Zobrazit dobropis
 ShowInvoiceDeposit=Zobrazit zálohovou fakturu
 ShowPayment=Zobrazit platbu
 File=Soubor
 AlreadyPaid=Již zaplacené
-AlreadyPaidBack=Již vrátí
-AlreadyPaidNoCreditNotesNoDeposits=Již zaplacena (bez dobropisů a vklady)
-Abandoned=Opuštěný
-RemainderToPay=Remaining unpaid
-RemainderToTake=Remaining amount to take
-RemainderToPayBack=Remaining amount to pay back
-Rest=Až do
-AmountExpected=Nárokované částky
-ExcessReceived=Nadbytek obdržel
-EscompteOffered=Sleva nabídl (platba před semestru)
-SendBillRef=Submission of invoice %s
-SendReminderBillRef=Submission of invoice %s (reminder)
+AlreadyPaidBack=Již vrácené platby
+AlreadyPaidNoCreditNotesNoDeposits=Již zaplacené (bez dobropisů a vkladů)
+Abandoned=Opuštěné
+RemainderToPay=Zbývající nezaplacené
+RemainderToTake=Zbývající částku, která se
+RemainderToPayBack=Splatit zbývající částku
+Rest=Čeká
+AmountExpected=Nárokovaná částka
+ExcessReceived=Přeplatek obdržel
+EscompteOffered=Nabídnutá  sleva (platba před termínem)
+SendBillRef=Předložení faktury %s
+SendReminderBillRef=Předložení faktury %s (upomínka)
 StandingOrders=Trvalé příkazy
 StandingOrder=Trvalý příkaz
 NoDraftBills=Žádné návrhy faktury
@@ -206,44 +206,44 @@ NoOtherDraftBills=Žádné jiné návrhy faktury
 NoDraftInvoices=Žádné návrhy faktury
 RefBill=Faktura ref
 ToBill=K účtu
-RemainderToBill=Zbývající část zákona
+RemainderToBill=Zbývající část k placení
 SendBillByMail=Poslat e-mailem fakturu
 SendReminderBillByMail=Poslat upozornění e-mailem
 RelatedCommercialProposals=Související obchodní návrhy
-MenuToValid=Chcete-li platné
+MenuToValid=Platné
 DateMaxPayment=Platba musí proběhnout do
-DateEcheance=Datum splatnosti omezení
-DateInvoice=Faktura Datum
-NoInvoice=No faktura
+DateEcheance=Omezení data splatnosti
+DateInvoice=Fakturační datum
+NoInvoice=Žádná faktura
 ClassifyBill=Klasifikovat fakturu
-SupplierBillsToPay=Dodavatelé faktury platit
-CustomerBillsUnpaid=Nezaplacené faktury zákazníky
-DispenseMontantLettres=The written invoices through mecanographic procedures are dispensed by the order in letters
+SupplierBillsToPay=Platba dodavatelské faktury
+CustomerBillsUnpaid=Nezaplacené faktury zákazníků
+DispenseMontantLettres=Písemné faktury až mecanographic postupy jsou vydávány podle pořadí objednávek v dopisech
 NonPercuRecuperable=Nevratná
-SetConditions=Nastavit platební podmínky
+SetConditions=Nastavení platebních podmínek
 SetMode=Nastavit platební režim
 Billed=Účtováno
-RepeatableInvoice=Template invoice
-RepeatableInvoices=Template invoices
-Repeatable=Template
-Repeatables=Templates
-ChangeIntoRepeatableInvoice=Convert into template invoice
-CreateRepeatableInvoice=Create template invoice
-CreateFromRepeatableInvoice=Create from template invoice
-CustomersInvoicesAndInvoiceLines=Zákazníků faktury a faktura je vedení
-CustomersInvoicesAndPayments=Zákazníků faktury a platby
-ExportDataset_invoice_1=Zákazník faktury a faktura je seznam linek
-ExportDataset_invoice_2=Zákazníků faktury a platby
-ProformaBill=Proforma Bill:
+RepeatableInvoice=Šablona faktury
+RepeatableInvoices=Šablony faktur
+Repeatable=Šablona
+Repeatables=Šablony
+ChangeIntoRepeatableInvoice=Převést do šablony faktury
+CreateRepeatableInvoice=Vytvořit šablonu faktury
+CreateFromRepeatableInvoice=Vytvořit ze šablony faktury
+CustomersInvoicesAndInvoiceLines=Zákaznické faktury a linky faktur
+CustomersInvoicesAndPayments=Zákaznické faktury a platby
+ExportDataset_invoice_1=Zákaznické faktury a seznam linek faktur
+ExportDataset_invoice_2=Zákaznické faktury a platby
+ProformaBill=Proforma účet:
 Reduction=Snížení
-ReductionShort=Reduction.
+ReductionShort=red.
 Reductions=Slevy
-ReductionsShort=Reduction.
+ReductionsShort=sl.
 Discount=Sleva
 Discounts=Slevy
 AddDiscount=Vytvořte slevu
 AddRelativeDiscount=Vytvořte relativní slevu
-EditRelativeDiscount=Úprava relativní slevu
+EditRelativeDiscount=Úpravit relativní slevu
 AddGlobalDiscount=Vytvořte absolutní slevu
 EditGlobalDiscounts=Upravit absolutní slevy
 AddCreditNote=Vytvořte dobropis
@@ -253,51 +253,52 @@ RelativeDiscount=Relativní sleva
 GlobalDiscount=Globální sleva
 CreditNote=Dobropis
 CreditNotes=Dobropisy
-Deposit=Záloha
+Deposit=Vklad
 Deposits=Vklady
 DiscountFromCreditNote=Sleva z %s dobropisu
-DiscountFromDeposit=Platby z %s zálohovou fakturu
-AbsoluteDiscountUse=Tento druh úvěru je možné použít na faktuře před jeho ověření
-CreditNoteDepositUse=Faktura musí být validován pro použití tohoto krále kreditů
-NewGlobalDiscount=Nový absolutní sleva
-NewRelativeDiscount=Nový relativní sleva
-NoteReason=Poznámka / příčina
+DiscountFromDeposit=Platby z %s zze zálohové faktury
+AbsoluteDiscountUse=Tento druh úvěru je možné použít na faktuře před jeho ověřením
+CreditNoteDepositUse=Faktura musí být validována pro použití tohoto druhu kreditu
+NewGlobalDiscount=Nová absolutní sleva
+NewRelativeDiscount=Nová relativní sleva
+NoteReason=Poznámka/důvod
 ReasonDiscount=Důvod
 DiscountOfferedBy=Poskytnuté
-DiscountStillRemaining=Slevy ještě zbývající
-DiscountAlreadyCounted=Slevy již počítá
-BillAddress=Bill adresa
-HelpEscompte=Tato sleva je sleva poskytnuta zákazníkovi, protože její platba byla provedena před horizontu.
-HelpAbandonBadCustomer=Tato částka byla opuštěna (zákazník řekl, aby byl špatný zákazník) a je považován za výjimečný volné.
-HelpAbandonOther=Tato částka byla opuštěna, protože došlo k chybě (chybný zákazník nebo faktura nahrazen jiný například)
-IdSocialContribution=Sociální příspěvek id
-PaymentId=Platba id
-InvoiceId=Faktura id
+DiscountStillRemaining=Zbývající slevy
+DiscountAlreadyCounted=Započítané slevy
+BillAddress=Účetní adresa
+HelpEscompte=Tato sleva je sleva poskytnuta zákazníkovi, protože jeho platba byla provedena před termínem splatnosti.
+HelpAbandonBadCustomer=Tato částka byla opuštěna (zákazník řekl, aby byl špatný zákazník) a je považována za výjimečně volnou.
+HelpAbandonOther=Tato částka byla opuštěna, protože došlo k chybě (například špatný zákazník nebo faktura nahrazena jinou)
+IdSocialContribution=ID sociálního příspěvku
+PaymentId=ID platby
+InvoiceId=ID faktury
 InvoiceRef=Faktura čj.
-InvoiceDateCreation=Faktura Datum vytvoření
+InvoiceDateCreation=Datum vytvoření faktury
 InvoiceStatus=Stav faktury
 InvoiceNote=Faktura poznámka
 InvoicePaid=Faktura zaplacena
 PaymentNumber=Platba číslo
 RemoveDiscount=Odebrat slevu
-WatermarkOnDraftBill=Vodoznak k návrhům faktur (pokud nic prázdný)
+WatermarkOnDraftBill=Vodoznak k návrhům faktur (prázdný, pokud není nic vloženo)
 InvoiceNotChecked=Není vybrána žádná faktura
-CloneInvoice=Klon fakturu
+CloneInvoice=Kopírovat fakturu
 ConfirmCloneInvoice=Jste si jisti, že chcete kopírovat tuto fakturu <b>%s?</b>
-DisabledBecauseReplacedInvoice=Akce zakázáno, protože faktura byla nahrazena
-DescTaxAndDividendsArea=This area presents a summary of all payments made for special expenses. Only records with payment during the fixed year are included here.
-NbOfPayments=Nb plateb
-SplitDiscount=Rozdělit slevu ve dvou
+DisabledBecauseReplacedInvoice=Akce zakázána, protože faktura byla nahrazena
+DescTaxAndDividendsArea=Tato oblast představuje souhrn všech plateb za zvláštní výdaje. Zde jsou zahrnuty pouze záznamy s platbou v průběhu účetního roku.
+NbOfPayments=Nějaké platby
+SplitDiscount=Rozdělit slevu na dvě
 ConfirmSplitDiscount=Jste si jisti, že chcete rozdělit tuto slevu <b>%s</b> %s do 2 nižších slev?
 TypeAmountOfEachNewDiscount=Vstupní hodnota pro každou ze dvou částí:
-TotalOfTwoDiscountMustEqualsOriginal=Celkem dva nové slevy musí být roven původní částku slevy.
+TotalOfTwoDiscountMustEqualsOriginal=Celkem dvě nové slevy musí být rovny původní částce slevy.
 ConfirmRemoveDiscount=Jste si jisti, že chcete odstranit tuto slevu?
 RelatedBill=Související faktura
 RelatedBills=Související faktury
-RelatedCustomerInvoices=Related customer invoices
-RelatedSupplierInvoices=Related supplier invoices
-LatestRelatedBill=Latest related invoice
-WarningBillExist=Warning, one or more invoice already exist
+RelatedCustomerInvoices=Související faktury zákazníka
+RelatedSupplierInvoices=Související faktury dodavatele
+LatestRelatedBill=Nejnovější související faktura
+WarningBillExist=Varování, jedna nebo více faktur již existují
+MergingPDFTool=Nástroj pro spojení PDF
 
 # PaymentConditions
 PaymentConditionShortRECEP=Bezprostřední
@@ -316,13 +317,13 @@ PaymentConditionShortPT_ORDER=Na objednávku
 PaymentConditionPT_ORDER=Na objednávku
 PaymentConditionShortPT_5050=50-50
 PaymentConditionPT_5050=50%% předem, 50%% při dodání
-FixAmount=Fix množství
+FixAmount=Pevné množství
 VarAmount=Variabilní částka (%% celk.)
 # PaymentType
 PaymentTypeVIR=Bankovní vklad
 PaymentTypeShortVIR=Bankovní vklad
-PaymentTypePRE=Banky, aby
-PaymentTypeShortPRE=Banky, aby
+PaymentTypePRE=Bankovní objednávka
+PaymentTypeShortPRE=Bankovní objednávky
 PaymentTypeLIQ=Hotovost
 PaymentTypeShortLIQ=Hotovost
 PaymentTypeCB=Kreditní karta
@@ -331,103 +332,103 @@ PaymentTypeCHQ=Kontrola
 PaymentTypeShortCHQ=Kontrola
 PaymentTypeTIP=TIP
 PaymentTypeShortTIP=TIP
-PaymentTypeVAD=On line platby
+PaymentTypeVAD=On line platba
 PaymentTypeShortVAD=On line platby
-PaymentTypeTRA=Bill platba
+PaymentTypeTRA=Účet platby
 PaymentTypeShortTRA=Účet
 BankDetails=Bankovní spojení
 BankCode=Kód banky
-DeskCode=Stůl kód
+DeskCode=Desk kód
 BankAccountNumber=Číslo účtu
 BankAccountNumberKey=Klíč
 Residence=Domicil
 IBANNumber=IBAN
 IBAN=IBAN
-BIC=BIC / SWIFT
-BICNumber=BIC / SWIFT číslo
-ExtraInfos=Extra infos
+BIC=BIC/SWIFT
+BICNumber=BIC/SWIFT číslo
+ExtraInfos=Extra informace
 RegulatedOn=Regulovány
 ChequeNumber=Zkontrolujte N °
-ChequeOrTransferNumber=Zkontrolujte / Přenos č.
-ChequeMaker=Zkontrolujte vysílač
-ChequeBank=Bank of Check
-CheckBank=Check
-NetToBePaid=Net má být zaplacena
-PhoneNumber=Tel
+ChequeOrTransferNumber=Kontrola/převod č.
+ChequeMaker=Zkontrolujte převod
+ChequeBank=Šek z banky
+CheckBank=Kontrola (šek)
+NetToBePaid=Částka má být zaplacena
+PhoneNumber=Tel.
 FullPhoneNumber=Telefon
 TeleFax=Fax
-PrettyLittleSentence=Přijměte výši splátek splatných šeků vystavených ve jménu mém, jako člen účetního sdružení schváleného správy státního rozpočtu.
+PrettyLittleSentence=Přijměte výši splátek splatných šeků vystavených na mé jméno, jako člen účetního sdružení schváleného správou státního rozpočtu.
 IntracommunityVATNumber=Intrakomunitární číslo DPH
-PaymentByChequeOrderedTo=Podívejte se platba (včetně daně) jsou splatné %s poslat
-PaymentByChequeOrderedToShort=Podívejte se platba (včetně daně) jsou splatné
-SendTo=odeslána
+PaymentByChequeOrderedTo=Zkontrolujte platbu (včetně daně) splatnou %s odeslanou
+PaymentByChequeOrderedToShort=Zkontrolujte splatnou platbu (včetně daně)
+SendTo=odesláno
 PaymentByTransferOnThisBankAccount=Platba převodem na bankovní účet
 VATIsNotUsedForInvoice=* Nepoužije DPH art-293B CGI
 LawApplicationPart1=Návrhem zákona 80,335 z 12.05.80
 LawApplicationPart2=Zboží zůstává majetkem
-LawApplicationPart3=prodávající až do úplné proplacení
+LawApplicationPart3=prodávajícího až do úplného zaplacení
 LawApplicationPart4=jejich cena.
 LimitedLiabilityCompanyCapital=SARL s kapitálem
-UseLine=Platit
+UseLine=Aplikovat
 UseDiscount=Použití slevu
-UseCredit=Použití úvěru
-UseCreditNoteInInvoicePayment=Snížení částky platit tento úvěr
-MenuChequeDeposits=Kontroly vklady
+UseCredit=Pouřít úvěr
+UseCreditNoteInInvoicePayment=Snížení částky platby pro tento úvěr
+MenuChequeDeposits=Kontroly vkladů
 MenuCheques=Kontroly
-MenuChequesReceipts=Kontroly příjmy
+MenuChequesReceipts=Kontroly příjmů
 NewChequeDeposit=Nový vklad
-ChequesReceipts=Kontroly příjmy
+ChequesReceipts=Kontroly příjmů
 ChequesArea=Kontroly oblasti depozit
-ChequeDeposits=Kontroly vklady
+ChequeDeposits=Kontroly vkladů
 Cheques=Kontroly
-CreditNoteConvertedIntoDiscount=Tento dobropis nebo zálohové faktury byl přeměněn %s
-UsBillingContactAsIncoiveRecipientIfExist=Použití zákazníků fakturační kontaktní adresu místo adresy třetích stran jako příjemce u faktur
+CreditNoteConvertedIntoDiscount=Tento dobropis nebo zálohová faktura byla přecvedena do %s
+UsBillingContactAsIncoiveRecipientIfExist=Použijte zákaznickou fakturační kontaktní adresu namísto adresy třetích stran jako příjemce pro faktury
 ShowUnpaidAll=Zobrazit všechny neuhrazené faktury
-ShowUnpaidLateOnly=Zobrazit pozdní neuhrazené faktury pouze
-PaymentInvoiceRef=%s fakturu
+ShowUnpaidLateOnly=Zobrazit jen pozdní neuhrazené faktury
+PaymentInvoiceRef=Platba faktury %s
 ValidateInvoice=Ověřit fakturu
 Cash=Hotovost
 Reported=Zpožděný
-DisabledBecausePayments=Not possible since there are some payments
-CantRemovePaymentWithOneInvoicePaid=Can't remove payment since there is at least one invoice classified paid
-ExpectedToPay=Předpokládaný platba
-PayedByThisPayment=Paid by this payment
-ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid.
-ClosePaidCreditNotesAutomatically=Classify "Paid" all credit notes entirely paid back.
-AllCompletelyPayedInvoiceWillBeClosed=All invoice with no remain to pay will be automatically closed to status "Paid".
+DisabledBecausePayments=Není možné, protože jsou zde některé platby
+CantRemovePaymentWithOneInvoicePaid=Nelze odstranit platbu protože je k dispozici alespoň jedna faktura označená jako zaplacená
+ExpectedToPay=Očekávaná platba
+PayedByThisPayment=Uhrazeno touto platbou
+ClosePaidInvoicesAutomatically=Označit jako "Placeno" všechny standardní situace nebo náhradní faktury v plné výši.
+ClosePaidCreditNotesAutomatically=Označit jako "Placeno" všechny dobropisy zcela splaceny.
+AllCompletelyPayedInvoiceWillBeClosed=Všechny faktury s žádnými dalšími platbami bude automaticky uzavřeny ve stavu "Placené".
 ToMakePayment=Zaplatit
-ToMakePaymentBack=Oplatit
+ToMakePaymentBack=Vrátit
 ListOfYourUnpaidInvoices=Seznam nezaplacených faktur
-NoteListOfYourUnpaidInvoices=Poznámka: Tento seznam obsahuje pouze faktury pro třetí strany si jsou propojeny jako obchodního zástupce.
+NoteListOfYourUnpaidInvoices=Poznámka: Tento seznam obsahuje pouze faktury pro třetí strany které jsou propojeny na obchodního zástupce.
 RevenueStamp=Kolek
-YouMustCreateInvoiceFromThird=This option is only available when creating invoice from tab "customer" of thirdparty
-PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (recommended Template)
-TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0
-MarsNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices, %syymm-nnnn for replacement invoices, %syymm-nnnn for credit notes and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0
-TerreNumRefModelError=Bill počínaje $ syymm již existuje a není kompatibilní s tímto modelem sekvence. Vyjměte ji nebo přejmenujte jej na aktivaci tohoto modulu.
+YouMustCreateInvoiceFromThird=Tato možnost je dostupná pouze při vytváření faktury ze záložky "zákazníka" z třetí strany
+PDFCrabeDescription= PDF šablona faktur Crabe. Kompletní šablona faktury (doporučená šablona)
+TerreNumRefModelDesc1=Vrátí číslo ve formátu %s yymm-nnnn pro standardní faktury a %s yymm-nnnn pro dobropisy, kde yy je rok, mm je měsíc a nnnn je sekvence bez přerušení a bez návratu k 0
+MarsNumRefModelDesc1=Vrátí číslo ve formátu %s yymm-nnnn pro standardní faktury, %s yymm-nnnn pro náhradní faktury, %s yymm-nnnn pro dobropisy a %s yymm-nnnn pro dobropisy, kde yy je rok, mm je měsíc a nnnn je sekvence bez přerušení a bez návratu k 0
+TerreNumRefModelError=Účet počínaje $syymm již existuje a není kompatibilní s tímto modelem sekvence. Vyjměte ji nebo přejmenujte jej aktivací tohoto modulu.
 ##### Types de contacts #####
-TypeContact_facture_internal_SALESREPFOLL=Zástupce následující-up zákazník fakturu
-TypeContact_facture_external_BILLING=Zákazník faktura kontakt
-TypeContact_facture_external_SHIPPING=Zákazník doprava kontakt
-TypeContact_facture_external_SERVICE=Zákaznický servis kontakt
-TypeContact_invoice_supplier_internal_SALESREPFOLL=Zástupce následující-up dodavatelské faktury
-TypeContact_invoice_supplier_external_BILLING=Dodavatel fakturu kontakt
-TypeContact_invoice_supplier_external_SHIPPING=Dodavatel doprava kontakt
-TypeContact_invoice_supplier_external_SERVICE=Dodavatel služby kontakt
+TypeContact_facture_internal_SALESREPFOLL=Zástupce následující zákaznické faktury
+TypeContact_facture_external_BILLING=Fakturační kontakt zákazníka
+TypeContact_facture_external_SHIPPING=Zasílací kontakt zákazníka
+TypeContact_facture_external_SERVICE=Kontakt zákaznického servisu
+TypeContact_invoice_supplier_internal_SALESREPFOLL=Zástupce následující dodavatelské faktury
+TypeContact_invoice_supplier_external_BILLING=Fakturační kontakt dodavatele
+TypeContact_invoice_supplier_external_SHIPPING=Zasílací kontakt dodavatele
+TypeContact_invoice_supplier_external_SERVICE=Kontakt dodavatele služby
 # Situation invoices
-InvoiceFirstSituationAsk=First situation invoice
-InvoiceFirstSituationDesc=The <b>situation invoices</b> are tied to situations related to a progression, for example the progression of a construction. Each situation is tied to an invoice.
-InvoiceSituation=Situation invoice
-InvoiceSituationAsk=Invoice following the situation
-InvoiceSituationDesc=Create a new situation following an already existing one
-SituationAmount=Situation invoice amount(net)
-SituationDeduction=Situation subtraction
-Progress=Progress
-ModifyAllLines=Modify all lines
-CreateNextSituationInvoice=Create next situation
-NotLastInCycle=This invoice in not the last in cycle and must not be modified.
-DisabledBecauseNotLastInCycle=The next situation already exists.
-DisabledBecauseFinal=This situation is final.
-CantBeLessThanMinPercent=The progress can't be smaller than its value in the previous situation.
-NoSituations=No opened situations
-InvoiceSituationLast=Final and general invoice
+InvoiceFirstSituationAsk=Faktura první situace
+InvoiceFirstSituationDesc=<b>Situace faktury</b> jsou vázány na situace do progrese, například průběh stavby. Každá situace je vázána k faktuře.
+InvoiceSituation=Situace faktury
+InvoiceSituationAsk=Faktura v návaznosti na situaci
+InvoiceSituationDesc=Vytvořit novou situaci v návaznosti na již existující
+SituationAmount=Částka situace faktury (netto)
+SituationDeduction=Situace odčítání
+Progress=Pokrok
+ModifyAllLines=Změnit všechny řádky
+CreateNextSituationInvoice=Vytvořit další situaci
+NotLastInCycle=Tato faktura není poslední v cyklu, a nesmí být změněna.
+DisabledBecauseNotLastInCycle=Další situace již existuje.
+DisabledBecauseFinal=Tato situace je konečné.
+CantBeLessThanMinPercent=Pokrok nemůže být menší, než je jeho hodnota v předchozí situaci.
+NoSituations=Žádné otevřené situace
+InvoiceSituationLast=Závěrečná a hlavní faktura
diff --git a/htdocs/langs/cs_CZ/boxes.lang b/htdocs/langs/cs_CZ/boxes.lang
index 0fa28ad9184d02c67b1babe2ed8662a40b300788..6689b66b7a4ac59de62a5b944731152f930484a7 100644
--- a/htdocs/langs/cs_CZ/boxes.lang
+++ b/htdocs/langs/cs_CZ/boxes.lang
@@ -12,11 +12,11 @@ BoxLastProspects=Naposledy měnění prospekti
 BoxLastCustomers=Naposledy měnění zákazníci
 BoxLastSuppliers=Naposledy měnění dodavatelé
 BoxLastCustomerOrders=Poslední zákaznické objednávky
-BoxLastValidatedCustomerOrders=Last validated customer orders
+BoxLastValidatedCustomerOrders=Poslední potvrzené objednávky zákazníků
 BoxLastBooks=Poslední knihy
 BoxLastActions=Poslední akce
 BoxLastContracts=Poslední smlouvy
-BoxLastContacts=Poslední kontakty / adresy
+BoxLastContacts=Poslední kontakty/adresy
 BoxLastMembers=Poslední členové
 BoxFicheInter=Poslední intervence
 BoxCurrentAccounts=Stavy otevřených účtů
@@ -26,72 +26,72 @@ BoxTotalUnpaidSuppliersBills=Nezaplacené dodavatelské faktury celkem
 BoxTitleLastBooks=Poslední %s nahrané knihy
 BoxTitleNbOfCustomers=Počet klientů
 BoxTitleLastRssInfos=Poslední %s zprávy z %s
-BoxTitleLastProducts=Poslední %s modifikované produkty / služby
-BoxTitleProductsAlertStock=Produkty skladem pohotovosti
-BoxTitleLastCustomerOrders=Last %s customer orders
-BoxTitleLastModifiedCustomerOrders=Last %s modified customer orders
-BoxTitleLastSuppliers=Poslední %s zaznamenán dodavatele
-BoxTitleLastCustomers=Poslední %s nahrané zákazníky
-BoxTitleLastModifiedSuppliers=Poslední %s upravené dodavatele
-BoxTitleLastModifiedCustomers=Poslední %s modifikované zákazníky
-BoxTitleLastCustomersOrProspects=Last %s customers or prospects
-BoxTitleLastPropals=Last %s proposals
-BoxTitleLastModifiedPropals=Last %s modified proposals
-BoxTitleLastCustomerBills=Minulý %s zákazníka faktury
-BoxTitleLastModifiedCustomerBills=Last %s modified customer invoices
-BoxTitleLastSupplierBills=Minulý %s dodavatelských faktur
-BoxTitleLastModifiedSupplierBills=Last %s modified supplier invoices
-BoxTitleLastModifiedProspects=Poslední %s upravené vyhlídky
-BoxTitleLastProductsInContract=Poslední %s produkty / služby ve smlouvě
-BoxTitleLastModifiedMembers=Last %s members
+BoxTitleLastProducts=Poslední %s upravené produkty/služby
+BoxTitleProductsAlertStock=Produkty skladem v pohotovosti
+BoxTitleLastCustomerOrders=Poslední %s objednávky zákazníka
+BoxTitleLastModifiedCustomerOrders=Poslední %s modifikované objednávky zákazníků
+BoxTitleLastSuppliers=Poslední %s zaznamenaní dodavatelé
+BoxTitleLastCustomers=Poslední %s zaznamenaní zákazníci
+BoxTitleLastModifiedSuppliers=Poslední %s upravení dodavatelé
+BoxTitleLastModifiedCustomers=Poslední %s modifikovaní zákazníci
+BoxTitleLastCustomersOrProspects=Poslední %s zákazníci nebo cíle
+BoxTitleLastPropals=Poslední %s nabídky
+BoxTitleLastModifiedPropals=Poslední %s upravené nabídky
+BoxTitleLastCustomerBills=Poslední %s zákaznické faktury
+BoxTitleLastModifiedCustomerBills=Poslední %s modifikované zákaznické faktury
+BoxTitleLastSupplierBills=Poslední %s dodavatelské faktury
+BoxTitleLastModifiedSupplierBills=Poslední %s modifikované dodavatelské faktury
+BoxTitleLastModifiedProspects=Poslední %s upravené cíle
+BoxTitleLastProductsInContract=Poslední %s produkty/služby ve smlouvě
+BoxTitleLastModifiedMembers=Poslední %s uživatelé
 BoxTitleLastFicheInter=Poslední %s upravený zásah
-BoxTitleOldestUnpaidCustomerBills=Oldest %s unpaid customer invoices
-BoxTitleOldestUnpaidSupplierBills=Oldest %s unpaid supplier invoices
-BoxTitleCurrentAccounts=Opened account's balances
-BoxTitleSalesTurnover=Obrat
-BoxTitleTotalUnpaidCustomerBills=Unpaid customer invoices
-BoxTitleTotalUnpaidSuppliersBills=Unpaid supplier invoices
-BoxTitleLastModifiedContacts=Poslední %s upravené kontakty / adresy
+BoxTitleOldestUnpaidCustomerBills=Nejstarší %s nezaplacené faktury zákazníků
+BoxTitleOldestUnpaidSupplierBills=Nejstarší %s nezaplacené faktury dodavatelů
+BoxTitleCurrentAccounts=Zůstatky otevřených účtů
+BoxTitleSalesTurnover=Prodejní obrat
+BoxTitleTotalUnpaidCustomerBills=Nezaplacené faktury zákazníků
+BoxTitleTotalUnpaidSuppliersBills=Nezaplacené faktury dodavatelů
+BoxTitleLastModifiedContacts=Poslední %s upravené kontakty/adresy
 BoxMyLastBookmarks=Moje poslední %s záložky
-BoxOldestExpiredServices=Nejstarší aktivní vypršela služby
-BoxLastExpiredServices=Poslední %s nejstarší kontakty s aktivními vypršela služeb
-BoxTitleLastActionsToDo=Poslední %s akce dělat
+BoxOldestExpiredServices=Nejstarší aktivní expirované služby
+BoxLastExpiredServices=Poslední %s nejstarší kontakty s aktivními expiracemi služeb
+BoxTitleLastActionsToDo=Poslední %s vykonané akce
 BoxTitleLastContracts=Poslední %s smlouvy
 BoxTitleLastModifiedDonations=Poslední %s upravené dary
 BoxTitleLastModifiedExpenses=Poslední %s upravené výdaje
 BoxGlobalActivity=Globální aktivita (faktury, návrhy, objednávky)
-FailedToRefreshDataInfoNotUpToDate=Nepodařilo se obnovit RSS toku. Poslední úspěšný refresh Datum: %s
+FailedToRefreshDataInfoNotUpToDate=Nepodařilo se obnovit RSS zdroj. Poslední úspěšný refresh dne: %s
 LastRefreshDate=Poslední obnovovací data
-NoRecordedBookmarks=Žádné záložky definovány.
+NoRecordedBookmarks=Nejsou definované žádné záložky.
 ClickToAdd=Klikni pro přidání.
-NoRecordedCustomers=Žádné zaznamenané zákazníky
-NoRecordedContacts=Zaznamenány žádné kontakty
-NoActionsToDo=Žádné akce dělat
-NoRecordedOrders=Žádné zaznamenané zákazníkovy objednávky
-NoRecordedProposals=Zaznamenány žádné návrhy
-NoRecordedInvoices=Žádné zaznamenané zákazníka faktury
-NoUnpaidCustomerBills=Bez neplacených zákazníka faktury
-NoRecordedSupplierInvoices=Žádné zaznamenané dodavatelských faktur
-NoUnpaidSupplierBills=Bez neplacených dodavatelských faktur
-NoModifiedSupplierBills=Žádné zaznamenané dodavatelských faktur
-NoRecordedProducts=Žádné zaznamenané produkty / služby
-NoRecordedProspects=Zaznamenány žádné vyhlídky
-NoContractedProducts=Žádné produkty / služby smluvně
+NoRecordedCustomers=Žádní zaznamenaní zákazníci
+NoRecordedContacts=Žádné zaznamenané kontakty
+NoActionsToDo=Žádné vykonané akce
+NoRecordedOrders=Žádné zaznamenané zákaznické objednávky
+NoRecordedProposals=Žádné zaznamenané návrhy
+NoRecordedInvoices=Žádné zaznamenané faktury zákazníků
+NoUnpaidCustomerBills=Žádné nezaplacené faktury zákazníků
+NoRecordedSupplierInvoices=Žádné zaznamenané dodavatelské faktury
+NoUnpaidSupplierBills=Žádné nezaplacené dodavatelské faktury
+NoModifiedSupplierBills=Žádné zaznamenané dodavatelské faktury
+NoRecordedProducts=Žádné zaznamenané produkty/služby
+NoRecordedProspects=Žádné zaznamenané cíle
+NoContractedProducts=Žádné nasmlouvané produkty/služby
 NoRecordedContracts=Žádné zaznamenané smlouvy
 NoRecordedInterventions=Žádné zaznamenané zásahy
 BoxLatestSupplierOrders=Nejnovější dodavatelské objednávky
-BoxTitleLatestSupplierOrders=Last %s supplier orders
-BoxTitleLatestModifiedSupplierOrders=Last %s modified supplier orders
-NoSupplierOrder=Žádné zaznamenané dodavatele, aby
-BoxCustomersInvoicesPerMonth=Zákazníků faktury za měsíc
-BoxSuppliersInvoicesPerMonth=Dodavatelských faktur za měsíc
+BoxTitleLatestSupplierOrders=Poslední %s dodavatelské objednávky
+BoxTitleLatestModifiedSupplierOrders=Poslední %s modifikované dodavatelské objednávky
+NoSupplierOrder=Žádné zaznamenané dodavatelské objednávky
+BoxCustomersInvoicesPerMonth=Faktury zákazníků za měsíc
+BoxSuppliersInvoicesPerMonth=Faktury dodavatelů za měsíc
 BoxCustomersOrdersPerMonth=Objednávky zákazníků za měsíc
-BoxSuppliersOrdersPerMonth=Dodavatel objednávky za měsíc
-BoxProposalsPerMonth=Návrhy za měsíc
-NoTooLowStockProducts=Žádný výrobek na základě nízkého limitu skladem
-BoxProductDistribution=Produkty / služby distribuce
+BoxSuppliersOrdersPerMonth=Objednávky dodavatelů za měsíc
+BoxProposalsPerMonth=Nabídky za měsíc
+NoTooLowStockProducts=Žádný výrobek pod nízkým limitem skladem
+BoxProductDistribution=Produkty/služby distribuce
 BoxProductDistributionFor=Distribuce %s pro %s
-ForCustomersInvoices=Zákazníci faktury
-ForCustomersOrders=Zákazníci objednávky
-ForProposals=Návrhy
-LastXMonthRolling=The last %s month rolling
+ForCustomersInvoices=Zákaznické faktury
+ForCustomersOrders=Zákaznické objednávky
+ForProposals=Nabídky
+LastXMonthRolling=Poslední %s měsíc válcování
diff --git a/htdocs/langs/cs_CZ/cashdesk.lang b/htdocs/langs/cs_CZ/cashdesk.lang
index 8582cf2df3a5e7d017ee199f138c1b3c7bedfdbd..89f541a8862ceec611f5a93e6a47ceb35344335f 100644
--- a/htdocs/langs/cs_CZ/cashdesk.lang
+++ b/htdocs/langs/cs_CZ/cashdesk.lang
@@ -1,40 +1,40 @@
 # Language file - Source file is en_US - cashdesk
 CashDeskMenu=Prodejní místo
 CashDesk=Prodejní místo
-CashDesks=Bod prodeje
+CashDesks=Prodejní místa
 CashDeskBank=Bankovní účet
-CashDeskBankCash=Bankovní účet (cash)
+CashDeskBankCash=Bankovní účet (hotovost)
 CashDeskBankCB=Bankovní účet (karta)
-CashDeskBankCheque=Bankovní účet (kontrola)
-CashDeskWarehouse=Sklad
+CashDeskBankCheque=Bankovní účet (šek)
+CashDeskWarehouse=Skladiště
 CashdeskShowServices=Prodej služeb
 CashDeskProducts=Produkty
 CashDeskStock=Sklad
 CashDeskOn=na
-CashDeskThirdParty=Třetí stranou
-CashdeskDashboard=V místě prodeje přístupu
+CashDeskThirdParty=Třetí strana
+CashdeskDashboard=Přístupový bod prodeje
 ShoppingCart=Nákupní vozík
-NewSell=Nový prodat
+NewSell=Nový prodej
 BackOffice=Back office
 AddThisArticle=Přidat tento článek
 RestartSelling=Vraťte se na prodej
-SellFinished=Prodej skončil
-PrintTicket=Tisk vstupenek
-NoProductFound=Žádný článek nalezeno
-ProductFound=výrobky, které se
+SellFinished=Prodej skončen
+PrintTicket=Tisk dokladu
+NoProductFound=Žádný článek nalezen
+ProductFound=vyhledané výrobky
 ProductsFound=Nalezeno výrobků
 NoArticle=Žádný článek
 Identification=Identifikace
 Article=Článek
 Difference=Rozdíl
-TotalTicket=Celkem vstupenek
+TotalTicket=Celkem účtenka
 NoVAT=Bez DPH pro tento prodej
 Change=Nadbytek obdržel
 CalTip=Klikněte pro zobrazení kalendáře
-CashDeskSetupStock=Ptáte se sníží zásoby na faktuře vytvoření skladu, ale k tomu je nebyl definován <br> Změna stavu zásob modul nastavení, nebo zvolit sklad
+CashDeskSetupStock=Ptáte se na snížení zásoby na vytvořené faktuře, ale k tomu nebylo definováno žádné skladiště <br> Změte stav zásob v nastavení modulu, nebo zvolte skladiště
 BankToPay=Úvěrové konto
 ShowCompany=Zobrazit společnost
-ShowStock=Zobrazit skladu
+ShowStock=Zobrazit skladiště
 DeleteArticle=Klepnutím odeberete tento článek
-FilterRefOrLabelOrBC=Vyhledávání (Ref / Label)
-# UserNeedPermissionToEditStockToUsePos=You ask to decrease stock on invoice creation, so user that use POS need to have permission to edit stock.
+FilterRefOrLabelOrBC=Vyhledávání (Ref./Štítekl)
+UserNeedPermissionToEditStockToUsePos=Ptáte se na snížení zásoby na vytvořené faktuře, ale uživatel, který používá POS musí mít oprávnění k úpravám zásob.
diff --git a/htdocs/langs/cs_CZ/categories.lang b/htdocs/langs/cs_CZ/categories.lang
index f4249b7c085b88bbcfa87703121e31403b048319..072d0b22eac6a3289a5e72f71c165b51bddc0c57 100644
--- a/htdocs/langs/cs_CZ/categories.lang
+++ b/htdocs/langs/cs_CZ/categories.lang
@@ -1,110 +1,110 @@
 # Dolibarr language file - Source file is en_US - categories
-Rubrique=Tag/Category
-Rubriques=Tags/Categories
-categories=tags/categories
-TheCategorie=The tag/category
-NoCategoryYet=No tag/category of this type created
+Rubrique=Tag/Kategorie
+Rubriques=Tagy/Kategorie
+categories=tagy/kategorie
+TheCategorie=Tag/Kategorie
+NoCategoryYet=Žádný tag/kategorie tohoto typu nebyla vytvořena
 In=V
 AddIn=Přidejte
 modify=upravit
-Classify=Klasifikovat
-CategoriesArea=Tags/Categories area
-ProductsCategoriesArea=Products/Services tags/categories area
-SuppliersCategoriesArea=Suppliers tags/categories area
-CustomersCategoriesArea=Customers tags/categories area
-ThirdPartyCategoriesArea=Third parties tags/categories area
-MembersCategoriesArea=Members tags/categories area
-ContactsCategoriesArea=Contacts tags/categories area
-MainCats=Main tags/categories
+Classify=Třídit
+CategoriesArea=Oblast tagy/kategorie
+ProductsCategoriesArea=Oblast Produkty/Služby tagy/kategorie
+SuppliersCategoriesArea=Oblast dodavatelské tagy/kategorie
+CustomersCategoriesArea=Oblast zákaznické tagy/kategorie
+ThirdPartyCategoriesArea=Oblast třetí strany tagy/kategorie
+MembersCategoriesArea=Oblast uživatelské tagy/kategorie
+ContactsCategoriesArea=Oblast tagy/kategorie kontakty
+MainCats=Hlavní tagy/kategorie
 SubCats=Podkategorie
 CatStatistics=Statistika
-CatList=List of tags/categories
-AllCats=All tags/categories
-ViewCat=View tag/category
-NewCat=Add tag/category
-NewCategory=New tag/category
-ModifCat=Modify tag/category
-CatCreated=Tag/category created
-CreateCat=Create tag/category
-CreateThisCat=Create this tag/category
+CatList=Výpis tagů/kategorií
+AllCats=Všechny tagy/kategorie
+ViewCat=Zobrazit tag/kategorii
+NewCat=Přidat tag/kategorii
+NewCategory=Nový tag/kategorie
+ModifCat=Upravit tag/kategorii
+CatCreated=Tag/kategorie byla vytvořená
+CreateCat=Vytvořit tag/kategorii
+CreateThisCat=Vytvořit tento tag/kategorii
 ValidateFields=Ověření pole
-NoSubCat=Podkategorie.
+NoSubCat=Chybí podkategorie.
 SubCatOf=Podkategorie
-FoundCats=Found tags/categories
-FoundCatsForName=Tags/categories found for the name :
-FoundSubCatsIn=Subcategories found in the tag/category
-ErrSameCatSelected=You selected the same tag/category several times
-ErrForgotCat=You forgot to choose the tag/category
-ErrForgotField=Zapomněli jste informovat pole
+FoundCats=Nalezené tagy/kategorie
+FoundCatsForName=Nalezené tagy/kategorie pro název:
+FoundSubCatsIn=Podkategorie nalezené v tagu/kategorii
+ErrSameCatSelected=Vybrali jste stejný tag/kategorii několikrát
+ErrForgotCat=Zapomněli jste zvolit tag/kategorii
+ErrForgotField=Zapomněli jste informaci o tomto poli
 ErrCatAlreadyExists=Tento název je již používán
-AddProductToCat=Add this product to a tag/category?
-ImpossibleAddCat=Impossible to add the tag/category
-ImpossibleAssociateCategory=Impossible to associate the tag/category to
+AddProductToCat=Přidat tento produkt do tagu/kategorie?
+ImpossibleAddCat=Nelze přidat do tagu/kategorie
+ImpossibleAssociateCategory=Nelze spojit tag/kategorii s 
 WasAddedSuccessfully=<b>%s</b> bylo úspěšně přidáno.
-ObjectAlreadyLinkedToCategory=Element is already linked to this tag/category.
-CategorySuccessfullyCreated=This tag/category %s has been added with success.
-ProductIsInCategories=Product/service owns to following tags/categories
-SupplierIsInCategories=Third party owns to following suppliers tags/categories
-CompanyIsInCustomersCategories=This third party owns to following customers/prospects tags/categories
-CompanyIsInSuppliersCategories=This third party owns to following suppliers tags/categories
-MemberIsInCategories=This member owns to following members tags/categories
-ContactIsInCategories=This contact owns to following contacts tags/categories
-ProductHasNoCategory=This product/service is not in any tags/categories
-SupplierHasNoCategory=This supplier is not in any tags/categories
-CompanyHasNoCategory=This company is not in any tags/categories
-MemberHasNoCategory=This member is not in any tags/categories
-ContactHasNoCategory=This contact is not in any tags/categories
-ClassifyInCategory=Classify in tag/category
+ObjectAlreadyLinkedToCategory=Element je již propojen s tímto tagem/kategorií.
+CategorySuccessfullyCreated=Tag/kategorie %s byla úspěšně  přidána.
+ProductIsInCategories=Produkt/služba vlastní následjící tagy/kategorie
+SupplierIsInCategories=Třetí strany vlastní následující dodavatelské tagy/kategorie
+CompanyIsInCustomersCategories=Tato třetí strana vlastní následující zákazníci/cíle tagy/kategorie
+CompanyIsInSuppliersCategories=Tato třetí strana vlastní dodavatelské tagy/kategorie
+MemberIsInCategories=Tento uživatel vlastní následující uživatelské tagy/kategorie
+ContactIsInCategories=Tento kontakt je vlastníkem z následujících kontaktů tagy/kategorií
+ProductHasNoCategory=Tento produkt/služba není v žádném tagu/kategoriích
+SupplierHasNoCategory=Tento dodavatel není v žádném tagu/kategoriích
+CompanyHasNoCategory=Tato společnost není v žádném tagu/kategoriích
+MemberHasNoCategory=Tento uživatel není v žádném tagu/kategoriích
+ContactHasNoCategory=Tento kontakt není v žádném tagu/kategorii
+ClassifyInCategory=Zařadit do tagu/kategorie
 NoneCategory=Nikdo
-NotCategorized=Without tag/category
+NotCategorized=Bez tagu/kategorie
 CategoryExistsAtSameLevel=Tato kategorie již existuje s tímto čj
-ReturnInProduct=Zpět na produkt / službu kartu
-ReturnInSupplier=Zpět na dodavatele karty
-ReturnInCompany=Zpět na zákazníka / Vyhlídka karty
-ContentsVisibleByAll=Obsah bude vidět všichni
-ContentsVisibleByAllShort=Obsah viditelné všemi
-ContentsNotVisibleByAllShort=Obsah není vidět všichni
-CategoriesTree=Tags/categories tree
-DeleteCategory=Delete tag/category
-ConfirmDeleteCategory=Are you sure you want to delete this tag/category ?
-RemoveFromCategory=Remove link with tag/categorie
-RemoveFromCategoryConfirm=Are you sure you want to remove link between the transaction and the tag/category ?
-NoCategoriesDefined=No tag/category defined
-SuppliersCategoryShort=Suppliers tags/category
-CustomersCategoryShort=Customers tags/category
-ProductsCategoryShort=Products tags/category
-MembersCategoryShort=Members tags/category
-SuppliersCategoriesShort=Suppliers tags/categories
-CustomersCategoriesShort=Customers tags/categories
-CustomersProspectsCategoriesShort=Custo. / Prosp. kategorie
-ProductsCategoriesShort=Products tags/categories
-MembersCategoriesShort=Members tags/categories
-ContactCategoriesShort=Contacts tags/categories
+ReturnInProduct=Zpět na kartu služby/produktu
+ReturnInSupplier=Zpět na kartu dodavatele
+ReturnInCompany=Zpět na kartu zákazníka/cíle
+ContentsVisibleByAll=Obsah bude viditelný pro všechny
+ContentsVisibleByAllShort=Obsah viditelný všemi
+ContentsNotVisibleByAllShort=Obsah není viditelný pro všechny
+CategoriesTree=Strom tagů/kategorií
+DeleteCategory=Smazat tag/kategorii
+ConfirmDeleteCategory=Jste si opravdu jistý, že chcete odstranit tento tag/kategorii?
+RemoveFromCategory=Odstranit spojení s tagem/kategorií
+RemoveFromCategoryConfirm=Jste si opravdu jistý, že chcete odstranit toto spojení mezi transakcí a tagem/kategorií?
+NoCategoriesDefined=Není definován žádný tag/kategorie
+SuppliersCategoryShort=Tagy/kategorie dodavatelé
+CustomersCategoryShort=Tagy/kategorie zákazníci
+ProductsCategoryShort=Tagy/kategorie produkty
+MembersCategoryShort=Tagy/kategorie uživatelé
+SuppliersCategoriesShort=Dodavatelé tagy/kategorie
+CustomersCategoriesShort=Zákazníci tagy/kategorie
+CustomersProspectsCategoriesShort=Zák./Cíl. kategorie
+ProductsCategoriesShort=Produkty tagy/kategorie
+MembersCategoriesShort=Uživatelé tagy/kategorie
+ContactCategoriesShort=Tagy/kategorie kontakty
 ThisCategoryHasNoProduct=Tato kategorie neobsahuje žádný produkt.
 ThisCategoryHasNoSupplier=Tato kategorie neobsahuje žádné dodavatele.
-ThisCategoryHasNoCustomer=Tato kategorie neobsahuje žádné zákazníka.
-ThisCategoryHasNoMember=Tato kategorie neobsahuje žádné člena.
+ThisCategoryHasNoCustomer=Tato kategorie neobsahuje žádné zákazníky.
+ThisCategoryHasNoMember=Tato kategorie neobsahuje žádné uživatele.
 ThisCategoryHasNoContact=Tato kategorie neobsahuje žádný kontakt.
 AssignedToCustomer=Účelově vázané k zákazníkovi
 AssignedToTheCustomer=Přiřazené zákazníkovi
 InternalCategory=Vnitřní kategorie
-CategoryContents=Tag/category contents
-CategId=Tag/category id
-CatSupList=List of supplier tags/categories
-CatCusList=List of customer/prospect tags/categories
-CatProdList=List of products tags/categories
-CatMemberList=List of members tags/categories
-CatContactList=List of contact tags/categories and contact
-CatSupLinks=Links between suppliers and tags/categories
-CatCusLinks=Links between customers/prospects and tags/categories
-CatProdLinks=Links between products/services and tags/categories
-CatMemberLinks=Links between members and tags/categories
-DeleteFromCat=Remove from tags/category
-DeletePicture=Picture delete
-ConfirmDeletePicture=Confirm picture deletion?
-ExtraFieldsCategories=Complementary attributes
-CategoriesSetup=Tags/categories setup
-CategorieRecursiv=Link with parent tag/category automatically
-CategorieRecursivHelp=If activated, product will also linked to parent category when adding into a subcategory
-AddProductServiceIntoCategory=Add the following product/service
-ShowCategory=Show tag/category
+CategoryContents=Obsah tagu/kategorie
+CategId=ID tagu/kategorie
+CatSupList=Seznam tagů/kategorií dodavatelů
+CatCusList=Seznam tagů/kategorií zákazníků/cílů
+CatProdList=Seznam tagů/kategorií produktů 
+CatMemberList=Seznam tagů/kategorií uživatelů
+CatContactList=Seznam kontaktních tagů/kategorií a kontaktů
+CatSupLinks=Spojení mezi dodavateli a tagy/kategoriemi
+CatCusLinks=Spojení mezi zákazníky/cíly a tagy/kategoriemi
+CatProdLinks=Spojení mezi produkty/službami a tagy/kategoriemi
+CatMemberLinks=Spojení mezi uživateli a tagy/kategoriemi
+DeleteFromCat=Odebrat z tagů/kategorií
+DeletePicture=Odstranit obrázek
+ConfirmDeletePicture=Potvrdit odstranění obrázku?
+ExtraFieldsCategories=Doplňkové atributy
+CategoriesSetup=Nastavení tagů/kategorií
+CategorieRecursiv=Odkaz na nadřazený tag/kategorii automaticky
+CategorieRecursivHelp=Je-li aktivován, bude produkt spojen s nadřazenou kategorií při přidávání do podkategorie
+AddProductServiceIntoCategory=Přidejte následující produkt/službu
+ShowCategory=Zobrazit tag/kategorii
diff --git a/htdocs/langs/cs_CZ/commercial.lang b/htdocs/langs/cs_CZ/commercial.lang
index 7886122e1246b794b333bf493ab9f3762a49494f..e70be787f8fa48ac51914ce179def88da7eb1cff 100644
--- a/htdocs/langs/cs_CZ/commercial.lang
+++ b/htdocs/langs/cs_CZ/commercial.lang
@@ -1,20 +1,20 @@
 # Dolibarr language file - Source file is en_US - commercial
 Commercial=Obchodní
-CommercialArea=Komerční prostory
-CommercialCard=Obchodní karty
-CustomerArea=Zákazníci oblast
+CommercialArea=Obchodní oblast
+CommercialCard=Obchodní karta
+CustomerArea=Zákaznícká oblast
 Customer=Zákazník
 Customers=Zákazníci
-Prospect=Vyhlídka
-Prospects=Vyhlídky
-DeleteAction=Odstranit událost / úkol
-NewAction=Nová událost / úkol
-AddAction=Create event/task
-AddAnAction=Create an event/task
-AddActionRendezVous=Create a Rendez-vous event
+Prospect=Cíl
+Prospects=Cíle
+DeleteAction=Odstranit událost/úkol
+NewAction=Nová událost/úkol
+AddAction=Vytvořit událost/úkol
+AddAnAction=Vytvořit další událost/úkol
+AddActionRendezVous=Vytvořit schůzku
 Rendez-Vous=Schůzka
-ConfirmDeleteAction=Jste si jisti, že chcete smazat tuto událost / úkol?
-CardAction=Událost karty
+ConfirmDeleteAction=Jste si jisti, že chcete smazat tuto událost/úkol?
+CardAction=Karta události
 PercentDone=Procento dokončení
 ActionOnCompany=Úkol o společnosti
 ActionOnContact=Úkol o kontaktu
@@ -22,47 +22,47 @@ TaskRDV=Schůze
 TaskRDVWith=Setkání s %s
 ShowTask=Zobrazit úkol
 ShowAction=Zobrazit akce
-ActionsReport=Události zprávu
-ThirdPartiesOfSaleRepresentative=Thirdparties s obchodním zástupcem
+ActionsReport=Zpráva událostí
+ThirdPartiesOfSaleRepresentative=Třetí strany s obchodním zástupcem
 SalesRepresentative=Obchodní zástupce
 SalesRepresentatives=Obchodní zástupci
 SalesRepresentativeFollowUp=Obchodní zástupce (pokračování)
 SalesRepresentativeSignature=Obchodní zástupce (podpis)
 CommercialInterlocutor=Obchodní partner
 ErrorWrongCode=Chybný kód
-NoSalesRepresentativeAffected=Žádná konkrétní obchodní Stanovený zástupce
-ShowCustomer=Zobrazit zákazníkovi
-ShowProspect=Zobrazit vyhlídky
-ListOfProspects=Seznam vyhlídky
+NoSalesRepresentativeAffected=Nepřidělen žádný konkrétní obchodní zástupce
+ShowCustomer=Zobrazit zákazníka
+ShowProspect=Zobrazit cíl
+ListOfProspects=Seznam cílů
 ListOfCustomers=Seznam zákazníků
-LastDoneTasks=Poslední %s dokončení úkolů
+LastDoneTasks=Poslednch %s dokončených úkolů
 LastRecordedTasks=Poslední zaznamenané úkoly
-LastActionsToDo=Poslední %s nejstarší akce nebyly dokončeny
-DoneAndToDoActionsFor=Dokončeno a to akcí pro %s
-DoneAndToDoActions=Dokončeno a Chcete-li události
+LastActionsToDo=Poslední %s nejstarší akce, které nebyly dokončeny
+DoneAndToDoActionsFor=Dokončeno a doděláno akcí pro %s
+DoneAndToDoActions=Dokončeno a doděláno událostí
 DoneActions=Dokončené akce
 DoneActionsFor=Dokončené akce pro %s
 ToDoActions=Neúplné události
 ToDoActionsFor=Neúplné akce pro %s
-SendPropalRef=Submission of commercial proposal %s
-SendOrderRef=Submission of order %s
+SendPropalRef=Předložení obchodního návrhu %s
+SendOrderRef=Podání objednávky %s
 StatusNotApplicable=Nevztahuje se
 StatusActionToDo=Chcete-li
 StatusActionDone=Dokončit
-MyActionsAsked=Události jsem nahrané
+MyActionsAsked=Události jsou uložené
 MyActionsToDo=Události, které musím udělat,
 MyActionsDone=Události přiřazené ke mně
 StatusActionInProcess=V procesu
 TasksHistoryForThisContact=Akce pro tento kontakt
-LastProspectDoNotContact=Nedotýkejte se
-LastProspectNeverContacted=Nikdy nekontaktoval
+LastProspectDoNotContact=Nekontaktovat
+LastProspectNeverContacted=Nikdy nekontaktovat
 LastProspectToContact=Chcete-li kontaktovat
 LastProspectContactInProcess=Kontakt v procesu
-LastProspectContactDone=Spojit se provádí
-DateActionPlanned=Datum Akce plánované na
-DateActionDone=Datum Akce provedeno
+LastProspectContactDone=Kontakt hotový
+DateActionPlanned=Datum akce plánované na
+DateActionDone=Datum akce provedeno
 ActionAskedBy=Akce hlášeny
-ActionAffectedTo=Event assigned to
+ActionAffectedTo=Akce přiřazeny k
 ActionDoneBy=Událost provádí
 ActionUserAsk=Zpracoval
 ErrorStatusCantBeZeroIfStarted=Pokud pole <b>'Datum udělat</b> &quot;je naplněn, je akce zahájena (nebo dokončený), tak pole&quot; <b>Stav</b> &quot;nemůže být 0%%.
@@ -71,15 +71,15 @@ ActionAC_FAX=Odeslat fax
 ActionAC_PROP=Poslat e-mailem návrh
 ActionAC_EMAIL=Odeslat e-mail
 ActionAC_RDV=Schůze
-ActionAC_INT=Intervention on site
-ActionAC_FAC=Poslat zákazníka fakturu poštou
-ActionAC_REL=Poslat zákazníka fakturu poštou (připomínka)
+ActionAC_INT=Intervence na místě
+ActionAC_FAC=Poslat zákazníkovi fakturu poštou
+ActionAC_REL=Poslat zákazníkovi fakturu poštou (upomínka)
 ActionAC_CLO=Zavřít
 ActionAC_EMAILING=Poslat hromadný email
 ActionAC_COM=Poslat objednávky zákazníka e-mailem
-ActionAC_SHIP=Poslat přepravu poštou
-ActionAC_SUP_ORD=Poslat e-mailem objednávku s dodavately
-ActionAC_SUP_INV=Poslat dodavatelské faktury poštou
+ActionAC_SHIP=Poslat přepravu na mail
+ActionAC_SUP_ORD=Poslat objednávku dodavatele e-mailem 
+ActionAC_SUP_INV=Poslat dodavatelské faktury e-mailem
 ActionAC_OTH=Ostatní
 ActionAC_OTH_AUTO=Ostatní (automaticky vkládané události)
 ActionAC_MANUAL=Ručně vložené události
@@ -90,7 +90,7 @@ FromTo=od %s na %s
 MargeOrder=Okraje (ověřené objednávky)
 RecapAnnee=Shrnutí roku
 NoData=Nejsou k dispozici žádné údaje
-StatusProsp=Prospect stav
+StatusProsp=Stav cíle
 DraftPropals=Navrhnout obchodní návrhy
 SearchPropal=Hledat obchodní návrh
 CommercialDashboard=Obchodní shrnutí
diff --git a/htdocs/langs/cs_CZ/companies.lang b/htdocs/langs/cs_CZ/companies.lang
index 4508bdde30d97f9c20545eb4f45de6a51126a7e8..570418200063298175c843047e4700d703e9819d 100644
--- a/htdocs/langs/cs_CZ/companies.lang
+++ b/htdocs/langs/cs_CZ/companies.lang
@@ -43,13 +43,13 @@ ThirdPartyCustomersStats=Zákazníci
 ThirdPartyCustomersWithIdProf12=Zákazníci s %s nebo %s
 ThirdPartySuppliers=Dodavatelé
 ThirdPartyType=Typ třetí strany
-Company/Fundation=Společnosti / Nadace
+Company/Fundation=Společnosti/Nadace
 Individual=Soukromá osoba
-ToCreateContactWithSameName=Automaticky vytvoří fyzický kontakt s stejnými informacemi
+ToCreateContactWithSameName=Automaticky vytvoří fyzický kontakt se stejnými informacemi
 ParentCompany=Mateřská společnost
-Subsidiary=Dceřiná
+Subsidiary=Dceřiná společnost
 Subsidiaries=Dceřiné společnosti
-NoSubsidiary=Žádná dceřiná
+NoSubsidiary=Žádná dceřiná společnost
 ReportByCustomers=Reporty dle zákazníků
 ReportByQuarter=Reporty dle sazby
 CivilityCode=Etický kodex
@@ -57,11 +57,11 @@ RegisteredOffice=Sídlo společnosti
 Name=Název
 Lastname=Příjmení
 Firstname=Křestní jméno
-PostOrFunction=Post / Funkce
+PostOrFunction=Post/Funkce
 UserTitle=Titul
-Surname=Příjmení / Pseudo
+Surname=Příjmení/Přezdívka
 Address=Adresa
-State=Stát / Provincie
+State=Stát/Okres
 Region=Kraj
 Country=Země
 CountryCode=Kód země
@@ -71,7 +71,7 @@ Skype=Skype
 Call=Hovor
 Chat=Chat
 PhonePro=Telefon [práce]
-PhonePerso=Telefon [osob.]
+PhonePerso=Telefon osobní
 PhoneMobile=Mobil
 No_Email=Nezasílat hromadné e-maily
 Fax=Fax
@@ -91,14 +91,14 @@ LocalTax2IsUsedES= IRPF se používá
 LocalTax2IsNotUsedES= IRPF se nepoužívá
 LocalTax1ES=RE
 LocalTax2ES=IRPF
-TypeLocaltax1ES=RE Type
-TypeLocaltax2ES=IRPF Type
-TypeES=Type
+TypeLocaltax1ES=RE Typ
+TypeLocaltax2ES=IRPF Typ
+TypeES=Typ
 ThirdPartyEMail=%s
 WrongCustomerCode=Neplatný kód zákazníka
 WrongSupplierCode=Neplatný kód dodavatele
-CustomerCodeModel=Model kódu zákazníka
-SupplierCodeModel=Model kódu dodavatele
+CustomerCodeModel=Vzorový kód zákazníka
+SupplierCodeModel=Vzorový kód dodavatele
 Gencod=Čárový kód
 ##### Professional ID #####
 ProfId1Short=Prof id 1
@@ -164,7 +164,7 @@ ProfId6DE=-
 ProfId1ES=Prof Id 1 (CIF/NIF)
 ProfId2ES=Prof Id 2 (Číslo sociálního pojištění)
 ProfId3ES=Prof Id 3 (CNAE)
-ProfId4ES=Prof Id 4 (Collegiate number)
+ProfId4ES=Prof Id 4 (Collegiate číslo)
 ProfId5ES=-
 ProfId6ES=-
 ProfId1FR=Prof Id 1 (SIREN)
@@ -259,17 +259,17 @@ AvailableGlobalDiscounts=Možné absolutní slevy
 DiscountNone=Nikdo
 Supplier=Dodavatel
 CompanyList=Seznam společností
-AddContact=Přidat kontakt
-AddContactAddress=Přidat kontakt / adresu
+AddContact=Vytvořit kontakt
+AddContactAddress=Vytvořit kontakt/adresu
 EditContact=Upravit kontakt
-EditContactAddress=Upravit kontakt / adresu
+EditContactAddress=Upravit kontakt/adresu
 Contact=Kontakt
-ContactsAddresses=Kontakty / adresy
+ContactsAddresses=Kontakty/adresy
 NoContactDefinedForThirdParty=Žádný kontakt není definován této třetí straně
 NoContactDefined=Žádný kontakt není definován
 DefaultContact=Výchozí kontakty / adresy
-AddCompany=Přidat společnost
-AddThirdParty=Přidat třetí stranu
+AddCompany=Vytvořit společnost
+AddThirdParty=Vytvořit třetí stranu
 DeleteACompany=Odstranit společnost
 PersonalInformations=Osobní údaje
 AccountancyCode=Účetní kód
@@ -286,7 +286,7 @@ ThisIsModuleRules=Toto jsou pravidla pro tento modul
 LastProspect=Poslední
 ProspectToContact=Cíl ke kontaktování
 CompanyDeleted=Společnost %s odstraněna z databáze.
-ListOfContacts=Seznam kontaktů / adres
+ListOfContacts=Seznam kontaktů/adres
 ListOfContactsAddresses=Seznam kontaktů / adres
 ListOfProspectsContacts=Seznam kontaktů cíle
 ListOfCustomersContacts=Seznam kontaktů zákazníka
@@ -306,7 +306,7 @@ NoContactForAnyProposal=Tento kontakt není přiřazen k žádné obchodní nab
 NoContactForAnyContract=Tento kontakt není přiřazen k žádné smlouvě
 NoContactForAnyInvoice=Tento kontakt není přiřazen k žádné faktuře
 NewContact=Nový kontakt
-NewContactAddress=Nový kontakt / adresa
+NewContactAddress=Nový kontakt/adresa
 LastContacts=Poslední kontakty
 MyContacts=Moje kontakty
 Phones=Telefony
@@ -316,7 +316,7 @@ EditCompany=Upravit společnost
 EditDeliveryAddress=Upravit dodací adresu
 ThisUserIsNot=Tento uživatel není cíl, zákazník ani dodavatel
 VATIntraCheck=Kontrola
-VATIntraCheckDesc=Odkaz <b>%s</b> umožňuje zkontrolovat VAT. Je potřeba přístup k internetu.
+VATIntraCheckDesc=Odkaz <b>%s</b> umožňuje zkontrolovat DIČ/VAT. Je potřeba přístup k internetu.
 VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do
 VATIntraCheckableOnEUSite=Kontrola VAT na stránkách Evropské Komise
 VATIntraManualCheck=Můžete také zkontrolovat ručně na evropských stránkách <a href="%s" target="_blank">%s</a>
@@ -365,7 +365,7 @@ NoParentCompany=Nikdo
 ExportImport=Import-Export
 ExportCardToFormat=Exportovat kartu do formátu
 ContactNotLinkedToCompany=Kontakt není spojen s žádnou třetí stranou
-DolibarrLogin=Dolibarr login
+DolibarrLogin=Přihlášení do Dolibarru
 NoDolibarrAccess=Žádný přístup k Dolibarr
 ExportDataset_company_1=Třetí strany (Společnosti/nadace/osoby) a vlastnosti
 ExportDataset_company_2=Kontakty a vlastnosti
@@ -379,8 +379,8 @@ DeliveryAddressLabel=Štítek dodací adresy
 DeleteDeliveryAddress=Smazat dodací adresu
 ConfirmDeleteDeliveryAddress=Jste si jisti, že chcete smazat tuto dodací adresu?
 NewDeliveryAddress=Nová doručovací adresa
-AddDeliveryAddress=Přidat adresu
-AddAddress=Přidat adresu
+AddDeliveryAddress=Přidat adresy
+AddAddress=Přidat adresy
 NoOtherDeliveryAddress=Žádná náhradní doručení adresa
 SupplierCategory=Kategorie dodavatele
 JuridicalStatus200=Nezávislý
@@ -393,22 +393,22 @@ Organization=Organizace
 AutomaticallyGenerated=Automaticky generováno
 FiscalYearInformation=Informace o fiskálním roce
 FiscalMonthStart=Počáteční měsíc fiskálního roku
-YouMustCreateContactFirst=Pro přidání e-mailových notifikací musíte přidat e-mailové kontakty k třetí straně
+YouMustCreateContactFirst=Pro přidání e-mailových notifikací musíte přidat e-mailové kontakty ke třetí straně
 ListSuppliersShort=Seznam dodavatelů
 ListProspectsShort=Seznam cílů
 ListCustomersShort=Seznam zákazníků
-ThirdPartiesArea=Third parties and contact area
+ThirdPartiesArea=Kontakty třetích stran
 LastModifiedThirdParties=Posledních %s editovaných třetích stran
 UniqueThirdParties=Celkem unikátních třetích stran
 InActivity=Otevřeno
 ActivityCeased=Uzavřeno
 ActivityStateFilter=Stav činnosti
-ProductsIntoElements=List of products into %s
+ProductsIntoElements=Seznam produktů do %s
 CurrentOutstandingBill=Momentální nezaplacený účet
 OutstandingBill=Max. za nezaplacený účet
 OutstandingBillReached=Dosaženo max. pro nezaplacený účet
-MonkeyNumRefModelDesc=Vrátí číslo ve formátu %syymm-nnnn pro kód zákazníka a %syymm-nnnn pro ód dodavatele kde yy je rok, mm měsíc a nnnn je číselná řada bez přerušení a bez návratu k 0.
-LeopardNumRefModelDesc=Kód je zdarma. Tento kód lze kdykoli změnit.
+MonkeyNumRefModelDesc=Vrátí číslo ve formátu %syymm-nnnn pro kód zákazníka a %syymm-nnnn pro kód dodavatele kde yy je rok, mm měsíc a nnnn je číselná řada bez přerušení a bez návratu k 0.
+LeopardNumRefModelDesc=Kód je volný. Tento kód lze kdykoli změnit.
 ManagingDirectors=Jméno vedoucího (CEO, ředitel, předseda ...)
-SearchThirdparty=Search thirdparty
-SearchContact=Search contact
+SearchThirdparty=Hledat třetí stranu
+SearchContact=Hledat kontakt
diff --git a/htdocs/langs/cs_CZ/compta.lang b/htdocs/langs/cs_CZ/compta.lang
index bcd22190e9e111628701f8b127e64dfa51e820ed..3f170dea2d12875d5deec2e059b39abc1196fb0f 100644
--- a/htdocs/langs/cs_CZ/compta.lang
+++ b/htdocs/langs/cs_CZ/compta.lang
@@ -1,20 +1,20 @@
 # Dolibarr language file - Source file is en_US - compta
 Accountancy=Účetnictví
-AccountancyCard=Účetnictví karty
+AccountancyCard=Karta účetnictví
 Treasury=Pokladna
 MenuFinancial=Finanční
 TaxModuleSetupToModifyRules=Přejít na <a href="%s">Nastavení daní</a> pro změnu výpočtu daní
-TaxModuleSetupToModifyRulesLT=Go to <a href="%s">Company setup</a> to modify rules for calculation
+TaxModuleSetupToModifyRulesLT=Jděte na <a href="%s">Nastavení firmy</a> pro úpravu podmínek pro kalkulaci
 OptionMode=Volba pro účetnictví
 OptionModeTrue=Možnost Příjmy-Výdaje
-OptionModeVirtual=Možnost deklaracemi Pohledávky
-OptionModeTrueDesc=V této souvislosti se počítá obrat přes platby (datum platby). Platnost údajů je zajištěna pouze tehdy, pokud je vedení účetnictví zkoumal přes vstup / výstup na účty prostřednictvím faktur.
-OptionModeVirtualDesc=V této souvislosti se počítá obrat přes faktur (datum schválení). Jsou-li tyto faktury jsou splatné, zda byly zaplaceny či nikoliv, jsou uvedeny v obratu výstupu.
-FeatureIsSupportedInInOutModeOnly=Funkce dostupné pouze v ÚVĚRY-dluhy účetního režimu (viz konfigurace modulu Účetnictví)
+OptionModeVirtual=Možnost Pohledávky-Dluhy
+OptionModeTrueDesc=V této souvislosti se počítá obrat přes platby (datum platby). Platnost údajů je zajištěna pouze tehdy, pokud je vedení účetnictví zkoumá přes vstup/výstup na účty prostřednictvím faktur.
+OptionModeVirtualDesc=V této souvislosti se počítá obrat přes faktury (datum schválení). Jsou-li tyto faktury jsou splatné, přestože byly zaplaceny či nikoliv, jsou uvedeny v obratu výstupu.
+FeatureIsSupportedInInOutModeOnly=Funkce dostupné pouze v ÚVĚRY-DLUHY účetního režimu. (viz konfigurace modulu Účetnictví)
 VATReportBuildWithOptionDefinedInModule=Částky uvedené zde jsou vypočteny na základě nastavených daňových pravidel.
-LTReportBuildWithOptionDefinedInModule=Amounts shown here are calculated using rules defined by Company setup.
+LTReportBuildWithOptionDefinedInModule=Částky se zde uvedené jsou vypočítány na základě pravidel definovaných nastavení firmy.
 Param=Nastavení
-RemainingAmountPayment=Částka platby svátku:
+RemainingAmountPayment=Zbývající částka platby:
 AmountToBeCharged=Celková částka k zaplacení:
 AccountsGeneral=Účty
 Account=Účet
@@ -24,184 +24,184 @@ Accountsparent=Účty rodič
 BillsForSuppliers=Účty pro dodavatele
 Income=Příjem
 Outcome=Výdaj
-ReportInOut=Výnosy / náklady
+ReportInOut=Výnosy/náklady
 ReportTurnover=Obrat
-PaymentsNotLinkedToInvoice=Platby nesouvisející s jakoukoli fakturu, takže nejsou spojeny žádné třetí straně
-PaymentsNotLinkedToUser=Platby nesouvisející všechny uživatele
+PaymentsNotLinkedToInvoice=Platby nepropojené s jakoukoli fakturu, takže nejsou spojeny k žádné třetí straně
+PaymentsNotLinkedToUser=Platby nepropojené s libovolným uživatelem
 Profit=Zisk
-AccountingResult=Accounting result
+AccountingResult=Účetní výsledek
 Balance=Zůstatek
 Debit=Debet
-Credit=Úvěr
-Piece=Accounting Doc.
-Withdrawal=Odnětí
+Credit=Kredit
+Piece=Účetnictví Doc.
+Withdrawal=Výběr
 Withdrawals=Výběry
-AmountHTVATRealReceived=Net shromážděný
-AmountHTVATRealPaid=Čisté placené
-VATToPay=DPH prodává
+AmountHTVATRealReceived=Net shromážděné
+AmountHTVATRealPaid=Net placené
+VATToPay=DPH prodejní
 VATReceived=DPH zaplacená
-VATToCollect=DPH nákupy
-VATSummary=DPH Balance
-LT2SummaryES=IRPF Balance
-LT1SummaryES=RE Balance
+VATToCollect=DPH nákupní
+VATSummary=DPH zůstatek
+LT2SummaryES=IRPF zůstatek
+LT1SummaryES=RE Zůstatek
 VATPaid=DPH zaplacená
-SalaryPaid=Salary paid
-LT2PaidES=IRPF Placené
-LT1PaidES=RE Paid
+SalaryPaid=Platba mzdy
+LT2PaidES=IRPF zaplacená
+LT1PaidES=RE Placeno
 LT2CustomerES=IRPF prodej
 LT2SupplierES=IRPF nákupy
-LT1CustomerES=RE sales
-LT1SupplierES=RE purchases
-VATCollected=Vybrané DPH
+LT1CustomerES=RE odbyt
+LT1SupplierES=RE nákupy
+VATCollected=Vybraná DPH
 ToPay=Zaplatit
 ToGet=Chcete-li získat zpět
-SpecialExpensesArea=Area for all special payments
-TaxAndDividendsArea=Daňové, sociální příspěvky a dividendy oblasti
+SpecialExpensesArea=Oblast pro všechny speciální platby
+TaxAndDividendsArea=Oblast pro daně, sociální příspěvky a dividendy
 SocialContribution=Sociální příspěvek
 SocialContributions=Sociální příspěvky
-MenuSpecialExpenses=Special expenses
+MenuSpecialExpenses=Zvláštní výdaje
 MenuTaxAndDividends=Daně a dividendy
-MenuSalaries=Salaries
+MenuSalaries=Mzdy
 MenuSocialContributions=Sociální příspěvky
 MenuNewSocialContribution=Nový příspěvek
 NewSocialContribution=Nový příspěvek na sociální zabezpečení
-ContributionsToPay=Příspěvky platit
-AccountancyTreasuryArea=Účetnictví / Treasury oblast
+ContributionsToPay=Platba příspěvků
+AccountancyTreasuryArea=Oblast Účetnictví/Pokladna
 AccountancySetup=Nastavení účetnictví
-NewPayment=Nový platební
+NewPayment=Nová platba
 Payments=Platby
-PaymentCustomerInvoice=Zákazník fakturu
-PaymentSupplierInvoice=Dodavatel fakturu
-PaymentSocialContribution=Sociální příspěvek platba
-PaymentVat=DPH platba
-PaymentSalary=Salary payment
+PaymentCustomerInvoice=Platba zákaznické faktury
+PaymentSupplierInvoice=Platba dodavatelské faktury
+PaymentSocialContribution=Platba sociálního příspěvku
+PaymentVat=Platba DPH
+PaymentSalary=Výplaty
 ListPayment=Seznam plateb
 ListOfPayments=Seznam plateb
 ListOfCustomerPayments=Seznam zákaznických plateb
 ListOfSupplierPayments=Seznam plateb dodavatelům
 DatePayment=Datum platby
-DateStartPeriod=Date start period
-DateEndPeriod=Date end period
-NewVATPayment=New DPH platba
-newLT2PaymentES=Nový IRPF platba
-newLT1PaymentES=New RE payment
-LT2PaymentES=IRPF platby
+DateStartPeriod=Datum zahájení období
+DateEndPeriod=Datum konce období
+NewVATPayment=Nová platba DPH
+newLT2PaymentES=Nová platba IRPF
+newLT1PaymentES=Nová RE platba
+LT2PaymentES=IRPF platba
 LT2PaymentsES=IRPF Platby
-LT1PaymentES=RE Payment
-LT1PaymentsES=RE Payments
+LT1PaymentES=RE Platba
+LT1PaymentsES=RE Platby
 VATPayment=Platba DPH
 VATPayments=Platby DPH
-SocialContributionsPayments=Sociální příspěvky platby
-ShowVatPayment=Zobrazit DPH platbu
+SocialContributionsPayments=Platby sociálních příspěvků
+ShowVatPayment=Zobrazit platbu DPH
 TotalToPay=Celkem k zaplacení
-TotalVATReceived=Celkem bez DPH obdržel
-CustomerAccountancyCode=Zákazník účetnictví kód
-SupplierAccountancyCode=Dodavatel účetnictví kód
+TotalVATReceived=Obdržené DPH celkem
+CustomerAccountancyCode=Kód účetnictví zákazník
+SupplierAccountancyCode=Kód účetnictví dodavatel
 AccountNumberShort=Číslo účtu
 AccountNumber=Číslo účtu
 NewAccount=Nový účet
 SalesTurnover=Obrat
 SalesTurnoverMinimum=Minimální obrat z prodeje
 ByThirdParties=Třetími stranami
-ByUserAuthorOfInvoice=Fakturou autorovi
-AccountancyExport=Účetnictví export
-ErrorWrongAccountancyCodeForCompany=Bad zákazník účetní kód pro %s
+ByUserAuthorOfInvoice=Fakturu vystavil
+AccountancyExport=Export účetnictví
+ErrorWrongAccountancyCodeForCompany=Špatný zákaznický účetní kód pro %s
 SuppliersProductsSellSalesTurnover=Celkový obrat z prodeje výrobků dodavatele.
-CheckReceipt=Podívejte se vklad
-CheckReceiptShort=Podívejte se vklad
-LastCheckReceiptShort=Last %s check receipts
+CheckReceipt=Zkontrolujte vklad
+CheckReceiptShort=Zkontrolujte vklad
+LastCheckReceiptShort=Poslední %s kontrola příjmu
 NewCheckReceipt=Nová sleva
-NewCheckDeposit=Nová kontrola záloha
+NewCheckDeposit=Nová kontrola zálohy
 NewCheckDepositOn=Vytvořte potvrzení o vkladu na účet: %s
 NoWaitingChecks=Žádné kontroly čekání na vklad.
 DateChequeReceived=Zkontrolujte datum příjmu
-NbOfCheques=Nb kontrol
-PaySocialContribution=Platit sociální příspěvek
-ConfirmPaySocialContribution=Jste si jisti, že chcete klasifikovat jako sociální příspěvek vyplácí?
-DeleteSocialContribution=Odstranění sociální příspěvek
+NbOfCheques=Nb kontroly
+PaySocialContribution=Platba sociálního příspěvku
+ConfirmPaySocialContribution=Jste si jisti, že chcete klasifikovat tento sociální příspěvek jako vyplacený?
+DeleteSocialContribution=Odstranit sociální příspěvek
 ConfirmDeleteSocialContribution=Jste si jisti, že chcete smazat tento příspěvek na sociální zabezpečení?
 ExportDataset_tax_1=Sociální příspěvky a platby
-CalcModeVATDebt=Režim <b>%sVAT na závazky accounting%s.</b>
-CalcModeVATEngagement=Režim <b>%sVAT z příjmů-expense%sS.</b>
-CalcModeDebt=Režim <b>%sClaims-Debt%sS</b> řekl <b>Závazek účetnictví.</b>
-CalcModeEngagement=Režim <b>%sIncomes-Expense%sS</b> řekl <b>hotovostní účetnictví</b>
-CalcModeLT1= Mode <b>%sRE on customer invoices - suppliers invoices%s</b>
-CalcModeLT1Debt=Mode <b>%sRE on customer invoices%s</b>
-CalcModeLT1Rec= Mode <b>%sRE on suppliers invoices%s</b>
-CalcModeLT2= Mode <b>%sIRPF on customer invoices - suppliers invoices%s</b>
-CalcModeLT2Debt=Mode <b>%sIRPF on customer invoices%s</b>
-CalcModeLT2Rec= Mode <b>%sIRPF on suppliers invoices%s</b>
+CalcModeVATDebt=Režim <b>%sDPH zápočtu na závazky%s.</b>
+CalcModeVATEngagement=Režim <b>%sDPH z rozšířených příjmů%s.</b>
+CalcModeDebt=Režim <b>%sPohledávky-závazky%s</b> zobrazí <b>Závazky účetnictví.</b>
+CalcModeEngagement=Režim <b>%sPříjmy-Výdaje%s</b> zobrazí <b>hotovostní účetnictví</b>
+CalcModeLT1= Mod <b>%sRE na zákaznické faktury - dodavatelské faktury%s</b>
+CalcModeLT1Debt=Mod <b>%sRE na zákaznické faktury%s</b>
+CalcModeLT1Rec= Mod <b>%sRE na dodavatelské faktury%s</b>
+CalcModeLT2= Mod <b>%sIRPF na zákaznické faktury - dodavatelské faktury%s</b>
+CalcModeLT2Debt=Mod <b>%sIRPF na zákaznické faktury%s</b>
+CalcModeLT2Rec= Mod <b>%sIRPF dodavatelské faktury%s</b>
 AnnualSummaryDueDebtMode=Bilance příjmů a výdajů, roční shrnutí
 AnnualSummaryInputOutputMode=Bilance příjmů a výdajů, roční shrnutí
-AnnualByCompaniesDueDebtMode=Bilance příjmů a výdajů, detail třetích stran, režim <b>%sClaims-Debt%sS</b> řekl <b>účtování závazků.</b>
-AnnualByCompaniesInputOutputMode=Bilance příjmů a výdajů, detail třetích stran, režim <b>%sIncomes-Expense%sS</b> řekla <b>pokladní účetnictví.</b>
-SeeReportInInputOutputMode=Viz zpráva <b>%sIncomes-Expense%sS</b> řekl <b>hotovostního účetnictví</b> pro výpočet na skutečných platbách
-SeeReportInDueDebtMode=Viz zpráva <b>%sClaims-Debt%sS</b> řekl <b>účtování závazků</b> pro výpočet na vystavených faktur
+AnnualByCompaniesDueDebtMode=Bilance příjmů a výdajů, detail třetích stran, režim <b>%sPohledávky-závazky%sS</b> řekl <b>účtování závazků.</b> 
+AnnualByCompaniesInputOutputMode=Bilance příjmů a výdajů, detail třetích stran, režim <b>%Příjmy-výdaje%sS</b> řekla <b>pokladní účetnictví.</b>
+SeeReportInInputOutputMode=Viz zpráva <b>%s Příjmy-Výdaje %s </b> řekl <b>hotovostní účetnictví</b> pro výpočet na skutečných platbách
+SeeReportInDueDebtMode=Viz zpráva <b>%s Pohledávky-Závazky %s</b> řekl <b>účtování závazků</b> pro výpočet na vystavených fakturách
 RulesAmountWithTaxIncluded=- Uvedené částky jsou se všemi daněmi
-RulesResultDue=- To zahrnuje neuhrazené faktury, výdaje a DPH, zda byly zaplaceny či nikoliv. <br> - Je založen na validační data faktur a DPH a ke dni splatnosti na náklady.
-RulesResultInOut=- It includes the real payments made on invoices, expenses and VAT. <br>- It is based on the payment dates of the invoices, expenses and VAT.
-RulesCADue=- Obsahuje klienta splatných faktur, zda jsou placené či nikoliv. <br> - Je založen na validační data těchto faktur. <br>
+RulesResultDue=- To zahrnuje neuhrazené faktury, výdaje a DPH, zda byly zaplaceny či nikoliv. <br> - Je založen na ověřených datech faktur a DPH a ke dni splatnosti pro náklady.
+RulesResultInOut=- To zahrnuje skutečné platby provedené na fakturách, výdaje a DPH. <br> - Je založen na splatností faktur, nákladech a DPH.
+RulesCADue=- Obsahuje klienta splatných faktur, zda jsou placené či nikoliv. <br> - Je založen na validačních datech těchto faktur. <br>
 RulesCAIn=- Obsahuje všechny účinné platby faktury přijaté od klientů. <br> - Je založen na datu úhrady těchto faktur <br>
-DepositsAreNotIncluded=- Kauce faktury, ani zahrnuty
-DepositsAreIncluded=- Kauce faktury jsou zahrnuty
-LT2ReportByCustomersInInputOutputModeES=Zpráva o třetí stranou IRPF
-LT1ReportByCustomersInInputOutputModeES=Report by third party RE
-VATReportByCustomersInInputOutputMode=Zpráva zákazníka DPH vyzvednout a zaplatit
-VATReportByCustomersInDueDebtMode=Zpráva zákazníka DPH vyzvednout a zaplatit
-VATReportByQuartersInInputOutputMode=Zpráva sazby daně z přidané hodnoty vybrané a odvedené
-LT1ReportByQuartersInInputOutputMode=Report by RE rate
-LT2ReportByQuartersInInputOutputMode=Report by IRPF rate
-VATReportByQuartersInDueDebtMode=Zpráva sazby daně z přidané hodnoty vybrané a odvedené
-LT1ReportByQuartersInDueDebtMode=Report by RE rate
-LT2ReportByQuartersInDueDebtMode=Report by IRPF rate
-SeeVATReportInInputOutputMode=Viz zprávu <b>%sVAT encasement%s</b> pro standardní výpočet
-SeeVATReportInDueDebtMode=Viz zpráva <b>%sVAT na flow%s</b> pro výpočet s možností na toku
+DepositsAreNotIncluded=- Zálohové faktury nejsou zahrnuty
+DepositsAreIncluded=- Zálohové faktury jsou zahrnuty
+LT2ReportByCustomersInInputOutputModeES=Zpráva o třetí straně IRPF
+LT1ReportByCustomersInInputOutputModeES=Zpráva třetí strany RE
+VATReportByCustomersInInputOutputMode=Zpráva o vybrané a zaplacené DPH zákazníka
+VATReportByCustomersInDueDebtMode=Zpráva o vybrané a zaplacené DPH zákazníka
+VATReportByQuartersInInputOutputMode=Zpráva o sazbách DPH vybrané a odvedené
+LT1ReportByQuartersInInputOutputMode=Zpráva RE hodnocení
+LT2ReportByQuartersInInputOutputMode=Zpráva IRPF hodnocení
+VATReportByQuartersInDueDebtMode=Zpráva o sazbách DPH vybrané a odvedené
+LT1ReportByQuartersInDueDebtMode=Zpráva RE hodnocení
+LT2ReportByQuartersInDueDebtMode=Zpráva IRPF hodnocení
+SeeVATReportInInputOutputMode=Viz zprávu <b>%s uzavřená DPH %s</b> pro standardní výpočet
+SeeVATReportInDueDebtMode=Viz zpráva <b>%sDPH na průběhu%s</b> pro výpočet s možností průběhu
 RulesVATInServices=- V případě služeb, zpráva obsahuje DPH předpisy skutečně přijaté nebo vydané na základě data splatnosti.
-RulesVATInProducts=- U hmotného majetku, ale zahrnuje DPH faktury na základě data vystavení faktury.
-RulesVATDueServices=- V případě služeb, zpráva obsahuje faktur s DPH z důvodu, placené, či nikoli, na základě data vystavení faktury.
-RulesVATDueProducts=- U hmotného majetku, ale zahrnuje faktur s DPH, na základě data vystavení faktury.
-OptionVatInfoModuleComptabilite=Poznámka: U hmotného majetku, měl by používat termín dodání bude spravedlivější.
-PercentOfInvoice=%% / Faktura
-NotUsedForGoods=Nepoužívá se na zboží
-ProposalStats=Statistiky o návrzích
-OrderStats=Statistika objednávek
+RulesVATInProducts=- U hmotného majetku zde zahrnuje DPH faktury na základě data vystavení faktury.
+RulesVATDueServices=- V případě služeb, zpráva obsahuje faktury s DPH se stavem placené či nikoli, na základě data vystavení faktury.
+RulesVATDueProducts=- U hmotného majetku zahrnuje faktury s DPH, na základě data vystavení faktury.
+OptionVatInfoModuleComptabilite=Poznámka: U hmotného majetku, by měl být používat termín dodání pro přesnější zobrazení.
+PercentOfInvoice=%% /Faktura
+NotUsedForGoods=Nepoužívá se pro zboží
+ProposalStats=Statistiky o nabídkách
+OrderStats=Statistiky objednávek
 InvoiceStats=Statistika účty
-Dispatch=Dispečink
-Dispatched=Odešle se,
+Dispatch=Odesílání
+Dispatched=Odesláno
 ToDispatch=K odeslání
-ThirdPartyMustBeEditAsCustomer=Třetí strana musí být definován jako zákazník
-SellsJournal=Prodej Journal
-PurchasesJournal=Nákupy Journal
-DescSellsJournal=Prodej Journal
-DescPurchasesJournal=Nákupy Journal
+ThirdPartyMustBeEditAsCustomer=Třetí strana musí být definována jako zákazník
+SellsJournal=Prodejní deník
+PurchasesJournal=Nákupní deník
+DescSellsJournal=Prodejní deník
+DescPurchasesJournal=Nákupní deník
 InvoiceRef=Faktura čj.
 CodeNotDef=Není definováno
-AddRemind=Expedice k dispozici množství
+AddRemind=Množství k expedici
 RemainToDivide= Zbývá k odeslání:
-WarningDepositsNotIncluded=Vklady faktury nejsou zahrnuty v této verzi tohoto modulu účetnictví.
-DatePaymentTermCantBeLowerThanObjectDate=Termín vyplacení datum nemůže být nižší než objektu data.
-Pcg_version=PCG verze
-Pcg_type=PCG typ
-Pcg_subtype=PCG podtyp
-InvoiceLinesToDispatch=Faktura linky na expedici
-InvoiceDispatched=Je vyslána, faktury
-AccountancyDashboard=Účetnictví shrnutí
-ByProductsAndServices=Výrobky a službami
+WarningDepositsNotIncluded=Zálohové faktury nejsou zahrnuty v této verzi tohoto modulu účetnictví.
+DatePaymentTermCantBeLowerThanObjectDate=Datum termínu platby nemůže být nižší než datum objektu.
+Pcg_version=Pcg verze
+Pcg_type=Pcg typ
+Pcg_subtype=Pcg podtyp
+InvoiceLinesToDispatch=Řádky faktury pro odeslání
+InvoiceDispatched=Odeslané faktury
+AccountancyDashboard=Shrnutí účetnictví
+ByProductsAndServices=Výrobky a služby
 RefExt=Externí ref
-ToCreateAPredefinedInvoice=Chcete-li vytvořit předem definovaný fakturu, vytvořte standardní fakturu a pak, aniž by ji potvrdíte, klikněte na tlačítko &quot;Převést do předem faktura&quot;.
-LinkedOrder=Link to order
+ToCreateAPredefinedInvoice=Chcete-li vytvořit předem definovaný fakturu, vytvořte standardní fakturu a pak, aniž by ji potvrdíte, klikněte na tlačítko  "Převést do předdefinovaných faktur"
+LinkedOrder=Odkaz na objednávku
 ReCalculate=Přepočítat
-Mode1=Method 1
+Mode1=Metoda 1
 Mode2=Metoda 2
-CalculationRuleDesc=Chcete-li vypočítat celkovou částku DPH, tam jsou dvě metody: <br> Metoda 1 je zaokrouhlení DPH na každém řádku, pak se sečtou tak. <br> Metoda 2 je součtem všech sud na každém řádku, pak se výsledek zaokrouhlování. <br> Konečný výsledek může se liší od několika centů. Výchozí režim je režim <b>%s.</b>
-CalculationRuleDescSupplier=podle dodavatele zvolit vhodnou metodu použít stejné pravidlo pro výpočet a dostat stejný výsledek očekává od svého dodavatele.
-TurnoverPerProductInCommitmentAccountingNotRelevant=Obrat zpráva za zboží, při použití <b>hotovosti evidence</b> režim není relevantní. Tato zpráva je k dispozici pouze při použití <b>zásnubní evidence</b> režimu (viz nastavení účetního modulu).
-CalculationMode=Výpočet režim
-AccountancyJournal=Accountancy code journal
-ACCOUNTING_VAT_ACCOUNT=Default accountancy code for collecting VAT
-ACCOUNTING_VAT_BUY_ACCOUNT=Default accountancy code for paying VAT
-ACCOUNTING_ACCOUNT_CUSTOMER=Accountancy code by default for customer thirdparties
-ACCOUNTING_ACCOUNT_SUPPLIER=Accountancy code by default for supplier thirdparties
-CloneTax=Clone a social contribution
-ConfirmCloneTax=Confirm the clone of a social contribution
-CloneTaxForNextMonth=Clone it for next month
+CalculationRuleDesc=Chcete-li vypočítat celkovou částku DPH, jsou k dispozici dvě metody: <br> Metoda 1 je zaokrouhlení DPH na každém řádku, částky se sečtou. <br> Metoda 2 je součtem všech sum na každém řádku, pak se výsledek zaokrouhlí. <br> Konečný výsledek může se liší od několika haléřů. Výchozí režim je režim <b>%s.</b>
+CalculationRuleDescSupplier=podle dodavatele zvolte vhodnou metodu použití stejného pravidla pro výpočet a dostanete stejný výsledek, který očekáváte od svého dodavatele.
+TurnoverPerProductInCommitmentAccountingNotRelevant=Obratová zpráva za zboží při použití režimu <b>hotovostního účetnictví</b> není relevantní. Tato zpráva je k dispozici pouze při použití režimu <b>zapojeného účetnictví</b>  (viz nastavení účetního modulu).
+CalculationMode=Výpočetní režim
+AccountancyJournal=Deník účetnických kódů
+ACCOUNTING_VAT_ACCOUNT=Výchozí účetnické kódy pro vybírání DPH
+ACCOUNTING_VAT_BUY_ACCOUNT=Výchozí účetnické kódy pro placení DPH
+ACCOUNTING_ACCOUNT_CUSTOMER=Účetnické kódy ve výchozím nastavení pro zákazníka třetích stran
+ACCOUNTING_ACCOUNT_SUPPLIER=Výchozí účetnické kódy pro dodavatele třetích stran
+CloneTax=Kopírovat sociální příspěvek
+ConfirmCloneTax=Potvrďte kopírování sociálního příspěvku
+CloneTaxForNextMonth=Kopírovat pro příští měsíc
diff --git a/htdocs/langs/cs_CZ/contracts.lang b/htdocs/langs/cs_CZ/contracts.lang
index 40188328aaec949c928232d91775d76da61229b2..e109df83a7412f952026f9742b906a8589bffa24 100644
--- a/htdocs/langs/cs_CZ/contracts.lang
+++ b/htdocs/langs/cs_CZ/contracts.lang
@@ -1,63 +1,63 @@
 # Dolibarr language file - Source file is en_US - contracts
-ContractsArea=Zakázky oblast
+ContractsArea=Oblast smluv
 ListOfContracts=Přehled smluv
-LastModifiedContracts=Last %s modified contracts
+LastModifiedContracts=Poslední %s upravené smlouvy
 AllContracts=Všechny smlouvy
-ContractCard=Smlouva karty
+ContractCard=Karta smlouvy
 ContractStatus=Stav smlouvy
 ContractStatusNotRunning=Neběží
-ContractStatusRunning=Běh
+ContractStatusRunning=Probíhá
 ContractStatusDraft=Návrh
 ContractStatusValidated=Ověřené
-ContractStatusClosed=Zavřeno
+ContractStatusClosed=Uzavřené
 ServiceStatusInitial=Neběží
-ServiceStatusRunning=Běh
-ServiceStatusNotLate=Běh, neuplynula
+ServiceStatusRunning=Běží
+ServiceStatusNotLate=Probíhá, neuplynula
 ServiceStatusNotLateShort=Neuplynula
-ServiceStatusLate=Běh, uplynula
+ServiceStatusLate=Probíhá, uplynula
 ServiceStatusLateShort=Vypršela
 ServiceStatusClosed=Zavřeno
-ServicesLegend=Služby legenda
+ServicesLegend=Legenda služeb
 Contracts=Smlouvy
-ContractsAndLine=Contracts and line of contracts
+ContractsAndLine=Smlouvy a řádky smluv
 Contract=Smlouva
 NoContracts=Žádné smlouvy
 MenuServices=Služby
 MenuInactiveServices=Služby, které nejsou aktivní
 MenuRunningServices=Spuštěné služby
-MenuExpiredServices=Propadlé služby
+MenuExpiredServices=Expirované služby
 MenuClosedServices=Uzavřené služby
 NewContract=Nová smlouva
-AddContract=Create contract
+AddContract=Vytvoření smlouvy
 SearchAContract=Hledat smlouvu
-DeleteAContract=Odstranění smlouvu
+DeleteAContract=Odstranit smlouvu
 CloseAContract=Zavřít smlouvu
-ConfirmDeleteAContract=Jste si jisti, že chcete smazat tuto smlouvu a všechny jeho služby?
-ConfirmValidateContract=Jste si jisti, že chcete ověřit tuto smlouvu pod názvem <b>%s?</b>
-ConfirmCloseContract=Tím se uzavře všechny služby (aktivní nebo ne). Jste si jisti, že chcete ukončit tuto smlouvu?
-ConfirmCloseService=Jste si jisti, že chcete ukončit tuto službu s datem <b>%s?</b>
-ValidateAContract=Ověření smlouvu
+ConfirmDeleteAContract=Jste si jisti, že chcete smazat tuto smlouvu a všechny tyto služby?
+ConfirmValidateContract=Jste si jisti, že chcete ověřit tuto smlouvu pod názvem <b>%s</b> ?
+ConfirmCloseContract=Tím uzavřete všechny služby (aktivní nebo neaktivní). Jste si jisti, že chcete ukončit tuto smlouvu?
+ConfirmCloseService=Jste si jisti, že chcete ukončit tuto službu s datem <b>%s</b> ?
+ValidateAContract=Ověření smlouvy
 ActivateService=Aktivace služby
-ConfirmActivateService=Jste si jisti, že chcete aktivovat tuto službu s datem <b>%s?</b>
-RefContract=Smlouva reference
+ConfirmActivateService=Jste si jisti, že chcete aktivovat tuto službu s datem <b>%s</b> ?
+RefContract=Reference smlouvy
 DateContract=Datum smlouvy
-DateServiceActivate=Aktivace služby Datum
-DateServiceUnactivate=Servis deaktivace datum
+DateServiceActivate=Datum aktivace služby
+DateServiceUnactivate=Datum deaktivace služby
 DateServiceStart=Termín zahájení služby
 DateServiceEnd=Termín ukončení služby
-ShowContract=Zobrazit smlouvy
+ShowContract=Zobrazit smlouvu
 ListOfServices=Seznam služeb
-ListOfInactiveServices=Seznam není aktivní služby
+ListOfInactiveServices=Seznam neaktivních služeb
 ListOfExpiredServices=Seznam prošlých aktivních služeb
 ListOfClosedServices=Seznam uzavřených služeb
-ListOfRunningContractsLines=Seznam běžících smluv linek
+ListOfRunningContractsLines=Seznam běžících smluv řádků
 ListOfRunningServices=Seznam spuštěných služeb
 NotActivatedServices=Neaktivní služby (u ověřených smluv)
 BoardNotActivatedServices=Služby pro aktivaci u ověřených smluv
-LastContracts=Last %s contracts
-LastActivatedServices=Poslední %s aktivaci služby
+LastContracts=Poslední %s smlouvy
+LastActivatedServices=Poslední %s aktivované služby
 LastModifiedServices=Poslední %s upravené služby
-EditServiceLine=Upravit linka
+EditServiceLine=Upravit řádek služby
 ContractStartDate=Datum zahájení
 ContractEndDate=Datum ukončení
 DateStartPlanned=Plánované datum zahájení
@@ -75,29 +75,29 @@ RunningServices=Spuštěné služby
 BoardRunningServices=Prošlé spuštěné služby
 ServiceStatus=Stav služby
 DraftContracts=Koncepty smlouvy
-CloseRefusedBecauseOneServiceActive=Smlouva nemůže být uzavřen Tam je alespoň jedna otevřená služba na něj
-CloseAllContracts=Zavřete všechny smluvní linky
+CloseRefusedBecauseOneServiceActive=Smlouva nemůže být uzavřena Je zde na ní alespoň jedna otevřená služba
+CloseAllContracts=Zavřete všechny smluvní řádky
 DeleteContractLine=Odstranění řádku smlouvy
-ConfirmDeleteContractLine=Jste si jisti, že chcete smazat tuto řádku smlouvy?
-MoveToAnotherContract=Přesuňte službu do jiné smlouvě.
-ConfirmMoveToAnotherContract=Vybral jsem novou cílovou smlouvy, a potvrzuji, že chcete přesunout tuto službu do tohoto smluvního vztahu.
-ConfirmMoveToAnotherContractQuestion=Vyberte by stávající smlouvy (z téže třetí osobě), kterou chcete přesunout tuto službu?
-PaymentRenewContractId=Obnovit smlouvu linie (číslo %s)
-ExpiredSince=Datum spotřeby
+ConfirmDeleteContractLine=Jste si jisti, že chcete smazat tento řádek smlouvy?
+MoveToAnotherContract=Přesuňte službu do jiné smlouvy.
+ConfirmMoveToAnotherContract=Vybral jste novou cílovou smlouvu, a potvrzujete vlastní krví, že chcete přesunout tuto službu do tohoto smluvního vztahu.
+ConfirmMoveToAnotherContractQuestion=Vybral jste ze  stávajících smluv (z téže třetí strany) tu, na kterou chcete přesunout tuto službu?
+PaymentRenewContractId=Obnovit smlouvu na řádku (číslo %s)
+ExpiredSince=Datum expirace
 RelatedContracts=Související smlouvy
-NoExpiredServices=Žádné skončila aktivní služby
-ListOfServicesToExpireWithDuration=Seznam služeb, které vyprší v %s dnů
-ListOfServicesToExpireWithDurationNeg=Seznam služeb uplynula od více než %s dnů
-ListOfServicesToExpire=Seznam služeb vyprší
-NoteListOfYourExpiredServices=Tento seznam obsahuje pouze služby smluv pro třetí strany si jsou propojeny jako obchodního zástupce.
-StandardContractsTemplate=Standard contracts template
-ContactNameAndSignature=For %s, name and signature:
-OnlyLinesWithTypeServiceAreUsed=Only lines with type "Service" will be cloned.
+NoExpiredServices=Žádné expirované aktivní služby
+ListOfServicesToExpireWithDuration=Seznam služeb, které expirují v %s dnů
+ListOfServicesToExpireWithDurationNeg=Seznam služeb expirovaných od více než %s dnů
+ListOfServicesToExpire=Seznam expirujících služeb
+NoteListOfYourExpiredServices=Tento seznam obsahuje pouze služby smluv pro třetí strany, které jsou propojeny na obchodního zástupce.
+StandardContractsTemplate=Šablony standardních smluv
+ContactNameAndSignature=Pro %s,  jméno a podpis:
+OnlyLinesWithTypeServiceAreUsed=Pouze řádky s typem  "Služby" budou zkopírovány.
 
 ##### Types de contacts #####
-TypeContact_contrat_internal_SALESREPSIGN=Obchodní zástupce podpisu smlouvy
+TypeContact_contrat_internal_SALESREPSIGN=Obchodní zástupce podepsal smlouvu
 TypeContact_contrat_internal_SALESREPFOLL=Obchodní zástupce následující-up smlouva
-TypeContact_contrat_external_BILLING=Fakturační kontakt se zákazníkem
+TypeContact_contrat_external_BILLING=Fakturační kontakt zákazníka
 TypeContact_contrat_external_CUSTOMER=Navazující kontakt se zákazníkem
-TypeContact_contrat_external_SALESREPSIGN=Podepsání kontraktu kontakt se zákazníkem
-Error_CONTRACT_ADDON_NotDefined=Konstantní CONTRACT_ADDON není definováno
+TypeContact_contrat_external_SALESREPSIGN=Podepsání smlouvy kontakt se zákazníkem
+Error_CONTRACT_ADDON_NotDefined=Konstanta CONTRACT_ADDON není definována
diff --git a/htdocs/langs/cs_CZ/cron.lang b/htdocs/langs/cs_CZ/cron.lang
index b9411cbeda27251a6d4dab1dcc184a37b6834eab..695153d122f3d5abf700990a251cad0522f8e7c8 100644
--- a/htdocs/langs/cs_CZ/cron.lang
+++ b/htdocs/langs/cs_CZ/cron.lang
@@ -1,81 +1,81 @@
 # Dolibarr language file - Source file is en_US - cron
 # About page
-About = O
-CronAbout = O Cron
+About = O aplikaci
+CronAbout = O cronu
 CronAboutPage = Cron o stránce
 # Right
-Permission23101 = Přečtěte si naplánovaná úloha
-Permission23102 = Vytvořit / aktualizovat naplánovanou úlohu
-Permission23103 = Odstranit naplánovaná úloha
-Permission23104 = Provést naplánované úlohy,
+Permission23101 = Číst naplánovanou úlohu
+Permission23102 = Vytvořit/aktualizovat naplánovanou úlohu
+Permission23103 = Odstranit naplánovanou úlohu
+Permission23104 = Provést naplánované úlohy
 # Admin
 CronSetup= Nastavení naplánovaných úloh
-URLToLaunchCronJobs=URL to check and launch cron jobs if required
-OrToLaunchASpecificJob=Or to check and launch a specific job
-KeyForCronAccess=Bezpečnostní klíč pro URL spustit cron
-FileToLaunchCronJobs=Příkazový řádek spustit cron
-CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes
-CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes
+URLToLaunchCronJobs=URL ke kontrole a spuštění úlohy v případě potřeby
+OrToLaunchASpecificJob=Nebo zkontrolovat a zahájit konkrétní práci
+KeyForCronAccess=Bezpečnostní klíč URL spuštění úlohy
+FileToLaunchCronJobs=Příkazový řádek pro spuštění úlohy
+CronExplainHowToRunUnix=Na Unixových systémech by jste měli použít následující položku crontab ke spuštění příkazového řádku každých 5 minut 
+CronExplainHowToRunWin=Na Microsoft Windows systémech můžete použít naplánováné nástroje úloh ke spuštění příkazového řádku každých 5 minut
 # Menu
 CronJobs=Naplánované úlohy
-CronListActive=List of active/scheduled jobs
-CronListInactive=Seznam postižených míst
+CronListActive=Výpis aktivních/naplánovaných úloh
+CronListInactive=Seznam vypnutých úloh
 # Page list
-CronDateLastRun=Poslední běh
-CronLastOutput=Poslední běh výstup
-CronLastResult=Poslední kód výsledku
+CronDateLastRun=Poslední úloha
+CronLastOutput=Výstup poslední úlohy
+CronLastResult=Výstup posledního kódu
 CronListOfCronJobs=Seznam naplánovaných úloh
 CronCommand=Příkaz
-CronList=Scheduled job
-CronDelete=Delete scheduled jobs
-CronConfirmDelete=Are you sure you want to delete this scheduled jobs ?
-CronExecute=Launch scheduled jobs
-CronConfirmExecute=Are you sure to execute this scheduled jobs now ?
-CronInfo=Scheduled job module allow to execute job that have been planned
-CronWaitingJobs=Waiting jobs
+CronList=Naplánovaná úloha
+CronDelete=Smazat naplánované úlohy
+CronConfirmDelete=Jste si jisti, že chcete smazat tyto naplánované úlohy?
+CronExecute=Spuštění naplánovaných úloh
+CronConfirmExecute=Opravdu chcete provést tyto naplánované úlohy nyní?
+CronInfo=Plánovací modul úloh umožňují provádět úlohy, které byly plánované
+CronWaitingJobs=Čekající úlohy
 CronTask=Práce
 CronNone=Nikdo
 CronDtStart=Datum zahájení
 CronDtEnd=Datum ukončení
 CronDtNextLaunch=Další provedení
-CronDtLastLaunch=Poslední poprava
+CronDtLastLaunch=Poslední provedení
 CronFrequency=Frekvenční
-CronClass=Classe
+CronClass=Třída
 CronMethod=Metoda
 CronModule=Modul
 CronAction=Akce
-CronStatus=Postavení
+CronStatus=Status
 CronStatusActive=Povoleno
-CronStatusInactive=Invalidní
-CronNoJobs=Žádní registrovaní práce
+CronStatusInactive=Vypnuto
+CronNoJobs=Žádné registrované úkoly
 CronPriority=Priorita
 CronLabel=Popis
 CronNbRun=Nb. zahájit
 CronEach=Každý
 JobFinished=Práce zahájena a dokončena
 #Page card
-CronAdd= Přidat pracovních míst
-CronHourStart= Začněte hodinu a datum úkolu
+CronAdd= Přidat práci
+CronHourStart= Hodina a datum startu úkolu
 CronEvery= A úkol provést každý
-CronObject= Instance / objekt vytvořit
+CronObject= Vytvoření Instance/objektu 
 CronArgs=Parametry
-CronSaveSucess=Uložit úspěšně
+CronSaveSucess=Úspěšně uloženo
 CronNote=Komentář
-CronFieldMandatory=Pole je povinné %s
+CronFieldMandatory=Pole %s je povinné
 CronErrEndDateStartDt=Datum ukončení nemůže být před datem zahájení
 CronStatusActiveBtn=Umožnit
 CronStatusInactiveBtn=Zakázat
-CronTaskInactive=Tato úloha je zakázán
-CronDtLastResult=Poslední výsledek Datum
+CronTaskInactive=Tato úloha je zakázána
+CronDtLastResult=Datum posledního výsledku
 CronId=Id
 CronClassFile=Třídy (filename.class.php)
-CronModuleHelp=Název adresáře modulu Dolibarr (také pracovat s externím modulem Dolibarr). <BR> Např načíst metody objektu výrobku Dolibarr / htdocs / <u>produktu</u> / třída / product.class.php, hodnota modulu je <i>produkt</i>
-CronClassFileHelp=Název souboru načíst. <BR> Např načíst metody objektu výrobku Dolibarr / htdocs / produktu / třída / <u>product.class.php,</u> hodnota název třídy souboru je <i>product.class.php</i>
-CronObjectHelp=Název objektu načíst. <BR> Např načíst metody objektu výrobku Dolibarr / htdocs / produktu / třída / product.class.php, hodnota název třídy souboru je <i>výrobek</i>
-CronMethodHelp=Objekt způsob startu. <BR> Např načíst metody objektu výrobku Dolibarr / htdocs / produktu / třída / product.class.php, hodnota metody je <i>fecth</i>
-CronArgsHelp=Metoda argumenty. <BR> Např načíst metody objektu výrobku Dolibarr / htdocs / produktu / třída / product.class.php, může být hodnota paramters být <i>0, ProductRef</i>
-CronCommandHelp=Systém příkazového řádku spustit.
-CronCreateJob=Create new Scheduled Job
+CronModuleHelp=Název adresáře modulu Dalibor (pracuje i s externími moduly). <BR> Např načíst metody objektu produktu ../htdocs/<u>product</u>/class/product.class.php, hodnota modulu je <i>product</i>
+CronClassFileHelp=Načíst název souboru. <BR> Např načíst metody objektu výrobku .../htdocs/product/class/<u>product.class.php</u> hodnota název třídy souboru je <i>product.class.php</i>
+CronObjectHelp=NNačíst název objektu. <BR> Např načíst metody objektu výrobku .../htdocs/product/class/product.class.php, hodnota název třídy souboru je <i>výrobek</i>
+CronMethodHelp=Objekt způsob startu. <BR> Např načíst metody objektu .../htdocs/product/class/product.class.php, hodnota metody je <i>fecth</i>
+CronArgsHelp=Metoda argumenty. <BR> Např načíst metody objektu výrobku .../htdocs/product/class/product.class.php, hodnota paramteru může být <i>0, ProductRef</i>
+CronCommandHelp=Spustit příkazový řádek. 
+CronCreateJob=Vytvořit novou naplánovanou úlohu
 # Info
 CronInfoPage=Informace
 # Common
@@ -84,5 +84,5 @@ CronType_method=Volání metody třídy Dolibarr
 CronType_command=Shell příkaz
 CronMenu=Cron
 CronCannotLoadClass=Nelze načíst třídu nebo objekt %s %s
-UseMenuModuleToolsToAddCronJobs=Jděte do menu &quot;Home - Moduly nářadí - Seznam úloh&quot; vidět a upravovat naplánované úlohy.
-TaskDisabled=Task disabled
+UseMenuModuleToolsToAddCronJobs=Jděte do menu "Home- Moduly nářadí- Seznam úloh" kde vidíte a upravujete naplánované úlohy.
+TaskDisabled=Task vypnut
diff --git a/htdocs/langs/cs_CZ/deliveries.lang b/htdocs/langs/cs_CZ/deliveries.lang
index 8bcb7e06d06ce7c81e36cb5b9265879ab5dbbcaf..cb558b04d05a67b839d29a3948d7f9dafab03586 100644
--- a/htdocs/langs/cs_CZ/deliveries.lang
+++ b/htdocs/langs/cs_CZ/deliveries.lang
@@ -1,12 +1,12 @@
 # Dolibarr language file - Source file is en_US - deliveries
-Delivery=Dodání
+Delivery=Dodávka
 Deliveries=Dodávky
-DeliveryCard=Dodávka karet
-DeliveryOrder=Dodávka, aby
+DeliveryCard=Karta dodávky
+DeliveryOrder=Dodací objednávka
 DeliveryOrders=Dodací objednávky
 DeliveryDate=Termín dodání
-DeliveryDateShort=Deliv. datum
-CreateDeliveryOrder=Generovat příkaz k dodání
+DeliveryDateShort=Term. dodání
+CreateDeliveryOrder=Generovat objednávku k dodání
 QtyDelivered=Množství dodáno
 SetDeliveryDate=Nastavit datem odeslání
 ValidateDeliveryReceipt=Potvrzení o doručení
@@ -19,8 +19,10 @@ DeliveryNotValidated=Dodávka není ověřena
 # merou PDF model
 NameAndSignature=Jméno a podpis:
 ToAndDate=To___________________________________ na ____ / _____ / __________
-GoodStatusDeclaration=Už zboží obdržel výše v dobrém stavu,
+GoodStatusDeclaration=Výšeuvedené zboží obdrženo v dobrém stavu,
 Deliverer=Doručovatel:
 Sender=Odesílatel
 Recipient=Příjemce
-# ErrorStockIsNotEnough=There's not enough stock
+ErrorStockIsNotEnough=Dostatečné množství není skladem
+Shippable=Doručitelné
+NonShippable=Nedoručitelné
diff --git a/htdocs/langs/cs_CZ/donations.lang b/htdocs/langs/cs_CZ/donations.lang
index 609c56121a87f33453c7589ed61f264b5141ccb0..c4bfe9ac16e3655f3bd723cc3b7f5b34b759ca11 100644
--- a/htdocs/langs/cs_CZ/donations.lang
+++ b/htdocs/langs/cs_CZ/donations.lang
@@ -4,40 +4,40 @@ Donations=Dary
 DonationRef=Darování čj.
 Donor=Dárce
 Donors=Dárci
-AddDonation=Create a donation
-NewDonation=Nový dárcovství
-DeleteADonation=Delete a donation
-ConfirmDeleteADonation=Are you sure you want to delete this donation ?
+AddDonation=Vytvořit dar
+NewDonation=Nový dar
+DeleteADonation=Odstranit dar
+ConfirmDeleteADonation=Jste si jisti, že chcete smazat tento dar?
 ShowDonation=Zobrazit dar
-DonationPromise=Dárkové slib
-PromisesNotValid=Nevaliduje sliby
-PromisesValid=Ověřené sliby
-DonationsPaid=Dary věnována
-DonationsReceived=Dary přijaté
-PublicDonation=Veřejné dar
-DonationsNumber=Darování číslo
-DonationsArea=Dary oblast
-DonationStatusPromiseNotValidated=Návrh slib
-DonationStatusPromiseValidated=Ověřené slib
-DonationStatusPaid=Dotace přijaté
+DonationPromise=Příslib dárku
+PromisesNotValid=Neověřené přísliby
+PromisesValid=Ověřené přísliby
+DonationsPaid=Zaplacené dary
+DonationsReceived=Přijaté dary
+PublicDonation=Veřejný dar
+DonationsNumber=Číslo daru
+DonationsArea=Oblast darů
+DonationStatusPromiseNotValidated=Návrh příslibu
+DonationStatusPromiseValidated=Ověření příslibu
+DonationStatusPaid=Obdržený dar
 DonationStatusPromiseNotValidatedShort=Návrh
 DonationStatusPromiseValidatedShort=Ověřené
 DonationStatusPaidShort=Přijaté
-DonationTitle=Donation receipt
-DonationDatePayment=Payment date
-ValidPromess=Ověřit slib
-DonationReceipt=Darování příjem
-BuildDonationReceipt=Build přijetí
-DonationsModels=Dokumenty modely pro darování příjmů
+DonationTitle=Příjem daru
+DonationDatePayment=Datum platby
+ValidPromess=Ověřit příslib
+DonationReceipt=Příjem daru
+BuildDonationReceipt=Příprava příjmu
+DonationsModels=Modelové dokumenty pro darování příjmů
 LastModifiedDonations=Poslední %s upravené dary
-SearchADonation=Hledat daru
-DonationRecipient=Darování příjemce
+SearchADonation=Hledat dar
+DonationRecipient=Příjemce daru
 ThankYou=Děkuji
-IConfirmDonationReception=Příjemce deklarovat příjem, jako dar, následující částky
-MinimumAmount=Minimum amount is  %s
-FreeTextOnDonations=Free text to show in footer
-FrenchOptions=Options for France
-DONATION_ART200=Show article 200 from CGI if you are concerned
-DONATION_ART238=Show article 238 from CGI if you are concerned
-DONATION_ART885=Show article 885 from CGI if you are concerned
-DonationPayment=Donation payment
+IConfirmDonationReception=Příjemce deklaruje příjem jako dar v hodnotě následující částky
+MinimumAmount=Minimální částka je %s
+FreeTextOnDonations=Volný text zobrazený v zápatí
+FrenchOptions=Možnosti pro Francii
+DONATION_ART200=Zobrazit článek 200 od CGI, pokud máte obavy
+DONATION_ART238=Zobrazit článek 238 od CGI, pokud máte obavy
+DONATION_ART885=Zobrazit článek 885 od CGI, pokud máte obavy
+DonationPayment=Platba daru
diff --git a/htdocs/langs/cs_CZ/ecm.lang b/htdocs/langs/cs_CZ/ecm.lang
index dfc4c1c11066017720b44cf8d90a3df38a9059df..21a9237c9a83d9c7f51bd40010df15ed5df2c7f9 100644
--- a/htdocs/langs/cs_CZ/ecm.lang
+++ b/htdocs/langs/cs_CZ/ecm.lang
@@ -4,17 +4,17 @@ DocsMine=Moje dokumenty
 DocsGenerated=Generované dokumenty
 DocsElements=Prvky dokumenty
 DocsThirdParties=Dokumenty třetích stran
-DocsContracts=Dokumenty smlouvy
-DocsProposals=Dokumenty návrhy
-DocsOrders=Dokumenty objednávky
-DocsInvoices=Dokumenty faktury
-ECMNbOfDocs=Nb dokumentů v adresáři
+DocsContracts=Dokumenty smluv
+DocsProposals=Dokumenty nabídek
+DocsOrders=Dokumenty objednávek
+DocsInvoices=Dokumenty faktur
+ECMNbOfDocs=Množství dokumentů v adresáři
 ECMNbOfDocsSmall=Nb doc.
 ECMSection=Adresář
-ECMSectionManual=Ruční Directory
-ECMSectionAuto=Automatické adresář
+ECMSectionManual=Manuální adresář
+ECMSectionAuto=Automatický adresář
 ECMSectionsManual=Ruční strom
-ECMSectionsAuto=Automatické strom
+ECMSectionsAuto=Automatický strom
 ECMSections=Adresáře
 ECMRoot=Kořen
 ECMNewSection=Nový adresář
@@ -27,31 +27,31 @@ ECMNbOfFilesInSubDir=Počet souborů v podadresářích
 ECMCreationUser=Tvůrce
 ECMArea=EDM oblast
 ECMAreaDesc=EDM (Electronic Document Management) plocha umožňuje uložit, sdílet a rychle vyhledávat všechny druhy dokumentů v Dolibarr.
-ECMAreaDesc2=* Automatické adresáře jsou vyplněny automaticky při přidávání dokumentů z karty prvku. <br> * Manuální adresáře lze použít k uložení dokladů, které nejsou spojené s konkrétní prvek.
+ECMAreaDesc2=* Automatické adresáře jsou vyplněny automaticky při přidávání dokumentů z karty prvku. <br> * Manuální adresáře lze použít k uložení dokladů, které nejsou spojené s konkrétním prvkem.
 ECMSectionWasRemoved=Rejstřík <b>%s</b> byl vymazán.
 ECMDocumentsSection=Dokument z adresáře
 ECMSearchByKeywords=Vyhledávání podle klíčových slov
 ECMSearchByEntity=Hledat podle objektu
 ECMSectionOfDocuments=Adresáře dokumentů
-ECMTypeManual=Manuál
+ECMTypeManual=Manuální
 ECMTypeAuto=Automatický
 ECMDocsBySocialContributions=Dokumenty související odvody na sociální zabezpečení
 ECMDocsByThirdParties=Dokumenty související se třetími stranami
 ECMDocsByProposals=Dokumenty související s návrhy
-ECMDocsByOrders=Dokumenty související s zákazníky objednávky
+ECMDocsByOrders=Dokumenty související s objednávkami zákazníků
 ECMDocsByContracts=Dokumenty související se smlouvami
-ECMDocsByInvoices=Dokumenty související s fakturami zákazníky
+ECMDocsByInvoices=Dokumenty související s fakturami zákazníků
 ECMDocsByProducts=Dokumenty související s produkty
 ECMDocsByProjects=Dokumenty související s projekty
-ECMDocsByUsers=Documents linked to users
-ECMDocsByInterventions=Documents linked to interventions
-ECMNoDirectoryYet=No vytvořil adresář
+ECMDocsByUsers=Dokumenty spojené s uživateli
+ECMDocsByInterventions=Dokumenty spojené s intervencemi
+ECMNoDirectoryYet=Nevytvořený adresář
 ShowECMSection=Zobrazit adresář
 DeleteSection=Odstraňte adresář
-ConfirmDeleteSection=Můžete potvrdit, že chcete smazat adresáře <b>%s?</b>
+ConfirmDeleteSection=Můžete skutečně potvrdit, že chcete smazat adresář <b>%s</b> ?
 ECMDirectoryForFiles=Relativní adresář pro soubory
-CannotRemoveDirectoryContainsFiles=Není možné odstranit, protože obsahuje některé soubory
+CannotRemoveDirectoryContainsFiles=Nelze odstranit, protože obsahuje některé soubory
 ECMFileManager=Správce souborů
 ECMSelectASection=Vyberte adresář na levé straně stromu ...
-DirNotSynchronizedSyncFirst=Tento adresář se zdá být vytvořena nebo změněna mimo modulu ECM. Musíte kliknout na tlačítko &quot;Obnovit&quot; první synchronizaci disku a databázi, aby se obsah tohoto adresáře.
+DirNotSynchronizedSyncFirst=Tento adresář se zdá být vytvořena nebo změněna mimo modul ECM. Musíte kliknout na tlačítko "Refresh" a napřed sesynchonizovat disk a databázi, pro korektní připojení tohoto adresáře.
 
diff --git a/htdocs/langs/cs_CZ/externalsite.lang b/htdocs/langs/cs_CZ/externalsite.lang
index 8bb9c5644a29dc20a016bcebf6cae6282d6b2a9a..473892a41db7a79217392c807df22efe86e9e468 100644
--- a/htdocs/langs/cs_CZ/externalsite.lang
+++ b/htdocs/langs/cs_CZ/externalsite.lang
@@ -1,5 +1,5 @@
 # Dolibarr language file - Source file is en_US - externalsite
-ExternalSiteSetup=Nastavení odkaz na externí webové stránky
-ExternalSiteURL=Externí URL stránek
-ExternalSiteModuleNotComplete=Modul ExternalSite nebyl správně nakonfigurován.
-ExampleMyMenuEntry=My menu entry
+ExternalSiteSetup=Nastavení odkazu na externí webové stránky
+ExternalSiteURL=URL externích stránek
+ExternalSiteModuleNotComplete=Modul Externí stránky nebyl správně nakonfigurován.
+ExampleMyMenuEntry=Moje menu vstup
diff --git a/htdocs/langs/cs_CZ/holiday.lang b/htdocs/langs/cs_CZ/holiday.lang
index 0c62056dd33e8bbef2c6376b54014666d2c12505..b62e2abbde5c7e8caf8bef420d44a99fa7eac247 100644
--- a/htdocs/langs/cs_CZ/holiday.lang
+++ b/htdocs/langs/cs_CZ/holiday.lang
@@ -1,13 +1,13 @@
 # Dolibarr language file - Source file is en_US - holiday
 HRM=HRM
-Holidays=Leaves
-CPTitreMenu=Leaves
+Holidays=Dovolená
+CPTitreMenu=Dovolená
 MenuReportMonth=Měsíční výkaz
-MenuAddCP=Make a leave request
-NotActiveModCP=You must enable the module Leaves to view this page.
-NotConfigModCP=You must configure the module Leaves to view this page. To do this, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> click here </ a>.
-NoCPforUser=You don't have any available day.
-AddCP=Make a leave request
+MenuAddCP=Požádejte o dovolenou
+NotActiveModCP=Musíte povolit modul dovolená pro zobrazení této stránky.
+NotConfigModCP=Musíte nakonfigurovat modul dovolení pro  zobrazení této stránky. Provedete zde:, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;"> klikněte zde </ a>.
+NoCPforUser=Nemáte k dispozici žádné volné dny.
+AddCP=Požádejte o dovolenou
 Employe=Zaměstnanec
 DateDebCP=Datum zahájení
 DateFinCP=Datum ukončení
@@ -16,133 +16,133 @@ DraftCP=Návrh
 ToReviewCP=Čeká na schválení
 ApprovedCP=Schválený
 CancelCP=Zrušený
-RefuseCP=Odmítl
-ValidatorCP=Approbator
-ListeCP=List of leaves
+RefuseCP=Odmínutý
+ValidatorCP=Schválil
+ListeCP=Seznam dovolených
 ReviewedByCP=Bude přezkoumána
 DescCP=Popis
-SendRequestCP=Create leave request
-DelayToRequestCP=Leave requests must be made at least <b>%s day(s)</b> before them.
-MenuConfCP=Edit balance of leaves
-UpdateAllCP=Update the leaves
-SoldeCPUser=Leaves balance is <b>%s</b> days.
-ErrorEndDateCP=Musíte vybrat koncové datum je větší než datum zahájení.
+SendRequestCP=Vytvořit požadavek na dovolenou
+DelayToRequestCP=Požadavek na dovolenou musí být zadán nejméně <b>%s den(y)</b> před termínem.
+MenuConfCP=Úprava rozvrhu dovolené
+UpdateAllCP=Aktualizace dovolené
+SoldeCPUser=Zbývající dovolená je <b>%s</b> dnů.
+ErrorEndDateCP=Musíte vybrat koncové datum větší než datum zahájení.
 ErrorSQLCreateCP=SQL chyba při tvorbě:
-ErrorIDFicheCP=An error has occurred, the leave request does not exist.
+ErrorIDFicheCP=Došlo k chybě, požadavek dovolené neexistuje.
 ReturnCP=Zpět na předchozí stránku
-ErrorUserViewCP=You are not authorized to read this leave request.
-InfosCP=Information of the leave request
-InfosWorkflowCP=Informace Workflow
-RequestByCP=Žádost
-TitreRequestCP=Leave request
-NbUseDaysCP=Number of days of vacation consumed
+ErrorUserViewCP=Nemáte oprávnění číst tuto žádost o dovolenou
+InfosCP=Informace o žádosti o dovolenou
+InfosWorkflowCP=Průběh informací
+RequestByCP=Požádané
+TitreRequestCP=Nechat žádost
+NbUseDaysCP=Počet dní vyčerpané dovolené
 EditCP=Upravit
 DeleteCP=Vymazat
 ActionValidCP=Potvrdit
 ActionRefuseCP=Odmítnout
 ActionCancelCP=Zrušit
-StatutCP=Postavení
-SendToValidationCP=Poslat na potvrzení
-TitleDeleteCP=Delete the leave request
-ConfirmDeleteCP=Confirm the deletion of this leave request?
-ErrorCantDeleteCP=Error you don't have the right to delete this leave request.
-CantCreateCP=You don't have the right to make leave requests.
-InvalidValidatorCP=You must choose an approbator to your leave request.
-CantUpdate=You cannot update this leave request.
+StatutCP=Status
+SendToValidationCP=Poslat pro potvrzení
+TitleDeleteCP=Smazat požadavek na dovolenou
+ConfirmDeleteCP=Potvrďit odstranění této žádosti o dovolenou?
+ErrorCantDeleteCP=Chyba: Nemáte oprávnění smazat tuto žádost o dovolenou.
+CantCreateCP=Nemáte právo podávat žádosti o dovolenou.
+InvalidValidatorCP=Musíte vybrat schvalujícího pro vaši žádost o dovolenou.
+CantUpdate=Nelze aktualizovat tento požadavek na dovolenou.
 NoDateDebut=Musíte vybrat počáteční datum.
 NoDateFin=Musíte vybrat datum ukončení.
-ErrorDureeCP=Your leave request does not contain working day.
-TitleValidCP=Approve the leave request
-ConfirmValidCP=Are you sure you want to approve the leave request?
+ErrorDureeCP=Vaše žádost o dovolenou neobsahuje pracovní den.
+TitleValidCP=Schválit žádost o dovolenou
+ConfirmValidCP=Jste si jisti, že chcete schválit tuto žádost o dovolenou?
 DateValidCP=Datum schválení
-TitleToValidCP=Send leave request
-ConfirmToValidCP=Are you sure you want to send the leave request?
-TitleRefuseCP=Refuse the leave request
-ConfirmRefuseCP=Are you sure you want to refuse the leave request?
+TitleToValidCP=Odeslat žádost o dovolenou
+ConfirmToValidCP=Jste si jisti, že chcete odeslat tuto žádost o dovolenou?
+TitleRefuseCP=Odmítnout žádost o dovolenou
+ConfirmRefuseCP=Jste si jisti, že chcete odmítnout tuto žádost o dovolenou?
 NoMotifRefuseCP=Musíte si vybrat důvod pro odmítnutí žádosti.
-TitleCancelCP=Cancel the leave request
-ConfirmCancelCP=Are you sure you want to cancel the leave request?
+TitleCancelCP=Zrušit požadavek na dovolenou
+ConfirmCancelCP=Jste si jisti, že chcete zrušit požadavek na dovolenou?
 DetailRefusCP=Důvod odmítnutí
 DateRefusCP=Datum odmítnutí
 DateCancelCP=Datum zrušení
-DefineEventUserCP=Přiřazení výjimečnou dovolenou pro uživatele
-addEventToUserCP=Přiřazení opustit
+DefineEventUserCP=Přiřadit výjimečnou dovolenou pro uživatele
+addEventToUserCP=Přiřadit dovolenou
 MotifCP=Důvod
 UserCP=Uživatel
-ErrorAddEventToUserCP=Došlo k chybě při přidávání výjimečnou dovolenou.
-AddEventToUserOkCP=Přidání mimořádné dovolené byla dokončena.
-MenuLogCP=View logs of leave requests
-LogCP=Log of updates of available vacation days
+ErrorAddEventToUserCP=Došlo k chybě při přidávání požadavku na výjimečnou dovolenou.
+AddEventToUserOkCP=Přidání výjimečné dovolené bylo dokončeno.
+MenuLogCP=Zobrazit logy žádostí o dovolenou
+LogCP=Log aktualizací dostupných prázdninových dnů
 ActionByCP=Účinkují
 UserUpdateCP=Pro uživatele
-PrevSoldeCP=Předchozí Balance
-NewSoldeCP=New Balance
-alreadyCPexist=A leave request has already been done on this period.
+PrevSoldeCP=Předchozí zůstatek
+NewSoldeCP=Nový zůstatek
+alreadyCPexist=Žádost o dovolenou pro toto období již byla provedena.
 UserName=Název
 Employee=Zaměstnanec
-FirstDayOfHoliday=First day of vacation
-LastDayOfHoliday=Last day of vacation
+FirstDayOfHoliday=První den dovolené
+LastDayOfHoliday=Poslední den dovolené
 HolidaysMonthlyUpdate=Měsíční aktualizace
 ManualUpdate=Ruční aktualizace
-HolidaysCancelation=Leave request cancelation
+HolidaysCancelation=Stornovat dovolenou
 
 ## Configuration du Module ##
-ConfCP=Configuration of leave request module
+ConfCP=Konfigurace modulu žádosti o dovolené
 DescOptionCP=Popis možnosti
 ValueOptionCP=Hodnota
-GroupToValidateCP=Group with the ability to approve leave requests
+GroupToValidateCP=Skupina se schopností schvalovat žádosti o dovolenou
 ConfirmConfigCP=Ověření konfigurace
-LastUpdateCP=Last automatic update of leaves allocation
+LastUpdateCP=Poslední automatická aktualizace alokace dovolených
 UpdateConfCPOK=Aktualizováno úspěšně.
 ErrorUpdateConfCP=Došlo k chybě při aktualizaci, zkuste to prosím znovu.
-AddCPforUsers=Please add the balance of leaves allocation of users by <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">clicking here</a>.
-DelayForSubmitCP=Deadline to make a leave requests
-AlertapprobatortorDelayCP=Prevent the approbator if the leave request does not match the deadline
-AlertValidatorDelayCP=Préevent the approbator if the leave request exceed delay
-AlertValidorSoldeCP=Prevent the approbator if the leave request exceed the balance
-nbUserCP=Number of users supported in the module Leaves
-nbHolidayDeductedCP=Number of leave days to be deducted per day of vacation taken
-nbHolidayEveryMonthCP=Number of leave days added every month
-Module27130Name= Management of leave requests
-Module27130Desc= Management of leave requests
-TitleOptionMainCP=Main settings of leave request
-TitleOptionEventCP=Settings of leave requets for events
+AddCPforUsers=Prosím, přidejte rovnováhu dovolené alokace uživatelům <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">klikněte zde</a>.
+DelayForSubmitCP=Uzávěrka žádosti o dovolenou
+AlertapprobatortorDelayCP=Zabraňte žádosti pokud žádost o dovolenou neodpovídá lhůtě.
+AlertValidatorDelayCP=Zabránit schválení pokud žádost volno přesáhla zpoždění
+AlertValidorSoldeCP=Zabraňte schválení pokud žádost o dovolenou překročila zůstatek
+nbUserCP=Počet uživatelů podporovaných  v modulu dovolené
+nbHolidayDeductedCP=Počet dní dovolené, které mají být za den dovolené přijatých odečteny
+nbHolidayEveryMonthCP=Počet dní dovolené přidávaných každý měsíc
+Module27130Name= Správa žádostí o dovolenou
+Module27130Desc= Správa požadavků dovolené
+TitleOptionMainCP=Hlavní nastavení požadavku na dovolenou
+TitleOptionEventCP=Nastavení dovolené týkající se událostí
 ValidEventCP=Potvrdit
 UpdateEventCP=Aktualizace akce
 CreateEventCP=Vytvořit
 NameEventCP=Název akce
-OkCreateEventCP=Přidání akce proběhla dobře.
+OkCreateEventCP=Přidání akce proběhlo zcela hladce a dobře.
 ErrorCreateEventCP=Chyba při vytváření události.
 UpdateEventOkCP=Aktualizace akce dopadla dobře.
 ErrorUpdateEventCP=Chyba při aktualizaci události.
 DeleteEventCP=Odstranit událost
 DeleteEventOkCP=Událost byla odstraněna.
 ErrorDeleteEventCP=Chyba při mazání události.
-TitleDeleteEventCP=Odstranění výjimečnou dovolenou
-TitleCreateEventCP=Vytvořte si výjimečnou dovolenou
+TitleDeleteEventCP=Odstranění výjimečné dovolené
+TitleCreateEventCP=Vytvořte výjimečnou dovolenou
 TitleUpdateEventCP=Upravit nebo smazat výjimečnou dovolenou
 DeleteEventOptionCP=Vymazat
 UpdateEventOptionCP=Aktualizovat
-ErrorMailNotSend=Došlo k chybě při odesílání e-mail:
-NoCPforMonth=Ne opustit tento měsíc.
+ErrorMailNotSend=Došlo k chybě při odesílání na e-mail:
+NoCPforMonth=Nelze opustit tento měsíc.
 nbJours=Počet dní
-TitleAdminCP=Configuration of Leaves
+TitleAdminCP=Konfigurace dovolené
 #Messages
 Hello=Ahoj
-HolidaysToValidate=Validate leave requests
-HolidaysToValidateBody=Below is a leave request to validate
-HolidaysToValidateDelay=This leave request will take place within a period of less than %s days.
-HolidaysToValidateAlertSolde=The user who made this leave reques do not have enough available days.
-HolidaysValidated=Validated leave requests
-HolidaysValidatedBody=Your leave request for %s to %s has been validated.
-HolidaysRefused=Request denied
-HolidaysRefusedBody=Your leave request for %s to %s has been denied for the following reason :
-HolidaysCanceled=Canceled leaved request
-HolidaysCanceledBody=Your leave request for %s to %s has been canceled.
-Permission20000=Read you own leave requests
-Permission20001=Create/modify your leave requests
-Permission20002=Create/modify leave requests for everybody
-Permission20003=Delete leave requests
-Permission20004=Setup users available vacation days
-Permission20005=Review log of modified leave requests
-Permission20006=Read leaves monthly report
+HolidaysToValidate=Ověření žádosti o dovolenou
+HolidaysToValidateBody=Níže je požadavek na ověření dovolené
+HolidaysToValidateDelay=Tento požadavek dovolené proběhne ve lhůtě kratší než %s dní.
+HolidaysToValidateAlertSolde=Uživatel, který vytvořil tento požadavek na dovolenou nemá k dispozici dostatek dní.
+HolidaysValidated=Ověřené žádosti dovolené
+HolidaysValidatedBody=Vaše žádost o dovolenou %s do %s byla ověřena.
+HolidaysRefused=Požadavek zamítnut
+HolidaysRefusedBody=Vaše žádost o dovolenou pro %s do %s byla zamítnuta z těchto důvodů:
+HolidaysCanceled=Zrušené požadavky na dovolenou
+HolidaysCanceledBody=Vaše žádost o dovolenou pro %s na %s byla zrušena.
+Permission20000=Přečtěte si vlastní žádosti o dovolenou
+Permission20001=Vytvořit/upravit vaše požadavky na dovolenou
+Permission20002=Vytvořit/upravit žádosti o dovolenou pro každého
+Permission20003=Smazat žádosti o dovolenou
+Permission20004=Uživatelské nastavení dostupné pro dovolenouy
+Permission20005=Přezkum logu žádostí modifikovaných dovolených
+Permission20006=Čtení zpráv měsíčních dovolených
diff --git a/htdocs/langs/cs_CZ/install.lang b/htdocs/langs/cs_CZ/install.lang
index 7967e44f0b237ebc5ecd3aa37084f62ed6a8933b..2765b1810d310ae626a7a27c202dfee93bf6804c 100644
--- a/htdocs/langs/cs_CZ/install.lang
+++ b/htdocs/langs/cs_CZ/install.lang
@@ -155,8 +155,8 @@ MigrationFinished=Migrace dokončena
 LastStepDesc=<strong>Poslední krok:</strong> Definujte zde přihlašovací jméno a heslo které budete používat pro připojení k softwaru. Toto heslo neztraťte - jedná se o jediný administrátorský účet.
 ActivateModule=Aktivace modulu %s
 ShowEditTechnicalParameters=Klikněte zde pro zobrazení / editaci pokročilých parametrů (pro experty)
-WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process...
-ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s)
+WarningUpgrade=Výstraha:\n\nSpustili jste napřed zálohování databáze?\n\nToto je důrazně doporučováno: Například, kvůli některým chybám v  databázových systémech (například mysql verze 5.5.40), může dojít ke ztrátě některých dat nebo tabulek v průběhu tohoto procesu, takže je důrazně doporučováno mít kompletní výpis a kompletní zálohu databáze před zahájením migrace.\n\n\nPokud jste tomu dobře porozuměli, klepnutím na tlačítko OK spusťte proces migrace...
+ErrorDatabaseVersionForbiddenForMigration=Vaše verze databáze  je %s. Ta bohužel obsahuje kritickou chybu mající zásadní vliv na ztrátu dat, pokud provedete změnu struktury ve vaší databázi, stejně jako je to vyžadováno v procesu migrace. Z tohoto důvodu nebude migrace povolena, dokud neprovedete upgrade databáze na vyšší fixní verzi (seznam známých chybných verzí: %s)
 
 #########
 # upgrade
@@ -208,7 +208,7 @@ MigrationProjectTaskTime=Čas aktualizace v sekundách
 MigrationActioncommElement=Aktualizovat údaje na činnostech
 MigrationPaymentMode=Migrace dat platebního režimu
 MigrationCategorieAssociation=Migrace kategorií
-MigrationEvents=Migration of events to add event owner into assignement table
+MigrationEvents=Migrace událostí přidá vlastníka události do přiřazené tabulky
 
-ShowNotAvailableOptions=Show not available options
-HideNotAvailableOptions=Hide not available options
+ShowNotAvailableOptions=Ukázat nedostupné možnosti
+HideNotAvailableOptions=Skrýt nedostupné možnosti
diff --git a/htdocs/langs/cs_CZ/interventions.lang b/htdocs/langs/cs_CZ/interventions.lang
index a37f812b23dc3c14e9f89ae771f72aa829cfb044..4df3fc656234700679e3dd47f200164dbc7d79e6 100644
--- a/htdocs/langs/cs_CZ/interventions.lang
+++ b/htdocs/langs/cs_CZ/interventions.lang
@@ -1,53 +1,53 @@
 # Dolibarr language file - Source file is en_US - interventions
 Intervention=Intervence
 Interventions=Intervence
-InterventionCard=Intervence karty
-NewIntervention=Nový zásah
-AddIntervention=Create intervention
-ListOfInterventions=Seznam zásahů
-EditIntervention=Upravit zásah
+InterventionCard=Karta intervence
+NewIntervention=Nová intervence
+AddIntervention=Vytvořit intervenci
+ListOfInterventions=Seznam intervencí
+EditIntervention=Upravit intervenci
 ActionsOnFicheInter=Akce zaměřené na intervenci
-LastInterventions=Poslední %s zásahy
-AllInterventions=Všechny zásahy
+LastInterventions=Poslední %s intervence
+AllInterventions=Všechny intervence
 CreateDraftIntervention=Vytvořte návrh
 CustomerDoesNotHavePrefix=Zákazník nemá předponu
-InterventionContact=Intervence kontakt
-DeleteIntervention=Odstranit zásah
-ValidateIntervention=Ověřit zásah
-ModifyIntervention=Upravit zásah
+InterventionContact=Kontakt intervence
+DeleteIntervention=Odstranit intervenci
+ValidateIntervention=Ověřit intervenci
+ModifyIntervention=Upravit intervenci
 DeleteInterventionLine=Odstranit intervenční linku
-ConfirmDeleteIntervention=Jste si jisti, že chcete smazat tento zásah?
-ConfirmValidateIntervention=Jste si jisti, že chcete ověřit tento zásah pod názvem <b>%s?</b>
-ConfirmModifyIntervention=Jste si jisti, že chcete změnit tento zásah?
+ConfirmDeleteIntervention=Jste si jisti, že chcete smazat tuto intervenci?
+ConfirmValidateIntervention=Jste si jisti, že chcete ověřit tuto intervenci pod názvem <b>%s?</b>
+ConfirmModifyIntervention=Jste si jisti, že chcete změnit tuto intervenci?
 ConfirmDeleteInterventionLine=Jste si jisti, že chcete smazat tento řádek intervence?
 NameAndSignatureOfInternalContact=Jméno a podpis intervence:
 NameAndSignatureOfExternalContact=Jméno a podpis objednavatele:
-DocumentModelStandard=Standardní dokument model pro zásahy
-InterventionCardsAndInterventionLines=Intervence a linky intervencí
-InterventionClassifyBilled=Classify "Billed"
-InterventionClassifyUnBilled=Classify "Unbilled"
+DocumentModelStandard=Standardní model dokumentů pro intervence
+InterventionCardsAndInterventionLines=Intervence a řádky intervencí
+InterventionClassifyBilled=Klasifikovat jako "účtované"
+InterventionClassifyUnBilled=Klasifikovat jako "Neúčtované"
 StatusInterInvoiced=Účtováno
-RelatedInterventions=Související zákroky
-ShowIntervention=Zobrazit zásah
-SendInterventionRef=Submission of intervention %s
-SendInterventionByMail=Send intervention by Email
-InterventionCreatedInDolibarr=Intervention %s created
-InterventionValidatedInDolibarr=Intervention %s validated
-InterventionModifiedInDolibarr=Intervention %s modified
-InterventionClassifiedBilledInDolibarr=Intervention %s set as billed
-InterventionClassifiedUnbilledInDolibarr=Intervention %s set as unbilled
-InterventionSentByEMail=Intervention %s sent by EMail
-InterventionDeletedInDolibarr=Intervention %s deleted
-SearchAnIntervention=Search an intervention
+RelatedInterventions=Související intervence
+ShowIntervention=Zobrazit intervenci
+SendInterventionRef=Předložení intervenčního %s
+SendInterventionByMail=Poslat intervenci e-mailem
+InterventionCreatedInDolibarr=Intervence %s vytvořena
+InterventionValidatedInDolibarr=Intervence %s ověřena
+InterventionModifiedInDolibarr=Intervence %s upravena
+InterventionClassifiedBilledInDolibarr=Intervenční %s nastavena jako zaúčtovaná
+InterventionClassifiedUnbilledInDolibarr=Intervence %s nastavená jako nezaúčtovaná
+InterventionSentByEMail=Intervence %s odeslána e-mailem
+InterventionDeletedInDolibarr=Intervence %s odstraněna
+SearchAnIntervention=Hledat intervenci
 ##### Types de contacts #####
-TypeContact_fichinter_internal_INTERREPFOLL=Zástupce následující-up zásah
+TypeContact_fichinter_internal_INTERREPFOLL=Representativní následující intervence
 TypeContact_fichinter_internal_INTERVENING=Zásah
 TypeContact_fichinter_external_BILLING=Fakturační kontakt se zákazníkem
 TypeContact_fichinter_external_CUSTOMER=V návaznosti kontakt se zákazníkem
 # Modele numérotation
-ArcticNumRefModelDesc1=Generic číslo modelu
+ArcticNumRefModelDesc1=Generické číslo modelu
 ArcticNumRefModelError=Nepodařilo se aktivovat
-PacificNumRefModelDesc1=Zpět numero ve formátu %syymm-nnnn, kde yy je rok, MM je měsíc a nnnn je sekvence bez přerušení a bez vrátí na 0.
-PacificNumRefModelError=Zásah karta začíná s $ syymm již existuje a není kompatibilní s tímto modelem sekvence. Vyjměte ji nebo přejmenujte jej na aktivaci tohoto modulu.
-PrintProductsOnFichinter=Vytisknout produktů na intervenční karty
-PrintProductsOnFichinterDetails=interventions generated from orders
+PacificNumRefModelDesc1=Návrat čísla ve formátu %syymm-nnnn, kde yy je rok, mm je měsíc a nnnn je sekvence bez přerušení a bez návratu na 0.
+PacificNumRefModelError=Zásahová karta začíná s $ syymm již existuje a není kompatibilní s tímto modelem sekvence. Odstraňte ji nebo přejmenujte pro aktivaci tohoto modulu.
+PrintProductsOnFichinter=Výpis produktů na intervenční kartě
+PrintProductsOnFichinterDetails=intervence generované z objednávek
diff --git a/htdocs/langs/cs_CZ/languages.lang b/htdocs/langs/cs_CZ/languages.lang
index 4a1599697605f5eb03022e6cecb511fa9bece1db..d8ab2115f4a626f1f6789c3f043c021ed4346328 100644
--- a/htdocs/langs/cs_CZ/languages.lang
+++ b/htdocs/langs/cs_CZ/languages.lang
@@ -8,12 +8,12 @@ Language_ca_ES=Katalánština
 Language_cs_CZ=Čeština
 Language_da_DA=Dánština
 Language_da_DK=Dánština
-Language_de_DE=Němec
+Language_de_DE=Němčina
 Language_de_AT=Němčina (Rakousko)
-Language_de_CH=German (Switzerland)
-Language_el_GR=Řek
+Language_de_CH=Německy (Švýcarsko)
+Language_el_GR=Řecky
 Language_en_AU=Angličtina (Austrálie)
-Language_en_CA=English (Canada)
+Language_en_CA=Angličtina (Kanada)
 Language_en_GB=Angličtina (Velká Británie)
 Language_en_IN=Angličtina (Indie)
 Language_en_NZ=Angličtina (Nový Zéland)
@@ -21,9 +21,9 @@ Language_en_SA=Angličtina (Saúdská Arábie)
 Language_en_US=Angličtina (Spojené státy)
 Language_en_ZA=Angličtina (Jižní Afrika)
 Language_es_ES=Španělština
-Language_es_DO=Spanish (Dominican Republic)
+Language_es_DO=Španělština (Dominikánská republika)
 Language_es_AR=Španělština (Argentina)
-Language_es_CL=Spanish (Chile)
+Language_es_CL=Španělština (Chile)
 Language_es_HN=Španělština (Honduras)
 Language_es_MX=Španělština (Mexiko)
 Language_es_PY=Španělština (Paraguay)
@@ -31,28 +31,28 @@ Language_es_PE=Španělština (Peru)
 Language_es_PR=Španělština (Puerto Rico)
 Language_et_EE=Estonština
 Language_eu_ES=Basque
-Language_fa_IR=Peršan
-Language_fi_FI=Ploutve
+Language_fa_IR=Perština
+Language_fi_FI=Finština
 Language_fr_BE=Francouzština (Belgie)
 Language_fr_CA=Francouzština (Kanada)
 Language_fr_CH=Francouzština (Švýcarsko)
-Language_fr_FR=Francouzský
+Language_fr_FR=Francouzsky
 Language_fr_NC=Francouzština (Nová Kaledonie)
 Language_he_IL=Hebrejština
 Language_hr_HR=Chorvatský
 Language_hu_HU=Maďarština
-Language_id_ID=Indonesian
-Language_is_IS=Islandský
+Language_id_ID=Indonésie
+Language_is_IS=Islandština
 Language_it_IT=Italština
-Language_ja_JP=Japonec
+Language_ja_JP=Japonsky
 Language_ko_KR=Korejština
 Language_lt_LT=Litevský
 Language_lv_LV=Lotyština
 Language_mk_MK=Makedonský
 Language_nb_NO=Norština (Bokmål)
-Language_nl_BE=Nizozemci (Belgie)
-Language_nl_NL=Dutch (Nizozemsko)
-Language_pl_PL=Polský
+Language_nl_BE=Nizozemí (Belgie)
+Language_nl_NL=Nizozemí (Holandsko)
+Language_pl_PL=Polsky
 Language_pt_BR=Portugalština (Brazílie)
 Language_pt_PT=Portugalština
 Language_ro_RO=Rumunština
@@ -60,13 +60,13 @@ Language_ru_RU=Ruština
 Language_ru_UA=Ruština (Ukrajina)
 Language_tr_TR=Turečtina
 Language_sl_SI=Slovinština
-Language_sv_SV=Švédský
+Language_sv_SV=Švédsky
 Language_sv_SE=Švédský
-Language_sq_AL=Albanian
-Language_sk_SK=Slovenský
-Language_th_TH=Thai
-Language_uk_UA=Ukrajinec
-Language_uz_UZ=Uzbek
-Language_vi_VN=Vietnamec
-Language_zh_CN=Číňan
+Language_sq_AL=Albánština
+Language_sk_SK=Slovenština
+Language_th_TH=Thajsko
+Language_uk_UA=Ukrajina
+Language_uz_UZ=Uzbecký
+Language_vi_VN=Vietnamština
+Language_zh_CN=Čínština
 Language_zh_TW=Čínština (tradiční)
diff --git a/htdocs/langs/cs_CZ/link.lang b/htdocs/langs/cs_CZ/link.lang
index 8b1efb75ef372daf24c660017c22d0cda43189b8..c4ff863c182c4291bd7c3a46a8015a96a317264f 100644
--- a/htdocs/langs/cs_CZ/link.lang
+++ b/htdocs/langs/cs_CZ/link.lang
@@ -1,8 +1,8 @@
-LinkANewFile=Link a new file/document
-LinkedFiles=Linked files and documents
-NoLinkFound=No registered links
-LinkComplete=The file has been linked successfully
-ErrorFileNotLinked=The file could not be linked
-LinkRemoved=The link %s has been removed
-ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
-ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
+LinkANewFile=Odkaz na nový soubor/dokument
+LinkedFiles=Odkaz na soubory a dokumenty
+NoLinkFound=Neregistrovaný odkaz
+LinkComplete=Soubor byl úspěšně propojen
+ErrorFileNotLinked=Soubor nemohl být propojen
+LinkRemoved=Odkaz %s byl odstraněn
+ErrorFailedToDeleteLink= Nepodařilo se odstranit odkaz '<b>%s</b>'
+ErrorFailedToUpdateLink= Nepodařilo se aktualizovat odkaz '<b>%s</b>'
diff --git a/htdocs/langs/cs_CZ/mails.lang b/htdocs/langs/cs_CZ/mails.lang
index 43b666519499af5e85989d9ef7699caff9b772fd..faae153984e21f2d5ec84288f63e0ec18c634c5a 100644
--- a/htdocs/langs/cs_CZ/mails.lang
+++ b/htdocs/langs/cs_CZ/mails.lang
@@ -1,10 +1,10 @@
 # Dolibarr language file - Source file is en_US - mails
-Mailing=E-mailem
-EMailing=E-mailem
-Mailings=EMailings
-EMailings=EMailings
-AllEMailings=Všechny eMailings
-MailCard=E-mailem kartu
+Mailing=Mail
+EMailing=Mail
+Mailings=Maily
+EMailings=Maily
+AllEMailings=Všechny e-maily
+MailCard=Karta e-mailové komunikace
 MailTargets=Cíle
 MailRecipients=Příjemci
 MailRecipient=Příjemce
@@ -12,132 +12,132 @@ MailTitle=Popis
 MailFrom=Odesílatel
 MailErrorsTo=Chyby
 MailReply=Odpovědět
-MailTo=Přijímač (s)
+MailTo=Příjemce(i)
 MailCC=Kopírovat do
-MailCCC=Cached kopii
-MailTopic=EMail téma
+MailCCC=Cache kopie
+MailTopic=Předmět
 MailText=Zpráva
 MailFile=Přiložené soubory
-MailMessage=Těle e-mailu
-ShowEMailing=Zobrazit e-mailem
-ListOfEMailings=Seznam emailings
-NewMailing=Nové posílání e-mailů
-EditMailing=Upravit e-mailem
-ResetMailing=Znovu e-mailem
-DeleteMailing=Odstranění e-mailem
-DeleteAMailing=Odstranění e-mailem
-PreviewMailing=Náhled posílání e-mailů
-PrepareMailing=Připravte e-mailem
-CreateMailing=Vytvoření e-mailem
-MailingDesc=Tato stránka vám umožňuje posílat emailings ke skupině lidí.
-MailingResult=Odesílání e-mailů výsledek
-TestMailing=Zkušební e-mail
+MailMessage=Tělo e-mailu
+ShowEMailing=Zobrazit mail
+ListOfEMailings=Seznam zpráv
+NewMailing=Nové odeslání
+EditMailing=Upravit mail
+ResetMailing=Odpovědět
+DeleteMailing=Odstranit mail
+DeleteAMailing=Odstranit všechny maily
+PreviewMailing=Náhled zprávy
+PrepareMailing=Připravit mail
+CreateMailing=Vytvořit mail
+MailingDesc=Tato stránka vám umožňuje posílat mail ke skupině lidí.
+MailingResult=Výsledek odeslání mailů
+TestMailing=Zkušební mail
 ValidMailing=Platné posílání e-mailů
-ApproveMailing=Schválit e-mailem
+ApproveMailing=Schválit mail
 MailingStatusDraft=Návrh
 MailingStatusValidated=Ověřené
 MailingStatusApproved=Schválený
 MailingStatusSent=Odesláno
-MailingStatusSentPartialy=Odeslané částečně
-MailingStatusSentCompletely=Odeslané zcela
+MailingStatusSentPartialy=Odesláno částečně
+MailingStatusSentCompletely=Odesláno komplet
 MailingStatusError=Chyba
-MailingStatusNotSent=Neposlal
+MailingStatusNotSent=Neodesláno
 MailSuccessfulySent=E-mail úspěšně odeslán (od %s na %s)
-MailingSuccessfullyValidated=E-mailem úspěšně ověřena
+MailingSuccessfullyValidated=E-mail úspěšně ověřen
 MailUnsubcribe=Odhlásit
 Unsuscribe=Odhlásit
-MailingStatusNotContact=Nedotýkejte se už
-ErrorMailRecipientIsEmpty=Příjemce e-mailu je prázdný
-WarningNoEMailsAdded=Žádné nové Email přidat do seznamu příjemce.
-ConfirmValidMailing=Jste si jisti, že chcete ověřit tuto e-mailem?
-ConfirmResetMailing=Pozor, u reinitializing e-mailem <b>%s,</b> umožníte, aby se hmotnost odeslání tohoto e-mailu jindy. Jste si jisti, že to je to, co chcete dělat?
+MailingStatusNotContact=Nekontaktujte mě už
+ErrorMailRecipientIsEmpty=Příjemce e-mailu chybí
+WarningNoEMailsAdded=Žádné nové maily nebyly přidány do seznamu příjemců.
+ConfirmValidMailing=Jste si jisti, že chcete ověřit tento e-mail?
+ConfirmResetMailing=Pozor, u opětovné inicializace mailingu <b>%s,</b> umožníte hromadné odeslání tohoto e-mailu v jinou dobu. Jste si jisti, že to je to, co chcete dělat?
 ConfirmDeleteMailing=Jste si jisti, že chcete smazat tento emailling?
 NbOfRecipients=Počet příjemců
 NbOfUniqueEMails=Nb unikátních e-mailů
 NbOfEMails=Nb e-mailů
 TotalNbOfDistinctRecipients=Počet různých příjemců
-NoTargetYet=Žádné příjemci Dosud nebyly definovány (Jdi na záložku &quot;příjemce&quot;)
+NoTargetYet=Žádní příjemci dosud nebyli definováni (Jděte na záložku  'Příjemci')
 AddRecipients=Přidání příjemců
-RemoveRecipient=Odstranit příjemce
-CommonSubstitutions=Časté střídání
-YouCanAddYourOwnPredefindedListHere=Chcete-li vytvořit e-mailovou volič modulu, viz htdocs / core / modules / korespondence / README.
-EMailTestSubstitutionReplacedByGenericValues=Při použití testovacího režimu, jsou substituce proměnné nahrazeny obecných hodnot
+RemoveRecipient=Odebrat příjemce
+CommonSubstitutions=Časté přílohy
+YouCanAddYourOwnPredefindedListHere=Chcete-li vytvořit modul výběru e-mailů, prohlédněte si dokumentaci v htdocs/core/modules/mailings/README.
+EMailTestSubstitutionReplacedByGenericValues=Při použití testovacího režimu  jsou substituce proměnných nahrazeny obecnými hodnotami
 MailingAddFile=Připojte tento obrázek
 NoAttachedFiles=Žádné přiložené soubory
 BadEMail=Špatná hodnota pro e-mail
-CloneEMailing=Klonování e-mailem
-ConfirmCloneEMailing=Jste si jisti, že chcete kopírovat tuto e-mailem?
-CloneContent=Clone zprávu
-CloneReceivers=Cloner příjemci
+CloneEMailing=Kopírování mailů
+ConfirmCloneEMailing=Jste si jisti, že chcete kopírovat tento mailing?
+CloneContent=Kopírovat zprávu
+CloneReceivers=Kopírovat příjemce
 DateLastSend=Datum posledního odeslání
 DateSending=Datum odeslání
-SentTo=Odeslané <b>%s</b>
+SentTo=Odesláno <b>%s</b>
 MailingStatusRead=Číst
-CheckRead=Přečtení
-YourMailUnsubcribeOK=Napsat <b>%s</b> správně unsubcribe z mailing listu
-MailtoEMail=Hyper odkaz na e-mail
-ActivateCheckRead=Nechá se použít &quot;&quot; Unsubcribe odkaz
-ActivateCheckReadKey=Tlačítko slouží pro šifrování URL využití pro &quot;přečtení&quot; a &quot;Unsubcribe&quot; funkce
+CheckRead=Přečteno příjemcem
+YourMailUnsubcribeOK=Mailová zpráva <b>%s</b> byla správně odstraněna z mailing listu
+MailtoEMail=Odkaz na e-mail
+ActivateCheckRead= Můžete použít odkaz "Odhlásit"
+ActivateCheckReadKey=Tlačítko slouží pro šifrování URL pro využití funkce "Potvrzení o přečtení" a "Odhlášení"
 EMailSentToNRecipients=Email byl odeslán na %s příjemcům.
-XTargetsAdded=<b>%s</b> recipients added into target list
-EachInvoiceWillBeAttachedToEmail=A document using default invoice document template will be created and attached to each email.
-MailTopicSendRemindUnpaidInvoices=Reminder of invoice %s (%s)
-SendRemind=Send reminder by EMails
-RemindSent=%s reminder(s) sent
-AllRecipientSelectedForRemind=All thirdparties selected and if an email is set (note that one mail per invoice will be sent)
-NoRemindSent=No EMail reminder sent
-ResultOfMassSending=Result of mass EMail reminders sending
+XTargetsAdded=<b>%s</b> příjemců přidáno do seznamu cílů
+EachInvoiceWillBeAttachedToEmail=Dokument s použitím šablony výchozí faktury dokumentu bude vytvořen a připojen k každému mailu.
+MailTopicSendRemindUnpaidInvoices=Upomínka faktury %s (%s)
+SendRemind=Zaslání upomínky na maily
+RemindSent=%s upomínka(y) odesláno
+AllRecipientSelectedForRemind=Všechny třetí strany vybrány pokud je nastaven e-mail (všimněte si, že pouze jeden mail pro fakturu bude odeslán)
+NoRemindSent=Žádná upomínka nebyla e.mailem odeslána
+ResultOfMassSending=Výsledek hromadného rozeslání upomínek mailem
 
 # Libelle des modules de liste de destinataires mailing
-MailingModuleDescContactCompanies=Kontakty / adresy všech třetích stran (zákazník, vyhlídka, dodavatel, ...)
+MailingModuleDescContactCompanies=Kontakty/adresy všech třetích stran (zákazník, cíl, dodavatel, ...)
 MailingModuleDescDolibarrUsers=Dolibarr uživatelé
-MailingModuleDescFundationMembers=Členy Nadace s e-maily
+MailingModuleDescFundationMembers=Členové nadace s e-maily
 MailingModuleDescEmailsFromFile=E-maily z textového souboru (e-mail, příjmení, křestní jméno, ostatní)
 MailingModuleDescEmailsFromUser=E-maily z uživatelského vstupu (e-mail, příjmení, křestní jméno, ostatní)
 MailingModuleDescContactsCategories=Třetí strany (podle kategorie)
-MailingModuleDescDolibarrContractsLinesExpired=Třetí strany s prošlým zadávacích linky
-MailingModuleDescContactsByCompanyCategory=Kontakty / adresy třetích stran (třetími stranami kategorie)
-MailingModuleDescContactsByCategory=Kontakty / adresy třetích stran podle kategorie
-MailingModuleDescMembersCategories=Členy Nadace (podle kategorií)
-MailingModuleDescContactsByFunction=Kontakty / adresy třetím stranám (podle pozice / funkce)
-LineInFile=Linka %s v souboru
+MailingModuleDescDolibarrContractsLinesExpired=Třetí strany s prošlým řádky kontraktu
+MailingModuleDescContactsByCompanyCategory=Kontakty/adresy třetích stran (pro kategorie Třetí strany)
+MailingModuleDescContactsByCategory=Kontakty/adresy třetích stran podle kategorie
+MailingModuleDescMembersCategories=Členové nadace (podle kategorií)
+MailingModuleDescContactsByFunction=Kontakty/adresy třetích stran (podle pozice/funkce)
+LineInFile=Řádek  %s v souboru
 RecipientSelectionModules=Definované požadavky na výběr příjemce
-MailSelectedRecipients=Vybrané příjemci
+MailSelectedRecipients=Vybraní příjemci
 MailingArea=EMailings oblast
-LastMailings=Poslední %s emailings
-TargetsStatistics=Cíle statistiky
-NbOfCompaniesContacts=Unikátní kontakty / adresy
-MailNoChangePossible=Příjemci pro validované rozesílání nelze změnit
+LastMailings=Poslední %s zprávy
+TargetsStatistics=Cílové statistiky
+NbOfCompaniesContacts=Unikátní kontakty/adresy
+MailNoChangePossible=Příjemce pro validované rozesílání nelze změnit
 SearchAMailing=Hledat mailing
-SendMailing=Poslat e-mailem
+SendMailing=Poslat zprávy
 SendMail=Odeslat e-mail
-SentBy=Odesílatel:
-MailingNeedCommand=Z bezpečnostních důvodů, odesílání e-mailem, je lepší, když provádí z příkazového řádku. Máte-li jeden, požádejte správce serveru spustit následující příkaz pro odeslání e-mailem všem příjemcům:
-MailingNeedCommand2=Však můžete zaslat on-line přidáním parametru MAILING_LIMIT_SENDBYWEB s hodnotou max počet e-mailů, které chcete poslat zasedání. K tomu, přejděte na doma - Nastavení - Ostatní.
-ConfirmSendingEmailing=Pokud nemůžete nebo raději posílat je s www prohlížeče, prosím, potvrzujete, že jste jisti, že chcete poslat e-mailem teď z vašeho prohlížeče?
-LimitSendingEmailing=Note: Sending of emailings from web interface is done in several times for security and timeout reasons, <b>%s</b> recipients at a time for each sending session.
+SentBy=Odeslal
+MailingNeedCommand=Z bezpečnostních důvodů je lepší provádět odesílání mailů z příkazového řádku. Nemáte li k němu přístup, požádejte správce serveru spuštění následujícího příkazu pro odeslání e-mailu všem příjemcům:
+MailingNeedCommand2=Můžete odeslat všem on-line přidáním parametru MAILING_LIMIT_SENDBYWEB s hodnotou max počet e-mailů, které chcete poslat v této dávce. K aktivaci přejděte na Domů - Nastavení - Ostatní.
+ConfirmSendingEmailing=Pokud nemůžete preferovat odesílání přes váš browser prosím, potvrzujete, že jste jisti, že chcete poslat e-mailem teď z vašeho prohlížeče?
+LimitSendingEmailing=Poznámka: Odeslání zpráv z webového rozhraní se provádí v několika časech z důvodů bezpečnostního a časového limitu max.<b>%s</b> příjemcům najednou pro každou odesílání relaci.
 TargetsReset=Vymazat seznam
 ToClearAllRecipientsClickHere=Klikněte zde pro vymazání seznamu příjemců tohoto rozesílání
 ToAddRecipientsChooseHere=Přidejte příjemce výběrem ze seznamu
-NbOfEMailingsReceived=Hromadné emailings obdržel
-NbOfEMailingsSend=Mass emailings sent
+NbOfEMailingsReceived=Hromadné zprávy obdržel
+NbOfEMailingsSend=Hromadný mail odeslán
 IdRecord=ID záznamu
 DeliveryReceipt=Potvrzení o doručení
-YouCanUseCommaSeparatorForSeveralRecipients=Můžete použít <b>čárkový</b> oddělovač zadat více příjemců.
-TagCheckMail=Sledování zásilek otevření
-TagUnsubscribe=Odhlásit odkaz
-TagSignature=Podpis zasílání uživatele
+YouCanUseCommaSeparatorForSeveralRecipients=Můžete použít <b>čárkový</b> oddělovač pro zadání více příjemců.
+TagCheckMail=Sledování mailů aktivováno
+TagUnsubscribe=Link pro odhlášení 
+TagSignature=Podpis zasílání uživateli
 TagMailtoEmail=E-mail příjemce
 # Module Notifications
 Notifications=Upozornění
-NoNotificationsWillBeSent=Žádné oznámení e-mailem jsou plánovány pro tuto událost a společnost
-ANotificationsWillBeSent=1 bude zaslán e-mailem
+NoNotificationsWillBeSent=Nejsou plánovány žádná e-mailová oznámení pro tuto událost nebo společnost
+ANotificationsWillBeSent=1 notifikace bude zaslána e-mailem
 SomeNotificationsWillBeSent=%s oznámení bude zasláno e-mailem
-AddNewNotification=Activate a new email notification target
-ListOfActiveNotifications=List all active email notification targets
-ListOfNotificationsDone=Vypsat všechny e-maily odesílané oznámení
-MailSendSetupIs=Configuration of email sending has been setup to '%s'. This mode can't be used to send mass emailing.
-MailSendSetupIs2=You must first go, with an admin account, into menu %sHome - Setup - EMails%s to change parameter <strong>'%s'</strong> to use mode '%s'. With this mode, you can enter setup of the SMTP server provided by your Internet Service Provider and use Mass emailing feature.
-MailSendSetupIs3=If you have any questions on how to setup your SMTP server, you can ask to %s.
-YouCanAlsoUseSupervisorKeyword=You can also add the keyword <strong>__SUPERVISOREMAIL__</strong> to have email being sent to the supervisor of user (works only if an email is defined for this supervisor)
-NbOfTargetedContacts=Current number of targeted contact emails
+AddNewNotification=Aktivace cíle pro  nové e-mailové upozornění
+ListOfActiveNotifications=Seznam všech aktivních cílů pro e-mailové oznámení
+ListOfNotificationsDone=Vypsat všechny odeslané e.mailové oznámení
+MailSendSetupIs=Konfigurace odesílání e-maiů byla nastavena tak, aby '%s'. Tento režim nelze použít k odesílání hromadných e-mailů.
+MailSendSetupIs2=Nejprve je nutné jít s admin účtem, do nabídky%sHome - Nastavení - e-maily%s pro změnu parametru <strong>"%s"</strong> do režimu použít "%s". V tomto režimu, můžete zadat nastavení serveru SMTP vašeho  poskytovatele služeb internetu a používat hromadnou e-mailovou funkci. 
+MailSendSetupIs3=Pokud máte nějaké otázky o tom, jak nastavit SMTP server, můžete se zeptat na%s, nebo si prostudujte dokumentaci vašeho poskytovatele. \nPoznámka: V současné době bohužel většina serverů nasazuje služby pro filtrování nevyžádané pošty a různé způsoby ověřování odesilatele. Bez detailnějších znalostí a nastavení vašeho SMTP serveru se vám bude vracet většina zpráv jako nedoručené.
+YouCanAlsoUseSupervisorKeyword=Můžete také přidat klíčové slovo<strong>__SUPERVISOREMAIL__</strong>a e-mail byl odeslán na vedoucího uživatele (funguje pouze v případě že e-mail je definován pro tento orgán dohledu)
+NbOfTargetedContacts=Aktuální počet cílených kontaktních e-mailů
diff --git a/htdocs/langs/cs_CZ/main.lang b/htdocs/langs/cs_CZ/main.lang
index 516340250cb48b2d3b1da56f53252f0de6b3345b..3ccc5ccbc29fb3d53258c3798b1a0ab101ed8a45 100644
--- a/htdocs/langs/cs_CZ/main.lang
+++ b/htdocs/langs/cs_CZ/main.lang
@@ -50,7 +50,7 @@ ErrorYourCountryIsNotDefined=Vaše země není definována. Přejděte na Domů-
 ErrorRecordIsUsedByChild=Nepodařilo se smazat tento záznam. Tento záznam je používán minimálně jedním vnořeným záznamem.
 ErrorWrongValue=Chybná hodnota
 ErrorWrongValueForParameterX=Chybná hodnota parametru %s
-ErrorNoRequestInError=Žádný požadavek omylem
+ErrorNoRequestInError=Žádný chybný požadavek
 ErrorServiceUnavailableTryLater=Služba momentálně není k dispozici. Zkuste to znovu později.
 ErrorDuplicateField=Duplicitní hodnota v poli
 ErrorSomeErrorWereFoundRollbackIsDone=Byly nalezeny nějaké chyby. Veškeré změny budou zpětně vráceny.
@@ -59,13 +59,13 @@ ErrorCantLoadUserFromDolibarrDatabase=Nepodařilo se najít uživatele <b>%s</b>
 ErrorNoVATRateDefinedForSellerCountry=Chyba, pro zemi '%s' nejsou definovány žádné sazby DPH.
 ErrorNoSocialContributionForSellerCountry=Chyba, žádný typ sociálních příspěvků není definován pro zemi '%s'.
 ErrorFailedToSaveFile=Chyba, nepodařilo se uložit soubor.
-SetDate=Set date
-SelectDate=Select a date
+SetDate=Nastavení datumu
+SelectDate=Výběr datumu
 SeeAlso=Viz také %s
-SeeHere=See here
+SeeHere=Nahlédněte zde
 BackgroundColorByDefault=Výchozí barva pozadí
-FileNotUploaded=The file was not uploaded
-FileUploaded=The file was successfully uploaded
+FileNotUploaded=Soubor nebyl nahrán
+FileUploaded=Soubor byl úspěšně nahrán
 FileWasNotUploaded=Soubor vybrán pro připojení, ale ještě nebyl nahrán. Klikněte na "Přiložit soubor".
 NbOfEntries=Počet záznamů
 GoToWikiHelpPage=Online nápověda (vyžadován přístup k Internetu)
@@ -74,7 +74,7 @@ RecordSaved=Záznam uložen
 RecordDeleted=Záznam smazán
 LevelOfFeature=Úroveň vlastností
 NotDefined=Není definováno
-DefinedAndHasThisValue=Definován a hodnota
+DefinedAndHasThisValue=Definována hodnota
 IsNotDefined=nedefinované
 DolibarrInHttpAuthenticationSoPasswordUseless=Dolibarr režim autentikace je nastaven na <b>%s</b> v konfiguračním souboru <b>conf.php.</b> <br> To znamená, že databáze hesel je externí, takže změna tohoto pole nemusí mít žádný účinek.
 Administrator=Správce
@@ -90,16 +90,16 @@ AuthenticationMode=Režim autentizace
 RequestedUrl=Požadovaná URL
 DatabaseTypeManager=Správce typu databáze
 RequestLastAccess=Žádost o poslední přístup do databáze
-RequestLastAccessInError=Žádost o poslední přístup do databáze omylem
-ReturnCodeLastAccessInError=Návratový kód pro přístup k databázi v poslední chyby
-InformationLastAccessInError=Informace pro poslední přístup do databáze omylem
+RequestLastAccessInError=Žádost o poslední přístup do databáze v případě chyby
+ReturnCodeLastAccessInError=Návratový kód pro přístup k databázi v případě chyby
+InformationLastAccessInError=Informace pro poslední přístup do databáze v případě chyby
 DolibarrHasDetectedError=Dolibarr zjistil technickou chybu
-InformationToHelpDiagnose=Toto jsou informace, které mohou pomoci diagnostické
+InformationToHelpDiagnose=Toto jsou informace, které mohou pomoci při diagnostice
 MoreInformation=Více informací
-TechnicalInformation=Technical information
+TechnicalInformation=Technická informace
 NotePublic=Poznámka (veřejné)
 NotePrivate=Poznámka (soukromé)
-PrecisionUnitIsLimitedToXDecimals=Dolibarr bylo nastavení omezit přesnost jednotkových cen <b>%s</b> desetinných míst.
+PrecisionUnitIsLimitedToXDecimals=Dolibarr byl nastaven pro limit přesnosti jednotkových cen na <b>%s</b> desetinných míst.
 DoTest=Test
 ToFilter=Filtr
 WarningYouHaveAtLeastOneTaskLate=Pozor, máte alespoň jeden prvek, který překročil tolerance zpoždění.
@@ -128,12 +128,12 @@ Disabled=Invalidní
 Add=Přidat
 AddLink=Přidat odkaz
 Update=Aktualizovat
-AddActionToDo=Přidat akci dělat
-AddActionDone=Přidat akci provést
+AddActionToDo=Přidat událost do
+AddActionDone=Přidat provedení události
 Close=Zavřít
 Close2=Zavřít
 Confirm=Potvrdit
-ConfirmSendCardByMail=Opravdu chcete poslat obsah této karty poštou na <b>%s?</b>
+ConfirmSendCardByMail=Opravdu chcete poslat obsah této karty mailem na <b>%s?</b>
 Delete=Vymazat
 Remove=Odstranit
 Resiliate=Resiliate
@@ -141,14 +141,14 @@ Cancel=Zrušit
 Modify=Upravit
 Edit=Upravit
 Validate=Potvrdit
-ValidateAndApprove=Validate and Approve
+ValidateAndApprove=Ověřeno a schváleno
 ToValidate=Chcete-li ověřit
 Save=Uložit
 SaveAs=Uložit jako
 TestConnection=Zkušební připojení
 ToClone=Klon
 ConfirmClone=Vyberte data, která chcete klonovat:
-NoCloneOptionsSpecified=Žádné údaje nejsou k klonovat definován.
+NoCloneOptionsSpecified=Žádná data nejsou vybrána ke klonování.
 Of=z
 Go=Jít
 Run=Běh
@@ -159,12 +159,12 @@ Search=Vyhledávání
 SearchOf=Vyhledávání
 Valid=Platný
 Approve=Schvalovat
-Disapprove=Disapprove
+Disapprove=Neschváleno
 ReOpen=Znovu otevřít
 Upload=Odeslat soubor
-ToLink=Link
+ToLink=Odkaz
 Select=Vybrat
-Choose=Vybrat
+Choose=Zvolit
 ChooseLangage=Zvolte si prosím jazyk
 Resize=Změna velikosti
 Recenter=Recenter
@@ -173,10 +173,10 @@ User=Uživatel
 Users=Uživatelé
 Group=Skupina
 Groups=Skupiny
-NoUserGroupDefined=No user group defined
+NoUserGroupDefined=Žádná uživatelská skupina není definována
 Password=Heslo
 PasswordRetype=Zadejte znovu heslo
-NoteSomeFeaturesAreDisabled=Všimněte si, že mnoho funkcí / modules jsou zakázány v této ukázce.
+NoteSomeFeaturesAreDisabled=Všimněte si, že mnoho funkcí/modulů jsou zakázány v této ukázce.
 Name=Název
 Person=Osoba
 Parameter=Parametr
@@ -200,7 +200,7 @@ Family=Rodina
 Description=Popis
 Designation=Popis
 Model=Model
-DefaultModel=Výchozí model,
+DefaultModel=Výchozí model
 Action=Událost
 About=O
 Number=Číslo
@@ -209,25 +209,25 @@ AmountByMonth=Částka podle měsíce
 Numero=Číslo
 Limit=Omezení
 Limits=Limity
-DevelopmentTeam=Development Team
+DevelopmentTeam=Vývojářský tým
 Logout=Odhlášení
-NoLogoutProcessWithAuthMode=No applicative disconnect feature with authentication mode <b>%s</b>
+NoLogoutProcessWithAuthMode=Žádná aplikovaná odpojená funkce s režimem ověřování <b>%s</b>
 Connection=Spojení
-Setup=Setup
+Setup=Nastavení
 Alert=Upozornění
 Previous=Předchozí
 Next=Další
 Cards=Karty
 Card=Karta
 Now=Nyní
-HourStart=Start hour
+HourStart=Startovní hodina
 Date=Datum
-DateAndHour=Date and hour
+DateAndHour=Datum a hodina
 DateStart=Datum začátku
 DateEnd=Datum ukončení
 DateCreation=Datum vytvoření
 DateModification=Datum změny
-DateModificationShort=Modif. datum
+DateModificationShort=Datum úpravy
 DateLastModification=Datum poslední modifikace
 DateValidation=Datum ověření
 DateClosing=Uzávěrka
@@ -239,12 +239,12 @@ DateOperationShort=Oper. Datum
 DateLimit=Omezit datum
 DateRequest=Žádost o data
 DateProcess=Procesní data
-DatePlanShort=Datum hoblované
-DateRealShort=Datum skutečný.
-DateBuild=Zpráva datum sestavení
+DatePlanShort=Plánované datum
+DateRealShort=Skutečné datum
+DateBuild=Zpráva data vzniku
 DatePayment=Datum platby
-DateApprove=Approving date
-DateApprove2=Approving date (second approval)
+DateApprove=Schválené datum
+DateApprove2=Schválené datum (druhé schválení)
 DurationYear=rok
 DurationMonth=měsíc
 DurationWeek=týden
@@ -267,12 +267,12 @@ days=dny
 Hours=Hodiny
 Minutes=Zápis
 Seconds=Sekundy
-Weeks=Weeks
+Weeks=Týdny
 Today=Dnes
 Yesterday=Včera
 Tomorrow=Zítra
-Morning=Morning
-Afternoon=Afternoon
+Morning=Ráno
+Afternoon=Odpoledne
 Quadri=Quadri
 MonthOfDay=Měsíce ode dne
 HourShort=H
@@ -291,7 +291,7 @@ Gb=Gb
 Tb=Tb
 Cut=Snížit
 Copy=Kopírovat
-Paste=Pasta
+Paste=Vložit
 Default=Standardní
 DefaultValue=Výchozí hodnota
 DefaultGlobalValue=Globální hodnota
@@ -301,7 +301,7 @@ UnitPriceHT=Jednotková cena (bez DPH)
 UnitPriceTTC=Jednotková cena
 PriceU=UP
 PriceUHT=UP (bez DPH)
-AskPriceSupplierUHT=P.U. HT Requested
+AskPriceSupplierUHT=P.U. HT Požadováno
 PriceUTTC=UP
 Amount=Množství
 AmountInvoice=Fakturovaná částka
@@ -317,8 +317,8 @@ AmountLT1ES=Množství RE
 AmountLT2ES=Částka IRPF
 AmountTotal=Celková částka
 AmountAverage=Průměrná částka
-PriceQtyHT=Cena za toto množství (očištěná o daň)
-PriceQtyMinHT=Cena množství min. (Po zdanění)
+PriceQtyHT=Cena za toto množství (bez daně)
+PriceQtyMinHT=Cena množství min. (po zdanění)
 PriceQtyTTC=Cena za toto množství (vč. DPH)
 PriceQtyMinTTC=Cena množství min. (Vč. DPH)
 Percentage=Procento
@@ -327,7 +327,7 @@ SubTotal=Mezisoučet
 TotalHTShort=Celkem (bez DPH)
 TotalTTCShort=Celkem (vč. DPH)
 TotalHT=Celkem (bez daně)
-TotalHTforthispage=Total (net of tax) for this page
+TotalHTforthispage=Celkem (po zdanění) pro tuto stránku
 TotalTTC=Celkem (vč. DPH)
 TotalTTCToYourCredit=Celkem (vč. DPH) na Váš účet
 TotalVAT=Daň celkem
@@ -352,37 +352,37 @@ FullList=Plný seznam
 Statistics=Statistika
 OtherStatistics=Další statistiky
 Status=Postavení
-Favorite=Favorite
+Favorite=Favorit
 ShortInfo=Info.
 Ref=Ref.
-ExternalRef=Ref. extern
+ExternalRef=Ref. externí
 RefSupplier=Ref. dodavatel
 RefPayment=Ref. platba
 CommercialProposalsShort=Komerční návrhy
 Comment=Komentář
 Comments=Komentáře
-ActionsToDo=Akce dělat
-ActionsDone=Události provádí
-ActionsToDoShort=Chcete-li
+ActionsToDo=Události k provedení
+ActionsDone=Hotové události
+ActionsToDoShort=Dělat
 ActionsRunningshort=Začínáme
 ActionsDoneShort=Hotový
 ActionNotApplicable=Nevztahuje se
 ActionRunningNotStarted=Chcete-li začít
 ActionRunningShort=Začínáme
-ActionDoneShort=Hotový
-ActionUncomplete=Uncomplete
-CompanyFoundation=Společnosti / Nadace
+ActionDoneShort=Ukončený
+ActionUncomplete=Nekompletní
+CompanyFoundation=Společnost/Nadace
 ContactsForCompany=Kontakty pro tuto třetí stranu
-ContactsAddressesForCompany=Kontakty / adresy pro třetí strany této
+ContactsAddressesForCompany=Kontakty/adresy pro tuto třetí stranu
 AddressesForCompany=Adresy pro tuto třetí stranu
-ActionsOnCompany=Akce o této třetí osobě
-ActionsOnMember=Akce o tomto členu
+ActionsOnCompany=Akce u této třetí strany
+ActionsOnMember=Akce u tohoto uživatele
 NActions=%s události
 NActionsLate=%s pozdě
-RequestAlreadyDone=Request already recorded
+RequestAlreadyDone=Poptávka je již zaznamenaná
 Filter=Filtr
 RemoveFilter=Vyjměte filtr
-ChartGenerated=Graf generovaný
+ChartGenerated=Generovaný graf
 ChartNotGenerated=Graf není generován
 GeneratedOn=Stavět na %s
 Generate=Generovat
@@ -391,15 +391,15 @@ TotalDuration=Celková doba trvání
 Summary=Shrnutí
 MyBookmarks=Moje záložky
 OtherInformationsBoxes=Další informační boxy
-DolibarrBoard=Dolibarr deska
+DolibarrBoard=Dolibarr plocha
 DolibarrStateBoard=Statistika
-DolibarrWorkBoard=Pracovní úkoly deska
+DolibarrWorkBoard=Plocha pracovních úkolů
 Available=Dostupný
 NotYetAvailable=Zatím není k dispozici
 NotAvailable=Není k dispozici
 Popularity=Popularita
-Categories=Tags/categories
-Category=Tag/category
+Categories=Tagy/kategorie
+Category=Tag/kategorie
 By=Podle
 From=Z
 to=na
@@ -411,15 +411,15 @@ OtherInformations=Ostatní informace
 Quantity=Množství
 Qty=Množství
 ChangedBy=Změnil
-ApprovedBy=Approved by
-ApprovedBy2=Approved by (second approval)
+ApprovedBy=Schváleno
+ApprovedBy2=Schváleno (druhé schválení)
 ReCalculate=Přepočítat
 ResultOk=Úspěch
 ResultKo=Selhání
 Reporting=Hlášení
 Reportings=Hlášení
 Draft=Návrh
-Drafts=Dáma
+Drafts=Návrhy
 Validated=Ověřené
 Opened=Otevřeno
 New=Nový
@@ -435,7 +435,7 @@ ByUsers=Od uživatelů
 Links=Odkazy
 Link=Odkaz
 Receipts=Příjmy
-Rejects=Odmítá
+Rejects=Odmítnuto
 Preview=Náhled
 NextStep=Další krok
 PreviousStep=Předchozí krok
@@ -447,7 +447,7 @@ Photo=Obrázek
 Photos=Obrázky
 AddPhoto=Přidat obrázek
 Login=Přihlášení
-CurrentLogin=Aktuální login
+CurrentLogin=Aktuální přihlášení
 January=Leden
 February=Únor
 March=Březen
@@ -462,40 +462,40 @@ November=Listopad
 December=Prosinec
 JanuaryMin=Leden
 FebruaryMin=Únor
-MarchMin=Mar
-AprilMin=Dubna
+MarchMin=Březen
+AprilMin=Duben
 MayMin=Květen
-JuneMin=Června
-JulyMin=Července
-AugustMin=Srpna
+JuneMin=Červen
+JulyMin=Červenec
+AugustMin=Srpen
 SeptemberMin=Září
 OctoberMin=Říjen
 NovemberMin=Listopad
 DecemberMin=Prosince
-Month01=January
-Month02=February
-Month03=March
-Month04=April
-Month05=May
-Month06=June
-Month07=July
-Month08=August
-Month09=September
-Month10=October
-Month11=November
-Month12=December
-MonthShort01=Jan
-MonthShort02=Feb
-MonthShort03=Mar
-MonthShort04=Apr
-MonthShort05=May
-MonthShort06=Jun
-MonthShort07=Jul
-MonthShort08=Aug
-MonthShort09=Sep
-MonthShort10=Oct
-MonthShort11=Nov
-MonthShort12=Dec
+Month01=Leden
+Month02=Únor
+Month03=Březen
+Month04=Duben
+Month05=Květen
+Month06=Červen
+Month07=Červenec
+Month08=Srpen
+Month09=Září
+Month10=Říjen
+Month11=Listopad
+Month12=Prosinec
+MonthShort01=Led.
+MonthShort02=Ún.
+MonthShort03=Břez.
+MonthShort04=Dub.
+MonthShort05=Květ.
+MonthShort06=Červ.
+MonthShort07=Čerc.
+MonthShort08=Srp.
+MonthShort09=Zá.
+MonthShort10=Říj.
+MonthShort11=List.
+MonthShort12=Pros.
 AttachedFiles=Přiložené soubory a dokumenty
 FileTransferComplete=Soubor byl úspěšně nahrán
 DateFormatYYYYMM=YYYY-MM
@@ -507,14 +507,14 @@ ReportDescription=Popis
 Report=Zpráva
 Keyword=Mot Clé
 Legend=Legenda
-FillTownFromZip=Vyplňte město od zipu
+FillTownFromZip=Vyplňte město z PSČ
 Fill=Vyplnit
 Reset=Obnovit
 ShowLog=Zobrazit protokol
 File=Soubor
 Files=Soubory
 NotAllowed=Není povoleno
-ReadPermissionNotAllowed=Přečtěte si svolení není dovoleno
+ReadPermissionNotAllowed=Číst oprávnění není povoleno
 AmountInCurrency=Částka v měně %s
 Example=Příklad
 Examples=Příklady
@@ -524,33 +524,33 @@ NbOfThirdParties=Počet třetích stran
 NbOfCustomers=Počet zákazníků
 NbOfLines=Počet řádků
 NbOfObjects=Počet objektů
-NbOfReferers=Počet odkazovače
-Referers=Refering objects
+NbOfReferers=Počet odkazů
+Referers=Odkazované objekty
 TotalQuantity=Celkové množství
 DateFromTo=Od %s na %s
 DateFrom=Od %s
 DateUntil=Do %s
 Check=Kontrola
-Uncheck=Uncheck
+Uncheck=Nekontrolováno
 Internal=Vnitřní
 External=Externí
 Internals=Vnitřní
 Externals=Externí
 Warning=Upozornění
-Warnings=Upozornění
-BuildPDF=Build PDF
-RebuildPDF=Znovu PDF
-BuildDoc=Build Doc
-RebuildDoc=Znovu Doc
+Warnings=Výstrahy
+BuildPDF=Vytvořit PDF
+RebuildPDF=Znovu sestavit PDF
+BuildDoc=Vytvořit dokument
+RebuildDoc=Znovu vytvořit dokument
 Entity=Prostředí
 Entities=Subjekty
 EventLogs=Záznamy
-CustomerPreview=Zákazník náhled
-SupplierPreview=Dodavatel náhled
-AccountancyPreview=Účetnictví náhled
-ShowCustomerPreview=Zobrazit zákaznickou náhled
-ShowSupplierPreview=Zobrazit náhled s dodavately
-ShowAccountancyPreview=Zobrazit evidence náhled
+CustomerPreview=Náhled zákazníka
+SupplierPreview=Náhled dodavatele
+AccountancyPreview=Náhled účetnictví
+ShowCustomerPreview=Zobrazit náhled zákazníka
+ShowSupplierPreview=Zobrazit náhled dodavatele
+ShowAccountancyPreview=Zobrazit náhled účetnictví
 ShowProspectPreview=Zobrazit vyhlídka náhled
 RefCustomer=Ref. zákazník
 Currency=Měna
@@ -566,22 +566,22 @@ Question=Otázka
 Response=Odpověď
 Priority=Priorita
 SendByMail=Poslat e-mailem
-MailSentBy=E-mail zaslána
-TextUsedInTheMessageBody=E-mail tělo
+MailSentBy=E-mail odeslán
+TextUsedInTheMessageBody=E-mail obsah
 SendAcknowledgementByMail=Poslat Ack. e-mailem
 NoEMail=Žádný e-mail
-NoMobilePhone=No mobile phone
+NoMobilePhone=Žádné telefonní číslo
 Owner=Majitel
 DetectedVersion=Zjištěná verze
-FollowingConstantsWillBeSubstituted=Následující konstanty bude nahrazen odpovídající hodnotou.
-Refresh=Osvěžit
+FollowingConstantsWillBeSubstituted=Následující konstanty budou nahrazeny odpovídající hodnotou.
+Refresh=Obnovit
 BackToList=Zpět na seznam
-GoBack=Vrátit se
+GoBack=Návrat
 CanBeModifiedIfOk=Může být změněn, pokud platí
-CanBeModifiedIfKo=Může být změněna, pokud není platný
+CanBeModifiedIfKo=Může být změněn, pokud není platný
 RecordModifiedSuccessfully=Nahrávání bylo úspěšně upraveno
-RecordsModified=%s záznamy změněna
-AutomaticCode=Automatické kód
+RecordsModified=%s záznamy změněny
+AutomaticCode=Automatický kód
 NotManaged=Nepodařilo
 FeatureDisabled=Funkce vypnuta
 MoveBox=Přesunout okno %s
@@ -596,28 +596,28 @@ TotalWoman=Celkový
 TotalMan=Celkový
 NeverReceived=Nikdy nedostal
 Canceled=Zrušený
-YouCanChangeValuesForThisListFromDictionarySetup=You can change values for this list from menu setup - dictionary
+YouCanChangeValuesForThisListFromDictionarySetup=Můžete změnit hodnoty pro tento seznam z nastavení v menu - slovník
 Color=Barva
 Documents=Připojené soubory
 DocumentsNb=Připojené soubory (%s)
 Documents2=Dokumenty
 BuildDocuments=Generované dokumenty
-UploadDisabled=Přidat zakázáno
+UploadDisabled=Upload zakázán
 MenuECM=Dokumenty
-MenuAWStats=AWStats
+MenuAWStats=AW Statistiky
 MenuMembers=Členové
 MenuAgendaGoogle=Google agenda
-ThisLimitIsDefinedInSetup=Dolibarr limit (Menu domácí nastavení zabezpečení): %s Kb, PHP limit: %s Kb
-NoFileFound=Žádné dokumenty uložené v tomto adresáři
+ThisLimitIsDefinedInSetup=Dolibarr limit (menu Domů-nastavení-zabezpečení): %s Kb, PHP limit: %s Kb
+NoFileFound=Žádné dokumenty nejsou uložené v tomto adresáři
 CurrentUserLanguage=Aktuální jazyk
 CurrentTheme=Aktuální téma
-CurrentMenuManager=Aktuální nabídka manažer
+CurrentMenuManager=Manager aktuální nabídky
 DisabledModules=Zakázané moduly
 For=Pro
 ForCustomer=Pro zákazníky
 Signature=Podpis
 HidePassword=Zobrazit příkaz s heslem skryté
-UnHidePassword=Zobrazit skutečné velení s jasným heslem
+UnHidePassword=Zobrazit skutečný příkaz s odstraněným heslem
 Root=Kořen
 Informations=Informace
 Page=Strana
@@ -625,21 +625,21 @@ Notes=Poznámky
 AddNewLine=Přidat nový řádek
 AddFile=Přidat soubor
 ListOfFiles=Seznam dostupných souborů
-FreeZone=Free entry
-FreeLineOfType=Free entry of type
-CloneMainAttributes=Clone objekt s jeho hlavními atributy
-PDFMerge=PDF Merge
+FreeZone=Volný vstup
+FreeLineOfType=Volný vstup typu
+CloneMainAttributes=Duplikovat objekt s jeho hlavními atributy
+PDFMerge=Spojit PDF
 Merge=Spojit
-PrintContentArea=Zobrazit stránku pro tisk hlavní obsahovou část
-MenuManager=Menu manažer
-NoMenu=No sub-menu
-WarningYouAreInMaintenanceMode=Pozor, jste v režimu údržby, tak jen přihlášení <b>%s</b> je dovoleno používat aplikace v tuto chvíli.
+PrintContentArea=Zobrazit stránku pro tisk hlavní obsahové části
+MenuManager=Manager nabídky
+NoMenu=Žádné sub-menu
+WarningYouAreInMaintenanceMode=Pozor, jste v režimu údržby, jen pro přihlášené <b>%s</b> je dovoleno v tuto chvíli používat aplikace.
 CoreErrorTitle=Systémová chyba
 CoreErrorMessage=Omlouváme se, došlo k chybě. Zkontrolujte protokoly nebo se obraťte na správce systému.
 CreditCard=Kreditní karta
 FieldsWithAreMandatory=Pole označená * jsou povinná <b>%s</b>
-FieldsWithIsForPublic=Pole s <b>%s</b> jsou uvedeny na veřejném seznamu členů. Pokud nechcete, aby to, zaškrtnout &quot;veřejný&quot; box.
-AccordingToGeoIPDatabase=(Podle přepočet GeoIP)
+FieldsWithIsForPublic=Pole s <b>%s</b> jsou uvedeny na veřejném seznamu členů. Pokud si to nepřejete, zaškrtněte "veřejný" box.
+AccordingToGeoIPDatabase=(Podle GeoIP konverze)
 Line=Linka
 NotSupported=Není podporováno
 RequiredField=Povinné pole
@@ -656,53 +656,53 @@ Before=Před
 After=Po
 IPAddress=IP adresa
 Frequency=Frekvence
-IM=Instant messaging
+IM=Instantní komunikace
 NewAttribute=Nový atribut
-AttributeCode=Atribut kód
+AttributeCode=Kód atributu
 OptionalFieldsSetup=Extra nastavení atributů
-URLPhoto=URL of photo/logo
-SetLinkToThirdParty=Odkaz na jiné třetí osobě
+URLPhoto=URL obrázku/loga
+SetLinkToThirdParty=Odkaz na jinou třetí stranu
 CreateDraft=Vytvořte návrh
-SetToDraft=Back to draft
+SetToDraft=Zrušit návrh
 ClickToEdit=Klepnutím lze upravit
 ObjectDeleted=Objekt %s smazán
 ByCountry=Podle země
-ByTown=Do města
+ByTown=Podle města
 ByDate=Podle data
-ByMonthYear=Tím měsíc / rok
-ByYear=Do roku
-ByMonth=By month
-ByDay=Ve dne
-BySalesRepresentative=Do obchodního zástupce
-LinkedToSpecificUsers=V souvislosti s konkrétním kontaktu s uživatelem
+ByMonthYear=Podle měsíce/roku
+ByYear=Podle roku
+ByMonth=Podle měsíce
+ByDay=Podle dne
+BySalesRepresentative=Podle obchodního zástupce
+LinkedToSpecificUsers=Souvisí s konkrétním uživatelem kontaktu
 DeleteAFile=Odstranění souboru
-ConfirmDeleteAFile=Jste si jisti, že chcete smazat soubor
+ConfirmDeleteAFile=Jste si jisti, že chcete smazat tento soubor?
 NoResults=Žádné výsledky
-ModulesSystemTools=Moduly nářadí
+ModulesSystemTools=Moduly nástrojů
 Test=Test
 Element=Prvek
-NoPhotoYet=Žádné fotografie zatím k dispozici
-HomeDashboard=Domů shrnutí
+NoPhotoYet=Momentálně žádné fotografie k dispozici
+HomeDashboard=Hlavní shrnutí
 Deductible=Spoluúčast
 from=z
 toward=k
 Access=Přístup
-HelpCopyToClipboard=Použijte Ctrl + C zkopírujte do schránky
-SaveUploadedFileWithMask=Save file on server with name "<strong>%s</strong>" (otherwise "%s")
-OriginFileName=Original filename
-SetDemandReason=Set source
-SetBankAccount=Define Bank Account
-AccountCurrency=Account Currency
-ViewPrivateNote=View notes
-XMoreLines=%s line(s) hidden
-PublicUrl=Public URL
-AddBox=Add box
-SelectElementAndClickRefresh=Select an element and click Refresh
-PrintFile=Print File %s
-ShowTransaction=Show transaction
-GoIntoSetupToChangeLogo=Go into Home - Setup - Company to change logo or go into Home - Setup - Display to hide.
-Deny=Deny
-Denied=Denied
+HelpCopyToClipboard=Použijte Ctrl + C pro zkopírování do schránky
+SaveUploadedFileWithMask=Uložit soubor na server s názvem "<strong>%s</strong>" (iinak "%s")
+OriginFileName=Originální název sounoru
+SetDemandReason=Nastavení zdroje
+SetBankAccount=Definujte bankovní účet
+AccountCurrency=Měna účtu
+ViewPrivateNote=Zobrazit poznámky
+XMoreLines=%s řádky(ů) skryto
+PublicUrl=Veřejná URL
+AddBox=Přidejte box
+SelectElementAndClickRefresh=Vyberte element a klikněte na Obnovit
+PrintFile=Tisk souboru %s
+ShowTransaction=Ukázat transakci
+GoIntoSetupToChangeLogo=Jděte na Domů-Nastavení-Společnost pro změnu loga, nebo je v nastavení skryjte.
+Deny=Odmítnout
+Denied=Odmítnuto
 # Week day
 Monday=Pondělí
 Tuesday=Úterý
@@ -711,13 +711,13 @@ Thursday=Čtvrtek
 Friday=Pátek
 Saturday=Sobota
 Sunday=Neděle
-MondayMin=Mo
-TuesdayMin=Tu
-WednesdayMin=My
-ThursdayMin=Th
-FridayMin=Pá
-SaturdayMin=Sa
-SundayMin=Su
+MondayMin=po
+TuesdayMin=út
+WednesdayMin=st
+ThursdayMin=čt
+FridayMin=pá
+SaturdayMin=so
+SundayMin=ne
 Day1=Pondělí
 Day2=Úterý
 Day3=Středa
@@ -725,10 +725,10 @@ Day4=Čtvrtek
 Day5=Pátek
 Day6=Sobota
 Day0=Neděle
-ShortMonday=M
-ShortTuesday=T
-ShortWednesday=W
-ShortThursday=T
-ShortFriday=F
+ShortMonday=P
+ShortTuesday=Ú
+ShortWednesday=S
+ShortThursday=Č
+ShortFriday=PÁ
 ShortSaturday=S
-ShortSunday=S
+ShortSunday=N
diff --git a/htdocs/langs/cs_CZ/margins.lang b/htdocs/langs/cs_CZ/margins.lang
index f321aeb2c99f485e13c1017af92ba083efd25b15..872f41bfa4d7f36be8f7b1038c2abb8ac03b62e4 100644
--- a/htdocs/langs/cs_CZ/margins.lang
+++ b/htdocs/langs/cs_CZ/margins.lang
@@ -1,45 +1,45 @@
 # Dolibarr language file - Source file is en_US - marges
 
-Margin=Okraj
-Margins=Okraje
+Margin=Marže
+Margins=Marže
 TotalMargin=Celková marže
-MarginOnProducts=Margin / Produkty
-MarginOnServices=Marže / služby
-MarginRate=Marže rychlost
-MarkRate=Mark rychlost
-DisplayMarginRates=Zobrazení okrajů ceny
-DisplayMarkRates=Zobrazit ceny značek
+MarginOnProducts=Marže/Produkty
+MarginOnServices=Marže/služby
+MarginRate=Hodnocení marže
+MarkRate=Hodnocení značky
+DisplayMarginRates=Zobrazení hodnocení marže
+DisplayMarkRates=Zobrazit hodnocení značek
 InputPrice=Vstupní cena
-margin=Ziskové marže řízení
-margesSetup=Ziskové marže Nastavení řízení
-MarginDetails=Margin detaily
-ProductMargins=Produktové marže
-CustomerMargins=Zákazníků marže
-SalesRepresentativeMargins=Sales representative margins
-UserMargins=User margins
+margin=Řízení ziskové marže
+margesSetup=Nastavení řízení ziskové marže
+MarginDetails=Detaily marže
+ProductMargins=Produktová marže
+CustomerMargins=Zákaznická marže
+SalesRepresentativeMargins=Obchodní zástupce marže
+UserMargins=Uživatelské marže
 ProductService=Produkt nebo služba
 AllProducts=Všechny produkty a služby
 ChooseProduct/Service=Zvolte produkt nebo službu
 StartDate=Datum zahájení
 EndDate=Datum ukončení
 Launch=Začátek
-ForceBuyingPriceIfNull=Force nákupu cena, pokud null
-ForceBuyingPriceIfNullDetails=pokud je &quot;ON&quot;, bude marže rovnat nule na lince (nákupní cena = prodejní cena), v opačném případě (&quot;OFF&quot;), bude Marge se rovná prodejní ceně (nákupní cena = 0)
-MARGIN_METHODE_FOR_DISCOUNT=Marže metoda pro globální slevy
+ForceBuyingPriceIfNull=Síla nákupní ceny, pokud je nula
+ForceBuyingPriceIfNullDetails=Pokud je nastaveno "ON", bude se marže rovnat nule na řádku (nákupní cena = prodejní cena), v opačném případě ("OFF"), se bude marže rovnat prodejní ceně (nákupní cena = 0)
+MARGIN_METHODE_FOR_DISCOUNT=Metoda marže pro globální slevy
 UseDiscountAsProduct=Jako produkt
 UseDiscountAsService=Jako služba
 UseDiscountOnTotal=Na mezisoučet
-MARGIN_METHODE_FOR_DISCOUNT_DETAILS=Definuje, zda globální sleva je považován za výrobek, služba, nebo pouze na mezisoučet pro výpočet marže.
-MARGIN_TYPE=Marže typ
-MargeBrute=Raw marže
+MARGIN_METHODE_FOR_DISCOUNT_DETAILS=Definuje, zda globální sleva je považován za výrobek, službu, nebo pouze za mezisoučet pro výpočet marže.
+MARGIN_TYPE=Typ marže
+MargeBrute=Hrubá marže
 MargeNette=Čistá marže
-MARGIN_TYPE_DETAILS=Raw margin: Konečná cena - nákupní cenou <br/> Čistá marže: Prodejní cena - pořizovací ceny,
-CostPrice=Velkoobchodní cena
-BuyingCost=Velkoobchodní cena
-UnitCharges=Jednotkové náklady
+MARGIN_TYPE_DETAILS=Hrubá marže: prodejní cena - nákupní cena <br/> Čistá marže: prodejní cena - pořizovací cena.
+CostPrice=Náklady
+BuyingCost=Náklady
+UnitCharges=Jednotkové poplatky
 Charges=Poplatky
-AgentContactType=Commercial agent contact type
-AgentContactTypeDetails=Define what contact type (linked on invoices) will be used for margin report per sale representative
-rateMustBeNumeric=Rate must be a numeric value
-markRateShouldBeLesserThan100=Mark rate should be lower than 100
-ShowMarginInfos=Show margin infos
+AgentContactType=Obchodní zástupce - typ kontaktu
+AgentContactTypeDetails=Definujete, jaký typ kontaktu (propojený na fakturách) bude použit pro zprávu o marži pro prodejního zástupce
+rateMustBeNumeric=Hodnocení musí být číselná hodnota
+markRateShouldBeLesserThan100=Označení sazby by měla být nižší než 100
+ShowMarginInfos=Ukázat informace o marži
diff --git a/htdocs/langs/cs_CZ/opensurvey.lang b/htdocs/langs/cs_CZ/opensurvey.lang
index adc86c6dd5eae73b6f83ca64ab28a4131087d64b..8f55a1e6092548680103766b229322c846b69289 100644
--- a/htdocs/langs/cs_CZ/opensurvey.lang
+++ b/htdocs/langs/cs_CZ/opensurvey.lang
@@ -1,18 +1,18 @@
 # Dolibarr language file - Source file is en_US - opensurvey
-# Survey=Poll
-# Surveys=Polls
-# OrganizeYourMeetingEasily=Organize your meetings and polls easily. First select type of poll...
-# NewSurvey=New poll
-# NoSurveysInDatabase=%s poll(s) into database.
-# OpenSurveyArea=Polls area
-# AddACommentForPoll=You can add a comment into poll...
+Survey=Hlasování
+Surveys=Ankety
+OrganizeYourMeetingEasily=Uspořádejte snadno své setkání a hlasování. Nejprve vyberte typ hlasování ...
+NewSurvey=Nové hlasování
+NoSurveysInDatabase=%s hlasování v databázi.
+OpenSurveyArea=Oblast anket
+AddACommentForPoll=Můžete přidat komentář do hlasování ...
 AddComment=Přidat komentář
 CreatePoll=Vytvoření ankety
-PollTitle=Anketa titul
-# ToReceiveEMailForEachVote=Receive an email for each vote
+PollTitle=Titul ankety
+ToReceiveEMailForEachVote=Přijmout e-mail pro každý hlas
 TypeDate=Zadejte datum
 TypeClassic=Typ standardní
-# OpenSurveyStep2=Select your dates amoung the free days (grey). The selected days are green. You can unselect a day previously selected by clicking again on it
+OpenSurveyStep2=Vyberte si termín amoung volných dnů (šedá). Vybrané dny jsou zelené. Můžete zrušit výběr den předem kliknutím znovu na výběr
 RemoveAllDays=Odstraňte všechny dny
 CopyHoursOfFirstDay=Kopírování hodin prvního dne
 RemoveAllHours=Odstraňte všechny hodiny
@@ -20,47 +20,47 @@ SelectedDays=Vybrané dny
 TheBestChoice=Nejlepší volbou je v současné době
 TheBestChoices=Nejlepší možností jsou v současné době
 with=s
-# OpenSurveyHowTo=If you agree to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line.
+OpenSurveyHowTo=Pokud souhlasíte s hlasováním v této anketě, budete muset uvést své jméno. Vyberte hodnoty, které jsou pro vás nejlepší a potvrďte tlačítkem navíc na konci řádku.
 CommentsOfVoters=Komentáře voličů
-ConfirmRemovalOfPoll=Jste si jisti, že chcete odstranit tuto anketu (a všech hlasů)
+ConfirmRemovalOfPoll=Jste si jisti, že chcete odstranit tuto anketu (a všechny hlasy)
 RemovePoll=Odebrat průzkum
-# UrlForSurvey=URL to communicate to get a direct access to poll
-# PollOnChoice=You are creating a poll to make a multi-choice for a poll. First enter all possible choices for your poll:
-# CreateSurveyDate=Create a date poll
-# CreateSurveyStandard=Create a standard poll
+UrlForSurvey=URL pro přímý přístup k anketě
+PollOnChoice=Vytváříte hlasování, s multi volbou několika možností pro hlasování. Nejprve zadejte všechny možné volby pro vaše hlasování:
+CreateSurveyDate=Vytvořte datum ankety
+CreateSurveyStandard=Vytvořte standardní anketu
 CheckBox=Jednoduché políčko
-YesNoList=List (prázdný / ano / ne)
-PourContreList=List (prázdný / pro / proti)
+YesNoList=List (prázdný/ano/ne)
+PourContreList=List (prázdný/pro/proti)
 AddNewColumn=Přidat nový sloupec
-TitleChoice=Volba štítek
-ExportSpreadsheet=Export výsledků tabulku
+TitleChoice=Zvolit štítek
+ExportSpreadsheet=Export výsledků tabulky
 ExpireDate=Omezit datum
-# NbOfSurveys=Number of polls
+NbOfSurveys=Počet hlasování
 NbOfVoters=Nb voličů
 SurveyResults=Výsledky
-PollAdminDesc=Jste dovoleno měnit všichni volit řádky této ankety pomocí tlačítka &quot;Edit&quot;. Můžete také odebrat sloupec nebo řádek s %s. Můžete také přidat nový sloupec s %s.
-5MoreChoices=5 více možností
+PollAdminDesc=Můžete měnit všechny hlasovací řádky této ankety pomocí tlačítka "Editace".  Můžete také odebrat sloupec nebo řádek s %s. Můžete také přidat nový sloupec s %s.
+5MoreChoices=5  a více možností
 Abstention=Zdržení se
 Against=Proti
 YouAreInivitedToVote=Zveme vás, abyste hlasovali pro tuto anketu
 VoteNameAlreadyExists=Tento název již byl použit při tomto hlasování
-ErrorPollDoesNotExists=Chyba hlasování <strong>%s</strong> neexistuje.
-OpenSurveyNothingToSetup=Neexistuje žádné specifické nastavení dělat.
+ErrorPollDoesNotExists=Chyba, hlasování <strong>%s</strong> neexistuje.
+OpenSurveyNothingToSetup=Neexistuje žádné specifické nastavení.
 PollWillExpire=Váš průzkum skončí automaticky <strong>%s</strong> dní po posledním dni svého hlasování.
 AddADate=Přidat datum
-AddStartHour=Přidat začít hodinu
-AddEndHour=Přidat end hodinu
+AddStartHour=Přidat počáteční hodinu
+AddEndHour=Přidat konečnou hodinu
 votes=hlas (y)
-NoCommentYet=Žádné komentáře byly zveřejněny na tuto anketu ještě
+NoCommentYet=Žádné komentáře nebyly pro tuto anketu ještě zveřejněny
 CanEditVotes=Může změnit hlas ostatních
-# CanComment=Voters can comment in the poll
-# CanSeeOthersVote=Voters can see other people's vote
-SelectDayDesc=Pro každý vybraný den, můžete si vybrat, zda se mají splnit hodin v následujícím formátu: <br> - Prázdné, <br> - &quot;8h&quot;, &quot;8H&quot; nebo &quot;8:00&quot; dát schůzku v úvodní hodinu, <br> - &quot;8-11&quot;, &quot;8h-11h&quot;, &quot;8H-11H&quot; nebo &quot;08:00-11:00&quot; dát schůzku je začátek a konec hodiny, <br> - &quot;8h15-11h15&quot;, &quot;8H15-11h15&quot; nebo &quot;08:15-11:15&quot; to samé, ale v minutách.
+CanComment=Hlasující mohou vkládat komentáře v této anketě
+CanSeeOthersVote=Hlasující mohou vidět další osoby, které v této anketě hlasují
+SelectDayDesc=Pro každý vybraný den si můžete vybrat, zda se má hlasovat v určenou hodinu v následujícím formátu: <br> - Prázdné, <br> - "8h", "8H" nebo "8:00" mít schůzku v úvodní hodinu, <br> -  "8-11", "8h-11h", "8H-11H" nebo "8:00-11:00" umístit schůzku je začátek a konec hodiny, <br> - "8h15-11h15", "8H15-11H15" or "8:15-11:15" Můžete nastavit to samé, ale v minutách.
 BackToCurrentMonth=Zpět na aktuální měsíc
-# ErrorOpenSurveyFillFirstSection=You haven't filled the first section of the poll creation
-# ErrorOpenSurveyOneChoice=Enter at least one choice
-# ErrorOpenSurveyDateFormat=Date must have the format YYYY-MM-DD
-# ErrorInsertingComment=There was an error while inserting your comment
-# MoreChoices=Enter more choices for the voters
-# SurveyExpiredInfo=The voting time of this poll has expired.
-# EmailSomeoneVoted=%s has filled a line.\nYou can find your poll at the link: \n%s
+ErrorOpenSurveyFillFirstSection=Nemůžete naplnit první část hlasování, které vytváříte
+ErrorOpenSurveyOneChoice=Zadejte alespoň jednu možnost
+ErrorOpenSurveyDateFormat=Datum musí mít formát YYYY-MM-DD
+ErrorInsertingComment=Došlo k chybě při vkládání vašeho komentáře
+MoreChoices=Zadejte více možností pro hlasující
+SurveyExpiredInfo=Doba hlasování pro tuto anketu vypršela.
+EmailSomeoneVoted=%s vyplnilo řádek.\nMůžete si najít své hlasování v odkazu: \n%s
diff --git a/htdocs/langs/cs_CZ/orders.lang b/htdocs/langs/cs_CZ/orders.lang
index 0a0cddfa5d88aba5b6443dc0b7657ec07707901a..d4e2edd2d99ecc513303176b2e286cf596c61be3 100644
--- a/htdocs/langs/cs_CZ/orders.lang
+++ b/htdocs/langs/cs_CZ/orders.lang
@@ -1,159 +1,159 @@
 # Dolibarr language file - Source file is en_US - orders
-OrdersArea=Zákazníci objednávky oblast
-SuppliersOrdersArea=Dodavatelé objednávky oblast
-OrderCard=Objednat kartu
+OrdersArea=Oblast objednávek zákazníků
+SuppliersOrdersArea=Oblast objednávek dodavatelů
+OrderCard=Karta objednávky
 OrderId=ID objednávky
 Order=Objednávka
 Orders=Objednávky
-OrderLine=Objednat linka
+OrderLine=Řádek objednávky
 OrderFollow=Sledovat
-OrderDate=Objednat Datum
-OrderToProcess=Účelem zpracování
+OrderDate=Datum objednávky
+OrderToProcess=Objednávka ve zpracování
 NewOrder=Nová objednávka
-ToOrder=Udělat pořádek
-MakeOrder=Udělat pořádek
-SupplierOrder=Dodavatel aby
-SuppliersOrders=Dodavatelé objednávky
-SuppliersOrdersRunning=Aktuální dodavatelé objednávky
-CustomerOrder=Zákazníka
-CustomersOrders=Customers orders
+ToOrder=Udělat objednávku
+MakeOrder=Udělat objednávku
+SupplierOrder=Dodavatelská objednávka
+SuppliersOrders=Dodavatelské objednávky
+SuppliersOrdersRunning=Aktuální dodavatelské objednávky
+CustomerOrder=Zákaznická objednávka
+CustomersOrders=Zákaznické objednávky
 CustomersOrdersRunning=Objednávky aktuálního zákazníka
-CustomersOrdersAndOrdersLines=Zákaznické objednávky a objednávky linky
-OrdersToValid=Customers orders to validate
-OrdersToBill=Customers orders delivered
-OrdersInProcess=Customers orders in process
-OrdersToProcess=Customers orders to process
-SuppliersOrdersToProcess=Dodavatele objednávky ke zpracování
+CustomersOrdersAndOrdersLines=Zákaznické objednávky a řádky objednávky
+OrdersToValid=Zákaznické objednávky k ověření
+OrdersToBill=Dodané zákaznické objednávky
+OrdersInProcess=Probíhající zákaznické objednávka
+OrdersToProcess=Zákaznické objednávky ke zpracování
+SuppliersOrdersToProcess=Dodavatelské objednávky ke zpracování
 StatusOrderCanceledShort=Zrušený
 StatusOrderDraftShort=Návrh
 StatusOrderValidatedShort=Ověřené
 StatusOrderSentShort=V procesu
 StatusOrderSent=Přeprava v procesu
-StatusOrderOnProcessShort=Ordered
+StatusOrderOnProcessShort=Objednáno
 StatusOrderProcessedShort=Zpracované
 StatusOrderToBillShort=Dodává se
 StatusOrderToBill2Short=K účtu
 StatusOrderApprovedShort=Schválený
-StatusOrderRefusedShort=Odmítl
-StatusOrderToProcessShort=Chcete-li zpracovat
-StatusOrderReceivedPartiallyShort=Částečně uložen
-StatusOrderReceivedAllShort=Vše, co obdržel
+StatusOrderRefusedShort=Odmítnuto
+StatusOrderToProcessShort=Ve zpracování
+StatusOrderReceivedPartiallyShort=Částečně obdržené
+StatusOrderReceivedAllShort=Vše obdržené
 StatusOrderCanceled=Zrušený
 StatusOrderDraft=Návrh (musí být ověřena)
 StatusOrderValidated=Ověřené
-StatusOrderOnProcess=Ordered - Standby reception
-StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation
+StatusOrderOnProcess=Objednáno - přednostní příjem
+StatusOrderOnProcessWithValidation=Objednané - Přednostní příjem nebo validace
 StatusOrderProcessed=Zpracované
 StatusOrderToBill=Dodává se
 StatusOrderToBill2=K účtu
 StatusOrderApproved=Schválený
-StatusOrderRefused=Odmítl
+StatusOrderRefused=Odmítnutý
 StatusOrderReceivedPartially=Částečně uložen
 StatusOrderReceivedAll=Vše, co obdržel
 ShippingExist=Zásilka existuje
-ProductQtyInDraft=Product quantity into draft orders
-ProductQtyInDraftOrWaitingApproved=Product quantity into draft or approved orders, not yet ordered
-DraftOrWaitingApproved=Návrh nebo schválena ještě objednat
-DraftOrWaitingShipped=Návrh nebo ověřeno dosud odesláno
-MenuOrdersToBill=Objednávky dodáno
-MenuOrdersToBill2=Billable orders
-SearchOrder=Hledat účelem
-SearchACustomerOrder=Search a customer order
-SearchASupplierOrder=Search a supplier order
-ShipProduct=Loď produkt
+ProductQtyInDraft=Množství produktů do návrhů objednávek
+ProductQtyInDraftOrWaitingApproved=Množství výrobků do návrhů nebo schválených zakázek, dosud neobjednáno
+DraftOrWaitingApproved=Navrhnuto nebo schváleno,  ještě neobjednáno
+DraftOrWaitingShipped=Návrhnuto nebo ověřeno dosud neodesláno
+MenuOrdersToBill=Dodané objednávky
+MenuOrdersToBill2=Zúčtovatelné objednávky
+SearchOrder=Hledat objednávku
+SearchACustomerOrder=Vyhledat objednávku zákazníka
+SearchASupplierOrder=Vyhledat objednávku dodavatele
+ShipProduct=Dopravit produkt
 Discount=Sleva
 CreateOrder=Vytvořit objednávku
 RefuseOrder=Odmítnout objednávku
-ApproveOrder=Approve order
-Approve2Order=Approve order (second level)
+ApproveOrder=Schválit objednávku
+Approve2Order=Schválit objednávku (druhé úrovně)
 ValidateOrder=Potvrzení objednávky
-UnvalidateOrder=Unvalidate objednávku
+UnvalidateOrder=Nepotvrdit objednávku
 DeleteOrder=Smazat objednávku
 CancelOrder=Zrušení objednávky
-AddOrder=Create order
+AddOrder=Vytvořit objednávku
 AddToMyOrders=Přidat do mých objednávek
 AddToOtherOrders=Přidat do jiných objednávek
-AddToDraftOrders=Přidat k předloze
+AddToDraftOrders=Přidat k návrhu objednávky
 ShowOrder=Zobrazit objednávku
-NoOpenedOrders=Žádné otevřené příkazy
-NoOtherOpenedOrders=Žádný jiný otevřel objednávky
+NoOpenedOrders=Žádné otevřené objednávky
+NoOtherOpenedOrders=Žádné další otevřené objednávky
 NoDraftOrders=Žádné návrhy objednávky
 OtherOrders=Ostatní objednávky
-LastOrders=Last %s customer orders
-LastCustomerOrders=Last %s customer orders
-LastSupplierOrders=Last %s supplier orders
+LastOrders=Poslední %s zákaznické objednávky
+LastCustomerOrders=Poslední %s zákaznické objednávky
+LastSupplierOrders=Poslední %s dodavatelské objednávky
 LastModifiedOrders=Poslední %s modifikované objednávky
 LastClosedOrders=Poslední %s uzavřené objednávky
 AllOrders=Všechny objednávky
 NbOfOrders=Počet objednávek
-OrdersStatistics=Objednat si statistiky
-OrdersStatisticsSuppliers=Dodavatel, aby si statistiky
-NumberOfOrdersByMonth=Počet objednávek měsíce
+OrdersStatistics=Statistiky objednávek
+OrdersStatisticsSuppliers=Statistiky dodavatelských objednávek
+NumberOfOrdersByMonth=Počet objednávek měsíčně
 AmountOfOrdersByMonthHT=Množství objednávek měsíčně (bez daně)
 ListOfOrders=Seznam objednávek
-CloseOrder=Zavřít aby
-ConfirmCloseOrder=Jste si jisti, že chcete nastavit tuto objednávku Dodávají? Jakmile je objednávka doručena, může být nastaven na účtoval.
-ConfirmCloseOrderIfSending=Jste si jisti, že chcete ukončit tuto objednávku? Musíte uzavřít objednávku pouze tehdy, když všechny zásilku je hotovo.
+CloseOrder=Zavřená objednávka
+ConfirmCloseOrder=Jste si jisti, že chcete nastavit tuto objednávku na dodanou? Jakmile je objednávka doručena, může být nastavena na zaúčtovanou.
+ConfirmCloseOrderIfSending=Jste si jisti, že chcete ukončit tuto objednávku? Musíte uzavřít objednávku pouze tehdy, když jsou všechny zásilky vyřízeny.
 ConfirmDeleteOrder=Jste si jisti, že chcete odstranit tuto objednávku?
 ConfirmValidateOrder=Jste si jisti, že chcete tuto objednávku potvrdit pod názvem <b>%s?</b>
-ConfirmUnvalidateOrder=Jste si jisti, že chcete obnovit pořádek <b>%s</b> do stavu návrhu?
+ConfirmUnvalidateOrder=Jste si jisti, že chcete obnovit objednávku <b>%s</b> do stavu návrhu?
 ConfirmCancelOrder=Jste si jisti, že chcete zrušit tuto objednávku?
-ConfirmMakeOrder=Jste si jisti, že chcete potvrdit jsi tuto objednávku na <b>%s?</b>
+ConfirmMakeOrder=Jste si jisti, že chcete potvrdit tuto objednávku na <b>%s?</b>
 GenerateBill=Vytvořit fakturu
-ClassifyShipped=Klasifikovat dodáno
-ClassifyBilled=Klasifikovat účtovány
-ComptaCard=Účetnictví karty
-DraftOrders=Návrh usnesení
+ClassifyShipped=Klasifikovat jako dodáno
+ClassifyBilled=Klasifikovat jako účtováno
+ComptaCard=Karta účetnictví
+DraftOrders=Návrh objednávky
 RelatedOrders=Související objednávky
-RelatedCustomerOrders=Related customer orders
-RelatedSupplierOrders=Related supplier orders
-OnProcessOrders=V procesu objednávky
+RelatedCustomerOrders=Související objednávky zákazníků
+RelatedSupplierOrders=Související objednávky dodavatelů
+OnProcessOrders=Objednávka v procesu
 RefOrder=Ref. objednávka
 RefCustomerOrder=Ref. objednávka zákazníka
 RefCustomerOrderShort=Ref. zák. objednávka
-SendOrderByMail=Objednávku zašlete poštou
-ActionsOnOrder=Akce na objednávku
-NoArticleOfTypeProduct=Žádný článek typu &quot;výrobek&quot;, takže není shippable článek pro tuto objednávku
-OrderMode=Objednat metoda
-AuthorRequest=Žádost o autorovi
-UseCustomerContactAsOrderRecipientIfExist=Použití zákazníků kontaktní adresu je-li definována místo třetí strany adresu jako adresu příjemce objednávky
-RunningOrders=Objednávky na procesu
-UserWithApproveOrderGrant=Uživatelé poskytované s &quot;schvalovat objednávky&quot; svolení.
+SendOrderByMail=Objednávku zašlete mailem
+ActionsOnOrder=Události objednávek
+NoArticleOfTypeProduct=Žádný článek typu 'produkt', takže není dopravován článek pro tuto objednávku
+OrderMode=Metoda objednávky
+AuthorRequest=Požadavek autora
+UseCustomerContactAsOrderRecipientIfExist=Použití kontaktní adresy zákazníka, je-li definována místo adresy třetí strany jako adresu příjemce objednávky
+RunningOrders=Objednávky ve zpracování
+UserWithApproveOrderGrant=Uživateli poskytnuté povolení "schválit objednávky".
 PaymentOrderRef=Platba objednávky %s
-CloneOrder=Clone, aby
+CloneOrder=Zkopírování objednávky
 ConfirmCloneOrder=Jste si jisti, že chcete kopírovat tuto objednávku <b>%s?</b>
 DispatchSupplierOrder=Příjem %s dodavatelských objednávek
-FirstApprovalAlreadyDone=First approval already done
+FirstApprovalAlreadyDone=První schválení již učiněno
 ##### Types de contacts #####
-TypeContact_commande_internal_SALESREPFOLL=Zástupce následující-up, aby zákazník
-TypeContact_commande_internal_SHIPPING=Zástupce následující-up doprava
-TypeContact_commande_external_BILLING=Zákazník faktura kontakt
-TypeContact_commande_external_SHIPPING=Zákazník doprava kontakt
-TypeContact_commande_external_CUSTOMER=Kontakt se zákazníkem následující-up, aby
-TypeContact_order_supplier_internal_SALESREPFOLL=Zástupce následující-up, aby se s dodavately
+TypeContact_commande_internal_SALESREPFOLL=Zástupce následující-up, zákaznické objednávky
+TypeContact_commande_internal_SHIPPING=Zástupce následující-up dopravy
+TypeContact_commande_external_BILLING=Kontakt na zákaznické faktuře
+TypeContact_commande_external_SHIPPING=Kontakt zákazníka pro dopravu
+TypeContact_commande_external_CUSTOMER=Kontakt zákazníka následující-up objednávka
+TypeContact_order_supplier_internal_SALESREPFOLL=Zástupce následující-up, dodavatelská objednávka
 TypeContact_order_supplier_internal_SHIPPING=Zástupce následující-up doprava
-TypeContact_order_supplier_external_BILLING=Dodavatel fakturu kontakt
-TypeContact_order_supplier_external_SHIPPING=Dodavatel doprava kontakt
-TypeContact_order_supplier_external_CUSTOMER=S dodavately Spojit se následující-up, aby
+TypeContact_order_supplier_external_BILLING=Fakturační kontakt dodavaele
+TypeContact_order_supplier_external_SHIPPING=Dodací kontakt dodavatele
+TypeContact_order_supplier_external_CUSTOMER=Dodavatelský kontakt následující-up objednávky
 
-Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Konstantní COMMANDE_SUPPLIER_ADDON není definováno
-Error_COMMANDE_ADDON_NotDefined=Konstantní COMMANDE_ADDON není definováno
-Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File=Nepodařilo se načíst soubor modulu &quot;%s&quot;
-Error_FailedToLoad_COMMANDE_ADDON_File=Nepodařilo se načíst soubor modulu &quot;%s&quot;
-Error_OrderNotChecked=Žádné objednávky do faktury vybrané
+Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Konstanta COMMANDE_SUPPLIER_ADDON není definována
+Error_COMMANDE_ADDON_NotDefined=Konstanta COMMANDE_ADDON není definována
+Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File=Nepodařilo se načíst soubor modulu  '%s'
+Error_FailedToLoad_COMMANDE_ADDON_File=Nepodařilo se načíst soubor modulu  '%s'
+Error_OrderNotChecked=Žádné objednávky do faktury nebyly vybrané
 # Sources
-OrderSource0=Komerční návrh
+OrderSource0=Komerční nabídka
 OrderSource1=Internet
-OrderSource2=Mail kampaň
-OrderSource3=Telefon cipované
-OrderSource4=Fax kampaň
-OrderSource5=Obchodní
-OrderSource6=Skladujte
-QtyOrdered=Množství objednat
-AddDeliveryCostLine=Přidat přepravné čáru označující hmotnost objednávky
+OrderSource2=Mailová kampaň
+OrderSource3=Telefonní kampaň
+OrderSource4=Faxová kampaň
+OrderSource5=Komerční
+OrderSource6=Sklad
+QtyOrdered=Objednáno množství
+AddDeliveryCostLine=Přidat řádek ceny dopravy označující hmotnost objednávky
 # Documents models
-PDFEinsteinDescription=Kompletní objednávka modelu (logo. ..)
-PDFEdisonDescription=Jednoduchý model, aby
+PDFEinsteinDescription=Kompletní model objednávky (logo. ..)
+PDFEdisonDescription=Jednoduchý model objednávky
 PDFProformaDescription=Kompletní proforma faktura (logo ...)
 # Orders modes
 OrderByMail=Pošta
@@ -161,12 +161,12 @@ OrderByFax=Fax
 OrderByEMail=EMail
 OrderByWWW=Online
 OrderByPhone=Telefon
-CreateInvoiceForThisCustomer=Bill objednávky
-NoOrdersToInvoice=Žádné objednávky zúčtovatelné
-CloseProcessedOrdersAutomatically=Klasifikovat &quot;zpracování&quot; všechny vybrané příkazy.
-OrderCreation=Objednat tvorba
-Ordered=Objednal
+CreateInvoiceForThisCustomer=Fakturace objednávek
+NoOrdersToInvoice=Žádné fakturované objednávky
+CloseProcessedOrdersAutomatically=Klasifikovat jako "Probíhající" všechny vybrané objednávky.
+OrderCreation=Tvorba objednávky
+Ordered=Objednáno
 OrderCreated=Vaše objednávky byly vytvořeny
 OrderFail=Došlo k chybě během vytváření objednávky
 CreateOrders=Vytvoření objednávky
-ToBillSeveralOrderSelectCustomer=To create an invoice for several orders, click first onto customer, then choose "%s".
+ToBillSeveralOrderSelectCustomer=Chcete-li vytvořit fakturu z několika řádů, klikněte nejprve na zákazníka, pak zvolte "%s".
diff --git a/htdocs/langs/cs_CZ/other.lang b/htdocs/langs/cs_CZ/other.lang
index 86dab5ab3e18bd2e157ef0911ca320c37ada2f88..5f14fd018c2d0b2ee727988fef08989dd7ab65cc 100644
--- a/htdocs/langs/cs_CZ/other.lang
+++ b/htdocs/langs/cs_CZ/other.lang
@@ -2,109 +2,110 @@
 SecurityCode=Bezpečnostní kód
 Calendar=Kalendář
 Tools=Nástroje
-ToolsDesc=Tato oblast je určena pro skupiny různých strojů, které nejsou k dispozici na jiné položky menu. <br><br> Tyto nástroje se dostanete z menu na boku.
+ToolsDesc=Tato oblast je určena pro skupiny různých nástrojů, které nejsou k dispozici v jiných položkách menu. <br><br> Na tyto nástroje se dostanete z levého bočního menu
 Birthday=Narozeniny
 BirthdayDate=Narozeniny
-DateToBirth=Date of birth
-BirthdayAlertOn= narozeniny výstraha aktivní
-BirthdayAlertOff= narozeniny upozornění neaktivní
+DateToBirth=Datum narození
+BirthdayAlertOn= Připomenutí narozenin aktivní
+BirthdayAlertOff= Připomenutí narozenin neaktivní
 Notify_FICHINTER_VALIDATE=Intervence ověřena
-Notify_FICHINTER_SENTBYMAIL=Intervence poštou
-Notify_BILL_VALIDATE=Zákazník faktura ověřena
-Notify_BILL_UNVALIDATE=Zákazník faktura unvalidated
-Notify_ORDER_SUPPLIER_APPROVE=Dodavatel aby schválila
-Notify_ORDER_SUPPLIER_REFUSE=Dodavatel aby odmítl
-Notify_ORDER_VALIDATE=Zákazníka ověřena
-Notify_PROPAL_VALIDATE=Zákazník návrh ověřena
-Notify_PROPAL_CLOSE_SIGNED=Customer propal closed signed
-Notify_PROPAL_CLOSE_REFUSED=Customer propal closed refused
-Notify_WITHDRAW_TRANSMIT=Převodovka stažení
-Notify_WITHDRAW_CREDIT=Kreditní stažení
+Notify_FICHINTER_SENTBYMAIL=Intervence přes mail
+Notify_BILL_VALIDATE=Faktura zákazníka ověřena
+Notify_BILL_UNVALIDATE=Faktura zákazníka neověřena
+Notify_ORDER_SUPPLIER_VALIDATE=Dodavatelská objednávka uložena
+Notify_ORDER_SUPPLIER_APPROVE=Objednávka dodavatele schválena
+Notify_ORDER_SUPPLIER_REFUSE=Objednávka dodavatele odmítnuta
+Notify_ORDER_VALIDATE=Objednávka zákazníka ověřena
+Notify_PROPAL_VALIDATE=Nabídka zákazníka ověřena
+Notify_PROPAL_CLOSE_SIGNED=Zákazník propal uzavřel podpisem
+Notify_PROPAL_CLOSE_REFUSED=Zákazník propal zavřenýma odmítl
+Notify_WITHDRAW_TRANSMIT=Stažení převodu
+Notify_WITHDRAW_CREDIT=Stažení kreditu
 Notify_WITHDRAW_EMIT=Proveďte stažení
-Notify_ORDER_SENTBYMAIL=Zákazníka zasílaný poštou
+Notify_ORDER_SENTBYMAIL=Zákaznická objednávka zaslaná na mail
 Notify_COMPANY_CREATE=Třetí strana vytvořena
-Notify_COMPANY_SENTBYMAIL=Mails sent from third party card
-Notify_PROPAL_SENTBYMAIL=Komerční návrh zaslat poštou
-Notify_BILL_PAYED=Zákazník platí faktury
-Notify_BILL_CANCEL=Zákazník faktura zrušena
-Notify_BILL_SENTBYMAIL=Zákazník faktura zaslána poštou
-Notify_ORDER_SUPPLIER_VALIDATE=Supplier order recorded
-Notify_ORDER_SUPPLIER_SENTBYMAIL=Dodavatel odeslaná poštou
-Notify_BILL_SUPPLIER_VALIDATE=Dodavatel fakturu ověřena
-Notify_BILL_SUPPLIER_PAYED=Dodavatel fakturu platí
-Notify_BILL_SUPPLIER_SENTBYMAIL=Dodavatel fakturu poštou
-Notify_BILL_SUPPLIER_CANCELED=Supplier invoice cancelled
+Notify_COMPANY_SENTBYMAIL=Maily odeslané z karty třetí strany
+Notify_PROPAL_SENTBYMAIL=Komerční návrh zaslán e-mailem
+Notify_BILL_PAYED=Zákaznická faktura zaplacena
+Notify_BILL_CANCEL=Zákaznická faktura zrušena
+Notify_BILL_SENTBYMAIL=Zákaznická faktura zaslaná e-mailem
+Notify_ORDER_SUPPLIER_VALIDATE=Dodavatelská objednávka uložena
+Notify_ORDER_SUPPLIER_SENTBYMAIL=Dodavatelská objednávka zaslaná e.mailem
+Notify_BILL_SUPPLIER_VALIDATE=Dodavatelská faktura ověřena
+Notify_BILL_SUPPLIER_PAYED=Dodavatelská faktura zaplacena
+Notify_BILL_SUPPLIER_SENTBYMAIL=Dodavatelská faktura zaslaná e-mailem
+Notify_BILL_SUPPLIER_CANCELED=Dodavatelská faktura zrušena
 Notify_CONTRACT_VALIDATE=Smlouva ověřena
 Notify_FICHEINTER_VALIDATE=Intervence ověřena
-Notify_SHIPPING_VALIDATE=Poštovné ověřena
-Notify_SHIPPING_SENTBYMAIL=Doručení poštou
-Notify_MEMBER_VALIDATE=Člen ověřena
-Notify_MEMBER_MODIFY=Member modified
-Notify_MEMBER_SUBSCRIPTION=Člen upsaný
-Notify_MEMBER_RESILIATE=Člen resiliated
-Notify_MEMBER_DELETE=Člen smazán
-Notify_PROJECT_CREATE=Project creation
-Notify_TASK_CREATE=Task created
-Notify_TASK_MODIFY=Task modified
-Notify_TASK_DELETE=Task deleted
-SeeModuleSetup=See setup of module %s
-NbOfAttachedFiles=Počet připojených souborů / dokumentů
-TotalSizeOfAttachedFiles=Celková velikost připojených souborů / dokumentů
-MaxSize=Maximální rozměr
-AttachANewFile=Připojte nový soubor / dokument
+Notify_SHIPPING_VALIDATE=Doprava ověřena
+Notify_SHIPPING_SENTBYMAIL=Doprava odeslána mailem
+Notify_MEMBER_VALIDATE=Uživatel ověřen
+Notify_MEMBER_MODIFY=Uživatel upraven
+Notify_MEMBER_SUBSCRIPTION=Uživatel zapsaný
+Notify_MEMBER_RESILIATE=Uživatel resiliated
+Notify_MEMBER_DELETE=Uživatel smazán
+Notify_PROJECT_CREATE=Vytvoření projektu
+Notify_TASK_CREATE=Úkol vytvořen
+Notify_TASK_MODIFY=Úkol upraven
+Notify_TASK_DELETE=Úkol smazán
+SeeModuleSetup=Viz nastavení modulu %s
+NbOfAttachedFiles=Počet připojených souborů/dokumentů
+TotalSizeOfAttachedFiles=Celková velikost připojených souborů/dokumentů
+MaxSize=Maximální velikost
+AttachANewFile=Připojte nový soubor/dokument
 LinkedObject=Propojený objekt
 Miscellaneous=Smíšený
-NbOfActiveNotifications=Number of notifications (nb of recipient emails)
-PredefinedMailTest=Toto je test e-mailem. \\ NPokud dva řádky jsou odděleny znakem konce řádku. \n\n __ SIGNATURE__
-PredefinedMailTestHtml=Toto je <b>test-mail</b> (slovo test musí být tučně). <br> Dva řádky jsou odděleny znakem konce řádku. <br><br> __SIGNATURE__
-PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
-PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice  __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
-PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
-PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nYou will find here the price request __ASKREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
-PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
-PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
-PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
-PredefinedMailContentSendShipping=__CONTACTCIVNAME__\n\nYou will find here the shipping __SHIPPINGREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
-PredefinedMailContentSendFichInter=__CONTACTCIVNAME__\n\nYou will find here the intervention __FICHINTERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
+NbOfActiveNotifications=Počet hlášení (několik z příjemců e-mailů)
+PredefinedMailTest=Toto je testovací e-mail. \nTyto dva řádky jsou odděleny znakem konce řádku. \n\n __SIGNATURE__
+PredefinedMailTestHtml=Toto je <b>testovací</b> mail (slovo testovací musí být tučně). <br> Dva řádky jsou odděleny znakem konce řádku. <br><br> __SIGNATURE__
+PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nNajdete zde fakturu __FACREF__\n\n__PERSONALIZED__S pozdravem\n\n__SIGNATURE__
+PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nDovolujeme si vás upozornit, že faktura __FACREF__ pravděpodobně nebyla uhrazena. Jako upomínku vám ji v příloze zasíláme znovu.\n\n__PERSONALIZED__S pozdravem\n\n__SIGNATURE__
+PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nNajdete zde obchodní návrh __PROPREF__\n\n__PERSONALIZED__S pozdravem\n\n__SIGNATURE__
+PredefinedMailContentSendAskPriceSupplier=__CONTACTCIVNAME__\n\nNajdete zde cenový požadavek __ASKREF__\n\n__PERSONALIZED__S pozdravem\n\n__SIGNATURE__
+PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nNajdete zde objednávku  __ORDERREF__\n\n__PERSONALIZED__S pozdravem\n\n__SIGNATURE__
+PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nNajdete zde naši objednávku __ORDERREF__\n\n__PERSONALIZED__S pozdravem\n\n__SIGNATURE__
+PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nNajdete zde fakturu __FACREF__\n\n__PERSONALIZED__S pozdravem\n\n__SIGNATURE__
+PredefinedMailContentSendShipping=__CONTACTCIVNAME__\n\nNajdete zde dopravu __SHIPPINGREF__\n\n__PERSONALIZED__S pozdravem\n\n__SIGNATURE__
+PredefinedMailContentSendFichInter=__CONTACTCIVNAME__\n\nNajdete zde intervenci __FICHINTERREF__\n\n__PERSONALIZED__S pozdravem\n\n__SIGNATURE__
 PredefinedMailContentThirdparty=__CONTACTCIVNAME__\n\n__PERSONALIZED__\n\n__SIGNATURE__
-DemoDesc=Dolibarr je kompaktní ERP / CRM skládá z několika funkčních modulů. Demo, které obsahuje všechny moduly nic neznamená, protože to nikdy nedošlo. Takže několik demo profily jsou k dispozici.
-ChooseYourDemoProfil=Vyberte demo profil, který odpovídal vašemu činnost ...
-DemoFundation=Spravovat členy nadace
-DemoFundation2=Správa členů a bankovní účet nadace
-DemoCompanyServiceOnly=Správa volné noze činnost prodejní činnost pouze
-DemoCompanyShopWithCashDesk=Správa obchod s pokladnou
-DemoCompanyProductAndStocks=Správa malý nebo střední podnik, který prodává výrobky
-DemoCompanyAll=Správa malou nebo střední firmu s více činnostmi (všechny hlavní moduly)
+DemoDesc=Dolibarr je kompaktní ERP / CRM, který se  skládá z několika funkčních modulů. Demo, které obsahuje všechny moduly vám toho moc neřekne, protože v reálné situaci to nikdy nepoužijete. Pro lepší a snadnější seznámení s celým systémem máte k dispozici několik demo profilů lépe vystihujících vaše požadavky. 
+ChooseYourDemoProfil=Vyberte demo profil, který odpovídal vaší činnosti, nebo zaměření ...
+DemoFundation=Spravovat nadaci, nebo neziskovou organizaci a její členy
+DemoFundation2=Správa členů a bankovních účtů nadace nebo neziskové organizace
+DemoCompanyServiceOnly=Správa pouze prodejní činnosti malé firmy nebo nadace
+DemoCompanyShopWithCashDesk=Správa obchodu s pokladnou, e-shopu nebo obchodní činnost
+DemoCompanyProductAndStocks=Správa malého nebo středního podniku, který prodává své výrobky
+DemoCompanyAll=Správa malé nebo střední firmy s více činnostmi (všechny hlavní moduly)
 GoToDemo=Přejít na demo
 CreatedBy=Vytvořil %s
 ModifiedBy=Změnil %s
-ValidatedBy=Ověřena %s
-CanceledBy=Zrušena %s
+ValidatedBy=Ověřil %s
+CanceledBy=Zrušeno %s
 ClosedBy=Uzavřel %s
-CreatedById=User id who created
-ModifiedById=User id who made last change
-ValidatedById=User id who validated
-CanceledById=User id who canceled
-ClosedById=User id who closed
-CreatedByLogin=User login who created
-ModifiedByLogin=User login who made last change
-ValidatedByLogin=User login who validated
-CanceledByLogin=User login who canceled
-ClosedByLogin=User login who closed
+CreatedById=Uživatel id, který vytvořil
+ModifiedById=Uživatel id kdo udělal poslední změnu
+ValidatedById=Uživatel id který ověřil
+CanceledById=Uživatel id který zrušil
+ClosedById=Uživatel id který uzavřel
+CreatedByLogin=Uživatelské přihlášení, které vytvořil
+ModifiedByLogin=Přihlášený uživatel, který udělal poslední změnu
+ValidatedByLogin=Přihlášený uživatel, který ověřil
+CanceledByLogin=Přihlášený uživatel, který zrušil
+ClosedByLogin=Přihlášený uživatel, který uzavřel
 FileWasRemoved=Soubor %s byl odstraněn
 DirWasRemoved=Adresář %s byl odstraněn
-FeatureNotYetAvailableShort=K dispozici v příští verzi
+FeatureNotYetAvailableShort=K dispozici až v příští verzi
 FeatureNotYetAvailable=Funkce není dosud k dispozici v této verzi
 FeatureExperimental=Experimentální funkce. Není stabilní v této verzi
-FeatureDevelopment=Rozvoj funkce. Není stabilní v této verzi
+FeatureDevelopment=Vývojová funkce. Není stabilní v této verzi
 FeaturesSupported=Podporované funkce
 Width=Šířka
 Height=Výška
 Depth=Hloubka
-Top=Top
+Top=Horní
 Bottom=Spodní
 Left=Levý
-Right=Právo
+Right=Pravý
 CalculatedWeight=Vypočtená hmotnost
 CalculatedVolume=Vypočtený objem
 Weight=Hmotnost
@@ -143,98 +144,98 @@ SizeUnitdm=dm
 SizeUnitcm=cm
 SizeUnitmm=mm
 SizeUnitinch=palec
-SizeUnitfoot=noha
+SizeUnitfoot=stopa
 SizeUnitpoint=bod
 BugTracker=Hlášení chyb
-SendNewPasswordDesc=Tato forma umožňuje požádat o nové heslo. To bude zasláno na vaši e-mailovou adresu. <br> Změna se projeví až po kliknutí na potvrzovací odkaz uvnitř tohoto e-mailu. <br> Zkontrolujte, zda vaše e-čtečky software.
+SendNewPasswordDesc=Tento formulář umožňuje požádat o nové heslo. To bude zasláno na vaši e-mailovou adresu. <br> Změna se projeví až po kliknutí na potvrzovací odkaz uvnitř tohoto e-mailu. <br> Zkontrolujte vašeho mailového klienta, zaa vám mail dorazil
 BackToLoginPage=Zpět na přihlašovací stránku
-AuthenticationDoesNotAllowSendNewPassword=Režim ověřování je <b>%s.</b> <br> V tomto režimu lze Dolibarr nevím ani změnit heslo. <br> Obraťte se na správce systému, zda chcete změnit heslo.
-EnableGDLibraryDesc=Nainstalujte nebo povolte GD knihovnu s PHP pro tuto možnost využít.
-EnablePhpAVModuleDesc=Je třeba nainstalovat modul kompatibilní s vaší anti-virus. (Clamav: php4-clamavlib ou php5-clamavlib)
-ProfIdShortDesc=<b>Prof Id %s</b> je informace v závislosti na třetích stran země. <br> Například pro země <b>%s,</b> je to kód <b>%s.</b>
-DolibarrDemo=Dolibarr ERP / CRM demo
-StatsByNumberOfUnits=Statistika v řadě produktů / služeb jednotek
+AuthenticationDoesNotAllowSendNewPassword=Režim ověřování je <b>%s.</b> <br> V tomto režimu Dolibarr nepozná, zda může změnit vaše heslo. <br> Obraťte se na správce systému, pokud chcete heslo změnit.
+EnableGDLibraryDesc=Nainstalujte nebo povolte GD knihovnu ve vaší PHP pro využití této možnosti
+EnablePhpAVModuleDesc=Je třeba nainstalovat modul kompatibilní s vaší antivirovou ochranou. (Clamav: php4-clamavlib nebo php5-clamavlib)
+ProfIdShortDesc=<b>Prof Id %s</b> je informace v závislosti na třetích stranách země. <br> Například pro země <b>%s,</b> je to kód <b>%s.</b>
+DolibarrDemo=Dolibarr ERP/CRM demo
+StatsByNumberOfUnits=Statistika v počtu produktů/služeb jednotek
 StatsByNumberOfEntities=Statistika v počtu odkazujících subjektů
-NumberOfProposals=Počet návrhů na poslední 12 měsíců
-NumberOfCustomerOrders=Počet zákaznických objednávek na poslední 12 měsíců
-NumberOfCustomerInvoices=Počet zákaznických faktur na poslední 12 měsíců
-NumberOfSupplierOrders=Number of supplier orders on last 12 month
-NumberOfSupplierInvoices=Počet dodavatelských faktur na poslední 12 měsíců
-NumberOfUnitsProposals=Počet jednotek na návrhy na poslední 12 měsíců
-NumberOfUnitsCustomerOrders=Počet kusů na zákaznických objednávek na poslední 12 měsíců
-NumberOfUnitsCustomerInvoices=Počet kusů na zákazníka faktur na poslední 12 měsíců
-NumberOfUnitsSupplierOrders=Number of units on supplier orders on last 12 month
-NumberOfUnitsSupplierInvoices=Počet kusů na dodavatelských faktur na poslední 12 měsíců
+NumberOfProposals=Počet nabídek za posledních 12 měsíců
+NumberOfCustomerOrders=Počet zákaznických objednávek za posledních 12 měsíců
+NumberOfCustomerInvoices=Počet zákaznických faktur za posledních 12 měsíců
+NumberOfSupplierOrders=Počet dodavatelských objednávek za posledních 12 měsíců
+NumberOfSupplierInvoices=Počet dodavatelských faktur za posledních 12 měsíců
+NumberOfUnitsProposals=Počet jednotek na nabídky za posledních 12 měsíců
+NumberOfUnitsCustomerOrders=Počet zákaznických objednávek za posledních 12 měsíců
+NumberOfUnitsCustomerInvoices=Počet zákaznických faktur za posledních 12 měsíců
+NumberOfUnitsSupplierOrders=Počet kusů na dodavatelských objednávkách za posledních 12 měsíců
+NumberOfUnitsSupplierInvoices=Počet dodavatelských faktur za posledních 12 měsíců
 EMailTextInterventionValidated=Zásah %s byl ověřen.
-EMailTextInvoiceValidated=Faktura %s byl ověřen.
-EMailTextProposalValidated=Návrh %s byl ověřen.
-EMailTextOrderValidated=Aby %s byl ověřen.
-EMailTextOrderApproved=Aby %s byl schválen.
-EMailTextOrderValidatedBy=The order %s has been recorded by %s.
-EMailTextOrderApprovedBy=Aby %s byl schválen %s.
-EMailTextOrderRefused=Aby %s byla zamítnuta.
-EMailTextOrderRefusedBy=Aby %s bylo odmítnuto podle %s.
-EMailTextExpeditionValidated=Přepravní %s byl ověřen.
-ImportedWithSet=Dovoz soubor dat
+EMailTextInvoiceValidated=Faktura %s byla ověřena.
+EMailTextProposalValidated=Nabídka %s byla ověřena.
+EMailTextOrderValidated=Objednávka %s byla ověřena.
+EMailTextOrderApproved=Objednávka %s byla schválena.
+EMailTextOrderValidatedBy=Objednávka %s byla zaznamenána %s.
+EMailTextOrderApprovedBy=Objednávka %s byla schválena %s.
+EMailTextOrderRefused=Objednávka %s byla zamítnuta.
+EMailTextOrderRefusedBy=Objednávka %s byla odmítnuta podle %s.
+EMailTextExpeditionValidated=Přeprava %s byla ověřena.
+ImportedWithSet=Import souboru dat
 DolibarrNotification=Automatické upozornění
-ResizeDesc=Zadejte novou šířku <b>nebo</b> výšku nové. Poměr budou uchovávány při změně velikosti ...
+ResizeDesc=Zadejte novou šířku <b>nebo</b> novou výšku. Poměry budou uchovávány při změně velikosti ...
 NewLength=Nová šířka
 NewHeight=Nová výška
 NewSizeAfterCropping=Nová velikost po ořezu
-DefineNewAreaToPick=Definovat novou oblast na obrázek pro jeho vyzvednutí (levým tlačítkem myši na obrázek a pak táhněte, dokud se nedostanete na protější roh)
-CurrentInformationOnImage=Tento nástroj byl navržen tak, aby vám pomůže změnit velikost nebo oříznout obrázek. To je informace o aktuálním editovaného obrázku
+DefineNewAreaToPick=Definujte novou oblast obrázku pro jeho vložení klikněte (levým tlačítkem myši na obrázek a pak táhněte, dokud se nedostanete na protější roh)
+CurrentInformationOnImage=Tento nástroj byl navržen tak, aby vám pomohl změnit velikost nebo oříznout obrázek. Toto je informace o aktuálním editovaném obrázku
 ImageEditor=Editor obrázků
-YouReceiveMailBecauseOfNotification=Tato zpráva se zobrazí, protože Váš e-mail byl přidán na seznam cílů, které mají být o jednotlivých akcích na %s %s softwaru.
+YouReceiveMailBecauseOfNotification=Tato zpráva se zobrazí, protože Váš e-mail byl přidán na seznam cílů, které mají být informovány o jednotlivých akcích na %s softwaru %s.
 YouReceiveMailBecauseOfNotification2=Tato akce je následující:
-ThisIsListOfModules=Toto je seznam modulů předem zvolených tohoto demo profilu (pouze nejběžnější moduly jsou vidět v této ukázce). Editovat mít více osobní demo a klikněte na tlačítko &quot;Start&quot;.
+ThisIsListOfModules=Toto je seznam předem vybraných modulů pro toto demo profilu (v ukázce vidíte pouze nejběžnější moduly). Pro více osobní nastavení můžete vypnuté moduly aktivovat, nebo deaktivovat. Poté klikněte na tlačítko "Start".
 ClickHere=Klikněte zde
 UseAdvancedPerms=Použijte pokročilé oprávnění některých modulů
 FileFormat=Formát souboru
 SelectAColor=Vyberte si barvu
 AddFiles=Přidat soubory
-StartUpload=Začněte nahrávat
-CancelUpload=Zrušení nahrávání
-FileIsTooBig=Soubory je příliš velký
-PleaseBePatient=Prosím o chvilku strpení ...
-RequestToResetPasswordReceived=Požadavek na změnu své heslo Dolibarr byl přijat
-NewKeyIs=To je vaše nové klíče k přihlášení
-NewKeyWillBe=Váš nový klíč pro přihlášení do softwaru bude
+StartUpload=Start uploadu
+CancelUpload=Zrušení uploadu
+FileIsTooBig=Soubor je příliš velký
+PleaseBePatient=Prosím o chvilku strpení ... dřu jako kůň ....
+RequestToResetPasswordReceived=Požadavek na změnu vašeho hesla do Dolibarru byl přijat
+NewKeyIs=To je vaše nové heslo k přihlášení
+NewKeyWillBe=Vaše nové heslo pro přihlášení do softwaru bude
 ClickHereToGoTo=Klikněte zde pro přechod na %s
 YouMustClickToChange=Musíte však nejprve kliknout na následující odkaz pro potvrzení této změny hesla
-ForgetIfNothing=Pokud jste o tuto změnu, stačí zapomenout na tento e-mail. Vaše přihlašovací údaje jsou v bezpečí.
-IfAmountHigherThan=If amount higher than <strong>%s</strong>
+ForgetIfNothing=Pokud jste o tuto změnu nežádali, stačí pouze odstranit tento e-mail. Vaše přihlašovací údaje jsou v bezpečí.
+IfAmountHigherThan=je-li množství vyšší než <strong>%s</strong>
 
 ##### Calendar common #####
 AddCalendarEntry=Přidat záznam do kalendáře %s
-NewCompanyToDolibarr=Company %s added
-ContractValidatedInDolibarr=Contract %s validated
-ContractCanceledInDolibarr=Contract %s canceled
-ContractClosedInDolibarr=Contract %s closed
-PropalClosedSignedInDolibarr=Proposal %s signed
-PropalClosedRefusedInDolibarr=Proposal %s refused
-PropalValidatedInDolibarr=Proposal %s validated
-PropalClassifiedBilledInDolibarr=Proposal %s classified billed
-InvoiceValidatedInDolibarr=Invoice %s validated
-InvoicePaidInDolibarr=Invoice %s changed to paid
-InvoiceCanceledInDolibarr=Invoice %s canceled
-PaymentDoneInDolibarr=Payment %s done
-CustomerPaymentDoneInDolibarr=Customer payment %s done
-SupplierPaymentDoneInDolibarr=Supplier payment %s done
-MemberValidatedInDolibarr=Member %s validated
-MemberResiliatedInDolibarr=Member %s resiliated
-MemberDeletedInDolibarr=Member %s deleted
-MemberSubscriptionAddedInDolibarr=Subscription for member %s added
-ShipmentValidatedInDolibarr=Shipment %s validated
-ShipmentDeletedInDolibarr=Shipment %s deleted
+NewCompanyToDolibarr=Společnost %s přidána
+ContractValidatedInDolibarr=Kontrakt %s ověřen
+ContractCanceledInDolibarr=Kontrakt %s zrušen
+ContractClosedInDolibarr=Kontrakt %s uzavřen
+PropalClosedSignedInDolibarr=Nabídka %s podepsána
+PropalClosedRefusedInDolibarr=Nabídka %s odmítnuta
+PropalValidatedInDolibarr=Nabídka %s schválena
+PropalClassifiedBilledInDolibarr=Nabídka %s klasifikovaná jako zaúčtovaná
+InvoiceValidatedInDolibarr=Faktura %s schválena
+InvoicePaidInDolibarr=Faktura %s změněna na zaplacenou
+InvoiceCanceledInDolibarr=Faktura %s zrušena
+PaymentDoneInDolibarr=Platba %s provedena
+CustomerPaymentDoneInDolibarr=Zákaznická platba %s provedena
+SupplierPaymentDoneInDolibarr=Dodavatelská platba %s provedena
+MemberValidatedInDolibarr=Uživatel %s ověřen
+MemberResiliatedInDolibarr=Uživatel %s resiliated
+MemberDeletedInDolibarr=Uživatel %s smazán
+MemberSubscriptionAddedInDolibarr=Předplatné pro člena %s přidáno
+ShipmentValidatedInDolibarr=Doprava %s ověřena
+ShipmentDeletedInDolibarr=Doprava %s odstraněna
 ##### Export #####
 Export=Export
-ExportsArea=Vývoz plocha
+ExportsArea=Exportní plocha
 AvailableFormats=Dostupné formáty
-LibraryUsed=Librairy používá
+LibraryUsed=Používá knihovnu
 LibraryVersion=Verze
 ExportableDatas=Exportovatelné údaje
-NoExportableData=Exportovat žádné údaje (žádné moduly s převoditelnými načtení dat, nebo chybějící oprávnění)
+NoExportableData=Žádná data pro export (žádné moduly s exportovatelnými daty, nebo chybějící oprávnění)
 ToExport=Export
-NewExport=New export
+NewExport=Nový export
 ##### External sites #####
 ExternalSites=Externí stránky
diff --git a/htdocs/langs/cs_CZ/paybox.lang b/htdocs/langs/cs_CZ/paybox.lang
index 629bf09cbefc328104f24707280102a5fecbb246..4660b8d41aa1563f3a9adf03aa157540c763d2b7 100644
--- a/htdocs/langs/cs_CZ/paybox.lang
+++ b/htdocs/langs/cs_CZ/paybox.lang
@@ -1,40 +1,40 @@
 # Dolibarr language file - Source file is en_US - paybox
-PayBoxSetup=Paybox modul nastavení
-PayBoxDesc=Tento modul nabízejí stránky, které umožní platby na <a href="http://www.paybox.com" target="_blank">Paybox</a> zákazníky. Toho lze využít pro volný platbu nebo platbu na určitý objekt Dolibarr (faktury, objednávky, ...)
-FollowingUrlAreAvailableToMakePayments=Následující adresy URL jsou k dispozici nabídnout stránky na zákazníka, aby platbu na Dolibarr objektů
-PaymentForm=Platba formulář
-WelcomeOnPaymentPage=Vítáme Vás na naší on-line platební služby
+PayBoxSetup=Nastavení modulu PayBox
+PayBoxDesc=Tento modul nabízejí stránky, které umožní platby na <a href="http://www.paybox.com" target="_blank">Paybox</a> zákazníky. Toho lze využít pro volnou platbu nebo platbu na určitý objekt Dolibarr (faktury, objednávky, ...)
+FollowingUrlAreAvailableToMakePayments=Přes URL jsou k dispozici nabízené stránky, které zákazníkovi umožní provést platbu na Dolibarr objektech
+PaymentForm=Formulář platby
+WelcomeOnPaymentPage=Vítáme Vás na naší on-line platební službě
 ThisScreenAllowsYouToPay=Tato obrazovka vám umožní provést on-line platbu %s.
-ThisIsInformationOnPayment=Jsou to informace o platbě dělat
+ThisIsInformationOnPayment=Jsou zde informace o provedené platbě
 ToComplete=Chcete-li dokončit
-YourEMail=E-mail obdržet potvrzení platby
+YourEMail=E-mail pro potvrzení platby
 Creditor=Věřitel
 PaymentCode=Platební kód
-PayBoxDoPayment=Jít na zaplacení
-YouWillBeRedirectedOnPayBox=Budete přesměrováni na zabezpečené stránky Paybox vstupní vás informace o kreditní kartě
+PayBoxDoPayment=Jít na platbu
+YouWillBeRedirectedOnPayBox=Budete přesměrováni na zabezpečené stránky Paybox pro vstupní informace o kreditní kartě
 PleaseBePatient=Prosím, buďte trpěliví
 Continue=Další
 ToOfferALinkForOnlinePayment=URL pro %s platby
-ToOfferALinkForOnlinePaymentOnOrder=URL nabídnout %s on-line platební uživatelské rozhraní pro objednávky zákazníka
-ToOfferALinkForOnlinePaymentOnInvoice=URL nabídnout %s on-line platební uživatelské rozhraní pro zákazníka faktury
-ToOfferALinkForOnlinePaymentOnContractLine=URL nabídnout %s on-line platební uživatelské rozhraní pro smlouvy linky
-ToOfferALinkForOnlinePaymentOnFreeAmount=URL nabídnout %s on-line platební uživatelské rozhraní pro volný částku
-ToOfferALinkForOnlinePaymentOnMemberSubscription=URL nabídnout %s on-line platební uživatelské rozhraní pro členské předplatné
-YouCanAddTagOnUrl=Můžete také přidat parametr URL <b>&amp; tag = <i>hodnota</i></b> na některou z těchto URL (nutné pouze pro volný platby) přidat vlastní komentář platební tag.
-SetupPayBoxToHavePaymentCreatedAutomatically=Nastavte si Paybox s url <b>%s</b> mít platba vytvořena automaticky při ověřena Paybox.
+ToOfferALinkForOnlinePaymentOnOrder=URL nabízí %s on-line platební uživatelské rozhraní pro objednávky zákazníka
+ToOfferALinkForOnlinePaymentOnInvoice=URL nabízí %s on-line platební uživatelské rozhraní pro zákaznické faktury
+ToOfferALinkForOnlinePaymentOnContractLine=URL nabízí %s on-line platební uživatelské rozhraní pro řádky smluv
+ToOfferALinkForOnlinePaymentOnFreeAmount=URL nabízí %s on-line platební uživatelské rozhraní pro volnou částku
+ToOfferALinkForOnlinePaymentOnMemberSubscription=URL nabízí %s on-line platební uživatelské rozhraní pro členské předplatné
+YouCanAddTagOnUrl=Můžete také přidat parametr URL <b>&tag = <i>hodnota</i></b> na některou z těchto URL (nutné pouze pro volné platby) a přidat vlastní komentář platby.
+SetupPayBoxToHavePaymentCreatedAutomatically=Nastavte si PayBox s url <b>%s</b> pro možnost vytvoření automaticky při ověřeí Payboxu.
 YourPaymentHasBeenRecorded=Tato stránka potvrzuje, že platba byla zaznamenána. Děkuju.
 YourPaymentHasNotBeenRecorded=Vaše platba nebyla zaznamenána a transakce byla zrušena. Děkuju.
 AccountParameter=Parametry účtu
-UsageParameter=Použití parametrů
+UsageParameter=Použité parametry
 InformationToFindParameters=Pomozte najít %s informace o účtu
 PAYBOX_CGI_URL_V2=URL Paybox modulu CGI pro platbu
 VendorName=Název dodavatele
-CSSUrlForPaymentForm=CSS stylů url platebního formuláře
-MessageOK=Zpráva o ověřených straně platební návratu
-MessageKO=Zpráva o zrušení straně platební návratu
+CSSUrlForPaymentForm=CSS styly url platebního formuláře
+MessageOK=Návratová stránka se zprávou o schválení platby
+MessageKO=Návratová stránka se zprávou o zrušení platby
 NewPayboxPaymentReceived=Nový Paybox přijaté platby
-NewPayboxPaymentFailed=Nový Paybox platba snažil se ale propadal
-PAYBOX_PAYONLINE_SENDEMAIL=E-mail upozornit po platbě (úspěch nebo selhání)
-PAYBOX_PBX_SITE=Value for PBX SITE
-PAYBOX_PBX_RANG=Value for PBX Rang
-PAYBOX_PBX_IDENTIFIANT=Value for PBX ID
+NewPayboxPaymentFailed=Nový Paybox platba zadána, ale neprošla
+PAYBOX_PAYONLINE_SENDEMAIL=E-mail pro upozornění po platbě (úspěch nebo selhání)
+PAYBOX_PBX_SITE=Hodnota PBX SITE
+PAYBOX_PBX_RANG=Hodnota pro PBX rozsah
+PAYBOX_PBX_IDENTIFIANT=Hodnota pro PBX ID
diff --git a/htdocs/langs/cs_CZ/paypal.lang b/htdocs/langs/cs_CZ/paypal.lang
index efb43b290906c23c95b6a9e60650992b0c18ba58..c616e3d45faf461b419022e1a99605b8778d6a3b 100644
--- a/htdocs/langs/cs_CZ/paypal.lang
+++ b/htdocs/langs/cs_CZ/paypal.lang
@@ -1,25 +1,25 @@
 # Dolibarr language file - Source file is en_US - paypal
-PaypalSetup=PayPal modul nastavení
-PaypalDesc=Tento modul nabízejí stránky, které umožní platby na <a href="http://www.paypal.com" target="_blank">PayPal</a> zákazníky. Toho lze využít pro volný platbu nebo platbu na určitý objekt Dolibarr (faktury, objednávky, ...)
-PaypalOrCBDoPayment=Platit kreditní kartou nebo Paypal
-PaypalDoPayment=Platby pomocí PayPal
+PaypalSetup=Nastavení modulu PayPal
+PaypalDesc=Tento modul nabízejí stránky, které umožní zákazníkům platby prostřednictvím <a href="http://www.paypal.com" target="_blank">PayPal</a>. Toho lze využít pro snadnou platbu nebo platbu na určitý objekt Dolibarr (faktury, objednávky, ...)
+PaypalOrCBDoPayment=Platit přes PayPal nebo kreditní kartou
+PaypalDoPayment=Plaťte s PayPal
 PaypalCBDoPayment=Platit kreditní kartou
-PAYPAL_API_SANDBOX=Režim test / pískoviště
+PAYPAL_API_SANDBOX=Testovací/sandbox režim
 PAYPAL_API_USER=API uživatelské jméno
 PAYPAL_API_PASSWORD=API heslo
 PAYPAL_API_SIGNATURE=API podpis
-PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Nabídka platba &quot;integrální&quot; (Credit card + Paypal) nebo &quot;Paypal&quot; pouze
-PaypalModeIntegral=Integrální
-PaypalModeOnlyPaypal=PayPal pouze
-PAYPAL_CSS_URL=Optionnal URL stylů CSS na platební stránky
-ThisIsTransactionId=To je id transakce: <b>%s</b>
-PAYPAL_ADD_PAYMENT_URL=Přidat URL Paypal platby při odeslání dokumentu e-mailem
-PAYPAL_IPN_MAIL_ADDRESS=E-mailová adresa pro okamžité oznámení o platbě (IPN)
-PredefinedMailContentLink=Můžete kliknout na níže uvedený odkaz bezpečné provést platbu (PayPal), pokud se tak již nebylo učiněno. \n\n %s \n\n
-YouAreCurrentlyInSandboxMode=Ty jsou v současné době v &quot;sandbox&quot; módu
-NewPaypalPaymentReceived=Nový Paypal přijaté platby
-NewPaypalPaymentFailed=Nový Paypal platební snažil se ale propadal
-PAYPAL_PAYONLINE_SENDEMAIL=E-mail upozornit po platbě (úspěch nebo ne)
-ReturnURLAfterPayment=Return URL after payment
-ValidationOfPaypalPaymentFailed=Validation of Paypal payment failed
-PaypalConfirmPaymentPageWasCalledButFailed=Payment confirmation page for Paypal was called by Paypal but confirmation failed
+PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Nabídka platby "integral" (Kreditní karta+Paypal) nebo pouze "Paypal" 
+PaypalModeIntegral=Integral
+PaypalModeOnlyPaypal=Pouze PayPal
+PAYPAL_CSS_URL=Optimální URL ze stylů CSS na platební stránky
+ThisIsTransactionId=Toto je id transakce: <b>%s</b>
+PAYPAL_ADD_PAYMENT_URL=Přidat URL platby PayPal při odeslání dokumentu e-mailem
+PAYPAL_IPN_MAIL_ADDRESS=E-mailová adresa pro rychlé oznámení o platbě (IPN)
+PredefinedMailContentLink=Můžete kliknout na níže uvedený odkaz pro bezpečné provedení platby (PayPal), pokud jste tak již neudělal dříve. \n\n %s \n\n
+YouAreCurrentlyInSandboxMode=Platby jsou v současné době v testovacím režimu "sandbox"
+NewPaypalPaymentReceived=Nové přijaté PayPal platby
+NewPaypalPaymentFailed=Nová PayPal platba neprošla
+PAYPAL_PAYONLINE_SENDEMAIL=Upozorňující e-mail po platbě (úspěch nebo zamítnutí)
+ReturnURLAfterPayment=Návratová URL po platbě
+ValidationOfPaypalPaymentFailed=Ověření platby PayPal selhalo
+PaypalConfirmPaymentPageWasCalledButFailed=Potvrzovací stránka platby byla volána přes PayPal, ale potvrzení selhalo
diff --git a/htdocs/langs/cs_CZ/printipp.lang b/htdocs/langs/cs_CZ/printipp.lang
index 835e6827f12ee4e466c21f2ee540526389fa7e03..9aaa2aade01debec47b5730f584a9d2c509aabbc 100644
--- a/htdocs/langs/cs_CZ/printipp.lang
+++ b/htdocs/langs/cs_CZ/printipp.lang
@@ -1,14 +1,14 @@
 # Dolibarr language file - Source file is en_US - printipp
-PrintIPPSetup=Setup of Direct Print module
-PrintIPPDesc=This module adds a Print button to send documents directly to a printer. It requires a Linux system with CUPS installed.
-PRINTIPP_ENABLED=Show "Direct print" icon in document lists
-PRINTIPP_HOST=Print server
+PrintIPPSetup=Nastavení tiskového modulu Direct
+PrintIPPDesc=Tento modul přidá tlačítko Tisk pro odeslání dokumentu přímo na tiskárnu. To vyžaduje systém Linux s nainstalovaným CUPS.
+PRINTIPP_ENABLED=Zobrazit ikonu "Přímý tisk" v seznamech dokumentů
+PRINTIPP_HOST=Tiskový server
 PRINTIPP_PORT=Port
-PRINTIPP_USER=Login
-PRINTIPP_PASSWORD=Password
-NoPrinterFound=No printers found (check your CUPS setup)
-FileWasSentToPrinter=File %s was sent to printer
-NoDefaultPrinterDefined=No default printer defined
-DefaultPrinter=Default printer
-Printer=Printer
-CupsServer=CUPS Server
+PRINTIPP_USER=Přihlášení
+PRINTIPP_PASSWORD=Heslo
+NoPrinterFound=Nebyly nalezeny žádné tiskárny (zkontrolujte nastavení CUPS)
+FileWasSentToPrinter=Soubor %s byl poslán na tiskárnu
+NoDefaultPrinterDefined=Není definována žádná výchozí tiskárna
+DefaultPrinter=Výchozí tiskárna
+Printer=Tiskárna
+CupsServer=CUPS server
diff --git a/htdocs/langs/cs_CZ/productbatch.lang b/htdocs/langs/cs_CZ/productbatch.lang
index 85b1d27f3a611763b0bf7454a46c40772432354b..aad274b167bd5ba270df740dee29d3780a4bb93b 100644
--- a/htdocs/langs/cs_CZ/productbatch.lang
+++ b/htdocs/langs/cs_CZ/productbatch.lang
@@ -1,22 +1,22 @@
 # ProductBATCH language file - en_US - ProductBATCH
-ManageLotSerial=Use lot/serial number
-ProductStatusOnBatch=Yes (lot/serial required)
-ProductStatusNotOnBatch=No (lot/serial not used)
-ProductStatusOnBatchShort=Yes
-ProductStatusNotOnBatchShort=No
-Batch=Lot/Serial
-atleast1batchfield=Eat-by date or Sell-by date or Lot/Serial number
-batch_number=Lot/Serial number
-BatchNumberShort=Lot/Serial
-l_eatby=Eat-by date
-l_sellby=Sell-by date
-DetailBatchNumber=Lot/Serial details
-DetailBatchFormat=Lot/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d)
-printBatch=Lot/Serial: %s
-printEatby=Eat-by: %s
-printSellby=Sell-by: %s
+ManageLotSerial=Použijte množství/sériové číslo
+ProductStatusOnBatch=Ano (množství/sériové číslo vyžadováno)
+ProductStatusNotOnBatch=Ne (množství/sériové číslo není použito)
+ProductStatusOnBatchShort=Ano
+ProductStatusNotOnBatchShort=Ne
+Batch=Množství/sériové
+atleast1batchfield=Spotřeba podle data nebo datum prodeje nebo množství/sériové číslo
+batch_number=Množství/Sériové číslo
+BatchNumberShort=Množství/Série
+l_eatby=Spotřeba podle data
+l_sellby=Prodej podle data
+DetailBatchNumber=Detail množství/série 
+DetailBatchFormat=Množství/Sériel: %s - Spotřeba: %s - Prodej: %s (Qty : %d)
+printBatch=Množství/Série: %s
+printEatby=Spotřeba: %s
+printSellby=Prodej: %s
 printQty=Qty: %d
-AddDispatchBatchLine=Add a line for Shelf Life dispatching
-BatchDefaultNumber=Undefined
-WhenProductBatchModuleOnOptionAreForced=When module Lot/Serial is on, increase/decrease stock mode is forced to last choice and can't be edited. Other options can be defined as you want.
-ProductDoesNotUseBatchSerial=This product does not use batch/serial number
+AddDispatchBatchLine=Přidat řádek pro dispečink  skladovatelnosti
+BatchDefaultNumber=Nedefinováno
+WhenProductBatchModuleOnOptionAreForced=Když modul množství/série je zapnut, zvýšení/snížení ve skladovém režimu je vyhrazeno poslední volbě a nelze jej upravovat. Další možnosti lze definovat, jak požadujete
+ProductDoesNotUseBatchSerial=Tento produkt nepoužívá šarže/sériové číslo
diff --git a/htdocs/langs/cs_CZ/products.lang b/htdocs/langs/cs_CZ/products.lang
index ac390130cb194c0ff208505d737552e79a9342d7..956df5e0b97c5d31571aefab203ce06d724fcd2c 100644
--- a/htdocs/langs/cs_CZ/products.lang
+++ b/htdocs/langs/cs_CZ/products.lang
@@ -1,12 +1,12 @@
 # Dolibarr language file - Source file is en_US - products
 ProductRef=Produkt čj.
-ProductLabel=Produkt štítek
-ProductServiceCard=Produkty / služby karty
+ProductLabel=Štítek produktu
+ProductServiceCard=Karta produktů/služeb
 Products=Produkty
 Services=Služby
 Product=Produkt
 Service=Služba
-ProductId=Produktu / služby id
+ProductId=ID Produktu/služby
 Create=Vytvořit
 Reference=Reference
 NewProduct=Nový produkt
@@ -14,39 +14,39 @@ NewService=Nová služba
 ProductCode=Kód produktu
 ServiceCode=Servisní kód
 ProductVatMassChange=Hromadná změna DPH
-ProductVatMassChangeDesc=This page can be used to modify a VAT rate defined on products or services from a value to another. Warning, this change is done on all database.
-MassBarcodeInit=Mass barcode init
-MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete.
-ProductAccountancyBuyCode=Účetnictví kód (koupit)
-ProductAccountancySellCode=Účetnictví kód (prodej)
+ProductVatMassChangeDesc=Tuto stránku lze použít k úpravě sazby DPH definované u produktů nebo služeb  z jedné do druhé hodnoty. Varování:  Tato změna se provádí ve všech databázích!!.
+MassBarcodeInit=Hromadný čárový kód inicializace
+MassBarcodeInitDesc=Tato stránka může být použita k inicializaci čárového kódu na objekty, které nemají definovaný čárový kód. Zkontrolujte před touto akcí, zda je nastavení modulu čárového kódu kompletní.
+ProductAccountancyBuyCode=Účetní kód (nákup)
+ProductAccountancySellCode=Účetní kód (prodej)
 ProductOrService=Produkt nebo služba
 ProductsAndServices=Produkty a služby
 ProductsOrServices=Výrobky nebo služby
-ProductsAndServicesOnSell=Products and Services for sale or for purchase
-ProductsAndServicesNotOnSell=Products and Services out of sale
-ProductsAndServicesStatistics=Produkty a služby statistika
-ProductsStatistics=Produkty statistiky
-ProductsOnSell=Product for sale or for pruchase
-ProductsNotOnSell=Product out of sale and out of purchase
-ProductsOnSellAndOnBuy=Products for sale and for purchase
-ServicesOnSell=Services for sale or for purchase
-ServicesNotOnSell=Services out of sale
-ServicesOnSellAndOnBuy=Services for sale and for purchase
+ProductsAndServicesOnSell=Produkty a služby na prodej nebo k nákupu
+ProductsAndServicesNotOnSell=Produkty a služby z prodeje
+ProductsAndServicesStatistics=Statistiky produktů a služeb
+ProductsStatistics=Statistiky produktů
+ProductsOnSell=Produkt k prodeji nebo k nákupu
+ProductsNotOnSell=Produkty vyřazené z prodeje nebo nákupu
+ProductsOnSellAndOnBuy=Produkty pro prodej a pro nákup
+ServicesOnSell=Služby k prodeji nebo k nákupu
+ServicesNotOnSell=Služby vyřazené z prodeje
+ServicesOnSellAndOnBuy=Služby pro prodej a pro nákup
 InternalRef=Interní referenční číslo
-LastRecorded=Nejnovější produkty / služby na prodeji zaznamenán
-LastRecordedProductsAndServices=Poslední %s zaznamenán produktů / služeb
-LastModifiedProductsAndServices=Poslední %s modifikované produkty / služby
-LastRecordedProducts=Poslední %s produkty zaznamenán
+LastRecorded=Poslední produkty/služby vložené do prodeje
+LastRecordedProductsAndServices=Poslední %s zaznamené produkty/služby
+LastModifiedProductsAndServices=Poslední %s modifikované produkty/služby
+LastRecordedProducts=Poslední zaznamenané %s produkty
 LastRecordedServices=Poslední zaznamenané %s služby
 LastProducts=Nejnovější produkty
 CardProduct0=Karta produktu
 CardProduct1=Servisní karta
-CardContract=Smlouva karty
+CardContract=Karta smluv
 Warehouse=Sklad
 Warehouses=Sklady
-WarehouseOpened=Warehouse otevřel
-WarehouseClosed=Sklad uzavřen
-Stock=Sklad
+WarehouseOpened=Otevřené sklady
+WarehouseClosed=Uzavřené sklady
+Stock=Zásoba
 Stocks=Zásoby
 Movement=Pohyb
 Movements=Pohyby
@@ -64,7 +64,7 @@ ProductStatusNotOnBuy=Nelze zakoupit
 ProductStatusOnBuyShort=Pro nákup
 ProductStatusNotOnBuyShort=Nelze zakoupit
 UpdatePrice=Aktualizovat ceny
-AppliedPricesFrom=Aplikovaná ceny od
+AppliedPricesFrom=Aplikované ceny od
 SellingPrice=Prodejní cena
 SellingPriceHT=Prodejní cena (bez DPH)
 SellingPriceTTC=Prodejní cena (vč. DPH)
@@ -72,71 +72,71 @@ PublicPrice=Veřejná cena
 CurrentPrice=Aktuální cena
 NewPrice=Nová cena
 MinPrice=Minimální cena
-MinPriceHT=Minim. selling price (net of tax)
-MinPriceTTC=Minim. selling price (inc. tax)
+MinPriceHT=Minimální prodejní cena (bez daně)
+MinPriceTTC=Minimální prodejní cena (vč. daně)
 CantBeLessThanMinPrice=Prodejní cena nesmí být nižší než minimální povolená pro tento produkt (%s bez daně). Toto hlášení se může také zobrazí, pokud zadáte příliš důležitou slevu.
 ContractStatus=Stav smlouvy
 ContractStatusClosed=Zavřeno
 ContractStatusRunning=Běh
 ContractStatusExpired=vypršela
 ContractStatusOnHold=Neběží
-ContractStatusToRun=To get running
+ContractStatusToRun=V chodu
 ContractNotRunning=Tato smlouva není v chodu
 ErrorProductAlreadyExists=Výrobek s referenčním %s již existuje.
-ErrorProductBadRefOrLabel=Chybná hodnota pro referenční nebo etikety.
-ErrorProductClone=Vyskytl se problém při pokusu o klonování produkt nebo službu.
-ErrorPriceCantBeLowerThanMinPrice=Error Price Can't Be Lower Than Minimum Price.
+ErrorProductBadRefOrLabel=Chybná hodnota pro reference nebo etikety.
+ErrorProductClone=Vyskytl se problém při pokusu o kopírování produktu nebo služby.
+ErrorPriceCantBeLowerThanMinPrice=Chyba: Cena nemůže být nižší než minimální cena.
 Suppliers=Dodavatelé
 SupplierRef=Dodavatele produktů čj.
 ShowProduct=Zobrazit produkt
 ShowService=Zobrazit servis
-ProductsAndServicesArea=Produkty a služby oblasti
-ProductsArea=Produkt oblast
+ProductsAndServicesArea=Oblasti produktů a služeb
+ProductsArea=Oblast produktu
 ServicesArea=Poskytování služeb v oblasti
 AddToMyProposals=Přidat k mým návrhům
 AddToOtherProposals=Přidat další návrhy,
 AddToMyBills=Přidat do mých účtů
 AddToOtherBills=Přidat na jiné účty
-CorrectStock=Správné skladem
+CorrectStock=Správný sklad
 AddPhoto=Přidat fotku
 ListOfStockMovements=Seznam skladových pohybů
-BuyingPrice=Nákup cenu
-SupplierCard=Dodavatel karty
-CommercialCard=Obchodní karty
-AllWays=Cesta ke nalézt svůj výrobek skladem
+BuyingPrice=Nákupní cena
+SupplierCard=Karta dodavatele
+CommercialCard=Obchodní karta
+AllWays=Cesta k nalezení vašeho výrobku na skladě
 NoCat=Váš produkt není v žádném kategorii
 PrimaryWay=Primární cesta
 PriceRemoved=Cena odstraněny
 BarCode=Čárový kód
-BarcodeType=Čárový kód typu
+BarcodeType=Typ čárového kódu
 SetDefaultBarcodeType=Nastavte typ čárového kódu
-BarcodeValue=Barcode hodnota
+BarcodeValue=Hodnota čárového kódu
 NoteNotVisibleOnBill=Poznámka (není vidět na návrzích faktury, ...)
 CreateCopy=Vytvoření kopie
-ServiceLimitedDuration=Je-li výrobek je služba s omezeným trváním:
-MultiPricesAbility=Several level of prices per product/service
+ServiceLimitedDuration=Je-li výrobek službou s omezeným trváním:
+MultiPricesAbility=Několik úrovní cen za produkt/službu
 MultiPricesNumPrices=Počet cen
 MultiPriceLevelsName=Cenová kategorie
-AssociatedProductsAbility=Activate the virtual package feature
-AssociatedProducts=Package product
-AssociatedProductsNumber=Number of products composing this virtual package product
-ParentProductsNumber=Number of parent packaging product
-IfZeroItIsNotAVirtualProduct=If 0, this product is not a virtual package product
-IfZeroItIsNotUsedByVirtualProduct=If 0, this product is not used by any virtual package product
+AssociatedProductsAbility=Aktivace funkce virtuálního balíku
+AssociatedProducts=Balení produktu
+AssociatedProductsNumber=Počet výrobků tvořících tento virtuální produktový balíček
+ParentProductsNumber=Počet výchozích balení výrobku
+IfZeroItIsNotAVirtualProduct=Pokud je hodnota 0, tento produkt není virtuální produktový balíček
+IfZeroItIsNotUsedByVirtualProduct=Pokud je hodnota 0, tento produkt není použit pro žádný virtuální produktový balíček
 EditAssociate=Asociovat
 Translation=Překlad
-KeywordFilter=Klíčové slovo filtr
-CategoryFilter=Kategorie filtru
-ProductToAddSearch=Hledání informací o produktech pro přidání
-AddDel=Přidat / Smazat
+KeywordFilter=Filtr klíčového slova
+CategoryFilter=Filtr kategorie
+ProductToAddSearch=Hledat produkt pro přidání
+AddDel=Přidat/Smazat
 Quantity=Množství
-NoMatchFound=Ne nalezena shoda
-ProductAssociationList=Seznam souvisejících produktů / služeb: název produktu / služby (množství ovlivněny)
-ProductParentList=List of package products/services with this product as a component
-ErrorAssociationIsFatherOfThis=Jedním z vybraného produktu je rodič s aktuální produkt
-DeleteProduct=Odstranění produktu / služby
-ConfirmDeleteProduct=Jste si jisti, že chcete smazat tento výrobek / službu?
-ProductDeleted=Výrobku / služby &quot;%s&quot; vymazán z databáze.
+NoMatchFound=Shoda nenalezena
+ProductAssociationList=Seznam souvisejících produktů/služeb: název produktu/služby (ovlivněno množstvím)
+ProductParentList=Seznam balení produktů/služeb s tímto produktem jako součást
+ErrorAssociationIsFatherOfThis=Jedním z vybraného produktu je rodič s aktuálním produktem
+DeleteProduct=Odstranění produktu/služby
+ConfirmDeleteProduct=Jste si jisti, že chcete smazat tento výrobek/službu?
+ProductDeleted=Výrobek/služba "%s" vymazán z databáze.
 DeletePicture=Odstranění obrázku
 ConfirmDeletePicture=Jste si jisti, že chcete smazat tento obrázek?
 ExportDataset_produit_1=Produkty
@@ -145,125 +145,125 @@ ImportDataset_produit_1=Produkty
 ImportDataset_service_1=Služby
 DeleteProductLine=Odstranit produktovou řadu
 ConfirmDeleteProductLine=Jste si jisti, že chcete smazat tuto produktovou řadu?
-NoProductMatching=Žádný produkt / službu odpovídají zadaným kritériím
-MatchingProducts=Odpovídající produkty / služby
+NoProductMatching=Žádný produkt/službu neodpovídá zadaným kritériím
+MatchingProducts=Odpovídající produkty/služby
 NoStockForThisProduct=Žádná fotografie k tomuto výrobku
-NoStock=No Stock
+NoStock=Není na skladě
 Restock=Doplňování zásob
 ProductSpecial=Speciální
-QtyMin=Minimální Množství
+QtyMin=Minimální množství
 PriceQty=Cena za toto množství
-PriceQtyMin=Cena za tuto min. Množství (w / o sleva)
+PriceQtyMin=Cena za toto min. množství (w/o sleva)
 VATRateForSupplierProduct=Sazba DPH (pro tohoto dodavatele/produkt)
-DiscountQtyMin=Výchozí sleva Množství
-NoPriceDefinedForThisSupplier=Ne cena / ks definován tohoto podniku / produktu
-NoSupplierPriceDefinedForThisProduct=Žádný dodavatel cena / ks definována pro tento produkt
-RecordedProducts=Produkty zaznamenán
-RecordedServices=Služby zaznamenán
-RecordedProductsAndServices=Produkty / služby zaznamenané
-PredefinedProductsToSell=Predefined products to sell
-PredefinedServicesToSell=Predefined services to sell
-PredefinedProductsAndServicesToSell=Predefined products/services to sell
-PredefinedProductsToPurchase=Predefined product to purchase
-PredefinedServicesToPurchase=Predefined services to purchase
-PredefinedProductsAndServicesToPurchase=Predefined products/services to puchase
-GenerateThumb=Vytvořit palec
-ProductCanvasAbility=Použijte speciální &quot;plátno&quot; addons
+DiscountQtyMin=Množství pro výchozí slevu
+NoPriceDefinedForThisSupplier=Žádná cena/množství není definována pro tohoto dodavatele/produktu
+NoSupplierPriceDefinedForThisProduct=Žádná dodavatelská cena/množství není definována pro tento produkt
+RecordedProducts=Produkty nahrány
+RecordedServices=Služby nahrány
+RecordedProductsAndServices=Produkty/služby zaznamenané
+PredefinedProductsToSell=Předdefinované produkty na prodej
+PredefinedServicesToSell=Předdefinované služby na prodej
+PredefinedProductsAndServicesToSell=Předdefinované produkty/služby na prodej
+PredefinedProductsToPurchase=Předdefinovaný produkt k nákupu
+PredefinedServicesToPurchase=Předdefinované služby pro nákup
+PredefinedProductsAndServicesToPurchase=Předdefinované produkty/služby pro nákup
+GenerateThumb=Vytvořit náhled
+ProductCanvasAbility=Použijte speciální "předlohu" doplňků
 ServiceNb=Servisní # %s
-ListProductServiceByPopularity=Seznam produktů / služeb podle oblíbenosti
+ListProductServiceByPopularity=Seznam produktů/služeb podle oblíbenosti
 ListProductByPopularity=Seznam zboží podle oblíbenosti
 ListServiceByPopularity=Seznam služeb podle oblíbenosti
 Finished=Výrobce produktu
 RowMaterial=Surovina
-CloneProduct=Clone produkt nebo službu
-ConfirmCloneProduct=Jste si jisti, že chcete klonovat produktů nebo služeb <b>%s?</b>
-CloneContentProduct=Klon všechny hlavní informace o produktu / služby
-ClonePricesProduct=Klonovat hlavní informace a ceny
-CloneCompositionProduct=Clone packaged product/services
+CloneProduct=Kopírovat produkt nebo službu
+ConfirmCloneProduct=Jste si jisti, že chcete kopírovat produkt nebo službu <b>%s</b>?
+CloneContentProduct=Kopírovat všechny hlavní informace o produktu/službě
+ClonePricesProduct=Kopírovat hlavní informace a ceny
+CloneCompositionProduct=Kopírování balení zboží/služby
 ProductIsUsed=Tento produkt se používá
-NewRefForClone=Ref. nového produktu / služby
+NewRefForClone=Ref. nového produktu/služby
 CustomerPrices=Prodejní ceny
 SuppliersPrices=Dodavatelská cena
-SuppliersPricesOfProductsOrServices=Suppliers prices (of products or services)
-CustomCode=Celní kód
+SuppliersPricesOfProductsOrServices=Dodavatelské ceny (výrobků či služeb)
+CustomCode=Zákaznický kód
 CountryOrigin=Země původu
 HiddenIntoCombo=Skryté do vybraných seznamů
 Nature=Příroda
-ProductCodeModel=Product ref template
-ServiceCodeModel=Service ref template
-AddThisProductCard=Vytvořte kartu výrobku
-HelpAddThisProductCard=Tato volba umožňuje vytvořit nebo naklonovat výrobek, pokud neexistuje.
-AddThisServiceCard=Vytvoření služební průkaz
+ProductCodeModel=Ref šablona produktu
+ServiceCodeModel=Ref šablona služby
+AddThisProductCard=Vytvořte kartu produktu
+HelpAddThisProductCard=Tato volba umožňuje vytvořit nebo naklonovat produkt, pokud neexistuje.
+AddThisServiceCard=Vytvoření servisní karty
 HelpAddThisServiceCard=Tato volba umožňuje vytvořit nebo naklonovat službu, pokud neexistuje.
 CurrentProductPrice=Aktuální cena
-AlwaysUseNewPrice=Vždy používejte aktuální cenu produktu / služby
+AlwaysUseNewPrice=Vždy používejte aktuální cenu produktu/služby
 AlwaysUseFixedPrice=Použijte pevnou cenu
-PriceByQuantity=Different prices by quantity
-PriceByQuantityRange=Množství rozsah
-ProductsDashboard=Produkty / služby shrnutí
+PriceByQuantity=Různé ceny podle množství
+PriceByQuantityRange=Množstevní rozsah
+ProductsDashboard=Produkty/služby shrnutí
 UpdateOriginalProductLabel=Upravit původní štítek
 HelpUpdateOriginalProductLabel=Umožňuje upravit název produktu
 ### composition fabrication
-Building=Výroba a položky dispatchment
+Building=Výroba a položky expedice
 Build=Vyrobit
 BuildIt=Vytvořit a odeslat
 BuildindListInfo=Dostupné množství pro výrobu na sklad (nastavte na 0 pro žádnou další akci)
 QtyNeed=Množství
 UnitPmp=Net jednotka VWAP
 CostPmpHT=Čistá hodnota VWAP
-ProductUsedForBuild=Auto spotřebovány při výrobě
+ProductUsedForBuild=Autospotřeba při výrobě
 ProductBuilded=Výroba dokončena
-ProductsMultiPrice=Produkt multi-cena
-ProductsOrServiceMultiPrice=Customers prices (of products or services, multi-prices)
-ProductSellByQuarterHT=Produkty obrat čtvrtletní VWAP
-ServiceSellByQuarterHT=Služby obrat čtvrtletní VWAP
-Quarter1=První. Čtvrtletí
-Quarter2=2.. Čtvrtletí
-Quarter3=3.. Čtvrtletí
-Quarter4=4.. Čtvrtletí
-BarCodePrintsheet=Print bar code
-PageToGenerateBarCodeSheets=With this tool, you can print sheets of bar code stickers. Choose format of your sticker page, type of barcode and value of barcode, then click on button <b>%s</b>.
-NumberOfStickers=Number of stickers to print on page
-PrintsheetForOneBarCode=Print several stickers for one barcode
-BuildPageToPrint=Generate page to print
-FillBarCodeTypeAndValueManually=Fill barcode type and value manually.
-FillBarCodeTypeAndValueFromProduct=Fill barcode type and value from barcode of a product.
-FillBarCodeTypeAndValueFromThirdParty=Fill barcode type and value from barcode of a thirdparty.
-DefinitionOfBarCodeForProductNotComplete=Definition of type or value of bar code not complete for product %s.
-DefinitionOfBarCodeForThirdpartyNotComplete=Definition of type or value of bar code non complete for thirdparty %s.
-BarCodeDataForProduct=Barcode information of product %s :
-BarCodeDataForThirdparty=Barcode information of thirdparty %s :
-ResetBarcodeForAllRecords=Define barcode value for all records (this will also reset barcode value already defined with new values)
-PriceByCustomer=Different price for each customer
-PriceCatalogue=Unique price per product/service
-PricingRule=Rules for customer prices
-AddCustomerPrice=Add price by customers
-ForceUpdateChildPriceSoc=Set same price on customer subsidiaries
-PriceByCustomerLog=Price by customer log
-MinimumPriceLimit=Minimum price can't be lower that %s
-MinimumRecommendedPrice=Minimum recommended price is : %s
-PriceExpressionEditor=Price expression editor
-PriceExpressionSelected=Selected price expression
-PriceExpressionEditorHelp1="price = 2 + 2" or "2 + 2" for setting the price. Use ; to separate expressions
-PriceExpressionEditorHelp2=You can access ExtraFields with variables like <b>#extrafield_myextrafieldkey#</b> and global variables with <b>#global_mycode#</b>
-PriceExpressionEditorHelp3=In both product/service and supplier prices there are these variables available:<br><b>#tva_tx# #localtax1_tx# #localtax2_tx# #weight# #length# #surface# #price_min#</b>
-PriceExpressionEditorHelp4=In product/service price only: <b>#supplier_min_price#</b><br>In supplier prices only: <b>#supplier_quantity# and #supplier_tva_tx#</b>
-PriceExpressionEditorHelp5=Available global values:
-PriceMode=Price mode
-PriceNumeric=Number
-DefaultPrice=Default price
-ComposedProductIncDecStock=Increase/Decrease stock on parent change
-ComposedProduct=Sub-product
-MinSupplierPrice=Minimum supplier price
-DynamicPriceConfiguration=Dynamic price configuration
-GlobalVariables=Global variables
-GlobalVariableUpdaters=Global variable updaters
+ProductsMultiPrice=Multicena produktu
+ProductsOrServiceMultiPrice=Zákaznické ceny (z výrobků nebo služeb, multi-ceny)
+ProductSellByQuarterHT=Čtvrtletní obrat VWAP produkty
+ServiceSellByQuarterHT=Čtvrtletní obrat VWAP služby
+Quarter1=I. čtvrtletí
+Quarter2=II čtvrtletí
+Quarter3=III čtvrtletí
+Quarter4=IV čtvrtletí
+BarCodePrintsheet=Tisk čárového kódu
+PageToGenerateBarCodeSheets=Pomocí tohoto nástroje můžete vytisknout archy čárových kódů samolepek. Zvolte formát samolepek, typ a hodnoty čárového kódu a poté klikněte na tlačítko <b>%s</b>.
+NumberOfStickers=Počet samolepek k tisku na stránce
+PrintsheetForOneBarCode=Vytiskněte několik štítků pro jeden čárový kód
+BuildPageToPrint=Generování stránky pro tisk
+FillBarCodeTypeAndValueManually=Zadat typ čárového kódu a hodnotu ručně.
+FillBarCodeTypeAndValueFromProduct=Zadat typ čárového kódu a hodnoty z čárového kódu produktu.
+FillBarCodeTypeAndValueFromThirdParty=Zadat typ čárového kódu a hodnoty z čárového kódu třetí strany.
+DefinitionOfBarCodeForProductNotComplete=Definice typu nebo hodnoty čárového kódu není kompletní pro produkt %s.
+DefinitionOfBarCodeForThirdpartyNotComplete=Definice typu nebo hodnoty čárového kódu není kompletní pro třetí stranu %s.
+BarCodeDataForProduct=Čárový kód informace o výrobku %s :
+BarCodeDataForThirdparty=Čárový kód informace o třetí straně %s :
+ResetBarcodeForAllRecords=Definovat hodnotu čárového kódu pro všechny záznamy (tato akce také obnoví hodnotu čárového kódu již definovanou s novými hodnotami)
+PriceByCustomer=Různé ceny pro každého zákazníka
+PriceCatalogue=Unikátní cena pro produkt/službu
+PricingRule=Pravidla pro zákaznických ceny
+AddCustomerPrice=Přidejte cenu pro zákazníky
+ForceUpdateChildPriceSoc=Nastavit stejné ceny pro dceřiné společnosti zákazníka
+PriceByCustomerLog=Cena dle protokolu zákazníka
+MinimumPriceLimit=Minimální cena nesmí být nižší než %s
+MinimumRecommendedPrice=Minimální doporučená cena je: %s
+PriceExpressionEditor=Editor cenových výrazů
+PriceExpressionSelected=Vybrané ceny výraz
+PriceExpressionEditorHelp1="cena = 2 + 2" nebo "2 + 2" pro nastavení ceny. Použijte oddělovač ; pro oddělení výrazů
+PriceExpressionEditorHelp2=Můžete přistupovat k ExtraFields s proměnnými, jako je <b>#extrafield_myextrafieldkey#</b> a globální proměnné s <b>#global_mycode#</b>
+PriceExpressionEditorHelp3=V obou cenách produktů/služeb a dodavatelů jsou tyto proměnné k dispozici: <br><b>#tva_tx# #localtax1_tx# #localtax2_tx# #weight# #length# #surface# #price_min#</b>
+PriceExpressionEditorHelp4=V produktech/službách pouze cena: <b>#supplier_min_price#</b><br>v dodavatelských cenách pouze: <b>#supplier_quantity# and #supplier_tva_tx#</b>
+PriceExpressionEditorHelp5=Dostupné globální hodnoty:
+PriceMode=Režim ceny
+PriceNumeric=Číslo
+DefaultPrice=Výchozí cena
+ComposedProductIncDecStock=Zvýšit/snížit zásoby na výchozí změny
+ComposedProduct=Subprodukt
+MinSupplierPrice=Minimální dodavatelská cena
+DynamicPriceConfiguration=Dynamická konfigurace cen
+GlobalVariables=Globální proměnné
+GlobalVariableUpdaters=Aktualizace globálních proměnných
 GlobalVariableUpdaterType0=JSON data
-GlobalVariableUpdaterHelp0=Parses JSON data from specified URL, VALUE specifies the location of relevant value,
-GlobalVariableUpdaterHelpFormat0=format is {"URL": "http://example.com/urlofjson", "VALUE": "array1,array2,targetvalue"}
+GlobalVariableUpdaterHelp0=Analyzuje JSON data ze zadané adresy URL, VALUE určuje umístění příslušné hodnoty
+GlobalVariableUpdaterHelpFormat0=formát je:  {"URL": "http://example.com/urlofjson", "VALUE": "array1,array2,targetvalue"}
 GlobalVariableUpdaterType1=WebService data
-GlobalVariableUpdaterHelp1=Parses WebService data from specified URL, NS specifies the namespace, VALUE specifies the location of relevant value, DATA should contain the data to send and METHOD is the calling WS method
-GlobalVariableUpdaterHelpFormat1=format is {"URL": "http://example.com/urlofws", "VALUE": "array,targetvalue", "NS": "http://example.com/urlofns", "METHOD": "myWSMethod", "DATA": {"your": "data, "to": "send"}}
-UpdateInterval=Update interval (minutes)
-LastUpdated=Last updated
-CorrectlyUpdated=Correctly updated
+GlobalVariableUpdaterHelp1=Analyzuje Webservice data ze zadané adresy URL, NS specifikuje jmenný prostor, VALUE určuje umístění příslušné hodnoty, DATA by měla obsahovat data odesílat a METHOD je volání metody WS
+GlobalVariableUpdaterHelpFormat1=formát je:  {"URL": "http://example.com/urlofws", "VALUE": "array,targetvalue", "NS": "http://example.com/urlofns", "METHOD": "myWSMethod", "DATA": {"your": "data, "to": "send"}}
+UpdateInterval=Interval aktualizace (minuty)
+LastUpdated=Naposledy aktualizováno
+CorrectlyUpdated=Správně aktualizováno
diff --git a/htdocs/langs/cs_CZ/projects.lang b/htdocs/langs/cs_CZ/projects.lang
index 67feb9b64539de38126a4c07b3eeebf0ededa424..3d294c18fb3c043dc89a7fc814e1e28eb9ee84ff 100644
--- a/htdocs/langs/cs_CZ/projects.lang
+++ b/htdocs/langs/cs_CZ/projects.lang
@@ -3,21 +3,21 @@ RefProject=Číslo projektu
 ProjectId=Id projektu
 Project=Projekt
 Projects=Projekty
-ProjectStatus=Project status
+ProjectStatus=Stav projektu
 SharedProject=Všichni
 PrivateProject=Kontakty na projektu
 MyProjectsDesc=Tento pohled je omezen na projekty u kterých jste uveden jako kontakt (jakéhokoliv typu)
 ProjectsPublicDesc=Tento pohled zobrazuje všechny projekty které máte oprávnění číst.
-ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read.
+ProjectsPublicTaskDesc=Tento pohled představuje všechny projekty a úkoly, které mají povoleno číst.
 ProjectsDesc=Tento pohled zobrazuje všechny projekty (vaše uživatelské oprávnění vám umožňuje vidět vše).
 MyTasksDesc=Tento pohled je omezen na projekty či úkoly u kterých jste uveden jako kontakt (jakéhokoliv typu)
-OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible).
+OnlyOpenedProject=Pouze otevřené projekty jsou viditelné (projekty s návrhem nebo uzavřeným stavem nejsou viditelné).
 TasksPublicDesc=Tento pohled zobrazuje všechny projekty a úkoly které máte oprávnění číst.
 TasksDesc=Tento pohled zobrazuje všechny projekty a úkoly (vaše uživatelské oprávnění vám umožňuje vidět vše).
-AllTaskVisibleButEditIfYouAreAssigned=All tasks for such project are visible, but you can enter time only for task you are assigned on.
+AllTaskVisibleButEditIfYouAreAssigned=Všechny úkoly takového projektu jsou viditelné, ale můžete zadat čas pouze k přiřazenému úkolu.
 ProjectsArea=Projekty
 NewProject=Nový projekt
-AddProject=Create project
+AddProject=Vytvořit projekt
 DeleteAProject=Odstranit projekt
 DeleteATask=Odstranit úkol
 ConfirmDeleteAProject=Jste si jisti, že chcete smazat tento projekt?
@@ -32,8 +32,8 @@ NoProject=Žádný projekt nedefinován či vlastněn
 NbOpenTasks=Počet otevřených úloh
 NbOfProjects=Počet projektů
 TimeSpent=Strávený čas
-TimeSpentByYou=Time spent by you
-TimeSpentByUser=Time spent by user
+TimeSpentByYou=Váš strávený čas
+TimeSpentByUser=Čas strávený uživatelem
 TimesSpent=Strávený čas
 RefTask=Číslo. úkolu
 LabelTask=Název úkolu
@@ -41,8 +41,8 @@ TaskTimeSpent=Čas strávený na úkolech
 TaskTimeUser=Uživatel
 TaskTimeNote=Poznámka
 TaskTimeDate=Datum
-TasksOnOpenedProject=Tasks on opened projects
-WorkloadNotDefined=Workload not defined
+TasksOnOpenedProject=Úkoly otevřených projektů
+WorkloadNotDefined=Pracovní zátěž není definována
 NewTimeSpent=Nový strávený čas
 MyTimeSpent=Můj strávený čas
 MyTasks=Moje úkoly
@@ -52,7 +52,7 @@ TaskDateStart=Datum zahájení úkolu
 TaskDateEnd=Datum ukončení úkolu
 TaskDescription=Popis úkolu
 NewTask=Nový úkol
-AddTask=Create task
+AddTask=Vytvořit úkol
 AddDuration=Přidat trvání
 Activity=Činnost
 Activities=Úkoly / činnosti
@@ -72,8 +72,8 @@ ListSupplierOrdersAssociatedProject=Seznam dodavatelských objednávek souvisej
 ListSupplierInvoicesAssociatedProject=Seznam dodavatelských faktur související s projektem
 ListContractAssociatedProject=Seznam zakázek souvisejících s projektem
 ListFichinterAssociatedProject=Seznam zákroků spojených s projektem
-ListExpenseReportsAssociatedProject=List of expense reports associated with the project
-ListDonationsAssociatedProject=List of donations associated with the project
+ListExpenseReportsAssociatedProject=Seznam vyúčtování výdajů souvisejících s projektem
+ListDonationsAssociatedProject=Seznam darů spojených s projektem
 ListActionsAssociatedProject=Seznam událostí spojených s projektem
 ActivityOnProjectThisWeek=Týdenní projektová aktivita
 ActivityOnProjectThisMonth=Měsíční projektová aktivita
@@ -93,13 +93,13 @@ ActionsOnProject=Události na projektu
 YouAreNotContactOfProject=Nejste kontakt tohoto privátního projektu
 DeleteATimeSpent=Odstranit strávený čas
 ConfirmDeleteATimeSpent=Jste si jisti, že chcete smazat tento strávený čas?
-DoNotShowMyTasksOnly=See also tasks not assigned to me
-ShowMyTasksOnly=View only tasks assigned to me
+DoNotShowMyTasksOnly=Viz také úkoly mě nepřidělené
+ShowMyTasksOnly=Zobrazit pouze úkoly mě přidělené
 TaskRessourceLinks=Zdroje
 ProjectsDedicatedToThisThirdParty=Projekty této třetí strany
 NoTasks=Žádné úkoly na tomto projektu
 LinkedToAnotherCompany=Připojené k jiné třetí straně
-TaskIsNotAffectedToYou=Task not assigned to you
+TaskIsNotAffectedToYou=Úkol vám není přidělený
 ErrorTimeSpentIsEmpty=Čas strávený je prázdný
 ThisWillAlsoRemoveTasks=Tato akce rovněž odstraní všechny úkoly projektu (<b>%s</b> úkolů v tuto chvíli) a všechny strávené časy vstupující do projektu.
 IfNeedToUseOhterObjectKeepEmpty=Pokud je k projektu třeba připojit některé objekty jiných třetích stran (faktury, objednávky, ...), ponechte toto prázdné (projekt bude moci obsahovat více třetích stran)
@@ -109,15 +109,15 @@ CloneContacts=Duplikovat kontakty
 CloneNotes=Duplikovat poznámky
 CloneProjectFiles=Duplikovat připojené soubory projektu
 CloneTaskFiles=Duplikovat připojené soubory úkolu/ů (pokud úkol(y) klonován(y))
-CloneMoveDate=Update project/tasks dates from now ?
+CloneMoveDate=Aktualizace data projektu/úkolu od nyní?
 ConfirmCloneProject=Opravdu chcete duplikovat tento projekt?
 ProjectReportDate=Změnit datum úkolu dle data zahájení projektu
 ErrorShiftTaskDate=Nelze přesunout datum úkolu dle nového data zahájení projektu
 ProjectsAndTasksLines=Projekty a úkoly
 ProjectCreatedInDolibarr=Projekt %s vytvořen
-TaskCreatedInDolibarr=Task %s created
-TaskModifiedInDolibarr=Task %s modified
-TaskDeletedInDolibarr=Task %s deleted
+TaskCreatedInDolibarr=Úkol %s vytvořen
+TaskModifiedInDolibarr=Úkol %s upraven
+TaskDeletedInDolibarr=Úkol %s smazán
 ##### Types de contacts #####
 TypeContact_project_internal_PROJECTLEADER=Vedoucí projektu
 TypeContact_project_external_PROJECTLEADER=Vedoucí projektu
@@ -129,18 +129,18 @@ TypeContact_project_task_internal_TASKCONTRIBUTOR=Přispěvatel
 TypeContact_project_task_external_TASKCONTRIBUTOR=Přispěvatel
 SelectElement=Vyberte prvek
 AddElement=Odkaz na prvek
-UnlinkElement=Unlink element
+UnlinkElement=Odpojit element
 # Documents models
 DocumentModelBaleine=Kompletní projektový report (logo. ..)
 PlannedWorkload=Plánované vytížení
-PlannedWorkloadShort=Workload
-WorkloadOccupation=Workload assignation
+PlannedWorkloadShort=Pracovní zátěž
+WorkloadOccupation=Pracovní zátěž
 ProjectReferers=Odkazující objekty
-SearchAProject=Search a project
-ProjectMustBeValidatedFirst=Project must be validated first
-ProjectDraft=Draft projects
-FirstAddRessourceToAllocateTime=Associate a ressource to allocate time
-InputPerDay=Input per day
-InputPerWeek=Input per week
-InputPerAction=Input per action
-TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s
+SearchAProject=Hledat projekt
+ProjectMustBeValidatedFirst=Projekt musí být nejdříve ověřen
+ProjectDraft=Návrhy projektů
+FirstAddRessourceToAllocateTime=Přiřadit zdroje k  vyčlenění času
+InputPerDay=Vstup za den
+InputPerWeek=Vstup za týden
+InputPerAction=Vstup za akci
+TimeAlreadyRecorded=Strávený čas již zaznamenána pro tento úkol/den a uživatele %s
diff --git a/htdocs/langs/cs_CZ/propal.lang b/htdocs/langs/cs_CZ/propal.lang
index ffc704293432c555bf50d6cc2acbb844b01b21ca..0f0cd34db10d63d374bbffa411bfcb35249c0a3f 100644
--- a/htdocs/langs/cs_CZ/propal.lang
+++ b/htdocs/langs/cs_CZ/propal.lang
@@ -1,43 +1,43 @@
 # Dolibarr language file - Source file is en_US - propal
-Proposals=Komerční návrhy
-Proposal=Komerční návrh
-ProposalShort=Návrh
-ProposalsDraft=Navrhnout obchodní návrhy
-ProposalDraft=Návrh obchodní návrh
-ProposalsOpened=Otevřené obchodní návrhy
-Prop=Komerční návrhy
-CommercialProposal=Komerční návrh
-CommercialProposals=Komerční návrhy
-ProposalCard=Návrh karty
-NewProp=Nový obchodní návrh
-NewProposal=Nový obchodní návrh
-NewPropal=Nový návrh
-Prospect=Vyhlídka
-ProspectList=Prospect seznam
-DeleteProp=Smazat obchodní návrh
-ValidateProp=Ověřit obchodní návrh
-AddProp=Přidat návrh
-ConfirmDeleteProp=Jste si jisti, že chcete smazat tento obchodní návrh?
-ConfirmValidateProp=Jste si jisti, že chcete ověřit tuto obchodní návrh pod názvem <b>%s?</b>
-LastPropals=Poslední %s návrhy
-LastClosedProposals=Poslední %s uzavřen návrhy
-LastModifiedProposals=Poslední %s upravené návrhy
-AllPropals=Všechny návrhy
-LastProposals=Poslední návrhy
-SearchAProposal=Hledat návrh
-ProposalsStatistics=Obchodní Návrh si statistiky
+Proposals=Obchodní nabídky
+Proposal=Obchodní nabídka
+ProposalShort=Nabídka
+ProposalsDraft=Navrhnout obchodní nabídky
+ProposalDraft=Navrhnout obchodní nabídku
+ProposalsOpened=Otevřené obchodní nabídky
+Prop=Obchodní nabídky
+CommercialProposal=Obchodní nabídka
+CommercialProposals=Obchodní nabídky
+ProposalCard=Karta obchodních nabídek
+NewProp=Nová obchodní nabídka
+NewProposal=Nová obchodní nabídka
+NewPropal=Nová nabídka
+Prospect=Cíl
+ProspectList=Seznam cílů
+DeleteProp=Smazat obchodní nabídku
+ValidateProp=Ověřit obchodní nabídku
+AddProp=Vytvořit nabídku
+ConfirmDeleteProp=Jste si jisti, že chcete smazat tuto obchodní nabídku?
+ConfirmValidateProp=Jste si jisti, že chcete ověřit tuto obchodní nabídku pod názvem <b>%s?</b>
+LastPropals=Poslední %s nabídky
+LastClosedProposals=Poslední %s uzavřené nabídky
+LastModifiedProposals=Poslední %s upravené nabídky
+AllPropals=Všechny nabídky
+LastProposals=Poslední nabídky
+SearchAProposal=Hledat nabídku
+ProposalsStatistics=Statistiky obchodních nabídek
 NumberOfProposalsByMonth=Číslo podle měsíce
-AmountOfProposalsByMonthHT=Částka, o měsíc (bez DPH)
-NbOfProposals=Počet obchodních návrhů
-ShowPropal=Zobrazit návrhu
-PropalsDraft=Dáma
+AmountOfProposalsByMonthHT=Částka podle měsíce (bez DPH)
+NbOfProposals=Počet obchodních nabídek
+ShowPropal=Zobrazit nabídku
+PropalsDraft=Návrhy
 PropalsOpened=Otevřeno
-PropalsNotBilled=Uzavřeno není účtována
-PropalStatusDraft=Návrh (musí být ověřena)
-PropalStatusValidated=Ověřené (Návrh je v provozu)
-PropalStatusOpened=Ověřené (Návrh je v provozu)
+PropalsNotBilled=Uzavřeno, není účtováno
+PropalStatusDraft=Návrh (musí být ověřen)
+PropalStatusValidated=Ověřeno (návrh je otevřen)
+PropalStatusOpened=Ověřeno (návrh je otevřen)
 PropalStatusClosed=Zavřeno
-PropalStatusSigned=Podpis (potřeby fakturace)
+PropalStatusSigned=Podpis (potřeba fakturace)
 PropalStatusNotSigned=Nejste přihlášen (uzavřený)
 PropalStatusBilled=Účtováno
 PropalStatusDraftShort=Návrh
@@ -45,44 +45,42 @@ PropalStatusValidatedShort=Ověřené
 PropalStatusOpenedShort=Otevřeno
 PropalStatusClosedShort=Zavřeno
 PropalStatusSignedShort=Podepsaný
-PropalStatusNotSignedShort=Nejste přihlášen
+PropalStatusNotSignedShort=Nepodepsaný
 PropalStatusBilledShort=Účtováno
-PropalsToClose=Komerční návrhy zavřít
-PropalsToBill=Podepsaly obchodní návrhy zákona
-ListOfProposals=Seznam obchodních návrhů
-ActionsOnPropal=Události na návrhu
-NoOpenedPropals=Žádné otevřené obchodní návrhy
-NoOtherOpenedPropals=Žádný jiný otevřel obchodní návrhy
-RefProposal=Komerční návrh ref
-SendPropalByMail=Poslat obchodní návrh poštou
-FileNotUploaded=Soubor nebyl nahrán
-FileUploaded=Soubor byl úspěšně nahrán
-AssociatedDocuments=Dokumenty související s návrhem:
+PropalsToClose=Zavřít obchodní nabídky
+PropalsToBill=Podepsané obchodní nabídky na účtu
+ListOfProposals=Seznam obchodních nabídek
+ActionsOnPropal=Události nabídky
+NoOpenedPropals=Žádné otevřené obchodní nabídky
+NoOtherOpenedPropals=Žádné další otevřené obchodní nabídky
+RefProposal=Obchodní nabídka ref
+SendPropalByMail=Poslat obchodní nabídku poštou
+AssociatedDocuments=Dokumenty související s nabídkou:
 ErrorCantOpenDir=Nelze otevřít adresář
-DatePropal=Datum návrhu
-DateEndPropal=Platnost koncové datum
+DatePropal=Datum nabídky
+DateEndPropal=Datum ukončení platnosti
 DateEndPropalShort=Datum ukončení
-ValidityDuration=Platnost trvání
+ValidityDuration=Trvání platnosti
 CloseAs=Zavřete se stavem
-ClassifyBilled=Klasifikovat účtovány
-BuildBill=Build fakturu
+ClassifyBilled=Označit jako účtováno
+BuildBill=Vytvořit  fakturu
 ErrorPropalNotFound=Propal %s nebyl nalezen
 Estimate=Odhad:
 EstimateShort=Odhad
-OtherPropals=Další návrhy
-AddToDraftProposals=Přidat do předlohy návrhu
-NoDraftProposals=Žádné návrhy řešení
-CopyPropalFrom=Vytvoření obchodní návrh zkopírováním existujícího návrhu
-CreateEmptyPropal=Vytvořte prázdný obchodní návrhy vierge nebo ze seznamu produktů / služeb
-DefaultProposalDurationValidity=Výchozí komerční Návrh platnost doba (ve dnech)
-UseCustomerContactAsPropalRecipientIfExist=Použití zákazníků kontaktní adresu je-li definována místo třetí stranou adresa jako adresa příjemce návrh
-ClonePropal=Klon obchodní návrh
-ConfirmClonePropal=Jste si jisti, že chcete klonovat komerční návrhu <b>%s?</b>
-ConfirmReOpenProp=Jste si jisti, že chcete otevřít zpět komerční návrhu <b>%s?</b>
-ProposalsAndProposalsLines=Komerční návrh a vedení
-ProposalLine=Návrh linky
-AvailabilityPeriod=Dostupnost zpoždění
-SetAvailability=Nastavte si obsazenost zpoždění
+OtherPropals=Další nabídky
+AddToDraftProposals=Přidat do předlohy nabídky
+NoDraftProposals=Žádné návrhy nabídek
+CopyPropalFrom=Vytvořit obchodní nabídku zkopírováním existující nabídky
+CreateEmptyPropal=Vytvořte prázdnou obchodní nabídku z šablony nebo ze seznamu produktů/služeb
+DefaultProposalDurationValidity=Doba platnosti výchozí obchodní nabídky (ve dnech)
+UseCustomerContactAsPropalRecipientIfExist=Použití kontaktní adresy zákazníka, je-li definována místo třetí stranou jako adresa příjemce nabídky
+ClonePropal=Kopírovat obchodní nabídku
+ConfirmClonePropal=Jste si jisti, že chcete kopírovat obchodní nabídku <b>%s</b> ?
+ConfirmReOpenProp=Jste si jisti, že chcete otevřít zpět obchodní nabídku <b>%s</b> ?
+ProposalsAndProposalsLines=Obchodní nabídka a řádky
+ProposalLine=Řádky nabídky
+AvailabilityPeriod=Dostupné zpoždění
+SetAvailability=Nastavte si dostupné zpoždění
 AfterOrder=po objednání
 ##### Availability #####
 AvailabilityTypeAV_NOW=Bezprostřední
@@ -91,12 +89,12 @@ AvailabilityTypeAV_2W=2 týdny
 AvailabilityTypeAV_3W=3 týdny
 AvailabilityTypeAV_1M=1 měsíc
 ##### Types de contacts #####
-TypeContact_propal_internal_SALESREPFOLL=Zástupce následující vypracovaného návrhu
-TypeContact_propal_external_BILLING=Zákazník faktura kontakt
-TypeContact_propal_external_CUSTOMER=Kontakt se zákazníkem následující vypracovaného návrhu
+TypeContact_propal_internal_SALESREPFOLL=Zástupce následující vypracované nabídky
+TypeContact_propal_external_BILLING=Fakturační kontakt zákazníka
+TypeContact_propal_external_CUSTOMER=Kontakt se zákazníkem pro následující vypracované nabídky
 # Document models
-DocModelAzurDescription=Kompletní návrh modelu (logo. ..)
-DocModelJauneDescription=Jaune návrh modelu
-DefaultModelPropalCreate=Výchozí model, tvorba
-DefaultModelPropalToBill=Výchozí šablona při zavírání obchodní návrh (bude fakturovat)
-DefaultModelPropalClosed=Výchozí šablona při zavírání obchodní návrh (nevyfakturované)
+DocModelAzurDescription=Kompletní šablona nabídky (logo. ..)
+DocModelJauneDescription=Jaune šablona nabídky
+DefaultModelPropalCreate=Tvorba z výchozí šablony
+DefaultModelPropalToBill=Výchozí šablona při uzavírání obchodní nabídky (bude se fakturovat)
+DefaultModelPropalClosed=Výchozí šablona při uzavírání obchodní nabídky (nevyfakturované)
diff --git a/htdocs/langs/cs_CZ/resource.lang b/htdocs/langs/cs_CZ/resource.lang
index 32bdd92f884785546c5345ebe4e9ebea1f563956..43db6790fe33c7cbb9631e54b547ef6558fe66d4 100644
--- a/htdocs/langs/cs_CZ/resource.lang
+++ b/htdocs/langs/cs_CZ/resource.lang
@@ -1,34 +1,34 @@
 
-MenuResourceIndex=Resources
-MenuResourceAdd=New resource
-MenuResourcePlanning=Resource planning
-DeleteResource=Delete resource
-ConfirmDeleteResourceElement=Confirm delete the resource for this element
-NoResourceInDatabase=No resource in database.
-NoResourceLinked=No resource linked
+MenuResourceIndex=Zdroje
+MenuResourceAdd=Nový zdroj
+MenuResourcePlanning=Plánování zdrojů
+DeleteResource=Smazat zdroj
+ConfirmDeleteResourceElement=Potvrďte odstranění zdroje pro tento element
+NoResourceInDatabase=Žádný zdroj v databázi.
+NoResourceLinked=Žádný propojený zdroj
 
-ResourcePageIndex=Resources list
-ResourceSingular=Resource
-ResourceCard=Resource card
-AddResource=Create a resource
-ResourceFormLabel_ref=Resource name
-ResourceType=Resource type
-ResourceFormLabel_description=Resource description
+ResourcePageIndex=Výpis zdrojů
+ResourceSingular=Zdroj
+ResourceCard=Karta zdroje
+AddResource=Vytvořit zdroj
+ResourceFormLabel_ref=Název zdroje
+ResourceType=Typ zdroje
+ResourceFormLabel_description=Popis zdroje
 
-ResourcesLinkedToElement=Resources linked to element
+ResourcesLinkedToElement=Zdroje propojené s prvkem
 
-ShowResourcePlanning=Show resource planning
-GotoDate=Go to date
+ShowResourcePlanning=Zobrazení plánování zdrojů
+GotoDate=Jdi na datum
 
-ResourceElementPage=Element resources
-ResourceCreatedWithSuccess=Resource successfully created
-RessourceLineSuccessfullyDeleted=Resource line successfully deleted
-RessourceLineSuccessfullyUpdated=Resource line successfully updated
-ResourceLinkedWithSuccess=Resource linked with success
+ResourceElementPage=Prvky zdrojů
+ResourceCreatedWithSuccess=Zdroj úspěšně vytvořen
+RessourceLineSuccessfullyDeleted=Propojení zdrojů bylo úspěšně odstraněno
+RessourceLineSuccessfullyUpdated=Propojení zdrojů bylo úspěšně aktualizováno
+ResourceLinkedWithSuccess=Zdroj úspěšně propojen
 
-TitleResourceCard=Resource card
-ConfirmDeleteResource=Confirm to delete this resource
-RessourceSuccessfullyDeleted=Resource successfully deleted
-DictionaryResourceType=Type of resources
+TitleResourceCard=Karta zdroje
+ConfirmDeleteResource=Potvrďte odstranění tohoto zdroje
+RessourceSuccessfullyDeleted=Zdroj úspěšně odstraněn
+DictionaryResourceType=Typy zdrojů
 
-SelectResource=Select resource
+SelectResource=Výběr zdroje
diff --git a/htdocs/langs/cs_CZ/salaries.lang b/htdocs/langs/cs_CZ/salaries.lang
index f9dbdb94b20845f9e76a4f3aec8f186aa2b3dff7..8e3208a9d7397b2240d0d1b18ac1f66cf2da0776 100644
--- a/htdocs/langs/cs_CZ/salaries.lang
+++ b/htdocs/langs/cs_CZ/salaries.lang
@@ -1,6 +1,6 @@
 # Dolibarr language file - Source file is en_US - users
-SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments
-SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge
+SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Kód pro platby mezd v účetnictví
+SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Kód pro finanční poplatek v účetnictví
 Salary=Mzda
 Salaries=Mzdy
 Employee=Zaměstnanec
@@ -8,6 +8,6 @@ NewSalaryPayment=Nová platba mzdy
 SalaryPayment=Platba mzdy
 SalariesPayments=Platby mezd
 ShowSalaryPayment=Ukázat platbu mzdy
-THM=Average hourly price
-TJM=Average daily price
-CurrentSalary=Current salary
+THM=Průměrná hodinová mzda
+TJM=Průměrná denní cena
+CurrentSalary=Současná mzda
diff --git a/htdocs/langs/cs_CZ/sendings.lang b/htdocs/langs/cs_CZ/sendings.lang
index 31a10e77e1bfae176d69ed3a2416968504e05dfe..7020cd17ac8ca1c5ae81edee98cc68b003d4febc 100644
--- a/htdocs/langs/cs_CZ/sendings.lang
+++ b/htdocs/langs/cs_CZ/sendings.lang
@@ -1,13 +1,13 @@
 # Dolibarr language file - Source file is en_US - sendings
-RefSending=Ref. náklad
+RefSending=Ref. zásilka
 Sending=Náklad
 Sendings=Zásilky
-AllSendings=All Shipments
-Shipment=Náklad
+AllSendings=Všechny zásilky
+Shipment=Doprava
 Shipments=Zásilky
-ShowSending=Show Sending
-Receivings=Receipts
-SendingsArea=Zásilky oblast
+ShowSending=Ukázat odeslání
+Receivings=Doklady
+SendingsArea=Oblast zásilek
 ListOfSendings=Seznam zásilek
 SendingMethod=Způsob dopravy
 SendingReceipt=Přepravní doklad
@@ -16,71 +16,71 @@ SearchASending=Hledat zásilky
 StatisticsOfSendings=Statistika zásilek
 NbOfSendings=Počet zásilek
 NumberOfShipmentsByMonth=Počet zásilek podle měsíce
-SendingCard=Shipment card
+SendingCard=Karta zásilky
 NewSending=Nová zásilka
 CreateASending=Vytvořit zásilku
 CreateSending=Vytvořit zásilku
-QtyOrdered=Množství objednat
+QtyOrdered=Množství objednáno
 QtyShipped=Množství odesláno
 QtyToShip=Množství na loď
 QtyReceived=Množství přijaté
-KeepToShip=Remain to ship
+KeepToShip=Zůstaňte na loď
 OtherSendingsForSameOrder=Další zásilky pro tuto objednávku
-DateSending=Datum odeslání, aby
-DateSendingShort=Datum odeslání, aby
+DateSending=Datum odeslání objednávky
+DateSendingShort=Datum odeslání objednávky
 SendingsForSameOrder=Zásilky pro tuto objednávku
-SendingsAndReceivingForSameOrder=Zásilky a receivings pro tuto objednávku
+SendingsAndReceivingForSameOrder=Zásilky a vratky pro tuto objednávku
 SendingsToValidate=Zásilky se ověřují
 StatusSendingCanceled=Zrušený
 StatusSendingDraft=Návrh
-StatusSendingValidated=Ověřené (výrobky na loď nebo již dodávány)
+StatusSendingValidated=Ověřené (výrobky pro dodávku nebo již dodány)
 StatusSendingProcessed=Zpracované
 StatusSendingCanceledShort=Zrušený
 StatusSendingDraftShort=Návrh
 StatusSendingValidatedShort=Ověřené
 StatusSendingProcessedShort=Zpracované
-SendingSheet=Shipment sheet
+SendingSheet=Zásilkový list
 Carriers=Dopravci
-Carrier=Nosič
+Carrier=Dopravce
 CarriersArea=Dopravci oblasti
-NewCarrier=Nový nosič
+NewCarrier=Nový dopravce
 ConfirmDeleteSending=Jste si jisti, že chcete smazat tuto zásilku?
-ConfirmValidateSending=Jste si jisti, že chcete ověřit tuto zásilku s referenčními <b>%s?</b>
+ConfirmValidateSending=Jste si jisti, že chcete ověřit tuto zásilku s referenčním <b>%s?</b>
 ConfirmCancelSending=Jste si jisti, že chcete zrušit tuto zásilku?
-GenericTransport=Generic doprava
-Enlevement=Dostal zákazník
-DocumentModelSimple=Jednoduché Vzor dokladu
+GenericTransport=Generická doprava
+Enlevement=Obdrželi od zákazníka
+DocumentModelSimple=Jednoduchý vzor dokladu
 DocumentModelMerou=Merou A5 modelu
-WarningNoQtyLeftToSend=Varování: žádné zboží mají být dodány.
-StatsOnShipmentsOnlyValidated=Statistiky provedena na zásilky pouze ověřených. Datum použity je datum schválení zásilky (plánované datum dodání není vždy známo).
-DateDeliveryPlanned=Čelní termín dodání
-DateReceived=Datum doručení obdržel
-SendShippingByEMail=Poslat zásilku EMail
-SendShippingRef=Submission of shipment %s
-ActionsOnShipping=Události na zásilky
+WarningNoQtyLeftToSend=Varování: žádné zboží nečeká na dopravu
+StatsOnShipmentsOnlyValidated=Statistiky vedené pouze na ověřené zásilky. Datum použití je datum schválení zásilky (plánované datum dodání není vždy známo).
+DateDeliveryPlanned=Plánovaný termín dodání
+DateReceived=Datum doručení
+SendShippingByEMail=Poslat zásilku mailem
+SendShippingRef=Podání zásilky %s
+ActionsOnShipping=Události zásilky
 LinkToTrackYourPackage=Odkaz pro sledování balíku
-ShipmentCreationIsDoneFromOrder=Pro tuto chvíli, je vytvoření nové zásilky provést z objednávky karty.
-RelatedShippings=Related shipments
-ShipmentLine=Zásilka linka
+ShipmentCreationIsDoneFromOrder=Pro tuto chvíli, je vytvoření nové zásilky provedeno z objednávkové  karty.
+RelatedShippings=Související zásilky
+ShipmentLine=Řádek zásilky
 CarrierList=Seznam dopravců
-SendingRunning=Product from ordered customer orders
-SuppliersReceiptRunning=Product from ordered supplier orders
-ProductQtyInCustomersOrdersRunning=Product quantity into opened customers orders
-ProductQtyInSuppliersOrdersRunning=Product quantity into opened suppliers orders
-ProductQtyInShipmentAlreadySent=Product quantity from opended customer order already sent
-ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened supplier order already received
+SendingRunning=Produkt z objednaných zákaznických objednávek
+SuppliersReceiptRunning=Produkt z objednaných dodavatelských objednávek
+ProductQtyInCustomersOrdersRunning=Množství výrobku do otevřených objednávek zákazníků
+ProductQtyInSuppliersOrdersRunning=Množství výrobku do otevřených dodavatelů zakázek
+ProductQtyInShipmentAlreadySent=Množství již odeslaných produktů  z objednávek zákazníka
+ProductQtyInSuppliersShipmentAlreadyRecevied=Množství již dodaných produktů z otevřených dodavatelských objednávek
 
 # Sending methods
 SendingMethodCATCH=Chytit zákazníka
 SendingMethodTRANS=Přepravce
-SendingMethodCOLSUI=Colissimo
+SendingMethodCOLSUI=Colisimo
 # ModelDocument
-DocumentModelSirocco=Jednoduchý model pro dokument o doručení
-DocumentModelTyphon=Více Celý dokument model pro potvrzení o doručení (logo. ..)
-Error_EXPEDITION_ADDON_NUMBER_NotDefined=Konstantní EXPEDITION_ADDON_NUMBER není definováno
-SumOfProductVolumes=Součet objemů produktů
-SumOfProductWeights=Součet hmotností produktů
+DocumentModelSirocco=Jednoduchý model dokumentu pro potvrzení o doručení
+DocumentModelTyphon=Více kompletních modelů dokumentů pro potvrzení o doručení (logo. ..)
+Error_EXPEDITION_ADDON_NUMBER_NotDefined=Konstanta EXPEDITION_ADDON_NUMBER není definována
+SumOfProductVolumes=Součet objemu produktů
+SumOfProductWeights=Součet hmotnosti produktů
 
 # warehouse details
-DetailWarehouseNumber= Warehouse details
-DetailWarehouseFormat= W:%s (Qty : %d)
+DetailWarehouseNumber= Detaily skladu
+DetailWarehouseFormat= W:%s (Množství : %d)
diff --git a/htdocs/langs/cs_CZ/stocks.lang b/htdocs/langs/cs_CZ/stocks.lang
index d284ef346403896634828acf2d3123e3e6846009..b96fdc71ed5d4e11c6d5a27617718cb1e7df4d91 100644
--- a/htdocs/langs/cs_CZ/stocks.lang
+++ b/htdocs/langs/cs_CZ/stocks.lang
@@ -1,30 +1,30 @@
 # Dolibarr language file - Source file is en_US - stocks
-WarehouseCard=Skladová karta
-Warehouse=Sklad
-Warehouses=Sklady
-NewWarehouse=Nový sklad / Skladové plochy
-WarehouseEdit=Upravit sklad
-MenuNewWarehouse=Nový sklad
-WarehouseOpened=Warehouse otevřel
-WarehouseClosed=Sklad uzavřen
+WarehouseCard=Karta skladiště
+Warehouse=Skladiště
+Warehouses=Skladiště
+NewWarehouse=Nový skladiště/skladová oblast
+WarehouseEdit=Upravit skladiště
+MenuNewWarehouse=Nové skladiště
+WarehouseOpened=Skladiště otevřeno
+WarehouseClosed=Skladiště uzavřeno
 WarehouseSource=Zdrojový sklad
-WarehouseSourceNotDefined=Ne sklad definován,
+WarehouseSourceNotDefined=Není definován žádné skladiště
 AddOne=Přidat jeden
 WarehouseTarget=Cílový sklad
 ValidateSending=Smazat odeslání
 CancelSending=Zrušit zasílání
 DeleteSending=Smazat odeslání
 Stock=Sklad
-Stocks=Zásoby
-StocksByLotSerial=Stock by lot/serial
+Stocks=Sklady
+StocksByLotSerial=Sklad množství/série
 Movement=Pohyb
 Movements=Pohyby
-ErrorWarehouseRefRequired=Sklad referenční jméno je povinné
-ErrorWarehouseLabelRequired=Sklad štítek je nutné
+ErrorWarehouseRefRequired=Referenční jméno skladiště je povinné
+ErrorWarehouseLabelRequired=Štítek skladiště je požadovaný
 CorrectStock=Upravit skladové zásoby
-ListOfWarehouses=Seznam skladů
+ListOfWarehouses=Seznam skladišť
 ListOfStockMovements=Seznam skladových pohybů
-StocksArea=Warehouses area
+StocksArea=Oblast skladišť
 Location=Umístění
 LocationSummary=Krátký název umístění
 NumberOfDifferentProducts=Počet různých výrobků
@@ -33,107 +33,107 @@ LastMovement=Poslední pohyb
 LastMovements=Poslední pohyby
 Units=Jednotky
 Unit=Jednotka
-StockCorrection=Správné skladem
-StockTransfer=Stock přenos
+StockCorrection=Správný sklad
+StockTransfer=Přenos zásob
 StockMovement=Přenést
-StockMovements=Sklad převody
-LabelMovement=Pohyb štítek
+StockMovements=Skladové převody
+LabelMovement=Štítek pohybu
 NumberOfUnit=Počet jednotek
 UnitPurchaseValue=Jednotková kupní cena
 TotalStock=Celkem skladem
-StockTooLow=Stock příliš nízká
-StockLowerThanLimit=Stock nižší než mez výstrahy
+StockTooLow=Stav skladu je nízký
+StockLowerThanLimit=Stav skladu je nižší než bod výstrahy
 EnhancedValue=Hodnota
 PMPValue=Vážená průměrná cena
 PMPValueShort=WAP
-EnhancedValueOfWarehouses=Sklady hodnota
-UserWarehouseAutoCreate=Vytvořte sklad automaticky při vytváření uživatele
-IndependantSubProductStock=Product stock and subproduct stock are independant
+EnhancedValueOfWarehouses=Hodnota skladišť
+UserWarehouseAutoCreate=Vytvořte skladiště automaticky při vytváření uživatele
+IndependantSubProductStock=Sklady produktů a subproduktů jsou nezávislé
 QtyDispatched=Množství odesláno
-QtyDispatchedShort=Qty dispatched
-QtyToDispatchShort=Qty to dispatch
-OrderDispatch=Stock dispečink
+QtyDispatchedShort=Odeslané množství
+QtyToDispatchShort=Odesílané množství
+OrderDispatch=Skladový dispečink
 RuleForStockManagementDecrease=Pravidlo pro snížení řízení zásob
 RuleForStockManagementIncrease=Pravidlo pro zvýšení řízení zásob
-DeStockOnBill=Pokles reálné zásoby na zákazníky faktur / dobropisů validace
-DeStockOnValidateOrder=Pokles reálné zásoby na zákazníky objednávky validaci
+DeStockOnBill=Pokles reálných zásob na zákaznických fakturách/dobropisech validace
+DeStockOnValidateOrder=Pokles reálné zásoby na objednávky zákazníků validace
 DeStockOnShipment=Pokles reálné zásoby na odeslání potvrzení
-ReStockOnBill=Zvýšení reálné zásoby na dodavatele faktur / dobropisů validace
-ReStockOnValidateOrder=Zvýšení reálné zásoby na dodavatele objednávek kolaudaci
-ReStockOnDispatchOrder=Zvýšení reálné zásoby na ruční dispečinku do skladů, poté, co se s dodavately účelem obdržení
-ReStockOnDeleteInvoice=Zvýšení reálné zásoby na faktuře smazání
-OrderStatusNotReadyToDispatch=Řád má ještě není, nebo více postavení, které umožňuje zasílání výrobků na skladě skladech.
-StockDiffPhysicTeoric=Explanation for difference between physical and theoretical stock
-NoPredefinedProductToDispatch=Žádné předdefinované produkty pro tento objekt. Takže žádné dispečink skladem je nutná.
+ReStockOnBill=Zvýšení reálné zásoby na dodavatele faktur/dobropisů validace
+ReStockOnValidateOrder=Zvýšení reálné zásoby na dodavatele objednávek schválení
+ReStockOnDispatchOrder=Zvýšení reálné zásoby na ruční dispečinku do skladů poté, co dodavatel objedná zasílání
+ReStockOnDeleteInvoice=Zvýšení reálné zásoby na smazané faktuře
+OrderStatusNotReadyToDispatch=Objednávka ještě není, nebo nastavení statusu, který umožňuje zasílání výrobků na skladě.
+StockDiffPhysicTeoric=Vysvětlení rozdílu mezi fyzickým a teoretickým skladem
+NoPredefinedProductToDispatch=Žádné předdefinované produkty pro tento objekt. Takže není třeba odesílání na skladě.
 DispatchVerb=Odeslání
-StockLimitShort=Limit for alert
-StockLimit=Stock limit for alert
-PhysicalStock=Fyzický kapitál
-RealStock=Skutečné Stock
+StockLimitShort=Limit pro upozornění
+StockLimit=Skladový limit pro upozornění
+PhysicalStock=Fyzický sklad
+RealStock=Skutečný sklad
 VirtualStock=Virtuální sklad
-MininumStock=Minimální skladem
-StockUp=Trčet
-MininumStockShort=Stock min
-StockUpShort=Trčet
-IdWarehouse=Id sklad
-DescWareHouse=Popis sklad
-LieuWareHouse=Lokalizace sklad
-WarehousesAndProducts=Sklady a produkty
-WarehousesAndProductsBatchDetail=Warehouses and products (with detail per lot/serial)
+MininumStock=Minimální zásoba
+StockUp=Navýšení skladu
+MininumStockShort=Sklad min
+StockUpShort=Navýšení skladu
+IdWarehouse=ID skladu
+DescWareHouse=Popis skladiště
+LieuWareHouse=Lokalizace skladiště
+WarehousesAndProducts=Skladiště a produkty
+WarehousesAndProductsBatchDetail=Skladiště a výrobky (s detaily na množství/série)
 AverageUnitPricePMPShort=Vážený průměr cen vstupů
 AverageUnitPricePMP=Vážený průměr cen vstupů
 SellPriceMin=Prodejní jednotka Cena
 EstimatedStockValueSellShort=Hodnota k prodeji
-EstimatedStockValueSell=Hodnota prodávat
+EstimatedStockValueSell=Hodnota k prodeji
 EstimatedStockValueShort=Vstupní hodnota zásob
 EstimatedStockValue=Vstupní hodnota zásob
-DeleteAWarehouse=Odstranění skladu
-ConfirmDeleteWarehouse=Jste si jisti, že chcete smazat skladu <b>%s?</b>
-PersonalStock=Osobní Stock %s
+DeleteAWarehouse=Odstranění skladiště
+ConfirmDeleteWarehouse=Jste si jisti, že chcete smazat skladiště <b>%s?</b>
+PersonalStock=Osobní sklad %s
 ThisWarehouseIsPersonalStock=Tento sklad představuje osobní zásobu %s %s
-SelectWarehouseForStockDecrease=Zvolte sklad použít pro snížení skladem
-SelectWarehouseForStockIncrease=Zvolte sklad použít pro zvýšení stavu zásob
-NoStockAction=Žádné akce skladem
-LastWaitingSupplierOrders=Objednávky čekání na recepcích
+SelectWarehouseForStockDecrease=Zvolte skladiště pro použití snížení zásob
+SelectWarehouseForStockIncrease=Zvolte skladiště pro zvýšení stavu zásob
+NoStockAction=Žádné akce ve skladu
+LastWaitingSupplierOrders=Čekající objednávky na přijetí
 DesiredStock=Požadovaná skladem
 StockToBuy=Chcete-li objednat
 Replenishment=Naplnění
 ReplenishmentOrders=Doplňování objednávky
-VirtualDiffersFromPhysical=According to increase/decrease stock options, physical stock and virtual stock (physical + current orders) may differs
-UseVirtualStockByDefault=Use virtual stock by default, instead of physical stock, for replenishment feature
-UseVirtualStock=Use virtual stock
-UsePhysicalStock=Use physical stock
-CurentSelectionMode=Curent selection mode
-CurentlyUsingVirtualStock=Virtual stock
-CurentlyUsingPhysicalStock=Physical stock
+VirtualDiffersFromPhysical=Podle zvýšení/snížení skladové  možnosti se fyzické a virtuální zásoby (fyzické aktuální objednávky) mohou lišit.
+UseVirtualStockByDefault=Použijte virtuální sklad ve výchozím nastavení, namísto fyzického skladu pro funkci doplňování
+UseVirtualStock=Použít virtuální zásoby
+UsePhysicalStock=Použít fyzický sklad
+CurentSelectionMode=Režim aktuálního výběru
+CurentlyUsingVirtualStock=Virtuální zásoby
+CurentlyUsingPhysicalStock=Fyzické zásoby
 RuleForStockReplenishment=Pravidlo pro doplňování zásob
-SelectProductWithNotNullQty=Vyberte alespoň jeden produkt s Množství NOT NULL a dodavatelem
-AlertOnly= Upozornění pouze
-WarehouseForStockDecrease=Skladová <b>%s</b> budou použity pro snížení skladem
-WarehouseForStockIncrease=Skladová <b>%s</b> budou použity pro zvýšení stavu zásob
-ForThisWarehouse=Z tohoto skladu
-ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference.
-ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here.
+SelectProductWithNotNullQty=Vyberte alespoň jeden produkt s množství větším než 0 a dodavatelem
+AlertOnly= Pouze upozornění
+WarehouseForStockDecrease=Skladiště <b>%s</b> budou použity pro snížení skladu
+WarehouseForStockIncrease=Skladiště <b>%s</b> budou použity pro zvýšení stavu zásob
+ForThisWarehouse=Z tohoto skladiště
+ReplenishmentStatusDesc=Toto je seznam všech produktů s nižší než požadovanou zásobou skladem (nebo nižší než hodnota výstrahy, pokud pole "pouze upozornění" je zaškrtnuto), a doporučuji vám vytvořit dodavatelské objednávky pro doplnění rozdílu.
+ReplenishmentOrdersDesc=Toto je seznam všech otevřených dodavatelských objednávek, včetně předem stanovených výrobků. Jen otevřené objednávky s předdefinovanými produkty, které mohou mít vliv na zásoby jsou zde viditelné.
 Replenishments=Splátky
-NbOfProductBeforePeriod=Množství produktů %s na skladě, než zvolené období (&lt;%s)
-NbOfProductAfterPeriod=Množství produktů %s na skladě po zvolené období (&gt; %s)
-MassMovement=Mass movement
-MassStockMovement=Mass pohyb zásob
-SelectProductInAndOutWareHouse=Vyberte produkt, množství, zdrojový sklad a cílový sklad, pak klikněte na &quot;%s&quot;. Jakmile se tak stane pro všechny požadované pohyby, klikněte na &quot;%s&quot;.
-RecordMovement=Záznam transfert
-ReceivingForSameOrder=Receipts for this order
-StockMovementRecorded=Stock movements recorded
-RuleForStockAvailability=Rules on stock requirements
-StockMustBeEnoughForInvoice=Stock level must be enough to add product/service into invoice
-StockMustBeEnoughForOrder=Stock level must be enough to add product/service into order
-StockMustBeEnoughForShipment= Stock level must be enough to add product/service into shipment
-MovementLabel=Label of movement
-InventoryCode=Movement or inventory code
-IsInPackage=Contained into package
-ShowWarehouse=Show warehouse
-MovementCorrectStock=Stock content correction for product %s
-MovementTransferStock=Stock transfer of product %s into another warehouse
-WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when "product lot" module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps.
-InventoryCodeShort=Inv./Mov. code
-NoPendingReceptionOnSupplierOrder=No pending reception due to opened supplier order
-ThisSerialAlreadyExistWithDifferentDate=This lot/serial number (<strong>%s</strong>) already exists but with different eatby or sellby date (found <strong>%s</strong> but you enter <strong>%s</strong>).
+NbOfProductBeforePeriod=Množství produktů %s na skladě, než zvolené období (< %s)
+NbOfProductAfterPeriod=Množství produktů %s na skladě po zvolené období (> %s)
+MassMovement=Hromadný pohyb
+MassStockMovement=Hromadný pohyb zásob
+SelectProductInAndOutWareHouse=Vyberte produkt, množství, zdrojový sklad a cílový sklad, pak klikněte na  "%s". Jakmile se tak stane pro všechny požadované pohyby, klikněte na  "%s".
+RecordMovement=Záznam převodu
+ReceivingForSameOrder=Příjmy pro tuto objednávku
+StockMovementRecorded=Zaznamenány pohyby zásob
+RuleForStockAvailability=Pravidla o požadavcích na skladě
+StockMustBeEnoughForInvoice=Úroveň zásob musí  být dostatečná pro přidání výrobku/služby do faktury
+StockMustBeEnoughForOrder=Úroveň zásob musí  být dostatečná pro přidání výrobku/služby do objednávky
+StockMustBeEnoughForShipment= Úroveň zásob musí  být dostatečná pro přidání výrobku/služby do zásilky
+MovementLabel=Štítek pohybu
+InventoryCode=Kód pohybu nebo zásob
+IsInPackage=Obsažené v zásilce
+ShowWarehouse=Ukázat skladiště
+MovementCorrectStock=Sklad obsahuje korekci pro produkt %s
+MovementTransferStock=Přenos skladových produktů %s do jiného skladiště
+WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Zdrojové skladiště zde musí být definováno při "množství produktu" v modulu. To bude použito na seznam který obsahuje množství/sérii a je k dispozici pro výrobek, který požaduje data množství/sérii pro pohyb. Chcete-li poslat výrobky z různých skladišť, sestavujete zásilku do několika kroků.
+InventoryCodeShort=Inventární/pohybový kód
+NoPendingReceptionOnSupplierOrder=Nečeká na příjem kvůli otevřené dodavatelské objednávce
+ThisSerialAlreadyExistWithDifferentDate=Toto množství/sériové číslo (<strong>%s</strong>) už ale s odlišnou spotřebou nebo datem prodeje existuje (found <strong>%s</strong> ale zadáte <strong>%s</strong>).
diff --git a/htdocs/langs/cs_CZ/suppliers.lang b/htdocs/langs/cs_CZ/suppliers.lang
index 7515875ecc33c336fb652357c08c738992a4a6d4..a5d82beee48d165383fc6d56439e0c453d9bb115 100644
--- a/htdocs/langs/cs_CZ/suppliers.lang
+++ b/htdocs/langs/cs_CZ/suppliers.lang
@@ -1,46 +1,46 @@
 # Dolibarr language file - Source file is en_US - suppliers
 Suppliers=Dodavatelé
-AddSupplier=Create a supplier
-SupplierRemoved=Dodavatel odstraní
-SuppliersInvoice=Dodavatelé faktura
+AddSupplier=Vytvořit dodavatele
+SupplierRemoved=Odstranit dodavatele
+SuppliersInvoice=Faktura dodavatele
 NewSupplier=Nový dodavatel
 History=Historie
 ListOfSuppliers=Seznam dodavatelů
 ShowSupplier=Zobrazit dodavatele
-OrderDate=Objednat Datum
-BuyingPrice=Nákup cenu
-BuyingPriceMin=Minimální kupní cena
-BuyingPriceMinShort=Minimální kupní cena
-TotalBuyingPriceMin=Total of subproducts buying prices
-SomeSubProductHaveNoPrices=Some sub-products have no price defined
-AddSupplierPrice=Přidat cena dodavatele zboží
-ChangeSupplierPrice=Změna dodavatele cenu
-ErrorQtyTooLowForThisSupplier=Nedostatečné množství tohoto podniku, nebo není definována cena k tomuto produktu tohoto podniku
-ErrorSupplierCountryIsNotDefined=Země tohoto podniku není definován. Napravit jako první.
-ProductHasAlreadyReferenceInThisSupplier=Tento produkt je již odkaz na tohoto dodavatele
-ReferenceSupplierIsAlreadyAssociatedWithAProduct=Tento odkaz Dodavatel je již spojena s odkazem: %s
-NoRecordedSuppliers=Žádné zaznamenané dodavatelé
-SupplierPayment=Dodavatel platba
-SuppliersArea=Dodavatelé oblast
+OrderDate=Datum objednávky
+BuyingPrice=Nákupní cena
+BuyingPriceMin=Minimální nákupní cena
+BuyingPriceMinShort=Min. nákupní cena
+TotalBuyingPriceMin=Nákupní ceny vedlejších produktů celkem
+SomeSubProductHaveNoPrices=Některé vedlejší produkty nemají stanovené žádné ceny
+AddSupplierPrice=Přidat dodavatelskou cenu
+ChangeSupplierPrice=Změnit dodavatelskou cenu
+ErrorQtyTooLowForThisSupplier=Nedostatečné množství pro tohoto dodavatele, nebo není definována cena k tomuto produktu pro tohoto dodavatele
+ErrorSupplierCountryIsNotDefined=Země tohoto dodavatele není definována. Napravte jako první.
+ProductHasAlreadyReferenceInThisSupplier=Tento výrobek má již odkaz na tohoto dodavatele
+ReferenceSupplierIsAlreadyAssociatedWithAProduct=Tato referenční dodavatel je již spojeno s odkazem: %s
+NoRecordedSuppliers=Žádní zaznamenaní dodavatelé
+SupplierPayment=Platba dodavatele
+SuppliersArea=Oblast dodavatelů
 RefSupplierShort=Ref. dodavatel
 Availability=Dostupnost
-ExportDataset_fournisseur_1=Dodavatelských faktur Seznam faktur a vedení
+ExportDataset_fournisseur_1=Výpis dodavatelských faktur a seznam řádků
 ExportDataset_fournisseur_2=Dodavatel faktury a platby
-ExportDataset_fournisseur_3=Dodavatel objednávky a objednávka linky
+ExportDataset_fournisseur_3=Dodavatel objednávky a řádky objednávek
 ApproveThisOrder=Schválit tuto objednávku
-ConfirmApproveThisOrder=Jste si jisti, že chcete schválit pořadí <b>%s?</b>
-DenyingThisOrder=Deny this order
-ConfirmDenyingThisOrder=Jste si jisti, že chcete popírat objednávky <b>%s?</b>
-ConfirmCancelThisOrder=Jste si jisti, že chcete zrušit tuto objednávku <b>%s?</b>
+ConfirmApproveThisOrder=Jste si jisti, že chcete schválit tuto objednávku <b>%s?</b>
+DenyingThisOrder=Zakázat tuto objednávku
+ConfirmDenyingThisOrder=Jste si jisti, že chcete zakázat tuto objednávku <b>%s</b> ?
+ConfirmCancelThisOrder=Jste si jisti, že chcete zrušit tuto objednávku  <b>%s</b> ?
 AddCustomerOrder=Vytvoření objednávky zákazníka
-AddCustomerInvoice=Můžete si zákazník fakturu
-AddSupplierOrder=Můžete se s dodavately objednávku
-AddSupplierInvoice=Vytvořte dodavatelské faktury
-ListOfSupplierProductForSupplier=Seznam výrobků a cen dodavatelských <b>%s</b>
-NoneOrBatchFileNeverRan=Žádný nebo dávkový <b>%s</b> ne běžel nedávno
+AddCustomerInvoice=Vytvoření faktury zákazníka
+AddSupplierOrder=Vytvoření objednávky dodavatele
+AddSupplierInvoice=Vytvoření dodavatelské faktury
+ListOfSupplierProductForSupplier=Seznam výrobků a cen pro dodavatele <b>%s</b>
+NoneOrBatchFileNeverRan=Žádný nebo dávkový <b>%s</b> neběžel v poslední době
 SentToSuppliers=Odeslané dodavatelům
-ListOfSupplierOrders=List of supplier orders
-MenuOrdersSupplierToBill=Supplier orders to invoice
-NbDaysToDelivery=Delivery delay in days
-DescNbDaysToDelivery=The biggest delay is display among order product list
-UseDoubleApproval=Use double approval (the second approval can be done by any user with the dedicated permission)
+ListOfSupplierOrders=Seznam dodavatelských objednávek
+MenuOrdersSupplierToBill=Fakturované zakázky dodavatele
+NbDaysToDelivery=Zpoždění dodávky  ve dnech
+DescNbDaysToDelivery=Největší zpoždění je zobrazeno mimo seznam pořadí produktů
+UseDoubleApproval=Použít dvojí schválení (druhé schválení může být provedeno uživateli se specifickým svolením)
diff --git a/htdocs/langs/cs_CZ/trips.lang b/htdocs/langs/cs_CZ/trips.lang
index 72a8632728185b9ed4981f5ce9d816db7c8b2599..2a6e6a5be57146a905e5cf9ef14748db4def7f0c 100644
--- a/htdocs/langs/cs_CZ/trips.lang
+++ b/htdocs/langs/cs_CZ/trips.lang
@@ -1,102 +1,102 @@
 # Dolibarr language file - Source file is en_US - trips
-ExpenseReport=Expense report
-ExpenseReports=Expense reports
-Trip=Expense report
-Trips=Expense reports
-TripsAndExpenses=Expenses reports
-TripsAndExpensesStatistics=Expense reports statistics
-TripCard=Expense report card
-AddTrip=Create expense report
-ListOfTrips=List of expense report
+ExpenseReport=Zpráva výdaje
+ExpenseReports=Zpráva výdajů
+Trip=Zpráva výdaje
+Trips=Zprávy výdaje
+TripsAndExpenses=Zprávy výdajů
+TripsAndExpensesStatistics=Statistiky výdaje
+TripCard=Karta zpráv výdajů
+AddTrip=Vytvoření zprávy o výdajích
+ListOfTrips=Seznam zpráv výdajů
 ListOfFees=Sazebník poplatků
-NewTrip=New expense report
-CompanyVisited=Firma / nadace navštívil
+NewTrip=Nová zpráva výdaje
+CompanyVisited=Firma/nadace navštívena
 Kilometers=Kilometry
 FeesKilometersOrAmout=Množství nebo kilometrů
-DeleteTrip=Delete expense report
-ConfirmDeleteTrip=Are you sure you want to delete this expense report ?
-ListTripsAndExpenses=List of expense reports
-ListToApprove=Waiting for approval
-ExpensesArea=Expense reports area
-SearchATripAndExpense=Search an expense report
-ClassifyRefunded=Classify 'Refunded'
-ExpenseReportWaitingForApproval=A new expense report has been submitted for approval
-ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s
-TripId=Id expense report
-AnyOtherInThisListCanValidate=Person to inform for validation.
-TripSociete=Information company
-TripSalarie=Informations user
-TripNDF=Informations expense report
-DeleteLine=Delete a ligne of the expense report
-ConfirmDeleteLine=Are you sure you want to delete this line ?
-PDFStandardExpenseReports=Standard template to generate a PDF document for expense report
-ExpenseReportLine=Expense report line
+DeleteTrip=Smazat zprávy o výdajích
+ConfirmDeleteTrip=Jste si jisti, že chcete smazat tuto zprávu o výdajích?
+ListTripsAndExpenses=Seznam vyúčtování výdajů
+ListToApprove=Čekání na schválení
+ExpensesArea=Oblast vyúčtování výdajů
+SearchATripAndExpense=Hledat zprávu o výdajích
+ClassifyRefunded=Označit jako 'Vráceno'
+ExpenseReportWaitingForApproval=Nová zpráva výdajů byla předložena ke schválení
+ExpenseReportWaitingForApprovalMessage=Nová zpráva výdajů byla předložena, a čeká na schválení.\n- Uživatel: %s\n- Období: %s\nKlikněte zde pro schválení: %s
+TripId=ID zprávy výdajů
+AnyOtherInThisListCanValidate=Informovat osobu o schválení.
+TripSociete=Informace o firmě
+TripSalarie=Informace o uživateli
+TripNDF=Informace o správě nákladů
+DeleteLine=Vymazat Ligne výdajovou zprávu
+ConfirmDeleteLine=Jste si jisti, že chcete smazat tento řádek?
+PDFStandardExpenseReports=Standardní šablona pro vytvoření PDF dokumentu pro zprávy o výdajích
+ExpenseReportLine=Výdajová zpráva řádek
 TF_OTHER=Ostatní
-TF_TRANSPORTATION=Transportation
+TF_TRANSPORTATION=Doprava
 TF_LUNCH=Oběd
 TF_METRO=Metro
-TF_TRAIN=Train
-TF_BUS=Bus
-TF_CAR=Car
-TF_PEAGE=Toll
-TF_ESSENCE=Fuel
+TF_TRAIN=Vlak
+TF_BUS=Autobus
+TF_CAR=Auto
+TF_PEAGE=Mýto
+TF_ESSENCE=Palivo
 TF_HOTEL=Hostel
 TF_TAXI=Taxi
 
-ErrorDoubleDeclaration=You have declared another expense report into a similar date range.
-ListTripsAndExpenses=List of expense reports
-AucuneNDF=No expense reports found for this criteria
-AucuneLigne=There is no expense report declared yet
-AddLine=Add a line
-AddLineMini=Add
+ErrorDoubleDeclaration=Deklaroval jste další hlášení výdajů do podobného časového období.
+ListTripsAndExpenses=Seznam vyúčtování výdajů
+AucuneNDF=Žádné zprávy o výdajích nalezených podle tohoto kritéria
+AucuneLigne=Neexistuje žádná zpráva o právě deklarovaném výdaji
+AddLine=Přidat řádek
+AddLineMini=Přidat
 
-Date_DEBUT=Period date start
-Date_FIN=Period date end
-ModePaiement=Payment mode
-Note=Note
-Project=Project
+Date_DEBUT=Datum zahájení období
+Date_FIN=Datum ukončení období
+ModePaiement=Režim platby
+Note=poznámka
+Project=Projekt
 
-VALIDATOR=User to inform for approbation
-VALIDOR=Approved by
-AUTHOR=Recorded by
-AUTHORPAIEMENT=Paied by
-REFUSEUR=Denied by
-CANCEL_USER=Canceled by
+VALIDATOR=Uživatel informoval o kolaudaci
+VALIDOR=Schváleno
+AUTHOR=Zaznamenáno
+AUTHORPAIEMENT=Placeno
+REFUSEUR=Zamítnuto
+CANCEL_USER=Zrušeno
 
-MOTIF_REFUS=Reason
-MOTIF_CANCEL=Reason
+MOTIF_REFUS=Důvod
+MOTIF_CANCEL=Důvod
 
-DATE_REFUS=Deny date
-DATE_SAVE=Validation date
-DATE_VALIDE=Validation date
-DATE_CANCEL=Cancelation date
-DATE_PAIEMENT=Payment date
+DATE_REFUS=Datum zamítnutí
+DATE_SAVE=Datum schválení
+DATE_VALIDE=Datum schválení
+DATE_CANCEL=Datum přerušení
+DATE_PAIEMENT=Datum platby
 
-TO_PAID=Pay
-BROUILLONNER=Reopen
-SendToValid=Sent to approve
-ModifyInfoGen=Edit
-ValidateAndSubmit=Validate and submit for approval
+TO_PAID=Platba
+BROUILLONNER=Znovu otevřeno
+SendToValid=Odesláno ke schválení
+ModifyInfoGen=Úprava
+ValidateAndSubmit=Kontrola a odeslání schválení
 
-NOT_VALIDATOR=You are not allowed to approve this expense report
-NOT_AUTHOR=You are not the author of this expense report. Operation cancelled.
+NOT_VALIDATOR=Nemáte dovoleno schvalovat tuto zprávu o výdajích
+NOT_AUTHOR=Nejste autorem této zprávy výdajů. Operace zrušena.
 
-RefuseTrip=Deny an expense report
-ConfirmRefuseTrip=Are you sure you want to deny this expense report ?
+RefuseTrip=Zamítnout zprávu o výdajích
+ConfirmRefuseTrip=Jste si jisti, že chcete zamítnout tuto zprávu o výdajích?
 
-ValideTrip=Approve expense report
-ConfirmValideTrip=Are you sure you want to approve this expense report ?
+ValideTrip=Schválit zprávu o výdajích
+ConfirmValideTrip=Jste si jisti, že chcete schválit tuto zprávu o výdajích?
 
-PaidTrip=Pay an expense report
-ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ?
+PaidTrip=Platit zprávu o výdajích
+ConfirmPaidTrip=Jste si jisti, že chcete změnit stav této zprávy výdajů na "Placeno"?
 
-CancelTrip=Cancel an expense report
-ConfirmCancelTrip=Are you sure you want to cancel this expense report ?
+CancelTrip=Zrušit zprávu o výdajích
+ConfirmCancelTrip=Jste si jisti, že chcete zrušit tuto zprávu o výdajích?
 
-BrouillonnerTrip=Move back expense report to status "Draft"n
-ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ?
+BrouillonnerTrip=Přesun zpět zprávu o výdajích do stavu "Koncept" n
+ConfirmBrouillonnerTrip=Jste si jisti, že chcete přesunout tuto zprávu o výdajích na status "Koncept"?
 
-SaveTrip=Validate expense report
-ConfirmSaveTrip=Are you sure you want to validate this expense report ?
+SaveTrip=Ověřit zprávu o výdajích
+ConfirmSaveTrip=Jste si jisti, že chcete ověřit tuto zprávu o výdajích?
 
-NoTripsToExportCSV=No expense report to export for this period.
+NoTripsToExportCSV=Žádná zpráva o výdajích na export pro toto období.
diff --git a/htdocs/langs/cs_CZ/users.lang b/htdocs/langs/cs_CZ/users.lang
index 2083fc76f2fdbce371b66697586b658269bf0cfa..bde2e649dca26db3c7c5ba8979d0992b329c713b 100644
--- a/htdocs/langs/cs_CZ/users.lang
+++ b/htdocs/langs/cs_CZ/users.lang
@@ -1,5 +1,5 @@
 # Dolibarr language file - Source file is en_US - users
-HRMArea=HRM area
+HRMArea=HRM oblast
 UserCard=Karta uživatele
 ContactCard=Karta kontaktu
 GroupCard=Karta skupiny
@@ -86,7 +86,7 @@ MyInformations=Moje údaje
 ExportDataset_user_1=Uživatelé Dolibarr a jejich vlastnosti
 DomainUser=Doménový uživatel %s
 Reactivate=Reaktivace
-CreateInternalUserDesc=This form allows you to create an user internal to your company/foundation. To create an external user (customer, supplier, ...), use the button 'Create Dolibarr user' from third party's contact card.
+CreateInternalUserDesc=Tento formulář vám umožní vytvořit interního uživateli Vaší společnosti/nadace. Pro vytvoření externího uživatele (zákazník, dodavatel, ...), použijte tlačítko 'Vytvořit uživatele' z karty kontaktu třetí strany.
 InternalExternalDesc=<b>Interní</b> uživatel je uživatel, který je součástí vaší firmy / nadace. <br> <b>Externí</b> uživatel je zákazník, dodavatel nebo jiný. <br><br> V obou případech se oprávněními definují práva na Dolibarr. Externí uživatel navíc může mít jinou nabídku menu než-li interní (viz Domů - Nastavení - Zobrazení)
 PermissionInheritedFromAGroup=Povolení uděleno, neboť je zděděno z některé uživatelské skupiny.
 Inherited=Zděděný
@@ -102,7 +102,7 @@ UserDisabled=Uživatel %s zakázán
 UserEnabled=Uživatel %s aktivován
 UserDeleted=Uživatel %s odstraněn
 NewGroupCreated=Skupina %s vytvořena
-GroupModified=Group %s modified
+GroupModified=Skupina %s upravena
 GroupDeleted=Skupina %s odstraněna
 ConfirmCreateContact=Jste si jisti, že chcete vytvořit účet Dolibarr k tomuto kontaktu?
 ConfirmCreateLogin=Jste si jisti, že chcete vytvořit účet Dolibarr pro tohoto člena?
@@ -113,10 +113,10 @@ YourRole=Vaše role
 YourQuotaOfUsersIsReached=Vaše kvóta aktivních uživatelů je dosažena!
 NbOfUsers=Počet uživatelů
 DontDowngradeSuperAdmin=Pouze superadmin může ponížit superadmina
-HierarchicalResponsible=Supervisor
+HierarchicalResponsible=Supervizor
 HierarchicView=Hierarchické zobrazení
 UseTypeFieldToChange=Použijte pole Typ pro změnu
 OpenIDURL=OpenID URL
 LoginUsingOpenID=Použijte OpenID pro přihlášení
-WeeklyHours=Weekly hours
-ColorUser=Color of the user
+WeeklyHours=Týdenní hodiny
+ColorUser=Barva uživatele
diff --git a/htdocs/langs/cs_CZ/withdrawals.lang b/htdocs/langs/cs_CZ/withdrawals.lang
index 0af0c654f6452dac8bcfadd51f11417d9390dd0b..86dbd7bcc575b89b85ea239492a25642f9b47072 100644
--- a/htdocs/langs/cs_CZ/withdrawals.lang
+++ b/htdocs/langs/cs_CZ/withdrawals.lang
@@ -1,97 +1,97 @@
 # Dolibarr language file - Source file is en_US - withdrawals
-StandingOrdersArea=Trvalé příkazy plochu
-CustomersStandingOrdersArea=Zákazníci trvalých příkazů plochu
+StandingOrdersArea=Plocha trvalých příkazů
+CustomersStandingOrdersArea=Plocha trvalých příkazů zákazníků
 StandingOrders=Trvalé příkazy
 StandingOrder=Trvalé příkazy
-NewStandingOrder=Nový trvalého příkazu
-StandingOrderToProcess=Chcete-li zpracovat
+NewStandingOrder=Nový trvalý příkaz
+StandingOrderToProcess=Ve zpracování
 StandingOrderProcessed=Zpracované
 Withdrawals=Výběry
-Withdrawal=Odnětí
-WithdrawalsReceipts=Abstinenční příjmy
-WithdrawalReceipt=Odstoupení příjem
+Withdrawal=Výběr
+WithdrawalsReceipts=Výběrové příjmy
+WithdrawalReceipt=Výběrový příjem
 WithdrawalReceiptShort=Příjem
-LastWithdrawalReceipts=Poslední příjmy %s stažení
-WithdrawedBills=Stažené z faktury
-WithdrawalsLines=Abstinenční linky
-RequestStandingOrderToTreat=Request for standing orders to process
-RequestStandingOrderTreated=Request for standing orders processed
-NotPossibleForThisStatusOfWithdrawReceiptORLine=Not yet possible. Withdraw status must be set to 'credited' before declaring reject on specific lines.
-CustomersStandingOrders=Objednávky zákazníků stojící
-CustomerStandingOrder=Zákazník trvalý příkaz
-NbOfInvoiceToWithdraw=Nb. of invoice with withdraw request
-NbOfInvoiceToWithdrawWithInfo=Nb. of invoice with withdraw request for customers having defined bank account information
-InvoiceWaitingWithdraw=Faktura čeká odstoupit
-AmountToWithdraw=Částka, která má zrušit
-WithdrawsRefused=Odstoupí odmítl
-NoInvoiceToWithdraw=Žádný zákazník fakturu na platbu režimu &quot;stáhnout&quot; čeká. Přejděte na &quot;odstoupit&quot; kartu na faktuře karty podat žádost.
+LastWithdrawalReceipts=Poslední  %s výběrové příjmy
+WithdrawedBills=Vybráno z faktury
+WithdrawalsLines=Řádky výběrů
+RequestStandingOrderToTreat=Žádost o trvalé příkazy pro zpracování
+RequestStandingOrderTreated=Žádost o zpracované  trvalé příkazy
+NotPossibleForThisStatusOfWithdrawReceiptORLine=Není to možné. Výběrový status musí být nastaven na 'připsání' před prohlášením odmítnutí na konkrétních řádcích.
+CustomersStandingOrders=Trvalé příkazy zákazníka
+CustomerStandingOrder=Trvalý příkaz zákazníka
+NbOfInvoiceToWithdraw=Faktury s požadavkem výběru
+NbOfInvoiceToWithdrawWithInfo=Faktury s požadavkem výběru pro zákazníky, kterř mají nastavené informace o bankovním účtu
+InvoiceWaitingWithdraw=Faktura čekající na výběr
+AmountToWithdraw=Částka výběru
+WithdrawsRefused=Odmítnutí výběru
+NoInvoiceToWithdraw=Žádné zákaznické faktury v režimu platby "výběr"nečekají. Přejděte na "výběrovou" tabulku na kartě faktury a vytvořte požadavek
 ResponsibleUser=Odpovědný uživatel
-WithdrawalsSetup=Odstoupení nastavení
-WithdrawStatistics=Natáhněte si statistiky
-WithdrawRejectStatistics=Natáhněte odmítnout Statistika
-LastWithdrawalReceipt=Poslední %s odstoupení příjmy
-MakeWithdrawRequest=Zkontrolujte stáhnout žádost
-ThirdPartyBankCode=Třetí stranou kód banky
-ThirdPartyDeskCode=Třetí stranou stůl kód
-NoInvoiceCouldBeWithdrawed=Ne faktura withdrawed s úspěchem. Zkontrolujte, že faktury jsou na firmy s platným BAN.
-ClassCredited=Klasifikovat připsána
-ClassCreditedConfirm=Are you sure you want to classify this withdrawal receipt as credited on your bank account?
-TransData=Transmission date
-TransMetod=Transmission method
+WithdrawalsSetup=Nastavení výběrů
+WithdrawStatistics=Statistiky výběrů
+WithdrawRejectStatistics=Statistiky odmítnutých výběrů
+LastWithdrawalReceipt=Poslední %s výběrové příjmy
+MakeWithdrawRequest=Vytvořit požadavek výběru
+ThirdPartyBankCode=Bankovní kód třetí strany
+ThirdPartyDeskCode=Karta kódů třetí strany
+NoInvoiceCouldBeWithdrawed=Neúspěšný výběr z faktur. Zkontrolujte, že faktury jsou na firmy s platným BAN.
+ClassCredited=Označit přidání kreditu
+ClassCreditedConfirm=Jste si jisti, že chcete zařadit tento výběr příjmu jako připsaný na váš bankovní účet?
+TransData=Datum přenosu
+TransMetod=Způsob přenosu
 Send=Odeslat
 Lines=Řádky
-StandingOrderReject=Issue a rejection
-WithdrawalRefused=Withdrawal refused
-WithdrawalRefusedConfirm=Jste si jisti, že chcete zadat stažení odmítnutí pro společnost
+StandingOrderReject=Vydat odmítnutí
+WithdrawalRefused=Výběr odmítnut
+WithdrawalRefusedConfirm=Jste si jisti, že chcete zadat odmítnutí výběru pro společnost
 RefusedData=Datum odmítnutí
 RefusedReason=Důvod odmítnutí
 RefusedInvoicing=Fakturace odmítnutí
-NoInvoiceRefused=Nenabíjejte odmítnutí
-InvoiceRefused=Invoice refused (Charge the rejection to customer)
-Status=Postavení
+NoInvoiceRefused=Neúčtovat odmítnutí
+InvoiceRefused=Faktura odmítnuta (Účtujte odmítnutí k zákazníkovi)
+Status=Status
 StatusUnknown=Neznámý
 StatusWaiting=Čekání
-StatusTrans=Sent
+StatusTrans=odesláno
 StatusCredited=Připsání
-StatusRefused=Odmítl
+StatusRefused=Odmítnutí
 StatusMotif0=Nespecifikovaný
-StatusMotif1=Insufficient funds
-StatusMotif2=Request contested
+StatusMotif1=Nedostatek finančních prostředků
+StatusMotif2=Žádost o napadení
 StatusMotif3=Bez příkazu k výběru
-StatusMotif4=Objednávky zákazníka
-StatusMotif5=RIB unusable
+StatusMotif4=Objednávka zákazníka
+StatusMotif5=RIB nepoužitelný
 StatusMotif6=Účet bez rovnováhy
 StatusMotif7=Soudní rozhodnutí
 StatusMotif8=Jiný důvod
-CreateAll=Odeberte všechny
+CreateAll=Vybrat vše
 CreateGuichet=Pouze kancelář
 CreateBanque=Pouze banky
 OrderWaiting=Čekání na léčbu
-NotifyTransmision=Odstoupení Převodovka
-NotifyEmision=Odstoupení emisí
-NotifyCredit=Odstoupení Credit
-NumeroNationalEmetter=Národní Vysílač číslo
-PleaseSelectCustomerBankBANToWithdraw=Vyberte informace o účtu zákazníka banky odstoupit
+NotifyTransmision=Převod výběru
+NotifyEmision=Výběr emise
+NotifyCredit=Výběr kreditu
+NumeroNationalEmetter=Národní převodní číslo
+PleaseSelectCustomerBankBANToWithdraw=Vyberte informace o účtu zákazníka banky pro výběr
 WithBankUsingRIB=U bankovních účtů pomocí RIB
-WithBankUsingBANBIC=U bankovních účtů pomocí IBAN / BIC / SWIFT
-BankToReceiveWithdraw=Bankovní účet pro příjem odstoupí
+WithBankUsingBANBIC=U bankovních účtů pomocí IBAN/BIC/SWIFT
+BankToReceiveWithdraw=Bankovní účet pro příjem výběru
 CreditDate=Kredit na
-WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your country %s (Your country is not supported)
-ShowWithdraw=Zobrazit Natáhněte
-IfInvoiceNeedOnWithdrawPaymentWontBeClosed=However, if invoice has at least one withdrawal payment not yet processed, it won't be set as paid to allow prior withdrawal management.
-DoStandingOrdersBeforePayments=This tab allows you to request a standing order. Once done, go into menu Bank->Withdrawal to manage the standing order. When standing order is closed, payment on invoice will be automatically recorded, and invoice closed if remainder to pay is null.
-WithdrawalFile=Odstoupení soubor
-SetToStatusSent=Nastavte na stav &quot;odeslaný soubor&quot;
-ThisWillAlsoAddPaymentOnInvoice=This will also apply payments to invoices and will classify them as "Paid"
-StatisticsByLineStatus=Statistics by status of lines
+WithdrawalFileNotCapable=Nelze generovat soubor výběru příjmu pro vaši zemi %s (Vaše země není podporována)
+ShowWithdraw=Zobrazit výběr
+IfInvoiceNeedOnWithdrawPaymentWontBeClosed=Nicméně, pokud faktura má alespoň jednu dosud nezpracovanou platbu z výběru, nebude nastavena jako placená pro povolení řízení výběru.
+DoStandingOrdersBeforePayments=Tato karta vám umožňuje požádat o trvalý příkaz. Jakmile to bude hotové,jděte do menu Bankovní údaje-> Výběry pro zřízení trvalého příkazu. Když je trvalý příkazu hotov, platba na faktuře bude automaticky zaznamenána a faktura uzavřena, pokud zbývající částka k placení je nula.
+WithdrawalFile=Soubor výběru
+SetToStatusSent=Nastavte na stav "Odeslaný soubor"
+ThisWillAlsoAddPaymentOnInvoice=To se bude vztahovat i platby faktur a bude klasifikováno jako "Placeno"
+StatisticsByLineStatus=Statistika podle stavu řádků
 
 ### Notifications
-InfoCreditSubject=Platba %s trvalého příkazu bankou
-InfoCreditMessage=Trvalý příkaz %s byla vyplacena bankou <br> Údaje o platbě: %s
-InfoTransSubject=Přenos %s trvalého příkazu do banky
-InfoTransMessage=The standing order %s has been sent to bank by %s %s.<br><br>
-InfoTransData=Amount: %s<br>Method: %s<br>Date: %s
-InfoFoot=Toto je automatická zpráva odeslaná Dolibarr
+InfoCreditSubject=Platba trvalého příkazu %s bankou
+InfoCreditMessage=Trvalý příkaz %s byl vyplacen bankou <br> Údaje o platbě: %s
+InfoTransSubject=Přenos trvalého příkazu %s do banky
+InfoTransMessage=Trvalý příkaz %s byl odeslán do banky prostřednictvím %s %s.<br><br>
+InfoTransData=Částka: %s<br>Metoda: %s<br>Datum: %s
+InfoFoot=Toto je automatická zpráva odeslaná Dolibarrem
 InfoRejectSubject=Trvalý příkaz odmítl
-InfoRejectMessage=Dobrý den, <br><br> trvalý příkaz na faktuře %s týkajících se společnosti, %s, s množstvím %s byla odmítnuta bankou. <br><br> - <br> %s
-ModeWarning=Volba pro reálný režim nebyl nastaven, můžeme zastavit po tomto simulaci
+InfoRejectMessage=Dobrý den, <br><br> trvalý příkaz na faktuře %s týkající se společnosti, %s, s množstvím %s byl odmítnut bankou. <br><br> - <br> %s
+ModeWarning=Volba pro reálný režim nebyl nastaven, můžeme zastavit tuto simulaci
diff --git a/htdocs/langs/cs_CZ/workflow.lang b/htdocs/langs/cs_CZ/workflow.lang
index 599d9c2ac17a8ea8b601581d6184ef98c5649e11..c91127aff4ff91fa3286ab4562fdc961fea9008b 100644
--- a/htdocs/langs/cs_CZ/workflow.lang
+++ b/htdocs/langs/cs_CZ/workflow.lang
@@ -1,11 +1,11 @@
 # Dolibarr language file - Source file is en_US - admin
-WorkflowSetup=Workflow modul nastavení
-WorkflowDesc=This module is designed to modify the behaviour of automatic actions into application. By default, workflow is opened (you make thing in order you want). You can activate the automatic actions that you are interesting in.
-ThereIsNoWorkflowToModify=Není workflow můžete upravit pro modul bylo aktivováno.
-descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Vytvoření objednávky zákazníka automaticky po komerční Návrh je podepsán
-descWORKFLOW_PROPAL_AUTOCREATE_INVOICE=Vytvořte zákaznické faktury automaticky po komerční Návrh je podepsán
-descWORKFLOW_CONTRACT_AUTOCREATE_INVOICE=Vytvořte zákaznické faktury automaticky po uzavření smlouvy ověřena
-descWORKFLOW_ORDER_AUTOCREATE_INVOICE=Vytvořte zákaznické faktury automaticky po zákazníkovi, aby je uzavřen
-descWORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL=Třídit propojené zdrojový návrh účtoval když je objednávka zákazníka nastaven na placenou
-descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Třídit spojeny zdroj objednávka zákazníka (y) účtoval, když je zákazník faktury nastaven na placené
-descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Třídit propojený zdroj objednávky zákazníka (y) účtoval když je ověřen zákazníky faktura
+WorkflowSetup=Nastavení workflow modulu
+WorkflowDesc=Tento modul je určen k úpravě chování automatických akcí, v aplikaci. Ve výchozím nastavení workflow je otevřen (uděláte něco, co chcete). Můžete aktivovat automatické akce, které jsou zajímavé.
+ThereIsNoWorkflowToModify=Workflow zde není nastaven, můžete upravit modul pokud ho chcete aktivovat.
+descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Vytvoření objednávky zákazníka automaticky po podepsání komerčního návrhu
+descWORKFLOW_PROPAL_AUTOCREATE_INVOICE=Vytvoření zákaznické faktury automaticky po podepsání komerčního návrhu
+descWORKFLOW_CONTRACT_AUTOCREATE_INVOICE=Vytvoření zákaznické faktury automaticky po schválení kontraktu
+descWORKFLOW_ORDER_AUTOCREATE_INVOICE=Vytvoření zákaznické faktury automaticky po uzavření objednávky zákazníka
+descWORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL=Označit propojený zdrojový návrh jako zaúčtovaný, když je objednávka zákazníka nastavena jako placená
+descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Označit propojenou zdrojovou objednávku zákazníka(ů) jako zaúčtované, když jsou zákaznické faktury nastaveny jako placené
+descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Označit propojenou zdrojovou objednávku zákazníka(ů) jako zaúčtovanou, když je ověřená zákaznická faktura
diff --git a/htdocs/langs/de_AT/main.lang b/htdocs/langs/de_AT/main.lang
index 8d21e402e1a329ce4890670bc41315907e7850df..d90d69cf151d38e8f382d58accb73201b1cb5bec 100644
--- a/htdocs/langs/de_AT/main.lang
+++ b/htdocs/langs/de_AT/main.lang
@@ -48,7 +48,6 @@ DolibarrBoard=dolibarr Übersciht
 January=Jänner
 ReportName=Berichtname
 FillTownFromZip=Stadt aus PLZ ergänzen
-AmountInCurrency=Betrag in %s
 NbOfCustomers=Anzahl der Kundena
 RebuildDoc=Dokument neu erzeugen
 RefCustomer=Kunden Nr.
diff --git a/htdocs/langs/de_AT/other.lang b/htdocs/langs/de_AT/other.lang
index 3504dd431ffbc57e0181a7ce071ef2f67fac6df7..5d348ab99b6e6ce142202534ddcb82defe173581 100644
--- a/htdocs/langs/de_AT/other.lang
+++ b/htdocs/langs/de_AT/other.lang
@@ -1,6 +1,7 @@
 # Dolibarr language file - Source file is en_US - other
 ToolsDesc=Dieser Bereich ist zur Gruppe diverse Werkzeuge nicht verfügbar in andere Menüeinträge gewidmet. <br><br> Diese Tools können aus dem Menü auf der Seite zu erreichen.
 DateToBirth=Geburtstdatum
+Notify_ORDER_SUPPLIER_VALIDATE=Lieferanten, um validierte
 Notify_WITHDRAW_TRANSMIT=Transmission Rückzug
 Notify_WITHDRAW_CREDIT=Kreditkarten Rückzug
 Notify_WITHDRAW_EMIT=Isue Rückzug
@@ -10,7 +11,6 @@ Notify_PROPAL_SENTBYMAIL=Gewerbliche Vorschlag per Post
 Notify_BILL_PAYED=Kunden Rechnung bezahlt
 Notify_BILL_CANCEL=Kunden Rechnung storniert
 Notify_BILL_SENTBYMAIL=Kunden Rechnung per Post geschickt
-Notify_ORDER_SUPPLIER_VALIDATE=Lieferanten, um validierte
 Notify_ORDER_SUPPLIER_SENTBYMAIL=Lieferant Bestellung per Post geschickt
 Notify_BILL_SUPPLIER_VALIDATE=Lieferantenrechnung validiert
 Notify_BILL_SUPPLIER_SENTBYMAIL=Lieferant Rechnung per Post geschickt
diff --git a/htdocs/langs/de_DE/admin.lang b/htdocs/langs/de_DE/admin.lang
index 728834fdd4ab8965e46bf10f4b403f77f03ba2c8..bc7fec76f5f555147b6b79a194df49c71aab92cb 100644
--- a/htdocs/langs/de_DE/admin.lang
+++ b/htdocs/langs/de_DE/admin.lang
@@ -30,7 +30,7 @@ HTMLCharset=Zeichensatz für die generierten HTML-Seiten
 DBStoringCharset=Zeichensatz der Datenbank-Speicherung
 DBSortingCharset=Zeichensatz der Datenbank-Sortierung
 WarningModuleNotActive=Modul <b>%s</b> muss aktiviert sein
-WarningOnlyPermissionOfActivatedModules=Hier werden nur Berechtigungen im Zusammenhang mit aktivierten Module angezeigt. Weitere Module können Sie unter Einstellungen-Module aktivieren.
+WarningOnlyPermissionOfActivatedModules=Achtung, hier werden nur Berechtigungen im Zusammenhang mit aktivierten Module angezeigt. Weitere Module können Sie unter Start->Einstellungen-Module aktivieren.
 DolibarrSetup=dolibarr Installation oder Upgrade
 DolibarrUser=Benutzer
 InternalUser=Interner Benutzer
@@ -66,13 +66,13 @@ DelaiedFullListToSelectContact=Warten bis Taste gedrückt bevor der Inhalt der K
 SearchFilter=Suchfilter Optionen
 NumberOfKeyToSearch=Anzahl der Buchstaben um eine Suche auszulösen: %s
 ViewFullDateActions=Zeige alle Terminaktionen in der Partneransicht
-NotAvailableWhenAjaxDisabled=Bei deaktiviertem Ajax nicht verfügbar
+NotAvailableWhenAjaxDisabled=Nicht verfügbar, wenn Ajax deaktiviert
 JavascriptDisabled=JavaScript deaktiviert
 UsePopupCalendar=Popups für die Datumseingabe verwenden
 UsePreviewTabs=Vorschautabs verwenden
-ShowPreview=Zeige Vorschau
+ShowPreview=Vorschau anzeigen
 PreviewNotAvailable=Vorschau nicht verfügbar
-ThemeCurrentlyActive=Derzeit aktivierte Oberfläche
+ThemeCurrentlyActive=derzeit aktivierte grafische Oberfläche
 CurrentTimeZone=Aktuelle Zeitzone des PHP-Servers
 MySQLTimeZone=Aktuelle Zeitzone von MySql (Datenbank)
 TZHasNoEffect=Daten werden vom Datenbank-Server gespeichert und zurückgeliefert, als würde der eingegebene String abgelegt werden. Die Zeitzone hat nur dann eine Auswirkung, wenn die UNIX_TIMESTAMP-Funktion benutzt wird (Dolibarr nutzt diese nicht, daher sollte die Datenbank-TZ keine Rolle spielen, selbst wenn diese nach Dateneingabe geändert wird).
@@ -132,7 +132,7 @@ PHPTZ=Zeitzone der PHP-Version
 PHPServerOffsetWithGreenwich=PHP-Server Zeit-Offset Greenwich-Breite (Sekunden)
 ClientOffsetWithGreenwich=Benutzer/Browser Zeit-Offset Greenwich-Breite (Sekunden)
 DaylingSavingTime=Sommerzeit (Benutzer)
-CurrentHour=Aktuelle Systemzeit
+CurrentHour=PHP-Zeit (Server)
 CompanyTZ=Unternehmenszeitzone (Hauptunternehmen)
 CompanyHour=Unternehmenszeit (Hauptunternehmen)
 CurrentSessionTimeOut=Aktuelle Session timeout
@@ -157,10 +157,10 @@ PurgeAreaDesc=Hier können Sie alle vom System erzeugten und gespeicherten Datei
 PurgeDeleteLogFile=Löschen der Protokolldatei <b>%s</b> des Systemprotokollmoduls (kein Risiko des Datenverlusts)
 PurgeDeleteTemporaryFiles=Alle temporären Dateien löschen (kein Datenverlustrisiko)
 PurgeDeleteAllFilesInDocumentsDir=Alle Datein im Verzeichnis <b>%s</b> löschen. Dies beinhaltet temporäre Dateien ebenso wie Datenbanksicherungen, Dokumente (Partner, Rechnungen, ...) und alle Inhalte des ECM-Moduls.
-PurgeRunNow=Jetzt löschen
+PurgeRunNow=Jetzt bereinigen
 PurgeNothingToDelete=Keine zu löschenden Verzeichnisse oder Dateien
 PurgeNDirectoriesDeleted=<b>%s</b> Dateien oder Verzeichnisse gelöscht.
-PurgeAuditEvents=Alle Protokolle löschen
+PurgeAuditEvents=Bereinige alle Sicherheitsereignisse
 ConfirmPurgeAuditEvents=Möchten Sie wirklich alle Protokolle löschen? Alle Sicherheitsprotokolle werden dadurch gelöscht, andere Dateien sind nicht betroffen.
 NewBackup=Neue Sicherung
 GenerateBackup=Sicherung erzeugen
@@ -173,8 +173,8 @@ BackupResult=Sicherungszusammenfassung
 BackupFileSuccessfullyCreated=Sicherungsdatei erfolgreich erzeugt
 YouCanDownloadBackupFile=Sie können die erstellte Sicherungsdatei jetzt herunterladen
 NoBackupFileAvailable=Keine verfügbare Sicherungsdatei
-ExportMethod=Exportmethode
-ImportMethod=Importmethode
+ExportMethod=Export-Methode
+ImportMethod=Import-Methode
 ToBuildBackupFileClickHere=Um eine Sicherungsdatei zu erstellen klicken Sie bitte <a href="%s">hier</a>.
 ImportMySqlDesc=Zum Wiederherstellen einer Sicherungsdatei müssen Sie folgenden MySql Befehl über die Kommandozeile ausführen:
 ImportPostgreSqlDesc=Zum Wiederherstellen einer Sicherungsdatei müssen Sie folgenden pg_restore Befehl über die Kommandozeile ausführen:
@@ -182,8 +182,8 @@ ImportMySqlCommand=%s %s < mybackupfile.sql
 ImportPostgreSqlCommand=%s %s mybackupfile.sql
 FileNameToGenerate=Name der zu erstellenden Datei
 Compression=Komprimierung
-CommandsToDisableForeignKeysForImport=Befehl zur Deaktivierung der Fremdschlüsselüberprüfung
-CommandsToDisableForeignKeysForImportWarning=Zwingend, wenn Sie den SQL-Dump später wiederherstellen wollen
+CommandsToDisableForeignKeysForImport=Befehl, um Fremdschlüssel beim Import zu deaktivieren
+CommandsToDisableForeignKeysForImportWarning=Zwingend erforderlich, wenn Sie den SQL-Dump später wiederherstellen möchten
 ExportCompatibility=Kompatibilität der erzeugten Exportdatei
 MySqlExportParameters=MySQL-Exportparameter
 PostgreSqlExportParameters= PostgreSQL Export-Parameter
@@ -215,7 +215,7 @@ ModulesJobDesc=Die Geschäftstypenmodule erlauben eine einfache Einrichtung des
 ModulesMarketPlaceDesc=Hier finden Sie weitere Module auf externen Web-Sites
 ModulesMarketPlaces=Sie können zusätzliche Module im Web finden...
 DoliStoreDesc=DoliStore, der offizielle Marktplatz für dolibarr Module/Erweiterungen
-DoliPartnersDesc=List with some companies that can provide/develop on-demand modules or features (Note: any Open Source company knowning PHP language can provide you specific development)
+DoliPartnersDesc=Liste mit einigen Unternehmen, die entwickeln/liefern On-Demand-Module  oder Funktionen (Hinweis: Jede Open-Source-Unternehmen beherscht die PHP-Sprache und kann bestimmte Entwicklungen liefern)
 WebSiteDesc=Website-Anbieter für Ihre Suche nach weiteren Modulen
 URL=Link
 BoxesAvailable=Verfügbare Boxen
@@ -281,7 +281,7 @@ MAIN_SMS_SENDMODE=Methode zum Senden von SMS
 MAIN_MAIL_SMS_FROM=Standard Versendetelefonnummer der SMS-Funktion
 FeatureNotAvailableOnLinux=Diese Funktion ist auf Unix-Umgebungen nicht verfügbar. Testen Sie Ihr Programm sendmail lokal.
 SubmitTranslation=Sollte die Übersetzung für eine Sprache nicht vollständig sein oder Fehler beinhalten, können Sie die entsprechenden Sprachdateien im Verzeichnis <b>langs/%s</b> bearbeiten und anschließend Ihre Änderungen mit der Entwicklergemeinschaft auf www.dolibarr.org teilen.
-ModuleSetup=Moduleinstellunen
+ModuleSetup=Moduleinstellung
 ModulesSetup=Moduleinstellungen
 ModuleFamilyBase=System
 ModuleFamilyCrm=Kundenverwaltung (CRM)
@@ -289,7 +289,7 @@ ModuleFamilyProducts=Produktverwaltung
 ModuleFamilyHr=Personalverwaltung
 ModuleFamilyProjects=Projektverwaltung/Zusammenarbeit
 ModuleFamilyOther=Andere
-ModuleFamilyTechnic=Multi-Modulwerkzeuge
+ModuleFamilyTechnic=Multi-Module Werkzeuge
 ModuleFamilyExperimental=Experimentelle Module
 ModuleFamilyFinancial=Finanzmodule (Rechnungswesen/Finanzen)
 ModuleFamilyECM=Inhaltsverwaltung (ECM)
@@ -349,8 +349,8 @@ FirstnameNamePosition=Reihenfolge von Vor- und Nachname
 DescWeather=Die folgenden Bilder werden auf der Übersichtansicht angezeigt, wenn die Anzahl der verspäteten Aufgaben diese Werte erreichen:
 KeyForWebServicesAccess=Schlüssel um Web Services (Parameter "dolibarrkey" in webservices) zu benützen
 TestSubmitForm=Testbereich
-ThisForceAlsoTheme=Dieser Menü-Manager wird sein eigenes Theme benutzen, unabhängig der Wahl des Nutzers. Auch wenn dieser Menü-Manager für Smartphones ausgelegt ist kann er nicht auf allen Smartphones angezeigt werden. Verwenden Sie ein anderes Menü-Manager, wenn Sie Probleme bemerken.
-ThemeDir=Theme Ordner
+ThisForceAlsoTheme=Bei Verwendung dieser Menü-Verwaltung wird die eigene Layout-Vorlage verwendet unabhängig von der Layout Einstellung des Benutzers. Auch wenn diese Menü-Verwaltung für Smartphones ausgelegt ist kann er nicht auf allen Smartphones angezeigt werden. Verwenden Sie eine andere Menü-Verwaltung, wenn Sie Probleme bemerken.
+ThemeDir=Verzeichnis Layout-Vorlagen
 ConnectionTimeout=Verbindung Timeout
 ResponseTimeout=Antwort Timeout
 SmsTestMessage=Test Nachricht von __PHONEFROM__ zu __PHONETO__
@@ -395,7 +395,7 @@ ExtrafieldParamHelpselect=Parameterlisten müssen das Format Schlüssel,Wert hab
 ExtrafieldParamHelpcheckbox=Parameterlisten müssen das Format Schlüssel,Wert haben<br><br> zum Beispiel:<br>1,Wert1<br>2,Wert2<br>3,Wert3<br>...
 ExtrafieldParamHelpradio=Parameterlisten müssen das Format Schlüssel,Wert haben<br><br> zum Beispiel:<br>1,Wert1<br>2,Wert2<br>3,Wert3<br>...
 ExtrafieldParamHelpsellist=Parameter-Liste stammt aus einer Tabelle<br>Syntax : \ntable_name:label_field:id_field::filter<br>Beispiel :\nc_typent:libelle:id::filter<br><br> \nFilter kann ein einfacher Test (z.B. aktiv = 1) angezeigt werden nur aktiv, Wert <br> wenn Sie auf extrafields filtern möchten verwenden syntaxt extra.fieldcode = ... (wo Feld-Code ist der Code, der extrafield) <br><br> Um die Liste haben, je nach dem anderen : \n<br>c_typent:libelle:id:parent_list_code|parent_column:filter
-ExtrafieldParamHelpchkbxlst=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt  extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter
+ExtrafieldParamHelpchkbxlst=Parameter-Liste stammt aus einer Tabelle <br> Syntax: table_name:label_field:id_field::filter<br> Beispiel:c_typent:libelle:id::filter <br><br> Filter kann ein einfacher Test (zB active=1) nur aktive Wert angezeigt, wenn Sie filtern  <br> wenn Sie auf extrafields filtern möchten verwenden Sie syntaxt extra.fieldcode=...  \n\n(wobei fieldcode ist der Code vom extrafield) <br><br> \num die Liste basierend auf einer anderen zu haben<br>c_typent:libelle:id:parent_list_code|parent_column:filter
 LibraryToBuildPDF=Verwendete Bibliothek zur PDF-Erzeugung
 WarningUsingFPDF=Achtung: Ihre <b>conf.php</b> enthält <b>$dolibarr_pdf_force_fpdf=1</b> Dies bedeutet, dass Sie die FPDF-Bibliothek verwenden, um PDF-Dateien zu erzeugen. Diese Bibliothek ist alt und unterstützt viele Funktionen nicht (Unicode-, Bild-Transparenz, kyrillische, arabische und asiatische Sprachen, ...), so dass es zu Fehlern bei der PDF-Erstellung kommen kann. <br> Um dieses Problem zu beheben und volle Unterstützung der PDF-Erzeugung zu erhalten, laden Sie bitte die <a href="http://www.tcpdf.org/" target="_blank">TCPDF Bibliothek</a> , dann kommentieren Sie die Zeile <b>$dolibarr_pdf_force_fpdf=1</b> aus oder entfernen diese und fügen statt dessen <b>$dolibarr_lib_TCPDF_PATH='Pfad_zum_TCPDF_Verzeichnisr'</b> ein
 LocalTaxDesc=In einigen Ländern gelten 2 oder 3 Steuern auf jede Rechnungszeile. Wenn dies der Fall ist, wählen Sie Typ für die zweite und dritte Steuer und seine Geschwindigkeit. Mögliche Art sind: <br> 1: Ortstaxe gelten über Produkte und Dienstleistungen, ohne Mehrwertsteuer (MwSt nicht der örtlichen Steuer angewendet) <br> 2: Ortstaxe gelten für Produkte und Dienstleistungen vor Mehrwertsteuer (MwSt auf Höhe + localtax berechnet) <br> 3: Ortstaxe gelten für Produkte ohne Mehrwertsteuer (MwSt nicht der örtlichen Steuer angewendet) <br> 4: Ortstaxe gelten für Erzeugnisse, bevor Mehrwertsteuer (MwSt auf Höhe + localtax berechnet) <br> 5: Ortstaxe gelten für Dienstleistungen, ohne Mehrwertsteuer (MwSt nicht der örtlichen Steuer angewendet) <br> 6: Ortstaxe gelten für Dienstleistungen vor Mehrwertsteuer (MwSt auf Höhe + localtax berechnet)
@@ -432,8 +432,8 @@ Module22Name=E-Mail-Kampagnen
 Module22Desc=E-Mail-Kampagnenverwaltung
 Module23Name= Energie
 Module23Desc= Überwachung des Energieverbrauchs
-Module25Name=Kundenbestellungen
-Module25Desc=Kundenbestellungsverwaltung
+Module25Name=Kundenaufträge
+Module25Desc=Kundenauftragsverwaltung
 Module30Name=Rechnungen
 Module30Desc=Rechnungs- und Gutschriftsverwaltung für Kunden. Rechnungsverwaltung für Lieferanten
 Module40Name=Lieferanten
@@ -456,15 +456,15 @@ Module55Name=Barcodes
 Module55Desc=Barcode-Verwaltung
 Module56Name=Telefonie
 Module56Desc=Telefonie-Integration
-Module57Name=Daueraufträge
-Module57Desc=Daueraufträge und Entzugsmanagement. Hierzu gehört auch Generation von SEPA-Datei für europäische Länder.
+Module57Name=Abbuchungsaufträge
+Module57Desc=Abbuchungsaufträge und Entzugsmanagement. Hierzu gehört auch Generation von SEPA-Datei für europäische Länder.
 Module58Name=ClickToDial
 Module58Desc=ClickToDial-Integration
 Module59Name=Bookmark4u
 Module59Desc=Neues Bookmark4u Konto zu Systembenutzerkonto hinzufügen
 Module70Name=Service
 Module70Desc=Serviceverwaltung
-Module75Name=Reise- und Fahrtspesen
+Module75Name=Reisekosten und Reisehinweise
 Module75Desc=Reise- und Fahrtspesenverwaltung
 Module80Name=Lieferungen
 Module80Desc=Versand und Lieferauftragsverwaltung
@@ -521,7 +521,7 @@ Module2200Desc=Mathematische Ausdrücke für Preise aktivieren
 Module2300Name=Cron
 Module2300Desc=CronJob Verwaltung
 Module2400Name=Agenda
-Module2400Desc=Maßnahmen/Aufgaben und Agendaverwaltung
+Module2400Desc=Termine/Aufgaben und Terminplanung
 Module2500Name=Inhaltsverwaltung(ECM)
 Module2500Desc=Speicherung und Verteilung von Dokumenten
 Module2600Name=WebServices
@@ -569,7 +569,7 @@ Permission19=Rechnungen löschen
 Permission21=Angebote einsehen
 Permission22=Angebote erstellen/bearbeiten
 Permission24=Angebote freigeben
-Permission25=Angeobte per E-Mail versenden
+Permission25=Angebote per E-Mail versenden
 Permission26=Angebote schließen
 Permission27=Angebote löschen
 Permission28=Angebote exportieren
@@ -592,13 +592,13 @@ Permission75=Erstellen Typen von Mitgliedschaft
 Permission76=Daten exportieren
 Permission78=Abonnements einsehen
 Permission79=Abonnements erstellen/bearbeiten
-Permission81=Kundenbestellungen einsehen
-Permission82=Kundenbestellungen erstellen/bearbeiten
-Permission84=Kundenbestellungen freigeben
-Permission86=Kundenbestellungen per E-Mail senden
-Permission87=Kundenbestellungen schließen
-Permission88=Kundenbestellungen verwerfen
-Permission89=Kundenbestellungen löschen
+Permission81=Kundenaufträge einsehen
+Permission82=Kundenaufträge erstellen/bearbeiten
+Permission84=Kundenaufträge freigeben
+Permission86=Kundenaufträge per E-Mail versenden
+Permission87=Kundenaufträge abschließen
+Permission88=Kundenaufträge verwerfen
+Permission89=Kundenaufträge löschen
 Permission91=Steuern/Sozialbeiträge einsehen
 Permission92=Steuern/Sozialbeiträge erstellen/bearbeiten
 Permission93=Steuern/Sozialbeiträge löschen
@@ -625,7 +625,7 @@ Permission142=Aufgaben erstellen/bearbeiten
 Permission144=Löschen aller Projekte und Aufgaben (einschließlich privater auch nicht in Verbindung treten)
 Permission146=Lieferanten einsehen
 Permission147=Statistiken einsehen
-Permission151=Daueraufträge einsehen
+Permission151=Abbucher einsehen
 Permission152=Dauerauftragsanträge erstellen/bearbeiten
 Permission153=Dauerauftragsbelege übertragen
 Permission154=Dauerauftragsbelege kreditieren/ablehnen
@@ -644,7 +644,7 @@ Permission181=Lieferantenbestellungen einsehen
 Permission182=Lieferantenbestellungen erstellen/bearbeiten
 Permission183=Lieferantenbestellungen freigeben
 Permission184=Lieferantenbestellungen bestätigen
-Permission185=Bestellung oder Lieferantenbestellungen verwerfen
+Permission185=Lieferantenbestellungen bestellen oder verwerfen
 Permission186=Lieferantenbestellungen empfangen
 Permission187=Lieferantenbestellungen schließen
 Permission188=Lieferantenbestellungen verwerfen
@@ -765,17 +765,17 @@ Permission1236=Lieferantenrechnungen, -attribute und zahlungen exportieren
 Permission1237=Lieferantenbestellungen mit Details exportieren
 Permission1251=Massenimports von externen Daten ausführen (data load)
 Permission1321=Kundenrechnungen, -attribute und -zahlungen exportieren
-Permission1421=Kundenbestellungen und Attribute exportieren
+Permission1421=Exportieren von Kundenaufträge und Attribute
 Permission23001=anzeigen cronjobs
 Permission23002=erstellen/ändern cronjobs
 Permission23003=cronjobs löschen
 Permission23004=cronjobs ausführen
-Permission2401=Maßnahmen (Termine/Aufgaben) in Verbindung mit eigenem Konto einsehen
-Permission2402=Maßnahmen (Termine/Aufgaben) in Verbindung mit eigenem Konto erstellen/bearbeiten
-Permission2403=Maßnahmen (Termine/Aufgaben) in Verbindung mit eigenem Konto löschen
-Permission2411=Maßnahmen (Termine/Aufgaben) in Anderer einsehen
-Permission2412=Maßnahmen (Termine/Aufgaben) in Anderer erstellen/bearbeiten
-Permission2413=Maßnahmen (Termine/Aufgaben) in Anderer löschen
+Permission2401=Ereignisse (Termine/Aufgaben) in Verbindung mit eigenem Konto einsehen
+Permission2402=Ereignisse (Termine/Aufgaben) in Verbindung mit eigenem Konto erstellen/bearbeiten
+Permission2403=Ereignisse  (Termine/Aufgaben) in Verbindung mit eigenem Konto löschen
+Permission2411=Ereignisse (Termine/Aufgaben) Anderer einsehen
+Permission2412=Ereignisse (Termine/Aufgaben) Anderer erstellen/bearbeiten
+Permission2413=Ereignisse (Termine/Aufgaben) Anderer löschen
 Permission2501=Dokumente herunterladen oder einsehen
 Permission2502=Dokumente herunterladen
 Permission2503=Dokumente bestätigen oder löschen
@@ -792,14 +792,14 @@ Permission59001=Gewinnspanne einsehen
 Permission59002=Gewinspanne definieren
 Permission59003=Lesen aller Benutzer Margen
 DictionaryCompanyType=Partnertyp
-DictionaryCompanyJuridicalType=Gesellschaftsformen von Drittanbietern
+DictionaryCompanyJuridicalType=Gesellschafts- und Unternehmenformen
 DictionaryProspectLevel=Geschäftsaussicht
 DictionaryCanton=Bundesland/Kanton
 DictionaryRegion=Regionen
 DictionaryCountry=Länder
 DictionaryCurrency=Währungen
 DictionaryCivility=Anredeformen
-DictionaryActions=Maßnahmen
+DictionaryActions=Liste Arten von Kalenderereignissen
 DictionarySocialContributions=Sozialbeitragstypen
 DictionaryVAT=MwSt.-Sätze
 DictionaryRevenueStamp=Anzahl der Steuermarken
@@ -813,7 +813,7 @@ DictionarySendingMethods=Versandarten
 DictionaryStaff=Mitarbeiter
 DictionaryAvailability=Lieferverzug
 DictionaryOrderMethods=Bestellmethoden
-DictionarySource=Quelle der Angebote/Bestellungen
+DictionarySource=Quelle der Angebote/Aufträge
 DictionaryAccountancyplan=Kontenplan
 DictionaryAccountancysystem=Kontenplan Modul
 DictionaryEMailTemplates=Emailvorlage
@@ -859,7 +859,7 @@ CalcLocaltax2=Einkauf
 CalcLocaltax2Desc=Lokale Steuer-Reports sind die Summe der lokalen Steuern auf Einkäufe
 CalcLocaltax3=Verkauf
 CalcLocaltax3Desc=Lokale Steuer-Reports sind die Summe der lokalen Steuern auf Verkäufe
-LabelUsedByDefault=Standardmäßig verwendete Bezeichnung falls keine Übersetzung vorhanden ist
+LabelUsedByDefault=Bezeichnung wird verwendet falls keine Übersetzung für den Code vorhanden ist.
 LabelOnDocuments=Bezeichnung auf Dokumenten
 NbOfDays=Anzahl der Tage
 AtEndOfMonth=Am Ende des Monats
@@ -874,7 +874,7 @@ DocumentRootServer=Dokumenten-Stammordner des Webservers
 DataRootServer=Daten-Verzeichnis
 IP=IP
 Port=Port
-VirtualServerName=Name des Virtual-Server
+VirtualServerName=Name des virtuellen Servers
 AllParameters=Alle Parameter
 OS=OS
 PhpEnv=Env
@@ -916,8 +916,8 @@ DefaultMenuTopManager=Top-Menüverwaltung
 DefaultMenuLeftManager=Verwaltung linkes Menü
 DefaultMenuManager= Standard Menü-Verwaltung
 DefaultMenuSmartphoneManager=Smartphone Menü-Verwaltung
-Skin=Oberfläche Layout
-DefaultSkin=Standardlayout für Oberfläche
+Skin=grafische Oberfläche
+DefaultSkin=Standardvorlage grafische Oberfläche
 MaxSizeList=Maximale Listenlänge
 DefaultMaxSizeList=Maximale Listenlänge (Standard)
 MessageOfDay=Nachricht des Tages
@@ -948,15 +948,15 @@ Alerts=Benachrichtigungen
 Delays=Verspätungen
 DelayBeforeWarning=Frist bis zur Benachrichtigung
 DelaysBeforeWarning=Fristen bis zur Warnung
-DelaysOfToleranceBeforeWarning=Toleranz für die Frist vor Benachrichtigungen
+DelaysOfToleranceBeforeWarning=Verzögerungstoleranz vor Warnung
 DelaysOfToleranceDesc=Hier können Sie die Verspätungstoleranz einstellen, bevor eine Benachrichtigung auf dem Bildschirm für jedes verspätete Element mit dem Symbol %s ausgegeben wird.
-Delays_MAIN_DELAY_ACTIONS_TODO=Verzögerungstoleranz (in Tagen) vor Benachrichtigung über die noch nicht erledigte, geplante Maßnahme
-Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Verzögerungstoleranz (in Tagen) vor  Benachrichtigung noch nicht bearbeitete Aufträge
-Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Verzögerungstoleranz (in Tagen), bevor Alarm für nicht bearbeteitet Lieferanten-Bestellungen aktiviert wird
-Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Verzögerungstoleranz (in Tagen) vor  Benachrichtigung über abzuschließende Angebote
-Delays_MAIN_DELAY_PROPALS_TO_BILL=Verzögerungstoleranz (in Tagen) vor Benachrichtigung über nicht in Rechnung gestellte Angebote
-Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Verzögerungstoleranz (in Tagen) vor  Benachrichtigung über zu aktivierende Leistungen
-Delays_MAIN_DELAY_RUNNING_SERVICES=Verzögerungstoleranz (in Tagen) vor Benachrichtigung zu überfälligen Leistungen
+Delays_MAIN_DELAY_ACTIONS_TODO=Verzögerungstoleranz (in Tagen) vor Warnung für noch nicht erledigte, geplante Ereignisse
+Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Verzögerungstoleranz (in Tagen) vor  Warnung für noch nicht bearbeitete Aufträge
+Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Verzögerungstoleranz (in Tagen), vor Warnung für nicht bearbeitete Lieferantenbestellungen
+Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Verzögerungstoleranz (in Tagen) vor  Warnung für abzuschließende Angebote
+Delays_MAIN_DELAY_PROPALS_TO_BILL=Verzögerungstoleranz (in Tagen) vor Warnung für nicht in Rechnung gestellte Angebote
+Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Verzögerungstoleranz (in Tagen) vor Warnung für zu aktivierende Leistungen
+Delays_MAIN_DELAY_RUNNING_SERVICES=Verzögerungstoleranz (in Tagen) vor Warnung für überfällige Vertrags-Leistungen
 Delays_MAIN_DELAY_SUPPLIER_BILLS_TO_PAY=Verzögerungstoleranz (in Tagen) vor Benachrichtigung über unbezahlte Lieferantenrechnungen
 Delays_MAIN_DELAY_CUSTOMER_BILLS_UNPAYED=Verzögerungstoleranz (in Tagen) vor Benachrichtigung über unbezahlte Kundenrechnungen
 Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=Verzögerungstoleranz (in Tagen) vor Benachrichtigung über Bankkontenabgleich
@@ -989,11 +989,11 @@ SystemAreaForAdminOnly=Dieser Bereich steht ausschließlich Administratoren zur
 CompanyFundationDesc=Tragen Sie hier alle Informationen zum Unternehmen ein, das Sie verwalten möchten
 DisplayDesc=Hier können Sie die Oberfläche, sowie das allgemeine 'Look and Feel' des Systems anpassen
 AvailableModules=Verfügbare Module
-ToActivateModule=Zum Aktivieren von Modulen gehen Sie zu Übersicht->Einstellungen->Module
+ToActivateModule=Zum Aktivieren von Modulen gehen Sie zu Start->Einstellungen->Module
 SessionTimeOut=Sitzungszeitbegrenzung
 SessionExplanation=Dieser Wert garantiert, dass eine Sitzung nie vor Zeitablauf beendet wird. Die PHP-Sitzungsverwaltung garantiert jedoch nicht, dass eine Sitzung wirklich nach Ablauf dieser Zeit beendet wird. Hierzu kann es kommen, wenn ein System zur Sitzungscache-Bereinigung im Einsatz ist.<br>Hinweis: ohne spezielles System wird PHP die Sitzung nach etwa <b>%s/%s</b> beenden - allerdings erst nach dem Start einer anderen Sitzung.
 TriggersAvailable=Verfügbare Trigger
-TriggersDesc=Trigger sind Dateien, die nach einem Kopieren in das Verzeichnis <b>htdocs/core/triggers</b> das Workflow-Verhalten des Systems beeinflussen. Diese stellen neue, mit Systemereignissen verbundene, Maßnahmen dar (Neuer Partner angelegt, Rechnung freigegeben, ...).
+TriggersDesc=Trigger sind Dateien, die nach einem Kopieren in das Verzeichnis <b>htdocs/core/triggers</b> das Workflow-Verhalten des Systems beeinflussen. Diese stellen neue, mit Systemereignissen verbundene, Ereignisse dar (Neuer Partner angelegt, Rechnung freigegeben, ...).
 TriggerDisabledByName=Trigger in dieser Datei sind durch das <b>-NORUN</b>-Suffix in ihrem Namen deaktviert.
 TriggerDisabledAsModuleDisabled=Trigger in dieser Datei sind durch das übergeordnete Modul <b>%s</b> deaktiviert.
 TriggerAlwaysActive=Trigger in dieser Datei sind unabhängig der Modulkonfiguration immer aktiviert.
@@ -1032,14 +1032,14 @@ WeekStartOnDay=Wochenstart
 RunningUpdateProcessMayBeRequired=Eine Systemaktualisierung scheint erforderlich (Programmversion %s unterscheidet sich von Datenbankversion %s)
 YouMustRunCommandFromCommandLineAfterLoginToUser=Diesen Befehl müssen Sie auf der Kommandozeile (nach Login auf der Shell mit Benutzer <b>%s</b>) ausführen.
 YourPHPDoesNotHaveSSLSupport=Ihre PHP-Konfiguration unterstützt keine SSL-Verschlüsselung
-DownloadMoreSkins=Weitere Oberflächen (Skins) herunterladen
+DownloadMoreSkins=Weitere grafische Oberflächen/Themes herunterladen
 SimpleNumRefModelDesc=Liefere eine Nummer im Format %syymm-nnnn zurück, wobei YY für das Jahr, MM für das Monat und nnnn für eine 4-stellige, nicht unterbrochene Zahlensequenz steht
 ShowProfIdInAddress=Zeige professionnal ID mit Adressen auf Dokumente
 ShowVATIntaInAddress=Ausblenden UID Nummer in Adressen auf Dokumenten.
 TranslationUncomplete=Teilweise Übersetzung
-SomeTranslationAreUncomplete=Einige Sprachen könnten nur teilweise oder fehlerhaft übersetzt sein. Wenn Sie Fehler bemerken, können Sie die Sprachdateien verbessern, indem Sie sich bei <a href="http://transifex.com/projects/p/dolibarr/" target="_blank">Transifex</a> regsitrieren.
+SomeTranslationAreUncomplete=Einige Sprachen könnten nur teilweise oder fehlerhaft übersetzt sein. Wenn Sie Fehler bemerken, können Sie die Sprachdateien verbessern, indem Sie sich bei <a href="http://transifex.com/projects/p/dolibarr/" target="_blank">Transifex</a> registrieren.
 MenuUseLayout=Machen Sie vertikales Menü hidable (Option Javascript muss nicht deaktiviert werden)
-MAIN_DISABLE_METEO=Deaktivieren meteo Blick
+MAIN_DISABLE_METEO=Deaktivere Wetteransicht
 TestLoginToAPI=Testen Sie sich anmelden, um API
 ProxyDesc=Einige Features von Dolibarr müssen einen Internet-Zugang zu Arbeit haben. Definieren Sie hier Parameter für diese. Wenn die Dolibarr Server hinter einem Proxy-Server, erzählt jene Parameter Dolibarr wie man Internet über ihn zugreifen.
 ExternalAccess=Externer Zugriff
@@ -1071,25 +1071,25 @@ SendmailOptionNotComplete=Achtung, auf einigen Linux-Systemen, E-Mails von Ihrem
 PathToDocuments=Dokumentenpfad
 PathDirectory=Verzeichnispfad
 SendmailOptionMayHurtBuggedMTA=Feature-Mails mit der Methode "PHP mail direkt" senden generiert eine Mail-Nachricht, die nicht korrekt möglicherweise von einigen Mail-Servern empfangen analysiert werden. Ergebnis ist, dass manche Mails nicht von Menschen, die von thoose abgehört Plattformen gehostet gelesen werden. Es ist bei einigen Internet-Providern (Ex: Orange in Frankreich). Dies ist nicht ein Problem in Dolibarr noch in PHP aber auf empfangende Mail-Server. Sie können jedoch hinzuzufügen MAIN_FIX_FOR_BUGGED_MTA Option auf 1 in die Setup - andere zu Dolibarr ändern, um dies zu vermeiden. Sie können jedoch Probleme mit anderen Servern, dass die Achtung streng dem SMTP-Standard zu erleben. Die andere Lösung (empfohlen) ist es, die Methode "SMTP-Socket-Bibliothek", die keine Nachteile hat benutzen.
-TranslationSetup=Configuration de la traduction
+TranslationSetup=Übersetzungseinstellungen
 TranslationDesc=Wahl der Sprache auf dem Bildschirm sichtbar verändert werden kann: <br> * Weltweit aus dem Menü <strong>Start - Einstellungen - Anzeige</strong> <br> * Für die Benutzer nur von <strong>Benutzer-Registerkarte Anzeige</strong> von Benutzer-Karte (klicken Sie auf Login-Bildschirm auf der Oberseite).
 TotalNumberOfActivatedModules=Summe aktivierter Module: <b>%s</b>
 YouMustEnableOneModule=Sie müssen mindestens 1 Modul aktivieren
 ClassNotFoundIntoPathWarning=Klasse %s nicht innerhalb PHP-Pfad gefunden
 YesInSummer=Ja im Sommer
-OnlyFollowingModulesAreOpenedToExternalUsers=Bitte beachten: nur die folgenden Module sind für externe Nutzer verfügbar (unabhängig von deren Rechten):
+OnlyFollowingModulesAreOpenedToExternalUsers=Hinweis: Nur die folgenden Module sind für externe Nutzer verfügbar (unabhängig von der Berechtigung dieser Benutzer):
 SuhosinSessionEncrypt=Sitzungsspeicher durch Suhosin verschlüsselt
 ConditionIsCurrently=Einstellung ist aktuell %s
 YouUseBestDriver=Sie verwenden den Treiber %s, dies ist derzeit der beste verfügbare.
 YouDoNotUseBestDriver=Sie verwenden Treiber %s, aber der Treiber %s wird empfohlen.
 NbOfProductIsLowerThanNoPb=Sie haben nur %s Produkte/Leistungen in der Datenbank. Daher ist keine bestimmte Optimierung erforderlich.
 SearchOptim=Such Optimierung
-YouHaveXProductUseSearchOptim=Sie haben %s Produkte/Leistungen in die Datenbank. Sie sollten die Konstante PRODUCT_DONOTSEARCH_ANYWHERE auf 1 unter in Übersicht-Einstellungen-Andere Einstellungen hinzufügen, wodurch sich das Suchlimit in der Datenbank von  Anfang des Strings möglich gemacht wird,  und der Index verwendet wird, dadurch sollten sie \nsofort Antwort auf Ihre suche bekommen.
+YouHaveXProductUseSearchOptim=Sie haben %s Produkte/Leistungen in die Datenbank. Sie sollten die Konstante PRODUCT_DONOTSEARCH_ANYWHERE auf 1 unter  Start-Einstellungen-Andere Einstellungen hinzufügen, wodurch das Suchlimit in der Datenbank von  Anfang des Strings möglich gemacht wird,  und der Index verwendet wird, dadurch sollten sie sofort Antwort auf Ihre suche bekommen.
 BrowserIsOK=Sie benutzen den Webbrowser %s. Dieser ist hinsichtlich Sicherheit und Leistung ok.
 BrowserIsKO=Sie benutzen den Webbrowser %s. Dieser ist bekannt für Sicherheitsprobleme, schlechte Leistung und Zuverlässigkeit. Wir empfehlen Ihnen, Firefox, Chrome, Opera oder Safari zu nutzen.
 XDebugInstalled=XDebug installiert.
 XCacheInstalled=XCache installiert.
-AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp".
+AddRefInList=Darstellung Kunden- /Lieferanten- Nr. in Listen (Listbox oder ComboBox) und die meisten von Hyperlinks. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp".
 FieldEdition=Bearbeitung von Feld %s
 FixTZ=Zeitzonen-Korrektur
 FillThisOnlyIfRequired=Beispiel: +2 (nur ausfüllen, wenn Sie Probleme mit der Zeitzone haben)
@@ -1141,7 +1141,7 @@ WebCalTestOk=Verbindung zum Server '%s' für Datenbank '%s' mit Benutzer '%s' er
 WebCalTestKo1=Verbindung zum Server '%s' erfolgreich, aber Datenbank '%s' konnte nicht erreicht werden.
 WebCalTestKo2=Verbindung zum Server '%s' mit dem Benutzer '%s' fehlgeschlagen.
 WebCalErrorConnectOkButWrongDatabase=Datenbankverbindung aufgebaut, es scheint sich jedoch um keine Webkalender-Datenbank zu handeln
-WebCalAddEventOnCreateActions=Kalendereintrag bei neuer Maßnahmen erstellen
+WebCalAddEventOnCreateActions=Ein Kalenderereignis auf eine Aktionen erstellen
 WebCalAddEventOnCreateCompany=Kalendereintrag bei neuem Partner erstellen
 WebCalAddEventOnStatusPropal=Kalendereintrag bei Angebotsstatusänderung
 WebCalAddEventOnStatusContract=Kalendereintrag bei Vertragsstatusänderung
@@ -1298,11 +1298,11 @@ LDAPSetupForVersion3=LDAP-Server für Version 3 konfiguriert
 LDAPSetupForVersion2=LDAP-Server für Version 2 konfiguriert
 LDAPDolibarrMapping=Dolibarr Mapping
 LDAPLdapMapping=LDAP-Mapping
-LDAPFieldLoginUnix=Login (Unix)
+LDAPFieldLoginUnix=Benutzername (Unix)
 LDAPFieldLoginExample=Beispiel: uid
 LDAPFilterConnection=Suchfilter
 LDAPFilterConnectionExample=Example : &(objectClass=inetOrgPerson)
-LDAPFieldLoginSamba=Login (samba,activedirectory)
+LDAPFieldLoginSamba=Benutzername (Samba,Active Directory)
 LDAPFieldLoginSambaExample=Beispiel : samaccountname
 LDAPFieldFullname=Vorname Nachname
 LDAPFieldFullnameExample=Beispiel : cn
@@ -1362,11 +1362,11 @@ PerfDolibarr=Leistungs-Einstellungen/Optimierungsreport
 YouMayFindPerfAdviceHere=Auf dieser Seite finden Sie einige Überprüfungen oder Hinweise zur Leistung.
 NotInstalled=Nicht installiert, Ihr Server wird dadurch nicht verlangsamt.
 ApplicativeCache=Applicative Cache
-MemcachedNotAvailable=No applicative cache found. You can enhance performance by installing a cache server Memcached and a module able to use this cache server.<br>More information here <a href="http://wiki.dolibarr.org/index.php/Module_MemCached_EN">http://wiki.dolibarr.org/index.php/Module_MemCached_EN</a>.<br>Note that a lot of web hosting provider does not provide such cache server.
+MemcachedNotAvailable=Kein Cache Anwendung gefunden. \nSie können die Leistung durch die Installation des Cache-Server Memcached und die Aktivierung des Anwendungs Cache Modul\n<br>hier mehr Informationen <a href="http://wiki.dolibarr.org/index.php/Module_MemCached_EN">http://wiki.dolibarr.org/index.php/Module_MemCached_EN</a>.<br>\nverbessern.\nBeachten Sie, dass viele Billig-Provider keine solche Cache-Server in ihrer Infrastruktur anbieten.
 MemcachedModuleAvailableButNotSetup=Module memcached für applicative Cache gefunden, aber Setup-Modul ist nicht vollständig.
 MemcachedAvailableAndSetup=Module memcached dedicated to use memcached server is enabled..
-OPCodeCache=OPCode cache
-NoOPCodeCacheFound=No OPCode cache found. May be you use another OPCode cache than XCache or eAccelerator (good), may be you don't have OPCode cache (very bad).
+OPCodeCache=OPCode Cache
+NoOPCodeCacheFound=Kein OPCode Cache gefunden.Vielleicht sind Sie mit einem anderen  OPCode Cache wie XCache oder eAccelerator (gut), vielleicht haben Sie keinen OPCode Cache (sehr schlecht) .
 HTTPCacheStaticResources=HTTP Cache für statische Ressourcen (CSS, img, Javascript)
 FilesOfTypeCached=Dateien vom Typ %s werden vom HTTP Server zwischengespeichert
 FilesOfTypeNotCached=Dateien vom Typ %s werden vom HTTP Server nicht zwischengespeichert
@@ -1384,7 +1384,7 @@ NumberOfProductShowInSelect=Max. Anzahl der Produkte in Mehrfachauswahllisten (0
 ConfirmDeleteProductLineAbility=Bestätigung für die Entfernung von Produktzeilen in Formularen
 ModifyProductDescAbility=Produktbeschreibungen in Formularen individuell anpassbar
 ViewProductDescInFormAbility=Anzeige dr Produktbeschreibungen in Formularen (andernfalls als Popup-Tooltip)
-ViewProductDescInThirdpartyLanguageAbility=Visualisierung von Produkten Beschreibungen in der Sprache thirdparty
+ViewProductDescInThirdpartyLanguageAbility=Anzeige der Produktbeschreibungen in der Sprache des Partners
 UseSearchToSelectProductTooltip=Wenn Sie eine große Anzahl von Produkten (> 100.000) haben, können Sie die Geschwindigkeit verbessern, indem Sie in Einstellungen -> Andere die Konstante PRODUCT_DONOTSEARCH_ANYWHERE auf 1 setzen. Die Suche startet dann am Beginn des Strings.
 UseSearchToSelectProduct=Suchfeld statt Listenansicht für die Produktauswahl verwenden.
 UseEcoTaxeAbility=Umweltabgaben unterstüzten
@@ -1469,7 +1469,7 @@ OSCommerceTestKo2=Verbindung zum Server '%s' mit dem Benutzer '%s' fehlgeschlage
 ##### Stock #####
 StockSetup=Warenlager-Modul Einstellungen
 UserWarehouse=Persönliche Warenläger verwenden
-IfYouUsePointOfSaleCheckModule=If you use a Point of Sale module (POS module provided by default or another external module), this setup may be ignored by your Point Of Sale module. Most point of sales modules are designed to create immediatly an invoice and decrease stock by default whatever are options here. So, if you need or not to have a stock decrease when registering a sell from your Point Of Sale, check also your POS module set up.
+IfYouUsePointOfSaleCheckModule=Wenn Sie ein Point of Sale-Modul (POS-Modul Standard oder andere externe POS-Module) verwenden, kann diese Einstellung von Ihrem Point Of Sale-Modul übersteuert werden. \nDie meisten POS -Module wurden entwickelt, um sofort eine Rechnung zu erstellen und das Lager standardmäßig zu verringern, egal welche Optionen hier ausgewählt wurde. \nAlso, wenn Sie während einem Verkauf einen Lagerabgang in Ihrem Point of Sale möchten oder nicht, so müssen sie auch die Konfiguration des POS-Modules überprüfen.
 ##### Menu #####
 MenuDeleted=Menü gelöscht
 TreeMenu=Baumansicht
@@ -1517,15 +1517,15 @@ SupposedToBeInvoiceDate=Rechnungsdatum verwendet
 Buy=Kaufen
 Sell=Verkaufen
 InvoiceDateUsed=Rechnungsdatum verwendet
-YourCompanyDoesNotUseVAT=Für Ihr Unternehmen wurde keine MwSt.-Verwendung definiert (Übersicht-Einstellungen-Unternehmen/Stiftung), entsprechend stehen in der Konfiguration keine MwSt.-Optionen zur Verfügung.
+YourCompanyDoesNotUseVAT=Für Ihr Unternehmen wurde keine MwSt.-Verwendung definiert (Start-Einstellungen-Unternehmen/Stiftung), entsprechend stehen in der Konfiguration keine MwSt.-Optionen zur Verfügung.
 AccountancyCode=Kontierungs-Code
 AccountancyCodeSell=Verkaufskonto-Code
 AccountancyCodeBuy=Einkaufskonto-Code
 ##### Agenda #####
-AgendaSetup=Agenda-Moduleinstellungen
+AgendaSetup=Aufgaben/Termine-Modul Einstellungen
 PasswordTogetVCalExport=Passwort für den VCal-Export
 PastDelayVCalExport=Keine Termine exportieren die älter sind als
-AGENDA_USE_EVENT_TYPE=Verwenden der Termintypen \nEinstellen unter (Übersicht -> Einstellungen -> Wörterbücher -> Maßnahme) 
+AGENDA_USE_EVENT_TYPE=Verwenden der Termintypen \nEinstellen unter (Start -> Einstellungen -> Wörterbücher -> Ereignistypen) 
 AGENDA_DEFAULT_FILTER_TYPE=Diesen Ereignistyp automatisch in den Suchfilter für die Agenda-Ansicht übernehmen
 AGENDA_DEFAULT_FILTER_STATUS=Diesen Ereignisstatus automatisch in den Suchfilter für die Agenda-Ansicht übernehmen
 AGENDA_DEFAULT_VIEW=Welchen Reiter möchten Sie beim Öffnen der Agenda automatisch anzeigen
@@ -1538,9 +1538,9 @@ CashDeskThirdPartyForSell=Standardpartner für Kassenverkäufe
 CashDeskBankAccountForSell=Standard-Bargeldkonto für Kassenverkäufe (erforderlich)
 CashDeskBankAccountForCheque= Finanzkonto für Scheckeinlösungen
 CashDeskBankAccountForCB= Finanzkonto für die Einlösung von Bargeldzahlungen via Kreditkarte
-CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock).
+CashDeskDoNotDecreaseStock=Deaktiviere Lagerabgangsbuchung wenn ein Verkauf auf einem Point of Sale durchgeführt wird\n (wenn "Nein", wird die Lagerabgangsbuchung immer durchgeführt , auch wann im Modul Produktbestandsverwaltung was anderes ausgewählt wurde).
 CashDeskIdWareHouse=Lager für Entnahmen festlegen und und erzwingen
-StockDecreaseForPointOfSaleDisabled=Verringerung des Lagerbastandes durch Point of Sale deaktivert
+StockDecreaseForPointOfSaleDisabled=Lagerrückgang bei Verwendung von Point of Sale deaktivert
 StockDecreaseForPointOfSaleDisabledbyBatch=Auf Rückgang der POS ist nicht mit viel Sparfunktionen
 CashDeskYouDidNotDisableStockDecease=Sie haben die Reduzierung der Lagerbestände nicht deaktiviert, wenn Sie einen Verkauf auf dem  POS durchführen.\nAuch ist ein Lager/Standort notwendig.
 ##### Bookmark #####
@@ -1615,10 +1615,10 @@ NoModueToManageStockIncrease=Kein Modul zur automatische Bestandserhöhung ist a
 YouMayFindNotificationsFeaturesIntoModuleNotification=Sie können Optionen für E-Mail-Benachrichtigungen von Aktivierung und Konfiguration des Moduls "Benachrichtigung" finden.
 ListOfNotificationsPerContact=Liste der Benachrichtigungen nach Kontakt*
 ListOfFixedNotifications=Liste von ausbesserten Benachrichtigungen
-GoOntoContactCardToAddMore=Go on the tab "Notifications" of a thirdparty contact to add or remove notifications for contacts/addresses
+GoOntoContactCardToAddMore=Gehen Sie auf die Registerkarte "Hinweise" von einem  Partner Kontakt , um Hinweise für Kontakte/Adressen zu erstellen oder zu entfernen
 Threshold=Schwellenwert
 BackupDumpWizard=Assistenten zum erstellen der Datenbank-Backup Dump-Datei 
 SomethingMakeInstallFromWebNotPossible=Die Installation von dem externen Modul ist aus folgenden Gründen vom Web-Interface nicht möglich:
 SomethingMakeInstallFromWebNotPossible2=Aus diesem Grund wird die Prozess hier beschriebenen Upgrade ist nur manuelle Schritte ein privilegierter Benutzer tun kann.
-InstallModuleFromWebHasBeenDisabledByFile=Install of external module from application has been disabled by your administrator. You must ask him to remove the file <strong>%s</strong> to allow this feature.
+InstallModuleFromWebHasBeenDisabledByFile=Installieren von externen Modul aus der Anwendung wurde von Ihrem Administrator deaktiviert. \nSie müssen ihn bitten, die Datei<strong>%s</strong> zu entfernen, um diese Funktion zu ermöglichen.
 ConfFileMuseContainCustom=Installation eines externen Modul aus der Anwendung speichern Sie die Modul-Dateien in Verzeichnis <strong>%s</strong>. Zu haben dieses Verzeichnis durch Dolibarr verarbeitet, müssen Sie das Setup Ihrer <strong>conf/conf.php</strong> Option haben <br> - - <strong>$dolibarr_main_url_root_alt</strong> auf <<strong>$dolibarr_main_url_root_alt="/custom"</strong> enabled <strong>= "/custom"</strong> <br> - <strong>$dolibarr_main_document_root_alt</strong>  zu Wert aktiviert <strong>"%s/custom"</strong>
diff --git a/htdocs/langs/de_DE/agenda.lang b/htdocs/langs/de_DE/agenda.lang
index 54e1cbd9d45a457a683640f921a5047a5bbd15d3..a817845d128db6479c733f924eabffbce5537c31 100644
--- a/htdocs/langs/de_DE/agenda.lang
+++ b/htdocs/langs/de_DE/agenda.lang
@@ -1,42 +1,42 @@
 # Dolibarr language file - Source file is en_US - agenda
 IdAgenda=ID Veranstaltung
-Actions=Termine
-ActionsArea=Bereich Termine (Veranstaltungen und Aufgaben)
+Actions=Ereignisse
+ActionsArea=Bereich Ereignisse (Termine und Aufgaben)
 Agenda=Terminplanung
 Agendas=Tagesordnungen
-Calendar=Kalender
-Calendars=Kalender
-LocalAgenda=Internetkalender
-ActionsOwnedBy=Maßnahme gehört
+Calendar=Terminkalender
+Calendars=Terminkalender
+LocalAgenda=interne Kalender
+ActionsOwnedBy=Ereignis stammt von
 AffectedTo=Zugewiesen an
 DoneBy=Erledigt von
-Event=Aktion
-Events=Termine
-EventsNb=Anzahl der Termine
-MyEvents=Meine Termine
-OtherEvents=Weitere Termine
-ListOfActions=Terminliste
+Event=Ereignis
+Events=Ereignisse
+EventsNb=Anzahl der Ereignisse
+MyEvents=Meine Ereignisse
+OtherEvents=Weitere Ereignisse
+ListOfActions=Liste Ereignisse
 Location=Standort
 EventOnFullDay=Ganztägig
-SearchAnAction= Suche Maßnahme / Aufgabe
-MenuToDoActions=Alle unvollständigen Termine
-MenuDoneActions=Alle abgeschlossenen Termine
-MenuToDoMyActions=Meine offenen Termine
-MenuDoneMyActions=Meine abgeschlossenen Termine
-ListOfEvents=Liste der Termine (Internetkalender)
+SearchAnAction= Termin/Aufgabe suchen
+MenuToDoActions=Alle unvollst. Termine
+MenuDoneActions=Alle abgeschl. Termine
+MenuToDoMyActions=Meine unvollst. Termine
+MenuDoneMyActions=Meine abgeschl. Termine
+ListOfEvents=Liste Ereignisse (interner Kalender)
 ActionsAskedBy=Termine eingetragen von
 ActionsToDoBy=Ereignisse zugewiesen an
 ActionsDoneBy=Termine erledigt von
-ActionsForUser=Maßnahmen für Benutzer
-ActionsForUsersGroup=Maßnahmen für alle Benutzer der Gruppe
+ActionsForUser=Ereignisse für Benutzer
+ActionsForUsersGroup=Ereignisse für Benutzer der Gruppe
 ActionAssignedTo=Ereignis zugewiesen an
-AllMyActions= Alle meine Termine/Aufgaben
-AllActions= Alle Termine / Aufgaben
+AllMyActions= Alle meine Ereignisse
+AllActions= Alle Ereignisse
 ViewList=Listenansicht
 ViewCal=Kalenderansicht
 ViewDay=Tagesansicht
 ViewWeek=Wochenansicht
-ViewPerUser=Ansicht nach Benutzer
+ViewPerUser=Benutzeransicht
 ViewWithPredefinedFilters= Ansicht mit vordefinierten Filtern
 AutoActions= Automatische Befüllung der Tagesordnung
 AgendaAutoActionDesc= Definieren Sie hier Termine zur automatischen Übernahme in den Terminkalender. Ist nichts aktviert (Standardmäßig), umfasst der Terminkalender nur manuell eingetragene Termine.
@@ -48,7 +48,7 @@ InvoiceValidatedInDolibarr=Rechnung freigegeben
 InvoiceValidatedInDolibarrFromPos=Rechnung %s von POS validiert
 InvoiceBackToDraftInDolibarr=Rechnung %s in den Entwurf Status zurücksetzen
 InvoiceDeleteDolibarr=Rechnung %s gelöscht
-OrderValidatedInDolibarr=Bestellung %s freigegeben
+OrderValidatedInDolibarr=Auftrag %s freigegeben
 OrderDeliveredInDolibarr=Bestellung %s als geliefert markieren
 OrderCanceledInDolibarr=Auftrag storniert %s
 OrderBilledInDolibarr=Bestellung %s als bezahlt markieren
@@ -57,7 +57,7 @@ OrderRefusedInDolibarr=Bestellung %s abgelehnt
 OrderBackToDraftInDolibarr=Bestellen %s zurück nach Draft-Status
 OrderCanceledInDolibarr=Auftrag storniert %s
 ProposalSentByEMail=Angebot %s per E-Mail versendet
-OrderSentByEMail=Kundenbestellung %s per E-Mail versendet
+OrderSentByEMail=Kundenauftrag %s per E-Mail versendet
 InvoiceSentByEMail=Kundenrechnung %s per E-Mail versendet
 SupplierOrderSentByEMail=Lieferantenbestellung %s per E-Mail versendet
 SupplierInvoiceSentByEMail=Lieferantenrechnung %s per E-Mail versendet
@@ -69,17 +69,17 @@ DateActionPlannedStart= Geplantes Startdatum
 DateActionPlannedEnd= Geplantes Enddatum
 DateActionDoneStart= Effektiver Beginn
 DateActionDoneEnd= Effektives Ende
-DateActionStart= Startdatum
-DateActionEnd= Enddatum
+DateActionStart= Beginnt
+DateActionEnd= Endet
 AgendaUrlOptions1=Sie können die Ausgabe über folgende Parameter filtern:
-AgendaUrlOptions2=<b>Login =%s</b> für die Ausgabe an Aktionen erstellt, die von oder an den Benutzer <b>%s</b> zugeordnet beschränken.
-AgendaUrlOptions3=<b>logina=%s</b> begrenzt die Ausgabe auf von Benutzer <b>%s</b> erstellte Maßnahmen.
-AgendaUrlOptions4=<b>logint=%s</b> begrenzt die Ausgabe auf von Benutzer <b>%s</b> betroffene Maßnahmen.
-AgendaUrlOptionsProject=<b>project=PROJECT_ID</b> begrenzt die die Ausgabe auf Maßnahmen im Zusammenhang mit Projekt <b>PROJECT_ID</b>.
+AgendaUrlOptions2=<b>login=%s</b> begrenzt die Ausgabe auf den Benutzer <b>%s</b> erstellte oder zugewiesene Ereignissen ein.
+AgendaUrlOptions3=<b>logina=%s</b> begrenzt die Ausgabe auf den Benutzer <b>%s</b> erstellte Ereignissen.
+AgendaUrlOptions4=<b>logint=%s</b> begrenzt die Ausgabe auf den Benutzer <b>%s</b> zugewiesene Ereignissen.
+AgendaUrlOptionsProject=<b>project=PROJECT_ID</b> begrenzt die Ausgabe auf die dem Projekte <b>PROJECT_ID</b> zugewiesene Ereignissen.
 AgendaShowBirthdayEvents=Zeige Geburtstage
 AgendaHideBirthdayEvents=Geburtstage ausblenden
 Busy=Besetzt
-ExportDataset_event1=Liste der Massnahmen
+ExportDataset_event1=Liste Ereignisse des Kalender
 DefaultWorkingDays=Standard-Werktage der Woche (z.B. 1-5, 1-6)
 DefaultWorkingHours=Reguläre Arbeitszeit pro Tag (z.B. 9-18)
 # External Sites ical
@@ -92,7 +92,7 @@ ExtSiteUrlAgenda=URL Adresse um .ical Datei zu erreichen
 ExtSiteNoLabel=Keine Beschreibung
 WorkingTimeRange=Arbeitszeit-Bereich
 WorkingDaysRange=Arbeitstag-Bereich
-AddEvent=Maßnahme erstellen
+AddEvent=Ereignis erstellen
 MyAvailability=Meine Verfügbarkeit
 ActionType=Ereignistyp
-DateActionBegin=Startdatum des Ereignisses
+DateActionBegin=Beginnzeit des Ereignis
diff --git a/htdocs/langs/de_DE/banks.lang b/htdocs/langs/de_DE/banks.lang
index 7b6f04e41b8fe5b9296322a155bc8d10ebe52eb2..b8befaf598e9820b2287e2540567d38dbb7df46a 100644
--- a/htdocs/langs/de_DE/banks.lang
+++ b/htdocs/langs/de_DE/banks.lang
@@ -32,14 +32,14 @@ ShowAllTimeBalance=Zeige Kontostand seit Eröffnung
 AllTime=Vom start
 Reconciliation=Zahlungsabgleich
 RIB=Kontonummer
-IBAN=IBAN
-IbanValid=IBAN is gültig
+IBAN=IBAN-Nummer
+IbanValid=IBAN ist gültig
 IbanNotValid=IBAN ist nicht gültig
-BIC=BIC / SWIFT Code
-SwiftValid=BIC/SWIFT ist gültig
-SwiftNotValid=BIC/Swift ist nicht gültig
-StandingOrders=Daueraufträge
-StandingOrder=Dauerauftrag
+BIC=BIC Code
+SwiftValid=BIC ist gültig
+SwiftNotValid=BIC ist nicht gültig
+StandingOrders=Abbuchungsaufträge
+StandingOrder=Abbuchungsauftrag
 Withdrawals=Entnahmen
 Withdrawal=Entnahme
 AccountStatement=Kontoauszug
@@ -48,7 +48,7 @@ AccountStatements=Kontoauszüge
 LastAccountStatements=Letzte Kontoauszüge
 Rapprochement=Zahlungsabgleich
 IOMonthlyReporting=Monatsbericht
-BankAccountDomiciliation=BLZ
+BankAccountDomiciliation=Kontoadresse
 BankAccountCountry=Bankkonto Land
 BankAccountOwner=Kontoinhaber
 BankAccountOwnerAddress=Kontoinhaber-Adresse
@@ -85,7 +85,7 @@ RemoveFromRubriqueConfirm=Möchten Sie die Kategoriezuweisung wirklich entfernen
 ListBankTransactions=Liste der Transaktionen
 IdTransaction=Transaktions-ID
 BankTransactions=Bank-Transaktionen
-SearchTransaction=Suche Transaktion
+SearchTransaction=Transaktion suchen
 ListTransactions=Transaktionsliste
 ListTransactionsByCategory=Transaktionen/Kategorie
 TransactionsToConciliate=Auszugleichende Transaktionen
@@ -121,7 +121,7 @@ TransferDesc=Transfer zwischen Konten. Gebucht werden beide Sätze (eine Belastu
 TransferFrom=Von
 TransferTo=An
 TransferFromToDone=Eine Überweisung <b>von %s nach %s iHv %s %s</b> wurde verbucht.
-CheckTransmitter=Überbringer
+CheckTransmitter=Übermittler
 ValidateCheckReceipt=Scheck annehmen?
 ConfirmValidateCheckReceipt=Scheck wirklich annehmen? Eine Änderung ist anschliessend nicht mehr möglich.
 DeleteCheckReceipt=Scheck löschen
@@ -132,7 +132,7 @@ ShowCheckReceipt=Zeige Scheck Einzahlungsbeleg
 NumberOfCheques=Anzahl der Schecks
 DeleteTransaction=Transaktion löschen
 ConfirmDeleteTransaction=Möchten Sie diese Transaktion wirklich löschen?
-ThisWillAlsoDeleteBankRecord=Dies löscht auch erstellte Bankbewegungen
+ThisWillAlsoDeleteBankRecord=Dies wird auch erstellte Bankbewegungen löschen
 BankMovements=Bankbewegungen
 CashBudget=Bargeldbestand
 PlannedTransactions=Geplante Transaktionen
@@ -159,7 +159,7 @@ ThenCheckLinesAndConciliate=Dann die Zeilen im Bankauszug prüfen und Klicken
 BankDashboard=Bankkonten Zusammenfassung
 DefaultRIB=Standart Bankkonto-Nummer
 AllRIB=Alle Bankkonto-Nummern
-LabelRIB=Bankkonto-Nummer Bezeichnung
+LabelRIB=Bankkonto Bezeichnung
 NoBANRecord=Keine Bankkonto-Nummern Einträge
 DeleteARib=Lösche Bankkonto-Nummern Eintrag
 ConfirmDeleteRib=Möchten Sie diesen Bankkonto-Nummern Eintrag wirklich löschen?
diff --git a/htdocs/langs/de_DE/bills.lang b/htdocs/langs/de_DE/bills.lang
index f97ba9e646e9e85f874003e82e390fe6f46c8e9f..3ee6219c8cbb1a1bc90353435f0072cc74cf424f 100644
--- a/htdocs/langs/de_DE/bills.lang
+++ b/htdocs/langs/de_DE/bills.lang
@@ -6,7 +6,7 @@ BillsCustomer=Kundenrechnung
 BillsSuppliers=Lieferantenrechnungen
 BillsCustomersUnpaid=Offene Kundenrechnungen
 BillsCustomersUnpaidForCompany=Unbezahlte Rechnungen für Kunden %s
-BillsSuppliersUnpaid=Unbezahlte Rechnungen des Lieferanten
+BillsSuppliersUnpaid=Unbezahlte Lieferanten-Rechnungen
 BillsSuppliersUnpaidForCompany=Unbezahlte Rechnungen des Lieferanten %s
 BillsLate=Verspätete Zahlungen
 BillsStatistics=Statistik Kundenrechnungen
@@ -76,7 +76,7 @@ PaymentRule=Zahlungsregel
 PaymentMode=Zahlungsart
 PaymentTerm=Zahlungskonditionen
 PaymentConditions=Zahlungsbedingungen
-PaymentConditionsShort=Zahlungsbedingungen
+PaymentConditionsShort=Zahlungsziel
 PaymentAmount=Zahlungsbetrag
 ValidatePayment=Zahlung freigeben
 PaymentHigherThanReminderToPay=Zahlungsbetrag übersteigt Zahlungserinnerung
@@ -84,17 +84,17 @@ HelpPaymentHigherThanReminderToPay=Achtung, die Zahlung eines oder mehrerer Rech
 HelpPaymentHigherThanReminderToPaySupplier=Achtung, der Zahlungsbetrag einer oder mehrerer Rechnungen ist höher als der offene Restbetrag.<br>Bearbeiten Sie Ihre Eingabe oder bestätigen Sie die Überzahlung.
 ClassifyPaid=Als 'bezahlt' markieren
 ClassifyPaidPartially=Als 'teilweise bezahlt' markieren
-ClassifyCanceled=Als 'storniert' markieren
+ClassifyCanceled=Rechnung 'aufgegeben'
 ClassifyClosed=Als 'geschlossen' markieren
 ClassifyUnBilled=Als "nicht verrechnet" markieren
 CreateBill=Erstelle Rechnung
 AddBill=Rechnung/Gutschrift erstellen
 AddToDraftInvoices=Zu Rechnungsentwurf hinzufügen
 DeleteBill=Lösche Rechnung
-SearchACustomerInvoice=Suche Kundenrechnung
-SearchASupplierInvoice=Suche Lieferantenrechnung
-CancelBill=Rechnung stornieren
-SendRemindByMail=Zahlungserinnerung per E-Mail senden
+SearchACustomerInvoice=Kundenrechnung suchen
+SearchASupplierInvoice=Lieferantenrechnung suchen
+CancelBill=Rechnung aufgeben
+SendRemindByMail=Zahlungserinnerung per E-Mail versenden
 DoPayment=Zahlung tätigen
 DoPaymentBack=Rückzahlung tätigen
 ConvertToReduc=In Rabatt umwandeln
@@ -103,15 +103,15 @@ EnterPaymentDueToCustomer=Kundenzahlung fällig stellen
 DisabledBecauseRemainderToPayIsZero=Deaktiviert, da Zahlungserinnerung auf null steht
 Amount=Betrag
 PriceBase=Preis
-BillStatus=Rechnungsstatus
+BillStatus=Rechnung Status
 BillStatusDraft=Entwurf (freizugeben)
 BillStatusPaid=Bezahlt
 BillStatusPaidBackOrConverted=Bezahlt oder in Rabatt umgewandelt
 BillStatusConverted=Umgerechnet auf Rabatt
-BillStatusCanceled=Storniert
+BillStatusCanceled=Aufgegeben
 BillStatusValidated=Freigegeben (zu bezahlen)
 BillStatusStarted=Begonnen
-BillStatusNotPaid=Offen
+BillStatusNotPaid=nicht bezahlt
 BillStatusClosedUnpaid=Geschlossen (unbezahlt)
 BillStatusClosedPaidPartially=Bezahlt (teilweise)
 BillShortStatusDraft=Entwurf
@@ -121,7 +121,7 @@ BillShortStatusConverted=Verarbeitete
 BillShortStatusCanceled=Storniert
 BillShortStatusValidated=Freigegeben
 BillShortStatusStarted=Begonnen
-BillShortStatusNotPaid=Offen
+BillShortStatusNotPaid=offen
 BillShortStatusClosedUnpaid=Geschlossen
 BillShortStatusClosedPaidPartially=Bezahlt (teilweise)
 PaymentStatusToValidShort=Freizugeben
@@ -136,7 +136,7 @@ ErrorInvoiceOfThisTypeMustBePositive=Fehler: Rechnungen dieses Typs verlangen na
 ErrorCantCancelIfReplacementInvoiceNotValidated=Fehler: Sie können keine Rechnung stornieren, deren Ersatzrechnung sich noch im Status 'Entwurf' befindet
 BillFrom=Von
 BillTo=An
-ActionsOnBill=Maßnahmen zu dieser Rechnung
+ActionsOnBill=Ereignisse zu dieser Rechnung
 NewBill=Neue Rechnung
 LastBills=%s neueste Rechnungen
 LastCustomersBills=%s neueste Kundenrechnungen
@@ -151,8 +151,8 @@ ConfirmDeleteBill=Möchten Sie diese Rechnung wirklich löschen?
 ConfirmValidateBill=Möchten Sie die Rechnung Nr. <b>%s</b> wirklich freigeben?
 ConfirmUnvalidateBill=Sind Sie sicher, dass Sie die Rechnung <b>%s</b> wieder in den Entwurfstatus ändern möchten?
 ConfirmClassifyPaidBill=Sind Sie sicher, dass Sie ändern möchten <b>Rechnung %s,</b> um den Status bezahlt?
-ConfirmCancelBill=Möchten Sie die Rechnung <b>%s</b> wirklich stornieren?
-ConfirmCancelBillQuestion=Warum wollen Sie klassifizieren diese Rechnung "aufgegeben"?
+ConfirmCancelBill=Möchten Sie die Rechnung <b>%s</b> wirklich aufgeben?
+ConfirmCancelBillQuestion=Warum möchten Sie diese Rechnung als "aufgegeben" klassifizieren?
 ConfirmClassifyPaidPartially=Möchten Sie die Rechnung <b>%s</b> wirklich als 'teilweise bezahlt' markieren?
 ConfirmClassifyPaidPartiallyQuestion=Diese Rechnung wurde nicht vollständig bezahlt. Was sind Gründe für das Schließen dieser Rechnung?
 ConfirmClassifyPaidPartiallyReasonAvoir=Der offene Zahlbetrag <b>( %s %s)</b> resultiert aus einem gewährten Skonto. Zur Korrektur der MwSt. wird eine Gutschrift angelegt.
@@ -177,7 +177,7 @@ UnvalidateBill=Ungültige Rechnung
 NumberOfBills=Anzahl der Rechnungen
 NumberOfBillsByMonth=Anzahl Rechnungen pro Monat
 AmountOfBills=Anzahl der Rechnungen
-AmountOfBillsByMonthHT=Anzahl der Rechnungen pro Monat (nach Steuern)
+AmountOfBillsByMonthHT=Gesamtbetrag Rechnungen pro Monat (inkl. Steuern)
 ShowSocialContribution=Zeige Sozialbeitrag
 ShowBill=Zeige Rechnung
 ShowInvoice=Zeige Rechnung
@@ -189,7 +189,7 @@ File=Datei
 AlreadyPaid=Bereits bezahlt
 AlreadyPaidBack=Bereits zurückbezahlt
 AlreadyPaidNoCreditNotesNoDeposits=Bereits bezahlte (ohne Gutschriften und Einlagen)
-Abandoned=Weggefallen
+Abandoned=Aufgegeben
 RemainderToPay=Offener Zahlbetrag
 RemainderToTake=Verbleibender Restbetrag
 RemainderToPayBack=Zurück zu zahlender Restbetrag
@@ -199,7 +199,7 @@ ExcessReceived=Erhaltener Überschuss
 EscompteOffered=Rabatt angeboten (Skonto)
 SendBillRef=Einreichung der Rechnung %s
 SendReminderBillRef=Einreichung von Rechnung %s (Erinnerung)
-StandingOrders=Daueraufträge
+StandingOrders=Lastschriftverfahren
 StandingOrder=Dauerauftrag
 NoDraftBills=Keine Rechnungsentwürfe
 NoOtherDraftBills=Keine Rechnungsentwürfe Anderer
@@ -207,8 +207,8 @@ NoDraftInvoices=Keine Rechnungsentwürfe
 RefBill=Rechnungs Nr.
 ToBill=Zu verrechnen
 RemainderToBill=Zu verrechnender Restbetrag
-SendBillByMail=Rechnung per E-Mail senden
-SendReminderBillByMail=Erinnerung per E-Mail senden
+SendBillByMail=Rechnung per E-Mail versenden
+SendReminderBillByMail=Erinnerung per E-Mail versenden
 RelatedCommercialProposals=Verknüpfte Angebote
 MenuToValid=Zur Freigabe
 DateMaxPayment=Zahlungsziel
@@ -268,7 +268,7 @@ DiscountStillRemaining=Noch verbleibender Rabatt
 DiscountAlreadyCounted=Rabatt bereits berücksichtigt
 BillAddress=Rechnungsanschrift
 HelpEscompte=Bei diesem Rabatt handelt es sich um einen Skonto.
-HelpAbandonBadCustomer=Dieser Betrag wurde aufgegeben (Kundennverschulden) ist als uneinbringlich zu werten.
+HelpAbandonBadCustomer=Dieser Betrag wurde aufgegeben (Kundenverschulden) ist als uneinbringlich zu werten.
 HelpAbandonOther=Dieser Betrag wurde auf Grund eines Fehlers aufgegeben (falsche Rechnung oder an falschen Kunden)
 IdSocialContribution=Sozialbeitrags id
 PaymentId=Zahlung id
@@ -286,7 +286,7 @@ CloneInvoice=Rechnung duplizieren
 ConfirmCloneInvoice=Möchten sie die Rechnung <b>%s</b> wirklich duplizieren?
 DisabledBecauseReplacedInvoice=Aktion unzulässig, da die betreffende Rechnung ersetzt wurde
 DescTaxAndDividendsArea=Dieser Bereich stellt eine Übersicht aller Zahlungen für sonstige Ausgaben dar. Nur Datensätze mit Zahlung im festgelegten Jahr sind enthalten.
-NbOfPayments=Zahl der Zahlungen
+NbOfPayments=Anzahl der Zahlungen
 SplitDiscount=Split Rabatt in zwei
 ConfirmSplitDiscount=Sind Sie sicher, dass Sie diesen Rabatt in Höhe von <b>%s</b>%s in 2 kleinere Rabatte teilen wollen?
 TypeAmountOfEachNewDiscount=Input für jeden der zwei Teile:
@@ -345,7 +345,7 @@ Residence=Wohnsitz
 IBANNumber=IBAN-Nummer
 IBAN=IBAN
 BIC=BIC/SWIFT
-BICNumber=BIC/SWIFT Code
+BICNumber=BIC Code
 ExtraInfos=Zusatzinformationen
 RegulatedOn=Gebucht am
 ChequeNumber=Schecknummer
@@ -428,7 +428,7 @@ ModifyAllLines=Bearbeite alle Zeilen
 CreateNextSituationInvoice=Erstelle nächsten Position
 NotLastInCycle=Diese Rechnung ist nicht die letzte im Zyklus und darf nicht geändert werden.
 DisabledBecauseNotLastInCycle=Der folgende Situation ist bereits vorhanden.
-DisabledBecauseFinal=Diese Situation ist vollständig.
+DisabledBecauseFinal=Dieser Status ist endgültig.
 CantBeLessThanMinPercent=Der Fortschritt kann nicht kleiner als sein bisheriger Wert werden.
 NoSituations=Keine offenen Positionen
 InvoiceSituationLast=Allgemeine Endrechnung
diff --git a/htdocs/langs/de_DE/bookmarks.lang b/htdocs/langs/de_DE/bookmarks.lang
index 076956adba6e9680a7a21e2d47ba5e5fecc4fcca..78f28cf4a1eed4725266b376e84e7178d5d46fdd 100644
--- a/htdocs/langs/de_DE/bookmarks.lang
+++ b/htdocs/langs/de_DE/bookmarks.lang
@@ -1,5 +1,5 @@
 # Dolibarr language file - Source file is en_US - marque pages
-AddThisPageToBookmarks=Fügen Sie diese Seite zu Ihren Lesezeichen hinzu
+AddThisPageToBookmarks=Anfügen dieser Seite zu den Lesezeichen
 Bookmark=Lesezeichen
 Bookmarks=Lesezeichen
 NewBookmark=Neues Lesezeichen
@@ -9,11 +9,11 @@ ReplaceWindow=Aktuelles Fenster ersetzen
 BookmarkTargetNewWindowShort=Neues Fenster
 BookmarkTargetReplaceWindowShort=Aktuelles Fenster
 BookmarkTitle=Titel des Lesezeichens
-UrlOrLink=URL
+UrlOrLink=Link
 BehaviourOnClick=Verhalten bei Klick auf den Link
-CreateBookmark=Erstelle Lesezeichen
-SetHereATitleForLink=Geben Sie hier einen Linktitel ein
-UseAnExternalHttpLinkOrRelativeDolibarrLink=Verwenden Sie eine externe http-URL oder eine URL relativ zum Systempfad
+CreateBookmark=Lesezeichen erstellen
+SetHereATitleForLink=Erfasse hier einen Titel für das Lesezeichen
+UseAnExternalHttpLinkOrRelativeDolibarrLink=Verwenden Sie eine absolute externe URL oder eine relative Dolibarr URL
 ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Bitte wählen Sie, ob sich ein geklickter Link in einem neuen oder demselben Fenster öffnet
-BookmarksManagement=Lesezeichen verwalten
+BookmarksManagement=Verwalten von Lesezeichen
 ListOfBookmarks=Liste der Lesezeichen
diff --git a/htdocs/langs/de_DE/boxes.lang b/htdocs/langs/de_DE/boxes.lang
index ea6180a654231d02b4a4eca7b3230f03cdd2f186..3f6cfa6b610f9bb69faceb4ebf499ad32f8328e1 100644
--- a/htdocs/langs/de_DE/boxes.lang
+++ b/htdocs/langs/de_DE/boxes.lang
@@ -14,7 +14,7 @@ BoxLastSuppliers=Zuletzt bearbeitete Lieferanten
 BoxLastCustomerOrders=Zuletzt bearbeitete Kundenaufträge
 BoxLastValidatedCustomerOrders=Letzte freigegebene Kundenaufträge
 BoxLastBooks=Zuletzt bearbeitete Konten
-BoxLastActions=Zuletzt bearbeitete Maßnahmen
+BoxLastActions=Zuletzt bearbeitete Ereignisse
 BoxLastContracts=Zuletzt abgeschlossene Verträge
 BoxLastContacts=Letzte Kontakte/Adressen
 BoxLastMembers=Letzte Mitglieder
@@ -24,7 +24,7 @@ BoxSalesTurnover=Umsatz
 BoxTotalUnpaidCustomerBills=Summe offener Kundenrechnungen (OP Gesamt)
 BoxTotalUnpaidSuppliersBills=Summe offener Lieferantenrechnungen
 BoxTitleLastBooks=Letzte %s aufgezeichnet Bücher
-BoxTitleNbOfCustomers=Nombre de-Client
+BoxTitleNbOfCustomers=Anzahl der Kunden
 BoxTitleLastRssInfos=%s letzte Neuigkeiten aus %s
 BoxTitleLastProducts=Letzte %s bearbeitete Produkte/Leistungen
 BoxTitleProductsAlertStock=Lagerbestands-Warnungen
@@ -55,7 +55,7 @@ BoxTitleLastModifiedContacts=Zuletzt geändert %s Kontakte/Adressen
 BoxMyLastBookmarks=Meine %s letzten Lesezeichen
 BoxOldestExpiredServices=Die ältesten abgelaufenen aktiven Dienste
 BoxLastExpiredServices=Letzte %s ältesten aktive Kontakte mit abgelaufenem Diensten
-BoxTitleLastActionsToDo=%s letzte Maßnahmen zur Erledigung
+BoxTitleLastActionsToDo=%s letzte Ereignisse zu erledigen
 BoxTitleLastContracts=%s zuletzt bearbeitete Verträge
 BoxTitleLastModifiedDonations=Zuletzt geändert %s Spenden
 BoxTitleLastModifiedExpenses=Zuletzt geändert %s Aufwendungen
@@ -63,10 +63,10 @@ BoxGlobalActivity=Globale Aktivität (Rechnungen, Angebote, Aufträge)
 FailedToRefreshDataInfoNotUpToDate=Fehler beim RSS-Abruf. Letzte erfolgreiche Aktualisierung: %s
 LastRefreshDate=Letztes Aktualisierungsdatum
 NoRecordedBookmarks=Keine Lesezeichen gesetzt. Klicken Sie <a href="%s">hier</a>, um ein Lesezeichen zu setzen.
-ClickToAdd=Hir klicken um hinzuzufügen.
+ClickToAdd=Hier klicken um hinzuzufügen.
 NoRecordedCustomers=Keine erfassten Kunden
 NoRecordedContacts=Keine erfassten Kontakte
-NoActionsToDo=Keine Maßnahmen gesetzt
+NoActionsToDo=Keine Aufgaben/Termine zu erledigen
 NoRecordedOrders=Keine erfassten Kundenaufträge
 NoRecordedProposals=Keine erfassten Angebote
 NoRecordedInvoices=Keine erfassten Kundenrechnungen
@@ -85,13 +85,13 @@ BoxTitleLatestModifiedSupplierOrders=Letzte %s bearbeiteten Lieferantenbestellun
 NoSupplierOrder=Keine bearbeiteten Lieferantenbestellungen
 BoxCustomersInvoicesPerMonth=Kundenrechnungen pro Monat
 BoxSuppliersInvoicesPerMonth=Lieferantenrechnungen pro Monat
-BoxCustomersOrdersPerMonth=Kundenbestellungen pro Monat
+BoxCustomersOrdersPerMonth=Kundenaufträge pro Monat
 BoxSuppliersOrdersPerMonth=Lieferantenbestellungen pro Monat
 BoxProposalsPerMonth=Angebote pro Monat
 NoTooLowStockProducts=Keine Produkte unter der min. Warenlimite
 BoxProductDistribution=Verteilung von Produkten/Leistungen
 BoxProductDistributionFor=Verteilung von %s für %s
 ForCustomersInvoices=Kundenrechnungen
-ForCustomersOrders=Kundenbestellungen
+ForCustomersOrders=Kundenaufträge
 ForProposals=Angebote
 LastXMonthRolling=Die letzten %s Monate rollier
diff --git a/htdocs/langs/de_DE/cashdesk.lang b/htdocs/langs/de_DE/cashdesk.lang
index 7c8f36a2b903bb89352848d930868b3fc8d7966e..6a408c7dd2c714b62261c11c17654f8df5f5e2f3 100644
--- a/htdocs/langs/de_DE/cashdesk.lang
+++ b/htdocs/langs/de_DE/cashdesk.lang
@@ -31,10 +31,10 @@ TotalTicket=Gesamtanzahl Ticket
 NoVAT=Keine Mehrwertsteuer bei diesem Verkauf
 Change=Überschüss erhalten
 CalTip=Klicken um den Kalender anzuzeigen
-CashDeskSetupStock=Das bei der Rechnungserstellung der Bestand gemindet wird ist nicht definiert. Ändern Sie die Einstellungen oder wechseln Sie das Lager.
+CashDeskSetupStock=Der Bestand wird bei der Rechnungserstellung gemindert es wurde jedoch kein Lager dafür definiert. <br>Ändern Sie die Einstellung oder wechseln Sie das Lager.
 BankToPay=Kundenkonto
 ShowCompany=Zeige Unternehmen
 ShowStock=Zeige Lager
 DeleteArticle=Klicken, um diesen Artikel zu entfernen
 FilterRefOrLabelOrBC=Suche (Ref/Label)
-# UserNeedPermissionToEditStockToUsePos=You ask to decrease stock on invoice creation, so user that use POS need to have permission to edit stock.
+UserNeedPermissionToEditStockToUsePos=Sie bitten, ab dem Rechnungserstellung zu verringern, so dass Benutzer, die POS verwenden müssen, um die Erlaubnis, Lager zu bearbeiten.
diff --git a/htdocs/langs/de_DE/categories.lang b/htdocs/langs/de_DE/categories.lang
index ce96c9c15db8c9c1e48a70fcf12a18ac410c2d97..07224c8db73a61853db5a5cb49131543610227a7 100644
--- a/htdocs/langs/de_DE/categories.lang
+++ b/htdocs/langs/de_DE/categories.lang
@@ -1,7 +1,7 @@
 # Dolibarr language file - Source file is en_US - categories
-Rubrique=Kategorie
-Rubriques=Kategorien
-categories=Kategorien
+Rubrique=Schlagwort/Kategorie
+Rubriques=Schlagwörter/Kategorien
+categories=Schlagwörter/Kategorien
 TheCategorie=Die Kategorie
 NoCategoryYet=Keine Kategorie von dieser Art erstellt
 In=In
@@ -51,7 +51,7 @@ MemberIsInCategories=Dieses Mitglied ist folgenden Kategorien zugewiesen
 ContactIsInCategories=Dieser Kontakt ist folgenden Kategorien zugewiesen
 ProductHasNoCategory=Dieses Produkt/Service ist keiner Kategorie zugewiesen.
 SupplierHasNoCategory=Dieser Lieferant ist keiner Kategorie zugewiesen.
-CompanyHasNoCategory= Dieses Unternehmen ist keiner Kategorie zugewiesen.
+CompanyHasNoCategory= Dieser Partner ist keiner Kategorie zugewiesen.
 MemberHasNoCategory= Dieses Mitglied ist keiner Kategorie zugewiesen.
 ContactHasNoCategory= Dieser Kontakt ist keiner Kategorie zugewiesen.
 ClassifyInCategory=Folgender Kategorie zuweisen
diff --git a/htdocs/langs/de_DE/commercial.lang b/htdocs/langs/de_DE/commercial.lang
index 81b3a207484487c91069e2be6d600e31b5097ea0..98dbeaa859951dcaf57e30c0e8458ebb3c8c1817 100644
--- a/htdocs/langs/de_DE/commercial.lang
+++ b/htdocs/langs/de_DE/commercial.lang
@@ -7,22 +7,22 @@ Customer=Kunde
 Customers=Kunden
 Prospect=Lead
 Prospects=Leads
-DeleteAction=Maßnahme / Aufgabe löschen
-NewAction=Neue Maßnahme / Aufgabe
-AddAction=Maßnahme/Aufgabe erstellen
-AddAnAction=Maßnahme/Aufgabe erstellen
+DeleteAction=Termin/Aufgabe löschen
+NewAction=Neue/r Termin/Aufgabe
+AddAction=Termin/Aufgabe erstellen
+AddAnAction=Termin/Aufgabe erstellen
 AddActionRendezVous=erstelle Termin
-Rendez-Vous=Treffen
+Rendez-Vous=Verabreden
 ConfirmDeleteAction=Möchten Sie diese Aufgabe wirklich löschen?
-CardAction=Maßnahmenkarte
+CardAction=Ereignisse Übersicht
 PercentDone=Fortschritt
 ActionOnCompany=Partner
 ActionOnContact=Kontakt
 TaskRDV=Treffen
 TaskRDVWith=Treffen mit %s
 ShowTask=Zeige Aufgabe
-ShowAction=Zeige Maßnahme
-ActionsReport=Maßnahmenbericht
+ShowAction=Ereignisse anzeigen
+ActionsReport=Ereignis Report
 ThirdPartiesOfSaleRepresentative=Partner mit Vertriebsmitarbeiter
 SalesRepresentative=Vertriebsmitarbeiter
 SalesRepresentatives=Vertreter
@@ -37,23 +37,23 @@ ListOfProspects=Leads-Liste
 ListOfCustomers=Kundenliste
 LastDoneTasks=Letzte %s abgeschlossene Aufgaben
 LastRecordedTasks=Letzte Aufgaben
-LastActionsToDo=Letzte %s älteste, nicht abgeschlossene Maßnahmen
-DoneAndToDoActionsFor=Abgeschlossene und zu erledigende Maßnahmen für %s
-DoneAndToDoActions=Abgeschlossene und zu erledigende Maßnahmen
-DoneActions=Abgeschlossene Maßnahmen
-DoneActionsFor=Abgeschlossene Maßnahmen für %s
-ToDoActions=Unvollständige Maßnahmen
-ToDoActionsFor=Unvollständige Maßnahmen für %s
+LastActionsToDo=Letzte %s älteste, nicht erled. Aufgaben/Termine
+DoneAndToDoActionsFor=Abgeschlossene und unvollständige Ereignisse für %s
+DoneAndToDoActions=Abgeschlossene und zu unvollständige Ereignisse
+DoneActions=Abgeschlossene Ereignisse
+DoneActionsFor=Abgeschlossene Ereignisse für %s
+ToDoActions=Unvollständige Ereignisse
+ToDoActionsFor=Unvollständige Ereignisse für %s
 SendPropalRef=Einreichung der Angebote %s
 SendOrderRef=Einreichung der Bestellung %s
 StatusNotApplicable=Nicht anwendbar
 StatusActionToDo=Zu erledigen
 StatusActionDone=Abgeschlossen
-MyActionsAsked=Selbst angelegte Maßnahmen
+MyActionsAsked=Ereignisse von mir erzeugt
 MyActionsToDo=Meine To-Do-Liste
 MyActionsDone=Meine abgeschlossenen Ereignisse
 StatusActionInProcess=In Bearbeitung
-TasksHistoryForThisContact=Maßnahmen zu diesem Kontakt
+TasksHistoryForThisContact=Ereignisse zu diesem Kontakt
 LastProspectDoNotContact=Nicht kontaktieren
 LastProspectNeverContacted=Noch nicht kontaktiert
 LastProspectToContact=Zu kontaktieren
@@ -61,9 +61,9 @@ LastProspectContactInProcess=Kontaktaufnahme läuft
 LastProspectContactDone=Kontaktaufnahme erledigt
 DateActionPlanned=Geplantes Erledigungsdatum
 DateActionDone=Echtes Erledigungsdatum
-ActionAskedBy=Maßnahme erbeten von
+ActionAskedBy=Ereignis erstellt von
 ActionAffectedTo=Ereignis zugewiesen an
-ActionDoneBy=Maßnahme erledigt von
+ActionDoneBy=Ereignis erledigt von
 ActionUserAsk=Aufgenommen durch
 ErrorStatusCantBeZeroIfStarted=Ist das Feld '<b>Echtes Erledigungsdatum</b>' ausgefüllt, so wurde die Aktion bereits gestartet (oder beendet) und der '<b>Status</b>' kann nicht 0%% sein.
 ActionAC_TEL=Anruf
diff --git a/htdocs/langs/de_DE/companies.lang b/htdocs/langs/de_DE/companies.lang
index 715434bc44f6a42a7cf862d1768218656522cd0c..39fb77901eac2b45f14400fdd2654cb45005058b 100644
--- a/htdocs/langs/de_DE/companies.lang
+++ b/htdocs/langs/de_DE/companies.lang
@@ -73,7 +73,7 @@ Chat=Chat
 PhonePro=Telefon berufl.
 PhonePerso=Telefon privat
 PhoneMobile=Mobiltelefon
-No_Email=Versenden sie keine Spammails
+No_Email=keine E-Mail-Kampagne senden
 Fax=Fax
 Zip=PLZ
 Town=Stadt
@@ -265,7 +265,7 @@ EditContact=Kontakt bearbeiten
 EditContactAddress=Kontakt/Adresse bearbeiten
 Contact=Kontakt
 ContactsAddresses=Kontakte/Adressen
-NoContactDefinedForThirdParty=Für diesen Kunden ist keine Adresse angegeben
+NoContactDefinedForThirdParty=Für diesen Partner ist kein Kontakt eingetragen
 NoContactDefined=Kein Kontakt für diesen Partner
 DefaultContact=Standardkontakt
 AddCompany=Firma erstellen
@@ -304,7 +304,7 @@ ContactForInvoices=Rechnungskontakt
 NoContactForAnyOrder=Kein Kontakt für Bestellungen
 NoContactForAnyProposal=Kein Kontakt für Offerte
 NoContactForAnyContract=Kein Kontakt für Verträge
-NoContactForAnyInvoice=Kein Kontakt für Rechnungen
+NoContactForAnyInvoice=Dieser Kontakt ist kein Kontakt für jegliche Rechnung
 NewContact=Neuer Kontakt
 NewContactAddress=Neuer Kontakt/Adresse
 LastContacts=Letzte Kontakte
@@ -323,7 +323,7 @@ VATIntraManualCheck=Sie können die Überprüfung auch manuell durchführen <a h
 ErrorVATCheckMS_UNAVAILABLE=Anfrage nicht möglich. Überprüfungsdienst wird vom Mitgliedsland nicht angeboten (%s).
 NorProspectNorCustomer=sonstige Adresse
 JuridicalStatus=Rechtsform
-Staff=Mitarbeiter
+Staff=Mitarbeiterzahl
 ProspectLevelShort=Potenzial
 ProspectLevel=Lead-Potenzial
 ContactPrivate=Privat
@@ -365,7 +365,7 @@ NoParentCompany=Keine Mutterfirma
 ExportImport=Import-Export
 ExportCardToFormat=Karte in Format exportieren
 ContactNotLinkedToCompany=Kontakt keinem Partner zugeordnet
-DolibarrLogin=Login
+DolibarrLogin=Dolibarr Benutzername
 NoDolibarrAccess=Kein Zugang
 ExportDataset_company_1=Partner (Unternehmen/Stiftungen/Personen) und Eigenschaften
 ExportDataset_company_2=Kontakte und Eigenschaften
diff --git a/htdocs/langs/de_DE/compta.lang b/htdocs/langs/de_DE/compta.lang
index 7b70ba6c288748b6dd95107cdcb56188647ae85c..249e8bd2daa13338d2bac0e8ec38761976307f75 100644
--- a/htdocs/langs/de_DE/compta.lang
+++ b/htdocs/langs/de_DE/compta.lang
@@ -38,20 +38,20 @@ Withdrawal=Entnahme
 Withdrawals=Entnahmen
 AmountHTVATRealReceived=Einnahmen (netto)
 AmountHTVATRealPaid=Ausgaben (netto)
-VATToPay=Zu zahlende MwSt.
+VATToPay=MwSt. Verkäufe - USt.
 VATReceived=Erhobene MwSt.
-VATToCollect=Zu erhebende MwSt.
+VATToCollect=MwSt. Einkäufe - VSt.
 VATSummary=MwSt. Saldo
 LT2SummaryES=EKSt. Übersicht
-LT1SummaryES=RE Balance
+LT1SummaryES=Saldo RE
 VATPaid=Bezahlte MwSt.
 SalaryPaid=Gezahlter Lohn
 LT2PaidES=EKSt. gezahlt
 LT1PaidES=RE Zahlungen
 LT2CustomerES=EKSt. Verkauf
 LT2SupplierES=EKSt. Einkauf
-LT1CustomerES=RE sales
-LT1SupplierES=RE purchases
+LT1CustomerES=RE Verkäufe
+LT1SupplierES=RE Einkäufe
 VATCollected=Erhobene MwSt.
 ToPay=Zu zahlen
 ToGet=Zu erhalten
@@ -84,11 +84,11 @@ DateStartPeriod=Startdatum für Zeitraum
 DateEndPeriod=Enddatum für Zeitraum
 NewVATPayment=Neue MwSt. Zahlung
 newLT2PaymentES=Neue EKSt. Zahlung
-newLT1PaymentES=New RE payment
+newLT1PaymentES=Neue RE Zahlung
 LT2PaymentES=EKSt. Zahlung
 LT2PaymentsES=EKSt. Zahlungen
-LT1PaymentES=RE Payment
-LT1PaymentsES=RE Payments
+LT1PaymentES=RE Zahlung
+LT1PaymentsES=RE Zahlungen
 VATPayment=MwSt.-Zahlung
 VATPayments=MwSt-Zahlungen
 SocialContributionsPayments=Sozialbeitragszahlungen
@@ -122,15 +122,15 @@ DeleteSocialContribution=Sozialbeitrag löschen
 ConfirmDeleteSocialContribution=Möchten Sie diesen Sozialbeitrag wirklich löschen?
 ExportDataset_tax_1=Sozialbeiträge und Zahlungen
 CalcModeVATDebt=Modus <b>%s Mwst. auf Engagement Rechnungslegung %s</b>.
-CalcModeVATEngagement=Mode <b>%sVAT on incomes-expenses%s</b>.
-CalcModeDebt=Mode <b>%sClaims-Debts%s</b> said <b>Commitment accounting</b>.
-CalcModeEngagement=Mode <b>%sIncomes-Expenses%s</b> said <b>cash accounting</b>
-CalcModeLT1= Mode <b>%sRE on customer invoices - suppliers invoices%s</b>
-CalcModeLT1Debt=Mode <b>%sRE on customer invoices%s</b>
-CalcModeLT1Rec= Mode <b>%sRE on suppliers invoices%s</b>
-CalcModeLT2= Mode <b>%sIRPF on customer invoices - suppliers invoices%s</b>
-CalcModeLT2Debt=Mode <b>%sIRPF on customer invoices%s</b>
-CalcModeLT2Rec= Mode <b>%sIRPF on suppliers invoices%s</b>
+CalcModeVATEngagement=Modus <b>%sTVA auf  Einnahmen-Ausgaben%s</b>.
+CalcModeDebt=Modus <b>%sForderungen-Verbindlichkeiten%s</b> sagt <b>Engagement Rechnungslegung.</b>
+CalcModeEngagement=Modus <b>%sEinnahmen-Ausgaben%s</b> die <b>Kassenbuchführung</b>
+CalcModeLT1= Modus <b>%sRE auf Kundenrechnungen - Lieferantenrechnungen%s</b>
+CalcModeLT1Debt=Modus <b>%sRE auf Kundenrechnungen%s</b>
+CalcModeLT1Rec= Modus <b>%sRE auf Lieferantenrechnungen%s</b>
+CalcModeLT2= Modus<b>%sIRPF auf Kundenrechnungen - Lieferanten Rechnungen%s</b>
+CalcModeLT2Debt=Modus <b>%sIRPF auf Kundenrechnungen%s</b>
+CalcModeLT2Rec= Modus <b>%sIRPF aufLieferantenrechnungen%s</b>
 AnnualSummaryDueDebtMode=Saldo der Erträge und Aufwendungen, Jahresübersicht
 AnnualSummaryInputOutputMode=Saldo der Erträge und Aufwendungen, Jahresübersicht
 AnnualByCompaniesDueDebtMode=Die Einnahmen/Ausgaben-Bilanz nach Partnern im Modus <b>%sForderungen-Verbindlichkeiten%s</b> meldet <b>Kameralistik</b>.
@@ -145,14 +145,14 @@ RulesCAIn=- Beinhaltet alle tatsächlich erfolgten Zahlungen von Kunden.<br>- Es
 DepositsAreNotIncluded=- Noch sind Anzahlungsrechnungen inbegriffen
 DepositsAreIncluded=- Anzahlungsrechnungen sind inbegriffen
 LT2ReportByCustomersInInputOutputModeES=Bericht von Partner EKSt.
-LT1ReportByCustomersInInputOutputModeES=Report by third party RE
+LT1ReportByCustomersInInputOutputModeES=Bericht von Kunden RE
 VATReportByCustomersInInputOutputMode=Bericht zur vereinnahmten und bezahlten MwSt. nach Kunden 
 VATReportByCustomersInDueDebtMode=Bericht zur vereinnahmten und bezahlten MwSt. nach Kunden
 VATReportByQuartersInInputOutputMode=Quartalsbericht zur vereinnahmten und bezahlten MwSt.
-LT1ReportByQuartersInInputOutputMode=Report by RE rate
+LT1ReportByQuartersInInputOutputMode=Bericht von RE Rate
 LT2ReportByQuartersInInputOutputMode=Quartal-Bericht EKSt. Rate
 VATReportByQuartersInDueDebtMode=Quartalsbericht zur vereinnahmten und bezahlten MwSt.
-LT1ReportByQuartersInDueDebtMode=Report by RE rate
+LT1ReportByQuartersInDueDebtMode=Bericht von RE Ratex
 LT2ReportByQuartersInDueDebtMode=Quartal-Bericht EKSt. Rate
 SeeVATReportInInputOutputMode=Siehe <b>%sMwSt.-Einnahmen%s</b>-Bericht für eine standardmäßige Berechnung
 SeeVATReportInDueDebtMode=Siehe <b>%sdynamischen MwSt.%s</b>-Bericht für eine Berechnung mit dynamischer Option
@@ -195,7 +195,7 @@ Mode1=Methode 1
 Mode2=Methode 2
 CalculationRuleDesc=Zur Berechnung der Gesamt-MwSt. gibt es zwei Methoden: <br>Methode 1 rundet die Steuer in jeder Zeile und addiert zum Schluss. <br>Methode 2 summiert alle Steuer-Zeilen und rundet am Ende. <br>Das endgültige Ergebnis kann sich in wenigen Cent unterscheiden. Standardmodus ist <b>Modus %s.</b>
 CalculationRuleDescSupplier=Wählen Sie die geeignete Methode, um zum gleichen Ergebnis wie Ihr Lieferant zu kommen.
-TurnoverPerProductInCommitmentAccountingNotRelevant=Turnover report per product, when using a <b>cash accountancy</b> mode is not relevant. This report is only available when using <b>engagement accountancy</b> mode (see setup of accountancy module).
+TurnoverPerProductInCommitmentAccountingNotRelevant=Umsatz Bericht pro Produkt, bei der Verwendung einer <b>Kassabuch Buchhaltung</b>  ist der Modus nicht relevant. Dieser Bericht ist nur bei Verwendung <b>Buchführungsmodus Periodenrechnung</b> (siehe Setup das Modul  Buchhaltung).
 CalculationMode=Berechnungsmodus
 AccountancyJournal=Buchhaltungscode-Journal
 ACCOUNTING_VAT_ACCOUNT=Standard-Erlöskonto, um MwSt einzuziehen
diff --git a/htdocs/langs/de_DE/contracts.lang b/htdocs/langs/de_DE/contracts.lang
index b6ed03c343ce2cd839542a920ba90d04370b48bb..9657804b2414cb4a98c5a578dd9cc2005177f479 100644
--- a/htdocs/langs/de_DE/contracts.lang
+++ b/htdocs/langs/de_DE/contracts.lang
@@ -22,19 +22,19 @@ Contracts=Verträge
 ContractsAndLine=Verträge und Zeilen von Verträgen
 Contract=Vertrag
 NoContracts=Keine Verträge
-MenuServices=Services
-MenuInactiveServices=Inaktive Services
-MenuRunningServices=Aktive Services
-MenuExpiredServices=Abgelaufene Services
+MenuServices=Leistungen
+MenuInactiveServices=Inaktive Leistungen
+MenuRunningServices=Laufende Leistungen
+MenuExpiredServices=Abgelaufene Leistungen
 MenuClosedServices=Geschlossene Services
 NewContract=Neuer Vertrag
 AddContract=Vertrag erstellen
-SearchAContract=Suche einen Vertrag
+SearchAContract=Kundenvertrag suchen
 DeleteAContract=Löschen eines Vertrages
 CloseAContract=Schließen eines Vertrages
 ConfirmDeleteAContract=Möchten Sie diesen Vertrag und alle verbundenen Services wirklich löschen?
 ConfirmValidateContract=Möchten Sie diesen Vertrag wirklich freigeben?
-ConfirmCloseContract=Dies schließt auch alle verbundenen Services (aktiv oder nicht). Möchten Sie den Vertrag dennoch schließen?
+ConfirmCloseContract=Dies schließt auch alle verbundenen Leistungen (aktiv oder nicht). Sind sie sicher, dass Sie den Vertrag  schließen möchten?
 ConfirmCloseService=Möchten Sie dieses Service wirklich mit Datum <b>%s</b> schließen?
 ValidateAContract=Einen Vertrag freigeben
 ActivateService=Service aktivieren
@@ -76,7 +76,7 @@ BoardRunningServices=Abgelaufene, aktive Leistungen
 ServiceStatus=Leistungs-Status
 DraftContracts=Vertragsentwürfe
 CloseRefusedBecauseOneServiceActive=Schließen nicht möglich, es existieren noch aktive Leistungen
-CloseAllContracts=Alle Verträge schließen
+CloseAllContracts=schließe alle Vertragsleistungen
 DeleteContractLine=Vertragsposition löschen
 ConfirmDeleteContractLine=Möchten Sie diese Vertragsposition wirklich löschen?
 MoveToAnotherContract=In einen anderen Vertrag verschieben
diff --git a/htdocs/langs/de_DE/cron.lang b/htdocs/langs/de_DE/cron.lang
index b9771b15595889161a4075c7b4d5de5d3bd2012f..f7e204ab99e2a6401186ab2e9552bf0c237e1308 100644
--- a/htdocs/langs/de_DE/cron.lang
+++ b/htdocs/langs/de_DE/cron.lang
@@ -26,7 +26,7 @@ CronLastOutput=Ausgabe der letzten Ausführung
 CronLastResult=Letzter Resultatcode
 CronListOfCronJobs=Liste der geplanten Jobs
 CronCommand=Befehl
-CronList=Geplante cronjobs
+CronList=Cronjob Liste
 CronDelete=cronjobs löschen
 CronConfirmDelete=Möchten Sie diesen Cronjob wirklich löschen?
 CronExecute=Starte geplante cronjobs
@@ -35,8 +35,8 @@ CronInfo=Das Schedule Cron-Jobs Module  erlaubt die geplanten Cron-Jobs die prog
 CronWaitingJobs=Wartende Jobs
 CronTask=Job
 CronNone=Keine
-CronDtStart=Startdatum
-CronDtEnd=Vertragsende
+CronDtStart=Beginnzeit
+CronDtEnd=Endet
 CronDtNextLaunch=Nächste Ausführung
 CronDtLastLaunch=Letzte Ausführung
 CronFrequency=Häufigkeit
@@ -69,11 +69,11 @@ CronTaskInactive=Dieser Job ist deaktiviert
 CronDtLastResult=Datum letztes Resultat
 CronId=ID
 CronClassFile=Klassen (filenames.class.php)
-CronModuleHelp=Name of Dolibarr module directory (also work with external Dolibarr module). <BR> For exemple to fetch method of Dolibarr Product object /htdocs/<u>product</u>/class/product.class.php, the value of module is <i>product</i>
-CronClassFileHelp=The file name to load. <BR> For exemple to fetch method of Dolibarr Product object /htdocs/product/class/<u>product.class.php</u>, the value of class file name is <i>product.class.php</i>
-CronObjectHelp=The object name to load. <BR> For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of class file name is <i>Product</i>
-CronMethodHelp=The object method to launch. <BR> For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of method is  is <i>fecth</i>
-CronArgsHelp=The method arguments. <BR> For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of paramters can be <i>0, ProductRef</i>
+CronModuleHelp=Name des Dolibarr Modul (funktioniert auch mit externen Dolibarr Modul). <BR> Als Beispiel um die Funktion fetch der Dolibarr Produkt Klasse  /htdocs/<u>product</u>/class/product.class.php aufzurufen, der Wert des Modul ist <i>product.</i>
+CronClassFileHelp=Der Name der Datei zu laden<BR> Als Beispiel um die Funktion fetch der Dolibarr Produkt Klasse /htdocs/product/class/<u>product.class.php</u> aufzurufen, ist der Name der Datei <i>product.class.php</i>
+CronObjectHelp=Der Klassennamen um zu laden. <BR> Als Beispiel um die Funktion fetch der Dolibarr Produkt Klasse  /htdocs/product/class/product.class.php aufzurufen, der Klassennamen-Wert ist <i>Produkt-</i>
+CronMethodHelp=Die Objektmethode, um zu starten. <BR> Zum Beispiel um die Methode fetch vom  Dolibarr Produkt Objekt /htdocs/product/class/product.class.php aufzurufen, ist der Methoden-Wert <i>fetch</i>
+CronArgsHelp=Das Methodenargument/Input-Parameter.<BR>  Zum Beispiel um die Methode fetch vom  Dolibarr Produkt Objekt /htdocs/product/class/product.class.php aufzurufen, ist der Input-Parameter-Wert <i>0, RefProduit</i>
 CronCommandHelp=Die auszuführende System-Kommandozeile
 CronCreateJob=Erstelle neuen cronjob
 # Info
@@ -84,5 +84,5 @@ CronType_method=Aufrufmethode einer Dolibarr Class
 CronType_command=Shell-Befehl
 CronMenu=Cron
 CronCannotLoadClass=Kann Klasse %s oder Object %s nicht laden
-UseMenuModuleToolsToAddCronJobs=Rufe Menu "Home - Modules tools - Job Liste" auf um geplante Aufgaben zu sehen und zu verändern.
+UseMenuModuleToolsToAddCronJobs=Öffnen Sie das Menü "Start - Module Werkzeuge - Cronjob Liste" auf um geplante Skript-Aufgaben zu sehen und zu verändern.
 TaskDisabled=Aufgabe deaktiviert
diff --git a/htdocs/langs/de_DE/dict.lang b/htdocs/langs/de_DE/dict.lang
index d3cf80f0e8e28d039286fd527e6a3754fd713a5c..7e269b2f34b92f0d627fdf7445b0d759e77d5517 100644
--- a/htdocs/langs/de_DE/dict.lang
+++ b/htdocs/langs/de_DE/dict.lang
@@ -232,7 +232,7 @@ CountryUY=Uruguay
 CountryUZ=Usbekistan
 CountryVU=Vanuatu
 CountryVE=Venezuela
-CountryVN=Viet Nam
+CountryVN=Vietnam
 CountryVG=Virgin Islands, British
 CountryVI=Virgin Islands, US
 CountryWF=Wallis und Futuna
@@ -257,7 +257,7 @@ CivilityDR=Doktor
 Currencyeuros=Euro
 CurrencyAUD=AU Dollar
 CurrencySingAUD=AU Dollar
-CurrencyCAD=CAN Dollar
+CurrencyCAD=CAN Dollars
 CurrencySingCAD=CAN Dollar
 CurrencyCHF=Schweizer Franken
 CurrencySingCHF=Schweizer Franken
@@ -291,7 +291,7 @@ CurrencyXPF=CFP Francs
 CurrencySingXPF=CFP Franc
 CurrencyCentSingEUR=Cent
 CurrencyCentINR=Paisa
-CurrencyCentSingINR=paise
+CurrencyCentSingINR=Paise
 CurrencyThousandthSingTND=Tausendstel
 #### Input reasons #####
 DemandReasonTypeSRC_INTE=Internet
diff --git a/htdocs/langs/de_DE/errors.lang b/htdocs/langs/de_DE/errors.lang
index cd447809292af347fadfd73b03978430ffc9939e..3bb1a6439babf5477cd8c42561808c490f50ba6d 100644
--- a/htdocs/langs/de_DE/errors.lang
+++ b/htdocs/langs/de_DE/errors.lang
@@ -1,14 +1,14 @@
 # Dolibarr language file - Source file is en_US - errors
 
 # No errors
-NoErrorCommitIsDone=Kein Fehler, wir führen fort
+NoErrorCommitIsDone=Kein Fehler, Befehl wurde ausgeführt
 # Errors
 Error=Fehler
 Errors=Fehler
 ErrorButCommitIsDone=Fehler aufgetreten, Freigabe erfolgt dennoch
-ErrorBadEMail=E-Mail %s ist nicht korrekt
+ErrorBadEMail=E-Mailadresse  %s ist nicht korrekt
 ErrorBadUrl=URL %s ist nicht korrekt
-ErrorLoginAlreadyExists=Login %s existiert bereits.
+ErrorLoginAlreadyExists=Benutzername %s existiert bereits.
 ErrorGroupAlreadyExists=Gruppe %s existiert bereits.
 ErrorRecordNotFound=Eintrag wurde nicht gefunden.
 ErrorFailToCopyFile=Konnte die Datei <b>'%s'</b> nicht nach <b>'%s'</b> kopieren.
@@ -29,7 +29,7 @@ ErrorBadBarCodeSyntax=Falsche Syntax für den Barcode. Vielleicht haben Sie eine
 ErrorCustomerCodeRequired=Kunden Nr. erforderlich
 ErrorBarCodeRequired=Barcode erforderlich 
 ErrorCustomerCodeAlreadyUsed=Diese Kunden-Nr. ist bereits vergeben.
-ErrorBarCodeAlreadyUsed=Barcode bereits vergeben
+ErrorBarCodeAlreadyUsed=Barcode wird bereits verwendet
 ErrorPrefixRequired=Präfix erforderlich
 ErrorUrlNotValid=Die angegebene Website-Adresse ist ungültig
 ErrorBadSupplierCodeSyntax=Die eingegebene Lieferanten Nr. ist unzulässig.
@@ -67,15 +67,15 @@ ErrorBadFormatValueList=Die Liste darf nicht mehr als ein <u>%s</u> enthalten, m
 ErrorFieldCanNotContainSpecialCharacters=Das Feld <b>%s</b> darf keine Sonderzeichen enthalten.
 ErrorFieldCanNotContainSpecialNorUpperCharacters=Das Feld <b>%s</b> darf weder Sonderzeichen noch Großbuchstaben enthalten.
 ErrorNoAccountancyModuleLoaded=Kein Buchhaltungsmodul aktiviert
-ErrorExportDuplicateProfil=Dieses Exportprofil existiert bereits.
+ErrorExportDuplicateProfil=Dieser Profilname existiert bereits für dieses Exportprofil.
 ErrorLDAPSetupNotComplete=Der LDAP-Abgleich für dieses System ist nicht vollständig eingerichtet.
 ErrorLDAPMakeManualTest=Eine .ldif-Datei wurde im Verzeichnis %s erstellt. Laden Sie diese Datei von der Kommandozeile aus um mehr Informationen über Fehler zu erhalten.
-ErrorCantSaveADoneUserWithZeroPercentage=Maßnahmen können nicht mit Status "Nicht begonnen" gespeichert werden, wenn das Feld "Erledigt durch" ausgefüllt ist.
+ErrorCantSaveADoneUserWithZeroPercentage=Ereignisse können nicht mit Status "Nicht begonnen" gespeichert werden, wenn das Feld "Erledigt durch" ausgefüllt ist.
 ErrorRefAlreadyExists=Die Nr. für den Erstellungsvorgang ist bereits vergeben
 ErrorPleaseTypeBankTransactionReportName=Bitte geben Sie den Bankbeleg zu dieser Transaktion ein (Format MMYYYY oder TTMMYYYY)
 ErrorRecordHasChildren=Kann diesen Eintrag nicht löschen da er noch über Kindelemente verfügt.
 ErrorRecordIsUsedCantDelete=Eintrag kann nicht gelöscht werden. Er wird bereits benutzt oder ist in einem anderen Objekt enthalten.
-ErrorModuleRequireJavascript=Diese Funktion erfordert aktiviertes JavaScript. Aktivieren/deaktivieren können Sie Javascript im Menü Übersicht(Home)-> Einstellungen->Anzeige.
+ErrorModuleRequireJavascript=Diese Funktion erfordert aktiviertes JavaScript. Aktivieren/deaktivieren können Sie Javascript im Menü Start-> Einstellungen->Anzeige.
 ErrorPasswordsMustMatch=Die eingegebenen Passwörter müssen identisch sein.
 ErrorContactEMail=Ein technischer Fehler ist aufgetreten. Bitte kontaktieren Sie Ihren Administrator unter der folgenden E-Mail-Adresse <b>%s</b> und fügen Sie den Fehlercode <b>%s</b> in Ihrer Nachricht ein, oder (noch besser) fügen Sie einen Screenshot dieser Seite als Anhang bei.
 ErrorWrongValueForField=Falscher Wert für Feld Nr. <b>%s</b> (Wert '<b>%s</b>' passt nicht zur Regex-Regel <b>%s</b>)
@@ -92,11 +92,11 @@ ErrorBadMask=Fehler auf der Maske
 ErrorBadMaskFailedToLocatePosOfSequence=Fehler, Maske ohne fortlaufende Nummer
 ErrorBadMaskBadRazMonth=Fehler, falscher Reset-Wert
 ErrorMaxNumberReachForThisMask=Maximum Größe für diese Maske erreicht
-ErrorCounterMustHaveMoreThan3Digits=Zähler muss länger als 3 Stellen sein
+ErrorCounterMustHaveMoreThan3Digits=Zähler muss mehr als 3 Stellen haben
 ErrorSelectAtLeastOne=Fehler. Wählen Sie mindestens einen Eintrag.
 ErrorProductWithRefNotExist=Produkt mit der Nummer '<i>%s</i>' nicht gefunden
 ErrorDeleteNotPossibleLineIsConsolidated=Löschen nicht möglich, da der Datensatz mit einer Banktransaktion verbunden ist.
-ErrorProdIdAlreadyExist=%s wird an einen Dritten übertragen
+ErrorProdIdAlreadyExist=%s wurde bereits einem Partner zugewiesen
 ErrorFailedToSendPassword=Fehler beim Zusenden des Passworts
 ErrorFailedToLoadRSSFile=RSS-Feeds welche Fehler erhalten. Versuchen Sie die Konstante 'MAIN_SIMPLEXMLLOAD_DEBUG' hinzufügen, wenn die Fehlermeldungen nicht genügend Informationen enthält.
 ErrorPasswordDiffers=Passwörter stimmen nicht überein, bitte erneut eingeben.
@@ -159,8 +159,8 @@ ErrorPriceExpression22=Negatives Ergebnis '%s'
 ErrorPriceExpressionInternal=Interner Fehler '%s'
 ErrorPriceExpressionUnknown=Unbekannter Fehler '%s'
 ErrorSrcAndTargetWarehouseMustDiffers=Quelle und Ziel-Lager müssen unterschiedlich sein
-ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without lot/serial information, on a product requiring lot/serial information
-ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified (approved or denied) before being allowed to do this action
+ErrorTryToMakeMoveOnProductRequiringBatchData=Fehler, Sie versuchen Sie eine Lagerbewegung ohne Chargen-/Seriennummer zu machen, bei einem Produkt welches diese Information benötigt
+ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=Alle erfassten Eingänge müssen zunächst überprüft werden (genehmigt oder abgelehnt), bevor es erlaubt ist diese Aktion auszuführen
 ErrorCantSetReceptionToTotalDoneWithReceptionDenied=Alle gespeicherten Empfänge müssen erst überprüft werden (zugelassen), bevor es ihm gestattet ist diese Aktion zu tun
 ErrorGlobalVariableUpdater0=HTTP-Anforderung ist mit dem Fehler '%s' fehlgeschlagen
 ErrorGlobalVariableUpdater1=JSON format '%s' ungültig
@@ -181,7 +181,7 @@ WarningPassIsEmpty=Warnung: Derzeit ist kein Datenbankpasswort gesetzt. Dies ist
 WarningConfFileMustBeReadOnly=Achtung: Die Konfigurationsdatei (<b>htdocs/conf/conf.php</b>) kann von Ihrem Webserver überschrieben werden. Dies ist eine ernstzunehmende Sicherheitslücke. Ändern Sie den Zugriff schnellstmöglich auf reinen Lesezugriff. Wenn Sie Windows und das FAT-Format für Ihre Festplatte nutzen, seien Sie sich bitte bewusst dass dieses Format keine individuellen Dateiberechtigungen unterstützt und so auch nicht völlig sicher ist,
 WarningsOnXLines=Warnhinweise in <b>%s</b> Quellzeilen
 WarningNoDocumentModelActivated=Für das Erstellen von Dokumenten ist keine Vorlage gewählt. Eine Vorlage wird standardmäßig ausgewählt, bis Sie die Moduleinstellungen angepasst haben.
-WarningLockFileDoesNotExists=Warnung, wenn Setup abgeschlossen ist, müssen Sie die Installations- und Migration-Tools deaktivieren. Dazu fügen Sie die Datei <b>install.lock</b> dem Verzeichnis <b> %s</b> hinzu. Das fehlend dieser Datei stelle eine Sicherheitslücke dar.
+WarningLockFileDoesNotExists=Warnung, nachdem das Setup abgeschlossen ist, müssen Sie die Installations- und Migrations-Tools deaktivieren. Dazu fügen Sie die Datei <b>install.lock</b> in dem Verzeichnis <b>%s</b> hinzu. Das fehlen dieser Datei stellt eine Sicherheitslücke dar.
 WarningUntilDirRemoved=Diese Warnung bleibt so lange bestehen, bis die Sicherheitslücke geschlossen wurde (nur für Administratoren sichtbar).
 WarningCloseAlways=Achtung: es wird auch dann geschlossen, wenn der Betrag zwischen Quelle und Ziel unterschiedlich ist. Aktivieren Sie dieses Feature mit Bedacht.
 WarningUsingThisBoxSlowDown=Warnung: Der Einsatz dieser Box verlangsamt sämtliche Seiten mit dieser Box spürbar.
diff --git a/htdocs/langs/de_DE/exports.lang b/htdocs/langs/de_DE/exports.lang
index 13bfdcaa1237c063278f31eb1bd1767c7d66f539..46e5808214e9c690dd74939dc811e882392bf625 100644
--- a/htdocs/langs/de_DE/exports.lang
+++ b/htdocs/langs/de_DE/exports.lang
@@ -97,7 +97,7 @@ EmptyLine=Leerzeile (verworfen)
 CorrectErrorBeforeRunningImport=Beheben Sie zuerst alle Fehler bevor Sie den endgültigen Import starten.
 FileWasImported=Datei wurde mit der Nummer <b>%s</b> importiert.
 YouCanUseImportIdToFindRecord=Sie können alle importierten Einträge in Ihrer Datenbank finden, indem Sie nach dem Feld <b>import_key='%s'</b> filtern.
-NbOfLinesOK=Anzahl der Zeilen ohne Fehler und Warnungen: <b>%s</b>.
+NbOfLinesOK=Zeilenanzahl ohne Fehler und Warnungen: <b>%s</b>.
 NbOfLinesImported=Anzahl der erfolgreich importierten Zeilen: <b>%s</b>.
 DataComeFromNoWhere=Der einzufügende Wert kommt nicht aus der Quelldatei.
 DataComeFromFileFieldNb=Der einzufügende Wert stammt aus Feldnummer <b>%s</b> der Quelldatei.
@@ -125,7 +125,7 @@ BankAccountNumber=Kontonummer
 BankAccountNumberKey=Schlüssel
 SpecialCode=Spezialcode
 ExportStringFilter=%% erlaubt die Ersetzung eines oder mehrerer Zeichen im Text
-ExportDateFilter=YYYY, YYYYMM, YYYYMMDD : filters by one year/month/day<br>YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD : filters over a range of years/months/days<br> > YYYY, > YYYYMM, > YYYYMMDD : filters on all following years/months/days<br> < YYYY, < YYYYMM, < YYYYMMDD : filters on all previous years/months/days
+ExportDateFilter='YYYY' 'YYYYMM' 'YYYYMMDD': filtert nach einem Jahr/Monat/Tag<br>'YYYY+YYYY' 'YYYYMM+YYYYMM' 'YYYYMMDD+YYYYMMDD': filtert über einen Bereich von Jahren/Monaten/Tagen<br>'>YYYY' '>YYYYMM' '>YYYYMMDD': filtert auf die folgenden Jahre/Monate/Tage<br>'<YYYY' '<YYYYMM' '<YYYYMMDD': filtert auf die vorhergehenden Jahre/Monate/Tage
 ExportNumericFilter='NNNNN' filtert genau einen Wert<br>'NNNNN+NNNNN' filtert einen Wertebereich<br>'&gt;NNNNN' filtert nach kleineren Werten<br>'&gt;NNNNN' filtert nach größeren Werten
 ## filters
 SelectFilterFields=Wenn Sie nach bestimmten Werten filtern wollen, geben Sie diese Werte hier ein.
diff --git a/htdocs/langs/de_DE/externalsite.lang b/htdocs/langs/de_DE/externalsite.lang
index e4afde906aceacbe3b36e161ce807a192ab37ec0..8a91fc705e6f0cf05bfa70b3e10366254a13dd46 100644
--- a/htdocs/langs/de_DE/externalsite.lang
+++ b/htdocs/langs/de_DE/externalsite.lang
@@ -1,5 +1,5 @@
 # Dolibarr language file - Source file is en_US - externalsite
-ExternalSiteSetup=Setup-Link zu einer externen URL
+ExternalSiteSetup=Konfigurations-Link auf externe Webseite
 ExternalSiteURL=URL der externen Seite
 ExternalSiteModuleNotComplete=Module ExternalSite wurde nicht richtig konfiguriert.
 ExampleMyMenuEntry=Mein Menü-Eintrag
diff --git a/htdocs/langs/de_DE/holiday.lang b/htdocs/langs/de_DE/holiday.lang
index 658b81d78a9f67ba33df537d777d1b7e7287b64c..348537fa1a3a3f746efafc25ac3082c20fcc60a8 100644
--- a/htdocs/langs/de_DE/holiday.lang
+++ b/htdocs/langs/de_DE/holiday.lang
@@ -1,5 +1,5 @@
 # Dolibarr language file - Source file is en_US - holiday
-HRM=Mitarbeiter
+HRM=PM
 Holidays=Urlaub
 CPTitreMenu=Urlaub
 MenuReportMonth=Monatsauszug
@@ -14,9 +14,9 @@ DateFinCP=Urlaubsende
 DateCreateCP=Erstellungsdatum
 DraftCP=Entwurf
 ToReviewCP=Wartet auf Genehmigung
-ApprovedCP=Genehmigt
-CancelCP=Zurückgezogen
-RefuseCP=Abgelehnt
+ApprovedCP=genehmigt
+CancelCP=widerrufen
+RefuseCP=abgelehnt
 ValidatorCP=genehmigt durch
 ListeCP=Urlaubsliste
 ReviewedByCP=Wird geprüft von
@@ -26,7 +26,7 @@ DelayToRequestCP=Urlaubsanträge müssen mindestens <b>%s Tage</b> im voraus ges
 MenuConfCP=Urlaubsliste bearbeiten
 UpdateAllCP=Urlaube aktualisieren
 SoldeCPUser=Feriensaldo ist <b>%s</b> Tage.
-ErrorEndDateCP=Sie müssen ein End-Datum wählen, dass nach dem Start-Datum liegt.
+ErrorEndDateCP=Sie müssen ein Urlaubsende-Datum wählen, dass nach dem Urlaubsbeginn-Datum liegt.
 ErrorSQLCreateCP=Ein SQL Fehler trat auf bei der Eerstellung von:
 ErrorIDFicheCP=Fehler aufgetreten: der Urlaubsantrag existiert nicht.
 ReturnCP=Zurück zur vorherigen Seite
@@ -49,8 +49,8 @@ ErrorCantDeleteCP=Fehler: Sie haben nicht die Berechtigung, diesen Urlaubsantrag
 CantCreateCP=Sie haben nicht die Berechtigung Urlaub zu beantragen.
 InvalidValidatorCP=Sie müssen einen Vorgesetzten wählen, der Ihre Urlaubsanfrage genehmigt.
 CantUpdate=Sie können diesen Urlaubsantrag nicht aktualisieren
-NoDateDebut=Sie müssen ein Startdatum wählen.
-NoDateFin=Sie müssen ein Enddatum wählen.
+NoDateDebut=Sie müssen ein Urlaubsbeginn Datum wählen.
+NoDateFin=Sie müssen ein Urlaubsende Datum wählen.
 ErrorDureeCP=Ihr Urlaubsantrag enthält keine Werktage.
 TitleValidCP=Urlaubsantrag genehmigen
 ConfirmValidCP=Möchten Sie diesen Urlaubsantrag wirklich genehmigen?
@@ -76,7 +76,7 @@ LogCP=Log der Aktualisierung von verfügbaren Urlaubstagen
 ActionByCP=Ausgeführt von
 UserUpdateCP=Für den Benutzer
 PrevSoldeCP=Vorherige Übersicht
-NewSoldeCP=Neue Übersicht
+NewSoldeCP=Neuer Saldo
 alreadyCPexist=Ein Urlaubsantrag wurde für diese Periode bereits erstellt.
 UserName=Nachname
 Employee=Angestellter
@@ -98,8 +98,8 @@ ErrorUpdateConfCP=Ein Fehler trat beim Bearbeiten auf, bitte nochmals versuchen.
 AddCPforUsers=Bitte geben Sie die Anzahl Urlaubstage der Benutzer an,  <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">indem Sie hier klicken</a>.
 DelayForSubmitCP=Letztmöglicher Termin für Urlaubsanträge
 AlertapprobatortorDelayCP=der Urlaubsantrag hält die Frist nicht ein!
-AlertValidatorDelayCP=Préevent the approbator if the leave request exceed delay
-AlertValidorSoldeCP=Prevent the approbator if the leave request exceed the balance
+AlertValidatorDelayCP=Verhinde Bestätigung wenn der Urlaubsantrag nicht die Frist einhaltet
+AlertValidorSoldeCP=Verhindern, die Bestätigung wenn der Urlaubsantrag das Gleichgewichts überschreitet
 nbUserCP=Anzahl unterstützter Benutzer im Urlaubsmodul
 nbHolidayDeductedCP=Anzahl Urlaubstage, die für jeden genommenen Ferientag abgezogen werden
 nbHolidayEveryMonthCP=Anzahl hinzugefügter Urlaubstage pro Monat
@@ -108,16 +108,16 @@ Module27130Desc= Verwaltung von Urlaubsanträgen
 TitleOptionMainCP=Wichtigste Urlaubs-Einstellungen
 TitleOptionEventCP=Einstellungen des Urlaubs Bedienungsruf für Veranstaltungen
 ValidEventCP=Freigeben
-UpdateEventCP=Maßnahmen aktualisieren
+UpdateEventCP=Ereignisse aktualisieren
 CreateEventCP=Erstelle
-NameEventCP=Titel der Maßnahme
-OkCreateEventCP=Maßnahme erfolgreich zugefügt.
-ErrorCreateEventCP=Fehler bei der Erstellung der Maßnahme.
-UpdateEventOkCP=Maßnahme erfolgreich aktualisiert.
-ErrorUpdateEventCP=Fehler bei der Aktualisierung der Maßnahme.
-DeleteEventCP=Maßnahme löschen
-DeleteEventOkCP=Maßnahme wurde gelöscht.
-ErrorDeleteEventCP=Fehler bei der Löschung der Maßnahme.
+NameEventCP=Name des Ereignis
+OkCreateEventCP=Ereignis erfolgreich angefügt.
+ErrorCreateEventCP=Fehler bei der Erstellung des Ereignis.
+UpdateEventOkCP=Die Aktualisierung des Ereignis ging gut.
+ErrorUpdateEventCP=Fehler bei der Aktualisierung des Ereignis.
+DeleteEventCP=Ereignis löschen
+DeleteEventOkCP=Das Ereignis wurde gelöscht.
+ErrorDeleteEventCP=Fehler bei der Löschung des Ereignis.
 TitleDeleteEventCP=Löschen von Sonderurlaub
 TitleCreateEventCP=Erstellen von Sonderurlaub
 TitleUpdateEventCP=Verändern oder Löschen von Sonderurlaub
diff --git a/htdocs/langs/de_DE/install.lang b/htdocs/langs/de_DE/install.lang
index 5609141c87965fb33619c5ece2e0a7fe845305c7..c1cdba7d9ea7ccb5cc75ec572882d627cf738538 100644
--- a/htdocs/langs/de_DE/install.lang
+++ b/htdocs/langs/de_DE/install.lang
@@ -54,7 +54,7 @@ DatabaseServer=Datenbankserver
 DatabaseName=Name der Datenbank
 DatabasePrefix=Präfix für die Tabellen der Datenbank
 Login=Anmeldung
-AdminLogin=Login für Dolibarr Datenbank-Administrator.
+AdminLogin=Administrator Benutzername für Dolibarr Datenbank
 Password=Passwort
 PasswordAgain=Passwort wiederholen
 AdminPassword=Passwort des dolibarr-Datenbankadministrators
@@ -148,7 +148,7 @@ OpenBaseDir=PHP openbasedir Einstellungen
 YouAskToCreateDatabaseSoRootRequired=Sie haben die Option "Datenbank erstellen" ausgewählt. Hierfür müssen Sie Benutzername und Passwort des Datenbank-Super-Users in das untenstehende Formular eintragen.
 YouAskToCreateDatabaseUserSoRootRequired=Sie haben die Option "Datenbankbenutzer erstellen" ausgewählt. Hierfür müssen Sie Benutzername und Passwort des Datenbank-Super-Users in das untenstehende Formular eintragen.
 NextStepMightLastALongTime=Der aktuelle Vorgang kann mehrere Minuten dauern. Holen Sie sich eine frische Tasse Kaffee, oder nutzen Sie die Gelegenheit für eine Rauchpause. Warten Sie jedoch bitte in jedem Fall, bis der nächste Bildschirm vollständig angezeigt wird, bevor Sie fortfahren.
-MigrationCustomerOrderShipping=Kundenbestellungsversand aktualisieren
+MigrationCustomerOrderShipping=Kundenauftragslieferung aktualisieren
 MigrationShippingDelivery=Aktualisiere die Speicherung von Lieferungen (Versandart?)
 MigrationShippingDelivery2=Aktualisiere die Speicherung von Lieferungen 2 (Versandart 2?)
 MigrationFinished=Migration abgeschlossen
@@ -161,7 +161,7 @@ ErrorDatabaseVersionForbiddenForMigration=Die Version Ihres Datenbankmanager ist
 #########
 # upgrade
 MigrationFixData=Denormalisierte Daten bereinigen
-MigrationOrder=Datenmigration für Kundenbestellungen
+MigrationOrder=Datenmigration für Kundenaufträge
 MigrationSupplierOrder=Datenmigration für Lieferantenbestellungen
 MigrationProposal=Datenmigration für Angebote
 MigrationInvoice=Datenmigration für Kundenrechnungen
@@ -205,7 +205,7 @@ MigrationDeliveryAddress=Update Lieferadresse in Versand
 MigrationProjectTaskActors=Datenmigration für llx_projet_task_actors Tabelle
 MigrationProjectUserResp=Datenmigration des Feldes fk_user_resp von llx_projet nach llx_element_contact
 MigrationProjectTaskTime=Aktualisiere aufgewandte Zeit (in Sekunden)
-MigrationActioncommElement=Aktualisiere die Maßnahmen
+MigrationActioncommElement=Aktualisiere die Termine/Aufgaben
 MigrationPaymentMode=Migration der Daten für die Zahlungsart
 MigrationCategorieAssociation=Kategorien verschieben
 MigrationEvents=Migration of events to add event owner into assignement table
diff --git a/htdocs/langs/de_DE/link.lang b/htdocs/langs/de_DE/link.lang
index 759caca087651b52460c8f847d69e8df721d7570..0961f84c6448d3e20fb2249d42d4441447629449 100644
--- a/htdocs/langs/de_DE/link.lang
+++ b/htdocs/langs/de_DE/link.lang
@@ -1,4 +1,4 @@
-LinkANewFile=Verknüpfen Sie ein neues Dokument/Datei
+LinkANewFile=Verknüpfen Sie eine neue Datei / Dokument
 LinkedFiles=Verknüpfte Dateien und Dokumente
 NoLinkFound=Keine eingetragenen Verknüpfungen
 LinkComplete=Die Datei wurde erfolgreich verknüpft
diff --git a/htdocs/langs/de_DE/mails.lang b/htdocs/langs/de_DE/mails.lang
index 01ce07198047d8eb61939efed97a212ee6b3a2af..e04d73b5ac96b6afd41d79576da74a517f0c9aee 100644
--- a/htdocs/langs/de_DE/mails.lang
+++ b/htdocs/langs/de_DE/mails.lang
@@ -1,5 +1,5 @@
 # Dolibarr language file - Source file is en_US - mails
-Mailing=E-Mail
+Mailing=Mailversand
 EMailing=E-Mail-Kampagne
 Mailings=E-Mail-Kampagnen
 EMailings=E-Mail-Kampagne
@@ -53,7 +53,7 @@ ConfirmValidMailing=Möchten Sie diese E-Mail-Kampagne wirklich freigeben?
 ConfirmResetMailing=Achtung, wenn Sie diese E-Mail Kampangne (<b>%s</b>), können Sie diese Aktion nochmals versenden. Sind Sie sicher, das ist tun möchten?
 ConfirmDeleteMailing=Möchten Sie diese E-Mail-Kampagne wirklich löschen?
 NbOfRecipients=Anzahl der Empfänger
-NbOfUniqueEMails=Zahl der einzigartigen E-Mail-Adressen
+NbOfUniqueEMails=Anzahl einzigartige E-Mail-Adressen
 NbOfEMails=Anzahl der E-Mails
 TotalNbOfDistinctRecipients=Anzahl der Empfänger
 NoTargetYet=Noch keine Empfänger ausgewählt (Bitte wechseln Sie zur Registerkarte "Empfänger")
@@ -77,12 +77,12 @@ CheckRead=Lesebestätigung
 YourMailUnsubcribeOK=Die E-Mail-Adresse <b>%s</b> ist korrekt aus der Mailing-Liste ausgetragen.
 MailtoEMail=Verknüpfung zu E-Mail
 ActivateCheckRead=Erlaube den Zugriff auf den "Abmelde"-Link
-ActivateCheckReadKey=Key use to encrypt URL use for "Read Receipt" and "Unsubcribe" feature
+ActivateCheckReadKey=Sicherheitsschlüssel für die Verschlüsselung von URLs in der Lesebestätigungs- und bei der Abmeldenfunktion verwendet
 EMailSentToNRecipients=E-Mail versandt an %s Empfänger.
 XTargetsAdded=<b>%s</b> Empfänger der Liste zugefügt
 EachInvoiceWillBeAttachedToEmail=Ein Dokument mit der Standard-Vorlage für Rechnungen wird erstellt und an jede E-Mail angehängt.
 MailTopicSendRemindUnpaidInvoices=Zahlungserinnerung für Rechnung %s (%s)
-SendRemind=Zahlungserinnerung per E-Mail senden
+SendRemind=Zahlungserinnerung per E-Mail versenden
 RemindSent=%s Erinnerung(en) gesendet
 AllRecipientSelectedForRemind=Alle Partner ausgewählt und wenn eine Email angegeben ist (beachten sie, dass eine Mail pro Rechnung geschickt wird)
 NoRemindSent=Keine eMail-Erinnerung versandt
@@ -114,13 +114,13 @@ SendMail=E-Mail versenden
 SentBy=Gesendet von
 MailingNeedCommand=Aus Sicherheitsgründen sollten E-Mails von der Kommandozeile aus versandt werden. Bitten Sie Ihren Server Administrator um die Ausführung des folgenden Befehls, um den Versand an alle Empfänger zu starten:
 MailingNeedCommand2=Sie können den Versand jedoch auch online starten, indem Sie den Parameter MAILING_LIMIT_SENDBYWEB auf den Wert der pro Sitzung gleichzeitig zu versendenden Mails setzen. Die entsprechenden Einstellungen finden Sie unter Übersicht-Einstellungen-Andere.
-ConfirmSendingEmailing=If you can't or prefer sending them with your www browser, please confirm you are sure you want to send emailing now from your browser ?
+ConfirmSendingEmailing=Wenn Sie nicht es  oder bevorzugen sie das senden mit Ihrem Web-Browser, bestätigen Sie bitte sicher, dass Sie jetzt eine E-Mail von Ihrem Browser senden wollen?
 LimitSendingEmailing=Hinweis: Aus Sicherheits- und Zeitüberschreitungsgründen ist der Online-Versand von E-Mails auf <b>%s</b> Empfänger je Sitzung beschränkt.
 TargetsReset=Liste leeren
 ToClearAllRecipientsClickHere=Klicken Sie hier, um die Empfängerliste zu leeren
 ToAddRecipientsChooseHere=Fügen Sie Empfänger über die Listenauswahl hinzu
 NbOfEMailingsReceived=Empfangene E-Mail-Kampagnen
-NbOfEMailingsSend=Massenmails versandt
+NbOfEMailingsSend=E-Mail-Kampagne versandt
 IdRecord=Eintrag-ID
 DeliveryReceipt=Zustellbestätigung
 YouCanUseCommaSeparatorForSeveralRecipients=Trennen Sie mehrere Empfänger mit einem <b>Komma</b>
@@ -136,8 +136,8 @@ SomeNotificationsWillBeSent=%s Benachrichtigungen werden per E-Mail versandt
 AddNewNotification=Neues E-Mail-Beachrichtigungsziel aktivieren
 ListOfActiveNotifications=Liste aller aktiven E-Mail-Beachrichtigungsziele
 ListOfNotificationsDone=Liste aller versandten E-Mail Benachrichtigungen
-MailSendSetupIs=Der E-Mail-Versand wurde auf '%s' konfiguriert. Dieser Modus kann nicht für Massen-Mails verwendet werden.
-MailSendSetupIs2=Sie müssen zuerst mit einem Admin-Konto im Menü %sHome - Einstellungen - EMails%s den Parameter <strong>'%s'</strong> auf den Modus '%s' ändern. Dann können Sie die Daten des SMTP-Servers von Ihrem Internetdienstanbieter eingeben und die Masse-E-Mail-Funktion nutzen.
-MailSendSetupIs3=If you have any questions on how to setup your SMTP server, you can ask to %s.
-YouCanAlsoUseSupervisorKeyword=You can also add the keyword <strong>__SUPERVISOREMAIL__</strong> to have email being sent to the supervisor of user (works only if an email is defined for this supervisor)
-NbOfTargetedContacts=Current number of targeted contact emails
+MailSendSetupIs=Der E-Mail-Versand wurde auf '%s' konfiguriert. Dieser Modus kann nicht für E-Mail-Kampagnen verwendet werden.
+MailSendSetupIs2=Sie müssen zuerst mit einem Admin-Konto im Menü %sStart - Einstellungen - EMails%s den Parameter <strong>'%s'</strong> auf den Modus '%s' ändern. Dann können Sie die Daten des SMTP-Servers von Ihrem Internetdienstanbieter eingeben und die E-Mail-Kampagnen-Funktion nutzen.
+MailSendSetupIs3=Bei Fragen über die Einrichtung Ihres SMTP-Servers, können Sie %s fragen.
+YouCanAlsoUseSupervisorKeyword=Sie können auch das Schlüsselwort <strong>__SUPERVISOREMAIL__</strong> um E-Mail haben, die an den Vorgesetzten des Benutzers gesendet hinzufügen (funktioniert nur, wenn eine E-Mail für dieses Supervisor definiert)
+NbOfTargetedContacts=Aktuelle Anzahl der E-Mails-Kontakte
diff --git a/htdocs/langs/de_DE/main.lang b/htdocs/langs/de_DE/main.lang
index b4e7985d55e759fbb4febb39f193fcd78879b782..f6bf1ec94e81a41f5281ea7ccfca0eaadd1e4e8e 100644
--- a/htdocs/langs/de_DE/main.lang
+++ b/htdocs/langs/de_DE/main.lang
@@ -26,7 +26,7 @@ FormatDateHourText=%d %B %Y %H:%M
 DatabaseConnection=Datenbankverbindung
 NoTranslation=Keine Übersetzung
 NoRecordFound=Kein Eintrag gefunden
-NoError=Es ist kein Fehler
+NoError=kein Fehler
 Error=Fehler
 ErrorFieldRequired=Feld '%s' ist erforderlich
 ErrorFieldFormat=Der Wert in Feld '%s' ist ungültig
@@ -46,7 +46,7 @@ ErrorFileNotUploaded=Die Datei konnte nicht hochgeladen werden. Stellen Sie sich
 ErrorInternalErrorDetected=Interner Fehler entdeckt
 ErrorNoRequestRan=Abfrage ist nicht erfolgreich gelaufen
 ErrorWrongHostParameter=Ungültige Host-Parameter
-ErrorYourCountryIsNotDefined=Ihr Land ist nicht definiert. Bitte vervollständigen Sie das Profil unter Home-Einstellungen-Bearbeiten.
+ErrorYourCountryIsNotDefined=Ihr Land ist nicht definiert. Bitte vervollständigen Sie das Profil unter Start - Einstellungen - Firma/Stiftung
 ErrorRecordIsUsedByChild=Kann diesen Eintrag nicht löschen. Dieser Eintrag wird von mindestens einem untegeordneten Datensatz verwendet.
 ErrorWrongValue=Ungültiger Wert
 ErrorWrongValueForParameterX=Ungültiger Wert für den Parameter %s
@@ -56,8 +56,8 @@ ErrorDuplicateField=Dieser Wert ist nicht einzigartig (schon vorhanden)
 ErrorSomeErrorWereFoundRollbackIsDone=Einige Fehler wurden gefunden. Änderungen rückgängig gemacht.
 ErrorConfigParameterNotDefined=Parameter <b>%s</b> innerhalb der Konfigurationsdatei <b>conf.php.</b> nicht definiert.
 ErrorCantLoadUserFromDolibarrDatabase=Kann Benutzer <b>%s</b> nicht aus der Systemdatenbank laden.
-ErrorNoVATRateDefinedForSellerCountry=Keine MwSt.-Sätze für Verkäuferland '%s' definiert.
-ErrorNoSocialContributionForSellerCountry=Für das Verkäuferland '%s' wurde kein Sozialbetrag definiert.
+ErrorNoVATRateDefinedForSellerCountry=Fehler, keine MwSt.-Sätze für Land  '%s' definiert.
+ErrorNoSocialContributionForSellerCountry=Fehler, für Land '%s' wurde kein Sozialbetrag definiert.
 ErrorFailedToSaveFile=Fehler beim Speichern der Datei.
 SetDate=Datum
 SelectDate=Wählen Sie ein Datum
@@ -69,19 +69,19 @@ FileUploaded=Datei wurde erfolgreich hochgeladen
 FileWasNotUploaded=Ein Dateianhang wurde gewählt aber noch nicht hochgeladen. Klicken Sie auf "Datei anhängen" um den Vorgang zu starten.
 NbOfEntries=Anzahl der Einträge
 GoToWikiHelpPage=Zur Wiki-Hilfeseite (Internetzugang erforderlich)
-GoToHelpPage=Zur Hilfeseite
+GoToHelpPage=Hilfe lesen
 RecordSaved=Eintrag gespeichert
 RecordDeleted=Eintrag gelöscht
 LevelOfFeature=Funktionslevel
 NotDefined=Nicht definiert
 DefinedAndHasThisValue=Mit diesem Wert definiert
-IsNotDefined=Nicht definiert
+IsNotDefined=undefiniert
 DolibarrInHttpAuthenticationSoPasswordUseless=Authentifizierungsmodus mit dem Wert <b>%s</b> in der Konfigurationsdatei <b>conf.php.</b> definiert.<br> Die Passwort-Datenbank ist dadurch eine externe und Änderungen in diesem Bereich haben unter Umständen keine Auswirkungen.
 Administrator=Administrator
 Undefined=Nicht definiert
 PasswordForgotten=Passwort vergessen?
 SeeAbove=Siehe oben
-HomeArea=Home
+HomeArea=Startseite
 LastConnexion=Letzte Verbindung
 PreviousConnexion=Letzte Anmeldung
 ConnectedOnMultiCompany=Mit Entität verbunden
@@ -102,13 +102,13 @@ NotePrivate=Anmerkung (privat)
 PrecisionUnitIsLimitedToXDecimals=Stückpreisgenauigkeit im System auf <b>%s</b> Dezimalstellen beschränkt.
 DoTest=Testen
 ToFilter=Filtern
-WarningYouHaveAtLeastOneTaskLate=Achtung: Mindestens ein Element hat sein Fälligkeitsdatum überschritten.
+WarningYouHaveAtLeastOneTaskLate=Achtung: Bei mindestens einem Element wurde die Toleranz der Zeitverzögerung überschritten.
 yes=ja
 Yes=Ja
 no=nein
 No=Nein
 All=Alle
-Home=Übersicht
+Home=Start
 Help=Hilfe
 OnlineHelp=Online-Hilfe
 PageWiki=Wiki-Seite
@@ -278,7 +278,7 @@ MonthOfDay=Tag des Monats
 HourShort=H
 MinuteShort=mn
 Rate=Rate
-UseLocalTax=Mit MwSt.
+UseLocalTax=inkl. MwSt.
 Bytes=Bytes
 KiloBytes=Kilobyte
 MegaBytes=Megabyte
@@ -321,7 +321,7 @@ PriceQtyHT=Preis für diese Menge (netto)
 PriceQtyMinHT=Mindestmengenpreis (netto)
 PriceQtyTTC=Preis für diese Menge (brutto)
 PriceQtyMinTTC=Mindestmengenpreis (brutto)
-Percentage=Prozentbetrag
+Percentage=Prozentangabe
 Total=Gesamt
 SubTotal=Zwischensumme
 TotalHTShort=Nettosumme
@@ -361,8 +361,8 @@ RefPayment=Zahlungs-Nr.
 CommercialProposalsShort=Angebote
 Comment=Kommentar
 Comments=Kommentare
-ActionsToDo=Zu erledigende Maßnahmen
-ActionsDone=Erledigte Maßnahmen
+ActionsToDo=unvollständige Ereignisse
+ActionsDone=Abgeschlossene Ereignisse
 ActionsToDoShort=Zu erledigen
 ActionsRunningshort=Begonnen
 ActionsDoneShort=Erledigt
@@ -375,10 +375,10 @@ CompanyFoundation=Firma/Stiftung
 ContactsForCompany=Ansprechpartner/Adressen dieses Partners
 ContactsAddressesForCompany=Ansprechpartner / Adressen zu diesem Partner
 AddressesForCompany=Adressen für den Partner
-ActionsOnCompany=Maßnahmen zu diesem Partner
+ActionsOnCompany=Ereignisse zu diesem Partner
 ActionsOnMember=Aktionen zu diesem Mitglied
-NActions=%s Maßnahmen
-NActionsLate=%s verspätete Maßnahmen
+NActions=%s Ereignisse
+NActionsLate=%s verspätet
 RequestAlreadyDone=Anfrage bereits bekannt
 Filter=Filter
 RemoveFilter=Filter entfernen
@@ -390,7 +390,7 @@ Duration=Dauer
 TotalDuration=Gesamtdauer
 Summary=Zusammenfassung
 MyBookmarks=Meine Lesezeichen
-OtherInformationsBoxes=Boxen mit Zusatzinformationen
+OtherInformationsBoxes=Meine Informationsboxen
 DolibarrBoard=Dolibarr Übersciht
 DolibarrStateBoard=Statistik
 DolibarrWorkBoard=Aufgabenübersicht
@@ -398,7 +398,7 @@ Available=Verfügbar
 NotYetAvailable=Noch nicht verfügbar
 NotAvailable=Nicht verfügbar
 Popularity=Beliebtheit
-Categories= Kategorien / Bezeichnungen 
+Categories= Schlagwörter/Kategorien
 Category=Kategorie/Bezeichnung
 By=Von
 From=Von
@@ -507,7 +507,7 @@ ReportDescription=Beschreibung
 Report=Bericht
 Keyword=Stichwort
 Legend=Legende
-FillTownFromZip=Stadt zur PLZ ergänzen
+FillTownFromZip=Ort zur PLZ ergänzen
 Fill=Eintragen
 Reset=Zurücksetzen
 ShowLog=Zeige Protokoll
@@ -515,7 +515,7 @@ File=Datei
 Files=Dateien
 NotAllowed=Nicht erlaubt
 ReadPermissionNotAllowed=Sie haben keine Leseberechtigung
-AmountInCurrency=Betrag in %s Währung
+AmountInCurrency=Betrag in %s
 Example=Beispiel
 Examples=Beispiele
 NoExample=Kein Beispiel
@@ -580,7 +580,7 @@ GoBack=Zurück
 CanBeModifiedIfOk=Änderung möglich falls gültig
 CanBeModifiedIfKo=Änderung möglich falls ungültig
 RecordModifiedSuccessfully=Wert erfolgreich geändert
-RecordsModified=%s Einträge geändert
+RecordsModified=%s Datensätze geändert
 AutomaticCode=Automatischer Code
 NotManaged=Nicht verwaltet
 FeatureDisabled=Funktion deaktiviert
@@ -607,7 +607,7 @@ MenuECM=Dokumente
 MenuAWStats=Statistiken
 MenuMembers=Mitglieder
 MenuAgendaGoogle=Google-Agenda
-ThisLimitIsDefinedInSetup=Gesetzte Dolibarr-Limits (Menü Home-Einstellungen-Sicherheit): %s Kb, PHP Limit: %s Kb
+ThisLimitIsDefinedInSetup=Gesetzte Dolibarr-Limits (Menü Start-Einstellungen-Sicherheit): %s Kb, PHP Limit: %s Kb
 NoFileFound=Keine Dokumente in diesem Verzeichnis
 CurrentUserLanguage=Aktuelle Benutzersprache
 CurrentTheme=Aktuelle Oberfläche
@@ -678,7 +678,7 @@ LinkedToSpecificUsers=Mit Kontakt verknüpft
 DeleteAFile=Datei löschen
 ConfirmDeleteAFile=Sind Sie sicher dass Sie diese Datei löschen möchten?
 NoResults=Keine Ergebnisse
-ModulesSystemTools=Modulwerkzeuge
+ModulesSystemTools=Module Werkzeuge
 Test=Testen
 Element=Element
 NoPhotoYet=Noch keine Bilder verfügbar
@@ -696,11 +696,11 @@ AccountCurrency=Kontowährung
 ViewPrivateNote=Zeige Notizen
 XMoreLines=%s Zeile(n) versteckt
 PublicUrl=Öffentliche URL
-AddBox=Box zufügen
+AddBox=Box anfügen
 SelectElementAndClickRefresh=Wählen Sie ein Element und clicken Sie Aktualisieren
 PrintFile=Drucke Datei %s
 ShowTransaction=Transaktion anzeigen
-GoIntoSetupToChangeLogo=Gehen Sie zu Übersicht - Einstellungen - Firma/Stiftung um das Logo zu ändern oder gehen Sie in Übersicht - Einstellungen - Anzeige um es zu verstecken.
+GoIntoSetupToChangeLogo=Gehen Sie zu Start - Einstellungen - Firma/Stiftung um das Logo zu ändern oder gehen Sie in Start -> Einstellungen -> Anzeige um es zu verstecken.
 Deny=ablehnen
 Denied=abgelehnt
 # Week day
diff --git a/htdocs/langs/de_DE/members.lang b/htdocs/langs/de_DE/members.lang
index c84ef7d5f205549777a47c84d5bf3184c106dc10..a9076f41d733a270785b6f0e0f08d0dd1e2db572 100644
--- a/htdocs/langs/de_DE/members.lang
+++ b/htdocs/langs/de_DE/members.lang
@@ -78,12 +78,12 @@ MembersTypeSetup=Mitgliedsarten einrichten
 NewSubscription=Neues Abonnement
 NewSubscriptionDesc=In diesem Formular können Sie Ihr Abonnement als neues Mitglied der Stiftung angeben. Wenn Sie Ihr Abonnement erneuern (falls Sie Mitglied sind) wollen, kontaktieren Sie bitte den Stiftungsrat per E-Mail %s.
 Subscription=Abonnement
-Subscriptions=Abonnements
+Subscriptions=Mitgliedschaften / Beiträge
 SubscriptionLate=Verspätet
 SubscriptionNotReceived=Abonnement nie erhalten
 SubscriptionLateShort=Verspätet
 SubscriptionNotReceivedShort=Nie erhalten
-ListOfSubscriptions=Liste der Abonnements
+ListOfSubscriptions=Liste der Beiträge
 SendCardByMail=Karte per E-Mail versenden
 AddMember=Mitglied erstellen
 NoTypeDefinedGoToSetup=Sie haben noch keine Mitgliedsarten definiert. Sie können dies unter Einstellungen-Mitgliedsarten vornehmen.
@@ -116,7 +116,7 @@ ExportDataset_member_1=Mitglieder und Abonnements
 ImportDataset_member_1=Mitglieder
 LastMembers=%s neueste Mitglieder
 LastMembersModified=%s zuletzt bearbeitete Mitglieder
-LastSubscriptionsModified=Zuletzt geändert %s Abonnements
+LastSubscriptionsModified=%s zuletzt bearbeitete Mitgliedschaften
 AttributeName=Attributname
 String=Zeichenkette
 Text=Text
@@ -154,7 +154,7 @@ HTPasswordExport=Datei erstellen für htpassword
 NoThirdPartyAssociatedToMember=Mit diesem Mitglied ist kein Partner verknüpft
 ThirdPartyDolibarr=Partner
 MembersAndSubscriptions= Mitglieder und Abonnements
-MoreActions=Ergänzende Erfassungsmaßnahmen
+MoreActions=Ergänzende Erfassungsereignisse
 MoreActionsOnSubscription=Ergänzende Maßnahmen standardmäßig vorgeschlagen bei der Aufnahme einer Subscription
 MoreActionBankDirect=Autom. einen Einzugsermächtigunsantrag zum Mitgliedskonto erstellen
 MoreActionBankViaInvoice=Autom. eine Rechnung zum Mitgliedskonto erstellen und Zahlung auf Rechnung setzen
@@ -186,7 +186,7 @@ Exports=Exports
 NewMemberbyWeb=Neues Mitgliede hinzugefügt, warte auf Genehmigung.
 NewMemberForm=Neues Mitgliederformular
 SubscriptionsStatistics=Statistik über Abonnements
-NbOfSubscriptions=Anzahl der Abonnements
+NbOfSubscriptions=Anzahl der Beiträge
 AmountOfSubscriptions=Beiträge der Abonnements
 TurnoverOrBudget=Umsatz (für eine Firma) oder Budget (für eine Stiftung)
 DefaultAmount=Standardbetrag für ein Abonnement
@@ -200,7 +200,7 @@ DOLIBARRFOUNDATION_PAYMENT_FORM=Um Ihre Beitragszahlung mit einer Banküberweisu
 ByProperties=nach Eigenschaften
 MembersStatisticsByProperties=Mitgliederstatistik nach Eigenschaften
 MembersByNature=Mitglieder von Natur aus
-VATToUseForSubscriptions=Mehrwertsteuersatz für Abonnements
+VATToUseForSubscriptions=Mehrwertsteuersatz für Mitgliedschaften
 NoVatOnSubscription=Kein MwSt. auf Mitgliedschaft.
-MEMBER_PAYONLINE_SENDEMAIL=Email to warn when Dolibarr receive a confirmation of a validated payment for subscription
-ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product used for subscription line into invoice: %s
+MEMBER_PAYONLINE_SENDEMAIL=E-Mail, um zu warnen, wenn Dolibarr erhält eine Bestätigung von einer   validierte Zahlung des Mitglieds
+ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Produkt/Leistung verwendet für den Beitrag in der Rechnungszeile: %s
diff --git a/htdocs/langs/de_DE/opensurvey.lang b/htdocs/langs/de_DE/opensurvey.lang
index a2f86189548990564c9c598b01a65053697aae13..90c245a5933ee67017166cbb09e78dbaf68abf72 100644
--- a/htdocs/langs/de_DE/opensurvey.lang
+++ b/htdocs/langs/de_DE/opensurvey.lang
@@ -22,7 +22,7 @@ TheBestChoices=Die besten Möglichkeiten sind momentan
 with=mit
 OpenSurveyHowTo=Wenn Sie an dieser Abstimmung teilnehmen möchten, nennen Sie Ihren Namen, wählen Sie die am besten passenden Werte und bestätigen mit dem Plus-Button am Ende der Zeile.
 CommentsOfVoters=Kommentare der Wähler
-ConfirmRemovalOfPoll=Bist Du sicher, dass Du diese Abstimmung (und alle Stimmen) entfernen wilst
+ConfirmRemovalOfPoll=Sind Sie sicher, dass Sie diese Umfrage löschen wollen (mit allen gespeicherten Stimmen)
 RemovePoll=Entferne Abstimmung
 UrlForSurvey=Öffentliche URL für einen Direktzugriff zur Umfrage
 PollOnChoice=Sie erstellen eine Umfrage mit einer Multiple Choice-Variante. Geben Sie zuerst alle möglichen Varianten für die Abstimmung ein:
@@ -63,4 +63,4 @@ ErrorOpenSurveyDateFormat=Das Datum muss das Format YYYY-MM-DD haben
 ErrorInsertingComment=Beim Eintragen Ihres Kommentars ist ein Fehler aufgetreten
 MoreChoices=Geben Sie weitere Wahlmöglichkeiten ein
 SurveyExpiredInfo=Diese Umfrage ist abgelaufen.
-EmailSomeoneVoted=%s has filled a line.\nYou can find your poll at the link: \n%s
+EmailSomeoneVoted=%s hat eine Zeile gefüllt. Sie können Ihre Umfrage unter dem Link  finden: %s
diff --git a/htdocs/langs/de_DE/orders.lang b/htdocs/langs/de_DE/orders.lang
index 9f09e0474a733fda6c397c55542bb6fcfb24bbd2..68dd670908c2f43f0a990b0353c79fcbfc6766a5 100644
--- a/htdocs/langs/de_DE/orders.lang
+++ b/htdocs/langs/de_DE/orders.lang
@@ -1,5 +1,5 @@
 # Dolibarr language file - Source file is en_US - orders
-OrdersArea=Kundenbestellungen-Übersicht
+OrdersArea=Kundenaufträge-Übersicht
 SuppliersOrdersArea=Übersicht Lieferantenbestellungen
 OrderCard=Bestell-Karte
 OrderId=Bestell-ID
@@ -15,12 +15,12 @@ MakeOrder=Erzeuge Bestellung
 SupplierOrder=Lieferantenbestellung
 SuppliersOrders=Lieferantenbestellungen
 SuppliersOrdersRunning=Aktuelle Lieferantenbestellungen
-CustomerOrder=Kundenbestellung
-CustomersOrders=Kundenbestellungen
-CustomersOrdersRunning=Aktuelle Kundenbestellungen
-CustomersOrdersAndOrdersLines=Kundenbestellungen und Bestellpositionen
+CustomerOrder=Kundenauftrag
+CustomersOrders=Kundenaufträge
+CustomersOrdersRunning=Aktuelle Kundenaufträge
+CustomersOrdersAndOrdersLines=Kundenaufträge und Auftragspositionen
 OrdersToValid=Freizugebende Bestellungen
-OrdersToBill=Gelieferte Kundenbestellungen
+OrdersToBill=Gelieferte Kundenaufträge
 OrdersInProcess=Bestellungen in Bearbeitung
 OrdersToProcess=Zu bearbeitende Bestellungen
 SuppliersOrdersToProcess=Lieferantenbestellung in Bearbeitung
@@ -56,8 +56,8 @@ ProductQtyInDraftOrWaitingApproved=Produktmenge in Bestellentwurf oder Bestellun
 DraftOrWaitingApproved=Entwurf oder genehmigt, noch nicht bestellt
 DraftOrWaitingShipped=Entwurf oder bestätigt, noch nicht versandt
 MenuOrdersToBill=Bestellverrechnung
-MenuOrdersToBill2=abrechenbare Bestellungen
-SearchOrder=Suche Bestellung
+MenuOrdersToBill2=abrechenbare Aufträge
+SearchOrder=Suche Auftrag / Bestellung
 SearchACustomerOrder=Kundenauftrag suchen
 SearchASupplierOrder=Suche Lieferantenbestellung
 ShipProduct=Produkt versenden
@@ -77,12 +77,12 @@ AddToDraftOrders=Zu Bestellentwurf hinzufügen
 ShowOrder=Zeige Bestellung
 NoOpenedOrders=Keine offenen Bestellungen
 NoOtherOpenedOrders=Keine offenen Bestellungen Anderer
-NoDraftOrders=Keine Bestellentwürfe
+NoDraftOrders=Keine Auftrags-Entwürfe
 OtherOrders=Bestellungen Anderer
-LastOrders=Letzte %s Kundenbestellungen
-LastCustomerOrders=Letzte %s Kundenbestellungen
+LastOrders=Letzte %s Kundenaufträge
+LastCustomerOrders=Letzte %s Kundenaufträge
 LastSupplierOrders=Letzte %s Lieferantenbestellungen
-LastModifiedOrders=%s zuletzt bearbeitete Bestellungen
+LastModifiedOrders=Die letzen %s bearbeiteten Bestellungen
 LastClosedOrders=%s zuletzt geschlossene Bestellungen
 AllOrders=Alle Bestellungen
 NbOfOrders=Anzahl der Bestellungen
@@ -90,32 +90,32 @@ OrdersStatistics=Bestellstatistik
 OrdersStatisticsSuppliers=Statistik Lieferantenbestellungen
 NumberOfOrdersByMonth=Anzahl der Bestellungen pro Monat
 AmountOfOrdersByMonthHT=Anzahl der Aufträge pro Monat (nach Steuern)
-ListOfOrders=Liste der Bestellungen
+ListOfOrders=Liste Aufträge
 CloseOrder=Bestellung schließen
 ConfirmCloseOrder=Möchten Sie diese Bestellung wirklich schließen? Nach ihrer Schließung kann eine Bestellung nur mehr in Rechnung gestellt werden.
 ConfirmCloseOrderIfSending=Möchten Sie diese Bestellung wirklich schließen? Tun Sie dies erst nachdem alle Versandvorgäng abgeschlossen wurden.
 ConfirmDeleteOrder=Möchten Sie diese Bestellung wirklich löschen?
 ConfirmValidateOrder=Möchten Sie diese Bestellung wirklich unter dem Namen <b>%s</b> freigeben?
 ConfirmUnvalidateOrder=Sind Sie sicher, die den Auftrag <b>%s</b> wieder in ein Angebot umzuwandeln?
-ConfirmCancelOrder=Möchten Sie diese Bestellung wirklich verwerfen?
+ConfirmCancelOrder=Möchten Sie diese Bestellung wirklich wirklich stornieren?
 ConfirmMakeOrder=Hiermit bestätigen Sie, diese Bestellung am <b>%s</b> persönlich angelegt zu haben.
 GenerateBill=Erzeuge Rechnung
 ClassifyShipped=Als geliefert markieren
 ClassifyBilled=Als verrechnet markieren
 ComptaCard=Buchhaltungskarte
-DraftOrders=Bestellentwürfe
+DraftOrders=Entwürfe
 RelatedOrders=Ähnliche Bestellungen
-RelatedCustomerOrders=Ähnliche Kundenbestellungen
+RelatedCustomerOrders=Ähnliche Kundenaufträge
 RelatedSupplierOrders=Ähnliche Lieferantenbestellungen
 OnProcessOrders=Bestellungen in Bearbeitung
 RefOrder=Bestell-Nr.
 RefCustomerOrder=Kunden-Bestellung-Nr.
 RefCustomerOrderShort=Kunden-BestellNr.
 SendOrderByMail=Bestellung per Post versenden
-ActionsOnOrder=Maßnahmen zu dieser Bestellung
+ActionsOnOrder=Ereignisse zu dieser Bestellung
 NoArticleOfTypeProduct=Keine Artikel vom Typ 'Produkt' und deshalb keine Versandkostenposition
 OrderMode=Bestellweise
-AuthorRequest=Authorenrechte anfordern
+AuthorRequest=Autor/Anforderer
 UseCustomerContactAsOrderRecipientIfExist=Anschrift des Partnerkontakts statt Partneradresse für die Zustellung verwenden
 RunningOrders=Offene Bestellungen
 UserWithApproveOrderGrant=Benutzer mit Berechtigung zur 'Bestellfreigabe'
diff --git a/htdocs/langs/de_DE/other.lang b/htdocs/langs/de_DE/other.lang
index f5deec7c0032309234713b4c0f2e66f1129736fa..e1102c2445f1bcd114a2f54e9c95ea28eda60066 100644
--- a/htdocs/langs/de_DE/other.lang
+++ b/htdocs/langs/de_DE/other.lang
@@ -2,7 +2,7 @@
 SecurityCode=Sicherheitsschlüssel
 Calendar=Kalender
 Tools=Werkzeuge
-ToolsDesc=Dieser Bereich ist bestimmt für die Gruppe "Verschiedenes" und nicht in andern Menüeinträgen verfügbar.<br /><br /> Diese Tools können Sie über das Menü auf dieser Seite erreichen.
+ToolsDesc=Diese Seite ist eine Zusammenstellung "Verschiedener Werkzeuge" die nicht in andere Menüeinträgen passen.<br><br> Diese Tools können Sie über dieses Menü auf dieser Seite erreichen.\n
 Birthday=Geburtstag
 BirthdayDate=Geburtstag
 DateToBirth=Geburtsdatum
@@ -12,16 +12,17 @@ Notify_FICHINTER_VALIDATE=Eingriff freigegeben
 Notify_FICHINTER_SENTBYMAIL=Service per E-Mail versendet
 Notify_BILL_VALIDATE=Rechnung freigegeben
 Notify_BILL_UNVALIDATE=Rechnung nicht freigegeben
+Notify_ORDER_SUPPLIER_VALIDATE=freigegebene Lieferantenbestellung
 Notify_ORDER_SUPPLIER_APPROVE=Lieferantenbestellung freigegeben
 Notify_ORDER_SUPPLIER_REFUSE=Lieferantenbestellung abgelehnt
-Notify_ORDER_VALIDATE=Kundenbestellung freigegeben
+Notify_ORDER_VALIDATE=Kundenauftrag freigegeben
 Notify_PROPAL_VALIDATE=Angebot freigegeben
 Notify_PROPAL_CLOSE_SIGNED=geschlossene Verkäufe  Signiert Angebote
 Notify_PROPAL_CLOSE_REFUSED=Geschlossene Verkäufe Angebot abgelehnt
 Notify_WITHDRAW_TRANSMIT=Transaktion zurückziehen
 Notify_WITHDRAW_CREDIT=Kreditkarten Rücknahme
 Notify_WITHDRAW_EMIT=Ausgabe aussetzen
-Notify_ORDER_SENTBYMAIL=Kundenbestellung mit E-Mail versendet
+Notify_ORDER_SENTBYMAIL=Kundenauftrag mit E-Mail versendet
 Notify_COMPANY_CREATE=Durch Dritte erstellt
 Notify_COMPANY_SENTBYMAIL=Von Partnern gesendete Mails
 Notify_PROPAL_SENTBYMAIL=Angebot mit E-Mail gesendet
@@ -48,7 +49,7 @@ Notify_TASK_CREATE=Aufgabe erstellt
 Notify_TASK_MODIFY=Aufgabe geändert
 Notify_TASK_DELETE=Aufgabe gelöscht
 SeeModuleSetup=Finden Sie im Modul-Setup %s
-NbOfAttachedFiles=Anzahl der angehängten Dateien/okumente
+NbOfAttachedFiles=Anzahl der angehängten Dateien/Dokumente
 TotalSizeOfAttachedFiles=Gesamtgröße der angehängten Dateien/Dokumente
 MaxSize=Maximalgröße
 AttachANewFile=Neue Datei/Dokument anhängen
@@ -82,14 +83,14 @@ ValidatedBy=Freigegeben von %s
 CanceledBy=Storniert von %s
 ClosedBy=Geschlossen von %s
 CreatedById=Erstellt von User-ID
-ModifiedById=letzte Änderung von User-ID
+ModifiedById=letzte Änderung von Benutzer-ID
 ValidatedById=Freigabe durch User-ID
 CanceledById=Storno durch User-ID
 ClosedById=geschlossen von User-ID
-CreatedByLogin=Erstellt von User
+CreatedByLogin=erstellt von Benutzername
 ModifiedByLogin=letzte Änderung durch User
 ValidatedByLogin=Freigabe durch User
-CanceledByLogin=Storno durch User
+CanceledByLogin=storniert durch Benutzername
 ClosedByLogin=geschlossen von User
 FileWasRemoved=Datei wurde entfernt
 DirWasRemoved=Verzeichnis wurde entfernt
diff --git a/htdocs/langs/de_DE/paybox.lang b/htdocs/langs/de_DE/paybox.lang
index fd8fcba4236fa187140c912a443a98b754f81f6e..7c5dc96fc420f3c82e97f1e912dd12801223919f 100644
--- a/htdocs/langs/de_DE/paybox.lang
+++ b/htdocs/langs/de_DE/paybox.lang
@@ -36,5 +36,5 @@ NewPayboxPaymentReceived=Neue Paybox-Zahlung erhalten
 NewPayboxPaymentFailed=Neue Paybox-Zahlungen probiert, aber fehlgeschlagen
 PAYBOX_PAYONLINE_SENDEMAIL=Status-Email nach einer Zahlung (erfolgreich oder nicht)
 PAYBOX_PBX_SITE=Wert für PayBox Seite
-PAYBOX_PBX_RANG=Value for PBX Rang
-PAYBOX_PBX_IDENTIFIANT=Value for PBX ID
+PAYBOX_PBX_RANG=Wert für PBX Rang
+PAYBOX_PBX_IDENTIFIANT=Wert für PBX ID
diff --git a/htdocs/langs/de_DE/printipp.lang b/htdocs/langs/de_DE/printipp.lang
index c4ce34ef962212f7afd5a2331730904da36ceb68..b2e884cbfdbb82fc589bf8547fb05bfc4c91ee7a 100644
--- a/htdocs/langs/de_DE/printipp.lang
+++ b/htdocs/langs/de_DE/printipp.lang
@@ -4,7 +4,7 @@ PrintIPPDesc=Dieses Modul fügt einen "Drucken"-Button zu, um Dokumente direkt z
 PRINTIPP_ENABLED="Direktdruck"-Symbol in Dokumentlisten anzeigen
 PRINTIPP_HOST=Druckserver
 PRINTIPP_PORT=Port
-PRINTIPP_USER=Login
+PRINTIPP_USER=Benutzername
 PRINTIPP_PASSWORD=Passwort
 NoPrinterFound=Keine Drucker gefunden (CUPS-Konfiguration prüfen)
 FileWasSentToPrinter=Datei %s zum Drucker gesandt
diff --git a/htdocs/langs/de_DE/products.lang b/htdocs/langs/de_DE/products.lang
index 5dc2f4c922951aaa70d667e365ff9c542fd453dc..1682366a0860388e2a05eb645cc8f3f43c17d15d 100644
--- a/htdocs/langs/de_DE/products.lang
+++ b/htdocs/langs/de_DE/products.lang
@@ -31,7 +31,7 @@ ProductsNotOnSell=Produkte weder für Ein- noch Verkauf
 ProductsOnSellAndOnBuy=Produkte für Ein- und Verkauf
 ServicesOnSell=Leistungen für Ein- oder Verkauf
 ServicesNotOnSell=Leistungen weder für Ein- noch Verkauf
-ServicesOnSellAndOnBuy=Services für Ein- und Verkauf
+ServicesOnSellAndOnBuy=Leistungen für Ein- und Verkauf
 InternalRef=Interne Referenz
 LastRecorded=Zuletzt erfasste, verfügbare Produkte/Leistungen
 LastRecordedProductsAndServices=%s zuletzt erfasste Produkte/Leistungen
diff --git a/htdocs/langs/de_DE/projects.lang b/htdocs/langs/de_DE/projects.lang
index 40549046770fade7cd8dbce8488223c0d3955d3f..9adc7b2d38050324da015050605f8c203886da90 100644
--- a/htdocs/langs/de_DE/projects.lang
+++ b/htdocs/langs/de_DE/projects.lang
@@ -14,7 +14,7 @@ MyTasksDesc=Diese Ansicht ist für Sie beschränkt auf Projekte oder Aufgaben be
 OnlyOpenedProject=Nur geöffnete Projekte sind sichtbar (Projekte im Status Entwurf oder geschlossenen sind nicht sichtbar).
 TasksPublicDesc=Diese Ansicht ist beschränkt auf Projekt und Aufgaben bei welchen Sie über Leserechte verfügen.
 TasksDesc=Diese Ansicht zeigt alle Projekte und Aufgaben (Ihre Benutzerberechtigungen berechtigt Sie alles zu sehen).
-AllTaskVisibleButEditIfYouAreAssigned=All tasks for such project are visible, but you can enter time only for task you are assigned on.
+AllTaskVisibleButEditIfYouAreAssigned=Alle Aufgaben des Projektes sind sichtbar, Sie können jedoch nur\ndie Zeit für Aufgaben die Ihnen zugewiesen sind, eingeben.
 ProjectsArea=Projektübersicht
 NewProject=Neues Projekt
 AddProject=Projekt erstellen
@@ -64,17 +64,17 @@ Progress=Fortschritt
 ProgressDeclared=Angegebener Fortschritt
 ProgressCalculated=Kalkulierter Fortschritt
 Time=Zeitaufwand
-ListProposalsAssociatedProject=Liste der mit diesem Projekt verbundenen Angebote
-ListOrdersAssociatedProject=Liste der mit diesem Projekt verbundenen Bestellungen
-ListInvoicesAssociatedProject=Liste der mit diesem Projekt verbundenen Rechnungen
-ListPredefinedInvoicesAssociatedProject=Liste der mit diesem Projekt verknüpften Rechnungsvorlagen
-ListSupplierOrdersAssociatedProject=Liste der mit diesem Projekt verbundenen Lieferantenbestellungen
-ListSupplierInvoicesAssociatedProject=Liste der mit diesem Projekt verbundenen Lieferantenrechnungen
-ListContractAssociatedProject=Liste der mit diesem Projekt verbundenen Verträge
-ListFichinterAssociatedProject=Liste der mit diesem Projekt verknüpften Services
-ListExpenseReportsAssociatedProject=Liste der mit diesem Projekt verknüpften Spesenabrechnungen
-ListDonationsAssociatedProject=Liste der mit diesem Projekt verbundenen Spenden
-ListActionsAssociatedProject=Liste der mit diesem Projekt verknüpften Maßnahmen
+ListProposalsAssociatedProject=Liste Angebote, die mit diesem Projekt verknüpft sind
+ListOrdersAssociatedProject=Liste Aufträge, die mit diesem Projekt verknüpft sind
+ListInvoicesAssociatedProject=Liste Rechnungen,  die mit diesem Projekt verknüpft sind
+ListPredefinedInvoicesAssociatedProject=Liste Rechnungsvorlagen, die mit diesem Projekt verknüpft sind
+ListSupplierOrdersAssociatedProject=Liste Lieferantenbestellungen, die mit diesem Projekt verknüpft sind
+ListSupplierInvoicesAssociatedProject=Liste Lieferantenrechnungen, die mit diesem Projekt verknüpft sind
+ListContractAssociatedProject=Liste Verträge, die mit diesem Projekt verknüpft sind
+ListFichinterAssociatedProject=Liste Eingriffe, die mit diesem Projekt verknüpft sind
+ListExpenseReportsAssociatedProject=Liste Spesenabrechnungen, die mit diesem Projekt verknüpft sind
+ListDonationsAssociatedProject=Liste Spenden, die mit diesem Projekt verknüpft sind
+ListActionsAssociatedProject=Liste Ereignisse, die mit diesem Projekt verknüpft sind
 ActivityOnProjectThisWeek=Projektaktivitäten dieser Woche
 ActivityOnProjectThisMonth=Projektaktivitäten dieses Monats
 ActivityOnProjectThisYear=Projektaktivitäten dieses Jahres
@@ -88,7 +88,7 @@ CloseAProject=Projekt schließen
 ConfirmCloseAProject=Möchten Sie dieses Projekt wirklich schließen?
 ReOpenAProject=Projekt öffnen
 ConfirmReOpenAProject=Möchten Sie dieses Projekt wirklich wiedereröffnen?
-ProjectContact=Projektkontakt
+ProjectContact=Projekt Kontakte
 ActionsOnProject=Projektaktionen
 YouAreNotContactOfProject=Sie sind diesem privaten Projekt nicht als Kontakt zugeordnet.
 DeleteATimeSpent=Lösche einen Zeitaufwand
@@ -136,7 +136,7 @@ PlannedWorkload=Geplante Auslastung
 PlannedWorkloadShort=Workload
 WorkloadOccupation=Workloadzuordnung
 ProjectReferers=Verknüpfte Objekte
-SearchAProject=Suchen Sie ein Projekt
+SearchAProject=Projekt suchen
 ProjectMustBeValidatedFirst=Projekt muss erst bestätigt werden
 ProjectDraft=Projekt-Entwürfe
 FirstAddRessourceToAllocateTime=Eine Ressource zuordnen, um Zeit festzulegen
diff --git a/htdocs/langs/de_DE/propal.lang b/htdocs/langs/de_DE/propal.lang
index a21c2a45e2129969b8e68dc3607b88eae3973625..948b89bb947ab6641cf03d3b091c282164735b35 100644
--- a/htdocs/langs/de_DE/propal.lang
+++ b/htdocs/langs/de_DE/propal.lang
@@ -5,7 +5,7 @@ ProposalShort=Angebot
 ProposalsDraft=Angebotsentwürfe
 ProposalDraft=Angebotsentwurf
 ProposalsOpened=Offene Angebote
-Prop=Angebot
+Prop=Angebote
 CommercialProposal=Angebot
 CommercialProposals=Angebote
 ProposalCard=Angebotskarte
@@ -28,7 +28,7 @@ SearchAProposal=Angebot suchen
 ProposalsStatistics=Angebotsstatistiken
 NumberOfProposalsByMonth=Anzahl pro Monat
 AmountOfProposalsByMonthHT=Betrag pro Monat (nach Steuern)
-NbOfProposals=Zahl der Angebote
+NbOfProposals=Anzahl der Angebote
 ShowPropal=Zeige Angebot
 PropalsDraft=Entwürfe
 PropalsOpened=Offen
@@ -50,11 +50,11 @@ PropalStatusBilledShort=Verrechnet
 PropalsToClose=Zu schließende Angebote
 PropalsToBill=Unterzeichnete Angebote zur Verrechnung
 ListOfProposals=Liste der Angebote
-ActionsOnPropal=Maßnahmen zum Angebot
+ActionsOnPropal=Ereignisse zum Angebot
 NoOpenedPropals=Keine offenen Angebote
 NoOtherOpenedPropals=Keine offene Angebote Dritter
 RefProposal=Angebots-Nr.
-SendPropalByMail=Angebot per E-Mail senden
+SendPropalByMail=Angebot per E-Mail versenden
 AssociatedDocuments=Dokumente verknüpft mit dem Angebot:
 ErrorCantOpenDir=Verzeichnis kann nicht geöffnet werden
 DatePropal=Angebotsdatum
diff --git a/htdocs/langs/de_DE/sendings.lang b/htdocs/langs/de_DE/sendings.lang
index 7de0830fadd756621e8693aa3d623b223dfd91db..567a1d8d6792d8538111821c3678fc840e45335f 100644
--- a/htdocs/langs/de_DE/sendings.lang
+++ b/htdocs/langs/de_DE/sendings.lang
@@ -46,16 +46,16 @@ CarriersArea=Spediteursübersicht
 NewCarrier=Neuer Spediteur
 ConfirmDeleteSending=Möchten Sie diese Lieferung wirklich löschen?
 ConfirmValidateSending=Möchten Sie diese Auslieferung <b>%s</b> wirklich freigeben?
-ConfirmCancelSending=Sind Sie sicher, dass Sie diese Auslieferung stornieren wollen?
+ConfirmCancelSending=Möchten Sie diese Lieferung wirklich wirklich stornieren?
 GenericTransport=Generischer Transport
 Enlevement=Vom Kunden erhalten
 DocumentModelSimple=Einfache Dokumentvorlage
 DocumentModelMerou=Merou A5-Modell
 WarningNoQtyLeftToSend=Achtung, keine Produkte für den Versand
 StatsOnShipmentsOnlyValidated=Versandstatistik (nur Freigegebene). Das Datum ist das der Freigabe (geplantes Lieferdatum ist nicht immer bekannt).
-DateDeliveryPlanned=Geplantes Zustellungsdatum
+DateDeliveryPlanned=Geplanter Liefertermin
 DateReceived=Datum der Zustellung
-SendShippingByEMail=Verand per E-Mail
+SendShippingByEMail=Versand per E-Mail
 SendShippingRef=Versendung der Auslieferung %s
 ActionsOnShipping=Hinweis zur Lieferung
 LinkToTrackYourPackage=Link zur Paket- bzw. Sendungsverfolgung
@@ -67,7 +67,7 @@ SendingRunning=Die Produktion von dem bestellten Kundenaufträge
 SuppliersReceiptRunning=Produkt aus Lieferantenbestellung
 ProductQtyInCustomersOrdersRunning=Produktmenge in geöffneter Kunden Bestellungen
 ProductQtyInSuppliersOrdersRunning=Produktmenge in geöffneter Lieferantenbestellungen
-ProductQtyInShipmentAlreadySent=Produktmenge aus geöffneter Kundenbestellung bereits versandt
+ProductQtyInShipmentAlreadySent=Produktmenge bereits in offenen Kundenaufträgen enthalten
 ProductQtyInSuppliersShipmentAlreadyRecevied=Produktmenge aus Lieferantenbestellung bereits erhalten
 
 # Sending methods
diff --git a/htdocs/langs/de_DE/stocks.lang b/htdocs/langs/de_DE/stocks.lang
index a9d5e75d4e7660d7829ad2aed239997e283afe6d..3053ba30ab0f35cc37b387304b5c13de510da082 100644
--- a/htdocs/langs/de_DE/stocks.lang
+++ b/htdocs/langs/de_DE/stocks.lang
@@ -16,7 +16,7 @@ CancelSending=Lieferung abbrechen
 DeleteSending=Lieferung löschen
 Stock=Warenbestand
 Stocks=Warenbestände
-StocksByLotSerial=Stock by lot/serial
+StocksByLotSerial=Lager nach  ChNr / SN
 Movement=Lagerbewegung
 Movements=Lagerbewegungen
 ErrorWarehouseRefRequired=Warenlager-Referenz erforderlich
@@ -70,7 +70,7 @@ StockLimitShort=Alarmschwelle
 StockLimit=Sicherungsbestand für autom. Benachrichtigung
 PhysicalStock=Physisches Warenlager
 RealStock=Realer Lagerbestand
-VirtualStock=Virtuelles Warenlager
+VirtualStock=Theoretisches Warenlager
 MininumStock=Mindestlagerstand
 StockUp=Aufstocken
 MininumStockShort=Sicherungsbestand
@@ -83,8 +83,8 @@ WarehousesAndProductsBatchDetail=Warenlager und Produkte (mit Detail per lot / s
 AverageUnitPricePMPShort=Gewichteter Durchschnitts-Einkaufspreis
 AverageUnitPricePMP=Gewichteter Durchschnitts-Eingangspreis
 SellPriceMin=Verkaufspreis
-EstimatedStockValueSellShort=Abverkaufsmenge
-EstimatedStockValueSell=Abverkaufsmenge
+EstimatedStockValueSellShort=Verkaufswert
+EstimatedStockValueSell=Lager Verkaufswert
 EstimatedStockValueShort=Eingangsmenge
 EstimatedStockValue=Eingangsmenge
 DeleteAWarehouse=Warenlager löschen
@@ -97,24 +97,24 @@ NoStockAction=Keine Vorratsänderung
 LastWaitingSupplierOrders=Bestellungen warten auf Wareneingang
 DesiredStock=gewünschter Lagerbestand
 StockToBuy=zu bestellen
-Replenishment=Nachschub
+Replenishment=Nachbestellung
 ReplenishmentOrders=Nachbestellungen
-VirtualDiffersFromPhysical=Je nach den Einstellungen zur Erhöhung/Verminderung des Lagerbestands können physischer und virtueller Bestand (realer + aktuelle Bestellungen) voneinander abweichen
-UseVirtualStockByDefault=Benutze virtuelle Lagerbestände anstatt des physischem Bestands für Nachschub
-UseVirtualStock=virtuelles Warenlager verwenden
+VirtualDiffersFromPhysical=Je nach den Einstellungen zur Erhöhung/Minderung des Lagerbestands können physischer und theoretischer Bestand (tatsächliche + laufende Bestellungen) voneinander abweichen
+UseVirtualStockByDefault=Nutze theoretische Lagerbestände anstatt des physischem Bestands für die Nachbestellungsfunktion
+UseVirtualStock=theoretisches Warenlager verwenden
 UsePhysicalStock=Physisches Warenlager verwenden
 CurentSelectionMode=Aktueller Auswahl-Modus
-CurentlyUsingVirtualStock=Virtuelles Warenlager
+CurentlyUsingVirtualStock=Theoretisches Warenlager
 CurentlyUsingPhysicalStock=Physisches Warenlager
-RuleForStockReplenishment=Regel für Lager-Nachschub
+RuleForStockReplenishment=Regeln für Nachbestellungen
 SelectProductWithNotNullQty=Wählen Sie mindestens ein Produkt mit einer Menge ungleich Null und einen Lieferanten
 AlertOnly= Nur Warnungen
 WarehouseForStockDecrease=Das Lager <b>%s</b> wird für Entnahme verwendet 
 WarehouseForStockIncrease=Das Lager <b>%s</b> wird für Wareneingang verwendet 
 ForThisWarehouse=Für dieses Lager
 ReplenishmentStatusDesc=Dies ist eine Liste aller Produkte, deren Lagerbestand unter dem Sollbestand liegt (bzw. unter der Alarmschwelle, wenn die Auswahlbox "Nur Alarm" gewählt ist) , die Ihnen Vorschläge für Lieferantenbestellungen liefert, um die Differenzen auszugleichen.
-ReplenishmentOrdersDesc=Das ist eine Liste aller geöffneten Lieferantenaufträge einschließlich vordefinierter Produkte. Nur geöffnete Bestellungen mit vordefinierten Produkten, so dass möglicherweise Lager betreffen, sind hier sichtbar.
-Replenishments=Nachschub
+ReplenishmentOrdersDesc=Das ist eine Liste aller offener Lieferantenbestellungen einschließlich vordefinierter Produkte. Nur geöffnete Bestellungen mit vordefinierten Produkten, sofern es das Lager betrifft, sind hier sichtbar.
+Replenishments=Nachbestellung
 NbOfProductBeforePeriod=Menge des Produkts %s im Lager vor der gewählten Periode (< %s)
 NbOfProductAfterPeriod=Menge des Produkts %s im Lager nach der gewählten Periode (> %s)
 MassMovement=Massenbewegung
@@ -133,7 +133,7 @@ IsInPackage=In Paket enthalten
 ShowWarehouse=Zeige Lager
 MovementCorrectStock=Lager korrigiert für Produkt %s
 MovementTransferStock=Umlagerung des Produkt %s in ein anderes Lager
-WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when "product lot" module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps.
-InventoryCodeShort=Inv./Mov. code
+WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Quelle Lager muss hier definiert werden wenn das "Produkt Posten"  Modul aktiviert ist. \nEs wird zum auflisten welche Posten/Serien verfügbar für Produkte die erforderliche Posten/Serien Daten für die Bewegung erforderlich.\nWenn Sie Produkte aus verschiedenen Lagern versenden, erstellen sie den Versand einfach in mehreren Schritten.
+InventoryCodeShort=Inv. / Mov. Kode
 NoPendingReceptionOnSupplierOrder=Keine anstehenden Eingänge aufgrund geöffneter Lieferantenbestellungen
-ThisSerialAlreadyExistWithDifferentDate=This lot/serial number (<strong>%s</strong>) already exists but with different eatby or sellby date (found <strong>%s</strong> but you enter <strong>%s</strong>).
+ThisSerialAlreadyExistWithDifferentDate=Diese Charge- / Seriennummer (<strong>%s</strong>) ist bereits vorhanden, jedoch mit unterschiedlichen Haltbarkeits- oder Verfallsdatum. \n(Gefunden: <strong>%s</strong> Erfasst: <strong>%s</strong>) 
diff --git a/htdocs/langs/de_DE/suppliers.lang b/htdocs/langs/de_DE/suppliers.lang
index cb02512e7390e7c5495e5865ec8ac82be7688a27..de2f1f6a9660ede3d044223deff491c97fb55f01 100644
--- a/htdocs/langs/de_DE/suppliers.lang
+++ b/htdocs/langs/de_DE/suppliers.lang
@@ -22,7 +22,7 @@ ReferenceSupplierIsAlreadyAssociatedWithAProduct=Für dieses Produkt existiert b
 NoRecordedSuppliers=Keine Lieferanten erfasst
 SupplierPayment=Lieferantenzahlung
 SuppliersArea=Lieferantenübersicht
-RefSupplierShort=Kurzbezeichnung Lieferant
+RefSupplierShort=Ref . Lieferant
 Availability=Verfügbarkeit
 ExportDataset_fournisseur_1=Lieferantenrechnungen und Positionen
 ExportDataset_fournisseur_2=Lieferantenrechnungen und Zahlungen
@@ -32,9 +32,9 @@ ConfirmApproveThisOrder=Möchten Sie diese Bestellung wirklich bestätigen <b>%s
 DenyingThisOrder=Bestellung ablehnen
 ConfirmDenyingThisOrder=Möchten Sie diese Bestellung wirklich ablehnen <b>%s</b> ?
 ConfirmCancelThisOrder=Möchten Sie diese Bestellung wirklich verwerfen <b>%s</b> ?
-AddCustomerOrder=Erzeuge Kundenbestellung
+AddCustomerOrder=Erzeuge Kundenauftrag
 AddCustomerInvoice=Kundenrechnung erstellen
-AddSupplierOrder=Erzeuge Lieferantenbestellung
+AddSupplierOrder=Lieferantenbestellung erstellen
 AddSupplierInvoice=Lieferantenrechnung erstellen
 ListOfSupplierProductForSupplier=Produkt- und Preisliste für Anbieter <b>%s</b>
 NoneOrBatchFileNeverRan=Keiner oder Batch-Job <b>%s</b> wurde nie ausgeführt
@@ -43,4 +43,4 @@ ListOfSupplierOrders=Liste der Lieferantenbestellungen
 MenuOrdersSupplierToBill=Zu berechnende Lieferantenbestellungen
 NbDaysToDelivery=Lieferverzug in Tagen
 DescNbDaysToDelivery=Max. Verspätungstoleranz in Tage für Lieferung
-UseDoubleApproval=Use double approval (the second approval can be done by any user with the dedicated permission)
+UseDoubleApproval=Verwenden Sie die doppelte Genehmigung (die zweite Genehmigung kann von jedem Benutzer mit einem speziellen Benutzerrecht durchgeführt werden)
diff --git a/htdocs/langs/de_DE/trips.lang b/htdocs/langs/de_DE/trips.lang
index f6a3d526efda9ca4135d26c07a698cbbff008754..aba3a7b80d32e6aeec5e715d28cfa2a41cc7c086 100644
--- a/htdocs/langs/de_DE/trips.lang
+++ b/htdocs/langs/de_DE/trips.lang
@@ -3,7 +3,7 @@ ExpenseReport=Spesenabrechnung
 ExpenseReports=Spesenabrechnungen Hinweis
 Trip=Spesenabrechnung
 Trips=Spesenabrechnungen
-TripsAndExpenses=Reise- und Spesenabrechnungen
+TripsAndExpenses=Reise- und Fahrtspesen
 TripsAndExpensesStatistics=Reise- und Spesen Statistik
 TripCard=Reisekosten Karte
 AddTrip=Reisekostenabrechnung erstellen
@@ -21,8 +21,8 @@ ExpensesArea=Spesenabrechnungen
 SearchATripAndExpense=Suche nach einer Spesenabrechnung
 ClassifyRefunded=Als 'rückerstattet' markieren
 ExpenseReportWaitingForApproval=Eine neue Reisekostenabrechnung ist zur Genehmigung vorgelegt worden
-ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s
-TripId=Id expense report
+ExpenseReportWaitingForApprovalMessage=Eine neue Kostenabrechnung wurde vorgelegt und steht zur Überprüfung an.\n- Benutzer: %s \n- Zeitraum: %s  \nKlicken Sie hier, um zu überprüfen: %s 
+TripId=Spesenabrechnung ID
 AnyOtherInThisListCanValidate=Person für die Validierung zu informieren .
 TripSociete=Partner
 TripSalarie=Mitarbeiter
diff --git a/htdocs/langs/de_DE/users.lang b/htdocs/langs/de_DE/users.lang
index b8c4133d5f0186968c18f3bf0f92d568399e0d49..d30044c41414a2dd1c95f9b4ca39373aa850a448 100644
--- a/htdocs/langs/de_DE/users.lang
+++ b/htdocs/langs/de_DE/users.lang
@@ -1,5 +1,5 @@
 # Dolibarr language file - Source file is en_US - users
-HRMArea=HRM-Bereich
+HRMArea=PM - Personalmanagment - Übersicht
 UserCard=Benutzerkarte
 ContactCard=Kontaktkarte
 GroupCard=Firmenverbundkarte
@@ -13,9 +13,9 @@ PasswordChangedTo=Neues Passwort: %s
 SubjectNewPassword=Ihr neues Passwort
 AvailableRights=Verfügbare Berechtigungen
 OwnedRights=Besitz Berechtigungen
-GroupRights=Gruppe Berechtigungen
+GroupRights=Gruppenberechtigungen
 UserRights=Benutzerberechtigungen
-UserGUISetup=Einstellungen Benutzeroberfläche
+UserGUISetup=Benutzeroberfläche
 DisableUser=Deaktiviere Benutzer
 DisableAUser=Einen Benutzer deaktivieren
 DeleteUser=Lösche Benutzer
@@ -36,8 +36,8 @@ ConfirmReinitPassword=Möchten Sie das Passwort für Benutzer <b>%s</b> wirklich
 ConfirmSendNewPassword=Möchten Sie für diesen Benutzer <b>%s</b> wirklich ein neues Passwort generieren und diesem per Mail zusenden?
 NewUser=Neuer Benutzer
 CreateUser=Benutzer erstellen
-SearchAGroup=Suche Gruppe
-SearchAUser=Suche Benutzer
+SearchAGroup=Gruppe suchen
+SearchAUser=Benutzer suchen
 LoginNotDefined=Benutzername ist nicht gesetzt.
 NameNotDefined=Name ist nicht gesetzt.
 ListOfUsers=Liste der Benutzer
@@ -55,7 +55,7 @@ NewGroup=Neue Gruppe
 CreateGroup=Gruppe erstellen
 RemoveFromGroup=Gruppenzuweisung entfernen
 PasswordChangedAndSentTo=Passwort geändert und an <b>%s</b> gesendet.
-PasswordChangeRequestSent=Anfrage auf eine Änderung das Passworts für <b>%s</b> an <b>%s</b> gesendet.
+PasswordChangeRequestSent=Kennwort-Änderungsanforderung für <b>%s</b> gesendet an <b>%s</b>.
 MenuUsersAndGroups=Benutzer & Gruppen
 LastGroupsCreated=%s zuletzt erstellte Gruppen
 LastUsersCreated=%s zuletzt erstellte Benutzer
@@ -69,7 +69,7 @@ ListOfUsersInGroup=Liste der Benutzer in dieser Gruppe
 ListOfGroupsForUser=Liste der Gruppen dieses Benutzers
 UsersToAdd=Dieser Gruppe zuzuweisende Benutzer
 GroupsToAdd=Diesem Benutzer zuzuweisende Gruppen
-NoLogin=Kein Login
+NoLogin=Keine Verbindung
 LinkToCompanyContact=Mit Partner/Kontakt verknüpfen
 LinkedToDolibarrMember=Mit Mitglied verknüpfen
 LinkedToDolibarrUser=Mit Systembenutzer verknüpft
@@ -113,7 +113,7 @@ YourRole=Ihre Rolle
 YourQuotaOfUsersIsReached=Ihr Kontingent aktiver Benutzer ist erreicht
 NbOfUsers=Anzahl der Benutzer
 DontDowngradeSuperAdmin=Nur ein SuperAdmin kann einen SuperAdmin downgraden
-HierarchicalResponsible=Aufseher
+HierarchicalResponsible=Vorgesetzter
 HierarchicView=Hierarchische Ansicht
 UseTypeFieldToChange=Nutzen sie das Feld "Typ" zum ändern
 OpenIDURL=OpenID URL
diff --git a/htdocs/langs/de_DE/withdrawals.lang b/htdocs/langs/de_DE/withdrawals.lang
index 2f2b5ce1cb4a95fa67369c0e47fd3060b87dc60c..e663476014f5f478ea6e28bccbf87d1741c60d92 100644
--- a/htdocs/langs/de_DE/withdrawals.lang
+++ b/htdocs/langs/de_DE/withdrawals.lang
@@ -1,9 +1,9 @@
 # Dolibarr language file - Source file is en_US - withdrawals
-StandingOrdersArea=Dauerauftragsübersicht
+StandingOrdersArea=Lastschriftverfahren SEPA Übersicht
 CustomersStandingOrdersArea=SEPA-Lastschriftverfahren-Übersicht
-StandingOrders=Daueraufträge
-StandingOrder=Dauerauftrag
-NewStandingOrder=Neuer Dauerauftrag
+StandingOrders=Lastschriftverfahren
+StandingOrder=Lastschriftverfahren
+NewStandingOrder=Neuer Abbucher
 StandingOrderToProcess=Zu bearbeiten
 StandingOrderProcessed=Bearbeitet
 Withdrawals=Abbuchungen
@@ -15,11 +15,11 @@ LastWithdrawalReceipts=%s neuste Abbuchungsbelege
 WithdrawedBills=Abgebuchte Rechnungen
 WithdrawalsLines=Abbuchungszeilen
 RequestStandingOrderToTreat=Anfrage für Dauerauftrage zu bearbeiten
-RequestStandingOrderTreated=Anfrage für Daueraufträge bearbeitet
-NotPossibleForThisStatusOfWithdrawReceiptORLine=Not yet possible. Withdraw status must be set to 'credited' before declaring reject on specific lines.
-CustomersStandingOrders=Daueraufträge (Kunden)
-CustomerStandingOrder=Dauerauftrag (Kunde)
-NbOfInvoiceToWithdraw=Nr. der abzubuchenden Rechnung
+RequestStandingOrderTreated=Anfrage für Lastschriftauftrag bearbeitet
+NotPossibleForThisStatusOfWithdrawReceiptORLine=Funktion nicht verfügbar. Der Status des Abbucher muss auf "durchgeführt"  gesetzt sein bevor eine Erklärung für die Ablehnung eingetragen werden können.
+CustomersStandingOrders=Kunden Lastschriftverfahren
+CustomerStandingOrder=Kunde Lastschriftverfahren
+NbOfInvoiceToWithdraw=Anzahl der abzubuchenden Rechnungen
 NbOfInvoiceToWithdrawWithInfo=Anzahl der Rechnungen mit Abbuchungsanfragen für Kunden mit einem hinterlegten Bankkonto
 InvoiceWaitingWithdraw=Rechnung warten auf Abbuchung
 AmountToWithdraw=Abbuchungsbetrag
@@ -73,25 +73,25 @@ NotifyCredit=Abbuchungsgutschrift
 NumeroNationalEmetter=Nat. Überweisernummer
 PleaseSelectCustomerBankBANToWithdraw=Wählen Sie das Kundenkonto für die Abbuchung
 WithBankUsingRIB=Bankkonten mit RIB
-WithBankUsingBANBIC=Bankkonten mit IBAN/BIC/SWIFT
+WithBankUsingBANBIC=Bankkonten mit IBAN/BIC
 BankToReceiveWithdraw=Bankkonto für Abbuchungen
 CreditDate=Am
 WithdrawalFileNotCapable=Abbuchungsformular für Ihr Land %s konnte nicht erstellt werden (Dieses Land wird nicht unterstützt).
 ShowWithdraw=Zeige Abbuchung
 IfInvoiceNeedOnWithdrawPaymentWontBeClosed=Wenn eine Rechnung mindestens eine noch zu bearbeitende Verbuchung vorweist, kann diese nicht als bezahlt markiert werden.
-DoStandingOrdersBeforePayments=This tab allows you to request a standing order. Once done, go into menu Bank->Withdrawal to manage the standing order. When standing order is closed, payment on invoice will be automatically recorded, and invoice closed if remainder to pay is null.
+DoStandingOrdersBeforePayments=In diesem Register können Sie ein  Lastschriftverfahren anfordern. Ist das erledigt, gehen Sie im Menü Finanzen auf das Menü neuer Abbucher um die Lastschriften zu verwalten. Wenn das Lastschriftverfahren abgeschlossen ist, wird die Zahlung bei Rechnung automatisch aufgezeichnet werden, und die Rechnung wird abgeschlossen, wenn kein Rechnungsbetrag mehr offen ist.
 WithdrawalFile=Datei abbuchen
 SetToStatusSent=Setze in Status "Datei versandt"
 ThisWillAlsoAddPaymentOnInvoice=Dies wird auch Zahlungen auf Rechnungen erstellen und diese als bezahlt markieren
 StatisticsByLineStatus=Statistiken nach Statuszeilen
 
 ### Notifications
-InfoCreditSubject=Zahlung des Dauerauftrags %s
-InfoCreditMessage=Der Dauerauftrag %s wurde von der Bank gebucht<br>Zahlungsdaten: %s
-InfoTransSubject=Übertragung des Dauerauftrags %s
-InfoTransMessage=Der Dauerauftrag %s wurde von %s %s an die Bank übertragen.<br><br>
+InfoCreditSubject=Zahlung Abbucher %s an die Bank
+InfoCreditMessage=Der Abbucher %s wurde von der Bank gebucht<br>Zahlungsdatum: %s
+InfoTransSubject=Übertragung des Abbucher %s zu Bank
+InfoTransMessage=Der Abbucher %s wurde von %s %s an die Bank übertragen.<br><br>
 InfoTransData=Betrag: %s<br>Verwendungszweck: %s<br>Datum: %s
 InfoFoot=Dies ist eine automatisierte Nachricht von Dolibarr
-InfoRejectSubject=Dauerauftrag abgelehnt
-InfoRejectMessage=Hallo,<br><br>der Dauerauftrag für die Rechnung %s von der Firma %s, mit einem Betrag von %s wurde von der Bank abgelehnt.<br><br>--<br>%s
+InfoRejectSubject=Lastschriftverfahren abgelehnt
+InfoRejectMessage=Hallo,<br><br>das Lastschriftverfahren für die Rechnung %s von der Firma %s, mit einem Betrag von %s wurde von der Bank abgelehnt.<br><br>--<br>%s
 ModeWarning=Echtzeit-Modus wurde nicht aktiviert, wir stoppen nach der Simulation.
diff --git a/htdocs/langs/de_DE/workflow.lang b/htdocs/langs/de_DE/workflow.lang
index 11644cd0e8699857a704801950e2f53162c759af..6fb285f3ad35c99f91ce2b179b23bef10a3f8fbb 100644
--- a/htdocs/langs/de_DE/workflow.lang
+++ b/htdocs/langs/de_DE/workflow.lang
@@ -2,10 +2,10 @@
 WorkflowSetup=Workflow Moduleinstellungen
 WorkflowDesc=Dieses Modul wurde entwickelt um zu verändern das Verhalten von automatischen Aktionen. Standardmäßig ist die Workflow geöffnet (Sie können alles in Ihrer Reihenfolge erledigen). Sie können automatische Vorgänge aktivieren, falls Sie für Sie von Interesse.
 ThereIsNoWorkflowToModify=Es gibt keine Vorgänge für das aktivierte Modul die Sie ändern können.
-descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Erstelle eine automatische Kundenbestellung, nachdem ein Angebot unterzeichnet wurde
+descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Erstelle einen Kundenauftrag automatisch, nachdem ein Angebot unterzeichnet wurde
 descWORKFLOW_PROPAL_AUTOCREATE_INVOICE=Erstelle eine automatische Kundenrechnung, nachdem ein Angebot unterzeichnet wurde
 descWORKFLOW_CONTRACT_AUTOCREATE_INVOICE=Erstselle eine automatische Kundenrechnung, nachdem ein Vertrag freigegeben wurde
-descWORKFLOW_ORDER_AUTOCREATE_INVOICE=Erstselle eine automatische Kundenrechnung, nachdem eine Kundenbestellung geschlossen wurde
+descWORKFLOW_ORDER_AUTOCREATE_INVOICE=Erstelle automatisch eine Kundenrechnung, nachdem ein Kundenauftrag geschlossen wurde
 descWORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL=Kennzeichne verknüpftes Angebot als in Rechnung gestellt, wenn der Kundenauftrag als bezahlt markiert wird
-descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Kennzeichne verknüpfte Kundenbestellung(en) als in Rechnung gestellt, wenn die Kundenrechnung als bezahlt markiert wird
-descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Kennzeichne verknüpfte Kundenbestellung(en) als in Rechnung gestellt, wenn die Kundenrechnung bestätigt wird
+descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Kennzeichne verknüpfte Kundenaufträge als verrechnet, wenn die Kundenrechnung als bezahlt markiert wird
+descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Kennzeichne verknüpfte Kundenaufträge als verrechnet, wenn die Kundenrechnung bestätigt wird
diff --git a/htdocs/langs/en_GB/categories.lang b/htdocs/langs/en_GB/categories.lang
new file mode 100644
index 0000000000000000000000000000000000000000..6173fc601e656cce7cce5c1aba6ea019e91f232e
--- /dev/null
+++ b/htdocs/langs/en_GB/categories.lang
@@ -0,0 +1,2 @@
+# Dolibarr language file - Source file is en_US - categories
+CatContactList=List of contact tags/categories and contact
diff --git a/htdocs/langs/en_GB/sendings.lang b/htdocs/langs/en_GB/sendings.lang
new file mode 100644
index 0000000000000000000000000000000000000000..cceb71550e222d827bb5d40ba8f8e5e6192dbdaf
--- /dev/null
+++ b/htdocs/langs/en_GB/sendings.lang
@@ -0,0 +1,2 @@
+# Dolibarr language file - Source file is en_US - sendings
+DateDeliveryPlanned=Planed date of delivery
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index 7e098787fd014c6d55c43183a402efade29a89ec..94bc57e705057a491d14c034c1fda37e9afe6b44 100755
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -149,7 +149,6 @@ MenuForUsers=Menu for users
 LangFile=.lang file
 System=System
 SystemInfo=System information
-SystemTools=System tools
 SystemToolsArea=System tools area
 SystemToolsAreaDesc=This area provides administration features. Use the menu to choose the feature you're looking for.
 Purge=Purge
@@ -232,8 +231,8 @@ Security=Security
 Passwords=Passwords
 DoNotStoreClearPassword=Do no store clear passwords in database but store only encrypted value (Activated recommended)
 MainDbPasswordFileConfEncrypted=Database password encrypted in conf.php (Activated recommended)
-InstrucToEncodePass=To have password encoded into the <b>conf.php</b> file, replace the line <br><b>$dolibarr_main_db_pass="..."</b><br>by<br><b>$dolibarr_main_db_pass="crypted:%s"</b>
-InstrucToClearPass=To have password decoded (clear) into the <b>conf.php</b> file, replace the line <br><b>$dolibarr_main_db_pass="crypted:..."</b><br>by<br><b>$dolibarr_main_db_pass="%s"</b>
+InstrucToEncodePass=To have password encoded into the <b>conf.php</b> file, replace the line <br><b>$dolibarr_main_db_pass="...";</b><br>by<br><b>$dolibarr_main_db_pass="crypted:%s";</b>
+InstrucToClearPass=To have password decoded (clear) into the <b>conf.php</b> file, replace the line <br><b>$dolibarr_main_db_pass="crypted:...";</b><br>by<br><b>$dolibarr_main_db_pass="%s";</b>
 ProtectAndEncryptPdfFiles=Protection of generated pdf files (Activated NOT recommended, breaks mass pdf generation)
 ProtectAndEncryptPdfFilesDesc=Protection of a PDF document keeps it available to read and print with any PDF browser. However, editing and copying is not possible anymore. Note that using this feature make building of a global cumulated pdf not working (like unpaid invoices).
 Feature=Feature
@@ -524,10 +523,10 @@ Module2400Name=Agenda
 Module2400Desc=Events/tasks and agenda management
 Module2500Name=Electronic Content Management
 Module2500Desc=Save and share documents
-Module2600Name=WebServices
-Module2600Desc=Enable the Dolibarr web services server
-Module2610Name=Api
-Module2610Desc=Enable the Dolibarr REST API
+Module2600Name=API services (Web services SOAP)
+Module2600Desc=Enable the Dolibarr SOAP server providing API services
+Module2610Name=API services (Web services REST)
+Module2610Desc=Enable the Dolibarr REST server providing API services
 Module2650Name=WebServices (client)
 Module2650Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Supplier orders supported only for the moment) 
 Module2700Name=Gravatar
@@ -940,6 +939,7 @@ CompanyZip=Zip
 CompanyTown=Town
 CompanyCountry=Country
 CompanyCurrency=Main currency
+CompanyObject=Object of the company
 Logo=Logo
 DoNotShow=Do not show
 DoNotSuggestPaymentMode=Do not suggest
@@ -1638,3 +1638,6 @@ SomethingMakeInstallFromWebNotPossible=Installation of external module is not po
 SomethingMakeInstallFromWebNotPossible2=For this reason, process to upgrade described here is only manual steps a privileged user can do. 
 InstallModuleFromWebHasBeenDisabledByFile=Install of external module from application has been disabled by your administrator. You must ask him to remove the file <strong>%s</strong> to allow this feature.
 ConfFileMuseContainCustom=Installing an external module from application save the module files into directory <strong>%s</strong>. To have this directory processed by Dolibarr, you must setup your <strong>conf/conf.php</strong> to have option<br>- <strong>$dolibarr_main_url_root_alt</strong> enabled to value <strong>$dolibarr_main_url_root_alt="/custom"</strong><br>- <strong>$dolibarr_main_document_root_alt</strong> enabled to value <strong>"%s/custom"</strong> 
+HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over
+PressF5AfterChangingThis=Press F5 on keyboard after changing this value to have it effective
+NotSupportedByAllThemes=Will works with eldy theme but is not supported by all themes
diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang
index e700271368d6203b4d070a76336a8a0c2a6045ec..a0626c1087f1c71759b01218f77ab6720e7dec21 100644
--- a/htdocs/langs/en_US/companies.lang
+++ b/htdocs/langs/en_US/companies.lang
@@ -410,10 +410,10 @@ OutstandingBillReached=Reached max. for outstanding bill
 MonkeyNumRefModelDesc=Return numero with format %syymm-nnnn for customer code and %syymm-nnnn for supplier code where yy is year, mm is month and nnnn is a sequence with no break and no return to 0.
 LeopardNumRefModelDesc=The code is free. This code can be modified at any time.
 ManagingDirectors=Manager(s) name (CEO, director, president...)
-SearchThirdparty=Search thirdparty
+SearchThirdparty=Search third party
 SearchContact=Search contact
-MergeOriginThirdparty=Origin thirdparty
-MergeThirdparties=Merge thirdparties
-ConfirmMergeThirdparties=Are you sure you want to merge this thirdparty? All linked objects (invoices...) will be linked with the destination thirdparty
+MergeOriginThirdparty=Duplicate third party (third party you want to delete)
+MergeThirdparties=Merge third parties
+ConfirmMergeThirdparties=Are you sure you want to merge this third party into the current one ? All linked objects (invoices, orders, ...) will be moved to current third party so you will be able to delete the duplicate one.
 ThirdpartiesMergeSuccess=Thirdparties have been merged
 ErrorThirdpartiesMerge=There was an error when deleting the thirdparties. Please check the log. Changes have been reverted.
\ No newline at end of file
diff --git a/htdocs/langs/en_US/cron.lang b/htdocs/langs/en_US/cron.lang
index 5d7abf732ab4a744c257a624d92a281fff08745c..ff511f00d275f5e606f61e31b16e5972dbb8c8a3 100644
--- a/htdocs/langs/en_US/cron.lang
+++ b/htdocs/langs/en_US/cron.lang
@@ -4,10 +4,10 @@ About = About
 CronAbout = About Cron
 CronAboutPage = Cron about page
 # Right
-Permission23101 = Read Scheduled task
-Permission23102 = Create/update Scheduled task
-Permission23103 = Delete Scheduled task
-Permission23104 = Execute Scheduled task
+Permission23101 = Read Scheduled job
+Permission23102 = Create/update Scheduled job
+Permission23103 = Delete Scheduled job
+Permission23104 = Execute Scheduled job
 # Admin
 CronSetup= Scheduled job management setup
 URLToLaunchCronJobs=URL to check and launch cron jobs if required
@@ -55,9 +55,9 @@ CronEach=Every
 JobFinished=Job launched and finished
 #Page card
 CronAdd= Add jobs
-CronHourStart= Start hour and date of task
-CronEvery= And execute task each
-CronObject= Instance/Object to create
+CronHourStart= Start hour and date of job
+CronEvery=Execute job each
+CronObject=Instance/Object to create
 CronArgs=Parameters
 CronSaveSucess=Save succesfully
 CronNote=Comment
diff --git a/htdocs/langs/en_US/languages.lang b/htdocs/langs/en_US/languages.lang
index d20aab00146c591c4ec9bf5678a42b92c44e619b..aaeeb235544421208b68e18db0f0666f563ace40 100644
--- a/htdocs/langs/en_US/languages.lang
+++ b/htdocs/langs/en_US/languages.lang
@@ -2,6 +2,7 @@
 
 Language_ar_AR=Arabic
 Language_ar_SA=Arabic
+Language_bn_BD=Bengali
 Language_bg_BG=Bulgarian
 Language_bs_BA=Bosnian
 Language_ca_ES=Catalan
@@ -21,9 +22,10 @@ Language_en_SA=English (Saudi Arabia)
 Language_en_US=English (United States)
 Language_en_ZA=English (South Africa)
 Language_es_ES=Spanish
-Language_es_DO=Spanish (Dominican Republic)
 Language_es_AR=Spanish (Argentina)
 Language_es_CL=Spanish (Chile)
+Language_es_CO=Spanish (Colombia)
+Language_es_DO=Spanish (Dominican Republic)
 Language_es_HN=Spanish (Honduras)
 Language_es_MX=Spanish (Mexico)
 Language_es_PY=Spanish (Paraguay)
@@ -45,7 +47,10 @@ Language_id_ID=Indonesian
 Language_is_IS=Icelandic
 Language_it_IT=Italian
 Language_ja_JP=Japanese
+Language_ka_GE=Georgian
+Language_kn_IN=Kannada
 Language_ko_KR=Korean
+Language_lo_LA=Lao
 Language_lt_LT=Lithuanian
 Language_lv_LV=Latvian
 Language_mk_MK=Macedonian
@@ -64,6 +69,7 @@ Language_sv_SV=Swedish
 Language_sv_SE=Swedish
 Language_sq_AL=Albanian
 Language_sk_SK=Slovakian
+Language_sw_SW=Kiswahili
 Language_th_TH=Thai
 Language_uk_UA=Ukrainian
 Language_uz_UZ=Uzbek
diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang
index 0d7377b89e44a6231409cbaaaac8b555b8e3624c..ae766c7a14788a2571f84ea533a0f6a396e70fe0 100644
--- a/htdocs/langs/en_US/main.lang
+++ b/htdocs/langs/en_US/main.lang
@@ -413,6 +413,8 @@ Qty=Qty
 ChangedBy=Changed by
 ApprovedBy=Approved by
 ApprovedBy2=Approved by (second approval)
+Approved=Approved
+Refused=Refused
 ReCalculate=Recalculate
 ResultOk=Success
 ResultKo=Failure
@@ -678,6 +680,7 @@ LinkedToSpecificUsers=Linked to a particular user contact
 DeleteAFile=Delete a file
 ConfirmDeleteAFile=Are you sure you want to delete file
 NoResults=No results
+SystemTools=System tools
 ModulesSystemTools=Modules tools
 Test=Test
 Element=Element
@@ -704,6 +707,8 @@ GoIntoSetupToChangeLogo=Go into Home - Setup - Company to change logo or go into
 Deny=Deny
 Denied=Denied
 ListOfTemplates=List of templates
+Genderman=Man
+Genderwoman=Woman
 # Week day
 Monday=Monday
 Tuesday=Tuesday
diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang
index d7fba120cb3e624872ea403ec5ea8ddc62fa3871..1d7ece0c98de824b7e96399f6e3f40c832a9fed7 100644
--- a/htdocs/langs/en_US/products.lang
+++ b/htdocs/langs/en_US/products.lang
@@ -294,3 +294,4 @@ LastUpdated=Last updated
 CorrectlyUpdated=Correctly updated
 PropalMergePdfProductActualFile=Files use to add into PDF Azur are/is 
 PropalMergePdfProductChooseFile=Select PDF files
+IncludingProductWithTag=Including product with tag
\ No newline at end of file
diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang
index 18c9b82de965f5d7db5bf802e8d71aef237358f8..25db18df4744e9d4b9929612671c881ffee3d53b 100644
--- a/htdocs/langs/en_US/projects.lang
+++ b/htdocs/langs/en_US/projects.lang
@@ -14,7 +14,8 @@ MyTasksDesc=This view is limited to projects or tasks you are a contact for (wha
 OnlyOpenedProject=Only open projects are visible (projects in draft or closed status are not visible).
 TasksPublicDesc=This view presents all projects and tasks you are allowed to read.
 TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything).
-AllTaskVisibleButEditIfYouAreAssigned=All tasks for such project are visible, but you can enter time only for task you are assigned on.
+AllTaskVisibleButEditIfYouAreAssigned=All tasks for such project are visible, but you can enter time only for task you are assigned on. Assign task to you if you want to enter time on it.
+OnlyYourTaskAreVisible=Only tasks you are assigned on are visible. Assign task to you if you want to enter time on it.
 ProjectsArea=Projects area
 NewProject=New project
 AddProject=Create project
@@ -75,6 +76,7 @@ ListFichinterAssociatedProject=List of interventions associated with the project
 ListExpenseReportsAssociatedProject=List of expense reports associated with the project
 ListDonationsAssociatedProject=List of donations associated with the project
 ListActionsAssociatedProject=List of events associated with the project
+ListTaskTimeUserProject=List of time consumed on tasks of project
 ActivityOnProjectThisWeek=Activity on project this week
 ActivityOnProjectThisMonth=Activity on project this month
 ActivityOnProjectThisYear=Activity on project this year
@@ -145,4 +147,8 @@ InputPerWeek=Input per week
 InputPerAction=Input per action
 TimeAlreadyRecorded=Time spent already recorded for this task/day and user %s
 ProjectsWithThisUserAsContact=Projects with this user as contact
-TasksWithThisUserAsContact=Tasks assigned to this user
\ No newline at end of file
+TasksWithThisUserAsContact=Tasks assigned to this user
+ResourceNotAssignedToProject=Not assigned to project
+ResourceNotAssignedToTask=Not assigned to task
+AssignTaskToMe=Assign task to me
+AssignTask=Assign
\ No newline at end of file
diff --git a/htdocs/langs/en_US/salaries.lang b/htdocs/langs/en_US/salaries.lang
index 0f5f636a3f3f23b311c17e8ced1745393409c05f..953a9c7540cbb06d6209140b32aaa0d23261e324 100644
--- a/htdocs/langs/en_US/salaries.lang
+++ b/htdocs/langs/en_US/salaries.lang
@@ -10,4 +10,6 @@ SalariesPayments=Salaries payments
 ShowSalaryPayment=Show salary payment
 THM=Average hourly price
 TJM=Average daily price
-CurrentSalary=Current salary
\ No newline at end of file
+CurrentSalary=Current salary
+THMDescription=This value may be used to calculate cost of time consumed on a project entered by users if module project is used
+TJMDescription=This value is currently as information only and is not used for any calculation
diff --git a/htdocs/langs/en_US/users.lang b/htdocs/langs/en_US/users.lang
index 9670d002be6648d2fae971f64ac1af1b402b5fdd..e6764df49a29929057e371a4d7362f0820d59aca 100644
--- a/htdocs/langs/en_US/users.lang
+++ b/htdocs/langs/en_US/users.lang
@@ -57,6 +57,7 @@ RemoveFromGroup=Remove from group
 PasswordChangedAndSentTo=Password changed and sent to <b>%s</b>.
 PasswordChangeRequestSent=Request to change password for <b>%s</b> sent to <b>%s</b>.
 MenuUsersAndGroups=Users & Groups
+MenuMyUserCard=My user card
 LastGroupsCreated=Last %s created groups
 LastUsersCreated=Last %s users created
 ShowGroup=Show group
diff --git a/htdocs/langs/en_US/withdrawals.lang b/htdocs/langs/en_US/withdrawals.lang
index 7894351c01f68c0e43eb5f40f5eb616f7c3ff3ac..40aaf476f728af3c63bf04e112f889f33a699a8b 100644
--- a/htdocs/langs/en_US/withdrawals.lang
+++ b/htdocs/langs/en_US/withdrawals.lang
@@ -84,6 +84,9 @@ WithdrawalFile=Withdrawal file
 SetToStatusSent=Set to status "File Sent"
 ThisWillAlsoAddPaymentOnInvoice=This will also apply payments to invoices and will classify them as "Paid"
 StatisticsByLineStatus=Statistics by status of lines
+RUM=RUM
+RUMWillBeGenerated=RUM number will be generated once bank account information are saved
+WithdrawMode=Withdraw mode (FRST or RECUR)
 
 ### Notifications 
 InfoCreditSubject=Payment of standing order %s by the bank
diff --git a/htdocs/langs/es_AR/categories.lang b/htdocs/langs/es_AR/categories.lang
new file mode 100644
index 0000000000000000000000000000000000000000..6173fc601e656cce7cce5c1aba6ea019e91f232e
--- /dev/null
+++ b/htdocs/langs/es_AR/categories.lang
@@ -0,0 +1,2 @@
+# Dolibarr language file - Source file is en_US - categories
+CatContactList=List of contact tags/categories and contact
diff --git a/htdocs/langs/es_AR/sendings.lang b/htdocs/langs/es_AR/sendings.lang
new file mode 100644
index 0000000000000000000000000000000000000000..cceb71550e222d827bb5d40ba8f8e5e6192dbdaf
--- /dev/null
+++ b/htdocs/langs/es_AR/sendings.lang
@@ -0,0 +1,2 @@
+# Dolibarr language file - Source file is en_US - sendings
+DateDeliveryPlanned=Planed date of delivery
diff --git a/htdocs/langs/es_CO/categories.lang b/htdocs/langs/es_CO/categories.lang
new file mode 100644
index 0000000000000000000000000000000000000000..6173fc601e656cce7cce5c1aba6ea019e91f232e
--- /dev/null
+++ b/htdocs/langs/es_CO/categories.lang
@@ -0,0 +1,2 @@
+# Dolibarr language file - Source file is en_US - categories
+CatContactList=List of contact tags/categories and contact
diff --git a/htdocs/langs/es_CO/sendings.lang b/htdocs/langs/es_CO/sendings.lang
new file mode 100644
index 0000000000000000000000000000000000000000..cceb71550e222d827bb5d40ba8f8e5e6192dbdaf
--- /dev/null
+++ b/htdocs/langs/es_CO/sendings.lang
@@ -0,0 +1,2 @@
+# Dolibarr language file - Source file is en_US - sendings
+DateDeliveryPlanned=Planed date of delivery
diff --git a/htdocs/langs/es_MX/admin.lang b/htdocs/langs/es_MX/admin.lang
index 8161a7a8e7c525bc591f6e7407afdf032c3d1aae..cc346f1b38c6e304b1814ba21cc4f86a287a9c85 100644
--- a/htdocs/langs/es_MX/admin.lang
+++ b/htdocs/langs/es_MX/admin.lang
@@ -1,6 +1,18 @@
 # Dolibarr language file - Source file is en_US - admin
-Module30Name=Facturas y notas de crédito
-Module30Desc=Gestión de facturas y notas de crédito a clientes. Gestión facturas de proveedores
-BillsNumberingModule=Módulo de numeración de facturas y notas de crédito
-CreditNoteSetup=Configuración del módulo notas de crédito
-CreditNotePDFModules=Modelo de documento de notas de crédito
+AntiVirusCommandExample=Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan
+AntiVirusParamExample=Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib"
+UnpackPackageInDolibarrRoot=Unpack package file into directory dedicated to external modules: <b>%s</b>
+ExampleOfDirectoriesForModelGen=Examples of syntax:<br>c:\\mydir<br>/home/mydir<br>DOL_DATA_ROOT/ecm/ecmdir
+LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:<br>1 : local tax apply on products and services without vat (localtax is calculated on amount without tax)<br>2 : local tax apply on products and services including vat (localtax is calculated on amount + main tax)<br>3 : local tax apply on products without vat (localtax is calculated on amount without tax)<br>4 : local tax apply on products including vat (vat is calculated on amount + main vat)<br>5 : local tax apply on services without vat (localtax is calculated on amount without tax)<br>6 : local tax apply on services including vat (localtax is calculated on amount + tax)
+Module1780Desc=Create tags/category (products, customers, suppliers, contacts or members)
+Module39000Name=Product lot
+Module39000Desc=Lot or serial number, eat-by and sell-by date management on products
+MAIN_ROUNDING_RULE_TOT=Size of rounding range (for rare countries where rounding is done on something else than base 10)
+BackupDesc2=Save content of documents directory (<b>%s</b>) that contains all uploaded and generated files (you can make a zip for example).
+BackupDesc3=Save content of your database (<b>%s</b>) into a dump file. For this, you can use following assistant.
+RestoreDesc2=Restore archive file (zip file for example) of documents directory to extract tree of files in documents directory of a new Dolibarr installation or into this current documents directoy (<b>%s</b>).
+RestoreDesc3=Restore the data, from a backup dump file, into the database of the new Dolibarr installation or into the database of this current installation (<b>%s</b>). Warning, once restore is finished, you must use a login/password, that existed when backup was made, to connect again. To restore a backup database into this current installation, you can follow this assistant.
+NotificationsDesc=EMails notifications feature allows you to silently send automatic mail, for some Dolibarr events. Targets of notifications can be defined:<br>* per third parties contacts (customers or suppliers), one contact at time.<br>* or by setting global target email addresses in module setup page.
+CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock).
+StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with lot management
+MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application)
diff --git a/htdocs/langs/es_MX/banks.lang b/htdocs/langs/es_MX/banks.lang
index a5411981c4b7b4144252b282386c367c9fd74825..e58cf5e72b5b543b3b197112ab0728bd9d5e9edf 100644
--- a/htdocs/langs/es_MX/banks.lang
+++ b/htdocs/langs/es_MX/banks.lang
@@ -1,2 +1,2 @@
 # Dolibarr language file - Source file is en_US - banks
-BankAccountDomiciliation=Tarjeta
+InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD
diff --git a/htdocs/langs/es_MX/bills.lang b/htdocs/langs/es_MX/bills.lang
index e62583d9e733b92219ca9764c362521644b858a0..f1e67a676c3b8f859eeb97a19b2077c9f770bd27 100644
--- a/htdocs/langs/es_MX/bills.lang
+++ b/htdocs/langs/es_MX/bills.lang
@@ -1,24 +1,2 @@
 # Dolibarr language file - Source file is en_US - bills
-InvoiceAvoir=Nota de crédito
-InvoiceAvoirAsk=Nota de crédito para corregir la factura
-InvoiceAvoirDesc=La <b>nota de crédito</b> es una factura negativa destinada a compensar un importe de factura que difiere del importe realmente pagado (por haber pagado de más o por devolución de productos, por ejemplo).
-InvoiceHasAvoir=Corregida por una o más notas de crédito
-ConfirmConvertToReduc=¿Quiere convertir esta nota de crédito en una reducción futura?<br>El importe de esta nota de crédito se almacenará para este cliente. Podrá utilizarse para reducir el importe de una próxima factura del cliente.
-AddBill=Crear factura o nota de crédito
-EnterPaymentDueToCustomer=Realizar pago de notas de crédito al cliente
-ErrorInvoiceAvoirMustBeNegative=Error, una factura de tipo nota de crédito debe tener un importe negativo
-BillTo=Receptor
-ConfirmClassifyPaidPartiallyReasonAvoir=El resto a pagar <b>(%s %s)</b> se ha regularizado (ya que artículo se ha devuelto, olvidado entregar, descuento no definido...)  mediante una nota de crédito
-ConfirmClassifyPaidPartiallyReasonOtherDesc=Esta elección será posible, por ejemplo, en los casos siguiente:<br>-pago parcial ya que una partida de productos se ha devuleto.<br>- reclamado por no entregar productos de la factura <br>En todos los casos, la reclamación debe regularizarse mediante una nota de crédito
-ShowInvoiceAvoir=Ver nota de crédito
-AlreadyPaidNoCreditNotesNoDeposits=Ya pagado (excluidos las notas de crédito y anticipos)
-AddCreditNote=Crear nota de crédito
-ShowDiscount=Ver la nota de crédito
-CreditNote=Nota de crédito
-CreditNotes=Notas de crédito
-DiscountFromCreditNote=Descuento resultante de la nota de crédito %s
-AbsoluteDiscountUse=Este tipo de crédito no puede ser utilizado en una factura antes de su validación
-Residence=Tarjeta
-PaymentByTransferOnThisBankAccount=Cuenta para depositos y transferencias
-CreditNoteConvertedIntoDiscount=Esta nota de crédito se convirtió en %s
-TerreNumRefModelDesc1=Devuelve el número bajo el formato %syymm-nnnn para las facturas y %syymm-nnnn para las notas de crédito donde yy es el año, mm. el mes y nnnn un contador secuencial sin ruptura y sin permanencia a 0
+ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid.
diff --git a/htdocs/langs/es_MX/categories.lang b/htdocs/langs/es_MX/categories.lang
index 7e6b383c28777e691e6aeda865e0fbd64368015a..6173fc601e656cce7cce5c1aba6ea019e91f232e 100644
--- a/htdocs/langs/es_MX/categories.lang
+++ b/htdocs/langs/es_MX/categories.lang
@@ -1,2 +1,2 @@
 # Dolibarr language file - Source file is en_US - categories
-NotCategorized=Sin Categoría
+CatContactList=List of contact tags/categories and contact
diff --git a/htdocs/langs/es_MX/commercial.lang b/htdocs/langs/es_MX/commercial.lang
new file mode 100644
index 0000000000000000000000000000000000000000..18d8db068019668b61d38d3d592361512787d725
--- /dev/null
+++ b/htdocs/langs/es_MX/commercial.lang
@@ -0,0 +1,2 @@
+# Dolibarr language file - Source file is en_US - commercial
+ActionAffectedTo=Event assigned to
diff --git a/htdocs/langs/es_MX/companies.lang b/htdocs/langs/es_MX/companies.lang
deleted file mode 100644
index 3727bea2735681a94d1af2700aef8ff64a784828..0000000000000000000000000000000000000000
--- a/htdocs/langs/es_MX/companies.lang
+++ /dev/null
@@ -1,7 +0,0 @@
-# Dolibarr language file - Source file is en_US - companies
-State=Estado
-Town=Municipio
-VATIntra=RFC
-VATIntraShort=RFC
-VATIntraVeryShort=RFC
-CompanyHasCreditNote=Este cliente tiene <b>%s %s</b> notas de crédito/anticipos disponibles
diff --git a/htdocs/langs/es_MX/cron.lang b/htdocs/langs/es_MX/cron.lang
new file mode 100644
index 0000000000000000000000000000000000000000..3f755fc725ddd5456b18be474d97bb473b926e36
--- /dev/null
+++ b/htdocs/langs/es_MX/cron.lang
@@ -0,0 +1,3 @@
+# Dolibarr language file - Source file is en_US - cron
+CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes
+CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes
diff --git a/htdocs/langs/es_MX/interventions.lang b/htdocs/langs/es_MX/interventions.lang
new file mode 100644
index 0000000000000000000000000000000000000000..84b26b1f95e09fc2fc1872c75da0c2922d92c3e8
--- /dev/null
+++ b/htdocs/langs/es_MX/interventions.lang
@@ -0,0 +1,2 @@
+# Dolibarr language file - Source file is en_US - interventions
+PrintProductsOnFichinterDetails=interventions generated from orders
diff --git a/htdocs/langs/es_MX/mails.lang b/htdocs/langs/es_MX/mails.lang
new file mode 100644
index 0000000000000000000000000000000000000000..4b5c7e95999646832e8f362031bea410cff97fe0
--- /dev/null
+++ b/htdocs/langs/es_MX/mails.lang
@@ -0,0 +1,2 @@
+# Dolibarr language file - Source file is en_US - mails
+ActivateCheckReadKey=Key use to encrypt URL use for "Read Receipt" and "Unsubcribe" feature
diff --git a/htdocs/langs/es_MX/main.lang b/htdocs/langs/es_MX/main.lang
index cf154fa6429bf444a0b200675f35b607d38c1907..2e691473326d372b5db42468423519b3171a0d8a 100644
--- a/htdocs/langs/es_MX/main.lang
+++ b/htdocs/langs/es_MX/main.lang
@@ -4,21 +4,18 @@ FONTFORPDF=helvetica
 FONTSIZEFORPDF=10
 SeparatorDecimal=.
 SeparatorThousand=,
-FormatDateShort=%d/%m/%Y
-FormatDateShortInput=%d/%m/%Y
-FormatDateShortJava=dd/MM/yyyy
-FormatDateShortJavaInput=dd/MM/yyyy
-FormatDateShortJQuery=dd/mm/yy
-FormatDateShortJQueryInput=dd/mm/yy
+FormatDateShort=%m/%d/%Y
+FormatDateShortInput=%m/%d/%Y
+FormatDateShortJava=MM/dd/yyyy
+FormatDateShortJavaInput=MM/dd/yyyy
+FormatDateShortJQuery=mm/dd/yy
+FormatDateShortJQueryInput=mm/dd/yy
 FormatHourShortJQuery=HH:MI
-FormatHourShort=%H:%M
+FormatHourShort=%I:%M %p
 FormatHourShortDuration=%H:%M
-FormatDateTextShort=%d %b %Y
-FormatDateText=%d %B %Y
-FormatDateHourShort=%d/%m/%Y %H:%M
-FormatDateHourSecShort=%d/%m/%Y %H:%M:%S
-FormatDateHourTextShort=%d %b %Y %H:%M
-FormatDateHourText=%d %B %Y %H:%M
-AmountHT=Subtotal
-TotalHT=Subtotal
-TotalVAT=IVA
+FormatDateTextShort=%b %d, %Y
+FormatDateText=%B %d, %Y
+FormatDateHourShort=%m/%d/%Y %I:%M %p
+FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p
+FormatDateHourTextShort=%b %d, %Y, %I:%M %p
+FormatDateHourText=%B %d, %Y, %I:%M %p
diff --git a/htdocs/langs/es_MX/orders.lang b/htdocs/langs/es_MX/orders.lang
new file mode 100644
index 0000000000000000000000000000000000000000..6d902132a46c48d6f743f1f168bee74da6e2aee7
--- /dev/null
+++ b/htdocs/langs/es_MX/orders.lang
@@ -0,0 +1,5 @@
+# Dolibarr language file - Source file is en_US - orders
+StatusOrderOnProcessShort=Ordered
+StatusOrderOnProcess=Ordered - Standby reception
+ApproveOrder=Approve order
+LastOrders=Last %s customer orders
diff --git a/htdocs/langs/es_MX/other.lang b/htdocs/langs/es_MX/other.lang
new file mode 100644
index 0000000000000000000000000000000000000000..c50a095e492a0a57ef32d24cc9891598517ad128
--- /dev/null
+++ b/htdocs/langs/es_MX/other.lang
@@ -0,0 +1,3 @@
+# Dolibarr language file - Source file is en_US - other
+Notify_ORDER_SUPPLIER_VALIDATE=Supplier order recorded
+SeeModuleSetup=See setup of module %s
diff --git a/htdocs/langs/es_MX/productbatch.lang b/htdocs/langs/es_MX/productbatch.lang
new file mode 100644
index 0000000000000000000000000000000000000000..53edc04d8c4739de1ae060d5f7aa8f6ea9aeba85
--- /dev/null
+++ b/htdocs/langs/es_MX/productbatch.lang
@@ -0,0 +1,11 @@
+# Dolibarr language file - Source file is en_US - productbatch
+ManageLotSerial=Use lot/serial number
+ProductStatusOnBatch=Yes (lot/serial required)
+ProductStatusNotOnBatch=No (lot/serial not used)
+Batch=Lot/Serial
+atleast1batchfield=Eat-by date or Sell-by date or Lot/Serial number
+batch_number=Lot/Serial number
+DetailBatchNumber=Lot/Serial details
+DetailBatchFormat=Lot/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d)
+printBatch=Lot/Serial: %s
+WhenProductBatchModuleOnOptionAreForced=When module Lot/Serial is on, increase/decrease stock mode is forced to last choice and can't be edited. Other options can be defined as you want.
diff --git a/htdocs/langs/es_MX/sendings.lang b/htdocs/langs/es_MX/sendings.lang
new file mode 100644
index 0000000000000000000000000000000000000000..cceb71550e222d827bb5d40ba8f8e5e6192dbdaf
--- /dev/null
+++ b/htdocs/langs/es_MX/sendings.lang
@@ -0,0 +1,2 @@
+# Dolibarr language file - Source file is en_US - sendings
+DateDeliveryPlanned=Planed date of delivery
diff --git a/htdocs/langs/es_MX/stocks.lang b/htdocs/langs/es_MX/stocks.lang
index 295151fbd08c95862f65433c98b4e77a1792be91..3a989d45e7d76f98ef7f2c88d06f084430a13f18 100644
--- a/htdocs/langs/es_MX/stocks.lang
+++ b/htdocs/langs/es_MX/stocks.lang
@@ -1,3 +1,2 @@
 # Dolibarr language file - Source file is en_US - stocks
-DeStockOnBill=Decrementar los stocks físicos sobre las facturas/notas de crédito a clientes
-ReStockOnBill=Incrementar los stocks físicos sobre las facturas/notas de crédito de proveedores
+WarehouseMustBeSelectedAtFirstStepWhenProductBatchModuleOn=Source warehouse must be defined here when "product lot" module is on. It will be used to list wich lot/serial is available for product that required lot/serial data for movement. If you want to send products from different warehouses, just make the shipment into several steps.
diff --git a/htdocs/langs/es_MX/suppliers.lang b/htdocs/langs/es_MX/suppliers.lang
new file mode 100644
index 0000000000000000000000000000000000000000..5213cec4e07ca18ac9ed641ce598c046ac788a1e
--- /dev/null
+++ b/htdocs/langs/es_MX/suppliers.lang
@@ -0,0 +1,2 @@
+# Dolibarr language file - Source file is en_US - suppliers
+DenyingThisOrder=Deny this order
diff --git a/htdocs/langs/es_MX/trips.lang b/htdocs/langs/es_MX/trips.lang
new file mode 100644
index 0000000000000000000000000000000000000000..f5e6f1a92ebf2effd4c01d542d91c3f665207a85
--- /dev/null
+++ b/htdocs/langs/es_MX/trips.lang
@@ -0,0 +1,14 @@
+# Dolibarr language file - Source file is en_US - trips
+Trip=Expense report
+Trips=Expense reports
+TripsAndExpenses=Expenses reports
+TripsAndExpensesStatistics=Expense reports statistics
+TripCard=Expense report card
+AddTrip=Create expense report
+ListOfTrips=List of expense report
+NewTrip=New expense report
+DeleteTrip=Delete expense report
+ConfirmDeleteTrip=Are you sure you want to delete this expense report ?
+ListTripsAndExpenses=List of expense reports
+ExpensesArea=Expense reports area
+SearchATripAndExpense=Search an expense report
diff --git a/htdocs/langs/et_EE/accountancy.lang b/htdocs/langs/et_EE/accountancy.lang
index bb9b358c045f01051eecca5063c4127d6cb21672..28cfd06f2b7cfdd78441fe48ce82b68751e4971f 100644
--- a/htdocs/langs/et_EE/accountancy.lang
+++ b/htdocs/langs/et_EE/accountancy.lang
@@ -1,10 +1,10 @@
 # Dolibarr language file - en_US - Accounting Expert
 CHARSET=UTF-8
 
-Accounting=Accounting
-Globalparameters=Global parameters
-Chartofaccounts=Chart of accounts
-Fiscalyear=Fiscal years
+Accounting=Raamatupidamine
+Globalparameters=Globaalsed parameetrid
+Chartofaccounts=Kontoplaan
+Fiscalyear=Majandusaastad
 Menuaccount=Accounting accounts
 Menuthirdpartyaccount=Thirdparty accounts
 MenuTools=Tools
diff --git a/htdocs/langs/et_EE/cashdesk.lang b/htdocs/langs/et_EE/cashdesk.lang
index a5611bc272a532bd8df1759b8263fe48ca291605..75b0a8482016588ab41f07a882b3ce779f815453 100644
--- a/htdocs/langs/et_EE/cashdesk.lang
+++ b/htdocs/langs/et_EE/cashdesk.lang
@@ -1,7 +1,7 @@
 # Language file - Source file is en_US - cashdesk
-CashDeskMenu=Müügikoht
-CashDesk=Müügikoht
-CashDesks=Müügikoht
+CashDeskMenu=Kassa
+CashDesk=Kassa
+CashDesks=Kassa
 CashDeskBank=Pangakonto
 CashDeskBankCash=Pangakonto (sularaha)
 CashDeskBankCB=Pangakonto (kaardimakse)
@@ -14,7 +14,7 @@ CashDeskOn=kohta
 CashDeskThirdParty=Kolmas isik
 CashdeskDashboard=Ligipääs müügikohale
 ShoppingCart=Ostukorv
-NewSell=Uus müü
+NewSell=Uus müük
 BackOffice=Keskkontor
 AddThisArticle=Lisa see artikkel
 RestartSelling=Mine müümisel tagasi
@@ -37,4 +37,4 @@ ShowCompany=Näita ettevõtet
 ShowStock=Näita ladu
 DeleteArticle=Klõpsa selle artikli eemaldamiseks
 FilterRefOrLabelOrBC=Otsi (viide/nimi)
-# UserNeedPermissionToEditStockToUsePos=You ask to decrease stock on invoice creation, so user that use POS need to have permission to edit stock.
+UserNeedPermissionToEditStockToUsePos=Hetkeseadistuste järgi vähendatakse laoseisu arve loomisel, seega peab kassa kasutajal olema õigus laoseisu muutmiseks.
diff --git a/htdocs/langs/et_EE/companies.lang b/htdocs/langs/et_EE/companies.lang
index 4b94f2e23e36fa9ea1f06cbe65320a98361560da..aafc764f97bc3ccf41e4c10abb64bd9212e5c8a3 100644
--- a/htdocs/langs/et_EE/companies.lang
+++ b/htdocs/langs/et_EE/companies.lang
@@ -259,8 +259,8 @@ AvailableGlobalDiscounts=Saadaval olevad summalised allahindlused
 DiscountNone=Pole
 Supplier=Hankija
 CompanyList=Ettevõtte nimekiri
-AddContact=Lisa kontakt
-AddContactAddress=Lisa kontakt/aadress
+AddContact=Uus kontakt
+AddContactAddress=Uus kontakt/aadress
 EditContact=Muuda kontakti
 EditContactAddress=Muuda kontakti/aadressi
 Contact=Kontakt
@@ -268,8 +268,8 @@ ContactsAddresses=Kontaktid/aadressid
 NoContactDefinedForThirdParty=Antud kolmanda isikuga pole ühtki kontakti seotud
 NoContactDefined=Kontakti pole määratud
 DefaultContact=Vaikimisi kontakt/aadress
-AddCompany=Lisa ettevõte
-AddThirdParty=Lisa kolmas isik
+AddCompany=Uus ettevõte
+AddThirdParty=Uus kolmas isik
 DeleteACompany=Kustuta ettevõte
 PersonalInformations=Isikuandmed
 AccountancyCode=Raamatupidamise kood
@@ -379,8 +379,8 @@ DeliveryAddressLabel=Tarneaadressi etikett
 DeleteDeliveryAddress=Kustuta tarneaadress
 ConfirmDeleteDeliveryAddress=Kas tahad kindlasti selle tarneaadressi kustutada?
 NewDeliveryAddress=Uus tarneaadress
-AddDeliveryAddress=Lisa aadress
-AddAddress=Lisa aadress
+AddDeliveryAddress=Uus aadress
+AddAddress=Uus aadress
 NoOtherDeliveryAddress=Ühtki täiendavat tarneaadressi pole määratud
 SupplierCategory=Hankija kategooria
 JuridicalStatus200=Sõltumatu
@@ -397,7 +397,7 @@ YouMustCreateContactFirst=Pead looma kolmanda isikuga seotud e-posti kontaktid e
 ListSuppliersShort=Hankijate nimekiri
 ListProspectsShort=Huviliste nimekiri
 ListCustomersShort=Klientide nimekiri
-ThirdPartiesArea=Third parties and contact area
+ThirdPartiesArea=Kolmandate isikute ja kontaktide ala
 LastModifiedThirdParties=Viimased %s muudetud kolmandat isikut
 UniqueThirdParties=Kokku unikaalseid kolmandaid isikuid
 InActivity=Avatud
@@ -410,5 +410,5 @@ OutstandingBillReached=Jõudis maksmata summa maksimumini
 MonkeyNumRefModelDesc=Tagasta arv formaadiga %syymm-nnnn kliendikoodi jaoks ja %syymm-nnnn hankija koodi jaoks, kus yy on aasta, mm on kuu ja nnnn on katkestuseta jada, mille väärtus pole kunagi 0.
 LeopardNumRefModelDesc=Kood on vaba, seda saab igal ajal muuta.
 ManagingDirectors=Haldaja(te) nimi (CEO, direktor, president...)
-SearchThirdparty=Search thirdparty
-SearchContact=Search contact
+SearchThirdparty=Otsi kolmandat isikut
+SearchContact=Otsi kontakti
diff --git a/htdocs/langs/et_EE/install.lang b/htdocs/langs/et_EE/install.lang
index 2c61df2288aa175874141d4557cad63914db1fc1..a72fd0be7ff18dac7f3165f6e1a2a7630db083e8 100644
--- a/htdocs/langs/et_EE/install.lang
+++ b/htdocs/langs/et_EE/install.lang
@@ -155,8 +155,8 @@ MigrationFinished=Migreerimine lõpetatud
 LastStepDesc=<strong>Viimane samm:</strong> Määra siin tarkvaraga ühendumiseks kasutatav kasutajanimi ja parool. Hoia neid alles, kuna selle kontoga saab administreerida kõiki teisi kasutajaid.
 ActivateModule=Aktiveeri moodul %s
 ShowEditTechnicalParameters=Klõpsa siia lisaparameetrite näitamiseks/muutmiseks (spetsialisti režiim)
-WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process...
-ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s)
+WarningUpgrade=Hoiatus:\nKas oled oma andmebaasi varundanud?\nSoovitame seda tungivalt teha: mõningate andmebaaside puukide tõttu (nt MySQL 5.5.40), võib selle protsessi käigus kaduma minna andmeid või tabeleid, seega on enne migratsiooni alustamist tungivalt soovitatav teha andmebaasist täielik tõmmis.\n\nKlõpsa OK migratsiooni alustamiseks...
+ErrorDatabaseVersionForbiddenForMigration=Sinu andmebaasi versioon on %s. Selles versioonis on tõsine puuk, mis põhjustab andmebaasi struktuuri muutmisel andmekadu, nagu seda teeb migratsiooni protsess. Seega ei ole migratsioon lubatud seni, kuni uuendad oma andmebaasi parandustega versioonile (teadaolevate vigaste versioonide nimekiri: %s)
 
 #########
 # upgrade
@@ -208,7 +208,7 @@ MigrationProjectTaskTime=Uuendamiseks kulutatud aeg sekundites
 MigrationActioncommElement=Uuenda tegevuste andmec
 MigrationPaymentMode=Maksete režiimi andmete migreerimine
 MigrationCategorieAssociation=Kategooriate migreerimine
-MigrationEvents=Migration of events to add event owner into assignement table
+MigrationEvents=Sündmuste migreerimine sündmuse omaniku lisamiseks seoste tabelisse
 
 ShowNotAvailableOptions=Näita mitte saadaval olevaid lisavalikuid
 HideNotAvailableOptions=Peida mitte saadaval olevad lisavalikud
diff --git a/htdocs/langs/et_EE/main.lang b/htdocs/langs/et_EE/main.lang
index 2a99ca35036b941559f79040fa0d5e853da6cb4d..37257f3cb9cb50305e589308d841b5e1eee8bdbe 100644
--- a/htdocs/langs/et_EE/main.lang
+++ b/htdocs/langs/et_EE/main.lang
@@ -62,10 +62,10 @@ ErrorFailedToSaveFile=Viga: faili salvestamine ebaõnnestus.
 SetDate=Sea kuupäev
 SelectDate=Vali kuupäev
 SeeAlso=Vaata lisaks %s
-SeeHere=See here
+SeeHere=Vaata siia
 BackgroundColorByDefault=Vaikimisi taustavärv
-FileNotUploaded=The file was not uploaded
-FileUploaded=The file was successfully uploaded
+FileNotUploaded=Ei suutnud faili üles laadida
+FileUploaded=Fail on edukalt üles laetud
 FileWasNotUploaded=Fail on valitud manustamiseks, kuid on veel üles laadimata. Klõpsa &quot;Lisa fail&quot; nupul selle lisamiseks.
 NbOfEntries=Kannete arv
 GoToWikiHelpPage=Loe online abi (vajab võrguühendust)
@@ -141,7 +141,7 @@ Cancel=Tühista
 Modify=Muuda
 Edit=Toimeta
 Validate=Kinnita
-ValidateAndApprove=Validate and Approve
+ValidateAndApprove=Valideeri ja kiida heaks
 ToValidate=Kinnitada
 Save=Salvesta
 SaveAs=Salvesta kui
@@ -159,7 +159,7 @@ Search=Otsi
 SearchOf=Otsi
 Valid=Kehtiv
 Approve=Kiida heaks
-Disapprove=Disapprove
+Disapprove=Lükka tagasi
 ReOpen=Ava uuesti
 Upload=Saada fail
 ToLink=Seosta
@@ -173,7 +173,7 @@ User=Kasutaja
 Users=Kasutajad
 Group=Rühm
 Groups=Rühmad
-NoUserGroupDefined=No user group defined
+NoUserGroupDefined=Ühtki kasutajate gruppi pole määratletud
 Password=Parool
 PasswordRetype=Korda parooli
 NoteSomeFeaturesAreDisabled=Pane tähele, et palju mooduleid ja funktsioone on demoversioonis keelatud.
@@ -220,9 +220,9 @@ Next=Järgmine
 Cards=Kaardid
 Card=Kaart
 Now=Nüüd
-HourStart=Start hour
+HourStart=Algustund
 Date=Kuupäev
-DateAndHour=Date and hour
+DateAndHour=Päev ja tund
 DateStart=Alguskuupäev
 DateEnd=Lõppkuupäev
 DateCreation=Loomise kuupäev
@@ -243,8 +243,8 @@ DatePlanShort=Planeeritud kuupäev
 DateRealShort=Reaalne kuupäev
 DateBuild=Aruande koostamise kuupäev
 DatePayment=Maksekuupäev
-DateApprove=Approving date
-DateApprove2=Approving date (second approval)
+DateApprove=Heakskiitmise kuupäev
+DateApprove2=Heakskiitmise kuupäev (teine nõuseolek)
 DurationYear=aasta
 DurationMonth=kuu
 DurationWeek=nädal
@@ -267,7 +267,7 @@ days=päeva
 Hours=Tundi
 Minutes=Minutit
 Seconds=Sekundit
-Weeks=Weeks
+Weeks=Nädalad
 Today=Täna
 Yesterday=Eile
 Tomorrow=Homme
@@ -301,7 +301,7 @@ UnitPriceHT=Ühiku hind (neto)
 UnitPriceTTC=Ühiku hind
 PriceU=ÜH
 PriceUHT=ÜH (neto)
-AskPriceSupplierUHT=P.U. HT Requested
+AskPriceSupplierUHT=P.U. HT nõutud
 PriceUTTC=ÜH
 Amount=Summa
 AmountInvoice=Arve summa
@@ -352,10 +352,10 @@ FullList=Täielik nimekiri
 Statistics=Statistika
 OtherStatistics=Muu statistika
 Status=Staatus
-Favorite=Favorite
+Favorite=Lemmik
 ShortInfo=Inform
 Ref=Viide
-ExternalRef=Ref. extern
+ExternalRef=Väline viide
 RefSupplier=Hankija viide
 RefPayment=Makse viide
 CommercialProposalsShort=Pakkumised
@@ -379,7 +379,7 @@ ActionsOnCompany=Selle kolmanda isikuga seotud tegevused
 ActionsOnMember=Selle liikmega seotud tegevused
 NActions=%s tegevust
 NActionsLate=%s hiljaks jäänud
-RequestAlreadyDone=Request already recorded
+RequestAlreadyDone=Nõue on juba salvestatud
 Filter=Filtreeri
 RemoveFilter=Eemalda filter
 ChartGenerated=Graafik loodud
@@ -398,8 +398,8 @@ Available=Saadaval
 NotYetAvailable=Pole veel saadaval
 NotAvailable=Pole saadaval
 Popularity=Populaarsus
-Categories=Tags/categories
-Category=Tag/category
+Categories=Sildid/kategooriad
+Category=Silt/kategooria
 By=Isik
 From=Kellelt
 to=kellele
@@ -411,8 +411,8 @@ OtherInformations=Muu informatsioon
 Quantity=Kogus
 Qty=Kogus
 ChangedBy=Muutis
-ApprovedBy=Approved by
-ApprovedBy2=Approved by (second approval)
+ApprovedBy=Kiitis heaks
+ApprovedBy2=Kiitis heaks (teine nõusolek)
 ReCalculate=Arvuta uuesti
 ResultOk=Õnnestumine
 ResultKo=Viga
@@ -531,7 +531,7 @@ DateFromTo=Alates %s kuni %s
 DateFrom=Alates %s
 DateUntil=Kuni %s
 Check=Kontrolli
-Uncheck=Uncheck
+Uncheck=Võta tagasi
 Internal=Sisene
 External=Väline
 Internals=Sisene
@@ -663,7 +663,7 @@ OptionalFieldsSetup=Lisaatribuutide seadistamine
 URLPhoto=Foto/logo URL
 SetLinkToThirdParty=Seosta muu kolmanda isikuga
 CreateDraft=Loo mustand
-SetToDraft=Back to draft
+SetToDraft=Tagasi mustandiks
 ClickToEdit=Klõpsa muutmiseks
 ObjectDeleted=Objekt %s kustutatud
 ByCountry=Riigi järgi
@@ -697,12 +697,12 @@ ViewPrivateNote=Vaata märkmeid
 XMoreLines=%s joon(t) varjatud
 PublicUrl=Avalik link
 AddBox=Lisa kast
-SelectElementAndClickRefresh=Select an element and click Refresh
-PrintFile=Print File %s
-ShowTransaction=Show transaction
-GoIntoSetupToChangeLogo=Go into Home - Setup - Company to change logo or go into Home - Setup - Display to hide.
-Deny=Deny
-Denied=Denied
+SelectElementAndClickRefresh=Vali element ja klõpsa 'Värskenda'
+PrintFile=Prindi fail %s
+ShowTransaction=Näita tehingut
+GoIntoSetupToChangeLogo=Mine Kodu - Seadistamine - Ettevõte logo muutmiseks või mine Kodu - Seadistamine - Kuva logo peitmiseks.
+Deny=Lükka tagasi
+Denied=Tagasi lükatud
 # Week day
 Monday=Esmaspäev
 Tuesday=Teisipäev
diff --git a/htdocs/langs/et_EE/products.lang b/htdocs/langs/et_EE/products.lang
index 49b37b138c276be344e85bd8a70e00e59b4d7c35..f04f73b02f5b949fc2acf3de0f039e45e3be9485 100644
--- a/htdocs/langs/et_EE/products.lang
+++ b/htdocs/langs/et_EE/products.lang
@@ -221,14 +221,14 @@ Quarter1=1. kvartal
 Quarter2=2. kvartal
 Quarter3=3. kvartal
 Quarter4=4. kvartal
-BarCodePrintsheet=Print bar code
-PageToGenerateBarCodeSheets=With this tool, you can print sheets of bar code stickers. Choose format of your sticker page, type of barcode and value of barcode, then click on button <b>%s</b>.
-NumberOfStickers=Number of stickers to print on page
-PrintsheetForOneBarCode=Print several stickers for one barcode
+BarCodePrintsheet=Prindi vöötkood
+PageToGenerateBarCodeSheets=Selle tööriistaga saad printida lehtedele etikette. Vali lehe formaat, vöötkoodi tüüp ja vöötkoodi värtus, ning siis klõpsa nupul <b>%s</b>.
+NumberOfStickers=Lehele prinditavate kleepsude arv
+PrintsheetForOneBarCode=Prindi ühe vöötkoodi jaoks mitu etiketti
 BuildPageToPrint=Loo prinditav leht
-FillBarCodeTypeAndValueManually=Fill barcode type and value manually.
-FillBarCodeTypeAndValueFromProduct=Fill barcode type and value from barcode of a product.
-FillBarCodeTypeAndValueFromThirdParty=Fill barcode type and value from barcode of a thirdparty.
+FillBarCodeTypeAndValueManually=Täida vöötkoodi tüüp ja väärtus käsitsi
+FillBarCodeTypeAndValueFromProduct=Täida vöötkoodi tüüp ja väärtus toote vöötkoodi välja abil
+FillBarCodeTypeAndValueFromThirdParty=Täida vöötkoodi tüüp ja väärtus kolmanda isiku vöötkoodi välja abil
 DefinitionOfBarCodeForProductNotComplete=Definition of type or value of bar code not complete for product %s.
 DefinitionOfBarCodeForThirdpartyNotComplete=Definition of type or value of bar code non complete for thirdparty %s.
 BarCodeDataForProduct=Barcode information of product %s :
@@ -258,12 +258,12 @@ MinSupplierPrice=Minimum supplier price
 DynamicPriceConfiguration=Dynamic price configuration
 GlobalVariables=Global variables
 GlobalVariableUpdaters=Global variable updaters
-GlobalVariableUpdaterType0=JSON data
-GlobalVariableUpdaterHelp0=Parses JSON data from specified URL, VALUE specifies the location of relevant value,
-GlobalVariableUpdaterHelpFormat0=format is {"URL": "http://example.com/urlofjson", "VALUE": "array1,array2,targetvalue"}
-GlobalVariableUpdaterType1=WebService data
+GlobalVariableUpdaterType0=JSON andmed
+GlobalVariableUpdaterHelp0=Sõelu JSONi andmed määratletud URLilt, VALUE määrab ära seotud väärtuse asukoha
+GlobalVariableUpdaterHelpFormat0=formaat on {"URL": "http://example.com/urlofjson", "VALUE": "array1,array2,targetvalue"}
+GlobalVariableUpdaterType1=WebService andmed
 GlobalVariableUpdaterHelp1=Parses WebService data from specified URL, NS specifies the namespace, VALUE specifies the location of relevant value, DATA should contain the data to send and METHOD is the calling WS method
 GlobalVariableUpdaterHelpFormat1=format is {"URL": "http://example.com/urlofws", "VALUE": "array,targetvalue", "NS": "http://example.com/urlofns", "METHOD": "myWSMethod", "DATA": {"your": "data, "to": "send"}}
-UpdateInterval=Update interval (minutes)
-LastUpdated=Last updated
-CorrectlyUpdated=Correctly updated
+UpdateInterval=Uuendamise intervall (minutities)
+LastUpdated=Viimati uuendatud
+CorrectlyUpdated=Õigesti uuendatud
diff --git a/htdocs/langs/fr_CA/admin.lang b/htdocs/langs/fr_CA/admin.lang
index 5102f1f513075eccf2b72e825642ff4d0d9b0898..cc346f1b38c6e304b1814ba21cc4f86a287a9c85 100644
--- a/htdocs/langs/fr_CA/admin.lang
+++ b/htdocs/langs/fr_CA/admin.lang
@@ -1,7 +1,18 @@
 # Dolibarr language file - Source file is en_US - admin
-VATManagement=Gestion TPS
-VATIsUsedDesc=Le taux de TPS proposé par défaut lors de la création de proposition commerciale, facture, commande, etc... répond à la règle standard suivante :<br>Si vendeur non assujetti à TPS, TPS par défaut=0. Fin de règle.<br>Si le (pays vendeur= pays acheteur) alors TPS par défaut=TPS du produit vendu. Fin de règle.<br>Si vendeur et acheteur dans Communauté européenne et bien vendu= moyen de transport neuf (auto, bateau, avion), TPS par défaut=0 (La TPS doit être payée par acheteur au centre d'impôts de son pays et non au vendeur). Fin de règle.<br>Si vendeur et acheteur dans Communauté européenne et acheteur= particulier alors TPS par défaut=TPS du produit vendu. Fin de règle.<br>Si vendeur et acheteur dans Communauté européenne et acheteur= entreprise alors TPS par défaut=0. Fin de règle.<br>Sinon TPS proposée par défaut=0. Fin de règle.<br>
-VATIsNotUsedDesc=Le taux de TPS proposé par défaut est 0. C'est le cas d'associations, particuliers ou certaines petites sociétés.
-LocalTax1IsUsedDesc=Utilisation de 2ème type taxe (TVQ)
-LocalTax1IsNotUsedDesc=Pas d'utilisation de 2ème type taxe (TVQ)
-LocalTax1Management=Gestion TVQ
+AntiVirusCommandExample=Example for ClamWin: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe<br>Example for ClamAv: /usr/bin/clamscan
+AntiVirusParamExample=Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib"
+UnpackPackageInDolibarrRoot=Unpack package file into directory dedicated to external modules: <b>%s</b>
+ExampleOfDirectoriesForModelGen=Examples of syntax:<br>c:\\mydir<br>/home/mydir<br>DOL_DATA_ROOT/ecm/ecmdir
+LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:<br>1 : local tax apply on products and services without vat (localtax is calculated on amount without tax)<br>2 : local tax apply on products and services including vat (localtax is calculated on amount + main tax)<br>3 : local tax apply on products without vat (localtax is calculated on amount without tax)<br>4 : local tax apply on products including vat (vat is calculated on amount + main vat)<br>5 : local tax apply on services without vat (localtax is calculated on amount without tax)<br>6 : local tax apply on services including vat (localtax is calculated on amount + tax)
+Module1780Desc=Create tags/category (products, customers, suppliers, contacts or members)
+Module39000Name=Product lot
+Module39000Desc=Lot or serial number, eat-by and sell-by date management on products
+MAIN_ROUNDING_RULE_TOT=Size of rounding range (for rare countries where rounding is done on something else than base 10)
+BackupDesc2=Save content of documents directory (<b>%s</b>) that contains all uploaded and generated files (you can make a zip for example).
+BackupDesc3=Save content of your database (<b>%s</b>) into a dump file. For this, you can use following assistant.
+RestoreDesc2=Restore archive file (zip file for example) of documents directory to extract tree of files in documents directory of a new Dolibarr installation or into this current documents directoy (<b>%s</b>).
+RestoreDesc3=Restore the data, from a backup dump file, into the database of the new Dolibarr installation or into the database of this current installation (<b>%s</b>). Warning, once restore is finished, you must use a login/password, that existed when backup was made, to connect again. To restore a backup database into this current installation, you can follow this assistant.
+NotificationsDesc=EMails notifications feature allows you to silently send automatic mail, for some Dolibarr events. Targets of notifications can be defined:<br>* per third parties contacts (customers or suppliers), one contact at time.<br>* or by setting global target email addresses in module setup page.
+CashDeskDoNotDecreaseStock=Disable stock decrease when a sell is done from Point of Sale (if "no", stock decrease is done for each sell done from POS, whatever is option set into module Stock).
+StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with lot management
+MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application)
diff --git a/htdocs/langs/fr_CA/banks.lang b/htdocs/langs/fr_CA/banks.lang
new file mode 100644
index 0000000000000000000000000000000000000000..e58cf5e72b5b543b3b197112ab0728bd9d5e9edf
--- /dev/null
+++ b/htdocs/langs/fr_CA/banks.lang
@@ -0,0 +1,2 @@
+# Dolibarr language file - Source file is en_US - banks
+InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD
diff --git a/htdocs/langs/fr_CA/bills.lang b/htdocs/langs/fr_CA/bills.lang
new file mode 100644
index 0000000000000000000000000000000000000000..f1e67a676c3b8f859eeb97a19b2077c9f770bd27
--- /dev/null
+++ b/htdocs/langs/fr_CA/bills.lang
@@ -0,0 +1,2 @@
+# Dolibarr language file - Source file is en_US - bills
+ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid.
diff --git a/htdocs/langs/fr_CA/categories.lang b/htdocs/langs/fr_CA/categories.lang
new file mode 100644
index 0000000000000000000000000000000000000000..6173fc601e656cce7cce5c1aba6ea019e91f232e
--- /dev/null
+++ b/htdocs/langs/fr_CA/categories.lang
@@ -0,0 +1,2 @@
+# Dolibarr language file - Source file is en_US - categories
+CatContactList=List of contact tags/categories and contact
diff --git a/htdocs/langs/fr_CA/commercial.lang b/htdocs/langs/fr_CA/commercial.lang
new file mode 100644
index 0000000000000000000000000000000000000000..18d8db068019668b61d38d3d592361512787d725
--- /dev/null
+++ b/htdocs/langs/fr_CA/commercial.lang
@@ -0,0 +1,2 @@
+# Dolibarr language file - Source file is en_US - commercial
+ActionAffectedTo=Event assigned to
diff --git a/htdocs/langs/fr_CA/companies.lang b/htdocs/langs/fr_CA/companies.lang
deleted file mode 100644
index 1f9cc9ada7625529378d9ba308b6890a7c09e072..0000000000000000000000000000000000000000
--- a/htdocs/langs/fr_CA/companies.lang
+++ /dev/null
@@ -1,5 +0,0 @@
-# Dolibarr language file - Source file is en_US - companies
-VATIsUsed=Assujetti à la TPS
-VATIsNotUsed=Non assujetti à la TPS
-LocalTax1IsUsedES=Assujetti à TVQ
-LocalTax1IsNotUsedES=Non assujetti à TVQ
diff --git a/htdocs/langs/fr_CA/cron.lang b/htdocs/langs/fr_CA/cron.lang
new file mode 100644
index 0000000000000000000000000000000000000000..3f755fc725ddd5456b18be474d97bb473b926e36
--- /dev/null
+++ b/htdocs/langs/fr_CA/cron.lang
@@ -0,0 +1,3 @@
+# Dolibarr language file - Source file is en_US - cron
+CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes
+CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes
diff --git a/htdocs/langs/fr_CA/interventions.lang b/htdocs/langs/fr_CA/interventions.lang
new file mode 100644
index 0000000000000000000000000000000000000000..84b26b1f95e09fc2fc1872c75da0c2922d92c3e8
--- /dev/null
+++ b/htdocs/langs/fr_CA/interventions.lang
@@ -0,0 +1,2 @@
+# Dolibarr language file - Source file is en_US - interventions
+PrintProductsOnFichinterDetails=interventions generated from orders
diff --git a/htdocs/langs/fr_CA/mails.lang b/htdocs/langs/fr_CA/mails.lang
new file mode 100644
index 0000000000000000000000000000000000000000..4b5c7e95999646832e8f362031bea410cff97fe0
--- /dev/null
+++ b/htdocs/langs/fr_CA/mails.lang
@@ -0,0 +1,2 @@
+# Dolibarr language file - Source file is en_US - mails
+ActivateCheckReadKey=Key use to encrypt URL use for "Read Receipt" and "Unsubcribe" feature
diff --git a/htdocs/langs/fr_CA/main.lang b/htdocs/langs/fr_CA/main.lang
index 376a1f7296657cf854f9c1aa6170085c1d6aba93..2e691473326d372b5db42468423519b3171a0d8a 100644
--- a/htdocs/langs/fr_CA/main.lang
+++ b/htdocs/langs/fr_CA/main.lang
@@ -2,28 +2,20 @@
 DIRECTION=ltr
 FONTFORPDF=helvetica
 FONTSIZEFORPDF=10
-SeparatorDecimal=,
-SeparatorThousand=None
-FormatDateShort=%d.%m.%Y
-FormatDateShortInput=%d.%m.%Y
-FormatDateShortJava=dd.MM.yyyy
-FormatDateShortJavaInput=dd.MM.yyyy
-FormatDateShortJQuery=dd.mm.yy
-FormatDateShortJQueryInput=dd.mm.yy
+SeparatorDecimal=.
+SeparatorThousand=,
+FormatDateShort=%m/%d/%Y
+FormatDateShortInput=%m/%d/%Y
+FormatDateShortJava=MM/dd/yyyy
+FormatDateShortJavaInput=MM/dd/yyyy
+FormatDateShortJQuery=mm/dd/yy
+FormatDateShortJQueryInput=mm/dd/yy
 FormatHourShortJQuery=HH:MI
-FormatHourShort=%H:%M
+FormatHourShort=%I:%M %p
 FormatHourShortDuration=%H:%M
-FormatDateTextShort=%d %b %Y
-FormatDateText=%d %B %Y
-FormatDateHourShort=%d.%m.%Y %H:%M
-FormatDateHourSecShort=%d/%m/%Y %H:%M:%S
-FormatDateHourTextShort=%d %b %Y %H:%M
-FormatDateHourText=%d %B %Y %H:%M
-ErrorNoVATRateDefinedForSellerCountry=Erreur, aucun taux de taxe défini pour le pays '%s'.
-AmountVAT=Montant TPS
-AmountLT1=Montant TVQ
-TotalVAT=Total TPS
-TotalLT1=Total TVQ
-IncludedVAT=Dont TPS
-VAT=TPS
-VATRate=Taux TPS
+FormatDateTextShort=%b %d, %Y
+FormatDateText=%B %d, %Y
+FormatDateHourShort=%m/%d/%Y %I:%M %p
+FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p
+FormatDateHourTextShort=%b %d, %Y, %I:%M %p
+FormatDateHourText=%B %d, %Y, %I:%M %p
diff --git a/htdocs/langs/fr_CA/orders.lang b/htdocs/langs/fr_CA/orders.lang
new file mode 100644
index 0000000000000000000000000000000000000000..6d902132a46c48d6f743f1f168bee74da6e2aee7
--- /dev/null
+++ b/htdocs/langs/fr_CA/orders.lang
@@ -0,0 +1,5 @@
+# Dolibarr language file - Source file is en_US - orders
+StatusOrderOnProcessShort=Ordered
+StatusOrderOnProcess=Ordered - Standby reception
+ApproveOrder=Approve order
+LastOrders=Last %s customer orders
diff --git a/htdocs/langs/fr_CA/other.lang b/htdocs/langs/fr_CA/other.lang
new file mode 100644
index 0000000000000000000000000000000000000000..c50a095e492a0a57ef32d24cc9891598517ad128
--- /dev/null
+++ b/htdocs/langs/fr_CA/other.lang
@@ -0,0 +1,3 @@
+# Dolibarr language file - Source file is en_US - other
+Notify_ORDER_SUPPLIER_VALIDATE=Supplier order recorded
+SeeModuleSetup=See setup of module %s
diff --git a/htdocs/langs/fr_CA/productbatch.lang b/htdocs/langs/fr_CA/productbatch.lang
new file mode 100644
index 0000000000000000000000000000000000000000..53edc04d8c4739de1ae060d5f7aa8f6ea9aeba85
--- /dev/null
+++ b/htdocs/langs/fr_CA/productbatch.lang
@@ -0,0 +1,11 @@
+# Dolibarr language file - Source file is en_US - productbatch
+ManageLotSerial=Use lot/serial number
+ProductStatusOnBatch=Yes (lot/serial required)
+ProductStatusNotOnBatch=No (lot/serial not used)
+Batch=Lot/Serial
+atleast1batchfield=Eat-by date or Sell-by date or Lot/Serial number
+batch_number=Lot/Serial number
+DetailBatchNumber=Lot/Serial details
+DetailBatchFormat=Lot/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d)
+printBatch=Lot/Serial: %s
+WhenProductBatchModuleOnOptionAreForced=When module Lot/Serial is on, increase/decrease stock mode is forced to last choice and can't be edited. Other options can be defined as you want.
diff --git a/htdocs/langs/fr_CA/sendings.lang b/htdocs/langs/fr_CA/sendings.lang
new file mode 100644
index 0000000000000000000000000000000000000000..cceb71550e222d827bb5d40ba8f8e5e6192dbdaf
--- /dev/null
+++ b/htdocs/langs/fr_CA/sendings.lang
@@ -0,0 +1,2 @@
+# Dolibarr language file - Source file is en_US - sendings
+DateDeliveryPlanned=Planed date of delivery
diff --git a/htdocs/langs/fr_CA/suppliers.lang b/htdocs/langs/fr_CA/suppliers.lang
new file mode 100644
index 0000000000000000000000000000000000000000..5213cec4e07ca18ac9ed641ce598c046ac788a1e
--- /dev/null
+++ b/htdocs/langs/fr_CA/suppliers.lang
@@ -0,0 +1,2 @@
+# Dolibarr language file - Source file is en_US - suppliers
+DenyingThisOrder=Deny this order
diff --git a/htdocs/langs/fr_CA/trips.lang b/htdocs/langs/fr_CA/trips.lang
new file mode 100644
index 0000000000000000000000000000000000000000..f5e6f1a92ebf2effd4c01d542d91c3f665207a85
--- /dev/null
+++ b/htdocs/langs/fr_CA/trips.lang
@@ -0,0 +1,14 @@
+# Dolibarr language file - Source file is en_US - trips
+Trip=Expense report
+Trips=Expense reports
+TripsAndExpenses=Expenses reports
+TripsAndExpensesStatistics=Expense reports statistics
+TripCard=Expense report card
+AddTrip=Create expense report
+ListOfTrips=List of expense report
+NewTrip=New expense report
+DeleteTrip=Delete expense report
+ConfirmDeleteTrip=Are you sure you want to delete this expense report ?
+ListTripsAndExpenses=List of expense reports
+ExpensesArea=Expense reports area
+SearchATripAndExpense=Search an expense report
diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang
index 4e3a10e72dc82a88fe89b61f46d7f44816ba78e9..e364c5c2961c06b4afe168946cb8e496cb1ca8a8 100644
--- a/htdocs/langs/fr_FR/admin.lang
+++ b/htdocs/langs/fr_FR/admin.lang
@@ -61,8 +61,8 @@ UseSearchToSelectCompany=Utilisez un champ avec auto-complétion pour choisir le
 ActivityStateToSelectCompany= Ajouter une option de filtrage lors des recherches pour afficher/masquer les tiers en exercice ou ayant cessé d'exercer
 UseSearchToSelectContactTooltip=Si vous avez un nombre important de contacts (>100 000), vous pourrez améliorer les performances en positionnant la constante CONTACT_DONOTSEARCH_ANYWHERE à 1 dans Configuration->Divers. La recherche sera alors limité au début des chaines.
 UseSearchToSelectContact=Utilisez un champ avec auto-complétion pour choisir les contacts (plutôt qu'une liste déroulante).
-DelaiedFullListToSelectCompany=Attendre que vous ayez appuyez sur une touche avant de charger le contenu de la liste les tiers (Cela peut augmenter les performances si vous avez un grand nombre de tiers)
-DelaiedFullListToSelectContact=Attendre que vous ayez appuyez sur une touche avant de charger le contenu de la liste les contacts (Cela peut augmenter les performances si vous avez un grand nombre de contacts)
+DelaiedFullListToSelectCompany=Attendre que vous ayez appuyez sur une touche avant de charger le contenu de la liste des tiers (Cela peut augmenter les performances si vous avez un grand nombre de tiers)
+DelaiedFullListToSelectContact=Attendre que vous ayez appuyez sur une touche avant de charger le contenu de la liste des contacts (Cela peut augmenter les performances si vous avez un grand nombre de contacts)
 SearchFilter=Options des filtres de recherche
 NumberOfKeyToSearch=Nb carac. déclenchant recherche : %s
 ViewFullDateActions=Afficher les dates complètes des événements dans la fiche de tiers
@@ -232,7 +232,7 @@ Security=Sécurité
 Passwords=Mots de passe
 DoNotStoreClearPassword=Ne pas stocker de mots de passe en clair dans la base (Activation recommandée)
 MainDbPasswordFileConfEncrypted=Chiffrer le mot de passe de la base dans le fichier conf.php (Activation recommandée)
-InstrucToEncodePass=Pour avoir le mot de passe de la base encodé dans le fichier de configuration <b>conf.php</b>, remplacer dans ce fichier la ligne<br><b>$dolibarr_main_db_pass="..."</b><br>par<br><b>$dolibarr_main_db_pass="crypted:%s"</b>
+InstrucToEncodePass=Pour chiffrer le mot de passe de la base dans le fichier de configuration <b>conf.php</b>, remplacer la ligne<br><b>$dolibarr_main_db_pass="...";</b><br>par<br><b>$dolibarr_main_db_pass="crypted:%s";</b>
 InstrucToClearPass=Pour avoir le mot de passe de la base décodé (en clair) dans le fichier de configuration <b>conf.php</b>, remplacer dans ce fichier la ligne<br><b>$dolibarr_main_db_pass="crypted:..."</b><br>par<br><b>$dolibarr_main_db_pass="%s"</b>
 ProtectAndEncryptPdfFiles=Protection des PDF générés (Activation NON recommandée, rend inopérante la génération de PDF de masse)
 ProtectAndEncryptPdfFilesDesc=La protection d'un document PDF laisse le document libre à la lecture et à l'impression avec tout logiciel de lecture PDF. Par contre, la modification et la copie deviennent impossible. Notez que, de plus, l'utilisation de cette option empêche la génération de PDF cumulés (comme pour le PDF global des impayés).
@@ -298,7 +298,7 @@ MenuHandlers=Gestionnaires de menu
 MenuAdmin=Édition menu
 DoNotUseInProduction=Ne pas utiliser en production
 ThisIsProcessToFollow=Voici la procédure à suivre :
-ThisIsAlternativeProcessToFollow=This is an alternative setup to process:
+ThisIsAlternativeProcessToFollow=Voici une procédure de configuration alternative 
 StepNb=Étape %s
 FindPackageFromWebSite=Recherche le paquet qui répond à votre besoin (par exemple sur le site web %s).
 DownloadPackageFromWebSite=Télécharger le package %s.
@@ -399,7 +399,7 @@ ExtrafieldParamHelpsellist=La liste vient d'une table<br>Syntaxe: <br>nom_de_tab
 ExtrafieldParamHelpchkbxlst=Les cases à cocher viennent d'une table<br>Syntaxe: <br>nom_de_table:nom_de_champ:id_champ::filtre<br>Exemple : <br>c_typent:libelle:id::filter<br><br>filter peux être un test simple (exemple active=1 pour ne proposer que les valeur active)<br>si vous voulez faire un filtre sur des attributs supplémentaires, utilisez la syntax extra.champ=... (où champ est la code de l'attribut supplémentaire)<br><br>Pour que la liste soit dépendante d'une autre :<br>c_typent:libelle:id:code_liste_parent|colonne_parent:filter
 LibraryToBuildPDF=Bibliothèque utilisée pour la génération des PDF
 WarningUsingFPDF=Attention : votre fichier <b>conf.php</b> contient la directive <b>dolibarr_pdf_force_fpdf=1</b>. Cela signifie que vous utilisez la librairie FPDF pour générer vos fichiers PDF. Cette librairie est ancienne et ne couvre pas de nombreuses fonctionnalités (Unicode, transparence des images, langues cyrilliques, arabes ou asiatiques...), aussi vous pouvez rencontrer des problèmes durant la génération des PDF.<br>Pour résoudre cela et avoir une prise en charge complète de PDF, vous pouvez télécharger la <a href="http://www.tcpdf.org/" target="_blank">bibliothèque TCPDF</a> puis commenter ou supprimer la ligne <b>$dolibarr_pdf_force_fpdf=1</b>, et ajouter à la place <b>$dolibarr_lib_TCPDF_PATH='chemin_vers_TCPDF'</b>
-LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:<br>1 : local tax apply on products and services without vat (localtax is calculated on amount without tax)<br>2 : local tax apply on products and services including vat (localtax is calculated on amount + main tax)<br>3 : local tax apply on products without vat (localtax is calculated on amount without tax)<br>4 : local tax apply on products including vat (vat is calculated on amount + main vat)<br>5 : local tax apply on services without vat (localtax is calculated on amount without tax)<br>6 : local tax apply on services including vat (localtax is calculated on amount + tax)
+LocalTaxDesc=Certains pays appliquent 2 voire 3 taux sur chaque ligne de facture. Si c'est le cas, choisissez le type du deuxième et troisième taux et sa valeur. Les types possibles sont:<br>1 : taxe locale sur les produits et services hors tva (la taxe locale est calculée sur le montant hors taxe)<br>2 : taxe locale sur les produits et services avant tva (la taxe locale est appliquée sur le montant + tva)<br>3 : taxe locale uniquement sur les produits hors tva (la taxe locale est calculée sur le montant hors taxe)<br>4 : taxe locale uniquement sur les produits avant tva (la taxe locale est calculée sur le montant + tva)<br>5 : taxe locale uniquement sur les services hors tva (la taxe locale est calculée sur le montant hors taxe)<br>6 : taxe locale uniquement sur les service avant tva (la taxe locale est calculée sur le montant + tva)
 SMS=SMS
 LinkToTestClickToDial=Entrez un numéro de téléphone à appeler pour tester le lien d'appel « ClickToDial » pour l'utilisateur <strong>%s</strong>
 RefreshPhoneLink=Rafraichir lien
@@ -540,10 +540,10 @@ Module5000Name=Multi-société
 Module5000Desc=Permet de gérer plusieurs sociétés
 Module6000Name=Workflow
 Module6000Desc=Gérer le Workflow
-Module20000Name=Gestion de la demande de congès
+Module20000Name=Gestion des demandes de congès
 Module20000Desc=Déclaration et suivi des congès des employés
-Module39000Name=Product lot
-Module39000Desc=Lot or serial number, eat-by and sell-by date management on products
+Module39000Name=Lot/Série du produit
+Module39000Desc=Gestion des lots et numéro de série, et date de péremption ou consommation sur les produits
 Module50000Name=PayBox
 Module50000Desc=Module permettant d'offrir en ligne une page de paiement par carte de crédit avec PayBox
 Module50100Name=Point de vente
@@ -858,7 +858,7 @@ LocalTax2IsUsedDescES= L'IRPF proposé par défaut lors de la création de propo
 LocalTax2IsNotUsedDescES= L'IRPF proposé par défaut est 0. Fin de règle.
 LocalTax2IsUsedExampleES= En Espagne, ce sont des professionnels autonomes et indépendants qui offrent des services, et des sociétés qui ont choisi le système fiscal du module.
 LocalTax2IsNotUsedExampleES= En Espagne, ce sont des sociétés qui ne sont pas soumises au système fiscal du module.
-CalcLocaltax=Reports on local taxes
+CalcLocaltax=Rapports sur les taxes locales
 CalcLocaltax1=Ventes - Achats
 CalcLocaltax1Desc=Les rapports des Taxes locales sont calculées avec la différence entre les taxes locales de ventes et les taxes locales d'achats
 CalcLocaltax2=Achats
@@ -1023,14 +1023,14 @@ NoEventOrNoAuditSetup=Aucun événement d'audit de sécurité n'a été enregist
 NoEventFoundWithCriteria=Aucun événement d'audit de sécurité trouvé avec ces critères.
 SeeLocalSendMailSetup=Voir la configuration locale de sendmail
 BackupDesc=Pour réaliser une sauvegarde complète de Dolibarr, vous devez :
-BackupDesc2=Save content of documents directory (<b>%s</b>) that contains all uploaded and generated files (you can make a zip for example).
-BackupDesc3=Save content of your database (<b>%s</b>) into a dump file. For this, you can use following assistant.
+BackupDesc2=Sauvegardez le contenu du répertoire document (<b>%s</b>) qui contient tous les fichiers envoyés ou générés (vous pouvez créer un zip du répertoire par exemple).
+BackupDesc3=Sauvez le contenu de votre base de données (<b>%s</b>) dans un fichier « dump ». Pour cela vous pouvez utiliser l'assistant ci-dessous.
 BackupDescX=Le répertoire archivé devra être placé en lieu sûr.
 BackupDescY=Le fichier « dump » généré devra être placé en lieu sûr.
 BackupPHPWarning=La sauvegarde n'est pas garantie avec cette méthode. Préférez la méthode précédente.
 RestoreDesc=Pour restaurer une sauvegarde de Dolibarr, vous devez :
-RestoreDesc2=Restore archive file (zip file for example) of documents directory to extract tree of files in documents directory of a new Dolibarr installation or into this current documents directoy (<b>%s</b>).
-RestoreDesc3=Restore the data, from a backup dump file, into the database of the new Dolibarr installation or into the database of this current installation (<b>%s</b>). Warning, once restore is finished, you must use a login/password, that existed when backup was made, to connect again. To restore a backup database into this current installation, you can follow this assistant.
+RestoreDesc2=Restaurez le fichier archive (fichier zip par exemple) du répertoire documents en extrayant l'arborescence dans le répertoire documents d'une nouvelle installation de Dolibarr ou dans le répertoire documents de cette installation (<b>%s</b>).
+RestoreDesc3=Restaurez les données, depuis le fichier « dump » de sauvegarde, dans  la base de données d'une nouvelle installation de Dolibarr ou de cette instance en cours (<b>%s</b>). Attention, une fois la restauration faite, il faudra utiliser un identifiant/mot de passe administrateur existant à l'époque de la sauvegarde pour se connecter. Pour restaurer la base dans l'installation actuelle, vous pouvez utiliser l'assistant suivant.
 RestoreMySQL=Importation MySQL
 ForcedToByAModule= Cette règle est forcée à <b>%s</b> par un des modules activés
 PreviousDumpFiles=Fichiers de sauvegarde de la base de données disponibles
@@ -1095,7 +1095,7 @@ BrowserIsOK=Vous utilisez le navigateur %s. Ce navigateur est réputé optimisé
 BrowserIsKO=Vous utilisez le navigateur %s. Ce navigateur est déconseillé pour des raisons de sécurité, performance et qualité des pages restituées. Nous vous recommandons d'utiliser Firefox, Chrome, Opera ou Safari.
 XDebugInstalled=XDebug est chargé.
 XCacheInstalled=XCache est chargé.
-AddRefInList=Afficher les références client/fournisseur dans les listes (listes déroulantes ou à autocomplétion) et les libellés des liens clickables. Les tiers apparaîtront alors sous la forme "CC12345 - SC45678 - La big company coorp", au lieu de "La big company coorp".
+AddRefInList=Afficher les références client/fournisseur dans les listes (listes déroulantes ou à autocomplétion) et les libellés des liens clicables. Les tiers apparaîtront alors sous la forme "CC12345 - SC45678 - La big company coorp", au lieu de "La big company coorp".
 FieldEdition=Édition du champ %s
 FixTZ=Correction du fuseau horaire
 FillThisOnlyIfRequired=Exemple: +2 (ne remplir que si un décalage d'heure est constaté dans l'export)
@@ -1547,7 +1547,7 @@ CashDeskBankAccountForCB= Compte par défaut à utiliser pour l'encaissement en
 CashDeskDoNotDecreaseStock=Désactiver la réduction de stocks systématique lorsque une vente se fait à partir du Point de Vente (si «non», la réduction du stock est faite pour chaque vente faite depuis le POS, quelquesoit l'option de changement de stock définit dans le module Stock).
 CashDeskIdWareHouse=Forcer et restreindre l'emplacement/entrepôt à utiliser pour la réduction de stock
 StockDecreaseForPointOfSaleDisabled=Réduction de stock lors de l'utilisation du Point de Vente désactivée
-StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with lot management
+StockDecreaseForPointOfSaleDisabledbyBatch=La décrémentation de stock depuis ce module Point de Vente n'est pas encore compatible avec la gestion des numéros de lots/série.
 CashDeskYouDidNotDisableStockDecease=Vous n'avez pas désactivé la réduction de stocks lors de la réalisation d'une vente depuis le Point de Vente. Aussi, un entrepôt/emplacement est nécessaire.
 ##### Bookmark #####
 BookmarkSetup=Configuration du module Marque-pages
@@ -1625,6 +1625,6 @@ GoOntoContactCardToAddMore=Allez sur l'onglet "Notifications" d'un contact de ti
 Threshold=Seuil
 BackupDumpWizard=Assistant de génération d'un fichier de sauvegarde de la base de données
 SomethingMakeInstallFromWebNotPossible=L'installation de module externe est impossible depuis l'interface web pour la raison suivante : 
-SomethingMakeInstallFromWebNotPossible2=For this reason, process to upgrade described here is only manual steps a privileged user can do.
+SomethingMakeInstallFromWebNotPossible2=Pour cette raison, le processus de mise à jour décrit ici est uniquement une série de manipulations que seul un utilisateur ayant des droits privilégiés peut faire
 InstallModuleFromWebHasBeenDisabledByFile=L'installation de module externe depuis l'application a été désactivé par l'administrator. Vous devez lui demander de supprimer le fichier <strong>%s</strong> pour permettre cette fonctionnalité.
-ConfFileMuseContainCustom=Installing an external module from application save the module files into directory <strong>%s</strong>. To have this directory processed by Dolibarr, you must setup your <strong>conf/conf.php</strong> to have option<br>- <strong>$dolibarr_main_url_root_alt</strong> enabled to value <strong>$dolibarr_main_url_root_alt="/custom"</strong><br>- <strong>$dolibarr_main_document_root_alt</strong> enabled to value <strong>"%s/custom"</strong>
+ConfFileMuseContainCustom=Installé un module externe pour l'application enregistre les fichiers de module dans le répertoire <strong>%s</strong>. Pour avoir ce répertoire vu par Dolibarr, vous devez configurer votre <strong>conf/conf.php</strong> d'avoir l'option <br> - <strong>$dolibarr_main_url_root_alt</strong> activé à la valeur <strong>$dolibarr_main_url_root_alt="/custom"</strong><br> - <strong>$dolibarr_main_document_root_alt</strong> activé à la valeur <strong>"%s/custom"</strong>
diff --git a/htdocs/langs/fr_FR/banks.lang b/htdocs/langs/fr_FR/banks.lang
index 3d4ad1aede80564fd309cf722727e181a6fd36dd..2f25040691d4f34ff85ca0bfa4767cc3ce7a7090 100644
--- a/htdocs/langs/fr_FR/banks.lang
+++ b/htdocs/langs/fr_FR/banks.lang
@@ -163,5 +163,5 @@ LabelRIB=Nom du RIB
 NoBANRecord=Aucun RIB enregistré
 DeleteARib=Supprimé RIB enregistré
 ConfirmDeleteRib=Etes vous sur de vouloir supprimé ce RIB ?
-StartDate=Start date
-EndDate=End date
+StartDate=Date de début
+EndDate=Date de fin
diff --git a/htdocs/langs/fr_FR/members.lang b/htdocs/langs/fr_FR/members.lang
index 3cc4fbd11addd9a9aef948995ef600842d5c603c..c04ae00f4745a109acf664b88fd6b06bbf46e36c 100644
--- a/htdocs/langs/fr_FR/members.lang
+++ b/htdocs/langs/fr_FR/members.lang
@@ -203,4 +203,4 @@ MembersByNature=Adhérents par nature
 VATToUseForSubscriptions=Taux de TVA pour les adhésions
 NoVatOnSubscription=Pas de TVA sur les adhésions
 MEMBER_PAYONLINE_SENDEMAIL=Email à avertir en cas de retour de paiement validé pour une cotisation
-ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Produit utilisé pour la ligne d'abonnement dans la facture: %s
+ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Produit/Service utilisé pour la ligne de cotisation dans la facture: %s
diff --git a/htdocs/langs/fr_FR/orders.lang b/htdocs/langs/fr_FR/orders.lang
index 6f38e908c4e54ae158989197c294cb480a903880..7be9c72e53ab8338e38ca5018897cfa0f00e6782 100644
--- a/htdocs/langs/fr_FR/orders.lang
+++ b/htdocs/langs/fr_FR/orders.lang
@@ -27,7 +27,7 @@ SuppliersOrdersToProcess=Commandes fournisseurs à traiter
 StatusOrderCanceledShort=Annulée
 StatusOrderDraftShort=Brouillon
 StatusOrderValidatedShort=Validée
-StatusOrderSentShort=En cours de traitement
+StatusOrderSentShort=En cours
 StatusOrderSent=Envoi en cours
 StatusOrderOnProcessShort=Commandé
 StatusOrderProcessedShort=Traitée
diff --git a/htdocs/langs/fr_FR/other.lang b/htdocs/langs/fr_FR/other.lang
index b8087ff18c86690f8ca236e0b43e8c7961f7eac6..84973f468e4e898b28bb104af6bb06d89febf680 100644
--- a/htdocs/langs/fr_FR/other.lang
+++ b/htdocs/langs/fr_FR/other.lang
@@ -12,6 +12,7 @@ Notify_FICHINTER_VALIDATE=Validation fiche intervention
 Notify_FICHINTER_SENTBYMAIL=Envoi fiche d'intervention par email
 Notify_BILL_VALIDATE=Validation facture client
 Notify_BILL_UNVALIDATE=Dévalidation facture client
+Notify_ORDER_SUPPLIER_VALIDATE=Commande fournisseur enregistrée
 Notify_ORDER_SUPPLIER_APPROVE=Approbation commande fournisseur
 Notify_ORDER_SUPPLIER_REFUSE=Refus commande fournisseur
 Notify_ORDER_VALIDATE=Validation commande client
@@ -202,7 +203,7 @@ NewKeyWillBe=Vos nouveaux identifiants pour vous connecter à l'application sero
 ClickHereToGoTo=Cliquez ici pour aller sur %s
 YouMustClickToChange=Vous devez toutefois auparavant cliquer sur le lien suivant, afin de valider ce changement de mot de passe
 ForgetIfNothing=Si vous n'êtes pas à l'origine de cette demande, ignorez simplement ce message. Vos identifiants restent sécurisés.
-IfAmountHigherThan=If amount higher than <strong>%s</strong>
+IfAmountHigherThan=Si le montant est supérieur à <strong>%s</strong>
 
 ##### Calendar common #####
 AddCalendarEntry=Ajouter entrée dans le calendrier %s
diff --git a/htdocs/langs/fr_FR/productbatch.lang b/htdocs/langs/fr_FR/productbatch.lang
index 708c79321715f5f6a263b833d2b53ec57c81fad2..d2e004231acaada919ea9c474e18edfa8e26547c 100644
--- a/htdocs/langs/fr_FR/productbatch.lang
+++ b/htdocs/langs/fr_FR/productbatch.lang
@@ -1,7 +1,7 @@
 # ProductBATCH language file - en_US - ProductBATCH
 ManageLotSerial=Utiliser les numéros de lots/série
 ProductStatusOnBatch=Oui (Lot/Série requis)
-ProductStatusNotOnBatch=No (Lot/Série non utilisé)
+ProductStatusNotOnBatch=Non (Lot/Série non utilisé)
 ProductStatusOnBatchShort=Oui
 ProductStatusNotOnBatchShort=Non
 Batch=Lot/Série
diff --git a/htdocs/langs/fr_FR/projects.lang b/htdocs/langs/fr_FR/projects.lang
index 24eef7ce06b3b992d8810fd4d7d4ae21ff257871..3aea8365f9e6856141b622bc461b1cc84b785859 100644
--- a/htdocs/langs/fr_FR/projects.lang
+++ b/htdocs/langs/fr_FR/projects.lang
@@ -128,7 +128,7 @@ TypeContact_project_task_external_TASKEXECUTIVE=Responsable
 TypeContact_project_task_internal_TASKCONTRIBUTOR=Contributeur
 TypeContact_project_task_external_TASKCONTRIBUTOR=Contributeur
 SelectElement=Séléctionnez l'élément
-AddElement=Link to element
+AddElement=Associer l'élément
 UnlinkElement=Délier l'élément
 # Documents models
 DocumentModelBaleine=Modèle de rapport de projet complet (logo...)
diff --git a/htdocs/langs/it_IT/accountancy.lang b/htdocs/langs/it_IT/accountancy.lang
index b12cd515f633fc049b038e3d29945a3a4979f7ef..42479a49cac48662f8587fd9218a5127354ac246 100644
--- a/htdocs/langs/it_IT/accountancy.lang
+++ b/htdocs/langs/it_IT/accountancy.lang
@@ -13,9 +13,9 @@ ConfigAccountingExpert=Configurazione del modulo contabilità esperta
 Journaux=Giornali
 JournalFinancial=Giornali finanziari
 Exports=Esportazioni
-Export=Export
+Export=Esportazioni
 Modelcsv=Modello di esportazione
-OptionsDeactivatedForThisExportModel=For this export model, options are deactivated
+OptionsDeactivatedForThisExportModel=Per questo modello di esportazione, le opzioni sono disattivate
 Selectmodelcsv=Seleziona un modello di esportazione
 Modelcsv_normal=Esportazione classica
 Modelcsv_CEGID=Esporta tramite CEGID Esperto
@@ -45,7 +45,7 @@ UpdateAccount=Modifica di un account di contabilità
 UpdateMvts=Modifica di un movimento
 WriteBookKeeping=Record accounts in general ledger
 Bookkeeping=Contabilità generale
-AccountBalanceByMonth=Account balance by month
+AccountBalanceByMonth=Salso del conto per mese
 
 AccountingVentilation=Breakdown accounting
 AccountingVentilationSupplier=Breakdown accounting supplier
@@ -60,8 +60,8 @@ IntoAccount=In the accounting account
 Ventilate=Ventilate
 VentilationAuto=Automatic breakdown
 
-Processing=Processing
-EndProcessing=The end of processing
+Processing=In elaborazione
+EndProcessing=Fine del processo
 AnyLineVentilate=Any lines to ventilate
 SelectedLines=Righe selezionate
 Lineofinvoice=Riga fattura
diff --git a/htdocs/langs/it_IT/admin.lang b/htdocs/langs/it_IT/admin.lang
index afa069aac529ec0ce7557ea3d209af25b7f6015e..a62039e19da167a3c189df1bf06fdf495ebbaba1 100644
--- a/htdocs/langs/it_IT/admin.lang
+++ b/htdocs/langs/it_IT/admin.lang
@@ -397,7 +397,7 @@ ExtrafieldParamHelpradio=La lista dei parametri deve rispettare il formato chiav
 ExtrafieldParamHelpsellist=La lista dei parametri viene da una tabella<br />Sintassi: table_name:label_field:id_field::filter<br>Per esempio: c_typent:libelle:id::filter<br /><br />filter può essere un semplice test (tipo active=1 per mostrare solo valori attivi) <br /> se vuoi filtrare per extrafield usa la sintassi extra.fieldcode=... (dove fieldcode è il codice del extrafield)<br /><br />Per far dipendere la lista da un'altra usa:<br />c_typent:libelle:id:parent_list_code|parent_column:filter
 ExtrafieldParamHelpchkbxlst=Parameters list comes from a table<br>Syntax : table_name:label_field:id_field::filter<br>Example : c_typent:libelle:id::filter<br><br>filter can be a simple test (eg active=1) to display only active value <br> if you want to filter on extrafields use syntaxt  extra.fieldcode=... (where field code is the code of extrafield)<br><br>In order to have the list depending on another :<br>c_typent:libelle:id:parent_list_code|parent_column:filter
 LibraryToBuildPDF=Libreria utilizzata per generare PDF
-WarningUsingFPDF=Warning: Your <b>conf.php</b> contains directive <b>dolibarr_pdf_force_fpdf=1</b>. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.<br>To solve this and have a full support of PDF generation, please download <a href="http://www.tcpdf.org/" target="_blank">TCPDF library</a>, then comment or remove the line <b>$dolibarr_pdf_force_fpdf=1</b>, and add instead <b>$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'</b>
+WarningUsingFPDF=Avviso: Il tuo <b>conf.php</b> contiene la direttiva <b>dolibarr_pdf_force_fpdf = 1.</b> Questo significa che si utilizza la libreria FPDF per generare file PDF. Questa libreria è obsoleta e non supporta un molte funzioni (Unicode, trasparenza dell'immagine, lingue cirillico, arabo e asiatico, ...), quindi potrebbero verificarsi errori durante la generazione di file PDF. <br> Per risolvere questo problema ed avere un supporto completo di generazione di file PDF, scarica <a href="http://www.tcpdf.org/" target="_blank">biblioteca TCPDF</a> , quindi commentare o rimuovere la riga <b>$ dolibarr_pdf_force_fpdf = 1,</b> e aggiungere invece <b>$ dolibarr_lib_TCPDF_PATH = 'path_to_TCPDF_dir'</b>
 LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:<br>1 : local tax apply on products and services without vat (localtax is calculated on amount without tax)<br>2 : local tax apply on products and services including vat (localtax is calculated on amount + main tax)<br>3 : local tax apply on products without vat (localtax is calculated on amount without tax)<br>4 : local tax apply on products including vat (vat is calculated on amount + main vat)<br>5 : local tax apply on services without vat (localtax is calculated on amount without tax)<br>6 : local tax apply on services including vat (localtax is calculated on amount + tax)
 SMS=SMS
 LinkToTestClickToDial=Per testare l'indirizzo ClickToDial dell'utente <strong>%s</strong>, inserisci un numero di telefono
@@ -457,7 +457,7 @@ Module55Desc=Gestione codici a barre
 Module56Name=Telefonia
 Module56Desc=Integrazione telefonia
 Module57Name=Ordini permanenti
-Module57Desc=Standing orders and withdrawal management. Also includes generation of SEPA file for european countries.
+Module57Desc=Gli ordini permanenti e le domiciliazioni. Comprende anche la generazione di file di SEPA per i paesi europei.
 Module58Name=ClickToDial
 Module58Desc=Integrazione di un sistema ClickToDial (per esempio Asterisk)
 Module59Name=Bookmark4u
@@ -513,7 +513,7 @@ Module1400Desc=Gestione contabilità per esperti (partita doppia)
 Module1520Name=Document Generation
 Module1520Desc=Mass mail document generation
 Module1780Name=Tag/categorie
-Module1780Desc=Create tags/category (products, customers, suppliers, contacts or members)
+Module1780Desc=Crea tag / categorie (prodotti, clienti, fornitori, contatti o membri)
 Module2000Name=FCKeditor
 Module2000Desc=Permette di usare un editor avanzato per alcune aree di testo
 Module2200Name=Dynamic Prices
@@ -611,7 +611,7 @@ Permission106=Esporta gli invii
 Permission109=Eliminare spedizioni
 Permission111=Vedere i conti bancari
 Permission112=Creare/modificare/cancellare e confrontare operazioni bancarie
-Permission113=Setup financial accounts (create, manage categories)
+Permission113=Imposta conti finanziari (crea, gestire le categorie)
 Permission114=Reconciliate transactions
 Permission115=Operazioni di esportazione ed estratti conto
 Permission116=Trasferimenti tra conti
@@ -629,22 +629,22 @@ Permission151=Vedere ordini permanenti
 Permission152=Creare/modificare richieste di ordini permanenti
 Permission153=Trasmettere fatture ordini permanenti
 Permission154=Pagare/rifiutare fatture ordini permanenti
-Permission161=Read contracts/subscriptions
+Permission161=Leggi contratti / abbonamenti
 Permission162=Crea/modifica contratti/abbonamenti
-Permission163=Activate a service/subscription of a contract
+Permission163=Attiva un servizio/sottoscrizione di un contratto
 Permission164=Disable a service/subscription of a contract
-Permission165=Delete contracts/subscriptions
-Permission171=Read trips and expenses (own and his subordinates)
-Permission172=Create/modify trips and expenses
-Permission173=Delete trips and expenses
+Permission165=Elimina contratti / abbonamenti
+Permission171=Vedi viaggi e spese (propri e i suoi subordinati)
+Permission172=Crea/modifica nota spese
+Permission173=Elimina nota spese
 Permission174=Read all trips and expenses
-Permission178=Export trips and expenses
+Permission178=Esporta note spese
 Permission180=Vedere fornitori
 Permission181=Vedere ordini fornitore
 Permission182=Creare / modificare ordini fornitore
 Permission183=Validare ordini fornitore
 Permission184=Approvare ordini fornitore
-Permission185=Order or cancel supplier orders
+Permission185=Ordinare o annullare ordini fornitori
 Permission186=Ricevere ordini fornitore
 Permission187=Chiudere fornitore ordini
 Permission188=Annullare ordini fornitore
@@ -766,10 +766,10 @@ Permission1237=Esportazione ordini fornitori e loro dettagli
 Permission1251=Eseguire importazioni di massa di dati esterni nel database (data load)
 Permission1321=Esportare fatture cliente, attributi e pagamenti
 Permission1421=Esportare ordini cliente e attributi
-Permission23001=Read Scheduled job
-Permission23002=Create/update Scheduled job
-Permission23003=Delete Scheduled job
-Permission23004=Execute Scheduled job
+Permission23001=Leggi lavoro pianificato
+Permission23002=Crea / Aggiorna lavoro pianificato
+Permission23003=Elimina lavoro pianificato
+Permission23004=Esegui lavoro pianificato
 Permission2401=Vedere azioni (eventi o compiti) personali
 Permission2402=Creare/modificare azioni (eventi o compiti) personali
 Permission2403=Cancellare azioni (eventi o compiti) personali
@@ -1018,12 +1018,12 @@ NoEventFoundWithCriteria=Nessun evento di sicurezza trovato con i criteri di ric
 SeeLocalSendMailSetup=Controllare le impostazioni locali del server di posta (sendmail)
 BackupDesc=Per effettuare un backup completo di Dolibarr è necessario:
 BackupDesc2=Save content of documents directory (<b>%s</b>) that contains all uploaded and generated files (you can make a zip for example).
-BackupDesc3=Save content of your database (<b>%s</b>) into a dump file. For this, you can use following assistant.
+BackupDesc3=Salva il contenuto del tuo database <b>(%s)</b> in un file dump. È possibile utilizzare il seguente assistente.
 BackupDescX=L'archivio delle directory va conservato in un luogo sicuro.
 BackupDescY=Il file generato va conservato in un luogo sicuro.
 BackupPHPWarning=Il backup non può essere garantito con questo metodo. Preferito quello precedente
 RestoreDesc=Per ripristinare un backup Dolibarr, è necessario:
-RestoreDesc2=Restore archive file (zip file for example) of documents directory to extract tree of files in documents directory of a new Dolibarr installation or into this current documents directoy (<b>%s</b>).
+RestoreDesc2=Ripristinare da un file di archivio (zip file, ad esempio) della cartella Documenti per estrarre la lista dei file nella cartella documenti nella nuova installazione di Dolibarr o in questa cartella di documenti <b>(%s).</b>
 RestoreDesc3=Restore the data, from a backup dump file, into the database of the new Dolibarr installation or into the database of this current installation (<b>%s</b>). Warning, once restore is finished, you must use a login/password, that existed when backup was made, to connect again. To restore a backup database into this current installation, you can follow this assistant.
 RestoreMySQL=Importa MySQL
 ForcedToByAModule= Questa regola è impsotata su <b>%s</b> da un modulo attivo
@@ -1209,7 +1209,7 @@ FicheinterNumberingModules=Numerazione dei moduli di intervento
 TemplatePDFInterventions=Modelli per moduli di intervento in pdf
 WatermarkOnDraftInterventionCards=Bozze delle schede di intervento filigranate (nessuna filigrana se vuoto)
 ##### Contracts #####
-ContractsSetup=Contracts/Subscriptions module setup
+ContractsSetup= Modulo di configurazione Contratti / Sottoscrizioni
 ContractsNumberingModules=Moduli per la numerazione dei contratti
 TemplatePDFContracts=Modelli per documenti e contratti
 FreeLegalTextOnContracts=Testo libero sui contratti
@@ -1420,7 +1420,7 @@ BarcodeDescUPC=Codice a barre di tipo UPC
 BarcodeDescISBN=Codice a barre di tipo ISBN
 BarcodeDescC39=Codice a barre di tipo C39
 BarcodeDescC128=Codice a barre di tipo C128
-GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".<br>For example: /usr/local/bin/genbarcode
+GenbarcodeLocation=Bar code generation è uno strumento di linea di comando (utilizzato dal motore interno per alcuni tipi di codici a barre). Deve essere compatibile con "genbarcode". <br> Per esempio: /usr/local/bin/genbarcode
 BarcodeInternalEngine=Motore interno
 BarCodeNumberManager=Manager per auto-definizione dei numeri barcode
 ##### Prelevements #####
@@ -1604,7 +1604,7 @@ NbSpeMin=Minimum number of special characters
 NbIteConsecutive=Maximum number of repeating same characters
 NoAmbiCaracAutoGeneration=Do not use ambiguous characters ("1","l","i","|","0","O") for automatic generation
 SalariesSetup=Setup of module salaries
-SortOrder=Sort order
+SortOrder=Ordina
 Format=Formato
 TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type
 IncludePath=Include path (defined into variable %s)
diff --git a/htdocs/langs/it_IT/agenda.lang b/htdocs/langs/it_IT/agenda.lang
index 5ee3c2ee363f251dd07139c2f15c335e7fa884c4..7629981d59b29e1089915da8283d41dca1315d58 100644
--- a/htdocs/langs/it_IT/agenda.lang
+++ b/htdocs/langs/it_IT/agenda.lang
@@ -29,7 +29,7 @@ ActionsToDoBy=Eventi assegnati a
 ActionsDoneBy=Azioni fatte da
 ActionsForUser=Eventi per utente
 ActionsForUsersGroup=Eventi per tutti gli utenti del gruppo
-ActionAssignedTo=Event assigned to
+ActionAssignedTo=Evento assegnato a
 AllMyActions= Tutte i miei compiti/azioni
 AllActions= Tutte i compiti/azioni
 ViewList=Vista elenco
@@ -49,9 +49,9 @@ InvoiceValidatedInDolibarrFromPos=Ricevute %s validate dal POS
 InvoiceBackToDraftInDolibarr=Fattura %s riportata allo stato di bozza
 InvoiceDeleteDolibarr=La fattura %s è stata cancellata
 OrderValidatedInDolibarr=Ordine convalidato
-OrderDeliveredInDolibarr=Order %s classified delivered
+OrderDeliveredInDolibarr=Ordine %s classificato consegnato
 OrderCanceledInDolibarr=ordine %s annullato
-OrderBilledInDolibarr=Order %s classified billed
+OrderBilledInDolibarr=Ordine %s classificato fatturato
 OrderApprovedInDolibarr=Ordine %s approvato
 OrderRefusedInDolibarr=Ordine %s rifiutato
 OrderBackToDraftInDolibarr=Ordine %s riportato allo stato di bozza
@@ -61,9 +61,9 @@ OrderSentByEMail=Ordine cliente %s inviato per email
 InvoiceSentByEMail=Fattura attiva %s inviata per email
 SupplierOrderSentByEMail=Ordine fornitore %s inviato per email
 SupplierInvoiceSentByEMail=Fornitore %s fattura inviata per email
-ShippingSentByEMail=Shipment %s sent by EMail
-ShippingValidated= Shipment %s validated
-InterventionSentByEMail=Intervention %s sent by EMail
+ShippingSentByEMail=Spedizione %s inviata per Email
+ShippingValidated= Spedizione %s convalidata
+InterventionSentByEMail=Intervento %s inviato via Email
 NewCompanyToDolibarr= Soggetto terzo creato
 DateActionPlannedStart= Data di inizio prevista
 DateActionPlannedEnd= Data di fine prevista
@@ -72,7 +72,7 @@ DateActionDoneEnd= Data effettiva di fine
 DateActionStart= Data di inizio
 DateActionEnd= Data di fine
 AgendaUrlOptions1=È inoltre possibile aggiungere i seguenti parametri ai filtri di output:
-AgendaUrlOptions2=<b>login=%s</b> to restrict output to actions created by or assigned to user <b>%s</b>.
+AgendaUrlOptions2=<b>login = %s</b> ​​per limitare l'uscita di azioni create da o assegnate <b>all'utente %s.</b>
 AgendaUrlOptions3=<b>logina = %s</b> per limitare l'output alle azioni amministrate dall'utente<b>%s</b>
 AgendaUrlOptions4=<b>logint = %s</b> per limitare l'output alle azioni modificate dall'<b>utente %s</b>.
 AgendaUrlOptionsProject=<b>project=PROJECT_ID</b> per limitare l'output alle azioni associate al progetto <b>PROJECT_ID</b>.
@@ -94,5 +94,5 @@ WorkingTimeRange=Intervallo di tempo di lavoro
 WorkingDaysRange=Intervallo di giorni di lavoro
 AddEvent=Crea evento
 MyAvailability=Mie disponibilità
-ActionType=Event type
-DateActionBegin=Start event date
+ActionType=Tipo di evento
+DateActionBegin=Data di inizio evento
diff --git a/htdocs/langs/it_IT/bills.lang b/htdocs/langs/it_IT/bills.lang
index 9e679d6379acf159604743aae310428d2c7c0a46..89528bc4d23331bc131535ef8713fed6309db1c0 100644
--- a/htdocs/langs/it_IT/bills.lang
+++ b/htdocs/langs/it_IT/bills.lang
@@ -218,7 +218,7 @@ NoInvoice=Nessuna fattura
 ClassifyBill=Classificazione fattura
 SupplierBillsToPay=Fatture fornitori da pagare
 CustomerBillsUnpaid=Fatture attive non pagate
-DispenseMontantLettres=The written invoices through mecanographic procedures are dispensed by the order in letters
+DispenseMontantLettres=Le fatture scritte attraverso procedure meccanografiche sono distribuite in base all'ordine in lettere
 NonPercuRecuperable=Non recuperabile
 SetConditions=Imposta le condizioni di pagamento
 SetMode=Imposta la modalità di pagamento
diff --git a/htdocs/langs/it_IT/categories.lang b/htdocs/langs/it_IT/categories.lang
index 3273f8e1cae2335560f7235f6660a8d88640421e..4eacc02db669db192e2986809fbb114058dedcc3 100644
--- a/htdocs/langs/it_IT/categories.lang
+++ b/htdocs/langs/it_IT/categories.lang
@@ -39,7 +39,7 @@ ErrForgotField=Hai dimenticato di indicare i campi
 ErrCatAlreadyExists=La categoria esiste già
 AddProductToCat=Aggiungere il prodotto ad una tag/categoria
 ImpossibleAddCat=Non è possibile aggiungere la tag/categoria
-ImpossibleAssociateCategory=Impossible to associate the tag/category to
+ImpossibleAssociateCategory=Impossibile associare il etichetta/categoria
 WasAddedSuccessfully=<b> %s </b> aggiunta con successo
 ObjectAlreadyLinkedToCategory=L'elemento è già collegato a questa tag/categoria
 CategorySuccessfullyCreated=Tag/categoria %s aggiunta con successo
@@ -56,7 +56,7 @@ MemberHasNoCategory=Questo membro non è collegato ad alcuna tag/categoria
 ContactHasNoCategory=This contact is not in any tags/categories
 ClassifyInCategory=Aggiungi a tag/categoria
 NoneCategory=Nessuna
-NotCategorized=Without tag/category
+NotCategorized=Senza etichetta/categoria
 CategoryExistsAtSameLevel=Questa categoria esiste già allo stesso livello
 ReturnInProduct=Torna alla scheda prodotto/servizio
 ReturnInSupplier=Torna alla scheda fornitore
@@ -67,7 +67,7 @@ ContentsNotVisibleByAllShort=Contenuti non visibili a tutti
 CategoriesTree=Tags/categories tree
 DeleteCategory=Elimina tag/categoria
 ConfirmDeleteCategory=Vuoi davvero eliminare questa tag/categoria?
-RemoveFromCategory=Remove link with tag/categorie
+RemoveFromCategory=Rimuovere link con etichetta/categoria
 RemoveFromCategoryConfirm=Are you sure you want to remove link between the transaction and the tag/category ?
 NoCategoriesDefined=No tag/category defined
 SuppliersCategoryShort=Tag/categoria fornitori
diff --git a/htdocs/langs/it_IT/donations.lang b/htdocs/langs/it_IT/donations.lang
index d4809b8394bfe8182927cd5d81f579a7d39d01c3..750c8b729b623cf6d3c465a9d23b30913c29b48e 100644
--- a/htdocs/langs/it_IT/donations.lang
+++ b/htdocs/langs/it_IT/donations.lang
@@ -36,7 +36,7 @@ ThankYou=Grazie
 IConfirmDonationReception=Si dichiara di aver ricevuto la seguente cifra a titolo di donazione
 MinimumAmount=L'importo minimo è %s
 FreeTextOnDonations=Free text to show in footer
-FrenchOptions=Options for France
+FrenchOptions=Opzioni per la Francia
 DONATION_ART200=Show article 200 from CGI if you are concerned
 DONATION_ART238=Show article 238 from CGI if you are concerned
 DONATION_ART885=Show article 885 from CGI if you are concerned
diff --git a/htdocs/langs/it_IT/errors.lang b/htdocs/langs/it_IT/errors.lang
index 2dfbe732001c1370d6da896a62c816ea53dac520..06f9f8c0faaf90787b38f6e7b50919998a5b3801 100644
--- a/htdocs/langs/it_IT/errors.lang
+++ b/htdocs/langs/it_IT/errors.lang
@@ -1,7 +1,7 @@
 # Dolibarr language file - Source file is en_US - errors
 
 # No errors
-NoErrorCommitIsDone=Nessun errore, assegnamo
+NoErrorCommitIsDone=Nessun errore, committiamo
 # Errors
 Error=Errore
 Errors=Errori
@@ -25,7 +25,7 @@ ErrorFromToAccountsMustDiffers=I conti bancari di origine e destinazione devono
 ErrorBadThirdPartyName=Valore non valido per il nome del soggetto terzo
 ErrorProdIdIsMandatory=%s obbligatorio
 ErrorBadCustomerCodeSyntax=Sintassi del codice cliente errata
-ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned.
+ErrorBadBarCodeSyntax=Sintassi del codice a barre errata. Potresti aver impostato un barcode errato o definito una maschera di barcode per la numerazione che non corrisponde al valore letto.
 ErrorCustomerCodeRequired=Il codice cliente è obbligatorio
 ErrorBarCodeRequired=Barcode richiesto
 ErrorCustomerCodeAlreadyUsed=Codice cliente già utilizzato
@@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Per questa funzionalità Javascript deve essere att
 ErrorPasswordsMustMatch=Le due password digitate devono essere identiche
 ErrorContactEMail=Si è verificato un errore tecnico. Si prega di contattare l'amministratore all'indirizzo <b>%s</b> <b>%s</b> indicando il codice di errore nel messaggio, o, meglio ancora, allegando uno screenshot della schermata attuale.
 ErrorWrongValueForField=Valore errato nel campo numero <b>%s</b> (il valore <b>'%s'</b>non corrisponde alla regex <b>%s</b>)
-ErrorFieldValueNotIn=Wrong value for field number <b>%s</b> (value '<b>%s</b>' is not a value available into field <b>%s</b> of table <b>%s</b> = <b>%s</b>)
+ErrorFieldValueNotIn=Valore errato per il campo numerico <b>%s</b> (valore '<b>%s'</b>' non è un valore consentito nel campo <b>%s</b> della tabella<b>%s =%s)</b>
 ErrorFieldRefNotIn=Valore errato nel campo numero <b>%s</b> (il valore <b>%s</b>non è un riferimento <b>%s</b> esistente)
 ErrorsOnXLines=Errori in <b>%s</b> righe del sorgente
 ErrorFileIsInfectedWithAVirus=Il programma antivirus non è stato in grado di convalidare il file (il file potrebbe essere infetto)
@@ -91,8 +91,8 @@ ErrorModuleSetupNotComplete=L'installazione del modulo pare incompleta. Vai su <
 ErrorBadMask=Errore sulla maschera
 ErrorBadMaskFailedToLocatePosOfSequence=Errore, maschera senza numero di sequenza
 ErrorBadMaskBadRazMonth=Errore, valore di reset non valido
-ErrorMaxNumberReachForThisMask=Max number reach for this mask
-ErrorCounterMustHaveMoreThan3Digits=Counter must have more than 3 digits
+ErrorMaxNumberReachForThisMask=Numero massimo raggiunto per questa maschera
+ErrorCounterMustHaveMoreThan3Digits=Il contatore deve avere più di 3 cifre
 ErrorSelectAtLeastOne=Errore. Selezionare almeno una voce.
 ErrorProductWithRefNotExist=Il prodotto con riferimento %s non esiste
 ErrorDeleteNotPossibleLineIsConsolidated=Impossibile cancellare il record perché è collegato ad una transazione bancaria conciliata
@@ -140,26 +140,26 @@ ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Errore, questo membro non è s
 ErrorThereIsSomeDeliveries=Errore, ci sono alcune consegne collegate a questa spedizione. Cancellazione rifiutata.
 ErrorCantDeletePaymentReconciliated=Impossibile cancellare un pagamento che ha generato una transazione bancaria che è stata conciliata
 ErrorCantDeletePaymentSharedWithPayedInvoice=Impossibile cancellare un pagamento condiviso con almeno una fattura con lo stato Pagato
-ErrorPriceExpression1=Cannot assign to constant '%s'
-ErrorPriceExpression2=Cannot redefine built-in function '%s'
-ErrorPriceExpression3=Undefined variable '%s' in function definition
-ErrorPriceExpression4=Illegal character '%s'
-ErrorPriceExpression5=Unexpected '%s'
-ErrorPriceExpression6=Wrong number of arguments (%s given, %s expected)
-ErrorPriceExpression8=Unexpected operator '%s'
-ErrorPriceExpression9=An unexpected error occured
-ErrorPriceExpression10=Iperator '%s' lacks operand
-ErrorPriceExpression11=Expecting '%s'
-ErrorPriceExpression14=Division by zero
-ErrorPriceExpression17=Undefined variable '%s'
-ErrorPriceExpression19=Expression not found
-ErrorPriceExpression20=Empty expression
-ErrorPriceExpression21=Empty result '%s'
-ErrorPriceExpression22=Negative result '%s'
-ErrorPriceExpressionInternal=Internal error '%s'
-ErrorPriceExpressionUnknown=Unknown error '%s'
-ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs
-ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without lot/serial information, on a product requiring lot/serial information
+ErrorPriceExpression1=Impossibile assegnare la costante '%s'
+ErrorPriceExpression2=Impossibile ridefinire la funzione integrata '%s'
+ErrorPriceExpression3=Variabile non definita '%s' nella definizione della funzione
+ErrorPriceExpression4=Carattere '%s' non valido 
+ErrorPriceExpression5=Valore imprevisto '%s'
+ErrorPriceExpression6=Numero errato di argomenti (inserito %s ,atteso %s)
+ErrorPriceExpression8=Operatore imprevisto '%s'
+ErrorPriceExpression9=Si è verificato un errore imprevisto
+ErrorPriceExpression10=Operatore '%s' senza operando
+ErrorPriceExpression11=Atteso '%s'
+ErrorPriceExpression14=Divisione per zero
+ErrorPriceExpression17=Variabile non definita '%s'
+ErrorPriceExpression19=Espressione non trovata
+ErrorPriceExpression20=Espressione vuota
+ErrorPriceExpression21=Risultato vuoto '%s'
+ErrorPriceExpression22=Risultato negativo '%s'
+ErrorPriceExpressionInternal=Errore interno '%s'
+ErrorPriceExpressionUnknown=Errore sconosciuto '%s'
+ErrorSrcAndTargetWarehouseMustDiffers=I magazzini di origine e di destinazione devono essere diversi
+ErrorTryToMakeMoveOnProductRequiringBatchData=Errore durante il movimento dello stock senza molte/una serie di informazioni, su un prodotto che richiede molte/una serie di informazioni
 ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified (approved or denied) before being allowed to do this action
 ErrorCantSetReceptionToTotalDoneWithReceptionDenied=All recorded receptions must first be verified (approved) before being allowed to do this action
 ErrorGlobalVariableUpdater0=HTTP request failed with error '%s'
@@ -168,8 +168,8 @@ ErrorGlobalVariableUpdater2=Parametro mancante: '%s'
 ErrorGlobalVariableUpdater3=The requested data was not found in result
 ErrorGlobalVariableUpdater4=SOAP client failed with error '%s'
 ErrorGlobalVariableUpdater5=No global variable selected
-ErrorFieldMustBeANumeric=Field <b>%s</b> must be a numeric value
-ErrorFieldMustBeAnInteger=Field <b>%s</b> must be an integer
+ErrorFieldMustBeANumeric=Il campo <b>%s</b> deve essere un valore numerico
+ErrorFieldMustBeAnInteger=Il campo <b>%s</b> deve essere un numero intero
 
 # Warnings
 WarningMandatorySetupNotComplete=I parametri di configurazione obbligatori non sono ancora stati definiti
diff --git a/htdocs/langs/it_IT/orders.lang b/htdocs/langs/it_IT/orders.lang
index 934fe566931507317c406eb0b78dda707621153d..ab2c5edce9111edf50ffab0175672216cab0864f 100644
--- a/htdocs/langs/it_IT/orders.lang
+++ b/htdocs/langs/it_IT/orders.lang
@@ -80,8 +80,8 @@ NoOtherOpenedOrders=Nessun altro ordine aperto
 NoDraftOrders=Nessuna bozza d'ordine
 OtherOrders=Altri ordini
 LastOrders=Last %s customer orders
-LastCustomerOrders=Last %s customer orders
-LastSupplierOrders=Last %s supplier orders
+LastCustomerOrders=Ultimi %s ordini del cliente
+LastSupplierOrders=Ultimi %s ordini dei fornitori
 LastModifiedOrders=Ultimi %s ordini modificati
 LastClosedOrders=Ultimi %s ordini chiusi
 AllOrders=Tutti gli ordini
diff --git a/htdocs/langs/it_IT/other.lang b/htdocs/langs/it_IT/other.lang
index b45819f1962a28ded91e3c7533c350754ffb6582..a1ff97351db73da89a560a5a85567b4655f53e53 100644
--- a/htdocs/langs/it_IT/other.lang
+++ b/htdocs/langs/it_IT/other.lang
@@ -12,6 +12,7 @@ Notify_FICHINTER_VALIDATE=Intervento convalidato
 Notify_FICHINTER_SENTBYMAIL=Intervento inviato per posta
 Notify_BILL_VALIDATE=Convalida fattura attiva
 Notify_BILL_UNVALIDATE=Ricevuta cliente non convalidata
+Notify_ORDER_SUPPLIER_VALIDATE=Supplier order recorded
 Notify_ORDER_SUPPLIER_APPROVE=Ordine fornitore approvato
 Notify_ORDER_SUPPLIER_REFUSE=Ordine fornitore rifiutato
 Notify_ORDER_VALIDATE=Ordine cliente convalidato
@@ -202,7 +203,7 @@ NewKeyWillBe=Le tue nuove credenziali per loggare al software sono
 ClickHereToGoTo=Clicca qui per andare a %s
 YouMustClickToChange=Devi cliccare sul seguente link per validare il cambio della password
 ForgetIfNothing=Se non hai richiesto questo cambio, lascia perdere questa mail. Le tue credenziali sono mantenute al sicuro.
-IfAmountHigherThan=If amount higher than <strong>%s</strong>
+IfAmountHigherThan=Se l'importo è superiore a <strong>%s</strong>
 
 ##### Calendar common #####
 AddCalendarEntry=Aggiungi evento al calendario %s
diff --git a/htdocs/langs/lv_LV/admin.lang b/htdocs/langs/lv_LV/admin.lang
index 55ccf723ab36b72ea65dcd0fb4eb8af4dd04a7b0..14bed951fe210f7a477e10dd1a7ae2f8124cf77b 100644
--- a/htdocs/langs/lv_LV/admin.lang
+++ b/htdocs/langs/lv_LV/admin.lang
@@ -326,7 +326,7 @@ DoTestSend=Pārbaudīt sūtīšanu
 DoTestSendHTML=Tests nosūtot HTML
 ErrorCantUseRazIfNoYearInMask=Error, can't use option @ to reset counter each year if sequence {yy} or {yyyy} is not in mask.
 ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Kļūda, nevar izmantot iespēju @, ja secība {gggg} {mm} vai {gads} {mm} nav maska.
-UMask=Umask parametru jaunus failus uz Unix / Linux / BSD / Mac failu sistēma.
+UMask=Umask parametri jauniem failiem Unix/Linux/BSD/Mac failu sistēma.
 UMaskExplanation=Šis parametrs ļauj noteikt atļaujas, kas pēc noklusējuma failus, ko rada Dolibarr uz servera (laikā augšupielādēt piemēram). <br> Tam jābūt astotnieku vērtība (piemēram, 0666 nozīmē lasīt un rakstīt visiem). <br> Šis parametrs ir bezjēdzīgi uz Windows servera.
 SeeWikiForAllTeam=Ieskatieties wiki lappusē Pilns visu dalībnieku un to organizāciju
 UseACacheDelay= Kavēšanās caching eksporta atbildes sekundēs (0 vai tukšs bez cache)
@@ -616,8 +616,8 @@ Permission114=Reconciliate transactions
 Permission115=Eksportēt darījumus un kontu izrakstus
 Permission116=Pārvietot starp kontiem
 Permission117=Pārvaldīt pārbaudes dispečervadības
-Permission121=Lasīt trešām personām, kas saistītas ar lietotāju
-Permission122=Izveidot / mainīt trešās personas saistībā ar lietotāju
+Permission121=Skatīt trešās personas, kas saistītas ar lietotāju
+Permission122=Izveidot/labot trešās personas, kas saistītas ar lietotāju
 Permission125=Dzēst trešās personas, kas saistītas ar lietotāju
 Permission126=Eksportēt trešās puses
 Permission141=Lasīt projektus (arī privāto es neesmu sazināties par)
diff --git a/htdocs/langs/lv_LV/bills.lang b/htdocs/langs/lv_LV/bills.lang
index 9b92efa06f35bf913ea681aa7563676767442e00..03076a4d377dd3fa3a2e3190666538623cc1a193 100644
--- a/htdocs/langs/lv_LV/bills.lang
+++ b/htdocs/langs/lv_LV/bills.lang
@@ -191,12 +191,12 @@ AlreadyPaidBack=Jau atgriezta nauda
 AlreadyPaidNoCreditNotesNoDeposits=Jau samaksāts (bez kredīta piezīmes un noguldījumiem)
 Abandoned=Pamests
 RemainderToPay=Neapmaksāts
-RemainderToTake=Remaining amount to take
-RemainderToPayBack=Remaining amount to pay back
+RemainderToTake=Atlikusī summa, kas jāsaņem
+RemainderToPayBack=Atlikusī summa, kas jāatdod atpakaļ
 Rest=Līdz
 AmountExpected=Pieprasīto summu
 ExcessReceived=Excess saņemti
-EscompteOffered=Piedāvāto atlaidi (maksājums pirms termiņa)
+EscompteOffered=Piedāvāta atlaide (maksājums pirms termiņa)
 SendBillRef=Submission of invoice %s
 SendReminderBillRef=Submission of invoice %s (reminder)
 StandingOrders=Regulārie maksājumi
diff --git a/htdocs/langs/lv_LV/boxes.lang b/htdocs/langs/lv_LV/boxes.lang
index 2dd27d774c7ecbbe14e3eb3a09496dd486e8eb51..0124626a6efd3e1e6ef03e943575968cd1077a12 100644
--- a/htdocs/langs/lv_LV/boxes.lang
+++ b/htdocs/langs/lv_LV/boxes.lang
@@ -8,7 +8,7 @@ BoxLastCustomerBills=Pēdējie klientu rēķini
 BoxOldestUnpaidCustomerBills=Vecākās neapmaksātais klienta rēķins
 BoxOldestUnpaidSupplierBills=Vecākais neapmaksātais piegādātāja-u rēķins
 BoxLastProposals=Pēdējie tirdzniecības priekšlikumi
-BoxLastProspects=Pēdējās modificēti perspektīvas
+BoxLastProspects=Pēdējās labotās perspektīvas
 BoxLastCustomers=Pēdējie labotie klienti
 BoxLastSuppliers=Pēdējie labotie piegādātāji
 BoxLastCustomerOrders=Pēdējie klientu pasūtījumi
diff --git a/htdocs/langs/lv_LV/commercial.lang b/htdocs/langs/lv_LV/commercial.lang
index cd11fb1be267581629ad2a7dad7bb3e1036a9b7b..9b4726c1f0e6f3229ac8467a0bbea7e01ec60a0e 100644
--- a/htdocs/langs/lv_LV/commercial.lang
+++ b/htdocs/langs/lv_LV/commercial.lang
@@ -62,7 +62,7 @@ LastProspectContactDone=Sazinājāmies
 DateActionPlanned=Datums, kad pasākums plānots
 DateActionDone=Datums, kad notikums pabeigts
 ActionAskedBy=Par notikumu ziņoja
-ActionAffectedTo=Event assigned to
+ActionAffectedTo=Pasākums piešķirts
 ActionDoneBy=Notikumu veic
 ActionUserAsk=Ziņoja
 ErrorStatusCantBeZeroIfStarted=Ja lauks <b>&quot;Datums darīts&quot;</b> tiek aizpildīta, darbība tiek uzsākts (vai pabeigts), lai lauka <b>&quot;Statuss&quot;</b> nevar būt 0%%.
@@ -90,7 +90,7 @@ FromTo=No %s līdz %s
 MargeOrder=Starpības (apstiprinātas rīkojumi)
 RecapAnnee=Kopsavilkums par gadu
 NoData=Nav datu
-StatusProsp=Prospect statuss
+StatusProsp=Prospekta statuss
 DraftPropals=Izstrādā komerciālos priekšlikumus
 SearchPropal=Meklēšana komerciālu priekšlikumu
 CommercialDashboard=Commercial kopsavilkums
diff --git a/htdocs/langs/lv_LV/dict.lang b/htdocs/langs/lv_LV/dict.lang
index c42f8b91f0511d3e32a0d9080677216fd54cad33..91020f090e7d4da74f35666ab47d5bf96d4e4fa2 100644
--- a/htdocs/langs/lv_LV/dict.lang
+++ b/htdocs/langs/lv_LV/dict.lang
@@ -111,11 +111,11 @@ CountryGN=Gvineja
 CountryGW=Gvineja-Bisava
 CountryGY=Gajāna
 CountryHT=Haiti
-CountryHM=Hērda sala un Makdonalda
+CountryHM=Hērda un Makdonalda salas
 CountryVA=Svētais Krēsls (Vatikāna Pilsētvalsts)
 CountryHN=Hondurasa
 CountryHK=Honkonga
-CountryIS=Icelande
+CountryIS=Islande
 CountryIN=Indija
 CountryID=Indonēzija
 CountryIR=Irāna
@@ -141,7 +141,7 @@ CountryLI=Lihtenšteina
 CountryLT=Lituania
 CountryLU=Luksemburga
 CountryMO=Makao
-CountryMK=Maķedonija, bijusī Dienvidslāvijas
+CountryMK=Maķedonija
 CountryMG=Madagaskara
 CountryMW=Malāvija
 CountryMY=Malaizija
@@ -182,16 +182,16 @@ CountryPG=Papua Jaungvineja
 CountryPY=Paragvaja
 CountryPE=Peru
 CountryPH=Filipīnas
-CountryPN=Pitkērna
+CountryPN=Pitkērna salas
 CountryPL=Polija
 CountryPR=Puertoriko
 CountryQA=Katara
 CountryRE=Atkalapvienošanās
 CountryRO=Rumānija
 CountryRW=Ruanda
-CountrySH=Saint Helena
+CountrySH=Svētās Helēnas salas
 CountryKN=Sentkitsa un Nevisa
-CountryLC=Saint Lucia
+CountryLC=Sentlūsija
 CountryPM=Senpjēra un Mikelona
 CountryVC=Sentvinsenta un Grenadīnas
 CountryWS=Samoa
diff --git a/htdocs/langs/nb_NO/admin.lang b/htdocs/langs/nb_NO/admin.lang
index db250d8d39a62c34018755cb034e194e35592667..2e0b25f81f67056568783a2d75ea087316fadb85 100644
--- a/htdocs/langs/nb_NO/admin.lang
+++ b/htdocs/langs/nb_NO/admin.lang
@@ -54,7 +54,7 @@ Chartofaccounts=Chart of accounts
 Fiscalyear=Regnskapsår
 ErrorReservedTypeSystemSystemAuto=Value 'system' og 'systemauto' for type er reservert. Du kan bruke 'user' som verdi å legge til din egen oppføring
 ErrorCodeCantContainZero=Koden kan ikke inneholde verdien 0
-DisableJavascript=Disable JavaScript and Ajax functions (Recommended for blind person or text browsers)
+DisableJavascript=Deaktiver JavaScript og Ajax funksjoner (Anbefalt for blinde og tekstbaserte nettlesere)
 ConfirmAjax=Bruk bekreftelsesvinduer basert på Ajax
 UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
 UseSearchToSelectCompany=Bruk autofullfør-felt for å velge tredjepart, i stedet for å bruke listeboks.
diff --git a/htdocs/langs/nb_NO/agenda.lang b/htdocs/langs/nb_NO/agenda.lang
index e2da157733d0552d994f35de6b0bc82b65261229..6f6bf2951809ccb6849e9068c3568e1114a79091 100644
--- a/htdocs/langs/nb_NO/agenda.lang
+++ b/htdocs/langs/nb_NO/agenda.lang
@@ -1,5 +1,5 @@
 # Dolibarr language file - Source file is en_US - agenda
-IdAgenda=ID hendelse
+IdAgenda=Hendelses-ID
 Actions=Handlinger
 ActionsArea=Handlingsområde (Hendelser og oppgaver)
 Agenda=Agenda
@@ -17,7 +17,7 @@ MyEvents=Mine hendelser
 OtherEvents=Andre hendelser
 ListOfActions=Oversikt over hendelser
 Location=Lokasjon
-EventOnFullDay=Hendelse på full dag
+EventOnFullDay=Hendelse over hele dagen(e)
 SearchAnAction= Finn handling/oppgave
 MenuToDoActions=Alle åpne handlinger
 MenuDoneActions=Alle avsluttede handlinger
@@ -38,30 +38,30 @@ ViewDay=Dagsvisning
 ViewWeek=Ukesvisning
 ViewPerUser=Visning pr. bruker
 ViewWithPredefinedFilters= Vis med forhåndsdefinerte filtere
-AutoActions= Automatisk utfylling av agenda
+AutoActions= Automatisk utfylling
 AgendaAutoActionDesc= Her angir du hvilke handlinger du ønsker at Dolibarr automatisk skal registrere i agendaen. Hvis du ikke velger noe (forhåndsinnstilt), vil bare manuelle handlinger bli registrert i agendaen.
 AgendaSetupOtherDesc= Her kan du gjøre andre innstillinger i agendamodulen.
-AgendaExtSitesDesc=Denne siden lar deg erklære eksterne kilder til kalendere for å se sine arrangementer inn Dolibarr agenda.
+AgendaExtSitesDesc=Denne siden lar deg sette opp eksterne kalendere for å visning i Dolibarr agenda.
 ActionsEvents=Handlinger som Dolibarr automatisk registrerer i agendaen
 PropalValidatedInDolibarr=Tilbud godkjent
 InvoiceValidatedInDolibarr=Faktura godkjent
 InvoiceValidatedInDolibarrFromPos=Faktura %s godkjent fra POS
-InvoiceBackToDraftInDolibarr=Faktura %s gå tilbake til utkast status
+InvoiceBackToDraftInDolibarr=Sett  faktura %s tilbake til utkaststatus
 InvoiceDeleteDolibarr=Faktura %s slettet
 OrderValidatedInDolibarr=Ordre godkjent
-OrderDeliveredInDolibarr=Order %s classified delivered
-OrderCanceledInDolibarr=Bestill %s kansellert
-OrderBilledInDolibarr=Order %s classified billed
-OrderApprovedInDolibarr=Bestill %s godkjent
-OrderRefusedInDolibarr=Ordre %s nektet
-OrderBackToDraftInDolibarr=Bestill %s gå tilbake til utkast status
-OrderCanceledInDolibarr=Bestill %s kansellert
-ProposalSentByEMail=Kommersielle forslag %s på e-post
-OrderSentByEMail=Kundeordrer %s på e-post
-InvoiceSentByEMail=Faktura %s på e-post
-SupplierOrderSentByEMail=Leverandør bestill %s på e-post
-SupplierInvoiceSentByEMail=Leverandørfaktura %s på e-post
-ShippingSentByEMail=Forsendelse %s sendt på epost
+OrderDeliveredInDolibarr=Ordre %s klassifisert som levert
+OrderCanceledInDolibarr=Ordre %s kansellert
+OrderBilledInDolibarr=Ordre %s klassifisert som fakturert
+OrderApprovedInDolibarr=Ordre %s godkjent
+OrderRefusedInDolibarr=Ordre %s avvist
+OrderBackToDraftInDolibarr=Sett ordre %s tilbake til utkaststatus
+OrderCanceledInDolibarr=Ordre %s kansellert
+ProposalSentByEMail=Kommersielle tilbud %s sendt på epost
+OrderSentByEMail=Kundeordrer %s sendt på epost
+InvoiceSentByEMail=Faktura %s sendt på epost
+SupplierOrderSentByEMail=Leverandørordre %s sendt på epost
+SupplierInvoiceSentByEMail=Leverandørfaktura %s sendt på epost
+ShippingSentByEMail=Forsendelsesdetaljer %s sendt på epost
 ShippingValidated= Forsendelse %s godkjent
 InterventionSentByEMail=Intervensjon %s sendt på epost
 NewCompanyToDolibarr= Tredjepart opprettet
@@ -72,14 +72,14 @@ DateActionDoneEnd= Virkelig sluttdato
 DateActionStart= Startdato
 DateActionEnd= Sluttdato
 AgendaUrlOptions1=Du kan også bruke følgende parametere til å filtrere listen:
-AgendaUrlOptions2=<b>login=%s</b> to restrict output to actions created by or assigned to user <b>%s</b>.
-AgendaUrlOptions3=<b>logina=%s</b> for å begrense data til hendelser eiet av en bruker <b>%s</b>.
-AgendaUrlOptions4=<b>logint=%s</b> for å begrense utvalg til handlinger relatert til bruker <b>%s</b>.
-AgendaUrlOptionsProject=<b>project=PROJECT_ID</b> for å begrense data til handlinger som er knyttet til prosjektet <b>PROJECT_ID</b>.
+AgendaUrlOptions2=<b>login=%s</b> for å begrense resultat til hendelse som er opprettet av eller tildelt bruker<b>%s</b>.
+AgendaUrlOptions3=<b>logina=%s</b> for å begrense resultat til hendelser eiet av en bruker <b>%s</b>.
+AgendaUrlOptions4=<b>logint=%s</b> for å begrense resultat til handlinger relatert til bruker <b>%s</b>.
+AgendaUrlOptionsProject=<b>project=PROJECT_ID</b> for å begrense resultat til handlinger som er knyttet til prosjektet <b>PROJECT_ID</b>.
 AgendaShowBirthdayEvents=Vis fødselsdager
 AgendaHideBirthdayEvents=Skjul fødselsdager
 Busy=Opptatt
-ExportDataset_event1=Liste over agenda hendelser
+ExportDataset_event1=Liste over hendelser i agendaen
 DefaultWorkingDays=Standard arbeidsuke (f.eks 1-5, 1-6)
 DefaultWorkingHours=Standard arbeidstid (f.eks 9-18)
 # External Sites ical
@@ -88,11 +88,11 @@ ExtSites=Importer eksterne kalendere
 ExtSitesEnableThisTool=Vis eksterne kalendere (definert i global setup) i agenda. Påvirker ikke eksterne kalendere definert av brukere.
 ExtSitesNbOfAgenda=Antall kalendere
 AgendaExtNb=Kalender nb %s
-ExtSiteUrlAgenda=URL tilgang til. ICal-fil
+ExtSiteUrlAgenda=URL til. ical-fil
 ExtSiteNoLabel=Ingen beskrivelse
 WorkingTimeRange=Arbeidstid
 WorkingDaysRange=Arbeidsuke
 AddEvent=Opprett hendelse
 MyAvailability=Min tilgjengelighet
-ActionType=Event type
-DateActionBegin=Start event date
+ActionType=Hendelsestype
+DateActionBegin=Startdato for hendelse
diff --git a/htdocs/langs/nb_NO/bills.lang b/htdocs/langs/nb_NO/bills.lang
index 033c9414bfd92d122b96156eaf705ac2e3200030..75101db467e76726216764c7bb5d30068ff38bde 100644
--- a/htdocs/langs/nb_NO/bills.lang
+++ b/htdocs/langs/nb_NO/bills.lang
@@ -191,13 +191,13 @@ AlreadyPaidBack=Allerede tilbakebetalt
 AlreadyPaidNoCreditNotesNoDeposits=Allerede betalt (uten kreditt notater og innskudd)
 Abandoned=Tapsført
 RemainderToPay=Restbeløp
-RemainderToTake=Remaining amount to take
+RemainderToTake=Restbeløp
 RemainderToPayBack=Resterende beløp å betale:
 Rest=Ventende
 AmountExpected=Beløp purret
 ExcessReceived=Overskytende
 EscompteOffered=Rabatt innrømmet (betalt før forfall)
-SendBillRef=Submission of invoice %s
+SendBillRef=Innsendelse av faktura %s
 SendReminderBillRef=Submission of invoice %s (reminder)
 StandingOrders=Utestående ordre
 StandingOrder=Utestående ordre
@@ -248,7 +248,7 @@ AddGlobalDiscount=Legg til rabatt
 EditGlobalDiscounts=Rediger absolutte rabatter
 AddCreditNote=Lag kreditt notat
 ShowDiscount=Vis rebatt
-ShowReduc=Show the deduction
+ShowReduc=Vis fradraget
 RelativeDiscount=Relativ rabatt
 GlobalDiscount=Global rabatt
 CreditNote=Kreditnota
@@ -298,6 +298,7 @@ RelatedCustomerInvoices=Related customer invoices
 RelatedSupplierInvoices=Related supplier invoices
 LatestRelatedBill=Siste tilknyttede faktura
 WarningBillExist=Warning, one or more invoice already exist
+MergingPDFTool=Merging PDF tool
 
 # PaymentConditions
 PaymentConditionShortRECEP=Kontant
@@ -392,7 +393,7 @@ DisabledBecausePayments=Ikke mulig siden det er noen betalinger
 CantRemovePaymentWithOneInvoicePaid=Kan ikke fjerne betalingen siden det er i alle fall på faktura klassifisert utbetales
 ExpectedToPay=Forventet utbetaling
 PayedByThisPayment=Betales av denne betalingen
-ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid.
+ClosePaidInvoicesAutomatically=Klassifiser alle fakturaer (alle typer) som betalt
 ClosePaidCreditNotesAutomatically=Classify "Paid" all credit notes entirely paid back.
 AllCompletelyPayedInvoiceWillBeClosed=Alle faktura uten gjenstår å betale vil bli automatisk stengt for status &quot;betales&quot;.
 ToMakePayment=Betal
diff --git a/htdocs/langs/nb_NO/boxes.lang b/htdocs/langs/nb_NO/boxes.lang
index 0b64eab725aee0c3ba5092804cb173a85b2af1ee..8edbd718c56512c758a5a8c375b62eeffec76d9b 100644
--- a/htdocs/langs/nb_NO/boxes.lang
+++ b/htdocs/langs/nb_NO/boxes.lang
@@ -94,4 +94,4 @@ BoxProductDistributionFor=Fordeling av %s for %s
 ForCustomersInvoices=Kundens fakturaer
 ForCustomersOrders=Kundeordrer
 ForProposals=Tilbud
-LastXMonthRolling=The last %s month rolling
+LastXMonthRolling=Rullering av de siste %s måneder
diff --git a/htdocs/langs/nb_NO/commercial.lang b/htdocs/langs/nb_NO/commercial.lang
index 5ce686e3b3c949a12e350dc025e9e77805276e23..76681a752a45b9ff2279afdb7a037d2f65d7accc 100644
--- a/htdocs/langs/nb_NO/commercial.lang
+++ b/htdocs/langs/nb_NO/commercial.lang
@@ -9,26 +9,26 @@ Prospect=Prospekt
 Prospects=Prospekter
 DeleteAction=Slett handling/oppgave
 NewAction=Ny handling/oppgave
-AddAction=Create event/task
-AddAnAction=Create an event/task
-AddActionRendezVous=Create a Rendez-vous event
-Rendez-Vous=Rendezvous
+AddAction=Opprett hendelse/oppgave
+AddAnAction=Opprett en hendelse/oppgave
+AddActionRendezVous=Opprett et møte
+Rendez-Vous=Møte
 ConfirmDeleteAction=Er du sikker på at du vil slette denne oppgaven?
 CardAction=Handlingskort
 PercentDone=Prosent ferdig
-ActionOnCompany=Oppgave ifm. firma
-ActionOnContact=Oppgave ifg. kontaktperson
+ActionOnCompany=Oppgave relatert til firma
+ActionOnContact=Oppgave relatert til kontaktperson
 TaskRDV=Møter
 TaskRDVWith=Møte med %s
 ShowTask=Vis oppgave
 ShowAction=Vis handling
 ActionsReport=Handlingsrapport
 ThirdPartiesOfSaleRepresentative=Thirdparties med salgsrepresentant
-SalesRepresentative=Salgsreprsentant
+SalesRepresentative=Salgsrepresentant
 SalesRepresentatives=Salgsrepresentanter
 SalesRepresentativeFollowUp=Salgsrepresentant (oppfølging)
 SalesRepresentativeSignature=Salgsrepresentant (signatur)
-CommercialInterlocutor=Commercial interlocutor
+CommercialInterlocutor=Kommersiell samtalepartner
 ErrorWrongCode=Feil kode
 NoSalesRepresentativeAffected=Ingen spesiell salgsrepresentant tilknyttet
 ShowCustomer=Vis kunde
@@ -38,14 +38,14 @@ ListOfCustomers=Oversikt over kunder
 LastDoneTasks=Siste %s utførte oppgaver
 LastRecordedTasks=Siste registrerte oppgaver
 LastActionsToDo=Siste %s eldste handlinger som ikke er fullført
-DoneAndToDoActionsFor=Utførte og åpne oppgaver for %s
-DoneAndToDoActions=Utførte og åpne oppgaver
+DoneAndToDoActionsFor=Utførte og To do oppgaver for %s
+DoneAndToDoActions=Utførte og To do oppgaver
 DoneActions=Utførte handlinger
 DoneActionsFor=Utførte handlinger for %s
 ToDoActions=Ikke fullførte handlinger
 ToDoActionsFor=Ikke fullførte handlinger for %s
-SendPropalRef=Submission of commercial proposal %s
-SendOrderRef=Submission of order %s
+SendPropalRef=Innsending av kommersielle tilbud %s
+SendOrderRef=Innsending av ordre %s
 StatusNotApplicable=Ikke aktuelt
 StatusActionToDo=To Do
 StatusActionDone=Utført
@@ -61,25 +61,25 @@ LastProspectContactInProcess=Kontakt pågår
 LastProspectContactDone=Kontakt utført
 DateActionPlanned=Dato for planlagt handling
 DateActionDone=Dato for utført handling
-ActionAskedBy=Handling ønsket av
-ActionAffectedTo=Event assigned to
+ActionAskedBy=Handling registrert av
+ActionAffectedTo=Hendelse tildelt
 ActionDoneBy=Handling utført av
 ActionUserAsk=Registrert av
 ErrorStatusCantBeZeroIfStarted=Hvis feltet '<b>Dato utført</b>' er fylt ut er handlingen startet (eller utført), defor kan ikke feltet '<b>Status</b>' være 0%%.
 ActionAC_TEL=Telefonsamtale
 ActionAC_FAX=Send fax
 ActionAC_PROP=Send tilbud
-ActionAC_EMAIL=Send e-post
+ActionAC_EMAIL=Send epost
 ActionAC_RDV=Møter
-ActionAC_INT=Intervention on site
-ActionAC_FAC=Send faktura
-ActionAC_REL=Send purring
+ActionAC_INT=Intervensjon på sted
+ActionAC_FAC=Send faktura med post
+ActionAC_REL=Send purring med post (påminnelse)
 ActionAC_CLO=Lukk
-ActionAC_EMAILING=Send e-postutsendelse (massemailing)
+ActionAC_EMAILING=Send e-postutsendelse (masse-epost)
 ActionAC_COM=Send ordre i posten
-ActionAC_SHIP=Send levering post
-ActionAC_SUP_ORD=Send leverandør bestill ved mail
-ActionAC_SUP_INV=Send leverandør faktura i posten
+ActionAC_SHIP=Send levering i posten
+ActionAC_SUP_ORD=Send leverandørordre i posten
+ActionAC_SUP_INV=Send leverandørfaktura i posten
 ActionAC_OTH=Andre
 ActionAC_OTH_AUTO=Andre (automatisk satte hendelser)
 ActionAC_MANUAL=Manuelt satte hendelser
@@ -91,6 +91,6 @@ MargeOrder=Marginer (validerte bestillinger)
 RecapAnnee=Oppsummering av året
 NoData=Det er ingen data
 StatusProsp=Prospect status
-DraftPropals=Utkast kommersielle forslag
-SearchPropal=Søk en kommersiell forslag
+DraftPropals=Utkast kommersielle tilbud
+SearchPropal=Søk etter kommersielt tilbud
 CommercialDashboard=Kommersiell oppsummering
diff --git a/htdocs/langs/nb_NO/contracts.lang b/htdocs/langs/nb_NO/contracts.lang
index e09b5e6c173d847df50839359a0b6e4d9e015977..e854391d7f14bbe56ffe97203470fa08edd9ea4e 100644
--- a/htdocs/langs/nb_NO/contracts.lang
+++ b/htdocs/langs/nb_NO/contracts.lang
@@ -1,7 +1,7 @@
 # Dolibarr language file - Source file is en_US - contracts
 ContractsArea=Kontraktsområde
 ListOfContracts=Oversikt over kontrakter
-LastModifiedContracts=Last %s modified contracts
+LastModifiedContracts=Siste %s endrede kontrakter
 AllContracts=Alle kontrakter
 ContractCard=Kontraktskort
 ContractStatus=Kontraktstatus
@@ -19,7 +19,7 @@ ServiceStatusLateShort=Utløpt
 ServiceStatusClosed=Lukket
 ServicesLegend=Tjeneste legend
 Contracts=Kontrakter
-ContractsAndLine=Contracts and line of contracts
+ContractsAndLine=Kontrakter og kontraktlinjer
 Contract=Kontrakt
 NoContracts=Ingen kontrakter
 MenuServices=Tjenester
@@ -28,7 +28,7 @@ MenuRunningServices=Løpende tjenester
 MenuExpiredServices=Utløpte tjenester
 MenuClosedServices=Lukkede tjenester
 NewContract=Ny kontrakt
-AddContract=Create contract
+AddContract=Opprett kontrakt
 SearchAContract=Finn kontrakt
 DeleteAContract=Slett kontrakt
 CloseAContract=Lukk kontrakt
@@ -54,7 +54,7 @@ ListOfRunningContractsLines=Oversikt over løpende kontraktslinjer
 ListOfRunningServices=Overikt over løpende tjenster
 NotActivatedServices=Ikke aktiverte tjenester (blant godkjente kontrakter)
 BoardNotActivatedServices=Tjenester til aktivering blant godkjente kontrakter
-LastContracts=Last %s contracts
+LastContracts=Siste %s kontrakter
 LastActivatedServices=Siste %s aktiverte tjenester
 LastModifiedServices=Siste %s endrede tjenester
 EditServiceLine=Rediger tjenestelinje
@@ -92,7 +92,7 @@ ListOfServicesToExpire=Liste over utløpende tjenester
 NoteListOfYourExpiredServices=Denne listen inneholder kun tjenester av kontrakter for tredjeparter du er koblet til som salgsrepresentant.
 StandardContractsTemplate=Standard kontraktskjema
 ContactNameAndSignature=For %s, navn og signatur:
-OnlyLinesWithTypeServiceAreUsed=Only lines with type "Service" will be cloned.
+OnlyLinesWithTypeServiceAreUsed=Kun linjer med type "Service" vi bli klonet.
 
 ##### Types de contacts #####
 TypeContact_contrat_internal_SALESREPSIGN=Salgsrepresentant som signerer kontrakten
diff --git a/htdocs/langs/nb_NO/cron.lang b/htdocs/langs/nb_NO/cron.lang
index 848d170e2cc615b32864434ca539dd2de6046c8c..4cf688b277e676511f274fcb07d58d02786e5920 100644
--- a/htdocs/langs/nb_NO/cron.lang
+++ b/htdocs/langs/nb_NO/cron.lang
@@ -1,88 +1,88 @@
 # Dolibarr language file - Source file is en_US - cron
 # About page
 About = Om
-CronAbout = About Cron
-CronAboutPage = Cron about page
+CronAbout = Om Cron
+CronAboutPage = Side om Cron
 # Right
-Permission23101 = Read Scheduled task
-Permission23102 = Create/update Scheduled task
-Permission23103 = Delete Scheduled task
-Permission23104 = Execute Scheduled task
+Permission23101 = Les planlagt oppgave
+Permission23102 = Opprett/endre planlagt oppgave
+Permission23103 = Slett planlagt oppgave
+Permission23104 = Utfør planlagt oppgave
 # Admin
-CronSetup= Scheduled job management setup
+CronSetup= Administrasjon av planlagte oppgaver
 URLToLaunchCronJobs=URL to check and launch cron jobs if required
 OrToLaunchASpecificJob=Or to check and launch a specific job
-KeyForCronAccess=Security key for URL to launch cron jobs
-FileToLaunchCronJobs=Command line to launch cron jobs
+KeyForCronAccess=Sikkerhetsnøkkel for URL for å starte cronjobber
+FileToLaunchCronJobs=Kommandolinje for å starte cronjobber
 CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes
 CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes
 # Menu
-CronJobs=Scheduled jobs
-CronListActive=List of active/scheduled jobs
-CronListInactive=List of disabled jobs
+CronJobs=Planlagte jobber
+CronListActive=Liste over aktive/planlagte jobber
+CronListInactive=Liste over deaktiverte jobber
 # Page list
-CronDateLastRun=Last run
-CronLastOutput=Last run output
-CronLastResult=Last result code
-CronListOfCronJobs=List of scheduled jobs
-CronCommand=Command
-CronList=Scheduled job
-CronDelete=Delete scheduled jobs
-CronConfirmDelete=Are you sure you want to delete this scheduled jobs ?
-CronExecute=Launch scheduled jobs
-CronConfirmExecute=Are you sure to execute this scheduled jobs now ?
+CronDateLastRun=Siste kjøring
+CronLastOutput=Resultat av forrige kjøring
+CronLastResult=Siste kjøring - kode
+CronListOfCronJobs=Liste over planlagte oppgaver
+CronCommand=Kommando
+CronList=Planlagt jobb
+CronDelete=Slett planlagte jobber
+CronConfirmDelete=Er du sikker på at du vil slette denne planlagte jobben
+CronExecute=Start planlagte jobber
+CronConfirmExecute=Er du sikker på at du vil kjøre denne oppgaven nå?
 CronInfo=Scheduled job module allow to execute job that have been planned
-CronWaitingJobs=Waiting jobs
-CronTask=Job
+CronWaitingJobs=Ventende jobber
+CronTask=Jobb
 CronNone=Ingen
 CronDtStart=Startdato
 CronDtEnd=Sluttdato
-CronDtNextLaunch=Next execution
-CronDtLastLaunch=Last execution
-CronFrequency=Frequancy
-CronClass=Classe
+CronDtNextLaunch=Neste kjøring
+CronDtLastLaunch=Siste kjøring
+CronFrequency=Frekvens
+CronClass=Klasse
 CronMethod=Metode
 CronModule=Modul
-CronAction=Action
+CronAction=Handling
 CronStatus=Status
 CronStatusActive=Slått på
 CronStatusInactive=Slått av
-CronNoJobs=No jobs registered
+CronNoJobs=Ingen registrerte jobb
 CronPriority=Prioritet
 CronLabel=Beskrivelse
-CronNbRun=Nb. launch
-CronEach=Every
-JobFinished=Job launched and finished
+CronNbRun=NB! Start
+CronEach=Alle
+JobFinished=Jobb startet og fullført
 #Page card
-CronAdd= Add jobs
-CronHourStart= Start Hour and date of task
-CronEvery= And execute task each
-CronObject= Instance/Object to create
+CronAdd= Legg til jobber
+CronHourStart= Time og dato for oppgavestart
+CronEvery= Og utfør oppgave hver
+CronObject= Objekt å opprette
 CronArgs=Parametere
-CronSaveSucess=Save succesfully
+CronSaveSucess=Lagret
 CronNote=Kommentar
-CronFieldMandatory=Fields %s is mandatory
-CronErrEndDateStartDt=End date cannot be before start date
-CronStatusActiveBtn=Enable
+CronFieldMandatory=Feltene %s er obligatoriske
+CronErrEndDateStartDt=Sluttdato kan ikke være før startdato
+CronStatusActiveBtn=Aktiver
 CronStatusInactiveBtn=Slå av
-CronTaskInactive=This job is disabled
-CronDtLastResult=Last result date
-CronId=Id
-CronClassFile=Classes (filename.class.php)
+CronTaskInactive=Denne jobben er deaktivert
+CronDtLastResult=Dato for siste resultat
+CronId=ID
+CronClassFile=Klasser (filnavn.klasse.php)
 CronModuleHelp=Name of Dolibarr module directory (also work with external Dolibarr module). <BR> For exemple to fetch method of Dolibarr Product object /htdocs/<u>product</u>/class/product.class.php, the value of module is <i>product</i>
 CronClassFileHelp=The file name to load. <BR> For exemple to fetch method of Dolibarr Product object /htdocs/product/class/<u>product.class.php</u>, the value of class file name is <i>product.class.php</i>
 CronObjectHelp=The object name to load. <BR> For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of class file name is <i>Product</i>
 CronMethodHelp=The object method to launch. <BR> For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of method is  is <i>fecth</i>
 CronArgsHelp=The method arguments. <BR> For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of paramters can be <i>0, ProductRef</i>
-CronCommandHelp=The system command line to execute.
-CronCreateJob=Create new Scheduled Job
+CronCommandHelp=System kommandolinje som skal kjøres
+CronCreateJob=Opprett ny planlagt jobb
 # Info
-CronInfoPage=Information
+CronInfoPage=Informasjon
 # Common
-CronType=Task type
+CronType=Oppgavetype
 CronType_method=Call method of a Dolibarr Class
-CronType_command=Shell command
+CronType_command=Shell kommando
 CronMenu=Cron
-CronCannotLoadClass=Cannot load class %s or object %s
-UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs.
-TaskDisabled=Task disabled
+CronCannotLoadClass=Kan ikke laste klasse %s eller objekt %s
+UseMenuModuleToolsToAddCronJobs=Gå til meny "Hjem - Modulverktøy - Jobbliste" for å se på og endre planlagte jobber.
+TaskDisabled=Oppgave deaktivert
diff --git a/htdocs/langs/nb_NO/deliveries.lang b/htdocs/langs/nb_NO/deliveries.lang
index 0f320b22168ba1121dce5959a725136e54c061d5..a0963eca83717edc39213f1420dd7a769dff2b44 100644
--- a/htdocs/langs/nb_NO/deliveries.lang
+++ b/htdocs/langs/nb_NO/deliveries.lang
@@ -24,3 +24,5 @@ Deliverer=Transportør :
 Sender=Avsender
 Recipient=Mottaker
 ErrorStockIsNotEnough=Ikke nok på lager
+Shippable=Kan sendes
+NonShippable=Kan ikke sendes
diff --git a/htdocs/langs/nb_NO/errors.lang b/htdocs/langs/nb_NO/errors.lang
index 304d4fa1b3ec499618b78c4dcc3490970bea57f4..8df21d9b0608f56b4dfca6e6522188cc9ae388db 100644
--- a/htdocs/langs/nb_NO/errors.lang
+++ b/htdocs/langs/nb_NO/errors.lang
@@ -1,11 +1,11 @@
 # Dolibarr language file - Source file is en_US - errors
 
 # No errors
-NoErrorCommitIsDone=No error, we commit
+NoErrorCommitIsDone=Ingen feil funnet
 # Errors
 Error=Feil
 Errors=Feil
-ErrorButCommitIsDone=Errors found but we validate despite this
+ErrorButCommitIsDone=Valider selv om feil ble funnet
 ErrorBadEMail=E-post %s er feil
 ErrorBadUrl=Url %s er feil
 ErrorLoginAlreadyExists=brukernavnet %s eksisterer allerede.
@@ -149,15 +149,15 @@ ErrorPriceExpression6=Wrong number of arguments (%s given, %s expected)
 ErrorPriceExpression8=Unexpected operator '%s'
 ErrorPriceExpression9=An unexpected error occured
 ErrorPriceExpression10=Iperator '%s' lacks operand
-ErrorPriceExpression11=Expecting '%s'
-ErrorPriceExpression14=Division by zero
-ErrorPriceExpression17=Undefined variable '%s'
-ErrorPriceExpression19=Expression not found
-ErrorPriceExpression20=Empty expression
-ErrorPriceExpression21=Empty result '%s'
-ErrorPriceExpression22=Negative result '%s'
-ErrorPriceExpressionInternal=Internal error '%s'
-ErrorPriceExpressionUnknown=Unknown error '%s'
+ErrorPriceExpression11=Forventet '%s'
+ErrorPriceExpression14=Delt på null
+ErrorPriceExpression17=Udefinert variabel '%s'
+ErrorPriceExpression19=Uttrykk ikke funnet
+ErrorPriceExpression20=Tomt uttrykk
+ErrorPriceExpression21=Tomt resultat '%s'
+ErrorPriceExpression22=Negativt resultat '%s'
+ErrorPriceExpressionInternal=Intern feil '%s'
+ErrorPriceExpressionUnknown=Ukjent feil '%s'
 ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs
 ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without lot/serial information, on a product requiring lot/serial information
 ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified (approved or denied) before being allowed to do this action
diff --git a/htdocs/langs/nb_NO/install.lang b/htdocs/langs/nb_NO/install.lang
index e087efd58967c8c7ea05e88d059d442fde7f6dbc..68733baa63f995439d486b3ea29618c962bf9034 100644
--- a/htdocs/langs/nb_NO/install.lang
+++ b/htdocs/langs/nb_NO/install.lang
@@ -156,7 +156,7 @@ LastStepDesc=<strong>Siste trinn:</strong> Definer her login og passord du har t
 ActivateModule=Aktiver modulen %s
 ShowEditTechnicalParameters=Klikk her for å vise/endre avanserte parametre (expert mode)
 WarningUpgrade=Advarsel!\nTok du en backup av databasen først?\nDette anbefales på det sterkeste! F.eks: Pga. feil/bugs i databasesystemer (f.eks. Mysql versjon 5.5.40), kan data eller tabeller gå tapt i denne prosessen. Det er sterkt anbefalt å ha en komplett kopi av databasen før du starter overføringen.\n\n\nKlikk OK for å starte overføringsprosessen...
-ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug making data loss if you make structure change on your database, like it is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a higher fixed version (list of known bugged version: %s)
+ErrorDatabaseVersionForbiddenForMigration=Din databaseversjon er %s. Den har en kritisk feil som gjør at du mister data hvis du gjør strukturelle endringer i databasen, som vil skje ved migrasjonen. På grunn av dette vil du ikke kunne migrere før databasen er oppgradert til en høyere versjon. (liste over versjoner med bekreftede feil: %s)
 
 #########
 # upgrade
diff --git a/htdocs/langs/nb_NO/languages.lang b/htdocs/langs/nb_NO/languages.lang
index 8a22ce69d821e890fab31d770e80478d988a802a..08258b18b0ba87cd9cdf664465c66b86d6c267e0 100644
--- a/htdocs/langs/nb_NO/languages.lang
+++ b/htdocs/langs/nb_NO/languages.lang
@@ -13,7 +13,7 @@ Language_de_AT=Tysk (Østerrike)
 Language_de_CH=Tysk (Sveits)
 Language_el_GR=Gresk
 Language_en_AU=English (Australia)
-Language_en_CA=English (Canada)
+Language_en_CA=Engelsk (Canada)
 Language_en_GB=English (United Kingdom)
 Language_en_IN=English (India)
 Language_en_NZ=Engelsk (New Zealand)
diff --git a/htdocs/langs/nb_NO/mailmanspip.lang b/htdocs/langs/nb_NO/mailmanspip.lang
index 4df2bf08bdec544402c982fa574935c5d9dd6eb4..7f877890be988a00f12fbaf3e77eb5c6620d2712 100644
--- a/htdocs/langs/nb_NO/mailmanspip.lang
+++ b/htdocs/langs/nb_NO/mailmanspip.lang
@@ -1,27 +1,27 @@
 # Dolibarr language file - Source file is en_US - mailmanspip
-# MailmanSpipSetup=Mailman and SPIP module Setup
-# MailmanTitle=Mailman mailing list system
-# TestSubscribe=To test subscription to Mailman lists
-# TestUnSubscribe=To test unsubscribe from Mailman lists
-# MailmanCreationSuccess=Subscription test was executed succesfully
-# MailmanDeletionSuccess=Unsubscription test was executed succesfully
-# SynchroMailManEnabled=A Mailman update will be performed
-# SynchroSpipEnabled=A Spip update will be performed
-# DescADHERENT_MAILMAN_ADMINPW=Mailman administrator password
-# DescADHERENT_MAILMAN_URL=URL for Mailman subscriptions
-# DescADHERENT_MAILMAN_UNSUB_URL=URL for Mailman unsubscriptions
-# DescADHERENT_MAILMAN_LISTS=List(s) for automatic inscription of new members (separated by a comma)
-# SPIPTitle=SPIP Content Management System
-# DescADHERENT_SPIP_SERVEUR=SPIP Server
-# DescADHERENT_SPIP_DB=SPIP database name
-# DescADHERENT_SPIP_USER=SPIP database login
-# DescADHERENT_SPIP_PASS=SPIP database password
-# AddIntoSpip=Add into SPIP
-# AddIntoSpipConfirmation=Are you sure you want to add this member into SPIP?
-# AddIntoSpipError=Failed to add the user in SPIP
-# DeleteIntoSpip=Remove from SPIP
-# DeleteIntoSpipConfirmation=Are you sure you want to remove this member from SPIP?
-# DeleteIntoSpipError=Failed to suppress the user from SPIP
-# SPIPConnectionFailed=Failed to connect to SPIP
-# SuccessToAddToMailmanList=Add of %s to mailman list %s or SPIP database done
-# SuccessToRemoveToMailmanList=Removal of %s from mailman list %s or SPIP database done
+MailmanSpipSetup=Mailman and SPIP module Setup
+MailmanTitle=Mailman mailing list system
+TestSubscribe=To test subscription to Mailman lists
+TestUnSubscribe=To test unsubscribe from Mailman lists
+MailmanCreationSuccess=Subscription test was executed succesfully
+MailmanDeletionSuccess=Unsubscription test was executed succesfully
+SynchroMailManEnabled=A Mailman update will be performed
+SynchroSpipEnabled=A Spip update will be performed
+DescADHERENT_MAILMAN_ADMINPW=Mailman administrator password
+DescADHERENT_MAILMAN_URL=URL for Mailman subscriptions
+DescADHERENT_MAILMAN_UNSUB_URL=URL for Mailman unsubscriptions
+DescADHERENT_MAILMAN_LISTS=List(s) for automatic inscription of new members (separated by a comma)
+SPIPTitle=SPIP Content Management System
+DescADHERENT_SPIP_SERVEUR=SPIP server
+DescADHERENT_SPIP_DB=SPIP databasenavn
+DescADHERENT_SPIP_USER=SPIP database innlogging
+DescADHERENT_SPIP_PASS=SPIP database passord
+AddIntoSpip=Legg til i SPIP
+AddIntoSpipConfirmation=Are you sure you want to add this member into SPIP?
+AddIntoSpipError=Failed to add the user in SPIP
+DeleteIntoSpip=Remove from SPIP
+DeleteIntoSpipConfirmation=Are you sure you want to remove this member from SPIP?
+DeleteIntoSpipError=Failed to suppress the user from SPIP
+SPIPConnectionFailed=Failed to connect to SPIP
+SuccessToAddToMailmanList=Add of %s to mailman list %s or SPIP database done
+SuccessToRemoveToMailmanList=Removal of %s from mailman list %s or SPIP database done
diff --git a/htdocs/langs/nb_NO/main.lang b/htdocs/langs/nb_NO/main.lang
index 53e4bb76867b99a04ed214ea429bc27d37353bb6..f85c16137a9472db708f0595d86c994b57d1949f 100644
--- a/htdocs/langs/nb_NO/main.lang
+++ b/htdocs/langs/nb_NO/main.lang
@@ -14,7 +14,7 @@ FormatDateShortJava=dd.MM.yyyy
 FormatDateShortJavaInput=dd.MM.yyyy
 FormatDateShortJQuery=dd.mm.yy
 FormatDateShortJQueryInput=dd.mm.yy
-FormatHourShortJQuery=HH:MI
+FormatHourShortJQuery=HH:MM
 FormatHourShort=%H.%M
 FormatHourShortDuration=%H:%M
 FormatDateTextShort=%d. %b %Y
@@ -62,7 +62,7 @@ ErrorFailedToSaveFile=Feil: Klarte ikke å lagre filen.
 SetDate=Still dato
 SelectDate=Velg en dato
 SeeAlso=Se også %s
-SeeHere=See here
+SeeHere=Se her
 BackgroundColorByDefault=Standard bakgrunnsfarge
 FileNotUploaded=Filen ble ikke lastet opp
 FileUploaded=Opplastningen var vellykket
@@ -141,7 +141,7 @@ Cancel=Avbryt
 Modify=Endre
 Edit=Rediger
 Validate=Godkjenn
-ValidateAndApprove=Validate and Approve
+ValidateAndApprove=Valider og godkjenn
 ToValidate=Å godkjenne
 Save=Lagre
 SaveAs=Lagre som
@@ -159,7 +159,7 @@ Search=Søk
 SearchOf=Søk
 Valid=Gyldig
 Approve=Godkjenn
-Disapprove=Disapprove
+Disapprove=Underkjenn
 ReOpen=Gjenåpne
 Upload=Send fil
 ToLink=Link
@@ -173,7 +173,7 @@ User=Bruker
 Users=Brukere
 Group=Gruppe
 Groups=Grupper
-NoUserGroupDefined=No user group defined
+NoUserGroupDefined=Ingen brukergrupper er definert
 Password=Passord
 PasswordRetype=Gjenta passord
 NoteSomeFeaturesAreDisabled=Merk at en masse funksjoner / moduler er deaktivert i denne demonstrasjonen.
@@ -220,9 +220,9 @@ Next=Neste
 Cards=Kort
 Card=Kort
 Now=Nå
-HourStart=Start hour
+HourStart=Start time
 Date=Dato
-DateAndHour=Date and hour
+DateAndHour=Dato og tid
 DateStart=Startdato
 DateEnd=Sluttdato
 DateCreation=Opprettet den
@@ -243,8 +243,8 @@ DatePlanShort=Planlagt dato
 DateRealShort=Virkelig dato
 DateBuild=Rapport bygge dato
 DatePayment=Dato for betaling
-DateApprove=Approving date
-DateApprove2=Approving date (second approval)
+DateApprove=Godkjennelsesdato
+DateApprove2=Godkjennelsesdato (2. godkjennelse)
 DurationYear=år
 DurationMonth=måned
 DurationWeek=uke
@@ -267,7 +267,7 @@ days=dager
 Hours=Timer
 Minutes=Minutter
 Seconds=Sekunder
-Weeks=Weeks
+Weeks=Uker
 Today=I dag
 Yesterday=I går
 Tomorrow=I morgen
@@ -301,7 +301,7 @@ UnitPriceHT=Enhetspris (netto)
 UnitPriceTTC=Enhetspris
 PriceU=Pris
 PriceUHT=Pris (netto)
-AskPriceSupplierUHT=P.U. HT Requested
+AskPriceSupplierUHT=Forespørsel om P.U. HT
 PriceUTTC=Pris
 Amount=Beløp
 AmountInvoice=Fakturabeløp
@@ -355,7 +355,7 @@ Status=Status
 Favorite=Favoritt
 ShortInfo=Info.
 Ref=Nummer
-ExternalRef=Ref. extern
+ExternalRef=Ekstern ref.
 RefSupplier=Ref. leverandør
 RefPayment=Ref. betaling
 CommercialProposalsShort=Tilbud
@@ -398,8 +398,8 @@ Available=Tilgjengelig
 NotYetAvailable=Ikke tilgjengelig ennå
 NotAvailable=Ikke tilgjengelig
 Popularity=Popularitet
-Categories=Tags/categories
-Category=Tag/category
+Categories=Merker/kategorier
+Category=Merke/Kategori
 By=Av
 From=Fra
 to=til
@@ -411,8 +411,8 @@ OtherInformations=Annen informasjon
 Quantity=Antall
 Qty=Ant
 ChangedBy=Endret av
-ApprovedBy=Approved by
-ApprovedBy2=Approved by (second approval)
+ApprovedBy=Godkjent av
+ApprovedBy2=Godkjent av (2. godkjennelse)
 ReCalculate=Rekalkuler
 ResultOk=Success
 ResultKo=Feil
@@ -531,7 +531,7 @@ DateFromTo=Fra %s til %s
 DateFrom=Fra %s
 DateUntil=Til og med %s
 Check=Sjekk
-Uncheck=Uncheck
+Uncheck=Fjern merking
 Internal=Intern
 External=Ekstern
 Internals=Intern
@@ -698,11 +698,11 @@ XMoreLines=%s linje(r) skjult
 PublicUrl=Offentlig URL
 AddBox=Legg til boks
 SelectElementAndClickRefresh=Velg et element og klikk Oppfrisk
-PrintFile=Print File %s
-ShowTransaction=Show transaction
-GoIntoSetupToChangeLogo=Go into Home - Setup - Company to change logo or go into Home - Setup - Display to hide.
-Deny=Deny
-Denied=Denied
+PrintFile=Print fil %s
+ShowTransaction=Vis transaksjon
+GoIntoSetupToChangeLogo=Gå til Hjem - Oppsett - Firma for å skifte logo eller Hjem - Oppsett -  Display for å skjule.
+Deny=Avvis
+Denied=Avvist
 # Week day
 Monday=Mandag
 Tuesday=Tirsdag
diff --git a/htdocs/langs/nb_NO/opensurvey.lang b/htdocs/langs/nb_NO/opensurvey.lang
index b6c393f99fa400ee17653d70a116819d3aaa65f3..d254a7accb18df0936e710970509d9c9245a7c80 100644
--- a/htdocs/langs/nb_NO/opensurvey.lang
+++ b/htdocs/langs/nb_NO/opensurvey.lang
@@ -1,14 +1,14 @@
 # Dolibarr language file - Source file is en_US - opensurvey
-Survey=Poll
-Surveys=Polls
-OrganizeYourMeetingEasily=Organize your meetings and polls easily. First select type of poll...
-NewSurvey=New poll
-NoSurveysInDatabase=%s poll(s) into database.
-OpenSurveyArea=Polls area
-AddACommentForPoll=You can add a comment into poll...
-AddComment=Add comment
-CreatePoll=Create poll
-PollTitle=Poll title
+Survey=Undersøkelse
+Surveys=Undersøkelser
+OrganizeYourMeetingEasily=Organiser møtene og undersøkelsene dine. Velg type undersøkelse
+NewSurvey=Ny undersøkelse
+NoSurveysInDatabase=%s undersøkelse(r) i databasen.
+OpenSurveyArea=Område for undersøkelser
+AddACommentForPoll=Legg til kommentar i undersøkelsen
+AddComment=Legg til kommentar
+CreatePoll=Opprett undersøkelse
+PollTitle=Undersøkelse tittel
 ToReceiveEMailForEachVote=Receive an email for each vote
 TypeDate=Type date
 TypeClassic=Type standard
diff --git a/htdocs/langs/nb_NO/orders.lang b/htdocs/langs/nb_NO/orders.lang
index f09adadfcef9580f9d47f5abd0a2f98776649f76..ec0b971bccedc3cc67be7b093bbd05d97738374a 100644
--- a/htdocs/langs/nb_NO/orders.lang
+++ b/htdocs/langs/nb_NO/orders.lang
@@ -16,20 +16,20 @@ SupplierOrder=Leverandørordre
 SuppliersOrders=Leverandørordre
 SuppliersOrdersRunning=Aktuelle leverandørs ordrer
 CustomerOrder=Kundeordre
-CustomersOrders=Customers orders
+CustomersOrders=Kundeordre
 CustomersOrdersRunning=Aktuelle kundes ordrer
 CustomersOrdersAndOrdersLines=Kundeordrer og ordrelinjer
-OrdersToValid=Customers orders to validate
-OrdersToBill=Customers orders delivered
-OrdersInProcess=Customers orders in process
-OrdersToProcess=Customers orders to process
+OrdersToValid=Kundeordre til godkjenning
+OrdersToBill=Leverte kundeordre
+OrdersInProcess=Pågående kundeordre
+OrdersToProcess=Kundeordre til fullføring
 SuppliersOrdersToProcess=Leverandørens ordre til behandling
 StatusOrderCanceledShort=Kansellert
 StatusOrderDraftShort=Kladd
 StatusOrderValidatedShort=Godkjent
 StatusOrderSentShort=I prosessen
 StatusOrderSent=Under transport
-StatusOrderOnProcessShort=Ordered
+StatusOrderOnProcessShort=Bestilt
 StatusOrderProcessedShort=Behandlet
 StatusOrderToBillShort=Levert
 StatusOrderToBill2Short=Til fakturering
@@ -41,8 +41,8 @@ StatusOrderReceivedAllShort=Fullt levert
 StatusOrderCanceled=Kansellert
 StatusOrderDraft=Kladd (trenger godkjenning)
 StatusOrderValidated=Godkjent
-StatusOrderOnProcess=Ordered - Standby reception
-StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation
+StatusOrderOnProcess=Bestilt - Venter på varer
+StatusOrderOnProcessWithValidation=Bestilt - Venter varer eller bekreftelse
 StatusOrderProcessed=Behandlet
 StatusOrderToBill=Levert
 StatusOrderToBill2=Til fakturering
@@ -51,21 +51,21 @@ StatusOrderRefused=Avvist
 StatusOrderReceivedPartially=Dellevert
 StatusOrderReceivedAll=Fullt levert
 ShippingExist=En forsendelse eksisterer
-ProductQtyInDraft=Product quantity into draft orders
-ProductQtyInDraftOrWaitingApproved=Product quantity into draft or approved orders, not yet ordered
+ProductQtyInDraft=Produktmengde i ordrekladder
+ProductQtyInDraftOrWaitingApproved=Produktmengde i kladdede/godkjente ordrer som ikke er bestilt enda
 DraftOrWaitingApproved=Utkast eller godkjent ennå ikke bestilt
 DraftOrWaitingShipped=Utkast eller validert ennå ikke levert
 MenuOrdersToBill=Ordre levert
 MenuOrdersToBill2=Fakturerbare ordre
 SearchOrder=Søk i ordre
 SearchACustomerOrder=Søk etter kundeordre
-SearchASupplierOrder=Search a supplier order
+SearchASupplierOrder=Søk etter leverandørordre
 ShipProduct=Lever produkt
 Discount=Rabatt
 CreateOrder=Lag ordre
 RefuseOrder=Avvis ordre
-ApproveOrder=Approve order
-Approve2Order=Approve order (second level)
+ApproveOrder=Godkjenn ordre
+Approve2Order=Godkjenn ordre (2. nivå)
 ValidateOrder=Valider ordre
 UnvalidateOrder=Devalider ordre
 DeleteOrder=Slett ordre
@@ -79,9 +79,9 @@ NoOpenedOrders=Ingen åpne ordre
 NoOtherOpenedOrders=Ingen andre åpne ordre
 NoDraftOrders=Ingen ordreutkast
 OtherOrders=Andre ordre
-LastOrders=Last %s customer orders
-LastCustomerOrders=Last %s customer orders
-LastSupplierOrders=Last %s supplier orders
+LastOrders=Siste %s kundeordre
+LastCustomerOrders=Siste %s kundeordrer
+LastSupplierOrders=Siste %s leverandørordrer
 LastModifiedOrders=Siste %s endrede ordre
 LastClosedOrders=Siste %s lukkede ordre
 AllOrders=Alle ordre
@@ -105,8 +105,8 @@ ClassifyBilled=Klassifiser "Fakturert"
 ComptaCard=Regnskapskort
 DraftOrders=Ordrekladder
 RelatedOrders=Relaterte ordre
-RelatedCustomerOrders=Related customer orders
-RelatedSupplierOrders=Related supplier orders
+RelatedCustomerOrders=Relaterte kundeordrer
+RelatedSupplierOrders=Relaterte leverandørordrer
 OnProcessOrders=Ordre i behandling
 RefOrder=Ref. ordre
 RefCustomerOrder=Ref. kundeordre
@@ -123,7 +123,7 @@ PaymentOrderRef=Betaling av ordre %s
 CloneOrder=Clone bestilling
 ConfirmCloneOrder=Er du sikker på at du vil klone denne bestillingen <b>%s?</b>
 DispatchSupplierOrder=Motta leverandør bestill %s
-FirstApprovalAlreadyDone=First approval already done
+FirstApprovalAlreadyDone=Første godkjenning allerede utført
 ##### Types de contacts #####
 TypeContact_commande_internal_SALESREPFOLL=Representant oppfølging kundeordre
 TypeContact_commande_internal_SHIPPING=Representant oppfølging shipping
diff --git a/htdocs/langs/nb_NO/productbatch.lang b/htdocs/langs/nb_NO/productbatch.lang
index 85b1d27f3a611763b0bf7454a46c40772432354b..6914b40308b27fc59e26324ad538add79bc77438 100644
--- a/htdocs/langs/nb_NO/productbatch.lang
+++ b/htdocs/langs/nb_NO/productbatch.lang
@@ -1,16 +1,16 @@
 # ProductBATCH language file - en_US - ProductBATCH
-ManageLotSerial=Use lot/serial number
-ProductStatusOnBatch=Yes (lot/serial required)
-ProductStatusNotOnBatch=No (lot/serial not used)
-ProductStatusOnBatchShort=Yes
-ProductStatusNotOnBatchShort=No
-Batch=Lot/Serial
+ManageLotSerial=Bruk lot/serienummer
+ProductStatusOnBatch=Ja (lot/serienummer påkrevd)
+ProductStatusNotOnBatch=Nei (lot/serienummer ikke i bruk)
+ProductStatusOnBatchShort=Ja
+ProductStatusNotOnBatchShort=Nei
+Batch=Lot/serienummer
 atleast1batchfield=Eat-by date or Sell-by date or Lot/Serial number
-batch_number=Lot/Serial number
+batch_number=Lot/serienummer
 BatchNumberShort=Lot/Serial
 l_eatby=Eat-by date
 l_sellby=Sell-by date
-DetailBatchNumber=Lot/Serial details
+DetailBatchNumber=Lot/serienummer detaljer
 DetailBatchFormat=Lot/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d)
 printBatch=Lot/Serial: %s
 printEatby=Eat-by: %s
diff --git a/htdocs/langs/nb_NO/products.lang b/htdocs/langs/nb_NO/products.lang
index 42894d7663eb83823f433b94036327e586c0579d..690d5e8bcfa87f71509d6043c4b21a239d16a21f 100644
--- a/htdocs/langs/nb_NO/products.lang
+++ b/htdocs/langs/nb_NO/products.lang
@@ -22,12 +22,12 @@ ProductAccountancySellCode=Revisjon kode (selge)
 ProductOrService=Vare eller tjeneste
 ProductsAndServices=Varer og tjenester
 ProductsOrServices=Varer eller tjenester
-ProductsAndServicesOnSell=Products and Services for sale or for purchase
-ProductsAndServicesNotOnSell=Products and Services out of sale
+ProductsAndServicesOnSell=Produkter og tjenester for salg eller innkjøp
+ProductsAndServicesNotOnSell=Produkter og tjenester ute av salg
 ProductsAndServicesStatistics=Statistikk over varer og tjenester
 ProductsStatistics=Varestatistikk
-ProductsOnSell=Product for sale or for pruchase
-ProductsNotOnSell=Product out of sale and out of purchase
+ProductsOnSell=Produkt for salg eller innkjøp
+ProductsNotOnSell=Produkt ute av salg og innkjøp
 ProductsOnSellAndOnBuy=Products for sale and for purchase
 ServicesOnSell=Services for sale or for purchase
 ServicesNotOnSell=Services out of sale
diff --git a/htdocs/langs/nb_NO/propal.lang b/htdocs/langs/nb_NO/propal.lang
index 6fa22ed096d1bd49fbfade8889896c42b73c4089..aa0d6278d4ed94119072bb8923fae4eeabd56efb 100644
--- a/htdocs/langs/nb_NO/propal.lang
+++ b/htdocs/langs/nb_NO/propal.lang
@@ -16,7 +16,7 @@ Prospect=Prospekt
 ProspectList=Prospektliste
 DeleteProp=Slett tilbud
 ValidateProp=Godkjenn tilbud
-AddProp=Legg til tilbud
+AddProp=Lag tilbud
 ConfirmDeleteProp=Er du sikker på at du vil slette dette tilbudet?
 ConfirmValidateProp=Er du sikker på at du vil godkjenne dette tilbudet?
 LastPropals=Siste %s tilbud
@@ -55,8 +55,6 @@ NoOpenedPropals=Ingen åpne tilbud
 NoOtherOpenedPropals=Ingen andre åpne tilbud
 RefProposal=Tilbudsreferanser
 SendPropalByMail=Send tilbud med e-post
-FileNotUploaded=Filen ble ikke lastet opp
-FileUploaded=Filen ble lastet opp
 AssociatedDocuments=Dokumenter relatert til tilbudet:
 ErrorCantOpenDir=Kan ikke åpne mappen
 DatePropal=Dato for forslaget
diff --git a/htdocs/langs/nb_NO/salaries.lang b/htdocs/langs/nb_NO/salaries.lang
index 28c21adfad3bfeaeab79e52b5814048501b51708..acec7945e2ad8c05a5c6bd4717975e828e7e3d23 100644
--- a/htdocs/langs/nb_NO/salaries.lang
+++ b/htdocs/langs/nb_NO/salaries.lang
@@ -1,13 +1,13 @@
 # Dolibarr language file - Source file is en_US - users
-SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments
-SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge
-Salary=Salary
-Salaries=Salaries
-Employee=Employee
-NewSalaryPayment=New salary payment
-SalaryPayment=Salary payment
-SalariesPayments=Salaries payments
-ShowSalaryPayment=Show salary payment
-THM=Average hourly price
-TJM=Average daily price
-CurrentSalary=Current salary
+SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Regnskapskode for lønnsutbetalinger
+SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Regnskapskode for finansiell belastning
+Salary=Lønn
+Salaries=Lønn
+Employee=Ansatt
+NewSalaryPayment=Ny lønnsutbetaling
+SalaryPayment=Lønnsutbetaling
+SalariesPayments=Lønnsutbetalinger
+ShowSalaryPayment=Vis lønnsutbetaling
+THM=Gjennomsnittlig timepris
+TJM=Gjennomsnittlig dagskost
+CurrentSalary=Nåværende lønn
diff --git a/htdocs/langs/nb_NO/suppliers.lang b/htdocs/langs/nb_NO/suppliers.lang
index 3c0b6c7b4c25f3f96c83785a8530bfab643fff96..8196c6d43a3eb38540335b8daeef171aaead9893 100644
--- a/htdocs/langs/nb_NO/suppliers.lang
+++ b/htdocs/langs/nb_NO/suppliers.lang
@@ -1,6 +1,6 @@
 # Dolibarr language file - Source file is en_US - suppliers
 Suppliers=Leverandører
-AddSupplier=Create a supplier
+AddSupplier=Opprett leverandør
 SupplierRemoved=Leverandør slettet
 SuppliersInvoice=Leverandørfaktura
 NewSupplier=Ny leverandør
@@ -29,7 +29,7 @@ ExportDataset_fournisseur_2=Leverandørfakturaer og betalinger
 ExportDataset_fournisseur_3=Leverandør ordrer og ordrelinjer
 ApproveThisOrder=Godkjenn denne innkjøpsordren
 ConfirmApproveThisOrder=Er du sikker på at du vil godkjenne denne innkjøpsordren?
-DenyingThisOrder=Deny this order
+DenyingThisOrder=Avvis denne ordren
 ConfirmDenyingThisOrder=Er du sikker på at du vil avvise denne innkjøpsordren?
 ConfirmCancelThisOrder=Er du sikker på at du vil avbryte denne innkjøpsordren?
 AddCustomerOrder=Opprett kundeordre
@@ -40,7 +40,7 @@ ListOfSupplierProductForSupplier=Oversikt over produkter og priser for leverand
 NoneOrBatchFileNeverRan=Ingen eller batch <b>%s</b> ikke løp nylig
 SentToSuppliers=Sendt til leverandører
 ListOfSupplierOrders=Liste over leverandørordre
-MenuOrdersSupplierToBill=Supplier orders to invoice
-NbDaysToDelivery=Delivery delay in days
-DescNbDaysToDelivery=The biggest delay is display among order product list
-UseDoubleApproval=Use double approval (the second approval can be done by any user with the dedicated permission)
+MenuOrdersSupplierToBill=Leverandørordre til faktura
+NbDaysToDelivery=Leveringsforsinkelse i dager
+DescNbDaysToDelivery=Lengste forsinkelse er vist i ordre-produktliste
+UseDoubleApproval=Bruk dobbel godkjenning ( den andre godkjennelsen kan gjøres av alle brukere med riktig adgang)
diff --git a/htdocs/langs/nb_NO/trips.lang b/htdocs/langs/nb_NO/trips.lang
index 8d455d35fc4c141be64aa5872c004d9dc682f5dc..488a49692a99d4723e6f86fcb750070c77656d86 100644
--- a/htdocs/langs/nb_NO/trips.lang
+++ b/htdocs/langs/nb_NO/trips.lang
@@ -1,102 +1,102 @@
 # Dolibarr language file - Source file is en_US - trips
-ExpenseReport=Expense report
-ExpenseReports=Expense reports
-Trip=Expense report
-Trips=Expense reports
-TripsAndExpenses=Expenses reports
-TripsAndExpensesStatistics=Expense reports statistics
-TripCard=Expense report card
-AddTrip=Create expense report
-ListOfTrips=List of expense report
+ExpenseReport=Reiseregning
+ExpenseReports=Reiseregninger
+Trip=Reiseregning
+Trips=Reiseregninger
+TripsAndExpenses=Reiseregninger
+TripsAndExpensesStatistics=Reiseregninger - statistikk
+TripCard=Skjema for reiseregninger
+AddTrip=Opprett reiseregning
+ListOfTrips=Liste over reiseregninger
 ListOfFees=Oversikt over avgifter
-NewTrip=New expense report
+NewTrip=Ny reiseregning
 CompanyVisited=Firma/organiasjon besøkt
 Kilometers=Kilometer
 FeesKilometersOrAmout=Beløp eller kilometer
-DeleteTrip=Delete expense report
-ConfirmDeleteTrip=Are you sure you want to delete this expense report ?
-ListTripsAndExpenses=List of expense reports
-ListToApprove=Waiting for approval
-ExpensesArea=Expense reports area
-SearchATripAndExpense=Search an expense report
-ClassifyRefunded=Classify 'Refunded'
-ExpenseReportWaitingForApproval=A new expense report has been submitted for approval
-ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.\n- User: %s\n- Period: %s\nClick here to validate: %s
-TripId=Id expense report
-AnyOtherInThisListCanValidate=Person to inform for validation.
-TripSociete=Information company
-TripSalarie=Informations user
-TripNDF=Informations expense report
-DeleteLine=Delete a ligne of the expense report
-ConfirmDeleteLine=Are you sure you want to delete this line ?
-PDFStandardExpenseReports=Standard template to generate a PDF document for expense report
-ExpenseReportLine=Expense report line
+DeleteTrip=Slett reiseregning
+ConfirmDeleteTrip=Er du sikker på at du vil slette denne reiseregningen?
+ListTripsAndExpenses=Liste over reiseregninger
+ListToApprove=Venter på godkjenning
+ExpensesArea=Område for reiseregninger
+SearchATripAndExpense=Søk etter reiseregning
+ClassifyRefunded=Klassifisert 'refundert'
+ExpenseReportWaitingForApproval=En ny reiseregning er sendt inn for godkjenning
+ExpenseReportWaitingForApprovalMessage=En ny reiseregning er sendt inn og venter på godkjenning.\n- Bruker: %s\n- Periode: %s\nKlikk her for å godkjenne: %s
+TripId=Reiseregnings - ID
+AnyOtherInThisListCanValidate=Person som skal informeres for godkjenning
+TripSociete=Firmainformasjon
+TripSalarie=Brukerinformasjon
+TripNDF=Informasjon om reiseregning
+DeleteLine=Slett en linje i reiseregningen
+ConfirmDeleteLine=Er du sikker på at du vil slette denne linjen?
+PDFStandardExpenseReports=Standardmal for å generere PDF av reiseregning
+ExpenseReportLine=Linje i reiseregningen
 TF_OTHER=Annet
-TF_TRANSPORTATION=Transportation
+TF_TRANSPORTATION=Transport
 TF_LUNCH=Lunsj
-TF_METRO=Metro
-TF_TRAIN=Train
-TF_BUS=Bus
-TF_CAR=Car
+TF_METRO=Trikk/bybane
+TF_TRAIN=Tog
+TF_BUS=Buss
+TF_CAR=Bil
 TF_PEAGE=Toll
-TF_ESSENCE=Fuel
-TF_HOTEL=Hostel
+TF_ESSENCE=Drivstoff
+TF_HOTEL=Overnatting
 TF_TAXI=Taxi
 
-ErrorDoubleDeclaration=You have declared another expense report into a similar date range.
-ListTripsAndExpenses=List of expense reports
-AucuneNDF=No expense reports found for this criteria
-AucuneLigne=There is no expense report declared yet
-AddLine=Add a line
-AddLineMini=Add
+ErrorDoubleDeclaration=Du har opprettet en annen reiseregning i overlappende tidsperiode
+ListTripsAndExpenses=Liste over reiseregninger
+AucuneNDF=Ingen reiseregning funnet etter disse kriteriene
+AucuneLigne=Ingen reiseregning er opprettet enda
+AddLine=Legg til linje
+AddLineMini=Legg til
 
-Date_DEBUT=Period date start
-Date_FIN=Period date end
-ModePaiement=Payment mode
-Note=Note
-Project=Project
+Date_DEBUT=Dato for periodestart
+Date_FIN=Dato for periodeslutt
+ModePaiement=Betalingsmåte
+Note=Notat
+Project=Prosjekt
 
-VALIDATOR=User to inform for approbation
-VALIDOR=Approved by
-AUTHOR=Recorded by
-AUTHORPAIEMENT=Paied by
-REFUSEUR=Denied by
-CANCEL_USER=Canceled by
+VALIDATOR=Bruker som skal informeres for godkjenning
+VALIDOR=Godkjent av
+AUTHOR=Registrert av
+AUTHORPAIEMENT=Betalt av
+REFUSEUR=Avvist av
+CANCEL_USER=Kansellert av
 
-MOTIF_REFUS=Reason
-MOTIF_CANCEL=Reason
+MOTIF_REFUS=Grunn
+MOTIF_CANCEL=Grunn
 
-DATE_REFUS=Deny date
-DATE_SAVE=Validation date
-DATE_VALIDE=Validation date
-DATE_CANCEL=Cancelation date
-DATE_PAIEMENT=Payment date
+DATE_REFUS=Avvist dato
+DATE_SAVE=Godkjennelsesdato
+DATE_VALIDE=Godkjennelsesdato
+DATE_CANCEL=Kansellert dato
+DATE_PAIEMENT=Betalt dato
 
-TO_PAID=Pay
-BROUILLONNER=Reopen
-SendToValid=Sent to approve
-ModifyInfoGen=Edit
-ValidateAndSubmit=Validate and submit for approval
+TO_PAID=Betal
+BROUILLONNER=Gjenåpne
+SendToValid=Sendt for godkjenning
+ModifyInfoGen=Endre
+ValidateAndSubmit=Valider og send til godkjenning
 
-NOT_VALIDATOR=You are not allowed to approve this expense report
-NOT_AUTHOR=You are not the author of this expense report. Operation cancelled.
+NOT_VALIDATOR=Du har ikke tillatelse til å godkjenne denne reiseregningen
+NOT_AUTHOR=Reiseregningener ikke opprettet av deg. Operasjonen avbrutt.
 
-RefuseTrip=Deny an expense report
-ConfirmRefuseTrip=Are you sure you want to deny this expense report ?
+RefuseTrip=Avvis en reiseregning
+ConfirmRefuseTrip=Er du sikker på at du vil avvise denne reiseregningen
 
-ValideTrip=Approve expense report
-ConfirmValideTrip=Are you sure you want to approve this expense report ?
+ValideTrip=Godkjenn reiseregning
+ConfirmValideTrip=Er du sikker på at du vil godkjenne denne reiseregningen
 
-PaidTrip=Pay an expense report
-ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid" ?
+PaidTrip=Betal en reiseregning
+ConfirmPaidTrip=Er du sikker på at du vil endre status til "betalt" for denne reiseregningen?
 
-CancelTrip=Cancel an expense report
-ConfirmCancelTrip=Are you sure you want to cancel this expense report ?
+CancelTrip=Kanseller en reiseregning
+ConfirmCancelTrip=Er du sikker på at du vil kansellere denne reiseregningen?
 
-BrouillonnerTrip=Move back expense report to status "Draft"n
-ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft" ?
+BrouillonnerTrip=Endre status på reiseregning til "Kladd"
+ConfirmBrouillonnerTrip=Er du sikker på at du vil endre status til "Kladd" for denne reiseregningen?
 
-SaveTrip=Validate expense report
-ConfirmSaveTrip=Are you sure you want to validate this expense report ?
+SaveTrip=Godkjenn reiseregning
+ConfirmSaveTrip=Er du sikker på at du vil validere denne reiseregningen?
 
-NoTripsToExportCSV=No expense report to export for this period.
+NoTripsToExportCSV=Ingen reiseregning å eksportere for denne perioden
diff --git a/htdocs/langs/pt_BR/productbatch.lang b/htdocs/langs/pt_BR/productbatch.lang
new file mode 100644
index 0000000000000000000000000000000000000000..26ed02b1907051ec26978464b0c00ddfc11c8102
--- /dev/null
+++ b/htdocs/langs/pt_BR/productbatch.lang
@@ -0,0 +1,8 @@
+# Dolibarr language file - Source file is en_US - productbatch
+ManageLotSerial=Use lot/serial number
+ProductStatusOnBatch=Yes (lot/serial required)
+ProductStatusNotOnBatch=No (lot/serial not used)
+Batch=Lot/Serial
+batch_number=Lot/Serial number
+DetailBatchNumber=Lot/Serial details
+printBatch=Lot/Serial: %s
diff --git a/htdocs/langs/pt_PT/productbatch.lang b/htdocs/langs/pt_PT/productbatch.lang
index c86b0a42606dbb104fc9aa92332811b8cb38f488..119b7ae7f4d3d73f57aa12b6e87182bd328d25f8 100644
--- a/htdocs/langs/pt_PT/productbatch.lang
+++ b/htdocs/langs/pt_PT/productbatch.lang
@@ -1,18 +1,18 @@
 # ProductBATCH language file - en_US - ProductBATCH
-ManageLotSerial=Use lot/serial number
-ProductStatusOnBatch=Yes (lot/serial required)
-ProductStatusNotOnBatch=No (lot/serial not used)
+ManageLotSerial=Utilizar lote/número de série
+ProductStatusOnBatch=Sim (necessário lote/número de série)
+ProductStatusNotOnBatch=Não (não é necessário lote/número de série)
 ProductStatusOnBatchShort=Sim
 ProductStatusNotOnBatchShort=Não
-Batch=Lot/Serial
+Batch=Lote/Nr. de Série
 atleast1batchfield=Eat-by date or Sell-by date or Lot/Serial number
-batch_number=Lot/Serial number
+batch_number=Lote/Número de série
 BatchNumberShort=Lot/Serial
 l_eatby=Eat-by date
 l_sellby=Sell-by date
-DetailBatchNumber=Lot/Serial details
+DetailBatchNumber=Detalhes de Lote/Nr. de Série
 DetailBatchFormat=Lot/Serial: %s - Eat by: %s - Sell by: %s (Qty : %d)
-printBatch=Lot/Serial: %s
+printBatch=Lote/Nr. de Série: %s
 printEatby=Eat-by: %s
 printSellby=Sell-by: %s
 printQty=Qt.: %d
diff --git a/htdocs/langs/tr_TR/bills.lang b/htdocs/langs/tr_TR/bills.lang
index 038fc8c0b092cdc249600da99044b0c7a234a081..d639e2bd563c4767664e5431046021018251ac75 100644
--- a/htdocs/langs/tr_TR/bills.lang
+++ b/htdocs/langs/tr_TR/bills.lang
@@ -368,7 +368,7 @@ LawApplicationPart1=12/05/80 tarihli 80.335 yasasının uygulanması ile
 LawApplicationPart2=mallar şunun mülkiyetinde kalır
 LawApplicationPart3=satıcı ödemesini tamamlayıncaya kadar
 LawApplicationPart4=fiyatları.
-LimitedLiabilityCompanyCapital=SARL (Ltd) firma sermayesi
+LimitedLiabilityCompanyCapital=SARL nin sermayesi
 UseLine=Uygula
 UseDiscount=İndirim kullan
 UseCredit=Kredi kullan
diff --git a/htdocs/livraison/card.php b/htdocs/livraison/card.php
index fb087e7180066558dc0a6c728e50167e4a3e5da0..7ea9920d65b2ac4225faf0f48c463f40f90f9a1e 100644
--- a/htdocs/livraison/card.php
+++ b/htdocs/livraison/card.php
@@ -788,10 +788,14 @@ else
 				$shipment = new Expedition($db);
 				$shipment->fetch($object->origin_id);
 
-				$somethingshown=$shipment->showLinkedObjectBlock();
+				// Linked object block
+				$somethingshown = $form->showLinkedObjectBlock($shipment);
+
+				// Show links to link elements
+				//$linktoelem = $form->showLinkToObjectBlock($shipment);
+				//if ($linktoelem) print '<br>'.$linktoelem;
 			}
 
-			if ($genallowed && ! $somethingshown) $somethingshown=1;
 
 			print '</td><td valign="top" width="50%">';
 
diff --git a/htdocs/livraison/class/livraison.class.php b/htdocs/livraison/class/livraison.class.php
index 52db876fbf02b5055f007801ce67d3ab9dcc1900..3a1704f8d8d58f44cb3aba943a2abc3e310266ad 100644
--- a/htdocs/livraison/class/livraison.class.php
+++ b/htdocs/livraison/class/livraison.class.php
@@ -52,6 +52,11 @@ class Livraison extends CommonObject
 	var $ref_customer;
 	var $statut;
 
+	/**
+	 * @deprecated
+	 * @see note_public, note_private
+	 */
+	var $note;
 	var $note_public;
 	var $note_private;
 
@@ -1014,10 +1019,8 @@ class Livraison extends CommonObject
 /**
  *  Classe de gestion des lignes de bons de livraison
  */
-class LivraisonLigne
+class LivraisonLigne extends CommonObjectLine
 {
-	var $db;
-
 	// From llx_expeditiondet
 	var $qty;
 	var $qty_asked;
@@ -1027,7 +1030,19 @@ class LivraisonLigne
 	var $origin_id;
 	var $label;       // Label produit
 	var $description;  // Description produit
+	/**
+	 * @deprecated
+	 * @see product_ref
+	 */
 	var $ref;
+	/**
+	 * @deprecated
+	 * @see product_label;
+	 */
+	var $libelle;
+
+	public $product_ref;
+	public $product_label;
 
 	/**
 	 *	Constructor
diff --git a/htdocs/loan/class/paymentloan.class.php b/htdocs/loan/class/paymentloan.class.php
index 51961e37e6ec3aef863d51ad2887071c18768cb0..35ce4cbaaa08e7d797400482733baccd6b8de5eb 100644
--- a/htdocs/loan/class/paymentloan.class.php
+++ b/htdocs/loan/class/paymentloan.class.php
@@ -52,6 +52,12 @@ class PaymentLoan extends CommonObject
 	var $fk_user_creat;
 	var $fk_user_modif;
 
+	/**
+	 * @deprecated
+	 * @see amount, amounts
+	 */
+	var $total;
+
 	/**
 	 *	Constructor
 	 *
diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php
index 6df0f77f50067732817b9b5766457ddd4b169fe0..03f776ce6d5e9da50397378a25c6da9496197090 100644
--- a/htdocs/main.inc.php
+++ b/htdocs/main.inc.php
@@ -4,7 +4,7 @@
  * Copyright (C) 2004-2015  Laurent Destailleur     <eldy@users.sourceforge.net>
  * Copyright (C) 2004       Sebastien Di Cintio     <sdicintio@ressource-toi.org>
  * Copyright (C) 2004       Benoit Mortier          <benoit.mortier@opensides.be>
- * Copyright (C) 2005-2012  Regis Houssin           <regis.houssin@capnetworks.com>
+ * Copyright (C) 2005-2015  Regis Houssin           <regis.houssin@capnetworks.com>
  * Copyright (C) 2011-2014  Philippe Grand          <philippe.grand@atoo-net.com>
  * Copyright (C) 2008       Matteli
  * Copyright (C) 2011-2013  Juanjo Menent           <jmenent@2byte.es>
@@ -34,10 +34,10 @@
 
 //@ini_set('memory_limit', '64M');	// This may be useless if memory is hard limited by your PHP
 
-// For optional tuning. Enabled if environment variable DOL_TUNING is defined.
+// For optional tuning. Enabled if environment variable MAIN_SHOW_TUNING_INFO is defined.
 // A call first. Is the equivalent function dol_microtime_float not yet loaded.
 $micro_start_time=0;
-if (! empty($_SERVER['DOL_TUNING']))
+if (! empty($_SERVER['MAIN_SHOW_TUNING_INFO']))
 {
     list($usec, $sec) = explode(" ", microtime());
     $micro_start_time=((float) $usec + (float) $sec);
@@ -110,7 +110,7 @@ function test_sql_and_script_inject($val, $type)
 }
 
 /**
- * Security: Return true if OK, false otherwise.
+ * Return true if security check on parameters are OK, false otherwise.
  *
  * @param		string			$var		Variable name
  * @param		string			$type		1=GET, 0=POST, 2=PHP_SELF
@@ -539,7 +539,7 @@ if (! defined('NOLOGIN'))
     {
         // We are already into an authenticated session
         $login=$_SESSION["dol_login"];
-        dol_syslog("This is an already logged session. _SESSION['dol_login']=".$login);
+        dol_syslog("This is an already logged session. _SESSION['dol_login']=".$login, LOG_DEBUG);
 
         $resultFetchUser=$user->fetch('',$login);
         if ($resultFetchUser <= 0)
@@ -1436,8 +1436,16 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a
 
 	    // Add login user link
 	    $toprightmenu.='<div class="login_block_user">';
-	    //$toprightmenu.=$form->textwithtooltip('',$loginhtmltext,2,1,$logintext,'login_block_elem2',2);	// This include div class="login"
-        $toprightmenu.= $user->getNomurl(0, '', true, 0, 11);
+
+	    // User photo
+	    $toprightmenu.='<div class="inline-block nowrap"><div class="inline-block login_block_elem" style="padding: 0px;">';
+	    $toprightmenu.=$user->getPhotoUrl(16,16,'loginphoto');
+	    $toprightmenu.='</div></div>';
+
+		$toprightmenu.='<div class="inline-block nowrap"><div class="inline-block login_block_elem" style="padding: 0px;">';
+        $toprightmenu.=$user->getNomurl(0, '', true, 0, 11);
+        $toprightmenu.='</div></div>';
+
 		$toprightmenu.='</div>';
 
 	    $toprightmenu.='<div class="login_block_other">';
@@ -1451,9 +1459,6 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a
 		}
 		else $toprightmenu.=$result;	// For backward compatibility
 
-	    // Logout link
-	    $toprightmenu.=$form->textwithtooltip('',$logouthtmltext,2,1,$logouttext,'login_block_elem',2);
-
 	    // Link to print main content area
 	    if (empty($conf->global->MAIN_PRINT_DISABLELINK) && empty($conf->browser->phone))
 	    {
@@ -1464,7 +1469,11 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a
 	        $text.='</a>';
 	        $toprightmenu.=$form->textwithtooltip('',$langs->trans("PrintContentArea"),2,1,$text,'login_block_elem',2);
 	    }
-		$toprightmenu.='</div>';
+
+		// Logout link
+	    $toprightmenu.=$form->textwithtooltip('',$logouthtmltext,2,1,$logouttext,'login_block_elem',2);
+
+	    $toprightmenu.='</div>';
 
 	    print $toprightmenu;
 
@@ -1794,7 +1803,7 @@ function printSearchForm($urlaction,$urlobject,$title,$htmlmodesearch,$htmlinput
 {
     global $conf,$langs;
 
-    if (!$htmlinputid) {
+    if (empty($htmlinputid)) {
         $htmlinputid = $htmlinputname;
     }
 
@@ -1868,9 +1877,9 @@ if (! function_exists("llxFooter"))
         if ($comment) print '<!-- '.$comment.' -->'."\n";
 
         printCommonFooter($zone);
+        //var_dump($langs);		// Uncommment to see the property _tab_loaded to see which language file were loaded
 
         if (empty($conf->dol_hide_leftmenu) && empty($conf->dol_use_jmobile) && empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print '</div> <!-- End div id-container -->'."\n";	// End div container
-
         print "</body>\n";
         print "</html>\n";
     }
diff --git a/htdocs/opensurvey/class/opensurveysondage.class.php b/htdocs/opensurvey/class/opensurveysondage.class.php
index b4c8570dec88744b5b1206db6f9f13b1279c7d92..1ab2352395de884668abd80410c77c3fcf0098b6 100644
--- a/htdocs/opensurvey/class/opensurveysondage.class.php
+++ b/htdocs/opensurvey/class/opensurveysondage.class.php
@@ -43,7 +43,12 @@ class Opensurveysondage extends CommonObject
     var $id;
 
 	var $id_sondage;
+	/**
+	 * @deprecated
+	 * @see description
+	 */
 	var $commentaires;
+	public $description;
 
 	var $mail_admin;
 	var $nom_admin;
diff --git a/htdocs/opensurvey/wizard/index.php b/htdocs/opensurvey/wizard/index.php
index 9566231353ff87ea29b6592b07f8890dcf3c797f..1f324a52a58e52f97d783df2935bc780958be5ec 100644
--- a/htdocs/opensurvey/wizard/index.php
+++ b/htdocs/opensurvey/wizard/index.php
@@ -1,6 +1,6 @@
 <?php
 /* Copyright (C) 2013      Laurent Destailleur <eldy@users.sourceforge.net>
- * Copyright (C) 2014 Marcos García				<marcosgdf@gmail.com>
+ * Copyright (C) 2014      Marcos García       <marcosgdf@gmail.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -23,10 +23,10 @@
 //if (! defined('NOREQUIRETRAN'))  define('NOREQUIRETRAN','1');
 if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1');
 if (! defined('NOREQUIREAJAX'))  define('NOREQUIREAJAX','1');
-require_once('../../main.inc.php');
-require_once(DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php");
-require_once(DOL_DOCUMENT_ROOT."/core/lib/files.lib.php");
-require_once(DOL_DOCUMENT_ROOT."/opensurvey/fonctions.php");
+require '../../main.inc.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/opensurvey/fonctions.php';
 
 // Security check
 if (!$user->rights->opensurvey->write) accessforbidden();
@@ -39,7 +39,7 @@ $langs->load("opensurvey");
 
 $arrayofjs=array();
 $arrayofcss=array('/opensurvey/css/style.css');
-llxHeader('', $langs->trans("OpenSurvey"), '', "", 0, 0, $arrayofjs, $arrayofcss);
+llxHeader('', $langs->trans("Survey"), '', "", 0, 0, $arrayofjs, $arrayofcss);
 
 print_fiche_titre($langs->trans("CreatePoll"));
 
diff --git a/htdocs/product/admin/product_tools.php b/htdocs/product/admin/product_tools.php
index 26ad4dba807347b96c3c60545394a2051b010352..ec5f575a552435f976dd1fb6c299e784dc4a2821 100644
--- a/htdocs/product/admin/product_tools.php
+++ b/htdocs/product/admin/product_tools.php
@@ -292,7 +292,7 @@ else
 	print '<tr '.$bc[$var].'>'."\n";
 	print '<td>'.$langs->trans("PriceBaseTypeToChange").'</td>'."\n";
 	print '<td width="60" align="right">'."\n";
-	print $form->load_PriceBaseType($price_base_type);
+	print $form->selectPriceBaseType($price_base_type);
 	print '</td>'."\n";
 	print '</tr>'."\n";
 	*/
diff --git a/htdocs/product/canvas/product/actions_card_product.class.php b/htdocs/product/canvas/product/actions_card_product.class.php
index 260c8996fc435fb841ba7b9e1753759d9f04a16f..aba6325d234a96f608a3863bf0773de1673404c1 100644
--- a/htdocs/product/canvas/product/actions_card_product.class.php
+++ b/htdocs/product/canvas/product/actions_card_product.class.php
@@ -116,7 +116,7 @@ class ActionsCardProduct
 			// Price
 			$this->tpl['price'] = $this->price;
 			$this->tpl['price_min'] = $this->price_min;
-			$this->tpl['price_base_type'] = $form->load_PriceBaseType($this->price_base_type, "price_base_type");
+			$this->tpl['price_base_type'] = $form->selectPriceBaseType($this->price_base_type, "price_base_type");
 
 			// VAT
 			$this->tpl['tva_tx'] = $form->load_tva("tva_tx",-1,$mysoc,'');
diff --git a/htdocs/product/canvas/product/tpl/card_create.tpl.php b/htdocs/product/canvas/product/tpl/card_create.tpl.php
index b700764484d3528386579eb90f46ce05fef1a6cf..3f5ebdcbc0b0091a0f4b4a12c1a95cf13e8adc8d 100644
--- a/htdocs/product/canvas/product/tpl/card_create.tpl.php
+++ b/htdocs/product/canvas/product/tpl/card_create.tpl.php
@@ -42,7 +42,7 @@ $statutarray=array('1' => $langs->trans("OnSell"), '0' => $langs->trans("NotOnSe
 <tr>
 <td class="fieldrequired" width="20%"><?php echo $langs->trans("Ref"); ?></td>
 <td><input name="ref" size="40" maxlength="32" value="<?php echo $object->ref; ?>">
-<?php if ($_error == 1) echo $langs->trans("RefAlreadyExists"); ?>
+<?php if ($refalreadyexists == 1) echo $langs->trans("RefAlreadyExists"); ?>
 </td></tr>
 
 <tr>
diff --git a/htdocs/product/canvas/service/actions_card_service.class.php b/htdocs/product/canvas/service/actions_card_service.class.php
index f7de783cd99428931cebafe2aec6d6f8d10e2266..7bc04ecb42a5d312d08837d86b4e0d27fc297603 100644
--- a/htdocs/product/canvas/service/actions_card_service.class.php
+++ b/htdocs/product/canvas/service/actions_card_service.class.php
@@ -115,7 +115,7 @@ class ActionsCardService
 			// Price
 			$this->tpl['price'] = $this->price;
 			$this->tpl['price_min'] = $this->price_min;
-			$this->tpl['price_base_type'] = $form->load_PriceBaseType($this->price_base_type, "price_base_type");
+			$this->tpl['price_base_type'] = $form->selectPriceBaseType($this->price_base_type, "price_base_type");
 
 			// VAT
 			$this->tpl['tva_tx'] = $form->load_tva("tva_tx",-1,$mysoc,'');
diff --git a/htdocs/product/canvas/service/tpl/card_create.tpl.php b/htdocs/product/canvas/service/tpl/card_create.tpl.php
index 148b9164ac15f3f8b33ccfd9627ec99d6c618f09..c9bb423d0a2e9e32ebc98f843cb5ba93b34a6adb 100644
--- a/htdocs/product/canvas/service/tpl/card_create.tpl.php
+++ b/htdocs/product/canvas/service/tpl/card_create.tpl.php
@@ -40,7 +40,7 @@ $statutarray=array('1' => $langs->trans("OnSell"), '0' => $langs->trans("NotOnSe
 <tr>
 <td class="fieldrequired" width="20%"><?php echo $langs->trans("Ref"); ?></td>
 <td><input name="ref" size="40" maxlength="32" value="<?php echo $object->ref; ?>">
-<?php if ($_error == 1) echo $langs->trans("RefAlreadyExists"); ?>
+<?php if ($refalreadyexists == 1) echo $langs->trans("RefAlreadyExists"); ?>
 </td></tr>
 
 <tr>
diff --git a/htdocs/product/card.php b/htdocs/product/card.php
index 7780bb560a5c4984d5077f97f2b6ebe5f32d4e45..08c391c11c4e00051ab4f97168ed211dab8cbecb 100644
--- a/htdocs/product/card.php
+++ b/htdocs/product/card.php
@@ -2,7 +2,7 @@
 /* Copyright (C) 2001-2007	Rodolphe Quiedeville	<rodolphe@quiedeville.org>
  * Copyright (C) 2004-2015	Laurent Destailleur		<eldy@users.sourceforge.net>
  * Copyright (C) 2005		Eric Seigne				<eric.seigne@ryxeo.com>
- * Copyright (C) 2005-2014	Regis Houssin			<regis.houssin@capnetworks.com>
+ * Copyright (C) 2005-2015	Regis Houssin			<regis.houssin@capnetworks.com>
  * Copyright (C) 2006		Andre Cianfarani		<acianfa@free.fr>
  * Copyright (C) 2006		Auguria SARL			<info@auguria.org>
  * Copyright (C) 2010-2014	Juanjo Menent			<jmenent@2byte.es>
@@ -10,7 +10,7 @@
  * Copyright (C) 2012-2013	Cédric Salvador			<csalvador@gpcsolutions.fr>
  * Copyright (C) 2011-2014	Alexandre Spangaro		<alexandre.spangaro@gmail.com>
  * Copyright (C) 2014		Cédric Gross			<c.gross@kreiz-it.fr>
- * Copyright (C) 2014		Ferran Marcet			<fmarcet@2byte.es>
+ * Copyright (C) 2014-2015	Ferran Marcet			<fmarcet@2byte.es>
  * Copyright (C) 2015       Jean-François Ferry     <jfefe@aternatik.fr>
  * Copyright (C) 2015       Raphaël Doursenaud      <rdoursenaud@gpcsolutions.fr>
  *
@@ -53,7 +53,9 @@ if (! empty($conf->stock->enabled)) $langs->load("stocks");
 if (! empty($conf->facture->enabled)) $langs->load("bills");
 if (! empty($conf->productbatch->enabled)) $langs->load("productbatch");
 
-$mesg=''; $error=0; $errors=array(); $_error=0;
+$mesg=''; $error=0; $errors=array();
+
+$refalreadyexists=0;
 
 $id=GETPOST('id', 'int');
 $ref=GETPOST('ref', 'alpha');
@@ -468,7 +470,7 @@ if (empty($reshook))
                         {
                             $db->rollback();
 
-                            $_error++;
+                            $refalreadyexists++;
                             $action = "";
 
                             $mesg=$langs->trans("ErrorProductAlreadyExists",$object->ref);
@@ -477,7 +479,7 @@ if (empty($reshook))
                             $object->fetch($id);
                         }
                         else
-                        {
+                     {
                             $db->rollback();
                             if (count($object->errors))
                             {
@@ -788,8 +790,13 @@ else
 		if (! empty($conf->barcode->enabled) && ! empty($conf->global->BARCODE_PRODUCT_ADDON_NUM))
 		{
 			$module=strtolower($conf->global->BARCODE_PRODUCT_ADDON_NUM);
-        	$result=dol_include_once('/core/modules/barcode/'.$module.'.php');
-        	if ($result > 0)
+			$dirbarcode=array_merge(array('/core/modules/barcode/'),$conf->modules_parts['barcode']);
+            foreach ($dirbarcode as $dirroot)
+            {
+                $res=dol_include_once($dirroot.$module.'.php');
+                if ($res) break;
+            }
+        	if ($res > 0)
         	{
 				$modBarCodeProduct =new $module();
         	}
@@ -816,7 +823,7 @@ else
         $tmpcode='';
 		if (! empty($modCodeProduct->code_auto)) $tmpcode=$modCodeProduct->getNextValue($object,$type);
         print '<td class="fieldrequired" width="20%">'.$langs->trans("Ref").'</td><td colspan="3"><input name="ref" size="32" maxlength="128" value="'.dol_escape_htmltag(GETPOST('ref')?GETPOST('ref'):$tmpcode).'">';
-        if ($_error)
+        if ($refalreadyexists)
         {
             print $langs->trans("RefAlreadyExists");
         }
@@ -1004,7 +1011,7 @@ else
             // PRIX
             print '<tr><td>'.$langs->trans("SellingPrice").'</td>';
             print '<td><input name="price" size="10" value="'.$object->price.'">';
-            print $form->select_PriceBaseType($object->price_base_type, "price_base_type");
+            print $form->selectPriceBaseType($object->price_base_type, "price_base_type");
             print '</td></tr>';
 
             // MIN PRICE
@@ -1385,7 +1392,7 @@ else
                 print '<table width="100%" class="nobordernopadding"><tr><td class="nowrap">';
                 print $langs->trans("BarcodeType");
                 print '<td>';
-                if (($action != 'editbarcodetype') && $user->rights->barcode->creer) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editbarcodetype&amp;id='.$object->id.'">'.img_edit($langs->trans('Edit'),1).'</a></td>';
+                if (($action != 'editbarcodetype') && ! empty($user->rights->barcode->creer)) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editbarcodetype&amp;id='.$object->id.'">'.img_edit($langs->trans('Edit'),1).'</a></td>';
                 print '</tr></table>';
                 print '</td><td colspan="2">';
                 if ($action == 'editbarcodetype')
@@ -1406,7 +1413,7 @@ else
                 print '<table width="100%" class="nobordernopadding"><tr><td class="nowrap">';
                 print $langs->trans("BarcodeValue");
                 print '<td>';
-                if (($action != 'editbarcode') && $user->rights->barcode->creer) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editbarcode&amp;id='.$object->id.'">'.img_edit($langs->trans('Edit'),1).'</a></td>';
+                if (($action != 'editbarcode') && ! empty($user->rights->barcode->creer)) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editbarcode&amp;id='.$object->id.'">'.img_edit($langs->trans('Edit'),1).'</a></td>';
                 print '</tr></table>';
                 print '</td><td colspan="2">';
                 if ($action == 'editbarcode')
@@ -1461,7 +1468,7 @@ else
             print '</td></tr>';
 
             // Batch number management (to batch)
-            if ($conf->productbatch->enabled) {
+            if (! empty($conf->productbatch->enabled)) {
                 print '<tr><td>'.$langs->trans("ManageLotSerial").'</td><td colspan="2">';
                 if (! empty($conf->use_javascript_ajax) && $user->rights->produit->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) {
                     print ajax_object_onoff($object, 'status_batch', 'tobatch', 'ProductStatusOnBatch', 'ProductStatusNotOnBatch');
@@ -1552,7 +1559,7 @@ else
             }
 
 			// Unit
-			if($conf->global->PRODUCT_USE_UNITS)
+			if (! empty($conf->global->PRODUCT_USE_UNITS))
 			{
 				$unit = $object->getLabelOfUnit();
 
diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php
index d2c3deeb2e4f08cf71dbb28700bb3d7f137831a9..079c0772d8b4042fc3869b59b678b3019625ebaa 100644
--- a/htdocs/product/class/product.class.php
+++ b/htdocs/product/class/product.class.php
@@ -59,10 +59,15 @@ class Product extends CommonObject
 	var $id ;
 	//! Ref
 	var $ref;
-    /**
-     * Product label
-     * @var string
-     */
+	/*
+	 * @deprecated
+	 * @see label
+	 */
+	var $libelle;
+	/**
+	 * Product label
+	 * @var string
+	 */
 	var $label;
     /**
      * Product descripion
@@ -183,6 +188,20 @@ class Product extends CommonObject
 
     var $fk_price_expression;
 
+	/**
+	 * @deprecated
+	 * @see fourn_pu
+	 */
+	var $buyprice;
+	public $fourn_pu;
+
+	/**
+	 * @deprecated
+	 * @see ref_supplier
+	 */
+	var $ref_fourn;
+	public $ref_supplier;
+
 	/**
 	 * Unit code ('km', 'm', 'l', 'p', ...)
 	 * @var string
@@ -817,6 +836,11 @@ class Product extends CommonObject
 	 */
 	function delete($id=0)
 	{
+		// Deprecation warning
+		if (0 == $id) {
+			dol_syslog(__METHOD__ . " with parameter is deprecated", LOG_WARNING);
+		}
+
 		global $conf,$user,$langs;
 		require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php';
 
@@ -1252,7 +1276,7 @@ class Product extends CommonObject
                     	$obj->price = $price_result;
                     }
                 }
-				$this->buyprice = $obj->price;                      // \deprecated
+				$this->buyprice = $obj->price;                      // deprecated
 				$this->fourn_pu = $obj->price / $obj->quantity;     // Prix unitaire du produit pour le fournisseur $fourn_id
 				$this->ref_fourn = $obj->ref_fourn;                 // Ref supplier
 				$this->vatrate_supplier = $obj->tva_tx;             // Vat ref supplier
@@ -3915,9 +3939,9 @@ class Product extends CommonObject
 	/**
 	 * Function used to replace a thirdparty id with another one.
 	 *
-	 * @param DoliDB $db Database handler
-	 * @param int $origin_id Old thirdparty id
-	 * @param int $dest_id New thirdparty id
+	 * @param DoliDB 	$db 			Database handler
+	 * @param int 		$origin_id 		Old thirdparty id
+	 * @param int 		$dest_id 		New thirdparty id
 	 * @return bool
 	 */
 	public static function replaceThirdparty(DoliDB $db, $origin_id, $dest_id)
diff --git a/htdocs/product/fournisseurs.php b/htdocs/product/fournisseurs.php
index 750158d4e8d292eab7cde5f4c4ecdf7d426ac0f7..fe715801f1137bc01a8cca55c99c75527dd81299 100644
--- a/htdocs/product/fournisseurs.php
+++ b/htdocs/product/fournisseurs.php
@@ -450,7 +450,7 @@ if ($id || $ref)
 				print '<tr><td class="fieldrequired">'.$langs->trans("PriceQtyMin").'</td>';
 				print '<td><input class="flat" name="price" size="8" value="'.(GETPOST('price')?price(GETPOST('price')):(isset($product->fourn_price)?price($product->fourn_price):'')).'">';
 				print '&nbsp;';
-				print $form->select_PriceBaseType((GETPOST('price_base_type')?GETPOST('price_base_type'):$product->price_base_type), "price_base_type");
+				print $form->selectPriceBaseType((GETPOST('price_base_type')?GETPOST('price_base_type'):$product->price_base_type), "price_base_type");
 				print '</td></tr>';
 
 				// Discount qty min
@@ -502,10 +502,15 @@ if ($id || $ref)
 
 			if ($action != 'add_price' && $action != 'updateprice')
 			{
-				if ($user->rights->produit->creer || $user->rights->service->creer)
+				$parameters=array();
+				$reshook=$hookmanager->executeHooks('addMoreActionsButtons',$parameters,$object,$action);    // Note that $action and $object may have been modified by hook
+				if (empty($reshook))
 				{
-					print '<a class="butAction" href="'.DOL_URL_ROOT.'/product/fournisseurs.php?id='.$product->id.'&amp;action=add_price">';
-					print $langs->trans("AddSupplierPrice").'</a>';
+					if ($user->rights->produit->creer || $user->rights->service->creer)
+					{
+						print '<a class="butAction" href="'.DOL_URL_ROOT.'/product/fournisseurs.php?id='.$product->id.'&amp;action=add_price">';
+						print $langs->trans("AddSupplierPrice").'</a>';
+					}
 				}
 			}
 
diff --git a/htdocs/product/list.php b/htdocs/product/list.php
index 83e15cb104e222398fa89f00a976cab1d3fdc65a..3c68f2617329fe201919fc255e2a3bcbc6930c1c 100644
--- a/htdocs/product/list.php
+++ b/htdocs/product/list.php
@@ -50,8 +50,8 @@ $sall=GETPOST("sall");
 $type=GETPOST("type","int");
 $search_sale = GETPOST("search_sale");
 $search_categ = GETPOST("search_categ",'int');
-$tosell = GETPOST("tosell");
-$tobuy = GETPOST("tobuy");
+$tosell = GETPOST("tosell", 'int');
+$tobuy = GETPOST("tobuy", 'int');
 $fourn_id = GETPOST("fourn_id",'int');
 $catid = GETPOST('catid','int');
 
@@ -182,7 +182,7 @@ else
     if (dol_strlen($canvas) > 0)                    $sql.= " AND p.canvas = '".$db->escape($canvas)."'";
     if ($catid > 0)    $sql.= " AND cp.fk_categorie = ".$catid;
     if ($catid == -2)  $sql.= " AND cp.fk_categorie IS NULL";
-    if ($search_categ > 0)   $sql.= " AND cp.fk_categorie = ".$search_categ;
+    if ($search_categ > 0)   $sql.= " AND cp.fk_categorie = ".$db->escape($search_categ);
     if ($search_categ == -2) $sql.= " AND cp.fk_categorie IS NULL";
     if ($fourn_id > 0) $sql.= " AND pfp.fk_soc = ".$fourn_id;
     $sql.= " GROUP BY p.rowid, p.ref, p.label, p.barcode, p.price, p.price_ttc, p.price_base_type,";
@@ -322,16 +322,16 @@ else
     		// Lignes des champs de filtre
     		print '<tr class="liste_titre">';
     		print '<td class="liste_titre" align="left">';
-    		print '<input class="flat" type="text" name="sref" size="8" value="'.$sref.'">';
+    		print '<input class="flat" type="text" name="sref" size="8" value="'.dol_escape_htmltag($sref).'">';
     		print '</td>';
     		print '<td class="liste_titre" align="left">';
-    		print '<input class="flat" type="text" name="snom" size="12" value="'.$snom.'">';
+    		print '<input class="flat" type="text" name="snom" size="12" value="'.dol_escape_htmltag($snom).'">';
     		print '</td>';
     		// Barcode
     		if (! empty($conf->barcode->enabled))
     		{
     			print '<td class="liste_titre">';
-    			print '<input class="flat" type="text" name="sbarcode" size="6" value="'.$sbarcode.'">';
+    			print '<input class="flat" type="text" name="sbarcode" size="6" value="'.dol_escape_htmltag($sbarcode).'">';
     			print '</td>';
     		}
     		// Date modification
@@ -541,10 +541,10 @@ else
     			$i++;
     		}
 
-    		$param="&amp;sref=".$sref.($sbarcode?"&amp;sbarcode=".$sbarcode:"")."&amp;snom=".$snom."&amp;sall=".$sall."&amp;tosell=".$tosell."&amp;tobuy=".$tobuy;
-    		$param.=($fourn_id?"&amp;fourn_id=".$fourn_id:"");
-    		$param.=($search_categ?"&amp;search_categ=".$search_categ:"");
-    		$param.=isset($type)?"&amp;type=".$type:"";
+    		$param="&sref=".$sref.($sbarcode?"&sbarcode=".$sbarcode:"")."&snom=".$snom."&sall=".$sall."&tosell=".$tosell."&tobuy=".$tobuy;
+    		$param.=($fourn_id?"&fourn_id=".$fourn_id:"");
+    		$param.=($search_categ?"&search_categ=".$search_categ:"");
+    		$param.=isset($type)?"&type=".$type:"";
     		print_barre_liste('', $page, "list.php", $param, $sortfield, $sortorder,'',$num,$nbtotalofrecords);
 
     		$db->free($resql);
diff --git a/htdocs/product/price.php b/htdocs/product/price.php
index ce8ad104a1f014a30aed4ac8597046db9c559d8b..1e454ca724b38629d5df88e08e7ca85925ef8382 100644
--- a/htdocs/product/price.php
+++ b/htdocs/product/price.php
@@ -2,7 +2,7 @@
 /* Copyright (C) 2001-2007	Rodolphe Quiedeville	<rodolphe@quiedeville.org>
  * Copyright (C) 2004-2014	Laurent Destailleur		<eldy@users.sourceforge.net>
  * Copyright (C) 2005		Eric Seigne				<eric.seigne@ryxeo.com>
- * Copyright (C) 2005-2013	Regis Houssin			<regis.houssin@capnetworks.com>
+ * Copyright (C) 2005-2015	Regis Houssin			<regis.houssin@capnetworks.com>
  * Copyright (C) 2006		Andre Cianfarani		<acianfa@free.fr>
  * Copyright (C) 2014		Florian Henry			<florian.henry@open-concept.pro>
  * Copyright (C) 2014		Juanjo Menent			<jmenent@2byte.es>
@@ -43,9 +43,12 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) {
 $langs->load("products");
 $langs->load("bills");
 
+$mesg=''; $error=0; $errors=array();
+
 $id = GETPOST('id', 'int');
 $ref = GETPOST('ref', 'alpha');
 $action = GETPOST('action', 'alpha');
+$cancel = GETPOST('cancel', 'alpha');
 $eid = GETPOST('eid', 'int');
 
 // Security check
@@ -54,303 +57,302 @@ $fieldtype = (! empty($ref) ? 'ref' : 'rowid');
 if ($user->societe_id) $socid = $user->societe_id;
 $result = restrictedArea($user, 'produit|service', $fieldvalue, 'product&product', '', '', $fieldtype);
 
-$object = new Product($db);
+if ($id > 0 || ! empty($ref))
+{
+	$object = new Product($db);
+	$object->fetch($id, $ref);
+}
 
 // Clean param
 if (! empty($conf->global->PRODUIT_MULTIPRICES) && empty($conf->global->PRODUIT_MULTIPRICES_LIMIT)) $conf->global->PRODUIT_MULTIPRICES_LIMIT = 5;
 
-$error=0;
+// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
+$hookmanager->initHooks(array('productpricecard','globalcard'));
 
 
 /*
  * Actions
  */
 
-if (GETPOST("cancel")) $action='';
+if ($cancel) $action='';
 
-if ($action == 'update_price' && ! GETPOST("cancel") && ($user->rights->produit->creer || $user->rights->service->creer))
-{
-	$result = $object->fetch($id);
+$parameters=array('id'=>$id, 'ref'=>$ref);
+$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action);    // Note that $action and $object may have been modified by some hooks
+if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
 
-	$error=0;
-	$maxpricesupplier = $object->min_recommended_price();
-	$object->fk_price_expression = empty($eid) ? 0 : $eid; //0 discards expression
-
-	// MultiPrix
-	if (! empty($conf->global->PRODUIT_MULTIPRICES))
+if (empty($reshook))
+{
+	if ($action == 'update_price' && !$cancel && ($user->rights->produit->creer || $user->rights->service->creer))
 	{
-		$newprice = '';
-		$newprice_min = '';
-		$newpricebase = '';
-		$newvat = '';
+		$maxpricesupplier = $object->min_recommended_price();
+		$object->fk_price_expression = empty($eid) ? 0 : $eid; //0 discards expression
 
-		for ($i = 1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i ++)
+		// MultiPrix
+		if (! empty($conf->global->PRODUIT_MULTIPRICES))
 		{
-			if (isset($_POST ["price_" . $i]))
+			$newprice = '';
+			$newprice_min = '';
+			$newpricebase = '';
+			$newvat = '';
+
+			for ($i = 1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i ++)
 			{
-				$level = $i;
-				$newprice = price2num($_POST ["price_" . $i], 'MU');
-				$newprice_min = price2num($_POST ["price_min_" . $i], 'MU');
-				$newpricebase = $_POST ["multiprices_base_type_" . $i];
-				$newnpr = (preg_match('/\*/', $_POST ["tva_tx_" . $i]) ? 1 : 0);
-				$newvat = str_replace('*', '', $_POST ["tva_tx_" . $i]);
-				$newpsq = GETPOST('psqflag');
-				$newpsq = empty($newpsq) ? 0 : $newpsq;
-				break; // We found submited price
+				if (isset($_POST ["price_" . $i]))
+				{
+					$level = $i;
+					$newprice = price2num($_POST ["price_" . $i], 'MU');
+					$newprice_min = price2num($_POST ["price_min_" . $i], 'MU');
+					$newpricebase = $_POST ["multiprices_base_type_" . $i];
+					$newnpr = (preg_match('/\*/', $_POST ["tva_tx_" . $i]) ? 1 : 0);
+					$newvat = str_replace('*', '', $_POST ["tva_tx_" . $i]);
+					$newpsq = GETPOST('psqflag');
+					$newpsq = empty($newpsq) ? 0 : $newpsq;
+					break; // We found submited price
+				}
 			}
+		} else {
+			$level = 0;
+			$newprice = price2num($_POST ["price"], 'MU');
+			$newprice_min = price2num($_POST ["price_min"], 'MU');
+			$newpricebase = $_POST ["price_base_type"];
+			$newnpr = (preg_match('/\*/', $_POST ["tva_tx"]) ? 1 : 0);
+			$newvat = str_replace('*', '', $_POST ["tva_tx"]);
+			$newpsq = GETPOST('psqflag');
+			$newpsq = empty($newpsq) ? 0 : $newpsq;
 		}
-	} else {
-		$level = 0;
-		$newprice = price2num($_POST ["price"], 'MU');
-		$newprice_min = price2num($_POST ["price_min"], 'MU');
-		$newpricebase = $_POST ["price_base_type"];
-		$newnpr = (preg_match('/\*/', $_POST ["tva_tx"]) ? 1 : 0);
-		$newvat = str_replace('*', '', $_POST ["tva_tx"]);
-		$newpsq = GETPOST('psqflag');
-		$newpsq = empty($newpsq) ? 0 : $newpsq;
-	}
 
-	if (! empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE) && $newprice_min < $maxpricesupplier)
-	{
-		setEventMessage($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')),'errors');
-		$error++;
-		$action='edit_price';
-	}
-
-	if ($newprice < $newprice_min && ! empty($object->fk_price_expression)) {
-		$newprice = $newprice_min; //Set price same as min, the user will not see the
-	}
+		if (! empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE) && $newprice_min < $maxpricesupplier)
+		{
+			setEventMessage($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')),'errors');
+			$error++;
+			$action='edit_price';
+		}
 
-	if ($object->updatePrice($newprice, $newpricebase, $user, $newvat, $newprice_min, $level, $newnpr, $newpsq) > 0)
-	{
-		if ($object->fk_price_expression != 0) {
-			//Check the expression validity by parsing it
-			$priceparser = new PriceParser($db);
-			$price_result = $priceparser->parseProduct($object);
-			if ($price_result < 0) { //Expression is not valid
-				$error++;
-				$action='edit_price';
-				setEventMessage($priceparser->translatedError(), 'errors');
-			}
+		if ($newprice < $newprice_min && ! empty($object->fk_price_expression)) {
+			$newprice = $newprice_min; //Set price same as min, the user will not see the
 		}
-		if (empty($error) && ! empty($conf->dynamicprices->enabled))
+
+		if ($object->updatePrice($newprice, $newpricebase, $user, $newvat, $newprice_min, $level, $newnpr, $newpsq) > 0)
 		{
-			$ret=$object->setPriceExpression($object->fk_price_expression);
-			if ($ret < 0)
+			if ($object->fk_price_expression != 0) {
+				//Check the expression validity by parsing it
+				$priceparser = new PriceParser($db);
+				$price_result = $priceparser->parseProduct($object);
+				if ($price_result < 0) { //Expression is not valid
+					$error++;
+					$action='edit_price';
+					setEventMessage($priceparser->translatedError(), 'errors');
+				}
+			}
+			if (empty($error) && ! empty($conf->dynamicprices->enabled))
+			{
+				$ret=$object->setPriceExpression($object->fk_price_expression);
+				if ($ret < 0)
+				{
+					$error++;
+					$action='edit_price';
+					setEventMessage($object->error, 'errors');
+				}
+			}
+			if (empty($error))
 			{
-				$error++;
-				$action='edit_price';
-				setEventMessage($object->error, 'errors');
+				$action = '';
+				setEventMessage($langs->trans("RecordSaved"));
 			}
+		} else {
+			$action = 'edit_price';
+			setEventMessage($object->error, 'errors');
 		}
-		if (empty($error))
-		{
-			$action = '';
-			setEventMessage($langs->trans("RecordSaved"));
-		}
-	} else {
-		$action = 'edit_price';
-		setEventMessage($object->error, 'errors');
 	}
-}
 
-if ($action == 'delete' && $user->rights->produit->supprimer)
-{
-	$result = $object->log_price_delete($user, $_GET ["lineid"]);
-	if ($result < 0) {
-		setEventMessage($object->error, 'errors');
+	if ($action == 'delete' && $user->rights->produit->supprimer)
+	{
+		$result = $object->log_price_delete($user, $_GET ["lineid"]);
+		if ($result < 0) {
+			setEventMessage($object->error, 'errors');
+		}
 	}
-}
-
-/**
- * ***************************************************
- * Price by quantity
- * ***************************************************
- */
-$error = 0;
-if ($action == 'activate_price_by_qty') { // Activating product price by quantity add a new price, specified as by quantity
-	$result = $object->fetch($id);
-	$level = GETPOST('level');
 
-	$object->updatePrice(0, $object->price_base_type, $user, $object->tva_tx, 0, $level, $object->tva_npr, 1);
-}
+	/**
+	 * ***************************************************
+	 * Price by quantity
+	 * ***************************************************
+	 */
+	if ($action == 'activate_price_by_qty') { // Activating product price by quantity add a new price, specified as by quantity
 
-if ($action == 'edit_price_by_qty') { // Edition d'un prix par quantité
-	$rowid = GETPOST('rowid');
-}
+		$level = GETPOST('level');
 
-if ($action == 'update_price_by_qty') { // Ajout / Mise à jour d'un prix par quantité
-	$result = $object->fetch($id);
-
-	// Récupération des variables
-	$rowid = GETPOST('rowid');
-	$priceid = GETPOST('priceid');
-	$newprice = price2num(GETPOST("price"), 'MU');
-	// $newminprice=price2num(GETPOST("price_min"),'MU'); // TODO : Add min price management
-	$quantity = GETPOST('quantity');
-	$remise_percent = price2num(GETPOST('remise_percent'));
-	$remise = 0; // TODO : allow discount by amount when available on documents
-
-	if (empty($quantity)) {
-		$error ++;
-		setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentities("Qty")), 'errors');
+		$object->updatePrice(0, $object->price_base_type, $user, $object->tva_tx, 0, $level, $object->tva_npr, 1);
 	}
-	if (empty($newprice)) {
-		$error ++;
-		setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentities("Price")), 'errors');
+
+	if ($action == 'edit_price_by_qty') { // Edition d'un prix par quantité
+		$rowid = GETPOST('rowid');
 	}
-	if (! $error) {
-		// Calcul du prix HT et du prix unitaire
-		if ($object->price_base_type == 'TTC') {
-			$price = price2num($newprice) / (1 + ($object->tva_tx / 100));
+
+	if ($action == 'update_price_by_qty') { // Ajout / Mise à jour d'un prix par quantité
+
+		// Récupération des variables
+		$rowid = GETPOST('rowid');
+		$priceid = GETPOST('priceid');
+		$newprice = price2num(GETPOST("price"), 'MU');
+		// $newminprice=price2num(GETPOST("price_min"),'MU'); // TODO : Add min price management
+		$quantity = GETPOST('quantity');
+		$remise_percent = price2num(GETPOST('remise_percent'));
+		$remise = 0; // TODO : allow discount by amount when available on documents
+
+		if (empty($quantity)) {
+			$error ++;
+			setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentities("Qty")), 'errors');
+		}
+		if (empty($newprice)) {
+			$error ++;
+			setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentities("Price")), 'errors');
 		}
+		if (! $error) {
+			// Calcul du prix HT et du prix unitaire
+			if ($object->price_base_type == 'TTC') {
+				$price = price2num($newprice) / (1 + ($object->tva_tx / 100));
+			}
 
-		$price = price2num($newprice, 'MU');
-		$unitPrice = price2num($price / $quantity, 'MU');
+			$price = price2num($newprice, 'MU');
+			$unitPrice = price2num($price / $quantity, 'MU');
 
-		// Ajout / mise à jour
-		if ($rowid > 0) {
-			$sql = "UPDATE " . MAIN_DB_PREFIX . "product_price_by_qty SET";
-			$sql .= " price='" . $price . "',";
-			$sql .= " unitprice=" . $unitPrice . ",";
-			$sql .= " quantity=" . $quantity . ",";
-			$sql .= " remise_percent=" . $remise_percent . ",";
-			$sql .= " remise=" . $remise;
-			$sql .= " WHERE rowid = " . GETPOST('rowid');
+			// Ajout / mise à jour
+			if ($rowid > 0) {
+				$sql = "UPDATE " . MAIN_DB_PREFIX . "product_price_by_qty SET";
+				$sql .= " price='" . $price . "',";
+				$sql .= " unitprice=" . $unitPrice . ",";
+				$sql .= " quantity=" . $quantity . ",";
+				$sql .= " remise_percent=" . $remise_percent . ",";
+				$sql .= " remise=" . $remise;
+				$sql .= " WHERE rowid = " . GETPOST('rowid');
 
-			$result = $db->query($sql);
-		} else {
-			$sql = "INSERT INTO " . MAIN_DB_PREFIX . "product_price_by_qty (fk_product_price,price,unitprice,quantity,remise_percent,remise) values (";
-			$sql .= $priceid . ',' . $price . ',' . $unitPrice . ',' . $quantity . ',' . $remise_percent . ',' . $remise . ')';
+				$result = $db->query($sql);
+			} else {
+				$sql = "INSERT INTO " . MAIN_DB_PREFIX . "product_price_by_qty (fk_product_price,price,unitprice,quantity,remise_percent,remise) values (";
+				$sql .= $priceid . ',' . $price . ',' . $unitPrice . ',' . $quantity . ',' . $remise_percent . ',' . $remise . ')';
 
-			$result = $db->query($sql);
+				$result = $db->query($sql);
+			}
 		}
 	}
-}
 
-if ($action == 'delete_price_by_qty') {
-	$rowid = GETPOST('rowid');
+	if ($action == 'delete_price_by_qty') {
+		$rowid = GETPOST('rowid');
 
-	$sql = "DELETE FROM " . MAIN_DB_PREFIX . "product_price_by_qty";
-	$sql .= " WHERE rowid = " . GETPOST('rowid');
+		$sql = "DELETE FROM " . MAIN_DB_PREFIX . "product_price_by_qty";
+		$sql .= " WHERE rowid = " . GETPOST('rowid');
 
-	$result = $db->query($sql);
-}
+		$result = $db->query($sql);
+	}
 
-if ($action == 'delete_all_price_by_qty') {
-	$priceid = GETPOST('priceid');
+	if ($action == 'delete_all_price_by_qty') {
+		$priceid = GETPOST('priceid');
 
-	$sql = "DELETE FROM " . MAIN_DB_PREFIX . "product_price_by_qty";
-	$sql .= " WHERE fk_product_price = " . $priceid;
+		$sql = "DELETE FROM " . MAIN_DB_PREFIX . "product_price_by_qty";
+		$sql .= " WHERE fk_product_price = " . $priceid;
 
-	$result = $db->query($sql);
-}
+		$result = $db->query($sql);
+	}
 
-/**
- * ***************************************************
- * Price by customer
- * ****************************************************
- */
-if ($action == 'add_customer_price_confirm' && ! $_POST ["cancel"] && ($user->rights->produit->creer || $user->rights->service->creer)) {
+	/**
+	 * ***************************************************
+	 * Price by customer
+	 * ****************************************************
+	 */
+	if ($action == 'add_customer_price_confirm' && !$cancel && ($user->rights->produit->creer || $user->rights->service->creer)) {
 
-	$error=0;
-	$maxpricesupplier = $object->min_recommended_price();
+		$maxpricesupplier = $object->min_recommended_price();
+
+		$update_child_soc = GETPOST('updatechildprice');
 
-	$update_child_soc = GETPOST('updatechildprice');
+		// add price by customer
+		$prodcustprice->fk_soc = GETPOST('socid', 'int');
+		$prodcustprice->fk_product = $object->id;
+		$prodcustprice->price = price2num(GETPOST("price"), 'MU');
+		$prodcustprice->price_min = price2num(GETPOST("price_min"), 'MU');
+		$prodcustprice->price_base_type = GETPOST("price_base_type", 'alpha');
+		$prodcustprice->tva_tx = str_replace('*', '', GETPOST("tva_tx"));
+		$prodcustprice->recuperableonly = (preg_match('/\*/', GETPOST("tva_tx")) ? 1 : 0);
 
-	$result = $object->fetch($id);
+		if (! empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE) && $prodcustprice->price_min<$maxpricesupplier)
+		{
+			setEventMessage($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')),'errors');
+			$error++;
+			$action='add_customer_price';
+		}
 
-	// add price by customer
-	$prodcustprice->fk_soc = GETPOST('socid', 'int');
-	$prodcustprice->fk_product = $object->id;
-	$prodcustprice->price = price2num(GETPOST("price"), 'MU');
-	$prodcustprice->price_min = price2num(GETPOST("price_min"), 'MU');
-	$prodcustprice->price_base_type = GETPOST("price_base_type", 'alpha');
-	$prodcustprice->tva_tx = str_replace('*', '', GETPOST("tva_tx"));
-	$prodcustprice->recuperableonly = (preg_match('/\*/', GETPOST("tva_tx")) ? 1 : 0);
+		if (! $error)
+		{
+			$result = $prodcustprice->create($user, 0, $update_child_soc);
 
-	if (! empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE) && $prodcustprice->price_min<$maxpricesupplier)
-	{
-		setEventMessage($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')),'errors');
-		$error++;
-		$action='add_customer_price';
+			if ($result < 0) {
+				setEventMessage($prodcustprice->error, 'errors');
+			} else {
+				setEventMessage($langs->trans('Save'), 'mesgs');
+			}
+
+			$action = '';
+		}
 	}
 
-	if (! $error)
-	{
-		$result = $prodcustprice->create($user, 0, $update_child_soc);
+	if ($action == 'delete_customer_price' && ($user->rights->produit->supprimer || $user->rights->service->supprimer)) {
+		// Delete price by customer
+		$prodcustprice->id = GETPOST('lineid');
+		$result = $prodcustprice->delete($user);
 
 		if ($result < 0) {
-			setEventMessage($prodcustprice->error, 'errors');
+			setEventMessage($prodcustprice->error, 'mesgs');
 		} else {
-			setEventMessage($langs->trans('Save'), 'mesgs');
+			setEventMessage($langs->trans('Delete'), 'errors');
 		}
-
 		$action = '';
 	}
-}
-
-if ($action == 'delete_customer_price' && ($user->rights->produit->supprimer || $user->rights->service->supprimer)) {
-	// Delete price by customer
-	$prodcustprice->id = GETPOST('lineid');
-	$result = $prodcustprice->delete($user);
 
-	if ($result < 0) {
-		setEventMessage($prodcustprice->error, 'mesgs');
-	} else {
-		setEventMessage($langs->trans('Delete'), 'errors');
-	}
-	$action = '';
-}
+	if ($action == 'update_customer_price_confirm' && !$cancel && ($user->rights->produit->creer || $user->rights->service->creer)) {
 
-if ($action == 'update_customer_price_confirm' && ! $_POST ["cancel"] && ($user->rights->produit->creer || $user->rights->service->creer)) {
-
-	$result = $object->fetch($id);
+		$maxpricesupplier = $object->min_recommended_price();
 
-	$error=0;
-	$maxpricesupplier = $object->min_recommended_price();
+		$update_child_soc = GETPOST('updatechildprice');
 
-	$update_child_soc = GETPOST('updatechildprice');
+		$prodcustprice->fetch(GETPOST('lineid', 'int'));
 
-	$prodcustprice->fetch(GETPOST('lineid', 'int'));
+		// update price by customer
+		$prodcustprice->price = price2num(GETPOST("price"), 'MU');
+		$prodcustprice->price_min = price2num(GETPOST("price_min"), 'MU');
+		$prodcustprice->price_base_type = GETPOST("price_base_type", 'alpha');
+		$prodcustprice->tva_tx = str_replace('*', '', GETPOST("tva_tx"));
+		$prodcustprice->recuperableonly = (preg_match('/\*/', GETPOST("tva_tx")) ? 1 : 0);
 
-	// update price by customer
-	$prodcustprice->price = price2num(GETPOST("price"), 'MU');
-	$prodcustprice->price_min = price2num(GETPOST("price_min"), 'MU');
-	$prodcustprice->price_base_type = GETPOST("price_base_type", 'alpha');
-	$prodcustprice->tva_tx = str_replace('*', '', GETPOST("tva_tx"));
-	$prodcustprice->recuperableonly = (preg_match('/\*/', GETPOST("tva_tx")) ? 1 : 0);
+		if ($prodcustprice->price_min<$maxpricesupplier && !empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE))
+		{
+			setEventMessage($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')),'errors');
+			$error++;
+			$action='update_customer_price';
+		}
 
-	if ($prodcustprice->price_min<$maxpricesupplier && !empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE))
-	{
-		setEventMessage($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')),'errors');
-		$error++;
-		$action='update_customer_price';
-	}
+		if ( ! $error)
+		{
+			$result = $prodcustprice->update($user, 0, $update_child_soc);
 
-	if ( ! $error)
-	{
-		$result = $prodcustprice->update($user, 0, $update_child_soc);
+			if ($result < 0) {
+				setEventMessage($prodcustprice->error, 'errors');
+			} else {
+				setEventMessage($langs->trans('Save'), 'mesgs');
+			}
 
-		if ($result < 0) {
-			setEventMessage($prodcustprice->error, 'errors');
-		} else {
-			setEventMessage($langs->trans('Save'), 'mesgs');
+			$action = '';
 		}
-
-		$action = '';
 	}
 }
 
+
 /*
  * View
  */
 
 $form = new Form($db);
 
-if (! empty($id) || ! empty($ref))
-	$result = $object->fetch($id, $ref);
-
 llxHeader("", "", $langs->trans("CardProduct" . $object->type));
 
 $head = product_prepare_head($object);
@@ -687,7 +689,7 @@ if ($action == 'edit_price' && ($user->rights->produit->creer || $user->rights->
 		print $langs->trans('PriceBase');
 		print '</td>';
 		print '<td>';
-		print $form->select_PriceBaseType($object->price_base_type, "price_base_type");
+		print $form->selectPriceBaseType($object->price_base_type, "price_base_type");
 		print '</td>';
 		print '</tr>';
 
@@ -793,7 +795,7 @@ if ($action == 'edit_price' && ($user->rights->produit->creer || $user->rights->
 			} else {
 				print '<input name="price_' . $i . '" size="10" value="' . price($object->multiprices ["$i"]) . '">';
 			}
-			print $form->select_PriceBaseType($object->multiprices_base_type ["$i"], "multiprices_base_type_" . $i);
+			print $form->selectPriceBaseType($object->multiprices_base_type ["$i"], "multiprices_base_type_" . $i);
 			print '</td></tr>';
 
 			// Min price
@@ -828,9 +830,8 @@ $sql .= " " . MAIN_DB_PREFIX . "user as u";
 $sql .= " WHERE fk_product = " . $object->id;
 $sql .= " AND p.entity IN (" . getEntity('productprice', 1) . ")";
 $sql .= " AND p.fk_user_author = u.rowid";
-if (! empty($socid) && ! empty($conf->global->PRODUIT_MULTIPRICES))
-	$sql .= " AND p.price_level = " . $soc->price_level;
-$sql .= " ORDER BY p.date_price DESC, p.price_level ASC";
+if (! empty($socid) && ! empty($conf->global->PRODUIT_MULTIPRICES)) $sql .= " AND p.price_level = " . $soc->price_level;
+$sql .= " ORDER BY p.date_price DESC, p.price_level ASC, p.rowid DESC";
 // $sql .= $db->plimit();
 
 $result = $db->query($sql);
@@ -1010,7 +1011,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES))
 		print $langs->trans('PriceBase');
 		print '</td>';
 		print '<td>';
-		print $form->select_PriceBaseType($object->price_base_type, "price_base_type");
+		print $form->selectPriceBaseType($object->price_base_type, "price_base_type");
 		print '</td>';
 		print '</tr>';
 
@@ -1094,7 +1095,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES))
 		print $langs->trans('PriceBase');
 		print '</td>';
 		print '<td>';
-		print $form->select_PriceBaseType($prodcustprice->price_base_type, "price_base_type");
+		print $form->selectPriceBaseType($prodcustprice->price_base_type, "price_base_type");
 		print '</td>';
 		print '</tr>';
 
diff --git a/htdocs/product/reassort.php b/htdocs/product/reassort.php
index ce2e7363feb87703f651530cbf05e210b7cefa54..a839f25a99ab6263aa15fd48590e237c808625ea 100644
--- a/htdocs/product/reassort.php
+++ b/htdocs/product/reassort.php
@@ -188,7 +188,7 @@ if ($resql)
 	$texte.=' ('.$langs->trans("Stocks").')';
 
 
-	llxHeader("",$title,$helpurl,$texte);
+	llxHeader("",$texte,$helpurl);
 
 	if ($sref || $snom || $sall || GETPOST('search'))
 	{
diff --git a/htdocs/product/stock/massstockmove.php b/htdocs/product/stock/massstockmove.php
index da1053245d22967da6d1fa5a41f3f171d75bb814..1749eb2d8c8d6ced2d93398ed3aeab7089bdd0a3 100644
--- a/htdocs/product/stock/massstockmove.php
+++ b/htdocs/product/stock/massstockmove.php
@@ -407,8 +407,7 @@ foreach($listofdata as $key => $val)
 
 	print '<tr '.$bc[$var].'>';
 	print '<td>';
-	print $productstatic->getNomUrl(1);
-	print ' - '.$productstatic->label;
+	print $productstatic->getNomUrl(1).' - '.$productstatic->label;
 	print '</td>';
 	if ($conf->productbatch->enabled)
 	{
diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php
index 188eb8d8e1a0b38acdb4bee451103a8add36cd99..f80050287e9674aa2833b18ff601576ae43fd5ba 100644
--- a/htdocs/product/stock/product.php
+++ b/htdocs/product/stock/product.php
@@ -482,7 +482,7 @@ if ($id > 0 || $ref)
 			print '</td></tr>';
 		}
 
-        // Stock
+        // Stock alert threshold
         print '<tr><td>'.$form->editfieldkey("StockLimit",'stocklimit',$product->seuil_stock_alerte,$product,$user->rights->produit->creer).'</td><td colspan="2">';
         print $form->editfieldval("StockLimit",'stocklimit',$product->seuil_stock_alerte,$product,$user->rights->produit->creer);
         print '</td></tr>';
@@ -502,7 +502,7 @@ if ($id > 0 || $ref)
         $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER)?$langs->trans("ReStockOnValidateOrder").'<br>':'');
         $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER)?$langs->trans("ReStockOnDispatchOrder").'<br>':'');
         print '<tr><td>';
-        print $form->textwithtooltip($langs->trans("PhysicalStock"),$text_stock_options,2,1,img_picto('', 'info'),'',0);
+        print $form->textwithtooltip($langs->trans("PhysicalStock"), $text_stock_options, 2, 1, img_picto('', 'info'), '', 2);
         print '</td>';
 		print '<td>'.$product->stock_reel;
 		if ($product->seuil_stock_alerte && ($product->stock_reel < $product->seuil_stock_alerte)) print ' '.img_warning($langs->trans("StockLowerThanLimit"));
diff --git a/htdocs/projet/activity/index.php b/htdocs/projet/activity/index.php
index 845e99e54a05fc6703a0d32613b55b60f56dc8ab..75fd12e9d9592c8f934f9d38cb69e5028262a7e2 100644
--- a/htdocs/projet/activity/index.php
+++ b/htdocs/projet/activity/index.php
@@ -1,6 +1,6 @@
 <?php
 /* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
- * Copyright (C) 2006-2010 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2006-2015 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C) 2010      Regis Houssin        <regis.houssin@capnetworks.com>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -103,7 +103,8 @@ if ( $resql )
 		print '<td>';
 		$projectstatic->id=$row->rowid;
 		$projectstatic->ref=$row->ref;
-		print $projectstatic->getNomUrl(1);
+		$projectstatic->title=$row->title;
+		print $projectstatic->getNomUrl(1, '', 1);
 		print '</td>';
 		print '<td align="right">'.convertSecondToTime($row->nb).'</td>';
 		print "</tr>\n";
@@ -158,7 +159,8 @@ if ( $resql )
 		print '<td>';
 		$projectstatic->id=$row->rowid;
 		$projectstatic->ref=$row->ref;
-		print $projectstatic->getNomUrl(1);
+		$projectstatic->title=$row->title;
+		print $projectstatic->getNomUrl(1, '', 1);
 		print '</td>';
 		print '<td align="right">'.convertSecondToTime($row->nb).'</td>';
 		print "</tr>\n";
@@ -219,7 +221,8 @@ if ( $resql )
 		print '<td>';
 		$projectstatic->id=$row->rowid;
 		$projectstatic->ref=$row->ref;
-		print $projectstatic->getNomUrl(1);
+		$projectstatic->title=$row->title;
+		print $projectstatic->getNomUrl(1, '', 1);
 		print '</td>';
 		print '<td align="right">'.convertSecondToTime($row->nb).'</td>';
 		print "</tr>\n";
@@ -270,7 +273,8 @@ if ( $resql )
 		print '<td>';
 		$projectstatic->id=$row->rowid;
 		$projectstatic->ref=$row->ref;
-		print $projectstatic->getNomUrl(1);
+		$projectstatic->title=$row->title;
+		print $projectstatic->getNomUrl(1, '', 1);
 		print '</td>';
 		print '<td align="right">'.convertSecondToTime($row->nb).'</td>';
 		print "</tr>\n";
@@ -317,7 +321,8 @@ if ( $resql )
 		print '<td>';
 		$projectstatic->id=$row->rowid;
 		$projectstatic->ref=$row->ref;
-		print $projectstatic->getNomUrl(1);
+		$projectstatic->title=$row->title;
+		print $projectstatic->getNomUrl(1, '', 1);
 		print '</td>';
 		print '<td align="right">'.convertSecondToTime($row->nb).'</td>';
 		print "</tr>\n";
diff --git a/htdocs/projet/activity/perday.php b/htdocs/projet/activity/perday.php
index f8f9daf8de9d9b189b80899e6234c368b2045373..ee50358bdc513d8d5a800169bfee3ddc0eb046fe 100644
--- a/htdocs/projet/activity/perday.php
+++ b/htdocs/projet/activity/perday.php
@@ -30,12 +30,15 @@ require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php';
 require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php';
 require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
 
 $langs->load('projects');
 
 $action=GETPOST('action');
 $mode=GETPOST("mode");
 $id=GETPOST('id','int');
+$taskid=GETPOST('taskid');
 
 $mine=0;
 if ($mode == 'mine') $mine=1;
@@ -63,6 +66,8 @@ $week=GETPOST("week","int")?GETPOST("week","int"):date("W");
 $daytoparse = $now;
 if ($year && $month && $day) $daytoparse=dol_mktime(0, 0, 0, $month, $day, $year);
 
+$object=new Task($db);
+
 
 /*
  * Actions
@@ -75,10 +80,48 @@ if (GETPOST('submitdateselect'))
 	$action = '';
 }
 
-if ($action == 'addtime' && $user->rights->projet->creer)
+
+if ($action == 'assign')
 {
-    $task = new Task($db);
+    if ($taskid > 0)
+    {
+		$result = $object->fetch($taskid, $ref);
+		if ($result < 0) $error++;
+    }
+    else
+    {
+    	setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Task")), '', 'errors');
+    	$error++;
+    }
+    if (! GETPOST('type'))
+    {
+    	setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Type")), '', 'errors');
+    	$error++;
+    }
+    if (! $error)
+    {
+    	$idfortaskuser=$user->id;
+		$result = $object->add_contact($idfortaskuser, GETPOST("type"), 'internal');
+    }
+
+	if ($result < 0)
+	{
+		if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
+		{
+			$langs->load("errors");
+			setEventMessage($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), 'warnings');
+		}
+		else
+		{
+			setEventMessages($object->error, $object->errors, 'errors');
+		}
+	}
+
+	$action='';
+}
 
+if ($action == 'addtime' && $user->rights->projet->creer)
+{
     $timespent_duration=array();
 
     foreach($_POST as $key => $time)
@@ -105,24 +148,24 @@ if ($action == 'addtime' && $user->rights->projet->creer)
     {
     	foreach($timespent_duration as $key => $val)
     	{
-	        $task->fetch($key);
-		    $task->progress = GETPOST($key . 'progress', 'int');
-	        $task->timespent_duration = $val;
-	        $task->timespent_fk_user = $user->id;
+	        $object->fetch($key);
+		    $object->progress = GETPOST($key . 'progress', 'int');
+	        $object->timespent_duration = $val;
+	        $object->timespent_fk_user = $user->id;
 	        if (GETPOST($key."hour") != '' && GETPOST($key."hour") >= 0)	// If hour was entered
 	        {
-	        	$task->timespent_date = dol_mktime(GETPOST($key."hour"),GETPOST($key."min"),0,GETPOST($key."month"),GETPOST($key."day"),GETPOST($key."year"));
-	        	$task->timespent_withhour = 1;
+	        	$object->timespent_date = dol_mktime(GETPOST($key."hour"),GETPOST($key."min"),0,GETPOST($key."month"),GETPOST($key."day"),GETPOST($key."year"));
+	        	$object->timespent_withhour = 1;
 	        }
 	        else
 			{
-	        	$task->timespent_date = dol_mktime(12,0,0,GETPOST($key."month"),GETPOST($key."day"),GETPOST($key."year"));
+	        	$object->timespent_date = dol_mktime(12,0,0,GETPOST($key."month"),GETPOST($key."day"),GETPOST($key."year"));
 			}
 
-			$result=$task->addTimeSpent($user);
+			$result=$object->addTimeSpent($user);
 			if ($result < 0)
 			{
-				setEventMessages($task->error, $task->errors, 'errors');
+				setEventMessages($object->error, $object->errors, 'errors');
 				$error++;
 				break;
 			}
@@ -151,6 +194,8 @@ if ($action == 'addtime' && $user->rights->projet->creer)
 
 $form=new Form($db);
 $formother = new FormOther($db);
+$formcompany=new FormCompany($db);
+$formproject=new FormProjets($db);
 $projectstatic=new Project($db);
 $project = new Project($db);
 $taskstatic = new Task($db);
@@ -218,7 +263,14 @@ else
 	if ($user->rights->projet->all->lire && ! $socid) print $langs->trans("ProjectsDesc").($onlyopened?' '.$langs->trans("OnlyOpenedProject"):'').'<br>';
 	else print $langs->trans("ProjectsPublicTaskDesc").($onlyopened?' '.$langs->trans("AlsoOnlyOpenedProject"):'').'<br>';
 }
-print $langs->trans("AllTaskVisibleButEditIfYouAreAssigned").'<br>';
+if ($mine)
+{
+	print $langs->trans("OnlyYourTaskAreVisible").'<br>';
+}
+else
+{
+	print $langs->trans("AllTaskVisibleButEditIfYouAreAssigned").'<br>';
+}
 print '<br>';
 print "\n";
 
@@ -261,12 +313,12 @@ print '<td align="center" colspan="2">'.$langs->trans("Duration").'</td>';
 print "</tr>\n";
 
 // By default, we can edit only tasks we are assigned to
-$restricteditformytask=(empty($conf->global->PROJECT_TIME_ON_ALL_TASKS_MY_PROJECTS)?1:0);
+$restrictviewformytask=(empty($conf->global->PROJECT_TIME_SHOW_TASK_NOT_ASSIGNED)?1:0);
 
 if (count($tasksarray) > 0)
 {
 	$j=0;
-	projectLinesPerDay($j, 0, $tasksarray, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask, $daytoparse);
+	projectLinesPerDay($j, 0, $tasksarray, $level, $projectsrole, $tasksrole, $mine, $restrictviewformytask, $daytoparse);
 }
 else
 {
@@ -290,6 +342,21 @@ print "});";
 print '</script>';
 
 
+// Add a new project/task
+print '<br>';
+print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
+print '<input type="hidden" name="action" value="assign">';
+print '<input type="hidden" name="mode" value="'.$mode.'">';
+print '<input type="hidden" name="year" value="'.$year.'">';
+print '<input type="hidden" name="month" value="'.$month.'">';
+print '<input type="hidden" name="day" value="'.$day.'">';
+print $langs->trans("AssignTaskToMe").'<br>';
+$formproject->select_task($socid?$socid:-1, $taskid, 'taskid');
+print $formcompany->selectTypeContact($object, '', 'type','internal','rowid', 1);
+print '<input type="submit" class="button" name="submit" value="'.$langs->trans("AssignTask").'">';
+print '</form>';
+
+
 llxFooter();
 
 $db->close();
diff --git a/htdocs/projet/activity/perweek.php b/htdocs/projet/activity/perweek.php
index 063045f8577f9dddc6b9b7880f910f973ef87cd0..85874af86b9ccf6255bfdf7362dd00eabfe8432f 100644
--- a/htdocs/projet/activity/perweek.php
+++ b/htdocs/projet/activity/perweek.php
@@ -30,12 +30,16 @@ require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php';
 require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php';
 require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
+require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
 
 $langs->load('projects');
 
 $action=GETPOST('action');
 $mode=GETPOST("mode");
 $id=GETPOST('id','int');
+$taskid=GETPOST('taskid');
+
 
 $mine=0;
 if ($mode == 'mine') $mine=1;
@@ -81,6 +85,8 @@ $lastdaytoshow=dol_time_plus_duree($firstdaytoshow, 7, 'd');
 
 $usertoprocess=$user;
 
+$object=new Task($db);
+
 
 /*
  * Actions
@@ -93,10 +99,47 @@ if (GETPOST('submitdateselect'))
 	$action = '';
 }
 
-if ($action == 'addtime' && $user->rights->projet->creer)
+if ($action == 'assign')
 {
-    $task = new Task($db);
+    if ($taskid > 0)
+    {
+		$result = $object->fetch($taskid, $ref);
+		if ($result < 0) $error++;
+    }
+    else
+    {
+    	setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Task")), '', 'errors');
+    	$error++;
+    }
+    if (! GETPOST('type'))
+    {
+    	setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Type")), '', 'errors');
+    	$error++;
+    }
+    if (! $error)
+    {
+    	$idfortaskuser=$user->id;
+		$result = $object->add_contact($idfortaskuser, GETPOST("type"), 'internal');
+    }
 
+	if ($result < 0)
+	{
+		if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS')
+		{
+			$langs->load("errors");
+			setEventMessage($langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"), 'warnings');
+		}
+		else
+		{
+			setEventMessages($object->error, $object->errors, 'errors');
+		}
+	}
+
+	$action='';
+}
+
+if ($action == 'addtime' && $user->rights->projet->creer)
+{
     $timetoadd=$_POST['task'];
 	if (empty($timetoadd))
 	{
@@ -119,16 +162,16 @@ if ($action == 'addtime' && $user->rights->projet->creer)
 
 		        	if ($newduration > 0)
 		        	{
-		       	        $task->fetch($taskid);
-					    $task->progress = GETPOST($taskid . 'progress', 'int');
-				        $task->timespent_duration = $newduration;
-				        $task->timespent_fk_user = $usertoprocess->id;
-			        	$task->timespent_date = dol_time_plus_duree($firstdaytoshow, $key, 'd');
+		       	        $object->fetch($taskid);
+					    $object->progress = GETPOST($taskid . 'progress', 'int');
+				        $object->timespent_duration = $newduration;
+				        $object->timespent_fk_user = $usertoprocess->id;
+			        	$object->timespent_date = dol_time_plus_duree($firstdaytoshow, $key, 'd');
 
-						$result=$task->addTimeSpent($user);
+						$result=$object->addTimeSpent($user);
 						if ($result < 0)
 						{
-							setEventMessages($task->error, $task->errors, 'errors');
+							setEventMessages($object->error, $object->errors, 'errors');
 							$error++;
 							break;
 						}
@@ -156,6 +199,8 @@ if ($action == 'addtime' && $user->rights->projet->creer)
 
 $form=new Form($db);
 $formother=new FormOther($db);
+$formcompany=new FormCompany($db);
+$formproject=new FormProjets($db);
 $projectstatic=new Project($db);
 $project = new Project($db);
 $taskstatic = new Task($db);
@@ -214,7 +259,14 @@ else
 	if ($user->rights->projet->all->lire && ! $socid) print $langs->trans("ProjectsDesc").($onlyopened?' '.$langs->trans("OnlyOpenedProject"):'').'<br>';
 	else print $langs->trans("ProjectsPublicTaskDesc").($onlyopened?' '.$langs->trans("AlsoOnlyOpenedProject"):'').'<br>';
 }
-print $langs->trans("AllTaskVisibleButEditIfYouAreAssigned").'<br>';
+if ($mine)
+{
+	print $langs->trans("OnlyYourTaskAreVisible").'<br>';
+}
+else
+{
+	print $langs->trans("AllTaskVisibleButEditIfYouAreAssigned").'<br>';
+}
 print '<br>';
 print "\n";
 
@@ -264,12 +316,12 @@ print '<td class="liste_total"></td>';
 print "</tr>\n";
 
 // By default, we can edit only tasks we are assigned to
-$restricteditformytask=(empty($conf->global->PROJECT_TIME_ON_ALL_TASKS_MY_PROJECTS)?1:0);
+$restrictviewformytask=(empty($conf->global->PROJECT_TIME_SHOW_TASK_NOT_ASSIGNED)?1:0);
 
 if (count($tasksarray) > 0)
 {
 	$j=0;
-	projectLinesPerWeek($j, $firstdaytoshow, $usertoprocess, 0, $tasksarray, $level, $projectsrole, $tasksrole, $mine, $restricteditformytask);
+	projectLinesPerWeek($j, $firstdaytoshow, $usertoprocess, 0, $tasksarray, $level, $projectsrole, $tasksrole, $mine, $restrictviewformytask);
 
 	print '<tr class="liste_total">
                 <td class="liste_total" colspan="7" align="right">'.$langs->trans("Total").'</td>
@@ -300,7 +352,6 @@ print '</div>';
 
 print '</form>'."\n\n";
 
-
 $modeinput='hours';
 
 print '<script type="text/javascript">';
@@ -316,6 +367,22 @@ print "});";
 print '</script>';
 
 
+// Add a new project/task
+print '<br>';
+print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
+print '<input type="hidden" name="action" value="assign">';
+print '<input type="hidden" name="mode" value="'.$mode.'">';
+print '<input type="hidden" name="year" value="'.$year.'">';
+print '<input type="hidden" name="month" value="'.$month.'">';
+print '<input type="hidden" name="day" value="'.$day.'">';
+print $langs->trans("AssignTaskToMe").'<br>';
+$formproject->select_task($socid?$socid:-1, $taskid, 'taskid');
+print $formcompany->selectTypeContact($object, '', 'type','internal','rowid', 1);
+print '<input type="submit" class="button" name="submit" value="'.$langs->trans("AssignTask").'">';
+print '</form>';
+
+
+
 llxFooter();
 
 $db->close();
diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php
index 60384a29da0511aa759341bb92f0edef1e2585ef..860475c55963637cb44bbd74cb844cdb5c5cc68d 100644
--- a/htdocs/projet/card.php
+++ b/htdocs/projet/card.php
@@ -39,6 +39,7 @@ $ref=GETPOST('ref','alpha');
 $action=GETPOST('action','alpha');
 $backtopage=GETPOST('backtopage','alpha');
 $cancel=GETPOST('cancel','alpha');
+$status=GETPOST('status','int');
 
 if ($id == '' && $ref == '' && ($action != "create" && $action != "add" && $action != "update" && ! $_POST["cancel"])) accessforbidden();
 
@@ -139,6 +140,7 @@ if (empty($reshook))
 	        $object->datec=dol_now();
 	        $object->date_start=$date_start;
 	        $object->date_end=$date_end;
+	        $object->statuts         = $status;
 
 	        // Fill array 'array_options' with data from add form
 	        $ret = $extrafields->setOptionalsFromPost($extralabels,$object);
@@ -167,8 +169,16 @@ if (empty($reshook))
 	        {
 	            $db->commit();
 
-	            header("Location:card.php?id=".$object->id);
-	            exit;
+        		if ($backtopage)
+				{
+			    	header("Location: ".$backtopage.'&projectid='.$object->id);
+			    	exit;
+				}
+				else
+				{
+	            	header("Location:card.php?id=".$object->id);
+	            	exit;
+				}
 	        }
 	        else
 	        {
@@ -301,7 +311,7 @@ if (empty($reshook))
 	    $result = $object->setValid($user);
 	    if ($result <= 0)
 	    {
-		    setEventMessage($object->error, 'errors');
+	        setEventMessages($object->error, $object->errors, 'errors');
 	    }
 	}
 
@@ -310,7 +320,7 @@ if (empty($reshook))
 	    $result = $object->setClose($user);
 	    if ($result <= 0)
 	    {
-		    setEventMessage($object->error, 'errors');
+	        setEventMessages($object->error, $object->errors, 'errors');
 	    }
 	}
 
@@ -319,7 +329,7 @@ if (empty($reshook))
 	    $result = $object->setValid($user);
 	    if ($result <= 0)
 	    {
-		    setEventMessage($object->error, 'errors');
+	        setEventMessages($object->error, $object->errors, 'errors');
 	    }
 	}
 
@@ -329,14 +339,14 @@ if (empty($reshook))
 	    $result=$object->delete($user);
 	    if ($result > 0)
 	    {
-	        header("Location: index.php");
+	        setEventMessage($langs->trans("RecordDeleted"), 'info');
+	    	header("Location: index.php");
 	        exit;
 	    }
 	    else
 	    {
 	        dol_syslog($object->error,LOG_DEBUG);
-	        setEventMessage($object->error,'errors');
-	        setEventMessage($object->errors,'errors');
+	        setEventMessages($object->error, $object->errors, 'errors');
 	    }
 	}
 
@@ -444,6 +454,15 @@ if ($action == 'create' && $user->rights->projet->creer)
     else print $text;
     print '</td></tr>';
 
+    // Status
+    if ($status != '')
+    {
+    	print '<tr><td>'.$langs->trans("Status").'</td><td>';
+    	print '<input type="hidden" name="status" value="'.$status.'">';
+    	print $object->LibStatut($status, 4);
+	    print '</td></tr>';
+    }
+
     // Public
     print '<tr><td>'.$langs->trans("Visibility").'</td><td>';
     $array=array(0 => $langs->trans("PrivateProject"),1 => $langs->trans("SharedProject"));
@@ -582,7 +601,7 @@ else
 	    if (! empty($conf->global->PROJECT_FILTER_FOR_THIRDPARTY_LIST)) $filteronlist=$conf->global->PROJECT_FILTER_FOR_THIRDPARTY_LIST;
         $text=$form->select_thirdparty_list($object->thirdparty->id,'socid',$filteronlist,1,1);
         $texthelp=$langs->trans("IfNeedToUseOhterObjectKeepEmpty");
-        print $form->textwithtooltip($text.' '.img_help(),$texthelp,1);
+        print $form->textwithtooltip($text.' '.img_help(), $texthelp, 1, 0, '', '', 2);
         print '</td></tr>';
 
         // Visibility
@@ -698,7 +717,7 @@ else
 	if ($action == 'edit' && $userWrite > 0)
 	{
 	    print '<div align="center">';
-    	print '<input name="update" class="button" type="submit" value="'.$langs->trans("Modify").'"> &nbsp; &nbsp; ';
+    	print '<input name="update" class="button" type="submit" value="'.$langs->trans("Modify").'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
     	print '<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">';
     	print '</div>';
 	}
@@ -718,11 +737,11 @@ else
         {
             if ($userWrite > 0)
             {
-                print '<a class="butAction" href="card.php?id='.$object->id.'&amp;action=edit">'.$langs->trans("Modify").'</a>';
+                print '<div class="inline-block divButAction"><a class="butAction" href="card.php?id='.$object->id.'&amp;action=edit">'.$langs->trans("Modify").'</a></div>';
             }
             else
             {
-                print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('Modify').'</a>';
+                print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('Modify').'</a></div>';
             }
         }
 
@@ -731,11 +750,11 @@ else
         {
             if ($userWrite > 0)
             {
-                print '<a class="butAction" href="card.php?id='.$object->id.'&action=validate">'.$langs->trans("Validate").'</a>';
+                print '<div class="inline-block divButAction"><a class="butAction" href="card.php?id='.$object->id.'&action=validate">'.$langs->trans("Validate").'</a></div>';
             }
             else
             {
-                print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('Validate').'</a>';
+                print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('Validate').'</a></div>';
             }
         }
 
@@ -744,11 +763,11 @@ else
         {
             if ($userWrite > 0)
             {
-                print '<a class="butAction" href="card.php?id='.$object->id.'&amp;action=close">'.$langs->trans("Close").'</a>';
+                print '<div class="inline-block divButAction"><a class="butAction" href="card.php?id='.$object->id.'&amp;action=close">'.$langs->trans("Close").'</a></div>';
             }
             else
             {
-                print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('Close').'</a>';
+                print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('Close').'</a></div>';
             }
         }
 
@@ -757,11 +776,11 @@ else
         {
             if ($userWrite > 0)
             {
-                print '<a class="butAction" href="card.php?id='.$object->id.'&amp;action=reopen">'.$langs->trans("ReOpen").'</a>';
+                print '<div class="inline-block divButAction"><a class="butAction" href="card.php?id='.$object->id.'&amp;action=reopen">'.$langs->trans("ReOpen").'</a></div>';
             }
             else
             {
-                print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('ReOpen').'</a>';
+                print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('ReOpen').'</a></div>';
             }
         }
 
@@ -770,11 +789,11 @@ else
         {
             if ($userWrite > 0)
             {
-                print '<a class="butAction" href="card.php?id='.$object->id.'&action=clone">'.$langs->trans('ToClone').'</a>';
+                print '<div class="inline-block divButAction"><a class="butAction" href="card.php?id='.$object->id.'&action=clone">'.$langs->trans('ToClone').'</a></div>';
             }
             else
             {
-                print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('ToClone').'</a>';
+                print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('ToClone').'</a></div>';
             }
         }
 
@@ -783,11 +802,11 @@ else
         {
             if ($userDelete > 0)
             {
-                print '<a class="butActionDelete" href="card.php?id='.$object->id.'&amp;action=delete">'.$langs->trans("Delete").'</a>';
+                print '<div class="inline-block divButAction"><a class="butAction" href="card.php?id='.$object->id.'&amp;action=delete">'.$langs->trans("Delete").'</a></div>';
             }
             else
             {
-                print '<a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('Delete').'</a>';
+                print '<div class="inline-block divButAction"><a class="butActionRefused" href="#" title="'.$langs->trans("NotOwnerOfProject").'">'.$langs->trans('Delete').'</a></div>';
             }
         }
     }
diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php
index 8d3e9f39a085ca621c47ad0dd0ceb5172f8d020f..4e505eb09100fce5569d9c6fb3c003833a6f3d1e 100644
--- a/htdocs/projet/class/project.class.php
+++ b/htdocs/projet/class/project.class.php
@@ -46,6 +46,12 @@ class Project extends CommonObject
     var $id;
     var $ref;
     var $description;
+	/**
+	 * @var string
+	 * @deprecated
+	 * @see title
+	 */
+	public $titre;
     var $title;
     var $date_start;
     var $date_end;
@@ -66,6 +72,27 @@ class Project extends CommonObject
     var $weekWorkLoad;			// Used to store workload details of a projet
     var $weekWorkLoadPerTask;	// Used to store workload details of tasks of a projet
 
+	/**
+	 * @var int Creation date
+	 * @deprecated
+	 * @see date_c
+	 */
+	public $datec;
+	/**
+	 * @var int Creation date
+	 */
+	public $date_c;
+	/**
+	 * @var int Modification date
+	 * @deprecated
+	 * @see date_m
+	 */
+	public $datem;
+	/**
+	 * @var int Modification date
+	 */
+	public $date_m;
+
 
     /**
      *  Constructor
@@ -125,12 +152,12 @@ class Project extends CommonObject
         $sql.= ", '" . $this->db->escape($this->description) . "'";
         $sql.= ", " . ($this->socid > 0 ? $this->socid : "null");
         $sql.= ", " . $user->id;
-        $sql.= ", 0";
+        $sql.= ", ".(is_numeric($this->statuts) ? $this->statuts : '0');
         $sql.= ", " . ($this->public ? 1 : 0);
         $sql.= ", '".$this->db->idate($now)."'";
         $sql.= ", " . ($this->date_start != '' ? "'".$this->db->idate($this->date_start)."'" : 'null');
         $sql.= ", " . ($this->date_end != '' ? "'".$this->db->idate($this->date_end)."'" : 'null');
-        $sql.= ", " . ($this->budget_amount != ''?price2num($this->budget_amount):'null');
+        $sql.= ", " . ($this->budget_amount != '' ? price2num($this->budget_amount) : 'null');
         $sql.= ", ".$conf->entity;
         $sql.= ")";
 
@@ -406,31 +433,40 @@ class Project extends CommonObject
     }
 
     /**
-     * 	Return list of elements for type linked to project
+     * 	Return list of elements for type, linked to project
      *
-     * 	@param		string		$type			'propal','order','invoice','order_supplier','invoice_supplier'
+     * 	@param		string		$type			'propal','order','invoice','order_supplier','invoice_supplier',...
      * 	@param		string		$tablename		name of table associated of the type
-     * 	@param		string		$datefieldname	name of table associated of the type
-     *  @param		string		$dates			Start date (at 00:00:00)
-     *  @param		string		$datee			End date (at 23:00:00)
+     * 	@param		string		$datefieldname	name of date field for filter
+     *  @param		string		$dates			Start date (ex 00:00:00)
+     *  @param		string		$datee			End date (ex 23:59:59)
      * 	@return		mixed						Array list of object ids linked to project, < 0 or string if error
      */
     function get_element_list($type, $tablename, $datefieldname='', $dates='', $datee='')
     {
         $elements = array();
 
-        if ($type == 'agenda')
+		if ($type == 'agenda')
         {
             $sql = "SELECT id as rowid FROM " . MAIN_DB_PREFIX . "actioncomm WHERE fk_project=" . $this->id;
         }
-        else
+        elseif ($type == 'expensereport')
 		{
-            $sql = "SELECT rowid FROM " . MAIN_DB_PREFIX . $tablename." WHERE fk_projet=" . $this->id;
+            $sql = "SELECT ed.rowid FROM " . MAIN_DB_PREFIX . "expensereport as e, " . MAIN_DB_PREFIX . "expensereport_det as ed WHERE e.rowid = ed.fk_expensereport AND ed.fk_projet=" . $this->id;
 		}
-    	if ($type == 'expensereport')
+        elseif ($type == 'project_task')
 		{
-            $sql = "SELECT ed.rowid FROM " . MAIN_DB_PREFIX . "expensereport as e, " . MAIN_DB_PREFIX . "expensereport_det as ed WHERE e.rowid = ed.fk_expensereport AND ed.fk_projet=" . $this->id;
+			$sql = "SELECT DISTINCT pt.rowid FROM " . MAIN_DB_PREFIX . "projet_task as pt, " . MAIN_DB_PREFIX . "projet_task_time as ptt WHERE pt.rowid = ptt.fk_task AND pt.fk_projet=" . $this->id;
+		}
+		elseif ($type == 'project_task_time')	// Case we want to duplicate line foreach user
+		{
+			$sql = "SELECT DISTINCT pt.rowid, ptt.fk_user FROM " . MAIN_DB_PREFIX . "projet_task as pt, " . MAIN_DB_PREFIX . "projet_task_time as ptt WHERE pt.rowid = ptt.fk_task AND pt.fk_projet=" . $this->id;
 		}
+        else
+		{
+            $sql = "SELECT rowid FROM " . MAIN_DB_PREFIX . $tablename." WHERE fk_projet=" . $this->id;
+		}
+
 		if ($dates > 0)
 		{
 			if (empty($datefieldname) && ! empty($this->table_element_date)) $datefieldname=$this->table_element_date;
@@ -458,7 +494,7 @@ class Project extends CommonObject
                 {
                     $obj = $this->db->fetch_object($result);
 
-                    $elements[$i] = $obj->rowid;
+                    $elements[$i] = $obj->rowid.(empty($obj->fk_user)?'':'_'.$obj->fk_user);
 
                     $i++;
                 }
@@ -506,7 +542,7 @@ class Project extends CommonObject
         // Set fk_projet into elements to null
         $listoftables=array(
         		'facture'=>'fk_projet','propal'=>'fk_projet','commande'=>'fk_projet','facture_fourn'=>'fk_projet','commande_fournisseur'=>'fk_projet',
-        		'expensereport_det'=>'fk_projet','contrat'=>'fk_projet','fichinter'=>'fk_projet','don'=>'fk_project'
+        		'expensereport_det'=>'fk_projet','contrat'=>'fk_projet','fichinter'=>'fk_projet','don'=>'fk_projet'
         		);
         foreach($listoftables as $key => $value)
         {
@@ -818,9 +854,10 @@ class Project extends CommonObject
      * 	@param	int		$withpicto		0=No picto, 1=Include picto into link, 2=Only picto
      * 	@param	string	$option			Variant ('', 'nolink')
      * 	@param	int		$addlabel		0=Default, 1=Add label into string, >1=Add first chars into string
+     *  @param	string	$moreinpopup	Text to add into popu
      * 	@return	string					Chaine avec URL
      */
-    function getNomUrl($withpicto=0, $option='', $addlabel=0)
+    function getNomUrl($withpicto=0, $option='', $addlabel=0, $moreinpopup='')
     {
         global $langs;
 
@@ -831,7 +868,8 @@ class Project extends CommonObject
         if (! empty($this->ref))
             $label .= '<br><b>' . $langs->trans('Ref') . ':</b> ' . $this->ref;
         if (! empty($this->title))
-            $label .= '<br><b>' . $langs->trans('Name') . ':</b> ' . $this->title;
+            $label .= '<br><b>' . $langs->trans('Label') . ':</b> ' . $this->title;
+        if ($moreinpopup) $label.='<br>'.$moreinpopup;
         $linkclose = '" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">';
 
         if ($option != 'nolink') {
diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php
index 43e0a5a1114480e6ed42ee903e772a27c82c6f16..3b2caf30ad7b4a3e0f1da87b003b9a03c1b9f080 100644
--- a/htdocs/projet/class/task.class.php
+++ b/htdocs/projet/class/task.class.php
@@ -509,7 +509,7 @@ class Task extends CommonObject
         $label = '<u>' . $langs->trans("ShowTask") . '</u>';
         if (! empty($this->ref))
             $label .= '<br><b>' . $langs->trans('Ref') . ':</b> ' . $this->ref;
-        if (! empty($this->title))
+        if (! empty($this->label))
             $label .= '<br><b>' . $langs->trans('LabelTask') . ':</b> ' . $this->label;
         if ($this->date_start || $this->date_end)
         {
@@ -913,6 +913,59 @@ class Task extends CommonObject
         }
     }
 
+    /**
+     *  Calculate vamue of time consumed using the thm (hourly amount value of work for user entering time)
+     *
+     *	@param		User		$fuser		Filter on a dedicated user
+     *  @param		string		$dates		Start date (ex 00:00:00)
+     *  @param		string		$datee		End date (ex 23:59:59)
+     *  @return 	array	        		Array of info for task array('amount')
+     */
+    function getSumOfAmount($fuser='', $dates='', $datee='')
+    {
+        global $langs;
+
+        if (empty($id)) $id=$this->id;
+
+        $result=array();
+
+        $sql = "SELECT";
+        $sql.= " SUM(t.task_duration / 3600 * thm) as amount";
+        $sql.= " FROM ".MAIN_DB_PREFIX."projet_task_time as t";
+        $sql.= " WHERE t.fk_task = ".$id;
+        if (is_object($fuser) && $fuser->id > 0)
+        {
+        	$sql.=" AND fk_user = ".$fuser->id;
+        }
+    	if ($dates > 0)
+		{
+			$datefieldname="task_datehour";
+			$sql.=" AND (".$datefieldname." >= '".$this->db->idate($dates)."' OR ".$datefieldname." IS NULL)";
+		}
+    	if ($datee > 0)
+		{
+			$datefieldname="task_datehour";
+			$sql.=" AND (".$datefieldname." <= '".$this->db->idate($datee)."' OR ".$datefieldname." IS NULL)";
+		}
+
+        dol_syslog(get_class($this)."::getSumOfAmount", LOG_DEBUG);
+        $resql=$this->db->query($sql);
+        if ($resql)
+        {
+            $obj = $this->db->fetch_object($resql);
+
+            $result['amount'] = $obj->amount;
+
+            $this->db->free($resql);
+            return $result;
+        }
+        else
+		{
+            dol_print_error($this->db);
+            return $result;
+        }
+    }
+
     /**
      *  Load object in memory from database
      *
diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php
index c5f561b2c1c970d905f4950f2cc4f2239a7431cb..a9089673ae6b4a07492514ac5b38d812f7669311 100644
--- a/htdocs/projet/element.php
+++ b/htdocs/projet/element.php
@@ -28,6 +28,7 @@
 
 require '../main.inc.php';
 require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
+require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php';
 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
 require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php';
 require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
@@ -257,9 +258,18 @@ $listofreferent=array(
 	'class'=>'Don',
 	'margin'=>'add',
 	'table'=>'don',
-	'datefieldname'=>'date',
+	'datefieldname'=>'datedon',
 	'disableamount'=>0,
 	'test'=>$conf->don->enabled && $user->rights->don->lire),
+'project_task'=>array(
+	'name'=>"TaskTimeValorised",
+	'title'=>"ListTaskTimeUserProject",
+	'class'=>'Task',
+	'margin'=>'minus',
+	'table'=>'projet_task',
+	'datefieldname'=>'task_date',
+	'disableamount'=>0,
+	'test'=>$conf->projet->enabled && $user->rights->projet->lire && $conf->salaries->enabled),
 );
 
 if ($action=="addelement")
@@ -281,6 +291,8 @@ if ($action=="addelement")
 	}
 }
 
+$elementuser = new User($db);
+
 $showdatefilter=0;
 foreach ($listofreferent as $key => $value)
 {
@@ -292,15 +304,19 @@ foreach ($listofreferent as $key => $value)
 
 	if ($qualified)
 	{
+		// If we want the project task array to have details of users
+		//if ($key == 'project_task') $key = 'project_task_time';
+
+
 		$element = new $classname($db);
 
+		// Show the filter on date on top of element list
 		if (! $showdatefilter)
 		{
 			print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$projectid.'" method="post">';
 			print '<input type="hidden" name="tablename" value="'.$tablename.'">';
 			print '<input type="hidden" name="action" value="view">';
 			print '<table><tr>';
-			//print '<td>'.$langs->trans("Filter").':</td>';
 			print '<td>'.$langs->trans("From").' ';
 			print $form->select_date($dates,'dates',0,0,1);
 			print '</td>';
@@ -325,7 +341,7 @@ foreach ($listofreferent as $key => $value)
 		{
 			setEventMessages($formproject->error,$formproject->errors,'errors');
 		}
-		else
+		elseif($selectList)
 		{
 			print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$projectid.'" method="post">';
 			print '<input type="hidden" name="tablename" value="'.$tablename.'">';
@@ -341,20 +357,34 @@ foreach ($listofreferent as $key => $value)
 		print '<table class="noborder" width="100%">';
 
 		print '<tr class="liste_titre">';
+		// Remove link
 		print '<td style="width: 24px"></td>';
+		// Ref
 		print '<td style="width: 200px">'.$langs->trans("Ref").'</td>';
-		print '<td width="100" align="center">'.$langs->trans("Date").'</td>';
+		// Date
+		print '<td width="100" align="center">';
+		if (! in_array($tablename, array('projet_task'))) print $langs->trans("Date");
+		print '</td>';
 		// Thirdparty or user
 		print '<td>';
-		if ($tablename == 'expensereport_det' || 'don') print $langs->trans("User");
+		if (in_array($tablename, array('projet_task')) && $key == 'project_task') print '';		// if $key == 'project_task', we don't want details per user
+		elseif (in_array($tablename, array('expensereport_det','don','projet_task'))) print $langs->trans("User");
 		else print $langs->trans("ThirdParty");
 		print '</td>';
+		// Amount HT
+		//if (empty($value['disableamount']) && ! in_array($tablename, array('projet_task'))) print '<td align="right" width="120">'.$langs->trans("AmountHT").'</td>';
+		//elseif (empty($value['disableamount']) && in_array($tablename, array('projet_task'))) print '<td align="right" width="120">'.$langs->trans("Amount").'</td>';
 		if (empty($value['disableamount'])) print '<td align="right" width="120">'.$langs->trans("AmountHT").'</td>';
 		else print '<td width="120"></td>';
+		// Amount TTC
+		//if (empty($value['disableamount']) && ! in_array($tablename, array('projet_task'))) print '<td align="right" width="120">'.$langs->trans("AmountTTC").'</td>';
 		if (empty($value['disableamount'])) print '<td align="right" width="120">'.$langs->trans("AmountTTC").'</td>';
 		else print '<td width="120"></td>';
-		print '<td align="right" width="200">'.$langs->trans("Status").'</td>';
+		// Status
+		if (in_array($tablename, array('projet_task'))) print '<td align="right" width="200">'.$langs->trans("ProgressDeclared").'</td>';
+		else print '<td align="right" width="200">'.$langs->trans("Status").'</td>';
 		print '</tr>';
+
 		$elementarray = $object->get_element_list($key, $tablename, $datefieldname, $dates, $datee);
 		if (is_array($elementarray) && count($elementarray)>0)
 		{
@@ -368,15 +398,21 @@ foreach ($listofreferent as $key => $value)
 			$saved_third_id = 0;
 			$breakline = '';
 
-			if (canApplySubtotalOn($tablename)) {
-			   // Appel du mon code de tri :
+			if (canApplySubtotalOn($tablename))
+			{
+			   // Sort
 			   $elementarray = sortElementsByClientName($elementarray);
 			}
 
 			$num=count($elementarray);
 			for ($i = 0; $i < $num; $i++)
 			{
-				$element->fetch($elementarray[$i]);
+				$tmp=explode('_',$elementarray[$i]);
+				$idofelement=$tmp[0];
+				$idofelementuser=$tmp[1];
+
+				$element->fetch($idofelement);
+				if ($idofelementuser) $elementuser->fetch($idofelementuser);
 
 				if ($tablename != 'expensereport_det')
 				{
@@ -411,8 +447,12 @@ foreach ($listofreferent as $key => $value)
 
 				$var=!$var;
 				print "<tr ".$bc[$var].">";
+				// Remove link
 				print '<td style="width: 24px">';
-				print '<a href="' . $_SERVER["PHP_SELF"] . '?id=' . $projectid . '&action=unlink&tablename=' . $tablename . '&elementselect=' . $element->id . '">' . img_picto($langs->trans('Unlink'), 'editdelete') . '</a>';
+				if ($tablename != 'projet_task')
+				{
+					print '<a href="' . $_SERVER["PHP_SELF"] . '?id=' . $projectid . '&action=unlink&tablename=' . $tablename . '&elementselect=' . $element->id . '">' . img_picto($langs->trans('Unlink'), 'editdelete') . '</a>';
+				}
 				print "</td>\n";
 				// Ref
 				print '<td align="left">';
@@ -421,8 +461,10 @@ foreach ($listofreferent as $key => $value)
 				{
 					print $expensereport->getNomUrl(1);
 				}
-				else {
-					print $element->getNomUrl(1);
+				else
+				{
+					if ($element instanceof Task) print $element->getNomUrl(1,'withproject','time');
+					else print $element->getNomUrl(1);
 
 					$element_doc = $element->element;
 					$filename=dol_sanitizeFileName($element->ref);
@@ -439,13 +481,13 @@ foreach ($listofreferent as $key => $value)
 					}
 
 					print $formfile->getDocumentsLink($element_doc, $filename, $filedir);
-
 				}
 
 				print "</td>\n";
 
 				// Date
 				if ($tablename == 'commande_fournisseur' || $tablename == 'supplier_order') $date=$element->date_commande;
+				elseif ($tablename == 'projet_task') $date='';	// We show no date. Showing date of beginning of task make user think it is date of time consumed
 				else
 				{
 					$date=$element->date;
@@ -466,9 +508,16 @@ foreach ($listofreferent as $key => $value)
                 }
 				else if ($tablename == 'don')
                 {
-                	$tmpuser2=new User($db);
-                	$tmpuser2->fetch($don->fk_user_author);
-                	print $tmpuser2->getNomUrl(1,'',48);
+                	if ($element->fk_user_author > 0)
+                	{
+	                	$tmpuser2=new User($db);
+	                	$tmpuser2->fetch($element->fk_user_author);
+	                	print $tmpuser2->getNomUrl(1,'',48);
+                	}
+                }
+                else if ($tablename == 'projet_task' && $key == 'project_task_time')	// if $key == 'project_task', we don't want details per user
+                {
+                	print $elementuser->getNomUrl(1);
                 }
 				print '</td>';
 
@@ -476,6 +525,11 @@ foreach ($listofreferent as $key => $value)
 				if (empty($value['disableamount']))
 				{
 					if ($tablename == 'don') $total_ht_by_line=$element->amount;
+					elseif ($tablename == 'projet_task')
+					{
+						$tmp = $element->getSumOfAmount($elementuser, $dates, $datee);
+						$total_ht_by_line = price2num($tmp['amount'],'MT');
+					}
 					else
 					{
 						$total_ht_by_line=$element->total_ht;
@@ -492,6 +546,11 @@ foreach ($listofreferent as $key => $value)
 				if (empty($value['disableamount']))
 				{
 					if ($tablename == 'don') $total_ttc_by_line=$element->amount;
+					elseif ($tablename == 'projet_task')
+					{
+						$defaultvat = get_default_tva($mysoc, $mysoc);
+						$total_ttc_by_line = price2num($total_ht_by_line * (1 + ($defaultvat / 100)),'MT');
+					}
 					else
 					{
 						$total_ttc_by_line=$element->total_ttc;
@@ -506,10 +565,20 @@ foreach ($listofreferent as $key => $value)
 
 				// Status
 				print '<td align="right">';
-				if ($element instanceof CommonInvoice) {
+				if ($element instanceof CommonInvoice)
+				{
 					//This applies for Facture and FactureFournisseur
 					print $element->getLibStatut(5, $element->getSommePaiement());
-				} else {
+				}
+				else if ($element instanceof Task)
+				{
+					if ($element->progress != '')
+					{
+						print $element->progress.' %';
+					}
+				}
+				else
+				{
 					print $element->getLibStatut(5);
 				}
 				print '</td>';
@@ -548,8 +617,12 @@ foreach ($listofreferent as $key => $value)
 			if ($breakline) print $breakline;
 
 			print '<tr class="liste_total"><td colspan="4">'.$langs->trans("Number").': '.$i.'</td>';
+			//if (empty($value['disableamount']) && ! in_array($tablename, array('projet_task'))) print '<td align="right" width="100">'.$langs->trans("TotalHT").' : '.price($total_ht).'</td>';
+			//elseif (empty($value['disableamount']) && in_array($tablename, array('projet_task'))) print '<td align="right" width="100">'.$langs->trans("Total").' : '.price($total_ht).'</td>';
 			if (empty($value['disableamount'])) print '<td align="right" width="100">'.$langs->trans("TotalHT").' : '.price($total_ht).'</td>';
 			else print '<td></td>';
+			//if (empty($value['disableamount']) && ! in_array($tablename, array('projet_task'))) print '<td align="right" width="100">'.$langs->trans("TotalTTC").' : '.price($total_ttc).'</td>';
+			//elseif (empty($value['disableamount']) && in_array($tablename, array('projet_task'))) print '<td align="right" width="100"></td>';
 			if (empty($value['disableamount'])) print '<td align="right" width="100">'.$langs->trans("TotalTTC").' : '.price($total_ttc).'</td>';
 			else print '<td></td>';
 			print '<td>&nbsp;</td>';
@@ -609,7 +682,10 @@ $langs->load("bills");
 $langs->load("orders");
 $langs->load("proposals");
 $langs->load("margins");
-print_fiche_titre($langs->trans("Profit"),'','title_accountancy');
+
+//print load_fiche_titre($langs->trans("Profit"),'','title_accountancy');
+print '<br><div class="center">'.img_picto("", "title_accountancy").' '.$langs->trans("Profit").'</div><br>';
+
 print '<table class="noborder">';
 print '<tr class="liste_titre">';
 print '<td align="left" width="200">'.$langs->trans("Element").'</td>';
@@ -624,30 +700,56 @@ foreach ($listofreferent as $key => $value)
 	$title=$value['title'];
 	$classname=$value['class'];
 	$tablename=$value['table'];
+	$datefieldname=$value['datefieldname'];
 	$qualified=$value['test'];
 	$margin = $value['margin'];
 	if ($qualified && isset($margin))		// If this element must be included into profit calculation ($margin is 'minus' or 'plus')
 	{
 		$element = new $classname($db);
 
-		$elementarray = $object->get_element_list($key, $tablename);
+		$elementarray = $object->get_element_list($key, $tablename, $datefieldname, $dates, $datee);
 		if (count($elementarray)>0 && is_array($elementarray))
 		{
 			$var=true;
 			$total_ht = 0;
 			$total_ttc = 0;
+
 			$num=count($elementarray);
 			for ($i = 0; $i < $num; $i++)
 			{
-				$element->fetch($elementarray[$i]);
+				$tmp=explode('_',$elementarray[$i]);
+				$idofelement=$tmp[0];
+				$idofelementuser=$tmp[1];
+
+				$element->fetch($idofelement);
+				if ($idofelementuser) $elementuser->fetch($idofelementuser);
+
 				if ($tablename != 'expensereport_det') $element->fetch_thirdparty();
 
 				if ($tablename == 'don') $total_ht_by_line=$element->amount;
+				elseif ($tablename == 'projet_task')
+				{
+					if ($idofelementuser)
+					{
+						$tmp = $element->getSumOfAmount($elementuser, $dates, $datee);
+						$total_ht_by_line = price2num($tmp['amount'],'MT');
+					}
+					else
+					{
+						$tmp = $element->getSumOfAmount('', $dates, $datee);
+						$total_ht_by_line = price2num($tmp['amount'],'MT');
+					}
+				}
 				else $total_ht_by_line=$element->total_ht;
 
 				$total_ht = $total_ht + $total_ht_by_line;
 
 				if ($tablename == 'don') $total_ttc_by_line=$element->amount;
+				elseif ($tablename == 'projet_task')
+				{
+					$defaultvat = get_default_tva($mysoc, $mysoc);
+					$total_ttc_by_line = price2num($total_ht_by_line * (1 + ($defaultvat / 100)),'MT');
+				}
 				else $total_ttc_by_line=$element->total_ttc;
 
 				$total_ttc = $total_ttc + $total_ttc_by_line;
@@ -695,10 +797,14 @@ foreach ($listofreferent as $key => $value)
 					$newclassname = $classname;
 			}
 
-			print '<tr >';
+			print '<tr>';
+			// Module
 			print '<td align="left">'.$langs->trans($newclassname).'</td>';
+			// Nb
 			print '<td align="right">'.$i.'</td>';
+			// Amount HT
 			print '<td align="right">'.price($total_ht).'</td>';
+			// Amount TTC
 			print '<td align="right">'.price($total_ttc).'</td>';
 			print '</tr>';
 		}
diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php
index ef80873d03e108f230553d1115a11e73b7943e89..4464c9cb8efd7bab86d86461c4538841cc71934c 100644
--- a/htdocs/projet/list.php
+++ b/htdocs/projet/list.php
@@ -258,7 +258,7 @@ if ($resql)
 	print_liste_field_titre($langs->trans("DateEnd"),$_SERVER["PHP_SELF"],"p.datee","",$param,'align="center"',$sortfield,$sortorder);
 	print_liste_field_titre($langs->trans("Visibility"),$_SERVER["PHP_SELF"],"p.public","",$param,"",$sortfield,$sortorder);
 	print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],'p.fk_statut',"",$param,'align="right"',$sortfield,$sortorder);
-	print '<td class="liste_titre">&nbsp;</td>';
+	print_liste_field_titre('');
 	print "</tr>\n";
 
 	print '<tr class="liste_titre">';
diff --git a/htdocs/projet/tasks/contact.php b/htdocs/projet/tasks/contact.php
index e6dd2792118d1f94eedafbf08fe76116a254a306..9a8aa5c56084c34c1906bbded21a8adaebb03b03 100644
--- a/htdocs/projet/tasks/contact.php
+++ b/htdocs/projet/tasks/contact.php
@@ -298,12 +298,13 @@ if ($id > 0 || ! empty($ref))
 		    if ($res) break;
 		}
 */
-		print '<table class="noborder" width="100%">';
 
 		/*
 		 * Add a new contact line
 		 * Non affiche en mode modification de ligne
 		 */
+		print '<table class="noborder" width="100%">';
+
 		if ($action != 'editline' && $user->rights->projet->creer)
 		{
 			print '<tr class="liste_titre">';
@@ -336,8 +337,9 @@ if ($id > 0 || ! empty($ref))
 
 			print '<td colspan="1">';
 			// On recupere les id des users deja selectionnes
-			$contactsofproject=$projectstatic->getListContactId('internal');
-			print $form->select_dolusers((GETPOST('contactid')?GETPOST('contactid'):$user->id), 'contactid', 0, '', 0, '', $contactsofproject, 0, 0, 0, '', 1);
+			if ($object->project->public) $contactsofproject='';	// Everybody
+			else $contactsofproject=$projectstatic->getListContactId('internal');
+			print $form->select_dolusers((GETPOST('contactid')?GETPOST('contactid'):$user->id), 'contactid', 0, '', 0, '', $contactsofproject, 0, 0, 0, '', 1, $langs->trans("ResourceNotAssignedToProject"));
 			print '</td>';
 			print '<td>';
 			$formcompany->selectTypeContact($object, '', 'type','internal','rowid');
diff --git a/htdocs/projet/tasks/task.php b/htdocs/projet/tasks/task.php
index 5d8085efcddba1b772bc4883f5ccb1a0fea47995..93dcc7226a29e6d960f031ac2aea5d84f2eebb8d 100644
--- a/htdocs/projet/tasks/task.php
+++ b/htdocs/projet/tasks/task.php
@@ -37,7 +37,7 @@ $langs->load("projects");
 $langs->load("companies");
 
 $id=GETPOST('id','int');
-$ref=GETPOST('ref','alpha');
+$ref=GETPOST("ref",'alpha',1);
 $action=GETPOST('action','alpha');
 $confirm=GETPOST('confirm','alpha');
 $withproject=GETPOST('withproject','int');
@@ -81,6 +81,7 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->projet->creer)
 		$task_parent=$tmparray[1];
 		if (empty($task_parent)) $task_parent = 0;	// If task_parent is ''
 
+		$object->ref = GETPOST("ref",'alpha',2);
 		$object->label = $_POST["label"];
 		$object->description = $_POST['description'];
 		$object->fk_task_parent = $task_parent;
@@ -308,7 +309,7 @@ if ($id > 0 || ! empty($ref))
 
 			// Ref
 			print '<tr><td width="30%">'.$langs->trans("Ref").'</td>';
-			print '<td>'.$object->ref.'</td></tr>';
+			print '<td><input size="12" name="ref" value="'.$object->ref.'"></td></tr>';
 
 			// Label
 			print '<tr><td>'.$langs->trans("Label").'</td>';
diff --git a/htdocs/projet/tasks/time.php b/htdocs/projet/tasks/time.php
index 02e1dd0edbb094312d8f93b7e429555257178b4f..238b3c588ff59c00ed9bd3d183e047a051efca40 100644
--- a/htdocs/projet/tasks/time.php
+++ b/htdocs/projet/tasks/time.php
@@ -1,6 +1,6 @@
 <?php
 /* Copyright (C) 2005		Rodolphe Quiedeville	<rodolphe@quiedeville.org>
- * Copyright (C) 2006-2014	Laurent Destailleur		<eldy@users.sourceforge.net>
+ * Copyright (C) 2006-2015	Laurent Destailleur		<eldy@users.sourceforge.net>
  * Copyright (C) 2010-2012	Regis Houssin			<regis.houssin@capnetworks.com>
  * Copyright (C) 2011		Juanjo Menent			<jmenent@2byte.es>
  *
@@ -369,7 +369,7 @@ if ($id > 0 || ! empty($ref))
 			print '<input type="hidden" name="id" value="'.$object->id.'">';
 			print '<input type="hidden" name="withproject" value="'.$withproject.'">';
 
-			print '<table class="noborder" width="100%">';
+			print '<table class="noborder nohover" width="100%">';
 
 			print '<tr class="liste_titre">';
 			print '<td width="100">'.$langs->trans("Date").'</td>';
@@ -392,12 +392,12 @@ if ($id > 0 || ! empty($ref))
 			print '<td class="nowrap">';
 			print img_object('','user','class="hideonsmartphone"');
 			$contactsoftask=$object->getListContactId('internal');
-			if (count($contactsoftask)>0) 
+			if (count($contactsoftask)>0)
 			{
 				$userid=$contactsoftask[0];
-				print $form->select_dolusers((GETPOST('userid')?GETPOST('userid'):$userid),'userid',0,'',0,'',$contactsoftask);
+				print $form->select_dolusers((GETPOST('userid')?GETPOST('userid'):$userid), 'userid', 0, '', 0, '', $contactsoftask, 0, 0, 0, '', 0, $langs->trans("ResourceNotAssignedToTask"));
 			}
-			else 
+			else
 			{
 				print img_error($langs->trans('FirstAddRessourceToAllocateTime')).$langs->trans('FirstAddRessourceToAllocateTime');
 			}
diff --git a/htdocs/public/api/index.php b/htdocs/public/api/index.php
index d5065e45a323d7e92bc81585e6545804935ae44e..17b691675c5f77b2312369cf4798752bdc0b348f 100644
--- a/htdocs/public/api/index.php
+++ b/htdocs/public/api/index.php
@@ -28,7 +28,7 @@
 if (! defined("NOLOGIN"))        define("NOLOGIN",'1');
 
 $res=0;
-if (! $res && file_exists("../../main.inc.php")) $res=@include '../../main.inc.php';					
+if (! $res && file_exists("../../main.inc.php")) $res=@include '../../main.inc.php';
 if (! $res && file_exists("../../../dolibarr/htdocs/main.inc.php")) $res=@include '../../../dolibarr/htdocs/main.inc.php';     // For custom directory
 if (! $res) die("Include of main fails");
 
@@ -47,7 +47,7 @@ if (empty($conf->global->MAIN_MODULE_API))
     exit;
 }
 
-use Luracast\Restler\Defaults;
+use \Luracast\Restler\Defaults;
 Defaults::setProperty('authenticationMethod','_isAllowed');
 
 $api = new DolibarrApi($db);
@@ -64,7 +64,7 @@ foreach ($modulesdir as $dir)
      * Search available module
      */
     dol_syslog("Scan directory ".$dir." for API modules");
-    
+
     $handle=@opendir(dol_osencode($dir));
     if (is_resource($handle))
     {
@@ -81,7 +81,7 @@ foreach ($modulesdir as $dir)
                 if ($module == 'societe') {
 					$obj = 'thirdparty';
 				}
-                if ($module == 'categorie') { 
+                if ($module == 'categorie') {
                     $part = 'categories';
 					$obj = 'category';
 				}
@@ -90,7 +90,7 @@ foreach ($modulesdir as $dir)
 					$obj = 'facture';
 				}
                 if (empty($conf->$module->enabled)) $enabled=false;
-                
+
                 if ($enabled)
                 {
                     /*
@@ -102,7 +102,7 @@ foreach ($modulesdir as $dir)
                      * @todo : use getElementProperties() function ?
                      */
                     $dir_part = DOL_DOCUMENT_ROOT.'/'.$part.'/class/';
-                        
+
                     $handle_part=@opendir(dol_osencode($dir_part));
                     if (is_resource($handle_part))
                     {
@@ -125,4 +125,4 @@ foreach ($modulesdir as $dir)
     }
 }
 
-$api->r->handle(); //serve the response
\ No newline at end of file
+$api->r->handle(); //serve the response
diff --git a/htdocs/public/demo/index.php b/htdocs/public/demo/index.php
index 956bcac8b75c9eb974bbe824bcb0e2132508f555..4b0c052617473608d5053f70356e8b3d2638d026 100644
--- a/htdocs/public/demo/index.php
+++ b/htdocs/public/demo/index.php
@@ -41,7 +41,7 @@ $conf->dol_use_jmobile=GETPOST('dol_use_jmobile','int');
 
 // Security check
 global $dolibarr_main_demo;
-if (empty($dolibarr_main_demo)) accessforbidden('Parameter dolibarr_main_demo must be defined in conf file with value "default login,default pass" to enable the demo entry page',1,1,1);
+if (empty($dolibarr_main_demo)) accessforbidden('Parameter dolibarr_main_demo must be defined in conf file with value "default login,default pass" to enable the demo entry page',0,0,1);
 
 // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
 $res=$hookmanager->initHooks(array('demo'));
diff --git a/htdocs/public/donations/therm.php b/htdocs/public/donations/therm.php
deleted file mode 100644
index 7c24253dd71fa28eea1715f03147d1c7e5cc3f82..0000000000000000000000000000000000000000
--- a/htdocs/public/donations/therm.php
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-/* Copyright (C) 2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
- * Copyright (C) 2008 Laurent Destailleur  <eldy@users.sourceforge.net>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/**
- *	    \file       htdocs/public/donations/therm.php
- *      \ingroup    donation
- *		\brief      Screen with thermometer
- */
-
-define("NOLOGIN",1);		// This means this output page does not require to be logged.
-define("NOCSRFCHECK",1);	// We accept to go on this page from external web site.
-
-require '../../main.inc.php';
-require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php';
-require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php';
-
-// Security check
-if (empty($conf->don->enabled)) accessforbidden('',1,1,1);
-
-
-
-/*
- * 	View (output an image)
- */
-
-$dontherm = new Don($db);
-
-$intentValue  = $dontherm->sum_donations(1);
-$pendingValue = $dontherm->sum_donations(2);
-$actualValue  = $dontherm->sum_donations(3);
-
-$db->close();
-
-
-/*
- * Graph thermometer
- */
-print moneyMeter($actualValue, $pendingValue, $intentValue);
-
diff --git a/htdocs/public/members/public_card.php b/htdocs/public/members/public_card.php
index fd745e523c9efd66e930ffafde4c2ff5d56f66b7..fc96ffed01cc5a52e05b768c9f26127f43cae076 100644
--- a/htdocs/public/members/public_card.php
+++ b/htdocs/public/members/public_card.php
@@ -65,7 +65,11 @@ $extrafields = new ExtraFields($db);
  * View
  */
 
-llxHeaderVierge($langs->trans("MemberCard"));
+$morehead='';
+if (! empty($conf->global->MEMBER_PUBLIC_CSS)) $morehead='<link rel="stylesheet" type="text/css" href="'.$conf->global->MEMBER_PUBLIC_CSS.'">';
+else $morehead='<link rel="stylesheet" type="text/css" href="'.DOL_URL_ROOT.'/theme/eldy/style.css.php'.'">';
+
+llxHeaderVierge($langs->trans("MemberCard"), $morehead);
 
 // fetch optionals attributes and labels
 $extralabels=$extrafields->fetch_name_optionals_label('adherent');
@@ -75,7 +79,7 @@ if ($id > 0)
 	if ($res < 0) { dol_print_error($db,$object->error); exit; }
 	$res=$object->fetch_optionals($object->id,$extralabels);
 
-	print_titre($langs->trans("MemberCard"));
+	print_fiche_titre($langs->trans("MemberCard"), '', '');
 
 	if (empty($object->public))
 	{
@@ -83,7 +87,7 @@ if ($id > 0)
 	}
 	else
 	{
-		print '<table class="border" cellspacing="0" width="100%" cellpadding="3">';
+		print '<table class="public_border" cellspacing="0" width="100%" cellpadding="3">';
 
 		print '<tr><td width="15%">'.$langs->trans("Type").'</td><td class="valeur">'.$object->type."</td></tr>\n";
 		print '<tr><td>'.$langs->trans("Person").'</td><td class="valeur">'.$object->morphy.'</td></tr>';
@@ -138,7 +142,7 @@ function llxHeaderVierge($title, $head = "")
 	print "<title>".$title."</title>\n";
 	if ($head) print $head."\n";
 	print "</head>\n";
-	print "<body>\n";
+	print '<body class="public_body">'."\n";
 }
 
 /**
diff --git a/htdocs/public/members/public_list.php b/htdocs/public/members/public_list.php
index e672a6d59d367a454095147ce935da4da0bcf0d3..9064dd528794f293ced962b2992309f505be0fc2 100644
--- a/htdocs/public/members/public_list.php
+++ b/htdocs/public/members/public_list.php
@@ -62,7 +62,7 @@ function llxHeaderVierge($title, $head = "")
     print "<title>".$title."</title>\n";
     if ($head) print $head."\n";
     print "</head>\n";
-	print "<body>\n";
+	print '<body class="public_body">'."\n";
 }
 
 /**
@@ -98,7 +98,13 @@ if (! $sortfield) {  $sortfield="lastname"; }
  * View
  */
 
-llxHeaderVierge($langs->trans("ListOfValidatedPublicMembers"));
+$form = new Form($db);
+
+$morehead='';
+if (! empty($conf->global->MEMBER_PUBLIC_CSS)) $morehead='<link rel="stylesheet" type="text/css" href="'.$conf->global->MEMBER_PUBLIC_CSS.'">';
+else $morehead='<link rel="stylesheet" type="text/css" href="'.DOL_URL_ROOT.'/theme/eldy/style.css.php'.'">';
+
+llxHeaderVierge($langs->trans("ListOfValidatedPublicMembers"), $morehead);
 
 $sql = "SELECT rowid, firstname, lastname, societe, zip, town, email, birth, photo";
 $sql.= " FROM ".MAIN_DB_PREFIX."adherent";
@@ -120,17 +126,16 @@ if ($result)
 
 	$param="&statut=$statut&sortorder=$sortorder&sortfield=$sortfield";
 	print_barre_liste($langs->trans("ListOfValidatedPublicMembers"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, 0, '');
-	print '<table class="noborder" width="100%">';
+	print '<table class="public_border" width="100%">';
 
-	print '<tr class="liste_titre">';
-	print '<td><a href="'.$_SERVER["PHP_SELF"].'?page='.$page.'&sortorder=ASC&sortfield=firstname">'.$langs->trans("Firstname").'</a>';
-	print ' <a href="'.$_SERVER['PHP_SELF'].'?page='.$page.'&sortorder=ASC&sortfield=lastname">'.$langs->trans("Lastname").'</a>';
-	print ' / <a href="'.$_SERVER["PHP_SELF"].'?page='.$page.'&sortorder=ASC&sortfield=societe">'.$langs->trans("Company").'</a></td>'."\n";
+	print '<tr class="public_liste_titre">';
+	print '<td><a href="'.$_SERVER["PHP_SELF"].'?page='.$page.'&sortorder=ASC&sortfield=firstname">'.dolGetFirstLastname($langs->trans("Firstname"),$langs->trans("Lastname")).'</a></td>';
+	print '<td><a href="'.$_SERVER["PHP_SELF"].'?page='.$page.'&sortorder=ASC&sortfield=societe">'.$langs->trans("Company").'</a></td>'."\n";
 	//print_liste_field_titre($langs->trans("DateToBirth"), $_SERVER["PHP_SELF"],"birth",'',$param,$sortfield,$sortorder); // est-ce nécessaire ??
-	print_liste_field_titre($langs->trans("EMail"), $_SERVER["PHP_SELF"],"email",'',$param,$sortfield,$sortorder);
-	print_liste_field_titre($langs->trans("Zip"), $_SERVER["PHP_SELF"],"zip","",$param,$sortfield,$sortorder);
-	print_liste_field_titre($langs->trans("Town"), $_SERVER["PHP_SELF"],"town","",$param,$sortfield,$sortorder);
-	print "<td>".$langs->trans("Photo")."</td>\n";
+	print_liste_field_titre($langs->trans("EMail"), $_SERVER["PHP_SELF"],"email",'',$param,'',$sortfield,$sortorder,'public_');
+	print_liste_field_titre($langs->trans("Zip"), $_SERVER["PHP_SELF"],"zip","",$param,'',$sortfield,$sortorder,'public_');
+	print_liste_field_titre($langs->trans("Town"), $_SERVER["PHP_SELF"],"town","",$param,'',$sortfield,$sortorder,'public_');
+	print_liste_field_titre($langs->trans("Photo"), $_SERVER["PHP_SELF"],"","",$param,'',$sortfield,$sortorder,'public_');
 	print "</tr>\n";
 
 	$var=True;
@@ -139,13 +144,13 @@ if ($result)
 		$objp = $db->fetch_object($result);
 		$var=!$var;
 		print "<tr ".$bc[$var].">";
-		print '<td><a href="public_card.php?id='.$objp->rowid.'">'.dolGetFirstLastname($obj->firstname, $obj->lastname).($objp->societe?' / '.$objp->societe:'').'</a></td>'."\n";
+		print '<td><a href="public_card.php?id='.$objp->rowid.'">'.dolGetFirstLastname($objp->firstname, $objp->lastname).'</a></td>'."\n";
+		print '<td>'.$objp->societe.'</td>'."\n";
 		print '<td>'.$objp->email.'</td>'."\n";
 		print '<td>'.$objp->zip.'</td>'."\n";
 		print '<td>'.$objp->town.'</td>'."\n";
 		if (isset($objp->photo) && $objp->photo != '')
 		{
-			$form = new Form($db);
 			print '<td>';
 			print $form->showphoto('memberphoto', $objp, 64);
 			print '</td>'."\n";
@@ -165,6 +170,6 @@ else
 }
 
 
-$db->close();
-
 llxFooterVierge();
+
+$db->close();
diff --git a/htdocs/public/test/test_arrays.php b/htdocs/public/test/test_arrays.php
index 9f0cec70e6219426926d841c74d339e99c9edd31..698046cf708fd7b2a1092cbac9fb4fdfe5b1100f 100644
--- a/htdocs/public/test/test_arrays.php
+++ b/htdocs/public/test/test_arrays.php
@@ -148,6 +148,39 @@ print_barre_liste('Title of my list', 3, $_SERVER["PHP_SELF"], '', '', '', 'Text
 
 ?>
 <table class="liste noborder tagtable centpercent" id="tablelines3">
+<?php
+$moreforfilter.='<div class="divsearchfield">';
+$moreforfilter.=$langs->trans('This is a select list for a filter A'). ': ';
+$cate_arbo = array('field1'=>'value1a into the select list A','field2'=>'value2a');
+$moreforfilter.=$form->selectarray('search_aaa', $cate_arbo, '', 1);		// List without js combo
+$moreforfilter.='</div>';
+
+$moreforfilter.='<div class="divsearchfield">';
+$moreforfilter.=$langs->trans('This is a select list for a filter B'). ': ';
+$cate_arbo = array('field1'=>'value1b into the select list B','field2'=>'value2b');
+$moreforfilter.=$form->selectarray('search_bbb', $cate_arbo, '', 1, 0, 0, '', 0, 0, 0, 0, '', 1);		// List with js combo
+$moreforfilter.='</div>';
+
+$moreforfilter.='<div class="divsearchfield">';
+$moreforfilter.=$langs->trans('This is a select list for a filter C'). ': ';
+$cate_arbo = array('field1'=>'value1c into the select list C','field2'=>'value2c');
+$moreforfilter.=$form->selectarray('search_ccc', $cate_arbo, '', 1, 0, 0, '', 0, 0, 0, 0, '', 1);		// List with js combo
+$moreforfilter.='</div>';
+
+$moreforfilter.='<div class="divsearchfield">';
+$moreforfilter.=$langs->trans('This is a select list for a filter D'). ': ';
+$cate_arbo = array('field1'=>'value1d into the select list D','field2'=>'value2d');
+$moreforfilter.=$form->selectarray('search_ddd', $cate_arbo, '', 1, 0, 0, '', 0, 0, 0, 0, '', 1);		// List with js combo
+$moreforfilter.='</div>';
+
+if (! empty($moreforfilter))
+{
+    print '<tr class="liste_titre">';
+    print '<td class="liste_titre" colspan="10">';
+    print $moreforfilter;
+    print '</td></tr>';
+}
+?>
 <tr class="liste_titre">
 <?php print getTitleFieldOfList($langs->trans('title1'),0,$_SERVER["PHP_SELF"],'aaa','','','align="left"',$sortfield,$sortorder); ?>
 <?php print getTitleFieldOfList($langs->trans('title2'),0,$_SERVER["PHP_SELF"],'bbb','','','align="right"',$sortfield,$sortorder); ?>
diff --git a/htdocs/public/test/test_forms.php b/htdocs/public/test/test_forms.php
index f14652f6dc069018dc26928fd12f841cf3c0fcd8..a6a361620e99b6c7ed6da0e2b531858c16eeed82 100644
--- a/htdocs/public/test/test_forms.php
+++ b/htdocs/public/test/test_forms.php
@@ -17,8 +17,8 @@ llxHeader();
 <h1>
 This page is a sample of page using Dolibarr HTML widget methods. It is designed to make test with<br>
 - css (add parameter &theme=newtheme to test another theme or edit css of current theme)<br>
-- jmobile (add parameter dol_use_jmobile=1&dol_optimize_smallscreen=1 to enable view with jmobile)<br>
-- no javascript / usage for bind people (add parameter nojs=1 to force disable javascript)<br>
+- jmobile (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?dol_use_jmobile=1&dol_optimize_smallscreen=1'; ?>">dol_use_jmobile=1&dol_optimize_smallscreen=1</a> to enable view with jmobile)<br>
+- no javascript / usage for bind people (add parameter <a href="<?php echo $_SERVER["PHP_SELF"].'?nojs=1'; ?>">nojs=1</a> to force disable javascript)<br>
 </h1>
 <br>
 
@@ -75,7 +75,7 @@ print '<br><br>'."\n";
 
 // Test4d: form->select_thirdparty
 print "Test 4d: Select thirdparty<br>\n";
-print $form->select_thirdparty(0,'thirdpartytest');
+print $form->select_company(0,'thirdpartytest');
 
 print '<br><br>'."\n";
 
diff --git a/htdocs/public/theme/common/index.php b/htdocs/public/theme/common/index.php
new file mode 100644
index 0000000000000000000000000000000000000000..0d25c726b339fb45002e055e30ab03b5b86f9d08
--- /dev/null
+++ b/htdocs/public/theme/common/index.php
@@ -0,0 +1,29 @@
+<?php
+/* Copyright (C) 2009 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2015 Raphaël Doursenaud   <rdoursenaud@gpcsolutions.fr>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ *     	\file       htdocs/public/theme/common/index.php
+ *		\ingroup    core
+ *		\brief      A redirect page to an error
+ *		\author	    Laurent Destailleur
+ */
+
+require '../../../master.inc.php';
+
+header("Location: ".DOL_URL_ROOT.'/public/error-404.php');
+
diff --git a/htdocs/theme/common/nophoto.jpg b/htdocs/public/theme/common/nophoto.jpg
similarity index 100%
rename from htdocs/theme/common/nophoto.jpg
rename to htdocs/public/theme/common/nophoto.jpg
diff --git a/htdocs/public/theme/common/user_anonymous.png b/htdocs/public/theme/common/user_anonymous.png
new file mode 100644
index 0000000000000000000000000000000000000000..12c1007048bd87f7014e8c6aab788843a9695558
Binary files /dev/null and b/htdocs/public/theme/common/user_anonymous.png differ
diff --git a/htdocs/public/theme/common/user_man.png b/htdocs/public/theme/common/user_man.png
new file mode 100644
index 0000000000000000000000000000000000000000..762e83d4a3650070d0461065bf04d2eba388867d
Binary files /dev/null and b/htdocs/public/theme/common/user_man.png differ
diff --git a/htdocs/public/theme/common/user_woman.png b/htdocs/public/theme/common/user_woman.png
new file mode 100644
index 0000000000000000000000000000000000000000..d9fee3c3d6400eefcb0dc59dd83ff531021a8a57
Binary files /dev/null and b/htdocs/public/theme/common/user_woman.png differ
diff --git a/htdocs/public/theme/index.php b/htdocs/public/theme/index.php
new file mode 100644
index 0000000000000000000000000000000000000000..1d8c522741dcd8b58a6f9981f9f2d90a37a27616
--- /dev/null
+++ b/htdocs/public/theme/index.php
@@ -0,0 +1,29 @@
+<?php
+/* Copyright (C) 2009 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2015 Raphaël Doursenaud   <rdoursenaud@gpcsolutions.fr>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ *     	\file       htdocs/public/theme/index.php
+ *		\ingroup    core
+ *		\brief      A redirect page to an error
+ *		\author	    Laurent Destailleur
+ */
+
+require '../../master.inc.php';
+
+header("Location: ".DOL_URL_ROOT.'/public/error-404.php');
+
diff --git a/htdocs/resource/add.php b/htdocs/resource/add.php
index b13e60bd0bc857c97b3e4204e6c4711323e980c5..d142ad91e47d660c1f23e0ba705244afc578f782 100644
--- a/htdocs/resource/add.php
+++ b/htdocs/resource/add.php
@@ -32,7 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/resource/class/html.formresource.class.php';
 $langs->load("resource");
 $langs->load("companies");
 $langs->load("other");
-$langs->load("resource@resource");
+$langs->load("resource");
 
 // Get parameters
 $id			= GETPOST('id','int');
@@ -65,25 +65,25 @@ if ($action == 'confirm_add_resource')
 	if (! $cancel)
 	{
 		$error='';
-			
+
 		$ref=GETPOST('ref','alpha');
 		$description=GETPOST('description','alpha');
 		$fk_code_type_resource=GETPOST('fk_code_type_resource','alpha');
-			
+
 		if (empty($ref))
 		{
 			$mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Ref"));
 			setEventMessage($mesg, 'errors');
 			$error++;
 		}
-			
+
 		if (! $error)
 		{
 			$object=new Resource($db);
 			$object->ref=$ref;
 			$object->description=$description;
 			$object->fk_code_type_resource=$fk_code_type_resource;
-				
+
 			$result=$object->create($user);
 			if ($result > 0)
 			{
@@ -119,11 +119,11 @@ if ($action == 'confirm_add_resource')
 $form=new Form($db);
 $formresource = new FormResource($db);
 
-if (! $action) 
+if (! $action)
 {
 	$pagetitle=$langs->trans('AddResource');
 	llxHeader('',$pagetitle,'');
-	print_fiche_titre($pagetitle,'','resource.png@resource');
+	print_fiche_titre($pagetitle,'','title_generic');
 
 	print '<form method="post" action="'.$_SERVER['PHP_SELF'].'" name="add_resource">';
 	print '<input type="hidden" name="action" value="confirm_add_resource" />';
@@ -135,15 +135,14 @@ if (! $action)
 	// Ref / label
 	$field = 'ref';
 	print '<tr>';
-	print '<td>';
-	print '<label for="'.$field.'" class="fieldrequired">';
+	print '<td class="fieldrequired">';
 	print $langs->trans('ResourceFormLabel_'.$field);
 	print '</td>';
 	print '<td>';
 	print '<input type="text" name="'.$field.'" value="'.$$field.'" />';
 	print '</td>';
 	print '</tr>';
-	
+
 	// Type
 	print '<tr><td width="20%">'.$langs->trans("ResourceType").'</td>';
 	print '<td>';
@@ -153,10 +152,8 @@ if (! $action)
 	// Description
 	$field = 'description';
 	print '<tr>';
-	print '<td>';
-	print '<label for="'.$field.'">';
+	print '<td class="tdtop">';
 	print $langs->trans('ResourceFormLabel_'.$field);
-	print '</label>';
 	print '</td>';
 	print '<td>';
 	require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php';
diff --git a/htdocs/resource/card.php b/htdocs/resource/card.php
index 0863cad9c52c74aa5c6c7f42ba48f437d22c8e57..abb07820fa0850f5ccb67ee6580905a1c7c69f80 100644
--- a/htdocs/resource/card.php
+++ b/htdocs/resource/card.php
@@ -68,7 +68,7 @@ if (empty($reshook))
 	* ACTIONS
 	********************************************************************/
 
-	if ($action == 'update' && ! $_POST["cancel"]  && $user->rights->resource->write )
+	if ($action == 'update' && ! $_POST["cancel"] && $user->rights->resource->write)
 	{
 		$error=0;
 
@@ -113,6 +113,7 @@ if (empty($reshook))
 	}
 }
 
+
 /***************************************************
 * VIEW
 *
@@ -127,12 +128,10 @@ $formresource = new FormResource($db);
 if ( $object->fetch($id) > 0 )
 {
 	$head=resourcePrepareHead($object);
-	dol_fiche_head($head, 'resource', $langs->trans("ResourceSingular"),0,'resource@resource');
 
 
 	if ($action == 'edit' )
 	{
-
 		if ( ! $user->rights->resource->write )
 			accessforbidden('',0);
 
@@ -144,10 +143,12 @@ if ( $object->fetch($id) > 0 )
 		print '<input type="hidden" name="action" value="update">';
 		print '<input type="hidden" name="id" value="'.$object->id.'">';
 
+		dol_fiche_head($head, 'resource', $langs->trans("ResourceSingular"),0,'resource@resource');
+
 		print '<table class="border" width="100%">';
 
 		// Ref
-		print '<tr><td width="20%">'.$langs->trans("ResourceFormLabel_ref").'</td>';
+		print '<tr><td width="20%" class="fieldrequired">'.$langs->trans("ResourceFormLabel_ref").'</td>';
 		print '<td><input size="12" name="ref" value="'.(GETPOST('ref') ? GETPOST('ref') : $object->ref).'"></td></tr>';
 
 		// Type
@@ -162,20 +163,28 @@ if ( $object->fetch($id) > 0 )
 		print '<textarea name="description" cols="80" rows="'.ROWS_3.'">'.($_POST['description'] ? GETPOST('description','alpha') : $object->description).'</textarea>';
 		print '</td></tr>';
 
-		print '<tr><td align="center" colspan="2">';
+		print '</table>';
+
+		dol_fiche_end();
+
+		print '<div class="center">';
 		print '<input name="update" class="button" type="submit" value="'.$langs->trans("Modify").'"> &nbsp; ';
 		print '<input type="submit" class="button" name="cancel" Value="'.$langs->trans("Cancel").'"></td></tr>';
-		print '</table>';
+		print '</div>';
+
 		print '</form>';
 	}
 	else
 	{
-	    // Confirm deleting resource line
+		dol_fiche_head($head, 'resource', $langs->trans("ResourceSingular"),0,'resource@resource');
+
+		// Confirm deleting resource line
 	    if ($action == 'delete')
 	    {
 	        print $form->formconfirm("card.php?&id=".$id,$langs->trans("DeleteResource"),$langs->trans("ConfirmDeleteResource"),"confirm_delete_resource",'','',1);
 	    }
 
+
 		/*---------------------------------------
 		 * View object
 		 */
@@ -210,7 +219,7 @@ if ( $object->fetch($id) > 0 )
 
 	/*
 	 * Boutons actions
-	*/
+	 */
 	print '<div class="tabsAction">';
 	$parameters = array();
 	$reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been
diff --git a/htdocs/resource/class/resource.class.php b/htdocs/resource/class/resource.class.php
index 33df80fc0956646c277a185c585fc08ff9500977..cac917fa85b33936d78fb91a64493f715271d2bc 100644
--- a/htdocs/resource/class/resource.class.php
+++ b/htdocs/resource/class/resource.class.php
@@ -606,9 +606,9 @@ class Resource extends CommonObject
      * Fetch all resources available, declared by modules
      * Load available resource in array $this->available_resources
      *
-     * note : deprecated, remplaced by hook getElementResources
-     *
      * @return int 	number of available resources declared by modules
+     * @deprecated, remplaced by hook getElementResources
+     * @see getElementResources()
      */
     function fetch_all_available() {
     	global $conf;
diff --git a/htdocs/resource/element_resource.php b/htdocs/resource/element_resource.php
index 6b6b5553d72261d3818686f45ece0c9457beddc6..123673654c94510a4016694ed4f374f0dfd7e4fd 100644
--- a/htdocs/resource/element_resource.php
+++ b/htdocs/resource/element_resource.php
@@ -72,6 +72,11 @@ $mandatory 		= GETPOST('mandatory','int');
 $cancel			= GETPOST('cancel','alpha');
 $confirm                = GETPOST('confirm','alpha');
 
+
+/*
+ * Actions
+ */
+
 if($action == 'add_element_resource' && ! $cancel)
 {
 	$objstat = fetchObjectByElement($element_id,$element);
@@ -147,18 +152,16 @@ $reshook=$hookmanager->executeHooks('getElementResources',$parameters,$object,$a
 if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
 
 
-/***************************************************
- * VIEW
-*
-* Put here all code to build page
-****************************************************/
-
-$pagetitle=$langs->trans('ResourceElementPage');
-llxHeader('',$pagetitle,'');
 
+/*
+ * View
+ */
 
 $form=new Form($db);
 
+$pagetitle=$langs->trans('ResourceElementPage');
+llxHeader('',$pagetitle,'');
+
 
 // Load available resource, declared by modules
 $ret = count($object->available_resources);
@@ -212,16 +215,17 @@ else
 			print '<tr><td>'.$langs->trans("Title").'</td><td colspan="3">'.$act->label.'</td></tr>';
 			print '</table>';
 
-			print '</div>';
+			dol_fiche_end();
 		}
 	}
+
 	/*
 	 * Specific to thirdparty module
 	 */
-	if($element_id && $element == 'societe')
+	if ($element_id && $element == 'societe')
 	{
 		$socstatic = fetchObjectByElement($element_id,$element);
-		if(is_object($socstatic)) {
+		if (is_object($socstatic)) {
 			require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
 			$head = societe_prepare_head($socstatic);
 
@@ -240,13 +244,13 @@ else
 	        print '</tr>';
 			print '</table>';
 
-			print '</div>';
+			dol_fiche_end();
 		}
 	}
 
 
 
-	print_fiche_titre($langs->trans('ResourcesLinkedToElement'),'','resource.png@resource');
+	//print_fiche_titre($langs->trans('ResourcesLinkedToElement'),'','');
 
 
 
@@ -257,7 +261,8 @@ else
 		{
 			$element_prop = getElementProperties($resource_obj);
 
-			print_titre($langs->trans(ucfirst($element_prop['element']).'Singular'));
+
+
 
 			//print '/'.$modresources.'/class/'.$resource_obj.'.class.php<br />';
 
@@ -267,21 +272,21 @@ else
 
 			$linked_resources = $object->getElementResources($element,$element_id,$resource_obj);
 
-			if ( $mode == 'add' && $resource_obj == $resource_type)
+
+			// If we have a specific template we use it
+			if(file_exists(dol_buildpath($path.'/core/tpl/resource_'.$element_prop['element'].'_add.tpl.php')))
 			{
-				// If we have a specific template we use it
-				if(file_exists(dol_buildpath($path.'/core/tpl/resource_'.$element_prop['element'].'_'.$mode.'.tpl.php')))
-				{
-					$res=include dol_buildpath($path.'/core/tpl/resource_'.$element_prop['element'].'_'.$mode.'.tpl.php');
-				}
-				else
-				{
-					$res=include DOL_DOCUMENT_ROOT . '/core/tpl/resource_add.tpl.php';
-				}
+				$res=include dol_buildpath($path.'/core/tpl/resource_'.$element_prop['element'].'_add.tpl.php');
 			}
 			else
 			{
-				//print '/'.$element_prop['module'].'/core/tpl/resource_'.$element_prop['element'].'_view.tpl.php';
+				$res=include DOL_DOCUMENT_ROOT . '/core/tpl/resource_add.tpl.php';
+			}
+
+
+			if ($mode != 'add' || $resource_obj != $resource_type)
+			{
+				//print_titre($langs->trans(ucfirst($element_prop['element']).'Singular'));
 
 				// If we have a specific template we use it
 				if(file_exists(dol_buildpath($path.'/core/tpl/resource_'.$element_prop['element'].'_view.tpl.php')))
@@ -294,15 +299,6 @@ else
 					$res=include DOL_DOCUMENT_ROOT . '/core/tpl/resource_view.tpl.php';
 				}
 			}
-
-			if($resource_obj!=$resource_type )
-			{
-				print '<div class="tabsAction">';
-				print '<div class="inline-block divButAction">';
-				print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?mode=add&resource_type='.$resource_obj.'&element='.$element.'&element_id='.$element_id.'">'.$langs->trans('AddResource').'</a>';
-				print '</div>';
-				print '</div>';
-			}
 		}
 	}
 }
diff --git a/htdocs/resource/list.php b/htdocs/resource/list.php
index ab70bc9a3385daf1b88368c9dc62c76fae4d28d1..fbe8df807c0a37bbb1c5d5aa898cad9ac137a84a 100644
--- a/htdocs/resource/list.php
+++ b/htdocs/resource/list.php
@@ -89,7 +89,7 @@ llxHeader('',$pagetitle,'');
 
 $form=new Form($db);
 
-print_fiche_titre($pagetitle,'','resource.png@resource');
+print_fiche_titre($pagetitle,'','title_generic');
 
 // Confirmation suppression resource line
 if ($action == 'delete_resource')
@@ -108,7 +108,7 @@ if(!$ret) {
 }
 else
 {
-	$var=false;
+	$var=true;
 
 	print '<table class="noborder" width="100%">'."\n";
 	print '<tr class="liste_titre">';
@@ -139,7 +139,7 @@ else
 		print '</td>';
 
 		print '<td align="center">';
-		print '<a href="./card.php?action=update&id='.$resource->id.'">';
+		print '<a href="./card.php?action=edit&id='.$resource->id.'">';
 		print img_edit();
 		print '</a>';
 		print '&nbsp;';
diff --git a/htdocs/societe/canvas/actions_card_common.class.php b/htdocs/societe/canvas/actions_card_common.class.php
index f1472dcb2d7e48005c352447ec387f852f5e45b3..383ed9e8ff82dd07ed9e6ffca54e135f9b047e63 100644
--- a/htdocs/societe/canvas/actions_card_common.class.php
+++ b/htdocs/societe/canvas/actions_card_common.class.php
@@ -52,6 +52,8 @@ abstract class ActionsCardCommon
 	 */
 	private function getInstanceDao()
 	{
+		dol_syslog(__METHOD__ . " is deprecated", LOG_WARNING);
+
 		if (! is_object($this->object))
 		{
 			$modelclassfile = dol_buildpath('/'.$this->dirmodule.'/canvas/'.$this->canvas.'/dao_'.$this->targetmodule.'_'.$this->canvas.'.class.php');
diff --git a/htdocs/societe/class/client.class.php b/htdocs/societe/class/client.class.php
index 2bff90f2f3fa8747894e9c190303138199ca8011..f3e7a8dcce981069bdba38e83849771a2de2ea37 100644
--- a/htdocs/societe/class/client.class.php
+++ b/htdocs/societe/class/client.class.php
@@ -108,7 +108,7 @@ class Client extends Societe
 		while ($i < $num)
 		{
 			$obj=$this->db->fetch_object($resql);
-			$this->cacheprospectstatus[$obj->id]=array('id'=>$obj->id, 'code'=>$obj->code, 'label'=> $langs->trans("aaa")?$obj->label:'');
+			$this->cacheprospectstatus[$obj->id]=array('id'=>$obj->id, 'code'=>$obj->code, 'label'=> ($langs->trans("ST_".strtoupper($obj->code))=="ST_".strtoupper($obj->code))?$obj->label:$langs->trans("ST_".strtoupper($obj->code)));
 			$i++;
 		}
 		return 1;
diff --git a/htdocs/societe/class/companybankaccount.class.php b/htdocs/societe/class/companybankaccount.class.php
index 3a57ce7a3d4d5a4fa41aa33cbd4e7bf15398a92c..8904d2573ed69b02e3af975751f47d3ecc407a08 100644
--- a/htdocs/societe/class/companybankaccount.class.php
+++ b/htdocs/societe/class/companybankaccount.class.php
@@ -48,6 +48,7 @@ class CompanyBankAccount extends Account
     var $proprio;
     var $owner_address;
     var $default_rib;
+    var $frstrecur;
 
     var $datec;
     var $datem;
@@ -117,44 +118,34 @@ class CompanyBankAccount extends Account
      */
     function update($user='')
     {
-//        $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."societe_rib";
-//        $sql .= " WHERE rowid = ".$this->id;
-//
-//        $result = $this->db->query($sql);
-//        if ($result)
-//        {
-//            if ($this->db->num_rows($result) == 0)
-//            {
-//                $this->create();
-//            }
-//        }
-//        else
-//        {
-//            dol_print_error($this->db);
-//            return 0;
-//        }
-
-        if (! $this->id) {
+    	global $conf;
+
+        if (! $this->id) 
+        {
             $this->create();
         }
 
-        $sql = "UPDATE ".MAIN_DB_PREFIX."societe_rib SET ";
-        $sql .= " bank = '" .$this->db->escape($this->bank)."'";
-        $sql .= ",code_banque='".$this->code_banque."'";
-        $sql .= ",code_guichet='".$this->code_guichet."'";
-        $sql .= ",number='".$this->number."'";
-        $sql .= ",cle_rib='".$this->cle_rib."'";
-        $sql .= ",bic='".$this->bic."'";
-        $sql .= ",iban_prefix = '".$this->iban."'";
-        $sql .= ",domiciliation='".$this->db->escape($this->domiciliation)."'";
-        $sql .= ",proprio = '".$this->db->escape($this->proprio)."'";
-        $sql .= ",owner_address = '".$this->db->escape($this->owner_address)."'";
-        $sql .= ",default_rib = ".$this->default_rib;
-        if (trim($this->label) != '')
-            $sql .= ",label = '".$this->db->escape($this->label)."'";
+        $sql = "UPDATE ".MAIN_DB_PREFIX."societe_rib SET";
+        $sql.= " bank = '" .$this->db->escape($this->bank)."'";
+        $sql.= ",code_banque='".$this->code_banque."'";
+        $sql.= ",code_guichet='".$this->code_guichet."'";
+        $sql.= ",number='".$this->number."'";
+        $sql.= ",cle_rib='".$this->cle_rib."'";
+        $sql.= ",bic='".$this->bic."'";
+        $sql.= ",iban_prefix = '".$this->iban."'";
+        $sql.= ",domiciliation='".$this->db->escape($this->domiciliation)."'";
+        $sql.= ",proprio = '".$this->db->escape($this->proprio)."'";
+        $sql.= ",owner_address = '".$this->db->escape($this->owner_address)."'";
+        $sql.= ",default_rib = ".$this->default_rib;
+	    if ($conf->prelevement->enabled)
+	    {
+    	    $sql.= ",frstrecur = '".$this->db->escape($this->frstrecur)."'";
+	    }
+	    if (trim($this->label) != '')
+            $sql.= ",label = '".$this->db->escape($this->label)."'";
         else
-            $sql .= ",label = NULL";
-        $sql .= " WHERE rowid = ".$this->id;
+            $sql.= ",label = NULL";
+        $sql.= " WHERE rowid = ".$this->id;
 
         $result = $this->db->query($sql);
         if ($result)
@@ -179,7 +170,8 @@ class CompanyBankAccount extends Account
     {
         if (empty($id) && empty($socid)) return -1;
 
-        $sql = "SELECT rowid, fk_soc, bank, number, code_banque, code_guichet, cle_rib, bic, iban_prefix as iban, domiciliation, proprio, owner_address, default_rib, label, datec, tms as datem";
+        $sql = "SELECT rowid, fk_soc, bank, number, code_banque, code_guichet, cle_rib, bic, iban_prefix as iban, domiciliation, proprio,";
+        $sql.= " owner_address, default_rib, label, datec, tms as datem, frstrecur";
         $sql.= " FROM ".MAIN_DB_PREFIX."societe_rib";
         if ($id)    $sql.= " WHERE rowid = ".$id;
         if ($socid) $sql.= " WHERE fk_soc  = ".$socid." AND default_rib = 1";
@@ -207,6 +199,7 @@ class CompanyBankAccount extends Account
                 $this->default_rib     = $obj->default_rib;
                 $this->datec           = $this->db->jdate($obj->datec);
                 $this->datem           = $this->db->jdate($obj->datem);
+                $this->frstrecur       = $obj->frstrecur;
             }
             $this->db->free($resql);
 
diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php
index 18bfea5fb0c9cef4db82949c4a30bee76ea483bf..4d55732b801b9462ee83b2432025f5dddf61ddfb 100644
--- a/htdocs/societe/class/societe.class.php
+++ b/htdocs/societe/class/societe.class.php
@@ -59,6 +59,7 @@ class Societe extends CommonObject
      * Thirdparty name
      * @var string
      * @deprecated Use $name instead
+     * @see name
      */
     public $nom;
 
@@ -83,23 +84,26 @@ class Societe extends CommonObject
     var $state_id;
     var $state_code;
     var $state;
-    
+
     /**
-     * State code 
+     * State code
      * @var string
      * @deprecated Use state_code instead
+     * @see state_code
      */
     var $departement_code;
-    
+
     /**
      * @var string
      * @deprecated Use state instead
+     * @see state
      */
     var $departement;
 
     /**
      * @var string
      * @deprecated Use country instead
+     * @see country
      */
     var $pays;
     var $country_id;
@@ -298,6 +302,7 @@ class Societe extends CommonObject
     /**
      * @var string
      * @deprecated Note is split in public and private notes
+     * @see note_public, note_private
      */
     var $note;
 
@@ -312,6 +317,7 @@ class Societe extends CommonObject
      * @var string
      */
     var $note_public;
+
     //! code statut prospect
     var $stcomm_id;
     var $statut_commercial;
@@ -1039,7 +1045,7 @@ class Societe extends CommonObject
             $num=$this->db->num_rows($resql);
             if ($num > 1)
             {
-                $this->error='Fetch several records found for ref='.$ref;
+                $this->error='Fetch several records found request';
                 dol_syslog($this->error, LOG_ERR);
                 $result = -2;
             }
@@ -1296,13 +1302,15 @@ class Societe extends CommonObject
      *    Delete a third party from database and all its dependencies (contacts, rib...)
      *
      *    @param	int		$id             Id of third party to delete
-     *    @param    User    $user           User who ask to delete thirparty
+     *    @param    User    $fuser          User who ask to delete thirparty
      *    @param    int		$call_trigger   0=No, 1=yes
-     *    @return	int				<0 if KO, 0 if nothing done, >0 if OK
+     *    @return	int						<0 if KO, 0 if nothing done, >0 if OK
      */
-    function delete($id, $user='', $call_trigger=1)
+    function delete($id, User $fuser=null, $call_trigger=1)
     {
-        global $langs, $conf;
+        global $langs, $conf, $user;
+
+        if (empty($fuser)) $fuser=$user;
 
         require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
 
@@ -1318,10 +1326,10 @@ class Societe extends CommonObject
             $this->db->begin();
 
             // User is mandatory for trigger call
-            if ($user && $call_trigger)
+            if ($call_trigger)
             {
                 // Call trigger
-                $result=$this->call_trigger('COMPANY_DELETE',$user);
+                $result=$this->call_trigger('COMPANY_DELETE',$fuser);
                 if ($result < 0) $error++;
                 // End call triggers
             }
@@ -1446,7 +1454,8 @@ class Societe extends CommonObject
                 return 1;
             }
             else
-            {
+			{
+				dol_syslog($this->error, LOG_ERR);
                 $this->db->rollback();
                 return -1;
             }
@@ -1762,7 +1771,8 @@ class Societe extends CommonObject
 
         if (! empty($conf->dol_no_mouse_hover)) $notooltip=1;
 
-		if ($conf->global->SOCIETE_ADD_REF_IN_LIST && (!empty($withpicto))) {
+		if ($conf->global->SOCIETE_ADD_REF_IN_LIST && (!empty($withpicto)))
+		{
 			if (($this->client) && (! empty ( $this->code_client ))) {
 				$code = $this->code_client . ' - ';
 			}
@@ -1834,7 +1844,7 @@ class Societe extends CommonObject
 
         if ($withpicto) $result.=($link.img_object(($notooltip?'':$label), 'company', ($notooltip?'':'class="classfortooltip"')).$linkend);
         if ($withpicto && $withpicto != 2) $result.=' ';
-        $result.=$link.($maxlen?dol_trunc($name,$maxlen):$name).$linkend;
+        if ($withpicto != 2) $result.=$link.($maxlen?dol_trunc($name,$maxlen):$name).$linkend;
 
         return $result;
     }
@@ -2803,7 +2813,7 @@ class Societe extends CommonObject
         if (empty($name)) $name=$member->getFullName($langs);
 
         // Positionne parametres
-        $this->nom=$name;				// TODO obsolete
+        $this->nom=$name;				// TODO deprecated
         $this->name=$name;
         $this->address=$member->address;
         $this->zip=$member->zip;
diff --git a/htdocs/societe/price.php b/htdocs/societe/price.php
index 0932144a86059f2c2c7aa3095be054b90fd57ba3..500612d48ed137780e867e530ee6f321c77241ca 100644
--- a/htdocs/societe/price.php
+++ b/htdocs/societe/price.php
@@ -254,7 +254,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) {
 		print $langs->trans('PriceBase');
 		print '</td>';
 		print '<td>';
-		print $form->select_PriceBaseType($object->price_base_type, "price_base_type");
+		print $form->selectPriceBaseType($object->price_base_type, "price_base_type");
 		print '</td>';
 		print '</tr>';
 
@@ -332,7 +332,7 @@ if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) {
 		print $langs->trans('PriceBase');
 		print '</td>';
 		print '<td>';
-		print $form->select_PriceBaseType($prodcustprice->price_base_type, "price_base_type");
+		print $form->selectPriceBaseType($prodcustprice->price_base_type, "price_base_type");
 		print '</td>';
 		print '</tr>';
 
diff --git a/htdocs/societe/rib.php b/htdocs/societe/rib.php
index 5bb3710c7b54de7a9f4d4655a9765f19407f482a..d9b7df8153f0a325179d7fbdacba780766603e1e 100644
--- a/htdocs/societe/rib.php
+++ b/htdocs/societe/rib.php
@@ -77,6 +77,7 @@ if ($action == 'update' && ! $_POST["cancel"])
 	$account->domiciliation   = $_POST["domiciliation"];
 	$account->proprio         = $_POST["proprio"];
 	$account->owner_address   = $_POST["owner_address"];
+	$account->frstrecur       = GETPOST('frstrecur');
 
 	$result = $account->update($user);
 	if (! $result)
@@ -135,11 +136,12 @@ if ($action == 'add' && ! $_POST["cancel"])
 	    $account->domiciliation   = $_POST["domiciliation"];
 	    $account->proprio         = $_POST["proprio"];
 	    $account->owner_address   = $_POST["owner_address"];
-
+		$account->frstrecur       = GETPOST('frstrecur');
+		
 	    $result = $account->update($user);	// TODO Use create and include update into create method
 	    if (! $result)
 	    {
-		    setEventMessage($account->error, 'errors');
+		    setEventMessages($account->error, $account->errors, 'errors');
 	        $_GET["action"]='create';     // Force chargement page création
 	    }
 	    else
@@ -155,7 +157,8 @@ if ($action == 'setasdefault')
 {
     $account = new CompanyBankAccount($db);
     $res = $account->setAsDefault(GETPOST('ribid','int'));
-    if ($res) {
+    if ($res) 
+    {
         $url=DOL_URL_ROOT.'/societe/rib.php?socid='.$soc->id;
         header('Location: '.$url);
         exit;
@@ -199,7 +202,6 @@ llxHeader();
 
 $head=societe_prepare_head2($soc);
 
-dol_fiche_head($head, 'rib', $langs->trans("ThirdParty"),0,'company');
 
 $account = new CompanyBankAccount($db);
 if (! $id)
@@ -209,16 +211,27 @@ else
 if (empty($account->socid)) $account->socid=$soc->id;
 
 
+if ($socid && $action == 'edit' && $user->rights->societe->creer)
+{
+    print '<form action="rib.php?socid='.$soc->id.'" method="post">';
+    print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
+    print '<input type="hidden" name="action" value="update">';
+    print '<input type="hidden" name="id" value="'.$_GET["id"].'">';
+}
+if ($socid && $action == 'create' && $user->rights->societe->creer)
+{
+    print '<form action="rib.php?socid='.$soc->id.'" method="post">';
+    print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
+    print '<input type="hidden" name="action" value="add">';
+}
 
-/* ************************************************************************** */
-/*                                                                            */
-/* Visu et edition                                                            */
-/*                                                                            */
-/* ************************************************************************** */
 
+// View
 if ($socid && $action != 'edit' && $action != "create")
 {
-    // Confirm delete third party
+	dol_fiche_head($head, 'rib', $langs->trans("ThirdParty"),0,'company');
+	
+	// Confirm delete third party
     if ($action == 'delete')
     {
         print $form->formconfirm($_SERVER["PHP_SELF"]."?socid=".$soc->id."&ribid=".($ribid?$ribid:$id), $langs->trans("DeleteARib"), $langs->trans("ConfirmDeleteRib", $account->getRibLabel()), "confirm_delete", '', 0, 1);
@@ -228,10 +241,10 @@ if ($socid && $action != 'edit' && $action != "create")
 
     print '<table class="border" width="100%">';
 
-    print '<tr><td>'.$langs->trans("LabelRIB").'</td>';
+    print '<tr><td width="35%">'.$langs->trans("LabelRIB").'</td>';
     print '<td colspan="4">'.$account->label.'</td></tr>';
 
-	print '<tr><td valign="top" width="35%">'.$langs->trans("BankName").'</td>';
+	print '<tr><td valign="top">'.$langs->trans("BankName").'</td>';
 	print '<td colspan="4">'.$account->bank.'</td></tr>';
 
 	// Show fields of bank account
@@ -361,6 +374,7 @@ if ($socid && $action != 'edit' && $action != "create")
         if (! empty($conf->prelevement->enabled))
         {
 			print '<td>RUM</td>';
+			print '<td>'.$langs->trans("WithdrawMode").'</td>';
         }
         print_liste_field_titre($langs->trans("DefaultRIB"), '', '', '', '', 'align="center"');
         print '<td width="40"></td>';
@@ -383,6 +397,8 @@ if ($socid && $action != 'edit' && $action != "create")
             if (! empty($conf->prelevement->enabled))
             {
 				print '<td>'.$prelevement->buildRumNumber($soc->code_client, $rib->datec, $rib->id).'</td>';
+				
+				print '<td>'.$rib->frstrecur.'</td>';
             }
 
             // Default
@@ -410,16 +426,14 @@ if ($socid && $action != 'edit' && $action != "create")
            		print img_picto($langs->trans("Delete"),'delete');
            		print '</a>';
             }
-
-            print '</td>';
-            print '</tr>';
-            $var = !$var;
+        	print '</td>';
+	        print '</tr>';
         }
-
+        
         if (count($rib_list) == 0) 
         {
         	$colspan=7;
-        	if (! empty($conf->prelevement->enabled)) $colspan++;
+        	if (! empty($conf->prelevement->enabled)) $colspan+=2;
             print '<tr '.$bc[0].'><td colspan="'.$colspan.'" align="center">'.$langs->trans("NoBANRecord").'</td></tr>';
         }
 
@@ -427,22 +441,16 @@ if ($socid && $action != 'edit' && $action != "create")
     } else {
         dol_print_error($db);
     }
+    
+    dol_fiche_end();
 }
 
-/* ************************************************************************** */
-/*                                                                            */
-/* Edition                                                                    */
-/*                                                                            */
-/* ************************************************************************** */
-
+// Edit
 if ($socid && $action == 'edit' && $user->rights->societe->creer)
 {
-    print '<form action="rib.php?socid='.$soc->id.'" method="post">';
-    print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
-    print '<input type="hidden" name="action" value="update">';
-    print '<input type="hidden" name="id" value="'.$_GET["id"].'">';
-
-    print '<table class="border" width="100%">';
+	dol_fiche_head($head, 'rib', $langs->trans("ThirdParty"),0,'company');
+	
+	print '<table class="border" width="100%">';
 
     print '<tr><td valign="top" width="35%" class="fieldrequired">'.$langs->trans("LabelRIB").'</td>';
     print '<td colspan="4"><input size="30" type="text" name="label" value="'.$account->label.'"></td></tr>';
@@ -533,30 +541,39 @@ if ($socid && $action == 'edit' && $user->rights->societe->creer)
     print $account->owner_address;
     print "</textarea></td></tr>";
 
-    print '</table><br>';
+    print '</table>';
 
-    print '<div align="center">';
+    if ($conf->prelevement->enabled)
+    {
+		print '<br>';
+		
+    	print '<table class="border" width="100%">';
+
+    	print '<tr><td width="35%">'.$langs->trans("RUM").'</td>';
+	    print '<td colspan="4">'.$account->rum.'</td></tr>';
+	    
+	    print '<tr><td width="35%">'.$langs->trans("WithdrawMode").'</td>';
+	    print '<td colspan="4"><input size="30" type="text" name="frstrecur" value="'.(GETPOST('frstrecur')?GETPOST('frstrecur'):$account->frstrecur).'"></td></tr>';
+	    
+	    print '</table>';
+    }
+    
+	dol_fiche_end();
+    
+	print '<div align="center">';
 	print '<input class="button" value="'.$langs->trans("Modify").'" type="submit">';
     print '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
 	print '<input class="button" name="cancel" value="'.$langs->trans("Cancel").'" type="submit">';
     print '</div>';
-
-    print '</form>';
 }
 
 
-/* ************************************************************************** */
-/*                                                                            */
-/* Création                                                                   */
-/*                                                                            */
-/* ************************************************************************** */
-
+// Create
 if ($socid && $action == 'create' && $user->rights->societe->creer)
 {
-    print '<form action="rib.php?socid='.$soc->id.'" method="post">';
-    print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
-    print '<input type="hidden" name="action" value="add">';
-    print '<table class="border" width="100%">';
+	dol_fiche_head($head, 'rib', $langs->trans("ThirdParty"),0,'company');
+	
+	print '<table class="border" width="100%">';
 
 
     print '<tr><td valign="top" width="35%" class="fieldrequired">'.$langs->trans("LabelRIB").'</td>';
@@ -615,19 +632,41 @@ if ($socid && $action == 'create' && $user->rights->societe->creer)
     print GETPOST('owner_address');
     print "</textarea></td></tr>";
 
-    print '</table><br>';
-
-    print '<div align="center">';
+    print '</table>';
+    
+    if ($conf->prelevement->enabled)
+    {
+		print '<br>';
+		
+    	print '<table class="border" width="100%">';
+
+    	print '<tr><td width="35%">'.$langs->trans("RUM").'</td>';
+	    print '<td colspan="4">'.$langs->trans("RUMWillBeGenerated").'</td></tr>';
+	    
+	    print '<tr><td width="35%">'.$langs->trans("WithdrawMode").'</td>';
+	    print '<td colspan="4"><input size="30" type="text" name="frstrecur" value="'.(isset($_POST['frstrecur'])?GETPOST('frstrecur'):'FRST').'"></td></tr>';
+	    
+	    print '</table>';
+    }
+    
+	dol_fiche_end();
+    
+	print '<div align="center">';
 	print '<input class="button" value="'.$langs->trans("Add").'" type="submit">';
     print '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'; 
 	print '<input name="cancel" class="button" value="'.$langs->trans("Cancel").'" type="submit">';
     print '</div>';
-
-    print '</form>';
 }
 
+if ($socid && $action == 'edit' && $user->rights->societe->creer)
+{
+	print '</form>';
+}
+if ($socid && $action == 'create' && $user->rights->societe->creer)
+{
+	print '</form>';
+}
 
-dol_fiche_end();
 
 
 if ($socid && $action != 'edit' && $action != 'create')
diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php
index b26e6766a4e7c64f9192ff0f41a86e7e3acf36ec..e4098332e64b179c4dc4fc4c638ecf0bdb8db6c6 100644
--- a/htdocs/societe/soc.php
+++ b/htdocs/societe/soc.php
@@ -1,13 +1,13 @@
 <?php
 /* Copyright (C) 2001-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
  * Copyright (C) 2003      Brian Fraval         <brian@fraval.org>
- * Copyright (C) 2004-2014 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2004-2015 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C) 2005      Eric Seigne          <eric.seigne@ryxeo.com>
  * Copyright (C) 2005-2012 Regis Houssin        <regis.houssin@capnetworks.com>
  * Copyright (C) 2008      Patrick Raguin       <patrick.raguin@auguria.net>
  * Copyright (C) 2010-2014 Juanjo Menent        <jmenent@2byte.es>
  * Copyright (C) 2011-2013 Alexandre Spangaro   <alexandre.spangaro@gmail.com>
- * Copyright (C) 2015       Jean-François Ferry		<jfefe@aternatik.fr>
+ * Copyright (C) 2015      Jean-François Ferry  <jfefe@aternatik.fr>
  * Copyright (C) 2015      Marcos García        <marcosgdf@gmail.com>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -40,6 +40,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
 require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
 require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php';
+require_once DOL_DOCUMENT_ROOT . '/categories/class/categorie.class.php';
 if (! empty($conf->adherent->enabled)) require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
 
 $langs->load("companies");
@@ -97,22 +98,29 @@ if (empty($reshook))
 {
 	if ($action == 'confirm_merge' && $confirm == 'yes')
 	{
+		$object->fetch($socid);
+
 		$errors = 0;
 		$soc_origin_id = GETPOST('soc_origin', 'int');
 		$soc_origin = new Societe($db);
 
-		if ($soc_origin_id < 1) {
+		if ($soc_origin_id < 1)
+		{
 			$langs->load('errors');
 			$langs->load('companies');
 			setEventMessage($langs->trans('ErrorProdIdIsMandatory', $langs->trans('MergeOriginThirdparty')), 'errors');
-		} else {
+		}
+		else
+		{
 
-			if (!$errors && $soc_origin->fetch($soc_origin_id) < 1) {
+			if (!$errors && $soc_origin->fetch($soc_origin_id) < 1)
+			{
 				setEventMessage($langs->trans('ErrorRecordNotFound'), 'errors');
 				$errors++;
 			}
 
-			if (!$errors) {
+			if (!$errors)
+			{
 				$db->begin();
 
 				$objects = array(
@@ -140,13 +148,13 @@ if (empty($reshook))
 				);
 
 				//First, all core objects must update their tables
-				foreach ($objects as $object_name => $object_file) {
-
+				foreach ($objects as $object_name => $object_file)
+				{
 					require_once DOL_DOCUMENT_ROOT.$object_file;
 
-					if (!$errors && !$object_name::replaceThirdparty($db, $soc_origin->id, $object->id)) {
+					if (!$errors && !$object_name::replaceThirdparty($db, $soc_origin->id, $object->id))
+					{
 						$errors++;
-						$db->rollback();
 					}
 				}
 
@@ -155,32 +163,37 @@ if (empty($reshook))
 					'mergethirds'
 				));
 
-				if (!$errors) {
+				if (!$errors)
+				{
 					$reshook = $hookmanager->executeHooks('replaceThirdparty', array(
 						'soc_origin' => $soc_origin->id,
 						'soc_dest' => $object->id
 					), $soc_dest, $action);
 
-					if ($reshook < 0) {
+					if ($reshook < 0)
+					{
 						setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
 						$errors++;
 					}
 				}
 
-				if (!$errors) {
+				if (!$errors)
+				{
 					//We finally remove the old thirdparty
-					if ($soc_origin->delete($soc_origin->id, $user) < 1) {
-						$db->rollback();
+					if ($soc_origin->delete($soc_origin->id, $user) < 1)
+					{
 						$errors++;
 					}
 				}
-			}
 
-			if (!$errors) {
-				setEventMessage($langs->trans('ThirdpartiesMergeSuccess'));
-				$db->commit();
-			} else {
-				setEventMessage($langs->trans('ErrorsThirdpartyMerge'), 'errors');
+				if (!$errors)
+				{
+					setEventMessage($langs->trans('ThirdpartiesMergeSuccess'));
+					$db->commit();
+				} else {
+					setEventMessage($langs->trans('ErrorsThirdpartyMerge'), 'errors');
+					$db->rollback();
+				}
 			}
 		}
 	}
@@ -229,15 +242,15 @@ if (empty($reshook))
         {
             $object->particulier       = GETPOST("private");
 
-            $object->name              = dolGetFirstLastname(GETPOST('firstname','alpha'),GETPOST('nom','alpha')?GETPOST('nom','alpha'):GETPOST('name','alpha'));
-            $object->civility_id       = GETPOST('civility_id', 'int');
+            $object->name              = dolGetFirstLastname(GETPOST('firstname','alpha'),GETPOST('name','alpha'));
+            $object->civility_id       = GETPOST('civility_id');	// Note: cibility id is a code, not an int
             // Add non official properties
-            $object->name_bis          = GETPOST('name','alpha')?GETPOST('name','alpha'):GETPOST('nom','alpha');
+            $object->name_bis          = GETPOST('name','alpha');
             $object->firstname         = GETPOST('firstname','alpha');
         }
         else
         {
-            $object->name              = GETPOST('name', 'alpha')?GETPOST('name', 'alpha'):GETPOST('nom', 'alpha');
+            $object->name              = GETPOST('name', 'alpha');
         }
         $object->address               = GETPOST('address', 'alpha');
         $object->zip                   = GETPOST('zipcode', 'alpha');
@@ -294,7 +307,11 @@ if (empty($reshook))
 		}
         // Fill array 'array_options' with data from add form
         $ret = $extrafields->setOptionalsFromPost($extralabels,$object);
-		if ($ret < 0) $error++;
+		if ($ret < 0)
+		{
+			 $error++;
+			 $action = ($action=='add'?'create':'edit');
+		}
 
         if (GETPOST('deletephoto')) $object->logo = '';
         else if (! empty($_FILES['photo']['name'])) $object->logo = dol_sanitizeFileName($_FILES['photo']['name']);
@@ -396,6 +413,16 @@ if (empty($reshook))
                         }
                     }
 
+					// Categories association
+					$custcats = GETPOST( 'custcats', 'array' );
+					if (!empty( $custcats )) {
+						$cat = new Categorie( $db );
+						foreach ($custcats as $id_category) {
+							$cat->fetch( $id_category );
+							$cat->add_type( $object, 'customer' );
+						}
+					}
+
                     // Logo/Photo save
                     $dir     = $conf->societe->multidir_output[$conf->entity]."/".$object->id."/logos/";
                     $file_OK = is_uploaded_file($_FILES['photo']['tmp_name']);
@@ -500,6 +527,22 @@ if (empty($reshook))
                     $error = $object->error; $errors = $object->errors;
                 }
 
+				// Categories association
+				// First we delete all categories association
+				$sql = 'DELETE FROM ' . MAIN_DB_PREFIX . 'categorie_societe';
+				$sql .= ' WHERE fk_soc = ' . $object->id;
+				$db->query( $sql );
+
+				// Then we add the associated categories
+				$categories = GETPOST( 'custcats', 'array' );
+				if (!empty( $categories )) {
+					$cat = new Categorie( $db );
+					foreach ($categories as $id_category) {
+						$cat->fetch( $id_category );
+						$cat->add_type( $object, 'customer' );
+					}
+				}
+
                 // Logo/Photo save
                 $dir     = $conf->societe->multidir_output[$object->entity]."/".$object->id."/logos";
                 $file_OK = is_uploaded_file($_FILES['photo']['tmp_name']);
@@ -765,7 +808,7 @@ else
         if (GETPOST("type")=='p')  { $object->client=2; }
         if (! empty($conf->fournisseur->enabled) && (GETPOST("type")=='f' || (GETPOST("type")=='' && empty($conf->global->THIRDPARTY_NOTSUPPLIER_BY_DEFAULT))))  { $object->fournisseur=1; }
 
-        $object->name				= GETPOST('nom', 'alpha');
+        $object->name				= GETPOST('name', 'alpha');
         $object->firstname			= GETPOST('firstname', 'alpha');
         $object->particulier		= $private;
         $object->prefix_comm		= GETPOST('prefix_comm');
@@ -932,14 +975,14 @@ else
 	    print '<tr><td>';
         if ($object->particulier || $private)
         {
-	        print '<span id="TypeName" class="fieldrequired"><label for="name">'.$langs->trans('LastName').'</label></span>';
+	        print '<span id="TypeName" class="fieldrequired">'.$langs->trans('LastName','name').'</span>';
         }
         else
 		{
-			print '<span span id="TypeName" class="fieldrequired"><label for="name">'.$langs->trans('ThirdPartyName').'</label></span>';
+			print '<span span id="TypeName" class="fieldrequired">'.fieldLabel('ThirdPartyName','name').'</span>';
         }
 	    print '</td><td'.(empty($conf->global->SOCIETE_USEPREFIX)?' colspan="3"':'').'>';
-	    print '<input type="text" size="60" maxlength="128" name="nom" id="name" value="'.$object->name.'" autofocus="autofocus"></td>';
+	    print '<input type="text" size="60" maxlength="128" name="name" id="name" value="'.$object->name.'" autofocus="autofocus"></td>';
 	    if (! empty($conf->global->SOCIETE_USEPREFIX))  // Old not used prefix field
 	    {
 		    print '<td>'.$langs->trans('Prefix').'</td><td><input type="text" size="5" maxlength="5" name="prefix_comm" value="'.$object->prefix_comm.'"></td>';
@@ -949,16 +992,16 @@ else
         // If javascript on, we show option individual
         if ($conf->use_javascript_ajax)
         {
-            print '<tr class="individualline"><td><label for="firstname">'.$langs->trans('FirstName').'</label></td>';
+            print '<tr class="individualline"><td>'.fieldLabel('FirstName','firstname').'</td>';
 	        print '<td><input type="text" size="60" name="firstname" id="firstname" value="'.$object->firstname.'"></td>';
             print '<td colspan=2>&nbsp;</td></tr>';
-            print '<tr class="individualline"><td><label for="civility_id">'.$langs->trans("UserTitle").'</label></td><td>';
+            print '<tr class="individualline"><td>'.fieldLabel('UserTitle','cibility_id').'</td><td>';
             print $formcompany->select_civility($object->civility_id).'</td>';
             print '<td colspan=2>&nbsp;</td></tr>';
         }
 
         // Prospect/Customer
-        print '<tr><td width="25%"><span class="fieldrequired"><label for="customerprospect">'.$langs->trans('ProspectCustomer').'</label></span></td>';
+        print '<tr><td width="25%">'.fieldLabel('ProspectCustomer','customerprospect',1).'</td>';
 	    print '<td width="25%" class="maxwidthonsmartphone"><select class="flat" name="client" id="customerprospect">';
         $selected=isset($_POST['client'])?GETPOST('client'):$object->client;
         if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS)) print '<option value="2"'.($selected==2?' selected':'').'>'.$langs->trans('Prospect').'</option>';
@@ -967,7 +1010,7 @@ else
         print '<option value="0"'.($selected==0?' selected':'').'>'.$langs->trans('NorProspectNorCustomer').'</option>';
         print '</select></td>';
 
-        print '<td width="25%"><label for="customer_code">'.$langs->trans('CustomerCode').'</label></td><td width="25%">';
+        print '<td width="25%">'.fieldLabel('CustomerCode','customer_code').'</td><td width="25%">';
         print '<table class="nobordernopadding"><tr><td>';
         $tmpcode=$object->code_client;
         if (empty($tmpcode) && ! empty($modCodeClient->code_auto)) $tmpcode=$modCodeClient->getNextValue($object,0);
@@ -982,10 +1025,10 @@ else
         {
             // Supplier
             print '<tr>';
-            print '<td><span class="fieldrequired"><label for="fournisseur">'.$langs->trans('Supplier').'</label></span></td><td>';
+            print '<td>'.fieldLabel('Supplier','fournisseur',1).'</td><td>';
             print $form->selectyesno("fournisseur",(isset($_POST['fournisseur'])?GETPOST('fournisseur'):$object->fournisseur),1);
             print '</td>';
-            print '<td><label for="supplier_code">'.$langs->trans('SupplierCode').'</label></td><td>';
+            print '<td>'.fieldLabel('SupplierCode','supplier_code').'</td><td>';
             print '<table class="nobordernopadding"><tr><td>';
             $tmpcode=$object->code_fournisseur;
             if (empty($tmpcode) && ! empty($modCodeFournisseur->code_auto)) $tmpcode=$modCodeFournisseur->getNextValue($object,1);
@@ -998,33 +1041,33 @@ else
         }
 
         // Status
-        print '<tr><td><label for="status">'.$langs->trans('Status').'</label></td><td colspan="3">';
+        print '<tr><td>'.fieldLabel('Status','status').'</td><td colspan="3">';
         print $form->selectarray('status', array('0'=>$langs->trans('ActivityCeased'),'1'=>$langs->trans('InActivity')),1);
         print '</td></tr>';
 
         // Barcode
         if (! empty($conf->barcode->enabled))
         {
-            print '<tr><td><label for="barcode">'.$langs->trans('Gencod').'</label></td>';
+            print '<tr><td>'.fieldLabel('Gencod','barcode').'</td>';
 	        print '<td colspan="3"><input type="text" name="barcode" id="barcode" value="'.$object->barcode.'">';
             print '</td></tr>';
         }
 
         // Address
-        print '<tr><td valign="top"><label for="address">'.$langs->trans('Address').'</label></td>';
+        print '<tr><td class="tdtop">'.fieldLabel('Address','address').'</td>';
 	    print '<td colspan="3"><textarea name="address" id="address" cols="80" rows="'._ROWS_2.'" wrap="soft">';
         print $object->address;
         print '</textarea></td></tr>';
 
         // Zip / Town
-        print '<tr><td><label for="zipcode">'.$langs->trans('Zip').'</label></td><td>';
+        print '<tr><td>'.fieldLabel('Zip','zipcode').'</td><td>';
         print $formcompany->select_ziptown($object->zip,'zipcode',array('town','selectcountry_id','state_id'),6);
-        print '</td><td><label for="town">'.$langs->trans('Town').'</label></td><td>';
+        print '</td><td>'.fieldLabel('Town','town').'</td><td>';
         print $formcompany->select_ziptown($object->town,'town',array('zipcode','selectcountry_id','state_id'));
         print '</td></tr>';
 
         // Country
-        print '<tr><td width="25%"><label for="selectcountry_id">'.$langs->trans('Country').'</label></td><td colspan="3" class="maxwidthonsmartphone">';
+        print '<tr><td width="25%">'.fieldLabel('Country','selectcountry_id').'</td><td colspan="3" class="maxwidthonsmartphone">';
         print $form->select_country((GETPOST('country_id')!=''?GETPOST('country_id'):$object->country_id));
         if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
         print '</td></tr>';
@@ -1032,29 +1075,29 @@ else
         // State
         if (empty($conf->global->SOCIETE_DISABLE_STATE))
         {
-            print '<tr><td><label for="state_id">'.$langs->trans('State').'</label></td><td colspan="3" class="maxwidthonsmartphone">';
+            print '<tr><td>'.fieldLabel('State','state_id').'</td><td colspan="3" class="maxwidthonsmartphone">';
             if ($object->country_id) print $formcompany->select_state($object->state_id,$object->country_code);
             else print $countrynotdefined;
             print '</td></tr>';
         }
 
         // Email web
-        print '<tr><td><label for="email">'.$langs->trans('EMail').(! empty($conf->global->SOCIETE_MAIL_REQUIRED)?'*':'').'</label></td>';
+        print '<tr><td>'.fieldLabel('EMail','email').(! empty($conf->global->SOCIETE_MAIL_REQUIRED)?'*':'').'</td>';
 	    print '<td colspan="3"><input type="text" name="email" id="email" size="32" value="'.$object->email.'"></td></tr>';
-        print '<tr><td><label for="url">'.$langs->trans('Web').'</label></td>';
+        print '<tr><td>'.fieldLabel('Web','url').'</td>';
 	    print '<td colspan="3"><input type="text" name="url" id="url" size="32" value="'.$object->url.'"></td></tr>';
 
         // Skype
         if (! empty($conf->skype->enabled))
         {
-            print '<tr><td><label for="skype">'.$langs->trans('Skype').'</label></td>';
+            print '<tr><td>'.fieldLabel('Skype','skype').'</td>';
 	        print '<td colspan="3"><input type="text" name="skype" id="skype" size="32" value="'.$object->skype.'"></td></tr>';
         }
 
         // Phone / Fax
-        print '<tr><td><label for="phone">'.$langs->trans('Phone').'</label></td>';
+        print '<tr><td>'.fieldLabel('Phone','phone').'</td>';
 	    print '<td><input type="text" name="phone" id="phone" value="'.$object->phone.'"></td>';
-        print '<td><label for="fax">'.$langs->trans('Fax').'</label></td>';
+        print '<td>'.fieldLabel('Fax','fax').'</td>';
 	    print '<td><input type="text" name="fax" id="fax" value="'.$object->fax.'"></td></tr>';
 
         // Prof ids
@@ -1070,9 +1113,9 @@ else
 
                 $idprof_mandatory ='SOCIETE_IDPROF'.($i).'_MANDATORY';
                	if(empty($conf->global->$idprof_mandatory))
-                	print '<td><label for="'.$key.'">'.$idprof.'</label></td><td>';
+                	print '<td>'.fieldLabel($idprof,$key).'</td><td>';
                 else
-                    print '<td><span class="fieldrequired"><label for="'.$key.'">'.$idprof.'</label></td><td>';
+                    print '<td>'.fieldLabel($idprof,$key,1).'</td><td>';
 
                 print $formcompany->get_input_id_prof($i,$key,$object->$key,$object->country_code);
                 print '</td>';
@@ -1084,11 +1127,11 @@ else
         if ($j % 2 == 1) print '<td colspan="2"></td></tr>';
 
         // Assujeti TVA
-        print '<tr><td><label for="assujtva_value">'.$langs->trans('VATIsUsed').'</label></td>';
+        print '<tr><td>'.fieldLabel('VATIsUsed','assujtva_value').'</td>';
         print '<td>';
         print $form->selectyesno('assujtva_value',1,1);     // Assujeti par defaut en creation
         print '</td>';
-        print '<td class="nowrap"><label for="intra_vat">'.$langs->trans('VATIntra').'</label></td>';
+        print '<td class="nowrap">'.fieldLabel('VATIntra','inra_vat').'</td>';
         print '<td class="nowrap">';
         $s = '<input type="text" class="flat" name="tva_intra" id="intra_vat" size="12" maxlength="20" value="'.$object->tva_intra.'">';
 
@@ -1118,21 +1161,21 @@ else
         print '</tr>';
 
         // Type - Size
-        print '<tr><td><label for="typent_id">'.$langs->trans("ThirdPartyType").'</label></td><td>'."\n";
+        print '<tr><td>'.fieldLabel('ThirdPartyType','typent_id').'</td><td>'."\n";
         print $form->selectarray("typent_id", $formcompany->typent_array(0), $object->typent_id, 0, 0, 0, '', 0, 0, 0, (empty($conf->global->SOCIETE_SORT_ON_TYPEENT)?'ASC':$conf->global->SOCIETE_SORT_ON_TYPEENT));
-        if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
+        if ($user->admin) print ' '.info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
         print '</td>';
-        print '<td><label for="effectif_id">'.$langs->trans("Staff").'</label></td><td>';
+        print '<td>'.fieldLabel('Staff','effectif_id').'</td><td>';
         print $form->selectarray("effectif_id", $formcompany->effectif_array(0), $object->effectif_id);
-        if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
+        if ($user->admin) print ' '.info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
         print '</td></tr>';
 
         // Legal Form
-        print '<tr><td><label for="legal_form">'.$langs->trans('JuridicalStatus').'</label></td>';
+        print '<tr><td>'.fieldLabel('JuridicalStatus','legal_form').'</td>';
         print '<td colspan="3" class="maxwidthonsmartphone">';
         if ($object->country_id)
         {
-            print $formcompany->select_juridicalstatus($object->forme_juridique_code,$object->country_code);
+            print $formcompany->select_juridicalstatus($object->forme_juridique_code, $object->country_code, '', 'legal_form');
         }
         else
         {
@@ -1141,7 +1184,7 @@ else
         print '</td></tr>';
 
         // Capital
-        print '<tr><td><label for="capital">'.$langs->trans('Capital').'</label></td>';
+        print '<tr><td>'.fieldLabel('Capital','capital').'</td>';
 	    print '<td colspan="3"><input type="text" name="capital" id="capital" size="10" value="'.$object->capital.'"> ';
         print '<span class="hideonsmartphone">'.$langs->trans("Currency".$conf->currency).'</span></td></tr>';
 
@@ -1171,7 +1214,7 @@ else
 
         if (! empty($conf->global->MAIN_MULTILANGS))
         {
-            print '<tr><td><label for="default_lang">'.$langs->trans("DefaultLang").'</label></td><td colspan="3" class="maxwidthonsmartphone">'."\n";
+            print '<tr><td>'.fieldLabel('DefaultLang','default_lang').'</td><td colspan="3" class="maxwidthonsmartphone">'."\n";
             print $formadmin->select_language(($object->default_lang?$object->default_lang:$conf->global->MAIN_LANG_DEFAULT),'default_lang',0,0,1);
             print '</td>';
             print '</tr>';
@@ -1181,7 +1224,7 @@ else
         {
             // Assign a Name
             print '<tr>';
-            print '<td><label for="commercial_id">'.$langs->trans("AllocateCommercial").'</label></td>';
+            print '<td>'.fieldLabel('AllocateCommercial','commercial_id').'</td>';
             print '<td colspan="3" class="maxwidthonsmartphone">';
             $form->select_users((! empty($object->commercial_id)?$object->commercial_id:$user->id),'commercial_id',1); // Add current user by default
             print '</td></tr>';
@@ -1191,12 +1234,21 @@ else
 		if (!empty($conf->incoterm->enabled))
 		{
 			print '<tr>';
-			print '<td><label for="incoterm_id">'.$langs->trans("IncotermLabel").'</label></td>';
+			print '<td>'.fieldLabel('IncotermLabel','incoterm_id').'</td>';
 	        print '<td colspan="3" class="maxwidthonsmartphone">';
 	        print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms)?$object->location_incoterms:''));
 			print '</td></tr>';
 		}
 
+		// Categories
+	    if (! empty($conf->categorie->enabled)  && ! empty($user->rights->categorie->lire))
+	    {
+			print '<tr><td class="toptd">'.fieldLabel('Categories','custcats').'</td><td colspan="3">';
+			$cate_arbo = $form->select_all_categories(Categorie::TYPE_CUSTOMER, null, 'parent', null, null, 1);
+			print $form->multiselectarray('custcats', $cate_arbo, GETPOST('custcats', 'array'), null, null, null, null, "90%");
+			print "</td></tr>";
+	    }
+
         // Other attributes
         $parameters=array('colspan' => ' colspan="3"', 'colspanvalue' => '3');
         $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action);    // Note that $action and $object may have been modified by hook
@@ -1207,7 +1259,7 @@ else
 
         // Ajout du logo
         print '<tr class="hideonsmartphone">';
-        print '<td><label for="photoinput">'.$langs->trans("Logo").'</label></td>';
+        print '<td>'.fieldLabel('Logo','photoinput').'</td>';
         print '<td colspan="3">';
         print '<input class="flat" type="file" name="photo" id="photoinput" />';
         print '</td>';
@@ -1279,10 +1331,10 @@ else
 
             $object->oldcopy=dol_clone($object);
 
-            if (GETPOST('nom'))
+            if (GETPOST('name'))
             {
                 // We overwrite with values if posted
-                $object->name					= GETPOST('nom', 'alpha');
+                $object->name					= GETPOST('name', 'alpha');
                 $object->prefix_comm			= GETPOST('prefix_comm', 'alpha');
                 $object->client					= GETPOST('client', 'int');
                 $object->code_client			= GETPOST('code_client', 'alpha');
@@ -1412,13 +1464,13 @@ else
             print '<table class="border" width="100%">';
 
             // Name
-            print '<tr><td><label for="name"><span class="fieldrequired">'.$langs->trans('ThirdPartyName').'</span></label></td>';
-	        print '<td colspan="3"><input type="text" size="60" maxlength="128" name="nom" id="name" value="'.dol_escape_htmltag($object->name).'" autofocus="autofocus"></td></tr>';
+            print '<tr><td>'.fieldLabel('ThirdPartyName','name',1).'</td>';
+	        print '<td colspan="3"><input type="text" size="60" maxlength="128" name="name" id="name" value="'.dol_escape_htmltag($object->name).'" autofocus="autofocus"></td></tr>';
 
             // Prefix
             if (! empty($conf->global->SOCIETE_USEPREFIX))  // Old not used prefix field
             {
-                print '<tr><td><label for="prefix">'.$langs->trans("Prefix").'</label></td><td colspan="3">';
+                print '<tr><td>'.fieldLabel('Prefix','prefix').'</td><td colspan="3">';
                 // It does not change the prefix mode using the auto numbering prefix
                 if (($prefixCustomerIsUsed || $prefixSupplierIsUsed) && $object->prefix_comm)
                 {
@@ -1433,14 +1485,14 @@ else
             }
 
             // Prospect/Customer
-            print '<tr><td width="25%"><span class="fieldrequired"><label for="customerprospect">'.$langs->trans('ProspectCustomer').'</label></span></td>';
+            print '<tr><td width="25%">'.fieldLabel('ProspectCustomer','customerprospect',1).'</td>';
 	        print '<td width="25%"><select class="flat" name="client" id="customerprospect">';
             if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS)) print '<option value="2"'.($object->client==2?' selected':'').'>'.$langs->trans('Prospect').'</option>';
             if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) print '<option value="3"'.($object->client==3?' selected':'').'>'.$langs->trans('ProspectCustomer').'</option>';
             if (empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) print '<option value="1"'.($object->client==1?' selected':'').'>'.$langs->trans('Customer').'</option>';
             print '<option value="0"'.($object->client==0?' selected':'').'>'.$langs->trans('NorProspectNorCustomer').'</option>';
             print '</select></td>';
-            print '<td width="25%"><label for="customer_code">'.$langs->trans('CustomerCode').'</label></td><td width="25%">';
+            print '<td width="25%">'.fieldLabel('CustomerCode','customer_code').'</td><td width="25%">';
 
             print '<table class="nobordernopadding"><tr><td>';
             if ((!$object->code_client || $object->code_client == -1) && $modCodeClient->code_auto)
@@ -1470,10 +1522,10 @@ else
             if (! empty($conf->fournisseur->enabled) && ! empty($user->rights->fournisseur->lire))
             {
                 print '<tr>';
-                print '<td><span class="fieldrequired"><label for="fournisseur">'.$langs->trans('Supplier').'</label></span></td><td>';
+                print '<td>'.fieldLabel('Supplier','fournisseur',1).'</td><td>';
                 print $form->selectyesno("fournisseur",$object->fournisseur,1);
                 print '</td>';
-                print '<td><label for="supplier_code">'.$langs->trans('SupplierCode').'</label></td><td>';
+                print '<td>'.fieldLabel('SupplierCode','supplier_code').'</td><td>';
 
                 print '<table class="nobordernopadding"><tr><td>';
                 if ((!$object->code_fournisseur || $object->code_fournisseur == -1) && $modCodeFournisseur->code_auto)
@@ -1503,31 +1555,31 @@ else
             // Barcode
             if (! empty($conf->barcode->enabled))
             {
-                print '<tr><td valign="top"><label for="barcode">'.$langs->trans('Gencod').'</label></td>';
+                print '<tr><td class="tdtop">'.fieldLabel('Gencod','barcode').'</td>';
 	            print '<td colspan="3"><input type="text" name="barcode" id="barcode" value="'.$object->barcode.'">';
                 print '</td></tr>';
             }
 
             // Status
-            print '<tr><td><label for="status">'.$langs->trans("Status").'</label></td><td colspan="3">';
+            print '<tr><td>'.fieldLabel('Status','status').'</td><td colspan="3">';
             print $form->selectarray('status', array('0'=>$langs->trans('ActivityCeased'),'1'=>$langs->trans('InActivity')),$object->status);
             print '</td></tr>';
 
             // Address
-            print '<tr><td valign="top"><label for="address">'.$langs->trans('Address').'</label></td>';
-	        print '<td colspan="3"><textarea name="address" id="address" cols="40" rows="3" wrap="soft">';
+            print '<tr><td class="tdtop">'.fieldLabel('Address','address').'</td>';
+	        print '<td colspan="3"><textarea name="address" id="address" cols="80" rows="3" wrap="soft">';
             print $object->address;
             print '</textarea></td></tr>';
 
             // Zip / Town
-            print '<tr><td><label for="zipcode">'.$langs->trans('Zip').'</label></td><td>';
+            print '<tr><td>'.fieldLabel('Zip','zipcode').'</td><td>';
             print $formcompany->select_ziptown($object->zip,'zipcode',array('town','selectcountry_id','state_id'),6);
-            print '</td><td><label for="town">'.$langs->trans('Town').'</label></td><td>';
+            print '</td><td>'.fieldLabel('Town','town').'</td><td>';
             print $formcompany->select_ziptown($object->town,'town',array('zipcode','selectcountry_id','state_id'));
             print '</td></tr>';
 
             // Country
-            print '<tr><td><label for="selectcountry_id">'.$langs->trans('Country').'</label></td><td colspan="3">';
+            print '<tr><td>'.fieldLabel('Country','selectcounty_id').'</td><td colspan="3">';
             print $form->select_country((GETPOST('country_id')!=''?GETPOST('country_id'):$object->country_id),'country_id');
             if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
             print '</td></tr>';
@@ -1535,28 +1587,28 @@ else
             // State
             if (empty($conf->global->SOCIETE_DISABLE_STATE))
             {
-                print '<tr><td><label for="state_id">'.$langs->trans('State').'</label></td><td colspan="3">';
+                print '<tr><td>'.fieldLabel('State','state_id').'</td><td colspan="3">';
                 print $formcompany->select_state($object->state_id,$object->country_code);
                 print '</td></tr>';
             }
 
             // EMail / Web
-            print '<tr><td><label for="email">'.$langs->trans('EMail').(! empty($conf->global->SOCIETE_MAIL_REQUIRED)?'*':'').'</label></td>';
+            print '<tr><td>'.fieldLabel('EMail','email',(! empty($conf->global->SOCIETE_MAIL_REQUIRED))).'</td>';
 	        print '<td colspan="3"><input type="text" name="email" id="email" size="32" value="'.$object->email.'"></td></tr>';
-            print '<tr><td><label for="url">'.$langs->trans('Web').'</label></td>';
+            print '<tr><td>'.fieldLabel('Web','url').'</td>';
 	        print '<td colspan="3"><input type="text" name="url" id="url" size="32" value="'.$object->url.'"></td></tr>';
 
             // Skype
             if (! empty($conf->skype->enabled))
             {
-                print '<tr><td><label for="skype">'.$langs->trans('Skype').'</label></td>';
+                print '<tr><td>'.fieldLabel('Skype','skype').'</td>';
 	            print '<td colspan="3"><input type="text" name="skype" id="skype" size="32" value="'.$object->skype.'"></td></tr>';
             }
 
             // Phone / Fax
-            print '<tr><td><label for="phone">'.$langs->trans('Phone').'</label></td>';
+            print '<tr><td>'.fieldLabel('Phone','phone').'</td>';
 	        print '<td><input type="text" name="phone" id="phone" value="'.$object->phone.'"></td>';
-            print '<td><label for="fax">'.$langs->trans('Fax').'</label></td>';
+            print '<td>'.fieldLabel('Fax','fax').'</td>';
 	        print '<td><input type="text" name="fax" id="fax" value="'.$object->fax.'"></td></tr>';
 
             // Prof ids
@@ -1572,9 +1624,9 @@ else
 
 	                $idprof_mandatory ='SOCIETE_IDPROF'.($i).'_MANDATORY';
 	                if(empty($conf->global->$idprof_mandatory))
-	                    print '<td><label for="'.$key.'">'.$idprof.'</label></td><td>';
+	                    print '<td>'.fieldLabel($idprof,$key).'</td><td>';
                     else
-	                    print '<td><span class="fieldrequired"><label for="'.$key.'">'.$idprof.'</label></td><td>';
+	                    print '<td><span class="fieldrequired">'.fieldLabel($idprof,$key).'</td><td>';
 
 	                print $formcompany->get_input_id_prof($i,$key,$object->$key,$object->country_code);
                     print '</td>';
@@ -1586,12 +1638,12 @@ else
             if ($j % 2 == 1) print '<td colspan="2"></td></tr>';
 
             // VAT payers
-            print '<tr><td><label for="assjtva_value">'.$langs->trans('VATIsUsed').'</label></td><td>';
+            print '<tr><td>'.fieldLabel('VATIsUsed','assujtva_value').'</td><td>';
             print $form->selectyesno('assujtva_value',$object->tva_assuj,1);
             print '</td>';
 
             // VAT Code
-            print '<td><label for="intra_vat">'.$langs->trans('VATIntra').'</label></td>';
+            print '<td>'.fieldLabel('VATIntra','intra_vat').'</td>';
             print '<td>';
             $s ='<input type="text" class="flat" name="tva_intra" id="intra_vat" size="12" maxlength="20" value="'.$object->tva_intra.'">';
 
@@ -1624,7 +1676,7 @@ else
             //TODO: Place into a function to control showing by country or study better option
         	if($mysoc->localtax1_assuj=="1" && $mysoc->localtax2_assuj=="1")
             {
-                print '<tr><td><label for="localtax1assuj_value">'.$langs->transcountry("LocalTax1IsUsed",$mysoc->country_code).'</label></td><td>';
+                print '<tr><td>'.fieldLabel($langs->transcountry("LocalTax1IsUsed",$mysoc->country_code),'localtax1assuj_value').'</td><td>';
                 print $form->selectyesno('localtax1assuj_value',$object->localtax1_assuj,1);
                 if(! isOnlyOneLocalTax(1))
                 {
@@ -1633,7 +1685,7 @@ else
                 	print '</span>';
                 }
 
-                print '</td><td><label for="localtax2assuj_value">'.$langs->transcountry("LocalTax2IsUsed",$mysoc->country_code).'</label></td><td>';
+                print '</td><td>'.fieldLabel($langs->transcountry("LocalTax2IsUsed",$mysoc->country_code),'localtax2assuj_value').'</td><td>';
                 print $form->selectyesno('localtax2assuj_value',$object->localtax2_assuj,1);
 	            if  (! isOnlyOneLocalTax(2))
 	            {
@@ -1646,7 +1698,7 @@ else
             }
             elseif($mysoc->localtax1_assuj=="1" && $mysoc->localtax2_assuj!="1")
             {
-                print '<tr><td><label for="localtax1assuj_value">'.$langs->transcountry("LocalTax1IsUsed",$mysoc->country_code).'</label></td><td colspan="3">';
+                print '<tr><td>'.fieldLabel($langs->transcountry("LocalTax1IsUsed",$mysoc->country_code),'localtax1assuj_value').'</td><td colspan="3">';
                 print $form->selectyesno('localtax1assuj_value',$object->localtax1_assuj,1);
                 if(! isOnlyOneLocalTax(1))
                 {
@@ -1659,7 +1711,7 @@ else
             }
             elseif($mysoc->localtax2_assuj=="1" && $mysoc->localtax1_assuj!="1")
             {
-                print '<tr><td><label for="localtax2assuj_value">'.$langs->transcountry("LocalTax2IsUsed",$mysoc->country_code).'</label></td><td colspan="3">';
+                print '<tr><td>'.fieldLabel($langs->transcountry("LocalTax2IsUsed",$mysoc->country_code),'localtax2assuj_value').'</td><td colspan="3">';
                 print $form->selectyesno('localtax2assuj_value',$object->localtax2_assuj,1);
                 if(! isOnlyOneLocalTax(2))
                 {
@@ -1671,33 +1723,48 @@ else
             }
 
             // Type - Size
-            print '<tr><td><label for="typent_id">'.$langs->trans("ThirdPartyType").'</label></td><td>';
+            print '<tr><td>'.fieldLabel('ThirdPartyType','typent_id').'</td><td>';
             print $form->selectarray("typent_id",$formcompany->typent_array(0), $object->typent_id, 0, 0, 0, '', 0, 0, 0, (empty($conf->global->SOCIETE_SORT_ON_TYPEENT)?'ASC':$conf->global->SOCIETE_SORT_ON_TYPEENT));
             if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
             print '</td>';
-            print '<td><label for="effectif_id">'.$langs->trans("Staff").'</label></td><td>';
+            print '<td>'.fieldLabel('Staff','effectif_id').'</td><td>';
             print $form->selectarray("effectif_id",$formcompany->effectif_array(0), $object->effectif_id);
             if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1);
             print '</td></tr>';
 
             // Juridical type
-            print '<tr><td><label for="legal_form">'.$langs->trans('JuridicalStatus').'</label></td><td colspan="3">';
-            print $formcompany->select_juridicalstatus($object->forme_juridique_code,$object->country_code,'',0);
+            print '<tr><td>'.fieldLabel('JuridicalStatus','legal_form').'</td><td colspan="3">';
+            print $formcompany->select_juridicalstatus($object->forme_juridique_code, $object->country_code, '', 'legal_form');
             print '</td></tr>';
 
             // Capital
-            print '<tr><td><label for="capital">'.$langs->trans("Capital").'</label></td>';
+            print '<tr><td>'.fieldLabel('Capital','capital').'</td>';
 	        print '<td colspan="3"><input type="text" name="capital" id="capital" size="10" value="'.$object->capital.'"><font class="hideonsmartphone">'.$langs->trans("Currency".$conf->currency).'</font></td></tr>';
 
             // Default language
             if (! empty($conf->global->MAIN_MULTILANGS))
             {
-                print '<tr><td><label for="default_lang">'.$langs->trans("DefaultLang").'</label></td><td colspan="3">'."\n";
+                print '<tr><td>'.fieldLabel('DefaultLang','default_lang').'</td><td colspan="3">'."\n";
                 print $formadmin->select_language($object->default_lang,'default_lang',0,0,1);
                 print '</td>';
                 print '</tr>';
             }
 
+			// Categories
+		    if (! empty($conf->categorie->enabled)  && ! empty($user->rights->categorie->lire))
+		    {
+	            print '<tr><td>'.fieldLabel('Categories', 'custcats').'</td>';
+		        print '<td colspan="3">';
+				$cate_arbo = $form->select_all_categories( Categorie::TYPE_CUSTOMER, null, null, null, null, 1);
+				$c = new Categorie( $db );
+				$cats = $c->containing( $object->id, Categorie::TYPE_CUSTOMER );
+				foreach ($cats as $cat) {
+					$arrayselected[] = $cat->id;
+				}
+				print $form->multiselectarray( 'custcats', $cate_arbo, $arrayselected, '', 0, '', 0, '90%');
+				print "</td></tr>";
+		    }
+
             // Other attributes
             $parameters=array('colspan' => ' colspan="3"', 'colspanvalue' => '3');
             $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action);    // Note that $action and $object may have been modified by hook
@@ -1708,9 +1775,9 @@ else
 
             // Webservices url/key
             if (!empty($conf->syncsupplierwebservices->enabled)) {
-                print '<tr><td><label for="webservices_url">'.$langs->trans('WebServiceURL').'</label></td>';
+                print '<tr><td>'.fieldLabel('WebServiceURL','webservices_url').'</td>';
                 print '<td><input type="text" name="webservices_url" id="webservices_url" size="32" value="'.$object->webservices_url.'"></td>';
-                print '<td><label for="webservices_key">'.$langs->trans('WebServiceKey').'</label></td>';
+                print '<td>'.fieldLabel('WebServiceKey','webservices_key').'</td>';
                 print '<td><input type="text" name="webservices_key" id="webservices_key" size="32" value="'.$object->webservices_key.'"></td></tr>';
             }
 
@@ -1718,7 +1785,7 @@ else
 			if (!empty($conf->incoterm->enabled))
 			{
 				print '<tr>';
-				print '<td><label for="incoterm_id">'.$langs->trans("IncotermLabel").'</label></td>';
+				print '<td>'.fieldLabel('IncotermLabel','incoterm_id').'</td>';
 	            print '<td colspan="3" class="maxwidthonsmartphone">';
 	            print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms)?$object->location_incoterms:''));
 				print '</td></tr>';
@@ -1726,7 +1793,7 @@ else
 
             // Logo
             print '<tr class="hideonsmartphone">';
-            print '<td><label for="photoinput">'.$langs->trans("Logo").'</label></td>';
+            print '<td>'.fieldLabel('Logo','photoinput').'</td>';
             print '<td colspan="3">';
             if ($object->logo) print $form->showphoto('societe',$object);
             $caneditfield=1;
@@ -1734,7 +1801,7 @@ else
             {
                 if ($object->logo) print "<br>\n";
                 print '<table class="nobordernopadding">';
-                if ($object->logo) print '<tr><td><input type="checkbox" class="flat" name="deletephoto" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>';
+                if ($object->logo) print '<tr><td><input type="checkbox" class="flat" name="deletephoto photodelete" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>';
                 //print '<tr><td>'.$langs->trans("PhotoFile").'</td></tr>';
                 print '<tr><td><input type="file" class="flat" name="photo" id="photoinput"></td></tr>';
                 print '</table>';
@@ -1772,21 +1839,21 @@ else
         // Confirm delete third party
         if ($action == 'delete' || ($conf->use_javascript_ajax && empty($conf->dol_use_jmobile)))
         {
-            print $form->formconfirm($_SERVER["PHP_SELF"]."?socid=".$object->id,$langs->trans("DeleteACompany"),$langs->trans("ConfirmDeleteCompany"),"confirm_delete",'',0,"action-delete");
+            print $form->formconfirm($_SERVER["PHP_SELF"]."?socid=".$object->id, $langs->trans("DeleteACompany"), $langs->trans("ConfirmDeleteCompany"), "confirm_delete", '', 0, "action-delete");
         }
 
-	    if ($action == 'merge') {
-		    $form = new Form($db);
-
-		    $options = array(
+	    if ($action == 'merge')
+	    {
+		    $formquestion = array(
 			    array(
-				    'label' => $langs->trans('MergeOriginThirdparty'),
+				    'name' => 'soc_origin',
+			    	'label' => $langs->trans('MergeOriginThirdparty'),
 				    'type' => 'other',
-				    'value' => $form->select_company('', 'soc_origin', 's.rowid != '.$object->id, 1)
+				    'value' => $form->select_company('', 'soc_origin', 's.rowid != '.$object->id)
 			    )
 		    );
 
-		    print $form->formconfirm($_SERVER["PHP_SELF"]."?socid=".$object->id,$langs->trans("MergeThirdparties"),$langs->trans("ConfirmMergeThirdparties"),"confirm_merge",$options,'',1);
+		    print $form->formconfirm($_SERVER["PHP_SELF"]."?socid=".$object->id, $langs->trans("MergeThirdparties"), $langs->trans("ConfirmMergeThirdparties"), "confirm_merge", $formquestion, 'no', 1);
 	    }
 
         dol_htmloutput_errors($error,$errors);
@@ -1799,7 +1866,7 @@ else
 
         // Ref
         /*
-        print '<tr><td width="25%" valign="top">'.$langs->trans("Ref").'</td>';
+        print '<tr><td width="25%">'.$langs->trans("Ref").'</td>';
         print '<td colspan="2">';
         print $fuser->id;
         print '</td>';
@@ -1885,14 +1952,14 @@ else
         print '</tr>';
 
         // Address
-        print "<tr><td valign=\"top\">".$langs->trans('Address').'</td><td colspan="'.(2+(($showlogo || $showbarcode)?0:1)).'">';
+        print '<tr><td class="tdtop">'.$langs->trans('Address').'</td><td colspan="'.(2+(($showlogo || $showbarcode)?0:1)).'">';
         dol_print_address($object->address,'gmap','thirdparty',$object->id);
-        print "</td></tr>";
+        print '</td></tr>';
 
         // Zip / Town
         print '<tr><td width="25%">'.$langs->trans('Zip').' / '.$langs->trans("Town").'</td><td colspan="'.(2+(($showlogo || $showbarcode)?0:1)).'">';
         print $object->zip.($object->zip && $object->town?" / ":"").$object->town;
-        print "</td>";
+        print '</td>';
         print '</tr>';
 
         // Country
@@ -2124,6 +2191,15 @@ else
             print '</td></tr>';
         }
 
+		// Categories
+	    if (! empty($conf->categorie->enabled)  && ! empty($user->rights->categorie->lire))
+	    {
+	        print '<tr><td>' . $langs->trans( "Categories" ) . '</td>';
+			print '<td colspan="3">';
+			print $form->showCategories( $object->id, 'customer', 1 );
+			print "</td></tr>";
+	    }
+
 		// Incoterms
 		if (!empty($conf->incoterm->enabled))
 		{
@@ -2202,7 +2278,7 @@ else
         if (! empty($conf->adherent->enabled))
         {
             $langs->load("members");
-            print '<tr><td width="25%" valign="top">'.$langs->trans("LinkedToDolibarrMember").'</td>';
+            print '<tr><td width="25%" class="tdtop">'.$langs->trans("LinkedToDolibarrMember").'</td>';
             print '<td colspan="3">';
             $adh=new Adherent($db);
             $result=$adh->fetch('','',$object->id);
diff --git a/htdocs/societe/societe.php b/htdocs/societe/societe.php
index 8a5a77cbb0b83086cb0720a92942e1ca0fc9f701..9ab7e921faa6f75fffd9f7bfa3ee30fb26a59a97 100644
--- a/htdocs/societe/societe.php
+++ b/htdocs/societe/societe.php
@@ -210,12 +210,12 @@ if (! $user->rights->fournisseur->lire) $sql.=" AND (s.fournisseur <> 1 OR s.cli
 // Insert sale filter
 if ($search_sale)
 {
-    $sql .= " AND sc.fk_user = ".$search_sale;
+    $sql .= " AND sc.fk_user = ".$db->escape($search_sale);
 }
 // Insert categ filter
 if ($search_categ)
 {
-    $sql .= " AND cs.fk_categorie = ".$search_categ;
+    $sql .= " AND cs.fk_categorie = ".$db->escape($search_categ);
 }
 if ($search_nom_only)
 {
@@ -272,12 +272,12 @@ if ($resql)
 	$num = $db->num_rows($resql);
 	$i = 0;
 
-	$params = "&amp;socname=".$socname."&amp;search_nom=".$search_nom."&amp;search_town=".$search_town;
-	$params.= ($sbarcode?"&amp;sbarcode=".$sbarcode:"");
-	$params.= '&amp;search_idprof1='.$search_idprof1;
-	$params.= '&amp;search_idprof2='.$search_idprof2;
-	$params.= '&amp;search_idprof3='.$search_idprof3;
-	$params.= '&amp;search_idprof4='.$search_idprof4;
+	$params = "&amp;socname=".htmlspecialchars($socname)."&amp;search_nom=".htmlspecialchars($search_nom)."&amp;search_town=".htmlspecialchars($search_town);
+	$params.= ($sbarcode?"&amp;sbarcode=".htmlspecialchars($sbarcode):"");
+	$params.= '&amp;search_idprof1='.htmlspecialchars($search_idprof1);
+	$params.= '&amp;search_idprof2='.htmlspecialchars($search_idprof2);
+	$params.= '&amp;search_idprof3='.htmlspecialchars($search_idprof3);
+	$params.= '&amp;search_idprof4='.htmlspecialchars($search_idprof4);
 
 	print_barre_liste($title, $page, $_SERVER["PHP_SELF"],$params,$sortfield,$sortorder,'',$num,$nbtotalofrecords);
 
@@ -338,7 +338,7 @@ if ($resql)
 	print_liste_field_titre($form->textwithpicto($langs->trans("ProfId2Short"),$textprofid[2],1,0),$_SERVER["PHP_SELF"],"s.siret","",$params,'class="nowrap"',$sortfield,$sortorder);
 	print_liste_field_titre($form->textwithpicto($langs->trans("ProfId3Short"),$textprofid[3],1,0),$_SERVER["PHP_SELF"],"s.ape","",$params,'class="nowrap"',$sortfield,$sortorder);
 	print_liste_field_titre($form->textwithpicto($langs->trans("ProfId4Short"),$textprofid[4],1,0),$_SERVER["PHP_SELF"],"s.idprof4","",$params,'class="nowrap"',$sortfield,$sortorder);
-	print '<td></td>';
+	print_liste_field_titre('');
 	print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"s.status","",$params,'align="right"',$sortfield,$sortorder);
 	print "</tr>\n";
 
@@ -348,34 +348,34 @@ if ($resql)
 	print '<input type="hidden" name="sortfield" value="'.$sortfield.'">';
 	print '<input type="hidden" name="sortorder" value="'.$sortorder.'">';
 	if (! empty($search_nom_only) && empty($search_nom)) $search_nom=$search_nom_only;
-	print '<input class="flat" type="text" name="search_nom" value="'.$search_nom.'">';
+	print '<input class="flat" type="text" name="search_nom" value="'.htmlspecialchars($search_nom).'">';
 	print '</td>';
 	// Barcode
 	if (! empty($conf->barcode->enabled))
 	{
-    	print '<td class="liste_titre">';
-    	print '<input class="flat" type="text" name="sbarcode" size="6" value="'.$sbarcode.'">';
-    	print '</td>';
+		print '<td class="liste_titre">';
+		print '<input class="flat" type="text" name="sbarcode" size="6" value="'.htmlspecialchars($sbarcode).'">';
+		print '</td>';
     }
 	// Town
 	print '<td class="liste_titre">';
-	print '<input class="flat" size="10" type="text" name="search_town" value="'.$search_town.'">';
+	print '<input class="flat" size="10" type="text" name="search_town" value="'.htmlspecialchars($search_town).'">';
 	print '</td>';
 	// IdProf1
 	print '<td class="liste_titre">';
-	print '<input class="flat" size="4" type="text" name="search_idprof1" value="'.$search_idprof1.'">';
+	print '<input class="flat" size="4" type="text" name="search_idprof1" value="'.htmlspecialchars($search_idprof1).'">';
 	print '</td>';
 	// IdProf2
 	print '<td class="liste_titre">';
-	print '<input class="flat" size="4" type="text" name="search_idprof2" value="'.$search_idprof2.'">';
+	print '<input class="flat" size="4" type="text" name="search_idprof2" value="'.htmlspecialchars($search_idprof2).'">';
 	print '</td>';
 	// IdProf3
 	print '<td class="liste_titre">';
-	print '<input class="flat" size="4" type="text" name="search_idprof3" value="'.$search_idprof3.'">';
+	print '<input class="flat" size="4" type="text" name="search_idprof3" value="'.htmlspecialchars($search_idprof3).'">';
 	print '</td>';
 	// IdProf4
 	print '<td class="liste_titre">';
-	print '<input class="flat" size="4" type="text" name="search_idprof4" value="'.$search_idprof4.'">';
+	print '<input class="flat" size="4" type="text" name="search_idprof4" value="'.htmlspecialchars($search_idprof4).'">';
 	print '</td>';
 	// Type (customer/prospect/supplier)
 	print '<td class="liste_titre" align="middle">';
diff --git a/htdocs/theme/amarok/img/object_gravatar.png b/htdocs/theme/amarok/img/object_gravatar.png
new file mode 100644
index 0000000000000000000000000000000000000000..42bccdc4339d08fef9da9378db7b6733322fcfb7
Binary files /dev/null and b/htdocs/theme/amarok/img/object_gravatar.png differ
diff --git a/htdocs/theme/amarok/img/title_accountancy.png b/htdocs/theme/amarok/img/title_accountancy.png
new file mode 100644
index 0000000000000000000000000000000000000000..6e7c2a412c60a614c7ebd91e0e06df4ebfb46191
Binary files /dev/null and b/htdocs/theme/amarok/img/title_accountancy.png differ
diff --git a/htdocs/theme/amarok/img/title_bank.png b/htdocs/theme/amarok/img/title_bank.png
new file mode 100644
index 0000000000000000000000000000000000000000..034a8d0c5e4a4264c8d3dc0b9185eff071087d54
Binary files /dev/null and b/htdocs/theme/amarok/img/title_bank.png differ
diff --git a/htdocs/theme/amarok/img/title_commercial.png b/htdocs/theme/amarok/img/title_commercial.png
new file mode 100644
index 0000000000000000000000000000000000000000..46394177698fb286ee15fd47544bf6d0de642807
Binary files /dev/null and b/htdocs/theme/amarok/img/title_commercial.png differ
diff --git a/htdocs/theme/amarok/img/title_companies.png b/htdocs/theme/amarok/img/title_companies.png
new file mode 100644
index 0000000000000000000000000000000000000000..b2539dba849a6f4a1ff231d2004df2b39607f582
Binary files /dev/null and b/htdocs/theme/amarok/img/title_companies.png differ
diff --git a/htdocs/theme/amarok/img/title_generic.png b/htdocs/theme/amarok/img/title_generic.png
new file mode 100644
index 0000000000000000000000000000000000000000..ae2243275490d5769ba220fd3ee00bd9c3175a3d
Binary files /dev/null and b/htdocs/theme/amarok/img/title_generic.png differ
diff --git a/htdocs/theme/amarok/img/title_home.png b/htdocs/theme/amarok/img/title_home.png
new file mode 100644
index 0000000000000000000000000000000000000000..e9273e727f59a5eefc3516fac772d8326f64804a
Binary files /dev/null and b/htdocs/theme/amarok/img/title_home.png differ
diff --git a/htdocs/theme/amarok/img/title_products.png b/htdocs/theme/amarok/img/title_products.png
new file mode 100644
index 0000000000000000000000000000000000000000..d3c5b125bbef73d5cdc855a8a6ef7ec9a450235a
Binary files /dev/null and b/htdocs/theme/amarok/img/title_products.png differ
diff --git a/htdocs/theme/amarok/img/title_project.png b/htdocs/theme/amarok/img/title_project.png
new file mode 100644
index 0000000000000000000000000000000000000000..05d8ea630b88abf9e2bc09ed311fb223e818231c
Binary files /dev/null and b/htdocs/theme/amarok/img/title_project.png differ
diff --git a/htdocs/theme/amarok/img/title_setup.png b/htdocs/theme/amarok/img/title_setup.png
new file mode 100644
index 0000000000000000000000000000000000000000..d7548d28709860acebe173ed2ca4954678f950f6
Binary files /dev/null and b/htdocs/theme/amarok/img/title_setup.png differ
diff --git a/htdocs/theme/auguria/img/object_gravatar.png b/htdocs/theme/auguria/img/object_gravatar.png
new file mode 100644
index 0000000000000000000000000000000000000000..42bccdc4339d08fef9da9378db7b6733322fcfb7
Binary files /dev/null and b/htdocs/theme/auguria/img/object_gravatar.png differ
diff --git a/htdocs/theme/auguria/img/title_accountancy.png b/htdocs/theme/auguria/img/title_accountancy.png
new file mode 100644
index 0000000000000000000000000000000000000000..6e7c2a412c60a614c7ebd91e0e06df4ebfb46191
Binary files /dev/null and b/htdocs/theme/auguria/img/title_accountancy.png differ
diff --git a/htdocs/theme/auguria/img/title_bank.png b/htdocs/theme/auguria/img/title_bank.png
new file mode 100644
index 0000000000000000000000000000000000000000..034a8d0c5e4a4264c8d3dc0b9185eff071087d54
Binary files /dev/null and b/htdocs/theme/auguria/img/title_bank.png differ
diff --git a/htdocs/theme/auguria/img/title_commercial.png b/htdocs/theme/auguria/img/title_commercial.png
new file mode 100644
index 0000000000000000000000000000000000000000..46394177698fb286ee15fd47544bf6d0de642807
Binary files /dev/null and b/htdocs/theme/auguria/img/title_commercial.png differ
diff --git a/htdocs/theme/auguria/img/title_companies.png b/htdocs/theme/auguria/img/title_companies.png
new file mode 100644
index 0000000000000000000000000000000000000000..b2539dba849a6f4a1ff231d2004df2b39607f582
Binary files /dev/null and b/htdocs/theme/auguria/img/title_companies.png differ
diff --git a/htdocs/theme/auguria/img/title_generic.png b/htdocs/theme/auguria/img/title_generic.png
new file mode 100644
index 0000000000000000000000000000000000000000..ae2243275490d5769ba220fd3ee00bd9c3175a3d
Binary files /dev/null and b/htdocs/theme/auguria/img/title_generic.png differ
diff --git a/htdocs/theme/auguria/img/title_home.png b/htdocs/theme/auguria/img/title_home.png
new file mode 100644
index 0000000000000000000000000000000000000000..e9273e727f59a5eefc3516fac772d8326f64804a
Binary files /dev/null and b/htdocs/theme/auguria/img/title_home.png differ
diff --git a/htdocs/theme/auguria/img/title_products.png b/htdocs/theme/auguria/img/title_products.png
new file mode 100644
index 0000000000000000000000000000000000000000..d3c5b125bbef73d5cdc855a8a6ef7ec9a450235a
Binary files /dev/null and b/htdocs/theme/auguria/img/title_products.png differ
diff --git a/htdocs/theme/auguria/img/title_project.png b/htdocs/theme/auguria/img/title_project.png
new file mode 100644
index 0000000000000000000000000000000000000000..05d8ea630b88abf9e2bc09ed311fb223e818231c
Binary files /dev/null and b/htdocs/theme/auguria/img/title_project.png differ
diff --git a/htdocs/theme/auguria/img/title_setup.png b/htdocs/theme/auguria/img/title_setup.png
new file mode 100644
index 0000000000000000000000000000000000000000..d7548d28709860acebe173ed2ca4954678f950f6
Binary files /dev/null and b/htdocs/theme/auguria/img/title_setup.png differ
diff --git a/htdocs/theme/bureau2crea/img/object_gravatar.png b/htdocs/theme/bureau2crea/img/object_gravatar.png
new file mode 100644
index 0000000000000000000000000000000000000000..42bccdc4339d08fef9da9378db7b6733322fcfb7
Binary files /dev/null and b/htdocs/theme/bureau2crea/img/object_gravatar.png differ
diff --git a/htdocs/theme/bureau2crea/img/title_accountancy.png b/htdocs/theme/bureau2crea/img/title_accountancy.png
new file mode 100644
index 0000000000000000000000000000000000000000..6e7c2a412c60a614c7ebd91e0e06df4ebfb46191
Binary files /dev/null and b/htdocs/theme/bureau2crea/img/title_accountancy.png differ
diff --git a/htdocs/theme/bureau2crea/img/title_bank.png b/htdocs/theme/bureau2crea/img/title_bank.png
new file mode 100644
index 0000000000000000000000000000000000000000..034a8d0c5e4a4264c8d3dc0b9185eff071087d54
Binary files /dev/null and b/htdocs/theme/bureau2crea/img/title_bank.png differ
diff --git a/htdocs/theme/bureau2crea/img/title_commercial.png b/htdocs/theme/bureau2crea/img/title_commercial.png
new file mode 100644
index 0000000000000000000000000000000000000000..46394177698fb286ee15fd47544bf6d0de642807
Binary files /dev/null and b/htdocs/theme/bureau2crea/img/title_commercial.png differ
diff --git a/htdocs/theme/bureau2crea/img/title_companies.png b/htdocs/theme/bureau2crea/img/title_companies.png
new file mode 100644
index 0000000000000000000000000000000000000000..b2539dba849a6f4a1ff231d2004df2b39607f582
Binary files /dev/null and b/htdocs/theme/bureau2crea/img/title_companies.png differ
diff --git a/htdocs/theme/bureau2crea/img/title_generic.png b/htdocs/theme/bureau2crea/img/title_generic.png
new file mode 100644
index 0000000000000000000000000000000000000000..ae2243275490d5769ba220fd3ee00bd9c3175a3d
Binary files /dev/null and b/htdocs/theme/bureau2crea/img/title_generic.png differ
diff --git a/htdocs/theme/bureau2crea/img/title_home.png b/htdocs/theme/bureau2crea/img/title_home.png
new file mode 100644
index 0000000000000000000000000000000000000000..e9273e727f59a5eefc3516fac772d8326f64804a
Binary files /dev/null and b/htdocs/theme/bureau2crea/img/title_home.png differ
diff --git a/htdocs/theme/bureau2crea/img/title_products.png b/htdocs/theme/bureau2crea/img/title_products.png
new file mode 100644
index 0000000000000000000000000000000000000000..d3c5b125bbef73d5cdc855a8a6ef7ec9a450235a
Binary files /dev/null and b/htdocs/theme/bureau2crea/img/title_products.png differ
diff --git a/htdocs/theme/bureau2crea/img/title_project.png b/htdocs/theme/bureau2crea/img/title_project.png
new file mode 100644
index 0000000000000000000000000000000000000000..05d8ea630b88abf9e2bc09ed311fb223e818231c
Binary files /dev/null and b/htdocs/theme/bureau2crea/img/title_project.png differ
diff --git a/htdocs/theme/bureau2crea/img/title_setup.png b/htdocs/theme/bureau2crea/img/title_setup.png
new file mode 100644
index 0000000000000000000000000000000000000000..d7548d28709860acebe173ed2ca4954678f950f6
Binary files /dev/null and b/htdocs/theme/bureau2crea/img/title_setup.png differ
diff --git a/htdocs/theme/cameleo/img/object_gravatar.png b/htdocs/theme/cameleo/img/object_gravatar.png
new file mode 100644
index 0000000000000000000000000000000000000000..42bccdc4339d08fef9da9378db7b6733322fcfb7
Binary files /dev/null and b/htdocs/theme/cameleo/img/object_gravatar.png differ
diff --git a/htdocs/theme/cameleo/img/title_accountancy.png b/htdocs/theme/cameleo/img/title_accountancy.png
new file mode 100644
index 0000000000000000000000000000000000000000..6e7c2a412c60a614c7ebd91e0e06df4ebfb46191
Binary files /dev/null and b/htdocs/theme/cameleo/img/title_accountancy.png differ
diff --git a/htdocs/theme/cameleo/img/title_bank.png b/htdocs/theme/cameleo/img/title_bank.png
new file mode 100644
index 0000000000000000000000000000000000000000..034a8d0c5e4a4264c8d3dc0b9185eff071087d54
Binary files /dev/null and b/htdocs/theme/cameleo/img/title_bank.png differ
diff --git a/htdocs/theme/cameleo/img/title_commercial.png b/htdocs/theme/cameleo/img/title_commercial.png
new file mode 100644
index 0000000000000000000000000000000000000000..46394177698fb286ee15fd47544bf6d0de642807
Binary files /dev/null and b/htdocs/theme/cameleo/img/title_commercial.png differ
diff --git a/htdocs/theme/cameleo/img/title_companies.png b/htdocs/theme/cameleo/img/title_companies.png
new file mode 100644
index 0000000000000000000000000000000000000000..b2539dba849a6f4a1ff231d2004df2b39607f582
Binary files /dev/null and b/htdocs/theme/cameleo/img/title_companies.png differ
diff --git a/htdocs/theme/cameleo/img/title_generic.png b/htdocs/theme/cameleo/img/title_generic.png
new file mode 100644
index 0000000000000000000000000000000000000000..ae2243275490d5769ba220fd3ee00bd9c3175a3d
Binary files /dev/null and b/htdocs/theme/cameleo/img/title_generic.png differ
diff --git a/htdocs/theme/cameleo/img/title_home.png b/htdocs/theme/cameleo/img/title_home.png
new file mode 100644
index 0000000000000000000000000000000000000000..e9273e727f59a5eefc3516fac772d8326f64804a
Binary files /dev/null and b/htdocs/theme/cameleo/img/title_home.png differ
diff --git a/htdocs/theme/cameleo/img/title_products.png b/htdocs/theme/cameleo/img/title_products.png
new file mode 100644
index 0000000000000000000000000000000000000000..d3c5b125bbef73d5cdc855a8a6ef7ec9a450235a
Binary files /dev/null and b/htdocs/theme/cameleo/img/title_products.png differ
diff --git a/htdocs/theme/cameleo/img/title_project.png b/htdocs/theme/cameleo/img/title_project.png
new file mode 100644
index 0000000000000000000000000000000000000000..05d8ea630b88abf9e2bc09ed311fb223e818231c
Binary files /dev/null and b/htdocs/theme/cameleo/img/title_project.png differ
diff --git a/htdocs/theme/cameleo/img/title_setup.png b/htdocs/theme/cameleo/img/title_setup.png
new file mode 100644
index 0000000000000000000000000000000000000000..d7548d28709860acebe173ed2ca4954678f950f6
Binary files /dev/null and b/htdocs/theme/cameleo/img/title_setup.png differ
diff --git a/htdocs/theme/common/ical.gif b/htdocs/theme/common/ical.gif
old mode 100755
new mode 100644
diff --git a/htdocs/theme/common/logo_cerfa.png b/htdocs/theme/common/logo_cerfa.png
new file mode 100644
index 0000000000000000000000000000000000000000..0db57c205ab11248aafeebd6fba99ec991b02cf4
Binary files /dev/null and b/htdocs/theme/common/logo_cerfa.png differ
diff --git a/htdocs/theme/common/rss.gif b/htdocs/theme/common/rss.gif
old mode 100755
new mode 100644
diff --git a/htdocs/theme/common/vcal.gif b/htdocs/theme/common/vcal.gif
old mode 100755
new mode 100644
diff --git a/htdocs/theme/eldy/img/delete.png b/htdocs/theme/eldy/img/delete.png
index 2482989b0cc5112cf6608b337b1480f45f866081..aff2c5f11994ed4a24c87bf0a5f0b69af1a2a1b3 100644
Binary files a/htdocs/theme/eldy/img/delete.png and b/htdocs/theme/eldy/img/delete.png differ
diff --git a/htdocs/theme/eldy/img/help.png b/htdocs/theme/eldy/img/help.png
index 12e6cd655d6630345cd24c74b5e85bec38524c1a..2c56e645a01cb767febeb54c59743603f8c21d88 100644
Binary files a/htdocs/theme/eldy/img/help.png and b/htdocs/theme/eldy/img/help.png differ
diff --git a/htdocs/theme/eldy/img/info.png b/htdocs/theme/eldy/img/info.png
index 12e6cd655d6630345cd24c74b5e85bec38524c1a..78650eb53645eb397f4174b7262c2e581db1671d 100644
Binary files a/htdocs/theme/eldy/img/info.png and b/htdocs/theme/eldy/img/info.png differ
diff --git a/htdocs/theme/eldy/img/info_black.png b/htdocs/theme/eldy/img/info_black.png
new file mode 100644
index 0000000000000000000000000000000000000000..741dabd5e193196549a2a1296760643eb9b11c00
Binary files /dev/null and b/htdocs/theme/eldy/img/info_black.png differ
diff --git a/htdocs/theme/eldy/img/object_gravatar.png b/htdocs/theme/eldy/img/object_gravatar.png
new file mode 100644
index 0000000000000000000000000000000000000000..42bccdc4339d08fef9da9378db7b6733322fcfb7
Binary files /dev/null and b/htdocs/theme/eldy/img/object_gravatar.png differ
diff --git a/htdocs/theme/eldy/img/object_printer.png b/htdocs/theme/eldy/img/object_printer.png
new file mode 100644
index 0000000000000000000000000000000000000000..8722632547c5b7179d68c6e3e670131c72c80bd3
Binary files /dev/null and b/htdocs/theme/eldy/img/object_printer.png differ
diff --git a/htdocs/theme/eldy/img/printer.png b/htdocs/theme/eldy/img/printer.png
index 6e8bcbf98a57f1c6e80aa31b21e15677e3796778..a81e2fa0df60af0e3719f655335833d9d8172810 100644
Binary files a/htdocs/theme/eldy/img/printer.png and b/htdocs/theme/eldy/img/printer.png differ
diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php
index f8ead18d96d01f4d40d55ecd6acce4acc8133e20..71b6bab0a2c65f4b96c84060410dc56c8b01681b 100644
--- a/htdocs/theme/eldy/style.css.php
+++ b/htdocs/theme/eldy/style.css.php
@@ -1,5 +1,5 @@
 <?php
-/* Copyright (C) 2004-2014	Laurent Destailleur		<eldy@users.sourceforge.net>
+/* Copyright (C) 2004-2015	Laurent Destailleur		<eldy@users.sourceforge.net>
  * Copyright (C) 2006		Rodolphe Quiedeville	<rodolphe@quiedeville.org>
  * Copyright (C) 2007-2012	Regis Houssin			<regis.houssin@capnetworks.com>
  * Copyright (C) 2011		Philippe Grand			<philippe.grand@atoo-net.com>
@@ -105,32 +105,33 @@ $colorbacklineimpairhover=(230+round(($isred+$isgreen+$isblue)/9)).','.(230+roun
 $colorbacklinepair1=(244+round($isred/3)).','.(244+round($isgreen/3)).','.(244+round($isblue/3));    // line pair
 $colorbacklinepair2=(250+round($isred/3)).','.(250+round($isgreen/3)).','.(250+round($isblue/3));    // line pair
 $colorbacklinepairhover=(230+round(($isred+$isgreen+$isblue)/9)).','.(230+round(($isred+$isgreen+$isblue)/9)).','.(230+round(($isred+$isgreen+$isblue)/9));    // line pair
-$colorbackbody='#f3f3f3';
+$colorbackbody='243,243,243';
 $colortext='40,40,40';
 $fontsize='12';
 $fontsizesmaller='11';
+$usegradient=1;
 
 // Eldy colors
 if (empty($conf->global->THEME_ELDY_ENABLE_PERSONALIZED))
 {
-	$conf->global->THEME_ELDY_TOPMENU_BACK1='140,160,185';    // topmenu
+	$conf->global->THEME_ELDY_TOPMENU_BACK1='140,150,180';    // topmenu (140,160,185)
     $conf->global->THEME_ELDY_TOPMENU_BACK2='236,236,236';
 	$conf->global->THEME_ELDY_VERMENU_BACK1='255,255,255';    // vmenu
     $conf->global->THEME_ELDY_VERMENU_BACK2='255,255,255';
-    $conf->global->THEME_ELDY_BACKTITLE1='140,160,185';       // title of arrays TO MATCH ELDY
-    //$conf->global->THEME_ELDY_BACKTITLE1='240,240,240';       // title of arrays TO MATCH BOOTSTRAP
+    $conf->global->THEME_ELDY_BACKTITLE1='140,150,180';       // title of arrays TO MATCH ELDY (140,160,185)
+    //$conf->global->THEME_ELDY_BACKTITLE1='230,230,230';     // title of arrays TO MATCH BOOTSTRAP
     $conf->global->THEME_ELDY_BACKTITLE2='230,230,230';
     $conf->global->THEME_ELDY_BACKTABCARD1='255,255,255';
     $conf->global->THEME_ELDY_BACKTABCARD2='210,210,210';     // card
     $conf->global->THEME_ELDY_BACKTABACTIVE='234,234,234';
-    $conf->global->THEME_ELDY_BACKBODY='#f3f3f3;';
+    $conf->global->THEME_ELDY_BACKBODY='243,243,243;';
     $conf->global->THEME_ELDY_LINEIMPAIR1='255,255,255';
     $conf->global->THEME_ELDY_LINEIMPAIR2='255,255,255';
     $conf->global->THEME_ELDY_LINEIMPAIRHOVER='238,246,252';
     $conf->global->THEME_ELDY_LINEPAIR1='242,242,242';
     $conf->global->THEME_ELDY_LINEPAIR2='248,248,248';
     $conf->global->THEME_ELDY_LINEPAIRHOVER='238,246,252';
-    $conf->global->THEME_ELDY_TEXT='50,50,130';
+    $conf->global->THEME_ELDY_TEXT='50,50,130';				  // color for links
     $conf->global->THEME_ELDY_FONT_SIZE1='12';
     $conf->global->THEME_ELDY_FONT_SIZE2='11';
 }
@@ -154,15 +155,20 @@ $colorbackbody       =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty(
 $colortext           =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_TEXT)         ?$colortext:$conf->global->THEME_ELDY_TEXT)                  :(empty($user->conf->THEME_ELDY_TEXT)?$colortext:$user->conf->THEME_ELDY_TEXT);
 $fontsize            =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_FONT_SIZE1)   ?$fontsize:$conf->global->THEME_ELDY_FONT_SIZE1)             :(empty($user->conf->THEME_ELDY_FONT_SIZE1)?$fontsize:$user->conf->THEME_ELDY_FONT_SIZE1);
 $fontsizesmaller     =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty($conf->global->THEME_ELDY_FONT_SIZE2)   ?$fontsize:$conf->global->THEME_ELDY_FONT_SIZE2)             :(empty($user->conf->THEME_ELDY_FONT_SIZE2)?$fontsize:$user->conf->THEME_ELDY_FONT_SIZE2);
-// No hover by default, we keep only if we set var THEME_ELDY_USE_HOVER
-if ((! empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) && empty($user->conf->THEME_ELDY_USE_HOVER))
-	|| (empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) && empty($conf->global->THEME_ELDY_USE_HOVER)))
+// Hover can be disabled with THEME_ELDY_USE_HOVER=0
+if ((! empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) && (isset($user->conf->THEME_ELDY_USE_HOVER) && $user->conf->THEME_ELDY_USE_HOVER == '0'))
+	|| (empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED) && (isset($conf->global->THEME_ELDY_USE_HOVER) && $conf->global->THEME_ELDY_USE_HOVER == '0')))
 {
 	$colorbacklineimpairhover='';
 	$colorbacklinepairhover='';
 }
 
 // Format color value to match expected format (may be 'FFFFFF' or '255,255,255')
+$colorbackbody=join(',',colorStringToArray($colorbackbody));
+$colorbackhmenu1=join(',',colorStringToArray($colorbackhmenu1));
+$colorbackhmenu2=join(',',colorStringToArray($colorbackhmenu2));
+$colorbackvmenu1=join(',',colorStringToArray($colorbackvmenu1));
+$colorbackvmenu2=join(',',colorStringToArray($colorbackvmenu2));
 $colorbacktabcard1=join(',',colorStringToArray($colorbacktabcard1));
 $colorbacktabcard2=join(',',colorStringToArray($colorbacktabcard2));
 
@@ -184,10 +190,13 @@ $tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppa
 if ($tmpval <= 340) { $colortextbacktab='FFF'; }
 else { $colortextbacktab='111'; }
 
-
 print '/*'."\n";
 print 'colred='.$colred.' colgreen='.$colgreen.' colblue='.$colblue."\n";
 print 'isred='.$isred.' isgreen='.$isgreen.' isblue='.$isblue."\n";
+print 'colorbackbody='.$colorbackbody."\n";
+print 'colorbackvmenu1='.$colorbackvmenu1."\n";
+print 'colorbackhmenu1='.$colorbackhmenu1."\n";
+print 'colorbacktitle1='.$colorbacktitle1."\n";
 print 'colorbacklineimpair1='.$colorbacklineimpair1."\n";
 print 'colorbacklineimpair2='.$colorbacklineimpair2."\n";
 print 'colorbacklineimpairhover='.$colorbacklineimpairhover."\n";
@@ -215,7 +224,7 @@ body {
 <?php if (GETPOST("optioncss") == 'print') {  ?>
 	background-color: #FFFFFF;
 <?php } else { ?>
-	background: <?php print $colorbackbody; ?>;
+	background: rgb(<?php print $colorbackbody; ?>);
 <?php } ?>
 	color: #101010;
 	font-size: <?php print $fontsize ?>px;
@@ -281,6 +290,7 @@ input.liste_titre {
 input.removedfile {
 	padding: 0px !important;
 	border: 0px !important;
+	vertical-align: text-bottom;
 }
 textarea:disabled {
 	background:#ddd;
@@ -447,7 +457,26 @@ textarea.centpercent {
 #formuserfile_link {
 	margin-left: 1px;
 }
+.listofinvoicetype {
+	height: 28px;
+	vertical-align: middle;
+}
+div.divsearchfield {
+	float: <?php print $left; ?>;
+	margin-<?php print $right; ?>: 12px;
+}
 
+/* Style to move picto into left of button */
+/*
+.buttonactionview {
+	padding-left: 15px;
+}
+.pictoactionview {
+	padding-left: 10px;
+	margin-right: -24px;
+	z-index: 999999;
+}
+*/
 
 /* ============================================================================== */
 /* Styles to hide objects                                                         */
@@ -543,8 +572,8 @@ div.ficheaddleft {
 	else print "margin-top: 10px;\n"; ?>
 }
 .containercenter {
-display : table;
-margin : 0px auto;
+	display : table;
+	margin : 0px auto;
 }
 
 #pictotitle {
@@ -555,6 +584,15 @@ margin : 0px auto;
     padding-left: 2px;
     padding-right: 2px;
 }
+.pictowarning {
+    padding-left: 3px;
+}
+.colorthumb {
+	padding-left: 1px !important;
+	padding-right: 1px;
+	padding-top: 1px;
+	padding-bottom: 1px;
+}
 
 
 /* ============================================================================== */
@@ -570,13 +608,14 @@ $heightmenu2=48;        /* height of top menu, part with login  */
 div#id-top {
 	height: <?php print ($heightmenu2); ?>px;
 	background: rgb(<?php echo $colorbackhmenu1 ?>);
-
+	<?php if ($usegradient) { ?>
 	background-image: linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%);
 	background-image: -o-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%);
 	background-image: -moz-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%);
 	background-image: -webkit-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%);
 	background-image: -ms-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%);
 	background-image: -webkit-gradient( linear, left top, left bottom, color-stop(0, rgba(255,255,255,.3)), color-stop(1, rgba(0,0,0,.3)) );
+	<?php } ?>
 }
 
 div#tmenu_tooltip {
@@ -641,17 +680,17 @@ ul.tmenu {	/* t r b l */
     padding: 0px 0px 0px 0px;
     margin: 0px 0px 0px 0px;
 	list-style: none;
-	/* box-shadow: 0 0 6px rgba(0, 0, 0, .4) !important; */
 }
 ul.tmenu li {
 	background: rgb(<?php echo $colorbackhmenu1 ?>);
-
+	<?php if ($usegradient) { ?>
 	background-image: linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%);
 	background-image: -o-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%);
 	background-image: -moz-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%);
 	background-image: -webkit-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%);
 	background-image: -ms-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%);
 	background-image: -webkit-gradient( linear, left top, left bottom, color-stop(0, rgba(255,255,255,.3)), color-stop(1, rgba(0,0,0,.3)) );
+	<?php } ?>
 }
 li.tmenu, li.tmenusel {
 	<?php print $minwidthtmenu?'min-width: '.$minwidthtmenu.'px;':''; ?>
@@ -934,7 +973,7 @@ div.login_block {
 	<?php } ?>
 }
 div.login_block a {
-	color: #fff;
+	color: #<?php echo $colortextbackvmenu; ?>;
 }
 div.login_block table {
 	display: inline;
@@ -974,7 +1013,9 @@ img.login, img.printer, img.entity {
 	color: white;
 	font-weight: bold;
 }
-
+img.loginphoto {
+	border-radius: 2px;
+}
 .span-icon-user {
 	background: url(<?php echo dol_buildpath($path.'/theme/'.$theme.'/img/object_user.png',1); ?>) no-repeat scroll 7px 7px;
 }
@@ -1013,11 +1054,11 @@ div.vmenu, td.vmenu {
 #menu_contenu_logo { padding-right: 4px; }
 
 a.vmenu:link, a.vmenu:visited, a.vmenu:hover, a.vmenu:active { font-size:<?php print $fontsize ?>px; font-family: <?php print $fontlist ?>; text-align: <?php print $left; ?>; font-weight: bold; }
-font.vmenudisabled  { font-size:<?php print $fontsize ?>px; font-family: <?php print $fontlist ?>; text-align: <?php print $left; ?>; font-weight: bold; color: #93a5aa; }
+font.vmenudisabled  { font-size:<?php print $fontsize ?>px; font-family: <?php print $fontlist ?>; text-align: <?php print $left; ?>; font-weight: bold; color: #aaa; }
 a.vmenu:link, a.vmenu:visited { color: #<?php echo $colortextbackvmenu; ?>; }
 
 a.vsmenu:link, a.vsmenu:visited, a.vsmenu:hover, a.vsmenu:active, span.vsmenu { font-size:<?php print $fontsize ?>px; font-family: <?php print $fontlist ?>; text-align: <?php print $left; ?>; font-weight: normal; color: #202020; margin: 1px 1px 1px 8px; }
-font.vsmenudisabled { font-size:<?php print $fontsize ?>px; font-family: <?php print $fontlist ?>; text-align: <?php print $left; ?>; font-weight: normal; color: #93a5aa; }
+font.vsmenudisabled { font-size:<?php print $fontsize ?>px; font-family: <?php print $fontlist ?>; text-align: <?php print $left; ?>; font-weight: normal; color: #aaa; }
 a.vsmenu:link, a.vsmenu:visited { color: #<?php echo $colortextbackvmenu; ?>; }
 font.vsmenudisabledmargin { margin: 1px 1px 1px 8px; }
 
@@ -1373,7 +1414,12 @@ div.tabs {
 	clear:both;
 	height:100%;
 }
-div.tabsElem { margin-top: 1px; }		/* To avoid overlap of tabs when not browser */
+div.tabsElem {
+	margin-top: 1px;
+	<?php if (! empty($conf->dol_use_jmobile)) { ?>;
+	margin-bottom: -1px;
+	<?php } ?>
+}		/* To avoid overlap of tabs when not browser */
 
 div.tabBar {
     color: #<?php echo $colortextbacktab; ?>;
@@ -1787,7 +1833,7 @@ tr.nocellnopadd td.nobordernopadding, tr.nocellnopadd td.nocellnopadd
 
 
 table.border, table.dataTable, .table-border, .table-border-col, .table-key-border-col, .table-val-border-col, div.border {
-	border: 1px solid #D0D0D0;
+	border: 1px solid #E0E0E0;
 	border-collapse: collapse;
 	padding: 1px 2px 1px 3px;			/* t r b l */
 }
@@ -1796,19 +1842,20 @@ table.border, table.dataTable, .table-border, .table-border-col, .table-key-bord
 	height: 20px;
 }
 div.tabBar table.border tr, div.tabBar table.border tr td, div.tabBar div.border .table-border-row, div.tabBar div.border .table-key-border-col, div.tabBar div.border .table-val-border-col {
-	height: 24px;
+	height: 20px;
 }
 div.tabBar div.border .table-border-row, div.tabBar div.border .table-key-border-col, div.tabBar .table-val-border-col {
 	vertical-align: middle;
 }
-div.tabBar .tdtop {
+div .tdtop {
     vertical-align: top;
-	padding-top: 6px;
+	padding-top: 5px;
+	padding-bottom: 0px;
 }
 
 table.border td, div.border div div.tagtd {
 	padding: 2px 2px 2px 2px;
-	border: 1px solid #D0D0D0;
+	border: 1px solid #E0E0E0;
 	border-collapse: collapse;
 }
 
@@ -1941,6 +1988,16 @@ table.liste td {
 
 
 /* Pagination */
+div.refidpadding  {
+	padding-top: <?php print empty($conf->dol_use_jmobile)?'8':'12'; ?>px;
+}
+div.refid  {
+	padding-top: <?php print empty($conf->dol_use_jmobile)?'5':'12'; ?>px;
+	font-weight: bold;
+  	color: #766;
+  	font-size: 120%;
+}
+
 div.pagination {
 	float: right;
 }
@@ -1959,8 +2016,10 @@ div.pagination li {
   display: inline-block;
   padding-left: 0px;
   padding-right: 0px;
+<?php if (empty($conf->dol_use_jmobile)) { ?>
   padding-top: 6px;
-  padding-bottom: 6px;
+  padding-bottom: 5px;
+<?php } ?>
 }
 .pagination {
   display: inline-block;
@@ -1969,7 +2028,9 @@ div.pagination li {
 }
 div.pagination li.pagination a,
 div.pagination li.pagination span {
+<?php if (empty($conf->dol_use_jmobile)) { ?>
   padding: 6px 12px;
+<?php } ?>
   margin-left: -1px;
   line-height: 1.42857143;
   color: #000;
@@ -1978,10 +2039,26 @@ div.pagination li.pagination span {
 div.pagination li.pagination span.inactive {
   cursor: default;
 }
+div.pagination li.litext a {
+border: none;
+  padding-right: 10px;
+  padding-left: 4px;
+  font-weight: bold;
+}
+<?php if (! empty($conf->dol_use_jmobile)) { ?>
+div.pagination li.litext {
+  padding-top: 13px;
+  vertical-align: top;
+}
+<?php } ?>
 <?php if (empty($conf->dol_use_jmobile)) { ?>
+div.pagination li.noborder a:hover {
+  border: none;
+  background-color: transparent;
+}
 div.pagination li a,
 div.pagination li span {
-	background-color: #fff;
+  background-color: #fff;
   border: 1px solid #ddd;
 }
 div.pagination li:first-child a,
@@ -2064,23 +2141,24 @@ div.pagination li.paginationafterarrows {
 /* Set the color for hover lines */
 .odd:hover, .impair:hover, .even:hover, .pair:hover, .even:hover, .pair:hover, table.dataTable tr.even:hover, table.dataTable tr.odd:hover
 {
-<?php if ($colorbacklinepairhover) { if ($colorbacklinepairhover > 0) { ?>
+<?php if ($colorbacklinepairhover) { ?>
 	background: rgb(<?php echo $colorbacklinepairhover; ?>) !important;
 <?php } else { ?>
 	background: rgba(0, 0, 0, 0.05) !important;
-<?php } } ?>
+<?php } ?>
 }
 
-.odd, .impair, .nohover .odd:hover, .nohover .impair:hover, tr.odd td.nohover, tr.impair td.nohover {
+.odd, .impair, .nohover .odd:hover, .nohover .impair:hover, tr.odd td.nohover, tr.impair td.nohover
+{
 	font-family: <?php print $fontlist ?>;
 	margin-bottom: 1px;
 	color: #202020;
 	min-height: 18px; /* seems to not be used */
 
-	background: #ffffff;
+	background: #<?php echo colorArrayToHex(colorStringToArray($colorbacklineimpair1)); ?>;
 }
 #GanttChartDIV {
-	background: #ffffff;
+	background: #<?php echo colorArrayToHex(colorStringToArray($colorbacklineimpair1)); ?>;
 }
 
 .even, .pair, .nohover .even:hover, .nohover .pair:hover, tr.even td.nohover, tr.pair td.nohover {
@@ -2088,16 +2166,16 @@ div.pagination li.paginationafterarrows {
 	margin-bottom: 1px;
 	color: #202020;
 
-	background-color: #f9f9f9;
+	background-color: #<?php echo colorArrayToHex(colorStringToArray($colorbacklinepair1)); ?>;
 }
 
 table.dataTable tr.odd {
-	background-color: #f9f9f9 !important;
+	background-color: #<?php echo colorArrayToHex(colorStringToArray($colorbacklinepair1)); ?> !important;
 }
 
 /* For no hover style */
 table.nohover tr.impair, table.nohover tr.pair, table.nohover tr.impair td, table.nohover tr.pair td {
-	background-color: #ffffff !important;
+	background-color: #<?php echo colorArrayToHex(colorStringToArray($colorbacklineimpair1)); ?> !important;
 }
 
 table.dataTable td {
@@ -2147,12 +2225,13 @@ div.liste_titre, tr.liste_titre, tr.liste_titre_sel, form.liste_titre, form.list
 
 	/* TO MATCH ELDY */
 	background: rgb(<?php echo $colorbacktitle1; ?>);
+	<?php if ($usegradient) { ?>
 	background-image: -o-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%);
 	background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%);
 	background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%);
 	background-image: -ms-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%);
 	background-image: linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%);
-
+	<?php } ?>
 	font-weight: bold;
 
     color: #<?php echo $colortexttitle; ?>;
@@ -2168,7 +2247,6 @@ tr.liste_titre th, th.liste_titre, tr.liste_titre td, td.liste_titre, form.liste
 {
     font-family: <?php print $fontlist ?>;
     font-weight: bold;
-    /* text-shadow: 1px 0px 1px #<?php echo $colorshadowtitle; ?>; */
     vertical-align: middle;
 }
 tr.liste_titre th a, th.liste_titre a, tr.liste_titre td a, td.liste_titre a, form.liste_titre div a, div.liste_titre a {
@@ -2184,7 +2262,6 @@ tr.liste_titre_sel th, th.liste_titre_sel, tr.liste_titre_sel td, td.liste_titre
     font-weight: normal;
     border-bottom: 1px solid #FDFFFF;
     text-decoration: underline;
-	/* text-shadow: 1px 0px 1px #<?php echo $colorshadowtitle; ?>; */
 }
 input.liste_titre {
     background: transparent;
@@ -2204,7 +2281,6 @@ input.liste_titre {
 
 
 .tableforservicepart1 .impair, .tableforservicepart1 .pair, .tableforservicepart2 .impair, .tableforservicepart2 .pair {
-	//background: none;
 	background: #FFF;
 }
 .tableforservicepart1 tbody tr td, .tableforservicepart2 tbody tr td {
@@ -2245,6 +2321,9 @@ div.tabBar .noborder {
     text-align: center;
     border-radius: 4px;
 }
+.boxstats:hover {
+	background-color: #<?php echo colorArrayToHex(colorStringToArray($colorbacklinepair1)); ?>;
+}
 
 .boxtable {
     -moz-box-shadow: 3px 3px 4px #DDD;
@@ -2269,14 +2348,15 @@ tr.box_titre {
 
 	/* TO MATCH ELDY */
 	background: rgb(<?php echo $colorbacktitle1; ?>);
+	<?php if ($usegradient) { ?>
 	background-image: -o-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%);
 	background-image: -moz-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%);
 	background-image: -webkit-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%);
 	background-image: -ms-linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%);
 	background-image: linear-gradient(bottom, rgba(0,0,0,0.3) 0%, rgba(250,250,250,0.3) 100%);
+	<?php } ?>
 
 	color: #<?php echo $colortexttitle; ?>;
-	// text-shadow: 1px 0px 1px #<?php echo $colorshadowtitle; ?>;
     font-family: <?php print $fontlist ?>, sans-serif;
     font-weight: bold;
     border-bottom: 1px solid #FDFFFF;
@@ -2410,12 +2490,18 @@ div.dolgraph div.legend table tbody tr { height: auto; }
 	margin-bottom: 2px;
 	margin-top: 2px;
 }
-.photointooltip {
-	-webkit-box-shadow: -1px -1px 5px #777;
-	-moz-box-shadow: -1px -1px 5px #777;
-	box-shadow: -1px -1px 5px #777;
+.photowithmargin {
+	-webkit-box-shadow: 0px 0px 3px #777;
+	-moz-box-shadow: 0px 0px 3px #777;
+	box-shadow: 0px 0px 3px #777;
+}
+.photointoolitp {
 	margin-top: 6px;
 	float: left;
+	/*text-align: center; */
+}
+.photodelete {
+	margin-top: 6px !important;
 }
 
 .logo_setup
@@ -3218,10 +3304,23 @@ table.dataTable tr.odd td.sorting_1, table.dataTable tr.even td.sorting_1 {
 	background-image: none;
 }
 
+div.dataTables_length {
+	float: right !important;
+	padding-left: 8px;
+}
+div.dataTables_length select {
+	background: #fff;
+}
+
+
 /* ============================================================================== */
 /*  Select2                                                                       */
 /* ============================================================================== */
 
+.selectoptiondisabledwhite {
+	background: #FFFFFF !important;
+}
+
 .select2-choice,
 .select2-drop.select2-drop-above.select2-drop-active,
 .select2-container-active .select2-choice,
@@ -3247,6 +3346,8 @@ a span.select2-chosen
 }
 .select2-container .select2-choice {
 	background-image: none;
+	height: 24px;
+	line-height: 24px;
 }
 .select2-choices .select2-search-choice {
   border: 1px solid #aaa !important;
@@ -3265,6 +3366,7 @@ a span.select2-chosen
   margin-bottom: 2px;
 }
 
+
 /* ============================================================================== */
 /*  JMobile                                                                       */
 /* ============================================================================== */
@@ -3418,6 +3520,14 @@ ul.ulmenu {
 	color: #<?php echo $colorshadowtitle; ?> !important;
 	text-shadow: none !important;
 }
+/*
+.ui-btn-up-c {
+	background: transparent;
+}
+*/
+div.tabsElem a.tab {
+	background: transparent;
+}
 .ui-controlgroup-horizontal .ui-btn.ui-first-child {
 -webkit-border-top-left-radius: 6px;
 border-top-left-radius: 6px;
@@ -3448,6 +3558,18 @@ border-top-right-radius: 6px;
 }
 
 
+
+/* The theme for public pages */
+.public_body {
+	margin: 20px;
+}
+.public_border {
+	border: 1px solid #888;
+}
+.public_liste_titre {
+
+
+
 /* CSS style used for small screen */
 
 .imgopensurveywizard
@@ -3459,5 +3581,7 @@ border-top-right-radius: 6px;
 	.imgopensurveywizard { width:95%; height: auto; }
 }
 
+
+
 <?php
 if (is_object($db)) $db->close();
diff --git a/htdocs/theme/md_exp/img/object_gravatar.png b/htdocs/theme/md_exp/img/object_gravatar.png
new file mode 100644
index 0000000000000000000000000000000000000000..42bccdc4339d08fef9da9378db7b6733322fcfb7
Binary files /dev/null and b/htdocs/theme/md_exp/img/object_gravatar.png differ
diff --git a/htdocs/user/agenda_extsites.php b/htdocs/user/agenda_extsites.php
index e46647f3b6944bf667e3cd97c9f0b2afdbaefb44..6699e30023b8566e6ddf241666480bf5ae54a433 100644
--- a/htdocs/user/agenda_extsites.php
+++ b/htdocs/user/agenda_extsites.php
@@ -33,8 +33,6 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
 require_once DOL_DOCUMENT_ROOT.'/core/lib/usergroups.lib.php';
 require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
 
-if (!$user->admin) accessforbidden();
-
 $langs->load("agenda");
 $langs->load("admin");
 $langs->load("other");
@@ -54,6 +52,21 @@ $id = GETPOST('id','int');
 $fuser = new User($db);
 $fuser->fetch($id);
 
+// Security check
+$socid=0;
+if ($user->societe_id > 0) $socid = $user->societe_id;
+$feature2 = (($socid && $user->rights->user->self->creer)?'':'user');
+if ($user->id == $id)	// A user can always read its own card
+{
+	$feature2='';
+}
+$result = restrictedArea($user, 'user', $id, 'user&user', $feature2);
+
+// If user is not user that read and no permission to read other users, we stop
+if (($fuser->id != $user->id) && (! $user->rights->user->user->lire))
+  accessforbidden();
+
+
 
 /*
  * Actions
diff --git a/htdocs/user/card.php b/htdocs/user/card.php
index 79e0e228be774a1fd35e6b1e0224089ffb3de384..7b6d57f81a955f339684d52ab6087be983c146b4 100644
--- a/htdocs/user/card.php
+++ b/htdocs/user/card.php
@@ -185,11 +185,13 @@ if ($action == 'add' && $canadduser)
         }
     }
 
-    if (!$error) {
+    if (!$error)
+    {
         $object->lastname		= GETPOST("lastname",'alpha');
         $object->firstname	    = GETPOST("firstname",'alpha');
         $object->login		    = GETPOST("login",'alpha');
         $object->api_key		= GETPOST("api_key",'alpha');
+        $object->gender		    = GETPOST("gender",'alpha');
         $object->admin		    = GETPOST("admin",'alpha');
         $object->office_phone	= GETPOST("office_phone",'alpha');
         $object->office_fax	    = GETPOST("office_fax",'alpha');
@@ -341,6 +343,7 @@ if ($action == 'update' && ! $_POST["cancel"])
             $object->lastname	= GETPOST("lastname",'alpha');
             $object->firstname	= GETPOST("firstname",'alpha');
             $object->login		= GETPOST("login",'alpha');
+            $object->gender		= GETPOST("gender",'alpha');
             $object->pass		= GETPOST("password");
             $object->api_key    = GETPOST("api_key");
             $object->admin		= empty($user->admin)?0:GETPOST("admin"); // A user can only be set admin by an admin
@@ -473,6 +476,12 @@ if ($action == 'update' && ! $_POST["cancel"])
                             $imgThumbMini = vignette($newfile, $maxwidthmini, $maxheightmini, '_mini', $quality);
                         }
                     }
+                    else
+                    {
+                    	$error++;
+                    	$langs->load("errors");
+                    	setEventMessages($langs->trans("ErrorFailedToCreateDir", $dir), $mesgs, 'errors');
+                    }
                 }
             }
 
@@ -759,6 +768,13 @@ if (($action == 'create') || ($action == 'adduserldap'))
     print '<input size="30" type="text" name="job" value="'.GETPOST('job').'">';
     print '</td></tr>';
 
+    // Gender
+    print '<tr><td>'.$langs->trans("Gender").'</td>';
+    print '<td>';
+    $arraygender=array('man'=>$langs->trans("Genderman"),'woman'=>$langs->trans("Genderwoman"));
+    print $form->selectarray('gender', $arraygender, GETPOST('gender'), 1);
+    print '</td></tr>';
+
     // Login
     print '<tr><td><span class="fieldrequired">'.$langs->trans("Login").'</span></td>';
     print '<td>';
@@ -866,7 +882,7 @@ if (($action == 'create') || ($action == 'adduserldap'))
     // Type
     print '<tr><td>'.$langs->trans("Type").'</td>';
     print '<td>';
-    print $form->textwithpicto($langs->trans("Internal"),$langs->trans("InternalExternalDesc"));
+    print $form->textwithpicto($langs->trans("Internal"),$langs->trans("InternalExternalDesc"), 1, 'help', '', 0, 2);
     print '</td></tr>';
 
     // Tel
@@ -1044,7 +1060,11 @@ if (($action == 'create') || ($action == 'adduserldap'))
 
  	dol_fiche_end();
 
-    print '<div align="center"><input class="button" value="'.$langs->trans("CreateUser").'" name="create" type="submit"></div>';
+    print '<div align="center">';
+    print '<input class="button" value="'.$langs->trans("CreateUser").'" name="create" type="submit">';
+    //print '&nbsp; &nbsp; &nbsp;';
+    //print '<input value="'.$langs->trans("Cancel").'" class="button" type="submit" name="cancel">';
+    print '</div>';
 
     print "</form>";
 }
@@ -1197,6 +1217,12 @@ else
             print '<td colspan="2">'.$object->job.'</td>';
             print '</tr>'."\n";
 
+            // Gender
+		    print '<tr><td>'.$langs->trans("Gender").'</td>';
+		    print '<td>';
+		    if ($object->gender) print $langs->trans("Gender".$object->gender);
+		    print '</td></tr>';
+
             // Login
             print '<tr><td>'.$langs->trans("Login").'</td>';
             if (! empty($object->ldap_sid) && $object->statut==0)
@@ -1269,10 +1295,12 @@ else
             print '</td></tr>'."\n";
 
             // Type
-            print '<tr><td>'.$langs->trans("Type").'</td><td colspan="2">';
+            print '<tr><td>';
+            $text=$langs->trans("Type");
+            print $form->textwithpicto($text, $langs->trans("InternalExternalDesc"));
+            print '</td><td colspan="2">';
             $type=$langs->trans("Internal");
             if ($object->societe_id) $type=$langs->trans("External");
-            print $form->textwithpicto($type,$langs->trans("InternalExternalDesc"));
             if ($object->ldap_sid) print ' ('.$langs->trans("DomainUser").')';
             print '</td></tr>'."\n";
 
@@ -1334,14 +1362,20 @@ else
             	$langs->load("salaries");
 
 	            // THM
-			    print '<tr><td>'.$langs->trans("THM").'</td>';
+			    print '<tr><td>';
+			    $text=$langs->trans("THM");
+			    print $form->textwithpicto($text, $langs->trans("THMDescription"), 1, 'help', 'classthm');
+			    print '</td>';
 			    print '<td colspan="2">';
 			    print ($object->thm!=''?price($object->thm,'',$langs,1,-1,-1,$conf->currency):'');
 			    print '</td>';
 			    print "</tr>\n";
 
 	            // TJM
-			    print '<tr><td>'.$langs->trans("TJM").'</td>';
+			    print '<tr><td>';
+			    $text=$langs->trans("TJM");
+			    print $form->textwithpicto($text, $langs->trans("TJMDescription"), 1, 'help', 'classtjm');
+			    print '</td>';
 			    print '<td colspan="2">';
 			    print ($object->tjm!=''?price($object->tjm,'',$langs,1,-1,-1,$conf->currency):'');
 			    print '</td>';
@@ -1374,7 +1408,7 @@ else
             {
 				print '<tr><td>'.$langs->trans("ColorUser").'</td>';
 				print '<td colspan="2">';
-				if ($object->color) print '<input type="text" disabled style="padding: 0; margin-top: 0; margin-bottom: 0; width: 36px; background-color: #'.$object->color.'" value="'.$object->color.'">';
+				if ($object->color) print '<input type="text" class="colorthumb" disabled style="padding: 1px; margin-top: 0; margin-bottom: 0; width: 36px; background-color: #'.$object->color.'" value="'.$object->color.'">';
 				print '</td>';
 				print "</tr>\n";
 			}
@@ -1704,7 +1738,7 @@ else
 
             dol_fiche_head($head, 'user', $title, 0, 'user');
 
-        	$rowspan=16;
+        	$rowspan=17;
             if (isset($conf->file->main_authentication) && preg_match('/openid/',$conf->file->main_authentication) && ! empty($conf->global->MAIN_OPENIDURL_PERUSER)) $rowspan++;
             if (! empty($conf->societe->enabled)) $rowspan++;
             if (! empty($conf->adherent->enabled)) $rowspan++;
@@ -1734,18 +1768,10 @@ else
                 print $object->lastname;
             }
             print '</td>';
+
             // Photo
             print '<td align="center" valign="middle" width="25%" rowspan="'.$rowspan.'">';
-            print $form->showphoto('userphoto',$object);
-            if ($caneditfield)
-            {
-                if ($object->photo) print "<br>\n";
-                print '<table class="nobordernopadding hideonsmartphone">';
-                if ($object->photo) print '<tr><td align="center"><input type="checkbox" class="flat" name="deletephoto" id="photodelete"> '.$langs->trans("Delete").'<br><br></td></tr>';
-                print '<tr><td>'.$langs->trans("PhotoFile").'</td></tr>';
-                print '<tr><td><input type="file" class="flat" name="photo" id="photoinput"></td></tr>';
-                print '</table>';
-            }
+            print $form->showphoto('userphoto',$object,100,0,$caneditfield);
             print '</td>';
 
             print '</tr>';
@@ -1778,6 +1804,13 @@ else
             }
             print '</td></tr>';
 
+		    // Gender
+    		print '<tr><td>'.$langs->trans("Gender").'</td>';
+    		print '<td>';
+    		$arraygender=array('man'=>$langs->trans("Genderman"),'woman'=>$langs->trans("Genderwoman"));
+    		print $form->selectarray('gender', $arraygender, GETPOST('gender')?GETPOST('gender'):$object->gender, 1);
+    		print '</td></tr>';
+
             // Login
             print "<tr>".'<td><span class="fieldrequired">'.$langs->trans("Login").'</span></td>';
             print '<td>';
diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php
index b3303867e9f810a8a89b73b240249bff889293a9..f7b5473967267f53257f66f990451ff07e17d856 100644
--- a/htdocs/user/class/user.class.php
+++ b/htdocs/user/class/user.class.php
@@ -4,7 +4,7 @@
  * Copyright (c) 2004-2012 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C) 2004      Sebastien Di Cintio  <sdicintio@ressource-toi.org>
  * Copyright (C) 2004      Benoit Mortier       <benoit.mortier@opensides.be>
- * Copyright (C) 2005-2012 Regis Houssin        <regis.houssin@capnetworks.com>
+ * Copyright (C) 2005-2015 Regis Houssin        <regis.houssin@capnetworks.com>
  * Copyright (C) 2005      Lionel Cousteix      <etm_ltd@tiscali.co.uk>
  * Copyright (C) 2011      Herve Prot           <herve.prot@symeos.com>
  * Copyright (C) 2013-2014 Philippe Grand       <philippe.grand@atoo-net.com>
@@ -50,6 +50,7 @@ class User extends CommonObject
 	var $search_sid;
 	var $lastname;
 	var $firstname;
+	var $gender;
 	var $note;
 	var $email;
 	var $skype;
@@ -74,8 +75,16 @@ class User extends CommonObject
 	var $datem;
 
 	//! If this is defined, it is an external user
-	var $societe_id;	// deprecated
-	var $contact_id;	// deprecated
+	/**
+	 * @deprecated
+	 * @see socid
+	 */
+	var $societe_id;
+	/**
+	 * @deprecated
+	 * @see contactid
+	 */
+	var $contact_id;
 	var $socid;
 	var $contactid;
 
@@ -152,7 +161,7 @@ class User extends CommonObject
 		$login=trim($login);
 
 		// Get user
-		$sql = "SELECT u.rowid, u.lastname, u.firstname, u.email, u.job, u.skype, u.signature, u.office_phone, u.office_fax, u.user_mobile,";
+		$sql = "SELECT u.rowid, u.lastname, u.firstname, u.gender, u.email, u.job, u.skype, u.signature, u.office_phone, u.office_fax, u.user_mobile,";
 		$sql.= " u.admin, u.login, u.note,";
 		$sql.= " u.pass, u.pass_crypted, u.pass_temp, u.api_key,";
 		$sql.= " u.fk_soc, u.fk_socpeople, u.fk_member, u.fk_user, u.ldap_sid,";
@@ -213,6 +222,7 @@ class User extends CommonObject
 				$this->firstname 	= $obj->firstname;
 
 				$this->login		= $obj->login;
+				$this->gender       = $obj->gender;
 				$this->pass_indatabase = $obj->pass;
 				$this->pass_indatabase_crypted = $obj->pass_crypted;
 				$this->pass			= $obj->pass;
@@ -938,6 +948,7 @@ class User extends CommonObject
 		$this->admin		= 0;
 		$this->lastname		= $contact->lastname;
 		$this->firstname	= $contact->firstname;
+		$this->gender		= $contact->gender;
 		$this->email		= $contact->email;
     	$this->skype 		= $contact->skype;
 		$this->office_phone	= $contact->phone_pro;
@@ -1009,6 +1020,7 @@ class User extends CommonObject
 		$this->admin = 0;
 		$this->lastname     = $member->lastname;
 		$this->firstname    = $member->firstname;
+		$this->gender		= $member->gender;
 		$this->email        = $member->email;
 		$this->fk_member    = $member->id;
 		$this->pass         = $member->pass;
@@ -1131,6 +1143,7 @@ class User extends CommonObject
 		$this->lastname     = trim($this->lastname);
 		$this->firstname    = trim($this->firstname);
 		$this->login        = trim($this->login);
+		$this->gender       = trim($this->gender);
 		$this->pass         = trim($this->pass);
         $this->api_key      = trim($this->api_key);
 		$this->office_phone = trim($this->office_phone);
@@ -1159,12 +1172,13 @@ class User extends CommonObject
 
 		$this->db->begin();
 
-		// Mise a jour autres infos
+		// Update datas
 		$sql = "UPDATE ".MAIN_DB_PREFIX."user SET";
 		$sql.= " lastname = '".$this->db->escape($this->lastname)."'";
 		$sql.= ", firstname = '".$this->db->escape($this->firstname)."'";
 		$sql.= ", login = '".$this->db->escape($this->login)."'";
         $sql.= ", api_key = '".$this->db->escape($this->api_key)."'";
+		$sql.= ", gender = ".($this->gender != -1 ? "'".$this->db->escape($this->gender)."'" : "null");	// 'man' or 'woman'
 		$sql.= ", admin = ".$this->admin;
 		$sql.= ", address = '".$this->db->escape($this->address)."'";
 		$sql.= ", zip = '".$this->db->escape($this->zip)."'";
@@ -1239,6 +1253,7 @@ class User extends CommonObject
 						$adh->firstname=$this->firstname;
 						$adh->lastname=$this->lastname;
 						$adh->login=$this->login;
+						$adh->gender=$this->gender;
 						$adh->pass=$this->pass;
 						$adh->societe=(empty($adh->societe) && $this->societe_id ? $this->societe_id : $adh->societe);
 
@@ -1776,6 +1791,27 @@ class User extends CommonObject
 		}
 	}
 
+
+	/**
+	 *  Return a link with photo
+	 * 	Use this->id,this->photo
+	 *
+	 *	@param	int		$width			Width of image
+	 *	@param	int		$height			Height of image
+	 *  @param	string	$cssclass		Force a css class
+	 *	@return	string					String with URL link
+	 */
+	function getPhotoUrl($width, $height, $cssclass='')
+	{
+		$result='';
+
+		$result.='<a href="'.DOL_URL_ROOT.'/user/card.php?id='.$this->id.'">';
+	    $result.=Form::showphoto('userphoto', $this, $width, $height, 0, $cssclass);
+	    $result.='</a>';
+
+	    return $result;
+	}
+
 	/**
 	 *  Return a link to the user card (with optionaly the picto)
 	 * 	Use this->id,this->lastname, this->firstname
@@ -1791,6 +1827,7 @@ class User extends CommonObject
 	{
 		global $langs, $conf, $db;
         global $dolibarr_main_authentication, $dolibarr_main_demo;
+        global $menumanager;
 
 
         $result = '';
@@ -1801,14 +1838,14 @@ class User extends CommonObject
         $label.= '<b>' . $langs->trans('Name') . ':</b> ' . $this->getFullName($langs,'','');
         if (! empty($this->login))
         $label.= '<br><b>' . $langs->trans('Login') . ':</b> ' . $this->login;
-        if (! empty($this->email))
         $label.= '<br><b>' . $langs->trans("EMail").':</b> '.$this->email;
         if (! empty($this->admin))
         $label.= '<br><b>' . $langs->trans("Administrator").'</b>: '.yn($this->admin);
-        if (! empty($this->societe_id)) {
+        if (! empty($this->societe_id))	// Add thirdparty for external users
+        {
             $thirdpartystatic = new Societe($db);
             $thirdpartystatic->fetch($this->societe_id);
-            $companylink = ' ('.$thirdpartystatic->getNomUrl('','').')';
+            $companylink = ' '.$thirdpartystatic->getNomUrl(2);	// picto only of company
             $company=' ('.$langs->trans("Company").': '.$thirdpartystatic->name.')';
         }
         $type=($this->societe_id?$langs->trans("External").$company:$langs->trans("Internal"));
@@ -1851,7 +1888,7 @@ class User extends CommonObject
             $result.=($link.img_object(($notooltip?'':$label), 'user', ($notooltip?'':'class="classfortooltip"')).$linkend);
             if ($withpicto != 2) $result.=' ';
 		}
-		$result.= $link . $this->getFullName($langs,'',-1,$maxlen) . $companylink . $linkend;
+		$result.= $link . $this->getFullName($langs,'',-1,$maxlen) . $linkend . $companylink;
 		return $result;
 	}
 
@@ -2051,6 +2088,7 @@ class User extends CommonObject
 
 		$this->lastname='DOLIBARR';
 		$this->firstname='SPECIMEN';
+		$this->gender='man';
 		$this->note='This is a note';
 		$this->email='email@specimen.com';
     	$this->skype='tom.hanson';
diff --git a/htdocs/user/class/usergroup.class.php b/htdocs/user/class/usergroup.class.php
index 35663f05978cd5a84042a911003c0fb8e5717d08..687c2077760c3d0ad58fbd89931d389645796b8d 100644
--- a/htdocs/user/class/usergroup.class.php
+++ b/htdocs/user/class/usergroup.class.php
@@ -40,8 +40,12 @@ class UserGroup extends CommonObject
 
 	var $id;			// Group id
 	var $entity;		// Entity of group
+	/**
+	 * @deprecated
+	 * @see name
+	 */
 	var $nom;			// Name of group
-	var $name;			// Name of group	// deprecated
+	var $name;			// Name of group
 	var $globalgroup;	// Global group
 	var $note;			// Note on group
 	var $datec;			// Creation date of group
diff --git a/htdocs/user/hierarchy.php b/htdocs/user/hierarchy.php
index a1118242a66648bc21d589719f7f01025d889805..132a03a9ed13db0142ff30a6ad76ce111fb68f9d 100644
--- a/htdocs/user/hierarchy.php
+++ b/htdocs/user/hierarchy.php
@@ -108,7 +108,7 @@ foreach($fulltree as $key => $val)
 }
 
 
-print '<table class="liste" width="100%">';
+print '<table class="liste nohover" width="100%">';
 print '<tr class="liste_titre"><td>'.$langs->trans("HierarchicView").'</td><td></td><td align="right"><div id="iddivjstreecontrol"><a href="#">'.img_picto('','object_category').' '.$langs->trans("UndoExpandAll").'</a>';
 print ' | <a href="#">'.img_picto('','object_category-expanded').' '.$langs->trans("ExpandAll").'</a></div></td></tr>';
 
diff --git a/htdocs/user/home.php b/htdocs/user/home.php
index b7b60ef2c7a39add95442be7e58db1346a9f993d..cb700b9701ed8e105a2cf9e28480d14494479e96 100644
--- a/htdocs/user/home.php
+++ b/htdocs/user/home.php
@@ -65,7 +65,7 @@ print '<div class="fichecenter"><div class="fichethirdleft">';
 $var=false;
 print '<form method="post" action="'.DOL_URL_ROOT.'/user/index.php">';
 print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
-print '<table class="noborder" width="100%">';
+print '<table class="noborder nohover" width="100%">';
 print '<tr class="liste_titre"><td colspan="3">'.$langs->trans("SearchAUser").'</td></tr>';
 print '<tr '.$bc[$var].'><td>';
 print $langs->trans("Ref").':</td><td><input class="flat" type="text" name="search_user" size="18"></td><td rowspan="2"><input type="submit" value="'.$langs->trans("Search").'" class="button"></td></tr>';
@@ -79,7 +79,7 @@ if ($canreadperms)
 	$var=false;
 	print '<form method="post" action="'.DOL_URL_ROOT.'/user/group/index.php">';
 	print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
-	print '<table class="noborder" width="100%">';
+	print '<table class="noborder nohover" width="100%">';
 	print '<tr class="liste_titre"><td colspan="3">'.$langs->trans("SearchAGroup").'</td></tr>';
 	print '<tr '.$bc[$var].'><td>';
 	print $langs->trans("Ref").':</td><td><input class="flat" type="text" name="search_group" size="18"></td><td rowspan="2"><input type="submit" value="'.$langs->trans("Search").'" class="button"></td></tr>';
diff --git a/htdocs/user/index.php b/htdocs/user/index.php
index 97b6feac5087922db35fe55a979623cd627fdd85..d0715101b09866e549629bb53b01dc06dca5ffa8 100644
--- a/htdocs/user/index.php
+++ b/htdocs/user/index.php
@@ -2,6 +2,7 @@
 /* Copyright (C) 2002-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
  * Copyright (C) 2004-2011 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C) 2005-2012 Regis Houssin        <regis.houssin@capnetworks.com>
+ * Copyright (C) 2015      Alexandre Spangaro   <alexandre.spangaro@gmail.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -62,6 +63,15 @@ $userstatic=new User($db);
 $companystatic = new Societe($db);
 $form = new Form($db);
 
+if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers
+{
+	$search_user="";
+	$search_login="";
+	$search_lastname="";
+	$search_firstname="";
+	$search_statut="";
+	$search_thirdparty="";
+}
 
 /*
  * View
@@ -144,9 +154,9 @@ if ($result)
     print $form->selectarray('search_statut', array('-1'=>'','0'=>$langs->trans('Disabled'),'1'=>$langs->trans('Enabled')),$search_statut);
     print '</td>';
 
-    print '<td class="liste_titre" align="right">';
-    print '<input class="liste_titre" type="image" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
-    print '</td>';
+	print '<td class="liste_titre" align="right"><input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
+	print '<input type="image" class="liste_titre" name="button_removefilter" src="'.img_picto($langs->trans("Search"),'searchclear.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'" title="'.dol_escape_htmltag($langs->trans("RemoveFilter")).'">';
+	print '</td>';
 
     print "</tr>\n";
 
diff --git a/htdocs/user/info.php b/htdocs/user/info.php
index 454ac080cbcf289dc2147cf8ead9be11dac7169c..646754668bd4abfb9791469db13908fa4a36cfbe 100644
--- a/htdocs/user/info.php
+++ b/htdocs/user/info.php
@@ -44,7 +44,7 @@ if ($user->id == $id)	// A user can always read its own card
 }
 $result = restrictedArea($user, 'user', $id, 'user&user', $feature2);
 
-// If user is not user read and no permission to read other users, we stop
+// If user is not user that read and no permission to read other users, we stop
 if (($fuser->id != $user->id) && (! $user->rights->user->user->lire))
   accessforbidden();
 
diff --git a/htdocs/user/note.php b/htdocs/user/note.php
index 7fb4ae06ed6b55b07007e064d0ff66058a6e1cf8..af96d8149e87748e073283b90d5318766e969a4f 100644
--- a/htdocs/user/note.php
+++ b/htdocs/user/note.php
@@ -1,6 +1,6 @@
 <?php
 /* Copyright (C) 2004      Rodolphe Quiedeville <rodolphe@quiedeville.org>
- * Copyright (C) 2004-2011 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2004-2015 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C) 2005-2012 Regis Houssin        <regis.houssin@capnetworks.com>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -112,8 +112,8 @@ if ($id)
     print '<tr><td>'.$langs->trans("Login").'</td><td class="valeur" colspan="3">'.$fuser->login.'&nbsp;</td></tr>';
 
 	// Note
-    print '<tr><td valign="top">'.$langs->trans("Note").'</td>';
-	print '<td valign="top" colspan="3">';
+    print '<tr><td class="tdtop">'.$langs->trans("Note").'</td>';
+	print '<td colspan="3">';
 	if ($action == 'edit' && $user->rights->user->user->creer)
 	{
 		print "<input type=\"hidden\" name=\"action\" value=\"update\">";
@@ -131,22 +131,22 @@ if ($id)
 
     print "</table>";
 
+	dol_fiche_end();
+
 	if ($action == 'edit')
 	{
-		print '<br><div class="center">';
+		print '<div class="center">';
 		print '<input type="submit" class="button" name="update" value="'.$langs->trans("Save").'">';
 		print '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
 		print '<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">';
 		print '</div>';
 	}
 
-	print "</form>\n";
 
+	/*
+     * Actions
+     */
 
-    /*
-    * Actions
-    */
-    print '</div>';
     print '<div class="tabsAction">';
 
     if ($user->rights->user->user->creer && $action != 'edit')
@@ -156,9 +156,9 @@ if ($id)
 
     print "</div>";
 
-
+	print "</form>\n";
 }
 
-$db->close();
-
 llxFooter();
+
+$db->close();
diff --git a/htdocs/user/param_ihm.php b/htdocs/user/param_ihm.php
index e749f2891fba76d17ec08f8402f20688702fd74a..53b98b5be98a122157c8b5d577e2b3b0261cf0ac 100644
--- a/htdocs/user/param_ihm.php
+++ b/htdocs/user/param_ihm.php
@@ -1,5 +1,5 @@
 <?php
-/* Copyright (C) 2005-2014 Laurent Destailleur  <eldy@users.sourceforge.net>
+/* Copyright (C) 2005-2015 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C) 2010-2012 Regis Houssin        <regis.houssin@capnetworks.com>
  * Copyright (C) 2013	   Florian Henry        <florian.henry@open-concept.pro.com>
  *
@@ -131,19 +131,19 @@ dol_fiche_head($head, 'guisetup', $title, 0, 'user');
 print '<table class="border" width="100%">';
 
 // Ref
-print '<tr><td width="25%" valign="top">'.$langs->trans("Ref").'</td>';
+print '<tr><td width="25%">'.$langs->trans("Ref").'</td>';
 print '<td colspan="2">';
 print $form->showrefnav($fuser,'id','',$user->rights->user->user->lire || $user->admin);
 print '</td>';
 print '</tr>';
 
 // LastName
-print '<tr><td width="25%" valign="top">'.$langs->trans("LastName").'</td>';
+print '<tr><td width="25%">'.$langs->trans("LastName").'</td>';
 print '<td colspan="2">'.$fuser->lastname.'</td>';
 print "</tr>\n";
 
 // FirstName
-print '<tr><td width="25%" valign="top">'.$langs->trans("FirstName").'</td>';
+print '<tr><td width="25%">'.$langs->trans("FirstName").'</td>';
 print '<td colspan="2">'.$fuser->firstname.'</td>';
 print "</tr>\n";
 
diff --git a/htdocs/user/perms.php b/htdocs/user/perms.php
index a1c7fbff5ea9f4159c93a4cc259ed1a707453d6c..2a5a842223193d7238e21250a46bd66705d5d6c7 100644
--- a/htdocs/user/perms.php
+++ b/htdocs/user/perms.php
@@ -1,24 +1,24 @@
 <?php
 /* Copyright (C) 2002-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
  * Copyright (C) 2002-2003 Jean-Louis Bergamo   <jlb@j1b.org>
-* Copyright (C) 2004-2012 Laurent Destailleur  <eldy@users.sourceforge.net>
-* Copyright (C) 2004      Eric Seigne          <eric.seigne@ryxeo.com>
-* Copyright (C) 2005-2012 Regis Houssin        <regis.houssin@capnetworks.com>
-* Copyright (C) 2012      Juanjo Menent        <jmenent@2byte.es>
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation; either version 3 of the License, or
-* (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
+ * Copyright (C) 2004-2015 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2004      Eric Seigne          <eric.seigne@ryxeo.com>
+ * Copyright (C) 2005-2012 Regis Houssin        <regis.houssin@capnetworks.com>
+ * Copyright (C) 2012      Juanjo Menent        <jmenent@2byte.es>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
 
 /**
  *       \file       htdocs/user/perms.php
@@ -256,19 +256,19 @@ else
 print '<table class="border" width="100%">';
 
 // Ref
-print '<tr><td width="25%" valign="top">'.$langs->trans("Ref").'</td>';
+print '<tr><td width="25%">'.$langs->trans("Ref").'</td>';
 print '<td>';
 print $form->showrefnav($fuser,'id','',$user->rights->user->user->lire || $user->admin);
 print '</td>';
 print '</tr>'."\n";
 
 // Lastname
-print '<tr><td width="25%" valign="top">'.$langs->trans("Lastname").'</td>';
+print '<tr><td width="25%">'.$langs->trans("Lastname").'</td>';
 print '<td>'.$fuser->lastname.'</td>';
 print '</tr>'."\n";
 
 // Firstname
-print '<tr><td width="25%" valign="top">'.$langs->trans("Firstname").'</td>';
+print '<tr><td width="25%">'.$langs->trans("Firstname").'</td>';
 print '<td>'.$fuser->firstname.'</td>';
 print '</tr>'."\n";
 
diff --git a/htdocs/viewimage.php b/htdocs/viewimage.php
index 9e22bb94cc2df0cccf4e450bd763c04861937eff..f9f2b54b2929c525ee46df956bb8d9b42635f90b 100644
--- a/htdocs/viewimage.php
+++ b/htdocs/viewimage.php
@@ -173,7 +173,7 @@ else					// Open and return file
     // This test is to avoid error images when image is not available (for example thumbs).
     if (! dol_is_file($original_file))
     {
-        $original_file=DOL_DOCUMENT_ROOT.'/theme/common/nophoto.jpg';
+        $original_file=DOL_DOCUMENT_ROOT.'/public/theme/common/nophoto.jpg';
         /*$error='Error: File '.$_GET["file"].' does not exists or filesystems permissions are not allowed';
         dol_print_error(0,$error);
         print $error;
diff --git a/htdocs/webservices/server_contact.php b/htdocs/webservices/server_contact.php
index 066c9f38b6c208af06cb2b2a2d1b5be3e18a0dbf..f439e791cb44f1b6675d8f1727cf431fccb5eb49 100644
--- a/htdocs/webservices/server_contact.php
+++ b/htdocs/webservices/server_contact.php
@@ -272,7 +272,7 @@ function getContact($authentication,$id,$ref_ext)
 	        ){
             	$contact_result_fields =array(
 	            	'id' => $contact->id,
-			'ref_ext' => $contact->ref_ext,
+	            	'ref_ext' => $contact->ref_ext,
 	            	'lastname' => $contact->lastname,
 	            	'firstname' => $contact->firstname,
 	            	'address' => $contact->address,
@@ -334,7 +334,7 @@ function getContact($authentication,$id,$ref_ext)
          else
          {
              $error++;
-             $errorcode='NOT_FOUND'; $errorlabel='Object not found for id='.$id.' nor ref='.$ref.' nor ref_ext='.$ref_ext;
+             $errorcode='NOT_FOUND'; $errorlabel='Object not found for id='.$id.' nor ref_ext='.$ref_ext;
          }
     }
 
@@ -615,9 +615,15 @@ function updateContact($authentication,$contact)
 	$error=0;
 	$fuser=check_authentication($authentication,$error,$errorcode,$errorlabel);
 	// Check parameters
-	if (empty($contact['id']))	{
-		$error++; $errorcode='KO'; $errorlabel="Contact id is mandatory.";
+	if (empty($contact['id']) && empty($contact['ref_ext']))	{
+		$error++; $errorcode='KO'; $errorlabel="Contact id or ref_ext is mandatory.";
 	}
+	// Check parameters
+    if (! $error && ($id && $ref_ext))
+    {
+        $error++;
+        $errorcode='BAD_PARAMETERS'; $errorlabel="Parameter id and ref_ext can't be all provided. You must choose one of them.";
+    }
 
 	if (! $error)
 	{
@@ -626,7 +632,7 @@ function updateContact($authentication,$contact)
 		include_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
 
 		$object=new Contact($db);
-		$result=$object->fetch($contact['id']);
+		$result=$object->fetch($contact['id'],0,$contact['ref_ext']);
 
 		if (!empty($object->id)) {
 
diff --git a/htdocs/webservices/server_invoice.php b/htdocs/webservices/server_invoice.php
index 3c1a122fa6f7e3c3c60e076d702f3f4fec33595f..4a495607a2939962950bde93780b341125d403b1 100644
--- a/htdocs/webservices/server_invoice.php
+++ b/htdocs/webservices/server_invoice.php
@@ -102,7 +102,6 @@ $server->wsdl->addComplexType(
     	'total' => array('name'=>'total','type'=>'xsd:double'),
         'date_start' => array('name'=>'date_start','type'=>'xsd:date'),
         'date_end' => array('name'=>'date_end','type'=>'xsd:date'),
-        'payment_mode_id' => array('name'=>'payment_mode_id','type'=>'xsd:string'),
         // From product
         'product_id' => array('name'=>'product_id','type'=>'xsd:int'),
         'product_ref' => array('name'=>'product_ref','type'=>'xsd:string'),
@@ -160,6 +159,7 @@ $server->wsdl->addComplexType(
         'date_creation' => array('name'=>'date_creation','type'=>'xsd:dateTime'),
         'date_validation' => array('name'=>'date_validation','type'=>'xsd:dateTime'),
         'date_modification' => array('name'=>'date_modification','type'=>'xsd:dateTime'),
+    	'payment_mode_id' => array('name'=>'payment_mode_id','type'=>'xsd:string'),
         'type' => array('name'=>'type','type'=>'xsd:int'),
         'total_net' => array('name'=>'type','type'=>'xsd:double'),
         'total_vat' => array('name'=>'type','type'=>'xsd:double'),
@@ -243,13 +243,37 @@ $server->register(
     // Entry values
     array('authentication'=>'tns:authentication','invoice'=>'tns:invoice'),
     // Exit values
-    array('result'=>'tns:result','id'=>'xsd:string','ref'=>'xsd:string'),
+    array('result'=>'tns:result','id'=>'xsd:string','ref'=>'xsd:string','ref_ext'=>'xsd:string'),
     $ns,
     $ns.'#createInvoice',
     $styledoc,
     $styleuse,
     'WS to create an invoice'
 );
+$server->register(
+		'createInvoiceFromOrder',
+		// Entry values
+		array('authentication'=>'tns:authentication','invoice'=>'tns:invoice'),
+		// Exit values
+		array('result'=>'tns:result','invoice'=>'tns:invoice'),
+		$ns,
+		$ns.'#createInvoiceFromOrder',
+		$styledoc,
+		$styleuse,
+		'WS to create an invoice from an order'
+);
+$server->register(
+    'updateInvoice',
+    // Entry values
+    array('authentication'=>'tns:authentication','invoice'=>'tns:invoice'),
+    // Exit values
+    array('result'=>'tns:result','id'=>'xsd:string','ref'=>'xsd:string','ref_ext'=>'xsd:string'),
+    $ns,
+    $ns.'#updateInvoice',
+    $styledoc,
+    $styleuse,
+    'WS to update an invoice'
+);
 
 
 /**
@@ -299,15 +323,19 @@ function getInvoice($authentication,$id='',$ref='',$ref_ext='')
 					$linesresp[]=array(
 						'id'=>$line->rowid,
 						'type'=>$line->product_type,
-                        'desc'=>dol_htmlcleanlastbr($line->desc),
-					    'total_net'=>$line->total_ht,
-						'total_vat'=>$line->total_tva,
-						'total'=>$line->total_ttc,
-                        'vat_rate'=>$line->tva_tx,
-                        'qty'=>$line->qty,
-                        'product_ref'=>$line->product_ref,
-                        'product_label'=>$line->product_label,
-                        'product_desc'=>$line->product_desc,
+                                                'desc'=>dol_htmlcleanlastbr($line->desc),
+                                                'total_net'=>$line->total_ht,
+                                                'total_vat'=>$line->total_tva,
+                                                'total'=>$line->total_ttc,
+                                                'vat_rate'=>$line->tva_tx,
+                                                'qty'=>$line->qty,
+                                                'unitprice'=> $line->subprice,
+                                                'date_start'=> $line->date_start?dol_print_date($line->date_start,'dayrfc'):'',
+                                                'date_end'=> $line->date_end?dol_print_date($line->date_end,'dayrfc'):'',
+                                                'product_id'=>$line->fk_product,
+                                                'product_ref'=>$line->product_ref,
+                                                'product_label'=>$line->product_label,
+                                                'product_desc'=>$line->product_desc,
 					);
 					$i++;
 				}
@@ -319,9 +347,11 @@ function getInvoice($authentication,$id='',$ref='',$ref_ext='')
 				    	'id' => $invoice->id,
 			   			'ref' => $invoice->ref,
 			        	'ref_ext' => $invoice->ref_ext?$invoice->ref_ext:'',   // If not defined, field is not added into soap
+			        	'thirdparty_id' => $invoice->socid,
 			        	'fk_user_author' => $invoice->user_author?$invoice->user_author:'',
 			        	'fk_user_valid' => $invoice->user_valid?$invoice->user_valid:'',
 			        	'date' => $invoice->date?dol_print_date($invoice->date,'dayrfc'):'',
+			        	'date_due' => $invoice->date_lim_reglement?dol_print_date($invoice->date_lim_reglement,'dayrfc'):'',
 			        	'date_creation' => $invoice->date_creation?dol_print_date($invoice->date_creation,'dayhourrfc'):'',
 			        	'date_validation' => $invoice->date_validation?dol_print_date($invoice->date_creation,'dayhourrfc'):'',
 			        	'date_modification' => $invoice->datem?dol_print_date($invoice->datem,'dayhourrfc'):'',
@@ -331,7 +361,8 @@ function getInvoice($authentication,$id='',$ref='',$ref_ext='')
 			        	'total' => $invoice->total_ttc,
 			        	'note_private' => $invoice->note_private?$invoice->note_private:'',
 			        	'note_public' => $invoice->note_public?$invoice->note_public:'',
-			        	'status'=> $invoice->statut,
+			        	'status' => $invoice->statut,
+					'project_id' => $invoic->fk_project,
 			        	'close_code' => $invoice->close_code?$invoice->close_code:'',
 			        	'close_note' => $invoice->close_note?$invoice->close_note:'',
 			        	'payment_mode_id' => $invoice->mode_reglement_id?$invoice->mode_reglement_id:'',
@@ -387,7 +418,7 @@ function getInvoicesForThirdParty($authentication,$idthirdparty)
 	if (! $error && empty($idthirdparty))
 	{
 		$error++;
-		$errorcode='BAD_PARAMETERS'; $errorlabel='Parameter id is not provided';
+		$errorcode='BAD_PARAMETERS'; $errorlabel='Parameter idthirdparty is not provided';
 	}
 
 	if (! $error)
@@ -433,6 +464,10 @@ function getInvoicesForThirdParty($authentication,$idthirdparty)
 	    					'total'=>$line->total_ttc,
 			    			'vat_rate'=>$line->tva_tx,
 			    			'qty'=>$line->qty,
+                                                'unitprice'=> $line->subprice,
+                                                'date_start'=> $line->date_start?dol_print_date($line->date_start,'dayrfc'):'',
+                                                'date_end'=> $line->date_end?dol_print_date($line->date_end,'dayrfc'):'',
+                                                'product_id'=>$line->fk_product,
 			    			'product_ref'=>$line->product_ref,
 			    			'product_label'=>$line->product_label,
 			    			'product_desc'=>$line->product_desc,
@@ -448,7 +483,7 @@ function getInvoicesForThirdParty($authentication,$idthirdparty)
 			    		'fk_user_valid' => $invoice->user_valid?$invoice->user_valid:'',
 			    		'date' => $invoice->date?dol_print_date($invoice->date,'dayrfc'):'',
 			    		'date_due' => $invoice->date_lim_reglement?dol_print_date($invoice->date_lim_reglement,'dayrfc'):'',
-					    'date_creation' => $invoice->date_creation?dol_print_date($invoice->date_creation,'dayhourrfc'):'',
+                                        'date_creation' => $invoice->date_creation?dol_print_date($invoice->date_creation,'dayhourrfc'):'',
 			    		'date_validation' => $invoice->date_validation?dol_print_date($invoice->date_creation,'dayhourrfc'):'',
 			    		'date_modification' => $invoice->datem?dol_print_date($invoice->datem,'dayhourrfc'):'',
 			    		'type' => $invoice->type,
@@ -458,9 +493,10 @@ function getInvoicesForThirdParty($authentication,$idthirdparty)
 			    		'note_private' => $invoice->note_private?$invoice->note_private:'',
 			    		'note_public' => $invoice->note_public?$invoice->note_public:'',
 			    		'status'=> $invoice->statut,
+                                        'project_id' => $invoic->fk_project,
 			    		'close_code' => $invoice->close_code?$invoice->close_code:'',
 			    		'close_note' => $invoice->close_note?$invoice->close_note:'',
-					'payment_mode_id' => $invoice->mode_reglement_id?$invoice->mode_reglement_id:'',
+			    		'payment_mode_id' => $invoice->mode_reglement_id?$invoice->mode_reglement_id:'',
 			    		'lines' => $linesresp
 			    	);
 			    }
@@ -503,7 +539,8 @@ function createInvoice($authentication,$invoice)
 
     $now=dol_now();
 
-    dol_syslog("Function: createInvoiceForThirdParty login=".$authentication['login']);
+    dol_syslog("Function: createInvoice login=".$authentication['login']." id=".$invoice->id.
+    		", ref=".$invoice->ref.", ref_ext=".$invoice->ref_ext);
 
     if ($authentication['entity']) $conf->entity=$authentication['entity'];
 
@@ -513,27 +550,32 @@ function createInvoice($authentication,$invoice)
     $error=0;
     $fuser=check_authentication($authentication,$error,$errorcode,$errorlabel);
 
+    // Check parameters
+    if (empty($invoice['id']) && empty($invoice['ref']) && empty($invoice['ref_ext']))	{
+    	$error++; $errorcode='KO'; $errorlabel="Invoice id or ref or ref_ext is mandatory.";
+    }
+    
     if (! $error)
     {
-        $newobject=new Facture($db);
-        $newobject->socid=$invoice['thirdparty_id'];
-        $newobject->type=$invoice['type'];
-        $newobject->ref_ext=$invoice['ref_ext'];
-        $newobject->date=dol_stringtotime($invoice['date'],'dayrfc');
-        $newobject->note_private=$invoice['note_private'];
-        $newobject->note_public=$invoice['note_public'];
-        $newobject->statut= Facture::STATUS_DRAFT;	// We start with status draft
-        $newobject->fk_project=$invoice['project_id'];
-        $newobject->date_creation=$now;
+        $new_invoice=new Facture($db);
+        $new_invoice->socid=$invoice['thirdparty_id'];
+        $new_invoice->type=$invoice['type'];
+        $new_invoice->ref_ext=$invoice['ref_ext'];
+        $new_invoice->date=dol_stringtotime($invoice['date'],'dayrfc');
+        $new_invoice->note_private=$invoice['note_private'];
+        $new_invoice->note_public=$invoice['note_public'];
+        $new_invoice->statut= Facture::STATUS_DRAFT;	// We start with status draft
+        $new_invoice->fk_project=$invoice['project_id'];
+        $new_invoice->date_creation=$now;
         
 	//take mode_reglement and cond_reglement from thirdparty
         $soc = new Societe($db);
-        $res=$soc->fetch($newobject->socid);
+        $res=$soc->fetch($new_invoice->socid);
         if ($res > 0) {
-    	    $newobject->mode_reglement_id = ! empty($invoice['payment_mode_id'])?$invoice['payment_mode_id']:$soc->mode_reglement_id;
-            $newobject->cond_reglement_id  = $soc->cond_reglement_id; 
+    	    $new_invoice->mode_reglement_id = ! empty($invoice['payment_mode_id'])?$invoice['payment_mode_id']:$soc->mode_reglement_id;
+            $new_invoice->cond_reglement_id  = $soc->cond_reglement_id; 
         }
-        else $newobject->mode_reglement_id = $invoice['payment_mode_id'];
+        else $new_invoice->mode_reglement_id = $invoice['payment_mode_id'];
 
         // Trick because nusoap does not store data with same structure if there is one or several lines
         $arrayoflines=array();
@@ -556,22 +598,22 @@ function createInvoice($authentication,$invoice)
             $newline->date_start=dol_stringtotime($line['date_start']);
             $newline->date_end=dol_stringtotime($line['date_end']);
             $newline->fk_product=$line['product_id'];
-            $newobject->lines[]=$newline;
+            $new_invoice->lines[]=$newline;
         }
         //var_dump($newobject->date_lim_reglement); exit;
         //var_dump($invoice['lines'][0]['type']);
 
         $db->begin();
 
-        $result=$newobject->create($fuser,0,dol_stringtotime($invoice['date_due'],'dayrfc'));
+        $result=$new_invoice->create($fuser,0,dol_stringtotime($invoice['date_due'],'dayrfc'));
         if ($result < 0)
         {
             $error++;
         }
 
-        if ($invoice['status'] == 1)   // We want invoice to have status validated
+        if (!$error && $invoice['status'] == Facture::STATUS_VALIDATED)   // We want invoice to have status validated
         {
-            $result=$newobject->validate($fuser);
+            $result=$new_invoice->validate($fuser);
             if ($result < 0)
             {
                 $error++;
@@ -581,14 +623,16 @@ function createInvoice($authentication,$invoice)
         if (! $error)
         {
             $db->commit();
-            $objectresp=array('result'=>array('result_code'=>'OK', 'result_label'=>''),'id'=>$newobject->id,'ref'=>$newobject->ref);
+            $objectresp=array('result'=>array('result_code'=>'OK', 'result_label'=>''),'id'=>$new_invoice->id,
+            		'ref'=>$new_invoice->ref,'ref_ext'=>$new_invoice->ref_ext);
         }
         else
         {
             $db->rollback();
             $error++;
             $errorcode='KO';
-            $errorlabel=$newobject->error;
+            $errorlabel=$new_invoice->error;
+            dol_syslog("Function: createInvoice error while creating".$errorlabel);
         }
 
     }
@@ -601,5 +645,197 @@ function createInvoice($authentication,$invoice)
     return $objectresp;
 }
 
+/**
+ * Create an invoice from an order
+ *
+ * @param	array		$authentication		Array of authentication information
+ * @param	string      $id_order			id of order to copy invoice from
+ * @param	string      $ref_order			ref of order to copy invoice from
+ * @param	string      $ref_ext_order		ref_ext of order to copy invoice from
+ * @param	string      $id_invoice			invoice id
+ * @param	string      $ref_invoice		invoice ref
+ * @param	string      $ref_ext_invoice	invoice ref_ext
+ * @return	array							Array result
+ */
+function createInvoiceFromOrder($authentication,$id_order='', $ref_order='', $ref_ext_order='', 
+		$id_invoice='', $ref_invoice='', $ref_ext_invoice='')
+{
+	global $db,$conf,$langs;
+
+	$now=dol_now();
+
+	dol_syslog("Function: createInvoiceFromOrder login=".$authentication['login']." id=".$id_order.
+			", ref=".$ref_order.", ref_ext=".$ref_ext_order);
+
+	if ($authentication['entity']) $conf->entity=$authentication['entity'];
+
+	// Init and check authentication
+	$objectresp=array();
+	$errorcode='';$errorlabel='';
+	$error=0;
+	$fuser=check_authentication($authentication,$error,$errorcode,$errorlabel);
+
+	// Check parameters
+	if (empty($id_order) && empty($ref_order) && empty($ref_ext_order))	{
+		$error++; $errorcode='KO'; $errorlabel="order id or ref or ref_ext is mandatory.";
+	} else if (empty($id_invoice) && empty($ref_invoice) && empty($ref_ext_invoice))	{
+		$error++; $errorcode='KO'; $errorlabel="invoice id or ref or ref_ext is mandatory.";
+	}
+	
+	//////////////////////
+	if (! $error)
+	{
+		$fuser->getrights();
+	
+		if ($fuser->rights->commande->lire)
+		{
+			$order=new Commande($db);
+			$result=$order->fetch($id,$ref,$ref_ext);
+			if ($result > 0)
+			{
+				// Security for external user
+				if( $socid && ( $socid != $order->socid) )
+				{
+					$error++;
+					$errorcode='PERMISSION_DENIED'; $errorlabel=$order->socid.'User does not have permission for this request';
+				}
+	
+				if(!$error)
+				{
+					
+					$newobject=new Facture($db);
+					$result = $newobject->createFromOrder($order);
+					
+					if ($result < 0)
+					{
+						$error++;
+						dol_syslog("Webservice server_invoice:: invoice creation from order failed", LOG_ERR);
+					}
+					
+				}
+			}
+			else
+			{
+				$error++;
+				$errorcode='NOT_FOUND'; $errorlabel='Object not found for id='.$id_order.' nor ref='.$ref_order.' nor ref_ext='.$ref_ext_order;
+			}
+		}
+		else
+		{
+			$error++;
+			$errorcode='PERMISSION_DENIED'; $errorlabel='User does not have permission for this request';
+		}
+	}
+	
+	if ($error)
+	{
+		$objectresp = array('result'=>array('result_code' => $errorcode, 'result_label' => $errorlabel));
+	}
+	else
+	{
+		$objectresp = array('result'=>array('result_code'=>'OK', 'result_label'=>''),'invoice'=>$newobject);
+		
+	}
+	
+	return $objectresp;
+}
+
+/**
+ * Uddate an invoice, only change the state of an invoice
+ *
+ * @param	array		$authentication		Array of authentication information
+ * @param	Facture		$invoice			Invoice
+ * @return	array							Array result
+ */
+function updateInvoice($authentication,$invoice)
+{
+	global $db,$conf,$langs;
+
+	dol_syslog("Function: updateInvoice login=".$authentication['login']." id=".$invoice['id'].
+    		", ref=".$invoice['ref'].", ref_ext=".$invoice['ref_ext']);
+
+	if ($authentication['entity']) $conf->entity=$authentication['entity'];
+
+	// Init and check authentication
+	$objectresp=array();
+	$errorcode='';$errorlabel='';
+	$error=0;
+	$fuser=check_authentication($authentication,$error,$errorcode,$errorlabel);
+
+	// Check parameters
+	if (empty($invoice['id']) && empty($invoice['ref']) && empty($invoice['ref_ext']))	{
+		$error++; $errorcode='KO'; $errorlabel="Invoice id or ref or ref_ext is mandatory.";
+	}
+	
+	if (! $error)
+	{
+		$objectfound=false;
+	
+		$object=new Facture($db);
+		$result=$object->fetch($invoice['id'],$invoice['ref'],$invoice['ref_ext'], '');
+	
+		if (!empty($object->id)) {
+	
+			$objectfound=true;
+	
+			$db->begin();
+	
+			if (isset($invoice['status']))
+			{
+				if ($invoice['status'] == Facture::STATUS_DRAFT)
+				{
+					$result = $object->set_draft($fuser);
+				}
+				if ($invoice['status'] == Facture::STATUS_VALIDATED)
+				{
+					$result = $object->validate($fuser);
+						
+					if ($result	>= 0)
+					{
+						// Define output language
+						$outputlangs = $langs;
+						$order->generateDocument($invoice->modelpdf, $outputlangs);		
+					}
+				}
+				if ($invoice['status'] == Facture::STATUS_CLOSED)
+				{
+					$result = $object->set_paid($fuser,$invoice->close_code,$invoice->close_note);			
+				}
+				if ($invoice['status'] == Facture::STATUS_ABANDONED)
+					$result = $object->set_canceled($fuser,$invoice->close_code,$invoice->close_note);
+			}
+		}
+	
+		if ((! $error) && ($objectfound))
+		{
+			$db->commit();
+			$objectresp=array(
+					'result'=>array('result_code'=>'OK', 'result_label'=>''),
+					'id'=>$object->id,
+					'ref'=>$object->ref,
+					'ref_ext'=>$object->ref_ext
+			);
+		}
+		elseif ($objectfound)
+		{
+			$db->rollback();
+			$error++;
+			$errorcode='KO';
+			$errorlabel=$object->error;
+		} else {
+			$error++;
+			$errorcode='NOT_FOUND';
+			$errorlabel='Invoice id='.$invoice['id'].' ref='.$invoice['ref'].' ref_ext='.$invoice['ref_ext'].' cannot be found';
+		}
+	}
+	
+	if ($error)
+	{
+		$objectresp = array('result'=>array('result_code' => $errorcode, 'result_label' => $errorlabel));
+	}
+	
+	return $objectresp;
+}
+
 // Return the results.
 $server->service(file_get_contents("php://input"));
diff --git a/htdocs/webservices/server_order.php b/htdocs/webservices/server_order.php
index 2f5955d8ec16246c9c97c1a9487012f1db202718..28518d24763da0496da8360625b504d5e04b976e 100644
--- a/htdocs/webservices/server_order.php
+++ b/htdocs/webservices/server_order.php
@@ -917,7 +917,17 @@ function updateOrder($authentication,$order)
 			if (isset($order['status']))
 			{
 				if ($order['status'] == -1) $result=$object->cancel($fuser);
-				if ($order['status'] == 1)  $result=$object->valid($fuser);
+				if ($order['status'] == 1)
+				{
+					$result=$object->valid($fuser);
+					if ($result	>= 0)
+					{
+						// Define output language
+						$outputlangs = $langs;
+						$order->generateDocument($order->modelpdf, $outputlangs);
+					
+					}
+				}
 				if ($order['status'] == 0)  $result=$object->set_reopen($fuser);
 				if ($order['status'] == 3)  $result=$object->cloture($fuser);
 			}
@@ -951,7 +961,9 @@ function updateOrder($authentication,$order)
 			$db->commit();
 			$objectresp=array(
 					'result'=>array('result_code'=>'OK', 'result_label'=>''),
-					'id'=>$object->id
+					'id'=>$object->id,
+					'ref'=>$object->ref,
+					'ref_ext'=>$object->ref_ext
 			);
 		}
 		elseif ($objectfound)
diff --git a/htdocs/webservices/server_thirdparty.php b/htdocs/webservices/server_thirdparty.php
index c7ca5911d6207da22ed0341edf073016fbaf6b03..542e2980c45b0f56f331f188715c278a8c37739e 100644
--- a/htdocs/webservices/server_thirdparty.php
+++ b/htdocs/webservices/server_thirdparty.php
@@ -258,8 +258,31 @@ $server->register(
     'WS to get list of thirdparties id and ref'
 );
 
+// Register WSDL
+$server->register(
+		'deleteThirdParty',
+		// Entry values
+		array('authentication'=>'tns:authentication','id'=>'xsd:string','ref'=>'xsd:string','ref_ext'=>'xsd:string'),
+		// Exit values
+		array('result'=>'tns:result','id'=>'xsd:string'),
+		$ns,
+		$ns.'#deleteThirdParty',
+		$styledoc,
+		$styleuse,
+		'WS to delete a thirdparty from its id, ref or ref_ext'
+);
+
 
 // Full methods code
+/**
+ * Get a thirdparty
+ *
+ * @param	array		$authentication		Array of authentication information
+ * @param	string		$id		    		internal id
+ * @param	string		$ref		    	internal reference
+ * @param	string		$ref_ext	   		external reference
+ * @return	array							Array result
+ */
 function getThirdParty($authentication,$id='',$ref='',$ref_ext='')
 {
 	global $db,$conf,$langs;
@@ -728,5 +751,88 @@ function getListOfThirdParties($authentication,$filterthirdparty)
     return $objectresp;
 }
 
+/**
+ * Delete a thirdparty
+ *
+ * @param	array		$authentication		Array of authentication information
+ * @param	string		$id		    		internal id
+ * @param	string		$ref		    	internal reference
+ * @param	string		$ref_ext	   		external reference
+ * @return	array							Array result
+ */
+function deleteThirdParty($authentication,$id='',$ref='',$ref_ext='')
+{
+	global $db,$conf,$langs;
+
+	dol_syslog("Function: deleteThirdParty login=".$authentication['login']." id=".$id." ref=".$ref." ref_ext=".$ref_ext);
+
+	if ($authentication['entity']) $conf->entity=$authentication['entity'];
+
+	// Init and check authentication
+	$objectresp=array();
+	$errorcode='';$errorlabel='';
+	$error=0;
+	$fuser=check_authentication($authentication,$error,$errorcode,$errorlabel);
+	// Check parameters
+	if (! $error && (($id && $ref) || ($id && $ref_ext) || ($ref && $ref_ext)))
+	{
+		dol_syslog("Function: deleteThirdParty checkparam");
+		$error++;
+		$errorcode='BAD_PARAMETERS'; $errorlabel="Parameter id, ref and ref_ext can't be both provided. You must choose one or other but not both.";
+	}
+	dol_syslog("Function: deleteThirdParty 1");
+	
+	if (! $error)
+	{
+		$fuser->getrights();
+
+		if ($fuser->rights->societe->lire && $fuser->rights->societe->supprimer)
+		{
+			$thirdparty=new Societe($db);
+			$result=$thirdparty->fetch($id,$ref,$ref_ext);
+				
+			if ($result > 0)
+			{
+				$db->begin();
+				
+				$result=$thirdparty->delete($thirdparty->id, $fuser);
+				
+				if ($result > 0)
+				{
+					$db->commit();
+						
+					$objectresp = array('result'=>array('result_code'=>'OK', 'result_label'=>''));
+				}
+				else
+				{						
+					$db->rollback();
+					$error++;
+					$errorcode='KO';
+					$errorlabel=$thirdparty->error;
+					dol_syslog("Function: deleteThirdParty cant delete");
+				}
+			}
+			else
+			{
+				$error++;
+				$errorcode='NOT_FOUND'; $errorlabel='Object not found for id='.$id.' nor ref='.$ref.' nor ref_ext='.$ref_ext;
+				
+			}
+		}
+		else
+		{
+			$error++;
+			$errorcode='PERMISSION_DENIED'; $errorlabel='User does not have permission for this request';
+		}
+	}
+
+	if ($error)
+	{
+		$objectresp = array('result'=>array('result_code' => $errorcode, 'result_label' => $errorlabel));
+	}
+
+	return $objectresp;
+}
+
 // Return the results.
 $server->service(file_get_contents("php://input"));
diff --git a/scripts/product/migrate_picture_path.php b/scripts/product/migrate_picture_path.php
new file mode 100755
index 0000000000000000000000000000000000000000..a03e254900693f2be95f8dfab3a5f17fcc72556b
--- /dev/null
+++ b/scripts/product/migrate_picture_path.php
@@ -0,0 +1,148 @@
+#!/usr/bin/php
+<?php
+/* Copyright (C) 2007-2013 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2015 Jean Heimburger  <http://tiaris.eu>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ *      \file       scripts/product/migrate_picture_path.php
+ *		\ingroup    scripts
+ *      \brief      Migrate pictures from old system prior to 3.7 to new path for 3.7+
+ *
+ */
+
+$sapi_type = php_sapi_name();
+$script_file = basename(__FILE__);
+$path=dirname(__FILE__).'/';
+
+// Test if batch mode
+if (substr($sapi_type, 0, 3) == 'cgi') {
+    echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
+	exit(-1);
+}
+
+@set_time_limit(0);							// No timeout for this script
+define('EVEN_IF_ONLY_LOGIN_ALLOWED',1);		// Set this define to 0 if you want to lock your script when dolibarr setup is "locked to admin user only".
+
+// Include and load Dolibarr environment variables
+require_once($path."../../htdocs/master.inc.php");
+require_once(DOL_DOCUMENT_ROOT."/product/class/product.class.php");
+require_once(DOL_DOCUMENT_ROOT."/core/lib/files.lib.php");
+// After this $db, $mysoc, $langs, $conf and $hookmanager are defined (Opened $db handler to database will be closed at end of file).
+// $user is created but empty.
+
+//$langs->setDefaultLang('en_US'); 	// To change default language of $langs
+$langs->load("main");				// To load language file for default language
+
+
+// Global variables
+$version=DOL_VERSION;
+$error=0;
+$forcecommit=0;
+
+
+print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
+dol_syslog($script_file." launched with arg ".join(',',$argv));
+
+if (! isset($argv[1]) || $argv[1] != 'product') {
+    print "Usage:  $script_file product\n";
+	exit(-1);
+}
+
+print '--- start'."\n";
+
+// Case to migrate products path
+if ($argv[1] == 'product')
+{
+	$product = new Product($db);
+
+	$sql = "SELECT rowid as pid from ".MAIN_DB_PREFIX."product";	// Get list of all products
+	$resql = $db->query($sql);
+	if ($resql)
+	{
+		while ($obj = $db->fetch_object($resql))
+		{
+			$product->fetch($obj->pid);
+			print " migrating product id=".$product->id." ref=".$product->ref."\n";
+			migrate_product_photospath($product);
+		}
+	}
+	else
+	{
+		print "\n sql error ".$sql;
+		exit;
+	}
+}
+
+
+$db->close();	// Close $db database opened handler
+
+exit($error);
+
+
+
+/**
+ * Migrate file from old path to new one for product $product
+ *
+ * @param 	Product	$product 	Object product
+ * @return	void
+ */
+function migrate_product_photospath($product)
+{
+	global $conf;
+
+	$dir = $conf->product->multidir_output[$product->entity];
+	$origin = $dir .'/'. get_exdir($product->id,2) . $product->id ."/photos";
+	$destin = $dir.'/'.dol_sanitizeFileName($product->ref);
+
+	$error = 0;
+
+	$origin_osencoded=dol_osencode($origin);
+	$destin_osencoded=dol_osencode($destin);
+	dol_mkdir($destin);
+
+	if (dol_is_dir($origin))
+	{
+		$handle=opendir($origin_osencoded);
+        if (is_resource($handle))
+        {
+        	while (($file = readdir($handle)) != false)
+    		{
+     			if ($file != '.' && $file != '..' && is_dir($origin_osencoded.'/'.$file))
+    			{
+    				$thumbs = opendir($origin_osencoded.'/'.$file);
+    				if (is_resource($thumbs))
+        			{
+	     				dol_mkdir($destin.'/'.$file);
+	     				while (($thumb = readdir($thumbs)) != false)
+		    			{
+		    				dol_move($origin.'/'.$file.'/'.$thumb, $destin.'/'.$file.'/'.$thumb);
+		    			}
+//		    			dol_delete_dir($origin.'/'.$file);
+        			}
+    			}
+    			else
+    			{
+    				if (dol_is_file($origin.'/'.$file) )
+    				{
+    					dol_move($origin.'/'.$file, $destin.'/'.$file);
+    				}
+
+    			}
+    		}
+        }
+	}
+}
diff --git a/test/phpunit/FilesLibTest.php b/test/phpunit/FilesLibTest.php
index 4477784ae7d69922da42beabed53e06f0d03ef01..e9fb713b857c8de025e1f95a06bc99f2db77273a 100644
--- a/test/phpunit/FilesLibTest.php
+++ b/test/phpunit/FilesLibTest.php
@@ -339,10 +339,15 @@ class FilesLibTest extends PHPUnit_Framework_TestCase
         print __METHOD__." result=".$result."\n";
         $this->assertTrue($result,'delete file');
 
-        // Again to test no error when deleteing a non existing file
-        $result=dol_delete_file($conf->admin->dir_temp.'/file2.csv');
+        // Again to test there is error when deleting a non existing file with option disableglob
+        $result=dol_delete_file($conf->admin->dir_temp.'/file2.csv',1,1);
+        print __METHOD__." result=".$result."\n";
+        $this->assertFalse($result,'delete file that does not exists with disableglo must return ko');
+
+        // Again to test there is no error when deleting a non existing file without option disableglob
+        $result=dol_delete_file($conf->admin->dir_temp.'/file2.csv',0,1);
         print __METHOD__." result=".$result."\n";
-        $this->assertTrue($result,'delete file that does not exists');
+        $this->assertTrue($result,'delete file that does not exists without disabling glob must return ok');
 
         // Test copy with special char / delete with blob
         $result=dol_copy($file, $conf->admin->dir_temp.'/file with [x] and é.csv',0,1);
diff --git a/test/phpunit/WebservicesInvoicesTest.php b/test/phpunit/WebservicesInvoicesTest.php
index 202f260bc8478c5e10bdc9439a142e80e9d865e1..bbfde0a66e532e22fb60eeccbffa96a48e9ad754 100755
--- a/test/phpunit/WebservicesInvoicesTest.php
+++ b/test/phpunit/WebservicesInvoicesTest.php
@@ -18,9 +18,9 @@
 
 /**
  *      \file       test/phpunit/WebservicesInvoicesTest.php
- *      \ingroup    test
+ *		\ingroup    test
  *      \brief      PHPUnit test
- *      \remarks    To run this script as CLI:  phpunit filename.php
+ *		\remarks	To run this script as CLI:  phpunit filename.php
  */
 
 global $conf,$user,$langs,$db;
@@ -31,10 +31,11 @@ require_once dirname(__FILE__).'/../../htdocs/core/lib/date.lib.php';
 require_once(NUSOAP_PATH.'/nusoap.php');        // Include SOAP
 
 
-if (empty($user->id)) {
-    print "Load permissions for admin user nb 1\n";
-    $user->fetch(1);
-    $user->getrights();
+if (empty($user->id))
+{
+	print "Load permissions for admin user nb 1\n";
+	$user->fetch(1);
+	$user->getrights();
 }
 $conf->global->MAIN_DISABLE_ALL_MAILS=1;
 
@@ -44,138 +45,369 @@ $conf->global->MAIN_DISABLE_ALL_MAILS=1;
  *
  * @backupGlobals disabled
  * @backupStaticAttributes enabled
- * @remarks backupGlobals must be disabled to have db,conf,user and lang not erased.
+ * @remarks	backupGlobals must be disabled to have db,conf,user and lang not erased.
  */
 class WebservicesInvoicesTest extends PHPUnit_Framework_TestCase
 {
-    protected $savconf;
-    protected $savuser;
-    protected $savlangs;
-    protected $savdb;
+	protected $savconf;
+	protected $savuser;
+	protected $savlangs;
+	protected $savdb;
+	protected $soapclient;
+	protected $socid;
+	
+	protected $ns = 'http://www.dolibarr.org/ns/';
+	
+	/**
+	 * Constructor
+	 * We save global variables into local variables
+	 *
+	 * @return DateLibTest
+	 */
+	function __construct()
+	{
+		//$this->sharedFixture
+		global $conf,$user,$langs,$db;
+		$this->savconf=$conf;
+		$this->savuser=$user;
+		$this->savlangs=$langs;
+		$this->savdb=$db;
+		$WS_DOL_URL = DOL_MAIN_URL_ROOT.'/webservices/server_invoice.php';
+		
+		
+		// Set the WebService URL
+		print __METHOD__." create nusoap_client for URL=".$WS_DOL_URL."\n";
+		$this->soapclient = new nusoap_client($WS_DOL_URL);
+		if ($this->soapclient)
+		{
+			$this->soapclient->soap_defencoding='UTF-8';
+			$this->soapclient->decodeUTF8(false);
+		}
+		
+		// create a third_party, needed to create an invoice
+		$societe=new Societe($db);
+		$societe->ref='';
+		$societe->name='name';
+		$societe->ref_ext='209';
+		$societe->status=1;
+		$societe->client=1;
+		$societe->fournisseur=0;
+		$societe->date_creation=$now;
+		$societe->tva_assuj=0;
+		$societe->particulier=0;
+		
+		$societe->create($user);
+		
+		$this->socid = $societe->id;
+		
+		print __METHOD__." societe created id=".$societe->id."\n";
 
-    /**
-     * Constructor
-     * We save global variables into local variables
-     *
-     * @return DateLibTest
-     */
-    function __construct()
-    {
-        //$this->sharedFixture
-        global $conf,$user,$langs,$db;
-        $this->savconf=$conf;
-        $this->savuser=$user;
-        $this->savlangs=$langs;
-        $this->savdb=$db;
-
-        print __METHOD__." db->type=".$db->type." user->id=".$user->id;
-        //print " - db ".$db->db;
-        print "\n";
-    }
+		print __METHOD__." db->type=".$db->type." user->id=".$user->id;
+		//print " - db ".$db->db;
+		print "\n";
+	}
 
-    // Static methods
-    public static function setUpBeforeClass()
+	// Static methods
+  	public static function setUpBeforeClass()
     {
-        global $conf,$user,$langs,$db;
-        $db->begin(); // This is to have all actions inside a transaction even if test launched without suite.
+    	global $conf,$user,$langs,$db;
+		$db->begin();	// This is to have all actions inside a transaction even if test launched without suite.
 
-        print __METHOD__."\n";
+    	print __METHOD__."\n";
     }
-
-    // tear down after class
     public static function tearDownAfterClass()
     {
-        global $conf,$user,$langs,$db;
-        $db->rollback();
+    	global $conf,$user,$langs,$db;
+		$db->rollback();
 
-        print __METHOD__."\n";
+		print __METHOD__."\n";
     }
 
-    /**
-     * Init phpunit tests
-     *
-     * @return	void
-     */
+	/**
+	 * Init phpunit tests
+	 *
+	 * @return	void
+	 */
     protected function setUp()
     {
-        global $conf,$user,$langs,$db;
-        $conf=$this->savconf;
-        $user=$this->savuser;
-        $langs=$this->savlangs;
-        $db=$this->savdb;
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+				
+		print __METHOD__."\n";
+		
+    }
 
-        print __METHOD__."\n";
+	/**
+	 * End phpunit tests
+	 *
+	 * @return	void
+	 */
+    protected function tearDown()
+    {
+    	print __METHOD__."\n";
     }
 
+
     /**
-     * End phpunit tests
+     * testWSInvoicesCreateInvoice
      *
-     * @return  void
+     * @return	int		invoice created
      */
-    protected function tearDown()
+    public function testWSInvoicesCreateInvoice()
     {
-        print __METHOD__."\n";
+    	global $conf,$user,$langs,$db;
+    	$conf=$this->savconf;
+    	$user=$this->savuser;
+    	$langs=$this->savlangs;
+    	$db=$this->savdb;
+
+    	$WS_METHOD  = 'createInvoice';
+
+    	// load societe first
+    	$societe=new Societe($db);
+    	$societe->fetch('', '', '209');
+    	print __METHOD__." societe loaded id=".$societe->id."\n";
+    
+    	
+    	$body = array (
+    			"id" => NULL,
+				"ref" => NULL,
+				"ref_ext" => "165",
+				"thirdparty_id" => $societe->id,
+				"fk_user_author" => NULL,
+				"fk_user_valid" => NULL,
+				"date" => "2015-04-19 20:16:53",
+				"date_due" => "",
+				"date_creation" => "",
+				"date_validation" => "",
+				"date_modification" =>  "",
+				"type" => "",
+				"total_net" => "36.30",
+				"total_vat" => "6.00",
+				"total" => "42.30",
+				"payment_mode_id" => 50,
+				"note_private" => "Synchronised from Prestashop",
+				"note_public" => "",
+				"status" => "1",
+				"close_code" => NULL ,
+				"close_note" => NULL,
+				"project_id" => NULL,
+				"lines" => array(
+					array("id" => NULL,
+					"type" => 0,
+					"desc" => "Horloge Vinyle Serge",
+					"vat_rate" => 20,
+					"qty" => 1,
+					"unitprice" => "30.000000",
+					"total_net" => "30.000000",
+					"total_vat" => "6.00",
+					"total" => "36.000000",
+					"date_start" => "",
+					"date_end" => "",
+					"payment_mode_id" => "",
+					"product_id" => "",
+					"product_ref" => "",
+					"product_label" => "",
+					"product_desc" => "" ))
+					);
+
+    	// Call the WebService method and store its result in $result.
+    	$authentication=array(
+    	'dolibarrkey'=>$conf->global->WEBSERVICES_KEY,
+    	'sourceapplication'=>'DEMO',
+    	'login'=>'admin',
+    	'password'=>'admin',
+    	'entity'=>'');
+
+    	// Test URL
+    	$result='';
+    	$parameters = array('authentication'=>$authentication,'invoice'=>$body);
+    	print __METHOD__." call method ".$WS_METHOD."\n";
+    	try {
+    		$result = $this->soapclient->call($WS_METHOD,$parameters,$this->ns,'');
+    	}
+    	catch(SoapFault $exception)
+    	{
+    		echo $exception;
+    		$result=0;
+    	}
+    	if (! $result || ! empty($result['faultstring']))
+    	{
+    		//var_dump($soapclient);
+    		print $this->soapclient->error_str;
+    		print "\n<br>\n";
+    		print $this->soapclient->request;
+    		print "\n<br>\n";
+    		print $this->soapclient->response;
+    		print "\n";
+    	}
+
+    	print __METHOD__." result=".$result['result']['result_code']."\n";
+    	$this->assertEquals('OK',$result['result']['result_code']);
+    	$this->assertEquals('165', $result['ref_ext']);
+
+
+    	return $result;
     }
+    
+    /**
+     * testWSInvoicesGetInvoiceByRefExt
+     * 
+     * Retrieve an invoice using ref_ext
+     * @depends testWSInvoicesCreateInvoice
+     * 
+     * @param	array	$result		Invoice created by create method
+     * @return	array				Invoice
+     */
+    public function testWSInvoicesGetInvoiceByRefExt($result)
+    {
+    	global $conf,$user,$langs,$db;
+    	$conf=$this->savconf;
+    	$user=$this->savuser;
+    	$langs=$this->savlangs;
+    	$db=$this->savdb;
+
+    	$WS_METHOD  = 'getInvoice';
+
+    	// Call the WebService method and store its result in $result.
+    	$authentication=array(
+    	'dolibarrkey'=>$conf->global->WEBSERVICES_KEY,
+    	'sourceapplication'=>'DEMO',
+    	'login'=>'admin',
+    	'password'=>'admin',
+    	'entity'=>'');
+
+    	// Test URL
+    	$result='';
+    	$parameters = array('authentication'=>$authentication,'id'=>NULL,'ref'=>NULL,'ref_ext'=>165);
+    	print __METHOD__." call method ".$WS_METHOD."\n";
+    	try {
+    		$result = $this->soapclient->call($WS_METHOD,$parameters,$this->ns,'');
+    	}
+    	catch(SoapFault $exception)
+    	{
+    		echo $exception;
+    		$result=0;
+    	}
+    	if (! $result || ! empty($result['faultstring']))
+    	{
+    		print $this->soapclient->error_str;
+    		print "\n<br>\n";
+    		print $this->soapclient->request;
+    		print "\n<br>\n";
+    		print $this->soapclient->response;
+    		print "\n";
+    	}
+    	print __METHOD__." result=".$result['result']['result_code']."\n";
+    	$this->assertEquals('OK',$result['result']['result_code']);
+    	$this->assertEquals('165', $result['invoice']['ref_ext']);
 
 
+    	return $result;
+    }
+    
     /**
-     * testWSInvoicesXxx
-     *
-     * @return int
+     * testWSInvoicesUpdateInvoiceByRefExt
+     * 
+     * Update an invoice using ref_ext
+     * @depends testWSInvoicesCreateInvoice
+     * 
+     * @param	array	$result		invoice created by create method
+     * @return	array 				Invoice
      */
-    public function testWSInvoicesXxx()
+    public function testWSInvoicesUpdateInvoiceByRefExt($result)
     {
-        global $conf,$user,$langs,$db;
-        $conf=$this->savconf;
-        $user=$this->savuser;
-        $langs=$this->savlangs;
-        $db=$this->savdb;
-
-        $WS_DOL_URL = DOL_MAIN_URL_ROOT.'/webservices/server_invoice.php';
-        $WS_METHOD  = 'getInvoice';
-        $ns='http://www.dolibarr.org/ns/';
-
-        // Set the WebService URL
-        print __METHOD__." create nusoap_client for URL=".$WS_DOL_URL."\n";
-        $soapclient = new nusoap_client($WS_DOL_URL);
-        if ($soapclient) {
-            $soapclient->soap_defencoding='UTF-8';
-            $soapclient->decodeUTF8(false);
-        }
-
-        // Call the WebService method and store its result in $result.
-        $authentication=array(
-            'dolibarrkey'=>$conf->global->WEBSERVICES_KEY,
-            'sourceapplication'=>'DEMO',
-            'login'=>'admin',
-            'password'=>'admin',
-            'entity'=>''
-        );
-
-        // Test URL
-        $result='';
-        $parameters = array('authentication'=>$authentication,'id'=>1);
-        print __METHOD__." call method ".$WS_METHOD."\n";
-        try {
-            $result = $soapclient->call($WS_METHOD,$parameters,$ns,'');
-        } catch(SoapFault $exception) {
-            echo $exception;
-            $result=0;
-        }
-        if (! $result || ! empty($result['faultstring'])) {
-            //var_dump($soapclient);
-            print $soapclient->error_str;
-            print "\n<br>\n";
-            print $soapclient->request;
-            print "\n<br>\n";
-            print $soapclient->response;
-            print "\n";
-        }
-
-        print __METHOD__." result=".$result."\n";
-        $this->assertEquals('OK',$result['result']['result_code']);
-
-        return $result;
+    	global $conf,$user,$langs,$db;
+    	$conf=$this->savconf;
+    	$user=$this->savuser;
+    	$langs=$this->savlangs;
+    	$db=$this->savdb;
+
+    	$WS_METHOD  = 'updateInvoice';
+
+    	// update status to 2
+    	$body = array (
+    		"id" => NULL,
+			"ref" => NULL,
+			"ref_ext" => "165",
+			"thirdparty_id" => "209",
+			"fk_user_author" => NULL,
+			"fk_user_valid" => NULL,
+			"date" => "2015-04-19 20:16:53",
+			"date_due" => "",
+			"date_creation" => "",
+			"date_validation" => "",
+			"date_modification" =>  "",
+			"type" => "",
+			"total_net" => "36.30",
+			"total_vat" => "6.00",
+			"total" => "42.30",
+			"payment_mode_id" => 50,
+			"note_private" => "Synchronised from Prestashop",
+			"note_public" => "",
+			"status" => "2",
+			"close_code" => NULL ,
+			"close_note" => NULL,
+			"project_id" => NULL,
+			"lines"  => array(
+				array(
+				"id"  => NULL,
+				"type" => 0,
+				"desc" => "Horloge Vinyle Serge",
+				"vat_rate" => 20,
+				"qty" => "1",
+				"unitprice" => "30.000000",
+				"total_net" => "30.000000",
+				"total_vat" => "6.00",
+				"total" => "36.000000",
+				"date_start" => "",
+				"date_end" => "",
+				"payment_mode_id" => "",
+				"product_id" => "",
+				"product_ref" => "",
+				"product_label" => "",
+				"product_desc" => "" ))
+			);
+
+    	// Call the WebService method and store its result in $result.
+    	$authentication=array(
+    	'dolibarrkey'=>$conf->global->WEBSERVICES_KEY,
+    	'sourceapplication'=>'DEMO',
+    	'login'=>'admin',
+    	'password'=>'admin',
+    	'entity'=>'');
+
+    	// Test URL
+    	$result='';
+    	$parameters = array('authentication'=>$authentication,'invoice'=>$body);
+    	print __METHOD__." call method ".$WS_METHOD."\n";
+    	try {
+    		$result = $this->soapclient->call($WS_METHOD,$parameters,$this->ns,'');
+    	}
+    	catch(SoapFault $exception)
+    	{
+    		echo $exception;
+    		$result=0;
+    	}
+    	if (! $result || ! empty($result['faultstring']))
+    	{
+    		print $this->soapclient->error_str;
+    		print "\n<br>\n";
+    		print $this->soapclient->request;
+    		print "\n<br>\n";
+    		print $this->soapclient->response;
+    		print "\n";
+    	}
+
+    	print __METHOD__." result=".$result['result']['result_code'].$result['result']['result_label']."\n";
+    	$this->assertEquals('OK',$result['result']['result_code']);
+    	$this->assertEquals('165', $result['ref_ext']);
+
+
+    	return $result;
     }
 
 }
diff --git a/test/phpunit/WebservicesThirdpartyTest.php b/test/phpunit/WebservicesThirdpartyTest.php
index 0c99d7d362ae24b0c8be6c833ffd111612afa324..2888c432e7325603052f816b97515eeb302167e6 100755
--- a/test/phpunit/WebservicesThirdpartyTest.php
+++ b/test/phpunit/WebservicesThirdpartyTest.php
@@ -52,6 +52,13 @@ class WebservicesThirdpartyTest extends PHPUnit_Framework_TestCase
     protected $savuser;
     protected $savlangs;
     protected $savdb;
+    protected $soapclient;
+    
+    private $_WS_DOL_URL;
+    private $_ns='http://www.dolibarr.org/ns/';
+    
+    
+    
 
     /**
      * Constructor
@@ -67,6 +74,16 @@ class WebservicesThirdpartyTest extends PHPUnit_Framework_TestCase
         $this->savuser=$user;
         $this->savlangs=$langs;
         $this->savdb=$db;
+        
+        $this->_WS_DOL_URL = DOL_MAIN_URL_ROOT.'/webservices/server_thirdparty.php';
+        
+        // Set the WebService URL
+        print __METHOD__." create nusoap_client for URL=".$this->_WS_DOL_URL."\n";
+        $this->soapclient = new nusoap_client($this->_WS_DOL_URL);
+        if ($this->soapclient) {
+        	$this->soapclient->soap_defencoding='UTF-8';
+        	$this->soapclient->decodeUTF8(false);
+        }
 
         print __METHOD__." db->type=".$db->type." user->id=".$user->id;
         //print " - db ".$db->db;
@@ -117,31 +134,114 @@ class WebservicesThirdpartyTest extends PHPUnit_Framework_TestCase
         print __METHOD__."\n";
     }
 
-
     /**
-     * testWSThirdpartygetThirdParty
+     * testWSThirdpartycreateThirdParty
      *
-     * @return int
+     * @return array thirdparty created
      */
-    public function testWSThirdpartygetThirdParty()
+    public function testWSThirdpartycreateThirdParty()
+    {
+    	global $conf,$user,$langs,$db;
+    	$conf=$this->savconf;
+    	$user=$this->savuser;
+    	$langs=$this->savlangs;
+    	$db=$this->savdb;
+    
+    	$WS_METHOD  = 'createThirdParty';
+   
+    
+    	// Call the WebService method and store its result in $result.
+    	$authentication=array(
+    			'dolibarrkey'=>$conf->global->WEBSERVICES_KEY,
+    			'sourceapplication'=>'DEMO',
+    			'login'=>'admin',
+    			'password'=>'admin',
+    			'entity'=>'');
+    
+    	$body = array (
+    			"id" => NULL,
+    			"ref" => "name",
+    			"ref_ext" => "12",
+    			"fk_user_author" => NULL,
+    			"status" => NULL,
+    			"client" => 1,
+    			"supplier" => 0,
+    			"customer_code" => "",
+    			"supplier_code" => "",
+    			"customer_code_accountancy" => "",
+    			"supplier_code_accountancy" => "",
+    			"date_creation" => "", // dateTime
+    			"date_modification" => "", // dateTime
+    			"note_private" => "",
+    			"note_public" => "",
+    			"address" => "",
+    			"zip" => "",
+    			"town" => "",
+    			"province_id" => "",
+    			"country_id" => "",
+    			"country_code" => "",
+    			"country" => "",
+    			"phone" => "",
+    			"fax" => "",
+    			"email" => "",
+    			"url" => "",
+    			"profid1" => "",
+    			"profid2" => "",
+    			"profid3" => "",
+    			"profid4" => "",
+    			"profid5" => "",
+    			"profid6" => "",
+    			"capital" => "",
+    			"vat_used" => "",
+    			"vat_number" => ""
+    	);
+    	
+    	// Test URL
+    	$result='';
+    	$parameters = array('authentication'=>$authentication, 'thirdparty'=>$body);
+    	print __METHOD__." call method ".$WS_METHOD."\n";
+    	try {
+    		$result = $this->soapclient->call($WS_METHOD,$parameters,$thid->ns,'');
+    	} catch(SoapFault $exception) {
+    		echo $exception;
+    		$result=0;
+    	}
+    	if (! $result || ! empty($result['faultstring'])) {
+    		//var_dump($soapclient);
+    		print $this->soapclient->error_str;
+    		print "\n<br>\n";
+    		print $this->soapclient->request;
+    		print "\n<br>\n";
+    		print $this->soapclient->response;
+    		print "\n";
+    	}
+    
+    	print __METHOD__." result=".$result['result']['result_code']."\n";
+    	$this->assertEquals('OK',$result['result']['result_code']);
+    	$this->assertEquals('name',$result['ref']);    	 
+    
+    	return $result;
+    }
+
+    /**
+     * testWSThirdpartygetThirdPartyById
+     * 
+     * Use id to retrieve thirdparty
+     * @depends testWSThirdpartycreateThirdParty
+     * 
+     * @param	array	$result		thirdparty created by create method
+     * @return	array				thirpdarty updated
+     */
+    public function testWSThirdpartygetThirdPartyById($result)
     {
         global $conf,$user,$langs,$db;
         $conf=$this->savconf;
         $user=$this->savuser;
         $langs=$this->savlangs;
         $db=$this->savdb;
+        $id = $result['id'];
 
-        $WS_DOL_URL = DOL_MAIN_URL_ROOT.'/webservices/server_thirdparty.php';
         $WS_METHOD  = 'getThirdParty';
-        $ns='http://www.dolibarr.org/ns/';
-
-        // Set the WebService URL
-        print __METHOD__." create nusoap_client for URL=".$WS_DOL_URL."\n";
-        $soapclient = new nusoap_client($WS_DOL_URL);
-        if ($soapclient) {
-            $soapclient->soap_defencoding='UTF-8';
-            $soapclient->decodeUTF8(false);
-        }
 
         // Call the WebService method and store its result in $result.
         $authentication=array(
@@ -151,30 +251,150 @@ class WebservicesThirdpartyTest extends PHPUnit_Framework_TestCase
         'password'=>'admin',
         'entity'=>'');
 
-        // Test URL
         $result='';
-        $parameters = array('authentication'=>$authentication, 'id'=>1);
+        $parameters = array('authentication'=>$authentication, 'id'=>$id);
         print __METHOD__." call method ".$WS_METHOD."\n";
         try {
-            $result = $soapclient->call($WS_METHOD,$parameters,$ns,'');
+            $result = $this->soapclient->call($WS_METHOD,$parameters,$this->_ns,'');
         } catch(SoapFault $exception) {
             echo $exception;
             $result=0;
         }
         if (! $result || ! empty($result['faultstring'])) {
             //var_dump($soapclient);
-            print $soapclient->error_str;
+            print $this->soapclient->error_str;
             print "\n<br>\n";
-            print $soapclient->request;
+            print $this->soapclient->request;
             print "\n<br>\n";
-            print $soapclient->response;
+            print $this->soapclient->response;
             print "\n";
         }
 
-        print __METHOD__." result=".$result."\n";
+        print __METHOD__." result=".$result['result']['result_code']."\n";
         $this->assertEquals('OK',$result['result']['result_code']);
-
+        $this->assertEquals($id, $result['thirdparty']['id']);
+        $this->assertEquals('name', $result['thirdparty']['ref']);
+        $this->assertEquals('12', $result['thirdparty']['ref_ext']);
+        $this->assertEquals('0', $result['thirdparty']['status']);
+        $this->assertEquals('1', $result['thirdparty']['client']);
+        $this->assertEquals('0', $result['thirdparty']['supplier']);
+        
+        
         return $result;
     }
+    
+    /**
+     * testWSThirdpartygetThirdPartyByRefExt
+     *
+     * Use ref_ext to retrieve thirdparty
+     *
+	 * @depends testWSThirdpartycreateThirdParty
+	 * 
+     * @param	array	$result		thirdparty created by create method
+     * @return	array				thirdparty
+     */
+    public function testWSThirdpartygetThirdPartyByRefExt($result)
+    {
+    	global $conf,$user,$langs,$db;
+    	$conf=$this->savconf;
+    	$user=$this->savuser;
+    	$langs=$this->savlangs;
+    	$db=$this->savdb;
+    	$id = $result['id'];
+    
+    	$WS_METHOD  = 'getThirdParty';
+    
+    	// Call the WebService method and store its result in $result.
+    	$authentication=array(
+    			'dolibarrkey'=>$conf->global->WEBSERVICES_KEY,
+    			'sourceapplication'=>'DEMO',
+    			'login'=>'admin',
+    			'password'=>'admin',
+    			'entity'=>'');
+    
+    	// Test URL
+    	$result='';
+    	$parameters = array('authentication'=>$authentication, 'id'=>'', 'ref'=>'', 'ref_ext'=>'12');
+    	print __METHOD__." call method ".$WS_METHOD."\n";
+    	try {
+    		$result = $this->soapclient->call($WS_METHOD,$parameters,$this->_ns,'');
+    	} catch(SoapFault $exception) {
+    		echo $exception;
+    		$result=0;
+    	}
+    	print $this->soapclient->response;
+    	if (! $result || ! empty($result['faultstring'])) {
+    		//var_dump($soapclient);
+    		print $this->soapclient->error_str;
+    		print "\n<br>\n";
+    		print $this->soapclient->request;
+    		print "\n<br>\n";
+    		print $this->soapclient->response;
+    		print "\n";
+    	}
+        
+    	print __METHOD__." result=".$result['result']['result_code']."\n";
+    	$this->assertEquals('OK',$result['result']['result_code']);
+    	$this->assertEquals($id, $result['thirdparty']['id']);
+    	$this->assertEquals('name', $result['thirdparty']['ref']);
+    	$this->assertEquals('12', $result['thirdparty']['ref_ext']);
+    	$this->assertEquals('0', $result['thirdparty']['status']);
+    	$this->assertEquals('1', $result['thirdparty']['client']);
+    	$this->assertEquals('0', $result['thirdparty']['supplier']);
+    
+    
+    	return $result;
+    }
+    
+    /**
+     * testWSThirdpartydeleteThirdParty
+     *
+     * @depends testWSThirdpartycreateThirdParty
+     *
+     * @param	array	$result		thirdparty created by create method
+     * @return	array				thirdparty
+     */
+    public function testWSThirdpartydeleteThirdPartyById($result)
+    {
+    	global $conf,$user,$langs,$db;
+    	$conf=$this->savconf;
+    	$user=$this->savuser;
+    	$langs=$this->savlangs;
+    	$db=$this->savdb;
+    	$id = $result['id'];
+    
+    	$WS_METHOD  = 'deleteThirdParty';
+    
+    	// Call the WebService method and store its result in $result.
+    	$authentication=array(
+    			'dolibarrkey'=>$conf->global->WEBSERVICES_KEY,
+    			'sourceapplication'=>'DEMO',
+    			'login'=>'admin',
+    			'password'=>'admin',
+    			'entity'=>'');
+    
+    	$result='';
+    	$parameters = array('authentication'=>$authentication, 'id'=>$id, 'ref'=>'', 'ref_ext'=>'');
+    	print __METHOD__." call method ".$WS_METHOD."\n";
+    	try {
+    		$result = $this->soapclient->call($WS_METHOD,$parameters,$this->_ns,'');
+    	} catch(SoapFault $exception) {
+    		echo $exception;
+    		$result=0;
+    	}
+    	if (! $result || ! empty($result['faultstring'])) {
+    		print $this->soapclient->error_str;
+    		print "\n<br>\n";
+    		print $this->soapclient->request;
+    		print "\n<br>\n";
+    		print $this->soapclient->response;
+    		print "\n";
+    	}
+
+    	print __METHOD__." result=".$result['result']['result_code']."\n";
+    	$this->assertEquals('OK',$result['result']['result_code']);
+    
+    	return $result;
+    }
 
 }