diff --git a/ChangeLog b/ChangeLog
index 22a4e6fde72..c4b8ccf1e55 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -88,7 +88,7 @@ WARNING: If you used external modules, some of them may need to be upgraded due
***** ChangeLog for 3.3.2 compared to 3.3.1 *****
-- Fix: Ducth (nl_NL) translation
+- Fix: Dutch (nl_NL) translation
- Fix: [ bug #790 ] Spanish localtax RE not being correctly calculated
- Generalize fix: file with a specific mask not found, again
- Fix: translations and BILL_SUPPLIER_BUILDDOC trigger
@@ -101,9 +101,9 @@ WARNING: If you used external modules, some of them may need to be upgraded due
- Fix: [ bug #806 ] Margins module with orders2invoice does not respect cost price
- Fix: Orderstoinvoice didn't act as expected when no order was checked
- Fix: Bad link to all proposals into Third party card if customer is prospect
+- Fix: [ bug #774 ] Bug on creating event with box "all day" crossed
- Fix: [ bug #789 ] VAT not being calculated in POS
- Fix: [ bug #794 ] Lost filter on zipcode in prospect list
-- Fix: [ bug #774 ] Bug on creating event with box "all day" crossed
- Fix: [ bug #810 ] Cannot update ODT template path
- Fix: [ bug #824 ] MAIN_DB_PREFIX not use into dictionnary
- Fix: [ bug #828 ] Error when code_region is not a number in llx_c_regions (with postgres)
diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php
index 6405e8ac8a8..41178e36012 100644
--- a/htdocs/admin/dict.php
+++ b/htdocs/admin/dict.php
@@ -391,7 +391,7 @@ if ($id == 11)
// Define localtax_typeList (used for dictionnary "c_tva")
$localtax_typeList = array();
-if (GETPOST("id") == 10)
+if ($id == 10)
{
$localtax_typeList = array(
"0" => $langs->trans("No"),
@@ -441,22 +441,32 @@ if (GETPOST('actionadd') || GETPOST('actionmodify'))
if ($fieldnamekey == 'position') $fieldnamekey = 'Position';
if ($fieldnamekey == 'unicode') $fieldnamekey = 'Unicode';
- $msg.=$langs->trans("ErrorFieldRequired",$langs->transnoentities($fieldnamekey)).'
';
+ $msg.=$langs->transnoentities("ErrorFieldRequired", $langs->transnoentities($fieldnamekey)).'
';
}
}
// Other checks
if ($tabname[$id] == MAIN_DB_PREFIX."c_actioncomm" && isset($_POST["type"]) && in_array($_POST["type"],array('system','systemauto'))) {
$ok=0;
- $msg.="Value 'system' and 'systemauto' for type is reserved. You can use 'user' as value to add your own record.
";
+ $msg.= $langs->transnoentities('ErrorReservedTypeSystemSystemAuto').'
';
}
- if (isset($_POST["code"]) && $_POST["code"]=='0') {
- $ok=0;
- $msg.="Code can't contains value 0
";
+ if (isset($_POST["code"]))
+ {
+ if ($_POST["code"]=='0')
+ {
+ $ok=0;
+ $msg.= $langs->transnoentities('ErrorCodeCantContainZero').'
';
+ }
+ if (!is_numeric($_POST['code']))
+ {
+ $ok = 0;
+ $msg .= $langs->transnoentities('ErrorFieldFormat', $langs->transnoentities('Code')).'
';
+ }
}
if (isset($_POST["country"]) && $_POST["country"]=='0') {
$ok=0;
- $msg.=$langs->trans("ErrorFieldRequired",$langs->trans("Country")).'
';
+ $msg.=$langs->transnoentities("ErrorFieldRequired",$langs->transnoentities("Country")).'
';
}
+
// Clean some parameters
if (isset($_POST["localtax1"]) && empty($_POST["localtax1"])) $_POST["localtax1"]='0'; // If empty, we force to 0
if (isset($_POST["localtax2"]) && empty($_POST["localtax2"])) $_POST["localtax2"]='0'; // If empty, we force to 0
@@ -518,7 +528,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify'))
else
{
if ($db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') {
- $msg=$langs->trans("ErrorRecordAlreadyExists").'
';
+ $msg=$langs->transnoentities("ErrorRecordAlreadyExists").'
';
}
else {
dol_print_error($db);
@@ -588,7 +598,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes') // delete
{
if ($db->errno() == 'DB_ERROR_CHILD_EXISTS')
{
- $msg='
'.$langs->trans("ErrorRecordIsUsedByChild").'
';
+ $msg=''.$langs->transnoentities("ErrorRecordIsUsedByChild").'
';
}
else
{
@@ -994,6 +1004,7 @@ if ($id)
$valuetoshow=($obj->code && $key != "Civility".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]);
}
else if ($fieldlist[$field]=='libelle' && $tabname[$id]==MAIN_DB_PREFIX.'c_type_contact') {
+ $langs->load('agenda');
$key=$langs->trans("TypeContact_".$obj->element."_".$obj->source."_".strtoupper($obj->code));
$valuetoshow=($obj->code && $key != "TypeContact_".$obj->element."_".$obj->source."_".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]);
}
diff --git a/htdocs/admin/menus/edit.php b/htdocs/admin/menus/edit.php
index 569200f35e4..f7bd7ad95d7 100644
--- a/htdocs/admin/menus/edit.php
+++ b/htdocs/admin/menus/edit.php
@@ -29,6 +29,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/menubase.class.php';
$langs->load("admin");
+$langs->load('other');
if (! $user->admin) accessforbidden();
diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php
index 58e57d7f88c..a2a9cf6da13 100644
--- a/htdocs/compta/facture/class/facture.class.php
+++ b/htdocs/compta/facture/class/facture.class.php
@@ -3528,31 +3528,31 @@ class FactureLigne
$this->db->begin();
- // Mise a jour ligne en base
- $sql = "UPDATE ".MAIN_DB_PREFIX."facturedet SET";
- $sql.= " description='".$this->db->escape($this->desc)."'";
- $sql.= ",label=".(! empty($this->label)?"'".$this->db->escape($this->label)."'":"null");
- $sql.= ",subprice=".price2num($this->subprice)."";
- $sql.= ",remise_percent=".price2num($this->remise_percent)."";
- if ($this->fk_remise_except) $sql.= ",fk_remise_except=".$this->fk_remise_except;
- else $sql.= ",fk_remise_except=null";
- $sql.= ",tva_tx=".price2num($this->tva_tx)."";
- $sql.= ",localtax1_tx=".price2num($this->localtax1_tx)."";
- $sql.= ",localtax2_tx=".price2num($this->localtax2_tx)."";
- $sql.= ",qty=".price2num($this->qty)."";
- $sql.= ",date_start=".(! empty($this->date_start)?"'".$this->db->idate($this->date_start)."'":"null");
- $sql.= ",date_end=".(! empty($this->date_end)?"'".$this->db->idate($this->date_end)."'":"null");
- $sql.= ",product_type=".$this->product_type;
- $sql.= ",info_bits='".$this->info_bits."'";
- $sql.= ",special_code='".$this->special_code."'";
- if (empty($this->skip_update_total))
- {
- $sql.= ",total_ht=".price2num($this->total_ht)."";
- $sql.= ",total_tva=".price2num($this->total_tva)."";
- $sql.= ",total_ttc=".price2num($this->total_ttc)."";
- $sql.= ",total_localtax1=".price2num($this->total_localtax1)."";
- $sql.= ",total_localtax2=".price2num($this->total_localtax2)."";
- }
+ // Mise a jour ligne en base
+ $sql = "UPDATE ".MAIN_DB_PREFIX."facturedet SET";
+ $sql.= " description='".$this->db->escape($this->desc)."'";
+ $sql.= ",label=".(! empty($this->label)?"'".$this->db->escape($this->label)."'":"null");
+ $sql.= ",subprice=".price2num($this->subprice)."";
+ $sql.= ",remise_percent=".price2num($this->remise_percent)."";
+ if ($this->fk_remise_except) $sql.= ",fk_remise_except=".$this->fk_remise_except;
+ else $sql.= ",fk_remise_except=null";
+ $sql.= ",tva_tx=".price2num($this->tva_tx)."";
+ $sql.= ",localtax1_tx=".price2num($this->localtax1_tx)."";
+ $sql.= ",localtax2_tx=".price2num($this->localtax2_tx)."";
+ $sql.= ",qty=".price2num($this->qty)."";
+ $sql.= ",date_start=".(! empty($this->date_start)?"'".$this->db->idate($this->date_start)."'":"null");
+ $sql.= ",date_end=".(! empty($this->date_end)?"'".$this->db->idate($this->date_end)."'":"null");
+ $sql.= ",product_type=".$this->product_type;
+ $sql.= ",info_bits='".$this->info_bits."'";
+ $sql.= ",special_code='".$this->special_code."'";
+ if (empty($this->skip_update_total))
+ {
+ $sql.= ",total_ht=".price2num($this->total_ht)."";
+ $sql.= ",total_tva=".price2num($this->total_tva)."";
+ $sql.= ",total_ttc=".price2num($this->total_ttc)."";
+ $sql.= ",total_localtax1=".price2num($this->total_localtax1)."";
+ $sql.= ",total_localtax2=".price2num($this->total_localtax2)."";
+ }
$sql.= " , fk_product_fournisseur_price=".(! empty($this->fk_fournprice)?"'".$this->db->escape($this->fk_fournprice)."'":"null");
$sql.= " , buy_price_ht='".price2num($this->pa_ht)."'";
$sql.= ",fk_parent_line=".($this->fk_parent_line>0?$this->fk_parent_line:"null");
diff --git a/htdocs/core/class/hookmanager.class.php b/htdocs/core/class/hookmanager.class.php
index 0284872cb92..6deb0161c2a 100755
--- a/htdocs/core/class/hookmanager.class.php
+++ b/htdocs/core/class/hookmanager.class.php
@@ -144,7 +144,6 @@ class HookManager
foreach($modules as $module => $actionclassinstance)
{
//print 'class='.get_class($actionclassinstance).' method='.$method.' action='.$action;
-
// jump to next class if method does not exists
if (! method_exists($actionclassinstance,$method)) continue;
// test to avoid to run twice a hook, when a module implements several active contexts
@@ -178,7 +177,7 @@ class HookManager
$result = $actionclassinstance->$method($parameters, $object, $action, $this); // $object and $action can be changed by method ($object->id during creation for example or $action to go back to other action for example)
- if (is_array($actionclassinstance->results)) $this->resArray =array_merge($this->resArray, $actionclassinstance->results);
+ if (! empty($actionclassinstance->results) && is_array($actionclassinstance->results)) $this->resArray =array_merge($this->resArray, $actionclassinstance->results);
if (! empty($actionclassinstance->resprints)) $this->resPrint.=$actionclassinstance->resprints;
// TODO. remove this. array result must be set into $actionclassinstance->results
diff --git a/htdocs/externalsite/frames.php b/htdocs/externalsite/frames.php
index e93dc392d93..825398f3636 100644
--- a/htdocs/externalsite/frames.php
+++ b/htdocs/externalsite/frames.php
@@ -25,12 +25,12 @@
require '../main.inc.php';
-$langs->load("externalsite@externalsite");
+$langs->load("externalsite");
if (empty($conf->global->EXTERNALSITE_URL))
{
llxHeader();
- print 'Module ExternalSite was not configured properly.
';
+ print ''.$langs->trans('ExternalSiteModuleNotComplete').'
';
llxFooter();
}
diff --git a/htdocs/externalsite/frametop.php b/htdocs/externalsite/frametop.php
index 5808c974909..0bf7a259c8f 100644
--- a/htdocs/externalsite/frametop.php
+++ b/htdocs/externalsite/frametop.php
@@ -24,7 +24,7 @@
require ("../main.inc.php");
-$langs->load("@externalsite");
+$langs->load("externalsite");
top_htmlhead("","");
top_menu("","","_top");
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index 46d893c3984..290707219bb 100644
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -46,6 +46,8 @@ ErrorModuleRequireDolibarrVersion=Error, this module requires Dolibarr version %
ErrorDecimalLargerThanAreForbidden=Error, a precision higher than %s is not supported.
DictionnarySetup=Dictionary setup
Dictionnary=Dictionaries
+ErrorReservedTypeSystemSystemAuto=Value 'system' and 'systemauto' for type is reserved. You can use 'user' as value to add your own record
+ErrorCodeCantContainZero=Code can't contain value 0
DisableJavascript=Disable JavaScript and Ajax functions
ConfirmAjax=Use Ajax confirmation popups
UseSearchToSelectCompany=Use autocompletion fields to choose third parties (instead of using a list box).
Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant SOCIETE_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string.
@@ -546,6 +548,7 @@ Permission98=Dispatch invoice accountancy lines
Permission101=Read sendings
Permission102=Create/modify sendings
Permission104=Validate sendings
+Permission106=Export sendings
Permission109=Delete sendings
Permission111=Read financial accounts
Permission112=Create/modify/delete and compare transactions
diff --git a/htdocs/langs/en_US/commercial.lang b/htdocs/langs/en_US/commercial.lang
index b6bd7c9881a..09fd8e6e300 100644
--- a/htdocs/langs/en_US/commercial.lang
+++ b/htdocs/langs/en_US/commercial.lang
@@ -81,6 +81,7 @@ ActionAC_SHIP=Send shipping by mail
ActionAC_SUP_ORD=Send supplier order by mail
ActionAC_SUP_INV=Send supplier invoice by mail
ActionAC_OTH=Other
+ActionAC_OTH_AUTO=Other (automatically inserted events)
ActionAC_MANUAL=Manually inserted events
ActionAC_AUTO=Automatically inserted events
Stats=Sales statistics
@@ -92,4 +93,4 @@ NoData=There is no data
StatusProsp=Prospect status
DraftPropals=Draft commercial proposals
SearchPropal=Search a commercial proposal
-CommercialDashboard=Commercial summary
\ No newline at end of file
+CommercialDashboard=Commercial summary
diff --git a/htdocs/langs/en_US/externalsite.lang b/htdocs/langs/en_US/externalsite.lang
index 3ae2098b92a..213fa314ab1 100644
--- a/htdocs/langs/en_US/externalsite.lang
+++ b/htdocs/langs/en_US/externalsite.lang
@@ -1,4 +1,5 @@
# Dolibarr language file - en_US - externalsite
CHARSET=UTF-8
ExternalSiteSetup=Setup link to external website
-ExternalSiteURL=External Site URL
\ No newline at end of file
+ExternalSiteURL=External Site URL
+ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly.
\ No newline at end of file
diff --git a/htdocs/langs/en_US/holiday.lang b/htdocs/langs/en_US/holiday.lang
index 24926ae5e53..dc442d7f35f 100644
--- a/htdocs/langs/en_US/holiday.lang
+++ b/htdocs/langs/en_US/holiday.lang
@@ -132,4 +132,9 @@ NoCPforMonth=No leave this month.
Jours=days
nbJours=Number days
TitleAdminCP=Configuration of Holidays
-Permission20001=Read / Modify all requests of holidays
+Permission20001=Read/create/modify their holidays
+Permission20002=Read/modify all requests of holidays
+Permission20003=Delete their holidays requests
+Permission20004=Define users holidays
+Permission20005=Review log of modified holidays
+Permission20006=Access holidays monthly report
diff --git a/htdocs/langs/es_ES/admin.lang b/htdocs/langs/es_ES/admin.lang
index 0f2083af780..86b6cba5a97 100644
--- a/htdocs/langs/es_ES/admin.lang
+++ b/htdocs/langs/es_ES/admin.lang
@@ -45,6 +45,8 @@ ErrorModuleRequireDolibarrVersion=Error, este módulo requiere una versión %s o
ErrorDecimalLargerThanAreForbidden=Error, las precisiones superiores a %s no están soportadas.
DictionnarySetup=Diccionarios
Dictionnary=Diccionarios
+ErrorReservedTypeSystemSystemAuto=El uso del tipo 'system' y 'systemauto' está reservado. Puede utilizar 'user' como valor para añadir su propio registro
+ErrorCodeCantContainZero=El código no puede contener el valor 0
DisableJavascript=Desactivar las funciones Javascript
ConfirmAjax=Utilizar los popups de confirmación Ajax
UseSearchToSelectCompany=Utilizar un formulario de búsqueda para buscar terceros (en vez de lista desplegable)
Tenga en cuenta que si tiene un gran número de productos o servicios (>100 000), puede mejorar el rendimiento mediante la constante SOCIETE_DONOTSEARCH_ANYWHERE a 1 en Configuración->Varios. La búsqueda se limitará entonces al inicio de la cadena.
@@ -290,7 +292,7 @@ ServerNotAvailableOnIPOrPort=Servidor no disponible en la dirección %s e
DoTestServerAvailability=Probar conectividad con el servidor
DoTestSend=Probar envío
DoTestSendHTML=Probar envío HTML
-ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Error, no se puede usar opción @ si la secuencia {yy}{mm} o {yyyy}{mm} no se encuentra en la máscara.
+ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Error, no se puede usar la opción @ si la secuencia {yy}{mm} o {yyyy}{mm} no se encuentra en la máscara.
UMask=Parámetro UMask de nuevos archivos en Unix/Linux/BSD.
UMaskExplanation=Este parámetro determina los derechos de los archivos creados en el servidor Dolibarr (durante la subida, por ejemplo).
Este debe ser el valor octal (por ejemplo, 0666 significa lectura / escritura para todos).
Este parámetro no tiene ningún efecto sobre un servidor Windows.
SeeWikiForAllTeam=Vea el wiki para más detalles de todos los actores y de su organización
@@ -481,6 +483,8 @@ Module2900Name=GeoIPMaxmind
Module2900Desc=Capacidades de conversión GeoIP Maxmind
Module5000Name=Multi-empresa
Module5000Desc=Permite gestionar varias empresas
+Module6000Name=Workflow
+Module6000Desc=Gestión de flujos de trabajo
Module20000Name=Días libres
Module20000Desc=Gestión de los días libres de los empleados
Module50000Name=PayBox
@@ -544,6 +548,7 @@ Permission98=Desglosar líneas de facturas
Permission101=Consultar expediciones
Permission102=Crear/modificar expediciones
Permission104=Validar expediciones
+Permission106=Exportar expediciones
Permission109=Eliminar expediciones
Permission111=Consultar cuentas financieras (cuentas bancarias, cajas)
Permission112=Crear/modificar cantidad/eliminar registros bancarios
@@ -914,7 +919,7 @@ MAIN_ROUNDING_RULE_TOT=Tamaño rango para el redondeo (para algunos países que
UnitPriceOfProduct=Precio unitario sin IVA de un producto
TotalPriceAfterRounding=Precio total después del redondeo
ParameterActiveForNextInputOnly=Parámetro efectivo solamente a partir de las próximas sesiones
-NoEventOrNoAuditSetup=No se han registrado eventos de seguridad. Esto puede ser normal si la auditoría no ha sido habilitado en la página "configuración->seguridad->auditoría".
+NoEventOrNoAuditSetup=No se han registrado eventos de seguridad. Esto puede ser normal si la auditoría no ha sido habilitada en la página "configuración->seguridad->auditoría".
NoEventFoundWithCriteria=No se han encontrado eventos de seguridad para tales criterios de búsqueda.
SeeLocalSendMailSetup=Ver la configuración local de sendmail
BackupDesc=Para realizar una copia de seguridad completa de Dolibarr, usted debe:
diff --git a/htdocs/langs/es_ES/bills.lang b/htdocs/langs/es_ES/bills.lang
index d4146ba2f4e..e4a414b8fed 100644
--- a/htdocs/langs/es_ES/bills.lang
+++ b/htdocs/langs/es_ES/bills.lang
@@ -250,7 +250,7 @@ Deposit=Anticipo
Deposits=Anticipos
DiscountFromCreditNote=Descuento resultante del abono %s
DiscountFromDeposit=Pagos de la factura de anticipo %s
-AbsoluteDiscountUse=Este tipo de crédito no puede ser utilizado en una factura antes de su validación
+AbsoluteDiscountUse=Este tipo de descuento no puede ser utilizado en una factura antes de su validación
CreditNoteDepositUse=La factura debe de estar validada para poder utilizar este tipo de créditos
NewGlobalDiscount=Nuevo descuento fijo
NewRelativeDiscount=Nuevo descuento
diff --git a/htdocs/langs/es_ES/commercial.lang b/htdocs/langs/es_ES/commercial.lang
index 3b5d007aac9..9d774606bf0 100644
--- a/htdocs/langs/es_ES/commercial.lang
+++ b/htdocs/langs/es_ES/commercial.lang
@@ -81,6 +81,7 @@ ActionAC_SHIP=Envío expedición por correo
ActionAC_SUP_ORD=Envío pedido a proveedor por correo
ActionAC_SUP_INV=Envío factura de proveedor por correo
ActionAC_OTH=Otra
+ActionAC_OTH_AUTO=Otra (eventos insertados automáticamente)
ActionAC_MANUAL=Eventos creados manualmente
ActionAC_AUTO=Eventos creados automáticamente
Stats=Estadísticas de venta
diff --git a/htdocs/langs/es_ES/externalsite.lang b/htdocs/langs/es_ES/externalsite.lang
index 6052639eb4b..131d9f69fc4 100644
--- a/htdocs/langs/es_ES/externalsite.lang
+++ b/htdocs/langs/es_ES/externalsite.lang
@@ -1,4 +1,5 @@
# Dolibarr language file - es_ES - externalsite
CHARSET=UTF-8
ExternalSiteSetup=Configuración del enlace al sitio web externo
-ExternalSiteURL=URL del sitio externo
\ No newline at end of file
+ExternalSiteURL=URL del sitio externo
+ExternalSiteModuleNotComplete=El módulo Sitio web externo no ha sido configurado correctamente.
\ No newline at end of file
diff --git a/htdocs/langs/es_ES/holiday.lang b/htdocs/langs/es_ES/holiday.lang
index ebf1a0457d9..93387f29525 100644
--- a/htdocs/langs/es_ES/holiday.lang
+++ b/htdocs/langs/es_ES/holiday.lang
@@ -132,4 +132,9 @@ NoCPforMonth=Sin vacaciones este mes.
Jours=días
nbJours=Número de días
TitleAdminCP=Configuración de las vacaciones
-Permission20001=Leer / Crear / Modificar sus vacaciones
\ No newline at end of file
+Permission20001=Consultar/crear/modificar sus vacaciones
+Permission20002=Consultar/modificar todas las solicitudes de permisos retribuídos
+Permission20003=Eliminar las solicitudes de permisos retribuídos
+Permission20004=Definir los permisos retribuídos de los usuarios
+Permission20005=Consultar el historial de modificaciones de permisos retribuidos
+Permission20006=Acceder al informe mensual de permisos retribuidos
\ No newline at end of file
diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang
index 669ff93ae83..cc2ee5b2a4e 100644
--- a/htdocs/langs/fr_FR/admin.lang
+++ b/htdocs/langs/fr_FR/admin.lang
@@ -45,6 +45,8 @@ ErrorModuleRequireDolibarrVersion= Erreur, ce module requiert une version %s ou
ErrorDecimalLargerThanAreForbidden= Erreur, les précisions supérieures à %s ne sont pas supportées.
DictionnarySetup= Dictionnaires
Dictionnary= Dictionnaires
+ErrorReservedTypeSystemSystemAuto=
+ErrorCodeCantContainZero=
DisableJavascript= Désactiver les fonctions Javascript et Ajax
ConfirmAjax= Utiliser les popups de confirmation Ajax
UseSearchToSelectCompany= Utiliser un champ avec autocomplétion pour choisir un tiers (plutôt qu'une liste déroulante).
Notez que si vous avez un nombre important de tiers (> 100 000), vous pouvez améliorer les performances en définissant la constante SOCIETE_DONOTSEARCH_ANYWHERE à 1 dans Configuration->Divers. La recherche sera alors limitée au début de la chaine.
@@ -545,6 +547,7 @@ Permission98= Ventiler les lignes de factures
Permission101= Consulter les expéditions
Permission102= Créer/modifier les expéditions
Permission104= Valider les expéditions
+Permission106= Exporter les expéditions
Permission109= Supprimer les expéditions
Permission111= Consulter les comptes financiers (comptes bancaires, caisses)
Permission112= Créer/modifier montant/supprimer écritures bancaires
diff --git a/htdocs/langs/fr_FR/commercial.lang b/htdocs/langs/fr_FR/commercial.lang
index 5c5747baa92..c13b1b09ea2 100644
--- a/htdocs/langs/fr_FR/commercial.lang
+++ b/htdocs/langs/fr_FR/commercial.lang
@@ -81,6 +81,7 @@ ActionAC_SHIP=Envoi bon d'expédition par mail
ActionAC_SUP_ORD=Envoi commande fournisseur par mail
ActionAC_SUP_INV=Envoi facture fournisseur par mail
ActionAC_OTH=Autre
+ActionAC_OTH_AUTO=Autre (evênements insérés automatiquement)
ActionAC_MANUAL=Evênements insérés manuellement
ActionAC_AUTO=Evênements insérés automatiquement
Stats=Statistiques de vente
diff --git a/htdocs/langs/fr_FR/externalsite.lang b/htdocs/langs/fr_FR/externalsite.lang
index ff1fb3112c1..36c8686a3c3 100644
--- a/htdocs/langs/fr_FR/externalsite.lang
+++ b/htdocs/langs/fr_FR/externalsite.lang
@@ -1,4 +1,5 @@
# Dolibarr language file - fr_FR - externalsite
CHARSET=UTF-8
ExternalSiteSetup=Configuration du lien vers le site externe
-ExternalSiteURL=URL du site externe
\ No newline at end of file
+ExternalSiteURL=URL du site externe
+ExternalSiteModuleNotComplete=
\ No newline at end of file
diff --git a/htdocs/langs/fr_FR/holiday.lang b/htdocs/langs/fr_FR/holiday.lang
index e6c0d33ad98..a9f4c758d8d 100644
--- a/htdocs/langs/fr_FR/holiday.lang
+++ b/htdocs/langs/fr_FR/holiday.lang
@@ -130,4 +130,9 @@ NoCPforMonth=Aucun congé ce mois-ci.
Jours=jours
nbJours=Nombre jours
TitleAdminCP=Configuration des Congés
-Permission20001=Lire / Créer / modifier ses congés
+Permission20001=Lire / Créer / modifier ses congès
+Permission20002=Lire / Modifier toutes les demandes de congés payés
+Permission20003=Supprimer des demandes de congés payés
+Permission20004=Définir les congés payés des utilisateurs
+Permission20005=Voir les logs de modification des congés payés
+Permission20006=Accéder au rapport mensuel des congés payés