diff --git a/.travis.yml b/.travis.yml index e7895e21cb0..d660f89e79d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -289,7 +289,7 @@ script: # Ensure we catch errors set -e #parallel-lint --exclude htdocs/includes --blame . - parallel-lint --exclude htdocs/includes/sabre --exclude htdocs/includes/squizlabs/php_codesniffer/tests --exclude htdocs/includes/jakub-onderka/php-parallel-lint/tests --exclude htdocs/includes/mike42/escpos-php/example --exclude htdocs/includes/phpunit/php-token-stream/tests --exclude htdocs/includes/composer/autoload_static.php --blame . + parallel-lint --exclude htdocs/includes/sabre --exclude htdocs/includes/sebastian --exclude htdocs/includes/squizlabs/php_codesniffer/tests --exclude htdocs/includes/jakub-onderka/php-parallel-lint/tests --exclude htdocs/includes/mike42/escpos-php/example --exclude htdocs/includes/phpunit/php-token-stream/tests --exclude htdocs/includes/composer/autoload_static.php --blame . set +e echo diff --git a/ChangeLog b/ChangeLog index 0bc9d008ea8..d609b7a347a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,20 +5,111 @@ English Dolibarr ChangeLog ***** ChangeLog for 9.0.0 compared to 8.0.0 ***** For Users: -NEW: Stable module: Website -NEW: Stable module: WebDAV -NEW: Stable module: Module Builder +NEW: Stable module: DAV (WebDAV only for the moment) NEW: Stable module "Skype" has been replaced with module "Social Networks" to support more services. +NEW: Stable module "Module Builder" +NEW: Stable module: Website NEW: Experimental module "TakePos" NEW: Experimental module "Ticket" +NEW: Experimental module "Data Privacy" +NEW: Experimental module "Email Collector" NEW: Dolibarr can provide information in page title when multicompany is enabled of not, making Android application like DoliDroid able to provide native features for multicompany module. -NEW: Compatibility with PHP 7.3 +NEW: Compatibility with PHP 7.3 => +NEW: Add admin page for modulebuilder +NEW: Add civility in list of members. Close #9251 +NEW: Add configuration to disable "customer/prospect" thirdparty type +NEW: Add CONTRACT_ALLOW_TO_LINK_FROM_OTHER_COMPANY and CONTRACT_HIDE_UNSELECTABLES by SELECT_HIDE_UNSELECTABLES +NEW: Add __DAY_TEXT__ and __MONTH_TEXT__ substitutions vars +NEW: Add due date column in payment lists +NEW: Add email in event history, for reminder email of expired subsription +NEW: Add event tab on resource record +NEW: Add FEC Export in accountancy +NEW: Add filter on staff range in list of thirdparties +NEW: Add a first complete template of website +NEW: Add format code into exported filename of ledger +NEW: Add hidden option EXPENSEREPORT_DEFAULT_VALIDATOR_UNCHANGEABLE +NEW: Add hidden option MAIN_DOCUMENTS_DESCRIPTION_FIRST +NEW: Add link to inventory code +NEW: Add more common social networks fields for business +NEW: Add option PDF_DISABLE_MYCOMPANY_LOGO to disable logo on PDF +NEW: add option PROPOSAL_AUTO_ADD_AUTHOR_AS_CONTACT +NEW: Add option to display thirdparty adress in combolist +NEW: Add option to swap sender/recipient address on PDF +NEW: Add option to display thirdparty adress in combolist +NEW: Add project on pament of salaries +NEW: Add SHIPPING_PDF_HIDE_WEIGHT_AND_VOLUME and +NEW: Add somes hooks in bank planned entries +NEW: Add supplier ref in item reception page +NEW: Advanced permission to ignore price min +NEW: Allow to enter a timespent with a numeric value +NEW: Automatic position of scroll when creating an extrafield +NEW: Can add autorefresh=X in any URLs to refresh page after X seconds +NEW: can add project's task to agenda on create event form +NEW: Can delete a website in experimental website module +NEW: Can disable meteo on smartphone only +NEW: Can export/import a website template +NEW: Can filter on EEC, not EEC, etc... in binding step of accountancy +NEW: Can mix offset before and after with rules for due date of invoices +NEW: Can record the supplier product description +NEW: Can select several prospect level in thirdparty filter. +NEW: Can set 2 url in url field of thirdparty +NEW: Can set if a field is mandatory on form level. +NEW: Can set the default focus of each page. +NEW: Add category filter on user list +NEW: Change forgotten password link in general parameters +NEW: Child label of variants change if parent label changes +NEW: Compatibility with new Paybox HMAC requirement +NEW: Each user can set its prefered default calendar page +NEW: Enhancement in process to make manual bank conciliation +NEW: Enhancement in the generic file manager +NEW: Extrafield totalizable +NEW: Hidden conf INVOICE_USE_DEFAULT_DOCUMENT +NEW: hidden conf to search product by supplier ref +NEW: hidden constant to be able to use a thirdparty for donation +NEW: hidden option to define an invoice template for each invoice type +NEW: Highlight lines on lists when they are checked +NEW: Notification module support expense report+holiday validation and approval +NEW: On customer/supplier card, add simple tooltip to amount boxes +NEW: Page to check if the operations/items created between two dates have attached item(s) and possibility to download all attachements +NEW: possibility to add all rights of all modules in one time +NEW: redirect if only one result on global search on card +NEW: Permission to ignore price min +NEW: Can build an archive of full documents directory from backup page +NEW: tag odt line_product_ref_fourn for supplier doc lines +NEW: The binding step in accountancy has a country filter with autocompletion +NEW: Top menu is always on screen with MD theme. +NEW: Withdraw request massaction can include already partially paid invoices For developers: -* Code changes to be more compatible with PSR2 -* Removed trigger USER_LOGOUT, USER_LOGIN, USER_LOGIN_FAILED (Some hooks are already dedicated for that) +NEW: Add lib for multiselect with checkboxes +NEW: Add function isValidMXRecord +NEW: Add hook changeRoundingMode in update_price +NEW: Add hook formconfirm to contractcard +NEW: Add hook for virtual stock +NEW: ADD url to see the last version of a external module +NEW: Can enable a module, even external module, from command line +NEW: Can set a tooltip help text on extrafields +NEW: Add product search from barcode via REST api +NEW: can add documents on agenda events using API REST +NEW: Can set the datestart and dateend of cron job into module descriptor +NEW: Close #9296 Add field ref_ext into llx_categorie +NEW: move ticket dictionary in API /setup +NEW: PHPUnitTest on Loan class #3163 +NEW: Code changes to be more compatible with PSR2 +NEW: Removed trigger USER_LOGOUT, USER_LOGIN, USER_LOGIN_FAILED (Some hooks are already dedicated for that) +NEW: Add agenda documents in API REST +NEW: Add "checked" field for new list engine compatibility +NEW: REST API improvements +NEW: Save external payment IDs into table of payment +NEW: triggers add commercial and del commercial +NEW: #9236 Allow to import shipment lines via API +NEW: ADD civility list in API +NEW: support selllist in the module builder +NEW: optional param to show a specific extrafield +NEW: hook formConfirm always called if hooked +NEW: hook on dispatch order fourn WARNING: diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index 6074a49f537..70934e01ed6 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -817,7 +817,7 @@ class BookKeeping extends CommonObject $num = $this->db->num_rows($resql); $i = 0; - while ($obj = $this->db->fetch_object($resql) && (empty($limit) || $i < min($limit, $num))) { + while (($obj = $this->db->fetch_object($resql)) && (empty($limit) || $i < min($limit, $num))) { $line = new BookKeepingLine(); $line->id = $obj->rowid; @@ -866,14 +866,13 @@ class BookKeeping extends CommonObject /** * 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 string $filtermode filter mode (AND or OR) - * - * @return int <0 if KO, >0 if OK + * @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 string $filtermode Filter mode (AND or OR) + * @return int <0 if KO, >0 if OK */ public function fetchAll($sortorder = '', $sortfield = '', $limit = 0, $offset = 0, array $filter = array(), $filtermode = 'AND') { @@ -932,7 +931,7 @@ class BookKeeping extends CommonObject } } } - $sql.= ' WHERE entity IN (' . getEntity('accountancy') . ')'; + $sql.= ' WHERE t.entity IN (' . getEntity('accountancy') . ')'; if (count($sqlwhere) > 0) { $sql .= ' AND ' . implode(' ' . $filtermode . ' ', $sqlwhere); } @@ -950,7 +949,8 @@ class BookKeeping extends CommonObject $num = $this->db->num_rows($resql); $i = 0; - while ($obj = $this->db->fetch_object($resql) && (empty($limit) || $i < min($limit, $num))) { + while (($obj = $this->db->fetch_object($resql)) && (empty($limit) || $i < min($limit, $num))) + { $line = new BookKeepingLine(); $line->id = $obj->rowid; @@ -989,8 +989,7 @@ class BookKeeping extends CommonObject } else { $this->errors[] = 'Error ' . $this->db->lasterror(); dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); - - return - 1; + return -1; } } @@ -1067,6 +1066,7 @@ class BookKeeping extends CommonObject $line->numero_compte = $obj->numero_compte; $line->debit = $obj->debit; $line->credit = $obj->credit; + $this->lines[] = $line; $i++; @@ -1577,7 +1577,7 @@ class BookKeeping extends CommonObject $result = $this->db->query($sql); if ($result) { - while ( $obj = $this->db->fetch_object($result) ) { + while ($obj = $this->db->fetch_object($result)) { $line = new BookKeepingLine(); @@ -1641,7 +1641,7 @@ class BookKeeping extends CommonObject $this->linesexport = array (); $num = $this->db->num_rows($resql); - while ( $obj = $this->db->fetch_object($resql) ) { + while ($obj = $this->db->fetch_object($resql)) { $line = new BookKeepingLine(); $line->id = $obj->rowid; diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index 4c0bf9a55fa..d40c5ea059b 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -1142,7 +1142,7 @@ $db->close(); * * @param string $val Array of val * @param string $typerecord Type of record ('payment', 'payment_supplier', 'payment_expensereport', 'payment_vat', ...) - * @return string|unknown + * @return string A string label to describe a record into llx_bank_url */ function getSourceDocRef($val, $typerecord) { @@ -1250,7 +1250,8 @@ function getSourceDocRef($val, $typerecord) { dol_syslog("accountancy/journal/bankjournal.php::sqlmid=" . $sqlmid, LOG_DEBUG); $resultmid = $db->query($sqlmid); - if ($resultmid) { + if ($resultmid) + { while ($objmid = $db->fetch_object($resultmid)) { $ref.=' '.$objmid->ref; @@ -1259,6 +1260,6 @@ function getSourceDocRef($val, $typerecord) else dol_print_error($db); } - $ref = dol_trunc($langs->trans("BankId").' '.$val['fk_bank'].' - '.$ref, 295); // 295 + 3 ... i< < than max size of 300 + $ref = dol_trunc($langs->trans("BankId").' '.$val['fk_bank'].' - '.$ref, 295); // 295 + 3 dots (...) is < than max size of 300 return $ref; } diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 9d6c5d02bb4..39d31986511 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -2656,7 +2656,7 @@ class Adherent extends CommonObject $this->output = $langs->trans('EventRemindersByEmailNotEnabled', $langs->transnoentitiesnoconv("Adherent")); return 0; } - + $now = dol_now(); $nbok = 0; $nbko = 0; @@ -2760,9 +2760,9 @@ class Adherent extends CommonObject $actionmsg = dol_concatdesc($actionmsg, $langs->transnoentities('TextUsedInTheMessageBody') . ":"); $actionmsg = dol_concatdesc($actionmsg, $message); } - + require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php'; - + // Insert record of emails sent $actioncomm = new ActionComm($this->db); @@ -2787,10 +2787,10 @@ class Adherent extends CommonObject $actioncomm->email_tobcc = $sendtobcc; $actioncomm->email_subject = $subject; $actioncomm->errors_to = ''; - + $actioncomm->fk_element = $adherent->id; $actioncomm->elementtype = $adherent->element; - + $actioncomm->extraparams = $extraparams; $actioncomm->create($user); diff --git a/htdocs/admin/salaries.php b/htdocs/admin/salaries.php index a68a4bda5a6..f724bd9e50c 100644 --- a/htdocs/admin/salaries.php +++ b/htdocs/admin/salaries.php @@ -129,4 +129,4 @@ print ''; // End of page llxFooter(); -$db->close();; +$db->close(); diff --git a/htdocs/blockedlog/admin/blockedlog_list.php b/htdocs/blockedlog/admin/blockedlog_list.php index 734e9d31f67..49a4daa3b3f 100644 --- a/htdocs/blockedlog/admin/blockedlog_list.php +++ b/htdocs/blockedlog/admin/blockedlog_list.php @@ -304,7 +304,7 @@ if (GETPOST('withtab','alpha')) dol_fiche_head($head, 'fingerprints', '', -1); } -print ''.$langs->trans("FingerprintsDesc")."
\n"; +print ''.$langs->trans("FingerprintsDesc")."
\n"; print '
'; @@ -342,7 +342,7 @@ for ($month = 1 ; $month <= 12 ; $month++) } $retstring.=""; print $retstring; -print ''; +print ''; print ''; print ''; if (!empty($conf->global->BLOCKEDLOG_USE_REMOTE_AUTHORITY)) print ' | '.$langs->trans('DownloadBlockChain').''; diff --git a/htdocs/comm/action/list.php b/htdocs/comm/action/list.php index f98ab3ed82a..57337226f40 100644 --- a/htdocs/comm/action/list.php +++ b/htdocs/comm/action/list.php @@ -234,7 +234,7 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; $sql = "SELECT"; if ($usergroup > 0) $sql.=" DISTINCT"; -$sql.= " s.nom as societe, s.rowid as socid, s.client,"; +$sql.= " s.nom as societe, s.rowid as socid, s.client, s.email as socemail,"; $sql.= " a.id, a.label, a.datep as dp, a.datep2 as dp2,"; $sql.= ' a.fk_user_author,a.fk_user_action,'; $sql.= " a.fk_contact, a.note, a.percent as percent,"; @@ -605,11 +605,13 @@ if ($resql) // Third party if (! empty($arrayfields['s.nom']['checked'])) { print ''; - if ($obj->socid) + if ($obj->socid > 0) { $societestatic->id=$obj->socid; $societestatic->client=$obj->client; $societestatic->name=$obj->societe; + $societestatic->email=$obj->socemail; + print $societestatic->getNomUrl(1,'',28); } else print ' '; diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 0fcdcd47546..c9fc85f32e8 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -2432,7 +2432,7 @@ class Propal extends CommonObject * @param int $notrigger 1=Does not execute triggers, 0=Execute triggers * @return int <0 if KO, >0 if OK */ - function cloture($user, $statut, $note, $notrigger=0) + function cloture($user, $statut, $note="", $notrigger=0) { global $langs,$conf; diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index 61ad93660b6..98ff1c45194 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -11,7 +11,7 @@ * Copyright (C) 2013 Cédric Salvador * Copyright (C) 2015 Jean-François Ferry * Copyright (C) 2016-2018 Ferran Marcet - * Copyright (C) 2017 Charlene Benke + * Copyright (C) 2017-2018 Charlene Benke * Copyright (C) 2018 Nicolas ZABOURI * * This program is free software; you can redistribute it and/or modify @@ -175,9 +175,6 @@ if (is_array($extrafields->attribute_label) && count($extrafields->attribute_lab } } -$object = new Propal($db); // To be passed as parameter of executeHooks that need - - /* * Actions */ @@ -425,13 +422,13 @@ if ($resql) $num = $db->num_rows($resql); $arrayofselected=is_array($toselect)?$toselect:array(); - - if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE)) + + if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $sall) { $obj = $db->fetch_object($resql); $id = $obj->rowid; - + header("Location: ".DOL_URL_ROOT.'/comm/propal/card.php?id='.$id); exit; } @@ -469,7 +466,7 @@ if ($resql) 'builddoc'=>$langs->trans("PDFMerge"), ); if ($user->rights->propal->supprimer) $arrayofmassactions['predelete']=$langs->trans("Delete"); - if ($user->rights->propal->cloturer) $arrayofmassactions['closed']=$langs->trans("Closed"); + if ($user->rights->propal->cloturer) $arrayofmassactions['closed']=$langs->trans("Close"); if (in_array($massaction, array('presend','predelete','closed'))) $arrayofmassactions=array(); $massactionbutton=$form->selectMassAction('', $arrayofmassactions); diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 55e6e2f8ff5..f26d7b86b44 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -401,7 +401,7 @@ if ($resql) $arrayofselected=is_array($toselect)?$toselect:array(); - if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE)) + if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $sall) { $obj = $db->fetch_object($resql); $id = $obj->rowid; @@ -410,7 +410,7 @@ if ($resql) } llxHeader('',$title,$help_url); - + $param=''; if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage); @@ -479,8 +479,8 @@ if ($resql) print ''; print ''; print ''; - - + + print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_commercial.png', 0, $newcardbutton, '', $limit); $topicmail="SendOrderRef"; diff --git a/htdocs/compta/bank/list.php b/htdocs/compta/bank/list.php index 2395a3c23de..e83347e876a 100644 --- a/htdocs/compta/bank/list.php +++ b/htdocs/compta/bank/list.php @@ -550,7 +550,7 @@ foreach ($accounts as $key=>$type) // Balance if (! empty($arrayfields['balance']['checked'])) { - print ''; + print ''; print ''.price($solde, 0, $langs, 0, -1, -1, $obj->currency_code).''; print ''; if (! $i) $totalarray['nbfield']++; diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index eb7408cabf6..6b0164058c2 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -541,17 +541,17 @@ if ($resql) $arrayofselected=is_array($toselect)?$toselect:array(); - if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE)) + if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $sall) { $obj = $db->fetch_object($resql); $id = $obj->id; - + header("Location: ".DOL_URL_ROOT.'/compta/facture/card.php?facid='.$id); exit; } - + llxHeader('',$langs->trans('CustomersInvoices'),'EN:Customers_Invoices|FR:Factures_Clients|ES:Facturas_a_clientes'); - + if ($socid) { $soc = new Societe($db); diff --git a/htdocs/compta/localtax/quadri_detail.php b/htdocs/compta/localtax/quadri_detail.php index e49f42bb14f..9f5d13f98a3 100644 --- a/htdocs/compta/localtax/quadri_detail.php +++ b/htdocs/compta/localtax/quadri_detail.php @@ -589,7 +589,7 @@ else // Localtax print ''; - $temp_vat=($local==1?$fields['localtax1']:$fields['localtax2'])*$ratiopaymentinvoice;; + $temp_vat=($local==1?$fields['localtax1']:$fields['localtax2'])*$ratiopaymentinvoice; print price(price2num($temp_vat,'MT'),1); //print price($fields['vat']); print ''; diff --git a/htdocs/compta/paiement/list.php b/htdocs/compta/paiement/list.php index b3c02ceacc0..4536cb98520 100644 --- a/htdocs/compta/paiement/list.php +++ b/htdocs/compta/paiement/list.php @@ -75,6 +75,8 @@ if (! $sortfield) $sortfield="p.rowid"; $hookmanager->initHooks(array('paymentlist')); $extrafields = new ExtraFields($db); +$arrayfields=array(); + /* * Actions @@ -131,7 +133,7 @@ else $sql.= " p.statut, p.num_paiement,"; $sql.= " c.code as paiement_code,"; $sql.= " ba.rowid as bid, ba.ref as bref, ba.label as blabel, ba.number, ba.account_number as account_number, ba.fk_accountancy_journal as accountancy_journal,"; - $sql.= " s.rowid as socid, s.nom as name"; + $sql.= " s.rowid as socid, s.nom as name, s.email"; // Add fields for extrafields foreach ($extrafields->attribute_list as $key => $val) $sql.=",ef.".$key.' as options_'.$key; // Add fields from hooks @@ -209,8 +211,8 @@ if ($resql) $i = 0; $param=''; - if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage); + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit); $param.=(GETPOST("orphelins")?"&orphelins=1":""); $param.=($search_ref?"&search_ref=".urlencode($search_ref):""); $param.=($search_company?"&search_company=".urlencode($search_company):""); @@ -296,11 +298,12 @@ if ($resql) { $objp = $db->fetch_object($resql); + $paymentstatic->id=$objp->rowid; + $paymentstatic->ref=$objp->ref; + print ''; print ''; - $paymentstatic->id=$objp->rowid; - $paymentstatic->ref=$objp->ref; print $paymentstatic->getNomUrl(1); print ''; @@ -311,10 +314,12 @@ if ($resql) // Thirdparty print ''; - if ($objp->socid) + if ($objp->socid > 0) { $companystatic->id=$objp->socid; $companystatic->name=$objp->name; + $companystatic->email=$objp->email; + print $companystatic->getNomUrl(1,'',24); } else print ' '; diff --git a/htdocs/compta/salaries/card.php b/htdocs/compta/salaries/card.php index 76ab712bffd..2e48802a554 100644 --- a/htdocs/compta/salaries/card.php +++ b/htdocs/compta/salaries/card.php @@ -63,7 +63,7 @@ $hookmanager->initHooks(array('salarycard','globalcard')); if ($cancel) { - header("Location: index.php"); + header("Location: list.php"); exit; } @@ -139,7 +139,7 @@ if ($action == 'add' && empty($cancel)) if ($ret > 0) { $db->commit(); - header("Location: index.php"); + header("Location: list.php"); exit; } else diff --git a/htdocs/contact/agenda.php b/htdocs/contact/agenda.php index 5a9ef88f8ed..fbd3e46b9a7 100644 --- a/htdocs/contact/agenda.php +++ b/htdocs/contact/agenda.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2015 Laurent Destailleur + * Copyright (C) 2004-2018 Laurent Destailleur * Copyright (C) 2004 Benoit Mortier * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2007 Franky Van Liedekerke @@ -132,16 +132,13 @@ if (empty($reshook)) * View */ +$form = new Form($db); $title = (! empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("Contacts") : $langs->trans("ContactsAddresses")); if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/contactnameonly/',$conf->global->MAIN_HTML_TITLE) && $object->lastname) $title=$object->lastname; $help_url='EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas'; llxHeader('', $title, $help_url); -$form = new Form($db); -$formcompany = new FormCompany($db); - -$countrynotdefined=$langs->trans("ErrorSetACountryFirst").' ('.$langs->trans("SeeAbove").')'; if ($socid > 0) { @@ -259,20 +256,16 @@ else //print '
'; //print '
'; - - $morehtmlcenter=''; - if (! empty($conf->agenda->enabled)) - { - if (! empty($user->rights->agenda->myactions->create) || ! empty($user->rights->agenda->allactions->create)) - { - $morehtmlcenter.= ''.$langs->trans("AddAction").''; - } - else - { - $morehtmlcenter.= ''.$langs->trans("AddAction").''; - } - } - + $newcardbutton=''; + if (! empty($conf->agenda->enabled)) + { + if (! empty($user->rights->agenda->myactions->create) || ! empty($user->rights->agenda->allactions->create)) + { + $newcardbutton.=''.$langs->trans("AddAction").''; + $newcardbutton.= ''; + $newcardbutton.= ''; + } + } if (! empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read) )) { @@ -282,7 +275,8 @@ else if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; - print_barre_liste($langs->trans("ActionsOnCompany"), 0, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, $morehtmlcenter, 0, -1, '', '', '', '', 0, 1, 1); + print load_fiche_titre($langs->trans("ActionsOnContact"), $newcardbutton, ''); + //print_barre_liste($langs->trans("ActionsOnCompany"), 0, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, $morehtmlcenter, 0, -1, '', '', '', '', 0, 1, 1); // List of all actions $filters=array(); diff --git a/htdocs/core/actions_extrafields.inc.php b/htdocs/core/actions_extrafields.inc.php index 6b6d4b7a176..bae5001b256 100644 --- a/htdocs/core/actions_extrafields.inc.php +++ b/htdocs/core/actions_extrafields.inc.php @@ -29,7 +29,7 @@ $mesg=array(); $extrasize=GETPOST('size','int'); $type=GETPOST('type','alpha'); -$param=GETPOST('param','alpha');; +$param=GETPOST('param','alpha'); if ($type=='double' && strpos($extrasize,',')===false) $extrasize='24,8'; if ($type=='date') $extrasize=''; diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index c9669fc5ca9..35705b661d9 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -238,7 +238,11 @@ class Conf { global $mc; $ret = @dol_include_once('/multicompany/class/actions_multicompany.class.php'); - if ($ret) $mc = new ActionsMulticompany($db); + if ($ret) + { + $mc = new ActionsMulticompany($db); + $this->mc = $mc; + } } // Clean some variables diff --git a/htdocs/core/class/dolgraph.class.php b/htdocs/core/class/dolgraph.class.php index 195bec09daf..42386494a37 100644 --- a/htdocs/core/class/dolgraph.class.php +++ b/htdocs/core/class/dolgraph.class.php @@ -1108,7 +1108,7 @@ class DolGraph // Background color $color1=sprintf("%02x%02x%02x",$this->bgcolorgrid[0],$this->bgcolorgrid[0],$this->bgcolorgrid[2]); $color2=sprintf("%02x%02x%02x",$this->bgcolorgrid[0],$this->bgcolorgrid[1],$this->bgcolorgrid[2]); - $this->stringtoshow.=', grid: { hoverable: true, backgroundColor: { colors: ["#'.$color1.'", "#'.$color2.'"] }, borderWidth: 1, borderColor: \'#eee\', tickColor : \'#f3f3f3\' }'."\n"; + $this->stringtoshow.=', grid: { hoverable: true, backgroundColor: { colors: ["#'.$color1.'", "#'.$color2.'"] }, borderWidth: 1, borderColor: \'#e6e6e6\', tickColor : \'#e6e6e6\' }'."\n"; //$this->stringtoshow.=', shadowSize: 20'."\n"; TODO Uncommet this $this->stringtoshow.='});'."\n"; $this->stringtoshow.='}'."\n"; diff --git a/htdocs/core/class/translate.class.php b/htdocs/core/class/translate.class.php index 599bf25d33d..a8d22b61257 100644 --- a/htdocs/core/class/translate.class.php +++ b/htdocs/core/class/translate.class.php @@ -189,7 +189,7 @@ class Translate // Load $this->tab_translate[] from database - if (empty($loadfromfileonly) && count($this->tab_translate) == 0) $this->loadFromDatabase($db); // Nothing was loaded yet, so we load database. + if (empty($loadfromfileonly) && count($this->tab_translate) == 0) $this->loadFromDatabase($db); // No translation was never loaded yet, so we load database. $newdomain = $domain; @@ -231,7 +231,8 @@ class Translate $filelangexists=is_file($file_lang_osencoded); - //dol_syslog(get_class($this).'::Load Try to read for alt='.$alt.' langofdir='.$langofdir.' newdomain='.$domain.' modulename='.$modulename.' file_lang='.$file_lang." => filelangexists=".$filelangexists); + //dol_syslog(get_class($this).'::Load Try to read for alt='.$alt.' langofdir='.$langofdir.' domain='.$domain.' newdomain='.$newdomain.' modulename='.$modulename.' file_lang='.$file_lang." => filelangexists=".$filelangexists); + //print 'Try to read for alt='.$alt.' langofdir='.$langofdir.' domain='.$domain.' newdomain='.$newdomain.' modulename='.$modulename.' this->_tab_loaded[newdomain]='.$this->_tab_loaded[$newdomain].' file_lang='.$file_lang." => filelangexists=".$filelangexists."\n"; if ($filelangexists) { @@ -354,12 +355,12 @@ class Translate $this->load($domain,$alt+1,$stopafterdirection,$langofdir); } - // We already are the reference file. No more files to scan to complete. + // We are in the pass of the reference file. No more files to scan to complete. if ($alt == 2) { - if ($fileread) $this->_tab_loaded[$newdomain]=1; // Set domain file as loaded + if ($fileread) $this->_tab_loaded[$newdomain]=1; // Set domain file as found so loaded - if (empty($this->_tab_loaded[$newdomain])) $this->_tab_loaded[$newdomain]=2; // Set this file as found + if (empty($this->_tab_loaded[$newdomain])) $this->_tab_loaded[$newdomain]=2; // Set this file as not found } // This part is deprecated and replaced with table llx_overwrite_trans @@ -410,22 +411,18 @@ class Translate //dol_syslog("Translate::Load Start domain=".$domain." alt=".$alt." forcelangdir=".$forcelangdir." this->defaultlang=".$this->defaultlang); $newdomain = $domain; - $modulename = ''; - // Check cache - if (! empty($this->_tab_loaded[$newdomain])) // File already loaded for this domain + // Check cache + if (! empty($this->_tab_loaded[$newdomain])) // File already loaded for this domain 'database' { //dol_syslog("Translate::Load already loaded for newdomain=".$newdomain); return 0; } - $this->_tab_loaded[$newdomain] = 1; // We want to be sure this function is called once only. + $this->_tab_loaded[$newdomain] = 1; // We want to be sure this function is called once only for domain 'database' $fileread=0; - $langofdir=(empty($forcelangdir)?$this->defaultlang:$forcelangdir); - - // Redefine alt - $alt=2; + $langofdir=$this->defaultlang; if (empty($langofdir)) // This may occurs when load is called without setting the language and without providing a value for forcelangdir { @@ -434,14 +431,14 @@ class Translate } // TODO Move cache read out of loop on dirs or at least filelangexists - $found=false; + $found=false; // Enable caching of lang file in memory (not by default) $usecachekey=''; // Using a memcached server if (! empty($conf->memcached->enabled) && ! empty($conf->global->MEMCACHED_SERVER)) { - $usecachekey=$newdomain.'_'.$langofdir.'_'.md5($file_lang); // Should not contains special chars + $usecachekey=$newdomain.'_'.$langofdir; // Should not contains special chars } // Using cache with shmop. Speed gain: 40ms - Memory overusage: 200ko (Size of session cache file) else if (isset($conf->global->MAIN_OPTIMIZE_SPEED) && ($conf->global->MAIN_OPTIMIZE_SPEED & 0x02)) diff --git a/htdocs/core/js/lib_head.js.php b/htdocs/core/js/lib_head.js.php index 15594570fd7..f2aa6fc521f 100644 --- a/htdocs/core/js/lib_head.js.php +++ b/htdocs/core/js/lib_head.js.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2005-2018 Laurent Destailleur * Copyright (C) 2005-2014 Regis Houssin * Copyright (C) 2015 Raphaël Doursenaud * @@ -46,33 +46,33 @@ else header('Cache-Control: no-cache'); // Define tradMonths javascript array (we define this in datepicker AND in parent page to avoid errors with IE8) $tradMonths=array( -dol_escape_js($langs->transnoentitiesnoconv("January")), -dol_escape_js($langs->transnoentitiesnoconv("February")), -dol_escape_js($langs->transnoentitiesnoconv("March")), -dol_escape_js($langs->transnoentitiesnoconv("April")), -dol_escape_js($langs->transnoentitiesnoconv("May")), -dol_escape_js($langs->transnoentitiesnoconv("June")), -dol_escape_js($langs->transnoentitiesnoconv("July")), -dol_escape_js($langs->transnoentitiesnoconv("August")), -dol_escape_js($langs->transnoentitiesnoconv("September")), -dol_escape_js($langs->transnoentitiesnoconv("October")), -dol_escape_js($langs->transnoentitiesnoconv("November")), -dol_escape_js($langs->transnoentitiesnoconv("December")) +dol_escape_js($langs->transnoentitiesnoconv("Month01")), +dol_escape_js($langs->transnoentitiesnoconv("Month02")), +dol_escape_js($langs->transnoentitiesnoconv("Month03")), +dol_escape_js($langs->transnoentitiesnoconv("Month04")), +dol_escape_js($langs->transnoentitiesnoconv("Month05")), +dol_escape_js($langs->transnoentitiesnoconv("Month06")), +dol_escape_js($langs->transnoentitiesnoconv("Month07")), +dol_escape_js($langs->transnoentitiesnoconv("Month08")), +dol_escape_js($langs->transnoentitiesnoconv("Month09")), +dol_escape_js($langs->transnoentitiesnoconv("Month10")), +dol_escape_js($langs->transnoentitiesnoconv("Month11")), +dol_escape_js($langs->transnoentitiesnoconv("Month12")) ); $tradMonthsShort=array( -$langs->trans("JanuaryMin"), -$langs->trans("FebruaryMin"), -$langs->trans("MarchMin"), -$langs->trans("AprilMin"), -$langs->trans("MayMin"), -$langs->trans("JuneMin"), -$langs->trans("JulyMin"), -$langs->trans("AugustMin"), -$langs->trans("SeptemberMin"), -$langs->trans("OctoberMin"), -$langs->trans("NovemberMin"), -$langs->trans("DecemberMin") +$langs->trans("MonthShort01"), +$langs->trans("MonthShort02"), +$langs->trans("MonthShort03"), +$langs->trans("MonthShort04"), +$langs->trans("MonthShort05"), +$langs->trans("MonthShort06"), +$langs->trans("MonthShort07"), +$langs->trans("MonthShort08"), +$langs->trans("MonthShort09"), +$langs->trans("MonthShort10"), +$langs->trans("MonthShort11"), +$langs->trans("MonthShort12") ); $tradDays=array( diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 09f7bd85c90..4618828e476 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -1344,7 +1344,7 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon='', $noprint= elseif (is_object($filterobj) && get_class($filterobj) == 'Product') $sql.= ", ".MAIN_DB_PREFIX."product as o"; $sql.= " WHERE a.entity IN (".getEntity('agenda').")"; - if (is_object($filterobj) && get_class($filterobj) == 'Societe' && $filterobj->id) $sql.= " AND a.fk_soc = ".$filterobj->id; + if (is_object($filterobj) && in_array(get_class($filterobj), array('Societe', 'Client', 'Fournisseur')) && $filterobj->id) $sql.= " AND a.fk_soc = ".$filterobj->id; elseif (is_object($filterobj) && get_class($filterobj) == 'Project' && $filterobj->id) $sql.= " AND a.fk_project = ".$filterobj->id; elseif (is_object($filterobj) && get_class($filterobj) == 'Adherent') { @@ -1386,6 +1386,8 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon='', $noprint= if ($donetodo == 'todo') $sql.= " AND ((a.percent >= 0 AND a.percent < 100) OR (a.percent = -1 AND a.datep > '".$db->idate($now)."'))"; elseif ($donetodo == 'done') $sql.= " AND (a.percent = 100 OR (a.percent = -1 AND a.datep <= '".$db->idate($now)."'))"; if (is_array($filters) && $filters['search_agenda_label']) $sql.= natural_search('a.label', $filters['search_agenda_label']); + + //TODO Add limit for thirdparty in contexte very all result $sql.= $db->order($sortfield, $sortorder); dol_syslog("company.lib::show_actions_done", LOG_DEBUG); $resql=$db->query($sql); diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index eba4c4d5f4e..4522e23872f 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2675,7 +2675,7 @@ function dol_print_ip($ip,$mode=0) */ function getUserRemoteIP() { - $ip = $_SERVER['HTTP_X_FORWARDED_FOR']?$_SERVER['HTTP_X_FORWARDED_FOR']:(($_SERVER['HTTP_CLIENT_IP']?$_SERVER['HTTP_CLIENT_IP']:$_SERVER['REMOTE_ADDR'])); + $ip = empty($_SERVER['HTTP_X_FORWARDED_FOR'])? (empty($_SERVER['HTTP_CLIENT_IP'])?(empty($_SERVER['REMOTE_ADDR'])?'':$_SERVER['REMOTE_ADDR']):$_SERVER['HTTP_CLIENT_IP']) : $_SERVER['HTTP_X_FORWARDED_FOR']; return $ip; } @@ -6954,7 +6954,6 @@ function getLanguageCodeFromCountryCode($countrycode) 'sv-FI', 'sv-SE', 'sw-KE', - 'syr-SY', 'ta-IN', 'te-IN', 'th-TH', diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index a6899697860..5765319379a 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -1514,7 +1514,7 @@ function pdf_getlineref_supplier($object,$i,$outputlangs,$hidedetails=0) * @param int $hidedetails Hide details (0=no, 1=yes, 2=just special lines) * @return string */ -function pdf_getlinevatrate($object,$i,$outputlangs,$hidedetails=0) +function pdf_getlinevatrate($object, $i, $outputlangs, $hidedetails=0) { global $conf, $hookmanager, $mysoc; diff --git a/htdocs/core/lib/report.lib.php b/htdocs/core/lib/report.lib.php index 10fd7bc8919..5a8aa344240 100644 --- a/htdocs/core/lib/report.lib.php +++ b/htdocs/core/lib/report.lib.php @@ -91,7 +91,7 @@ function report_header($reportname,$notused,$period,$periodlink,$description,$bu print ''.$langs->trans("ReportPeriod").''; print ''; if ($period) print $period; - if ($variante) print ''.$periodlink.''; + if ($variante) print ''.$periodlink.''; print ''; print ''; diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index 32b2be816df..033d4eb37fe 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -822,22 +822,22 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) //print '   ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; if ($edit) { - if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color='edf4fb'; + if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color='e6edf0'; else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_HOVER,array()),''); print $formother->selectColor($color,'THEME_ELDY_USE_HOVER','formcolor',1).' '; } else { - if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color='edf4fb'; + if ($conf->global->THEME_ELDY_USE_HOVER == '1') $color='e6edf0'; else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_HOVER,array()),''); if ($color) { - if ($color != 'edf4fb') print ''; + if ($color != 'e6edf0') print ''; else print $langs->trans("Default"); } else print $langs->trans("None"); } - print '   ('.$langs->trans("Default").': edf4fb) '; + print '   ('.$langs->trans("Default").': e6edf0) '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); print ''; print ''; @@ -866,22 +866,22 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) //print '   ('.$langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis").')'; if ($edit) { - if ($conf->global->THEME_ELDY_USE_CHECKED == '1') $color='ffefbb'; + if ($conf->global->THEME_ELDY_USE_CHECKED == '1') $color='e6edf0'; else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_CHECKED,array()),''); print $formother->selectColor($color,'THEME_ELDY_USE_CHECKED','formcolor',1).' '; } else { - if ($conf->global->THEME_ELDY_USE_CHECKED == '1') $color='ffefbb'; + if ($conf->global->THEME_ELDY_USE_CHECKED == '1') $color='e6edf0'; else $color = colorArrayToHex(colorStringToArray($conf->global->THEME_ELDY_USE_CHECKED,array()),''); if ($color) { - if ($color != 'ffefbb') print ''; + if ($color != 'e6edf0') print ''; else print $langs->trans("Default"); } else print $langs->trans("None"); } - print '   ('.$langs->trans("Default").': ffefbb) '; + print '   ('.$langs->trans("Default").': e6edf0) '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); print ''; print ''; diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index 350014b3eb9..70f61055689 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -35,6 +35,8 @@ */ function dolWebsiteReplacementOfLinks($website, $content, $removephppart=0) { + $nbrep = 0; + // Replace php code. Note $content may come from database and does not contains body tags. $replacewith='...php...'; if ($removephppart) $replacewith=''; @@ -59,7 +61,12 @@ function dolWebsiteReplacementOfLinks($website, $content, $removephppart=0) //$replacewith='...php...'; $replacewith='...php...'; if ($removephppart) $replacewith=''; - $content = preg_replace('/<\?php((?!\?>).)*\?>\n*/ims', $replacewith, $content); + //$content = preg_replace('/<\?php((?!\?toremove>).)*\?toremove>\n*/ims', $replacewith, $content); + /*if ($content === null) { + if (preg_last_error() == PREG_JIT_STACKLIMIT_ERROR) $content = 'preg_replace error (when removing php tags) PREG_JIT_STACKLIMIT_ERROR'; + }*/ + $content = dolStripPhpCode($content, $replacewith); + //var_dump($content); // Replace relative link / with dolibarr URL $content = preg_replace('/(href=")\/\"/', '\1'.DOL_URL_ROOT.'/website/index.php?website='.$website->ref.'&pageid='.$website->fk_default_home.'"', $content, -1, $nbrep); @@ -88,6 +95,45 @@ function dolWebsiteReplacementOfLinks($website, $content, $removephppart=0) } +/** + * Remove PHP code part from a string. + * + * @param string $str String to clean + * @param string $replacewith String to use as replacement + * @return string Result string without php code + */ +function dolStripPhpCode($str, $replacewith='') +{ + $newstr = ''; + + //split on each opening tag + $parts = explode('', $part); + if (!empty($partlings)) + { + //remove content before closing tag + if (count($partlings) > 1) $partlings[0] = ''; + //append to out string + $newstr .= $replacewith.implode('',$partlings); + } + } + } + return $newstr; +} + + /** * Render a string of an HTML content and output it. * Used to ouput the page when viewed from server (Dolibarr or Apache). diff --git a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php index 7e7d58047b9..7f3cca693b5 100644 --- a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php @@ -352,7 +352,7 @@ class pdf_standard extends ModeleExpenseReport $pageposbefore = $pdf->getPage(); $curY = $nexY; $pdf->startTransaction(); - $this->printLine($pdf, $object, $i, $curY, $default_font_size, $outputlangs); + $this->printLine($pdf, $object, $i, $curY, $default_font_size, $outputlangs, $hidedetails); $pageposafter=$pdf->getPage(); if ($pageposafter > $pageposbefore) { // There is a pagebreak @@ -360,7 +360,7 @@ class pdf_standard extends ModeleExpenseReport $pageposafter = $pageposbefore; //print $pageposafter.'-'.$pageposbefore;exit; $pdf->setPageOrientation('', 1, $heightforfooter); // The only function to edit the bottom margin of current page to set it. - $this->printLine($pdf, $object, $i, $curY, $default_font_size, $outputlangs); + $this->printLine($pdf, $object, $i, $curY, $default_font_size, $outputlangs, $hidedetails); $pageposafter = $pdf->getPage(); $posyafter = $pdf->GetY(); //var_dump($posyafter); var_dump(($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))); exit; @@ -522,15 +522,16 @@ class pdf_standard extends ModeleExpenseReport } /** - * @param PDF $pdf Object PDF + * @param TCPDF $pdf Object PDF * @param Object $object Object to show * @param int $linenumber line number * @param int $curY current y position * @param int $default_font_size default siez of font * @param Translate $outputlangs Object lang for output + * @param int $hidedetails Hide details (0=no, 1=yes, 2=just special lines) * @return void */ - private function printLine(&$pdf, $object, $linenumber, $curY, $default_font_size, $outputlangs) + private function printLine(&$pdf, $object, $linenumber, $curY, $default_font_size, $outputlangs, $hidedetails=0) { global $conf; $pdf->SetFont('','', $default_font_size - 1); diff --git a/htdocs/core/modules/modAccounting.class.php b/htdocs/core/modules/modAccounting.class.php index 20b9bf54edd..c47e8d310f1 100644 --- a/htdocs/core/modules/modAccounting.class.php +++ b/htdocs/core/modules/modAccounting.class.php @@ -80,7 +80,7 @@ class modAccounting extends DolibarrModules "MAIN_COMPANY_CODE_ALWAYS_REQUIRED", "chaine", "1", - "With this constants on, third party code is always required whatever is numbering module behaviour", 0, 'current', 0 + "With this constants on, third party code is always required whatever is numbering module behaviour", 0, 'current', 1 ); $this->const[2] = array( "MAIN_BANK_ACCOUNTANCY_CODE_ALWAYS_REQUIRED", diff --git a/htdocs/core/modules/modCashDesk.class.php b/htdocs/core/modules/modCashDesk.class.php index d9d4a6c2816..d9bfe6b0b5f 100644 --- a/htdocs/core/modules/modCashDesk.class.php +++ b/htdocs/core/modules/modCashDesk.class.php @@ -97,7 +97,7 @@ class modCashDesk extends DolibarrModules // This is to declare the Top Menu entry: $this->menu[$r]=array( 'fk_menu'=>0, // Put 0 if this is a top menu 'type'=>'top', // This is a Top menu entry - 'titre'=>'CashDeskMenu', + 'titre'=>'PointOfSaleShort', 'mainmenu'=>'cashdesk', 'url'=>'/cashdesk/index.php?user=__LOGIN__', 'langs'=>'cashdesk', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. diff --git a/htdocs/core/modules/modTakePos.class.php b/htdocs/core/modules/modTakePos.class.php index 4404ee9de63..1a0a681e206 100644 --- a/htdocs/core/modules/modTakePos.class.php +++ b/htdocs/core/modules/modTakePos.class.php @@ -102,7 +102,7 @@ class modTakePos extends DolibarrModules $this->requiredby = array(); // List of module ids to disable if this one is disabled $this->conflictwith = array(); // List of module class names as string this module is in conflict with $this->langfiles = array("cashdesk"); - $this->phpmin = array(5,43); // Minimum version of PHP required by module + $this->phpmin = array(5,4); // Minimum version of PHP required by module $this->need_dolibarr_version = array(4,0); // Minimum version of Dolibarr required by module $this->warnings_activation = array(); // Warning to show when we activate module. array('always'='text') or array('FR'='textfr','ES'='textes'...) $this->warnings_activation_ext = array(); // Warning to show when we activate an external module. array('always'='text') or array('FR'='textfr','ES'='textes'...) @@ -226,7 +226,7 @@ class modTakePos extends DolibarrModules /* BEGIN MODULEBUILDER TOPMENU */ $this->menu[$r++]=array('fk_menu'=>'', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode 'type'=>'top', // This is a Top menu entry - 'titre'=>'PointOfSale', + 'titre'=>'PointOfSaleShort', 'mainmenu'=>'takepos', 'leftmenu'=>'', 'url'=>'/takepos/takepos.php', diff --git a/htdocs/core/modules/modWebsite.class.php b/htdocs/core/modules/modWebsite.class.php index ade9a23e759..01490278566 100644 --- a/htdocs/core/modules/modWebsite.class.php +++ b/htdocs/core/modules/modWebsite.class.php @@ -167,7 +167,7 @@ class modWebsite extends DolibarrModules if ($result < 0) { $langs->load("errors"); - $this->error=$langs->trans('ErrorFailToCopyDirectory',$src,$dest); + $this->error=$langs->trans('ErrorFailToCopyDir',$src,$dest); return 0; } } diff --git a/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php b/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php index 1ab3dc0180c..76aa73e960e 100644 --- a/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php +++ b/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php @@ -796,7 +796,7 @@ class doc_generic_project_odt extends ModelePDFProjects if (!empty($row['thm'])) { $row['amountht']=($row['task_duration'] / 3600) * $row['thm']; $defaultvat = get_default_tva($mysoc, $mysoc); - $row['amountttc']=price2num($row['amountht'] * (1 + ($defaultvat / 100)),'MT');; + $row['amountttc']=price2num($row['amountht'] * (1 + ($defaultvat / 100)),'MT'); } else { $row['amountht']=0; $row['amountttc']=0; diff --git a/htdocs/core/modules/stock/doc/pdf_stdmovement.modules.php b/htdocs/core/modules/stock/doc/pdf_stdmovement.modules.php index 222538a8554..3ea7e184e35 100644 --- a/htdocs/core/modules/stock/doc/pdf_stdmovement.modules.php +++ b/htdocs/core/modules/stock/doc/pdf_stdmovement.modules.php @@ -150,7 +150,7 @@ class pdf_stdmovement extends ModelePDFMovement // Define position of columns $this->wref = 15; $this->posxidref = $this->marge_gauche; - $this->posxdatemouv = $this->marge_gauche+8;; + $this->posxdatemouv = $this->marge_gauche+8; $this->posxdesc=37; $this->posxlabel=50; $this->posxtva=80; diff --git a/htdocs/core/tpl/extrafields_view.tpl.php b/htdocs/core/tpl/extrafields_view.tpl.php index ed093e4c506..c5c2125750e 100644 --- a/htdocs/core/tpl/extrafields_view.tpl.php +++ b/htdocs/core/tpl/extrafields_view.tpl.php @@ -129,7 +129,7 @@ if (empty($reshook) && is_array($extrafields->attributes[$object->table_element] $html_id = !empty($object->id) ? $object->element.'_extras_'.$key.'_'.$object->id : ''; - print ''; + print ''; // Convert date into timestamp format if (in_array($extrafields->attributes[$object->table_element]['type'][$key], array('date','datetime'))) diff --git a/htdocs/core/tpl/filemanager.tpl.php b/htdocs/core/tpl/filemanager.tpl.php index 5ee19aa25a8..787d3721f35 100644 --- a/htdocs/core/tpl/filemanager.tpl.php +++ b/htdocs/core/tpl/filemanager.tpl.php @@ -143,6 +143,8 @@ if ($action == 'delete_section') if (empty($action) || $action == 'editfile' || $action == 'file_manager' || preg_match('/refresh/i',$action) || $action == 'delete') { + $langs->load("ecm"); + print ''."\n"; print ''."\n"; diff --git a/htdocs/cron/card.php b/htdocs/cron/card.php index 152657e216a..d3c0e8d7992 100644 --- a/htdocs/cron/card.php +++ b/htdocs/cron/card.php @@ -227,6 +227,7 @@ if ($action=='activate') if ($action=='inactive') { $object->status=0; + $object->processing=0; // Add cron task $result = $object->update($user); diff --git a/htdocs/cron/class/cronjob.class.php b/htdocs/cron/class/cronjob.class.php index a71088f3286..df640576d9a 100644 --- a/htdocs/cron/class/cronjob.class.php +++ b/htdocs/cron/class/cronjob.class.php @@ -1068,8 +1068,9 @@ class Cronjob extends CommonObject // Load langs if (! $error) { - $result=$langs->load($this->module_name.'@'.$this->module_name); - if ($result < 0) + $result=$langs->load($this->module_name); + $result=$langs->load($this->module_name.'@'.$this->module_name); // If this->module_name was an existing language file, this will make nothing + if ($result < 0) // If technical error { dol_syslog(get_class($this)."::run_jobs Cannot load module lang file - ".$langs->error, LOG_ERR); $this->error = $langs->error; @@ -1138,14 +1139,17 @@ class Cronjob extends CommonObject $conf->entity = $savcurrententity; return -1; } + // Load langs - $result=$langs->load($this->module_name . '@' . $this->module_name); - if ($result<0) + $result=$langs->load($this->module_name); + $result=$langs->load($this->module_name.'@'.$this->module_name); // If this->module_name was an existing language file, this will make nothing + if ($result < 0) // If technical error { dol_syslog(get_class($this) . "::run_jobs Cannot load module langs" . $langs->error, LOG_ERR); $conf->entity = $savcurrententity; return -1; } + dol_syslog(get_class($this) . "::run_jobs " . $this->libname . "::" . $this->methodename."(" . $this->params . ");", LOG_DEBUG); $params_arr = explode(", ", $this->params); if (!is_array($params_arr)) @@ -1301,7 +1305,7 @@ class Cronjob extends CommonObject */ function getLibStatut($mode=0) { - return $this->LibStatut($this->status,$mode); + return $this->LibStatut($this->status, $mode, $this->processing); } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.NotCamelCaps @@ -1310,43 +1314,47 @@ class Cronjob extends CommonObject * * @param int $status Id statut * @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto + * @param int $processing 0=Not running, 1=Running * @return string Label of status */ - function LibStatut($status,$mode=0) + function LibStatut($status, $mode=0, $processing=0) { // phpcs:enable global $langs; $langs->load('users'); + $moretext = ''; + if ($processing) $moretext=' ('.$langs->trans("Running").')'; + if ($mode == 0) { - if ($status == 1) return $langs->trans('Enabled'); - elseif ($status == 0) return $langs->trans('Disabled'); + if ($status == 1) return $langs->trans('Enabled').$moretext; + elseif ($status == 0) return $langs->trans('Disabled').$moretext; } elseif ($mode == 1) { - if ($status == 1) return $langs->trans('Enabled'); - elseif ($status == 0) return $langs->trans('Disabled'); + if ($status == 1) return $langs->trans('Enabled').$moretext; + elseif ($status == 0) return $langs->trans('Disabled').$moretext; } elseif ($mode == 2) { - if ($status == 1) return img_picto($langs->trans('Enabled'),'statut4','class="pictostatus"').' '.$langs->trans('Enabled'); - elseif ($status == 0) return img_picto($langs->trans('Disabled'),'statut5','class="pictostatus"').' '.$langs->trans('Disabled'); + if ($status == 1) return img_picto($langs->trans('Enabled'),'statut4','class="pictostatus"').' '.$langs->trans('Enabled').$moretext; + elseif ($status == 0) return img_picto($langs->trans('Disabled'),'statut5','class="pictostatus"').' '.$langs->trans('Disabled').$moretext; } elseif ($mode == 3) { - if ($status == 1) return img_picto($langs->trans('Enabled'),'statut4','class="pictostatus"'); - elseif ($status == 0) return img_picto($langs->trans('Disabled'),'statut5','class="pictostatus"'); + if ($status == 1) return img_picto($langs->trans('Enabled').$moretext,'statut4','class="pictostatus"'); + elseif ($status == 0) return img_picto($langs->trans('Disabled').$moretext,'statut5','class="pictostatus"'); } elseif ($mode == 4) { - if ($status == 1) return img_picto($langs->trans('Enabled'),'statut4','class="pictostatus"').' '.$langs->trans('Enabled'); - elseif ($status == 0) return img_picto($langs->trans('Disabled'),'statut5','class="pictostatus"').' '.$langs->trans('Disabled'); + if ($status == 1) return img_picto($langs->trans('Enabled').$moretext,'statut4','class="pictostatus"').' '.$langs->trans('Enabled').$moretext; + elseif ($status == 0) return img_picto($langs->trans('Disabled').$moretext,'statut5','class="pictostatus"').' '.$langs->trans('Disabled').$moretext; } elseif ($mode == 5) { - if ($status == 1) return $langs->trans('Enabled').' '.img_picto($langs->trans('Enabled'),'statut4','class="pictostatus"'); - elseif ($status == 0) return $langs->trans('Disabled').' '.img_picto($langs->trans('Disabled'),'statut5','class="pictostatus"'); + if ($status == 1) return $langs->trans('Enabled').$moretext.' '.img_picto($langs->trans('Enabled').$moretext,'statut4','class="pictostatus"'); + elseif ($status == 0) return $langs->trans('Disabled').$moretext.' '.img_picto($langs->trans('Disabled').$moretext,'statut5','class="pictostatus"'); } } } diff --git a/htdocs/don/class/don.class.php b/htdocs/don/class/don.class.php index b6604133c31..c3941059e64 100644 --- a/htdocs/don/class/don.class.php +++ b/htdocs/don/class/don.class.php @@ -711,8 +711,20 @@ class Don extends CommonObject } } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.NotCamelCaps - /** + /** + * Validate a intervention + * + * @param User $user User that validate + * @param int $notrigger 1=Does not execute triggers, 0= execute triggers + * @return int <0 if KO, >0 if OK + */ + function setValid($user, $notrigger=0) + { + return $this->valid_promesse($this->id, $user->id, $notrigger); + } + + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.NotCamelCaps + /** * Validate a promise of donation * * @param int $id id of donation @@ -720,9 +732,9 @@ class Don extends CommonObject * @param int $notrigger Disable triggers * @return int <0 if KO, >0 if OK */ - function valid_promesse($id, $userid, $notrigger=0) - { - // phpcs:enable + function valid_promesse($id, $userid, $notrigger=0) + { + // phpcs:enable global $langs, $user; $error=0; diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index e317d02a504..1902473a0cd 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -1417,7 +1417,7 @@ class EmailCollector extends CommonObject $modele = empty($conf->global->PROJECT_ADDON)?'mod_project_simple':$conf->global->PROJECT_ADDON; // Search template files - $file=''; $classname=''; $filefound=0; + $file=''; $classname=''; $filefound=0; $reldir=''; $dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']); foreach($dirmodels as $reldir) { diff --git a/htdocs/emailcollector/class/emailcollectoraction.class.php b/htdocs/emailcollector/class/emailcollectoraction.class.php index 1d42a15134c..620795870a0 100644 --- a/htdocs/emailcollector/class/emailcollectoraction.class.php +++ b/htdocs/emailcollector/class/emailcollectoraction.class.php @@ -83,7 +83,7 @@ class EmailCollectorAction extends CommonObject */ public $fields=array( 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-1, 'position'=>1, 'notnull'=>1, 'index'=>1, 'comment'=>"Id",), - 'fk_emailcollector' => array('type'=>'integer', 'label'=>'Id of emailcollector', 'foreignkey'=>'emailcollecotr.rowid'), + 'fk_emailcollector' => array('type'=>'integer', 'label'=>'Id of emailcollector', 'foreignkey'=>'emailcollector.rowid'), 'type' => array('type'=>'varchar(128)', 'label'=>'Type', 'enabled'=>1, 'visible'=>1, 'position'=>10, 'notnull'=>1, 'index'=>1), 'actionparam' => array('type'=>'varchar(255)', 'label'=>'ParamForAction', 'enabled'=>1, 'visible'=>1, 'position'=>40, 'notnull'=>-1), 'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-2, 'position'=>500, 'notnull'=>1,), diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index 4bc41f6fa47..2a09fa2a71e 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -1925,7 +1925,7 @@ else print $paymentexpensereportstatic->getNomUrl(1); print ''; print '\n"; - $labeltype=$langs->trans("PaymentType".$objp->p_code)!=("PaymentType".$objp->p_code)?$langs->trans("PaymentType".$objp->p_code):$objp->fk_typepayment; + $labeltype=$langs->trans("PaymentType".$objp->p_code)!=("PaymentType".$objp->p_code)?$langs->trans("PaymentType".$objp->p_code):$objp->payment_type; print "\n"; if (! empty($conf->banque->enabled)) { diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index efb5c41e300..4bf0a80d8c9 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -459,7 +459,7 @@ class ExpenseReport extends CommonObject $sql.= " d.date_debut, d.date_fin, d.date_create, d.tms as date_modif, d.date_valid, d.date_approve,"; // DATES (datetime) $sql.= " d.fk_user_author, d.fk_user_modif, d.fk_user_validator,"; $sql.= " d.fk_user_valid, d.fk_user_approve,"; - $sql.= " d.fk_statut as status, d.fk_c_paiement,"; + $sql.= " d.fk_statut as status, d.fk_c_paiement, d.paid,"; $sql.= " dp.libelle as libelle_paiement, dp.code as code_paiement"; // INNER JOIN paiement $sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element." as d"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as dp ON d.fk_c_paiement = dp.id"; diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php index 7c05eda422e..32643b77811 100644 --- a/htdocs/fichinter/class/fichinter.class.php +++ b/htdocs/fichinter/class/fichinter.class.php @@ -315,7 +315,6 @@ class Fichinter extends CommonObject */ function update($user, $notrigger=0) { - global $conf; if (! is_numeric($this->duration)) { $this->duration = 0; } diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index 3208dc36f75..729899a8ff2 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -605,10 +605,10 @@ if ($resql) } $num = $db->num_rows($resql); - + $arrayofselected=is_array($toselect)?$toselect:array(); - if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE)) + if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $sall) { $obj = $db->fetch_object($resql); $id = $obj->rowid; @@ -617,7 +617,7 @@ if ($resql) } llxHeader('',$title,$help_url); - + $param=''; if ($socid > 0) $param.='&socid='.$socid; if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index b6ff1d36551..4f40b0cae36 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -904,7 +904,7 @@ if (empty($reshook)) // FIXME Missing special_code into addline and updateline methods $object->special_code = $lines[$i]->special_code; - + // FIXME Missing $lines[$i]->ref_supplier and $lines[$i]->label into addline and updateline methods. They are filled when coming from order for example. $result = $object->addline( $desc, @@ -2717,7 +2717,7 @@ else $paymentstatic->id=$objp->rowid; $paymentstatic->datepaye=$db->jdate($objp->dp); - $paymentstatic->ref=($objp->ref ? $objp->ref : $objp->rowid);; + $paymentstatic->ref=($objp->ref ? $objp->ref : $objp->rowid); $paymentstatic->num_paiement=$objp->num_paiement; $paymentstatic->payment_code=$objp->payment_code; diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index 38c3ef10a2e..9a53b31c8a1 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -427,17 +427,17 @@ if ($resql) $arrayofselected=is_array($toselect)?$toselect:array(); - if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE)) + if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $sall) { $obj = $db->fetch_object($resql); $id = $obj->facid; - + header("Location: ".DOL_URL_ROOT.'/fourn/facture/card.php?facid='.$id); exit; } - + llxHeader('',$langs->trans("SuppliersInvoices"),'EN:Suppliers_Invoices|FR:FactureFournisseur|ES:Facturas_de_proveedores'); - + if ($socid) { $soc = new Societe($db); diff --git a/htdocs/install/doctemplates/websites/website_template-corporate.zip b/htdocs/install/doctemplates/websites/website_template-corporate.zip index e3bc4063fcb..5aca2fbc8aa 100644 Binary files a/htdocs/install/doctemplates/websites/website_template-corporate.zip and b/htdocs/install/doctemplates/websites/website_template-corporate.zip differ diff --git a/htdocs/install/mysql/data/llx_c_input_reason.sql b/htdocs/install/mysql/data/llx_c_input_reason.sql index 1188e7b345d..36bc3faec04 100644 --- a/htdocs/install/mysql/data/llx_c_input_reason.sql +++ b/htdocs/install/mysql/data/llx_c_input_reason.sql @@ -32,3 +32,4 @@ INSERT INTO llx_c_input_reason (rowid,code,label,active) VALUES ( 8, 'SRC_WOM', INSERT INTO llx_c_input_reason (rowid,code,label,active) VALUES ( 9, 'SRC_PARTNER', 'Partner', 1); INSERT INTO llx_c_input_reason (rowid,code,label,active) VALUES (10, 'SRC_EMPLOYEE', 'Employee', 1); INSERT INTO llx_c_input_reason (rowid,code,label,active) VALUES (11, 'SRC_SPONSORING', 'Sponsorship', 1); +INSERT INTO llx_c_input_reason (rowid,code,label,active) VALUES (12, 'SRC_CUSTOMER', 'Incoming contact of a customer', 1); diff --git a/htdocs/install/mysql/migration/8.0.0-9.0.0.sql b/htdocs/install/mysql/migration/8.0.0-9.0.0.sql index b3b290aa4fd..c3e886df914 100644 --- a/htdocs/install/mysql/migration/8.0.0-9.0.0.sql +++ b/htdocs/install/mysql/migration/8.0.0-9.0.0.sql @@ -222,6 +222,6 @@ ALTER TABLE llx_emailcollector_emailcollectoraction ADD CONSTRAINT fk_emailcolle ALTER TABLE llx_emailcollector_emailcollectorfilter ADD UNIQUE INDEX uk_emailcollector_emailcollectorfilter (fk_emailcollector, type, rulevalue); ALTER TABLE llx_emailcollector_emailcollectoraction ADD UNIQUE INDEX uk_emailcollector_emailcollectoraction (fk_emailcollector, type); - - +ALTER TABLE llx_societe_rib ADD COLUMN comment varchar(255); +ALTER TABLE llx_societe_rib ADD COLUMN ipaddress varchar(68); diff --git a/htdocs/install/mysql/tables/llx_societe_rib.sql b/htdocs/install/mysql/tables/llx_societe_rib.sql index 57b22493c85..5bfc6d10fd6 100644 --- a/htdocs/install/mysql/tables/llx_societe_rib.sql +++ b/htdocs/install/mysql/tables/llx_societe_rib.sql @@ -41,10 +41,12 @@ create table llx_societe_rib proprio varchar(60), owner_address varchar(255), default_rib smallint NOT NULL DEFAULT 0, + -- For BAN direct debit feature rum varchar(32), -- RUM value to use for SEPA generation date_rum date, -- Date of mandate frstrecur varchar(16) default 'FRST', -- 'FRST' or 'RECUR' + --For credit card last_four varchar(4), -- last 4 card_type varchar(255), -- card type 'VISA', 'MC' , ... @@ -52,6 +54,7 @@ create table llx_societe_rib exp_date_month INTEGER, exp_date_year INTEGER, country_code varchar(10), + --For Paypal approved INTEGER DEFAULT 0, email varchar(255), @@ -60,9 +63,12 @@ create table llx_societe_rib preapproval_key varchar(255), starting_date date, total_amount_of_all_payments double(24,8), + --For Stripe stripe_card_ref varchar(128), -- 'card_...' + comment varchar(255), + ipaddress varchar(68), status integer NOT NULL DEFAULT 1, -- 1=ACTIVE, 0=IN_TRASH import_key varchar(14) -- import key )ENGINE=innodb; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 53e5ab333a4..8d6e8e39b04 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -305,7 +305,7 @@ ModuleFamilyTechnic=Multi-modules tools ModuleFamilyExperimental=Experimental modules ModuleFamilyFinancial=Financial Modules (Accounting/Treasury) ModuleFamilyECM=Electronic Content Management (ECM) -ModuleFamilyPortal=Web sites and other frontal application +ModuleFamilyPortal=Websites and other frontal application ModuleFamilyInterface=Interfaces with external systems MenuHandlers=Menu handlers MenuAdmin=Menu editor @@ -487,7 +487,7 @@ DAV_ALLOW_ECM_DIRTooltip=The root directory where all files are manually uploade Module0Name=Users & Groups Module0Desc=Users / Employees and Groups management Module1Name=Third Parties -Module1Desc=Companies and contact management (customers, prospects...) +Module1Desc=Companies and contacts management (customers, prospects...) Module2Name=Commercial Module2Desc=Commercial management Module10Name=Accounting @@ -1843,6 +1843,7 @@ LoadThirdPartyFromName=Load thirdparty from name (load only) LoadThirdPartyFromNameOrCreate=Load thirdparty from name (create if not found) WithDolTrackingID=Dolibarr Tracking ID found WithoutDolTrackingID=Dolibarr Tracking ID not found +FormatZip=Zip ##### Resource #### ResourceSetup=Configuration du module Resource UseSearchToSelectResource=Use a search form to choose a resource (rather than a drop-down list). diff --git a/htdocs/langs/en_US/banks.lang b/htdocs/langs/en_US/banks.lang index 7650613341e..37a1d03a2d3 100644 --- a/htdocs/langs/en_US/banks.lang +++ b/htdocs/langs/en_US/banks.lang @@ -164,3 +164,5 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to +BankAccountReleveModule=Module Bank statement +AutoReportLastAccountStatement=Automatic report account stament diff --git a/htdocs/langs/en_US/cashdesk.lang b/htdocs/langs/en_US/cashdesk.lang index 7fb03ea235c..986ac02a7e9 100644 --- a/htdocs/langs/en_US/cashdesk.lang +++ b/htdocs/langs/en_US/cashdesk.lang @@ -33,6 +33,7 @@ FilterRefOrLabelOrBC=Search (Ref/Label) UserNeedPermissionToEditStockToUsePos=You ask to decrease stock on invoice creation, so user that uses POS needs to have permission to edit stock. DolibarrReceiptPrinter=Dolibarr Receipt Printer PointOfSale=Point of sales +PointOfSaleShort=POS CloseBill=Close Bill Floors=Floors Floor=Floor diff --git a/htdocs/langs/en_US/dict.lang b/htdocs/langs/en_US/dict.lang index 59e7cc058f4..ad3a24e12f6 100644 --- a/htdocs/langs/en_US/dict.lang +++ b/htdocs/langs/en_US/dict.lang @@ -295,7 +295,7 @@ CurrencyCentINR=paisa CurrencyCentSingINR=paise CurrencyThousandthSingTND=thousandth #### Input reasons ##### -DemandReasonTypeSRC_INTE=Internetaaa +DemandReasonTypeSRC_INTE=Internet DemandReasonTypeSRC_CAMP_MAIL=Mailing campaign DemandReasonTypeSRC_CAMP_EMAIL=EMailing campaign DemandReasonTypeSRC_CAMP_PHO=Phone campaign @@ -306,6 +306,7 @@ DemandReasonTypeSRC_WOM=Word of mouth DemandReasonTypeSRC_PARTNER=Partner DemandReasonTypeSRC_EMPLOYEE=Employee DemandReasonTypeSRC_SPONSORING=Sponsorship +DemandReasonTypeSRC_SRC_CUSTOMER=Incoming contact of a customer #### Paper formats #### PaperFormatEU4A0=Format 4A0 PaperFormatEU2A0=Format 2A0 diff --git a/htdocs/langs/en_US/holiday.lang b/htdocs/langs/en_US/holiday.lang index 8cf5ec2c1e6..2fad3d02a7f 100644 --- a/htdocs/langs/en_US/holiday.lang +++ b/htdocs/langs/en_US/holiday.lang @@ -112,7 +112,7 @@ NoticePeriod=Notice period 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 request does have enough available days. +HolidaysToValidateAlertSolde=The user who made this leave request does not have enough available days. HolidaysValidated=Validated leave requests HolidaysValidatedBody=Your leave request for %s to %s has been validated. HolidaysRefused=Request denied diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 233b9bba076..b3ea678aea0 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -437,6 +437,7 @@ ContactsForCompany=Contacts for this third party ContactsAddressesForCompany=Contacts/addresses for this third party AddressesForCompany=Addresses for this third party ActionsOnCompany=Events about this third party +ActionsOnContact=Events about this contact/address ActionsOnMember=Events about this member ActionsOnProduct=Events about this product NActionsLate=%s late @@ -847,9 +848,9 @@ ModuleBuilder=Module Builder SetMultiCurrencyCode=Set currency BulkActions=Bulk actions ClickToShowHelp=Click to show tooltip help -WebSite=Web site -WebSites=Web sites -WebSiteAccounts=Web site accounts +WebSite=Website +WebSites=Websites +WebSiteAccounts=Website accounts ExpenseReport=Expense report ExpenseReports=Expense reports HR=HR diff --git a/htdocs/langs/en_US/other.lang b/htdocs/langs/en_US/other.lang index 3a36c6d89ed..ec0315b94cd 100644 --- a/htdocs/langs/en_US/other.lang +++ b/htdocs/langs/en_US/other.lang @@ -83,6 +83,7 @@ LinkedObject=Linked object NbOfActiveNotifications=Number of notifications (no. of recipient emails) PredefinedMailTest=__(Hello)__\nThis is a test mail sent to __EMAIL__.\nThe two lines are separated by a carriage return.\n\n__USER_SIGNATURE__ PredefinedMailTestHtml=__(Hello)__\nThis is a test mail (the word test must be in bold).
The two lines are separated by a carriage return.

__USER_SIGNATURE__ +PredefinedMailContentContract=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ PredefinedMailContentSendInvoice=__(Hello)__\n\nPlease find attached invoice __REF__\n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ PredefinedMailContentSendInvoiceReminder=__(Hello)__\n\nWe would like to warn you that the invoice __REF__ seems to have not been paid. The invoice is attached, as a reminder.\n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ PredefinedMailContentSendProposal=__(Hello)__\n\nPlease find attached commercial proposal __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ @@ -261,6 +262,6 @@ WEBSITE_PAGEURL=URL of page WEBSITE_TITLE=Title WEBSITE_DESCRIPTION=Description WEBSITE_IMAGE=Image -WEBSITE_IMAGEDesc=Relative path of the image media. You can keep this empty as this is rarely used (it can be used when container is of type 'blog_post' to show a preview of a news in some pages with dynamic content of Blog Posts. +WEBSITE_IMAGEDesc=Relative path of the image media. You can keep this empty as this is rarely used (it can be used by dynamic content to show a preview of a list of blog posts). WEBSITE_KEYWORDS=Keywords LinesToImport=Lines to import diff --git a/htdocs/langs/en_US/website.lang b/htdocs/langs/en_US/website.lang index 55ca8ceaf3d..d96f2bfb1cb 100644 --- a/htdocs/langs/en_US/website.lang +++ b/htdocs/langs/en_US/website.lang @@ -13,7 +13,7 @@ WEBSITE_CSS_INLINE=CSS file content (common to all pages) WEBSITE_JS_INLINE=Javascript file content (common to all pages) WEBSITE_HTML_HEADER=Addition at bottom of HTML Header (common to all pages) WEBSITE_ROBOT=Robot file (robots.txt) -WEBSITE_HTACCESS=Web site .htaccess file +WEBSITE_HTACCESS=Website .htaccess file HtmlHeaderPage=HTML header (specific to this page only) PageNameAliasHelp=Name or alias of the page.
This alias is also used to forge a SEO URL when website is ran from a Virtual host of a Web server (like Apacke, Nginx, ...). Use the button "%s" to edit this alias. EditTheWebSiteForACommonHeader=Note: If you want to define a personalized header for all pages, edit the header on the site level instead of on the page/container. @@ -54,7 +54,7 @@ YouCanEditHtmlSourceckeditor=You can edit HTML source code using the "Source" bu YouCanEditHtmlSource=
You can include PHP code into this source using tags <?php ?>. The following global variables are available: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs.

You can also include content of another Page/Container with the following syntax:
<?php includeContainer('alias_of_container_to_include'); ?>

You can make a redirect to another Page/Container with the following syntax (Note: do not output any content before a redirect):
<?php redirectToContainer('alias_of_container_to_redirect_to'); ?>

To add a link to another page, use the syntax:
<a href="alias_of_page_to_link_to.php">mylink<a>

To include a link to download a file stored into the documents directory, use the document.php wrapper:
Example, for a file into documents/ecm (need to be logged), syntax is:
<a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
For a file into documents/medias (open directory for public access), syntax is:
<a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext">
For a file shared with a share link (open access using the sharing hash key of file), syntax is:
<a href="/document.php?hashp=publicsharekeyoffile">

To include an image stored into the documents directory, use the viewimage.php wrapper:
Example, for an image into documents/medias (open directory for public access), syntax is:
<img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext">
ClonePage=Clone page/container CloneSite=Clone site -SiteAdded=Web site added +SiteAdded=Website added ConfirmClonePage=Please enter code/alias of new page and if it is a translation of the cloned page. PageIsANewTranslation=The new page is a translation of the current page ? LanguageMustNotBeSameThanClonedPage=You clone a page as a translation. The language of the new page must be different than language of source page. @@ -68,8 +68,8 @@ ImportSite=Import website template IDOfPage=Id of page Banner=Banner BlogPost=Blog post -WebsiteAccount=Web site account -WebsiteAccounts=Web site accounts +WebsiteAccount=Website account +WebsiteAccounts=Website accounts AddWebsiteAccount=Create web site account BackToListOfThirdParty=Back to list for Third Party DisableSiteFirst=Disable website first @@ -78,7 +78,7 @@ AnotherContainer=Another container WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / thirdparty YouMustDefineTheHomePage=You must first define the default Home page -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved to experienced user. Depending on the complexity of source page, the result of importation may differs once imported from original. Also if the source page use common CSS style or not compatible javascript, it may break the look or features of the Web site editor when working on this page. This method is faster way to have a page but it is recommanded to create your new page from scratch or from a suggested page template.
Note also that only edition of HTML source will be possible when a page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved to experienced user. Depending on the complexity of source page, the result of importation may differs once imported from original. Also if the source page use common CSS style or not compatible javascript, it may break the look or features of the Website editor when working on this page. This method is faster way to have a page but it is recommanded to create your new page from scratch or from a suggested page template.
Note also that only edition of HTML source will be possible when a page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site GrabImagesInto=Grab also images found into css and page. ImagesShouldBeSavedInto=Images should be saved into directory diff --git a/htdocs/langs/es_ES/accountancy.lang b/htdocs/langs/es_ES/accountancy.lang index f1974e50b4a..e66bcace056 100644 --- a/htdocs/langs/es_ES/accountancy.lang +++ b/htdocs/langs/es_ES/accountancy.lang @@ -104,7 +104,7 @@ WriteBookKeeping=Registrar movimientos en el Libro Mayor Bookkeeping=Libro Mayor AccountBalance=Saldo de la cuenta ObjectsRef=Referencia de objeto origen -CAHTF=Total purchase supplier before tax +CAHTF=Total compras a proveedor antes de impuestos TotalExpenseReport=Total informe de gastos InvoiceLines=Líneas de facturas a contabilizar InvoiceLinesDone=Líneas de facturas contabilizadas diff --git a/htdocs/langs/es_ES/commercial.lang b/htdocs/langs/es_ES/commercial.lang index 7682a8572be..94a6697ec05 100644 --- a/htdocs/langs/es_ES/commercial.lang +++ b/htdocs/langs/es_ES/commercial.lang @@ -60,8 +60,8 @@ ActionAC_CLO=Cierre ActionAC_EMAILING=Envío mailing masivo ActionAC_COM=Envío pedido de cliente por correo ActionAC_SHIP=Envío expedición por correo -ActionAC_SUP_ORD=Send purchase order by mail -ActionAC_SUP_INV=Send vendor invoice by mail +ActionAC_SUP_ORD=Envío pedido a proveedor por correo +ActionAC_SUP_INV=Envío de factura de proveedor por correo ActionAC_OTH=Otra ActionAC_OTH_AUTO=Eventos creados automáticamente ActionAC_MANUAL=Eventos creados manualmente diff --git a/htdocs/langs/es_ES/orders.lang b/htdocs/langs/es_ES/orders.lang index cbebd3033d3..0c56501ab5a 100644 --- a/htdocs/langs/es_ES/orders.lang +++ b/htdocs/langs/es_ES/orders.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - orders OrdersArea=Área pedidos de clientes -SuppliersOrdersArea=Purchase orders area +SuppliersOrdersArea=Área pedidos a proveedores OrderCard=Ficha pedido OrderId=Id pedido Order=Pedido @@ -13,9 +13,9 @@ OrderToProcess=Pedido a procesar NewOrder=Nuevo pedido ToOrder=Realizar pedido MakeOrder=Realizar pedido -SupplierOrder=Purchase order -SuppliersOrders=Purchase orders -SuppliersOrdersRunning=Current purchase orders +SupplierOrder=Pedido a proveedor +SuppliersOrders=Pedidos a proveedores +SuppliersOrdersRunning=Pedidos a proveedores actuales CustomerOrder=Cuenta bloqueada CustomersOrders=Pedidos de clientes CustomersOrdersRunning=Pedidos de clientes en curso @@ -24,7 +24,7 @@ OrdersDeliveredToBill=Pedidos de clientes enviados a facturar OrdersToBill=Pedidos de clientes enviados OrdersInProcess=Pedidos de clientes en proceso OrdersToProcess=Pedidos de clientes a procesar -SuppliersOrdersToProcess=Purchase orders to process +SuppliersOrdersToProcess=Pedidos a proveedores a procesar StatusOrderCanceledShort=Anulado StatusOrderDraftShort=Borrador StatusOrderValidatedShort=Validado diff --git a/htdocs/langs/es_ES/suppliers.lang b/htdocs/langs/es_ES/suppliers.lang index 0cc0b1805c4..4cbcf8788eb 100644 --- a/htdocs/langs/es_ES/suppliers.lang +++ b/htdocs/langs/es_ES/suppliers.lang @@ -21,20 +21,20 @@ SupplierPayment=Vendor payment SuppliersArea=Vendor area RefSupplierShort=Ref. vendor Availability=Disponibilidad -ExportDataset_fournisseur_1=Vendor invoices list and invoice lines -ExportDataset_fournisseur_2=Vendor invoices and payments -ExportDataset_fournisseur_3=Purchase orders and order lines +ExportDataset_fournisseur_1=Facturas de proveedor y líneas de factura +ExportDataset_fournisseur_2=Facturas de proveedor y pagos +ExportDataset_fournisseur_3=Pedidos a proveedor y líneas de pedido ApproveThisOrder=Aprobar este pedido ConfirmApproveThisOrder=Está seguro de querer aprobar el pedido a proveedor %s? DenyingThisOrder=Denegar este pedido ConfirmDenyingThisOrder=¿Está seguro de querer denegar el pedido a proveedor %s? ConfirmCancelThisOrder=¿Está seguro de querer cancelar el pedido a proveedor %s? -AddSupplierOrder=Create Purchase Order -AddSupplierInvoice=Create vendor invoice +AddSupplierOrder=Crear pedido a proveedor +AddSupplierInvoice=Crear factura de proveedor ListOfSupplierProductForSupplier=List of products and prices for vendor %s SentToSuppliers=Sent to vendors -ListOfSupplierOrders=List of purchase orders -MenuOrdersSupplierToBill=Purchase orders to invoice +ListOfSupplierOrders=Listado de pedidos a proveedor +MenuOrdersSupplierToBill=Pedidos a proveedor a facturar NbDaysToDelivery=Tiempo de entrega en días DescNbDaysToDelivery=El mayor retraso en las entregas de productos de este pedido SupplierReputation=Vendor reputation diff --git a/htdocs/langs/fr_CA/multicurrency.lang b/htdocs/langs/fr_CA/multicurrency.lang index 19d1191fe08..054df9a4203 100644 --- a/htdocs/langs/fr_CA/multicurrency.lang +++ b/htdocs/langs/fr_CA/multicurrency.lang @@ -2,7 +2,6 @@ ErrorAddRateFail=Erreur dans le taux ajouté ErrorAddCurrencyFail=Erreur dans la monnaie ajoutée ErrorDeleteCurrencyFail=Erreur de suppression d'échec -multicurrency_syncronize_error=Erreur de synchronisation: %s multicurrency_appCurrencySource=Source de devises CurrenciesUsed_help_to_add=Ajoutez les différentes devises et taux que vous devez utiliser sur propositions, commandes , etc. MulticurrencyReceived=Reçu, monnaie d'origine diff --git a/htdocs/langs/fr_CA/products.lang b/htdocs/langs/fr_CA/products.lang index b12ccf56bf2..02bd444e0e5 100644 --- a/htdocs/langs/fr_CA/products.lang +++ b/htdocs/langs/fr_CA/products.lang @@ -103,7 +103,6 @@ ListProductServiceByPopularity=Liste des produits / services par popularité Finished=Produit fabriqué CloneProduct=Clone produit ou service ConfirmCloneProduct=Êtes-vous sûr de vouloir cloner un produit ou un service %s? -CloneContentProduct=Cloner toutes les informations principales du produit / service CloneCompositionProduct=Produit / service emballé par clone CloneCombinationsProduct=Variantes de produit de clonage NewRefForClone=Réf. De nouveau produit / service diff --git a/htdocs/langs/fr_CA/stocks.lang b/htdocs/langs/fr_CA/stocks.lang index fbf6cdcbe0f..dda238f9e50 100644 --- a/htdocs/langs/fr_CA/stocks.lang +++ b/htdocs/langs/fr_CA/stocks.lang @@ -113,7 +113,6 @@ inventoryValidate=Validée inventoryDraft=Fonctionnement inventorySelectWarehouse=Choix d'entrepôt inventoryOfWarehouse=Inventaire pour entrepôt: %s -inventoryErrorQtyAdd=Erreur: une quantité est inférieure à zéro SelectCategory=Filtre de catégorie INVENTORY_DISABLE_VIRTUAL=Permettre au produit non déstocké d'un produit d'un kit d'inventaire INVENTORY_USE_MIN_PA_IF_NO_LAST_PA=Utilisez le prix d'achat si aucun dernier prix d'achat ne peut être trouvé @@ -125,7 +124,6 @@ LastPA=Dernière BP RealQty=Qté réelle RegulatedQty=Qté réglementée FlushInventory=Flush inventaire -ConfirmFlushInventory=Confirmez-vous cette action? InventoryFlushed=Inventaire rincé ExitEditMode=Édition de sortie inventoryDeleteLine=Suppression de ligne diff --git a/htdocs/langs/fr_FR/accountancy.lang b/htdocs/langs/fr_FR/accountancy.lang index 2520a840997..62263b0597d 100644 --- a/htdocs/langs/fr_FR/accountancy.lang +++ b/htdocs/langs/fr_FR/accountancy.lang @@ -36,12 +36,12 @@ AlreadyInGeneralLedger=Enregistrement déjà présent dans le grand livre NotYetInGeneralLedger=Pas encore envoyé dans le grand livre GroupIsEmptyCheckSetup=Le groupe est vide. Vérifier la configuration du groupe personnalisé DetailByAccount=Afficher le détail par compte -AccountWithNonZeroValues=Accounts with non-zero values +AccountWithNonZeroValues=Comptes avec des valeurs non nulles ListOfAccounts=Liste des comptes -CountriesInEEC=Countries in EEC -CountriesNotInEEC=Countries not in EEC -CountriesInEECExceptMe=Countries in EEC except %s -CountriesExceptMe=All countries except %s +CountriesInEEC=Pays de la CEE +CountriesNotInEEC=Pays hors CEE +CountriesInEECExceptMe=Pays de la CEE sauf %s +CountriesExceptMe=Tous les pays sauf %s MainAccountForCustomersNotDefined=Compte comptable général pour les clients non défini dans la configuration MainAccountForSuppliersNotDefined=Compte comptable général pour les fournisseurs non défini dans la configuration @@ -160,7 +160,7 @@ Docref=Référence LabelAccount=Libellé du compte LabelOperation=Libellé opération Sens=Sens -LetteringCode=Lettering code +LetteringCode=Code de lettrage Codejournal=Journal NumPiece=Numéro de pièce TransactionNumShort=Num. transaction @@ -203,7 +203,7 @@ PaymentsNotLinkedToProduct=Paiement non lié à un produit / service Pcgtype=Groupe de comptes comptables Pcgsubtype=Sous-groupe de comptes comptables -PcgtypeDesc=Group and subgroup of account are used as predefined 'filter' and 'grouping' criteria for some accounting reports. For example, 'INCOME' or 'EXPENSE' are used as groups for accounting accounts of products to build the expense/income report. +PcgtypeDesc=Les groupes et sous-groupes de comptes sont utilisés comme critères de filtre et de regroupement prédéfinis pour certains rapports de comptabilité. Par exemple, «REVENU» ou «CHARGES» sont utilisés en tant que groupes pour la comptabilité des produits afin de générer le rapport dépenses / revenus. TotalVente=Total chiffre affaires hors taxe TotalMarge=Total marge @@ -226,7 +226,7 @@ AutomaticBindingDone=Liaison automatique faite ErrorAccountancyCodeIsAlreadyUse=Erreur, vous ne pouvez pas détruire de compte comptable car il est utilisé MvtNotCorrectlyBalanced=Mouvement non équilibré. Débit = %s| Crébit = %s -Balancing=Balancing +Balancing=Équilibrage FicheVentilation=Fiche lien GeneralLedgerIsWritten=Les transactions sont enregistrées dans le grand livre GeneralLedgerSomeRecordWasNotRecorded=Certaines des opérations n'ont pu être journalisées. S'il n'y a pas d'autres messages, c'est probablement car elles sont déjà comptabilisées. @@ -253,7 +253,7 @@ AccountingJournalType5=Note de frais AccountingJournalType8=Inventaire AccountingJournalType9=A-nouveaux ErrorAccountingJournalIsAlreadyUse=Le journal est déjà utilisé -AccountingAccountForSalesTaxAreDefinedInto=Remarque: Le compte de comptabilité pour la TVA est défini dans le menu %s - %s +AccountingAccountForSalesTaxAreDefinedInto=Remarque: Le compte comptable pour la TVA est défini dans le menu %s - %s ## Export ExportDraftJournal=Exporter le journal brouillon @@ -269,7 +269,7 @@ Modelcsv_ebp=Export vers EBP Modelcsv_cogilog=Export vers Cogilog Modelcsv_agiris=Export vers Agiris Modelcsv_configurable=Export CSV Configurable -Modelcsv_FEC=Export FEC (Art. L47 A) (Test) +Modelcsv_FEC=Exportation FEC (Art. L47 A) (Test) ChartofaccountsId=Id plan comptable ## Tools - Init accounting account on product / service @@ -303,7 +303,7 @@ BookeppingLineAlreayExists=Lignes dejà existantes dans le grand livre NoJournalDefined=Pas de journal défini Binded=Lignes liées ToBind=Lignes à lier -UseMenuToSetBindindManualy=Lines not yet bound, use menu %s to make the binding manually +UseMenuToSetBindindManualy=Lignes non encore liées, utilisez le menu %s pour effectuer la liaison manuellement. ## Import ImportAccountingEntries=Écritures comptables diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 943a3398b87..2efb3b815ba 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -193,7 +193,7 @@ FeatureDisabledInDemo=Fonction désactivée dans la démo FeatureAvailableOnlyOnStable=Fonction disponible uniquement sur les versions officielles stables BoxesDesc=Les widgets sont des composants montrant des informations que vous pouvez ajouter à vos pages pour les personnaliser. Vous pouvez choisir de les afficher ou non en sélectionnant la page cible et en cliquant sur "Activer" ou "Désactiver". OnlyActiveElementsAreShown=Seuls les éléments en rapport avec un module actif sont présentés. -ModulesDesc=Les modules Dolibarr définissent quelles fonctionnalités sont disponibles dans le logiciel. Certains modules / applications nécessitent, après activation, d'accorder des autorisations aux utilisateurs. Cliquez sur le bouton activé / désactivé pour activer un module / application. +ModulesDesc=Les modules Dolibarr définissent quelles fonctionnalités sont disponibles dans le logiciel. Certains modules / applications nécessitent, après activation, d'accorder des autorisations aux utilisateurs. Cliquez sur le bouton activé/désactivé (en fin de ligne) pour activer un module/application. ModulesMarketPlaceDesc=D'autres modules/extensions sont disponibles en téléchargement sur des sites externes sur Internet... ModulesDeployDesc=Si les permissions de votre système de fichier le permettent , vous pouvez utiliser cet outil pour déployer un module externe. Le module sera alors visible dans l'onglet %s. ModulesMarketPlaces=Rechercher un module/application externe @@ -211,8 +211,8 @@ Nouveauté=Nouveauté AchatTelechargement=Acheter/télécharger GoModuleSetupArea=Pour déployer/installer un nouveau module, rendez vous dans la zone de configuration des modules : %s DoliStoreDesc=DoliStore, la place de marché officielle des modules et extensions complémentaires pour Dolibarr ERP/CRM -DoliPartnersDesc=Liste de quelques sociétés qui peuvent fournir/développer des modules ou fonctions sur mesure.
Remarque: Toute société Open Source connaissant le langage PHP peut fournir du développement spécifique. -WebSiteDesc=Sites fournisseurs à consulter pour trouver plus de modules... +DoliPartnersDesc=Liste de quelques sociétés qui peuvent fournir/développer des modules ou fonctions sur mesure.
Remarque: Toute société Open Source connaissant le langage PHP peut fournir du développement spécifique. +WebSiteDesc=Sites fournisseurs à consulter pour trouver plus de modules (extensions)... DevelopYourModuleDesc=Quelques pistes pour développer votre propre module/application... URL=Lien BoxesAvailable=Widgets disponibles @@ -321,7 +321,7 @@ SetupIsReadyForUse=L"installation du module est terminée. Il est cependant néc NotExistsDirect=Le dossier racine alternatif n'est pas défini.
InfDirAlt=Depuis les versions 3, il est possible de définir un dossier racine alternatif. Cela permet d'installer modules et thèmes additionnels dans un répertoire dédié.
Créer un dossier racine alternatif à Dolibarr (ex : custom).
InfDirExample=
Ensuite, déclarez le dans le fichier conf.php
$dolibarr_main_url_root_alt='/custom'
$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'
Si ces lignes sont commentées avec un symbole "#" ou "//", activer les en supprimant le caractère "#" ou "//". -YouCanSubmitFile=Pour cette étape, vous pouvez soumettre votre fichier package ici : +YouCanSubmitFile=Pour cette étape, vous pouvez téléverser votre fichier package .zip ici : CurrentVersion=Version actuelle de Dolibarr CallUpdatePage=Aller à la page de mise à jour de la structure et des données de la base : %s. LastStableVersion=Dernière version stable disponible @@ -331,9 +331,9 @@ LastActivationIP=Dernière adresse IP d'activation UpdateServerOffline=Serveur de mise à jour hors ligne WithCounter=Gérer un compteur GenericMaskCodes=Vous pouvez saisir tout masque de numérotation. Dans ce masque, les balises suivantes peuvent être utilisées:
{000000} correspond à un numéro qui sera incrémenté à chaque %s. Mettre autant de zéro que la longueur désirée du compteur. Le compteur sera complété par des 0 à gauche afin d'avoir autant de zéro que dans le masque.
{000000+000} idem que précédemment mais un décalage correspondant au nombre à droite du + est appliqué dès la première %s.
{000000@x} idem que précédemment mais le compteur est remis à zéro le xème mois de l'année (x entre 1 et 12, ou 0 pour utiliser le mois de début d'exercice fiscal défini dans votre configuration, ou 99 pour remise à zéro chaque mois). Si cette option est utilisée et x vaut 2 ou plus, alors la séquence {yy}{mm} ou {yyyy}{mm} est obligatoire.
{dd} jour (01 à 31).
{mm} mois (01 à 12).
{yy}, {yyyy} ou {y} année sur 2, 4 ou 1 chiffres.
-GenericMaskCodes2={cccc} : code client sur n caractères
{cccc000} : code client sur n caractères suivi d'un compteur propre au client. Ce compteur propre au client est remis à zéro en même temps que le compteur général.
{tttt} code du type de tiers sur n caractères (Voir menu Accueil > Configuration > Dictionnaires > Types de tiers). Si vous ajoutez cet élément au masque de numérotation, le compteur sera différent pour chaque type de tiers.
+GenericMaskCodes2={cccc} : code client sur n caractères
{cccc000} : code client sur n caractères suivi d'un compteur propre au client. Ce compteur propre au client est remis à zéro en même temps que le compteur général.
{tttt} code du type de tiers sur n caractères (Voir menu Accueil > Configuration > Dictionnaires > Types de tiers). Si vous ajoutez cet élément au masque de numérotation, le compteur sera différent pour chaque type de tiers.
GenericMaskCodes3=Tout autre caractère dans le masque sera laissé inchangé.
Les espaces ne sont pas permis.
-GenericMaskCodes4a=Exemple sur la 99eme %s du tiers LaCompanie faite le 31/03/2007 :
+GenericMaskCodes4a=Exemple sur la 99eme %s du tiers LaCompanie faite le 31/01/2007:
GenericMaskCodes4b=Exemple sur un tiers créé le 31/03/2007 :
GenericMaskCodes4c=Exemple sur un produit/service créé le 31/03/2007 :
GenericMaskCodes5=ABC{yy}{mm}-{000000} donnera ABC0703-000099
{0000+100@1}-XXX-{dd}-YYY donnera 0199-XXX-31-YYY
IN{yy}{mm}-{0000}-{t} donnera IN0701-0099-A si la société a le type 'Responsable Inscripto' avec le code type qui est 'A_RI' @@ -374,7 +374,7 @@ ResponseTimeout=Délai expiration de réponse SmsTestMessage=Message de test de __PHONEFROM__ vers __PHONETO__ ModuleMustBeEnabledFirst=Le module %s doit être activé pour utiliser cette fonction. SecurityToken=Clé de sécurisation des URLs -NoSmsEngine=Aucun gestionnaire d'envoi de SMS n'est disponible. Les gestionnaires d'envois SMS ne sont pas installés en standard (car dépendent d'un fournisseur) mais vous pourrez en trouver depuis la plateforme %s +NoSmsEngine=Aucun gestionnaire d'envoi de SMS n'est disponible. Les gestionnaires d'envois SMS ne sont pas installés en standard, car dépendent d'un fournisseur externe, mais vous pourrez en trouver depuis la plateforme %s PDF=PDF PDFDesc=Vous pouvez définir ici des options globales sur la génération des PDF PDFAddressForging=Règles de fabrication des zones adresses @@ -419,11 +419,11 @@ ExtrafieldLink=Lien vers un objet ComputedFormula=Champ calculé ComputedFormulaDesc=Vous pouvez entrer ici une formule utilisant les propriétés objet ou tout code PHP pour obtenir des valeurs dynamiques. Vous pouvez utiliser toute formule compatible PHP, incluant l'opérateur conditionnel "?", et les objets globaux : $db, $conf, $langs, $mysoc, $user, $object.
ATTENTION : Seulement quelques propriétés de l'objet $object pourraient être disponibles. Si vous avez besoin de propriétés non chargées, créez vous même une instance de l'objet dans votre formule, comme dans le deuxième exemple.
Utiliser un champs calculé signifie que vous ne pouvez pas entrer vous même toute valeur à partir de l'interface. Aussi, s'il y a une erreur de syntaxe, la formule pourrait ne rien retourner.

Exemple de formule:
$object->id < 10 ? round($object->id / 2, 2) : ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Exemple pour recharger l'objet:
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetch($obj->id ? $obj->id : ($obj->rowid ? $obj->rowid : $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5 : '-1'

Un autre exemple de formule pour forcer le rechargement d'un objet et de son objet parent:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetch($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetch($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref : 'Objet parent projet non trouvé' ExtrafieldParamHelpPassword=Laissez ce champ vide signifie que la valeur sera stockée sans cryptage (le champ doit juste être caché avec des étoiles sur l'écran).
Définissez la valeur 'auto' pour utiliser la règle de cryptage par défaut pour enregistrer le mot de passe dans la base de données (ensuite la valeur utilisée sera le hash uniquement, sans moyen de retrouver la valeur d'origine) -ExtrafieldParamHelpselect=La liste doit être de la forme clef,valeur (où la clé ne peut être '0')

par exemple :
1,valeur1
2,valeur2
3,valeur3
...

\nPour afficher une liste dépendant d'une autre liste attribut complémentaire:
1, valeur1|options_code_liste_parente:clé_parente
2,valeur2|option_Code_liste_parente:clé_parente

\nPour que la liste soit dépendante d'une autre liste:
1,valeur1|code_liste_parent:clef_parent
2,valeur2|code_liste_parent:clef_parent +ExtrafieldParamHelpselect=La liste doit être de la forme clef,valeur (où la clé ne peut être '0')

par exemple :
1,valeur1
2,valeur2
3,valeur3
...

\nPour afficher une liste dépendant d'une autre liste attribut complémentaire:
1, valeur1|options_code_liste_parente:clé_parente
2,valeur2|option_Code_liste_parente:clé_parente

\nPour que la liste soit dépendante d'une autre liste:
1,valeur1|code_liste_parent:clef_parent
2,valeur2|code_liste_parent:clef_parent ExtrafieldParamHelpcheckbox=La liste doit être de la forme clef,valeur (où la clé ne peut être '0')

par exemple :
1,valeur1
2,valeur2
3,valeur3
... ExtrafieldParamHelpradio=La liste doit être de la forme clef,valeur (où la clé ne peut être '0')

par exemple :
1,valeur1
2,valeur2
3,valeur3
... -ExtrafieldParamHelpsellist=Les paramètres de la liste viennent d'une table
Syntax : table_name:label_field:id_field::filter
Exemple : c_typent:libelle:id::filter

-idfilter est nécessairement une clé primaire int
- filter peut être un simple test (e.g. active=1) pour seulement montrer les valeurs actives
Vous pouvez aussi utiliser $ID$ dans le filtre qui est le ID actuel de l'objet
Pour faire un SELECT dans le filtre, utilisez $SEL$
Si vous voulez filtrer sur un extrafield, utilisez la syntaxe extra.fieldcode=... (ou fieldcode est le code de l'extrafield)

Pour avoir une liste qui dépend d'un autre attribut complémentaire:
\n
c_typent:libelle:id:options_parent_list_code|parent_column:filter

Pour avoir une liste qui dépend d'une autre liste:
\nc_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=Les paramètres de la liste proviennent d'une table
:\nSyntaxe : nom_de_la_table:libelle_champ:id_champ::filtre
\nExemple : c_typent:libelle:id::filter

le filtre peut n'est qu'un test (ex : active=1) pour n'afficher que les valeurs actives.
Vous pouvez aussi utiliser $ID$ dans les filtres pour indiquer l'ID de l'élément courant.
\nPour utiliser un SELECT dans un filtre, utilisez $SEL$
\nPour filtrer sur un attribut supplémentaire, utilisez la syntaxe\nextra.fieldcode=... (ou fieldcode est le code de l'attribut supplémentaire)

Pour afficher une liste dépendant d'un autre attribut supplémentaire :
c_typent:libelle:id:options_code_liste_parente|colonne_parente:filtre

Pour afficher une liste dépendant d'une autre liste :
c_typent:libelle:id:code_liste_parente|colonne_parente:filter +ExtrafieldParamHelpsellist=Les paramètres de la liste viennent d'une table
Syntax : table_name:label_field:id_field::filter
Exemple : c_typent:libelle:id::filter

-idfilter est nécessairement une clé primaire int
- filter peut être un simple test (e.g. active=1) pour seulement montrer les valeurs actives
Vous pouvez aussi utiliser $ID$ dans le filtre qui est le ID actuel de l'objet
Pour faire un SELECT dans le filtre, utilisez $SEL$
Si vous voulez filtrer sur un extrafield, utilisez la syntaxe extra.fieldcode=... (ou fieldcode est le code de l'extrafield)

Pour avoir une liste qui dépend d'un autre attribut complémentaire:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

Pour avoir une liste qui dépend d'une autre liste:
c_typent:libelle:id:parent_list_code|parent_column:filter +ExtrafieldParamHelpchkbxlst=Les paramètres de la liste proviennent d'une table
:Syntaxe : nom_de_la_table:libelle_champ:id_champ::filtre
Exemple : c_typent:libelle:id::filter

le filtre peut n'est qu'un test (ex : active=1) pour n'afficher que les valeurs actives.
Vous pouvez aussi utiliser $ID$ dans les filtres pour indiquer l'ID de l'élément courant.
Pour utiliser un SELECT dans un filtre, utilisez $SEL$
Pour filtrer sur un attribut supplémentaire, utilisez la syntaxeextra.fieldcode=... (ou fieldcode est le code de l'attribut supplémentaire)

Pour afficher une liste dépendant d'un autre attribut supplémentaire :
c_typent:libelle:id:options_code_liste_parente|colonne_parente:filtre

Pour afficher une liste dépendant d'une autre liste :
c_typent:libelle:id:code_liste_parente|colonne_parente:filter ExtrafieldParamHelplink=Les paramètres doivent être ObjectName:Classpath
Syntaxe: ObjectName:Classpath
Exemples:
Société:societe/class/societe.class.php
Contact:contact/class/contact.class.php LibraryToBuildPDF=Bibliothèque utilisée pour la génération des PDF 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:
1 : taxe locale sur les produits et services hors tva (la taxe locale est calculée sur le montant hors taxe)
2 : taxe locale sur les produits et services avant tva (la taxe locale est calculée sur le montant + tva)
3 : taxe locale uniquement sur les produits hors tva (la taxe locale est calculée sur le montant hors taxe)
4 : taxe locale uniquement sur les produits avant tva (la taxe locale est calculée sur le montant + tva)
5 : taxe locale uniquement sur les services hors tva (la taxe locale est calculée sur le montant hors taxe)
6 : taxe locale uniquement sur les service avant tva (la taxe locale est calculée sur le montant + tva) @@ -458,14 +458,14 @@ ModuleCompanyCodeDigitaria=Renvoie un code comptable composé suivant le code ti Use3StepsApproval=Par défaut, les commandes fournisseurs nécessitent d'être créées et approuvées en deux étapes/utilisateurs (une étape/utilisateur pour créer et une étape/utilisateur pour approuver. Si un utilisateur à les deux permissions, ces deux actions sont effectuées en une seule fois). Cette option ajoute la nécessité d'une approbation par une troisième étape/utilisateur, si le montant de la commande est supérieur au montant d'une valeur définie (soit 3 étapes nécessaire: 1 =Validation, 2=Première approbation et 3=seconde approbation si le montant l'exige).
Laissez le champ vide si une seule approbation (2 étapes) sont suffisantes, placez une valeur très faibe (0.1) si une deuxième approbation (3 étapes) est toujours exigée. UseDoubleApproval=Activer l'approbation en trois étapes si le montant HT est supérieur à... WarningPHPMail=Attention : Il est préférable de configurer les emails sortant pour utiliser le serveur email de votre fournisseur plutôt que la configuration par défaut. Certains fournisseurs email (comme Yahoo) ne permettent pas l'envoi d'e-mails depuis un autre serveur que le leur si l'adresse d'envoi utilisée est une adresse autre que la leur. Votre configuration actuelle utilise le serveur de l'application pour l'envoi d'e-mails et non le serveur de votre fournisseur de messagerie, aussi certains destinataires (ceux compatibles avec le protocole restrictif DMARC) demanderont au fournisseur d'email si ils peuvent accepter l'email et certains fournisseurs (comme Yahoo) peuvent répondre "non" car le serveur utilisé pour l'envoi n'est pas un serveur appartenant au fournisseur, aussi certains de vos emails envoyés peuvent ne pas etre accepté (faites attention aussi aux quotas de votre fournisseur d'email).
SI votre fournisseur d'email (comme Yahoo) impose cette restriction, vous devrez modifier votre configuration et opter pour l'autre méthode d'envoi "SMTP server" et saisir les identifiants SMTP de votre compte fournis par votre fournisseur d'e-mail (à demander à votre fournisseur d'e-mail) -WarningPHPMail2=Si votre fournisseur de messagerie SMTP a besoin de restreindre le client de messagerie à certaines adresses IP (très rare), voici l'adresse IP du mail agent (MUA) de votre application CRM ERP : %s . +WarningPHPMail2=Si votre fournisseur de messagerie SMTP a besoin de restreindre le client de messagerie à certaines adresses IP (très rare), voici l'adresse IP du mail user agent (MUA) de votre application CRM ERP : %s . ClickToShowDescription=Cliquer pour afficher la description DependsOn=Ce module a besoin du(des) module(s) RequiredBy=Ce module est requis par le ou les module(s) TheKeyIsTheNameOfHtmlField=C'est le nom du champ HTML. Cela nécessite d'avoir des connaissances techniques pour lire le contenu de la page HTML et récupérer le nom d'un champ. -PageUrlForDefaultValues=Vous devez entrer ici l'URL relative de la page. Si vous indiquez des paramètres dans l'URL, les valeurs par défaut seront effectives si tous les paramètres sont définis sur la même valeur. Exemples : -PageUrlForDefaultValuesCreate=
Pour le formulaire pour créer un nouveau tiers, c'est %s ,
Si vous voulez une valeur par défaut seulement si l'url a certains paramètres, vous pouvez utiliser %s -PageUrlForDefaultValuesList=
Pour la page de liste des tiers, c'est %s,
Si vous voulez une valeur par défaut uniquement sir l'url a certains paramètres, vous pouvez utiliser %s +PageUrlForDefaultValues=Vous devez entrer ici l'URL relative de la page. Si vous indiquez des paramètres dans l'URL, les valeurs par défaut seront effectives si tous les paramètres sont définis avec la même valeur. +PageUrlForDefaultValuesCreate=
Example:
Pour le formulaire pour créer un nouveau tiers, c'est %s .
Pour l'URL des modules externes installés dans le répertoire custom, n'incluez pas le "custom/", aussi le chemin ressemblera à monmodule/mapage.php et non custom/monmodule/mapache.php.
Si voulez une valeur par défaut seulement si l'url a certains paramètres, vous pouvez utiliser %s +PageUrlForDefaultValuesList=
Example:
Pour la page de liste des tiers, c'est %s,
Pour une URL des modules externes installés dans le répertoire custom, n'incluez pas le "custom/" aussi le chemin sera monmodule/mapage.php et non custom/monmodule/mapage.php.
Si vous voulez une valeur par défaut uniquement si l'url a certains paramètres, vous pouvez utiliser %s EnableDefaultValues=Activer la fonction de valeurs par défaut personnalisées EnableOverwriteTranslation=Permettre la réécriture des traductions GoIntoTranslationMenuToChangeThis=Une traduction a été trouvée pour le code de cette valeur. Pour changer cette valeur, vous devez modifier le fichier depuis Accueil > Configuration > Traduction. @@ -487,7 +487,7 @@ DAV_ALLOW_ECM_DIRTooltip=Répertoire racine où tous les fichiers sont télécha Module0Name=Utilisateurs & Groupes Module0Desc=Gestion des utilisateurs / employés et groupes Module1Name=Tiers -Module1Desc=Gestion des tiers (sociétés, particuliers) et contacts +Module1Desc=Gestion des tiers (clients, prospects) et contacts Module2Name=Commercial Module2Desc=Gestion commerciale Module10Name=Comptabilité @@ -501,7 +501,7 @@ Module23Desc=Suivi de la consommation des énergies Module25Name=Commandes clients Module25Desc=Gestion des commandes clients Module30Name=Factures et avoirs -Module30Desc=Gestion des factures et avoirs clients. Gestion des factures fournisseurs +Module30Desc=Gestion des factures et avoirs clients. Gestion des factures et avoirs fournisseurs Module40Name=Fournisseurs Module40Desc=Gestion des fournisseurs et des achats (commandes et factures fournisseurs) Module42Name=Journaux et traces de Debug @@ -555,7 +555,7 @@ Module320Desc=Ajout de flux d'informations RSS dans les écrans Dolibarr Module330Name=Marque-pages et raccourci Module330Desc=Créez des raccourcis, toujours accessibles, vers les pages internes ou externes auxquelles vous accédez fréquemment Module400Name=Projets ou Opportunités -Module400Desc=Gestion des projets, opportunités/affaires et/ou tâches. Vous pouvez aussi assigner tous les autres éléments (facture, commande, proposition, intervention, ...) à ces projets et avoir une vue transverse depuis la vue projet. +Module400Desc=Gestion des projets, opportunités/affaires et/ou tâches. Vous pouvez aussi assigner tous les autres éléments (facture, commande, proposition, intervention, ...) à un projet et avoir une vue transverse depuis la vue projet. Module410Name=Webcalendar Module410Desc=Interface avec le calendrier Webcalendar Module500Name=Taxes et dépenses spéciales @@ -598,7 +598,7 @@ Module2610Desc=Active le server REST Dolibarr fournissant des services API Module2660Name=Appelle de Webservices externes (client SOAP) Module2660Desc=Activez le client Dolibarr de services Web (Peut être utilisé pour pousser des données/demandes vers des serveurs externes. Seules les commandes Fournisseurs sont prises en charge pour le moment) Module2700Name=Gravatar -Module2700Desc=Utilise le service en ligne Gravatar (www.gravatar.com) pour afficher les photos d'utilisateurs/membres (en fonction leur email). Besoin d'un accès Internet +Module2700Desc=Utilise le service en ligne Gravatar (www.gravatar.com) pour afficher les photos d'utilisateurs/adhérents (en fonction leur email). Besoin d'un accès Internet Module2800Desc=Client FTP Module2900Name=GeoIPMaxmind Module2900Desc=Capacités de conversion GeoIP Maxmind @@ -928,22 +928,22 @@ SetupNotSaved=Configuration non enregistrée BackToModuleList=Retour liste des modules BackToDictionaryList=Retour liste des dictionnaires TypeOfRevenueStamp=Type de timbre fiscal -VATManagement=Sale Tax Management -VATIsUsedDesc=By default when creating prospects, invoices, orders etc. the Sale Tax rate follows the active standard rule:
If the seller is not subject to Sale tax, then Sale tax defaults to 0. End of rule.
If the (seller's country = buyer's country), then the Sale tax by default equals the Sale tax of the product in the seller's country. End of rule.
If the seller and buyer are both in the European Community and goods are transport-related products (haulage, shipping, airline), the default Sale tax is 0. This rule is dependant on the seller's country - please consult with your accountant. The Sale tax should be paid by the buyer to their customs office in their country and not to the seller. End of rule.
If the seller and buyer are both in the European Community and the buyer is not a company (with a registered intra-Community Sale tax number) then the Sale tax by defaults to the Sale tax of the seller's country. End of rule.
If the seller and buyer are both in the European Community and the buyer is a company (with a registered intra-Community Sale tax number), then the Sale tax is 0 by default. End of rule.
In any other case the proposed default is Sale tax=0. End of rule. +VATManagement=Gestion TVA +VATIsUsedDesc=Le taux de TVA proposé par défaut lors de la création de propositions commerciales, factures, commandes, etc... répond à la règle standard suivante:
Si vendeur non assujetti à TVA, TVA par défaut=0. Fin de règle.
Si le (pays vendeur= pays acheteur) alors TVA par défaut=TVA du produit vendu. Fin de règle.
Si vendeur et acheteur dans Communauté européenne et bien vendu= moyen de transport neuf (auto, bateau, avion), TVA par défaut=0 (La TVA doit être payée par acheteur au centre d'impôts de son pays et non au vendeur). Fin de règle.
Si vendeur et acheteur dans Communauté européenne et acheteur= particulier alors TVA par défaut=TVA du produit vendu. Fin de règle.
Si vendeur et acheteur sont dans la Communauté européenne et que l'acheteur est une société alors TVA par défaut=0. Fin de règle.
Sinon la TVA proposée par défaut=0. Fin de règle. VATIsNotUsedDesc=Le taux de TVA proposé par défaut est 0. C'est le cas d'associations, particuliers ou certaines petites sociétés. VATIsUsedExampleFR=En France, cela signifie que les entreprises ou les organisations sont assuetis à la tva (réel ou normal). -VATIsNotUsedExampleFR=In France, it means associations that are non Sale tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sale tax in franchise) and paid a franchise Sale tax without any Sale tax declaration. This choice will display the reference "Non applicable Sale tax - art-293B of CGI" on invoices. +VATIsNotUsedExampleFR=En France, il s'agit des associations ne déclarant pas de TVA ou sociétés, organismes ou professions libérales ayant choisi le régime fiscal micro entreprise (TVA en franchise) et payant une TVA en franchise sans faire de déclaration de TVA. Ce choix fait de plus apparaître la mention "TVA non applicable - art-293B du CGI" sur les factures. ##### Local Taxes ##### LTRate=Taux LocalTax1IsNotUsed=Non assujeti -LocalTax1IsUsedDesc=Utilisation d'un 2ème type taxe (autre que TVA) -LocalTax1IsNotUsedDesc=Pas d'utilisation de 2ème type taxe (autre que TVA) +LocalTax1IsUsedDesc=Utilisation d'un 2ème type taxe (autre que le premier) +LocalTax1IsNotUsedDesc=Pas d'utilisation de 2ème type taxe (autre que le premier) LocalTax1Management=Gestion 2ème type de taxe LocalTax1IsUsedExample= LocalTax1IsNotUsedExample= LocalTax2IsNotUsed=Non assujeti -LocalTax2IsUsedDesc=Use a third type of tax (other than first one) -LocalTax2IsNotUsedDesc=Pas d'utilisation de 2ème type taxe (autre que TVA) +LocalTax2IsUsedDesc=Utilisation d'un 3ème type taxe (autre que le premier) +LocalTax2IsNotUsedDesc=Pas d'utilisation de 2ème type taxe (autre que le premier) LocalTax2Management=Gestion 3ème type de tax LocalTax2IsUsedExample= LocalTax2IsNotUsedExample= @@ -967,6 +967,7 @@ CalcLocaltax3Desc=Le Rapports des Taxes locales sont le total des taxes locales LabelUsedByDefault=Libellé qui sera utilisé si aucune traduction n'est trouvée pour ce code LabelOnDocuments=Libellé sur les documents LabelOrTranslationKey=Libellé ou clé de traduction +ValueOfConstantKey=Valeur de constante NbOfDays=Nb. de jours AtEndOfMonth=En fin de mois CurrentNext=Current/Next @@ -1049,11 +1050,11 @@ Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Tolérance de retard avant alerte (en jours Delays_MAIN_DELAY_EXPENSEREPORTS=Tolérance de retard avant alerte (en jours) sur les notes de frais à approuver SetupDescription1=L'espace configuration permet de réaliser le paramétrage initial afin de pouvoir commencer à utiliser l'application. SetupDescription2=Les deux étapes obligatoires sont les deux premières entrées dans le menu de configuration, soit -SetupDescription3=%s -> %s. Paramètres pour personnaliser le comportement par défaut du logiciel (comportement lié au pays par exemple). +SetupDescription3=%s -> %s
Paramètres pour personnaliser le comportement par défaut du logiciel (comportement lié au pays par exemple). SetupDescription4= %s -> %s
Cette étape est requise car Dolibarr ERP/CRM est un ensemble de plusieurs modules/applications, tous plus ou moins indépendants. Les fonctionnalités sont ajoutées aux menus pour chaque module que vous activez. SetupDescription5=Les autres entrées de configuration gèrent des paramètres facultatifs. LogEvents=Événements d'audit de sécurité -Audit=Audit +Audit=Audit de sécurité InfoDolibarr=Infos Dolibarr InfoBrowser=Infos navigateur InfoOS=Infos OS @@ -1065,7 +1066,7 @@ BrowserName=Nom du navigateur BrowserOS=OS du navigateur ListOfSecurityEvents=Liste des événements de sécurité Dolibarr SecurityEventsPurged=Evenement de sécurité purgés -LogEventDesc=Vous pouvez activer ici, la journalisation des événements d'audit de sécurité. Cet historique est consultable par les administrateurs dans le menu Outils systèmes - Audit. Attention, cette fonctionnalité peut générer un gros volume de données. +LogEventDesc=Vous pouvez activer ici, l'historique des événements d'audit de sécurité. Cet historique est consultable par les administrateurs dans le menu %s - %s. Attention, cette fonctionnalité peut générer un gros volume de données. AreaForAdminOnly=Les paramètres d'installation ne peuvent être remplis que par les utilisateurs administrateurs uniquement. SystemInfoDesc=Les informations systèmes sont des informations techniques diverses accessibles en lecture seule aux administrateurs uniquement. SystemAreaForAdminOnly=Cet espace n'est accessible qu'aux utilisateurs de type administrateur. Aucune permission Dolibarr ne permet d'étendre le cercle des utilisateurs autorisés à cet espace. @@ -1076,7 +1077,7 @@ DisplayDesc=Vous pouvez choisir ici tous les paramètres liés à l'apparence de AvailableModules=Modules/applications installés ToActivateModule=Pour activer des modules, aller dans l'espace Configuration (Accueil->Configuration->Modules). SessionTimeOut=Délai expiration des sessions -SessionExplanation=Ce nombre garanti que la session n'expire pas avant ce délai, lorsque le nettoyage des sessions est assurés par le mécanisme de nettoyage interne à PHP (et aucun autre). Le nettoyage interne de sessions PHP ne garantie pas que la session expire juste au moment de ce délai. Elle expirera après ce délai, mais au moment du nettoyage des sessions, qui a lieu toutes les %s/%s accès environ, mais uniquement lors d'accès fait par d'autres sessions.
Note : sur certains serveurs munis d'un mécanisme de nettoyage de session externe (cron sous Debian, Ubuntu…), le sessions peuvent être détruites après un délai, défini par la valeur par défaut de session.gc_maxlifetime, quelle que soit la valeur saisie ici. +SessionExplanation=Ce nombre garanti que la session n'expire pas avant ce délai, lorsque le nettoyage des sessions est assurés par le mécanisme de nettoyage interne à PHP (et aucun autre). Le nettoyage interne de sessions PHP ne garantie pas que la session expire juste au moment de ce délai. Elle expirera après ce délai, mais au moment du nettoyage des sessions, qui a lieu toutes les %s/%s accès environ, mais uniquement lors d'accès fait par d'autres sessions (si la valeur est 0, cela signifie que le nettoyage des session est fait par un process externe).
Note: sur certains serveurs munis d'un mécanisme de nettoyage de session externe (cron sous Debian, Ubuntu…), le sessions peuvent être détruites après un délai, défini par une configuration extérieure, quelle que soit la valeur saisie ici. TriggersAvailable=Déclencheurs disponibles TriggersDesc=Les déclencheurs sont des fichiers qui, une fois déposés dans le répertoire htdocs/core/triggers, modifient le comportement du workflow de Dolibarr. Ils réalisent des actions supplémentaires, déclenchées par les événements Dolibarr (création société, validation facture, clôture contrat…). TriggerDisabledByName=Déclencheurs de ce fichier désactivés par le suffix -NORUN dans le nom du fichier. @@ -1096,12 +1097,12 @@ MAIN_ROUNDING_RULE_TOT=Pas de la plage d'arrondi (pour les pays où l'arrondi se UnitPriceOfProduct=Prix unitaire HT d'un produit TotalPriceAfterRounding=Prix total (HT/TVA/TTC) après arrondis ParameterActiveForNextInputOnly=Paramètre effectif pour les prochaines saisies uniquement -NoEventOrNoAuditSetup=Aucun événement d'audit de sécurité n'a été enregistré. Ceci peut être normal si l'audit n'a pas été activé dans la configuration - sécurité - audit. +NoEventOrNoAuditSetup=Aucun événement d'audit de sécurité n'a été enregistré. Ceci peut être normal si l'audit n'a pas été activé dans "Configuration - Sécurité - Evénements de sécurité". NoEventFoundWithCriteria=Aucun événement d'audit de sécurité trouvé avec ces critères de recherche. SeeLocalSendMailSetup=Voir la configuration locale de sendmail BackupDesc=Pour réaliser une sauvegarde complète de Dolibarr, vous devez : BackupDesc2=Sauvegardez le contenu du répertoire document (%s) qui contient tous les fichiers envoyés et générés (Par conséquent il contient également les fichiers dump générés à l'étape 1). -BackupDesc3=Save content of your database (%s) into a dump file. For this, you can use the following assistant. +BackupDesc3=Sauvez le contenu de votre base de données (%s) 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. Il est recommandé d'utiliser la méthode précédente. @@ -1141,7 +1142,7 @@ ExtraFieldsLinesRec=Attributs supplémentaires (ligne de factures modèles) ExtraFieldsSupplierOrdersLines=Attributs supplémentaires (lignes de commandes) ExtraFieldsSupplierInvoicesLines=Attributs supplémentaires (lignes de factures) ExtraFieldsThirdParties=Attributs supplémentaires (tiers) -ExtraFieldsContacts=Attributs supplémentaires (adresses de contacts) +ExtraFieldsContacts=Attributs supplémentaires (contacts/adresses) ExtraFieldsMember=Attributs supplémentaires (adhérents) ExtraFieldsMemberType=Attributs supplémentaires (type d'adhérents) ExtraFieldsCustomerInvoices=Attributs supplémentaires (factures) @@ -1155,11 +1156,11 @@ AlphaNumOnlyLowerCharsAndNoSpace=uniquement des caractères alphanumériques et SendmailOptionNotComplete=Attention, sur certains systèmes Linux, avec cette méthode d'envoi, pour pouvoir envoyer des emails en votre nom, la configuration d'exécution de sendmail doit contenir l'option -ba (paramètre mail.force_extra_parameters dans le fichier php.ini). Si certains de vos destinataires ne reçoivent pas de message, essayer de modifier ce paramètre PHP avec mail.force_extra_parameters = -ba. PathToDocuments=Chemin d'accès aux documents PathDirectory=Répertoire -SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail direct" will generate a mail message that might not be parsed correctly by some receiving mail servers. The result is that some mails can't be read by people hosted by those bugged platforms. This is the case for some Internet providers (Ex: Orange in France). This is not a problem with Dolibarr or PHP but with the receiving mail server. You can however add an option MAIN_FIX_FOR_BUGGED_MTA to 1 in Setup - Other to modify Dolibarr to avoid this. However, you may experience problems with other servers that strictly use the SMTP standard. The other solution (recommended) is to use the method "SMTP socket library" which has no disadvantages. +SendmailOptionMayHurtBuggedMTA=La fonction permettant d’envoyer des e-mails à l’aide de la méthode "PHP mail direct" générera un message qui risque de ne pas être analysé correctement par certains serveurs de messagerie. Le résultat est que certains mails ne peuvent pas être lus par des personnes hébergées par ces plateformes. C'est le cas de certains fournisseurs d'accès Internet (Ex: Orange en France). Ce n'est pas un problème avec Dolibarr ou PHP, mais avec le serveur de messagerie destinataire. Vous pouvez cependant ajouter une option MAIN_FIX_FOR_BUGGED_MTA à 1 dans Configuration - Autre pour modifier Dolibarr afin d'éviter cela. Cependant, vous pouvez rencontrer des problèmes avec d'autres serveurs qui utilisent strictement le standard SMTP. L'autre solution (recommandée) consiste à utiliser la méthode "Bibliothèque de socket SMTP" qui ne présente aucun inconvénient. TranslationSetup=Configuration de la traduction TranslationKeySearch=Rechercher une traduction TranslationOverwriteKey=Ajouter une traduction -TranslationDesc=Pour sélectionner la langue d'affichage de l'environnement :
* langue par défaut : menu Accueil - Configuration - Affichage
* langue par utilisateur: Onglet Interface utilisateur de la fiche utilisateur (Accès a la fiche de l'utilisateur depuis l'identifiant dans l'angle supérieur droit de l'écran). +TranslationDesc=Pour sélectionner la langue d'affichage de l'environnement :
* Au niveau global: menu Accueil - Configuration - Affichage
* Configuration au niveau de l'utilisateur: Utilisez l'onglet Interface utilisateur de la fiche utilisateur (Accès a la fiche de l'utilisateur depuis l'identifiant dans l'angle supérieur droit de l'écran). TranslationOverwriteDesc=Vous pouvez aussi écraser des valeurs en complétant/corrigeant le tableau suivant. Choisissez votre code de langue depuis la liste déroulante "%s", choisissez le code trouvé dans le fichier lang dans le champ "%s", et dans "%s" la nouvelle valeur que vous souhaitez utiliser comme nouvelle traduction. TranslationOverwriteDesc2=Vous pouvez utilisez l'autre onglet pour vous aider à trouver la clé de traduction à utiliser TranslationString=Traduction @@ -1170,18 +1171,18 @@ OriginalValueWas=La traduction d'origine est écrasée. La valeur initiale étai TransKeyWithoutOriginalValue=Vous avez forcé une nouvelle traduction pour la clé de traduction '%s' qui n'existe dans aucun fichier de langue TotalNumberOfActivatedModules=Modules activés : %s / %s YouMustEnableOneModule=Vous devez activer au moins une fonctionnalité -ClassNotFoundIntoPathWarning=Class %s not found in PHP path +ClassNotFoundIntoPathWarning=La classe %s n'a pas été trouvée dans le chemin PHP YesInSummer=Oui en été -OnlyFollowingModulesAreOpenedToExternalUsers=Note, only the following modules are opened to external users (whatever the permissions of such users) and only if permissions are granted: +OnlyFollowingModulesAreOpenedToExternalUsers=Remarque, seuls les modules suivants sont ouverts aux utilisateurs externes (quelles qu'en soient les permissions de ces utilisateurs) et seulement si les permissions leur ont été données: SuhosinSessionEncrypt=Stockage des sessions chiffrées par Suhosin ConditionIsCurrently=La condition est actuellement %s YouUseBestDriver=Vous utilisez le driver %s qui est le driver recommandé actuellement. -YouDoNotUseBestDriver=You use driver %s but driver %s is recommended. -NbOfProductIsLowerThanNoPb=You have only %s products/services in the database. This does not require any particular optimization. +YouDoNotUseBestDriver=Vous utilisez le pilote %s mais le pilote %s est recommandé. +NbOfProductIsLowerThanNoPb=Vous avez uniquement %s produits / services dans la base de données. Cela ne nécessite aucune optimisation particulière. SearchOptim=Optimisation des recherches -YouHaveXProductUseSearchOptim=You have %s products in the database. You should add the constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 in Home-Setup-Other. Limit the search to the beginning of strings which makes it possible for the database to use indexes and you should get an immediate response. -BrowserIsOK=You are using the %s web browser. This browser is ok for security and performance. -BrowserIsKO=You are using the %s web browser. This browser is known to be a bad choice for security, performance and reliability. We recommend using Firefox, Chrome, Opera or Safari. +YouHaveXProductUseSearchOptim=Vous avez des produits %s dans la base de données. Vous devez ajouter la constante PRODUCT_DONOTSEARCH_ANYWHERE à 1 dans Home-Setup-Other. Limitez la recherche au début des chaînes, ce qui permet à la base de données d'utiliser des index et vous devez obtenir une réponse immédiate. +BrowserIsOK=Vous utilisez le navigateur Web %s. Ce navigateur est correct pour la sécurité et la performance. +BrowserIsKO=Vous utilisez le navigateur Web %s. Ce navigateur est connu pour être un mauvais choix pour la sécurité, la performance et la fiabilité. 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 clicables.
Les tiers apparaîtront alors sous la forme "CC12345 - SC45678 - La big company coorp", au lieu de "La big company coorp". @@ -1205,8 +1206,8 @@ UserMailRequired=Email requis pour créer un nouvel utilisateur HRMSetup=Configuration du module GRH ##### Company setup ##### CompanySetup=Configuration du module Tiers -CompanyCodeChecker=Options for automatic generation of customer / vendor codes -AccountCodeManager=Options for automatic generation of customer / vendor accounting codes +CompanyCodeChecker=Options pour la génération automatique de codes client / fournisseur +AccountCodeManager=Options pour la génération automatique de codes comptable client ou fournisseur NotificationsDesc=Les notifications activent l'envoi d'e-mails automatiques pour certains événements de Dolibarr. L'envoi de ces e-mails automatiques est défini selon : NotificationsDescUser=* par utilisateurs, utilisateur par utilisateur. NotificationsDescContact=* par tiers de contacts (clients ou fournisseur), contact par contact. @@ -1217,7 +1218,7 @@ WatermarkOnDraft=Filigrane sur les documents brouillons JSOnPaimentBill=Activer la fonctionnalité de remplissage automatique des lignes de paiement sur le formulaire de paiement CompanyIdProfChecker=Règles sur les Identifiants professionnels MustBeUnique=Doit être unique ? -MustBeMandatory=Obligatoire pour créer des tiers ? +MustBeMandatory=Obligatoire pour créer des tiers (si le numéro de TVA ou le type d'entreprise est défini) ? MustBeInvoiceMandatory=Obligatoire pour valider des factures ? TechnicalServicesProvided=Services techniques fournis #####DAV ##### @@ -1229,7 +1230,7 @@ WebCalUrlForVCalExport=Un lien d'exportation du calendrier au format %s s BillsSetup=Configuration du module Factures BillsNumberingModule=Modèle de numérotation des factures et avoirs BillsPDFModules=Modèle de document de factures -BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type +BillsPDFModulesAccordindToInvoiceType=Modèles de documents de facturation en fonction du type de facture PaymentsPDFModules=Modèle de document pour les règlements CreditNote=Avoir CreditNotes=Avoirs @@ -1358,8 +1359,8 @@ LDAPSynchroKO=Échec du test de synchronisation LDAPSynchroKOMayBePermissions=Échec du test de synchronisation. Vérifier que la connexion au serveur est correctement configurée et permet les mises à jour LDAP LDAPTCPConnectOK=Connexion TCP au serveur LDAP réussie (Serveur=%s, Port=%s) LDAPTCPConnectKO=Connexion TCP au serveur LDAP échouée (Serveur=%s, Port=%s) -LDAPBindOK=Connect/Authenticate to LDAP server successful (Server=%s, Port=%s, Admin=%s, Password=%s) -LDAPBindKO=Connect/Authenticate to LDAP server failed (Server=%s, Port=%s, Admin=%s, Password=%s) +LDAPBindOK=Connexion / Authentification réussie sur le serveur LDAP (Serveur = %s, Port = %s, Admin = %s, Mot de passe = %s) +LDAPBindKO=La connexion / l'authentification au serveur LDAP a échoué (serveur = %s, port = %s, administrateur = %s, mot de passe = %s) LDAPSetupForVersion3=Serveur LDAP configuré en version 3 LDAPSetupForVersion2=Serveur LDAP configuré en version 2 LDAPDolibarrMapping=Mapping Dolibarr @@ -1421,40 +1422,40 @@ LDAPDescMembersTypes=Cette page permet de définir le nom des attributs de l'arb LDAPDescValues=Les valeurs exemples sont adaptées à OpenLDAP avec les schémas suivant chargés: core.schema, cosine.schema, inetorgperson.schema). Si vous utilisez les valeurs suggérées et OpenLDAP, modifiez votre fichier de configuration LDAP slapd.conf pour avoir tous ces schémas actifs. ForANonAnonymousAccess=Pour un accès authentifié (pour accès en écriture par exemple) PerfDolibarr=Rapport de configuration/optimisation sur la performance -YouMayFindPerfAdviceHere=This page provides some checks or advice related to performance. -NotInstalled=Not installed, so your server is not slowed down by this. +YouMayFindPerfAdviceHere=Cette page fournit des vérifications ou des conseils relatifs aux performances. +NotInstalled=Non installé, votre serveur n'est donc pas ralenti. ApplicativeCache=Cache applicatif MemcachedNotAvailable=Aucun cache applicatif trouvé. Vous pouvez accélérer les performances de Dolibarr en installant un serveur de cache Memcached et un module de cache applicatif exploitant ce serveur.
Plus d'info sur la page http://wiki.dolibarr.org/index.php/Module_MemCached. Notez que de nombreux hébergeurs low-cost ne fournissent pas de tels serveurs de cache dans leur infrastructure. MemcachedModuleAvailableButNotSetup=Le module memcached pour le cache applicatif a été trouvé mais la configuration de ce module n'est pas complète. MemcachedAvailableAndSetup=Le module memcached dédié à l'utilisation du serveur de cache memcached est activé. OPCodeCache=Cache OPCode -NoOPCodeCacheFound=No OPCode cache found. Maybe you are using an OPCode cache other than XCache or eAccelerator (good), or maybe you don't have OPCode cache (very bad). +NoOPCodeCacheFound=Aucun cache OPCode trouvé. Peut-être utilisez-vous un cache OPCode autre que XCache ou eAccelerator (bon) ou n’avez-vous pas un cache OPCode (très mauvais). HTTPCacheStaticResources=Cache HTTP des ressources statiques (css, img, javascript) FilesOfTypeCached=Fichiers de type %s mis en cache par le serveur HTTP FilesOfTypeNotCached=Fichiers de type %s non mis en cache par le serveur HTTP FilesOfTypeCompressed=Fichiers de type %s compressé par le serveur HTTP FilesOfTypeNotCompressed=Fichiers de type %s non compressé par le serveur HTTP CacheByServer=Cache par le serveur -CacheByServerDesc=For example using the Apache directive "ExpiresByType image/gif A2592000" +CacheByServerDesc=Par exemple, en utilisant la directive Apache "ExpiresByType image / gif A2592000" CacheByClient=Cache par le navigateur CompressionOfResources=Compression des réponses HTTP -CompressionOfResourcesDesc=For example using the Apache directive "AddOutputFilterByType DEFLATE" +CompressionOfResourcesDesc=Par exemple, en utilisant la directive Apache "AddOutputFilterByType DEFLATE" TestNotPossibleWithCurrentBrowsers=Une détection automatique n'est pas possible avec le navigateur courant DefaultValuesDesc=Vous pouvez définir/forcer ici la valeur par défaut que vous voulez obtenir lorsque vous créez un nouvel enregistrement, et/ou les filtres par défaut ou ordre de tri des listes. DefaultCreateForm=Valeurs par défaut (sur les formulaires de création) DefaultSearchFilters=Filtres de recherche par défaut DefaultSortOrder=Ordre de tri par défaut DefaultFocus=Champs par défaut ayant le focus -DefaultMandatory=Mandatory form fields +DefaultMandatory=Champs de formulaire obligatoires ##### Products ##### ProductSetup=Configuration du module Produits ServiceSetup=Configuration du module Services ProductServiceSetup=Configuration des modules Produits et Services NumberOfProductShowInSelect=Nombre maximum de produits dans les listes déroulantes (0=aucune limite) -ViewProductDescInFormAbility=Display product descriptions in forms (otherwise as popup tooltip) +ViewProductDescInFormAbility=Afficher les descriptions de produits dans des formulaires (sinon, comme info-bulle contextuelle) MergePropalProductCard=Ajoute dans l'onglet Fichiers joints des produits/services, une option pour fusionner le document PDF du produit au PDF des propositions Azur si le produit/services est inclut dans la proposition. -ViewProductDescInThirdpartyLanguageAbility=Display products descriptions in the language of the third party -UseSearchToSelectProductTooltip=Also if you have a large number of products (> 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. +ViewProductDescInThirdpartyLanguageAbility=Afficher les descriptions de produits dans la langue du tiers +UseSearchToSelectProductTooltip=De même, si vous avez un grand nombre de produits (> 100 000), vous pouvez augmenter la vitesse en définissant une constante PRODUCT_DONOTSEARCH_ANYWHERE sur 1 dans Configuration-> Autre. La recherche sera alors limitée au début de la chaîne. UseSearchToSelectProduct=Attendre que vous ayez appuyé sur une touche avant de charger le contenu de la liste déroulante des produits (Cela peut augmenter les performances si vous avez un grand nombre de produits, mais cela est moins convivial) SetDefaultBarcodeTypeProducts=Type de code-barre utilisé par défaut pour les produits SetDefaultBarcodeTypeThirdParties=Type de code-barre utilisé par défaut pour les tiers @@ -1528,18 +1529,18 @@ AdvancedEditor=Editeur avancé ActivateFCKeditor=Activer l'éditeur avancé pour : FCKeditorForCompany=Création/édition WYSIWIG de la description et note des éléments (autre que produits/services) FCKeditorForProduct=Création/édition WYSIWIG de la description et note des produits/services -FCKeditorForProductDetails=WYSIWIG creation/edition of products details lines for all entities (proposals, orders, invoices, etc...). Warning: Using this option for this case is seriously not recommended as it can create problems with special characters and page formatting when building PDF files. +FCKeditorForProductDetails=Création/édition WYSIWIG des lignes détails produits sur tous les éléments (commandes, propales, factures, etc...). Attention: L'utilisation pour ce cas est fortement déconseillée car peut poser des problèmes dans la gestion de caractères et mise en page des fichiers PDF générés. FCKeditorForMailing= Création/édition WYSIWIG des emailings (Outils->Emailings) FCKeditorForUserSignature=Création/édition WYSIWIG de la signature des utilisateurs FCKeditorForMail=Création/édition WYSIWIG tous les emails (sauf Outils->Emailings) ##### OSCommerce 1 ##### -OSCommerceErrorConnectOkButWrongDatabase=Connection succeeded but database does not appear to be an OSCommerce database (Key %s not found in table %s). +OSCommerceErrorConnectOkButWrongDatabase=La connexion a réussi, mais la base de données ne semble pas être une base de données OSCommerce (la clé %s n’a pas été trouvée dans le tableau %s). OSCommerceTestOk=La connexion au serveur '%s' sur la base '%s' par l'utilisateur '%s' a réussi. -OSCommerceTestKo1=Connection to server '%s' succeeded but database '%s' could not be reached. +OSCommerceTestKo1=La connexion au serveur '%s' a réussi mais la base de données '%s' n'a pas pu être atteinte. OSCommerceTestKo2=La connexion au serveur '%s' par l'utilisateur '%s' à échoué. ##### Stock ##### StockSetup=Configuration du module Stock / Entrepôt -IfYouUsePointOfSaleCheckModule=If you use the Point of Sale module (POS) provided by default or an external module, this setup may be ignored by your POS module. Most POS modules are designed by default to create an invoice immediately and decrease stock irrespective of the options here. So if you need or not to have a stock decrease when registering a sale from your POS, check also your POS module setup. +IfYouUsePointOfSaleCheckModule=Si vous utilisez le module de point de vente (PDV) fourni par défaut ou un module externe, cette configuration peut être ignorée par votre module de PDV. La plupart des modules de PDV sont conçus par défaut pour créer une facture immédiatement et réduire le stock quelles que soient les options proposées. Donc, si vous avez besoin ou non d'une réduction de stock lors de l'enregistrement d'une vente depuis votre point de vente, vérifiez également la configuration de votre module de point de vente. ##### Menu ##### MenuDeleted=Menu supprimé Menus=Menus @@ -1561,7 +1562,7 @@ DetailRight=Condition d'affichage plein ou grisé DetailLangs=Fichier .lang pour la traduction du code libellé DetailUser=Interne / Externe / Tous Target=Cible -DetailTarget=Target for links (_blank top opens a new window) +DetailTarget=Cible pour les liens (_blank ouvre une nouvelle fenêtre) DetailLevel=Niveau (-1:menu haut, 0:entête menu, >0 menu et sous menu) ModifMenu=Modification du menu DeleteMenu=Effacer entrée de menu @@ -1576,7 +1577,7 @@ OptionVatDefaultDesc=TVA sur encaissement, l'exigibilité de la TVA est:
- su OptionVatDebitOptionDesc=TVA sur débit, l'exigibilité de la TVA est:
- sur livraison pour les biens (en pratique on utilise la date de facturation)
- sur facturation (débit) pour les services OptionPaymentForProductAndServices=Sur paiements pour les produits et services OptionPaymentForProductAndServicesDesc=La TVA est due:
- sur le paiement pour les marchandises
- sur les paiements pour les services -SummaryOfVatExigibilityUsedByDefault=Time of VAT eligibility by default according to chosen option: +SummaryOfVatExigibilityUsedByDefault=Moment d'exigibilité par défaut de la TVA pour l'option choisie: OnDelivery=Sur livraison OnPayment=Sur paiement OnInvoice=Sur facture @@ -1593,36 +1594,36 @@ AccountancyCodeBuy=Code comptable achat AgendaSetup=Configuration du module actions et agenda PasswordTogetVCalExport=Clé pour autoriser le lien d'exportation PastDelayVCalExport=Ne pas exporter les événements de plus de -AGENDA_USE_EVENT_TYPE=Use events types (managed in menu Setup -> Dictionaries -> Type of agenda events) -AGENDA_USE_EVENT_TYPE_DEFAULT=Automatically set this default value for type of event in event create form -AGENDA_DEFAULT_FILTER_TYPE=Automatically set this type of event in search filter of agenda view -AGENDA_DEFAULT_FILTER_STATUS=Automatically set this status for events in search filter of agenda view +AGENDA_USE_EVENT_TYPE=Utiliser les types d'événements (gérés dans le menu Configuration -> Dictionnaires -> Type d'événements de l'agenda) +AGENDA_USE_EVENT_TYPE_DEFAULT=Définir automatiquement cette valeur par défaut pour le type d'événement dans le formulaire de création d'événement +AGENDA_DEFAULT_FILTER_TYPE=Définir automatiquement ce type d'événement dans le filtre de recherche de la vue agenda +AGENDA_DEFAULT_FILTER_STATUS=Définir automatiquement cet état pour les événements dans le filtre de recherche de la vue agenda AGENDA_DEFAULT_VIEW=Quel onglet voulez-vous voir ouvrir par défaut quand on choisit le menu Agenda AGENDA_REMINDER_EMAIL=Activer le rappel d'événement par e-mail (l'option de rappel / délai peut être défini pour chaque événement). Remarque: Le module %s doit être activé et configuré correctement pour que le rappel soit envoyé à la bonne fréquence. -AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (when event date is reached, each user is able to refuse this from the browser confirmation question) +AGENDA_REMINDER_BROWSER=Activer le rappel d'événement sur le navigateur de l'utilisateur (lorsque la date de l'événement est atteinte, chaque utilisateur peut le refuser à partir de la question de confirmation du navigateur) AGENDA_REMINDER_BROWSER_SOUND=Activer les notifications sonores. AGENDA_SHOW_LINKED_OBJECT=Afficher l'objet lié dans la vue agenda ##### Clicktodial ##### ClickToDialSetup=Configuration du module Click To Dial ClickToDialUrlDesc=URL appelée quand un clic sur l'icône téléphone est fait. Dans l'URL, vous pouvez utiliser les tags
__PHONETO__ qui sera remplacée par le numéro de téléphone de la personne à appeler
__PHONEFROM__ qui sera remplacée par le numéro de l'appelant (vous)
__LOGIN__ qui sera remplacée par l'identifiant d'accès de l'utilisateur à l'application d'appel (à définir sur la fiche utilisateur) et
__PASS__ qui sera remplacée par le mot de passe d'accès de l'utilisateur à l'application d'appel (également à définir sur la fiche utilisateur). -ClickToDialDesc=This module allows to make phone numbers clickable. A click on this icon will call make your phone call the phone number. This can be used to call a call center system from Dolibarr that can call the phone number on a SIP system for example. +ClickToDialDesc=Ce module permet de rendre les numéros de téléphone cliquables. Un clic sur cette icône appellera votre téléphone à composer le numéro de téléphone. Cela peut être utilisé pour appeler un système de centre d'appels de Dolibarr qui peut appeler le numéro de téléphone d'un système SIP, par exemple. ClickToDialUseTelLink=Utiliser un lien «Tel.» sur les numéros de téléphone ClickToDialUseTelLinkDesc=Utilisez cette méthode si vos utilisateurs ont un softphone ou une interface de logiciel installé sur un même ordinateur que le navigateur, et a appelé lorsque vous cliquez sur un lien dans votre navigateur qui commencent par "tel:". Si vous avez besoin d'une solution de serveur complet (pas besoin d'installation locale du logiciel), vous devez définir ceci à "Non" et remplir le champ suivant. ##### Point Of Sales (CashDesk) ##### CashDesk=Caisse enregistreuse CashDeskSetup=Configuration du module Point de vente/caisse enregistreuse -CashDeskThirdPartyForSell=Default generic third party to use for sales +CashDeskThirdPartyForSell=Tiers générique à utiliser par défaut pour les ventes CashDeskBankAccountForSell=Compte par défaut à utiliser pour l'encaissement en liquide CashDeskBankAccountForCheque= Compte par défaut à utiliser pour l'encaissement en chèque CashDeskBankAccountForCB= Compte par défaut à utiliser pour l'encaissement en carte de crédit -CashDeskDoNotDecreaseStock=Disable stock decrease when a sale is done from Point of Sale (if "no", stock decrease is done for each sale done from POS, irrespective of the option set in module Stock). +CashDeskDoNotDecreaseStock=Désactiver la réduction de stock lorsqu'une vente est effectuée à partir du point de vente (si "non", une réduction de stock est effectuée pour chaque vente effectuée à partir du point de vente, quelle que soit l'option définie dans le module Stock). CashDeskIdWareHouse=Forcer et restreindre l'emplacement/entrepôt à utiliser pour la réduction de stock -StockDecreaseForPointOfSaleDisabled=Stock decrease from Point of Sale disabled +StockDecreaseForPointOfSaleDisabled=Diminution du stock du point de vente désactivé 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=You did not disable stock decrease when making a sale from Point of Sale. Hence a warehouse is required. +CashDeskYouDidNotDisableStockDecease=Vous n'avez pas désactivé la réduction de stock lors d'une vente depuis le point de vente. Par conséquent, un entrepôt est nécessaire. ##### Bookmark ##### BookmarkSetup=Configuration du module Marque-pages -BookmarkDesc=This module allows you to manage bookmarks. You can also add shortcuts to any Dolibarr pages or external web sites on your left menu. +BookmarkDesc=Ce module vous permet de gérer des liens et raccourcis. Il permet aussi d'ajouter n'importe quelle page de Dolibarr ou lien web dans le menu d'accès rapide sur la gauche. NbOfBoomarkToShow=Nombre maximum de marques-pages à afficher dans le menu ##### WebServices ##### WebServicesSetup=Configuration du module Webservices @@ -1650,7 +1651,7 @@ ChequeReceiptsNumberingModule=Module de numérotation des bordereaux de remises MultiCompanySetup=Configuration du module Multi-société ##### Suppliers ##### SuppliersSetup=Configuration du module Fournisseurs -SuppliersCommandModel=Complete template of purchase order (logo...) +SuppliersCommandModel=Modèle de commandes fournisseur complet (logo…) SuppliersInvoiceModel=Modèle de factures fournisseur complet (logo…) SuppliersInvoiceNumberingModel=Modèles de numérotation des factures fournisseur IfSetToYesDontForgetPermission=Si positionné sur Oui, n'oubliez pas de donner les permissions aux groupes ou utilisateurs qui auront le droit de cette action. @@ -1701,7 +1702,7 @@ ListOfNotificationsPerUser=Liste des notifications par utilisateur* ListOfNotificationsPerUserOrContact=Liste des notifications par utilisateur* ou par contact** ListOfFixedNotifications=Liste des notifications emails fixes GoOntoUserCardToAddMore=Allez dans l'onglet "Notifications" d'un utilisateur pour ajouter ou supprimer des notifications pour les utilisateurs -GoOntoContactCardToAddMore=Go on the tab "Notifications" of a third party to add or remove notifications for contact addresses +GoOntoContactCardToAddMore=Rendez-vous sur l'onglet "Notifications" d'un tiers pour ajouter ou enlever les notifications pour les contacts/adresses 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 : @@ -1785,9 +1786,9 @@ AddOtherPagesOrServices=Ajout d'autres pages ou services AddModels=Ajout de modèles de document ou de numérotation AddSubstitutions=Ajout de valeurs de substitution DetectionNotPossible=Détection impossible -UrlToGetKeyToUseAPIs=Url to get token to use API (once token has been received it is saved in database user table and must be provided on each API call) +UrlToGetKeyToUseAPIs=Url pour que le jeton utilise l'API (une fois le jeton reçu, il est enregistré dans la table des utilisateurs de la base de données et doit être fourni à chaque appel d'API) ListOfAvailableAPIs=Liste des APIs disponibles -activateModuleDependNotSatisfied=Module "%s" depends on module "%s", that is missing, so module "%1$s" may not work correctly. Please install module "%2$s" or disable module "%1$s" if you want to be safe from any surprise +activateModuleDependNotSatisfied=Le module "%s" dépend du module "%s" manquant. Le module "%1$s" risque donc de ne pas fonctionner correctement. Veuillez installer le module "%2$s" ou désactiver le module "%1$s" si vous souhaitez être à l'abri de toute surprise. CommandIsNotInsideAllowedCommands=La commande que vous essayez d'exécuter ne figure pas dans la liste des commandes autorisées définies dans le paramètre $dolibarr_main_restrict_os_commands du fichier conf.php . LandingPage=Page cible SamePriceAlsoForSharedCompanies=Si vous utilisez un module multi-société, avec le choix «prix unique», le prix sera aussi le même pour toutes les sociétés si les produits sont partagés entre les environnements @@ -1804,40 +1805,44 @@ MAIN_PDF_MARGIN_TOP=Marge haute sur les PDF MAIN_PDF_MARGIN_BOTTOM=Marge bas sur les PDF NothingToSetup=Aucune configuration particulière n'est requise pour ce module. SetToYesIfGroupIsComputationOfOtherGroups=Réglez ceci sur Oui si ce groupe est un calcul d'autres groupes -EnterCalculationRuleIfPreviousFieldIsYes=Enter calculation rule if previous field was set to Yes (For example 'CODEGRP1+CODEGRP2') +EnterCalculationRuleIfPreviousFieldIsYes=Entrez la règle de calcul si le champ précédent était défini sur Oui (par exemple, 'CODEGRP1 + CODEGRP2') SeveralLangugeVariatFound=Plusieurs variantes de langue trouvées COMPANY_AQUARIUM_REMOVE_SPECIAL=Supprimer les caractères spéciaux COMPANY_AQUARIUM_CLEAN_REGEX=Filtre Regex pour nettoyer la valeur (COMPANY_AQUARIUM_CLEAN_REGEX) -GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact) -GDPRContactDesc=If you store data about European companies/citizen, you can store the contact who is responsible for the General Data Protection Regulation here -HelpOnTooltip=Help text to show on tooltip -HelpOnTooltipDesc=Put text or a translation key here for the text to show on a tooltip when this field appears in a form -YouCanDeleteFileOnServerWith=You can delete this file on server with Command Line:
%s +GDPRContact=Responsable de la protection des données (DPO ou contact RGPD) +GDPRContactDesc=Si vous stockez des données sur des entreprises / citoyens européens, vous pouvez enregistrer ici le contact responsable du règlement général sur la protection des données. +HelpOnTooltip=Texte d'aide à afficher dans l'info-bulle +HelpOnTooltipDesc=Mettez du texte ou une clé de traduction ici pour que le texte apparaisse dans une info-bulle lorsque ce champ apparaît dans un formulaire +YouCanDeleteFileOnServerWith=Vous pouvez supprimer ce fichier sur le serveur avec la ligne de commande:
%s ChartLoaded=Modèle de plan de compte chargé SocialNetworkSetup=Configuration du module Réseaux Sociaux -EnableFeatureFor=Enable features for %s -VATIsUsedIsOff=Note: The option to use sales Tax or VAT has been set to Off in the menu %s - %s, so Sale tax or Vat used will always be 0 for sales. +EnableFeatureFor=Activer les fonctionnalités pour %s +VATIsUsedIsOff=Remarque: l'option d'utilisation de la taxe de vente ou de la TVA a été définie sur Désactivée dans le menu %s - %s, aussi la taxe de vente ou la TVA utilisée sera toujours égale à 0 pour les ventes. SwapSenderAndRecipientOnPDF=Échanger adresses expéditeurs et destinataires sur le PDF FeatureSupportedOnTextFieldsOnly=Attention, fonctionnalité prise en charge sur les champs de texte uniquement -EmailCollector=Email collector +EmailCollector=Collecteur de courrier électronique EmailCollectorDescription=Ajoute un travail planifié et une page de configuration pour analyser régulièrement les boîtes aux lettres (à l'aide du protocole IMAP) et enregistrer les courriers électroniques reçus dans votre application, au bon endroit et/ou créer automatiquement certains enregistrements (comme des opportunités). -NewEmailCollector=New Email Collector -EMailHost=Host of email IMAP server -MailboxSourceDirectory=Mailbox source directory -MailboxTargetDirectory=Mailbox target directory -EmailcollectorOperations=Operations to do by collector -CollectNow=Collect now -DateLastResult=Date last collect -LastResult=Last result -EmailCollectorConfirmCollectTitle=Email collect confirmation -EmailCollectorConfirmCollect=Do you want to run the collect for this collector now ? -NoNewEmailToProcess=No new email (matching filters) to process -NothingProcessed=Nothing done -XEmailsDoneYActionsDone=%s emails analyzed, %s emails successfuly processed (for %s record/actions done) by collector -RecordEvent=Record event +NewEmailCollector=Nouveau collecteur d'email +EMailHost=Hôte du serveur de messagerie IMAP +MailboxSourceDirectory=Répertoire source dans la boîte aux lettres +MailboxTargetDirectory=Répertoire cible dans la boîte aux lettres +EmailcollectorOperations=Opérations à effectuer par le collectionneur +CollectNow=Collecter maintenant +DateLastResult=Date de dernière collecte +LastResult=Dernier résultat +EmailCollectorConfirmCollectTitle=Confirmation de la collecte Email +EmailCollectorConfirmCollect=Voulez-vous exécuter la collecte pour ce collecteur maintenant ? +NoNewEmailToProcess=Aucun nouvel email (correspondants aux filtres) à traiter +NothingProcessed=Aucune action faite +XEmailsDoneYActionsDone=%s e-mails qualifiés, %s e-mails traités avec succès (pour %s enregistrements/actions faites) par le collecteur +RecordEvent=Enregistrer événement émail CreateLeadAndThirdParty=Créer opportunité (et tiers si nécessaire) -CodeLastResult=Result code of last collect -NbOfEmailsInInbox=Number of email in source directory +CodeLastResult=Code du résultat de la dernière collecte +NbOfEmailsInInbox=Nombre de courriels dans le répertoire source +LoadThirdPartyFromName=Charger le tiers à partir du nom (charger uniquement) +LoadThirdPartyFromNameOrCreate=Charger le tiers à partir du nom (créer si non trouvé) +WithDolTrackingID=ID Tracker Dolibarr trouvé +WithoutDolTrackingID=ID Tracker Dolibarr non trouvé ##### Resource #### ResourceSetup=Configuration du module Ressource UseSearchToSelectResource=Utilisez un champ avec auto-complétion pour choisir les ressources (plutôt qu'une liste déroulante). @@ -1845,4 +1850,4 @@ DisabledResourceLinkUser=Désactiver la fonctionnalité pour lier une ressource DisabledResourceLinkContact=Désactiver la fonctionnalité pour lier une ressource aux contacts/adresses ConfirmUnactivation=Confirmer réinitialisation du module OnMobileOnly=Sur petit écran (smartphone) uniquement -DisableProspectCustomerType=Disable the "Prospect + Customer" third party type (so third party must be Prospect or Customer but can't be both) +DisableProspectCustomerType=Désactiver le type de tiers "Prospect + Client" (le tiers doit donc être un client potentiel ou un client, mais ne peut pas être les deux) diff --git a/htdocs/langs/fr_FR/agenda.lang b/htdocs/langs/fr_FR/agenda.lang index 9bf6509a277..6cd0dd2e74c 100644 --- a/htdocs/langs/fr_FR/agenda.lang +++ b/htdocs/langs/fr_FR/agenda.lang @@ -100,7 +100,7 @@ AgendaUrlOptions1=Vous pouvez aussi ajouter les paramètres suivants pour filtre AgendaUrlOptions3=logina=%s pour limiter l'export aux actions dont l'utilisateur %s est propriétaire. AgendaUrlOptionsNotAdmin=logina=!%s pour limiter l'export aux actions non assignées à l'utilisateur %s. AgendaUrlOptions4=logint=%spour limiter l'export aux actions assignées à l'utilisateur %s (propriétaire et autres). -AgendaUrlOptionsProject=project=PROJECT_ID pour restreindre aux événements associés au projet PROJECT_ID. +AgendaUrlOptionsProject=project=__PROJECT_ID__ pour restreindre aux événements associés au projet __PROJECT_ID__. AgendaUrlOptionsNotAutoEvent= notactiontype=systemauto pour exclure les événements automatiques. AgendaShowBirthdayEvents=Afficher les anniversaires de contacts AgendaHideBirthdayEvents=Masquer les anniversaires de contacts diff --git a/htdocs/langs/fr_FR/assets.lang b/htdocs/langs/fr_FR/assets.lang new file mode 100644 index 00000000000..356245e8761 --- /dev/null +++ b/htdocs/langs/fr_FR/assets.lang @@ -0,0 +1,59 @@ +# Copyright (C) 2018 Alexandre Spangaro +# +# 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 . + +# +# Generic +# +Assets = Immobilisations +NewAsset = Nouvelle immobilisation +AccountancyCodeAsset = Code comptable (immobilisation) +AccountancyCodeDepreciationAsset = Code comptable (compte d'amortissement) +AccountancyCodeDepreciationExpense = Code comptable (compte de charges d'amortissement) +NewAssetType=Nouveau type d'immobilisation +AssetsTypeSetup=Configuration du type d'actifs +AssetTypeModified=Type d'actif modifié +AssetType=Type d'immobilisations +AssetsLines=Immobilisations +DeleteType=Supprimer +DeleteAnAssetType=Supprimer un type d'actif +ConfirmDeleteAssetType=Êtes-vous sûr de vouloir supprimer ce type d'actif? +ShowTypeCard=Voir type '%s' + +# Module label 'ModuleAssetsName' +ModuleAssetsName = Immobilisations +# Module description 'ModuleAssetsDesc' +ModuleAssetsDesc = Module pour suivre vos immobilisations + +# +# Admin page +# +AssetsSetup = Configuration du module immobilisations +Settings = Paramètres +AssetsSetupPage = Page de configuration des actifs +ExtraFieldsAssetsType = Attributs supplémentaires (type d'immobilisation) +AssetsType=Type d'immobilisations +AssetsTypeId=Id du type d'immobilisations +AssetsTypeLabel=Libellé du type d'immobilisations +AssetsTypes=Types d'immobilisations + +# +# Menu +# +MenuAssets = Immobilisations +MenuNewAsset = Nouvelle immobilisation +MenuTypeAssets = Type d'immobilisations +MenuListAssets = Liste +MenuNewTypeAssets = Nouveau type +MenuListTypeAssets = Liste diff --git a/htdocs/langs/fr_FR/banks.lang b/htdocs/langs/fr_FR/banks.lang index c75071158be..eab94129dfd 100644 --- a/htdocs/langs/fr_FR/banks.lang +++ b/htdocs/langs/fr_FR/banks.lang @@ -7,7 +7,7 @@ BankName=Nom de la banque FinancialAccount=Compte BankAccount=Compte bancaire BankAccounts=Comptes bancaires -BankAccountsAndGateways=Comptes bancaires | Interfaces paiement +BankAccountsAndGateways=Comptes bancaires | Passerelles paiement ShowAccount=Afficher compte AccountRef=Ref compte financier AccountLabel=Libellé compte financier @@ -46,7 +46,7 @@ BankAccountDomiciliation=Domiciliation du compte BankAccountCountry=Pays du compte BankAccountOwner=Nom du propriétaire du compte BankAccountOwnerAddress=Adresse du propriétaire du compte -RIBControlError=Les contrôles indiquent que les informations de ce compte bancaire sont incomplètes ou incorrectes (vérifier le pays, les numéros de compte ou IBAN). +RIBControlError=Les contrôles indiquent que les informations de ce compte bancaire sont incomplètes ou incorrectes (vérifier le pays, les numéros de compte et IBAN). CreateAccount=Créer compte NewBankAccount=Nouveau compte NewFinancialAccount=Nouveau compte financier @@ -76,6 +76,7 @@ TransactionsToConciliate=Écritures à rapprocher Conciliable=Rapprochable Conciliate=Rapprocher Conciliation=Rapprochement +SaveStatementOnly=Enregistrer le relevé uniquement ReconciliationLate=Rapprochement en retard IncludeClosedAccount=Inclure comptes fermés OnlyOpenedAccount=Seulement les comptes ouverts @@ -104,7 +105,7 @@ SocialContributionPayment=Paiement de charge fiscale/sociale BankTransfer=Virement bancaire BankTransfers=Virements bancaire MenuBankInternalTransfer=Virement interne -TransferDesc=Transférer d'un compte bancaire à un autre, Dolibarr ajoutera deux lignes d'écritures (une ligne de débit dans le compte source et une ligne de crédit dans le compte de destination. le même montant (excepté le signe), le libellé et la date seront repris). +TransferDesc=Transférer d'un compte bancaire à un autre, Dolibarr ajoutera deux lignes d'écritures (une ligne de débit dans le compte source et une ligne de crédit dans le compte de destination. le même montant (excepté le signe), le libellé et la date seront utilisés pour la transaction). TransferFrom=De TransferTo=Vers TransferFromToDone=Le virement depuis %s vers %s de %s %s a été créé. @@ -132,10 +133,10 @@ PaymentDateUpdateSucceeded=Date de paiement mise à jour avec succès PaymentDateUpdateFailed=Impossible de mettre la date de paiement à jour Transactions=Ecritures BankTransactionLine=Écriture bancaire -AllAccounts=Tous les comptes bancaires/caisses +AllAccounts=Tous les comptes bancaires et caisses BackToAccount=Retour au compte ShowAllAccounts=Afficher pour tous les comptes -FutureTransaction=Transaction future. Pas moyen de concilier. +FutureTransaction=Transaction future. Pas moyen de rapprocher. SelectChequeTransactionAndGenerate=Sélectionner/filtrer les chèques à inclure dans le bordereau de remise et cliquer sur "Créer". InputReceiptNumber=Choisissez le relevé bancaire liés au rapprochement. Utilisez une valeur numérique triable: AAAAMM ou AAAAMMJJ EventualyAddCategory=Eventuellement, saisissez une catégorie dans laquelle classer les écritures diff --git a/htdocs/langs/fr_FR/bills.lang b/htdocs/langs/fr_FR/bills.lang index 19e4e877acb..c0a9d2c74b6 100644 --- a/htdocs/langs/fr_FR/bills.lang +++ b/htdocs/langs/fr_FR/bills.lang @@ -25,10 +25,10 @@ InvoiceProFormaAsk=Facture proforma InvoiceProFormaDesc=La facture proforma est une image de facture définitive mais qui n'a aucune valeur comptable. InvoiceReplacement=Facture de remplacement InvoiceReplacementAsk=Facture de remplacement de la facture -InvoiceReplacementDesc=Replacement invoice is used to cancel and completely replace an invoice with no payment already received.

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=La facture de remplacement sert à annuler et remplacer complètement une facture existante sur laquelle aucun paiement n'a encore eu lieu.

Rem: Seules les factures sans aucun paiement peuvent être remplacées. Si ces dernières ne sont pas fermées, elles le seront automatiquement au statut 'abandonnée'. InvoiceAvoir=Facture avoir InvoiceAvoirAsk=Facture avoir pour correction de la facture -InvoiceAvoirDesc=The credit note is a negative invoice used to correct the fact that an invoice has an amount that differs from the amount really paid (eg customer paid too much by mistake, or will not pay completely since he returned some products). +InvoiceAvoirDesc=La facture d'avoir est une facture négative destinée à compenser un montant de facture qui diffère du montant réellement versé (suite à un trop versé par le client par erreur ou un manque non versé par le client suite à un retour produit par exemple). invoiceAvoirWithLines=Créer l'avoir avec les même lignes que la factures dont il est issu invoiceAvoirWithPaymentRestAmount=Créer l'avoir avec le montant restant à payer de la facture dont il est issu. invoiceAvoirLineWithPaymentRestAmount=Avoir sur le reste à payer @@ -66,12 +66,12 @@ paymentInInvoiceCurrency=Dans la devise des factures PaidBack=Remboursé DeletePayment=Supprimer le paiement ConfirmDeletePayment=Êtes-vous sûr de vouloir supprimer ce paiement ? -ConfirmConvertToReduc=Do you want to convert this %s into an absolute discount?
The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. -ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute discount?
The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this supplier. +ConfirmConvertToReduc=Voulez vous convertir ce(cet) %s en remise fixe ?
Le montant sera enregistré parmi les autres remises et pourra être utilisé en tant que remise sur une autre facture du client. +ConfirmConvertToReducSupplier=Souhaitez-vous convertir ce %s en une remise absolue?
Le montant sera sauvegardé parmi toutes les remises et pourra être utilisé comme remise pour une facture actuelle ou future de ce fournisseur. SupplierPayments=Règlements fournisseurs ReceivedPayments=Règlements reçus ReceivedCustomersPayments=Règlements reçus du client -PayedSuppliersPayments=Payments paid to suppliers +PayedSuppliersPayments=Paiements versés aux fournisseurs ReceivedCustomersPaymentsToValid=Règlements clients reçus à valider PaymentsReportsForYear=Rapports de règlements pour %s PaymentsReports=Rapports de règlements @@ -91,8 +91,8 @@ PaymentConditionsShort=Conditions de règlement PaymentAmount=Montant règlement ValidatePayment=Valider ce règlement PaymentHigherThanReminderToPay=Règlement supérieur au reste à payer -HelpPaymentHigherThanReminderToPay=Attention, the payment amount of one or more bills is higher than the outstanding amount to pay.
Edit your entry, otherwise confirm and consider creating a credit note for the excess received for each overpaid invoice. -HelpPaymentHigherThanReminderToPaySupplier=Attention, the payment amount of one or more bills is higher than the outstanding amount to pay.
Edit your entry, otherwise confirm and consider creating a credit note for the excess paid for each overpaid invoice. +HelpPaymentHigherThanReminderToPay=Attention, le montant de paiement pour une ou plusieurs factures est supérieur au reste à payer.
Corrigez votre saisie, sinon, confirmez et pensez à créer un avoir du trop perçu lors de la fermeture de chacune des factures surpayées. +HelpPaymentHigherThanReminderToPaySupplier=Attention, le montant du paiement d'une ou plusieurs factures est supérieur au montant restant à payer.
Modifiez votre entrée, sinon confirmez et envisagez de créer une note de crédit pour l'excédent payé pour chaque facture en trop. ClassifyPaid=Classer 'Payée' ClassifyPaidPartially=Classer 'Payée partiellement' ClassifyCanceled=Classer 'Abandonnée' @@ -131,8 +131,8 @@ BillStatusClosedUnpaid=Fermée (impayée) BillStatusClosedPaidPartially=Payée (partiellement) BillShortStatusDraft=Brouillon BillShortStatusPaid=Payée -BillShortStatusPaidBackOrConverted=Refunded or converted -Refunded=Refunded +BillShortStatusPaidBackOrConverted=Remboursé ou converti +Refunded=Remboursé BillShortStatusConverted=Payé BillShortStatusCanceled=Abandonnée BillShortStatusValidated=Validée @@ -142,16 +142,16 @@ BillShortStatusNotRefunded=Non remboursé BillShortStatusClosedUnpaid=Fermée BillShortStatusClosedPaidPartially=Payée PaymentStatusToValidShort=A valider -ErrorVATIntraNotConfigured=Intra-Community VAT number not yet defined +ErrorVATIntraNotConfigured=Numéro de TVA intracommunautaire non encore défini ErrorNoPaiementModeConfigured=Aucun mode de règlement défini par défaut. Allez corriger dans la configuration du module facture. ErrorCreateBankAccount=Créer un compte bancaire puis aller dans la configuration du module facture pour définir les modes de règlement ErrorBillNotFound=Facture %s inexistante -ErrorInvoiceAlreadyReplaced=Error, you tried to validate an invoice to replace invoice %s. But this one has already been replaced by invoice %s. +ErrorInvoiceAlreadyReplaced=Erreur, vous avez tenté de valider une facture pour remplacer la facture %s. Mais celle-ci a déjà été remplacée par la facture %s. ErrorDiscountAlreadyUsed=Erreur, la remise a déjà été attribuée ErrorInvoiceAvoirMustBeNegative=Erreur, une facture de type Avoir doit avoir un montant négatif ErrorInvoiceOfThisTypeMustBePositive=Erreur, une facture de ce type doit avoir un montant positif ErrorCantCancelIfReplacementInvoiceNotValidated=Erreur, il n'est pas possible d'annuler une facture qui a été remplacée par une autre qui se trouve toujours à l'état 'brouillon'. -ErrorThisPartOrAnotherIsAlreadyUsedSoDiscountSerieCantBeRemoved=This part or another is already used so discount series cannot be removed. +ErrorThisPartOrAnotherIsAlreadyUsedSoDiscountSerieCantBeRemoved=Cette partie ou une autre est déjà utilisée et les séries d'escompte ne peuvent donc pas être supprimées. BillFrom=Émetteur BillTo=Adressé à ActionsOnBill=Événements sur la facture @@ -180,20 +180,20 @@ ConfirmClassifyPaidBill=Êtes-vous sûr de vouloir classer la facture %s ConfirmCancelBill=Êtes-vous sûr de vouloir annuler la facture %s ? ConfirmCancelBillQuestion=Pour quelle raison voulez-vous classer la facture abandonnée ? ConfirmClassifyPaidPartially=Êtes-vous sûr de vouloir classer la facture %s comme payée ? -ConfirmClassifyPaidPartiallyQuestion=This invoice has not been paid completely. What is the reason/s for you closing this invoice? -ConfirmClassifyPaidPartiallyReasonAvoir=Remaining unpaid (%s %s) is a discount granted because payment was made before term. I regularize the VAT with a credit note. +ConfirmClassifyPaidPartiallyQuestion=Cette facture n'a pas été payée complètement. Quelle est la raison pour la fermeture de cette facture? +ConfirmClassifyPaidPartiallyReasonAvoir=Le reste à payer (%s %s) est un trop facturé (car article retourné, oubli, escompte réalisé...), régularisé par un avoir ConfirmClassifyPaidPartiallyReasonDiscount=Le reste à payer (%s %s) est un escompte accordé parce que le paiement a été effectué avant terme. ConfirmClassifyPaidPartiallyReasonDiscountNoVat=Le reste à payer (%s %s) est un escompte accordé après facture. J'accepte de perdre la TVA sur cet escompte ConfirmClassifyPaidPartiallyReasonDiscountVat=Le reste à payer (%s %s) est un escompte ConfirmClassifyPaidPartiallyReasonBadCustomer=Mauvais payeur ConfirmClassifyPaidPartiallyReasonProductReturned=Produits en partie retournés ConfirmClassifyPaidPartiallyReasonOther=Créance abandonnée pour autre raison -ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=This choice is possible if your invoice has been provided with suitable comments. (Example «Only the tax corresponding to the price that has been actually paid gives rights to deduction») -ConfirmClassifyPaidPartiallyReasonDiscountVatDesc=In some countries, this choice might be possible only if your invoice contains correct notes. +ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=Ce choix est possible si votre facture a été fournie avec les commentaires appropriés. (Exemple «Seule la taxe correspondant au prix effectivement payé donne droit à déduction») +ConfirmClassifyPaidPartiallyReasonDiscountVatDesc=Dans certains pays, ce choix n'est possible que si votre facture contient des notes correctes. ConfirmClassifyPaidPartiallyReasonAvoirDesc=Ce choix est le choix à prendre si les autres ne sont pas applicables -ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=A bad customer is a customer that refuses to pay his debt. +ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=Un mauvais payeur est un client qui refuse de régler sa dette. ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=Ce choix sera celui choisi, dans le cas du paiement incomplet suite au retour d'une partie des produits -ConfirmClassifyPaidPartiallyReasonOtherDesc=Use this choice if all others are not suitable, for example in following situation:
- payment not complete because some products were shipped back
- amount claimed too important because a discount was forgotten
In all cases, amount over-claimed must be corrected in accountancy system by creating a credit note. +ConfirmClassifyPaidPartiallyReasonOtherDesc=Utilisez ce choix si tous les autres ne conviennent pas, par exemple dans les situations suivantes:
- paiement non effectué car certains produits ont été retournés
- montant réclamé trop important car une remise a été oubliée
Dans tous les cas, montant la sur-réclamation doit être corrigée dans le système comptable en créant une note de crédit. ConfirmClassifyAbandonReasonOther=Autre ConfirmClassifyAbandonReasonOtherDesc=Ce choix sera celui choisi dans tout autre cas. Par exemple suite à l'intention de créer une facture de remplacement. ConfirmCustomerPayment=Confirmez-vous la saisie de ce règlement de %s %s ? @@ -201,10 +201,10 @@ ConfirmSupplierPayment=Confirmez-vous la saisie de ce règlement de %s %s ConfirmValidatePayment=Êtes-vous sûr de vouloir valider ce paiement, aucune modification n'est possible une fois le paiement validé ? ValidateBill=Valider facture UnvalidateBill=Repasser facture en brouillon -NumberOfBills=No. of invoices -NumberOfBillsByMonth=No. of invoices per month +NumberOfBills=Nb de factures +NumberOfBillsByMonth=Nb de factures par mois AmountOfBills=Montant de factures -AmountOfBillsHT=Amount of invoices (net of tax) +AmountOfBillsHT=Montant des factures (HT) AmountOfBillsByMonthHT=Montant de factures par mois (HT) ShowSocialContribution=Afficher charge fiscale/sociale ShowBill=Afficher facture @@ -262,9 +262,9 @@ Repeatables=Modèles ChangeIntoRepeatableInvoice=Convertir en facture modèle CreateRepeatableInvoice=Créer facture modèle CreateFromRepeatableInvoice=Créer depuis facture modèle -CustomersInvoicesAndInvoiceLines=Customer invoices and invoice details +CustomersInvoicesAndInvoiceLines=Factures clients et lignes de factures CustomersInvoicesAndPayments=Factures clients et règlements -ExportDataset_invoice_1=Customer invoices and invoice details +ExportDataset_invoice_1=Factures clients et lignes de facture ExportDataset_invoice_2=Factures clients et règlements ProformaBill=Facture Proforma : Reduction=Réduction @@ -304,9 +304,9 @@ DiscountAlreadyCounted=Réductions ou crédits déjà consommés CustomerDiscounts=Remises client SupplierDiscounts=Remises vendeurs BillAddress=Adresse de facturation -HelpEscompte=This discount is a discount granted to customer because payment was made before term. -HelpAbandonBadCustomer=This amount has been abandoned (customer said to be a bad customer) and is considered as an exceptional loss. -HelpAbandonOther=This amount has been abandoned since it was an error (wrong customer or invoice replaced by another for example) +HelpEscompte=Un escompte est une remise accordée, sur une facture donnée, à un client car ce dernier a réalisé son règlement bien avant l'échéance. +HelpAbandonBadCustomer=Ce montant a été abandonné (client jugé mauvais payeur) et est considéré comme une perte exceptionnelle. +HelpAbandonOther=Ce montant a été abandonné car il s'agissait d'une erreur de facturation (saisie mauvais client, facture remplacée par une autre par exemple). IdSocialContribution=Id de paiement charge fiscale ou sociale PaymentId=Id paiement PaymentRef=Ref paiement @@ -323,19 +323,19 @@ InvoiceNotChecked=Aucune facture n'a été sélectionnée CloneInvoice=Cloner facture ConfirmCloneInvoice=Êtes-vous sûr de vouloir cloner cette facture %s ? DisabledBecauseReplacedInvoice=Action désactivée car facture remplacée -DescTaxAndDividendsArea=Cet écran résume la liste de toutes les paiements réalisés pour des dépenses particulières. Seuls les paiements de l'année choisi sont inclus ici. -NbOfPayments=No. of payments +DescTaxAndDividendsArea=Cet écran résume la liste de toutes les paiements réalisés pour des dépenses particulières. Seuls les paiements de l'année choisie sont inclus ici. +NbOfPayments=Nb de paiements SplitDiscount=Scinder réduction en deux -ConfirmSplitDiscount=Are you sure you want to split this discount of %s %s into 2 smaller discounts? -TypeAmountOfEachNewDiscount=Input amount for each of two parts: -TotalOfTwoDiscountMustEqualsOriginal=Total of two new discounts must be equal to original discount amount. +ConfirmSplitDiscount=Êtes-vous sûr de vouloir scinder la réduction de %s %s en 2 réductions plus petites ? +TypeAmountOfEachNewDiscount=Quantité d'entrée pour chacune des deux parties: +TotalOfTwoDiscountMustEqualsOriginal=Le total de deux nouvelles remises doit être égal au montant de la remise initiale. ConfirmRemoveDiscount=Êtes-vous sûr de vouloir supprimer cette réduction ? RelatedBill=Facture associée RelatedBills=Factures associées RelatedCustomerInvoices=Factures clients liées RelatedSupplierInvoices=Factures fournisseurs liées LatestRelatedBill=Dernière facture en rapport -WarningBillExist=Warning, one or more invoices already exist +WarningBillExist=Attention, une ou plusieurs factures existent déjà MergingPDFTool=Outil de fusion de PDF AmountPaymentDistributedOnInvoice=Montant paiement affecté à la facture PaymentOnDifferentThirdBills=Autoriser le règlement de factures de différents tiers si ils ont la même maison-mère @@ -410,19 +410,19 @@ PaymentTypeCHQ=Chèque PaymentTypeShortCHQ=Chèque PaymentTypeTIP=TIP (Titre interbancaire de paiement) PaymentTypeShortTIP=Paiement TIP -PaymentTypeVAD=Online payment -PaymentTypeShortVAD=Online payment +PaymentTypeVAD=Paiement en ligne +PaymentTypeShortVAD=Paiement en ligne PaymentTypeTRA=Traite PaymentTypeShortTRA=Traite PaymentTypeFAC=Facteur PaymentTypeShortFAC=Facteur BankDetails=Coordonnées bancaires BankCode=Code banque -DeskCode=Office code +DeskCode=Code guichet BankAccountNumber=Numéro de compte -BankAccountNumberKey=Check digits +BankAccountNumberKey=Clé Residence=Domiciliation -IBANNumber=IBAN complete account number +IBANNumber=Code IBAN IBAN=IBAN BIC=BIC/SWIFT BICNumber=Code BIC/SWIFT @@ -447,7 +447,7 @@ PaymentByTransferOnThisBankAccount=Règlement par virement sur le compte bancair VATIsNotUsedForInvoice=* TVA non applicable art-293B du CGI LawApplicationPart1=Par application de la loi 80.335 du 12/05/80 LawApplicationPart2=les marchandises demeurent la propriété du -LawApplicationPart3=the seller until full payment of +LawApplicationPart3=vendeur jusqu'à complet encaissement de LawApplicationPart4=leurs prix. LimitedLiabilityCompanyCapital=SARL au Capital de UseLine=Appliquer @@ -465,7 +465,7 @@ Cheques=Chèques DepositId=Id dépôt NbCheque=Nombre de chèques CreditNoteConvertedIntoDiscount=Ce %s a été converti en %s -UsBillingContactAsIncoiveRecipientIfExist=Utiliser l'adresse du contact facturation client de la facture plutôt que l'adresse du tiers comme destinataire des factures +UsBillingContactAsIncoiveRecipientIfExist=Utiliser l'adresse du contact de type 'contact facturation' plutôt que l'adresse du tiers comme destinataire des factures ShowUnpaidAll=Afficher tous les impayés ShowUnpaidLateOnly=Afficher uniquement les factures impayées en retard PaymentInvoiceRef=Paiement facture %s @@ -478,20 +478,20 @@ CantRemovePaymentWithOneInvoicePaid=Suppression impossible quand il existe au mo ExpectedToPay=Paiement attendu CantRemoveConciliatedPayment=Suppression d'un paiement rapproché impossible PayedByThisPayment=Règlé par ce paiement -ClosePaidInvoicesAutomatically=Classify "Paid" all standard, down payment or replacement invoices paid entirely. +ClosePaidInvoicesAutomatically=Classer «payées» toutes les factures standard, les acomptes ou les factures de remplacement entièrement payées ClosePaidCreditNotesAutomatically=Classer automatiquement à "Payé" les factures avoirs entièrement remboursées. ClosePaidContributionsAutomatically=Classer "payé" toutes les contributions sociales ou fiscales payées entièrement. -AllCompletelyPayedInvoiceWillBeClosed=All invoice with no remainder to pay will be automatically closed with status "Paid". +AllCompletelyPayedInvoiceWillBeClosed=Toutes les factures sans reste à payer seront automatiquement clôturées avec le statut "Payée". ToMakePayment=Payer ToMakePaymentBack=Rembourser ListOfYourUnpaidInvoices=Liste des factures impayées NoteListOfYourUnpaidInvoices=Remarque: Cette liste ne contient que les factures des Tiers pour lesquels vous êtes le commercial affecté. RevenueStamp=Timbre fiscal -YouMustCreateInvoiceFromThird=This option is only available when creating invoices from tab "customer" of third party -YouMustCreateInvoiceFromSupplierThird=Cette option est disponible uniquement lors de la création d'une facture depuis l'onglet «fournisseur» d'un tiers +YouMustCreateInvoiceFromThird=Cette option est uniquement disponible lors de la création de factures à partir de l'onglet "client" d'un tiers +YouMustCreateInvoiceFromSupplierThird=Cette option est disponible uniquement lors de la création d'une facture depuis l'onglet "fournisseur" d'un tiers YouMustCreateStandardInvoiceFirstDesc=Pour créer une facture modèle, vous devez d'abord créer une facture standard brouillon et la convertir en modèle. PDFCrabeDescription=Modèle de facture PDF complet (modèle recommandé par défaut) -PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template +PDFSpongeDescription=Modèle de facture PDF Sponge. Un modèle de facture complet PDFCrevetteDescription=Modèle de facture PDF Crevette (modèle complet pour les factures de situation) TerreNumRefModelDesc1=Renvoie le numéro sous la forme %syymm-nnnn pour les factures et factures de remplacement, %syymm-nnnn pour les avoirs et %syymm-nnnn pour les acomptes où yy est l'année, mm le mois et nnnn un compteur séquentiel sans rupture et sans remise à 0 MarsNumRefModelDesc1=Renvoie une numérotation au format %syymm-nnnn pour les factures standards, %syymm-nnnn pour les factures de remplacement, %syymm-nnnn pour les factures d'acompte et %syymm-nnnn pour les factures d'avoir où yy est l'année, mm le mois et nnnn un compteur sans rupture ni retour à zéro. diff --git a/htdocs/langs/fr_FR/blockedlog.lang b/htdocs/langs/fr_FR/blockedlog.lang index 440f0d0d176..ae0b630096d 100644 --- a/htdocs/langs/fr_FR/blockedlog.lang +++ b/htdocs/langs/fr_FR/blockedlog.lang @@ -1,6 +1,6 @@ -BlockedLog=Unalterable Logs +BlockedLog=Journaux Inaltérables Field=Champ -BlockedLogDesc=Ce module suit à la trace quelques événements dans un journal invariable (que vous ne pouvez pas modifier une fois enregistré) dans une chaîne de bloc, en temps réel. Ce module fournit la compatibilité avec les exigences des lois de quelques pays (comme la France avec la Loi de Finance 2016 - Norme NF535) +BlockedLogDesc=Ce module retrace certains événements dans un journal immuable (que vous ne pouvez pas modifier une fois enregistré) dans une chaîne de blocs, en temps réel. Ce module assure la compatibilité avec les exigences des lois de certains pays (comme la France avec la loi Finance 2016 - Norme NF535). Fingerprints=Événements et empreintes archivés FingerprintsDesc=C'est l'outil pour parcourir ou extraire les logs inaltérables. Les journaux inaltérables sont générés et archivés localement dans une table dédiée, en temps réel lorsque vous enregistrez une action dans dolibarr. Vous pouvez utiliser cet outil pour exporter cette archive et l'enregistrer sur un support externe (certains pays, comme la France, vous demandent de le faire chaque année). Notez qu'il n'y a pas de fonction pour purger ce journal et chaque changement essayé d'être fait directement dans ce journal (par un hacker par exemple) sera rapporté avec une empreinte non valide. Si vous avez vraiment besoin de purger cette table parce que vous avez utilisé votre application à des fins de démonstration/test et que vous voulez nettoyer vos données pour démarrer votre production, vous pouvez demander à votre revendeur ou intégrateur de réinitialiser votre base de données (toutes vos données seront supprimées).\n CompanyInitialKey=Clé initiale de la société (hachage du bloc de genèse) @@ -8,46 +8,46 @@ BrowseBlockedLog=Logs inaltérables ShowAllFingerPrintsMightBeTooLong=Afficher tous les journaux archivés (peut être long) ShowAllFingerPrintsErrorsMightBeTooLong=Afficher tous les logs d'archives non valides (peut être long) DownloadBlockChain=Télécharger les empreintes -KoCheckFingerprintValidity=Archived log is not valid. It means someone (a hacker?) has modified some data of this archived log after it was recorded, or has erased the previous archived record (check that line with previous # exists). -OkCheckFingerprintValidity=Archived log is valid. It means all data on this line were not modified and record follow the previous one. -OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. -AddedByAuthority=Stored into remote authority -NotAddedByAuthorityYet=Not yet stored into remote authority +KoCheckFingerprintValidity=Le journal archivé n'est pas valide. Cela signifie que quelqu'un (un pirate informatique?) A modifié certaines données de ce journal archivé après son enregistrement ou a effacé l'enregistrement archivé précédent (vérifiez que la ligne avec le # précédent existe). +OkCheckFingerprintValidity=Le journal archivé est valide. Cela signifie que toutes les données de cette ligne n'ont pas été modifiées et l'enregistrement suit la précédente. +OkCheckFingerprintValidityButChainIsKo=Le journal archivé semble valide par rapport au précédent mais la chaîne était corrompue auparavant. +AddedByAuthority=Stocké dans une autorité distante +NotAddedByAuthorityYet=Pas encore stocké dans une autorité distante ShowDetails=Voir plus de détails -logPAYMENT_VARIOUS_CREATE=Payment (not assigned to invoice) created -logPAYMENT_VARIOUS_MODIFY=Payment (not assigned to invoice) modified -logPAYMENT_VARIOUS_DELETE=Payment (not assigned to invoice) logical deletion -logPAYMENT_ADD_TO_BANK=Payment added to bank -logPAYMENT_CUSTOMER_CREATE=Customer payment created -logPAYMENT_CUSTOMER_DELETE=Customer payment logical deletion -logDONATION_PAYMENT_CREATE=Donation payment created -logDONATION_PAYMENT_DELETE=Donation payment logical deletion -logBILL_PAYED=Customer invoice paid -logBILL_UNPAYED=Customer invoice set unpaid +logPAYMENT_VARIOUS_CREATE=Paiement créé (non affecté à la facture) +logPAYMENT_VARIOUS_MODIFY=Paiement modifié (non affecté à la facture) +logPAYMENT_VARIOUS_DELETE=Suppression logique du paiement (non affecté à la facture) +logPAYMENT_ADD_TO_BANK=Paiement ajouté à la banque +logPAYMENT_CUSTOMER_CREATE=Paiement client créé +logPAYMENT_CUSTOMER_DELETE=Suppression logique du paiement client +logDONATION_PAYMENT_CREATE=Paiement de donation créé +logDONATION_PAYMENT_DELETE=Suppression logique du paiement des dons +logBILL_PAYED=Facture client payée +logBILL_UNPAYED=Facture client impayée logBILL_VALIDATE=Facture client validée logBILL_SENTBYMAIL=Facture client envoyée par mail -logBILL_DELETE=Customer invoice logically deleted -logMODULE_RESET=Module BlockedLog was disabled -logMODULE_SET=Module BlockedLog was enabled +logBILL_DELETE=Facture client supprimée logiquement +logMODULE_RESET=Le module BlockedLog a été désactivé +logMODULE_SET=Le module BlockedLog a été activé logDON_VALIDATE=Don validé logDON_MODIFY=Don modifié -logDON_DELETE=Donation logical deletion +logDON_DELETE=Don logique suppression logMEMBER_SUBSCRIPTION_CREATE=Cotisation adhérent créée logMEMBER_SUBSCRIPTION_MODIFY=Cotisation adhérent modifiée -logMEMBER_SUBSCRIPTION_DELETE=Member subscription logical deletion +logMEMBER_SUBSCRIPTION_DELETE=Suppression logique d'abonnement de membre BlockedLogBillDownload=Téléchargement facture client BlockedLogBillPreview=Aperçu facture client BlockedlogInfoDialog=Détail du log ListOfTrackedEvents=Liste des actions suivies Fingerprint=Empreinte -DownloadLogCSV=Export archived logs (CSV) -logDOC_PREVIEW=Preview of a validated document in order to print or download -logDOC_DOWNLOAD=Download of a validated document in order to print or send -DataOfArchivedEvent=Full datas of archived event -ImpossibleToReloadObject=Original object (type %s, id %s) not linked (see 'Full datas' column to get unalterable saved data) -BlockedLogAreRequiredByYourCountryLegislation=Unalterable Logs module may be required by the legislation of your country. Disabling this module may render any future transactions invalid with respect to the law and the use of legal software as they can not be validated by a tax audit. -BlockedLogActivatedBecauseRequiredByYourCountryLegislation=Unalterable Logs module was activated because of the legislation of your country. Disabling this module may render any future transactions invalid with respect to the law and the use of legal software as they cannot be validated by a tax audit. +DownloadLogCSV=Exporter les journaux archivés (CSV) +logDOC_PREVIEW=Aperçu d'un document validé pour impression ou téléchargement +logDOC_DOWNLOAD=Téléchargement d'un document validé pour impression ou envoi +DataOfArchivedEvent=Données complètes de l'événement archivé +ImpossibleToReloadObject=Objet d'origine (type %s, id %s) non lié (voir la colonne 'Données complètes' pour obtenir les données sauvegardées non modifiables) +BlockedLogAreRequiredByYourCountryLegislation=Le module Journaux inaltérables peut être requis par la législation de votre pays. La désactivation de ce module peut invalider toute transaction future au regard de la loi et de l'utilisation de logiciels légaux, car elles ne peuvent être validées par un contrôle fiscal. +BlockedLogActivatedBecauseRequiredByYourCountryLegislation=Le module Journaux inaltérables a été activé en raison de la législation de votre pays. La désactivation de ce module peut invalider toute transaction future au regard de la loi et de l’utilisation de logiciels légaux, car elles ne peuvent pas être validées par un audit fiscal. BlockedLogDisableNotAllowedForCountry=Liste des pays où l'utilisation de ce module est obligatoire (juste pour éviter de désactiver le module par erreur. Si votre pays est dans cette liste, la désactivation du module n'est pas possible sans la modification préalable de cette liste. Notez également que l'activation/désactivation de ce module garder une trace dans le journal des logs inaltérables). -OnlyNonValid=Non-valid -TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. -RestrictYearToExport=Restrict month / year to export +OnlyNonValid=Non valide +TooManyRecordToScanRestrictFilters=Trop d'enregistrements à analyser / analyser. Veuillez restreindre la liste avec des filtres plus restrictifs. +RestrictYearToExport=Restreindre mois / année pour exporter diff --git a/htdocs/langs/fr_FR/boxes.lang b/htdocs/langs/fr_FR/boxes.lang index 866a75110e0..08aeba24632 100644 --- a/htdocs/langs/fr_FR/boxes.lang +++ b/htdocs/langs/fr_FR/boxes.lang @@ -26,13 +26,13 @@ BoxTitleLastSuppliers=les %s derniers fournisseurs enregistrés BoxTitleLastModifiedSuppliers=Les %s derniers fournisseurs modifiés BoxTitleLastModifiedCustomers=Les %s derniers clients modifiés BoxTitleLastCustomersOrProspects=Les %s derniers clients ou prospects -BoxTitleLastCustomerBills=Les%s dernières factures clients +BoxTitleLastCustomerBills=Les %s dernières factures client BoxTitleLastSupplierBills=Les %s dernières factures fournisseurs BoxTitleLastModifiedProspects=Les %s derniers prospects modifiés BoxTitleLastModifiedMembers=Les %s derniers adhérents modifiés BoxTitleLastFicheInter=Les %s dernières interventions modifiées -BoxTitleOldestUnpaidCustomerBills=Les %s plus anciennes factures clients impayées -BoxTitleOldestUnpaidSupplierBills=Les %s plus anciennes factures fournisseurs impayées +BoxTitleOldestUnpaidCustomerBills=Les %s plus anciennes factures client impayées +BoxTitleOldestUnpaidSupplierBills=Les %s plus anciennes factures fournisseur impayées BoxTitleCurrentAccounts=Balances des comptes ouverts BoxTitleLastModifiedContacts=Les %s derniers contacts/adresses modifiés BoxMyLastBookmarks=Mes %s derniers marque-pages diff --git a/htdocs/langs/fr_FR/cashdesk.lang b/htdocs/langs/fr_FR/cashdesk.lang index e152f2c4318..af1a1b7c91b 100644 --- a/htdocs/langs/fr_FR/cashdesk.lang +++ b/htdocs/langs/fr_FR/cashdesk.lang @@ -30,14 +30,14 @@ ShowCompany=Voir société ShowStock=Voir entrepôt DeleteArticle=Cliquez pour enlever cet article FilterRefOrLabelOrBC=Recherche (Ref/Lib.) -UserNeedPermissionToEditStockToUsePos=Vous avez demandé de réduire le stock sur création de facture, aussi l'utilisateur qui utilise le Point De Vente doit avoir la permission d'éditer le stock. +UserNeedPermissionToEditStockToUsePos=Vous demandez de réduire le stock lors de la création de la facture. L'utilisateur qui utilise le Point De Vente doit donc avoir l'autorisation de modifier le stock. DolibarrReceiptPrinter=Imprimante reçu -PointOfSale=Point de Vente -CloseBill=Fermer Bill -Floors=Étages -Floor=Étage +PointOfSale=Caisse enregistreuses +CloseBill=Fermer la facture +Floors=Etages +Floor=Etage AddTable=Ajouter une table -Place=Endroit -TakeboxNecesary='TakeBOX' Application requise +Place=Marché +TakeboxNecesary=Application 'TakeBOX' requise OrderPrinters=Commande imprimantes -SearchProduct=Recherche produit +SearchProduct=Rechercher un produit diff --git a/htdocs/langs/fr_FR/categories.lang b/htdocs/langs/fr_FR/categories.lang index adecb7604c8..b65024a5217 100644 --- a/htdocs/langs/fr_FR/categories.lang +++ b/htdocs/langs/fr_FR/categories.lang @@ -16,6 +16,7 @@ MembersCategoriesArea=Espace tags/catégories adhérents ContactsCategoriesArea=Espace tags/catégories de contacts AccountsCategoriesArea=Espace des tags/categories ProjectsCategoriesArea=Zone des tags/catégories des projets +UsersCategoriesArea=Espace tags/catégories des utlisateurs SubCats=Sous-catégories CatList=Liste des tags/catégories NewCategory=Nouveau tag/catégorie @@ -47,19 +48,20 @@ ContentsNotVisibleByAllShort=Contenu non visible par tous DeleteCategory=Effacer le(a) libellé/catégorie ConfirmDeleteCategory=Êtes-vous sûr de vouloir supprimer ce tag/catégorie ? NoCategoriesDefined=Aucun(e) tag/catégorie défini(e) -SuppliersCategoryShort=Tags/catégories de fournisseurs -CustomersCategoryShort=Tags/catégories de clients -ProductsCategoryShort=Tags/catégories de produits -MembersCategoryShort=Tags/catégories adhérents +SuppliersCategoryShort=Tag/catégorie de fournisseurs +CustomersCategoryShort=Tag/catégorie de clients +ProductsCategoryShort=Tag/catégorie de produits +MembersCategoryShort=Tag/catégorie adhérents SuppliersCategoriesShort=Tags fournisseurs -CustomersCategoriesShort=Tags/catégories de clients -ProspectsCategoriesShort=Tags/Catégories de prospects +CustomersCategoriesShort=Tags clients +ProspectsCategoriesShort=Tags prospects CustomersProspectsCategoriesShort=Tags clients/prosp. -ProductsCategoriesShort=Tags/catégories de produits -MembersCategoriesShort=Tags/catégories de membres +ProductsCategoriesShort=Tags de produits +MembersCategoriesShort=Tags des adhérents ContactCategoriesShort=Tags de contacts -AccountsCategoriesShort=Tag/catégorie des comptes -ProjectsCategoriesShort=Tags/catégories de projets +AccountsCategoriesShort=Tags des comptes +ProjectsCategoriesShort=Tags de projets +UsersCategoriesShort=Tags utlisateurs ThisCategoryHasNoProduct=Ce tag/catégorie ne contient aucun produit. ThisCategoryHasNoSupplier=Ce tag/catégorie ne contient aucun fournisseur. ThisCategoryHasNoCustomer=Ce tag/catégorie ne contient aucun client. diff --git a/htdocs/langs/fr_FR/commercial.lang b/htdocs/langs/fr_FR/commercial.lang index 77b4a095834..8619101a5f4 100644 --- a/htdocs/langs/fr_FR/commercial.lang +++ b/htdocs/langs/fr_FR/commercial.lang @@ -52,6 +52,7 @@ ActionAC_TEL=Appel téléphonique ActionAC_FAX=Envoi fax ActionAC_PROP=Envoi proposition par email ActionAC_EMAIL=Envoi email +ActionAC_EMAIL_IN=Réception d'email ActionAC_RDV=Rendez-vous ActionAC_INT=Intervention sur site ActionAC_FAC=Envoi facture client par email @@ -75,5 +76,5 @@ ToOfferALinkForOnlineSignature=Lien pour signature en ligne WelcomeOnOnlineSignaturePage=Bienvenue sur la page pour accepter les propositions commerciales de%s ThisScreenAllowsYouToSignDocFrom=Cet écran vous permet d'accepter et signer ou de refuser le devis ou la proposition commerciale ThisIsInformationOnDocumentToSign=Ceci est une information sur le document à accepter ou à refuser -SignatureProposalRef=Signer le devis ou la proposition commerciale %s +SignatureProposalRef=Signature du devis ou proposition commerciale %s FeatureOnlineSignDisabled=Fonctionnalité pour la signature en ligne désactivée ou document généré avant l'activation de la fonctionnalité diff --git a/htdocs/langs/fr_FR/companies.lang b/htdocs/langs/fr_FR/companies.lang index 1016091557d..f062be18a66 100644 --- a/htdocs/langs/fr_FR/companies.lang +++ b/htdocs/langs/fr_FR/companies.lang @@ -38,9 +38,9 @@ ThirdPartyCustomers=Clients ThirdPartyCustomersStats=Clients ThirdPartyCustomersWithIdProf12=Clients avec %s ou %s ThirdPartySuppliers=Fournisseurs -ThirdPartyType=Type of company +ThirdPartyType=Type du tiers Individual=Individu privé -ToCreateContactWithSameName=Will create a Third Party and a linked Contact/Address with same information as the Third Party. In most cases, even if your Third Party is a physical person, creating a Third Party alone is enough. +ToCreateContactWithSameName=Crée automatiquement un contact/adresse, sous le tiers, avec la même information que le tiers. Dans la plupart des cas, même si votre tiers est une personne physique, la création d'un tiers seul suffit. ParentCompany=Maison mère Subsidiaries=Filiales ReportByMonth=Rapport par mois @@ -76,8 +76,8 @@ Town=Ville Web=Web Poste= Poste DefaultLang=Langue par défaut -VATIsUsed=Sales tax used -VATIsUsedWhenSelling=This defines if this third party includes a sale tax or not when it makes an invoice to its own customers +VATIsUsed=Assujetti à la TVA +VATIsUsedWhenSelling=Cela définit si ce tiers inclut une taxe de vente ou non lorsqu'il facture une facture à ses propres clients. VATIsNotUsed=Non assujetti à la TVA CopyAddressFromSoc=Remplir avec l'adresse du tiers ThirdpartyNotCustomerNotSupplierSoNoRef=Tiers ni client ni fournisseur, pas d'objets référents disponibles @@ -258,7 +258,7 @@ ProfId1DZ=RC ProfId2DZ=Article ProfId3DZ=Numéro d'identification du fournisseur ProfId4DZ=Numéro d'identification du client -VATIntra=Sales Tax/VAT ID +VATIntra=Numéro de TVA VATIntraShort=Num. TVA VATIntraSyntaxIsValid=Syntaxe valide VATReturn=Fréquence TVA @@ -274,8 +274,8 @@ CompanyHasRelativeDiscount=Ce client a une remise par défaut de %s%% CompanyHasNoRelativeDiscount=Ce client n'a pas de remise relative par défaut HasRelativeDiscountFromSupplier=Vous avez une réduction par défaut de %s%% chez ce fournisseur HasNoRelativeDiscountFromSupplier=Vous n'avez pas de remise relative par défaut chez ce fournisseur -CompanyHasAbsoluteDiscount=This customer has discounts available (credits notes or down payments) for %s %s -CompanyHasDownPaymentOrCommercialDiscount=This customer has discounts available (commercial, down payments) for %s %s +CompanyHasAbsoluteDiscount=Ce client dispose de crédits disponibles (avoirs ou acomptes) pour un montant de %s %s +CompanyHasDownPaymentOrCommercialDiscount=Ce client a une réduction disponible (commercial, acompte) pour %s%s CompanyHasCreditNote=Ce client a %s %s d'avoirs disponibles HasNoAbsoluteDiscountFromSupplier=Vous n'avez aucun crédit de réduction disponible auprès de ce fournisseur HasAbsoluteDiscountFromSupplier=Vous avez des crédits disponibles (avoirs ou acomptes) pour %s %s chez ce fournisseur @@ -307,18 +307,18 @@ CustomerCode=Code client SupplierCode=Code fournisseur CustomerCodeShort=Code client SupplierCodeShort=Code fournisseur -CustomerCodeDesc=Customer Code, unique for all customers -SupplierCodeDesc=Vendor Code, unique for all vendors +CustomerCodeDesc=Code client unique pour chaque client +SupplierCodeDesc=Code fournisseur unique pour chaque fournisseur RequiredIfCustomer=Requis si le tiers est un client ou un prospect RequiredIfSupplier=Requis si un tiers est un fournisseur -ValidityControledByModule=Validity controlled by module -ThisIsModuleRules=Rules for this module +ValidityControledByModule=Validité contrôlée par le module +ThisIsModuleRules=Voici les règles de ce module ProspectToContact=Prospect à contacter CompanyDeleted=La société "%s" a été supprimée de la base. ListOfContacts=Liste des contacts ListOfContactsAddresses=Liste des contacts/adresses ListOfThirdParties=Liste des tiers -ShowCompany=Show Third Party +ShowCompany=Affichier tiers ShowContact=Afficher contact ContactsAllShort=Tous (pas de filtre) ContactType=Type de contact @@ -333,20 +333,20 @@ NoContactForAnyProposal=Ce contact n'est contact d'aucune proposition commercial NoContactForAnyContract=Ce contact n'est contact d'aucun contrat NoContactForAnyInvoice=Ce contact n'est contact d'aucune facture NewContact=Nouveau contact -NewContactAddress=New Contact/Address +NewContactAddress=Nouveau Contact/Adresse MyContacts=Mes contacts Capital=Capital CapitalOf=Capital de %s EditCompany=Modification société -ThisUserIsNot=This user is not a prospect, customer or vendor +ThisUserIsNot=Cet utilisateur n'est ni un prospect, ni un client, ni un fournisseur VATIntraCheck=Vérifier -VATIntraCheckDesc=The link %s uses the European VAT checker service (VIES). An external internet access from server is required for this service to work. +VATIntraCheckDesc=Le lien %s permet d'interroger le service européen de contrôle des numéro de TVA intracommunautaire. Un accès à Internet depuis le serveur est requis pour que ce service fonctionne. VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do VATIntraCheckableOnEUSite=Vérifier la TVA intra-communautaire sur le site de la Commission Européenne VATIntraManualCheck=Vous pouvez aussi vérifier manuellement via le site de la commission européenne %s ErrorVATCheckMS_UNAVAILABLE=Vérification impossible. Le service de vérification n'est pas fourni par ce pays membre (%s). -NorProspectNorCustomer=Not prospect, or customer -JuridicalStatus=Legal Entity Type +NorProspectNorCustomer=Ni client, ni prospect +JuridicalStatus=Type d'entité légale Staff=Effectif ProspectLevelShort=Potentiel ProspectLevel=Potentiel du prospect @@ -387,11 +387,11 @@ ExportCardToFormat=Exporter fiche au format ContactNotLinkedToCompany=Contact non lié à un tiers DolibarrLogin=Identifiant utilisateur NoDolibarrAccess=Pas d'accès utilisateur -ExportDataset_company_1=Third Parties (companies/foundations/physical people) and their properties -ExportDataset_company_2=Contacts and their properties -ImportDataset_company_1=Third Parties (companies/foundations/physical people) and their properties -ImportDataset_company_2=Contacts/Addresses and attributes -ImportDataset_company_3=Bank accounts of Third Parties +ExportDataset_company_1=Tiers (sociétés/institutions/particuliers) et attributs +ExportDataset_company_2=Contacts (de tiers) et attributs +ImportDataset_company_1=Tiers (sociétés/institutions/particuliers) et attributs +ImportDataset_company_2=Contacts/Adresses (de tiers ou libre) et attributs +ImportDataset_company_3=Coordonnées bancaires des tiers ImportDataset_company_4=Tiers - Commerciaux (Affectation des Commerciaux aux Tiers) PriceLevel=Niveau de prix DeliveryAddress=Adresse de livraison @@ -402,16 +402,16 @@ DeleteFile=Suppression d'un fichier ConfirmDeleteFile=Êtes-vous sûr de vouloir supprimer ce fichier ? AllocateCommercial=Affecter un commercial Organization=Organisme -FiscalYearInformation=Fiscal Year +FiscalYearInformation=Exercice fiscal FiscalMonthStart=Mois de début d'exercice YouMustAssignUserMailFirst=Vous devez définir un email pour cet utilisateur avant de pouvoir ajouter une notification par courrier électronique. YouMustCreateContactFirst=Pour pouvoir ajouter une notifications par mail,vous devez déjà définir des contacts valides pour le tiers ListSuppliersShort=Liste des fournisseurs ListProspectsShort=Liste des prospects ListCustomersShort=Liste des clients -ThirdPartiesArea=Third Parties/Contacts -LastModifiedThirdParties=Last %s modified Third Parties -UniqueThirdParties=Total of Third Parties +ThirdPartiesArea=Tiers / Contacts +LastModifiedThirdParties=Les %s derniers tiers modifiés +UniqueThirdParties=Total de tiers uniques InActivity=Ouvert ActivityCeased=Clos ThirdPartyIsClosed=Le tiers est clôturé @@ -420,7 +420,7 @@ CurrentOutstandingBill=Montant encours OutstandingBill=Montant encours autorisé OutstandingBillReached=Montant encours autorisé dépassé OrderMinAmount=Montant minimum pour la commande -MonkeyNumRefModelDesc=Return a number with the format %syymm-nnnn for the customer code and %syymm-nnnn for the vendor code where yy is year, mm is month and nnnn is a sequence with no break and no return to 0. +MonkeyNumRefModelDesc=Renvoie le numéro sous la forme %syymm-nnnn pour les codes clients et %syymm-nnnn pour les codes fournisseurs où yy est l'année, mm le mois et nnnn un compteur séquentiel sans rupture et sans remise à 0. LeopardNumRefModelDesc=Code libre sans vérification. Peut être modifié à tout moment. ManagingDirectors=Nom du(des) gestionnaire(s) (PDG, directeur, président...) MergeOriginThirdparty=Tiers en doublon (le tiers que vous voulez supprimer) diff --git a/htdocs/langs/fr_FR/compta.lang b/htdocs/langs/fr_FR/compta.lang index 297db2e5c13..e7f50ef2a2a 100644 --- a/htdocs/langs/fr_FR/compta.lang +++ b/htdocs/langs/fr_FR/compta.lang @@ -142,7 +142,7 @@ CalcModeVATDebt=Mode %sTVA sur débit%s. CalcModeVATEngagement=Mode %sTVA sur encaissement%s. CalcModeDebt=Analyse des factures enregistrées connues même si elles ne sont pas encore comptabilisées dans le Grand Livre. CalcModeEngagement=Analyse des paiements enregistrés connus, même s'ils ne sont pas encore comptabilisés dans le Grand Livre. -CalcModeBookkeeping=Analyse des données journalisées dans le grand livre +CalcModeBookkeeping=Analyse des données journalisées dans le tableau Grand livre. CalcModeLT1= Mode %sRE sur factures clients - factures fournisseurs%s CalcModeLT1Debt=Mode %sRE sur factures clients%s CalcModeLT1Rec= Mode %sRE sur factures fournisseurs%s @@ -229,11 +229,11 @@ ACCOUNTING_VAT_SOLD_ACCOUNT=Compte comptable par défaut pour la TVA - TVA sur l ACCOUNTING_VAT_BUY_ACCOUNT=Compte comptable par défaut pour la TVA - TVA sur les achats (utilisé si non défini au niveau de la configuration du dictionnaire de TVA) ACCOUNTING_VAT_PAY_ACCOUNT=Compte comptable par défaut pour le paiement de la TVA ACCOUNTING_ACCOUNT_CUSTOMER=Compte comptable utilisé pour le tiers client -ACCOUNTING_ACCOUNT_CUSTOMER_Desc=Le compte comptable dédié défini sur la fiche tiers sera utilisé pour l'affectation du compte auxiliaire uniquement. Celui-ci sera utilisé pour la comptabilité générale et comme valeur par défaut de la comptabilité auxiliaire si le compte comptable client dédié du ties n'est pas défini. +ACCOUNTING_ACCOUNT_CUSTOMER_Desc=Le compte de comptabilité dédié défini sur la carte tierce sera utilisé pour la comptabilité Subledger uniquement. Celui-ci sera utilisé pour le grand livre et comme valeur par défaut de la comptabilité Subledger si le compte de comptabilité client dédié sur une tierce partie n'est pas défini. ACCOUNTING_ACCOUNT_SUPPLIER=Compte comptable utilisé pour les tiers fournisseur -ACCOUNTING_ACCOUNT_SUPPLIER_Desc=Le compte comptable dédié défini sur la carte tierce sera utilisé pour l'affectation du compte secondaire uniquement. Celui-ci sera utilisé pour le grand livre général et comme valeur par défaut de la comptabilité du sous-compte rendu si le compte d'affectation spécialisé du fournisseur sur un tiers n'est pas défini. +ACCOUNTING_ACCOUNT_SUPPLIER_Desc=Le compte de comptabilité dédié défini sur la carte tierce sera utilisé pour la comptabilité Subledger uniquement. Celui-ci sera utilisé pour le grand livre et comme valeur par défaut de la comptabilité Subledger si le compte de comptabilité fournisseur dédié sur une tierce partie n'est pas défini. CloneTax=Cloner une charge sociale/fiscale -ConfirmCloneTax=Confirmez le clone du paiement de charge sociale/fiscale +ConfirmCloneTax=Confirmer le clone d'un impôt social / fiscal CloneTaxForNextMonth=Cloner pour le mois suivant SimpleReport=Rapport simple AddExtraReport=Rapports complémentaires (Ajouter le rapport client local et international) @@ -248,7 +248,7 @@ ErrorBankAccountNotFound=Erreur: compte banque non trouvé FiscalPeriod=Période fiscale ListSocialContributionAssociatedProject=Liste des charges sociales liées au projet DeleteFromCat=Supprimer du groupe comptable -AccountingAffectation=Compte affecté +AccountingAffectation=Affectation comptable LastDayTaxIsRelatedTo=Dernier jour de la période pour laquelle la taxe est due VATDue=TVA réclamée ClaimedForThisPeriod=Réclamé pour la période diff --git a/htdocs/langs/fr_FR/contracts.lang b/htdocs/langs/fr_FR/contracts.lang index a75d83c1dbd..c984f6cd951 100644 --- a/htdocs/langs/fr_FR/contracts.lang +++ b/htdocs/langs/fr_FR/contracts.lang @@ -67,7 +67,7 @@ CloseService=Fermer service BoardRunningServices=Services actifs et expirés en contrat ServiceStatus=Statut du service DraftContracts=Contrats brouillons -CloseRefusedBecauseOneServiceActive=Fermeture du contrat impossible car il y a au moins un service actif +CloseRefusedBecauseOneServiceActive=Le contrat ne peut pas être fermé car il y a au moins un service ouvert dessus ActivateAllContracts=Activer tous les services CloseAllContracts=Clôturer tous les services DeleteContractLine=Supprimer ligne de contrat @@ -89,6 +89,7 @@ CloneContract=Cloner le contrat ConfirmCloneContract=Etes vous sûr de vouloir cloner le contrat %s ? LowerDateEndPlannedShort=Date de fin de service la plus basse parmi les services actifs SendContractRef=Informations contrat __REF__ +OtherContracts=Autres contrats ##### Types de contacts ##### TypeContact_contrat_internal_SALESREPSIGN=Commercial signataire du contrat TypeContact_contrat_internal_SALESREPFOLL=Commercial suivi du contrat diff --git a/htdocs/langs/fr_FR/cron.lang b/htdocs/langs/fr_FR/cron.lang index 3a78b48e2b6..93d37547396 100644 --- a/htdocs/langs/fr_FR/cron.lang +++ b/htdocs/langs/fr_FR/cron.lang @@ -12,7 +12,7 @@ OrToLaunchASpecificJob=Ou pour vérifier et lancer un travail programmé spécif KeyForCronAccess=Clé de sécurité pour l'URL de lancement des travaux programmés FileToLaunchCronJobs=Ligne de commande pour vérifier et lancer les travaux programmés qualifiés CronExplainHowToRunUnix=Sur un environnement Unix vous pouvez utiliser l'entrée suivante en crontab pour exécuter la ligne de commande toutes les 5 minutes -CronExplainHowToRunWin=On Microsoft(tm) Windows environment you can use Scheduled Task tools to run the command line each 5 minutes +CronExplainHowToRunWin=Sous Microsoft (tm) Windows, vous pouvez utiliser les outils Tâches programmées pour exécuter la ligne de commande toutes les 5 minutes. CronMethodDoesNotExists=La classe %s ne contient aucune méthode %s CronJobDefDesc=Les travaux planifiés sont définis dans le fichier descripteur de module. Lorsque le module est activé, ils sont chargés et disponibles afin que vous puissiez administrer les travaux à partir du menu des outils d'administration %s. CronJobProfiles=Liste des profils de travaux planifiés prédéfinis @@ -42,7 +42,7 @@ CronModule=Module CronNoJobs=Aucun travail enregistré CronPriority=Priorité CronLabel=Libellé -CronNbRun=No. launches +CronNbRun=Nb. lancements CronMaxRun=Nb max de lancement CronEach=Tous les JobFinished=Travail lancé et terminé @@ -61,11 +61,11 @@ CronStatusInactiveBtn=Désactiver CronTaskInactive=Cette tâche est désactivée CronId=Id CronClassFile=Nom de fichier intégrant la classe -CronModuleHelp=Name of Dolibarr module directory (also work with external Dolibarr module).
For example to call the fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value for module is
product -CronClassFileHelp=The relative path and file name to load (path is relative to web server root directory).
For example to call the fetch method of Dolibarr Product object htdocs/product/class/product.class.php, the value for class file name is
product/class/product.class.php -CronObjectHelp=The object name to load.
For example to call the fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value for class file name is
Product -CronMethodHelp=The object method to launch.
For example to call the fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value for method is
fetch -CronArgsHelp=The method arguments.
For example to call the fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value for paramters can be
0, ProductRef +CronModuleHelp=Nom du répertoire du module Dolibarr (fonctionne également avec le module externe Dolibarr).
Par exemple, pour appeler la méthode fetch de l'objet produit Dolibarr /htdocs/product/class/product.class.php, la valeur du module est
produit +CronClassFileHelp=Le chemin relatif et le nom du fichier à charger (le chemin d'accès est relatif au répertoire racine du serveur Web).
Par exemple, pour appeler la méthode fetch de l'objet Product htdocs/product/class/ product.class.php, la valeur du nom de fichier de classe est
product/class/product.class.php +CronObjectHelp=Le nom de l'objet à charger.
Par exemple pour appeler la méthode de récupération de l'objet Produut Dolibarr /htdocs/product/class/product.class.php, la valeur du nom de fichier de classe est
Product +CronMethodHelp=La méthode objet à lancer.
Par exemple, pour appeler la méthode fetch de l'objet Dolibarr Product /htdocs/product/class/product.class.php, la valeur pour la méthode est
fetch +CronArgsHelp=Les arguments de la méthode.
Par exemple pour appeler la méthode fetch de l'objet Product de Dolibarr /htdocs/product/class/product.class.php, la valeur des arguments pourrait être
0, RefProduit CronCommandHelp=La commande système a exécuter. CronCreateJob=Créer un nouveau travail planifié CronFrom=A partir du diff --git a/htdocs/langs/fr_FR/dict.lang b/htdocs/langs/fr_FR/dict.lang index eba530a3970..076c5e5e005 100644 --- a/htdocs/langs/fr_FR/dict.lang +++ b/htdocs/langs/fr_FR/dict.lang @@ -223,7 +223,7 @@ CountryTO=Tonga CountryTT=Trinité-et-Tobago CountryTR=Turquie CountryTM=Turkménistan -CountryTC=Iles Turks-et-Caicos +CountryTC=Iles Turques-et-Caïques CountryTV=Tuvalu CountryUG=Ouganda CountryUA=Ukraine @@ -295,7 +295,7 @@ CurrencyCentINR=paisa CurrencyCentSingINR=paise CurrencyThousandthSingTND=millime #### Input reasons ##### -DemandReasonTypeSRC_INTE=Internet +DemandReasonTypeSRC_INTE=Internet DemandReasonTypeSRC_CAMP_MAIL=Campagne Publipostage DemandReasonTypeSRC_CAMP_EMAIL=Campagne d'emailing DemandReasonTypeSRC_CAMP_PHO=Campagne Téléphonique diff --git a/htdocs/langs/fr_FR/ecm.lang b/htdocs/langs/fr_FR/ecm.lang index 0f92ea1917a..dccaf7181dd 100644 --- a/htdocs/langs/fr_FR/ecm.lang +++ b/htdocs/langs/fr_FR/ecm.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - ecm -ECMNbOfDocs=Nombre de documents du répertoire +ECMNbOfDocs=Nb. de documents du répertoire ECMSection=Répertoire ECMSectionManual=Répertoire manuel ECMSectionAuto=Répertoire automatique diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang index 2e695768355..1a4ea8399ea 100644 --- a/htdocs/langs/fr_FR/errors.lang +++ b/htdocs/langs/fr_FR/errors.lang @@ -42,7 +42,7 @@ ErrorBadDateFormat=La valeur '%s' a un format de date non reconnu ErrorWrongDate=La date est incorrecte ErrorFailedToWriteInDir=Impossible d'écrire dans le répertoire %s ErrorFoundBadEmailInFile=Syntaxe d'email incorrecte trouvée pour %s lignes dans le fichier (exemple ligne %s avec email=%s) -ErrorUserCannotBeDelete=User cannot be deleted. Maybe it is associated to Dolibarr entities. +ErrorUserCannotBeDelete=L'utilisateur ne peut pas être supprimé. Peut-être est-il associé à des entités Dolibarr. ErrorFieldsRequired=Des champs obligatoires n'ont pas été renseignés ErrorSubjectIsRequired=Le sujet du mail est obligatoire ErrorFailedToCreateDir=Echec à la création d'un répertoire. Vérifiez que le user du serveur Web ait bien les droits d'écriture dans les répertoires documents de Dolibarr. Si le paramètre safe_mode a été activé sur ce PHP, vérifiez que les fichiers php dolibarr appartiennent à l'utilisateur du serveur Web. @@ -65,22 +65,22 @@ ErrorNoValueForSelectType=Les valeurs de la liste de sélection doivent être re ErrorNoValueForCheckBoxType=Les valeurs de la liste de case à cochées doivent être renseignées ErrorNoValueForRadioType=Les valeurs de la liste d'options doivent être renseignées ErrorBadFormatValueList=Les valeurs de la liste ne peuvent pas avoir plus d'une virgule: %s mais il en faut au moins une: clé, valeur -ErrorFieldCanNotContainSpecialCharacters=The field %s must not contains special characters. -ErrorFieldCanNotContainSpecialNorUpperCharacters=The field %s must not contain special characters, nor upper case characters and cannot contain only numbers. -ErrorFieldMustHaveXChar=The field %s must have at least %s characters. +ErrorFieldCanNotContainSpecialCharacters=Le champ %s ne peut contenir de caractères spéciaux. +ErrorFieldCanNotContainSpecialNorUpperCharacters=Le champ %s ne doit contenir ni caractères spéciaux ni majuscules et ne peut contenir que des chiffres. +ErrorFieldMustHaveXChar=Le champ %s doit comporter au moins %s caractères. ErrorNoAccountancyModuleLoaded=Aucun module de comptabilité activé ErrorExportDuplicateProfil=Ce nom de profil existe déjà pour ce lot d'export. ErrorLDAPSetupNotComplete=Le matching Dolibarr-LDAP est incomplet. ErrorLDAPMakeManualTest=Un fichier .ldif a été généré dans le répertoire %s. Essayez de charger ce fichier manuellement depuis la ligne de commande pour plus de détail sur l'erreur. -ErrorCantSaveADoneUserWithZeroPercentage=Can't save an action with "status not started" if field "done by" is also filled. +ErrorCantSaveADoneUserWithZeroPercentage=Impossible de sauver une action à l'état "non commencé" si le champ "réalisé par" est aussi défini. ErrorRefAlreadyExists=La référence utilisée pour la création existe déjà ErrorPleaseTypeBankTransactionReportName=Choisissez le nom du relevé bancaire sur lequel la ligne est rapportées (Format AAAAMM ou AAAAMMJJ) -ErrorRecordHasChildren=Failed to delete record since it has some child records. +ErrorRecordHasChildren=Impossible de supprimer l'enregistrement car il possède des enregistrements fils. ErrorRecordHasAtLeastOneChildOfType=L'objet a au moins un enfant de type %s -ErrorRecordIsUsedCantDelete=Can't delete record. It is already used or included into another object. +ErrorRecordIsUsedCantDelete=Impossible de supprimer l'enregistrement. Il est déjà utilisé ou inclus dans un autre objet. ErrorModuleRequireJavascript=Le javascript ne doit pas être désactivé pour que cette fonctionnalité soit utilisable. Pour activer/désactiver l'utilisation de javascript, allez dans le menu Accueil->Configuration->Affichage. ErrorPasswordsMustMatch=Les 2 mots de passe saisis doivent correspondre -ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s and provide the error code %s in your message, or add a screen copy of this page. +ErrorContactEMail=Une erreur technique est apparue. Merci de contacter l'administrateur à l'email suivant %s en lui indiquant le code erreur %s dans votre message ou mieux en fournissant une copie d'écran de cette page. ErrorWrongValueForField=Mauvaise valeur pour le champ numéro %s (la valeur '%s' ne respecte pas la règle %s) ErrorFieldValueNotIn=Mauvaise valeur pour le champ numéro %s (la valeur '%s' n'est pas une valeur disponible dans le champ %s de la table %s) ErrorFieldRefNotIn=Mauvaise valeur pour le champ numéro %s (la valeur '%s' n'est pas une référence existante comme %s) @@ -97,7 +97,7 @@ ErrorBadMaskBadRazMonth=Erreur, mauvais valeur de remise à zéro ErrorMaxNumberReachForThisMask=Nombre maximum atteint pour ce masque ErrorCounterMustHaveMoreThan3Digits=Le compteur doit avoir au moins 3 positions ErrorSelectAtLeastOne=Erreur. Sélectionnez au moins une entrée. -ErrorDeleteNotPossibleLineIsConsolidated=Delete not possible because record is linked to a bank transaction that is conciliated +ErrorDeleteNotPossibleLineIsConsolidated=Suppression impossible car l'enregistrement porte sur au moins une transaction bancaire rapprochée ErrorProdIdAlreadyExist=%s est attribué à un autre tiers ErrorFailedToSendPassword=Échec de l'envoi du mot de passe ErrorFailedToLoadRSSFile=Echec de la récupération du flux RSS. Ajoutez la constante MAIN_SIMPLEXMLLOAD_DEBUG si le message d'erreur n'est pas assez explicite. @@ -117,7 +117,7 @@ ErrorLoginDoesNotExists=Le compte utilisateur identifié par %s n'a pu ê ErrorLoginHasNoEmail=Cet utilisateur n'a pas d'email. Impossible de continuer. ErrorBadValueForCode=Mauvaise valeur saisie pour le code. Réessayez avec une nouvelle valeur... ErrorBothFieldCantBeNegative=Les champs %s et %s ne peuvent être tous deux négatifs -ErrorFieldCantBeNegativeOnInvoice=Field %s can't be negative on such type of invoice. If you want to add a discount line, just create the discount first with link %s on screen and apply it to invoice. You can also ask your admin to set option FACTURE_ENABLE_NEGATIVE_LINES to 1 to restore old behaviour. +ErrorFieldCantBeNegativeOnInvoice=Le champ %s ne peut pas être négatif pour ce type de facture. Si vous souhaitez ajouter une ligne de remise, créez tout d'abord la remise avec le lien %s à l'écran et appliquez-la à la facturation. Vous pouvez également demander à votre administrateur de définir l'option FACTURE_ENABLE_NEGATIVE_LINES sur 1 pour restaurer l'ancien comportement. ErrorQtyForCustomerInvoiceCantBeNegative=La quantité d'une ligne ne peut pas être négative dans les factures clients ErrorWebServerUserHasNotPermission=Le compte d'exécution du serveur web %s n'a pas les permissions pour cela ErrorNoActivatedBarcode=Aucun type de code-barres activé @@ -141,7 +141,7 @@ ErrorBadFormat=Mauvais format ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Erreur, cet adhérent n'ait pas encore lié à un tiers. Lier le tier à un tiers existant ou créer un nouveau tiers avant de créer une adhésion avec facture. ErrorThereIsSomeDeliveries=Erreur, il y a des bordereaux de réception liées à ces expéditions. La suppression est refusée. ErrorCantDeletePaymentReconciliated=Impossible d'effacer un paiement qui a généré une écriture sur le compte bancaire et qui a été rapprochée. -ErrorCantDeletePaymentSharedWithPayedInvoice=Can't delete a payment shared by at least one invoice with status Paid +ErrorCantDeletePaymentSharedWithPayedInvoice=Impossible de supprimer un paiement partagé par au moins une facture avec le statut Payé ErrorPriceExpression1=Ne peut assigner la constante '%s' ErrorPriceExpression2=Ne peut redéfinir la fonction '%s' ErrorPriceExpression3=Variable '%s' non définie dans la définition de fonction @@ -150,7 +150,7 @@ ErrorPriceExpression5=Unexpected '%s' ErrorPriceExpression6=Nombre incorrect d'arguments (%s donné,%s attendu) ErrorPriceExpression8=Operateur '%s' non attendu ErrorPriceExpression9=Une erreur inattendue s'est produite -ErrorPriceExpression10=Operator '%s' lacks operand +ErrorPriceExpression10=L'opérateur '%s' manque d'opérande ErrorPriceExpression11=Attendu '%s' ErrorPriceExpression14=Division par zéro ErrorPriceExpression17=Variable '%s' non définie @@ -211,8 +211,8 @@ ErrorFileNotFoundWithSharedLink=Fichier non trouvé. Peut que la clé de partage ErrorProductBarCodeAlreadyExists=Le code-barre du produit %s existe déjà sur une autre référence de produit ErrorNoteAlsoThatSubProductCantBeFollowedByLot=Notez également que l'utilisation d'un produit virtuel pour augmenter ou réduire automatiquement les sous-produits n'est pas possible lorsqu'au moins un sous-produit (ou sous-produit de sous-produits) a besoin d'un numéro de série/lot. ErrorDescRequiredForFreeProductLines=La description est obligatoire pour les lignes avec un produit non prédéfini -ErrorAPageWithThisNameOrAliasAlreadyExists=The page/container %s has the same name or alternative alias that the one your try to use - +ErrorAPageWithThisNameOrAliasAlreadyExists=La page / conteneur %s a le même nom ou un autre alias que celui que vous tentez d'utiliser. +ErrorDuringChartLoad=Erreur lors du chargement du tableau de compte. Si certains comptes n'ont pas été chargés, vous pouvez toujours les entrer manuellement. # Warnings WarningPasswordSetWithNoAccount=Un mot de passe a été fixé pour cet adhérent. Cependant, aucun compte d'utilisateur n'a été créé. Donc, ce mot de passe est stocké, mais ne peut être utilisé pour accéder à Dolibarr. Il peut être utilisé par un module/interface externe, mais si vous n'avez pas besoin de définir ni login ni mot de passe pour un adhérent, vous pouvez désactiver l'option «Gérer un login pour chaque adhérent" depuis la configuration du module Adhérents. Si vous avez besoin de gérer un login, mais pas de mot de passe, vous pouvez laisser ce champ vide pour éviter cet avertissement. Remarque: L'email peut également être utilisé comme login si l'adhérent est lié à un utilisateur. WarningMandatorySetupNotComplete=Les informations de configuration obligatoire doivent être renseignées @@ -221,9 +221,9 @@ WarningBookmarkAlreadyExists=Un marque-page avec ce titre ou cette destination ( WarningPassIsEmpty=Attention, le mot de passe de la base de données Dolibarr est vide. Cela représente une faille de sécurité. Il est recommandé d'ajouter manuellement un mot de passe à la base et de modifier le fichier conf.php pour refléter ce changement. WarningConfFileMustBeReadOnly=Attention, votre fichier de configuration (htdocs/conf/conf.php) est accessible en écriture au serveur Web. Ceci représente une faille sérieuse de sécurité. Modifiez les permissions pour qu'il soit en lecture seule pour le compte sous lequel tourne le serveur Web et non lisible pour les autres.
Si vous êtes sous Windows sur un disque dur utilisant un formatage FAT, sachez que ce système de fichier ne permet pas de protéger des fichiers et n'offre donc aucune solution pour réduire les risques de manipulation de ce fichier. WarningsOnXLines=Alertes sur %s enregistrement(s) source -WarningNoDocumentModelActivated=No model, for document generation, has been activated. A model will be chosen by default until you check your module setup. +WarningNoDocumentModelActivated=Aucun modèle, pour la génération de document, n'a été activé. Un modèle sera choisi par défaut jusqu'à ce que vous vérifiiez la configuration de votre module. WarningLockFileDoesNotExists=Attention, une fois l'installation terminée, les outils d'installation/migration doivent être désactivés en ajoutant un fichier install.lock dans le répertoire %s. L'absence de ce fichier représente une faille de sécurité. -WarningUntilDirRemoved=All security warnings (visible by admin users only) will remain active as long as the vulnerability is present (or that constant MAIN_REMOVE_INSTALL_WARNING is added in Setup->Other Setup). +WarningUntilDirRemoved=Tous les avertissements de sécurité (visibles uniquement par les administrateurs) resteront actifs tant que la vulnérabilité sera présente (ou que la constante MAIN_REMOVE_INSTALL_WARNING sera ajoutée dans Setup -> Other Setup). WarningCloseAlways=Attention, la fermeture se fait même lorsque le montant diffère. N'activez cette fonctionnalité qu'en connaissance de cause. WarningUsingThisBoxSlowDown=Attention, l'utilisation de cette boîte provoque de sérieux ralentissements des pages affichant cette boîte. WarningClickToDialUserSetupNotComplete=La configuration ClickToDial pour votre compte utilisateur n'est pas complète (voir l'onglet ClickToDial sur votre fiche utilisateur) diff --git a/htdocs/langs/fr_FR/exports.lang b/htdocs/langs/fr_FR/exports.lang index 48df77c7641..0f661882f03 100644 --- a/htdocs/langs/fr_FR/exports.lang +++ b/htdocs/langs/fr_FR/exports.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - exports -ExportsArea=Espace exports +ExportsArea=Exports ImportArea=Espace import NewExport=Nouvel export NewImport=Nouvel import @@ -8,22 +8,22 @@ ImportableDatas=Lot de données importables SelectExportDataSet=Choisissez un lot prédéfini de données que vous désirez exporter… SelectImportDataSet=Choisissez un lot prédéfini de données que vous désirez importer… SelectExportFields=Choisissez les champs à exporter, ou choisissez un profil d'export prédéfini -SelectImportFields=Choisissez les champs du fichier source à importer et leur destination dans la base en les déplaçant vers le haut ou vers le bas via l'ancre %s,
ou choisissez un profil d'import prédéfini: +SelectImportFields=Choisissez les champs du fichier source à importer et leur destination dans la base en les déplaçant vers le haut ou vers le bas via l'ancre %s, ou choisissez un profil d'import prédéfini: NotImportedFields=Champs du fichier source non importés -SaveExportModel=Enregistrer ce profil d'export si vous désirez le réutiliser ultérieurement… -SaveImportModel=Enregistrer ce profil d'import si vous désirez le réutiliser ultérieurement… +SaveExportModel=Enregistrer ce profil d'import (si vous désirez le réutiliser ultérieurement) … +SaveImportModel=Enregistrer ce profil d'import (si vous désirez le réutiliser ultérieurement) … ExportModelName=Nom du profil d'export ExportModelSaved=Profil d'export sauvegardé sous le nom %s. ExportableFields=Champs exportables ExportedFields=Champs à exporter ImportModelName=Nom du profil d'import -ImportModelSaved=Profil d'import sauvegardé sous le nom %s. +ImportModelSaved=Profil d'export sauvegardé sous le nom %s. DatasetToExport=Lot de données à exporter DatasetToImport=Importer fichier dans la table de ChooseFieldsOrdersAndTitle=Choisissez l'ordre des champs… FieldsTitle=Titre champs FieldTitle=Titre champ -NowClickToGenerateToBuildExportFile=Maintenant, sélectionnez le format d'export dans la liste déroulante et cliquez sur "Générer" pour fabriquer le fichier export… +NowClickToGenerateToBuildExportFile=Maintenant, sélectionnez le format d'export du fichier dans la liste déroulante et cliquez sur "Générer" pour fabriquer le fichier export… AvailableFormats=Formats disponibles LibraryShort=Bibliothèque Step=Étape @@ -51,7 +51,7 @@ TypeOfLineServiceOrProduct=Type de ligne (0=produit, 1=service) FileWithDataToImport=Fichier contenant les données à importer FileToImport=Fichier source à importer FileMustHaveOneOfFollowingFormat=Le fichier à importer doit avoir un des formats suivants -DownloadEmptyExample=Télécharger fichier vierge exemple +DownloadEmptyExample=Télécharger fichier vierge exemple (* sont les champs obligatoires) ChooseFormatOfFileToImport=Choisissez le format de fichier à importer en cliquant sur le pictogramme %s pour le sélectionner… ChooseFileToImport=Ajoutez le fichier à importer puis cliquez sur le pictogramme %s pour le sélectionner comme fichier source d'import… SourceFileFormat=Format du fichier source @@ -68,7 +68,7 @@ FieldsTarget=Champs cibles FieldTarget=Champ cible FieldSource=Champ source NbOfSourceLines=Nombre de lignes du fichier source -NowClickToTestTheImport=Vérifiez les paramètres d'import que vous avez défini. S'ils vous conviennent, cliquez sur le bouton "%s" pour lancer une simulation d'import (aucune donnée ne sera modifiée, il s'agit dans un premier temps d'une simple simulation)… +NowClickToTestTheImport=Vérifiez les paramètres d'import que vous avez défini (vérifiez si vous devez omettre la ou les premières lignes sinon celle-ci renverront des erreurs dans la simulation). Cliquez sur "%s" pour lancer une simulation d'import sur la structure et le contenu du fichier.
Aucune donnée ne sera modifiée, il s'agit dans un premier temps d'une simple simulation. RunSimulateImportFile=Lancer la simulation d'import FieldNeedSource=Ce champ en base requiert obligatoirement une donnée source SomeMandatoryFieldHaveNoSource=Certains champs obligatoires n'ont pas de champ source issus du fichier @@ -76,9 +76,9 @@ InformationOnSourceFile=Informations sur le fichier source InformationOnTargetTables=Informations sur les champs cibles SelectAtLeastOneField=Basculez au moins un champ source dans la colonne des champs à exporter SelectFormat=Choisir ce format de fichier import -RunImportFile=Lancer l'import en base -NowClickToRunTheImport=Vérifiez le résultat de la simulation. Si tout est bon, lancez l'import définitif en base. -DataLoadedWithId=Toutes les données seront chargées avec l'id d'importation suivante: %s +RunImportFile=Espace import +NowClickToRunTheImport=Vérifiez le résultat de la simulation. Corriger les erreurs et retester.
Si tout est bon, lancez l'import définitif en base. +DataLoadedWithId=Toutes les données seront chargées avec l'id d'importation suivant: %s pour permettre une recherche sur ce lot de donnée en cas de découverte de problèmes futurs. ErrorMissingMandatoryValue=Donnée obligatoire non renseignée dans le fichier source, champ numéro %s. TooMuchErrors=Il y a encore %s autres lignes en erreur mais leur affichage a été limité. TooMuchWarnings=Il y a encore %s autres lignes en avertissement mais leur affichage a été limité. @@ -93,15 +93,15 @@ DataComeFromFileFieldNb=La valeur à insérer sera issue du champ numéro %s< DataComeFromIdFoundFromRef=La valeur issue du champ numéro %s du fichier source sera utilisée pour trouver l'identifiant de l'objet père à utiliser (L'objet %s ayant la réf. issue du fichier source doit donc exister dans Dolibarr). DataComeFromIdFoundFromCodeId=Le code issu du champ numéro %s du fichier source sera utilisée pour trouver l'id de l'objet père à utiliser (Le code issue du fichier source doit donc exister dans le dictionnaire %s). Notons que si vous connaissez cet id, vous pouvez l'utiliser dans le fichier source au lieu du code. L'import fonctionnera dans les 2 cas. DataIsInsertedInto=La donnée issue du fichier source sera insérée dans le champ suivant: -DataIDSourceIsInsertedInto=L'identifiant de l'objet père retrouvé à partir de la donnée source, sera inséré dans le champ suivant : +DataIDSourceIsInsertedInto=L'identifiant de l'objet père, retrouvé à partir de la donnée source, sera inséré dans le champ suivant : DataCodeIDSourceIsInsertedInto=L'identifiant de la ligne père retrouvé à partir du code, sera inséré dans le champ suivant : SourceRequired=Donnée source obligatoire SourceExample=Exemple de donnée source possible ExampleAnyRefFoundIntoElement=Toute réf. trouvée pour les éléments %s ExampleAnyCodeOrIdFoundIntoDictionary=Tout code (ou id) trouvée dans le dictionnaire %s CSVFormatDesc=Fichier au format Comma Separated Value (.csv).
C'est un fichier au format texte dans lequel les champs sont séparés par le caractère [ %s ]. Si le séparateur est trouvé dans le contenu d'un champ, le champ doit être entouré du caractère [ %s ]. Le caractère d'échappement pour inclure un caractère de contour dans une donnée est [ %s ]. -Excel95FormatDesc=Format Excel (.xls).
Format Excel 95 (BIFF5). -Excel2007FormatDesc=Format Excel (.xls).
Format standard Excel 2007 (SpreadsheetML). +Excel95FormatDesc=Format de fichier Excel (.xls).
Format Excel 95 (BIFF5). +Excel2007FormatDesc=Format de fichier Excel (.xls).
Format standard Excel 2007 (SpreadsheetML). TsvFormatDesc=Format de fichier à Valeurs Séparées par des Tabulations (.tsv).
C'est un fichier texte dont les champs sont séparés par des tabulations [tab]. ExportFieldAutomaticallyAdded=Le champ %s a été ajouté automatiquement car il évitera que des lignes identiques ne soient considérées comme des doublons (avec ce champ, aucune ligne ne sera identique mais aura un identifiant propre). CsvOptions=Options du fichier CSV @@ -118,7 +118,7 @@ SetThisValueTo2ToExcludeFirstLine=Par exemple, positionnez cette valeur à 3 pou KeepEmptyToGoToEndOfFile=Laissez ce champ vide pour aller jusqu'à la fin du fichier SelectPrimaryColumnsForUpdateAttempt=Sélectionnez la ou les colonne(s) à utiliser comme clé primaire pour la tentative de mise à jour UpdateNotYetSupportedForThisImport=La mise à jour n'est pas pris en charge pour ce type d'importation (seulement les ajouts) -NoUpdateAttempt=Aucune tentative de mise à jour n'a été effectuée, seulement un insertion. +NoUpdateAttempt=Aucune tentative de mise à jour n'a été effectuée, seulement des insertions. ImportDataset_user_1=Utilisateurs (employés ou non) et attributs ComputedField=Champ calculé ## filters @@ -131,7 +131,3 @@ KeysToUseForUpdates=Clé à utiliser pour mettre à jour les données NbInsert=Nombre de lignes insérées: %s NbUpdate=Nombre de lignes mises à jour: %s MultipleRecordFoundWithTheseFilters=Plusieurs enregistrements ont été trouvés avec ces filtres: %s -## setup page -ExportSetup=Configuration du module Export -ExportModel = Modèle d'export -set_EXPORTS_SHARE_MODELS = Partager tous les profils d'export \ No newline at end of file diff --git a/htdocs/langs/fr_FR/help.lang b/htdocs/langs/fr_FR/help.lang index 29bba422142..9bf855f8704 100644 --- a/htdocs/langs/fr_FR/help.lang +++ b/htdocs/langs/fr_FR/help.lang @@ -5,9 +5,9 @@ RemoteControlSupport=Assistance en ligne temps réel OtherSupport=Autres type d'assistance ToSeeListOfAvailableRessources=Pour contacter/voir les ressources disponibles : HelpCenter=Centre d'assistance -DolibarrHelpCenter=Dolibarr Help and Support Center -ToGoBackToDolibarr=Otherwise, click here to continue to use Dolibarr. -TypeOfSupport=Type of support +DolibarrHelpCenter=Centre d'aide et de support de Dolibarr +ToGoBackToDolibarr=Sinon, cliquez ici pour continuer à utiliser Dolibarr . +TypeOfSupport=Source de l'assistance TypeSupportCommunauty=Communautaire (gratuit) TypeSupportCommercial=Commercial TypeOfHelp=Type @@ -15,12 +15,9 @@ NeedHelpCenter=Besoin d'assistance ou aide ? Efficiency=Efficacité TypeHelpOnly=Aide uniquement TypeHelpDev=Aide+Développement -TypeHelpDevForm=Help+Development+Training -ToGetHelpGoOnSparkAngels1=Some companies can provide a fast (sometime immediate) and more efficient online support by remote control of your computer. Such help can be found on %s web site: -ToGetHelpGoOnSparkAngels3=Vous pouvez aussi accéder à la liste complète de tous les accompagnants possibles, pour cela cliquez sur le bouton -ToGetHelpGoOnSparkAngels2=Sometimes, there is no company available when you make your search, so change the filter to look for "all availability". You will be able to send more requests. -BackToHelpCenter=Otherwise, go back to Help center home page. -LinkToGoldMember=You can call one of the trainers preselected by Dolibarr for your language (%s) by clicking their Widget (status and maximum price are automatically updated): +TypeHelpDevForm=Aide+Développement+Formation +BackToHelpCenter=Sinon, cliquez ici pour retourner au centre d'assistance. +LinkToGoldMember=Vous pouvez appeler immédiatement un des quelques accompagnateurs présélectionnés par Dolibarr pour votre langue (%s) en cliquant son Widget (disponibilité et tarif maximum sont rafraîchis automatiquement): PossibleLanguages=Langues disponibles -SubscribeToFoundation=Help the Dolibarr project, subscribe to the foundation +SubscribeToFoundation=Aidez le projet Dolibarr, adhérez à l'association Dolibarr SeeOfficalSupport=Pour un accompagnement officiel Dolibarr dans votre langue :
%s diff --git a/htdocs/langs/fr_FR/holiday.lang b/htdocs/langs/fr_FR/holiday.lang index 030ff513622..2799105a3e8 100644 --- a/htdocs/langs/fr_FR/holiday.lang +++ b/htdocs/langs/fr_FR/holiday.lang @@ -4,7 +4,7 @@ Holidays=Congés CPTitreMenu=Congés MenuReportMonth=État mensuel MenuAddCP=Créer demande de congés -NotActiveModCP=You must enable the module Leave to view this page. +NotActiveModCP=Vous devez activer le module Laisser pour voir cette page. AddCP=Créer une demande de congés DateDebCP=Date Début DateFinCP=Date Fin @@ -19,14 +19,14 @@ ListeCP=Liste des demandes de congés LeaveId=ID demande de congès ReviewedByCP=Sera approuvé par UserForApprovalID=ID de l'utilisateur d'approbation -UserForApprovalFirstname=First name of approval user -UserForApprovalLastname=Last name of approval user +UserForApprovalFirstname=Prénom de l'utilisateur d'approbation +UserForApprovalLastname=Nom d'utilisateur d'approbation UserForApprovalLogin=Login de l'utilisateur d'approbation DescCP=Description SendRequestCP=Créer une demande de congés DelayToRequestCP=Les demandes de congés doivent être faites au moins %s jour(s) avant la date de ceux-ci. -MenuConfCP=Balance of leave -SoldeCPUser=Leave balance is %s days. +MenuConfCP=Solde des congés +SoldeCPUser=Solde de congés: %s jours. ErrorEndDateCP=Vous devez choisir une date de fin supérieur à la date de début. ErrorSQLCreateCP=Une erreur SQL est survenue durant la création : ErrorIDFicheCP=Une erreur est survenue, cette demande de congés n'existe pas. @@ -101,7 +101,7 @@ LEAVE_SICK=Congé maladie LEAVE_OTHER=Autre congé LEAVE_PAID_FR=Congés payés ## Configuration du Module ## -LastUpdateCP=Latest automatic update of leave allocation +LastUpdateCP=Dernière mise à jour automatique de l'attribution des congés MonthOfLastMonthlyUpdate=Mois de la dernière mise à jour automatique des attributions de congés UpdateConfCPOK=Mise à jour effectuée avec succès. Module27130Name= Demandes de congés @@ -112,7 +112,7 @@ NoticePeriod=Délai de prévenance HolidaysToValidate=Valider les demandes de congés HolidaysToValidateBody=Veuillez trouver ci-dessous une demande de congés à valider. HolidaysToValidateDelay=Cette demande de congés a été effectuée dans un délai de moins de %s jours avant ceux-ci. -HolidaysToValidateAlertSolde=The user who made this leave request does have enough available days. +HolidaysToValidateAlertSolde=L'utilisateur ayant fait cette demande de congés payés n'a pas le solde requis. HolidaysValidated=Validation de la demande de congés HolidaysValidatedBody=Votre demande de congés du %s au %s vient d'être approuvée. HolidaysRefused=Congés refusés @@ -122,8 +122,8 @@ HolidaysCanceledBody=Votre demande de congés du %s au %s a été annulée. FollowedByACounter=1: Ce type de congé doit être suivis par un compteur. Le compteur est incrémenté manuellement ou automatiquement et quand une demande de congé est validée, le compteur est décrémenté.
0: Non suivi par un compteur. NoLeaveWithCounterDefined=Il n'y a pas de type de congés définis qui requiert un suivi par un compteur GoIntoDictionaryHolidayTypes=Aller dans Accueil - Configuration - Dictionnaires - Type de congés pour configurer les différents types de congés. -HolidaySetup=Setup of module Holiday -HolidaysNumberingModules=Leave requests numbering models -TemplatePDFHolidays=Template for leave requests PDF -FreeLegalTextOnHolidays=Free text on PDF -WatermarkOnDraftHolidayCards=Watermarks on draft leave requests +HolidaySetup=Configuration du module Congés +HolidaysNumberingModules=Modèles de numérotation des demandes de congés +TemplatePDFHolidays=Modèle de demande de congés PDF +FreeLegalTextOnHolidays=Texte libre sur PDF +WatermarkOnDraftHolidayCards=Filigranes sur les demandes de congés brouillons diff --git a/htdocs/langs/fr_FR/install.lang b/htdocs/langs/fr_FR/install.lang index 7035e0d8ed6..d26e8b95d6c 100644 --- a/htdocs/langs/fr_FR/install.lang +++ b/htdocs/langs/fr_FR/install.lang @@ -2,37 +2,37 @@ InstallEasy=Veuillez suivre les étapes une à une. MiscellaneousChecks=Vérification des prérequis ConfFileExists=Le fichier de configuration %s existe. -ConfFileDoesNotExistsAndCouldNotBeCreated=Configuration file %s does not exist and could not be created! +ConfFileDoesNotExistsAndCouldNotBeCreated=Le fichier de configuration %s n'existe pas et n'a pu être créé ! ConfFileCouldBeCreated=Le fichier de configuration %s a pu être créé. -ConfFileIsNotWritable=Configuration file %s is not writable. Check permissions. For first install, your web server must be able to write into this file during configuration process ("chmod 666" for example on a Unix like OS). +ConfFileIsNotWritable=Le fichier %s n'est pas modifiable. Pour une première installation, modifiez ses permissions. Le serveur Web doit avoir le droit d'écrire dans ce fichier le temps de la configuration ("chmod 666" par exemple sur un OS compatible Unix). ConfFileIsWritable=Le fichier %s est modifiable. ConfFileMustBeAFileNotADir=Le fichier de configuration %s doit être un fichier, pas un répertoire. -ConfFileReload=Reloading parameters from configuration file. +ConfFileReload=Rechargement des paramètres depuis le fichier de configuration. PHPSupportSessions=Ce PHP prend en charge les sessions. PHPSupportPOSTGETOk=Ce PHP prend bien en charge les variables POST et GET. -PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check the parameter variables_order in php.ini. -PHPSupportGD=This PHP supports GD graphical functions. +PHPSupportPOSTGETKo=Il est possible que votre configuration PHP ne supporte pas les variables POST et / ou GET. Vérifiez le paramètre variables_order dans le fichier php.ini. +PHPSupportGD=Ce PHP prend en charge les fonctions graphiques GD. PHPSupportCurl=PHP supporte l'extension Curl -PHPSupportUTF8=This PHP supports UTF8 functions. +PHPSupportUTF8=Ce PHP prend en charge les fonctions UTF8. PHPMemoryOK=Votre mémoire maximum de session PHP est définie à %s. Ceci devrait être suffisant. -PHPMemoryTooLow=Your PHP max session memory is set to %s bytes. This is too low. Change your php.ini to set memory_limit parameter to at least %s bytes. -Recheck=Click here for a more detailed test -ErrorPHPDoesNotSupportSessions=Your PHP installation does not support sessions. This feature is required to allow Dolibarr to work. Check your PHP setup and permissions of the sessions directory. -ErrorPHPDoesNotSupportGD=Your PHP installation does not support GD graphical functions. No graphs will be available. +PHPMemoryTooLow=Votre mémoire maximum de session PHP est définie à %s octets. Ceci est trop faible. Il est recommandé de modifier le paramètre memory_limit de votre fichier php.ini à au moins %s octets. +Recheck=Cliquez ici pour un test plus détaillé +ErrorPHPDoesNotSupportSessions=Votre installation PHP ne supporte pas les sessions. Cette fonctionnalité est nécessaire pour permettre à Dolibarr de fonctionner. Vérifiez votre configuration PHP et les autorisations du répertoire des sessions. +ErrorPHPDoesNotSupportGD=Votre installation PHP ne supporte pas les fonctions graphiques GD. Aucun graphique ne sera disponible. ErrorPHPDoesNotSupportCurl=Votre version de PHP ne supporte pas l'extension Curl -ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. +ErrorPHPDoesNotSupportUTF8=Votre installation de PHP ne supporte pas les fonctions UTF8. Dolibarr ne peut pas fonctionner correctement. Résolvez ce problème avant d'installer Dolibarr. ErrorDirDoesNotExists=Le répertoire %s n'existe pas ou n'est pas accessible. -ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. +ErrorGoBackAndCorrectParameters=Revenez en arrière et vérifiez / corrigez les paramètres. ErrorWrongValueForParameter=Vous avez peut-être saisi une mauvaise valeur pour le paramètre '%s'. ErrorFailedToCreateDatabase=Échec de la création de la base '%s'. ErrorFailedToConnectToDatabase=Échec de connexion à la base '%s'. ErrorDatabaseVersionTooLow=Version de base de donnée (%s) trop ancienne. La version %s ou supérieure est requise. ErrorPHPVersionTooLow=Version de PHP trop ancienne. La version %s est requise. -ErrorConnectedButDatabaseNotFound=Connection to server successful but database '%s' not found. +ErrorConnectedButDatabaseNotFound=Connexion au serveur réussie mais base '%s' introuvable. ErrorDatabaseAlreadyExists=La base de données '%s' existe déjà. -IfDatabaseNotExistsGoBackAndUncheckCreate=If the database does not exist, go back and check option "Create database". +IfDatabaseNotExistsGoBackAndUncheckCreate=Si la base de données n'existe pas, revenez en arrière et cochez l'option "Créer une base de données". IfDatabaseExistsGoBackAndCheckCreate=Si la base existe déjà, revenez en arrière et désactiver l'option "Créer la base de données". -WarningBrowserTooOld=Version of browser is too old. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommended. +WarningBrowserTooOld=La version du navigateur est trop ancienne. La mise à niveau de votre navigateur vers une version récente de Firefox, Chrome ou Opera est vivement recommandée. PHPVersion=Version de PHP License=Licence d'utilisation ConfigurationFile=Fichier de configuration @@ -45,23 +45,23 @@ DolibarrDatabase=Base de données Dolibarr DatabaseType=Type de la base de données DriverType=Type du pilote Server=Serveur -ServerAddressDescription=Name or ip address for the database server. Usually 'localhost' when the database server is hosted on the same server as the web server. +ServerAddressDescription=Nom ou adresse IP du serveur de base de données. Habituellement, "hôte local" lorsque le serveur de base de données est hébergé sur le même serveur que le serveur Web. ServerPortDescription=Port du serveur. Ne rien mettre si inconnu. DatabaseServer=Serveur de base de données DatabaseName=Nom de la base de données -DatabasePrefix=Database table prefix -DatabasePrefixDescription=Database table prefix. If empty, defaults to llx_. -AdminLogin=User account for the Dolibarr database owner. -PasswordAgain=Retype password confirmation +DatabasePrefix=Préfixe de table de base de données +DatabasePrefixDescription=Préfixe de table de base de données. Si vide, la valeur par défaut est llx_. +AdminLogin=Compte utilisateur du propriétaire de la base de données Dolibarr. +PasswordAgain=Confirmer la confirmation du mot de passe AdminPassword=Mot de passe du propriétaire de la base de données Dolibarr. CreateDatabase=Créer la base de données -CreateUser=Create user account or grant user account permission on the Dolibarr database +CreateUser=Créer un compte utilisateur ou accorder une autorisation de compte utilisateur sur la base de données Dolibarr DatabaseSuperUserAccess=Serveur de base de données - Accès super utilisateur CheckToCreateDatabase=Check the box if the database does not exist yet and so must be created.
In this case, you must also fill in the user name and password for the superuser account at the bottom of this page. -CheckToCreateUser=Check the box if:
the database user account does not yet exist and so must be created, or
if the user account exists but the database does not exist and permissions must be granted.
In this case, you must enter the user account and password and also the superuser account name and password at the bottom of this page. If this box is unchecked, database owner and password must already exist. -DatabaseRootLoginDescription=Superuser account name (to create new databases or new users), mandatory if the database or its owner does not already exist. -KeepEmptyIfNoPassword=Leave empty if superuser has no password (NOT recommended) -SaveConfigurationFile=Saving parameters to +CheckToCreateUser=Cochez la case si: le compte d'utilisateur de la base de données n'existe pas encore et doit donc être créé, ou si le compte d'utilisateur existe mais que la base de données n'existe pas et que les autorisations doivent être accordées.
Dans ce cas, vous devez entrer le compte d'utilisateur et le mot de passe et aussi le nom et le mot de passe du compte superutilisateur au bas de cette page. Si cette case est décochée, le propriétaire de la base de données et le mot de passe doivent déjà exister. +DatabaseRootLoginDescription=Nom du compte superutilisateur (pour créer de nouvelles bases de données ou de nouveaux utilisateurs), obligatoire si la base de données ou son propriétaire n'existe pas déjà. +KeepEmptyIfNoPassword=Laisser vide si le superutilisateur n'a pas de mot de passe (NON recommandé) +SaveConfigurationFile=Enregistrement des paramètres dans ServerConnection=Connexion au serveur DatabaseCreation=Création de la base de données CreateDatabaseObjects=Création des objets de la base @@ -72,9 +72,9 @@ CreateOtherKeysForTable=Création des clés étrangères et des index pour la ta OtherKeysCreation=Création des clés étrangères et des index FunctionsCreation=Création des fonctions AdminAccountCreation=Création du compte administrateur -PleaseTypePassword=Please type a password, empty passwords are not allowed! -PleaseTypeALogin=Please type a login! -PasswordsMismatch=Passwords differs, please try again! +PleaseTypePassword=Veuillez saisir un mot de passe, les mots de passe vides ne sont pas autorisés! +PleaseTypeALogin=Veuillez taper un identifiant! +PasswordsMismatch=Les mots de passe diffèrent, veuillez réessayer! SetupEnd=Fin de l'installation SystemIsInstalled=Votre système est maintenant installé. SystemIsUpgraded=Dolibarr a été mis à jour avec succès. @@ -82,65 +82,65 @@ YouNeedToPersonalizeSetup=Vous devez maintenant configurer Dolibarr selon vos be AdminLoginCreatedSuccessfuly=Création du compte administrateur Dolibarr '%s' réussie. GoToDolibarr=Accéder à Dolibarr GoToSetupArea=Accéder à Dolibarr (espace de configuration) -MigrationNotFinished=The database version is not completely up to date: run the upgrade process again. +MigrationNotFinished=La version de la base de données n'est pas complètement à jour: exécutez à nouveau le processus de mise à niveau. GoToUpgradePage=Accéder à la page de migration à nouveau WithNoSlashAtTheEnd=Sans le slash "/" à la fin -DirectoryRecommendation=It is recommended to use a directory outside of the web pages. +DirectoryRecommendation=Il est recommandé d'utiliser un répertoire en dehors des pages Web. LoginAlreadyExists=Existe déjà DolibarrAdminLogin=Identifiant de l'utilisateur administrateur de Dolibarr -AdminLoginAlreadyExists=Dolibarr administrator account '%s' already exists. Go back if you want to create another one. +AdminLoginAlreadyExists=Compte administrateur Dolibarr '%s' déjà existant. Revenez en arrière si vous voulez en créer un autre. FailedToCreateAdminLogin=Echec de la création du compte administrateur Dolibarr -WarningRemoveInstallDir=Warning, for security reasons, once the install or upgrade is complete, you should add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. -FunctionNotAvailableInThisPHP=Not available in this PHP +WarningRemoveInstallDir=Attention, pour des raisons de sécurité, afin de bloquer une nouvelle utilisation des outils d'installation/migration, une fois l'installation terminée, il est conseillé de placer dans le répertoire document de Dolibarr un fichier nommé install.lock en lecture seule. +FunctionNotAvailableInThisPHP=Non disponible dans ce PHP ChoosedMigrateScript=Choix du script de migration DataMigration=Migration de la base (données) DatabaseMigration=Migration de la base de données (structure + certaines données) ProcessMigrateScript=Exécution du script ChooseYourSetupMode=Choisissez votre mode d'installation et cliquez sur "Démarrer"… FreshInstall=Première installation -FreshInstallDesc=Use this mode if this is your first install. If not, this mode can repair a incomplete previous install. If you want to upgrade your version, choose "Upgrade" mode. +FreshInstallDesc=Utilisez ce mode s'il s'agit de votre première installation. Sinon, ce mode peut réparer une installation précédente incomplète. Si vous souhaitez mettre à niveau votre version, choisissez le mode "Mettre à niveau". Upgrade=Mise à jour UpgradeDesc=Utilisez ce mode après avoir écrasé les fichiers d'une ancienne installation Dolibarr par ceux d'une version plus récente. Ce choix permet de mettre à jour votre base et vos données pour cette nouvelle version. Start=Démarrer InstallNotAllowed=Installation non autorisée par les permissions du fichier conf.php YouMustCreateWithPermission=Vous devez créer un fichier %s et donner les droits d'écriture dans celui-ci au serveur web durant le processus d'installation. -CorrectProblemAndReloadPage=Please fix the problem and press F5 to reload the page. +CorrectProblemAndReloadPage=Veuillez résoudre le problème et appuyez sur F5 pour recharger la page. AlreadyDone=Déjà migré DatabaseVersion=Version de la base ServerVersion=Version du serveur de base de données YouMustCreateItAndAllowServerToWrite=Vous devez créer ce dossier et permettre au serveur web d'écrire dans celui-ci. DBSortingCollation=Ordre de tri utilisé pour la base de données -YouAskDatabaseCreationSoDolibarrNeedToConnect=You selected create database %s, but for this, Dolibarr needs to connect to server %s with super user %s permissions. -YouAskLoginCreationSoDolibarrNeedToConnect=You selected create database user %s, but for this, Dolibarr needs to connect to server %s with super user %s permissions. -BecauseConnectionFailedParametersMayBeWrong=The database connection failed: the host or super user parameters must be wrong. +YouAskDatabaseCreationSoDolibarrNeedToConnect=Vous avez demandé la création de la base de données %s, mais pour cela, Dolibarr doit se connecter sur le serveur %s via le super utilisateur %s. +YouAskLoginCreationSoDolibarrNeedToConnect=Vous avez demandé la création de l'identifiant de base de données %s, mais pour cela, Dolibarr doit se connecter sur le serveur %s via le super utilisateur %s. +BecauseConnectionFailedParametersMayBeWrong=La connexion à la base de données a échoué: les paramètres de l'hôte ou du super utilisateur doivent être erronés. OrphelinsPaymentsDetectedByMethod=Paiement orphelins détectés par la méthode %s RemoveItManuallyAndPressF5ToContinue=Supprimez-le manuellement et actualisez la page pour continuer (F5). FieldRenamed=Champ renommé -IfLoginDoesNotExistsCheckCreateUser=If the user does not exist yet, you must check option "Create user" -ErrorConnection=Server "%s", database name "%s", login "%s", or database password may be wrong or the PHP client version may be too old compared to the database version. +IfLoginDoesNotExistsCheckCreateUser=Si l'utilisateur n'existe pas encore, vous devez cocher l'option "Créer un utilisateur" +ErrorConnection=Le serveur "%s", nom de base "%s", identifiant "%s", ou mot de passe de la base de données est peut-être incorrect ou la version du client PHP trop ancienne par rapport à la version de la base de données. InstallChoiceRecommanded=Choix recommandé pour installer la version %s depuis votre version actuelle %s InstallChoiceSuggested=Choix suggéré par l'installeur. -MigrateIsDoneStepByStep=The targeted version (%s) has a gap of several versions. The install wizard will come back to suggest a further migration once this one is complete. -CheckThatDatabasenameIsCorrect=Check that the database name "%s" is correct. +MigrateIsDoneStepByStep=La version ciblée (%s) présente un écart de plusieurs versions. L'assistant d'installation reviendra pour vous suggérer une migration supplémentaire une fois celle-ci terminée. +CheckThatDatabasenameIsCorrect=Vérifiez que le nom de base "%s" est correct. IfAlreadyExistsCheckOption=Si ce nom est correct et que cette base n'existe pas déjà, vous devez cocher l'option "Créer la base de données". OpenBaseDir=Paramètre PHP openbasedir -YouAskToCreateDatabaseSoRootRequired=You checked the box "Create database". For this, you need to provide the login/password of superuser (bottom of form). -YouAskToCreateDatabaseUserSoRootRequired=You checked the box "Create database owner". For this, you need to provide the login/password of superuser (bottom of form). -NextStepMightLastALongTime=The current step may take several minutes. Please wait until the next screen is shown completely before continuing. +YouAskToCreateDatabaseSoRootRequired=Vous avez coché la case "Créer une base de données". Pour cela, vous devez fournir le nom d'utilisateur / mot de passe du superutilisateur (bas du formulaire). +YouAskToCreateDatabaseUserSoRootRequired=Vous avez coché la case "Créer une base de données propriétaire". Pour cela, vous devez fournir le nom d'utilisateur / mot de passe du superutilisateur (bas du formulaire). +NextStepMightLastALongTime=L'étape en cours peut prendre plusieurs minutes. Veuillez patienter jusqu'à ce que l'écran suivant apparaisse complètement avant de continuer. MigrationCustomerOrderShipping=Mise à jour stockage des expéditions des commandes clients MigrationShippingDelivery=Mise à jour stockage des expéditions MigrationShippingDelivery2=Mise à jour stockage des expéditions 2 MigrationFinished=Migration terminée -LastStepDesc=Last step: Define here the login and password you wish to use to connect to Dolibarr. Do not lose this as it is the master account to administer all other/additional user accounts. +LastStepDesc= Dernière étape : définissez ici le nom d'utilisateur et le mot de passe que vous souhaitez utiliser pour vous connecter à Dolibarr. Ne perdez pas cette information, car il s’agit du compte principal pour administrer tous les comptes d’utilisateurs supplémentaires / supplémentaires. ActivateModule=Activation du module %s ShowEditTechnicalParameters=Cliquer ici pour afficher/éditer les paramètres techniques (mode expert) -WarningUpgrade=Warning:\nDid you run a database backup first?\nThis is highly recommended. Loss of data (due to for example bugs in mysql version 5.5.40/41/42/43) may be possible during this process, so it is essential to take a complete dump of your database before starting any migration.\n\nClick OK to start migration process... +WarningUpgrade=Attention:\nAvez-vous d'abord effectué une sauvegarde de base de données?\nCeci est hautement recommandé. Une perte de données (due par exemple à des bogues dans mysql version 5.5.40 / 41/42/43) peut être possible au cours de ce processus. Il est donc essentiel de réaliser un vidage complet de votre base de données avant de commencer toute migration.\n\nCliquez sur OK pour démarrer le processus de migration ... ErrorDatabaseVersionForbiddenForMigration=La version de votre gestionnaire de base de données est %s. Celle-ci présente un défaut critique entraînant des pertes de données si vous changez la structure de votre base de données tel que requis par le processus de migration. C'est pourquoi la migration vous sera interdite tant que vous n'aurez pas mis à jour votre gestionnaire de base de données vers une version supérieure corrigée (Liste des versions affectées par le défaut: %s). KeepDefaultValuesWamp=Si vous utilisez l'installeur automatique DoliWamp, les données présentes ici sont pré-remplies. Ne les modifiez qu'en connaissance de cause. KeepDefaultValuesDeb=Vous utilisez l'assistant d'installation depuis un environnement Linux (Ubuntu, Debian, Fedora...). Les valeurs présentes ici sont pré-remplies. Seul le mot de passe d'accès du propriétaire de base de données à créer doit être renseigné. Les autres paramètres ne doivent être modifiés qu'en connaissance de cause. KeepDefaultValuesMamp=Vous utilisez l'assistant d'installation DoliMamp. Les valeurs présentes ici sont pré-remplies. Leur modification ne doit être effectuée qu'en connaissance de cause. KeepDefaultValuesProxmox=Vous utilisez l'assistant d'installation depuis une application Proxmox. Les valeurs présentes ici sont pré-remplies. Leur modification ne doit être effectuée qu'en connaissance de cause. -UpgradeExternalModule=Run dedicated upgrade process of external module +UpgradeExternalModule=Exécuter le processus de mise à niveau dédié du module externe SetAtLeastOneOptionAsUrlParameter=Définissez au moins une option en tant que paramètre dans l'URL. Par exemple: '... repair.php?standard=confirmed' NothingToDelete=Rien a supprimer NothingToDo=Rien à faire @@ -164,9 +164,9 @@ MigrationContractsUpdate=Mise à jour des contrats sans détail (gestion du cont MigrationContractsNumberToUpdate=%s contrat(s) a mettre à jour MigrationContractsLineCreation=Création ligne contrat pour contrat ref %s MigrationContractsNothingToUpdate=Pas ou plus de contrats (liés à un produit) sans ligne de détail à corriger. -MigrationContractsFieldDontExist=Field fk_facture does not exist anymore. Nothing to do. +MigrationContractsFieldDontExist=Le champ fk_facture n'existe plus. Rien à faire. MigrationContractsEmptyDatesUpdate=Mise à jour des dates de contrats non renseignées -MigrationContractsEmptyDatesUpdateSuccess=Contract empty date correction done successfully +MigrationContractsEmptyDatesUpdateSuccess=Correction de la date de contrat vide effectuée avec succès MigrationContractsEmptyDatesNothingToUpdate=Pas ou plus de date de contrats à renseigner. MigrationContractsEmptyCreationDatesNothingToUpdate=Pas ou plus de date de création à renseigner. MigrationContractsInvalidDatesUpdate=Mise à jour dates contrat incorrectes (pour contrats avec détail en service) @@ -188,24 +188,24 @@ MigrationDeliveryDetail=Mise à jour bon réception MigrationStockDetail=Mise à jour valeur en stock des produits MigrationMenusDetail=Mise à jour table des menus dynamiques MigrationDeliveryAddress=Mise à jour des adresses de livraison dans les bons d'expédition -MigrationProjectTaskActors=Data migration for table llx_projet_task_actors +MigrationProjectTaskActors=Migration de données pour la table llx_projet_task_actors MigrationProjectUserResp=Migration du champ fk_user_resp de llx_projet vers llx_element_contact MigrationProjectTaskTime=Mise à jour du temps consommé en secondes MigrationActioncommElement=Mise à jour des données des actions des éléments MigrationPaymentMode=Migration des modes de paiement MigrationCategorieAssociation=Migration des categories -MigrationEvents=Migration of events to add event owner into assignment table -MigrationEventsContact=Migration of events to add event contact into assignment table +MigrationEvents=Migration d'événements pour ajouter le propriétaire d'événement dans la table d'affectation +MigrationEventsContact=Migration d'événements pour ajouter un contact d'événement dans la table d'affectation MigrationRemiseEntity=Mettre à jour le champ "entity" de la table "llx_societe_remise MigrationRemiseExceptEntity=Mettre à jour le champ "entity" de la table "llx_societe_remise_except" MigrationUserRightsEntity=Mise à jour du champ entity de llx_user_rights MigrationUserGroupRightsEntity=Mise à jour du champ entity de llx_usergroup_rights MigrationReloadModule=Rechargement du module %s MigrationResetBlockedLog=Réinitialiser le module BlockedLog pour l'algorithme v7 -ShowNotAvailableOptions=Show unavailable options -HideNotAvailableOptions=Hide unavailable options +ShowNotAvailableOptions=Afficher les options non disponibles +HideNotAvailableOptions=Masquer les options non disponibles ErrorFoundDuringMigration=Une erreur est survenu lors du processus de migration, aussi l'étape suivante ne peut pas être réalisée. Pour ignorer les erreurs, vous pouvez cliquer ici, mais l'application ou certaines fonctionnalités risquent de présenter des dysfonctionnements jusqu'à la résolution de la ou des erreurs -YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (directory renamed with .lock suffix).
-YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file install.lock in the dolibarr documents directory).
+YouTryInstallDisabledByDirLock=L'application a tenté de se mettre à niveau automatiquement, mais les pages d'installation / de mise à niveau ont été désactivées pour des raisons de sécurité (répertoire renommé avec le suffixe .lock).
+YouTryInstallDisabledByFileLock=L'application a tenté de se mettre à niveau automatiquement, mais les pages d'installation / de mise à niveau ont été désactivées pour des raisons de sécurité (grâce à l'existence d'un fichier de verrouillage install.lock dans le répertoire de documents dolibarr).
ClickHereToGoToApp=Cliquez ici pour aller sur votre application -ClickOnLinkOrRemoveManualy=Click on the following link. If you always see this same page, you must remove/rename the file install.lock in the documents directory. +ClickOnLinkOrRemoveManualy=Cliquez sur le lien suivant. Si vous voyez toujours cette même page, vous devez supprimer / renommer le fichier install.lock dans le répertoire des documents. diff --git a/htdocs/langs/fr_FR/mails.lang b/htdocs/langs/fr_FR/mails.lang index 4aef2bc0467..02e568ae8a9 100644 --- a/htdocs/langs/fr_FR/mails.lang +++ b/htdocs/langs/fr_FR/mails.lang @@ -45,10 +45,10 @@ MailingStatusReadAndUnsubscribe=Lu et désinscrit ErrorMailRecipientIsEmpty=L'adresse du destinataire est vide WarningNoEMailsAdded=Aucun nouvel email à ajouter à la liste des destinataires. ConfirmValidMailing=Confirmez-vous la validation de l'emailing ? -ConfirmResetMailing=Warning, by re-initializing emailing %s , you will allow resending this email in a mass mailing. Are you sure you want to do this? -ConfirmDeleteMailing=Are you sure you want to delete this emailing? -NbOfUniqueEMails=No. of unique emails -NbOfEMails=No. of EMails +ConfirmResetMailing=Attention, en réinitialisant l'emailing %s, vous autorisez son émission en masse une nouvelle fois. Est-ce bien ce que vous voulez faire ? +ConfirmDeleteMailing=Êtes-vous sûr de vouloir supprimer cet email? +NbOfUniqueEMails=Nombre d'e-mails uniques +NbOfEMails=Nombre de courriels TotalNbOfDistinctRecipients=Nombre de destinataires uniques NoTargetYet=Aucun destinataire défini (Aller sur l'onglet Destinataires) NoRecipientEmail=Aucun e-mail de destinataire pour %s @@ -66,8 +66,8 @@ DateLastSend=Date de la dernière expédition DateSending=Date envoi SentTo=Envoyés à %s MailingStatusRead=Lu -YourMailUnsubcribeOK=The email %s is correctly unsubscribe from mailing list -ActivateCheckReadKey=Key used to encrypt URL used for "Read Receipt" and "Unsubscribe" feature +YourMailUnsubcribeOK=L'adresse email %s est bien désinscrite de la liste. +ActivateCheckReadKey=Clé utilisée pour chiffrer l'URL utilisée pour les fonctions "Lire accusé de réception" et "Se désabonner" EMailSentToNRecipients=Email envoyé à %s destinataires. EMailSentForNElements=Email envoyé pour %s enregistrements XTargetsAdded=%s destinataires ajoutés dans la liste cible @@ -166,4 +166,4 @@ InGoingEmailSetup=Configuration email entrant OutGoingEmailSetupForEmailing=Configuration des e-mail sortant (pour les e-mails de masse) DefaultOutgoingEmailSetup=Configuration des emails sortant Information=Information -ContactsWithThirdpartyFilter=Contacts with third party filter +ContactsWithThirdpartyFilter=Contacts avec filtre tiers diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang index d98af2bdd95..f5f162d43cd 100644 --- a/htdocs/langs/fr_FR/main.lang +++ b/htdocs/langs/fr_FR/main.lang @@ -50,15 +50,15 @@ ErrorFailedToSendMail=Échec de l'envoi de l'email (émetteur=%s, destinataire=% ErrorFileNotUploaded=Le fichier n'a pas été transféré. Vérifiez que sa taille ne dépasse pas le maxium autorisé, que l'espace disque est disponible et qu'un fichier du même nom n'existe pas déjà. ErrorInternalErrorDetected=Erreur détectée ErrorWrongHostParameter=Mauvais paramètre Serveur -ErrorYourCountryIsNotDefined=Your country is not defined. Go to Home-Setup-Edit and post the form again. -ErrorRecordIsUsedByChild=Failed to delete this record. This record is used by at least one child record. +ErrorYourCountryIsNotDefined=Votre pays n'est pas défini. Corriger en allant dans Accueil-Configuration-Société/Institution-Editer. +ErrorRecordIsUsedByChild=Impossible de supprimer cet enregistrement. Cet enregistrement est utilisé par au moins un enregistrement enfant. ErrorWrongValue=Valeur incorrecte ErrorWrongValueForParameterX=Valeur incorrecte pour le paramètre %s ErrorNoRequestInError=Aucune requête en erreur -ErrorServiceUnavailableTryLater=Service not available at the moment. Try again later. +ErrorServiceUnavailableTryLater=Service non disponible pour le moment. Réessayez plus tard. ErrorDuplicateField=Doublon dans un champ unique -ErrorSomeErrorWereFoundRollbackIsDone=Some errors were found. Changes have been rolled back. -ErrorConfigParameterNotDefined=Parameter %s is not defined in Dolibarr config file conf.php. +ErrorSomeErrorWereFoundRollbackIsDone=Quelques erreurs ont été trouvées. Les modifications ont été annulées. +ErrorConfigParameterNotDefined=Le paramètre %s n'est pas défini dans le fichier de configuration Dolibarr conf.php. ErrorCantLoadUserFromDolibarrDatabase=Impossible de trouver l'utilisateur %s dans la base Dolibarr. ErrorNoVATRateDefinedForSellerCountry=Erreur, aucun taux tva défini pour le pays '%s'. ErrorNoSocialContributionForSellerCountry=Erreur, pas de types de charges sociales/fiscales définies pour le pays '%s'. @@ -78,10 +78,10 @@ FileRenamed=Le fichier a été renommé avec succès FileGenerated=Le fichier a été généré avec succès FileSaved=Fichier enregistré avec succès FileUploaded=Le fichier a été transféré avec succès -FileTransferComplete=File(s) uploaded successfully +FileTransferComplete=Fichier (s) chargé (s) avec succès FilesDeleted=Fichier(s) supprimé(s) avec succès FileWasNotUploaded=Un fichier a été sélectionné pour attachement mais n'a pas encore été uploadé. Cliquez sur "Joindre ce fichier" pour cela. -NbOfEntries=No. of entries +NbOfEntries=Nombre de Entrées GoToWikiHelpPage=Consulter l'aide (nécessite un accès internet) GoToHelpPage=Consulter l'aide RecordSaved=Enregistrement sauvegardé @@ -154,7 +154,7 @@ Update=Modifier Close=Clôturer CloseBox=Supprimer le widget du tableau de bord Confirm=Confirmer -ConfirmSendCardByMail=Do you really want to send the content of this card by mail to %s? +ConfirmSendCardByMail=Voulez vous envoyer le contenu de cette fiche par email à l'adresse %s ? Delete=Supprimer Remove=Enlever Resiliate=Résilier @@ -328,7 +328,7 @@ Copy=Copier Paste=Coller Default=Défaut DefaultValue=Valeur par défaut -DefaultValues=Default values/filters/sorting +DefaultValues=Valeurs/filtres/tris par défaut Price=Prix PriceCurrency=Prix ​​(devise) UnitPrice=Prix unitaire @@ -429,7 +429,7 @@ ActionNotApplicable=Non applicable ActionRunningNotStarted=A réaliser ActionRunningShort=En cours ActionDoneShort=Terminé -ActionUncomplete=Incomplete +ActionUncomplete=Incomplet LatestLinkedEvents=Les %s derniers événements liés CompanyFoundation=Société/Organisation Accountant=Comptable @@ -437,6 +437,7 @@ ContactsForCompany=Contacts de ce tiers ContactsAddressesForCompany=Contacts/adresses de ce tiers AddressesForCompany=Adresses de ce tiers ActionsOnCompany=Événements vis à vis de ce tiers +ActionsOnContact=Événements à propos de ce contact/adresse ActionsOnMember=Événements vis à vis de cet adhérent ActionsOnProduct=Événements liés au produit NActionsLate=%s en retard @@ -455,7 +456,7 @@ Duration=Durée TotalDuration=Durée totale Summary=Résumé DolibarrStateBoard=Statistiques de la base -DolibarrWorkBoard=Pending Items +DolibarrWorkBoard=Éléments en attente NoOpenedElementToProcess=Aucun élément ouvert à traiter Available=Disponible NotYetAvailable=Pas encore disponible @@ -707,7 +708,7 @@ Merge=Fusionner DocumentModelStandardPDF=Modèle PDF standard PrintContentArea=Afficher page d'impression de la zone centrale MenuManager=Gestionnaire de menu -WarningYouAreInMaintenanceMode=Warning, you are in maintenance mode, so only login %s is allowed to use the application at this time. +WarningYouAreInMaintenanceMode=Attention, vous êtes en mode maintenance, aussi seul le login %s est autorisé à utiliser l'application en ce moment. CoreErrorTitle=Erreur système CoreErrorMessage=Désolé, une erreur s'est produite. Contacter votre administrateur système pour vérifier les logs ou désactiver l'option $dolibarr_main_prod=1 pour obtenir plus d'information. CreditCard=Carte de crédit @@ -715,7 +716,7 @@ ValidatePayment=Valider ce règlement CreditOrDebitCard=Carte de crédit ou débit FieldsWithAreMandatory=Les champs marqués par un %s sont obligatoires FieldsWithIsForPublic=Les champs marqués par %s seront affichés sur la liste publique des adhérents. Si vous ne le souhaitez pas, décochez la case "public". -AccordingToGeoIPDatabase=(according to GeoIP conversion) +AccordingToGeoIPDatabase=(selon conversion GeoIP) Line=Ligne NotSupported=Non pris en charge RequiredField=Champ obligatoire @@ -723,8 +724,8 @@ Result=Résultat ToTest=Tester ValidateBefore=La fiche doit être validée pour pouvoir utiliser cette fonction Visibility=Visibilité -Totalizable=Totalizable -TotalizableDesc=This field is totalizable in list +Totalizable=Totalisable +TotalizableDesc=Ce champ est totalisable en liste Private=Privé Hidden=Caché Resources=Ressources @@ -743,7 +744,7 @@ LinkTo=Lier à LinkToProposal=Lier à une proposition commerciale LinkToOrder=Lier à une commande LinkToInvoice=Lier à une facture -LinkToTemplateInvoice=Link to template invoice +LinkToTemplateInvoice=Lien vers le modèle de facture LinkToSupplierOrder=Lier à une commande fournisseur LinkToSupplierProposal=Lier à une proposition commerciale fournisseur LinkToSupplierInvoice=Lier à une facture fournisseur @@ -797,7 +798,7 @@ PrintFile=Imprimer fichier %s ShowTransaction=Afficher l'écriture sur le compte bancaire ShowIntervention=Afficher intervention ShowContract=Afficher contrat -GoIntoSetupToChangeLogo=Go to Home - Setup - Company to change logo or go to Home - Setup - Display to hide. +GoIntoSetupToChangeLogo=Allez à Accueil - Configuration - Société pour changer de logo ou allez à Accueil - Configuration - Afficher pour masquer. Deny=Refuser Denied=Refusé ListOf=Liste de %s @@ -817,8 +818,8 @@ TooManyRecordForMassAction=Trop d'enregistrements sélectionnés pour l'action d NoRecordSelected=Aucu enregistrement sélectionné MassFilesArea=Zone des fichiers générés en masse ShowTempMassFilesArea=Afficher la zone des fichiers générés en masse -ConfirmMassDeletion=Mass delete confirmation -ConfirmMassDeletionQuestion=Are you sure you want to delete the %s selected record? +ConfirmMassDeletion=Confirmation de suppression en masse +ConfirmMassDeletionQuestion=Êtes-vous sûr de vouloir supprimer l’enregistrement sélectionné %s? RelatedObjects=Objets liés ClassifyBilled=Classer facturé ClassifyUnbilled=Classer non facturé @@ -836,7 +837,7 @@ Calendar=Calendrier GroupBy=Grouper par... ViewFlatList=Voir vue liste RemoveString=Supprimer la chaine '%s' -SomeTranslationAreUncomplete=Some of the languages offered may be only partially translated or may contain errors. Please help to correct your language by registering at https://transifex.com/projects/p/dolibarr/ to add your improvements. +SomeTranslationAreUncomplete=Certaines des langues proposées peuvent ne pas être traduites partiellement ou contenir des erreurs. Aidez-nous à corriger votre langue en vous inscrivant à l'adresse https://transifex.com/projects/p/dolibarr/. < / a> ajouter vos améliorations. DirectDownloadLink=Lien de téléchargement direct (public/externe) DirectDownloadInternalLink=Lien de téléchargement direct (requiert d'être logué et autorisé) Download=Téléchargement @@ -856,11 +857,11 @@ HR=HR HRAndBank=HR et banque AutomaticallyCalculated=Calculé automatiquement TitleSetToDraft=Retour à l'état de brouillon -ConfirmSetToDraft=Are you sure you want to go back to Draft status? +ConfirmSetToDraft=Êtes-vous sûr de vouloir revenir au statut de brouillon? ImportId=Id import Events=Événements EMailTemplates=Modèles des courriels -FileNotShared=File not shared to external public +FileNotShared=Fichier non partagé avec un public externe Project=Projet Projects=Projets LeadOrProject=Opportunités | Projet @@ -873,8 +874,8 @@ NewLeadOrProject=Nouvelle opportunité ou projet Rights=Permissions LineNb=No ligne IncotermLabel=Incoterms -TabLetteringCustomer=Customer lettering -TabLetteringSupplier=Supplier lettering +TabLetteringCustomer=Lettrage client +TabLetteringSupplier=Lettrage fournisseur # Week day Monday=Lundi Tuesday=Mardi @@ -939,7 +940,7 @@ CommentAdded=Commentaire ajouté CommentDeleted=Commentaire supprimé Everybody=Tout le monde PayedBy=Payé par -PayedTo=Paid to +PayedTo=Versée à Monthly=Mensuel Quarterly=Trimestriel Annual=Annuel @@ -949,7 +950,8 @@ LocalAndRemote=Local et distant KeyboardShortcut=Raccourci clavier AssignedTo=Assigné à Deletedraft=Supprimer brouillon -ConfirmMassDraftDeletion=Draft mass delete confirmation +ConfirmMassDraftDeletion=Projet de confirmation de suppression en masse FileSharedViaALink=Fichier partagé via un lien -SelectAThirdPartyFirst=Select a third party first... +SelectAThirdPartyFirst=Sélectionnez d'abord un tiers ... YouAreCurrentlyInSandboxMode=Vous travaillez actuellement dans le mode "bac à sable" de %s +Inventory=Inventaire diff --git a/htdocs/langs/fr_FR/modulebuilder.lang b/htdocs/langs/fr_FR/modulebuilder.lang index fd4e66e5ff3..215e6c13172 100644 --- a/htdocs/langs/fr_FR/modulebuilder.lang +++ b/htdocs/langs/fr_FR/modulebuilder.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - loan -ModuleBuilderDesc=This tool must be used by only by experienced users or developers. It gives you utilities to build or edit your own module.
Documentation for alternative
manual development is here. +ModuleBuilderDesc=Cet outil ne doit être utilisé que par des utilisateurs expérimentés ou des développeurs. Il vous fournit des utilitaires pour construire ou éditer votre propre module.
La documentation relative au développement manuel alternatif est ici . EnterNameOfModuleDesc=Saisissez le nom du module/application à créer, sans espaces. Utilisez les majuscules pour identifier les mots (par exemple : MonModule, BoutiqueECommerce,...) EnterNameOfObjectDesc=Entrez le nom de l'objet à créer sans espaces. Utilisez les majuscules pour séparer des mots (par exemple: MyObject, Student, Teacher ...). Le fichier de classe CRUD, mais aussi le fichier API, les pages à afficher / ajouter / éditer / supprimer des objets et des fichiers SQL seront générés. ModuleBuilderDesc2=Chemin ou les modules sont générés/modifiés (premier répertoire alternatif défini dans %s):%s @@ -13,7 +13,7 @@ ModuleInitialized=Module initialisé FilesForObjectInitialized=Fichiers pour les nouvel objet '%s' initialisés FilesForObjectUpdated=Les fichiers pour l'objet '%s' ont été mis à jour ( fichiers .sql et .class.php ) ModuleBuilderDescdescription=Entrez ici toutes les informations générales qui décrivent votre module. -ModuleBuilderDescspecifications=You can enter here a detailed description of the specifications of your module that is not already structured into other tabs. So you have within easy reach all the rules to develop. Also this text content will be included into the generated documentation (see last tab). You can use Markdown format, but it is recommended to use Asciidoc format (comparison between .md and .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown). +ModuleBuilderDescspecifications=Vous pouvez entrer ici une description détaillée des spécifications de votre module qui n'est pas déjà structurée dans d'autres onglets. Vous avez donc à portée de main toutes les règles à développer. Ce contenu textuel sera également inclus dans la documentation générée (voir dernier onglet). Vous pouvez utiliser le format Markdown, mais il est recommandé d'utiliser le format Asciidoc (comparaison entre .md et .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown). ModuleBuilderDescobjects=Définissez ici les objets que vous souhaitez gérer avec votre module. Une classe CRUD DAO, des fichiers SQL, une page pour lister l'enregistrement des objets, pour créer / modifier / afficher un enregistrement et une API sera générée. ModuleBuilderDescmenus=Cet onglet est dédié à la définition des entrées menu fournies par votre module. ModuleBuilderDescpermissions=Cet onglet est dédié à la définition des nouvelles permissions dont vous voulez fournir avec votre module. @@ -21,12 +21,12 @@ ModuleBuilderDesctriggers=Vue des triggers ajoutés par votre module. Pour inclu ModuleBuilderDeschooks=Cet onglet est dédié aux points d'accroche. ModuleBuilderDescwidgets=Cet onglet est dédié à la gestion/construction de widgets. ModuleBuilderDescbuildpackage=Vous pouvez générer ici un fichier de package "prêt à distribuer" (un fichier .zip normalisé) de votre module et un fichier de documentation "prêt à distribuer". Cliquez simplement sur le bouton pour créer le paquet ou le fichier de documentation. -EnterNameOfModuleToDeleteDesc=You can delete your module. WARNING: ALL files of module AND structured data and documentation will be deleted! -EnterNameOfObjectToDeleteDesc=You can delete an object. WARNING: All files related to object will be deleted! +EnterNameOfModuleToDeleteDesc=Vous pouvez supprimer votre module. ATTENTION: Tous fichiers relatifs a ce module ET toutes bases de donnes seront supprimés! +EnterNameOfObjectToDeleteDesc=Vous pouvez supprimer un objet\nATTENTION:\nTous fichiers relatifs a cet objet seront supprimes DangerZone=Zone de danger BuildPackage=Générer package/documentation BuildDocumentation=Générez la documentation -ModuleIsNotActive=This module is not activated yet. Go to %s to make it live or click here: +ModuleIsNotActive=Ce module n'est pas encore activé. Allez à %s pour le faire vivre ou cliquez ici: ModuleIsLive=Ce module a été activé. Tout changement sur lui pourrait casser une fonctionnalité actuellement activée. DescriptionLong=Description longue EditorName=Nom de l'éditeur @@ -47,7 +47,7 @@ RegenerateClassAndSql=Effacer et générer à nouveau les fichiers de classe et RegenerateMissingFiles=Générer les fichiers manquant SpecificationFile=Fichier de description des règles métiers LanguageFile=Fichier langue -ConfirmDeleteProperty=Are you sure you want to delete the property %s? This will change code in PHP class but also remove column from table definition of object. +ConfirmDeleteProperty=Voulez-vous vraiment supprimer la propriété %s ? Cela modifiera le code de la classe PHP, mais supprimera également la colonne de la définition de la table de l'objet. NotNull=Non NULL NotNullDesc=1=Définir le champ en base à NOT NULL. -1=Autoriser les valeurs nulles et forcer la valeur à NULL si vide ('' ou 0). SearchAll=Utilisé par la "recherche globale" @@ -66,7 +66,7 @@ PageForLib=Fichier pour les librairies PHP SqlFileExtraFields=Fichier SQL pour les attributs complémentaires SqlFileKey=Fichier Sql pour les clés AnObjectAlreadyExistWithThisNameAndDiffCase=Un objet existe déjà avec ce nom dans une casse différente -UseAsciiDocFormat=You can use Markdown format, but it is recommended to use Asciidoc format (omparison between .md and .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown) +UseAsciiDocFormat=Vous pouvez utiliser le format Markdown, mais il est recommandé d'utiliser le format Asciidoc (comparaison entre .md et .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown) IsAMeasure=Est une mesure DirScanned=Répertoire scanné NoTrigger=Pas de trigger @@ -78,7 +78,7 @@ SeeExamples=Voir des exemples ici EnabledDesc=Condition pour que ce champ soit actif (Exemples: 1 ou $conf->global->MYMODULE_MYOPTION) VisibleDesc=Le champ est-il visible ? (Exemples: 0 = Jamais visible, 1 = Visible sur les listes et formulaires de création/mise à jour/visualisation, 2 = Visible uniquement sur la liste, 3 = Visible uniquement sur le formulaire de création/mise à jour/affichage. Utiliser une valeur négative signifie que le champ n'est pas affiché par défaut sur la liste mais peut être sélectionné pour l'affichage) IsAMeasureDesc=Peut-on cumuler la valeur du champ pour obtenir un total dans les listes ? (Exemples: 1 ou 0) -SearchAllDesc=Is the field used to make a search from the quick search tool? (Examples: 1 or 0) +SearchAllDesc=Le champ est-il utilisé pour effectuer une recherche à partir de l'outil de recherche rapide? (Exemples: 1 ou 0) SpecDefDesc=Entrez ici toute la documentation que vous souhaitez joindre au module et qui n'a pas encore été définis dans d'autres onglets. Vous pouvez utiliser .md ou, mieux, la syntaxe enrichie .asciidoc. LanguageDefDesc=Entrez dans ces fichiers, toutes les clés et la traduction pour chaque fichier de langue. MenusDefDesc=Définissez ici les menus fournis par votre module (une fois définis, ils sont visibles dans l'éditeur de menu %s) @@ -88,7 +88,7 @@ TriggerDefDesc=Définissez dans le fichier trigger le code que vous souhaitez ex SeeIDsInUse=Voir les IDs utilisés dans votre installation SeeReservedIDsRangeHere=Voir la plage des ID réservés ToolkitForDevelopers=Boîte à outils pour développeurs Dolibarr -TryToUseTheModuleBuilder=If you have knowledge of SQL and PHP, you may use the native module builder wizard.
Enable the module %s and use the wizard by clicking the on the top right menu.
Warning: This is an advanced developer feature, do not experiment on your production site! +TryToUseTheModuleBuilder=Si vous connaissez SQL et PHP, vous pouvez utiliser l'assistant de création de module natif.
Activez le module %s et utilisez l'assistant en cliquant sur la . dans le menu en haut à droite.
Avertissement: Il s'agit d'une fonctionnalité avancée pour les développeurs. Ne pas expérimenter sur votre site de production! SeeTopRightMenu=Voir à droite de votre barre de menu principal AddLanguageFile=Ajouter le fichier de langue YouCanUseTranslationKey=Vous pouvez utiliser ici une clé qui est la clé de traduction trouvée dans le fichier de langue (voir l'onglet "Langues") @@ -96,7 +96,7 @@ DropTableIfEmpty=(Supprimer la table si vide) TableDoesNotExists=La table %s n'existe pas TableDropped=La table %s a été supprimée InitStructureFromExistingTable=Construire la chaîne du tableau de structure d'une table existante -UseAboutPage=Disable the about page -UseDocFolder=Disable the documentation folder +UseAboutPage=Désactiver la page "A propos" +UseDocFolder=Désactiver le dossier Documentation UseSpecificReadme=Utiliser un fichier ReadMe spécifique -RealPathOfModule=Real path of module +RealPathOfModule=Reel chemin du dossier du module diff --git a/htdocs/langs/fr_FR/multicurrency.lang b/htdocs/langs/fr_FR/multicurrency.lang index 3e4718a561e..028881b07d9 100644 --- a/htdocs/langs/fr_FR/multicurrency.lang +++ b/htdocs/langs/fr_FR/multicurrency.lang @@ -3,18 +3,18 @@ MultiCurrency=Multi-devise ErrorAddRateFail=Erreur lors de l'ajout du taux ErrorAddCurrencyFail=Erreur lors de l'ajout de la devise ErrorDeleteCurrencyFail=Erreur de suppression -multicurrency_syncronize_error=Erreur de synchronisation %s -MULTICURRENCY_USE_RATE_ON_DOCUMENT_DATE=Utilisez la date du document pour trouver le taux de change, au lieu d'utiliser dernier taux connu -multicurrency_useOriginTx=Quand un objet est créé à partir d'un autre, garder le taux original de l'objet source (sinon utiliser le dernier taux connu) +multicurrency_syncronize_error=Erreur de synchronisation: %s +MULTICURRENCY_USE_RATE_ON_DOCUMENT_DATE=Utilisez la date du document pour rechercher le taux de change, au lieu d'utiliser le dernier taux connu +multicurrency_useOriginTx=Lorsqu'un objet est créé à partir d'un autre, conservez le taux d'origine de l'objet source (sinon utilisez le dernier taux connu). CurrencyLayerAccount=API CurrencyLayer CurrencyLayerAccount_help_to_synchronize=Vous devez créer un compte sur leur site web pour pouvoir utiliser cette fonctionnalité.
Obtenez votre Clé API
Si vous utilisez un compte gratuit, vous ne pouvez pas changer la devise source(USD par défaut)
Mais si votre devise principale n'est pas USD, vous pouvez utiliser une devise source alternative pour forcer votre devise principale

Vous êtes limité à 1000 synchronisations par mois. multicurrency_appId=Clé API multicurrency_appCurrencySource=Devise source multicurrency_alternateCurrencySource=Devise du document source CurrenciesUsed=Devises utilisées -CurrenciesUsed_help_to_add=Ajoutez les différentes devises et taux dont vous avez besoin sur vos propositions commerciales,commandes, etc. +CurrenciesUsed_help_to_add=Ajoutez les différentes devises et taux que vous devez utiliser pour vos propositions , commandes , etc. rate=taux MulticurrencyReceived=Reçu, devise originale -MulticurrencyRemainderToTake=Montant restant, devise originale +MulticurrencyRemainderToTake=Montant restant, devise d'origine MulticurrencyPaymentAmount=Montant du règlement (devise d'origine) AmountToOthercurrency=Montant destination (en devise du compte de réception) diff --git a/htdocs/langs/fr_FR/opensurvey.lang b/htdocs/langs/fr_FR/opensurvey.lang index 0cf70c90257..1d85f539784 100644 --- a/htdocs/langs/fr_FR/opensurvey.lang +++ b/htdocs/langs/fr_FR/opensurvey.lang @@ -11,7 +11,7 @@ PollTitle=Titre sondage ToReceiveEMailForEachVote=Recevoir un email à chaque vote TypeDate=Type date TypeClassic=Type classique -OpenSurveyStep2=Sélectionner les dates parmis les jours libres (en gris). Les jours sélectionnés sont verts. Vous pouvez dé-sélectionner un jour en cliquant à nouveau dessus. +OpenSurveyStep2=Sélectionnez vos dates parmi les jours gratuits (gris). Les jours sélectionnés sont verts. Vous pouvez désélectionner un jour précédemment sélectionné en cliquant à nouveau dessus. RemoveAllDays=Efface tous les jours CopyHoursOfFirstDay=Copier heures du premier jour RemoveAllHours=Efface toutes les heures @@ -35,7 +35,7 @@ TitleChoice=Libellé du choix ExportSpreadsheet=Exporter feuille de résultats ExpireDate=Date expiration NbOfSurveys=Nombre de sondages -NbOfVoters=Nombre de votants +NbOfVoters=Nbre de votants SurveyResults=Résultats PollAdminDesc=Vous êtes habilité à modifier toutes les lignes de votes par le bouton "Éditer". Vous pouvez supprimer une colonne ou ligne avec %s. Vous pouvez aussi ajouter une nouvelle colonne avec %s. 5MoreChoices=5 choix suplémentaires @@ -58,4 +58,4 @@ MoreChoices=Entrez plus de choix pour les votants SurveyExpiredInfo=Le sondage a été fermé ou le délai de vote est expiré EmailSomeoneVoted=%s a rempli une ligne.\nVous pouvez trouver le sondage via le lien:\n%s ShowSurvey=Afficher le sondage -UserMustBeSameThanUserUsedToVote=You must have voted and use the same user name that the one used to vote, to post a comment +UserMustBeSameThanUserUsedToVote=Vous devez avoir voté et utiliser le même nom d'utilisateur que celui utilisé pour voter, pour poster un commentaire diff --git a/htdocs/langs/fr_FR/orders.lang b/htdocs/langs/fr_FR/orders.lang index 89a6c7dfebb..6b24934922b 100644 --- a/htdocs/langs/fr_FR/orders.lang +++ b/htdocs/langs/fr_FR/orders.lang @@ -19,7 +19,7 @@ SuppliersOrdersRunning=Commandes fournisseurs en cours CustomerOrder=Commande client CustomersOrders=Commandes clients CustomersOrdersRunning=Commandes clients en cours -CustomersOrdersAndOrdersLines=Customer orders and order details +CustomersOrdersAndOrdersLines=Commandes clients et ligne de commandes OrdersDeliveredToBill=Commandes clients délivrées à facturer OrdersToBill=Commandes clients à délivrer OrdersInProcess=Commandes clients en traitement @@ -88,7 +88,7 @@ NumberOfOrdersByMonth=Nombre de commandes par mois AmountOfOrdersByMonthHT=Montant total de commandes par mois (HT) ListOfOrders=Liste des commandes CloseOrder=Clôturer commande -ConfirmCloseOrder=Are you sure you want to set this order to delivered? Once an order is delivered, it can be set to billed. +ConfirmCloseOrder=Voulez-vous vraiment que cette commande soit livrée? Une fois qu'une commande est livrée, elle peut être définie sur facturée. ConfirmDeleteOrder=Êtes-vous sûr de vouloir effacer cette commande ? ConfirmValidateOrder=Êtes-vous sûr de vouloir valider cette commande sous la référence %s ? ConfirmUnvalidateOrder=Êtes-vous sûr de vouloir restaurer la commande %s au statut brouillon ? diff --git a/htdocs/langs/fr_FR/other.lang b/htdocs/langs/fr_FR/other.lang index 5186a5313fd..d6d7f092877 100644 --- a/htdocs/langs/fr_FR/other.lang +++ b/htdocs/langs/fr_FR/other.lang @@ -23,7 +23,7 @@ MessageForm=Message sur l'écran de paiement en ligne MessageOK=Message sur page de retour de paiement validé MessageKO=Message sur page de retour de paiement annulé ContentOfDirectoryIsNotEmpty=Le contenu de ce répertoire n'est pas vide. -DeleteAlsoContentRecursively=Check to delete all content recursively +DeleteAlsoContentRecursively=Cocher pour supprimer tout le contenu de manière récursive YearOfInvoice=Année de la date de facturation PreviousYearOfInvoice=Année précédente de la date de facturation @@ -38,8 +38,8 @@ Notify_ORDER_SUPPLIER_VALIDATE=Commande fournisseur enregistrée Notify_ORDER_SUPPLIER_APPROVE=Commande fournisseur approuvée Notify_ORDER_SUPPLIER_REFUSE=Commande fournisseur refusée Notify_PROPAL_VALIDATE=Validation proposition commerciale client -Notify_PROPAL_CLOSE_SIGNED=Customer proposal closed signed -Notify_PROPAL_CLOSE_REFUSED=Customer proposal closed refused +Notify_PROPAL_CLOSE_SIGNED=Proposition client fermée signée +Notify_PROPAL_CLOSE_REFUSED=Proposition client fermée refusée Notify_PROPAL_SENTBYMAIL=Envoi proposition commerciale par email Notify_WITHDRAW_TRANSMIT=Transmission prélèvement Notify_WITHDRAW_CREDIT=Crédit prélèvement @@ -48,11 +48,11 @@ Notify_COMPANY_CREATE=Tiers créé Notify_COMPANY_SENTBYMAIL=Email envoyé depuis la fiche Tiers Notify_BILL_VALIDATE=Facture client validée Notify_BILL_UNVALIDATE=Dévalidation facture client -Notify_BILL_PAYED=Customer invoice paid +Notify_BILL_PAYED=Facture client payée Notify_BILL_CANCEL=Annulation facture client Notify_BILL_SENTBYMAIL=Envoi facture client par email Notify_BILL_SUPPLIER_VALIDATE=Validation facture fournisseur -Notify_BILL_SUPPLIER_PAYED=Supplier invoice paid +Notify_BILL_SUPPLIER_PAYED=Facture fournisseur payée Notify_BILL_SUPPLIER_SENTBYMAIL=Envoi facture fournisseur par email Notify_BILL_SUPPLIER_CANCELED=Facture fournisseur annulée Notify_CONTRACT_VALIDATE=Validation contrat @@ -70,28 +70,29 @@ Notify_PROJECT_CREATE=Création de projet Notify_TASK_CREATE=Tâche créée Notify_TASK_MODIFY=Tâche modifiée Notify_TASK_DELETE=Tâche supprimée -Notify_EXPENSE_REPORT_VALIDATE=Expense report validated (approval required) -Notify_EXPENSE_REPORT_APPROVE=Expense report approved -Notify_HOLIDAY_VALIDATE=Leave request validated (approval required) -Notify_HOLIDAY_APPROVE=Leave request approved +Notify_EXPENSE_REPORT_VALIDATE=Rapport de dépenses validé (approbation requise) +Notify_EXPENSE_REPORT_APPROVE=Note de frais approuvé +Notify_HOLIDAY_VALIDATE=Demande de congé validée (approbation requise) +Notify_HOLIDAY_APPROVE=Demande de congé approuvée SeeModuleSetup=Voir la configuration du module %s NbOfAttachedFiles=Nombre de fichiers/documents liés TotalSizeOfAttachedFiles=Taille totale fichiers/documents liés MaxSize=Taille maximum AttachANewFile=Ajouter un nouveau fichier/document LinkedObject=Objet lié -NbOfActiveNotifications=Number of notifications (no. of recipient emails) +NbOfActiveNotifications=Nombre de notifications (nb d'e-mails de destinataires) PredefinedMailTest=__(Hello)__,\nCeci est un mail de test envoyé à __EMAIL__.\nLes deux lignes sont séparées par un saut de ligne.\n\n__USER_SIGNATURE__ PredefinedMailTestHtml=__(Hello)__\nCeci est un message de test (le mot test doit être en gras).
Les 2 lignes sont séparées par un retour à la ligne.

__SIGNATURE__ -PredefinedMailContentSendInvoice=__(Hello)__\n\nPlease find attached invoice __REF__\n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ -PredefinedMailContentSendInvoiceReminder=__(Hello)__\n\nWe would like to warn you that the invoice __REF__ seems to have not been paid. The invoice is attached, as a reminder.\n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ -PredefinedMailContentSendProposal=__(Hello)__\n\nPlease find attached commercial proposal __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentContract=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendInvoice=__(Bonjour)__\n\nVeuillez trouver la facture ci-jointe __REF__\n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(Cordialement)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendInvoiceReminder=__(Bonjour)__\n\nNous tenons à vous avertir que la facture __REF__ ne semble pas avoir été payée. La facture est jointe, à titre de rappel.\n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(Cordialement)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendProposal=__(Bonjour)__\n\nVeuillez trouver ci-joint la proposition commerciale __REF__\n\n\n__(Cordialement)__\n\n__USER_SIGNATURE__ PredefinedMailContentSendSupplierProposal=__(Hello)__\n\nVeuillez trouver, ci-joint, une demande de prix avec la référence __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ -PredefinedMailContentSendOrder=__(Hello)__\n\nPlease find attached order __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ -PredefinedMailContentSendSupplierOrder=__(Hello)__\n\nPlease find attached our order __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ -PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find attached invoice __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ -PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find attached shipping __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ -PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find attached intervention __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendOrder=__(Hello)__\n\nVeuillez trouver, ci-joint, la commande __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendSupplierOrder=__(Hello)__\n\nVeuillez trouver ci-joint notre commande __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nVeuillez trouver la facture ci-jointe __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendShipping=__(Hello)__\n\nVeuillez trouver ci-joint l'expédition __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendFichInter=__(Hello)__\n\nVeuillez trouver l'intervention ci-jointe __REF__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ PredefinedMailContentThirdparty=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ PredefinedMailContentUser=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ PredefinedMailContentLink=Vous pouvez cliquer sur le lien ci-dessous pour effectuer votre paiement si ce n'est déjà fait.\n\n%s\n\n @@ -175,7 +176,7 @@ EnableGDLibraryDesc=Vous devez activer ou installer la librairie GD avec votre P ProfIdShortDesc=Id prof. %s est une information qui dépend du pays du tiers.
Par exemple, pour le pays %s, il s'agit du code %s. DolibarrDemo=Démonstration de Dolibarr ERP/CRM StatsByNumberOfUnits=Statistiques de quantités de produits/services -StatsByNumberOfEntities=Statistics in number of referring entities (no. of invoice, or order...) +StatsByNumberOfEntities=Statistiques en nombre d'entités référantes (nb de factures, ou commandes...) NumberOfProposals=Nombre de propositions commerciales NumberOfCustomerOrders=Nombre de commandes clients NumberOfCustomerInvoices=Nombre de factures clients @@ -191,7 +192,7 @@ NumberOfUnitsSupplierInvoices=Quantités présentes dans les factures fournisseu EMailTextInterventionAddedContact=Une nouvelle intervention %s vous a été assignée EMailTextInterventionValidated=La fiche intervention %s vous concernant a été validée. EMailTextInvoiceValidated=La facture %s vous concernant a été validée. -EMailTextInvoicePayed=The invoice %s has been paid. +EMailTextInvoicePayed=La facture %s a été payée. EMailTextProposalValidated=La proposition commerciale %s vous concernant a été validée. EMailTextProposalClosedSigned=La proposition %s a été clôturée signée. EMailTextOrderValidated=La commande %s vous concernant a été validée. @@ -201,10 +202,10 @@ EMailTextOrderApprovedBy=La commande %s a été approuvée par %s. EMailTextOrderRefused=La commande %s a été refusée. EMailTextOrderRefusedBy=La commande %s a été refusée par %s. EMailTextExpeditionValidated=L'expédition %s a été validée. -EMailTextExpenseReportValidated=The expense report %s has been validated. -EMailTextExpenseReportApproved=The expensereport %s has been approved. -EMailTextHolidayValidated=The leave request %s has been validated. -EMailTextHolidayApproved=The leave request %s has been approved. +EMailTextExpenseReportValidated=La note de frais %s a été validée. +EMailTextExpenseReportApproved=Le expensereport %s a été approuvé. +EMailTextHolidayValidated=La demande de congé %s a été validée. +EMailTextHolidayApproved=La demande de congé %s a été approuvée. ImportedWithSet=Lot d'importation (Import key) DolibarrNotification=Notification automatique ResizeDesc=Entrer la nouvelle largeur OU la nouvelle hauteur. Le ratio d'aspect est conservé lors du redimensionnement… @@ -243,7 +244,7 @@ YourPasswordMustHaveAtLeastXChars=Votre mot de passe doit avoir au moins &tag=value
à n'importe quelles de ces URL (obligatoire pour le paiement libre uniquement) pour ajouter votre propre "code commentaire" du paiement. SetupPayBoxToHavePaymentCreatedAutomatically=Configurez votre URL PayBox à %s pour avoir le paiement créé automatiquement si validé par Paybox. YourPaymentHasBeenRecorded=Cette page confirme que votre paiement a bien été enregistré. Merci. diff --git a/htdocs/langs/fr_FR/paypal.lang b/htdocs/langs/fr_FR/paypal.lang index 2e342fe9e5a..2d94ef5c1ff 100644 --- a/htdocs/langs/fr_FR/paypal.lang +++ b/htdocs/langs/fr_FR/paypal.lang @@ -11,7 +11,7 @@ PAYPAL_SSLVERSION=Curl Version SSL PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Proposer le paiement intégral (Carte+Paypal) ou Paypal seul PaypalModeIntegral=Intégral PaypalModeOnlyPaypal=PayPal seul -ONLINE_PAYMENT_CSS_URL=Optional URL of CSS stylesheet on online payment page +ONLINE_PAYMENT_CSS_URL=URL facultative de la feuille de style CSS sur la page de paiement en ligne ThisIsTransactionId=Voici l'identifiant de la transaction: %s PAYPAL_ADD_PAYMENT_URL=Ajouter l'URL de paiement Paypal lors de l'envoi d'un document par email NewOnlinePaymentReceived=Nouveau paiement en ligne reçu @@ -27,8 +27,8 @@ ShortErrorMessage=Message d'erreur court ErrorCode=Code erreur ErrorSeverityCode=Code d'erreur sévérité OnlinePaymentSystem=Système de paiement en ligne -PaypalLiveEnabled=PayPal live enabled (otherwise test/sandbox mode) -PaypalImportPayment=Import PayPal payments +PaypalLiveEnabled=PayPal live activé (sinon test / mode sandbox) +PaypalImportPayment=Importer des paiements PayPal PostActionAfterPayment=Actions complémentaires après paiement ARollbackWasPerformedOnPostActions=Une annulation a été effectuée sur toutes les actions Post paiement. Vous devez compléter les actions complémentaires manuellement si elles sont nécessaires. -ValidationOfPaymentFailed=Validation of payment has failed +ValidationOfPaymentFailed=La validation du paiement a échoué diff --git a/htdocs/langs/fr_FR/printing.lang b/htdocs/langs/fr_FR/printing.lang index 62cad4af2c5..e93ce936de1 100644 --- a/htdocs/langs/fr_FR/printing.lang +++ b/htdocs/langs/fr_FR/printing.lang @@ -2,7 +2,7 @@ Module64000Name=Impressions Directe Module64000Desc=Activer le système d'impression Directe PrintingSetup=Réglages du module Impression Directe -PrintingDesc=Ce module ajoute un bouton Imprimer afin d'envoyer directement les documents à une imprimante (sans ouvrir le document dans une application). +PrintingDesc=Ce module ajoute un bouton Imprimer à différents modules pour permettre aux documents d'être imprimés directement sur une imprimante sans avoir à ouvrir le document dans une autre application. MenuDirectPrinting=Travaux d'impressions directe DirectPrint=Impressions Directe PrintingDriverDesc=Paramètres de configuration pour le driver d'impression @@ -19,7 +19,7 @@ UserConf=Configuration par utilisateur PRINTGCP_INFO=Configuration Google OAuth API PRINTGCP_AUTHLINK=Authentification PRINTGCP_TOKEN_ACCESS=Token OAuth Google Cloud Impression -PrintGCPDesc=Ce driver permet d'envoyer des documents directement à l'imprimante via Google Cloud Print +PrintGCPDesc=Ce pilote permet d'envoyer des documents directement à une imprimante à l'aide de Google Cloud Print. GCP_Name=Nom GCP_displayName=Nom affiché GCP_Id=Id imprimante @@ -27,7 +27,7 @@ GCP_OwnerName=Nom propriétaire GCP_State=Etat imprimante GCP_connectionStatus=Etats en ligne GCP_Type=Type d'imprimante -PrintIPPDesc=Ce driver permet d'envoyer les documents directement à une imprimante. Il requiert un système Linux avec CUPS installé. +PrintIPPDesc=Ce pilote permet d’envoyer des documents directement à une imprimante. Il nécessite un système Linux avec CUPS installé. PRINTIPP_HOST=Serveur d'impression PRINTIPP_PORT=Port PRINTIPP_USER=Identifiant diff --git a/htdocs/langs/fr_FR/products.lang b/htdocs/langs/fr_FR/products.lang index eacad26cc39..3c66c355246 100644 --- a/htdocs/langs/fr_FR/products.lang +++ b/htdocs/langs/fr_FR/products.lang @@ -17,12 +17,12 @@ Reference=Référence NewProduct=Nouveau produit NewService=Nouveau service ProductVatMassChange=Changement TVA en masse -ProductVatMassChangeDesc=This page can be used to modify a VAT rate defined on products or services from one value to another. Warning, this change is global/done on all database. +ProductVatMassChangeDesc=Cette page peut être utilisée pour modifier un taux de TVA défini sur des produits ou services d’une valeur à une autre. Attention, cette modification est globale / effectuée sur toutes les bases. MassBarcodeInit=Initialisation codes-barre MassBarcodeInitDesc=Cette page peut être utilisée pour initialiser un code-barre sur des objets qui ne disposent pas de code-barre défini. Vérifiez avant que l'installation du module code-barres est complète. ProductAccountancyBuyCode=Code comptable (achat) ProductAccountancySellCode=Code comptable (vente) -ProductAccountancySellIntraCode=Accounting code (sale intra-Community) +ProductAccountancySellIntraCode=Code comptable (vente intra-communautaire) ProductAccountancySellExportCode=Code comptable (vente à l'export) ProductOrService=Produit ou Service ProductsAndServices=Produits et Services @@ -97,8 +97,8 @@ NoteNotVisibleOnBill=Note (non visible sur les factures, propals...) ServiceLimitedDuration=Si produit de type service à durée limitée : MultiPricesAbility=Plusieurs niveaux de prix par produit/service (chaque client est dans un et un seul niveau) MultiPricesNumPrices=Nombre de prix -AssociatedProductsAbility=Activate virtual products (kits) -AssociatedProducts=Virtual products +AssociatedProductsAbility=Activer des produits virtuels (kits) +AssociatedProducts=Produits virtuels AssociatedProductsNumber=Nbre de sous-produits constituant ce produit virtuel ParentProductsNumber=Nbre de produits virtuels/packages parent ParentProducts=Produits parents @@ -134,7 +134,7 @@ PredefinedServicesToSell=Services prédéfinis en vente PredefinedProductsAndServicesToSell=Produits/Services prédéfinis en vente PredefinedProductsToPurchase=Produits prédéfinis à acheter PredefinedServicesToPurchase=Services prédéfinis à acheter -PredefinedProductsAndServicesToPurchase=Predefined products/services to purchase +PredefinedProductsAndServicesToPurchase=Produits / services prédéfinis à l'achat NotPredefinedProducts=Pas de produit/service prédéfini GenerateThumb=Générer la vignette ServiceNb=Service no %s @@ -145,7 +145,7 @@ Finished=Produit manufacturé RowMaterial=Matière première CloneProduct=Cloner produit/service ConfirmCloneProduct=Êtes-vous sûr de vouloir cloner le produit ou service %s ? -CloneContentProduct=Clone all main information of product/service +CloneContentProduct=Cloner toutes les informations principales du produit / service ClonePricesProduct=Cloner les prix CloneCompositionProduct=Cloner le produits packagés CloneCombinationsProduct=Cloner les variantes @@ -233,7 +233,7 @@ BarCodeDataForThirdparty=Information de code barre du produit %s : ResetBarcodeForAllRecords=Définir la valeur de code-barres pour tous les enregistrements (cela réinitialiser également les valeurs de code-barres déjà défini par des nouvelles) PriceByCustomer=Prix différents pour chaque client PriceCatalogue=Un seul prix de vente par produit/service -PricingRule=Rules for selling prices +PricingRule=Règles de vente AddCustomerPrice=Ajouter prix par client ForceUpdateChildPriceSoc=Définir le même prix sur les filiales des clients PriceByCustomerLog=Historique des prix clients précédents @@ -293,8 +293,8 @@ ProductSheet=Fiche produit ServiceSheet=Fiche service PossibleValues=Valeurs possibles GoOnMenuToCreateVairants=Allez sur le menu %s - %s pour ajouter les attributs de variantes (comme les couleurs, tailles, ...) -UseProductFournDesc=Use supplier descriptions of products in supplier documents -ProductSupplierDescription=Supplier description for the product +UseProductFournDesc=Utiliser les descriptions des produits des fournisseurs dans les documents fournisseurs +ProductSupplierDescription=Description du fournisseur du produit #Attributes VariantAttributes=Attributs de variante ProductAttributes=Attributs de variantes pour les produits @@ -330,8 +330,8 @@ NbOfDifferentValues=Nb de valeurs différentes NbProducts=Nb de produits ParentProduct=Produit parent HideChildProducts=Cacher les variantes de produits -ShowChildProducts=Show variant products -NoEditVariants=Go to Parent product card and edit variants price impact in the variants tab +ShowChildProducts=Afficher les variantes de produits +NoEditVariants=Accédez à la fiche produit parent et modifiez l'impact sur le prix des variantes dans l'onglet variantes. ConfirmCloneProductCombinations=Êtes-vous sur de vouloir copier les variantes du produits vers l'autre produit parent avec la référence donnée ? CloneDestinationReference=Référence du produit cible ErrorCopyProductCombinations=Une erreur s'est produite lors de la copie des variantes de produit diff --git a/htdocs/langs/fr_FR/projects.lang b/htdocs/langs/fr_FR/projects.lang index c7819e30c83..e279650cf37 100644 --- a/htdocs/langs/fr_FR/projects.lang +++ b/htdocs/langs/fr_FR/projects.lang @@ -39,8 +39,8 @@ ShowProject=Afficher projet ShowTask=Afficher tâche SetProject=Définir projet NoProject=Aucun projet défini ou responsable -NbOfProjects=No. of projects -NbOfTasks=No. of tasks +NbOfProjects=Nombre de projets +NbOfTasks=Nombre de tâches TimeSpent=Temps consommé TimeSpentByYou=Temps consommé par vous TimeSpentByUser=Temps consommé par utilisateur @@ -169,8 +169,8 @@ SelectElement=Séléctionnez l'élément AddElement=Associer l'élément # Documents models DocumentModelBeluga=Modèle de document project pour l'aperçu des objets liées -DocumentModelBaleine=Project document template for tasks -DocumentModelTimeSpent=Project report template for time spent +DocumentModelBaleine=Modèle de document de projet pour les tâches +DocumentModelTimeSpent=Modèle de rapport de projet pour le temps passé PlannedWorkload=Charge de travail prévue PlannedWorkloadShort=Charge de travail ProjectReferers=Objets associés @@ -184,7 +184,7 @@ ProjectsWithThisUserAsContact=Projets avec cet utilisateur comme contact TasksWithThisUserAsContact=Tâches assignées à cet utilisateur ResourceNotAssignedToProject=Non assigné au projet ResourceNotAssignedToTheTask=Non assigné à la tache -NoUserAssignedToTheProject=No users assigned to this project +NoUserAssignedToTheProject=Aucun utilisateur assigné à ce projet TimeSpentBy=Temps consommé par TasksAssignedTo=Tâches assignées à AssignTaskToMe=M'assigner la tâche @@ -195,7 +195,7 @@ ProjectOverview=Vue d'ensemble ManageTasks=Utiliser les projets pour suivre les tâches et/ou saisir du temps consommé (feuilles de temps) ManageOpportunitiesStatus=Utiliser les projets pour suivre les affaires / opportunités ProjectNbProjectByMonth=Nb de projets créés par mois -ProjectNbTaskByMonth=No. of created tasks by month +ProjectNbTaskByMonth=Nombre de tâches créées par mois ProjectOppAmountOfProjectsByMonth=Montant des opportunités par mois ProjectWeightedOppAmountOfProjectsByMonth=Montant pondéré des opportunités par mois ProjectOpenedProjectByOppStatus=Opportunités ouvertes par statut d'opportunité @@ -232,5 +232,5 @@ DontHavePermissionForCloseProject=Vous n'êtes pas autorisé à fermer le projet DontHaveTheValidateStatus=Le projet %s doit être ouvert pour être fermé RecordsClosed=%s projet(s) fermé(s) SendProjectRef=A propos du projet %s -ModuleSalaryToDefineHourlyRateMustBeEnabled=Module 'Payment of employee wages' must be enabled to define employee hourly rate to have time spent valorized +ModuleSalaryToDefineHourlyRateMustBeEnabled=Le module 'Paiement des salaires des employés' doit être activé pour définir le taux horaire des employés afin de valoriser le temps passé NewTaskRefSuggested=Réf de tâche déjà utilisée, une nouvelle réference de tâche est suggérée diff --git a/htdocs/langs/fr_FR/propal.lang b/htdocs/langs/fr_FR/propal.lang index 0c9f8d9a9b2..9dffafa301b 100644 --- a/htdocs/langs/fr_FR/propal.lang +++ b/htdocs/langs/fr_FR/propal.lang @@ -33,7 +33,7 @@ PropalStatusSigned=Signée (à facturer) PropalStatusNotSigned=Non signée (fermée) PropalStatusBilled=Facturée PropalStatusDraftShort=Brouillon -PropalStatusValidatedShort=Validated (open) +PropalStatusValidatedShort=Validé (ouvert) PropalStatusClosedShort=Fermée PropalStatusSignedShort=Signée PropalStatusNotSignedShort=Non signée @@ -55,7 +55,7 @@ NoDraftProposals=Pas de propositions brouillons CopyPropalFrom=Créer proposition/devis par recopie d'un proposition existante CreateEmptyPropal=Créer proposition/devis vierge ou avec la liste des produits/services DefaultProposalDurationValidity=Délai de validité par défaut (en jours) -UseCustomerContactAsPropalRecipientIfExist=Utiliser l'adresse de contact suivi client si définie plutôt que l'adresse du tiers comme destinataire des propositions +UseCustomerContactAsPropalRecipientIfExist=Utiliser l'adresse de 'contact suivi client' si définie plutôt que l'adresse du tiers comme destinataire des propositions ClonePropal=Cloner proposition commerciale ConfirmClonePropal=Êtes-vous sûr de vouloir cloner la proposition commerciale %s ? ConfirmReOpenProp=Êtes-vous sûr de vouloir réouvrir la proposition commerciale %s ? diff --git a/htdocs/langs/fr_FR/resource.lang b/htdocs/langs/fr_FR/resource.lang index 05c91f0432a..be7547b36da 100644 --- a/htdocs/langs/fr_FR/resource.lang +++ b/htdocs/langs/fr_FR/resource.lang @@ -5,7 +5,7 @@ DeleteResource=Effacer ressource ConfirmDeleteResourceElement=Confirmer la suppression de cette ressource ? NoResourceInDatabase=Pas de ressource en base NoResourceLinked=Aucune ressource liée - +ActionsOnResource=Événements liés à cette ressource ResourcePageIndex=Liste des ressources ResourceSingular=Resource ResourceCard=Fiche diff --git a/htdocs/langs/fr_FR/salaries.lang b/htdocs/langs/fr_FR/salaries.lang index 6e36ddca890..ac9510d110f 100644 --- a/htdocs/langs/fr_FR/salaries.lang +++ b/htdocs/langs/fr_FR/salaries.lang @@ -1,10 +1,11 @@ # Dolibarr language file - Source file is en_US - salaries SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Compte comptable utilisé pour les utilisateurs -SALARIES_ACCOUNTING_ACCOUNT_PAYMENT_Desc=Le compte comptable défini sur la carte utilisateur sera utilisé uniquement pour la comptabilité auxiliaire. Celui-ci sera utilisé pour le grand livre et comme valeur par défaut de la comptabilité auxiliaire si le compte dédié de l'utilisateur n'est pas défini. +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT_Desc=Le compte de comptabilité dédié défini sur la carte d’utilisateur sera utilisé pour la comptabilité Subledger uniquement. Celui-ci sera utilisé pour le grand livre et comme valeur par défaut de la comptabilité Subledger si le compte de comptabilité utilisateur dédié sur utilisateur n'est pas défini. SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Compte comptable par défaut pour les paiements de salaires Salary=Salaire Salaries=Salaires NewSalaryPayment=Nouveau règlement de salaire +AddSalaryPayment=Ajouter un paiement de salaire SalaryPayment=Règlement salaire SalariesPayments=Règlements des salaires ShowSalaryPayment=Afficher règlement de salaire @@ -15,4 +16,4 @@ THMDescription=Cette valeur peut être utilisé pour calculer le coût horaire c TJMDescription=Cette valeur est actuellement seulement une information et n'est utilisé pour aucun calcul LastSalaries=Les %s derniers règlements de salaires AllSalaries=Tous les règlements de salaires -SalariesStatistics=Statistiques salaires +SalariesStatistics=Statistiques salariales diff --git a/htdocs/langs/fr_FR/stocks.lang b/htdocs/langs/fr_FR/stocks.lang index 5898f7384e5..8cd53d0aed4 100644 --- a/htdocs/langs/fr_FR/stocks.lang +++ b/htdocs/langs/fr_FR/stocks.lang @@ -44,7 +44,6 @@ TransferStock=Transférer stock MassStockTransferShort=Transfert stock en masse StockMovement=Mouvement de stock StockMovements=Mouvements de stock -LabelMovement=Libellé du mouvement NumberOfUnit=Nombre de pièces UnitPurchaseValue=Prix d'achat unitaire StockTooLow=Stock insuffisant @@ -55,20 +54,20 @@ PMPValueShort=PMP EnhancedValueOfWarehouses=Valorisation des stocks UserWarehouseAutoCreate=Créer automatiquement un stock/entrepôt propre à l'utilisateur lors de sa création AllowAddLimitStockByWarehouse=Autoriser l'ajout d'une limite et d'un stock désiré par produit et entrepôt à la place de produit seul -IndependantSubProductStock=Le stock du produit et le stock des sous-produits sont indépendant +IndependantSubProductStock=Le stock de produits et le stock de sous-produits sont indépendants QtyDispatched=Quantité ventilée QtyDispatchedShort=Qté ventilée QtyToDispatchShort=Qté à ventiler OrderDispatch=Biens reçus -RuleForStockManagementDecrease=Règle de gestion des décrémentations automatiques de stock (la décrémentation manuelle est toujours possible, même si une décrémentation automatique est activée) -RuleForStockManagementIncrease=Règle de gestion des incrémentations de stock (l'incrémentation manuelle est toujours possible, même si une incrémentation automatique est activée) -DeStockOnBill=Décrémenter les stocks physiques sur validation des factures/avoirs clients -DeStockOnValidateOrder=Décrémenterr les stocks physiques sur validation des commandes clients +RuleForStockManagementDecrease=Choisissez Règle pour la réduction automatique du stock (la réduction manuelle est toujours possible, même si une règle de diminution automatique est activée). +RuleForStockManagementIncrease=Choisissez Règle pour augmentation de stock automatique (une augmentation manuelle est toujours possible, même si une règle d’augmentation automatique est activée) +DeStockOnBill=Diminution des stocks réels lors de la validation de la facture client / note de crédit +DeStockOnValidateOrder=Diminuer les stocks réels lors de la validation de la commande client DeStockOnShipment=Décrémenter les stocks physiques sur validation des expéditions -DeStockOnShipmentOnClosing=Décrémenter les stocks phisiques au classement "clôturée" de l'expédition -ReStockOnBill=Incrémenter les stocks physiques sur validation des factures/avoirs fournisseurs -ReStockOnValidateOrder=Incrémenter les stocks physiques sur approbation des commandes fournisseurs -ReStockOnDispatchOrder=Incrémenter les stocks physiques sur ventilation manuelle dans les entrepôts, après réception de la marchandise +DeStockOnShipmentOnClosing=Décrémenter les stocks physiques au classement "clôturée" de l'expédition +ReStockOnBill=Augmenter les stocks réels lors de la validation de la facture fournisseur / de la note de crédit +ReStockOnValidateOrder=Augmenter les stocks réels lors de l'approbation des bons de commande +ReStockOnDispatchOrder=Augmenter les stocks réels lors de l'expédition manuelle dans l'entrepôt, après la réception de la commande fournisseur OrderStatusNotReadyToDispatch=La commande n'a pas encore ou n'a plus un statut permettant une ventilation en stock. StockDiffPhysicTeoric=Explication de l'écart stock physique-virtuel NoPredefinedProductToDispatch=Pas de produits prédéfinis dans cet objet. Aucune ventilation en stock n'est donc à faire. @@ -130,10 +129,11 @@ RecordMovement=Enregistrer transfert ReceivingForSameOrder=Réceptions pour cette commande StockMovementRecorded=Mouvement de stocks enregistré RuleForStockAvailability=Règles d'exigence sur les stocks -StockMustBeEnoughForInvoice=Le niveau de stock doit être suffisant pour ajouter ce produit/service à la facture (la vérification est faite sur le stock réel lors de l'ajout de la ligne de facture, quelquesoit la règle de modification automatique de stock) -StockMustBeEnoughForOrder=Le niveau de stock doit être suffisant pour ajouter ce produit/service à la commande (la vérification est faite sur le stock réel lors de l'ajout de la ligne de commande, quelquesoit la règle de modification automatique de stock) -StockMustBeEnoughForShipment= Le niveau de stock doit être suffisant pour ajouter ce produit/service à l'expédition (la vérification est faite sur le stock réel lors de l'ajout de la ligne à l'expédition, quelquesoit la règle de modification automatique de stock) +StockMustBeEnoughForInvoice=Le niveau de stock doit être suffisant pour ajouter un produit / service à la facture (le contrôle est effectué sur le stock réel actuel lors de l'ajout d'une ligne dans la facture, quelle que soit la règle de changement de stock automatique). +StockMustBeEnoughForOrder=Le niveau de stock doit être suffisant pour ajouter un produit / service à la commande (le contrôle est effectué sur le stock réel actuel lors de l'ajout d'une ligne à la commande, quelle que soit la règle de changement de stock automatique) +StockMustBeEnoughForShipment= Le niveau de stock doit être suffisant pour ajouter un produit / service à l'envoi (le contrôle est effectué sur le stock réel actuel lors de l'ajout d'une ligne dans l'envoi, quelle que soit la règle de changement de stock automatique) MovementLabel=Libellé du mouvement +TypeMovement=Type de mouvement DateMovement=Date de mouvement InventoryCode=Code mouvement ou inventaire IsInPackage=Inclus dans un package @@ -172,7 +172,7 @@ inventoryDraft=En service inventorySelectWarehouse=Chois de l'entrepôt inventoryConfirmCreate=Créer inventoryOfWarehouse=Enventaire pour l'entrepôt: %s -inventoryErrorQtyAdd=Erreur: une quantité est plus petite que zéro. +inventoryErrorQtyAdd=Erreur: une quantité est inférieure à zéro inventoryMvtStock=Par inventaire inventoryWarningProductAlreadyExists=Ce produit est déjà dans la liste SelectCategory=Filtre par catégorie @@ -195,12 +195,16 @@ AddInventoryProduct=Ajouter un produit à l'inventaire AddProduct=Ajouter ApplyPMP=Appliquer PMP FlushInventory=Vider l'inventaire -ConfirmFlushInventory=Confirmez vous cette action ? +ConfirmFlushInventory=Confirmez-vous cette action? InventoryFlushed=Inventaire vidé ExitEditMode=Quitter l'édition inventoryDeleteLine=Effacer ligne RegulateStock=Réguler le stock ListInventory=Liste -StockSupportServices=La gestion des stock s'applique aussi aux services +StockSupportServices=La gestion des stocks prend en charge les services StockSupportServicesDesc=Par défaut, seul les produits/services de type "produit" peuvent bénéficier d'une gestion de stock. En activant ce paramètre, et si le module Services est activé, la gestion de stock pourra être appliquée aux articles de type "service". ReceiveProducts=Recevoir produits +StockIncreaseAfterCorrectTransfer=Augmenter par correction / transfert +StockDecreaseAfterCorrectTransfer=Diminution par correction / transfert +StockIncrease=Augmentation du stock +StockDecrease=Diminution du stock diff --git a/htdocs/langs/fr_FR/users.lang b/htdocs/langs/fr_FR/users.lang index fa5e772fe7e..2a7b80c5b71 100644 --- a/htdocs/langs/fr_FR/users.lang +++ b/htdocs/langs/fr_FR/users.lang @@ -66,7 +66,7 @@ CreateDolibarrThirdParty=Créer un tiers LoginAccountDisableInDolibarr=Le compte est désactivé sur Dolibarr. UsePersonalValue=Utiliser valeur personnalisée InternalUser=Utilisateur interne -ExportDataset_user_1=Utilisateurs Dolibarr et attributs +ExportDataset_user_1=Les utilisateurs et leurs propriétés DomainUser=Utilisateur du domaine %s Reactivate=Réactiver CreateInternalUserDesc=Ce formulaire permet de créer un utilisateur interne à votre société/institution. Pour créer un utilisateur externe (client, fournisseur, ...), utilisez le bouton 'Créer compte utilisateur' qui se trouve sur la fiche du contact du tiers. @@ -93,7 +93,7 @@ NameToCreate=Nom du tiers à créer YourRole=Vos rôles YourQuotaOfUsersIsReached=Votre quota d'utilisateurs actifs est atteint ! NbOfUsers=Nombre d'utilisateurs -NbOfPermissions=Nb d'autorisations +NbOfPermissions=Nombre de permissions DontDowngradeSuperAdmin=Seul un superadministrateur peut rétrograder un superadministrateur HierarchicalResponsible=Responsable hiérarchique HierarchicView=Vue hiérarchique @@ -108,3 +108,4 @@ UserAccountancyCode=Code comptable de l'utilisateur UserLogoff=Déconnexion de l'utilisateur UserLogged=Utilisateur connecté DateEmployment=Date d'embauche +DateEmploymentEnd=Date de fin d'emploi diff --git a/htdocs/langs/fr_FR/website.lang b/htdocs/langs/fr_FR/website.lang index 8c34fa07f4c..d7d925f3c19 100644 --- a/htdocs/langs/fr_FR/website.lang +++ b/htdocs/langs/fr_FR/website.lang @@ -22,7 +22,7 @@ EditCss=Modifier les propriétés du site web EditMenu=Modifier menu EditMedias=Editer médias EditPageMeta=Modifier les propriétés de la page/conteneur -EditInLine=Edit inline +EditInLine=Editer en ligne AddWebsite=Ajouter site web Webpage=Page/contenair Web AddPage=Ajouter une page/conteneur @@ -30,7 +30,7 @@ HomePage=Page d'accueil PageContainer=Page/conteneur PreviewOfSiteNotYetAvailable=La prévisualisation de votre site web %s n'est pas disponible actuellement. Vous devez d'abord 'Importer un modèle de site web complet' ou juste 'Ajouter une page/container. RequestedPageHasNoContentYet=La page demandée avec l'id=%s ne présente encore aucun contenu ou le fichier cache .tpl.php a été supprimé. Ajoutez du contenu à la page pour résoudre cela. -SiteDeleted=Web site '%s' deleted +SiteDeleted=Site Web '%s' supprimé PageContent=Page/Contenair PageDeleted=Page/Contenair '%s' du site '%s' supprimée PageAdded=Page/Contenair '%s' ajoutée @@ -40,7 +40,7 @@ SetAsHomePage=Définir comme page d'accueil RealURL=URL réelle ViewWebsiteInProduction=Pré-visualiser le site web en utilisant l'URL de la page d'accueil SetHereVirtualHost= Utilisation avec Apache/NGinx/...
Si vous pouvez créer sur votre serveur Web (Apache, Nginx, ...) un hôte virtuel dédié avec PHP activé et un répertoire racine sur
%s
alors entrez le nom de l'hôte virtuel que vous avez créé afin que l'aperçu puisse également être fait en utilisant cet accès au serveur Web dédié au lieu d'utiliser uniquement le serveur Dolibarr. -YouCanAlsoTestWithPHPS=Use with PHP embedded server
On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running
php -S 0.0.0.0:8080 -t %s +YouCanAlsoTestWithPHPS= Utilisation avec un serveur PHP incorporé
Sous environnement de développement, vous pouvez préférer tester le site avec le serveur Web PHP intégré (PHP 5.5 requis) en exécutant
php -S 0.0. 0,0: 8080 -t %s CheckVirtualHostPerms=Vérifiez également que le virtual host a la permission %s sur les fichiers dans %s ReadPerm=Lire WritePerm=Écrire @@ -48,10 +48,10 @@ PreviewSiteServedByWebServer=Prévisualiser %s dans un nouvel onglet.
PreviewSiteServedByDolibarr=Aperçu %s dans un nouvel onglet.

Le %s sera servi par le serveur Dolibarr donc aucun serveur Web supplémentaire (comme Apache, Nginx, IIS) n'est nécessaire.
L'inconvénient est que l'URL des pages ne sont pas sexy et commencent par un chemin de votre Dolibarr.
URL servie par Dolibarr:
%s

Pour utiliser votre propre serveur web externe pour servir ce site web, créez un virtual host sur vote serveur web qui pointe sur le répertoire
%s
ensuite entrez le nom de ce virtual host et cliquer sur le bouton d'affichage de l'aperçu. VirtualHostUrlNotDefined=URL du virtual host servit par le serveur web externe non défini NoPageYet=Pas de page pour l'instant -YouCanCreatePageOrImportTemplate=You can create a new page or import a full website template +YouCanCreatePageOrImportTemplate=Vous pouvez créer une nouvelle page ou importer un modèle de site Web complet. SyntaxHelp=Aide sur quelques astuces spécifiques de syntaxe YouCanEditHtmlSourceckeditor=Vous pouvez éditer le code source en activant l'éditeur HTML avec le bouton "Source". -YouCanEditHtmlSource=
You can include PHP code into this source using tags <?php ?>. The following global variables are available: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs.

You can also include content of another Page/Container with the following syntax:
<?php includeContainer('alias_of_container_to_include'); ?>

You can make a redirect to another Page/Container with the following syntax (Note: do not output any content before a redirect):
<?php redirectToContainer('alias_of_container_to_redirect_to'); ?>

To add a link to another page, use the syntax:
<a href="alias_of_page_to_link_to.php">mylink<a>

To include a link to download a file stored into the documents directory, use the document.php wrapper:
Example, for a file into documents/ecm (need to be logged), syntax is:
<a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
For a file into documents/medias (open directory for public access), syntax is:
<a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext">
For a file shared with a share link (open access using the sharing hash key of file), syntax is:
<a href="/document.php?hashp=publicsharekeyoffile">

To include an image stored into the documents directory, use the viewimage.php wrapper:
Example, for an image into documents/medias (open directory for public access), syntax is:
<img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext">
+YouCanEditHtmlSource=
Vous pouvez inclure du code PHP dans le source en utilisant le tags <?php ?>. Les variables globales suivantes sont disponibles: $conf, $langs, $db, $mysoc, $user, $website, $websitepage, $weblang.

Vous pouvez aussi inclure le contenu d'une autre page/containeur avec la syntaxe suivante:
<?php includeContainer('alias_of_container_to_include'); ?>

Vous pouvez faire une redirection sur une autre Page/Containeur avec la syntax (Note: N'afficher pas de contenu avant un redirect):
<?php redirectToContainer('alias_of_container_to_redirect_to'); ?>

Pour ajouter un lien vers une autre page, utilisez la syntax
<a href="alias_of_page_to_link_to.php">mylink<a>

Pour inclure un lien pour télécharger un fichier stocké dans le répertoire documentsutilisez le wrapper documents.php:
Example, pour un fichier dans documents/ecm (besoin d'être loggué), la syntaxe est:
<a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
Pour un fichier dans documents/mdedias (répertoire ouvert au publique), la syntaxe est:
<a href="/document.php?modulepart=medias&file=[relative_dir]/filename.ext">.
Pour un fichier partagé avec un lien de partage (accès ouvert en utilisant la clé de partage du fichier), la syntaxe est:
<a href="/document.php?hashp=publicsharekeyoffile">

Pour inclure une image stockée dans le répertoire documents, utilisez le wrapper viewimage.php:
Example, pour une image dans documents/medias (accès ouvert), la syntax est:
<a href="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext">
ClonePage=Cloner la page/contenair CloneSite=Cloner le site SiteAdded=Site web ajouté @@ -61,9 +61,9 @@ LanguageMustNotBeSameThanClonedPage=Vous clonez une page comme traduction. La la ParentPageId=Id de la page parent WebsiteId=ID site web CreateByFetchingExternalPage=Créer une page / un conteneur en récupérant une page à partir d'une URL externe ... -OrEnterPageInfoManually=Or create page from scratch or from a page template... +OrEnterPageInfoManually=Ou créez une page à partir de rien ou à partir d'un modèle de page ... FetchAndCreate=Récupérer et Créer -ExportSite=Export website +ExportSite=Site d'exportation ImportSite=Importer modèle de site web IDOfPage=Id de page Banner=Bandeau @@ -78,7 +78,7 @@ AnotherContainer=Un autre conteneur WEBSITE_USE_WEBSITE_ACCOUNTS=Activer la table des comptes du site Web WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Activer la table pour stocker les comptes de site Web (login/pass) pour chaque site / tiers YouMustDefineTheHomePage=Vous devez d'abord définir la page d'accueil par défaut -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved to experienced user. Depending on the complexity of source page, the result of importation may differs once imported from original. Also if the source page use common CSS style or not compatible javascript, it may break the look or features of the Web site editor when working on this page. This method is faster way to have a page but it is recommanded to create your new page from scratch or from a suggested page template.
Note also that only edition of HTML source will be possible when a page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Avertissement: La création d'une page Web en important une page Web externe est réservée à un utilisateur expérimenté. Selon la complexité de la page source, le résultat de l'importation peut différer une fois importé de l'original. De même, si la page source utilise un style CSS commun ou un code JavaScript non compatible, cela peut casser l'apparence ou les fonctionnalités de l'éditeur de site Web lorsque vous travaillez sur cette page. Cette méthode est un moyen plus rapide d’avoir une page, mais il est recommandé de créer votre nouvelle page à partir de rien ou à partir d’un modèle de page suggéré.
Notez également que seule l’édition de la source HTML sera possible lorsqu’un contenu de page aura été initialisé par une capture. à partir d'une page externe (l'éditeur "en ligne" ne sera PAS disponible) OnlyEditionOfSourceForGrabbedContent=Seule l'édition de source HTML est possible lorsque le contenu a été aspiré depuis un site externe GrabImagesInto=Aspirer aussi les images trouvées dans les css et la page. ImagesShouldBeSavedInto=Les images doivent être sauvegardées dans le répertoire @@ -89,7 +89,7 @@ CorporateHomePage=Page d'accueil Entreprise EmptyPage=Page vide ExternalURLMustStartWithHttp=l'URL externe doit commencer par http:// ou https:// ZipOfWebsitePackageToImport=Fichier zip du package site Web -ShowSubcontainers=Show included containers -InternalURLOfPage=Internal URL of page -ThisPageIsTranslationOf=This page/container is translation of -ThisPageHasTranslationPages=This page/container has translation +ShowSubcontainers=Inclure contenu dynamique +InternalURLOfPage=URL interne de la page +ThisPageIsTranslationOf=Cette page / conteneur est la traduction de +ThisPageHasTranslationPages=Cette page / conteneur a traduction diff --git a/htdocs/modulebuilder/template/class/myobject.class.php b/htdocs/modulebuilder/template/class/myobject.class.php index 14989e4d4b6..6029fc7d3f9 100644 --- a/htdocs/modulebuilder/template/class/myobject.class.php +++ b/htdocs/modulebuilder/template/class/myobject.class.php @@ -321,7 +321,7 @@ class MyObject extends CommonObject * @param string $sortfield Sort field * @param int $limit limit * @param int $offset Offset - * @param array $filter Filter array + * @param array $filter Filter array. Example array('field'=>'valueforlike', 'customurl'=>...) * @param string $filtermode Filter mode (AND or OR) * @return array|int int <0 if KO, array of pages if OK */ @@ -335,7 +335,7 @@ class MyObject extends CommonObject $sql = 'SELECT'; $sql .= ' t.rowid'; - // TODO Gett all fields + // TODO Get all fields $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element. ' as t'; $sql .= ' WHERE t.entity = '.$conf->entity; // Manage filter @@ -344,7 +344,14 @@ class MyObject extends CommonObject foreach ($filter as $key => $value) { if ($key=='t.rowid') { $sqlwhere[] = $key . '='. $value; - } else { + } + elseif (strpos($key,'date') !== false) { + $sqlwhere[] = $key.' = \''.$this->db->idate($value).'\''; + } + elseif ($key=='customsql') { + $sqlwhere[] = $value; + } + else { $sqlwhere[] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\''; } } diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php index 7f3f3d99ebf..852bf2a4e8d 100644 --- a/htdocs/product/stock/product.php +++ b/htdocs/product/stock/product.php @@ -868,7 +868,7 @@ if (! $variants) { print '
'; else print $langs->trans("Variable"); - print '';; + print ''; $total += $obj->reel; if (price2num($object->pmp)) $totalwithpmp += $obj->reel; $totalvalue = $totalvalue + ($object->pmp * $obj->reel); diff --git a/htdocs/projet/activity/perday.php b/htdocs/projet/activity/perday.php index e291bf84f67..23a0152c19c 100644 --- a/htdocs/projet/activity/perday.php +++ b/htdocs/projet/activity/perday.php @@ -544,7 +544,7 @@ print ''; print ''; print "\n"; -$colspan = 6+(empty($conf->global->PROJECT_TIMESHEET_DISABLEBREAK_ON_PROJECT)?0:2);; +$colspan = 6+(empty($conf->global->PROJECT_TIMESHEET_DISABLEBREAK_ON_PROJECT)?0:2); if ($conf->use_javascript_ajax) { diff --git a/htdocs/public/payment/newpayment.php b/htdocs/public/payment/newpayment.php index 5811e89aacc..9e9ee8d4fc7 100644 --- a/htdocs/public/payment/newpayment.php +++ b/htdocs/public/payment/newpayment.php @@ -642,7 +642,7 @@ if ($source && in_array($ref, array('member_ref', 'contractline_ref', 'invoice_r dol_print_error_email('BADREFINPAYMENTFORM', $langs->trans("ErrorBadLinkSourceSetButBadValueForRef", $source, $ref)); // End of page llxFooter(); - $db->close();; + $db->close(); exit; } @@ -1423,7 +1423,150 @@ if ($source == 'membersubscription') print ''."\n"; } +// Payment on donation +if ($source == 'donation') +{ + $found=true; + $langs->load("don"); + require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; + + $don=new Don($db); + $result=$don->fetch($ref); + if ($result <= 0) + { + $mesg=$don->error; + $error++; + } + else + { + $don->fetch_thirdparty(); + $object = $don; + } + + if ($action != 'dopayment') // Do not change amount if we just click on first dopayment + { + $amount=$subscription->total_ttc; + if (GETPOST("amount",'int')) $amount=GETPOST("amount",'int'); + $amount=price2num($amount); + } + + $fulltag='DON='.$don->ref.'.DAT='.dol_print_date(dol_now(),'%Y%m%d%H%M'); + if (! empty($TAG)) { $tag=$TAG; $fulltag.='.TAG='.$TAG; } + $fulltag=dol_string_unaccent($fulltag); + + // Creditor + + print ''."\n"; + + // Debitor + + print ''."\n"; + + // Amount + + print ''."\n"; + + // Tag + + print ''."\n"; + + // Shipping address + $shipToName=$don->getFullName($langs); + $shipToStreet=$don->address; + $shipToCity=$don->town; + $shipToState=$don->state_code; + $shipToCountryCode=$don->country_code; + $shipToZip=$don->zip; + $shipToStreet2=''; + $phoneNum=$don->phone; + if ($shipToName && $shipToStreet && $shipToCity && $shipToCountryCode && $shipToZip) + { + print ''; + print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''."\n"; + print ''."\n"; + } + else + { + print ''."\n"; + } + if (is_object($don->thirdparty)) print ''."\n"; + print ''."\n"; + $labeldesc = $langs->trans("PaymentSubscription"); + if (GETPOST('desc','alpha')) $labeldesc=GETPOST('desc','alpha'); + print ''."\n"; +} if (! $found && ! $mesg) $mesg=$langs->trans("ErrorBadParameters"); diff --git a/htdocs/resource/list.php b/htdocs/resource/list.php index 55dddcc0a48..07962c5b011 100644 --- a/htdocs/resource/list.php +++ b/htdocs/resource/list.php @@ -1,6 +1,7 @@ * Copyright (C) 2018 Nicolas ZABOURI + * Copyright (C) 2018 Frédéric France * * 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 @@ -22,7 +23,6 @@ * \brief Page to manage resource objects */ - require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/resource/class/dolresource.class.php'; @@ -51,6 +51,7 @@ $extrafields = new ExtraFields($db); // fetch optionals attributes and labels $extralabels=$extrafields->fetch_name_optionals_label($object->table_element); $search_array_options=$extrafields->getOptionalsFromPost($object->table_element,'','search_'); +if (! is_array($search_array_options)) $search_array_options = array(); $search_ref=GETPOST("search_ref"); $search_type=GETPOST("search_type"); @@ -196,7 +197,7 @@ if($ret == -1) { $newcardbutton=''; if ($user->rights->resource->write) { - $newcardbutton=''.$langs->trans('MenuResourceAdd').''; + $newcardbutton=''.$langs->trans('MenuResourceAdd').''; $newcardbutton.= ''; $newcardbutton.= ''; } diff --git a/htdocs/societe/agenda.php b/htdocs/societe/agenda.php index d682ad43d4d..90206ca4567 100644 --- a/htdocs/societe/agenda.php +++ b/htdocs/societe/agenda.php @@ -96,8 +96,6 @@ if (empty($reshook)) * View */ -$contactstatic = new Contact($db); - $form = new Form($db); if ($socid > 0) diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 80427437488..cd923ee6dcd 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -1427,15 +1427,6 @@ else print ''; } - // Assign a sale representative - print ''; - print ''; - print ''; - // Incoterms if (!empty($conf->incoterm->enabled)) { @@ -1453,7 +1444,7 @@ else // Customer //if ($object->prospect || $object->client || (! $object->fournisseur && ! empty($conf->global->THIRDPARTY_CAN_HAVE_CATEGORY_EVEN_IF_NOT_CUSTOMER_PROSPECT_SUPPLIER))) { - print '"; @@ -1487,6 +1478,15 @@ else print $object->showOptionals($extrafields,'edit'); } + // Assign a sale representative + print ''; + print ''; + print ''; + // Ajout du logo print ''; print ''; @@ -2048,16 +2048,6 @@ else print $object->capital != '' ? dol_escape_htmltag(price($object->capital)) : ''; print '"> '.$langs->trans("Currency".$conf->currency).''; - // Assign a Name - print ''; - print ''; - print ''; - // Default language if (! empty($conf->global->MAIN_MULTILANGS)) { @@ -2067,6 +2057,16 @@ else print ''; } + // Incoterms + if (!empty($conf->incoterm->enabled)) + { + print ''; + print ''; + print ''; + } + // Categories if (! empty($conf->categorie->enabled) && ! empty($user->rights->categorie->lire)) { @@ -2124,16 +2124,6 @@ else print ''; } - // Incoterms - if (!empty($conf->incoterm->enabled)) - { - print ''; - print ''; - print ''; - } - // Logo print ''; print ''; @@ -2152,6 +2142,16 @@ else print ''; print ''; + // Assign sale representative + print ''; + print ''; + print ''; + print '
'.dol_print_date($db->jdate($objp->dp),'day')."".$labeltype.' '.$objp->num_payment."'; if (empty($conf->global->PRODUIT_MULTIPRICES)) print price(price2num($object->price * $obj->reel, 'MT'), 1) . '
'.$langs->trans("Note").'
'.$langs->trans("Creditor"); + print ''.$creditor.''; + print ''; + print '
'.$langs->trans("ThirdParty"); + print ''; + if ($don->morphy == 'mor' && ! empty($don->societe)) print $don->societe; + else print $don->getFullName($langs); + print ''; + + // Object + + $text=''.$langs->trans("PaymentDonation").''; + if (GETPOST('desc','alpha')) $text=''.$langs->trans(GETPOST('desc','alpha')).''; + print '
'.$langs->trans("Designation"); + print ''.$text; + print ''; + print ''; + print '
'.$langs->trans("Amount"); + if (empty($amount)) + { + if (empty($conf->global->MEMBER_NEWFORM_AMOUNT)) print ' ('.$langs->trans("ToComplete"); + if (! empty($conf->global->MEMBER_EXT_URL_SUBSCRIPTION_INFO)) print ' - '.$langs->trans("SeeHere").''; + if (empty($conf->global->MEMBER_NEWFORM_AMOUNT)) print ')'; + } + print ''; + $valtoshow=''; + if (empty($amount) || ! is_numeric($amount)) + { + $valtoshow=price2num(GETPOST("newamount",'alpha'),'MT'); + // force default subscription amount to value defined into constant... + if (empty($valtoshow)) + { + if (! empty($conf->global->MEMBER_NEWFORM_EDITAMOUNT)) { + if (! empty($conf->global->MEMBER_NEWFORM_AMOUNT)) { + $valtoshow = $conf->global->MEMBER_NEWFORM_AMOUNT; + } + } + else { + if (! empty($conf->global->MEMBER_NEWFORM_AMOUNT)) { + $amount = $conf->global->MEMBER_NEWFORM_AMOUNT; + } + } + } + } + if (empty($amount) || ! is_numeric($amount)) + { + //$valtoshow=price2num(GETPOST("newamount",'alpha'),'MT'); + if (! empty($conf->global->MEMBER_MIN_AMOUNT) && $valtoshow) $valtoshow=max($conf->global->MEMBER_MIN_AMOUNT,$valtoshow); + print ''; + print ''; + } + else { + $valtoshow=$amount; + if (! empty($conf->global->MEMBER_MIN_AMOUNT) && $valtoshow) $valtoshow=max($conf->global->MEMBER_MIN_AMOUNT,$valtoshow); + print ''.price($valtoshow).''; + print ''; + print ''; + } + // Currency + print ' '.$langs->trans("Currency".$currency).''; + print ''; + print '
'.$langs->trans("PaymentCode"); + print ''.$fulltag.''; + print ''; + print ''; + print '
'.fieldLabel('AllocateCommercial','commercial_id').''; - $userlist = $form->select_dolusers('', '', 0, null, 0, '', '', 0, 0, 0, '', 0, '', '', 0, 1); - // Note: If user has no right to "see all thirdparties", we for selection of sale representative to him, so after creation he can see the record. - print $form->multiselectarray('commercial', $userlist, (count(GETPOST('commercial', 'array')) > 0?GETPOST('commercial', 'array'):(empty($user->rights->societe->client->voir)?array($user->id):array())), null, null, null, null, "90%"); - print '
' . fieldLabel('CustomersCategoriesShort', 'custcats') . ''; + print '
' . fieldLabel('CustomersProspectsCategoriesShort', 'custcats') . ''; $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 "
'.fieldLabel('AllocateCommercial','commercial_id').''; + $userlist = $form->select_dolusers('', '', 0, null, 0, '', '', 0, 0, 0, '', 0, '', '', 0, 1); + // Note: If user has no right to "see all thirdparties", we for selection of sale representative to him, so after creation he can see the record. + print $form->multiselectarray('commercial', $userlist, (count(GETPOST('commercial', 'array')) > 0?GETPOST('commercial', 'array'):(empty($user->rights->societe->client->voir)?array($user->id):array())), null, null, null, null, "90%"); + print '
'.fieldLabel('Logo','photoinput').'
'.fieldLabel('AllocateCommercial','commercial_id').''; - $userlist = $form->select_dolusers('', '', 0, null, 0, '', '', 0, 0, 0, '', 0, '', '', 0, 1); - $arrayselected = GETPOST('commercial', 'array'); - if (empty($arrayselected)) $arrayselected = $object->getSalesRepresentatives($user, 1); - print $form->multiselectarray('commercial', $userlist, $arrayselected, null, null, null, null, "90%"); - print '
'.fieldLabel('IncotermLabel','incoterm_id').''; + print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms)?$object->location_incoterms:'')); + print '
'.fieldLabel('IncotermLabel','incoterm_id').''; - print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms)?$object->location_incoterms:'')); - print '
'.fieldLabel('Logo','photoinput').'
'.fieldLabel('AllocateCommercial','commercial_id').''; + $userlist = $form->select_dolusers('', '', 0, null, 0, '', '', 0, 0, 0, '', 0, '', '', 0, 1); + $arrayselected = GETPOST('commercial', 'array'); + if (empty($arrayselected)) $arrayselected = $object->getSalesRepresentatives($user, 1); + print $form->multiselectarray('commercial', $userlist, $arrayselected, null, null, null, null, "90%"); + print '
'; print ''; @@ -2497,28 +2497,28 @@ else print ''; } - // Incoterms - if (!empty($conf->incoterm->enabled)) - { - print ''; - print '
'; - print $langs->trans('IncotermLabel'); - print ''; - if ($user->rights->societe->creer) print ''.img_edit('',1).''; - else print ' '; - print '
'; - print ''; - print ''; - if ($action != 'editincoterm') - { - print $form->textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1); - } - else - { - print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms)?$object->location_incoterms:''), $_SERVER['PHP_SELF'].'?socid='.$object->id); - } - print ''; - } + // Incoterms + if (!empty($conf->incoterm->enabled)) + { + print ''; + print '
'; + print $langs->trans('IncotermLabel'); + print ''; + if ($user->rights->societe->creer) print ''.img_edit('',1).''; + else print ' '; + print '
'; + print ''; + print ''; + if ($action != 'editincoterm') + { + print $form->textwithpicto($object->display_incoterms(), $object->libelle_incoterms, 1); + } + else + { + print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms)?$object->location_incoterms:''), $_SERVER['PHP_SELF'].'?socid='.$object->id); + } + print ''; + } // Multicurrency if (! empty($conf->multicurrency->enabled)) diff --git a/htdocs/societe/checkvat/checkVatPopup.php b/htdocs/societe/checkvat/checkVatPopup.php index 1222689358f..0c125ae3b4c 100644 --- a/htdocs/societe/checkvat/checkVatPopup.php +++ b/htdocs/societe/checkvat/checkVatPopup.php @@ -57,7 +57,7 @@ else $vatNumber = preg_replace('/\^\w/', '', $vatNumber); $countryCode=substr($vatNumber,0,2); $vatNumber=substr($vatNumber,2); - + print ''.$langs->trans("Country").': '.$countryCode.'
'; print ''.$langs->trans("VATIntraShort").': '.$vatNumber.'
'; print '
'; @@ -176,4 +176,4 @@ if ($messagetoshow) // End of page llxFooter(); -$db->close();; +$db->close(); diff --git a/htdocs/stripe/class/actions_stripe.class.php b/htdocs/stripe/class/actions_stripe.class.php index 3ecb02a6300..69dc4e33307 100644 --- a/htdocs/stripe/class/actions_stripe.class.php +++ b/htdocs/stripe/class/actions_stripe.class.php @@ -25,7 +25,7 @@ * \ingroup stripe * \brief File Class actionsstripeconnect */ -require_once DOL_DOCUMENT_ROOT.'/stripe/class/stripe.class.php';; +require_once DOL_DOCUMENT_ROOT.'/stripe/class/stripe.class.php'; $langs->load("stripe@stripe"); @@ -44,8 +44,8 @@ class ActionsStripeconnect private $config=array(); // For Hookmanager return - var $resprints; - var $results=array(); + public $resprints; + public $results=array(); /** diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php index 8915532ff22..795564984d4 100644 --- a/htdocs/supplier_proposal/list.php +++ b/htdocs/supplier_proposal/list.php @@ -360,20 +360,20 @@ if ($resql) $num = $db->num_rows($resql); $arrayofselected=is_array($toselect)?$toselect:array(); - - if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE)) + + if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $sall) { $obj = $db->fetch_object($resql); - + $id = $obj->rowid; - + header("Location: ".DOL_URL_ROOT.'/supplier_proposal/card.php?id='.$id); exit; } - + llxHeader('',$langs->trans('CommRequest'),$help_url); - + $param=''; if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index c71f7f861a3..f7f79b03414 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -237,7 +237,7 @@ function Print(id){ function TakeposPrinting(id){ var receipt; $.get("receipt.php?facid="+id, function(data, status){ - receipt=data.replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '');; + receipt=data.replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, ''); $.ajax({ type: "POST", url: 'http://global->TAKEPOS_PRINT_SERVER;?>:8111/print', diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 487d4125284..4afac8ac2cc 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -47,7 +47,7 @@ $colorbacklineimpair1='255,255,255'; // line impair $colorbacklineimpair2='255,255,255'; // line impair $colorbacklinepair1='250,250,250'; // line pair $colorbacklinepair2='250,250,250'; // line pair -$colorbacklinepairhover='238,246,252'; // line pair +$colorbacklinepairhover='230,237,244'; // line hover $colorbacklinebreak='214,218,220'; // line break $colorbackbody='255,255,255'; $colortexttitlenotab='100,60,20'; @@ -144,12 +144,12 @@ $fontsize =empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)?(empty( $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); // Hover color -$colorbacklinepairhover=((! isset($conf->global->THEME_ELDY_USE_HOVER) || (string) $conf->global->THEME_ELDY_USE_HOVER === '0')?'':($conf->global->THEME_ELDY_USE_HOVER === '1'?'edf4fb':$conf->global->THEME_ELDY_USE_HOVER)); -$colorbacklinepairchecked=((! isset($conf->global->THEME_ELDY_USE_CHECKED) || (string) $conf->global->THEME_ELDY_USE_CHECKED === '0')?'':($conf->global->THEME_ELDY_USE_CHECKED === '1'?'edf4fb':$conf->global->THEME_ELDY_USE_CHECKED)); +$colorbacklinepairhover=((! isset($conf->global->THEME_ELDY_USE_HOVER) || (string) $conf->global->THEME_ELDY_USE_HOVER === '0')?'':($conf->global->THEME_ELDY_USE_HOVER === '1'?'e6edf0':$conf->global->THEME_ELDY_USE_HOVER)); +$colorbacklinepairchecked=((! isset($conf->global->THEME_ELDY_USE_CHECKED) || (string) $conf->global->THEME_ELDY_USE_CHECKED === '0')?'':($conf->global->THEME_ELDY_USE_CHECKED === '1'?'e6edf0':$conf->global->THEME_ELDY_USE_CHECKED)); if (! empty($user->conf->THEME_ELDY_ENABLE_PERSONALIZED)) { - $colorbacklinepairhover=((! isset($user->conf->THEME_ELDY_USE_HOVER) || $user->conf->THEME_ELDY_USE_HOVER === '0')?'':($user->conf->THEME_ELDY_USE_HOVER === '1'?'edf4fb':$user->conf->THEME_ELDY_USE_HOVER)); - $colorbacklinepairchecked=((! isset($user->conf->THEME_ELDY_USE_CHECKED) || $user->conf->THEME_ELDY_USE_CHECKED === '0')?'':($user->conf->THEME_ELDY_USE_CHECKED === '1'?'edf4fb':$user->conf->THEME_ELDY_USE_CHECKED)); + $colorbacklinepairhover=((! isset($user->conf->THEME_ELDY_USE_HOVER) || $user->conf->THEME_ELDY_USE_HOVER === '0')?'':($user->conf->THEME_ELDY_USE_HOVER === '1'?'e6edf0':$user->conf->THEME_ELDY_USE_HOVER)); + $colorbacklinepairchecked=((! isset($user->conf->THEME_ELDY_USE_CHECKED) || $user->conf->THEME_ELDY_USE_CHECKED === '0')?'':($user->conf->THEME_ELDY_USE_CHECKED === '1'?'e6edf0':$user->conf->THEME_ELDY_USE_CHECKED)); } //$colortopbordertitle1=$colorbackhmenu1; @@ -2306,7 +2306,6 @@ div.tabs { padding-right: 6px !important; clear:both; height:100%; - /* background-image: linear-gradient(to top,#f6f6f6 0,#fff 8px); */ } div.tabsElem { margin-top: 1px; @@ -2464,7 +2463,7 @@ span.butAction, span.butActionDelete { } .butAction { - background: rgb(230, 236, 230) + background: rgb(225, 231, 225) /* background: rgb(230, 232, 239); */ } .butActionRefused, .butAction, .butAction:link, .butAction:visited, .butAction:hover, .butAction:active, .butActionDelete, .butActionDelete:link, .butActionDelete:visited, .butActionDelete:hover, .butActionDelete:active { @@ -2522,7 +2521,7 @@ a.butActionNewRefused>span.fa-plus-circle, a.butActionNewRefused>span.fa-plus-ci } .butActionDelete, .butActionDelete:link, .butActionDelete:visited, .butActionDelete:hover, .butActionDelete:active, .buttonDelete { - background: rgb(239, 232, 230); + background: rgb(234, 228, 225); /* border: 1px solid #633; */ color: #633; } @@ -3410,7 +3409,7 @@ table.noborder.boxtable tr td { border-bottom-width: 0 !important; } .boxtable .fichehalfright, .boxtable .fichehalfleft { - min-width: 300px; + min-width: 275px; /* increasing this, make chart on box not side by side on laptops */ } .tdboxstats { text-align: center; @@ -3885,7 +3884,7 @@ tr.visible { } .websitebar { border-bottom: 1px solid #ccc; - background: #eee; + background: #e6e6e6; display: inline-block; } .websitebar .buttonDelete, .websitebar .button { diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 72edb17b719..3422135628c 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -48,7 +48,7 @@ $colorbacklineimpair1='255,255,255'; // line impair $colorbacklineimpair2='255,255,255'; // line impair $colorbacklinepair1='248,248,248'; // line pair $colorbacklinepair2='246,246,246'; // line pair -$colorbacklinepairhover='244,244,244'; // line pair +$colorbacklinepairhover='230,237,244'; // line pair $colorbacklinebreak='214,218,220'; $colorbackbody='248,248,248'; $colortexttitlenotab='90,90,90'; @@ -3323,7 +3323,7 @@ span.dashboardlineko { /* border-bottom-width: 0 !important; */ } .boxtable .fichehalfright, .boxtable .fichehalfleft { - min-width: 300px; + min-width: 275px; } .tdboxstats { text-align: center; @@ -4705,7 +4705,7 @@ a span.select2-chosen /* Special case for the select2 add widget */ #addbox .select2-container .select2-choice > .select2-chosen, #actionbookmark .select2-container .select2-choice > .select2-chosen { - text-align: ;; + text-align: ; opacity: 0.3; } .select2-container--default .select2-selection--single .select2-selection__placeholder { diff --git a/htdocs/user/card.php b/htdocs/user/card.php index fed2cc5de64..fd6234268b2 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -1417,7 +1417,7 @@ else } if (preg_match('/dolibarr/',$dolibarr_main_authentication)) { - if ($object->pass) $valuetoshow.= preg_replace('/./i','*',$object->pass); + if ($object->pass) $valuetoshow.= ($valuetoshow?(' '.$langs->trans("or").' '):'').preg_replace('/./i','*',$object->pass); else { if ($user->admin) $valuetoshow.= ($valuetoshow?(' '.$langs->trans("or").' '):'').$langs->trans("Crypted").': '.$object->pass_indatabase_crypted; diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 23f8b09169d..6c0ff6e4915 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -2283,7 +2283,7 @@ class User extends CommonObject $label.= '
'.$langs->trans("Browser").': '.$conf->browser->name.($conf->browser->version?' '.$conf->browser->version:'').' ('.$_SERVER['HTTP_USER_AGENT'].')'; $label.= '
'.$langs->trans("Layout").': '.$conf->browser->layout; $label.= '
'.$langs->trans("Screen").': '.$_SESSION['dol_screenwidth'].' x '.$_SESSION['dol_screenheight']; - if ($conf->browser->layout == 'phone') $label.= '
'.$langs->trans("Phone").': '.$langs->trans("Yes");; + if ($conf->browser->layout == 'phone') $label.= '
'.$langs->trans("Phone").': '.$langs->trans("Yes"); if (! empty($_SESSION["disablemodules"])) $label.= '
'.$langs->trans("DisabledModules").':
'.join(', ',explode(',',$_SESSION["disablemodules"])); } if ($infologin < 0) $label=''; @@ -3179,14 +3179,15 @@ class User extends CommonObject /** * Load all objects into $this->users * - * @param string $sortorder sort order - * @param string $sortfield sort field - * @param int $limit limit page - * @param int $offset page - * @param array $filter filter output - * @return int <0 if KO, >0 if OK + * @param string $sortorder sort order + * @param string $sortfield sort field + * @param int $limit limit page + * @param int $offset page + * @param array $filter Filter array. Example array('field'=>'valueforlike', 'customurl'=>...) + * @param string $filtermode Filter mode (AND or OR) + * @return int <0 if KO, >0 if OK */ - function fetchAll($sortorder='', $sortfield='', $limit=0, $offset=0, $filter=array()) + function fetchAll($sortorder='', $sortfield='', $limit=0, $offset=0, $filter=array(), $filtermode='AND') { global $conf; @@ -3194,19 +3195,27 @@ class User extends CommonObject $sql.= ' FROM '.MAIN_DB_PREFIX .$this->table_element.' as t '; $sql.= " WHERE 1"; - //Manage filter + // Manage filter + $sqlwhere = array(); if (!empty($filter)){ foreach($filter as $key => $value) { - if (strpos($key,'date')) { - $sql.= ' AND '.$key.' = \''.$this->db->idate($value).'\''; + if ($key=='t.rowid') { + $sqlwhere[] = $key . '='. $value; + } + elseif (strpos($key,'date') !== false) { + $sqlwhere[] = $key.' = \''.$this->db->idate($value).'\''; } elseif ($key=='customsql') { - $sql.= ' AND '.$value; - } else { - $sql.= ' AND '.$key.' LIKE \'%'.$value.'%\''; + $sqlwhere[] = $value; + } + else { + $sqlwhere[] = $key . ' LIKE \'%' . $this->db->escape($value) . '%\''; } } } + if (count($sqlwhere) > 0) { + $sql .= ' AND (' . implode(' '.$filtermode.' ', $sqlwhere).')'; + } $sql.= $this->db->order($sortfield,$sortorder); if ($limit) $sql.= $this->db->plimit($limit+1,$offset); diff --git a/htdocs/variants/card.php b/htdocs/variants/card.php index 1f04e5edb87..374341c51f6 100644 --- a/htdocs/variants/card.php +++ b/htdocs/variants/card.php @@ -300,4 +300,4 @@ if ($action == 'edit') { ?> // End of page llxFooter(); -$db->close();; +$db->close(); diff --git a/htdocs/website/class/website.class.php b/htdocs/website/class/website.class.php index 3f51f669829..e8e04b641a3 100644 --- a/htdocs/website/class/website.class.php +++ b/htdocs/website/class/website.class.php @@ -880,7 +880,7 @@ class Website extends CommonObject fputs($fp, $line); // Warning: We must keep llx_ here. It is a generic SQL. - $line = 'INSERT INTO llx_website_page(rowid, fk_page, fk_website, pageurl, aliasalt, title, description, keywords, status, date_creation, tms, lang, import_key, grabbed_from, type_container, htmlheader, content)'; + $line = 'INSERT INTO llx_website_page(rowid, fk_page, fk_website, pageurl, aliasalt, title, description, image, keywords, status, date_creation, tms, lang, import_key, grabbed_from, type_container, htmlheader, content)'; $line.= " VALUES("; $line.= $objectpageold->newid."__+MAX_llx_website_page__, "; $line.= ($objectpageold->newfk_page ? $this->db->escape($objectpageold->newfk_page)."__+MAX_llx_website_page__" : "null").", "; @@ -889,6 +889,7 @@ class Website extends CommonObject $line.= "'".$this->db->escape($objectpageold->aliasalt)."', "; $line.= "'".$this->db->escape($objectpageold->title)."', "; $line.= "'".$this->db->escape($objectpageold->description)."', "; + $line.= "'".$this->db->escape($objectpageold->image)."', "; $line.= "'".$this->db->escape($objectpageold->keywords)."', "; $line.= "'".$this->db->escape($objectpageold->status)."', "; $line.= "'".$this->db->idate($objectpageold->date_creation)."', "; diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 82d30484a54..7ee5e2d8f6d 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -348,20 +348,30 @@ if ($action == 'addcontainer') { include_once DOL_DOCUMENT_ROOT.'/core/lib/geturl.lib.php'; - // Clean url to grab, so url can be - // http://www.example.com/ or http://www.example.com/dir1/ or http://www.example.com/dir1/aaa - $urltograbwithoutdomainandparam = preg_replace('/^https?:\/\/[^\/]+\/?/i', '', $urltograb); - $urltograbwithoutdomainandparam = preg_replace('/\?.*$/', '', $urltograbwithoutdomainandparam); - if (empty($urltograbwithoutdomainandparam) && ! preg_match('/\/$/', $urltograb)) + if (! preg_match('/^http/', $urltograb)) { - $urltograb.='/'; + $error++; + setEventMessages('Error URL must start with http:// or https://', null, 'errors'); + $action = 'createcontainer'; } - $pageurl = dol_sanitizeFileName(preg_replace('/[\/\.]/','-', preg_replace('/\/+$/', '', $urltograbwithoutdomainandparam))); - $urltograbdirwithoutslash = dirname($urltograb.'.'); - $urltograbdirrootwithoutslash = getRootURLFromURL($urltograbdirwithoutslash); - // Exemple, now $urltograbdirwithoutslash is https://www.dolimed.com/screenshots - // and $urltograbdirrootwithoutslash is https://www.dolimed.com + if (! $error) + { + // Clean url to grab, so url can be + // http://www.example.com/ or http://www.example.com/dir1/ or http://www.example.com/dir1/aaa + $urltograbwithoutdomainandparam = preg_replace('/^https?:\/\/[^\/]+\/?/i', '', $urltograb); + $urltograbwithoutdomainandparam = preg_replace('/\?.*$/', '', $urltograbwithoutdomainandparam); + if (empty($urltograbwithoutdomainandparam) && ! preg_match('/\/$/', $urltograb)) + { + $urltograb.='/'; + } + $pageurl = dol_sanitizeFileName(preg_replace('/[\/\.]/','-', preg_replace('/\/+$/', '', $urltograbwithoutdomainandparam))); + + $urltograbdirwithoutslash = dirname($urltograb.'.'); + $urltograbdirrootwithoutslash = getRootURLFromURL($urltograbdirwithoutslash); + // Exemple, now $urltograbdirwithoutslash is https://www.dolimed.com/screenshots + // and $urltograbdirrootwithoutslash is https://www.dolimed.com + } // Check pageurl is not already used if ($pageurl) @@ -465,6 +475,7 @@ if ($action == 'addcontainer') $tmp = $objectpage->htmlheader; preg_match_all('/]+)src=["\']([^"\'>]+)["\']([^>]*)><\/script>/i', $objectpage->htmlheader, $regs); + $errorforsubresource = 0; foreach ($regs[0] as $key => $val) { dol_syslog("We will grab the resource found into script tag ".$regs[2][$key]); @@ -500,13 +511,15 @@ if ($action == 'addcontainer') if ($tmpgeturl['curl_error_no']) { $error++; - setEventMessages('Error getting '.$urltograbbis.': '.$tmpgeturl['curl_error_msg'], null, 'errors'); + setEventMessages('Error getting script url '.$urltograbbis.': '.$tmpgeturl['curl_error_msg'], null, 'errors'); + $errorforsubresource++; $action='createcontainer'; } elseif ($tmpgeturl['http_code'] != '200') { $error++; - setEventMessages('Error getting '.$urltograbbis.': '.$tmpgeturl['http_code'], null, 'errors'); + setEventMessages('Error getting script url '.$urltograbbis.': '.$tmpgeturl['http_code'], null, 'errors'); + $errorforsubresource++; $action='createcontainer'; } else @@ -531,9 +544,10 @@ if ($action == 'addcontainer') $pagecsscontent = "\n".'