From 59220c05e4070efc304a03bde1d61277eab66b49 Mon Sep 17 00:00:00 2001 From: ATM-Nicolas Date: Thu, 5 Jul 2018 11:18:28 +0200 Subject: [PATCH 001/349] FIX : Select first mail model by default --- htdocs/core/class/html.formmail.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index 2fd38d097c0..0e2f9176492 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -299,7 +299,7 @@ class FormMail extends Form { $model_id=$this->param["models_id"]; } - $arraydefaultmessage=$this->getEMailTemplate($this->db, $this->param["models"], $user, $outputlangs, ($model_id ? $model_id : -1)); // we set -1 if model_id empty + $arraydefaultmessage=$this->getEMailTemplate($this->db, $this->param["models"], $user, $outputlangs, $model_id); // If $model_id is empty, preselect the first one } //var_dump($this->param["models"]); //var_dump($model_id); From b17c44c6653a49256640742364934e27b7b96ed1 Mon Sep 17 00:00:00 2001 From: wdammak <26695620+wdammak@users.noreply.github.com> Date: Sun, 16 Sep 2018 16:53:35 +0100 Subject: [PATCH 002/349] Update html.form.class.php Add the ability to sort products by category --- htdocs/core/class/html.form.class.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index df485ea0ede..dce2192d10d 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -2013,6 +2013,7 @@ class Form $selectFields = " p.rowid, p.label, p.ref, p.description, p.barcode, p.fk_product_type, p.price, p.price_ttc, p.price_base_type, p.tva_tx, p.duration, p.fk_price_expression"; (count($warehouseStatusArray)) ? $selectFieldsGrouped = ", sum(ps.reel) as stock" : $selectFieldsGrouped = ", p.stock"; + $selectFields .= ", pcat.fk_categorie as categorie_product_id"; $sql = "SELECT "; $sql.= $selectFields . $selectFieldsGrouped; @@ -2063,6 +2064,8 @@ class Form if (!empty($conf->global->PRODUIT_ATTRIBUTES_HIDECHILD)) { $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_attribute_combination pac ON pac.fk_product_child = p.rowid"; } + //Product category + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."categorie_product as pcat ON pcat.fk_product=p.rowid"; $sql.= ' WHERE p.entity IN ('.getEntity('product').')'; if (count($warehouseStatusArray)) @@ -2113,9 +2116,10 @@ class Form { $sql.= ' GROUP BY'.$selectFields; } - $sql.= $db->order("p.ref"); - $sql.= $db->plimit($limit, 0); - + + (! empty($conf->global->PRODUIT_SORT_BY_CATEGORY)) ? $sql.= $db->order("pcat.fk_categorie") : $sql.= $db->order("p.ref"); + $sql.= $db->plimit($limit, 0) + // Build output string dol_syslog(get_class($this)."::select_produits_list search product", LOG_DEBUG); $result=$this->db->query($sql); From 7d25311ce57a9835c8b1577a393acb603a539fab Mon Sep 17 00:00:00 2001 From: Abbes Bahfir Date: Mon, 8 Oct 2018 10:53:36 +0100 Subject: [PATCH 003/349] New : Link to create new element on linked fields --- htdocs/core/class/commonobject.class.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index a11cd3dd49e..0f07feda680 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -5799,6 +5799,10 @@ abstract class CommonObject $param_list=array_keys($param['options']); // $param_list='ObjectName:classPath' $showempty=(($required && $default != '')?0:1); $out=$form->selectForForms($param_list[0], $keyprefix.$key.$keysuffix, $value, $showempty); + list($class,$classfile)=explode(':',$param_list[0]); + if(file_exists(dol_buildpath(dirname(dirname($classfile)).'/card.php')))$url_path=dol_buildpath(dirname(dirname($classfile)).'/card.php',1); + else $url_path=dol_buildpath(dirname(dirname($classfile)).'/'.$class.'_card.php',1); + $out.=''; } elseif ($type == 'password') { From f0d8a5da9aaae861136c541cc0fb73a7e694063a Mon Sep 17 00:00:00 2001 From: Abbes Bahfir Date: Mon, 8 Oct 2018 12:39:14 +0100 Subject: [PATCH 004/349] Fix: Reminder : TODO Add Javascript code to add input fields contents to new elements urls --- htdocs/core/class/commonobject.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 0f07feda680..3c4b19e1c22 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -5803,6 +5803,7 @@ abstract class CommonObject if(file_exists(dol_buildpath(dirname(dirname($classfile)).'/card.php')))$url_path=dol_buildpath(dirname(dirname($classfile)).'/card.php',1); else $url_path=dol_buildpath(dirname(dirname($classfile)).'/'.$class.'_card.php',1); $out.=''; + //TODO Add Javascript code to add input fields contents to new elements urls } elseif ($type == 'password') { From 9be8c579d0aea997b03701beaedd8975971a5265 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Thu, 4 Oct 2018 13:30:37 +0200 Subject: [PATCH 005/349] New massaction to generate PDF --- htdocs/compta/facture/list.php | 1 + htdocs/core/actions_massactions.inc.php | 61 +++++++++++++++++++++++++ htdocs/langs/en_US/main.lang | 2 + 3 files changed, 64 insertions(+) diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 78576e4c00d..7a708e412c7 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -587,6 +587,7 @@ if ($resql) $arrayofmassactions=array( 'validate'=>$langs->trans("Validate"), + 'generate_doc'=>$langs->trans("Generate"), 'presend'=>$langs->trans("SendByMail"), 'builddoc'=>$langs->trans("PDFMerge"), ); diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index 2bb55264cf9..91ff96a6b00 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -1130,6 +1130,67 @@ if (! $error && ($massaction == 'delete' || ($action == 'delete' && $confirm == //var_dump($listofobjectthirdparties);exit; } +// Generate document foreach object according to model linked to object +// @TODO : propose model selection +if (! $error && $massaction == 'generate_doc' && $permtoread) +{ + $db->begin(); + + $objecttmp=new $objectclass($db); + $nbok = 0; + foreach($toselect as $toselectid) + { + $result=$objecttmp->fetch($toselectid); + if ($result > 0) + { + $outputlangs = $langs; + $newlang=''; + + if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id','aZ09')) $newlang=GETPOST('lang_id','aZ09'); + if ($conf->global->MAIN_MULTILANGS && empty($newlang) && isset($objecttmp->thirdparty->default_lang)) $newlang=$objecttmp->thirdparty->default_lang; // for proposal, order, invoice, ... + if ($conf->global->MAIN_MULTILANGS && empty($newlang) && isset($objecttmp->default_lang)) $newlang=$objecttmp->default_lang; // for thirdparty + if (! empty($newlang)) + { + $outputlangs = new Translate("",$conf); + $outputlangs->setDefaultLang($newlang); + } + + // To be sure vars is defined + if (empty($hidedetails)) $hidedetails=0; + if (empty($hidedesc)) $hidedesc=0; + if (empty($hideref)) $hideref=0; + if (empty($moreparams)) $moreparams=null; + + $result= $objecttmp->generateDocument($objecttmp->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams); + + if ($result <= 0) + { + setEventMessages($objecttmp->error, $objecttmp->errors, 'errors'); + $error++; + break; + } + else $nbok++; + } + else + { + setEventMessages($objecttmp->error, $objecttmp->errors, 'errors'); + $error++; + break; + } + } + + if (! $error) + { + if ($nbok > 1) setEventMessages($langs->trans("RecordsGenerated", $nbok), null, 'mesgs'); + else setEventMessages($langs->trans("RecordGenerated", $nbok), null, 'mesgs'); + $db->commit(); + } + else + { + $db->rollback(); + } +} + $parameters['toselect']=$toselect; $parameters['uploaddir']=$uploaddir; diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index fb2f2a8e9fb..2846434f460 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -86,6 +86,7 @@ GoToWikiHelpPage=Read online help (Internet access needed) GoToHelpPage=Read help RecordSaved=Record saved RecordDeleted=Record deleted +RecordGenerated=Record generated LevelOfFeature=Level of features NotDefined=Not defined DolibarrInHttpAuthenticationSoPasswordUseless=Dolibarr authentication mode is set to %s in configuration file conf.php.
This means that the password database is external to Dolibarr, so changing this field may have no effect. @@ -649,6 +650,7 @@ RecordCreatedSuccessfully=Record created successfully RecordModifiedSuccessfully=Record modified successfully RecordsModified=%s record modified RecordsDeleted=%s record deleted +RecordsGenerated=%s record generated AutomaticCode=Automatic code FeatureDisabled=Feature disabled MoveBox=Move widget From d4d921b1ccc522c1447c240b411e1480d3f513c6 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sun, 7 Oct 2018 20:42:45 +0200 Subject: [PATCH 006/349] Add massaction generate on main lists --- htdocs/comm/propal/list.php | 1 + htdocs/commande/list.php | 1 + htdocs/contrat/list.php | 1 + htdocs/expensereport/list.php | 1 + htdocs/fichinter/list.php | 1 + htdocs/fourn/commande/list.php | 1 + htdocs/fourn/facture/list.php | 1 + htdocs/fourn/product/list.php | 1 + htdocs/product/list.php | 1 + htdocs/projet/list.php | 1 + htdocs/supplier_proposal/list.php | 1 + 11 files changed, 11 insertions(+) diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index dc6e4aff17b..e5995244302 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -453,6 +453,7 @@ if ($resql) // List of mass actions available $arrayofmassactions = array( + 'generate_doc'=>$langs->trans("Generate"), 'presend'=>$langs->trans("SendByMail"), 'builddoc'=>$langs->trans("PDFMerge"), ); diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 558d8186a86..faba02b511d 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -438,6 +438,7 @@ if ($resql) // List of mass actions available $arrayofmassactions = array( + 'generate_doc'=>$langs->trans("Generate"), 'presend'=>$langs->trans("SendByMail"), 'builddoc'=>$langs->trans("PDFMerge"), 'cancelorders'=>$langs->trans("Cancel"), diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index 96f20fdaf67..815c0f10567 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -364,6 +364,7 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; // List of mass actions available $arrayofmassactions = array( + 'generate_doc'=>$langs->trans("Generate"), 'presend'=>$langs->trans("SendByMail"), 'builddoc'=>$langs->trans("PDFMerge"), ); diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index d328cd21de2..f820ca8eea1 100644 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -359,6 +359,7 @@ if ($resql) // List of mass actions available $arrayofmassactions = array( + 'generate_doc'=>$langs->trans("Generate"), 'presend'=>$langs->trans("SendByMail"), 'builddoc'=>$langs->trans("PDFMerge"), ); diff --git a/htdocs/fichinter/list.php b/htdocs/fichinter/list.php index 96a1199255c..8acf580ac78 100644 --- a/htdocs/fichinter/list.php +++ b/htdocs/fichinter/list.php @@ -269,6 +269,7 @@ if ($resql) // List of mass actions available $arrayofmassactions = array( + 'generate_doc'=>$langs->trans("Generate"), //'presend'=>$langs->trans("SendByMail"), 'builddoc'=>$langs->trans("PDFMerge"), ); diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index 06857526731..b947840c91c 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -636,6 +636,7 @@ if ($resql) // List of mass actions available $arrayofmassactions = array( + 'generate_doc'=>$langs->trans("Generate"), 'presend'=>$langs->trans("SendByMail"), 'builddoc'=>$langs->trans("PDFMerge"), ); diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index 3fa525415bb..e8a35e62804 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -466,6 +466,7 @@ if ($resql) // List of mass actions available $arrayofmassactions = array( 'validate'=>$langs->trans("Validate"), + 'generate_doc'=>$langs->trans("Generate"), //'presend'=>$langs->trans("SendByMail"), //'builddoc'=>$langs->trans("PDFMerge"), ); diff --git a/htdocs/fourn/product/list.php b/htdocs/fourn/product/list.php index 9927b6b2b5d..56cb4cc2b01 100644 --- a/htdocs/fourn/product/list.php +++ b/htdocs/fourn/product/list.php @@ -117,6 +117,7 @@ if ($fourn_id) $arrayofmassactions = array( + 'generate_doc'=>$langs->trans("Generate"), 'presend'=>$langs->trans("SendByMail"), 'builddoc'=>$langs->trans("PDFMerge"), ); diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 28f08035198..3452efddd72 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -403,6 +403,7 @@ if ($resql) // List of mass actions available $arrayofmassactions = array( + 'generate_doc'=>$langs->trans("Generate"), //'presend'=>$langs->trans("SendByMail"), //'builddoc'=>$langs->trans("PDFMerge"), ); diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index a93fac0edbd..c0bdf351c4d 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -438,6 +438,7 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; // List of mass actions available $arrayofmassactions = array( + 'generate_doc'=>$langs->trans("Generate"), // 'presend'=>$langs->trans("SendByMail"), // 'builddoc'=>$langs->trans("PDFMerge"), ); diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php index 2fcb296b433..4a65a3b6b65 100644 --- a/htdocs/supplier_proposal/list.php +++ b/htdocs/supplier_proposal/list.php @@ -381,6 +381,7 @@ if ($resql) // List of mass actions available $arrayofmassactions = array( + 'generate_doc'=>$langs->trans("Generate"), //'presend'=>$langs->trans("SendByMail"), 'builddoc'=>$langs->trans("PDFMerge"), ); From ff92572d5645c61964e1502180bf6cb9357c6b15 Mon Sep 17 00:00:00 2001 From: atm-greg Date: Thu, 18 Oct 2018 17:03:49 +0200 Subject: [PATCH 007/349] add insurance amount on loan --- .../install/mysql/migration/8.0.0-9.0.0.sql | 3 ++ htdocs/install/mysql/tables/llx_loan.sql | 1 + htdocs/loan/card.php | 18 ++++++++- htdocs/loan/class/loan.class.php | 16 +++++--- htdocs/loan/createschedule.php | 37 ++++++++++++++----- htdocs/loan/payment/payment.php | 6 +-- 6 files changed, 62 insertions(+), 19 deletions(-) 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 09908ac86f5..dd2b55e17ca 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 @@ -129,3 +129,6 @@ CREATE TABLE llx_takepos_floor_tables( UPDATE llx_c_payment_term SET decalage = nbjour, nbjour = 0 where decalage IS NULL AND type_cdr = 2; + +ALTER TABLE llx_loan ADD COLUMN insurance_amount double(24,8) DEFAULT 0; + diff --git a/htdocs/install/mysql/tables/llx_loan.sql b/htdocs/install/mysql/tables/llx_loan.sql index 7277fa85d47..1fca2af50ba 100644 --- a/htdocs/install/mysql/tables/llx_loan.sql +++ b/htdocs/install/mysql/tables/llx_loan.sql @@ -28,6 +28,7 @@ create table llx_loan fk_bank integer, capital double(24,8) default 0 NOT NULL, + insurance_amount double(24,8) default 0, datestart date, dateend date, nbterm real, diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index 25651ac842a..2a6708655a8 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -135,6 +135,7 @@ if (empty($reshook)) $object->note_private = GETPOST('note_private','none'); $object->note_public = GETPOST('note_public','none'); $object->fk_project = GETPOST('projectid','int'); + $object->insurance_amount = GETPOST('insurance_amount', 'int'); $accountancy_account_capital = GETPOST('accountancy_account_capital'); $accountancy_account_insurance = GETPOST('accountancy_account_insurance'); @@ -148,7 +149,7 @@ if (empty($reshook)) if ($id <= 0) { $error++; - setEventMessages($object->error, $object->errors, 'errors'); + setEventMessages($object->db->lastqueryerror, $object->errors, 'errors'); $action = 'create'; } } @@ -301,6 +302,9 @@ if ($action == 'create') // Rate print ''.$langs->trans("Rate").' %'; + // insurance amount + print ''.$langs->trans("Insurance").''; + // Project if (! empty($conf->projet->enabled)) { @@ -495,6 +499,18 @@ if ($id > 0) { print ''.$langs->trans("LoanCapital").''.price($object->capital,0,$outputlangs,1,-1,-1,$conf->currency).''; } + + // Insurance + if ($action == 'edit') + { + print ''.$langs->trans("Insurance").''; + print ''; + print ''; + } + else + { + print ''.$langs->trans("Insurance").''.price($object->insurance_amount,0,$outputlangs,1,-1,-1,$conf->currency).''; + } // Date start print ''.$langs->trans("DateStart").""; diff --git a/htdocs/loan/class/loan.class.php b/htdocs/loan/class/loan.class.php index 0e4542b1d20..3805704fbb9 100644 --- a/htdocs/loan/class/loan.class.php +++ b/htdocs/loan/class/loan.class.php @@ -66,6 +66,8 @@ class Loan extends CommonObject public $date_creation; public $date_modification; public $date_validation; + + public $insurance_amount; /** * @var int Bank ID @@ -106,7 +108,7 @@ class Loan extends CommonObject */ function fetch($id) { - $sql = "SELECT l.rowid, l.label, l.capital, l.datestart, l.dateend, l.nbterm, l.rate, l.note_private, l.note_public,"; + $sql = "SELECT l.rowid, l.label, l.capital, l.datestart, l.dateend, l.nbterm, l.rate, l.note_private, l.note_public, l.insurance_amount,"; $sql.= " l.paid, l.accountancy_account_capital, l.accountancy_account_insurance, l.accountancy_account_interest, l.fk_projet as fk_project"; $sql.= " FROM ".MAIN_DB_PREFIX."loan as l"; $sql.= " WHERE l.rowid = ".$id; @@ -129,6 +131,7 @@ class Loan extends CommonObject $this->rate = $obj->rate; $this->note_private = $obj->note_private; $this->note_public = $obj->note_public; + $this->insurance_amount = $obj->insurance_amount; $this->paid = $obj->paid; $this->account_capital = $obj->accountancy_account_capital; @@ -169,6 +172,8 @@ class Loan extends CommonObject // clean parameters $newcapital=price2num($this->capital,'MT'); + if (empty($this->insurance_amount)) $this->insurance_amount = 0; + $newinsuranceamount=price2num($this->insurance_amount, 'MT'); if (isset($this->note_private)) $this->note_private = trim($this->note_private); if (isset($this->note_public)) $this->note_public = trim($this->note_public); if (isset($this->account_capital)) $this->account_capital = trim($this->account_capital); @@ -205,7 +210,7 @@ class Loan extends CommonObject $sql = "INSERT INTO ".MAIN_DB_PREFIX."loan (label, fk_bank, capital, datestart, dateend, nbterm, rate, note_private, note_public,"; $sql.= " accountancy_account_capital, accountancy_account_insurance, accountancy_account_interest, entity,"; - $sql.= " datec, fk_projet, fk_user_author)"; + $sql.= " datec, fk_projet, fk_user_author, insurance_amount)"; $sql.= " VALUES ('".$this->db->escape($this->label)."',"; $sql.= " '".$this->db->escape($this->fk_bank)."',"; $sql.= " '".price2num($newcapital)."',"; @@ -221,7 +226,8 @@ class Loan extends CommonObject $sql.= " ".$conf->entity.","; $sql.= " '".$this->db->idate($now)."',"; $sql.= " ".(empty($this->fk_project)?'NULL':$this->fk_project).","; - $sql.= " ".$user->id; + $sql.= " ".$user->id.","; + $sql.= " '".price2num($newinsuranceamount)."'"; $sql.= ")"; dol_syslog(get_class($this)."::create", LOG_DEBUG); @@ -339,7 +345,8 @@ class Loan extends CommonObject $sql.= " accountancy_account_insurance = '".$this->db->escape($this->account_insurance)."',"; $sql.= " accountancy_account_interest = '".$this->db->escape($this->account_interest)."',"; $sql.= " fk_projet=".(empty($this->fk_project)?'NULL':$this->fk_project).","; - $sql.= " fk_user_modif = ".$user->id; + $sql.= " fk_user_modif = ".$user->id.","; + $sql.= " insurance_amount = '".price2num($this->db->escape($this->insurance_amount))."'"; $sql.= " WHERE rowid=".$this->id; dol_syslog(get_class($this)."::update", LOG_DEBUG); @@ -549,7 +556,6 @@ class Loan extends CommonObject { $sql = 'SELECT l.rowid, l.datec, l.fk_user_author, l.fk_user_modif,'; $sql.= ' l.tms'; - $sql.= ' FROM '.MAIN_DB_PREFIX.'loan as l'; $sql.= ' WHERE l.rowid = '.$id; dol_syslog(get_class($this).'::info', LOG_DEBUG); diff --git a/htdocs/loan/createschedule.php b/htdocs/loan/createschedule.php index 7cfd54ab998..7a68d3e38a8 100644 --- a/htdocs/loan/createschedule.php +++ b/htdocs/loan/createschedule.php @@ -35,7 +35,7 @@ $object = new Loan($db); $object->fetch($loanid); // Load translation files required by the page -$langs->loadLangs(array("loan")); +$langs->loadLangs(array("compta","bills","loan")); if ($action == 'createecheancier') { @@ -45,6 +45,7 @@ if ($action == 'createecheancier') { $date = GETPOST('hi_date'.$i,'int'); $mens = GETPOST('mens'.$i); $int = GETPOST('hi_interets'.$i); + $insurance = GETPOST('hi_insurance'.$i); $echeance = new LoanSchedule($db); @@ -53,10 +54,10 @@ if ($action == 'createecheancier') { $echeance->tms = dol_now(); $echeance->datep = $date; $echeance->amount_capital = $mens-$int; - $echeance->amount_insurance = 0; + $echeance->amount_insurance = $insurance; $echeance->amount_interest = $int; $echeance->fk_typepayment = 3; - $echeance->fk_bank = 1; + $echeance->fk_bank = 0; $echeance->fk_user_creat = $user->id; $echeance->fk_user_modif = $user->id; $result=$echeance->create($user); @@ -75,11 +76,13 @@ if ($action == 'updateecheancier') { $mens = GETPOST('mens'.$i); $int = GETPOST('hi_interets'.$i); $id = GETPOST('hi_rowid'.$i); + $insurance = GETPOST('hi_insurance'.$i); + $echeance = new LoanSchedule($db); $echeance->fetch($id); $echeance->tms = dol_now(); $echeance->amount_capital = $mens-$int; - $echeance->amount_insurance = 0; + $echeance->amount_insurance = $insurance; $echeance->amount_interest = $int; $echeance->fk_user_modif = $user->id; $result= $echeance->update($user,0); @@ -143,26 +146,33 @@ if(count($echeance->lines)>0) } print ''; print ''; -print ''; print ''; print ''; -Print ''; -Print ''; +Print ''; +Print ''; +print ''; Print ''; -Print ''; Print ''; +if (count($echeance->lines)>0) print ''; print ''."\n"; if ($object->nbterm > 0 && count($echeance->lines)==0) { $i=1; $capital = $object->capital; + $insurance = $object->insurance_amount/$object->nbterm; + $insurance = price2num($insurance, 'MT'); + $regulInsurance = price2num($object->insurance_amount - ($insurance * $object->nbterm)); while($i <$object->nbterm+1) { $mens = price2num($echeance->calcMonthlyPayments($capital, $object->rate/100, $object->nbterm-$i+1), 'MT'); @@ -172,8 +182,9 @@ if ($object->nbterm > 0 && count($echeance->lines)==0) print ''; print ''; print ''; - print ''; + print ''; print ''; + print ''; print ''; print ''."\n"; $i++; @@ -184,6 +195,9 @@ elseif(count($echeance->lines)>0) { $i=1; $capital = $object->capital; + $insurance = $object->insurance_amount/$object->nbterm; + $insurance = price2num($insurance, 'MT'); + $regulInsurance = price2num($object->insurance_amount - ($insurance * $object->nbterm)); foreach ($echeance->lines as $line){ $mens = $line->amount_capital+$line->amount_insurance+$line->amount_interest; $int = $line->amount_interest; @@ -191,13 +205,16 @@ elseif(count($echeance->lines)>0) print ''; print ''; print ''; + print ''; + print ''; if($line->datep > dol_now()){ print ''; }else{ print ''; } - print ''; + print ''; + print ''; print ''."\n"; $i++; $capital = $cap_rest; diff --git a/htdocs/loan/payment/payment.php b/htdocs/loan/payment/payment.php index 08937c1f389..ba6650c9c03 100644 --- a/htdocs/loan/payment/payment.php +++ b/htdocs/loan/payment/payment.php @@ -264,7 +264,7 @@ if ($action == 'create') print ''; print ''; print ''; - print ''; + print ''; print ''; if($line->datep > dol_now()){ print ''; @@ -221,7 +222,7 @@ elseif(count($echeance->lines)>0) print ''; print ''; print ''."\n"; $i++; From 582608cc572a982deb02a3969d8765898793dbe5 Mon Sep 17 00:00:00 2001 From: atm-greg Date: Fri, 19 Oct 2018 15:36:13 +0200 Subject: [PATCH 010/349] manage fk_bank on loanschedule --- htdocs/loan/class/paymentloan.class.php | 1 + htdocs/loan/payment/card.php | 3 +++ htdocs/loan/payment/payment.php | 26 ++++++++++++++++++++++--- htdocs/loan/schedule.php | 14 ++++++++++--- 4 files changed, 38 insertions(+), 6 deletions(-) diff --git a/htdocs/loan/class/paymentloan.class.php b/htdocs/loan/class/paymentloan.class.php index c4c29c99dce..7bed069cec2 100644 --- a/htdocs/loan/class/paymentloan.class.php +++ b/htdocs/loan/class/paymentloan.class.php @@ -530,6 +530,7 @@ class PaymentLoan extends CommonObject $result = $this->db->query($sql); if ($result) { + $this->fk_bank = $id_bank; return 1; } else diff --git a/htdocs/loan/payment/card.php b/htdocs/loan/payment/card.php index 919139bd6e3..110ad8d891c 100644 --- a/htdocs/loan/payment/card.php +++ b/htdocs/loan/payment/card.php @@ -54,6 +54,9 @@ if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->loan->del { $db->begin(); + $sql = "UPDATE ".MAIN_DB_PREFIX."loan_schedule SET fk_bank = 0 WHERE fk_bank = ".$payment->fk_bank; + $db->query($sql); + $result = $payment->delete($user); if ($result > 0) { diff --git a/htdocs/loan/payment/payment.php b/htdocs/loan/payment/payment.php index ba6650c9c03..2d81f95d034 100644 --- a/htdocs/loan/payment/payment.php +++ b/htdocs/loan/payment/payment.php @@ -24,6 +24,7 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php'; +require_once DOL_DOCUMENT_ROOT.'/loan/class/loanschedule.class.php'; require_once DOL_DOCUMENT_ROOT.'/loan/class/paymentloan.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; @@ -32,6 +33,7 @@ $langs->loadLangs(array("bills","loan")); $chid=GETPOST('id','int'); $action=GETPOST('action','aZ09'); $cancel=GETPOST('cancel','alpha'); +$line_id = GETPOST('line_id', 'int'); // Security check $socid=0; @@ -43,6 +45,17 @@ if ($user->societe_id > 0) $loan = new Loan($db); $loan->fetch($chid); +if (!empty($line_id)) +{ + $line = new LoanSchedule($db); + $res = $line->fetch($line_id); + if ($res > 0){ + $amount_capital = price($line->amount_capital); + $amount_insurance = price($line->amount_insurance); + $amount_interest = price($line->amount_interest); + } +} + /* * Actions */ @@ -121,6 +134,12 @@ if ($action == 'add_payment') setEventMessages($payment->error, $payment->errors, 'errors'); $error++; } + elseif(isset($line)) + { + $line->fk_bank = $payment->fk_bank; + $line->update($user); + } + } if (! $error) @@ -161,6 +180,7 @@ if ($action == 'create') print ''; print ''; print ''; + print ''; print ''; dol_fiche_head(); @@ -264,7 +284,7 @@ if ($action == 'create') print ''; print ''; @@ -204,17 +205,19 @@ elseif(count($echeance->lines)>0) $insurance = $object->insurance_amount/$object->nbterm; $insurance = price2num($insurance, 'MT'); $regulInsurance = price2num($object->insurance_amount - ($insurance * $object->nbterm)); + $printed = false; foreach ($echeance->lines as $line){ $mens = $line->amount_capital+$line->amount_insurance+$line->amount_interest; $int = $line->amount_interest; - $cap_rest = price2num($capital - ($mens-$int), 'MT'); $insu = ($insurance+(($i == 1) ? $regulInsurance : 0)); + $cap_rest = price2num($capital - ($mens-$int-$insu), 'MT'); + print ''; print ''; print ''; print ''; print ''; - if($line->datep > dol_now()){ + if($line->datep > dol_now() && empty($line->fk_bank)){ print ''; }else{ print ''; @@ -222,7 +225,12 @@ elseif(count($echeance->lines)>0) print ''; print ''; print ''."\n"; $i++; From 6a3661586ffdf9d6b3aa7b7d1ff471ea0d3b0644 Mon Sep 17 00:00:00 2001 From: atm-greg Date: Fri, 19 Oct 2018 16:12:21 +0200 Subject: [PATCH 011/349] create payment for the last loanschedule --- htdocs/loan/card.php | 2 +- htdocs/loan/payment/payment.php | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index 8fef98075b1..c8da0262f38 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -795,7 +795,7 @@ if ($id > 0) // Emit payment if ($object->paid == 0 && ((price2num($object->capital) > 0 && round($staytopay) < 0) || (price2num($object->capital) > 0 && round($staytopay) > 0)) && $user->rights->loan->write) { - print ''.$langs->trans("DoPayment").''; + print ''.$langs->trans("DoPayment").''; } // Classify 'paid' diff --git a/htdocs/loan/payment/payment.php b/htdocs/loan/payment/payment.php index 2d81f95d034..b38a058126f 100644 --- a/htdocs/loan/payment/payment.php +++ b/htdocs/loan/payment/payment.php @@ -34,6 +34,7 @@ $chid=GETPOST('id','int'); $action=GETPOST('action','aZ09'); $cancel=GETPOST('cancel','alpha'); $line_id = GETPOST('line_id', 'int'); +$last=GETPOST('last'); // Security check $socid=0; @@ -45,6 +46,26 @@ if ($user->societe_id > 0) $loan = new Loan($db); $loan->fetch($chid); +if($last) +{ + $ls = new LoanSchedule($db); + // grab all loanschedule + $res = $ls->fetchAll($chid); + if ($res > 0) + { + foreach ($ls->lines as $l) + { + // get the last unpaid loanschedule + if (empty($l->fk_bank)) + { + $line_id = $l->id; + break; + } + } + } + +} + if (!empty($line_id)) { $line = new LoanSchedule($db); From 44b317e03e9dd9b4b87945904627ec66021915f0 Mon Sep 17 00:00:00 2001 From: atm-greg Date: Fri, 19 Oct 2018 16:49:32 +0200 Subject: [PATCH 012/349] fix display --- htdocs/loan/schedule.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/loan/schedule.php b/htdocs/loan/schedule.php index 9fb5a4397ee..30ba126aefb 100644 --- a/htdocs/loan/schedule.php +++ b/htdocs/loan/schedule.php @@ -207,10 +207,10 @@ elseif(count($echeance->lines)>0) $regulInsurance = price2num($object->insurance_amount - ($insurance * $object->nbterm)); $printed = false; foreach ($echeance->lines as $line){ - $mens = $line->amount_capital+$line->amount_insurance+$line->amount_interest; + $mens = $line->amount_capital+$line->amount_interest; $int = $line->amount_interest; $insu = ($insurance+(($i == 1) ? $regulInsurance : 0)); - $cap_rest = price2num($capital - ($mens-$int-$insu), 'MT'); + $cap_rest = price2num($capital - ($mens-$int), 'MT'); print ''; print ''; From bfadd39e8cda84dd477e8812829c177e71a19154 Mon Sep 17 00:00:00 2001 From: Abbes Bahfir Date: Fri, 19 Oct 2018 12:46:54 +0100 Subject: [PATCH 013/349] Fix: Grant right to child classes to use Category methods --- htdocs/categories/class/categorie.class.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index a9432234793..97bceaf082c 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -65,7 +65,7 @@ class Categorie extends CommonObject * * @note This array should be remove in future, once previous constants are moved to the string value. Deprecated */ - private $MAP_ID = array( + protected $MAP_ID = array( 'product' => 0, 'supplier' => 1, 'customer' => 2, @@ -93,7 +93,7 @@ class Categorie extends CommonObject * * @note Move to const array when PHP 5.6 will be our minimum target */ - private $MAP_CAT_FK = array( + protected $MAP_CAT_FK = array( 'product' => 'product', 'customer' => 'soc', 'supplier' => 'soc', @@ -109,7 +109,7 @@ class Categorie extends CommonObject * * @note Move to const array when PHP 5.6 will be our minimum target */ - private $MAP_CAT_TABLE = array( + protected $MAP_CAT_TABLE = array( 'product' => 'product', 'customer' => 'societe', 'supplier' => 'fournisseur', @@ -125,7 +125,7 @@ class Categorie extends CommonObject * * @note Move to const array when PHP 5.6 will be our minimum target */ - private $MAP_OBJ_CLASS = array( + protected $MAP_OBJ_CLASS = array( 'product' => 'Product', 'customer' => 'Societe', 'supplier' => 'Fournisseur', @@ -141,7 +141,7 @@ class Categorie extends CommonObject * * @note Move to const array when PHP 5.6 will be our minimum target */ - private $MAP_OBJ_TABLE = array( + protected $MAP_OBJ_TABLE = array( 'product' => 'product', 'customer' => 'societe', 'supplier' => 'societe', @@ -931,7 +931,7 @@ class Categorie extends CommonObject * * @return int <0 if KO, >0 if OK */ - private function load_motherof() + protected function load_motherof() { // phpcs:enable global $conf; From 759b2b6ccff6100edbfb11259bc9d17a8c1878d6 Mon Sep 17 00:00:00 2001 From: atm-john Date: Thu, 25 Oct 2018 21:39:22 +0200 Subject: [PATCH 014/349] Extend import option to Order's card and Propal's card --- htdocs/comm/propal/card.php | 90 +++++++++++++++++- htdocs/commande/card.php | 91 ++++++++++++++++++- .../tpl/ajax/objectlinked_lineimport.tpl.php | 8 +- 3 files changed, 186 insertions(+), 3 deletions(-) diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php index 1e6df0b014f..a0aa864ebc6 100644 --- a/htdocs/comm/propal/card.php +++ b/htdocs/comm/propal/card.php @@ -695,6 +695,88 @@ if (empty($reshook)) } } } + + // add lines from objectlinked + elseif($action == 'import_lines_from_object' + && $user->rights->propal->creer + && $object->statut == Propal::STATUS_DRAFT + ) + { + $fromElement = GETPOST('fromelement'); + $fromElementid = GETPOST('fromelementid'); + $importLines = GETPOST('line_checkbox'); + + if(!empty($importLines) && is_array($importLines) && !empty($fromElement) && ctype_alpha($fromElement) && !empty($fromElementid)) + { + if($fromElement == 'commande') + { + dol_include_once('/'.$fromElement.'/class/'.$fromElement.'.class.php'); + $lineClassName = 'OrderLine'; + } + elseif($fromElement == 'propal') + { + dol_include_once('/comm/'.$fromElement.'/class/'.$fromElement.'.class.php'); + $lineClassName = 'PropaleLigne'; + } + $nextRang = count($object->lines) + 1; + $importCount = 0; + $error = 0; + foreach($importLines as $lineId) + { + $lineId = intval($lineId); + $originLine = new $lineClassName($db); + if(intval($fromElementid) > 0 && $originLine->fetch( $lineId ) > 0) + { + $originLine->fetch_optionals($lineId); + $desc = $originLine->desc; + $pu_ht = $originLine->subprice; + $qty = $originLine->qty; + $txtva = $originLine->tva_tx; + $txlocaltax1 = $originLine->localtax1_tx; + $txlocaltax2 = $originLine->localtax2_tx; + $fk_product = $originLine->fk_product; + $remise_percent = $originLine->remise_percent; + $date_start = $originLine->date_start; + $date_end = $originLine->date_end; + $ventil = 0; + $info_bits = $originLine->info_bits; + $fk_remise_except = $originLine->fk_remise_except; + $price_base_type='HT'; + $pu_ttc=0; + $type = $originLine->product_type; + $rang=$nextRang++; + $special_code = $originLine->special_code; + $origin = $originLine->element; + $origin_id = $originLine->id; + $fk_parent_line=0; + $fk_fournprice=$originLine->fk_fournprice; + $pa_ht = $originLine->pa_ht; + $label = $originLine->label; + $array_options = $originLine->array_options; + $situation_percent = 100; + $fk_prev_id = ''; + $fk_unit = $originLine->fk_unit; + $pu_ht_devise = $originLine->multicurrency_subprice; + + $res = $object->addline($desc, $pu_ht, $qty, $txtva, $txlocaltax1, $txlocaltax2, $fk_product, $remise_percent, $price_base_type, $pu_ttc, $info_bits, $type, $rang, $special_code, $fk_parent_line, $fk_fournprice, $pa_ht, $label,$date_start, $date_end,$array_options, $fk_unit, $origin, $origin_id, $pu_ht_devise, $fk_remise_except); + + if($res > 0){ + $importCount++; + }else{ + $error++; + } + } + else{ + $error++; + } + } + + if($error) + { + setEventMessages($langs->trans('ErrorsOnXLines',$error), null, 'errors'); + } + } + } include DOL_DOCUMENT_ROOT.'/core/actions_printing.inc.php'; @@ -2490,7 +2572,13 @@ if ($action == 'create') // Show links to link elements $linktoelem = $form->showLinkToObjectBlock($object, null, array('propal')); - $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem); + + $compatibleImportElementsList = false; + if($user->rights->propal->creer && $object->statut == Propal::STATUS_DRAFT) + { + $compatibleImportElementsList = array('commande','propal'); // import from linked elements + } + $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem, $compatibleImportElementsList); // Show online signature link $useonlinesignature = $conf->global->MAIN_FEATURES_LEVEL; // Replace this with 1 when feature to make online signature is ok diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 75b949ff203..4e12c32e65b 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -1319,6 +1319,88 @@ if (empty($reshook)) exit(); } + // add lines from objectlinked + if($action == 'import_lines_from_object' + && $user->rights->commande->creer + && $object->statut == Commande::STATUS_DRAFT + ) + { + $fromElement = GETPOST('fromelement'); + $fromElementid = GETPOST('fromelementid'); + $importLines = GETPOST('line_checkbox'); + + if(!empty($importLines) && is_array($importLines) && !empty($fromElement) && ctype_alpha($fromElement) && !empty($fromElementid)) + { + if($fromElement == 'commande') + { + dol_include_once('/'.$fromElement.'/class/'.$fromElement.'.class.php'); + $lineClassName = 'OrderLine'; + } + elseif($fromElement == 'propal') + { + dol_include_once('/comm/'.$fromElement.'/class/'.$fromElement.'.class.php'); + $lineClassName = 'PropaleLigne'; + } + $nextRang = count($object->lines) + 1; + $importCount = 0; + $error = 0; + foreach($importLines as $lineId) + { + $lineId = intval($lineId); + $originLine = new $lineClassName($db); + if(intval($fromElementid) > 0 && $originLine->fetch( $lineId ) > 0) + { + $originLine->fetch_optionals($lineId); + $desc = $originLine->desc; + $pu_ht = $originLine->subprice; + $qty = $originLine->qty; + $txtva = $originLine->tva_tx; + $txlocaltax1 = $originLine->localtax1_tx; + $txlocaltax2 = $originLine->localtax2_tx; + $fk_product = $originLine->fk_product; + $remise_percent = $originLine->remise_percent; + $date_start = $originLine->date_start; + $date_end = $originLine->date_end; + $ventil = 0; + $info_bits = $originLine->info_bits; + $fk_remise_except = $originLine->fk_remise_except; + $price_base_type='HT'; + $pu_ttc=0; + $type = $originLine->product_type; + $rang=$nextRang++; + $special_code = $originLine->special_code; + $origin = $originLine->element; + $origin_id = $originLine->id; + $fk_parent_line=0; + $fk_fournprice=$originLine->fk_fournprice; + $pa_ht = $originLine->pa_ht; + $label = $originLine->label; + $array_options = $originLine->array_options; + $situation_percent = 100; + $fk_prev_id = ''; + $fk_unit = $originLine->fk_unit; + $pu_ht_devise = $originLine->multicurrency_subprice; + + $res = $object->addline($desc, $pu_ht, $qty, $txtva, $txlocaltax1, $txlocaltax2, $fk_product, $remise_percent, $info_bits, $fk_remise_except, $price_base_type, $pu_ttc, $date_start, $date_end, $type, $rang, $special_code, $fk_parent_line, $fk_fournprice, $pa_ht, $label,$array_options, $fk_unit, $origin, $origin_id, $pu_ht_devise); + + if($res > 0){ + $importCount++; + }else{ + $error++; + } + } + else{ + $error++; + } + } + + if($error) + { + setEventMessages($langs->trans('ErrorsOnXLines',$error), null, 'errors'); + } + } + } + // Actions when printing a doc from card include DOL_DOCUMENT_ROOT.'/core/actions_printing.inc.php'; @@ -2639,7 +2721,14 @@ if ($action == 'create' && $user->rights->commande->creer) // Show links to link elements $linktoelem = $form->showLinkToObjectBlock($object, null, array('order')); - $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem); + + $compatibleImportElementsList = false; + if($user->rights->commande->creer + && $object->statut == Commande::STATUS_DRAFT) + { + $compatibleImportElementsList = array('commande','propal'); // import from linked elements + } + $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem,$compatibleImportElementsList); // Show online payment link $useonlinepayment = (! empty($conf->paypal->enabled) || ! empty($conf->stripe->enabled) || ! empty($conf->paybox->enabled)); diff --git a/htdocs/core/tpl/ajax/objectlinked_lineimport.tpl.php b/htdocs/core/tpl/ajax/objectlinked_lineimport.tpl.php index ad32f1b9aa8..73981ed017c 100644 --- a/htdocs/core/tpl/ajax/objectlinked_lineimport.tpl.php +++ b/htdocs/core/tpl/ajax/objectlinked_lineimport.tpl.php @@ -22,6 +22,12 @@ if (empty($conf) || ! is_object($conf)) exit; } +$objectUrl = $object->getNomUrl(0,'',0,1); +if($object->element == 'propal') +{ + $objectUrl = DOL_URL_ROOT.'/comm/propal/card.php?id='.$object->id; +} + ?> @@ -47,7 +53,7 @@ $(document).ready(function(){ }); - var $dialog = $('
') + var $dialog = $('
') .load( page + " #tablelines", function() { $("#" + formId + " #tablelines").prop("id", "ajaxloaded_tablelines"); // change id attribute From f29ee25ea751400a84c80a6f519052a3aa587a6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sat, 27 Oct 2018 11:06:45 +0200 Subject: [PATCH 015/349] remove fieldlabel and add fieldeditkey --- htdocs/commande/card.php | 142 ++++++++++------------------------ htdocs/core/tpl/notes.tpl.php | 3 +- 2 files changed, 44 insertions(+), 101 deletions(-) diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index f468bd4b146..3036722c3aa 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -1687,7 +1687,7 @@ if ($action == 'create' && $user->rights->commande->creer) if (! empty($conf->multicurrency->enabled)) { print '
'; - print ''; + print ''; print ''; @@ -2074,13 +2074,8 @@ if ($action == 'create' && $user->rights->commande->creer) // Date print ''; print ''; print ''; // Source reason (why we have an ordrer) - print ''; print ''; } - if ($totalVolume) - { + if ($totalVolume) { print ''; print ''; print '"; @@ -1140,7 +1140,7 @@ else print ''; } - // Password + // Password if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) { print ''; @@ -1267,7 +1267,7 @@ else // Categories if (! empty( $conf->categorie->enabled ) && !empty( $user->rights->categorie->lire )) { - print ''; + print ''; print '
'; +$colspan = 6; +if (count($echeance->lines)>0) $colspan++; +print ''; print $langs->trans("FinancialCommitment"); print '
'.$langs->trans("Term").''.$langs->trans("Date").''.$langs->trans("Term").''.$langs->trans("Date").''.$langs->trans("Insurance"); +Print ''.$langs->trans("InterestAmount").''.$langs->trans("Amount").''.$langs->trans("InterestAmount").''.$langs->trans("CapitalRemain"); print ' ('.price2num($object->capital).')'; print ''; print ''.$langs->trans('DoPayment').'
' . $i .'' . dol_print_date(dol_time_plus_duree($object->datestart, $i-1, 'm'),'day') . ''.price($insurance+(($i == 1) ? $regulInsurance : 0),0,'',1).' €'.price($int,0,'',1).' €'.price($cap_rest).' €
' . $i .'' . dol_print_date($line->datep,'day') . ''.price($insurance+(($i == 1) ? $regulInsurance : 0),0,'',1).' €'.price($int,0,'',1).' €' . price($mens) . ' €'.price($int,0,'',1).' €'.price($cap_rest).' €'.$langs->trans('DoPayment').'
'; if ($sumpaid < $loan->capital) { - print $langs->trans("LoanCapital") .': '; + print $langs->trans("LoanCapital") .': '; } else { @@ -273,7 +273,7 @@ if ($action == 'create') print '
'; if ($sumpaid < $loan->capital) { - print $langs->trans("Insurance") .': '; + print $langs->trans("Insurance") .': '; } else { @@ -282,7 +282,7 @@ if ($action == 'create') print '
'; if ($sumpaid < $loan->capital) { - print $langs->trans("Interest") .': '; + print $langs->trans("Interest") .': '; } else { From f0849aaf81e42b2725dc1403008d108191ee0216 Mon Sep 17 00:00:00 2001 From: atm-greg Date: Thu, 18 Oct 2018 17:16:38 +0200 Subject: [PATCH 008/349] schedule as a tab --- htdocs/core/lib/loan.lib.php | 5 + htdocs/loan/card.php | 2 +- htdocs/loan/schedule.php | 242 +++++++++++++++++++++++++++++++++++ 3 files changed, 248 insertions(+), 1 deletion(-) create mode 100644 htdocs/loan/schedule.php diff --git a/htdocs/core/lib/loan.lib.php b/htdocs/core/lib/loan.lib.php index b61c57b4bc3..0b617bb0d5c 100644 --- a/htdocs/core/lib/loan.lib.php +++ b/htdocs/core/lib/loan.lib.php @@ -40,6 +40,11 @@ function loan_prepare_head($object) $head[$tab][1] = $langs->trans('Card'); $head[$tab][2] = 'card'; $tab++; + + $head[$tab][0] = DOL_URL_ROOT.'/loan/schedule.php?loanid='.$object->id; + $head[$tab][1] = $langs->trans('FinancialCommitment'); + $head[$tab][2] = 'FinancialCommitment'; + $tab++; // Show more tabs from modules // Entries must be declared in modules descriptor with line diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index 2a6708655a8..8fef98075b1 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -787,7 +787,7 @@ if ($id > 0) // Edit if ($object->paid == 0 && $user->rights->loan->write) { - print ''.$langs->trans('CreateCalcSchedule').''; + // print ''.$langs->trans('CreateCalcSchedule').''; print ''.$langs->trans("Modify").''; } diff --git a/htdocs/loan/schedule.php b/htdocs/loan/schedule.php new file mode 100644 index 00000000000..58130c2c26a --- /dev/null +++ b/htdocs/loan/schedule.php @@ -0,0 +1,242 @@ + + * 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 . + */ + +/** + * \file htdocs/loan/createschedule.php + * \ingroup loan + * \brief Schedule card + */ + +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/loan.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/loan/class/loanschedule.class.php'; + +$loanid = GETPOST('loanid', 'int'); +$action = GETPOST('action','aZ09'); + +$object = new Loan($db); +$object->fetch($loanid); + +// Load translation files required by the page +$langs->loadLangs(array("compta","bills","loan")); + +$title = $langs->trans("Loan") . ' - ' . $langs->trans("Card"); +$help_url = 'EN:Module_Loan|FR:Module_Emprunt'; +llxHeader("",$title,$help_url); + +$head=loan_prepare_head($object); +dol_fiche_head($head, 'FinancialCommitment', $langs->trans("Loan"), -1, 'bill'); + +if ($action == 'createecheancier') { + + $i=1; + while($i <$object->nbterm+1){ + + $date = GETPOST('hi_date'.$i,'int'); + $mens = GETPOST('mens'.$i); + $int = GETPOST('hi_interets'.$i); + $insurance = GETPOST('hi_insurance'.$i); + + $echeance = new LoanSchedule($db); + + $echeance->fk_loan = $object->id; + $echeance->datec = dol_now(); + $echeance->tms = dol_now(); + $echeance->datep = $date; + $echeance->amount_capital = $mens-$int; + $echeance->amount_insurance = $insurance; + $echeance->amount_interest = $int; + $echeance->fk_typepayment = 3; + $echeance->fk_bank = 0; + $echeance->fk_user_creat = $user->id; + $echeance->fk_user_modif = $user->id; + $result=$echeance->create($user); + if ($result<0) { + setEventMessages($echeance->error, $echeance->errors,'errors'); + } + $i++; + } +} + +if ($action == 'updateecheancier') { + + $i=1; + while($i <$object->nbterm+1){ + + $mens = GETPOST('mens'.$i); + $int = GETPOST('hi_interets'.$i); + $id = GETPOST('hi_rowid'.$i); + $insurance = GETPOST('hi_insurance'.$i); + + $echeance = new LoanSchedule($db); + $echeance->fetch($id); + $echeance->tms = dol_now(); + $echeance->amount_capital = $mens-$int; + $echeance->amount_insurance = $insurance; + $echeance->amount_interest = $int; + $echeance->fk_user_modif = $user->id; + $result= $echeance->update($user,0); + if ($result<0) { + setEventMessages(null, $echeance->errors,'errors'); + } + $i++; + } +} + +$echeance = new LoanSchedule($db); +$echeance->fetchAll($object->id); + +$var = ! $var; + + +?> + +'; +print ''; +print ''; +if(count($echeance->lines)>0) +{ + print ''; +}else{ + print ''; +} +print ''; +print ''; +$colspan = 6; +if (count($echeance->lines)>0) $colspan++; +print ''; +print ''; + +print ''; +Print ''; +Print ''; +print ''; +Print ''; +Print ''; +if (count($echeance->lines)>0) print ''; +print ''."\n"; + +if ($object->nbterm > 0 && count($echeance->lines)==0) +{ + $i=1; + $capital = $object->capital; + $insurance = $object->insurance_amount/$object->nbterm; + $insurance = price2num($insurance, 'MT'); + $regulInsurance = price2num($object->insurance_amount - ($insurance * $object->nbterm)); + while($i <$object->nbterm+1) + { + $mens = price2num($echeance->calcMonthlyPayments($capital, $object->rate/100, $object->nbterm-$i+1), 'MT'); + $int = ($capital*($object->rate/12))/100; + $int = price2num($int, 'MT'); + $cap_rest = price2num($capital - ($mens-$int), 'MT'); + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''."\n"; + $i++; + $capital = $cap_rest; + } +} +elseif(count($echeance->lines)>0) +{ + $i=1; + $capital = $object->capital; + $insurance = $object->insurance_amount/$object->nbterm; + $insurance = price2num($insurance, 'MT'); + $regulInsurance = price2num($object->insurance_amount - ($insurance * $object->nbterm)); + foreach ($echeance->lines as $line){ + $mens = $line->amount_capital+$line->amount_insurance+$line->amount_interest; + $int = $line->amount_interest; + $cap_rest = price2num($capital - ($mens-$int), 'MT'); + print ''; + print ''; + print ''; + print ''; + print ''; + if($line->datep > dol_now()){ + print ''; + }else{ + print ''; + } + + print ''; + print ''; + print ''."\n"; + $i++; + $capital = $cap_rest; + } +} + +print '
'; +print $langs->trans("FinancialCommitment"); +print '
'.$langs->trans("Term").''.$langs->trans("Date").''.$langs->trans("Insurance"); +Print ''.$langs->trans("InterestAmount").''.$langs->trans("Amount").''.$langs->trans("CapitalRemain"); +print ' ('.price2num($object->capital).')'; +print ''; +print ''.$langs->trans('DoPayment').'
' . $i .'' . dol_print_date(dol_time_plus_duree($object->datestart, $i-1, 'm'),'day') . ''.price($insurance+(($i == 1) ? $regulInsurance : 0),0,'',1).' €'.price($int,0,'',1).' €'.price($cap_rest).' €
' . $i .'' . dol_print_date($line->datep,'day') . ''.price($insurance+(($i == 1) ? $regulInsurance : 0),0,'',1).' €'.price($int,0,'',1).' €' . price($mens) . ' €'.price($cap_rest).' €'; + print ''.$langs->trans('DoPayment').''; + print '
'; +print '
'; +print '
'; +if (count($echeance->lines)==0) $label = $langs->trans("Create"); +else $label = $langs->trans("Save"); +print '
'; +print ''; + +// End of page +llxFooter(); +$db->close(); From db2937715df40c1177567a03906482b760e059e3 Mon Sep 17 00:00:00 2001 From: atm-greg Date: Thu, 18 Oct 2018 17:27:08 +0200 Subject: [PATCH 009/349] create payment from loan schedule --- htdocs/loan/schedule.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/loan/schedule.php b/htdocs/loan/schedule.php index 58130c2c26a..d775ebaca84 100644 --- a/htdocs/loan/schedule.php +++ b/htdocs/loan/schedule.php @@ -208,10 +208,11 @@ elseif(count($echeance->lines)>0) $mens = $line->amount_capital+$line->amount_insurance+$line->amount_interest; $int = $line->amount_interest; $cap_rest = price2num($capital - ($mens-$int), 'MT'); + $insu = ($insurance+(($i == 1) ? $regulInsurance : 0)); print '
' . $i .'' . dol_print_date($line->datep,'day') . ''.price($insurance+(($i == 1) ? $regulInsurance : 0),0,'',1).' €'.price($insu,0,'',1).' €'.price($int,0,'',1).' €'.price($cap_rest).' €'; - print ''.$langs->trans('DoPayment').''; + print ''.$langs->trans('DoPayment').''; print '
'; if ($sumpaid < $loan->capital) { - print $langs->trans("LoanCapital") .': '; + print $langs->trans("LoanCapital") .': '; } else { @@ -273,7 +293,7 @@ if ($action == 'create') print '
'; if ($sumpaid < $loan->capital) { - print $langs->trans("Insurance") .': '; + print $langs->trans("Insurance") .': '; } else { @@ -282,7 +302,7 @@ if ($action == 'create') print '
'; if ($sumpaid < $loan->capital) { - print $langs->trans("Interest") .': '; + print $langs->trans("Interest") .': '; } else { diff --git a/htdocs/loan/schedule.php b/htdocs/loan/schedule.php index d775ebaca84..9fb5a4397ee 100644 --- a/htdocs/loan/schedule.php +++ b/htdocs/loan/schedule.php @@ -184,6 +184,7 @@ if ($object->nbterm > 0 && count($echeance->lines)==0) $mens = price2num($echeance->calcMonthlyPayments($capital, $object->rate/100, $object->nbterm-$i+1), 'MT'); $int = ($capital*($object->rate/12))/100; $int = price2num($int, 'MT'); + $insu = ($insurance+(($i == 1) ? $regulInsurance : 0)); $cap_rest = price2num($capital - ($mens-$int), 'MT'); print '
' . $i .'
' . $i .'' . dol_print_date($line->datep,'day') . ''.price($insu,0,'',1).' €'.price($int,0,'',1).' €' . price($mens) . ' €'.price($cap_rest).' €'; - print ''.$langs->trans('DoPayment').''; + if (!empty($line->fk_bank)) print $langs->trans('Paid'); + elseif (!$printed) + { + print ''.$langs->trans('DoPayment').''; + $printed = true; + } print '
' . $i .'
'.fieldLabel('Currency','multicurrency_code').''.$form->editfieldkey("Currency", 'multicurrency_code', '', $object, 0).''; print $form->selectMultiCurrency($currency_code, 'multicurrency_code'); print '
'; - print ''; - - if ($action != 'editdate' && $object->brouillon) - print ''; - print '
'; - print $langs->trans('Date'); - print 'id . '">' . img_edit($langs->trans('SetDate'), 1) . '
'; + $editenable = $user->rights->commande->creer && $object->statut == Commande::STATUS_DRAFT; + print $form->editfieldkey("Date", 'date', '', $object, $editenable); print '
'; if ($action == 'editdate') { print '
'; @@ -2100,12 +2095,8 @@ if ($action == 'create' && $user->rights->commande->creer) // Delivery date planed print '
'; - print ''; - if ($action != 'editdate_livraison') - print ''; - print '
'; - print $langs->trans('DateDeliveryPlanned'); - print 'id . '">' . img_edit($langs->trans('SetDeliveryDate'), 1) . '
'; + $editenable = $user->rights->commande->creer && $object->statut == Commande::STATUS_DRAFT; + print $form->editfieldkey("DateDeliveryPlanned", 'date_livraison', '', $object, $editenable); print '
'; if ($action == 'editdate_livraison') { print ''; @@ -2125,13 +2116,9 @@ if ($action == 'create' && $user->rights->commande->creer) // Shipping Method if (! empty($conf->expedition->enabled)) { - print '
'; - print ''; - if ($action != 'editshippingmethod' && $user->rights->commande->creer) - print ''; - print '
'; - print $langs->trans('SendingMethod'); - print 'id.'">'.img_edit($langs->trans('SetShippingMode'),1).'
'; + print '
'; + $editenable = $user->rights->commande->creer; + print $form->editfieldkey("SendingMethod", 'shippingmethod', '', $object, $editenable); print ''; if ($action == 'editshippingmethod') { $form->formSelectShippingMethod($_SERVER['PHP_SELF'].'?id='.$object->id, $object->shipping_method_id, 'shipping_method_id', 1); @@ -2144,15 +2131,12 @@ if ($action == 'create' && $user->rights->commande->creer) // Warehouse if (! empty($conf->expedition->enabled) && ! empty($conf->global->WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER)) { + $langs->load('stocks'); require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php'; $formproduct=new FormProduct($db); print '
'; - print ''; - if ($action != 'editwarehouse' && $user->rights->commande->creer) - print ''; - print '
'; - print $langs->trans('Warehouse'); - print 'id.'">'.img_edit($langs->trans('SetWarehouse'),1).'
'; + $editenable = $user->rights->commande->creer; + print $form->editfieldkey("Warehouse", 'warehouse', '', $object, $editenable); print '
'; if ($action == 'editwarehouse') { $formproduct->formSelectWarehouses($_SERVER['PHP_SELF'].'?id='.$object->id, $object->warehouse_id, 'warehouse_id', 1); @@ -2165,12 +2149,8 @@ if ($action == 'create' && $user->rights->commande->creer) // Terms of payment print '
'; - print ''; - if ($action != 'editconditions') - print ''; - print '
'; - print $langs->trans('PaymentConditionsShort'); - print 'id . '">' . img_edit($langs->trans('SetConditions'), 1) . '
'; + $editenable = $user->rights->commande->creer; + print $form->editfieldkey("PaymentConditionsShort", 'conditions', '', $object, $editenable); print '
'; if ($action == 'editconditions') { $form->form_conditions_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->cond_reglement_id, 'cond_reglement_id', 1); @@ -2183,12 +2163,8 @@ if ($action == 'create' && $user->rights->commande->creer) // Mode of payment print '
'; - print ''; - if ($action != 'editmode') - print ''; - print '
'; - print $langs->trans('PaymentMode'); - print 'id . '">' . img_edit($langs->trans('SetMode'), 1) . '
'; + $editenable = $user->rights->commande->creer; + print $form->editfieldkey("PaymentMode", 'mode', '', $object, $editenable); print '
'; if ($action == 'editmode') { $form->form_modes_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'mode_reglement_id'); @@ -2203,12 +2179,8 @@ if ($action == 'create' && $user->rights->commande->creer) // Multicurrency code print '
'; - print ''; - if ($action != 'editmulticurrencycode' && ! empty($object->brouillon)) - print ''; - print '
'; - print fieldLabel('Currency','multicurrency_code'); - print 'id . '">' . img_edit($langs->transnoentitiesnoconv('SetMultiCurrencyCode'), 1) . '
'; + $editenable = $user->rights->commande->creer && $object->statut == Commande::STATUS_DRAFT; + print $form->editfieldkey("Currency", 'multicurrencycode', '', $object, $editenable); print '
'; if ($action == 'editmulticurrencycode') { $form->form_multicurrency_code($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_code, 'multicurrency_code'); @@ -2220,12 +2192,8 @@ if ($action == 'create' && $user->rights->commande->creer) // Multicurrency rate print '
'; - print ''; - if ($action != 'editmulticurrencyrate' && ! empty($object->brouillon) && $object->multicurrency_code && $object->multicurrency_code != $conf->currency) - print ''; - print '
'; - print fieldLabel('CurrencyRate','multicurrency_tx'); - print 'id . '">' . img_edit($langs->transnoentitiesnoconv('SetMultiCurrencyCode'), 1) . '
'; + $editenable = $user->rights->commande->creer && $object->multicurrency_code && $object->multicurrency_code != $conf->currency && $object->statut == Commande::STATUS_DRAFT; + print $form->editfieldkey("CurrencyRate", 'multicurrencyrate', '', $object, $editenable); print '
'; if ($action == 'editmulticurrencyrate' || $action == 'actualizemulticurrencyrate') { if($action == 'actualizemulticurrencyrate') { @@ -2244,13 +2212,9 @@ if ($action == 'create' && $user->rights->commande->creer) } // Delivery delay - print '
'; - print ''; - if ($action != 'editavailability') - print ''; - print '
'; - print $langs->trans('AvailabilityPeriod'); - print 'id . '">' . img_edit($langs->trans('SetAvailability'), 1) . '
'; + print '
'; + $editenable = $user->rights->commande->creer; + print $form->editfieldkey("AvailabilityPeriod", 'availability', '', $object, $editenable); print ''; if ($action == 'editavailability') { $form->form_availability($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->availability_id, 'availability_id', 1); @@ -2260,13 +2224,9 @@ if ($action == 'create' && $user->rights->commande->creer) print '
'; - print ''; - if ($action != 'editdemandreason') - print ''; - print '
'; - print $langs->trans('Channel'); - print 'id . '">' . img_edit($langs->trans('SetDemandReason'), 1) . '
'; + print '
'; + $editenable = $user->rights->commande->creer; + print $form->editfieldkey("Channel", 'demandreason', '', $object, $editenable); print ''; if ($action == 'editdemandreason') { $form->formInputReason($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->demand_reason_id, 'demand_reason_id', 1); @@ -2277,13 +2237,9 @@ if ($action == 'create' && $user->rights->commande->creer) // TODO Order mode (how we receive order). Not yet implemented /* - print '
'; - print ''; - if ($action != 'editinputmode') - print ''; - print '
'; - print $langs->trans('SourceMode'); - print 'id . '">' . img_edit($langs->trans('SetInputMode'), 1) . '
'; + print '
'; + $editenable = $user->rights->commande->creer; + print $form->editfieldkey("SourceMode", 'inputmode', '', $object, $editenable); print ''; if ($action == 'editinputmode') { $form->formInputMode($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->source, 'input_mode_id', 1); @@ -2296,15 +2252,13 @@ if ($action == 'create' && $user->rights->commande->creer) $tmparray=$object->getTotalWeightVolume(); $totalWeight=$tmparray['weight']; $totalVolume=$tmparray['volume']; - if ($totalWeight) - { + if ($totalWeight) { print '
'.$langs->trans("CalculatedWeight").''; print showDimensionInBestUnit($totalWeight, 0, "weight", $langs, isset($conf->global->MAIN_WEIGHT_DEFAULT_ROUND)?$conf->global->MAIN_WEIGHT_DEFAULT_ROUND:-1, isset($conf->global->MAIN_WEIGHT_DEFAULT_UNIT)?$conf->global->MAIN_WEIGHT_DEFAULT_UNIT:'no'); print '
'.$langs->trans("CalculatedVolume").''; print showDimensionInBestUnit($totalVolume, 0, "volume", $langs, isset($conf->global->MAIN_VOLUME_DEFAULT_ROUND)?$conf->global->MAIN_VOLUME_DEFAULT_ROUND:-1, isset($conf->global->MAIN_VOLUME_DEFAULT_UNIT)?$conf->global->MAIN_VOLUME_DEFAULT_UNIT:'no'); @@ -2314,15 +2268,10 @@ if ($action == 'create' && $user->rights->commande->creer) // TODO How record was recorded OrderMode (llx_c_input_method) // Incoterms - if (!empty($conf->incoterm->enabled)) - { + if (!empty($conf->incoterm->enabled)) { print '
'; - print '
'; - print $langs->trans('IncotermLabel'); - print ''; - if ($user->rights->commande->creer) print ''.img_edit().''; - else print ' '; - print '
'; + $editenable = $user->rights->commande->creer; + print $form->editfieldkey("IncotermLabel", 'incoterm', '', $object, $editenable); print '
'; if ($action != 'editincoterm') @@ -2337,15 +2286,10 @@ if ($action == 'create' && $user->rights->commande->creer) } // Bank Account - if (! empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_ORDER) && ! empty($conf->banque->enabled)) - { - print '
'; - print ''; - print '
'; - print $langs->trans('BankAccount'); - print ''; - if ($action != 'editbankaccount' && $user->rights->commande->creer) - print 'id.'">'.img_edit($langs->trans('SetBankAccount'),1).'
'; + if (! empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_ORDER) && ! empty($conf->banque->enabled)) { + print '
'; + $editenable = $user->rights->commande->creer; + print $form->editfieldkey("BankAccount", 'bankaccount', '', $object, $editenable); print ''; if ($action == 'editbankaccount') { $form->formSelectAccount($_SERVER['PHP_SELF'].'?id='.$object->id, $object->fk_account, 'fk_account', 1); @@ -2446,12 +2390,11 @@ if ($action == 'create' && $user->rights->commande->creer) */ $result = $object->getLinesArray(); - print ' + print ' - - '; + '; if (! empty($conf->use_javascript_ajax) && $object->statut == Commande::STATUS_DRAFT) { include DOL_DOCUMENT_ROOT . '/core/tpl/ajaxrow.tpl.php'; @@ -2518,10 +2461,11 @@ if ($action == 'create' && $user->rights->commande->creer) print ''; } // Create event - /*if ($conf->agenda->enabled && ! empty($conf->global->MAIN_ADD_EVENT_ON_ELEMENT_CARD)) // Add hidden condition because this is not a - // "workflow" action so should appears somewhere else on - // page. + /*if ($conf->agenda->enabled && ! empty($conf->global->MAIN_ADD_EVENT_ON_ELEMENT_CARD)) { + // Add hidden condition because this is not a + // "workflow" action so should appears somewhere else on + // page. print '' . $langs->trans("AddAction") . ''; }*/ diff --git a/htdocs/core/tpl/notes.tpl.php b/htdocs/core/tpl/notes.tpl.php index 39132dd1af7..0d2151ab62d 100644 --- a/htdocs/core/tpl/notes.tpl.php +++ b/htdocs/core/tpl/notes.tpl.php @@ -18,8 +18,7 @@ */ // Protection to avoid direct call of template -if (empty($object) || ! is_object($object)) -{ +if (empty($object) || ! is_object($object)) { print "Error, template page can't be called as URL"; exit; } From d67c40dffe3cb637d1d51335d430fad9fa652585 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sat, 27 Oct 2018 13:01:01 +0200 Subject: [PATCH 016/349] remove fieldlabel and add fieldeditkey --- htdocs/adherents/card.php | 28 +++++++--------------------- htdocs/commande/card.php | 25 +++++++++++++++---------- 2 files changed, 22 insertions(+), 31 deletions(-) diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php index e7b36b77ad9..84667d9032e 100644 --- a/htdocs/adherents/card.php +++ b/htdocs/adherents/card.php @@ -1017,7 +1017,7 @@ else // Categories if (! empty($conf->categorie->enabled) && ! empty($user->rights->categorie->lire)) { - print '
' . fieldLabel('Categories', 'memcars') . ''; + print '
' .$form->editfieldkey("Categories", 'memcats', '', $object, 0) . ''; $cate_arbo = $form->select_all_categories(Categorie::TYPE_MEMBER, null, 'parent', null, null, 1); print $form->multiselectarray('memcats', $cate_arbo, GETPOST('memcats', 'array'), null, null, null, null, '100%'); print "
'.$langs->trans("Login").' / '.$langs->trans("Id").'login).'">
'.$langs->trans("Password").'pass).'">
' . fieldLabel('Categories', 'memcats') . '
' . $form->editfieldkey("Categories", 'memcats', '', $object, 0) . ''; $cate_arbo = $form->select_all_categories(Categorie::TYPE_MEMBER, null, null, null, null, 1); $c = new Categorie($db); @@ -1620,11 +1620,8 @@ else if (! empty($conf->societe->enabled)) { print '
'; - print ''; - if ($action != 'editthirdparty' && $user->rights->adherent->creer) print ''; - print '
'; - print $langs->trans("LinkedToDolibarrThirdParty"); - print 'id.'">'.img_edit($langs->trans('SetLinkToThirdParty'),1).'
'; + $editenable = $user->rights->adherent->creer; + print $form->editfieldkey('LinkedToDolibarrThirdParty', 'thirdparty', '', $object, $editenable); print '
'; if ($action == 'editthirdparty') { @@ -1658,19 +1655,8 @@ else // Login Dolibarr print '
'; - print ''; - if ($action != 'editlogin' && $user->rights->adherent->creer) - { - print ''; - } - print '
'; - print $langs->trans("LinkedToDolibarrUser"); - print ''; - if ($user->rights->user->user->creer) - { - print 'id.'">'.img_edit($langs->trans('SetLinkToUser'),1).''; - } - print '
'; + $editenable = $user->rights->adherent->creer && $user->rights->user->user->creer; + print $form->editfieldkey('LinkedToDolibarrUser', 'login', '', $object, $editenable); print '
'; if ($action == 'editlogin') { diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 3036722c3aa..d02e5c28858 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -106,7 +106,8 @@ $permissionedit = $user->rights->commande->creer; // Used by the include of ac */ $parameters = array('socid' => $socid); -$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks +// Note that $action and $object may be modified by some hooks +$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); if (empty($reshook)) @@ -419,10 +420,11 @@ if (empty($reshook)) // Hooks $parameters = array('objFrom' => $srcobject); - $reshook = $hookmanager->executeHooks('createFrom', $parameters, $object, $action); // Note that $action and $object may have been - // modified by hook - if ($reshook < 0) + // Note that $action and $object may have be modified by hook + $reshook = $hookmanager->executeHooks('createFrom', $parameters, $object, $action); + if ($reshook < 0) { $error++; + } } else { setEventMessages($object->error, $object->errors, 'errors'); $error++; @@ -1669,7 +1671,8 @@ if ($action == 'create' && $user->rights->commande->creer) // Other attributes $parameters = array('objectsrc' => $objectsrc, 'socid'=>$socid); - $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by + // Note that $action and $object may be modified by hook + $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); print $hookmanager->resPrint; if (empty($reshook)) { print $object->showOptionals($extrafields, 'edit'); @@ -1969,7 +1972,8 @@ if ($action == 'create' && $user->rights->commande->creer) // Call Hook formConfirm $parameters = array('lineid' => $lineid); - $reshook = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified by hook + // Note that $action and $object may be modified by hook + $reshook = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); if (empty($reshook)) $formconfirm.=$hookmanager->resPrint; elseif ($reshook > 0) $formconfirm=$hookmanager->resPrint; @@ -2095,7 +2099,7 @@ if ($action == 'create' && $user->rights->commande->creer) // Delivery date planed print '
'; - $editenable = $user->rights->commande->creer && $object->statut == Commande::STATUS_DRAFT; + $editenable = $user->rights->commande->creer; print $form->editfieldkey("DateDeliveryPlanned", 'date_livraison', '', $object, $editenable); print ''; if ($action == 'editdate_livraison') { @@ -2420,7 +2424,8 @@ if ($action == 'create' && $user->rights->commande->creer) $object->formAddObjectLine(1, $mysoc, $soc); $parameters = array(); - $reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook + // Note that $action and $object may be modified by hook + $reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); } } print '
'; @@ -2437,8 +2442,8 @@ if ($action == 'create' && $user->rights->commande->creer) print '
'; $parameters = array(); - $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been - // modified by hook + // Note that $action and $object may be modified by hook + $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); if (empty($reshook)) { // Send if ($object->statut > Commande::STATUS_DRAFT) { From 9c7ec434b74398862336246527e20817f99b1ad2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sat, 27 Oct 2018 13:48:30 +0200 Subject: [PATCH 017/349] remove fieldlabel and add fieldeditkey --- htdocs/admin/holiday.php | 1 - htdocs/commande/card.php | 6 +-- htdocs/societe/card.php | 84 +++++++++++++++++++++------------------- 3 files changed, 48 insertions(+), 43 deletions(-) diff --git a/htdocs/admin/holiday.php b/htdocs/admin/holiday.php index c02c9bd480d..81becbaa37c 100644 --- a/htdocs/admin/holiday.php +++ b/htdocs/admin/holiday.php @@ -513,7 +513,6 @@ print ''; print '
'; print ''; - } diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index d02e5c28858..026e7ac2c3f 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -2319,17 +2319,17 @@ if ($action == 'create' && $user->rights->commande->creer) if (!empty($conf->multicurrency->enabled) && ($object->multicurrency_code != $conf->currency)) { // Multicurrency Amount HT - print '' . fieldLabel('MulticurrencyAmountHT','multicurrency_total_ht') . ''; + print '' . $form->editfieldkey('MulticurrencyAmountHT', 'multicurrency_total_ht', '', $object, 0) . ''; print '' . price($object->multicurrency_total_ht, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . ''; print ''; // Multicurrency Amount VAT - print '' . fieldLabel('MulticurrencyAmountVAT','multicurrency_total_tva') . ''; + print '' . $form->editfieldkey('MulticurrencyAmountVAT', 'multicurrency_total_tva', '', $object, 0) . ''; print '' . price($object->multicurrency_total_tva, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . ''; print ''; // Multicurrency Amount TTC - print '' . fieldLabel('MulticurrencyAmountTTC','multicurrency_total_ttc') . ''; + print '' . $form->editfieldkey('MulticurrencyAmountTTC', 'multicurrency_total_ttc', '', $object, 0) . ''; print '' . price($object->multicurrency_total_ttc, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . ''; print ''; } diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 5935a1d01a1..941bd263b73 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -1148,7 +1148,7 @@ else } else { - print ''.fieldLabel('ThirdPartyName','name').''; + print ''.$form->editfieldkey('ThirdPartyName', 'name', '', $object, 0).''; } print 'global->SOCIETE_USEPREFIX)?' colspan="3"':'').'>'; print ''; @@ -1161,11 +1161,11 @@ else // If javascript on, we show option individual if ($conf->use_javascript_ajax) { - print ''.fieldLabel('FirstName','firstname').''; + print ''.$form->editfieldkey('FirstName', 'firstname', '', $object, 0).''; print ''; print ''; // Title - print ''.fieldLabel('UserTitle','civility_id').''; + print ''.$form->editfieldkey('UserTitle', 'civility_id', '', $object, 0).''; print $formcompany->select_civility($object->civility_id, 'civility_id', 'maxwidth100').''; print ''; } @@ -1175,7 +1175,7 @@ else print ''; // Prospect/Customer - print ''.fieldLabel('ProspectCustomer','customerprospect',1).''; + print ''.$form->editfieldkey('ProspectCustomer', 'customerprospect', '', $object, 0, 'string', '', 1).''; print ''; $selected=GETPOST('client','int')!=''?GETPOST('client','int'):$object->client; print ''; - print ''.fieldLabel('CustomerCode','customer_code').''; + print ''.$form->editfieldkey('CustomerCode', 'customer_code', '', $object, 0).''; print ''; - print ''; // Barcode if (! empty($conf->barcode->enabled)) { - print ''; + print ''; print ''; } // Address - print ''; + print ''; print ''; // Zip / Town - print ''; // Country - print ''; @@ -1264,11 +1264,11 @@ else { if(!empty($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT) && ($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT == 1 || $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT == 2)) { - print ''; + print ''; print ''; - print ''; + print ''; print ''; if (! empty($conf->socialnetworks->enabled)) @@ -1287,27 +1287,33 @@ else // Skype if (! empty($conf->global->SOCIALNETWORKS_SKYPE)) { - print ''; - print ''; + print ''; + print ''; } // Twitter if (! empty($conf->global->SOCIALNETWORKS_TWITTER)) { - print ''; - print ''; + print ''; + print ''; } // Facebook if (! empty($conf->global->SOCIALNETWORKS_FACEBOOK)) { - print ''; - print ''; + print ''; + print ''; } } // Phone / Fax - print ''; + print ''; print ''; - print ''; + print ''; print ''; // Prof ids @@ -1322,7 +1328,7 @@ else if (($j % 2) == 0) print ''; $idprof_mandatory ='SOCIETE_IDPROF'.($i).'_MANDATORY'; - print ''; @@ -1334,11 +1340,11 @@ else if ($j % 2 == 1) print ''; // Vat is used - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; // Legal Form - print ''; + print ''; print ''; // Capital - print ''; + print ''; print ''; if (! empty($conf->global->MAIN_MULTILANGS)) { - print ''; print ''; @@ -1429,7 +1435,7 @@ else // Assign a sale representative print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; @@ -1453,7 +1459,7 @@ else // Customer //if ($object->prospect || $object->client || (! $object->fournisseur && ! empty($conf->global->THIRDPARTY_CAN_HAVE_CATEGORY_EVEN_IF_NOT_CUSTOMER_PROSPECT_SUPPLIER))) { - print '"; @@ -1461,7 +1467,7 @@ else // Supplier //if ($object->fournisseur) { - print '"; @@ -1472,7 +1478,7 @@ else if (! empty($conf->multicurrency->enabled)) { print ''; - print ''; + print ''; print ''; @@ -1489,7 +1495,7 @@ else // Ajout du logo print ''; - print ''; + print ''; print ''; From c92a2084f1e5a14ec80e9567e6c7bbddbb7edcec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sat, 27 Oct 2018 14:50:27 +0200 Subject: [PATCH 018/349] remove fieldlabel and add fieldeditkey --- htdocs/commande/card.php | 2 +- htdocs/societe/card.php | 91 +++++++++++++++++++--------------------- 2 files changed, 45 insertions(+), 48 deletions(-) diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 026e7ac2c3f..6ea34c1c619 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -420,7 +420,7 @@ if (empty($reshook)) // Hooks $parameters = array('objFrom' => $srcobject); - // Note that $action and $object may have be modified by hook + // Note that $action and $object may be modified by hook $reshook = $hookmanager->executeHooks('createFrom', $parameters, $object, $action); if ($reshook < 0) { $error++; diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 941bd263b73..4530b5a61c1 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -12,6 +12,7 @@ * Copyright (C) 2015 Raphaël Doursenaud * Copyright (C) 2018 Nicolas ZABOURI * Copyright (C) 2018 Ferran Marcet + * 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 @@ -1742,7 +1743,7 @@ else } // Name - print ''; + print ''; print ''; // Alias names (commercial, trademark or alias names) @@ -1752,7 +1753,7 @@ else // Prefix if (! empty($conf->global->SOCIETE_USEPREFIX)) // Old not used prefix field { - print ''; + print ''; print ''; - print '
'; $tmpcode=$object->code_client; if (empty($tmpcode) && ! empty($modCodeClient->code_auto)) $tmpcode=$modCodeClient->getNextValue($object,0); @@ -1202,7 +1202,7 @@ else { // Supplier print '
'.fieldLabel('Supplier','fournisseur',1).''; + print ''.$form->editfieldkey('Supplier', 'fournisseur', '', $object, 0, 'string', '', 1).''; $default = -1; if (! empty($conf->global->THIRDPARTY_SUPPLIER_BY_DEFAULT)) $default=1; print $form->selectyesno("fournisseur", (GETPOST('fournisseur','int')!=''?GETPOST('fournisseur','int'):(GETPOST("type",'alpha') == '' ? $default : $object->fournisseur)), 1, 0, (GETPOST("type",'alpha') == '' ? 1 : 0)); @@ -1210,7 +1210,7 @@ else print ''; if (! empty($conf->fournisseur->enabled) && ! empty($user->rights->fournisseur->lire)) { - print fieldLabel('SupplierCode','supplier_code'); + print $form->editfieldkey('SupplierCode', 'supplier_code', '', $object, 0); } print ''; if (! empty($conf->fournisseur->enabled) && ! empty($user->rights->fournisseur->lire)) @@ -1228,33 +1228,33 @@ else } // Status - print '
'.fieldLabel('Status','status').''; + print '
'.$form->editfieldkey('Status', 'status', '', $object, 0).''; print $form->selectarray('status', array('0'=>$langs->trans('ActivityCeased'),'1'=>$langs->trans('InActivity')),1); print '
'.fieldLabel('Gencod','barcode').'
'.$form->editfieldkey('Gencod', 'barcode', '', $object, 0).''; print '
'.fieldLabel('Address','address').'
'.$form->editfieldkey('Address', 'address', '', $object, 0).'
'.fieldLabel('Zip','zipcode').''; + print '
'.$form->editfieldkey('Zip', 'zipcode', '', $object, 0).''; print $formcompany->select_ziptown($object->zip,'zipcode',array('town','selectcountry_id','state_id'), 0, 0, '', 'maxwidth100 quatrevingtpercent'); - print ''.fieldLabel('Town','town').''; + print ''.$form->editfieldkey('Town', 'town', '', $object, 0).''; print $formcompany->select_ziptown($object->town,'town',array('zipcode','selectcountry_id','state_id'), 0, 0, '', 'maxwidth100 quatrevingtpercent'); print '
'.fieldLabel('Country','selectcountry_id').''; + print '
'.$form->editfieldkey('Country', 'selectcountry_id', '', $object, 0).''; print $form->select_country((GETPOST('country_id')!=''?GETPOST('country_id'):$object->country_id)); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); print '
'.fieldLabel('Region-State','state_id').''; + print '
'.$form->editfieldkey('Region-State', 'state_id', '', $object, 0).''; } else { - print '
'.fieldLabel('State','state_id').''; + print '
'.$form->editfieldkey('State', 'state_id', '', $object, 0).''; } if ($object->country_id) print $formcompany->select_state($object->state_id,$object->country_code); @@ -1277,9 +1277,9 @@ else } // Email / Web - print '
'.fieldLabel('EMail','email',$conf->global->SOCIETE_EMAIL_MANDATORY).'
'.$form->editfieldkey('EMail', 'email', '', $object, 0, 'string', '', $conf->global->SOCIETE_EMAIL_MANDATORY).'
'.fieldLabel('Web','url').'
'.$form->editfieldkey('Web', 'url', '', $object, 0).'
'.fieldLabel('Skype','skype').'skype).'">
'.$form->editfieldkey('Skype', 'skype', '', $object, 0).''; + print 'skype).'">'; + print '
'.fieldLabel('Twitter','twitter').'twitter).'">
'.$form->editfieldkey('Twitter', 'twitter', '', $object, 0).''; + print 'twitter).'">'; + print '
'.fieldLabel('Facebook','facebook').'facebook).'">
'.$form->editfieldkey('Facebook', 'facebook', '', $object, 0).''; + print 'facebook).'">'; + print '
'.fieldLabel('Phone','phone').'
'.$form->editfieldkey('Phone', 'phone', '', $object, 0).''.fieldLabel('Fax','fax').''.$form->editfieldkey('Fax', 'fax', '', $object, 0).'
'.fieldLabel($idprof,$key, (empty($conf->global->$idprof_mandatory)?0:1)).''; + print ''.$form->editfieldkey($idprof, $key, '', $object, 0, 'string', '', (empty($conf->global->$idprof_mandatory)?0:1)).''; print $formcompany->get_input_id_prof($i, $key, $object->$key, $object->country_code); print '
'.fieldLabel('VATIsUsed','assujtva_value').'
'.$form->editfieldkey('VATIsUsed', 'assujtva_value', '', $object, 0).''; print $form->selectyesno('assujtva_value', GETPOSTISSET('assujtva_value')?GETPOST('assujtva_value','int'):1, 1); // Assujeti par defaut en creation print ''.fieldLabel('VATIntra','intra_vat').''.$form->editfieldkey('VATIntra', 'intra_vat', '', $object, 0).''; $s = ''; @@ -1391,18 +1397,18 @@ else } // Type - Size - print '
'.fieldLabel('ThirdPartyType','typent_id').''."\n"; + print '
'.$form->editfieldkey('ThirdPartyType', 'typent_id', '', $object, 0).''."\n"; $sortparam=(empty($conf->global->SOCIETE_SORT_ON_TYPEENT)?'ASC':$conf->global->SOCIETE_SORT_ON_TYPEENT); // NONE means we keep sort of original array, so we sort on position. ASC, means next function will sort on label. print $form->selectarray("typent_id", $formcompany->typent_array(0), $object->typent_id, 0, 0, 0, '', 0, 0, 0, $sortparam); if ($user->admin) print ' '.info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); print ''.fieldLabel('Staff','effectif_id').''; + print ''.$form->editfieldkey('Staff', 'effectif_id', '', $object, 0).''; print $form->selectarray("effectif_id", $formcompany->effectif_array(0), $object->effectif_id); if ($user->admin) print ' '.info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); print '
'.fieldLabel('JuridicalStatus','forme_juridique_code').'
'.$form->editfieldkey('JuridicalStatus', 'forme_juridique_code', '', $object, 0).''; if ($object->country_id) { @@ -1415,13 +1421,13 @@ else print '
'.fieldLabel('Capital','capital').'
'.$form->editfieldkey('Capital', 'capital', '', $object, 0).' '; print ''.$langs->trans("Currency".$conf->currency).'
'.fieldLabel('DefaultLang','default_lang').''."\n"; + print '
'.$form->editfieldkey('DefaultLang', 'default_lang', '', $object, 0).''."\n"; print $formadmin->select_language(($object->default_lang?$object->default_lang:$conf->global->MAIN_LANG_DEFAULT),'default_lang',0,0,1,0,0,'maxwidth200onsmartphone'); print '
'.fieldLabel('AllocateCommercial','commercial_id').''.$form->editfieldkey('AllocateCommercial', 'commercial_id', '', $object, 0).''; $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. @@ -1440,7 +1446,7 @@ else if (!empty($conf->incoterm->enabled)) { print '
'.fieldLabel('IncotermLabel','incoterm_id').''.$form->editfieldkey('IncotermLabel', 'incoterm_id', '', $object, 0).''; print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms)?$object->location_incoterms:'')); print '
' . fieldLabel('CustomersCategoriesShort', 'custcats') . ''; + print '
' . $form->editfieldkey('CustomersCategoriesShort', 'custcats', '', $object, 0) . ''; $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('SuppliersCategoriesShort', 'suppcats') . ''; + print '
' . $form->editfieldkey('SuppliersCategoriesShort', 'suppcats', '', $object, 0) . ''; $cate_arbo = $form->select_all_categories(Categorie::TYPE_SUPPLIER, null, 'parent', null, null, 1); print $form->multiselectarray('suppcats', $cate_arbo, GETPOST('suppcats', 'array'), null, null, null, null, "90%"); print "
'.fieldLabel('Currency','multicurrency_code').''.$form->editfieldkey('Currency', 'multicurrency_code', '', $object, 0).''; print $form->selectMultiCurrency(($object->multicurrency_code ? $object->multicurrency_code : $conf->currency), 'multicurrency_code', 1); print '
'.fieldLabel('Logo','photoinput').''.$form->editfieldkey('Logo', 'photoinput', '', $object, 0).''; print ''; print '
'.fieldLabel('ThirdPartyName','name',1).'
'.$form->editfieldkey('ThirdPartyName', 'name', '', $object, 0, 'string', '', 1).'
'.fieldLabel('Prefix','prefix').''; + print '
'.$form->editfieldkey('Prefix', 'prefix', '', $object, 0).''; // It does not change the prefix mode using the auto numbering prefix if (($prefixCustomerIsUsed || $prefixSupplierIsUsed) && $object->prefix_comm) { @@ -1767,14 +1768,14 @@ else } // Prospect/Customer - print '
'.fieldLabel('ProspectCustomer','customerprospect',1).'
'.$form->editfieldkey('ProspectCustomer', 'customerprospect', '', $object, 0, 'string', '', 1).''.fieldLabel('CustomerCode','customer_code').''; + print ''.$form->editfieldkey('CustomerCode', 'customer_code', '', $object, 0).''; print ''; - print ''; print ''; + print ''; print ''; } // Status - print ''; // Address - print ''; + print ''; print ''; // Zip / Town - print ''; // Country - print ''; @@ -1878,11 +1879,11 @@ else { if(!empty($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT) && ($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT == 1 || $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT == 2)) { - print ''; + print ''; print ''; - print ''; + print ''; print ''; if (! empty($conf->socialnetworks->enabled)) @@ -1900,27 +1901,27 @@ else // Skype if (! empty($conf->global->SOCIALNETWORKS_SKYPE)) { - print ''; + print ''; print ''; } // Twitter if (! empty($conf->global->SOCIALNETWORKS_TWITTER)) { - print ''; + print ''; print ''; } // Facebook if (! empty($conf->global->SOCIALNETWORKS_FACEBOOK)) { - print ''; + print ''; print ''; } } // Phone / Fax - print ''; + print ''; print ''; - print ''; + print ''; print ''; // Prof ids @@ -1935,12 +1936,8 @@ else if (($j % 2) == 0) print ''; $idprof_mandatory ='SOCIETE_IDPROF'.($i).'_MANDATORY'; - if (empty($conf->global->$idprof_mandatory) || ! $object->isACompany()) - print ''; if (($j % 2) == 1) print ''; $j++; @@ -1950,7 +1947,7 @@ else if ($j % 2 == 1) print ''; // VAT is used - print ''; @@ -1958,7 +1955,7 @@ else //TODO: Place into a function to control showing by country or study better option if($mysoc->localtax1_assuj=="1" && $mysoc->localtax2_assuj=="1") { - print ''; - print ''; + print ''; print ''; // Type - Size - print ''; - print ''; // Juridical type - print ''; // Capital - print ''; + print ''; print ''; // Assign a Name print ''; - print ''; + print ''; print ''; print ''; @@ -2077,7 +2074,7 @@ else if (! empty($conf->categorie->enabled) && ! empty($user->rights->categorie->lire)) { // Customer - print ''; + print ''; print '"; // Supplier - print ''; + print ''; print ''; - print ''; + print ''; print ''; @@ -2124,9 +2121,9 @@ else // Webservices url/key if (!empty($conf->syncsupplierwebservices->enabled)) { - print ''; + print ''; print ''; - print ''; + print ''; print ''; } @@ -2134,7 +2131,7 @@ else if (!empty($conf->incoterm->enabled)) { print ''; - print ''; + print ''; print ''; @@ -2142,7 +2139,7 @@ else // Logo print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; From 546a353e58145c04454e29b17198f64fcfbdf646 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sat, 27 Oct 2018 15:16:01 +0200 Subject: [PATCH 019/349] remove fieldlabel and add fieldeditkey --- htdocs/expedition/shipment.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/expedition/shipment.php b/htdocs/expedition/shipment.php index 920b5508e59..bd520f5f9d2 100644 --- a/htdocs/expedition/shipment.php +++ b/htdocs/expedition/shipment.php @@ -551,17 +551,17 @@ if ($id > 0 || ! empty($ref)) if (!empty($conf->multicurrency->enabled) && ($object->multicurrency_code != $conf->currency)) { // Multicurrency Amount HT - print ''; + print ''; print ''; print ''; // Multicurrency Amount VAT - print ''; + print ''; print ''; print ''; // Multicurrency Amount TTC - print ''; + print ''; print ''; print ''; } From 42a9abad56635612efc84e9cdbfef9f445a8ae4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sat, 27 Oct 2018 17:45:29 +0200 Subject: [PATCH 020/349] remove fieldlabel and add fieldeditkey --- htdocs/compta/bank/ligne.php | 2 +- htdocs/compta/facture/card.php | 12 +++---- htdocs/compta/facture/prelevement.php | 7 ++-- htdocs/compta/salaries/card.php | 26 +++++++-------- htdocs/contact/card.php | 47 +++++++++++++-------------- htdocs/datapolicy/admin/setupmail.php | 5 +-- htdocs/hrm/establishment/card.php | 36 ++++++++++++-------- htdocs/supplier_proposal/card.php | 15 ++++----- htdocs/user/card.php | 26 +++++++-------- 9 files changed, 90 insertions(+), 86 deletions(-) diff --git a/htdocs/compta/bank/ligne.php b/htdocs/compta/bank/ligne.php index 1587c5c10e8..2d4ac69c288 100644 --- a/htdocs/compta/bank/ligne.php +++ b/htdocs/compta/bank/ligne.php @@ -596,7 +596,7 @@ if ($result) $langs->load('categories'); // Bank line - print '"; diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index 050f8786c3a..ab654ad2e7c 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -3196,7 +3196,7 @@ if ($action == 'create') if (! empty($conf->multicurrency->enabled)) { print ''; - print ''; + print ''; print ''; @@ -3899,7 +3899,7 @@ else if ($id > 0 || ! empty($ref)) print ''; print '
'; if ((!$object->code_client || $object->code_client == -1) && $modCodeClient->code_auto) @@ -1805,13 +1806,13 @@ else || (! empty($conf->supplier_proposal->enabled) && ! empty($user->rights->supplier_proposal->lire))) { print '
'.fieldLabel('Supplier','fournisseur',1).''; + print ''.$form->editfieldkey('Supplier', 'fournisseur', '', $object, 0, 'string', '', 1).''; print $form->selectyesno("fournisseur",$object->fournisseur,1); print ''; if (! empty($conf->fournisseur->enabled) && ! empty($user->rights->fournisseur->lire)) { - print fieldLabel('SupplierCode','supplier_code'); + print $form->editfieldkey('SupplierCode', 'supplier_code', '', $object, 0); } print ''; if (! empty($conf->fournisseur->enabled) && ! empty($user->rights->fournisseur->lire)) @@ -1844,31 +1845,31 @@ else // Barcode if (! empty($conf->barcode->enabled)) { - print '
'.fieldLabel('Gencod','barcode').'
'.$form->editfieldkey('Gencod', 'barcode', '', $object, 0).''; print '
'.fieldLabel('Status','status').''; + print '
'.$form->editfieldkey('Status', 'status', '', $object, 0).''; print $form->selectarray('status', array('0'=>$langs->trans('ActivityCeased'),'1'=>$langs->trans('InActivity')),$object->status); print '
'.fieldLabel('Address','address').'
'.$form->editfieldkey('Address', 'address', '', $object, 0).'
'.fieldLabel('Zip','zipcode').''; + print '
'.$form->editfieldkey('Zip', 'zipcode', '', $object, 0).''; print $formcompany->select_ziptown($object->zip, 'zipcode', array('town', 'selectcountry_id', 'state_id'), 0, 0, '', 'maxwidth50onsmartphone'); - print ''.fieldLabel('Town','town').''; + print ''.$form->editfieldkey('Town', 'town', '', $object, 0).''; print $formcompany->select_ziptown($object->town, 'town', array('zipcode', 'selectcountry_id', 'state_id')); print '
'.fieldLabel('Country','selectcounty_id').''; + print '
'.$form->editfieldkey('Country', 'selectcounty_id', '', $object, 0).''; print $form->select_country((GETPOST('country_id')!=''?GETPOST('country_id'):$object->country_id),'country_id'); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); print '
'.fieldLabel('Region-State','state_id').''; + print '
'.$form->editfieldkey('Region-State', 'state_id', '', $object, 0).''; } else { - print '
'.fieldLabel('State','state_id').''; + print '
'.$form->editfieldkey('State', 'state_id', '', $object, 0).''; } print $formcompany->select_state($object->state_id,$object->country_code); @@ -1890,9 +1891,9 @@ else } // EMail / Web - print '
'.fieldLabel('EMail','email',(! empty($conf->global->SOCIETE_EMAIL_MANDATORY))).'
'.$form->editfieldkey('EMail', 'email', '', $object, 0, 'string', '', (! empty($conf->global->SOCIETE_EMAIL_MANDATORY))).'
'.fieldLabel('Web','url').'
'.$form->editfieldkey('Web', 'url', '', $object, 0).'
'.fieldLabel('Skype','skype').'
'.$form->editfieldkey('Skype', 'skype', '', $object, 0).'
'.fieldLabel('Twitter','twitter').'
'.$form->editfieldkey('Twitter', 'twitter', '', $object, 0).'
'.fieldLabel('Facebook','facebook').'
'.$form->editfieldkey('Facebook', 'facebook', '', $object, 0).'
'.fieldLabel('Phone','phone').'
'.$form->editfieldkey('Phone', 'phone', '', $object, 0).''.fieldLabel('Fax','fax').''.$form->editfieldkey('Fax', 'fax', '', $object, 0).'
'.fieldLabel($idprof,$key).''; - else - print ''.fieldLabel($idprof,$key).''; - - print $formcompany->get_input_id_prof($i,$key,$object->$key,$object->country_code); + print ''.$form->editfieldkey($idprof, $key, '', $object, 0, 'string', '', ! (empty($conf->global->$idprof_mandatory) || ! $object->isACompany())).''; + print $formcompany->get_input_id_prof($i, $key, $object->$key, $object->country_code); print '
'.fieldLabel('VATIsUsed','assujtva_value').''; + print '
'.$form->editfieldkey('VATIsUsed', 'assujtva_value', '', $object, 0).''; print $form->selectyesno('assujtva_value',$object->tva_assuj,1); print '
'.fieldLabel($langs->transcountry("LocalTax1IsUsed",$mysoc->country_code),'localtax1assuj_value').''; + print '
'.$form->editfieldkey($langs->transcountry("LocalTax1IsUsed",$mysoc->country_code), 'localtax1assuj_value', '', $object, 0).''; print $form->selectyesno('localtax1assuj_value',$object->localtax1_assuj,1); if(! isOnlyOneLocalTax(1)) { @@ -1968,7 +1965,7 @@ else } print ''.fieldLabel($langs->transcountry("LocalTax2IsUsed",$mysoc->country_code),'localtax2assuj_value').''; + print ''.$form->editfieldkey($langs->transcountry("LocalTax2IsUsed",$mysoc->country_code), 'localtax2assuj_value', '', $object, 0).''; print $form->selectyesno('localtax2assuj_value',$object->localtax2_assuj,1); if (! isOnlyOneLocalTax(2)) { @@ -1980,7 +1977,7 @@ else } elseif($mysoc->localtax1_assuj=="1" && $mysoc->localtax2_assuj!="1") { - print '
'.fieldLabel($langs->transcountry("LocalTax1IsUsed",$mysoc->country_code),'localtax1assuj_value').''; + print '
'.$form->editfieldkey($langs->transcountry("LocalTax1IsUsed",$mysoc->country_code), 'localtax1assuj_value', '', $object, 0).''; print $form->selectyesno('localtax1assuj_value',$object->localtax1_assuj,1); if(! isOnlyOneLocalTax(1)) { @@ -1992,7 +1989,7 @@ else } elseif($mysoc->localtax2_assuj=="1" && $mysoc->localtax1_assuj!="1") { - print '
'.fieldLabel($langs->transcountry("LocalTax2IsUsed",$mysoc->country_code),'localtax2assuj_value').''; + print '
'.$form->editfieldkey($langs->transcountry("LocalTax2IsUsed",$mysoc->country_code), 'localtax2assuj_value', '', $object, 0).''; print $form->selectyesno('localtax2assuj_value',$object->localtax2_assuj,1); if(! isOnlyOneLocalTax(2)) { @@ -2004,7 +2001,7 @@ else } // VAT Code - print '
'.fieldLabel('VATIntra','intra_vat').'
'.$form->editfieldkey('VATIntra', 'intra_vat', '', $object, 0).''; $s =''; @@ -2034,29 +2031,29 @@ else print '
'.fieldLabel('ThirdPartyType','typent_id').''; + print '
'.$form->editfieldkey('ThirdPartyType', 'typent_id', '', $object, 0).''; print $form->selectarray("typent_id",$formcompany->typent_array(0), $object->typent_id, 0, 0, 0, '', 0, 0, 0, (empty($conf->global->SOCIETE_SORT_ON_TYPEENT)?'ASC':$conf->global->SOCIETE_SORT_ON_TYPEENT)); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); print ''.fieldLabel('Staff','effectif_id').''; + print ''.$form->editfieldkey('Staff', 'effectif_id', '', $object, 0).''; print $form->selectarray("effectif_id",$formcompany->effectif_array(0), $object->effectif_id); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); print '
'.fieldLabel('JuridicalStatus','forme_juridique_code').''; + print '
'.$form->editfieldkey('JuridicalStatus', 'forme_juridique_code', '', $object, 0).''; print $formcompany->select_juridicalstatus($object->forme_juridique_code, $object->country_code, '', 'forme_juridique_code'); print '
'.fieldLabel('Capital','capital').'
'.$form->editfieldkey('Capital', 'capital', '', $object, 0).' '.$langs->trans("Currency".$conf->currency).'
'.fieldLabel('AllocateCommercial','commercial_id').''.$form->editfieldkey('AllocateCommercial', 'commercial_id', '', $object, 0).''; $userlist = $form->select_dolusers('', '', 0, null, 0, '', '', 0, 0, 0, '', 0, '', '', 0, 1); $arrayselected = GETPOST('commercial', 'array'); @@ -2067,7 +2064,7 @@ else // Default language if (! empty($conf->global->MAIN_MULTILANGS)) { - print '
'.fieldLabel('DefaultLang','default_lang').''."\n"; + print '
'.$form->editfieldkey('DefaultLang', 'default_lang', '', $object, 0).''."\n"; print $formadmin->select_language($object->default_lang,'default_lang',0,0,1); print '
' . fieldLabel('CustomersCategoriesShort', 'custcats') . '
' . $form->editfieldkey('CustomersCategoriesShort', 'custcats', '', $object, 0) . ''; $cate_arbo = $form->select_all_categories(Categorie::TYPE_CUSTOMER, null, null, null, null, 1); $c = new Categorie($db); @@ -2090,7 +2087,7 @@ else print "
' . fieldLabel('SuppliersCategoriesShort', 'suppcats') . '
' . $form->editfieldkey('SuppliersCategoriesShort', 'suppcats', '', $object, 0) . ''; $cate_arbo = $form->select_all_categories(Categorie::TYPE_SUPPLIER, null, null, null, null, 1); $c = new Categorie($db); @@ -2107,7 +2104,7 @@ else if (! empty($conf->multicurrency->enabled)) { print '
'.fieldLabel('Currency','multicurrency_code').''.$form->editfieldkey('Currency', 'multicurrency_code', '', $object, 0).''; print $form->selectMultiCurrency(($object->multicurrency_code ? $object->multicurrency_code : $conf->currency), 'multicurrency_code', 1); print '
'.fieldLabel('WebServiceURL','webservices_url').'
'.$form->editfieldkey('WebServiceURL', 'webservices_url', '', $object, 0).''.fieldLabel('WebServiceKey','webservices_key').''.$form->editfieldkey('WebServiceKey', 'webservices_key', '', $object, 0).'
'.fieldLabel('IncotermLabel','incoterm_id').''.$form->editfieldkey('IncotermLabel', 'incoterm_id', '', $object, 0).''; print $form->select_incoterms((!empty($object->fk_incoterms) ? $object->fk_incoterms : ''), (!empty($object->location_incoterms)?$object->location_incoterms:'')); print '
'.fieldLabel('Logo','photoinput').''.$form->editfieldkey('Logo', 'photoinput', '', $object, 0).''; if ($object->logo) print $form->showphoto('societe',$object); $caneditfield=1; @@ -2530,7 +2527,7 @@ else if (! empty($conf->multicurrency->enabled)) { print '
'.fieldLabel('Currency','multicurrency_code').''.$form->editfieldkey('Currency', 'multicurrency_code', '', $object, 0).''; print !empty($object->multicurrency_code) ? currency_name($object->multicurrency_code,1) : ''; print '
' . fieldLabel('MulticurrencyAmountHT','multicurrency_total_ht') . '
' . $form->editfieldkey('MulticurrencyAmountHT', 'multicurrency_total_ht', '', $object, 0) . '' . price($object->multicurrency_total_ht, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '
' . fieldLabel('MulticurrencyAmountVAT','multicurrency_total_tva') . '
' . $form->editfieldkey('MulticurrencyAmountVAT', 'multicurrency_total_tva', '', $object, 0) . '' . price($object->multicurrency_total_tva, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '
' . fieldLabel('MulticurrencyAmountTTC','multicurrency_total_ttc') . '
' . $form->editfieldkey('MulticurrencyAmountTTC', 'multicurrency_total_ttc', '', $object, 0) . '' . price($object->multicurrency_total_ttc, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '
' . fieldLabel('RubriquesTransactions', 'custcats') . ''; + print '
' . $form->editfieldkey('RubriquesTransactions', 'custcats', '', $object, 0) . ''; $cate_arbo = $form->select_all_categories(Categorie::TYPE_BANK_LINE, null, 'parent', null, null, 1); print $form->multiselectarray('custcats', $cate_arbo, $arrayselected, null, null, null, null, "90%"); print "
'.fieldLabel('Currency','multicurrency_code').''.$form->editfieldkey('Currency', 'multicurrency_code', '', $object, 0).''; print $form->selectMultiCurrency($currency_code, 'multicurrency_code'); print '
'; print ''; if ($action != 'editmulticurrencycode' && ! empty($object->brouillon)) print ''; @@ -3915,7 +3915,7 @@ else if ($id > 0 || ! empty($ref)) print ''; print ''; } - // Incoterms - if (!empty($conf->incoterm->enabled)) - { - print ''; - print ''; - } + // Incoterms + if (!empty($conf->incoterm->enabled)) + { + print ''; + print ''; + } // Multicurrency if (! empty($conf->multicurrency->enabled)) From 30d30d9c1e123e75b7e6735a6222ff536a5d8485 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Tue, 27 Nov 2018 10:06:38 +0100 Subject: [PATCH 118/349] fix : typo error --- htdocs/emailcollector/class/emailcollectoraction.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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,), From 71bcabd8ebc89b62c3ad7459b9738c2af2376cb3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 27 Nov 2018 10:23:58 +0100 Subject: [PATCH 119/349] Missing trans --- htdocs/langs/en_US/dict.lang | 3 ++- htdocs/langs/en_US/other.lang | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) 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/other.lang b/htdocs/langs/en_US/other.lang index 317ce72b3af..ec0315b94cd 100644 --- a/htdocs/langs/en_US/other.lang +++ b/htdocs/langs/en_US/other.lang @@ -262,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 From 0367795488c32e8003d1db5957adf576fad0cb5e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 27 Nov 2018 11:09:47 +0100 Subject: [PATCH 120/349] Fix auto jump on record if only 1 record in a search --- htdocs/comm/propal/list.php | 6 +- htdocs/commande/list.php | 8 +- htdocs/compta/facture/list.php | 8 +- htdocs/fourn/commande/list.php | 6 +- htdocs/fourn/facture/list.php | 8 +- htdocs/langs/en_US/holiday.lang | 2 +- htdocs/langs/fr_FR/accountancy.lang | 20 +-- htdocs/langs/fr_FR/admin.lang | 183 +++++++++++++------------- htdocs/langs/fr_FR/bills.lang | 86 ++++++------ htdocs/langs/fr_FR/blockedlog.lang | 64 ++++----- htdocs/langs/fr_FR/cashdesk.lang | 16 +-- htdocs/langs/fr_FR/categories.lang | 16 ++- htdocs/langs/fr_FR/commercial.lang | 3 +- htdocs/langs/fr_FR/companies.lang | 54 ++++---- htdocs/langs/fr_FR/compta.lang | 10 +- htdocs/langs/fr_FR/contracts.lang | 3 +- htdocs/langs/fr_FR/cron.lang | 14 +- htdocs/langs/fr_FR/dict.lang | 4 +- htdocs/langs/fr_FR/ecm.lang | 2 +- htdocs/langs/fr_FR/errors.lang | 32 ++--- htdocs/langs/fr_FR/help.lang | 17 +-- htdocs/langs/fr_FR/holiday.lang | 24 ++-- htdocs/langs/fr_FR/install.lang | 116 ++++++++-------- htdocs/langs/fr_FR/mails.lang | 14 +- htdocs/langs/fr_FR/main.lang | 56 ++++---- htdocs/langs/fr_FR/modulebuilder.lang | 24 ++-- htdocs/langs/fr_FR/multicurrency.lang | 12 +- htdocs/langs/fr_FR/opensurvey.lang | 6 +- htdocs/langs/fr_FR/orders.lang | 4 +- htdocs/langs/fr_FR/other.lang | 53 ++++---- htdocs/langs/fr_FR/paybox.lang | 1 + htdocs/langs/fr_FR/paypal.lang | 8 +- htdocs/langs/fr_FR/printing.lang | 6 +- htdocs/langs/fr_FR/products.lang | 22 ++-- htdocs/langs/fr_FR/projects.lang | 14 +- htdocs/langs/fr_FR/propal.lang | 4 +- htdocs/langs/fr_FR/resource.lang | 2 +- htdocs/langs/fr_FR/salaries.lang | 5 +- htdocs/langs/fr_FR/stocks.lang | 36 ++--- htdocs/langs/fr_FR/users.lang | 7 +- htdocs/langs/fr_FR/website.lang | 24 ++-- htdocs/supplier_proposal/list.php | 12 +- 42 files changed, 515 insertions(+), 497 deletions(-) diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index 61ad93660b6..937160f7bb6 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -425,13 +425,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; } 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/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/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/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/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/fr_FR/accountancy.lang b/htdocs/langs/fr_FR/accountancy.lang index 2520a840997..b8d8c461eb3 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. @@ -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..2d332cfa0d9 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 @@ -463,9 +463,9 @@ 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 @@ -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 @@ -1053,7 +1054,7 @@ SetupDescription3=%s -> %s. Paramètres pour personnaliser le c 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,7 +1156,7 @@ 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 @@ -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=WYSIWIG création / édition de lignes de détails de produits pour toutes les entités (propositions, commandes, factures, etc ...). Avertissement: L'utilisation de cette option dans ce cas est fortement déconseillée car elle peut créer des problèmes de caractères spéciaux et de formatage de page lors de la création de fichiers PDF. 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 les signets. Vous pouvez également ajouter des raccourcis vers les pages Dolibarr ou les sites Web externes dans le menu de 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 (DPD, Data Privacy ou contact GDPR) +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. 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/bills.lang b/htdocs/langs/fr_FR/bills.lang index 19e4e877acb..14b5d97a7b9 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=Rester impayé (%s %s) est une réduction accordée car le paiement a été effectué avant terme. Je régularise la TVA avec 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 client est un client qui refuse de payer 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=Voulez-vous vraiment diviser cette remise de %s %s en deux remises 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 +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/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 e40474eb925..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 @@ -52,14 +53,15 @@ 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 -ContactCategoriesShort=Tags/catégories de contacts -AccountsCategoriesShort=Tag/catégorie des comptes -ProjectsCategoriesShort=Tags/catégories de projets +ProductsCategoriesShort=Tags de produits +MembersCategoriesShort=Tags des adhérents +ContactCategoriesShort=Tags de contacts +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..ae1ff48f688 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 des remises disponibles (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 un nombre au format %syymm-nnnn pour le code client et %syymm-nnnn pour le code fournisseur, où yy est année, mm est mois et nnnn est une séquence sans interruption ni retour à 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..bd35edf1273 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=Chemin relatif et nom de fichier à charger (chemin est relatif au répertoire racine du serveur Web).
Par exemple, pour appeler la méthode fetch de l'objet produit Dolibarr htdocs / product / class / product.class.php , la valeur du nom de fichier de la classe est
product / class / product.class.php +CronObjectHelp=Le nom de l'objet à charger.
Par exemple, pour appeler la méthode fetch de l'objet produit Dolibarr /htdocs/product/class/product.class.php, la valeur du nom du fichier de classe est
Produit +CronMethodHelp=La méthode d'objet à lancer.
Par exemple, pour appeler la méthode fetch de l'objet produit Dolibarr /htdocs/product/class/product.class.php, la valeur de la méthode est
fetch +CronArgsHelp=Les arguments de la méthode.
Par exemple, pour appeler la méthode fetch de l'objet produit Dolibarr /htdocs/product/class/product.class.php, la valeur des paramètres peut être: 0, ProductRef . 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..a17f8282f6f 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/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..f9a0c1f4a04 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=Le compte administrateur Dolibarr ' %s ' existe déjà. Retournez 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é, une fois l'installation ou la mise à niveau terminée, vous devez ajouter un fichier nommé install.lock dans le répertoire du document Dolibarr afin d'éviter toute utilisation accidentelle / malveillante des outils d'installation. +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 sélectionné la création de la base de données %s , mais Dolibarr doit se connecter au serveur %s avec les autorisations de super-utilisateur %s . +YouAskLoginCreationSoDolibarrNeedToConnect=Vous avez choisi de créer l'utilisateur de base de données %s , mais Dolibarr doit se connecter au serveur %s avec les autorisations de 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=Serveur " %s ", nom de base de données " %s ", identifiez-vous " %s " ou le mot de passe de la base de données peut être incorrect ou la version du client PHP peut être incorrecte trop vieux par rapport à la version de 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 la base de données " %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..5ef510ee957 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'e-mailing %s , vous autoriserez le renvoi de cet e-mail dans un envoi en masse. Est-vous sûr de vouloir faire ça? +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'e-mail %s est correctement désabonné de la liste de diffusion +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..7b6f509625d 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. Allez dans Home-Setup-Edit et publiez à nouveau le formulaire. +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 vraiment envoyer le contenu de cette carte par courrier à %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, seul le login %s est autorisé à utiliser l'application pour le 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..91e88835da4 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\nATTENTION:\nTous fichiers relatifs a ce module ET toutes bases de donnes seront supprimes +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 d'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..7594442cb34 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. +CurrencyLayerAccount_help_to_synchronize=Vous devez créer un compte sur leur site Web pour utiliser cette fonctionnalité.
Obtenez votre clé d'API .
Si vous utilisez un compte gratuit, vous ne pouvez pas changer la source de devise (USD par défaut).
Si votre devise principale n'est pas le dollar américain, vous pouvez utiliser la source de devise alternative pour forcer votre devise principale.

Vous êtes limité à 1 000 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..3e9e378c39f 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 détails de la commande 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..1e49e3fdc4f 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=__(Bonjour)__\n\nVeuillez trouver ci-joint l'ordre __REF__\n\n\n__(Cordialement)__\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érentes (n ° de facture, ou d'ordre ...) 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..0eca5497155 100644 --- a/htdocs/langs/fr_FR/users.lang +++ b/htdocs/langs/fr_FR/users.lang @@ -35,7 +35,7 @@ SuperAdministrator=Super Administrateur SuperAdministratorDesc=Administrateur global AdministratorDesc=Administrateur DefaultRights=Permissions par défaut -DefaultRightsDesc=Définissez ici les permissions par défaut, c'est-à-dire les permissions qui seront attribuées automatiquement à un nouvel utilisateur lors de sa création (Voir la fiche utilisateur pour changer les permissions d'un utilisateur existant). +DefaultRightsDesc=Définissez ici les autorisations par défaut accordées automatiquement à un nouvel utilisateur créé (accédez à la carte d’utilisateur pour modifier l’autorisation d’un utilisateur existant). DolibarrUsers=Utilisateurs Dolibarr LastName=Nom FirstName=Prénom @@ -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..2e7d0413d8f 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 cette source à l'aide des balises <? php? > . Les variables globales suivantes sont disponibles: $ conf, $ db, $ mysoc, $ user, $ website, $ websitepage, $ weblangs.

peut également inclure le contenu d'une autre page / conteneur avec la syntaxe suivante:
<? php includeContainer ('alias_of_container_to_include'); ? >

Vous pouvez effectuer une redirection vers une autre page / conteneur avec la syntaxe suivante (Remarque: ne pas générer de contenu avant. une redirection):
<? php redirectToContainer ('alias_of_container_to_redirect_to'); ? >

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

" fa-download-download "> Pour inclure un lien permettant de télécharger un fichier stocké dans le Documents , utilisez le wrapper document.php :
Exemple: pour un fichier dans documents / ecm (doit être enregistré), la syntaxe est la suivante:
<a href = "/ document.php? modulepart = ecm & file = [rép_relatif /] nom_fichier.ext" >
Pour un fichier dans documents / medias (répertoire ouvert pour l'accès public), la syntaxe est la suivante:
< strong> <a href = "/ document.php? modulepart = medias & file = [rép_identique /] nom_fichier.ext" >
Pour un fichier partagé avec un lien de partage (accès ouvert à l'aide de la clé de partage de partage) , la syntaxe est la suivante:
<a href = "/ document.php? hashp = publicsharekeyoffile" >

Pour inclure une image stockée dans le répertoire Documents , utilisez le viewimage.php wrapper:
Exemple, pour une image dans documents / medias (répertoire ouvert pour accès public), la syntaxe est la suivante:
<img src = "/ viewimage.php? modulepart = medias&file = [nom_relatif /] nom_fichier .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/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; From e95c6091c4273a8505eb32d598eee5d2f51edafb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 27 Nov 2018 11:10:39 +0100 Subject: [PATCH 121/349] Fix lang --- htdocs/langs/fr_CA/multicurrency.lang | 1 - htdocs/langs/fr_CA/products.lang | 1 - htdocs/langs/fr_CA/stocks.lang | 2 - htdocs/langs/fr_FR/assets.lang | 59 +++++++++++++++++++++++++++ 4 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 htdocs/langs/fr_FR/assets.lang 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/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 From d8537a3c7696f83f6d17f79be50fbb3223ae84f8 Mon Sep 17 00:00:00 2001 From: Ferran Marcet Date: Tue, 27 Nov 2018 11:36:31 +0100 Subject: [PATCH 122/349] FIX Lines are not inserted correctly if VAT have code --- htdocs/comm/propal/class/propal.class.php | 21 +++++++------- htdocs/commande/class/commande.class.php | 29 ++++++++++--------- htdocs/contrat/class/contrat.class.php | 22 +++++++------- .../class/expensereport.class.php | 19 ++++++------ .../class/fournisseur.commande.class.php | 29 ++++++++++--------- 5 files changed, 62 insertions(+), 58 deletions(-) diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 2b3ae7834e1..d30b430bc4b 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -13,6 +13,7 @@ * Copyright (C) 2013 Florian Henry * Copyright (C) 2014-2015 Marcos García * Copyright (C) 2018 Frédéric France + * Copyright (C) 2018 Ferran Marcet * * 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 @@ -424,6 +425,16 @@ class Propal extends CommonObject if (empty($rang)) $rang=0; if (empty($fk_parent_line) || $fk_parent_line < 0) $fk_parent_line=0; + $localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty,$mysoc); + + // Clean vat code + $vat_src_code=''; + if (preg_match('/\((.*)\)/', $txtva, $reg)) + { + $vat_src_code = $reg[1]; + $txtva = preg_replace('/\s*\(.*\)/', '', $txtva); // Remove code into vatrate. + } + $remise_percent=price2num($remise_percent); $qty=price2num($qty); $pu_ht=price2num($pu_ht); @@ -469,16 +480,6 @@ class Propal extends CommonObject // TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker // la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva. - $localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty,$mysoc); - - // Clean vat code - $vat_src_code=''; - if (preg_match('/\((.*)\)/', $txtva, $reg)) - { - $vat_src_code = $reg[1]; - $txtva = preg_replace('/\s*\(.*\)/', '', $txtva); // Remove code into vatrate. - } - $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $product_type, $mysoc, $localtaxes_type, 100, $this->multicurrency_tx, $pu_ht_devise); $total_ht = $tabprice[0]; diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 739a6538612..6f795511a56 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -9,7 +9,7 @@ * Copyright (C) 2012 Cedric Salvador * Copyright (C) 2013 Florian Henry * Copyright (C) 2014-2015 Marcos García - * Copyright (C) 2016-2017 Ferran Marcet + * Copyright (C) 2016-2018 Ferran Marcet * * 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 @@ -1283,6 +1283,16 @@ class Commande extends CommonOrder if (empty($fk_parent_line) || $fk_parent_line < 0) $fk_parent_line=0; if (empty($this->fk_multicurrency)) $this->fk_multicurrency=0; + $localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty,$mysoc); + + // Clean vat code + $vat_src_code=''; + if (preg_match('/\((.*)\)/', $txtva, $reg)) + { + $vat_src_code = $reg[1]; + $txtva = preg_replace('/\s*\(.*\)/', '', $txtva); // Remove code into vatrate. + } + $remise_percent=price2num($remise_percent); $qty=price2num($qty); $pu_ht=price2num($pu_ht); @@ -1326,20 +1336,11 @@ class Commande extends CommonOrder return self::STOCK_NOT_ENOUGH_FOR_ORDER; } } + // Calcul du total TTC et de la TVA pour la ligne a partir de - // qty, pu, remise_percent et txtva - // TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker - // la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva. - - $localtaxes_type=getLocalTaxesFromRate($txtva,0,$this->thirdparty,$mysoc); - - // Clean vat code - $vat_src_code=''; - if (preg_match('/\((.*)\)/', $txtva, $reg)) - { - $vat_src_code = $reg[1]; - $txtva = preg_replace('/\s*\(.*\)/', '', $txtva); // Remove code into vatrate. - } + // qty, pu, remise_percent et txtva + // TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker + // la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva. $tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $product_type, $mysoc, $localtaxes_type, 100, $this->multicurrency_tx, $pu_ht_devise); diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index a460f6aff51..a827647c354 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -8,7 +8,7 @@ * Copyright (C) 2013 Christophe Battarel * Copyright (C) 2013 Florian Henry * Copyright (C) 2014-2015 Marcos García - * Copyright (C) 2015-2017 Ferran Marcet + * Copyright (C) 2015-2018 Ferran Marcet * * 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 @@ -1358,6 +1358,16 @@ class Contrat extends CommonObject { $this->db->begin(); + $localtaxes_type=getLocalTaxesFromRate($txtva, 0, $this->societe, $mysoc); + + // Clean vat code + $vat_src_code=''; + if (preg_match('/\((.*)\)/', $txtva, $reg)) + { + $vat_src_code = $reg[1]; + $txtva = preg_replace('/\s*\(.*\)/', '', $txtva); // Remove code into vatrate. + } + // Clean parameters $pu_ht=price2num($pu_ht); $pu_ttc=price2num($pu_ttc); @@ -1392,16 +1402,6 @@ class Contrat extends CommonObject // TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker // la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva. - $localtaxes_type=getLocalTaxesFromRate($txtva, 0, $this->societe, $mysoc); - - // Clean vat code - $vat_src_code=''; - if (preg_match('/\((.*)\)/', $txtva, $reg)) - { - $vat_src_code = $reg[1]; - $txtva = preg_replace('/\s*\(.*\)/', '', $txtva); // Remove code into vatrate. - } - $tabprice=calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, 1,$mysoc, $localtaxes_type); $total_ht = $tabprice[0]; $total_tva = $tabprice[1]; diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index c6debbe60ff..966f7b1af84 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -1,8 +1,8 @@ - * Copyright (C) 2015 Laurent Destailleur - * Copyright (C) 2015 Alexandre Spangaro - * Copyright (C) 2016 Ferran Marcet +/* Copyright (C) 2011 Dimitri Mouillard + * Copyright (C) 2015 Laurent Destailleur + * Copyright (C) 2015 Alexandre Spangaro + * Copyright (C) 2016-2018 Ferran Marcet * * 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 @@ -1685,6 +1685,12 @@ class ExpenseReport extends CommonObject if (empty($date)) $date = ''; if (empty($fk_project)) $fk_project = 0; + if (preg_match('/\((.*)\)/', $vatrate, $reg)) + { + $vat_src_code = $reg[1]; + $vatrate = preg_replace('/\s*\(.*\)/', '', $vatrate); // Remove code into vatrate. + } + $qty = price2num($qty); $vatrate = price2num($vatrate); $up = price2num($up); @@ -1695,11 +1701,6 @@ class ExpenseReport extends CommonObject $this->line = new ExpenseReportLine($this->db); - if (preg_match('/\((.*)\)/', $vatrate, $reg)) - { - $vat_src_code = $reg[1]; - $vatrate = preg_replace('/\s*\(.*\)/', '', $vatrate); // Remove code into vatrate. - } $vatrate = preg_replace('/\*/','',$vatrate); $seller = ''; // seller is unknown diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 1dc68b34bc2..ca7651d641f 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -8,6 +8,7 @@ * Copyright (C) 2012-2015 Marcos García * Copyright (C) 2013 Florian Henry * Copyright (C) 2013 Cédric Salvador + * Copyright (C) 2018 Ferran Marcet * * 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 @@ -1434,6 +1435,16 @@ class CommandeFournisseur extends CommonOrder if (empty($txlocaltax2)) $txlocaltax2=0; if (empty($remise_percent)) $remise_percent=0; + $localtaxes_type=getLocalTaxesFromRate($txtva,0,$mysoc,$this->thirdparty); + + // Clean vat code + $vat_src_code=''; + if (preg_match('/\((.*)\)/', $txtva, $reg)) + { + $vat_src_code = $reg[1]; + $txtva = preg_replace('/\s*\(.*\)/', '', $txtva); // Remove code into vatrate. + } + $remise_percent=price2num($remise_percent); $qty=price2num($qty); $pu_ht=price2num($pu_ht); @@ -1526,20 +1537,10 @@ class CommandeFournisseur extends CommonOrder $product_type = $type; } - // Calcul du total TTC et de la TVA pour la ligne a partir de - // qty, pu, remise_percent et txtva - // TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker - // la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva. - - $localtaxes_type=getLocalTaxesFromRate($txtva,0,$mysoc,$this->thirdparty); - - // Clean vat code - $vat_src_code=''; - if (preg_match('/\((.*)\)/', $txtva, $reg)) - { - $vat_src_code = $reg[1]; - $txtva = preg_replace('/\s*\(.*\)/', '', $txtva); // Remove code into vatrate. - } + // Calcul du total TTC et de la TVA pour la ligne a partir de + // qty, pu, remise_percent et txtva + // TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker + // la part ht, tva et ttc, et ce au niveau de la ligne qui a son propre taux tva. $tabprice = calcul_price_total($qty, $pu, $remise_percent, $txtva, $txlocaltax1, $txlocaltax2, 0, $price_base_type, $info_bits, $product_type, $this->thirdparty, $localtaxes_type, 100, $this->multicurrency_tx,$pu_ht_devise); $total_ht = $tabprice[0]; From 70bd931d08108c3fe996ae43ca7b6d082f58d73e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 27 Nov 2018 16:20:31 +0100 Subject: [PATCH 123/349] FIX empty page due to preg_replace JIT error on large strings --- htdocs/core/lib/website.lib.php | 48 ++++++++++++++++++++++++++++++++- htdocs/website/index.php | 11 +++++--- 2 files changed, 54 insertions(+), 5 deletions(-) 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/website/index.php b/htdocs/website/index.php index 57dbe2d8984..0d3af42d0cf 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -1647,7 +1647,7 @@ print '
'; if (count($object->records) > 0) // There is at least one web site { // ***** Part for web sites - + print ''; print '
'; print $langs->trans("Website").' : '; print '
'; @@ -1807,6 +1807,7 @@ if (count($object->records) > 0) // There is at least one web site { print '
'; // Close current websitebar to open a new one + print ''; print '
'; print '
'; @@ -2732,7 +2733,7 @@ if ($action == 'preview' || $action == 'createfromclone' || $action == 'createpa $objectpage->fetch($pageid); $jscontent = @file_get_contents($filejs); - $out = ''."\n"; + $out = ''."\n"; // Include a html so we can benefit of the header of page. // Note: We can't use iframe as it can be used to include another external html file @@ -2742,7 +2743,8 @@ if ($action == 'preview' || $action == 'createfromclone' || $action == 'createpa $out .= "'; } } From bd8e6d884bdb92f791bd2c017f5a0c47a68acbc0 Mon Sep 17 00:00:00 2001 From: com4WEB <42214196+com4WEB@users.noreply.github.com> Date: Mon, 10 Dec 2018 22:17:18 +0100 Subject: [PATCH 304/349] Create README-DE --- doc/install/README-DE | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 doc/install/README-DE diff --git a/doc/install/README-DE b/doc/install/README-DE new file mode 100644 index 00000000000..c7ece3891f3 --- /dev/null +++ b/doc/install/README-DE @@ -0,0 +1,33 @@ +README (deutsch / german / allemand) +-------------------------------- + + +-------------------------------- +Download / Herunterladen +-------------------------------- + +* Dolibarr ERP/CRM kann man über die offizielle Dolibarr Website + https://www.dolibarr.org/downloads + oder direkt von Sourceforge + https://sourceforge.net/projects/dolibarr/files/ + herunterladen. + + + +* Die meisten externen Module/Themens sind über den DoliStore verfügbar: + https://www.dolistore.com/de/ + + +-------------------------------- +Installation +-------------------------------- + +* Für eine kurze Einleitung, schau auf die README Datei im Hauptverzeichnis. + +* Umfangreiche Dokumentationen sind im Dolibarr Wiki zu finden: + https://wiki.dolibarr.org/index.php/Hauptseite + +* eine Deutsche Community bietet der Dolibarr e.V. unter + https://www.dolibarr.de/ + + From b8a5f4b0526ae0fbbfbf941b8d7671f1658d54a7 Mon Sep 17 00:00:00 2001 From: com4WEB <42214196+com4WEB@users.noreply.github.com> Date: Mon, 10 Dec 2018 22:32:50 +0100 Subject: [PATCH 305/349] Update README https instead of http & dolistore.com instead of .org --- doc/install/README | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/install/README b/doc/install/README index 83bc6484cea..0c7341b196c 100644 --- a/doc/install/README +++ b/doc/install/README @@ -7,12 +7,12 @@ Download -------------------------------- * Dolibarr ERP/CRM can be downloaded at sourceforge: -http://sourceforge.net/projects/dolibarr/files -or from Dolibarr official web site: -http://www.dolibarr.org + https://sourceforge.net/projects/dolibarr/files + or from Dolibarr official web site: + https://www.dolibarr.org * Most external modules are only available on DoliStore: -http://www.dolistore.org + https://www.dolistore.com -------------------------------- @@ -22,4 +22,4 @@ Install * For a Quick guide, take a look at README file into root directory. * More complete documentations are also available on line on the Dolibarr Wiki: -http://wiki.dolibarr.org + https://wiki.dolibarr.org From 3213b3be07504767cd1edeae137042f89f40cd32 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 11 Dec 2018 09:17:02 +0100 Subject: [PATCH 306/349] Standardize code: Move jabberid into social network module --- htdocs/admin/socialnetworks.php | 2 +- .../default/tpl/contactcard_edit.tpl.php | 5 ---- .../default/tpl/contactcard_view.tpl.php | 5 ---- htdocs/contact/card.php | 24 ++++++++++++------- htdocs/contact/list.php | 8 +++++++ htdocs/core/class/commonobject.class.php | 8 ++----- htdocs/core/lib/functions.lib.php | 8 +++++-- 7 files changed, 32 insertions(+), 28 deletions(-) diff --git a/htdocs/admin/socialnetworks.php b/htdocs/admin/socialnetworks.php index 9aba26b3fc4..959dd91f339 100644 --- a/htdocs/admin/socialnetworks.php +++ b/htdocs/admin/socialnetworks.php @@ -89,7 +89,7 @@ dol_fiche_head($head, 'setup', '', 0, 'user'); print '
'; -$arrayofsocialnetworks=array('skype'=>'Skype', 'twitter'=>'Twitter', 'facebook'=>'Facebook'); +$arrayofsocialnetworks=array('jabber'=>'Jabber', 'skype'=>'Skype', 'twitter'=>'Twitter', 'facebook'=>'Facebook'); foreach($arrayofsocialnetworks as $snkey => $snlabel) { diff --git a/htdocs/contact/canvas/default/tpl/contactcard_edit.tpl.php b/htdocs/contact/canvas/default/tpl/contactcard_edit.tpl.php index 39c3604416b..bc3b30c29ad 100644 --- a/htdocs/contact/canvas/default/tpl/contactcard_edit.tpl.php +++ b/htdocs/contact/canvas/default/tpl/contactcard_edit.tpl.php @@ -125,11 +125,6 @@ echo $this->control->tpl['ajax_selectcountry']; -
- - - - diff --git a/htdocs/contact/canvas/default/tpl/contactcard_view.tpl.php b/htdocs/contact/canvas/default/tpl/contactcard_view.tpl.php index c1d6de80964..bb9bc1d06b5 100644 --- a/htdocs/contact/canvas/default/tpl/contactcard_view.tpl.php +++ b/htdocs/contact/canvas/default/tpl/contactcard_view.tpl.php @@ -110,11 +110,6 @@ dol_htmloutput_errors($this->control->tpl['error'],$this->control->tpl['errors'] - - - - - diff --git a/htdocs/contact/card.php b/htdocs/contact/card.php index 770b19e5b75..15cbe110a6a 100644 --- a/htdocs/contact/card.php +++ b/htdocs/contact/card.php @@ -660,12 +660,14 @@ else } print ''; - // Instant message and no email - print ''; - print ''; - if (! empty($conf->socialnetworks->enabled)) { + // Jabber + if (! empty($conf->global->SOCIALNETWORKS_JABBER)) + { + print ''; + print ''; + } // Skype if (! empty($conf->global->SOCIALNETWORKS_SKYPE)) { @@ -919,9 +921,8 @@ else } print ''; - // Jabberid - print ''; - print ''; + // Unsubscribe + print ''; if (! empty($conf->mailing->enabled)) { print ''; @@ -935,6 +936,12 @@ else if (! empty($conf->socialnetworks->enabled)) { + // Jabber ID + if (! empty($conf->global->SOCIALNETWORKS_JABBER)) + { + print ''; + print ''; + } // Skype if (! empty($conf->global->SOCIALNETWORKS_SKYPE)) { @@ -1153,8 +1160,7 @@ else print ''; } - // Instant message and no email - print ''; + // Unsubscribe if (!empty($conf->mailing->enabled)) { print ''; diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index 237b82f78d5..9ac7d9e258d 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -158,6 +158,7 @@ $arrayfields=array( 'p.phone_mobile'=>array('label'=>"PhoneMobile", 'checked'=>1), 'p.fax'=>array('label'=>"Fax", 'checked'=>0), 'p.email'=>array('label'=>"EMail", 'checked'=>1), + 'p.jabberid'=>array('label'=>"Jabber", 'checked'=>1, 'enabled'=>(! empty($conf->socialnetworks->enabled))), 'p.skype'=>array('label'=>"Skype", 'checked'=>1, 'enabled'=>(! empty($conf->socialnetworks->enabled))), 'p.twitter'=>array('label'=>"Twitter", 'checked'=>1, 'enabled'=>(! empty($conf->socialnetworks->enabled))), 'p.facebook'=>array('label'=>"Facebook", 'checked'=>1, 'enabled'=>(! empty($conf->socialnetworks->enabled))), @@ -822,12 +823,19 @@ while ($i < min($num,$limit)) print ''; if (! $i) $totalarray['nbfield']++; } + // Skype if (! empty($arrayfields['p.skype']['checked'])) { if (! empty($conf->socialnetworks->enabled)) { print ''; } if (! $i) $totalarray['nbfield']++; } + // Jabber + if (! empty($arrayfields['p.jabberid']['checked'])) + { + if (! empty($conf->socialnetworks->enabled)) { print ''; } + if (! $i) $totalarray['nbfield']++; + } // Twitter if (! empty($arrayfields['p.twitter']['checked'])) { diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 0e4bee78afb..8942bcaabb3 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -620,14 +620,10 @@ abstract class CommonObject { if ($this->skype) $out.=dol_print_socialnetworks($this->skype,$this->id,$object->id,'skype'); $outdone++; - } - if (! empty($conf->socialnetworks->enabled)) - { + if ($this->jabberid) $out.=dol_print_socialnetworks($this->jabberid,$this->id,$object->id,'jabber'); + $outdone++; if ($this->twitter) $out.=dol_print_socialnetworks($this->twitter,$this->id,$object->id,'twitter'); $outdone++; - } - if (! empty($conf->socialnetworks->enabled)) - { if ($this->facebook) $out.=dol_print_socialnetworks($this->facebook,$this->id,$object->id,'facebook'); $outdone++; } diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 9cc9f315e82..f280825af08 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3010,7 +3010,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ if (empty($srconly) && in_array($pictowithoutext, array( 'bank', 'close_title', 'delete', 'edit', 'ellipsis-h', 'filter', 'grip', 'grip_title', 'list', 'listlight', 'off', 'on', 'play', 'playdisabled', 'printer', 'resize', 'note','switch_off', 'switch_on', 'unlink', 'uparrow', '1downarrow', '1uparrow', - 'skype','twitter','facebook' + 'jabber','skype','twitter','facebook' ) )) { $fakey = $pictowithoutext; @@ -3093,10 +3093,14 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ elseif ($pictowithoutext == 'playdisabled') { $fakey = 'fa-play'; $facolor = '#ccc'; - } elseif ($pictowithoutext == 'play') { + } + elseif ($pictowithoutext == 'play') { $fakey = 'fa-play'; $facolor = '#444'; } + elseif ($pictowithoutext == 'jabber') { + $fakey = 'fa-comment-o'; + } else { $fakey = 'fa-'.$pictowithoutext; $facolor = '#444'; From b47e7b2267a88f7b71a41d8efc3431cff77e3d98 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 11 Dec 2018 09:49:46 +0100 Subject: [PATCH 307/349] Work on new unsubscribe process --- .../mailing/class/advtargetemailing.class.php | 11 ++++- htdocs/contact/card.php | 49 ++++++++++++++++--- htdocs/contact/class/contact.class.php | 5 +- htdocs/install/mysql/tables/llx_socpeople.sql | 2 +- .../public/emailing/mailing-unsubscribe.php | 8 +-- htdocs/webservices/server_contact.php | 6 +-- 6 files changed, 61 insertions(+), 20 deletions(-) diff --git a/htdocs/comm/mailing/class/advtargetemailing.class.php b/htdocs/comm/mailing/class/advtargetemailing.class.php index baf48447bad..83833304d44 100644 --- a/htdocs/comm/mailing/class/advtargetemailing.class.php +++ b/htdocs/comm/mailing/class/advtargetemailing.class.php @@ -745,7 +745,16 @@ class AdvanceTargetingMailing extends CommonObject $sqlwhere[]= " (t.civility IN ('".$this->db->escape(implode("','",$arrayquery['contact_civility']))."'))"; } if ($arrayquery['contact_no_email']!='') { - $sqlwhere[]= " (t.no_email='".$this->db->escape($arrayquery['contact_no_email'])."')"; + $tmpwhere = ''; + if (! empty($arrayquery['contact_no_email'])) + { + $tmpwhere.= "(t.email IN (SELECT email FROM ".MAIN_DB_PREFIX."mailing_unsubscribe WHERE t.entity IN (".getEntity('mailing').") AND email = '".$this->db->escape($arrayquery['contact_no_email'])."'))"; + } + else + { + $tmpwhere.= "(t.email NOT IN (SELECT email FROM ".MAIN_DB_PREFIX."mailing_unsubscribe WHERE t.entity IN (".getEntity('mailing').") AND email = '".$this->db->escape($arrayquery['contact_no_email'])."'))"; + } + $sqlwhere[]= $tmpwhere; } if ($arrayquery['contact_update_st_dt']!='') { $sqlwhere[]= " (t.tms >= '".$this->db->idate($arrayquery['contact_update_st_dt'])."' AND t.tms <= '".$this->db->idate($arrayquery['contact_update_end_dt'])."')"; diff --git a/htdocs/contact/card.php b/htdocs/contact/card.php index 15cbe110a6a..3ca9c4ae6bc 100644 --- a/htdocs/contact/card.php +++ b/htdocs/contact/card.php @@ -194,7 +194,6 @@ if (empty($reshook)) $object->phone_mobile = GETPOST("phone_mobile",'alpha'); $object->fax = GETPOST("fax",'alpha'); $object->jabberid = GETPOST("jabberid",'alpha'); - $object->no_email = GETPOST("no_email",'int'); $object->priv = GETPOST("priv",'int'); $object->note_public = GETPOST("note_public",'none'); $object->note_private = GETPOST("note_private",'none'); @@ -367,7 +366,6 @@ if (empty($reshook)) $object->phone_mobile = GETPOST("phone_mobile",'alpha'); $object->fax = GETPOST("fax",'alpha'); $object->jabberid = GETPOST("jabberid",'alpha'); - $object->no_email = GETPOST("no_email",'int'); $object->priv = GETPOST("priv",'int'); $object->note_public = GETPOST("note_public",'none'); $object->note_private = GETPOST("note_private",'none'); @@ -651,8 +649,21 @@ else print ''; if (! empty($conf->mailing->enabled)) { + $noemail = ''; + if (empty($noemail) && ! empty($object->email)) + { + $sql="SELECT COUNT(*) as nb FROM ".MAIN_DB_PREFIX."mailing_unsubscribe WHERE entity IN (".getEntity('mailing').") AND email = '".$db->escape($object->email)."'"; + //print $sql; + $resql=$db->query($sql); + if ($resql) + { + $obj=$db->fetch_object($resql); + $noemail = $obj->nb; + } + } + print ''; - print ''; + print ''; } else { @@ -925,8 +936,21 @@ else print ''; if (! empty($conf->mailing->enabled)) { + $noemail = ''; + if (empty($noemail) && ! empty($object->email)) + { + $sql="SELECT COUNT(*) as nb FROM ".MAIN_DB_PREFIX."mailing_unsubscribe WHERE entity IN (".getEntity('mailing').") AND email = '".$db->escape($object->email)."'"; + //print $sql; + $resql=$db->query($sql); + if ($resql) + { + $obj=$db->fetch_object($resql); + $noemail = $obj->nb; + } + } + print ''; - print ''; + print ''; } else { @@ -1160,10 +1184,23 @@ else print ''; } - // Unsubscribe + // Unsubscribe opt-out if (!empty($conf->mailing->enabled)) { - print ''; + //print 'eee'.$object->email; + $noemail = $object->no_email; + if (empty($noemail) && ! empty($object->email)) + { + $sql="SELECT COUNT(*) as nb FROM ".MAIN_DB_PREFIX."mailing_unsubscribe WHERE entity IN (".getEntity('mailing').") AND email = '".$db->escape($object->email)."'"; + //print $sql; + $resql=$db->query($sql); + if ($resql) + { + $obj=$db->fetch_object($resql); + $noemail = $obj->nb; + } + } + print ''; } print '
'; - print fieldLabel('Currency','multicurrency_code'); + print $form->editfieldkey('Currency', 'multicurrency_code', '', $object, 0); print 'id . '">' . img_edit($langs->transnoentitiesnoconv('SetMultiCurrencyCode'), 1) . '
'; print ''; if ($action != 'editmulticurrencyrate' && ! empty($object->brouillon) && $object->multicurrency_code && $object->multicurrency_code != $conf->currency) print ''; @@ -4001,17 +4001,17 @@ else if ($id > 0 || ! empty($ref)) if (!empty($conf->multicurrency->enabled) && ($object->multicurrency_code != $conf->currency)) { // Multicurrency Amount HT - print ''; + print ''; print ''; print ''; // Multicurrency Amount VAT - print ''; + print ''; print ''; print ''; // Multicurrency Amount TTC - print ''; + print ''; print ''; print ''; } diff --git a/htdocs/compta/facture/prelevement.php b/htdocs/compta/facture/prelevement.php index d7766268989..7c8ffb7d417 100644 --- a/htdocs/compta/facture/prelevement.php +++ b/htdocs/compta/facture/prelevement.php @@ -5,6 +5,7 @@ * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2010-2014 Juanjo Menent * Copyright (C) 2017 Ferran Marcet + * 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 @@ -402,17 +403,17 @@ if ($object->id > 0) if (!empty($conf->multicurrency->enabled) && ($object->multicurrency_code != $conf->currency)) { // Multicurrency Amount HT - print ''; + print ''; print ''; print ''; // Multicurrency Amount VAT - print ''; + print ''; print ''; print ''; // Multicurrency Amount TTC - print ''; + print ''; print ''; print ''; } diff --git a/htdocs/compta/salaries/card.php b/htdocs/compta/salaries/card.php index f50d940a51a..c67982ed9c5 100644 --- a/htdocs/compta/salaries/card.php +++ b/htdocs/compta/salaries/card.php @@ -1,8 +1,8 @@ - * Copyright (C) 2014 Laurent Destailleur - * Copyright (C) 2015 Jean-François Ferry - * Copyright (C) 2015 Charlie BENKE +/* Copyright (C) 2011-2018 Alexandre Spangaro + * Copyright (C) 2014 Laurent Destailleur + * Copyright (C) 2015 Jean-François Ferry + * Copyright (C) 2015 Charlie BENKE * Copyright (C) 2018 Frédéric France * * This program is free software; you can redistribute it and/or modify @@ -255,44 +255,44 @@ if ($action == 'create') // Date payment print ''; // Date value for bank print ''; // Employee print ''; // Label print ''; // Date start period print ''; // Date end period print ''; // Amount print ''; @@ -312,14 +312,14 @@ if ($action == 'create') if (! empty($conf->banque->enabled)) { print ''; } // Type payment print ''; diff --git a/htdocs/contact/card.php b/htdocs/contact/card.php index a43127c9a32..e995352c38d 100644 --- a/htdocs/contact/card.php +++ b/htdocs/contact/card.php @@ -227,7 +227,7 @@ if (empty($reshook)) $action = 'create'; } else { // Categories association - $contcats = GETPOST( 'contcats', 'array'); + $contcats = GETPOST('contcats', 'array'); $object->setCategories($contcats); } } @@ -383,10 +383,10 @@ if (empty($reshook)) // First we delete all categories association $sql = 'DELETE FROM ' . MAIN_DB_PREFIX . 'categorie_contact'; $sql .= ' WHERE fk_socpeople = ' . $object->id; - $db->query( $sql ); + $db->query($sql); // Then we add the associated categories - $categories = GETPOST( 'contcats', 'array'); + $categories = GETPOST('contcats', 'array'); $object->setCategories($categories); $object->old_lastname=''; @@ -669,19 +669,19 @@ else // Skype if (! empty($conf->global->SOCIALNETWORKS_SKYPE)) { - print ''; + print ''; print ''; } // Twitter if (! empty($conf->global->SOCIALNETWORKS_TWITTER)) { - print ''; + print ''; print ''; } // Facebook if (! empty($conf->global->SOCIALNETWORKS_FACEBOOK)) { - print ''; + print ''; print ''; } } @@ -694,10 +694,9 @@ else // Categories if (! empty($conf->categorie->enabled) && ! empty($user->rights->categorie->lire)) { - print '"; } @@ -938,19 +937,19 @@ else // Skype if (! empty($conf->global->SOCIALNETWORKS_SKYPE)) { - print ''; + print ''; print ''; } // Twitter if (! empty($conf->global->SOCIALNETWORKS_TWITTER)) { - print ''; + print ''; print ''; } // Facebook if (! empty($conf->global->SOCIALNETWORKS_FACEBOOK)) { - print ''; + print ''; print ''; } } @@ -980,16 +979,16 @@ else print ''; // Categories - if (!empty( $conf->categorie->enabled ) && !empty( $user->rights->categorie->lire )) { - print ''; + if (!empty($conf->categorie->enabled) && !empty($user->rights->categorie->lire)) { + print ''; print '"; } @@ -1101,10 +1100,10 @@ else $password=$generated_password; // Create a form array - $formquestion=array( - array('label' => $langs->trans("LoginToCreate"), 'type' => 'text', 'name' => 'login', 'value' => $login), - array('label' => $langs->trans("Password"), 'type' => 'text', 'name' => 'password', 'value' => $password), - //array('label' => $form->textwithpicto($langs->trans("Type"),$langs->trans("InternalExternalDesc")), 'type' => 'select', 'name' => 'intern', 'default' => 1, 'values' => array(0=>$langs->trans('Internal'),1=>$langs->trans('External'))) + $formquestion = array( + array('label' => $langs->trans("LoginToCreate"), 'type' => 'text', 'name' => 'login', 'value' => $login), + array('label' => $langs->trans("Password"), 'type' => 'text', 'name' => 'password', 'value' => $password), + //array('label' => $form->textwithpicto($langs->trans("Type"),$langs->trans("InternalExternalDesc")), 'type' => 'select', 'name' => 'intern', 'default' => 1, 'values' => array(0=>$langs->trans('Internal'),1=>$langs->trans('External'))) ); $text=$langs->trans("ConfirmCreateContact").'
'; if (! empty($conf->societe->enabled)) @@ -1176,7 +1175,7 @@ else if (! empty($conf->categorie->enabled) && ! empty($user->rights->categorie->lire)) { print ''; print ''; } diff --git a/htdocs/datapolicy/admin/setupmail.php b/htdocs/datapolicy/admin/setupmail.php index 214f673a15f..f50fa08d31c 100644 --- a/htdocs/datapolicy/admin/setupmail.php +++ b/htdocs/datapolicy/admin/setupmail.php @@ -91,9 +91,6 @@ $head = datapolicyAdminPrepareHead(); dol_fiche_head($head, 'settings', '', -1, "datapolicy@datapolicy"); - - - print "'."\n"; -llxHeader($moreheadcss.$moreheadjs, $langs->trans("websiteetup"), $help_url, '', 0, 0, $arrayofjs, $arrayofcss, '', '', ''."\n".'
'); +llxHeader($moreheadcss.$moreheadjs, $langs->trans("WebsiteSetup"), $help_url, '', 0, 0, $arrayofjs, $arrayofcss, '', '', ''."\n".'
'); print "\n".'
'; From 12b9ac2c3ba9971d98d58dc209556bc3511e3795 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 26 Nov 2018 14:48:27 +0100 Subject: [PATCH 112/349] Fix lang --- htdocs/core/tpl/filemanager.tpl.php | 2 ++ 1 file changed, 2 insertions(+) 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 '
'; - print fieldLabel('CurrencyRate','multicurrency_tx'); + print $form->editfieldkey('CurrencyRate', 'multicurrency_tx', '', $object, 0); print 'id . '">' . img_edit($langs->transnoentitiesnoconv('SetMultiCurrencyCode'), 1) . '
' . fieldLabel('MulticurrencyAmountHT','multicurrency_total_ht') . '
' . $form->editfieldkey('MulticurrencyAmountHT', 'multicurrency_total_ht', '', $object, 0) . '' . price($object->multicurrency_total_ht, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '
' . fieldLabel('MulticurrencyAmountVAT','multicurrency_total_tva') . '
' . $form->editfieldkey('MulticurrencyAmountVAT', 'multicurrency_total_tva', '', $object, 0) . '' . price($object->multicurrency_total_tva, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '
' . fieldLabel('MulticurrencyAmountTTC','multicurrency_total_ttc') . '
' . $form->editfieldkey('MulticurrencyAmountTTC', 'multicurrency_total_ttc', '', $object, 0) . '' . price($object->multicurrency_total_ttc, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '
' . fieldLabel('MulticurrencyAmountHT','multicurrency_total_ht') . '
' . $form->editfieldkey('MulticurrencyAmountHT', 'multicurrency_total_ht', '', $object, 0) . '' . price($object->multicurrency_total_ht, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '
' . fieldLabel('MulticurrencyAmountVAT','multicurrency_total_tva') . '
' . $form->editfieldkey('MulticurrencyAmountVAT', 'multicurrency_total_tva', '', $object, 0) . '' . price($object->multicurrency_total_tva, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '
' . fieldLabel('MulticurrencyAmountTTC','multicurrency_total_ttc') . '
' . $form->editfieldkey('MulticurrencyAmountTTC', 'multicurrency_total_ttc', '', $object, 0) . '' . price($object->multicurrency_total_ttc, '', $langs, 0, - 1, - 1, (!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency)) . '
'; - print fieldLabel('DatePayment','datep',1).''; + print $form->editfieldkey('DatePayment', 'datep', '', $object, 0, 'string', '', 1).''; print $form->selectDate((empty($datep)?-1:$datep), "datep", '', '', '', 'add', 1, 1); print '
'; - print fieldLabel('DateValue','datev',0).''; + print $form->editfieldkey('DateValue', 'datev', '', $object, 0).''; print $form->selectDate((empty($datev)?-1:$datev), "datev", '', '', '', 'add', 1, 1); print '
'; - print fieldLabel('Employee','fk_user',1).''; + print $form->editfieldkey('Employee', 'fk_user', '', $object, 0, 'string', '', 1).''; $noactive=0; // We keep active and unactive users print $form->select_dolusers(GETPOST('fk_user','int'), 'fk_user', 1, '', 0, '', '', 0, 0, 0, 'AND employee=1', 0, '', 'maxwidth300', $noactive); print '
'; - print fieldLabel('Label','label',1).''; + print $form->editfieldkey('Label', 'label', '', $object, 0, 'string', '', 1).''; print 'trans("SalaryPayment")).'">'; print '
'; - print fieldLabel('DateStartPeriod','datesp',1).''; + print $form->editfieldkey('DateStartPeriod', 'datesp', '', $object, 0, 'string', '', 1).''; print $form->selectDate($datesp, "datesp", '', '', '', 'add'); print '
'; - print fieldLabel('DateEndPeriod','dateep',1).''; + print $form->editfieldkey('DateEndPeriod', 'dateep', '', $object, 0, 'string', '', 1).''; print $form->selectDate($dateep, "dateep", '', '', '', 'add'); print '
'; - print fieldLabel('Amount','amount',1).''; + print $form->editfieldkey('Amount', 'amount', '', $object, 0, 'string', '', 1).''; print ''; print '
'; - print fieldLabel('BankAccount','selectaccountid',1).''; + print $form->editfieldkey('BankAccount', 'selectaccountid', '', $object, 0, 'string', '', 1).''; $form->select_comptes($_POST["accountid"],"accountid",0,'',1); // Affiche liste des comptes courant print '
'; - print fieldLabel('PaymentMode','selectpaymenttype',1).''; + print $form->editfieldkey('PaymentMode', 'selectpaymenttype', '', $object, 0, 'string', '', 1).''; $form->select_types_paiements(GETPOST("paymenttype"), "paymenttype", '', 2); print '
skype).'">
twitter).'">
facebook).'">
' . fieldLabel( 'Categories', 'contcats' ) . ''; - $cate_arbo = $form->select_all_categories( Categorie::TYPE_CONTACT, null, 'parent', null, null, 1 ); - print $form->multiselectarray( 'contcats', $cate_arbo, GETPOST( 'contcats', 'array' ), null, null, null, - null, '90%' ); + print '
' . $form->editfieldkey('Categories', 'contcats', '', $object, 0) . ''; + $cate_arbo = $form->select_all_categories(Categorie::TYPE_CONTACT, null, 'parent', null, null, 1); + print $form->multiselectarray('contcats', $cate_arbo, GETPOST('contcats', 'array'), null, null, null, null, '90%'); print "
skype).'">
twitter).'">
facebook).'">
' . fieldLabel( 'Categories', 'contcats' ) . '
' . $form->editfieldkey('Categories', 'contcats', '', $object, 0) . ''; - $cate_arbo = $form->select_all_categories( Categorie::TYPE_CONTACT, null, null, null, null, 1 ); - $c = new Categorie( $db ); - $cats = $c->containing( $object->id, 'contact' ); + $cate_arbo = $form->select_all_categories(Categorie::TYPE_CONTACT, null, null, null, null, 1); + $c = new Categorie($db); + $cats = $c->containing($object->id, 'contact'); foreach ($cats as $cat) { $arrayselected[] = $cat->id; } - print $form->multiselectarray( 'contcats', $cate_arbo, $arrayselected, '', 0, '', 0, '90%' ); + print $form->multiselectarray('contcats', $cate_arbo, $arrayselected, '', 0, '', 0, '90%'); print "
' . $langs->trans("Categories") . ''; - print $form->showCategories( $object->id, 'contact', 1 ); + print $form->showCategories($object->id, 'contact', 1); print '
'."\n"; print ''."\n"; From f5ebcca475b1840b709eb17034b53c0998ae1990 Mon Sep 17 00:00:00 2001 From: oscim Date: Mon, 26 Nov 2018 15:47:51 +0100 Subject: [PATCH 113/349] error space after comment --- htdocs/core/lib/company.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index fc15480de09..379fb04eb4f 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -1387,7 +1387,7 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon='', $noprint= 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 + //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); From a59a4c60e0a00b3ac1f7daa58d3ad6d22b5def75 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Mon, 26 Nov 2018 16:09:05 +0100 Subject: [PATCH 114/349] FIX : Typo errors --- htdocs/takepos/invoice.php | 2 +- htdocs/theme/md/style.css.php | 2 +- htdocs/user/class/user.class.php | 2 +- htdocs/variants/card.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) 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/md/style.css.php b/htdocs/theme/md/style.css.php index 72edb17b719..f24c7981734 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -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/class/user.class.php b/htdocs/user/class/user.class.php index 23f8b09169d..f9b1e65e771 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=''; 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(); From 2f2df12f592b588172090425db9191219045f41c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 26 Nov 2018 18:02:25 +0100 Subject: [PATCH 115/349] Complete dictionary --- htdocs/install/mysql/data/llx_c_input_reason.sql | 1 + 1 file changed, 1 insertion(+) 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); From 84d73086eac01aa328b01c04cee99a8db7d01b86 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 26 Nov 2018 22:53:56 +0100 Subject: [PATCH 116/349] Fix bookkeeping list was empty --- .../accountancy/class/bookkeeping.class.php | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index 6074a49f537..31a54aafc3b 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -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; } } From 7c22504252903565e59d37c25184504b8429658c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 27 Nov 2018 09:22:59 +0100 Subject: [PATCH 117/349] Fix position of field must be ssame between create/edit/view --- htdocs/blockedlog/admin/blockedlog_list.php | 4 +- htdocs/core/tpl/extrafields_view.tpl.php | 2 +- htdocs/langs/fr_FR/categories.lang | 10 +- htdocs/societe/card.php | 104 ++++++++++---------- 4 files changed, 60 insertions(+), 60 deletions(-) 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/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 '
'; } - // 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 '
'; + print ''; // Convert date into timestamp format if (in_array($extrafields->attributes[$object->table_element]['type'][$key], array('date','datetime'))) diff --git a/htdocs/langs/fr_FR/categories.lang b/htdocs/langs/fr_FR/categories.lang index adecb7604c8..e40474eb925 100644 --- a/htdocs/langs/fr_FR/categories.lang +++ b/htdocs/langs/fr_FR/categories.lang @@ -47,17 +47,17 @@ 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 CustomersProspectsCategoriesShort=Tags clients/prosp. ProductsCategoriesShort=Tags/catégories de produits MembersCategoriesShort=Tags/catégories de membres -ContactCategoriesShort=Tags de contacts +ContactCategoriesShort=Tags/catégories de contacts AccountsCategoriesShort=Tag/catégorie des comptes ProjectsCategoriesShort=Tags/catégories de projets ThisCategoryHasNoProduct=Ce tag/catégorie ne contient aucun produit. 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 '
'.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 '
'; - print '
'; - print $langs->trans('IncotermLabel'); - print ''; - if ($user->rights->societe->creer) print ''.img_edit('',1).''; - else 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 '
'; + print '
'; + print $langs->trans('IncotermLabel'); + print ''; + if ($user->rights->societe->creer) print ''.img_edit('',1).''; + else 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 '
trans("IM"); ?>
trans("ContactVisibility"); ?> control->tpl['select_visibility']; ?>
trans("IM"); ?>control->tpl['jabberid']; ?>
trans("ContactVisibility"); ?> control->tpl['visibility']; ?>
jabberid).'">
jabberid).'">
jabberid).'">
jabberid).'">
'.$object->getNbOfEMailings().'
'.$langs->trans("IM").''.$object->jabberid.'
'.$langs->trans("No_Email").''.yn($object->no_email).'
'.dol_print_email($obj->email,$obj->rowid,$obj->socid,'AC_EMAIL',18).''.dol_print_socialnetworks($obj->skype,$obj->rowid,$obj->socid,'skype').''.dol_print_socialnetworks($obj->jabberid,$obj->rowid,$obj->socid,'jabberid').'email).'">'.$form->selectyesno('no_email',(GETPOST("no_email",'alpha')?GETPOST("no_email",'alpha'):$object->no_email), 1).''.$form->selectyesno('no_email',(GETPOSTISSET("no_email")?GETPOST("no_email",'alpha'):$noemail), 1).'
'.$form->selectyesno('no_email',(isset($_POST["no_email"])?$_POST["no_email"]:$object->no_email), 1).''.$form->selectyesno('no_email',(GETPOSTISSET("no_email")?GETPOST("no_email",'alpha'):$noemail), 1).''.$object->getNbOfEMailings().'
'.$langs->trans("No_Email").''.yn($object->no_email).'
'.$langs->trans("No_Email").''.yn($noemail).'
'.$langs->trans("ContactVisibility").''; diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index 3cafedaeceb..a5297750386 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -123,7 +123,6 @@ class Contact extends CommonObject public $birthday; public $default_lang; - public $no_email; // 1=Don't send e-mail to this contact, 0=do public $ref_facturation; // Reference number of invoice for which it is contact public $ref_contrat; // Nb de reference contrat pour lequel il est contact @@ -372,7 +371,6 @@ class Contact extends CommonObject $sql .= ", statut = ".$this->db->escape($this->statut); $sql .= ", fk_user_modif=".($user->id > 0 ? "'".$this->db->escape($user->id)."'":"NULL"); $sql .= ", default_lang=".($this->default_lang?"'".$this->db->escape($this->default_lang)."'":"NULL"); - $sql .= ", no_email=".($this->no_email?"'".$this->db->escape($this->no_email)."'":"0"); $sql .= ", entity = " . $this->db->escape($this->entity); $sql .= " WHERE rowid=".$this->db->escape($id); @@ -709,7 +707,7 @@ class Contact extends CommonObject $sql.= " c.birthday,"; $sql.= " c.poste, c.phone, c.phone_perso, c.phone_mobile, c.fax, c.email, c.jabberid, c.skype, c.twitter, c.facebook,"; $sql.= " c.photo,"; - $sql.= " c.priv, c.note_private, c.note_public, c.default_lang, c.no_email, c.canvas,"; + $sql.= " c.priv, c.note_private, c.note_public, c.default_lang, c.canvas,"; $sql.= " c.import_key,"; $sql.= " c.datec as date_creation, c.tms as date_modification,"; $sql.= " co.label as country, co.code as country_code,"; @@ -790,7 +788,6 @@ class Contact extends CommonObject $this->note_private = $obj->note_private; $this->note_public = $obj->note_public; $this->default_lang = $obj->default_lang; - $this->no_email = $obj->no_email; $this->user_id = $obj->user_id; $this->user_login = $obj->user_login; $this->canvas = $obj->canvas; diff --git a/htdocs/install/mysql/tables/llx_socpeople.sql b/htdocs/install/mysql/tables/llx_socpeople.sql index 94cf869543d..00456e3ece6 100644 --- a/htdocs/install/mysql/tables/llx_socpeople.sql +++ b/htdocs/install/mysql/tables/llx_socpeople.sql @@ -53,7 +53,7 @@ create table llx_socpeople whatsapp varchar(255), -- photo varchar(255), - no_email smallint NOT NULL DEFAULT 0, + no_email smallint NOT NULL DEFAULT 0, -- deprecated. Use table llx_mailing_unsubscribe instead priv smallint NOT NULL DEFAULT 0, fk_user_creat integer DEFAULT 0, -- user qui a creel'enregistrement fk_user_modif integer, diff --git a/htdocs/public/emailing/mailing-unsubscribe.php b/htdocs/public/emailing/mailing-unsubscribe.php index 67672f19e7c..d04d6eb8020 100644 --- a/htdocs/public/emailing/mailing-unsubscribe.php +++ b/htdocs/public/emailing/mailing-unsubscribe.php @@ -100,19 +100,21 @@ if (! empty($tag) && ($unsuscrib=='1')) $resql=$db->query($sql); if (! $resql) dol_print_error($db); - // Update status communication of thirdparty prospect (old data) + /* + // Update status communication of thirdparty prospect (old usage) $sql = "UPDATE ".MAIN_DB_PREFIX."societe SET fk_stcomm=-1 WHERE rowid IN (SELECT source_id FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE tag = '".$db->escape($tag)."' AND source_type='thirdparty' AND source_id is not null)"; $resql=$db->query($sql); if (! $resql) dol_print_error($db); - // Update status communication of contact prospect (old data) + // Update status communication of contact prospect (old usage) $sql = "UPDATE ".MAIN_DB_PREFIX."socpeople SET no_email=1 WHERE rowid IN (SELECT source_id FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE tag = '".$db->escape($tag)."' AND source_type='contact' AND source_id is not null)"; $resql=$db->query($sql); if (! $resql) dol_print_error($db); + */ - // Update status communication of contact prospect (old data) + // Update status communication of email (new usage) $sql = "INSERT INTO ".MAIN_DB_PREFIX."mailing_unsubscribe (date_creat, entity, email) VALUES ('".$db->idate(dol_now())."', ".$obj->entity.", '".$obj->email."')"; $resql=$db->query($sql); diff --git a/htdocs/webservices/server_contact.php b/htdocs/webservices/server_contact.php index 9ffde3cdf80..edb429af0d3 100644 --- a/htdocs/webservices/server_contact.php +++ b/htdocs/webservices/server_contact.php @@ -105,7 +105,6 @@ $contact_fields = array( 'birthday' => array('name'=>'birthday','type'=>'xsd:string'), 'default_lang' => array('name'=>'default_lang','type'=>'xsd:string'), 'note' => array('name'=>'note','type'=>'xsd:string'), - 'no_email' => array('name'=>'no_email','type'=>'xsd:string'), 'ref_facturation' => array('name'=>'ref_facturation','type'=>'xsd:string'), 'ref_contrat' => array('name'=>'ref_contrat','type'=>'xsd:string'), 'ref_commande' => array('name'=>'ref_commande','type'=>'xsd:string'), @@ -295,7 +294,6 @@ function getContact($authentication,$id,$ref_ext) 'birthday' => $contact->birthday, 'default_lang' => $contact->default_lang, 'note' => $contact->note, - 'no_email' => $contact->no_email, 'ref_facturation' => $contact->ref_facturation, 'ref_contrat' => $contact->ref_contrat, 'ref_commande' => $contact->ref_commande, @@ -406,7 +404,6 @@ function createContact($authentication,$contact) $newobject->birthday=$contact['birthday']; $newobject->default_lang=$contact['default_lang']; $newobject->note=$contact['note']; - $newobject->no_email=$contact['no_email']; $newobject->ref_facturation=$contact['ref_facturation']; $newobject->ref_contrat=$contact['ref_contrat']; $newobject->ref_commande=$contact['ref_commande']; @@ -496,7 +493,7 @@ function getContactsForThirdParty($authentication,$idthirdparty) $sql.= " c.fk_departement,"; $sql.= " c.birthday,"; $sql.= " c.poste, c.phone, c.phone_perso, c.phone_mobile, c.fax, c.email, c.jabberid,"; - //$sql.= " c.priv, c.note, c.default_lang, c.no_email, c.canvas,"; + //$sql.= " c.priv, c.note, c.default_lang, c.canvas,"; $sql.= " co.label as country, co.code as country_code,"; $sql.= " d.nom as state, d.code_departement as state_code,"; $sql.= " u.rowid as user_id, u.login as user_login,"; @@ -557,7 +554,6 @@ function getContactsForThirdParty($authentication,$idthirdparty) 'birthday' => $contact->birthday?$contact->birthday:'', 'default_lang' => $contact->default_lang?$contact->default_lang:'', 'note' => $contact->note?$contact->note:'', - 'no_email' => $contact->no_email?$contact->no_email:'', 'ref_facturation' => $contact->ref_facturation?$contact->ref_facturation:'', 'ref_contrat' => $contact->ref_contrat?$contact->ref_contrat:'', 'ref_commande' => $contact->ref_commande?$contact->ref_commande:'', From a107d16338d3d5c2d0710832d037eb26952563ff Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 11 Dec 2018 09:52:00 +0100 Subject: [PATCH 308/349] Revert "clean and update code" This reverts commit 68de0ba93b0a0efc86640c7d08540b7dfe7bd014. --- htdocs/comm/mailing/cibles.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/comm/mailing/cibles.php b/htdocs/comm/mailing/cibles.php index 57d6adc1ba9..cc920e3d124 100644 --- a/htdocs/comm/mailing/cibles.php +++ b/htdocs/comm/mailing/cibles.php @@ -329,14 +329,16 @@ if ($object->fetch($id) >= 0) // Si le module mailing est qualifie if ($qualified) { + $var = ! $var; + if ($allowaddtarget) { - print ''; + print ''; print ''; } else { - print '
'; + print '
'; } print '
'; From 351274d85d5726db083fdfff9b786b13d5ef93f2 Mon Sep 17 00:00:00 2001 From: torvista Date: Tue, 11 Dec 2018 10:08:19 +0100 Subject: [PATCH 309/349] 1) Standardization of use of "third party" as a noun : third party as an modifier: third-party contact 2) use of colons: no space before 3) Use of supplier/vendor was mixed. Vendor is B2B or B2C, supplier is B2B. Changed all references to supplier. 4) Many minor grammar changes. --- htdocs/langs/en_US/accountancy.lang | 46 ++-- htdocs/langs/en_US/admin.lang | 314 +++++++++++----------- htdocs/langs/en_US/agenda.lang | 4 +- htdocs/langs/en_US/banks.lang | 14 +- htdocs/langs/en_US/bills.lang | 78 +++--- htdocs/langs/en_US/bookmarks.lang | 16 +- htdocs/langs/en_US/boxes.lang | 28 +- htdocs/langs/en_US/cashdesk.lang | 2 +- htdocs/langs/en_US/commercial.lang | 2 +- htdocs/langs/en_US/companies.lang | 74 ++--- htdocs/langs/en_US/compta.lang | 12 +- htdocs/langs/en_US/cron.lang | 2 +- htdocs/langs/en_US/deliveries.lang | 6 +- htdocs/langs/en_US/errors.lang | 38 +-- htdocs/langs/en_US/exports.lang | 18 +- htdocs/langs/en_US/ftp.lang | 8 +- htdocs/langs/en_US/help.lang | 4 +- htdocs/langs/en_US/holiday.lang | 2 +- htdocs/langs/en_US/install.lang | 4 +- htdocs/langs/en_US/interventions.lang | 4 +- htdocs/langs/en_US/ldap.lang | 2 +- htdocs/langs/en_US/mails.lang | 8 +- htdocs/langs/en_US/main.lang | 64 ++--- htdocs/langs/en_US/margins.lang | 4 +- htdocs/langs/en_US/members.lang | 6 +- htdocs/langs/en_US/opensurvey.lang | 2 +- htdocs/langs/en_US/orders.lang | 12 +- htdocs/langs/en_US/other.lang | 52 ++-- htdocs/langs/en_US/paybox.lang | 4 +- htdocs/langs/en_US/paypal.lang | 11 +- htdocs/langs/en_US/products.lang | 60 ++--- htdocs/langs/en_US/projects.lang | 6 +- htdocs/langs/en_US/propal.lang | 2 +- htdocs/langs/en_US/salaries.lang | 4 +- htdocs/langs/en_US/sendings.lang | 2 +- htdocs/langs/en_US/sms.lang | 2 +- htdocs/langs/en_US/stocks.lang | 22 +- htdocs/langs/en_US/stripe.lang | 4 +- htdocs/langs/en_US/supplier_proposal.lang | 24 +- htdocs/langs/en_US/suppliers.lang | 42 +-- htdocs/langs/en_US/ticket.lang | 28 +- htdocs/langs/en_US/users.lang | 2 +- htdocs/langs/en_US/website.lang | 6 +- htdocs/langs/en_US/withdrawals.lang | 12 +- htdocs/langs/en_US/workflow.lang | 4 +- 45 files changed, 531 insertions(+), 530 deletions(-) diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index e2f6083e6a6..b4f52352434 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -30,7 +30,7 @@ OverviewOfAmountOfLinesNotBound=Overview of amount of lines not bound to an acco OverviewOfAmountOfLinesBound=Overview of amount of lines already bound to an accounting account OtherInfo=Other information DeleteCptCategory=Remove accounting account from group -ConfirmDeleteCptCategory=Are you sure you want to remove this accounting account from the accounting account group ? +ConfirmDeleteCptCategory=Are you sure you want to remove this accounting account from the accounting account group? JournalizationInLedgerStatus=Status of journalization AlreadyInGeneralLedger=Already journalized in ledgers NotYetInGeneralLedger=Not yet journalized in ledgers @@ -44,7 +44,7 @@ CountriesInEECExceptMe=Countries in EEC except %s CountriesExceptMe=All countries except %s MainAccountForCustomersNotDefined=Main accounting account for customers not defined in setup -MainAccountForSuppliersNotDefined=Main accounting account for vendors not defined in setup +MainAccountForSuppliersNotDefined=Main accounting account for suppliers not defined in setup MainAccountForUsersNotDefined=Main accounting account for users not defined in setup MainAccountForVatPaymentNotDefined=Main accounting account for VAT payment not defined in setup @@ -95,7 +95,7 @@ MenuProductsAccounts=Product accounts ProductsBinding=Products accounts Ventilation=Binding to accounts CustomersVentilation=Customer invoice binding -SuppliersVentilation=Vendor invoice binding +SuppliersVentilation=Supplier invoice binding ExpenseReportsVentilation=Expense report binding CreateMvts=Create new transaction UpdateMvts=Modification of a transaction @@ -126,15 +126,15 @@ NotVentilatedinAccount=Not bound to the accounting account XLineSuccessfullyBinded=%s products/services successfully bound to an accounting account XLineFailedToBeBinded=%s products/services were not bound to any accounting account -ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to bind shown by page (maximum recommended : 50) +ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to bind shown by page (maximum recommended: 50) ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the page "Binding to do" by the most recent elements ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the page "Binding done" by the most recent elements ACCOUNTING_LENGTH_DESCRIPTION=Truncate product & services description in listings after x chars (Best = 50) ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT=Truncate product & services account description form in listings after x chars (Best = 50) ACCOUNTING_LENGTH_GACCOUNT=Length of the general accounting accounts (If you set value to 6 here, the account '706' will appear like '706000' on screen) -ACCOUNTING_LENGTH_AACCOUNT=Length of the third party accounting accounts (If you set value to 6 here, the account '401' will appear like '401000' on screen) -ACCOUNTING_MANAGE_ZERO=Allow to manage different number of zero at the end of an accounting account. Needed by some countries (like switzerland). If keep to off (default), you can set the 2 following parameters to ask application to add virtual zero. +ACCOUNTING_LENGTH_AACCOUNT=Length of the third-party accounting accounts (If you set value to 6 here, the account '401' will appear like '401000' on screen) +ACCOUNTING_MANAGE_ZERO=Allow to manage different number of zeros at the end of an accounting account. Needed by some countries (like Switzerland). If set to off (default), you can set the following two parameters to ask the application to add virtual zeros. BANK_DISABLE_DIRECT_INPUT=Disable direct recording of transaction in bank account ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Enable draft export on journal @@ -175,7 +175,7 @@ NotMatch=Not Set DeleteMvt=Delete Ledger lines DelYear=Year to delete DelJournal=Journal to delete -ConfirmDeleteMvt=This will delete all lines of the Ledger for year and/or from a specific journal. At least one criteria is required. +ConfirmDeleteMvt=This will delete all lines of the Ledger for year and/or from a specific journal. At least one criterion is required. ConfirmDeleteMvtPartial=This will delete the transaction from the Ledger (all lines related to same transaction will be deleted) FinanceJournal=Finance journal ExpenseReportsJournal=Expense reports journal @@ -187,18 +187,18 @@ ProductAccountNotDefined=Account for product not defined FeeAccountNotDefined=Account for fee not defined BankAccountNotDefined=Account for bank not defined CustomerInvoicePayment=Payment of invoice customer -ThirdPartyAccount=Third party account +ThirdPartyAccount=Third-party account NewAccountingMvt=New transaction NumMvts=Numero of transaction ListeMvts=List of movements ErrorDebitCredit=Debit and Credit cannot have a value at the same time AddCompteFromBK=Add accounting accounts to the group -ReportThirdParty=List third party account -DescThirdPartyReport=Consult here the list of the third party customers and vendors and their accounting accounts +ReportThirdParty=List third-party account +DescThirdPartyReport=Consult here the list of the third-party customers and suppliers and their accounting accounts ListAccounts=List of the accounting accounts -UnknownAccountForThirdparty=Unknown third party account. We will use %s -UnknownAccountForThirdpartyBlocking=Unknown third party account. Blocking error -UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking=Unknown third party account and waiting account not defined. Blocking error +UnknownAccountForThirdparty=Unknown third-party account. We will use %s +UnknownAccountForThirdpartyBlocking=Unknown third-party account. Blocking error +UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking=Unknown third-party account and waiting account not defined. Blocking error PaymentsNotLinkedToProduct=Payment not linked to any product / service Pcgtype=Group of account @@ -214,8 +214,8 @@ DescVentilDoneCustomer=Consult here the list of the lines of invoices customers DescVentilTodoCustomer=Bind invoice lines not already bound with a product accounting account ChangeAccount=Change the product/service accounting account for selected lines with the following accounting account: Vide=- -DescVentilSupplier=Consult here the list of vendor invoice lines bound or not yet bound to a product accounting account -DescVentilDoneSupplier=Consult here the list of the lines of invoices vendors and their accounting account +DescVentilSupplier=Consult here the list of supplier invoice lines bound or not yet bound to a product accounting account +DescVentilDoneSupplier=Consult here the list of the lines of invoices suppliers and their accounting account DescVentilTodoExpenseReport=Bind expense report lines not already bound with a fee accounting account DescVentilExpenseReport=Consult here the list of expense report lines bound (or not) to a fee accounting account DescVentilExpenseReportMore=If you setup accounting account on type of expense report lines, the application will be able to make all the binding between your expense report lines and the accounting account of your chart of accounts, just in one click with the button "%s". If account was not set on fees dictionary or if you still have some lines not bound to any account, you will have to make a manual binding from the menu "%s". @@ -260,14 +260,14 @@ ExportDraftJournal=Export draft journal Modelcsv=Model of export Selectmodelcsv=Select a model of export Modelcsv_normal=Classic export -Modelcsv_CEGID=Export towards CEGID Expert Comptabilité -Modelcsv_COALA=Export towards Sage Coala -Modelcsv_bob50=Export towards Sage BOB 50 -Modelcsv_ciel=Export towards Sage Ciel Compta or Compta Evolution -Modelcsv_quadratus=Export towards Quadratus QuadraCompta -Modelcsv_ebp=Export towards EBP -Modelcsv_cogilog=Export towards Cogilog -Modelcsv_agiris=Export towards Agiris +Modelcsv_CEGID=Export for CEGID Expert Comptabilité +Modelcsv_COALA=Export for Sage Coala +Modelcsv_bob50=Export for Sage BOB 50 +Modelcsv_ciel=Export for Sage Ciel Compta or Compta Evolution +Modelcsv_quadratus=Export for Quadratus QuadraCompta +Modelcsv_ebp=Export for EBP +Modelcsv_cogilog=Export for Cogilog +Modelcsv_agiris=Export for Agiris Modelcsv_configurable=Export CSV Configurable Modelcsv_FEC=Export FEC (Art. L47 A) (Test) ChartofaccountsId=Chart of accounts Id diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 8d6e8e39b04..029cc4d79a4 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -23,7 +23,7 @@ FilesUpdated=Updated Files FilesModified=Modified Files FilesAdded=Added Files FileCheckDolibarr=Check integrity of application files -AvailableOnlyOnPackagedVersions=The local file for integrity checking is only available when application is installed from an official package +AvailableOnlyOnPackagedVersions=The local file for integrity checking is only available when the application is installed from an official package XmlNotFound=Xml Integrity File of application not found SessionId=Session ID SessionSaveHandler=Handler to save sessions @@ -130,7 +130,7 @@ YouCanEditPHPTZ=To set a different PHP timezone (not required), you can try to a HoursOnThisPageAreOnServerTZ=Warning, in contrary of other screens, hours on this page are not in your local timezone, but of the timezone of the server. Box=Widget Boxes=Widgets -MaxNbOfLinesForBoxes=Max number of lines for widgets +MaxNbOfLinesForBoxes=Max. number of lines for widgets AllWidgetsWereEnabled=All available widgets are enabled PositionByDefault=Default order Position=Position @@ -229,7 +229,7 @@ DoNotStoreClearPassword=Do no store clear passwords in database but store only e MainDbPasswordFileConfEncrypted=Database password encrypted in conf.php (Activated recommended) InstrucToEncodePass=To have password encoded into the conf.php file, replace the line
$dolibarr_main_db_pass="...";
by
$dolibarr_main_db_pass="crypted:%s"; InstrucToClearPass=To have password decoded (clear) into the conf.php file, replace the line
$dolibarr_main_db_pass="crypted:...";
by
$dolibarr_main_db_pass="%s"; -ProtectAndEncryptPdfFiles=Protection of generated PDF files NOT recommended (breaks mass PDF generation) +ProtectAndEncryptPdfFiles=Protection of generated PDF files is NOT recommended (breaks bulk PDF generation) ProtectAndEncryptPdfFilesDesc=Protection of a PDF document keeps it available to read and print with any PDF browser. However, editing and copying is not possible anymore. Note that using this feature makes building of a global merged PDFs not working. Feature=Feature DolibarrLicense=License @@ -290,13 +290,13 @@ MAIN_MAIL_DEFAULT_FROMTYPE=Default sender email for manual sending (User email o UserEmail=User email CompanyEmail=Company email FeatureNotAvailableOnLinux=Feature not available on Unix like systems. Test your sendmail program locally. -SubmitTranslation=If translation for this language is not complete or you find errors, you can correct this by editing files in directory langs/%s and submit your change to www.transifex.com/dolibarr-association/dolibarr/ +SubmitTranslation=If the translation for this language is not complete or you find errors, you can correct this by editing files in directory langs/%s and submit your change to www.transifex.com/dolibarr-association/dolibarr/ SubmitTranslationENUS=If translation for this language is not complete or you find errors, you can correct this by editing files into directory langs/%s and submit modified files on dolibarr.org/forum or for developers on github.com/Dolibarr/dolibarr. ModuleSetup=Module setup ModulesSetup=Modules/Application setup ModuleFamilyBase=System ModuleFamilyCrm=Customer Relation Management (CRM) -ModuleFamilySrm=Vendor Relation Management (VRM) +ModuleFamilySrm=Supplier Relation Management (VRM) ModuleFamilyProducts=Products Management (PM) ModuleFamilyHr=Human Resource Management (HR) ModuleFamilyProjects=Projects/Collaborative work @@ -313,7 +313,7 @@ DoNotUseInProduction=Do not use in production ThisIsProcessToFollow=This is steps to process: ThisIsAlternativeProcessToFollow=This is an alternative setup to process manually: StepNb=Step %s -FindPackageFromWebSite=Find a package that provides features you want (for example on official web site %s). +FindPackageFromWebSite=Find a package that provides features you want (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into the server directory dedicated to Dolibarr: %s UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s @@ -367,7 +367,7 @@ FirstnameNamePosition=Position of Name/Lastname DescWeather=The following pictures will be shown on dashboard when number of late actions reach the following values: KeyForWebServicesAccess=Key to use Web Services (parameter "dolibarrkey" in webservices) TestSubmitForm=Input test form -ThisForceAlsoTheme=Using this menu manager will also use its own theme whatever is user choice. Also this menu manager specialized for smartphones does not works on all smartphone. Use another menu manager if you experience problems on yours. +ThisForceAlsoTheme=Using this menu manager will also use its own theme whatever the user choice. Also this menu manager specialized for smartphones does not work on all smartphone. Use another menu manager if you experience problems with yours. ThemeDir=Skins directory ConnectionTimeout=Connection timeout ResponseTimeout=Response timeout @@ -395,7 +395,7 @@ ButtonHideUnauthorized=Hide buttons for non-admin users for unauthorized actions OldVATRates=Old VAT rate NewVATRates=New VAT rate PriceBaseTypeToChange=Modify on prices with base reference value defined on -MassConvert=Launch mass convert +MassConvert=Launch bulk conversion String=String TextLong=Long text HtmlText=Html text @@ -417,16 +417,16 @@ ExtrafieldCheckBox=Checkboxes ExtrafieldCheckBoxFromList=Checkboxes from table ExtrafieldLink=Link to an object ComputedFormula=Computed field -ComputedFormulaDesc=You can enter here a formula using other properties of object or any PHP coding to get a dynamic computed value. You can use any PHP compatible formulas including the "?" condition operator, and following global object: $db, $conf, $langs, $mysoc, $user, $object.
WARNING: Only some properties of $object may be available. If you need a properties not loaded, just fetch yourself the object into your formula like in the second example.
Using a computed field means you can't enter yourself any value from interface. Also, if there is a syntax error, the formula may return nothing.

Example of formula:
$object->id < 10 ? round($object->id / 2, 2) : ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($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'

Other example of formula to force load of object and its parent object:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetch($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetch($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref : 'Parent project not found' +ComputedFormulaDesc=You can enter here a formula using other properties of object or any PHP coding to get a dynamic computed value. You can use any PHP compatible formulas including the "?" condition operator, and following global object: $db, $conf, $langs, $mysoc, $user, $object.
WARNING: Only some properties of $object may be available. If you need a properties not loaded, just fetch yourself the object into your formula like in the second example.
Using a computed field means you can't enter yourself any value from interface. Also, if there is a syntax error, the formula may return nothing.

Example of formula:
$object->id < 10 ? round($object->id / 2, 2): ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($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'

Other example of formula to force load of object and its parent object:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetch($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetch($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' ExtrafieldParamHelpPassword=Leaving this field blank means this value will be stored without encryption (field must be only hidden with star on screen).
Set 'auto' to use the default encryption rule to save password into database (then value read will be the hash only, no way to retrieve original value) -ExtrafieldParamHelpselect=List of values must be lines with format key,value (where key can't be '0')

for example :
1,value1
2,value2
code3,value3
...

In order to have the list depending on another complementary attribute list :
1,value1|options_parent_list_code:parent_key
2,value2|options_parent_list_code:parent_key

In order to have the list depending on another list :
1,value1|parent_list_code:parent_key
2,value2|parent_list_code:parent_key -ExtrafieldParamHelpcheckbox=List of values must be lines with format key,value (where key can't be '0')

for example :
1,value1
2,value2
3,value3
... -ExtrafieldParamHelpradio=List of values must be lines with format key,value (where key can't be '0')

for example :
1,value1
2,value2
3,value3
... -ExtrafieldParamHelpsellist=List of values comes from a table
Syntax : table_name:label_field:id_field::filter
Example : c_typent:libelle:id::filter

- idfilter is necessarly a primary int key
- filter can be a simple test (eg active=1) to display only active value
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax : table_name:label_field:id_field::filter
Example : c_typent:libelle:id::filter

filter can be a simple test (eg active=1) to display only active value
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list :
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath
Syntax : ObjectName:Classpath
Examples :
Societe:societe/class/societe.class.php
Contact:contact/class/contact.class.php +ExtrafieldParamHelpselect=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
code3,value3
...

In order to have the list depending on another complementary attribute list:
1,value1|options_parent_list_code:parent_key
2,value2|options_parent_list_code:parent_key

In order to have the list depending on another list:
1,value1|parent_list_code:parent_key
2,value2|parent_list_code:parent_key +ExtrafieldParamHelpcheckbox=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... +ExtrafieldParamHelpradio=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... +ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filter
Example: c_typent:libelle:id::filter

- idfilter is necessarly a primary int key
- filter can be a simple test (eg active=1) to display only active value
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter +ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filter
Example: c_typent:libelle:id::filter

filter can be a simple test (eg active=1) to display only active value
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter +ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath
Syntax: ObjectName:Classpath
Examples:
Societe:societe/class/societe.class.php
Contact:contact/class/contact.class.php LibraryToBuildPDF=Library used for PDF generation -LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:
1 : local tax apply on products and services without vat (localtax is calculated on amount without tax)
2 : local tax apply on products and services including vat (localtax is calculated on amount + main tax)
3 : local tax apply on products without vat (localtax is calculated on amount without tax)
4 : local tax apply on products including vat (localtax is calculated on amount + main vat)
5 : local tax apply on services without vat (localtax is calculated on amount without tax)
6 : local tax apply on services including vat (localtax is calculated on amount + tax) +LocalTaxDesc=Some countries may apply two or three taxes on each invoice line. If this is the case, choose the type for the second and third tax and its rate. Possible type are:
1: local tax apply on products and services without vat (localtax is calculated on amount without tax)
2: local tax apply on products and services including vat (localtax is calculated on amount + main tax)
3: local tax apply on products without vat (localtax is calculated on amount without tax)
4: local tax apply on products including vat (localtax is calculated on amount + main vat)
5: local tax apply on services without vat (localtax is calculated on amount without tax)
6: local tax apply on services including vat (localtax is calculated on amount + tax) SMS=SMS LinkToTestClickToDial=Enter a phone number to call to show a link to test the ClickToDial url for user %s RefreshPhoneLink=Refresh link @@ -443,7 +443,7 @@ InitEmptyBarCode=Init value for next %s empty records EraseAllCurrentBarCode=Erase all current barcode values ConfirmEraseAllCurrentBarCode=Are you sure you want to erase all current barcode values? AllBarcodeReset=All barcode values have been removed -NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled in the barcode module setup. +NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled in the Barcode module setup. EnableFileCache=Enable file cache ShowDetailsInPDFPageFoot=Add more details into footer of PDF files, like your company address, or manager names (to complete professional ids, company capital and VAT number). NoDetails=No more details in footer @@ -454,18 +454,18 @@ EnableAndSetupModuleCron=If you want to have this recurring invoice generated au ModuleCompanyCodeCustomerAquarium=%s followed by customer code for a customer accounting code ModuleCompanyCodeSupplierAquarium=%s followed by supplier code for a supplier accounting code ModuleCompanyCodePanicum=Return an empty accounting code. -ModuleCompanyCodeDigitaria=Accounting code depends on third party code. The code is composed of the character "C" in the first position followed by the first 5 characters of the third party code. +ModuleCompanyCodeDigitaria=Accounting code depends on third-party code. The code is composed of the character "C" in the first position followed by the first 5 characters of the third-party code. Use3StepsApproval=By default, Purchase Orders need to be created and approved by 2 different users (one step/user to create and one step/user to approve. Note that if user has both permission to create and approve, one step/user will be enough). You can ask with this option to introduce a third step/user approval, if amount is higher than a dedicated value (so 3 steps will be necessary: 1=validation, 2=first approval and 3=second approval if amount is enough).
Set this to empty if one approval (2 steps) is enough, set it to a very low value (0.1) if a second approval (3 steps) is always required. UseDoubleApproval=Use a 3 steps approval when amount (without tax) is higher than... -WarningPHPMail=WARNING: It is often better to setup outgoing emails to use the email server of your provider instead of the default setup. Some email providers (like Yahoo) do not allow you to send an email from another server than their own server. Your current setup uses the server of the application to send email and not the server of your email provider, so some recipients (the one compatible with the restrictive DMARC protocol), will ask your email provider if they can accept your email and some email providers (like Yahoo) may respond "no" because the server is not their, so few of your sent Emails may not be accepted (be careful also of your email provider's sending quota).
If your Email provider (like Yahoo) has this restriction, you must change Email setup to choose the other method "SMTP server" and enter the SMTP server and credentials provided by your Email provider (ask your Email provider to get SMTP credentials for your account). +WarningPHPMail=WARNING: It is often better to setup outgoing emails to use the email server of your provider instead of the default setup. Some email providers (like Yahoo) do not allow you to send an email from another server than their own server. Your current setup uses the server of the application to send email and not the server of your email provider, so some recipients (the one compatible with the restrictive DMARC protocol), will ask your email provider if they can accept your email and some email providers (like Yahoo) may respond "no" because the server is not theirs, so few of your sent Emails may not be accepted (be careful also of your email provider's sending quota).
If your Email provider (like Yahoo) has this restriction, you must change Email setup to choose the other method "SMTP server" and enter the SMTP server and credentials provided by your Email provider. WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: %s. ClickToShowDescription=Click to show description DependsOn=This module needs the module(s) RequiredBy=This module is required by module(s) TheKeyIsTheNameOfHtmlField=This is the name of the HTML field. Technical knowledge is required to read the content of the HTML page to get the key name of a field. -PageUrlForDefaultValues=You must enter the relative path of the page in URL. If you include parameters in URL, the default values will be effective if all parameters are set to same value. -PageUrlForDefaultValuesCreate=
Example:
For the form to create a new thirdparty, it is %s.
For URL of external modules installed into custom directory, do not include the "custom/", so use path like mymodule/mypage.php and not custom/mymodule/mypage.php.
If you want default value only if url has some parameter, you can use %s -PageUrlForDefaultValuesList=
Example:
For the page that list third-parties, it is %s.
For URL of external modules installed into custom directory, do not include the "custom/" so use path like mymodule/mypagelist.php and not custom/mymodule/mypagelist.php.
If you want default value only if url has some parameter, you can use %s +PageUrlForDefaultValues=You must enter the relative path of the page URL. If you include parameters in URL, the default values will be effective if all parameters are set to same value. +PageUrlForDefaultValuesCreate=
Example:
For the form to create a new third party, it is %s.
For URL of external modules installed into custom directory, do not include the "custom/", so use path like mymodule/mypage.php and not custom/mymodule/mypage.php.
If you want default value only if url has some parameter, you can use %s +PageUrlForDefaultValuesList=
Example:
For the page that lists third parties, it is %s.
For URL of external modules installed into custom directory, do not include the "custom/" so use a path like mymodule/mypagelist.php and not custom/mymodule/mypagelist.php.
If you want default value only if url has some parameter, you can use %s EnableDefaultValues=Enable usage of personalized default values EnableOverwriteTranslation=Enable usage of overwritten translation GoIntoTranslationMenuToChangeThis=A translation has been found for the key with this code. To change this value, you must edit it from Home-Setup-translation. @@ -479,10 +479,10 @@ FilesAttachedToEmail=Attach file SendEmailsReminders=Send agenda reminders by emails davDescription=Add a component to be a DAV server DAVSetup=Setup of module DAV -DAV_ALLOW_PUBLIC_DIR=Enable the public directory (WebDav directory with no login required) -DAV_ALLOW_PUBLIC_DIRTooltip=The WebDav public directory is a WebDAV directory everybody can access (in read and write mode), with no need to have/use an existing login/password account. -DAV_ALLOW_ECM_DIR=Enable the root directy of DMS/ECM module (login required) -DAV_ALLOW_ECM_DIRTooltip=The root directory where all files are manually uploaded when using the DMS/ECM module. Like for the feature from the web interface, you will need a valid login/password with granted permissions to access it. +DAV_ALLOW_PUBLIC_DIR=Enable the public directory (WebDav directory - no login required) +DAV_ALLOW_PUBLIC_DIRTooltip=The WebDav public directory is a WebDAV directory anybody can access (in read and write mode), with no authorization required (login/password account). +DAV_ALLOW_ECM_DIR=Enable the private directory (root directory of the DMS/ECM module - login required) +DAV_ALLOW_ECM_DIRTooltip=The root directory where all files are manually uploaded when using the DMS/ECM module. Similarly as access from the web interface, you will need a valid login/password with adecuate permissions to access it. # Modules Module0Name=Users & Groups Module0Desc=Users / Employees and Groups management @@ -522,7 +522,7 @@ Module55Name=Barcodes Module55Desc=Barcode management Module56Name=Telephony Module56Desc=Telephony integration -Module57Name=Direct bank payment orders +Module57Name=Bank Direct Debit payments Module57Desc=Management of Direct Debit payment orders. It includes generation of SEPA file for European countries. Module58Name=ClickToDial Module58Desc=Integration of a ClickToDial system (Asterisk, ...) @@ -545,15 +545,15 @@ Module200Desc=LDAP directory synchronization Module210Name=PostNuke Module210Desc=PostNuke integration Module240Name=Data exports -Module240Desc=Tool to export Dolibarr data (with assistance) +Module240Desc=Tool to export Dolibarr data (with assistants) Module250Name=Data imports -Module250Desc=Tool to import data into Dolibarr (with assistance) +Module250Desc=Tool to import data into Dolibarr (with assistants) Module310Name=Members Module310Desc=Foundation members management Module320Name=RSS Feed Module320Desc=Add RSS feed inside Dolibarr screen pages Module330Name=Bookmarks and shortcuts -Module330Desc=Create shortcuts, always accessible, to the internal or external pages to which you frequently access +Module330Desc=Create shortcuts, always accessible, to the internal or external pages which you frequently access Module400Name=Projects or Leads Module400Desc=Management of projects, leads/opportunities and/or tasks. You can also assign any element (invoice, order, proposal, intervention, ...) to a project and get a transversal view from the project view. Module410Name=Webcalendar @@ -564,23 +564,23 @@ Module510Name=Payment of employee wages Module510Desc=Record and track employee payments Module520Name=Loan Module520Desc=Management of loans -Module600Name=Notifications on business events -Module600Desc=Send email notifications triggered by a business event, for users (setup defined on each user), third-party contacts (setup defined on each third party) or to defined emails -Module600Long=Note that this module sends emails in real-time when a specific business event occurs. If you are looking for a feature to send email reminders of agenda events, go into the setup of module Agenda. +Module600Name=Notifications +Module600Desc=Send email notifications triggered by a business event: per user (setup defined on each user), per third-party contacts (setup defined on each third party) or by specific emails +Module600Long=Note that this module sends emails in real-time when a specific business event occurs. If you are looking for a feature to send email reminders for agenda events, go into the setup of module Agenda. Module610Name=Product Variants Module610Desc=Creation of product variants (color, size etc.) Module700Name=Donations Module700Desc=Donation management Module770Name=Expense reports Module770Desc=Manage and claim expense reports (transportation, meal, ...) -Module1120Name=Vendor commercial proposal -Module1120Desc=Request vendor commercial proposal and prices +Module1120Name=Supplier commercial proposal +Module1120Desc=Request supplier commercial proposal and prices Module1200Name=Mantis Module1200Desc=Mantis integration Module1520Name=Document Generation Module1520Desc=Mass mail document generation Module1780Name=Tags/Categories -Module1780Desc=Create tags/category (products, customers, vendors, contacts or members) +Module1780Desc=Create tags/category (products, customers, suppliers, contacts or members) Module2000Name=WYSIWYG editor Module2000Desc=Allow text fields to be edited using CKEditor Module2200Name=Dynamic Prices @@ -588,7 +588,7 @@ Module2200Desc=Enable the usage of math expressions for prices Module2300Name=Scheduled jobs Module2300Desc=Scheduled jobs management (alias cron or chrono table) Module2400Name=Events/Agenda -Module2400Desc=Track events. Let Dolibarr log automatic events for tracking purposes or record manual events or meetings. This is the main module for good Customer or Supplier Relationship Management. +Module2400Desc=Track events. Let Dolibarr log automatic events for tracking purposes or record manual events or meetings. This is the principal module for good Customer or Supplier Relationship Management. Module2500Name=DMS / ECM Module2500Desc=Document Management System / Electronic Content Management. Automatic organization of your generated or stored documents. Share them when you need. Module2600Name=API/Web services (SOAP server) @@ -596,7 +596,7 @@ Module2600Desc=Enable the Dolibarr SOAP server providing API services Module2610Name=API/Web services (REST server) Module2610Desc=Enable the Dolibarr REST server providing API services Module2660Name=Call WebServices (SOAP client) -Module2660Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Only Supplier orders currently supported.) +Module2660Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Only Supplier orders are currently supported.) Module2700Name=Gravatar Module2700Desc=Use online Gravatar service (www.gravatar.com) to show photo of users/members (found with their emails). Needs Internet access Module2800Desc=FTP Client @@ -624,8 +624,8 @@ Module50000Name=PayBox Module50000Desc=Offer customers a PayBox online payment page (credit/debit cards). This can be used to allow your customers to make free payments or for a payment on a particular Dolibarr object (invoice, order, ...) Module50100Name=Point of sales Module50100Desc=Point of sales module (POS). -Module50150Name=Point of sales -Module50150Desc=Point of sales module (Touch screen POS). +Module50150Name=Point of Sale +Module50150Desc=Point of Sale module (Touch screen POS). Module50200Name=Paypal Module50200Desc=Offer customers a PayPal online payment page (PayPal account or credit/debit cards). This can be used to allow your customers to make free payments or for a payment on a particular Dolibarr object (invoice, order, ...) Module50400Name=Accounting (advanced) @@ -699,13 +699,13 @@ Permission113=Setup financial accounts (create, manage categories) Permission114=Reconcile transactions Permission115=Export transactions and account statements Permission116=Transfers between accounts -Permission117=Manage cheques dispatching +Permission117=Manage checks dispatching Permission121=Read third parties linked to user Permission122=Create/modify third parties linked to user Permission125=Delete third parties linked to user Permission126=Export third parties -Permission141=Read all projects and tasks (also private projects I am not a contact for) -Permission142=Create/modify all projects and tasks (also private projects I am not a contact for) +Permission141=Read all projects and tasks (also private projects for which I am not a contact) +Permission142=Create/modify all projects and tasks (also private projects for which I am not a contact) Permission144=Delete all projects and tasks (also private projects i am not contact for) Permission146=Read providers Permission147=Read stats @@ -765,7 +765,7 @@ PermissionAdvanced253=Create/modify internal/external users and permissions Permission254=Create/modify external users only Permission255=Modify other users password Permission256=Delete or disable other users -Permission262=Extend access to all third parties (not only third parties that user is a sale representative for).
Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.).
Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262=Extend access to all third parties (not only third parties for which that user is a sale representative).
Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.).
Not effective for projects (only rules on project permissions, visibility and assignment matters). Permission271=Read CA Permission272=Read invoices Permission273=Issue invoices @@ -775,10 +775,10 @@ Permission283=Delete contacts Permission286=Export contacts Permission291=Read tariffs Permission292=Set permissions on the tariffs -Permission293=Modify customers tariffs -Permission300=Read bar codes -Permission301=Create/modify bar codes -Permission302=Delete bar codes +Permission293=Modify customer's tariffs +Permission300=Read barcodes +Permission301=Create/modify barcodes +Permission302=Delete barcodes Permission311=Read services Permission312=Assign service/subscription to contract Permission331=Read bookmarks @@ -852,8 +852,8 @@ Permission1251=Run mass imports of external data into database (data load) Permission1321=Export customer invoices, attributes and payments Permission1322=Reopen a paid bill Permission1421=Export customer orders and attributes -Permission20001=Read leave requests (your leave and that of your subordinates) -Permission20002=Create/modify your leave requests (your leave and that of your subordinates) +Permission20001=Read leave requests (your leave and those of your subordinates) +Permission20002=Create/modify your leave requests (your leave and those of your subordinates) Permission20003=Delete leave requests Permission20004=Read all leave requests (even of user not subordinates) Permission20005=Create/modify leave requests for everybody (even of user not subordinates) @@ -888,28 +888,28 @@ Permission63001=Read resources Permission63002=Create/modify resources Permission63003=Delete resources Permission63004=Link resources to agenda events -DictionaryCompanyType=Types of third-parties -DictionaryCompanyJuridicalType=Legal forms of third-parties -DictionaryProspectLevel=Prospect potential level -DictionaryCanton=State/Province +DictionaryCompanyType=Third-Party Types +DictionaryCompanyJuridicalType=Third-Party Legal Entities +DictionaryProspectLevel=Prospect potential +DictionaryCanton=States/Provinces DictionaryRegion=Regions DictionaryCountry=Countries DictionaryCurrency=Currencies -DictionaryCivility=Personal and professional titles +DictionaryCivility=Honorifics DictionaryActions=Types of agenda events -DictionarySocialContributions=Social or fiscal taxes types +DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=VAT Rates or Sales Tax Rates DictionaryRevenueStamp=Amount of tax stamps -DictionaryPaymentConditions=Payment terms -DictionaryPaymentModes=Payment modes -DictionaryTypeContact=Contacts/addresses types +DictionaryPaymentConditions=Payment Terms +DictionaryPaymentModes=Payment Modes +DictionaryTypeContact=Contact/Address types DictionaryTypeOfContainer=Type of website pages/containers DictionaryEcotaxe=Ecotax (WEEE) DictionaryPaperFormat=Paper formats -DictionaryFormatCards=Cards formats +DictionaryFormatCards=Card formats DictionaryFees=Expense report - Types of expense report lines DictionarySendingMethods=Shipping methods -DictionaryStaff=Staff +DictionaryStaff=No. of Employees DictionaryAvailability=Delivery delay DictionaryOrderMethods=Ordering methods DictionarySource=Origin of proposals/orders @@ -918,21 +918,21 @@ DictionaryAccountancysystem=Models for chart of accounts DictionaryAccountancyJournal=Accounting journals DictionaryEMailTemplates=Email Templates DictionaryUnits=Units -DictionaryProspectStatus=Prospection status +DictionaryProspectStatus=Prospect status DictionaryHolidayTypes=Types of leave DictionaryOpportunityStatus=Lead status for project/lead DictionaryExpenseTaxCat=Expense report - Transportation categories DictionaryExpenseTaxRange=Expense report - Range by transportation category SetupSaved=Setup saved SetupNotSaved=Setup not saved -BackToModuleList=Back to modules list -BackToDictionaryList=Back to list of Dictionaries +BackToModuleList=Back to Module list +BackToDictionaryList=Back to Dictionaries list TypeOfRevenueStamp=Type of tax stamp -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. -VATIsNotUsedDesc=By default the proposed Sale tax is 0 which can be used for cases like associations, individuals or small companies. -VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which Sale tax is declared. -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. +VATManagement=Sales Tax Management +VATIsUsedDesc=By default when creating prospects, invoices, orders etc. the Sales Tax rate follows the active standard rule:
If the seller is not subject to Sales tax, then Sales tax defaults to 0. End of rule.
If the (seller's country = buyer's country), then the Sales tax by default equals the Sales 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 VAT is 0. This rule is dependant on the seller's country - please consult with your accountant. The VAT should be paid by the buyer to the 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 VAT number) then the VAT defaults to the VAT rate 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 VAT number), then the VAT is 0 by default. End of rule.
In any other case the proposed default is Sales tax=0. End of rule. +VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for cases like associations, individuals or small companies. +VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. +VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### LTRate=Rate LocalTax1IsNotUsed=Do not use second tax @@ -1046,15 +1046,15 @@ Delays_MAIN_DELAY_SUPPLIER_BILLS_TO_PAY=Delay (in days) before alert on unpaid s Delays_MAIN_DELAY_CUSTOMER_BILLS_UNPAYED=Delay (in days) before alert on unpaid client invoices Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=Delay (in days) before alert on pending bank reconciliation Delays_MAIN_DELAY_MEMBERS=Delay (in days) before alert on delayed membership fee -Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Delay (in days) before alert for cheque deposit to do +Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Delay (in days) before alert for check deposit to do Delays_MAIN_DELAY_EXPENSEREPORTS=Delay (in days) before alert for expense reports to approve SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. -SetupDescription2=The mandatory setup steps are the 2 first steps in the Setup menu, namely : +SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): SetupDescription3=%s -> %s
Basic parameters used to customize the default behavior of Dolibarr (e.g for country-related features). SetupDescription4=%s -> %s
Dolibarr ERP/CRM is a collection of many modules/applications, all more or less independent. The modules relevant to your needs must be enabled and configured. New items/options are added to menus with the activation of a module. -SetupDescription5=Other Setup menu entries provides optional parameters. +SetupDescription5=Other Setup menu entries manage optional parameters. LogEvents=Security audit events -Audit=Security events +Audit=Audit InfoDolibarr=About Dolibarr InfoBrowser=About Browser InfoOS=About OS @@ -1066,7 +1066,7 @@ BrowserName=Browser name BrowserOS=Browser OS ListOfSecurityEvents=List of Dolibarr security events SecurityEventsPurged=Security events purged -LogEventDesc=You can enable here the logging for security events. Administrators can then see its content via menu %s - %s. Warning, this feature can consume a large amount of data in database. +LogEventDesc=You can enable here the logging for security events. Administrators can then see its content via menu %s - %s. Warning, this feature can generate a large amount of data in the database. AreaForAdminOnly=Setup parameters can be set by administrator users only. SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. SystemAreaForAdminOnly=This area is available for administrator users only. None of the Dolibarr permissions can reduce this limit. @@ -1086,7 +1086,7 @@ TriggerAlwaysActive=Triggers in this file are always active, whatever are the ac TriggerActiveAsModuleActive=Triggers in this file are active as module %s is enabled. GeneratedPasswordDesc=Define here which rule you want to use to generate new password if you ask to have auto generated password DictionaryDesc=Insert all reference data. You can add your values to the default. -ConstDesc=This page allows you to edit all other parameters not available in previous pages. These are mostly reserved parameters for developers or advanced troubleshooting. For a list of options check here. +ConstDesc=This page allows you to edit (override) parameters not available in other pages. These are mostly reserved parameters for developers/advanced troubleshooting. For a full list of the parameters available see here. MiscellaneousDesc=All other security related parameters are defined here. LimitsSetup=Limits/Precision setup LimitsDesc=You can define limits, precisions and optimizations used by Dolibarr here @@ -1095,7 +1095,7 @@ MAIN_MAX_DECIMALS_TOT=Max decimals for total prices MAIN_MAX_DECIMALS_SHOWN=Max decimals for prices shown on screen (Add ... after this number if you want to see ... when number is truncated when shown on screen) MAIN_ROUNDING_RULE_TOT=Step of rounding range (for countries where rounding is done on something else than base 10. For example, put 0.05 if rounding is done by 0.05 steps) UnitPriceOfProduct=Net unit price of a product -TotalPriceAfterRounding=Total price (net/vat/incl tax) after rounding +TotalPriceAfterRounding=Total price (excl/vat/incl tax) after rounding ParameterActiveForNextInputOnly=Parameter effective for next input only NoEventOrNoAuditSetup=No security event has been recorded yet. This can be normal if audit has not been enabled on "Setup - Security - Events" page. NoEventFoundWithCriteria=No security event has been found for this search criteria. @@ -1112,12 +1112,12 @@ RestoreDesc3=Restore the data, from a backup dump file, into the database of the RestoreMySQL=MySQL import ForcedToByAModule= This rule is forced to %s by an activated module PreviousDumpFiles=Generated database backup files -WeekStartOnDay=First day of week +WeekStartOnDay=First day of the week RunningUpdateProcessMayBeRequired=Running the upgrade process seems to be required (Programs version %s differs from database version %s) YouMustRunCommandFromCommandLineAfterLoginToUser=You must run this command from command line after login to a shell with user %s or you must add -W option at end of command line to provide %s password. YourPHPDoesNotHaveSSLSupport=SSL functions not available in your PHP DownloadMoreSkins=More skins to download -SimpleNumRefModelDesc=Returns the reference number with format %syymm-nnnn where yy is year, mm is month and nnnn is a sequence without hole and with no reset +SimpleNumRefModelDesc=Returns the reference number with format %syymm-nnnn where yy is year, mm is month and nnnn is sequential with no reset ShowProfIdInAddress=Show professional id with addresses on documents ShowVATIntaInAddress=Hide intra-Community VAT number with addresses on documents TranslationUncomplete=Partial translation @@ -1135,13 +1135,13 @@ MAIN_PROXY_HOST=Name/Address of proxy server MAIN_PROXY_PORT=Port of proxy server MAIN_PROXY_USER=Login to use the proxy server MAIN_PROXY_PASS=Password to use the proxy server -DefineHereComplementaryAttributes=Define any attributes not already available by default, that you want to be supported for %s here. +DefineHereComplementaryAttributes=Define here any additional/custom attributes that you want to be included for: %s ExtraFields=Complementary attributes ExtraFieldsLines=Complementary attributes (lines) ExtraFieldsLinesRec=Complementary attributes (templates invoices lines) ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) -ExtraFieldsThirdParties=Complementary attributes (thirdparty) +ExtraFieldsThirdParties=Complementary attributes (third party) ExtraFieldsContacts=Complementary attributes (contacts/address) ExtraFieldsMember=Complementary attributes (member) ExtraFieldsMemberType=Complementary attributes (member type) @@ -1160,7 +1160,7 @@ SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail dire TranslationSetup=Setup of translation TranslationKeySearch=Search a translation key or string TranslationOverwriteKey=Overwrite a translation string -TranslationDesc=How to set displayed application language :
* Systemwide: menu Home - Setup - Display
* Per user: Use the User display setup tab on user card (click on username at the top of the screen). +TranslationDesc=How to set displayed application language:
* Systemwide: menu Home - Setup - Display
* Per user: Use the User display setup tab on user card (click on username at the top of the screen). TranslationOverwriteDesc=You can also override strings filling the following table. Choose your language from "%s" dropdown, insert the translation key string into "%s" and your new translation into "%s" TranslationOverwriteDesc2=You can use the other tab to help you know which translation key to use TranslationString=Translation string @@ -1176,7 +1176,7 @@ YesInSummer=Yes in summer OnlyFollowingModulesAreOpenedToExternalUsers=Note, only the following modules are opened to external users (whatever the permissions of such users) and only if permissions are granted: SuhosinSessionEncrypt=Session storage encrypted by Suhosin ConditionIsCurrently=Condition is currently %s -YouUseBestDriver=You use driver %s which is the best driver available currently. +YouUseBestDriver=You use driver %s which is the best driver currently available. 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. SearchOptim=Search optimization @@ -1206,11 +1206,11 @@ UserMailRequired=EMail required to create a new user HRMSetup=HRM module setup ##### Company setup ##### CompanySetup=Companies module setup -CompanyCodeChecker=Options for automatic generation of customer / vendor codes -AccountCodeManager=Options for automatic generation of customer / vendor accounting codes -NotificationsDesc=EMails notifications feature allows you to silently send automatic mail, for some Dolibarr events. Targets of notifications can be defined: -NotificationsDescUser=* per users, one user at time. -NotificationsDescContact=* per third parties contacts (customers or vendors), one contact at time. +CompanyCodeChecker=Options for automatic generation of customer/supplier codes +AccountCodeManager=Options for automatic generation of customer/supplier accounting codes +NotificationsDesc=EMais notification feature allows you to silently send automatic mails for some Dolibarr events. Recipients of notifications can be defined: +NotificationsDescUser=* per user, one user at time. +NotificationsDescContact=* per third parties contacts (customers or suppliers), one contact at time. NotificationsDescGlobal=* or by setting global target emails in module setup page. ModelModules=Document Templates DocumentModelOdt=Generate documents from OpenDocument templates (.ODT / .ODS files from LibreOffice, OpenOffice, KOffice, TextEdit,...) @@ -1218,12 +1218,12 @@ WatermarkOnDraft=Watermark on draft document JSOnPaimentBill=Activate feature to autofill payment lines on payment form CompanyIdProfChecker=Rules for Professional IDs MustBeUnique=Must be unique? -MustBeMandatory=Mandatory to create third parties (if vat number or type of company defined) ? +MustBeMandatory=Mandatory to create third parties (if VAT number or type of company defined) ? MustBeInvoiceMandatory=Mandatory to validate invoices? TechnicalServicesProvided=Technical services provided #####DAV ##### -WebDAVSetupDesc=This is the links to access the WebDAV directory. It contains a "public" dir open to any user knowing the URL (if public directory access allowed) and a "private" directory that need an existing login account/password to access. -WebDavServer=Root URL of %s server : %s +WebDAVSetupDesc=This is the link to access the WebDAV directory. It contains a "public" dir open to any user knowing the URL (if public directory access allowed) and a "private" directory that need an existing login account/password for access. +WebDavServer=Root URL of %s server: %s ##### Webcal setup ##### WebCalUrlForVCalExport=An export link to %s format is available at following link: %s ##### Invoices ##### @@ -1236,8 +1236,8 @@ CreditNote=Credit note CreditNotes=Credit notes ForceInvoiceDate=Force invoice date to validation date SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice -SuggestPaymentByRIBOnAccount=Suggest payment by withdraw on account -SuggestPaymentByChequeToAddress=Suggest payment by cheque to +SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account +SuggestPaymentByChequeToAddress=Suggest payment by check to FreeLegalTextOnInvoices=Free text on invoices WatermarkOnDraftInvoices=Watermark on draft invoices (none if empty) PaymentsNumberingModule=Payments numbering model @@ -1251,11 +1251,11 @@ FreeLegalTextOnProposal=Free text on commercial proposals WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal ##### SupplierProposal ##### -SupplierProposalSetup=Price requests vendors module setup -SupplierProposalNumberingModules=Price requests vendors numbering models -SupplierProposalPDFModules=Price requests vendors documents models -FreeLegalTextOnSupplierProposal=Free text on price requests vendors -WatermarkOnDraftSupplierProposal=Watermark on draft price requests vendors (none if empty) +SupplierProposalSetup=Price requests suppliers module setup +SupplierProposalNumberingModules=Price requests suppliers numbering models +SupplierProposalPDFModules=Price requests suppliers documents models +FreeLegalTextOnSupplierProposal=Free text on price requests suppliers +WatermarkOnDraftSupplierProposal=Watermark on draft price requests suppliers (none if empty) BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL=Ask for bank account destination of price request WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### @@ -1286,8 +1286,8 @@ MemberMainOptions=Main options AdherentLoginRequired= Manage a Login for each member AdherentMailRequired=EMail required to create a new member MemberSendInformationByMailByDefault=Checkbox to send mail confirmation to members (validation or new subscription) is on by default -VisitorCanChooseItsPaymentMode=Visitor can choose among available payment modes -MEMBER_REMINDER_EMAIL=Enable automatic reminder by emails of expired subscriptions. Note: Module %s must be enabled and correctly setup to have reminder sent. +VisitorCanChooseItsPaymentMode=Visitor can choose from available payment modes +MEMBER_REMINDER_EMAIL=Enable automatic reminder by email of expired subscriptions. Note: Module %s must be enabled and correctly setup to send reminders. ##### LDAP setup ##### LDAPSetup=LDAP Setup LDAPGlobalParameters=Global parameters @@ -1309,7 +1309,7 @@ LDAPSynchronizeMembersTypes=Organization of foundation's members types in LDAP LDAPPrimaryServer=Primary server LDAPSecondaryServer=Secondary server LDAPServerPort=Server port -LDAPServerPortExample=Default port : 389 +LDAPServerPortExample=Default port: 389 LDAPServerProtocolVersion=Protocol version LDAPServerUseTLS=Use TLS LDAPServerUseTLSExample=Your LDAP server use TLS @@ -1366,49 +1366,49 @@ LDAPSetupForVersion2=LDAP server configured for version 2 LDAPDolibarrMapping=Dolibarr Mapping LDAPLdapMapping=LDAP Mapping LDAPFieldLoginUnix=Login (unix) -LDAPFieldLoginExample=Example : uid +LDAPFieldLoginExample=Example: uid LDAPFilterConnection=Search filter -LDAPFilterConnectionExample=Example : &(objectClass=inetOrgPerson) +LDAPFilterConnectionExample=Example: &(objectClass=inetOrgPerson) LDAPFieldLoginSamba=Login (samba, activedirectory) -LDAPFieldLoginSambaExample=Example : samaccountname +LDAPFieldLoginSambaExample=Example: samaccountname LDAPFieldFullname=Full name -LDAPFieldFullnameExample=Example : cn +LDAPFieldFullnameExample=Example: cn LDAPFieldPasswordNotCrypted=Password not encrypted LDAPFieldPasswordCrypted=Password encrypted -LDAPFieldPasswordExample=Example : userPassword -LDAPFieldCommonNameExample=Example : cn +LDAPFieldPasswordExample=Example: userPassword +LDAPFieldCommonNameExample=Example: cn LDAPFieldName=Name -LDAPFieldNameExample=Example : sn +LDAPFieldNameExample=Example: sn LDAPFieldFirstName=First name -LDAPFieldFirstNameExample=Example : givenName +LDAPFieldFirstNameExample=Example: givenName LDAPFieldMail=Email address -LDAPFieldMailExample=Example : mail +LDAPFieldMailExample=Example: mail LDAPFieldPhone=Professional phone number -LDAPFieldPhoneExample=Example : telephonenumber +LDAPFieldPhoneExample=Example: telephonenumber LDAPFieldHomePhone=Personal phone number -LDAPFieldHomePhoneExample=Example : homephone +LDAPFieldHomePhoneExample=Example: homephone LDAPFieldMobile=Cellular phone -LDAPFieldMobileExample=Example : mobile +LDAPFieldMobileExample=Example: mobile LDAPFieldFax=Fax number -LDAPFieldFaxExample=Example : facsimiletelephonenumber +LDAPFieldFaxExample=Example: facsimiletelephonenumber LDAPFieldAddress=Street -LDAPFieldAddressExample=Example : street +LDAPFieldAddressExample=Example: street LDAPFieldZip=Zip -LDAPFieldZipExample=Example : postalcode +LDAPFieldZipExample=Example: postalcode LDAPFieldTown=Town -LDAPFieldTownExample=Example : l +LDAPFieldTownExample=Example: l LDAPFieldCountry=Country LDAPFieldDescription=Description -LDAPFieldDescriptionExample=Example : description +LDAPFieldDescriptionExample=Example: description LDAPFieldNotePublic=Public Note -LDAPFieldNotePublicExample=Example : publicnote +LDAPFieldNotePublicExample=Example: publicnote LDAPFieldGroupMembers= Group members -LDAPFieldGroupMembersExample= Example : uniqueMember +LDAPFieldGroupMembersExample= Example: uniqueMember LDAPFieldBirthdate=Birthdate LDAPFieldCompany=Company -LDAPFieldCompanyExample=Example : o +LDAPFieldCompanyExample=Example: o LDAPFieldSid=SID -LDAPFieldSidExample=Example : objectsid +LDAPFieldSidExample=Example: objectsid LDAPFieldEndLastSubscription=Date of subscription end LDAPFieldTitle=Job position LDAPFieldTitleExample=Example: title @@ -1441,8 +1441,8 @@ CacheByClient=Cache by browser CompressionOfResources=Compression of HTTP responses CompressionOfResourcesDesc=For example using the Apache directive "AddOutputFilterByType DEFLATE" TestNotPossibleWithCurrentBrowsers=Such an automatic detection is not possible with current browsers -DefaultValuesDesc=Here you can define/force the default value you want to have when you create a new record, and/or default filters or sort order when your list records. -DefaultCreateForm=Default values (to create on forms) +DefaultValuesDesc=Here you may define the default value you wish to use when creating a new record, and/or default filters or the sort order when you list records. +DefaultCreateForm=Default values (to use on forms) DefaultSearchFilters=Default search filters DefaultSortOrder=Default sort orders DefaultFocus=Default focus fields @@ -1451,8 +1451,8 @@ DefaultMandatory=Mandatory form fields ProductSetup=Products module setup ServiceSetup=Services module setup ProductServiceSetup=Products and Services modules setup -NumberOfProductShowInSelect=Max number of products in combos select lists (0=no limit) -ViewProductDescInFormAbility=Display product descriptions in forms (otherwise as popup tooltip) +NumberOfProductShowInSelect=Maximum number of products to show in combo select lists (0=no limit) +ViewProductDescInFormAbility=Display product descriptions in forms (otherwise shown in a tooltip popup) MergePropalProductCard=Activate in product/service Attached Files tab an option to merge product PDF document to proposal PDF azur if product/service is in the proposal 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. @@ -1497,7 +1497,7 @@ GenbarcodeLocation=Bar code generation command line tool (used by internal engin BarcodeInternalEngine=Internal engine BarCodeNumberManager=Manager to auto define barcode numbers ##### Prelevements ##### -WithdrawalsSetup=Setup of module Direct debit payment orders +WithdrawalsSetup=Setup of module Direct Debit payments ##### ExternalRSS ##### ExternalRSSSetup=External RSS imports setup NewRSS=New RSS Feed @@ -1505,13 +1505,13 @@ RSSUrl=RSS URL RSSUrlExample=An interesting RSS feed ##### Mailing ##### MailingSetup=EMailing module setup -MailingEMailFrom=Sender EMail (From) for emails sent by emailing module +MailingEMailFrom=Sender email (From) for emails sent by emailing module MailingEMailError=Return EMail (Errors-to) for emails with errors MailingDelay=Seconds to wait after sending next message ##### Notification ##### -NotificationSetup=EMail notification module setup -NotificationEMailFrom=Sender EMail (From) for emails sent for notifications -FixedEmailTarget=Fixed email target +NotificationSetup=Email Notification module setup +NotificationEMailFrom=Sender email (From) for emails sent by Notifications module +FixedEmailTarget=Recipient ##### Sendings ##### SendingsSetup=Sending module setup SendingsReceiptModel=Sending receipt model @@ -1606,7 +1606,7 @@ AGENDA_SHOW_LINKED_OBJECT=Show linked object into agenda view ##### Clicktodial ##### ClickToDialSetup=Click To Dial module setup ClickToDialUrlDesc=Url called when a click on phone picto is done. In URL, you can use tags
__PHONETO__ that will be replaced with the phone number of person to call
__PHONEFROM__ that will be replaced with phone number of calling person (yours)
__LOGIN__ that will be replaced with clicktodial login (defined on user card)
__PASS__ that will be replaced with clicktodial password (defined on user card). -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=This module makea phone numbers clickable links. A click on the icon will make your phone call the 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. ClickToDialUseTelLink=Use just a link "tel:" on phone numbers ClickToDialUseTelLinkDesc=Use this method if your users have a softphone or a software interface installed on the same computer as the browser, and called when you click on a link in your browser that starts with "tel:". If you need a full server solution (no need of local software installation), you must set this to "No" and fill next field. ##### Point Of Sales (CashDesk) ##### @@ -1614,7 +1614,7 @@ CashDesk=Point of sales CashDeskSetup=Point of sales module setup CashDeskThirdPartyForSell=Default generic third party to use for sales CashDeskBankAccountForSell=Default account to use to receive cash payments -CashDeskBankAccountForCheque= Default account to use to receive payments by cheque +CashDeskBankAccountForCheque= Default account to use to receive payments by check CashDeskBankAccountForCB= Default account to use to receive payments by credit cards 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). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease @@ -1640,19 +1640,19 @@ ApiKey=Key for API WarningAPIExplorerDisabled=The API explorer has been disabled. API explorer is not required to provide API services. It is a tool for developer to find/test REST APIs. If you need this tool, go into setup of module API REST to activate it. ##### Bank ##### BankSetupModule=Bank module setup -FreeLegalTextOnChequeReceipts=Free text on cheque receipts +FreeLegalTextOnChequeReceipts=Free text on check receipts BankOrderShow=Display order of bank accounts for countries using "detailed bank number" BankOrderGlobal=General BankOrderGlobalDesc=General display order BankOrderES=Spanish BankOrderESDesc=Spanish display order -ChequeReceiptsNumberingModule=Cheque Receipts Numbering module +ChequeReceiptsNumberingModule=Check Receipts Numbering Module ##### Multicompany ##### MultiCompanySetup=Multi-company module setup ##### Suppliers ##### SuppliersSetup=Supplier module setup SuppliersCommandModel=Complete template of purchase order (logo...) -SuppliersInvoiceModel=Complete template of vendor invoice (logo...) +SuppliersInvoiceModel=Complete template of supplier invoice (logo...) SuppliersInvoiceNumberingModel=Supplier invoices numbering models IfSetToYesDontForgetPermission=If set to yes, don't forget to provide permissions to groups or users allowed for the second approval ##### GeoIPMaxmind ##### @@ -1689,7 +1689,7 @@ NoAmbiCaracAutoGeneration=Do not use ambiguous characters ("1","l","i","|","0"," SalariesSetup=Setup of module salaries SortOrder=Sort order Format=Format -TypePaymentDesc=0:Customer payment type, 1:Vendor payment type, 2:Both customers and vendors payment type +TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) ExpenseReportsSetup=Setup of module Expense Reports TemplatePDFExpenseReports=Document templates to generate expense report document @@ -1697,16 +1697,16 @@ ExpenseReportsIkSetup=Setup of module Expense Reports - Milles index ExpenseReportsRulesSetup=Setup of module Expense Reports - Rules ExpenseReportNumberingModules=Expense reports numbering module NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. -YouMayFindNotificationsFeaturesIntoModuleNotification=You may find options for EMail notifications by enabling and configuring the module "Notification". +YouMayFindNotificationsFeaturesIntoModuleNotification=You may find options for email notifications by enabling and configuring the module "Notification". ListOfNotificationsPerUser=List of notifications per user* ListOfNotificationsPerUserOrContact=List of notifications per user* or per contact** -ListOfFixedNotifications=List of fixed notifications +ListOfFixedNotifications=List of Fixed Notifications GoOntoUserCardToAddMore=Go to the tab "Notifications" of a user to add or remove notifications for users GoOntoContactCardToAddMore=Go on the tab "Notifications" of a third party to add or remove notifications for contacts/addresses Threshold=Threshold BackupDumpWizard=Wizard to build database backup dump file SomethingMakeInstallFromWebNotPossible=Installation of external module is not possible from the web interface for the following reason: -SomethingMakeInstallFromWebNotPossible2=For this reason, process to upgrade described here is only manual steps a privileged user can do. +SomethingMakeInstallFromWebNotPossible2=For this reason, process to upgrade described here is a manual process only a privileged user may perform. InstallModuleFromWebHasBeenDisabledByFile=Install of external module from application has been disabled by your administrator. You must ask him to remove the file %s to allow this feature. ConfFileMustContainCustom=Installing or building an external module from application need to save the module files into directory %s. To have this directory processed by Dolibarr, you must setup your conf/conf.php to add the 2 directive lines:
$dolibarr_main_url_root_alt='/custom';
$dolibarr_main_document_root_alt='%s/custom'; HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over @@ -1732,8 +1732,8 @@ ColorFormat=The RGB color is in HEX format, eg: FF0000 PositionIntoComboList=Position of line into combo lists SellTaxRate=Sale tax rate RecuperableOnly=Yes for VAT "Not Perceived but Recoverable" dedicated for some state in France. Keep value to "No" in all other cases. -UrlTrackingDesc=If the provider or transport service offer a page or web site to check status of your shipping, you can enter it here. You can use the key {TRACKID} into URL parameters so the system will replace it with value of tracking number user entered into shipment card. -OpportunityPercent=When you create a lead, you will define an estimated amount of project/lead. According to status of lead, this amount may be multiplied by this rate to evaluate global amount all your opportunities may generate. Value is percent (between 0 and 100). +UrlTrackingDesc=If the provider or transport service offers a page or web site to check the status of your shipments, you may enter it here. You can use the key {TRACKID} in the URL parameters so the system will replace it with the tracking number the user entered into the shipment card. +OpportunityPercent=When you create a lead, you will define an estimated amount of project/lead. According to status of the lead, this amount may be multiplied by this rate to evaluate a total amount all your leads may generate. Value is a percentage (between 0 and 100). TemplateForElement=This template record is dedicated to which element TypeOfTemplate=Type of template TemplateIsVisibleByOwnerOnly=Template is visible to owner only @@ -1751,7 +1751,7 @@ MailToSendShipment=Shipments MailToSendIntervention=Interventions MailToSendSupplierRequestForQuotation=Quotation request MailToSendSupplierOrder=Purchase orders -MailToSendSupplierInvoice=Vendor invoices +MailToSendSupplierInvoice=Supplier invoices MailToSendContract=Contracts MailToThirdparty=Third parties MailToMember=Members @@ -1762,10 +1762,10 @@ YouUseLastStableVersion=You use the latest stable version TitleExampleForMajorRelease=Example of message you can use to announce this major release (feel free to use it on your web sites) TitleExampleForMaintenanceRelease=Example of message you can use to announce this maintenance release (feel free to use it on your web sites) ExampleOfNewsMessageForMajorRelease=Dolibarr ERP & CRM %s is available. Version %s is a major release with a lot of new features for both users and developers. You can download it from the download area of https://www.dolibarr.org portal (subdirectory Stable versions). You can read ChangeLog for complete list of changes. -ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP & CRM %s is available. Version %s is a maintenance version, so it contains only fixes of bugs. We recommend everybody using an older version to upgrade to this one. As any maintenance release, no new features or data structure change is present in this version. You can download it from the download area of https://www.dolibarr.org portal (subdirectory Stable versions). You can read ChangeLog for complete list of changes. -MultiPriceRuleDesc=When option "Several level of prices per product/service" is on, you can define different prices (one per price level) for each product. To save you time, here you can enter a rule to have a price for each level autocalculated according to the price of first level, so you will have to only enter a price for the first level on each product. This page is here to save you time and can be useful only if your prices for each level are relative to first level. You can ignore this page in most cases. +ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP & CRM %s is available. Version %s is a maintenance version, so contains only bug fixes. We recommend all users to upgrade to this version. A maintenance release does not introduce new features or changes to the database. You may download it from the download area of https://www.dolibarr.org portal (subdirectory Stable versions). You can read the ChangeLog for complete list of changes. +MultiPriceRuleDesc=When option "Several levels of prices per product/service" is enabled, you can define different prices (one per price level) for each product. To save you time, here you may enter a rule to autocalculate a price for each level based on the price of the first level, so you will have to only enter a price for the first level for each product. This page is designed to save you time but ia useful only if your prices for each level are relative to first level. You can ignore this page in most cases. ModelModulesProduct=Templates for product documents -ToGenerateCodeDefineAutomaticRuleFirst=To be able to generate codes automatically, you must first define a manager to auto define barcode number. +ToGenerateCodeDefineAutomaticRuleFirst=To be able to generate codes automatically, you must first define a manager to auto-define the barcode number. SeeSubstitutionVars=See * note for list of possible substitution variables SeeChangeLog=See ChangeLog file (english only) AllPublishers=All publishers @@ -1803,25 +1803,25 @@ MAIN_PDF_MARGIN_LEFT=Left margin on PDF MAIN_PDF_MARGIN_RIGHT=Right margin on PDF MAIN_PDF_MARGIN_TOP=Top margin on PDF MAIN_PDF_MARGIN_BOTTOM=Bottom margin on PDF -NothingToSetup=There is no specific setup to do for this module. +NothingToSetup=There is no specific setup required for this module. SetToYesIfGroupIsComputationOfOtherGroups=Set this to yes if this group is a computation of other groups EnterCalculationRuleIfPreviousFieldIsYes=Enter calculation rule if previous field was set to Yes (For example 'CODEGRP1+CODEGRP2') SeveralLangugeVariatFound=Several language variants found COMPANY_AQUARIUM_REMOVE_SPECIAL=Remove special characters COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (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 +GDPRContactDesc=If you store data about European companies/citizens, you can name 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 +HelpOnTooltipDesc=Put text or a translation key here for the text to show in a tooltip when this field appears in a form +YouCanDeleteFileOnServerWith=You can delete this file on the server with Command Line:
%s ChartLoaded=Chart of account loaded SocialNetworkSetup=Setup of module Social Networks 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. +VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to Off in the menu %s - %s, so Sales tax or Vat used will always be 0 for sales. SwapSenderAndRecipientOnPDF=Swap sender and recipient address on PDF FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields only EmailCollector=Email collector -EmailCollectorDescription=Add a scheduled job and a setup page to scan regularly email boxes (using IMAP protocol) and record emails received into your application, at the right place and/or create some record automatically (like leads). +EmailCollectorDescription=Add a scheduled job and a setup page to scan regularly email boxes (using IMAP protocol) and record emails received into your application, at the right place and/or create some records automatically (like leads). NewEmailCollector=New Email Collector EMailHost=Host of email IMAP server MailboxSourceDirectory=Mailbox source directory @@ -1831,21 +1831,21 @@ 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 ? +EmailCollectorConfirmCollect=Do you want to run the collection for this collector now ? NoNewEmailToProcess=No new email (matching filters) to process NothingProcessed=Nothing done -XEmailsDoneYActionsDone=%s emails qualified, %s emails successfuly processed (for %s record/actions done) by collector +XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) by collector RecordEvent=Record email event -CreateLeadAndThirdParty=Create lead (and thirdparty if necessary) +CreateLeadAndThirdParty=Create lead (and third party if necessary) CodeLastResult=Result code of last collect NbOfEmailsInInbox=Number of email in source directory -LoadThirdPartyFromName=Load thirdparty from name (load only) -LoadThirdPartyFromNameOrCreate=Load thirdparty from name (create if not found) +LoadThirdPartyFromName=Load third party from name (load only) +LoadThirdPartyFromNameOrCreate=Load third party 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 +ResourceSetup=Configuration of Resource module UseSearchToSelectResource=Use a search form to choose a resource (rather than a drop-down list). DisabledResourceLinkUser=Disable feature to link a resource to users DisabledResourceLinkContact=Disable feature to link a resource to contacts diff --git a/htdocs/langs/en_US/agenda.lang b/htdocs/langs/en_US/agenda.lang index 95fadf00b68..90a62526e4d 100644 --- a/htdocs/langs/en_US/agenda.lang +++ b/htdocs/langs/en_US/agenda.lang @@ -31,8 +31,8 @@ ViewWeek=Week view ViewPerUser=Per user view ViewPerType=Per type view AutoActions= Automatic filling -AgendaAutoActionDesc= Here you can define events which you want Dolibarr to create automatically in Agenda. If nothing is checked, only manual actions will be included in logs and displayed in Agenda. Automatic tracking of business actions done on objects (validation, status change) will not be saved. -AgendaSetupOtherDesc= This page provides options to allow exports of your Dolibarr events into an external calendar (thunderbird, google calendar, ...) +AgendaAutoActionDesc= Here you may define events which you want Dolibarr to create automatically in Agenda. If nothing is checked, only manual actions will be included in logs and displayed in Agenda. Automatic tracking of business actions done on objects (validation, status change) will not be saved. +AgendaSetupOtherDesc= This page provides options to allow the export of your Dolibarr events into an external calendar (Thunderbird, Google Calendar etc...) AgendaExtSitesDesc=This page allows to declare external sources of calendars to see their events into Dolibarr agenda. ActionsEvents=Events for which Dolibarr will create an action in agenda automatically EventRemindersByEmailNotEnabled=Event reminders by email was not enabled into %s module setup. diff --git a/htdocs/langs/en_US/banks.lang b/htdocs/langs/en_US/banks.lang index 5bc061f31f3..76ec51174f0 100644 --- a/htdocs/langs/en_US/banks.lang +++ b/htdocs/langs/en_US/banks.lang @@ -7,7 +7,7 @@ BankName=Bank name FinancialAccount=Account BankAccount=Bank account BankAccounts=Bank accounts -BankAccountsAndGateways=Bank | Gateways +BankAccountsAndGateways=Bank accounts | Gateways ShowAccount=Show Account AccountRef=Financial account ref AccountLabel=Financial account label @@ -30,7 +30,7 @@ AllTime=From start Reconciliation=Reconciliation RIB=Bank Account Number IBAN=IBAN number -BIC=BIC/SWIFT number +BIC=BIC/SWIFT code SwiftValid=BIC/SWIFT valid SwiftVNotalid=BIC/SWIFT not valid IbanValid=BAN valid @@ -42,11 +42,11 @@ AccountStatementShort=Statement AccountStatements=Account statements LastAccountStatements=Last account statements IOMonthlyReporting=Monthly reporting -BankAccountDomiciliation=Account address +BankAccountDomiciliation=Bank address BankAccountCountry=Account country BankAccountOwner=Account owner name BankAccountOwnerAddress=Account owner address -RIBControlError=Integrity check of values fails. This means the information for this account number is incomplete or incorrect (check country, numbers and IBAN). +RIBControlError=Integrity check of values failed. This means the information for this account number is not complete or is incorrect (check country, numbers and IBAN). CreateAccount=Create account NewBankAccount=New account NewFinancialAccount=New financial account @@ -105,7 +105,7 @@ SocialContributionPayment=Social/fiscal tax payment BankTransfer=Bank transfer BankTransfers=Bank transfers MenuBankInternalTransfer=Internal transfer -TransferDesc=Transfer from one account to another one, Dolibarr will write two records (a debit in source account and a credit in target account). The same amount (except sign), label and date will be used for this transaction) +TransferDesc=Transfer from one account to another, Dolibarr will write two records (a debit in source account and a credit in target account). The same amount (except sign), label and date will be used for this transaction) TransferFrom=From TransferTo=To TransferFromToDone=A transfer from %s to %s of %s %s has been recorded. @@ -136,7 +136,7 @@ BankTransactionLine=Bank entry AllAccounts=All bank and cash accounts BackToAccount=Back to account ShowAllAccounts=Show for all accounts -FutureTransaction=Transaction in future. No way to reconcile. +FutureTransaction=Future transaction. Unable to reconcile. SelectChequeTransactionAndGenerate=Select/filter checks to include in the check deposit receipt and click on "Create". InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records @@ -164,4 +164,4 @@ 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 -AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation +AutoReportLastAccountStatement=Automatically fill the field 'number of bank statement' with last statement number when making reconciliation diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index ed988d580e2..644a78507a4 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -28,7 +28,7 @@ InvoiceReplacementAsk=Replacement invoice for invoice 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'. InvoiceAvoir=Credit note InvoiceAvoirAsk=Credit note to correct invoice -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=The credit note is a negative invoice used to correct the fact that an invoice shows an amount that differs from the amount actually paid (eg the customer paid too much by mistake, or will not pay the complete amount since some products were returned). invoiceAvoirWithLines=Create Credit Note with lines from the origin invoice invoiceAvoirWithPaymentRestAmount=Create Credit Note with remaining unpaid of origin invoice invoiceAvoirLineWithPaymentRestAmount=Credit Note for remaining unpaid amount @@ -41,7 +41,7 @@ CorrectionInvoice=Correction invoice UsedByInvoice=Used to pay invoice %s ConsumedBy=Consumed by NotConsumed=Not consumed -NoReplacableInvoice=No replacable invoices +NoReplacableInvoice=No replaceable invoices NoInvoiceToCorrect=No invoice to correct InvoiceHasAvoir=Was source of one or several credit notes CardBill=Invoice card @@ -78,16 +78,16 @@ PaymentsReports=Payments reports PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Payments back already done PaymentRule=Payment rule -PaymentMode=Payment type +PaymentMode=Payment Type PaymentTypeDC=Debit/Credit Card PaymentTypePP=PayPal -IdPaymentMode=Payment type (id) -CodePaymentMode=Payment type (code) -LabelPaymentMode=Payment type (label) -PaymentModeShort=Payment type -PaymentTerm=Payment term -PaymentConditions=Payment terms -PaymentConditionsShort=Payment terms +IdPaymentMode=Payment Type (id) +CodePaymentMode=Payment Type (code) +LabelPaymentMode=Payment Type (label) +PaymentModeShort=Payment Type +PaymentTerm=Payment Term +PaymentConditions=Payment Terms +PaymentConditionsShort=Payment Terms PaymentAmount=Payment amount ValidatePayment=Validate payment PaymentHigherThanReminderToPay=Payment higher than reminder to pay @@ -143,8 +143,8 @@ BillShortStatusClosedUnpaid=Closed BillShortStatusClosedPaidPartially=Paid (partially) PaymentStatusToValidShort=To validate ErrorVATIntraNotConfigured=Intra-Community VAT number not yet defined -ErrorNoPaiementModeConfigured=No default payment mode defined. Go to Invoice module setup to fix this. -ErrorCreateBankAccount=Create a bank account, then go to Setup panel of Invoice module to define payment modes +ErrorNoPaiementModeConfigured=No default payment type defined. Go to Invoice module setup to fix this. +ErrorCreateBankAccount=Create a bank account, then go to Setup panel of Invoice module to define payment types ErrorBillNotFound=Invoice %s does not exist ErrorInvoiceAlreadyReplaced=Error, you tried to validate an invoice to replace invoice %s. But this one has already been replaced by invoice %s. ErrorDiscountAlreadyUsed=Error, discount already used @@ -180,7 +180,7 @@ ConfirmClassifyPaidBill=Are you sure you want to change invoice %s to sta ConfirmCancelBill=Are you sure you want to cancel invoice %s? ConfirmCancelBillQuestion=Why do you want to classify this invoice 'abandoned'? ConfirmClassifyPaidPartially=Are you sure you want to change invoice %s to status paid? -ConfirmClassifyPaidPartiallyQuestion=This invoice has not been paid completely. What is the reason/s for you closing this invoice? +ConfirmClassifyPaidPartiallyQuestion=This invoice has not been paid completely. What is the reason for 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. ConfirmClassifyPaidPartiallyReasonDiscount=Remaining unpaid (%s %s) is a discount granted because payment was made before term. ConfirmClassifyPaidPartiallyReasonDiscountNoVat=Remaining unpaid (%s %s) is a discount granted because payment was made before term. I accept to lose the VAT on this discount. @@ -250,8 +250,8 @@ ClassifyBill=Classify invoice SupplierBillsToPay=Unpaid supplier invoices CustomerBillsUnpaid=Unpaid customer invoices NonPercuRecuperable=Non-recoverable -SetConditions=Set payment terms -SetMode=Set payment mode +SetConditions=Set Payment Terms +SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices @@ -268,9 +268,9 @@ ExportDataset_invoice_1=Customer invoices and invoice details ExportDataset_invoice_2=Customer invoices and payments ProformaBill=Proforma Bill: Reduction=Reduction -ReductionShort=Reduc. +ReductionShort=Disc. Reductions=Reductions -ReductionsShort=Reduc. +ReductionsShort=Disc. Discounts=Discounts AddDiscount=Create discount AddRelativeDiscount=Create relative discount @@ -302,7 +302,7 @@ DiscountOfferedBy=Granted by DiscountStillRemaining=Discounts or credits available DiscountAlreadyCounted=Discounts or credits already consumed CustomerDiscounts=Customer discounts -SupplierDiscounts=Vendors discounts +SupplierDiscounts=Suppliers discounts BillAddress=Bill address 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. @@ -323,12 +323,12 @@ InvoiceNotChecked=No invoice selected CloneInvoice=Clone invoice ConfirmCloneInvoice=Are you sure you want to clone this invoice %s? DisabledBecauseReplacedInvoice=Action disabled because invoice has been replaced -DescTaxAndDividendsArea=This area presents a summary of all payments made for special expenses. Only records with payment during the fixed year are included here. +DescTaxAndDividendsArea=This area presents a summary of all payments made for special expenses. Only records with payments during the fixed year are included here. NbOfPayments=No. of payments SplitDiscount=Split discount in two -ConfirmSplitDiscount=Are you sure you want to split this discount of %s %s into 2 smaller discounts? +ConfirmSplitDiscount=Are you sure you want to split this discount of %s %s into two smaller discounts? TypeAmountOfEachNewDiscount=Input amount for each of two parts: -TotalOfTwoDiscountMustEqualsOriginal=Total of two new discounts must be equal to original discount amount. +TotalOfTwoDiscountMustEqualsOriginal=The total of the two new discounts must be equal to the original discount amount. ConfirmRemoveDiscount=Are you sure you want to remove this discount? RelatedBill=Related invoice RelatedBills=Related invoices @@ -357,7 +357,7 @@ NextDateToExecution=Date for next invoice generation NextDateToExecutionShort=Date next gen. DateLastGeneration=Date of latest generation DateLastGenerationShort=Date latest gen. -MaxPeriodNumber=Max number of invoice generation +MaxPeriodNumber=Max. number of invoice generation NbOfGenerationDone=Number of invoice generation already done NbOfGenerationDoneShort=Number of generation done MaxGenerationReached=Maximum number of generations reached @@ -394,7 +394,7 @@ PaymentConditionShort14D=14 days PaymentCondition14D=14 days PaymentConditionShort14DENDMONTH=14 days of month-end PaymentCondition14DENDMONTH=Within 14 days following the end of the month -FixAmount=Fix amount +FixAmount=Fixed amount VarAmount=Variable amount (%% tot.) VarAmountOneLine=Variable amount (%% tot.) - 1 line with label '%s' # PaymentType @@ -418,14 +418,14 @@ PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor BankDetails=Bank details BankCode=Bank code -DeskCode=Office code +DeskCode=Branch code BankAccountNumber=Account number -BankAccountNumberKey=Check digits -Residence=Direct debit -IBANNumber=IBAN complete account number +BankAccountNumberKey=Checksum +Residence=Address +IBANNumber=IBAN account number IBAN=IBAN BIC=BIC/SWIFT -BICNumber=BIC/SWIFT number +BICNumber=BIC/SWIFT code ExtraInfos=Extra infos RegulatedOn=Regulated on ChequeNumber=Check N° @@ -439,11 +439,11 @@ PhoneNumber=Tel FullPhoneNumber=Telephone TeleFax=Fax PrettyLittleSentence=Accept the amount of payments due by checks issued in my name as a Member of an accounting association approved by the Fiscal Administration. -IntracommunityVATNumber=Intracommunity number of VAT -PaymentByChequeOrderedTo=Check payment (including tax) are payable to %s send to -PaymentByChequeOrderedToShort=Check payment (including tax) are payable to +IntracommunityVATNumber=Intra-Community VAT ID +PaymentByChequeOrderedTo=Check payments (including tax) are payable to %s, send to +PaymentByChequeOrderedToShort=Check payments (incl. tax) are payable to SendTo=sent to -PaymentByTransferOnThisBankAccount=Payment by transfer on the following bank account +PaymentByTransferOnThisBankAccount=Payment by transfer to the following bank account VATIsNotUsedForInvoice=* Non applicable VAT art-293B of CGI LawApplicationPart1=By application of the law 80.335 of 12/05/80 LawApplicationPart2=the goods remain the property of @@ -478,17 +478,17 @@ CantRemovePaymentWithOneInvoicePaid=Can't remove payment since there is at least ExpectedToPay=Expected payment CantRemoveConciliatedPayment=Can't remove reconciled payment PayedByThisPayment=Paid by this payment -ClosePaidInvoicesAutomatically=Classify "Paid" all standard, down payment or replacement invoices paid entirely. +ClosePaidInvoicesAutomatically=Classify "Paid" all standard, down-payment or replacement invoices paid entirely. ClosePaidCreditNotesAutomatically=Classify "Paid" all credit notes entirely paid back. ClosePaidContributionsAutomatically=Classify "Paid" all social or fiscal contributions paid entirely. -AllCompletelyPayedInvoiceWillBeClosed=All invoice with no remainder to pay will be automatically closed with status "Paid". +AllCompletelyPayedInvoiceWillBeClosed=All invoices with no remainder to pay will be automatically closed with status "Paid". ToMakePayment=Pay ToMakePaymentBack=Pay back ListOfYourUnpaidInvoices=List of unpaid invoices NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. RevenueStamp=Revenue stamp -YouMustCreateInvoiceFromThird=This option is only available when creating invoices from tab "customer" of third party -YouMustCreateInvoiceFromSupplierThird=This option is only available when creating invoices from tab "supplier" of third party +YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party +YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Supplier" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (recommended Template) PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template @@ -530,13 +530,13 @@ InvoiceSituationLast=Final and general invoice PDFCrevetteSituationNumber=Situation N°%s PDFCrevetteSituationInvoiceLineDecompte=Situation invoice - COUNT PDFCrevetteSituationInvoiceTitle=Situation invoice -PDFCrevetteSituationInvoiceLine=Situation N°%s : Inv. N°%s on %s +PDFCrevetteSituationInvoiceLine=Situation N°%s: Inv. N°%s on %s TotalSituationInvoice=Total situation invoiceLineProgressError=Invoice line progress can't be greater than or equal to the next invoice line -updatePriceNextInvoiceErrorUpdateline=Error : update price on invoice line : %s +updatePriceNextInvoiceErrorUpdateline=Error: update price on invoice line: %s ToCreateARecurringInvoice=To create a recurring invoice for this contract, first create this draft invoice, then convert it into an invoice template and define the frequency for generation of future invoices. ToCreateARecurringInvoiceGene=To generate future invoices regularly and manually, just go on menu %s - %s - %s. -ToCreateARecurringInvoiceGeneAuto=If you need to have such invoices generated automatically, ask your administrator to enable and setup module %s. Note that both method (manual and automatic) can be used together with no risk of duplication. +ToCreateARecurringInvoiceGeneAuto=If you need to have such invoices generated automatically, ask your administrator to enable and setup module %s. Note that both methods (manual and automatic) can be used together with no risk of duplication. DeleteRepeatableInvoice=Delete template invoice ConfirmDeleteRepeatableInvoice=Are your sure you want to delete the template invoice? CreateOneBillByThird=Create one invoice per third party (otherwise, one invoice per order) diff --git a/htdocs/langs/en_US/bookmarks.lang b/htdocs/langs/en_US/bookmarks.lang index 9d2003f34d3..5330ab6e87c 100644 --- a/htdocs/langs/en_US/bookmarks.lang +++ b/htdocs/langs/en_US/bookmarks.lang @@ -6,15 +6,15 @@ ListOfBookmarks=List of bookmarks EditBookmarks=List/edit bookmarks NewBookmark=New bookmark ShowBookmark=Show bookmark -OpenANewWindow=Open a new window -ReplaceWindow=Replace current window -BookmarkTargetNewWindowShort=New window -BookmarkTargetReplaceWindowShort=Current window -BookmarkTitle=Bookmark title +OpenANewWindow=Open a new tab +ReplaceWindow=Replace current tab +BookmarkTargetNewWindowShort=New tab +BookmarkTargetReplaceWindowShort=Current tab +BookmarkTitle=Bookmark name UrlOrLink=URL BehaviourOnClick=Behaviour when a bookmark URL is selected CreateBookmark=Create bookmark -SetHereATitleForLink=Set a title for the bookmark -UseAnExternalHttpLinkOrRelativeDolibarrLink=Use an external http URL or a relative Dolibarr URL -ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Choose if linked page must open in new window or not +SetHereATitleForLink=Set a name for the bookmark +UseAnExternalHttpLinkOrRelativeDolibarrLink=Use an external/absolute link (https://URL) or an internal/relative link (/DOLIBARR_ROOT/htdocs/...) +ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Choose if the linked page should open in the current tab or a new tab BookmarksManagement=Bookmarks management diff --git a/htdocs/langs/en_US/boxes.lang b/htdocs/langs/en_US/boxes.lang index 8a519879ac3..bbb79f99bb0 100644 --- a/htdocs/langs/en_US/boxes.lang +++ b/htdocs/langs/en_US/boxes.lang @@ -20,22 +20,22 @@ BoxLastMembers=Latest members BoxFicheInter=Latest interventions BoxCurrentAccounts=Open accounts balance BoxTitleLastRssInfos=Latest %s news from %s -BoxTitleLastProducts=Products/Services: latest %s modified +BoxTitleLastProducts=Products/Services: last %s modified BoxTitleProductsAlertStock=Products: stock alert BoxTitleLastSuppliers=Latest %s recorded suppliers -BoxTitleLastModifiedSuppliers=Latest %s modified vendors -BoxTitleLastModifiedCustomers=Latest %s modified customers +BoxTitleLastModifiedSuppliers=Suppliers: last %s modified +BoxTitleLastModifiedCustomers=Customers: last %s modified BoxTitleLastCustomersOrProspects=Latest %s customers or prospects -BoxTitleLastCustomerBills=Latest %s modified customer invoices -BoxTitleLastSupplierBills=Latest %s modified vendor invoices -BoxTitleLastModifiedProspects=Latest %s modified prospects -BoxTitleLastModifiedMembers=Latest %s modified members +BoxTitleLastCustomerBills=Latest %s customer invoices +BoxTitleLastSupplierBills=Latest %s supplier invoices +BoxTitleLastModifiedProspects=Prospects: last %s modified +BoxTitleLastModifiedMembers=Latest %s members BoxTitleLastFicheInter=Latest %s modified interventions BoxTitleOldestUnpaidCustomerBills=Customer Invoices: oldest %s unpaid BoxTitleOldestUnpaidSupplierBills=Supplier Invoices: oldest %s unpaid BoxTitleCurrentAccounts=Open Accounts: balances -BoxTitleLastModifiedContacts=Contacts/Addresses: latest %s modified -BoxMyLastBookmarks=Bookmarks: latest %s modified +BoxTitleLastModifiedContacts=Contacts/Addresses: last %s modified +BoxMyLastBookmarks=Bookmarks: last %s BoxOldestExpiredServices=Oldest active expired services BoxLastExpiredServices=Latest %s oldest contacts with active expired services BoxTitleLastActionsToDo=Latest %s actions to do @@ -73,14 +73,14 @@ BoxProposalsPerMonth=Proposals per month NoTooLowStockProducts=No products are under the low stock limit BoxProductDistribution=Products/Services Distribution BoxProductDistributionFor=Distribution of %s by %s -BoxTitleLastModifiedSupplierBills=Latest %s modified vendors invoices -BoxTitleLatestModifiedSupplierOrders=Last %s modified purchase orders -BoxTitleLastModifiedCustomerBills=Latest %s modified customers invoices -BoxTitleLastModifiedCustomerOrders=Latest %s modified customer orders +BoxTitleLastModifiedSupplierBills=Supplier Invoices: last %s modified +BoxTitleLatestModifiedSupplierOrders=Supplier Orders: last %s modified +BoxTitleLastModifiedCustomerBills=Customer Invoices: last %s modified +BoxTitleLastModifiedCustomerOrders=Customer Orders: last %s modified BoxTitleLastModifiedPropals=Latest %s modified proposals ForCustomersInvoices=Customers invoices ForCustomersOrders=Customers orders ForProposals=Proposals LastXMonthRolling=The latest %s month rolling ChooseBoxToAdd=Add widget to your dashboard -BoxAdded=Widget was added in your dashboard +BoxAdded=Widget was added in your dashboard \ No newline at end of file diff --git a/htdocs/langs/en_US/cashdesk.lang b/htdocs/langs/en_US/cashdesk.lang index 353c4ee93ab..442b5f9b907 100644 --- a/htdocs/langs/en_US/cashdesk.lang +++ b/htdocs/langs/en_US/cashdesk.lang @@ -32,7 +32,7 @@ DeleteArticle=Click to remove this article 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 +PointOfSale=Point of Sale PointOfSaleShort=POS CloseBill=Close Bill Floors=Floors diff --git a/htdocs/langs/en_US/commercial.lang b/htdocs/langs/en_US/commercial.lang index 96b8abbb937..9600e5fa987 100644 --- a/htdocs/langs/en_US/commercial.lang +++ b/htdocs/langs/en_US/commercial.lang @@ -62,7 +62,7 @@ ActionAC_EMAILING=Send mass email ActionAC_COM=Send customer order by mail ActionAC_SHIP=Send shipping by mail ActionAC_SUP_ORD=Send purchase order by mail -ActionAC_SUP_INV=Send vendor invoice by mail +ActionAC_SUP_INV=Send supplier invoice by mail ActionAC_OTH=Other ActionAC_OTH_AUTO=Automatically inserted events ActionAC_MANUAL=Manually inserted events diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang index e5de5614886..f457f06043f 100644 --- a/htdocs/langs/en_US/companies.lang +++ b/htdocs/langs/en_US/companies.lang @@ -8,11 +8,11 @@ ConfirmDeleteContact=Are you sure you want to delete this contact and all inheri MenuNewThirdParty=New Third Party MenuNewCustomer=New Customer MenuNewProspect=New Prospect -MenuNewSupplier=New Vendor +MenuNewSupplier=New Supplier MenuNewPrivateIndividual=New private individual -NewCompany=New company (prospect, customer, vendor) -NewThirdParty=New Third Party (prospect, customer, vendor) -CreateDolibarrThirdPartySupplier=Create a third party (vendor) +NewCompany=New company (prospect, customer, supplier) +NewThirdParty=New Third Party (prospect, customer, supplier) +CreateDolibarrThirdPartySupplier=Create a third party (supplier) CreateThirdPartyOnly=Create third party CreateThirdPartyAndContact=Create a third party + a child contact ProspectionArea=Prospection area @@ -37,10 +37,10 @@ ThirdPartyProspectsStats=Prospects ThirdPartyCustomers=Customers ThirdPartyCustomersStats=Customers ThirdPartyCustomersWithIdProf12=Customers with %s or %s -ThirdPartySuppliers=Vendors -ThirdPartyType=Type of company +ThirdPartySuppliers=Suppliers +ThirdPartyType=Third-Party Type Individual=Private individual -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=Will automatically create a contact/address with same information as the third party under the third party. In most cases, even if your third party is a physical person, creating a third party alone is enough. ParentCompany=Parent company Subsidiaries=Subsidiaries ReportByMonth=Report by month @@ -79,8 +79,8 @@ DefaultLang=Language default 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 VATIsNotUsed=Sales tax is not used -CopyAddressFromSoc=Fill address with third party address -ThirdpartyNotCustomerNotSupplierSoNoRef=Third party neither customer nor vendor, no available referring objects +CopyAddressFromSoc=Copy address from Third Party details +ThirdpartyNotCustomerNotSupplierSoNoRef=Third party neither customer nor supplier, no available referring objects ThirdpartyIsNeitherCustomerNorClientSoCannotHaveDiscounts=Third party neither customer nor supplier, discounts are not available PaymentBankAccount=Payment bank account OverAllProposals=Proposals @@ -99,10 +99,10 @@ LocalTax2ES=IRPF TypeLocaltax1ES=RE Type TypeLocaltax2ES=IRPF Type WrongCustomerCode=Customer code invalid -WrongSupplierCode=Vendor code invalid +WrongSupplierCode=Supplier code invalid CustomerCodeModel=Customer code model -SupplierCodeModel=Vendor code model -Gencod=Bar code +SupplierCodeModel=Supplier code model +Gencod=Barcode ##### Professional ID ##### ProfId1Short=Prof. id 1 ProfId2Short=Prof. id 2 @@ -258,8 +258,8 @@ ProfId1DZ=RC ProfId2DZ=Art. ProfId3DZ=NIF ProfId4DZ=NIS -VATIntra=Sales Tax/VAT ID -VATIntraShort=Tax ID +VATIntra=Intra-Community VAT ID +VATIntraShort=EU VAT ID VATIntraSyntaxIsValid=Syntax is valid VATReturn=VAT return ProspectCustomer=Prospect / Customer @@ -267,7 +267,7 @@ Prospect=Prospect CustomerCard=Customer Card Customer=Customer CustomerRelativeDiscount=Relative customer discount -SupplierRelativeDiscount=Relative vendor discount +SupplierRelativeDiscount=Relative supplier discount CustomerRelativeDiscountShort=Relative discount CustomerAbsoluteDiscountShort=Absolute discount CompanyHasRelativeDiscount=This customer has a default discount of %s%% @@ -284,10 +284,10 @@ HasCreditNoteFromSupplier=You have credit notes for %s %s from this suppl CompanyHasNoAbsoluteDiscount=This customer has no discount credit available CustomerAbsoluteDiscountAllUsers=Absolute customer discounts (granted by all users) CustomerAbsoluteDiscountMy=Absolute customer discounts (granted by yourself) -SupplierAbsoluteDiscountAllUsers=Absolute vendor discounts (entered by all users) -SupplierAbsoluteDiscountMy=Absolute vendor discounts (entered by yourself) +SupplierAbsoluteDiscountAllUsers=Absolute supplier discounts (entered by all users) +SupplierAbsoluteDiscountMy=Absolute supplier discounts (entered by yourself) DiscountNone=None -Supplier=Vendor +Supplier=Supplier AddContact=Create contact AddContactAddress=Create contact/address EditContact=Edit contact @@ -304,13 +304,13 @@ DeleteACompany=Delete a company PersonalInformations=Personal data AccountancyCode=Accounting account CustomerCode=Customer Code -SupplierCode=Vendor Code +SupplierCode=Supplier Code CustomerCodeShort=Customer Code -SupplierCodeShort=Vendor Code +SupplierCodeShort=Supplier Code CustomerCodeDesc=Customer Code, unique for all customers -SupplierCodeDesc=Vendor Code, unique for all vendors +SupplierCodeDesc=Supplier Code, unique for all suppliers RequiredIfCustomer=Required if third party is a customer or prospect -RequiredIfSupplier=Required if third party is a vendor +RequiredIfSupplier=Required if third party is a supplier ValidityControledByModule=Validity controlled by module ThisIsModuleRules=Rules for this module ProspectToContact=Prospect to contact @@ -338,16 +338,16 @@ MyContacts=My contacts Capital=Capital CapitalOf=Capital of %s EditCompany=Edit company -ThisUserIsNot=This user is not a prospect, customer or vendor +ThisUserIsNot=This user is not a prospect, customer nor supplier VATIntraCheck=Check -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=The VAT ID must include the country prefix. The link %s uses the European VAT checker service (VIES) which requires internet access from the Dolibarr server. VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do -VATIntraCheckableOnEUSite=Check intra-Community VAT on the European Commission website +VATIntraCheckableOnEUSite=Check the intra-Community VAT ID on the European Commission website VATIntraManualCheck=You can also check manually on the European Commission website %s ErrorVATCheckMS_UNAVAILABLE=Check not possible. Check service is not provided by the member state (%s). -NorProspectNorCustomer=Not prospect, or customer +NorProspectNorCustomer=Not prospect, nor customer JuridicalStatus=Legal Entity Type -Staff=Staff +Staff=Employees ProspectLevelShort=Potential ProspectLevel=Prospect potential ContactPrivate=Private @@ -368,7 +368,7 @@ TE_MEDIUM=Medium company TE_ADMIN=Governmental TE_SMALL=Small company TE_RETAIL=Retailer -TE_WHOLE=Wholetailer +TE_WHOLE=Wholesaler TE_PRIVATE=Private individual TE_OTHER=Other StatusProspect-1=Do not contact @@ -389,14 +389,14 @@ DolibarrLogin=Dolibarr login NoDolibarrAccess=No Dolibarr access 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 -ImportDataset_company_4=Third Parties - sales representatives (assign sales representatives/users to companies) -PriceLevel=Price level +ImportDataset_company_1=Third Parties and their properties +ImportDataset_company_2=Third-Parties additional contacts/addresses and attributes +ImportDataset_company_3=Third-Parties Bank accounts +ImportDataset_company_4=Third-Parties Sales representatives (assign sales representatives/users to companies) +PriceLevel=Price Level DeliveryAddress=Delivery address AddAddress=Add address -SupplierCategory=Vendor category +SupplierCategory=Supplier category JuridicalStatus200=Independent DeleteFile=Delete file ConfirmDeleteFile=Are you sure you want to delete this file? @@ -406,7 +406,7 @@ FiscalYearInformation=Fiscal Year FiscalMonthStart=Starting month of the fiscal year YouMustAssignUserMailFirst=You must create an email for this user prior to being able to add an email notification. YouMustCreateContactFirst=To be able to add email notifications, you must first define contacts with valid emails for the third party -ListSuppliersShort=List of Vendors +ListSuppliersShort=List of Suppliers ListProspectsShort=List of Prospects ListCustomersShort=List of Customers ThirdPartiesArea=Third Parties/Contacts @@ -420,7 +420,7 @@ CurrentOutstandingBill=Current outstanding bill OutstandingBill=Max. for outstanding bill OutstandingBillReached=Max. for outstanding bill reached OrderMinAmount=Minimum amount for order -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=Return a number with the format %syymm-nnnn for the customer code and %syymm-nnnn for the supplier code where yy is year, mm is month and nnnn is a sequence with no break and no return to 0. LeopardNumRefModelDesc=The code is free. This code can be modified at any time. ManagingDirectors=Manager(s) name (CEO, director, president...) MergeOriginThirdparty=Duplicate third party (third party you want to delete) @@ -431,4 +431,4 @@ SaleRepresentativeLogin=Login of sales representative SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative ErrorThirdpartiesMerge=There was an error when deleting the third parties. Please check the log. Changes have been reverted. -NewCustomerSupplierCodeProposed=Customer or vendor code already used, a new code is suggested +NewCustomerSupplierCodeProposed=Customer or Supplier code already used, a new code is suggested diff --git a/htdocs/langs/en_US/compta.lang b/htdocs/langs/en_US/compta.lang index 6ad5e357b35..cdebceb656b 100644 --- a/htdocs/langs/en_US/compta.lang +++ b/htdocs/langs/en_US/compta.lang @@ -11,7 +11,7 @@ FeatureIsSupportedInInOutModeOnly=Feature only available in CREDITS-DEBTS accoun VATReportBuildWithOptionDefinedInModule=Amounts shown here are calculated using rules defined by Tax module setup. LTReportBuildWithOptionDefinedInModule=Amounts shown here are calculated using rules defined by Company setup. Param=Setup -RemainingAmountPayment=Amount payment remaining : +RemainingAmountPayment=Amount payment remaining: Account=Account Accountparent=Parent account Accountsparent=Parent accounts @@ -82,12 +82,12 @@ AccountancyTreasuryArea=Billing and payment area NewPayment=New payment Payments=Payments PaymentCustomerInvoice=Customer invoice payment -PaymentSupplierInvoice=Vendor invoice payment +PaymentSupplierInvoice=supplier invoice payment PaymentSocialContribution=Social/fiscal tax payment PaymentVat=VAT payment ListPayment=List of payments ListOfCustomerPayments=List of customer payments -ListOfSupplierPayments=List of vendor payments +ListOfSupplierPayments=List of supplier payments DateStartPeriod=Date start period DateEndPeriod=Date end period newLT1Payment=New tax 2 payment @@ -113,7 +113,7 @@ ShowVatPayment=Show VAT payment TotalToPay=Total to pay BalanceVisibilityDependsOnSortAndFilters=Balance is visible in this list only if table is sorted ascending on %s and filtered for 1 bank account CustomerAccountancyCode=Customer accounting code -SupplierAccountancyCode=Vendor accounting code +SupplierAccountancyCode=supplier accounting code CustomerAccountancyCodeShort=Cust. account. code SupplierAccountancyCodeShort=Sup. account. code AccountNumber=Account number @@ -230,7 +230,7 @@ ACCOUNTING_VAT_BUY_ACCOUNT=Accounting account by default for VAT on purchases (u ACCOUNTING_VAT_PAY_ACCOUNT=Accounting account by default for paying VAT ACCOUNTING_ACCOUNT_CUSTOMER=Accounting account used for customer third parties ACCOUNTING_ACCOUNT_CUSTOMER_Desc=The dedicated accounting account defined on third party card will be used for Subledger accounting only. This one will be used for General Ledger and as default value of Subledger accounting if dedicated customer accounting account on third party is not defined. -ACCOUNTING_ACCOUNT_SUPPLIER=Accounting account used for vendor third parties +ACCOUNTING_ACCOUNT_SUPPLIER=Accounting account used for supplier third parties ACCOUNTING_ACCOUNT_SUPPLIER_Desc=The dedicated accounting account defined on third party card will be used for Subledger accounting only. This one will be used for General Ledger and as default value of Subledger accounting if dedicated supplier accounting account on third party is not defined. CloneTax=Clone a social/fiscal tax ConfirmCloneTax=Confirm the clone of a social/fiscal tax @@ -256,4 +256,4 @@ PaidDuringThisPeriod=Paid during this period ByVatRate=By sale tax rate TurnoverbyVatrate=Turnover invoiced by sale tax rate TurnoverCollectedbyVatrate=Turnover collected by sale tax rate -PurchasebyVatrate=Purchase by sale tax rate +PurchasebyVatrate=Purchase by sale tax rate \ No newline at end of file diff --git a/htdocs/langs/en_US/cron.lang b/htdocs/langs/en_US/cron.lang index 63d56feca61..26e125c820b 100644 --- a/htdocs/langs/en_US/cron.lang +++ b/htdocs/langs/en_US/cron.lang @@ -43,7 +43,7 @@ CronNoJobs=No jobs registered CronPriority=Priority CronLabel=Label CronNbRun=No. launches -CronMaxRun=Max number launch +CronMaxRun=Maximum number of launches CronEach=Every JobFinished=Job launched and finished #Page card diff --git a/htdocs/langs/en_US/deliveries.lang b/htdocs/langs/en_US/deliveries.lang index 0d432c3f426..778cb3332ad 100644 --- a/htdocs/langs/en_US/deliveries.lang +++ b/htdocs/langs/en_US/deliveries.lang @@ -18,14 +18,14 @@ StatusDeliveryCanceled=Canceled StatusDeliveryDraft=Draft StatusDeliveryValidated=Received # merou PDF model -NameAndSignature=Name and Signature : +NameAndSignature=Name and Signature: ToAndDate=To___________________________________ on ____/_____/__________ GoodStatusDeclaration=Have received the goods above in good condition, -Deliverer=Deliverer : +Deliverer=Deliverer: Sender=Sender Recipient=Recipient ErrorStockIsNotEnough=There's not enough stock Shippable=Shippable NonShippable=Not Shippable ShowReceiving=Show delivery receipt -NonExistentOrder=Non-existent order +NonExistentOrder=Nonexistent order diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index a5555f85c82..8e43cc4a7a4 100644 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -23,18 +23,18 @@ ErrorFailToGenerateFile=Failed to generate file '%s'. ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as contact for this type. ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. -ErrorBadThirdPartyName=Bad value for third party name +ErrorBadThirdPartyName=Bad value for third-party name ErrorProdIdIsMandatory=The %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code -ErrorBadBarCodeSyntax=Bad syntax for bar code. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. +ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required -ErrorBarCodeRequired=Bar code required +ErrorBarCodeRequired=Barcode required ErrorCustomerCodeAlreadyUsed=Customer code already used -ErrorBarCodeAlreadyUsed=Bar code already used +ErrorBarCodeAlreadyUsed=Barcode already used ErrorPrefixRequired=Prefix required -ErrorBadSupplierCodeSyntax=Bad syntax for vendor code -ErrorSupplierCodeRequired=Vendor code required -ErrorSupplierCodeAlreadyUsed=Vendor code already used +ErrorBadSupplierCodeSyntax=Bad syntax for supplier code +ErrorSupplierCodeRequired=Supplier code required +ErrorSupplierCodeAlreadyUsed=Supplier code already used ErrorBadParameters=Bad parameters ErrorBadValueForParameter=Wrong value '%s' for parameter '%s' ErrorBadImageFormat=Image file has not a supported format (Your PHP does not support functions to convert images of this format) @@ -81,20 +81,20 @@ ErrorRecordIsUsedCantDelete=Can't delete record. It is already used or included ErrorModuleRequireJavascript=Javascript must not be disabled to have this feature working. To enable/disable Javascript, go to menu Home->Setup->Display. ErrorPasswordsMustMatch=Both typed passwords must match each other 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. -ErrorWrongValueForField=Wrong value for field number %s (value '%s' does not match regex rule %s) -ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s) -ErrorFieldRefNotIn=Wrong value for field number %s (value '%s' is not a %s existing ref) -ErrorsOnXLines=Errors on %s source record(s) +ErrorWrongValueForField=Field %s: '%s' does not match regex rule %s +ErrorFieldValueNotIn=Field %s: '%s' is not a value found in field %s of %s +ErrorFieldRefNotIn=Field %s: '%s' is not a %s existing ref +ErrorsOnXLines=%s errors found ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus) ErrorSpecialCharNotAllowedForField=Special characters are not allowed for field "%s" ErrorNumRefModel=A reference exists into database (%s) and is not compatible with this numbering rule. Remove record or renamed reference to activate this module. -ErrorQtyTooLowForThisSupplier=Quantity too low for this vendor or no price defined on this product for this supplier -ErrorOrdersNotCreatedQtyTooLow=Some orders haven't been created beacuse of too low quantity +ErrorQtyTooLowForThisSupplier=Quantity too low for this supplier or no price defined on this product for this supplier +ErrorOrdersNotCreatedQtyTooLow=Some orders haven't been created because of too-low quantities ErrorModuleSetupNotComplete=Setup of module looks to be uncomplete. Go on Home - Setup - Modules to complete. ErrorBadMask=Error on mask ErrorBadMaskFailedToLocatePosOfSequence=Error, mask without sequence number ErrorBadMaskBadRazMonth=Error, bad reset value -ErrorMaxNumberReachForThisMask=Max number reach for this mask +ErrorMaxNumberReachForThisMask=Maximum number reached for this mask ErrorCounterMustHaveMoreThan3Digits=Counter must have more than 3 digits ErrorSelectAtLeastOne=Error. Select at least one entry. ErrorDeleteNotPossibleLineIsConsolidated=Delete not possible because record is linked to a bank transaction that is conciliated @@ -117,7 +117,7 @@ ErrorLoginDoesNotExists=User with login %s could not be found. ErrorLoginHasNoEmail=This user has no email address. Process aborted. ErrorBadValueForCode=Bad value for security code. Try again with new value... ErrorBothFieldCantBeNegative=Fields %s and %s can't be both negative -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=Field %s cannot be negative on this 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 the invoice. You can also ask your admin to set option FACTURE_ENABLE_NEGATIVE_LINES to 1 to allow the old behaviour. ErrorQtyForCustomerInvoiceCantBeNegative=Quantity for line into customer invoices can't be negative ErrorWebServerUserHasNotPermission=User account %s used to execute web server has no permission for that ErrorNoActivatedBarcode=No barcode type activated @@ -174,13 +174,13 @@ ErrorGlobalVariableUpdater4=SOAP client failed with error '%s' ErrorGlobalVariableUpdater5=No global variable selected ErrorFieldMustBeANumeric=Field %s must be a numeric value ErrorMandatoryParametersNotProvided=Mandatory parameter(s) not provided -ErrorOppStatusRequiredIfAmount=You set an estimated amount for this lead. So you must also enter its status +ErrorOppStatusRequiredIfAmount=You set an estimated amount for this lead. So you must also enter it's status. ErrorFailedToLoadModuleDescriptorForXXX=Failed to load module descriptor class for %s ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Bad Definition Of Menu Array In Module Descriptor (bad value for key fk_menu) ErrorSavingChanges=An error has occurred when saving the changes ErrorWarehouseRequiredIntoShipmentLine=Warehouse is required on the line to ship ErrorFileMustHaveFormat=File must have format %s -ErrorSupplierCountryIsNotDefined=Country for this vendor is not defined. Correct this first. +ErrorSupplierCountryIsNotDefined=Country for this supplier is not defined. Correct this first. ErrorsThirdpartyMerge=Failed to merge the two records. Request canceled. ErrorStockIsNotEnoughToAddProductOnOrder=Stock is not enough for product %s to add it into a new order. ErrorStockIsNotEnoughToAddProductOnInvoice=Stock is not enough for product %s to add it into a new invoice. @@ -212,7 +212,7 @@ ErrorProductBarCodeAlreadyExists=The product barcode %s already exists on anothe ErrorNoteAlsoThatSubProductCantBeFollowedByLot=Note also that using virtual product to have auto increase/decrease of subproducts is not possible when at least one subproduct (or subproduct of subproducts) needs a serial/lot number. ErrorDescRequiredForFreeProductLines=Description is mandatory for lines with free product ErrorAPageWithThisNameOrAliasAlreadyExists=The page/container %s has the same name or alternative alias that the one your try to use -ErrorDuringChartLoad=Error when loading chart of account. If few accounts were not loaded, you can still enter them manually. +ErrorDuringChartLoad=Error when loading chart of accounts. If few accounts were not loaded, you can still enter them manually. # Warnings WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user. WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined @@ -222,7 +222,7 @@ WarningPassIsEmpty=Warning, database password is empty. This is a security hole. WarningConfFileMustBeReadOnly=Warning, your config file (htdocs/conf/conf.php) can be overwritten by the web server. This is a serious security hole. Modify permissions on file to be in read only mode for operating system user used by Web server. If you use Windows and FAT format for your disk, you must know that this file system does not allow to add permissions on file, so can't be completely safe. WarningsOnXLines=Warnings on %s source record(s) WarningNoDocumentModelActivated=No model, for document generation, has been activated. A model will be chosen by default until you check your module setup. -WarningLockFileDoesNotExists=Warning, once setup is finished, you must disable install/migrate tools by adding a file install.lock into directory %s. Missing this file is a security hole. +WarningLockFileDoesNotExists=Warning, once setup is finished, you must disable the install/migration tools by adding a file install.lock into directory %s. Omitting the creation of this file is a grave security risk. 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). WarningCloseAlways=Warning, closing is done even if amount differs between source and target elements. Enable this feature with caution. WarningUsingThisBoxSlowDown=Warning, using this box slow down seriously all pages showing the box. diff --git a/htdocs/langs/en_US/exports.lang b/htdocs/langs/en_US/exports.lang index 179556ddb19..2ee374ee670 100644 --- a/htdocs/langs/en_US/exports.lang +++ b/htdocs/langs/en_US/exports.lang @@ -44,7 +44,7 @@ LineDescription=Description of line LineUnitPrice=Unit price of line LineVATRate=VAT Rate of line LineQty=Quantity for line -LineTotalHT=Amount net of tax for line +LineTotalHT=Amount excl. tax for line LineTotalTTC=Amount with tax for line LineTotalVAT=Amount of VAT for line TypeOfLineServiceOrProduct=Type of line (0=product, 1=service) @@ -68,7 +68,7 @@ FieldsTarget=Targeted fields FieldTarget=Targeted field FieldSource=Source field NbOfSourceLines=Number of lines in source file -NowClickToTestTheImport=Check the import setup you defined (check if you must omit the header lines, or these will be flagged as errors in the following simulation).
Click on the "%s" button to run a check of the file structure/contents and simulate the import process.
No data will be changed in your database. +NowClickToTestTheImport=Check that the file format (field and string delimiters) of your file matches the options shown and that you have omitted the header line, or these will be flagged as errors in the following simulation.
Click on the "%s" button to run a check of the file structure/contents and simulate the import process.
No data will be changed in your database. RunSimulateImportFile=Run Import Simulation FieldNeedSource=This field requires data from the source file SomeMandatoryFieldHaveNoSource=Some mandatory fields have no source from data file @@ -78,7 +78,7 @@ SelectAtLeastOneField=Switch at least one source field in the column of fields t SelectFormat=Choose this import file format RunImportFile=Import Data NowClickToRunTheImport=Check the results of the import simulation. Correct any errors and re-test.
When the simulation reports no errors you may proceed to import the data into the database. -DataLoadedWithId=All data will be loaded with the following import id: %s to enable a search on this set of data in case of discovering problems in the future. +DataLoadedWithId=The imported data will have an additional field in each database table with this import id: %s, to allow it to be searchable in the case of investigating a problem related to this import. ErrorMissingMandatoryValue=Mandatory data is empty in the source file for field %s. TooMuchErrors=There are still %s other source lines with errors but output has been limited. TooMuchWarnings=There are still %s other source lines with warnings but output has been limited. @@ -109,14 +109,14 @@ Separator=Field Separator Enclosure=String Delimiter SpecialCode=Special code ExportStringFilter=%% allows replacing one or more characters in the text -ExportDateFilter=YYYY, YYYYMM, YYYYMMDD : filters by one year/month/day
YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD : filters over a range of years/months/days
> YYYY, > YYYYMM, > YYYYMMDD : filters on all following years/months/days
< YYYY, < YYYYMM, < YYYYMMDD : filters on all previous years/months/days +ExportDateFilter=YYYY, YYYYMM, YYYYMMDD: filters by one year/month/day
YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD: filters over a range of years/months/days
> YYYY, > YYYYMM, > YYYYMMDD: filters on all following years/months/days
< YYYY, < YYYYMM, < YYYYMMDD: filters on all previous years/months/days ExportNumericFilter=NNNNN filters by one value
NNNNN+NNNNN filters over a range of values
< NNNNN filters by lower values
> NNNNN filters by higher values ImportFromLine=Import starting from line number EndAtLineNb=End at line number -ImportFromToLine=Limit range (from - to) eg. to omit header line -SetThisValueTo2ToExcludeFirstLine=For example, set this value to 3 to exclude the 2 first lines -KeepEmptyToGoToEndOfFile=Keep this field empty to go up to the end of file -SelectPrimaryColumnsForUpdateAttempt=Select column(s) to use as primary key for update attempt +ImportFromToLine=Limit range (From - To) eg. to omit header line(s) +SetThisValueTo2ToExcludeFirstLine=For example, set this value to 3 to exclude the 2 first lines.
If the header lines are NOT omitted, this will result in multiple errors in the Import Simulation. +KeepEmptyToGoToEndOfFile=Keep this field empty to process all lines to the end of the file. +SelectPrimaryColumnsForUpdateAttempt=Select column(s) to use as primary key for an UPDATE import UpdateNotYetSupportedForThisImport=Update is not supported for this type of import (only insert) NoUpdateAttempt=No update attempt was performed, only insert ImportDataset_user_1=Users (employees or not) and properties @@ -130,4 +130,4 @@ FormatControlRule=Format control rule KeysToUseForUpdates=Key (column) to use for updating existing data NbInsert=Number of inserted lines: %s NbUpdate=Number of updated lines: %s -MultipleRecordFoundWithTheseFilters=Multiple records have been found with these filters: %s +MultipleRecordFoundWithTheseFilters=Multiple records have been found with these filters: %s \ No newline at end of file diff --git a/htdocs/langs/en_US/ftp.lang b/htdocs/langs/en_US/ftp.lang index 8ecb0c55cad..c4136be7bff 100644 --- a/htdocs/langs/en_US/ftp.lang +++ b/htdocs/langs/en_US/ftp.lang @@ -2,13 +2,13 @@ FTPClientSetup=FTP Client module setup NewFTPClient=New FTP connection setup FTPArea=FTP Area -FTPAreaDesc=This screen show you content of a FTP server view -SetupOfFTPClientModuleNotComplete=Setup of FTP client module seems to be not complete +FTPAreaDesc=This screen shows content of a FTP server view +SetupOfFTPClientModuleNotComplete=The setup of the FTP client module seems to be incomplete FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s (Check permissions and that directory is empty). +FTPFailedToRemoveDir=Failed to remove directory %s (Check permissions and that the directory is empty). FTPPassiveMode=Passive mode ChooseAFTPEntryIntoMenu=Choose a FTP entry into menu... -FailedToGetFile=Failed to get files %s +FailedToGetFile=Failed to get files %s \ No newline at end of file diff --git a/htdocs/langs/en_US/help.lang b/htdocs/langs/en_US/help.lang index da776683a6a..048de16d3c0 100644 --- a/htdocs/langs/en_US/help.lang +++ b/htdocs/langs/en_US/help.lang @@ -1,10 +1,10 @@ # Dolibarr language file - Source file is en_US - help CommunitySupport=Forum/Wiki support EMailSupport=Emails support -RemoteControlSupport=Online real time / remote support +RemoteControlSupport=Online real-time / remote support OtherSupport=Other support ToSeeListOfAvailableRessources=To contact/see available resources: -HelpCenter=Help center +HelpCenter=Help Center DolibarrHelpCenter=Dolibarr Help and Support Center ToGoBackToDolibarr=Otherwise, click here to continue to use Dolibarr. TypeOfSupport=Type of support diff --git a/htdocs/langs/en_US/holiday.lang b/htdocs/langs/en_US/holiday.lang index 2fad3d02a7f..b3084a7557c 100644 --- a/htdocs/langs/en_US/holiday.lang +++ b/htdocs/langs/en_US/holiday.lang @@ -116,7 +116,7 @@ HolidaysToValidateAlertSolde=The user who made this leave request does not have HolidaysValidated=Validated leave requests HolidaysValidatedBody=Your leave request for %s to %s has been validated. HolidaysRefused=Request denied -HolidaysRefusedBody=Your leave request for %s to %s has been denied for the following reason : +HolidaysRefusedBody=Your leave request for %s to %s has been denied for the following reason: HolidaysCanceled=Canceled leaved request HolidaysCanceledBody=Your leave request for %s to %s has been canceled. FollowedByACounter=1: This type of leave need to be followed by a counter. Counter is incremented manually or automatically and when a leave request is validated, counter is decremented.
0: Not followed by a counter. diff --git a/htdocs/langs/en_US/install.lang b/htdocs/langs/en_US/install.lang index c92d83988ff..05659204af5 100644 --- a/htdocs/langs/en_US/install.lang +++ b/htdocs/langs/en_US/install.lang @@ -148,7 +148,7 @@ NothingToDo=Nothing to do # upgrade MigrationFixData=Fix for denormalized data MigrationOrder=Data migration for customer's orders -MigrationSupplierOrder=Data migration for vendor's orders +MigrationSupplierOrder=Data migration for supplier's orders MigrationProposal=Data migration for commercial proposals MigrationInvoice=Data migration for customer's invoices MigrationContract=Data migration for contracts @@ -192,7 +192,7 @@ MigrationProjectTaskActors=Data migration for table llx_projet_task_actors MigrationProjectUserResp=Data migration field fk_user_resp of llx_projet to llx_element_contact MigrationProjectTaskTime=Update time spent in seconds MigrationActioncommElement=Update data on actions -MigrationPaymentMode=Data migration for payment mode +MigrationPaymentMode=Data migration for payment type MigrationCategorieAssociation=Migration of categories MigrationEvents=Migration of events to add event owner into assignment table MigrationEventsContact=Migration of events to add event contact into assignment table diff --git a/htdocs/langs/en_US/interventions.lang b/htdocs/langs/en_US/interventions.lang index a130367b14f..8b751e4a3cb 100644 --- a/htdocs/langs/en_US/interventions.lang +++ b/htdocs/langs/en_US/interventions.lang @@ -21,8 +21,8 @@ ConfirmValidateIntervention=Are you sure you want to validate this intervention ConfirmModifyIntervention=Are you sure you want to modify this intervention? ConfirmDeleteInterventionLine=Are you sure you want to delete this intervention line? ConfirmCloneIntervention=Are you sure you want to clone this intervention? -NameAndSignatureOfInternalContact=Name and signature of intervening : -NameAndSignatureOfExternalContact=Name and signature of customer : +NameAndSignatureOfInternalContact=Name and signature of intervening: +NameAndSignatureOfExternalContact=Name and signature of customer: DocumentModelStandard=Standard document model for interventions InterventionCardsAndInterventionLines=Interventions and lines of interventions InterventionClassifyBilled=Classify "Billed" diff --git a/htdocs/langs/en_US/ldap.lang b/htdocs/langs/en_US/ldap.lang index abe11602147..8b6f0864215 100644 --- a/htdocs/langs/en_US/ldap.lang +++ b/htdocs/langs/en_US/ldap.lang @@ -16,7 +16,7 @@ LDAPFieldFirstSubscriptionAmount=First subscription amount LDAPFieldLastSubscriptionDate=Latest subscription date LDAPFieldLastSubscriptionAmount=Latest subscription amount LDAPFieldSkype=Skype id -LDAPFieldSkypeExample=Example : skypeName +LDAPFieldSkypeExample=Example: skypeName UserSynchronized=User synchronized GroupSynchronized=Group synchronized MemberSynchronized=Member synchronized diff --git a/htdocs/langs/en_US/mails.lang b/htdocs/langs/en_US/mails.lang index d4f835874e7..a7160d321eb 100644 --- a/htdocs/langs/en_US/mails.lang +++ b/htdocs/langs/en_US/mails.lang @@ -45,7 +45,7 @@ MailingStatusReadAndUnsubscribe=Read and unsubscribe ErrorMailRecipientIsEmpty=Email recipient is empty WarningNoEMailsAdded=No new Email to add to recipient's list. ConfirmValidMailing=Are you sure you want to validate this 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? +ConfirmResetMailing=Warning, by re-initializing emailing %s, you will allow the re-sending this email in a bulk 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 @@ -83,7 +83,7 @@ NbSent=No. sent SentXXXmessages=%s message(s) sent. ConfirmUnvalidateEmailing=Are you sure you want to change email %s to draft status? MailingModuleDescContactsWithThirdpartyFilter=Contact with customer filters -MailingModuleDescContactsByCompanyCategory=Contacts by third party category +MailingModuleDescContactsByCompanyCategory=Contacts by third-party category MailingModuleDescContactsByCategory=Contacts by categories MailingModuleDescContactsByFunction=Contacts by position MailingModuleDescEmailsFromFile=Emails from file @@ -146,7 +146,7 @@ AdvTgtMaxVal=Maximum value AdvTgtSearchDtHelp=Use interval to select date value AdvTgtStartDt=Start dt. AdvTgtEndDt=End dt. -AdvTgtTypeOfIncudeHelp=Target Email of third party and email of contact of the third party, or just third party email or just contact email +AdvTgtTypeOfIncudeHelp=Target Email of third party and email of contact of the third party, or just third-party email or just contact email AdvTgtTypeOfIncude=Type of targeted email AdvTgtContactHelp=Use only if you target contact into "Type of targeted email" AddAll=Add all @@ -166,4 +166,4 @@ InGoingEmailSetup=Incoming email setup OutGoingEmailSetupForEmailing=Outgoing email setup (for mass emailing) DefaultOutgoingEmailSetup=Default outgoing email setup Information=Information -ContactsWithThirdpartyFilter=Contacts with third party filter +ContactsWithThirdpartyFilter=Contacts with third-party filter diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index b3ea678aea0..a9526616781 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -58,13 +58,13 @@ ErrorNoRequestInError=No request in error ErrorServiceUnavailableTryLater=Service not available at the moment. Try again later. ErrorDuplicateField=Duplicate value in a unique field ErrorSomeErrorWereFoundRollbackIsDone=Some errors were found. Changes have been rolled back. -ErrorConfigParameterNotDefined=Parameter %s is not defined in Dolibarr config file conf.php. +ErrorConfigParameterNotDefined=Parameter %s is not defined in the Dolibarr config file conf.php. ErrorCantLoadUserFromDolibarrDatabase=Failed to find user %s in Dolibarr database. ErrorNoVATRateDefinedForSellerCountry=Error, no vat rates defined for country '%s'. ErrorNoSocialContributionForSellerCountry=Error, no social/fiscal taxes type defined for country '%s'. ErrorFailedToSaveFile=Error, failed to save file. -ErrorCannotAddThisParentWarehouse=You are trying to add a parent warehouse which is already a child of a current one -MaxNbOfRecordPerPage=Max number of records per page +ErrorCannotAddThisParentWarehouse=You are trying to add a parent warehouse which is already a child of a existing warehouse +MaxNbOfRecordPerPage=Max. number of records per page NotAuthorized=You are not authorized to do that. SetDate=Set date SelectDate=Select a date @@ -169,7 +169,7 @@ Save=Save SaveAs=Save As TestConnection=Test connection ToClone=Clone -ConfirmClone=Choose data you want to clone : +ConfirmClone=Choose data you want to clone: NoCloneOptionsSpecified=No data to clone defined. Of=of Go=Go @@ -184,7 +184,7 @@ Valid=Valid Approve=Approve Disapprove=Disapprove ReOpen=Re-Open -Upload=Send file +Upload=Upload ToLink=Link Select=Select Choose=Choose @@ -332,8 +332,8 @@ DefaultValues=Default values/filters/sorting Price=Price PriceCurrency=Price (currency) UnitPrice=Unit price -UnitPriceHT=Unit price (net) -UnitPriceHTCurrency=Unit price (net) (currency) +UnitPriceHT=Unit price (excl.) +UnitPriceHTCurrency=Unit price (excl.) (currency) UnitPriceTTC=Unit price PriceU=U.P. PriceUHT=U.P. (net) @@ -343,15 +343,15 @@ Amount=Amount AmountInvoice=Invoice amount AmountInvoiced=Amount invoiced AmountPayment=Payment amount -AmountHTShort=Amount (net) +AmountHTShort=Amount (excl.) AmountTTCShort=Amount (inc. tax) -AmountHT=Amount (net of tax) +AmountHT=Amount (excl. tax) AmountTTC=Amount (inc. tax) AmountVAT=Amount tax MulticurrencyAlreadyPaid=Already paid, original currency MulticurrencyRemainderToPay=Remain to pay, original currency MulticurrencyPaymentAmount=Payment amount, original currency -MulticurrencyAmountHT=Amount (net of tax), original currency +MulticurrencyAmountHT=Amount (excl. tax), original currency MulticurrencyAmountTTC=Amount (inc. of tax), original currency MulticurrencyAmountVAT=Amount tax, original currency AmountLT1=Amount tax 2 @@ -360,16 +360,16 @@ AmountLT1ES=Amount RE AmountLT2ES=Amount IRPF AmountTotal=Total amount AmountAverage=Average amount -PriceQtyMinHT=Price quantity min. (net of tax) -PriceQtyMinHTCurrency=Price quantity min. (net of tax) (currency) +PriceQtyMinHT=Price quantity min. (excl. tax) +PriceQtyMinHTCurrency=Price quantity min. (excl. tax) (currency) Percentage=Percentage Total=Total SubTotal=Subtotal -TotalHTShort=Total (net) -TotalHTShortCurrency=Total (net in currency) +TotalHTShort=Total (excl.) +TotalHTShortCurrency=Total (excl. in currency) TotalTTCShort=Total (inc. tax) -TotalHT=Total (net of tax) -TotalHTforthispage=Total (net of tax) for this page +TotalHT=Total (excl. tax) +TotalHTforthispage=Total (excl. tax) for this page Totalforthispage=Total for this page TotalTTC=Total (inc. tax) TotalTTCToYourCredit=Total (inc. tax) to your credit @@ -381,7 +381,7 @@ TotalLT1ES=Total RE TotalLT2ES=Total IRPF TotalLT1IN=Total CGST TotalLT2IN=Total SGST -HT=Net of tax +HT=Excl. tax TTC=Inc. tax INCVATONLY=Inc. VAT INCT=Inc. all taxes @@ -417,7 +417,7 @@ Favorite=Favorite ShortInfo=Info. Ref=Ref. ExternalRef=Ref. extern -RefSupplier=Ref. vendor +RefSupplier=Ref. supplier RefPayment=Ref. payment CommercialProposalsShort=Commercial proposals Comment=Comment @@ -436,8 +436,8 @@ Accountant=Accountant 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 +ActionsOnCompany=Events for this third party +ActionsOnContact=Events for this contact/address ActionsOnMember=Events about this member ActionsOnProduct=Events about this product NActionsLate=%s late @@ -508,7 +508,7 @@ None=None NoneF=None NoneOrSeveral=None or several Late=Late -LateDesc=The delay to define if a record is late or not depends on your setup. Ask your admin to change the delay from menu Home - Setup - Alerts. +LateDesc=An item is defined as Delayed as per the system configuration in menu Home - Setup - Alerts. NoItemLate=No late item Photo=Picture Photos=Pictures @@ -612,9 +612,9 @@ BuildDoc=Build Doc Entity=Environment Entities=Entities CustomerPreview=Customer preview -SupplierPreview=Vendor preview +SupplierPreview=Supplier preview ShowCustomerPreview=Show customer preview -ShowSupplierPreview=Show vendor preview +ShowSupplierPreview=Show supplier preview RefCustomer=Ref. customer Currency=Currency InfoAdmin=Information for administrators @@ -636,7 +636,7 @@ SendMail=Send email EMail=E-mail NoEMail=No email Email=Email -AlreadyRead=Alreay read +AlreadyRead=Already read NotRead=Not read NoMobilePhone=No mobile phone Owner=Owner @@ -650,8 +650,8 @@ ValueIsValid=Value is valid ValueIsNotValid=Value is not valid RecordCreatedSuccessfully=Record created successfully RecordModifiedSuccessfully=Record modified successfully -RecordsModified=%s record modified -RecordsDeleted=%s record deleted +RecordsModified=%s record(s) modified +RecordsDeleted=%s record(s) deleted AutomaticCode=Automatic code FeatureDisabled=Feature disabled MoveBox=Move widget @@ -701,14 +701,14 @@ Notes=Notes AddNewLine=Add new line AddFile=Add file FreeZone=Not a predefined product/service -FreeLineOfType=Not a predefined entry of type +FreeLineOfType=Free-text item, type: CloneMainAttributes=Clone object with its main attributes PDFMerge=PDF Merge Merge=Merge DocumentModelStandardPDF=Standard PDF template PrintContentArea=Show page to print main content area MenuManager=Menu manager -WarningYouAreInMaintenanceMode=Warning, you are in maintenance mode, so only login %s is allowed to use the application at this time. +WarningYouAreInMaintenanceMode=Warning, you are in maintenance mode: only login %s is allowed to use the application in this mode. CoreErrorTitle=System error CoreErrorMessage=Sorry, an error occurred. Contact your system administrator to check the logs or disable $dolibarr_main_prod=1 to get more information. CreditCard=Credit card @@ -818,8 +818,8 @@ TooManyRecordForMassAction=Too many records selected for mass action. The action NoRecordSelected=No record selected MassFilesArea=Area for files built by mass actions ShowTempMassFilesArea=Show area of files built by mass actions -ConfirmMassDeletion=Mass delete confirmation -ConfirmMassDeletionQuestion=Are you sure you want to delete the %s selected record? +ConfirmMassDeletion=Bulk Delete confirmation +ConfirmMassDeletionQuestion=Are you sure you want to delete the %s selected record(s)? RelatedObjects=Related Objects ClassifyBilled=Classify billed ClassifyUnbilled=Classify unbilled @@ -923,11 +923,11 @@ SearchIntoProductsOrServices=Products or services SearchIntoProjects=Projects SearchIntoTasks=Tasks SearchIntoCustomerInvoices=Customer invoices -SearchIntoSupplierInvoices=Vendor invoices +SearchIntoSupplierInvoices=Supplier invoices SearchIntoCustomerOrders=Customer orders SearchIntoSupplierOrders=Purchase orders SearchIntoCustomerProposals=Customer proposals -SearchIntoSupplierProposals=Vendor proposals +SearchIntoSupplierProposals=Supplier proposals SearchIntoInterventions=Interventions SearchIntoContracts=Contracts SearchIntoCustomerShipments=Customer shipments diff --git a/htdocs/langs/en_US/margins.lang b/htdocs/langs/en_US/margins.lang index 167e316703c..9c3a2b4d09c 100644 --- a/htdocs/langs/en_US/margins.lang +++ b/htdocs/langs/en_US/margins.lang @@ -28,10 +28,10 @@ UseDiscountAsService=As a service UseDiscountOnTotal=On subtotal MARGIN_METHODE_FOR_DISCOUNT_DETAILS=Defines if a global discount is treated as a product, a service, or only on subtotal for margin calculation. MARGIN_TYPE=Buying/Cost price suggested by default for margin calculation -MargeType1=Margin on Best vendor price +MargeType1=Margin on Best supplier price MargeType2=Margin on Weighted Average Price (WAP) MargeType3=Margin on Cost Price -MarginTypeDesc=* Margin on best buying price = Selling price - Best vendor price defined on product card
* Margin on Weighted Average Price (WAP) = Selling price - Product Weighted Average Price (WAP) or best supplier price if WAP not yet defined
* Margin on Cost price = Selling price - Cost price defined on product card or WAP if cost price not defined, or best supplier price if WAP not yet defined +MarginTypeDesc=* Margin on best buying price = Selling price - Best supplier price defined on product card
* Margin on Weighted Average Price (WAP) = Selling price - Product Weighted Average Price (WAP) or best supplier price if WAP not yet defined
* Margin on Cost price = Selling price - Cost price defined on product card or WAP if cost price not defined, or best supplier price if WAP not yet defined CostPrice=Cost price UnitCharges=Unit charges Charges=Charges diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang index e28f242d964..47d9889cd85 100644 --- a/htdocs/langs/en_US/members.lang +++ b/htdocs/langs/en_US/members.lang @@ -6,7 +6,7 @@ Member=Member Members=Members ShowMember=Show member card UserNotLinkedToMember=User not linked to a member -ThirdpartyNotLinkedToMember=Third-party not linked to a member +ThirdpartyNotLinkedToMember=Third party not linked to a member MembersTickets=Members Tickets FundationMembers=Foundation members ListOfValidatedPublicMembers=List of validated public members @@ -124,8 +124,8 @@ CardContent=Content of your member card ThisIsContentOfYourMembershipRequestWasReceived=We want to let you know that your membership request was received.

ThisIsContentOfYourMembershipWasValidated=We want to let you know that your membership was validated with the following information:

ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded.

-ThisIsContentOfSubscriptionReminderEmail=We want to let you know that your subscription is about to expire or is already expired (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). We hope you can make a renewal of it.

-ThisIsContentOfYourCard=This is a remind of the information we get about you. Feel free to contact us if something looks wrong.

+ThisIsContentOfSubscriptionReminderEmail=We want to let you know that your subscription is about to expire or has already expired (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). We hope you will renew it.

+ThisIsContentOfYourCard=This is a summary of the information we have about you. Please contact us if anything is incorrect.

DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Subject of the e-mail received in case of auto-inscription of a guest DescADHERENT_AUTOREGISTER_NOTIF_MAIL=E-mail received in case of auto-inscription of a guest DescADHERENT_EMAIL_TEMPLATE_AUTOREGISTER=Template Email to use to send email to a member on member autosubscription diff --git a/htdocs/langs/en_US/opensurvey.lang b/htdocs/langs/en_US/opensurvey.lang index 906de8c2f37..c4554a7a76c 100644 --- a/htdocs/langs/en_US/opensurvey.lang +++ b/htdocs/langs/en_US/opensurvey.lang @@ -49,7 +49,7 @@ votes=vote(s) NoCommentYet=No comments have been posted for this poll yet CanComment=Voters can comment in the poll CanSeeOthersVote=Voters can see other people's vote -SelectDayDesc=For each selected day, you can choose, or not, meeting hours in the following format :
- empty,
- "8h", "8H" or "8:00" to give a meeting's start hour,
- "8-11", "8h-11h", "8H-11H" or "8:00-11:00" to give a meeting's start and end hour,
- "8h15-11h15", "8H15-11H15" or "8:15-11:15" for the same thing but with minutes. +SelectDayDesc=For each selected day, you can choose, or not, meeting hours in the following format:
- empty,
- "8h", "8H" or "8:00" to give a meeting's start hour,
- "8-11", "8h-11h", "8H-11H" or "8:00-11:00" to give a meeting's start and end hour,
- "8h15-11h15", "8H15-11H15" or "8:15-11:15" for the same thing but with minutes. BackToCurrentMonth=Back to current month ErrorOpenSurveyFillFirstSection=You haven't filled the first section of the poll creation ErrorOpenSurveyOneChoice=Enter at least one choice diff --git a/htdocs/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang index 66073b8f0c9..3eb868d340f 100644 --- a/htdocs/langs/en_US/orders.lang +++ b/htdocs/langs/en_US/orders.lang @@ -85,7 +85,7 @@ NbOfOrders=Number of orders OrdersStatistics=Order's statistics OrdersStatisticsSuppliers=Purchase order statistics NumberOfOrdersByMonth=Number of orders by month -AmountOfOrdersByMonthHT=Amount of orders by month (net of tax) +AmountOfOrdersByMonthHT=Amount of orders by month (excl. tax) ListOfOrders=List of orders CloseOrder=Close order ConfirmCloseOrder=Are you sure you want to set this order to delivered? Once an order is delivered, it can be set to billed. @@ -101,8 +101,8 @@ DraftSuppliersOrders=Draft purchase orders OnProcessOrders=In process orders RefOrder=Ref. order RefCustomerOrder=Ref. order for customer -RefOrderSupplier=Ref. order for vendor -RefOrderSupplierShort=Ref. order vendor +RefOrderSupplier=Ref. order for supplier +RefOrderSupplierShort=Ref. order supplier SendOrderByMail=Send order by mail ActionsOnOrder=Events on order NoArticleOfTypeProduct=No article of type 'product' so no shippable article for this order @@ -127,9 +127,9 @@ TypeContact_commande_external_SHIPPING=Customer shipping contact TypeContact_commande_external_CUSTOMER=Customer contact following-up order TypeContact_order_supplier_internal_SALESREPFOLL=Representative following-up purchase order TypeContact_order_supplier_internal_SHIPPING=Representative following-up shipping -TypeContact_order_supplier_external_BILLING=Vendor invoice contact -TypeContact_order_supplier_external_SHIPPING=Vendor shipping contact -TypeContact_order_supplier_external_CUSTOMER=Vendor contact following-up order +TypeContact_order_supplier_external_BILLING=Supplier invoice contact +TypeContact_order_supplier_external_SHIPPING=Supplier shipping contact +TypeContact_order_supplier_external_CUSTOMER=Supplier contact following-up order Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Constant COMMANDE_SUPPLIER_ADDON not defined Error_COMMANDE_ADDON_NotDefined=Constant COMMANDE_ADDON not defined Error_OrderNotChecked=No orders to invoice selected diff --git a/htdocs/langs/en_US/other.lang b/htdocs/langs/en_US/other.lang index ec0315b94cd..2debb739615 100644 --- a/htdocs/langs/en_US/other.lang +++ b/htdocs/langs/en_US/other.lang @@ -20,8 +20,8 @@ ZipFileGeneratedInto=Zip file generated into %s. DocFileGeneratedInto=Doc file generated into %s. JumpToLogin=Disconnected. Go to login page... MessageForm=Message on online payment form -MessageOK=Message on validated payment return page -MessageKO=Message on canceled payment return page +MessageOK=Message on the return page for a validated payment +MessageKO=Message on the return page for a canceled payment ContentOfDirectoryIsNotEmpty=Content of this directory is not empty. DeleteAlsoContentRecursively=Check to delete all content recursively @@ -84,15 +84,15 @@ 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__ -PredefinedMailContentSendSupplierProposal=__(Hello)__\n\nPlease find attached price request __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__ +PredefinedMailContentSendInvoice=__(Hello)__\n\nPlease find invoice __REF__ attached \n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendInvoiceReminder=__(Hello)__\n\nWe would like to remind you that the invoice __REF__ seems to have not been paid. A copy of 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 commercial proposal __REF__ attached \n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendSupplierProposal=__(Hello)__\n\nPlease find price request __REF__ attached\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendOrder=__(Hello)__\n\nPlease find order __REF__ attached\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendSupplierOrder=__(Hello)__\n\nPlease find our order __REF__ attached\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find invoice __REF__ attached\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find shipping __REF__ attached\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find intervention __REF__ attached\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=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n @@ -191,21 +191,21 @@ NumberOfUnitsSupplierOrders=Number of units on supplier orders NumberOfUnitsSupplierInvoices=Number of units on supplier invoices EMailTextInterventionAddedContact=A new intervention %s has been assigned to you. EMailTextInterventionValidated=The intervention %s has been validated. -EMailTextInvoiceValidated=The invoice %s has been validated. -EMailTextInvoicePayed=The invoice %s has been paid. -EMailTextProposalValidated=The proposal %s has been validated. -EMailTextProposalClosedSigned=The proposal %s has been closed signed. -EMailTextOrderValidated=The order %s has been validated. -EMailTextOrderApproved=The order %s has been approved. -EMailTextOrderValidatedBy=The order %s has been recorded by %s. -EMailTextOrderApprovedBy=The order %s has been approved by %s. -EMailTextOrderRefused=The order %s has been refused. -EMailTextOrderRefusedBy=The order %s has been refused by %s. -EMailTextExpeditionValidated=The shipping %s has been validated. -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. +EMailTextInvoiceValidated=Invoice %s has been validated. +EMailTextInvoicePayed=Invoice %s has been paid. +EMailTextProposalValidated=Proposal %s has been validated. +EMailTextProposalClosedSigned=Proposal %s has been closed signed. +EMailTextOrderValidated=Order %s has been validated. +EMailTextOrderApproved=Order %s has been approved. +EMailTextOrderValidatedBy=Order %s has been recorded by %s. +EMailTextOrderApprovedBy=Order %s has been approved by %s. +EMailTextOrderRefused=Order %s has been refused. +EMailTextOrderRefusedBy=Order %s has been refused by %s. +EMailTextExpeditionValidated=Shipping %s has been validated. +EMailTextExpenseReportValidated=Expense report %s has been validated. +EMailTextExpenseReportApproved=Expense report %s has been approved. +EMailTextHolidayValidated=Leave request %s has been validated. +EMailTextHolidayApproved=Leave request %s has been approved. ImportedWithSet=Importation data set DolibarrNotification=Automatic notification ResizeDesc=Enter new width OR new height. Ratio will be kept during resizing... diff --git a/htdocs/langs/en_US/paybox.lang b/htdocs/langs/en_US/paybox.lang index 0d35ac440fa..1f3a5b0cdbe 100644 --- a/htdocs/langs/en_US/paybox.lang +++ b/htdocs/langs/en_US/paybox.lang @@ -20,7 +20,7 @@ ToOfferALinkForOnlinePaymentOnInvoice=URL to offer a %s online payment user inte ToOfferALinkForOnlinePaymentOnContractLine=URL to offer a %s online payment user interface for a contract line ToOfferALinkForOnlinePaymentOnFreeAmount=URL to offer a %s online payment user interface for a free amount ToOfferALinkForOnlinePaymentOnMemberSubscription=URL to offer a %s online payment user interface for a member subscription -ToOfferALinkForOnlinePaymentOnDonation=URL to offer a %s online payment user interface for payment of donation +ToOfferALinkForOnlinePaymentOnDonation=URL to offer a %s online payment, user interface for payment of donation YouCanAddTagOnUrl=You can also add url parameter &tag=value to any of those URL (required only for free payment) to add your own payment comment tag. SetupPayBoxToHavePaymentCreatedAutomatically=Setup your Paybox with url %s to have payment created automatically when validated by Paybox. YourPaymentHasBeenRecorded=This page confirms that your payment has been recorded. Thank you. @@ -29,7 +29,7 @@ AccountParameter=Account parameters UsageParameter=Usage parameters InformationToFindParameters=Help to find your %s account information PAYBOX_CGI_URL_V2=Url of Paybox CGI module for payment -VendorName=Name of vendor +VendorName=Name of supplier CSSUrlForPaymentForm=CSS style sheet url for payment form NewPayboxPaymentReceived=New Paybox payment received NewPayboxPaymentFailed=New Paybox payment tried but failed diff --git a/htdocs/langs/en_US/paypal.lang b/htdocs/langs/en_US/paypal.lang index d34bb4baf18..51e98ccc8a2 100644 --- a/htdocs/langs/en_US/paypal.lang +++ b/htdocs/langs/en_US/paypal.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - paypal PaypalSetup=PayPal module setup -PaypalDesc=This module allows payment on PayPal by customers. This can be used for a free payment or for a payment on a particular Dolibarr object (invoice, order, ...) +PaypalDesc=This module allows payment by customers via PayPal. This can be used for a ad-hoc payment or for a payment related to a Dolibarr object (invoice, order, ...) PaypalOrCBDoPayment=Pay with PayPal (Credit Card or PayPal) PaypalDoPayment=Pay with PayPal PAYPAL_API_SANDBOX=Mode test/sandbox @@ -8,15 +8,16 @@ PAYPAL_API_USER=API username PAYPAL_API_PASSWORD=API password PAYPAL_API_SIGNATURE=API signature PAYPAL_SSLVERSION=Curl SSL Version -PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Offer payment "integral" (Credit card+PayPal) or "PayPal" only +PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Offer "integral" payment (Credit card+PayPal) or "PayPal" only PaypalModeIntegral=Integral PaypalModeOnlyPaypal=PayPal only ONLINE_PAYMENT_CSS_URL=Optional URL of CSS stylesheet on online payment page ThisIsTransactionId=This is id of transaction: %s -PAYPAL_ADD_PAYMENT_URL=Add the url of PayPal payment when you send a document by mail +PAYPAL_ADD_PAYMENT_URL=Include the PayPal payment url when you send a document by email +YouAreCurrentlyInSandboxMode=You are currently in the %s "sandbox" mode NewOnlinePaymentReceived=New online payment received NewOnlinePaymentFailed=New online payment tried but failed -ONLINE_PAYMENT_SENDEMAIL=EMail to warn after a payment (success or not) +ONLINE_PAYMENT_SENDEMAIL=Email address for notifications after each payment attempt (for success and fail) ReturnURLAfterPayment=Return URL after payment ValidationOfOnlinePaymentFailed=Validation of online payment failed PaymentSystemConfirmPaymentPageWasCalledButFailed=Payment confirmation page was called by payment system returned an error @@ -27,7 +28,7 @@ ShortErrorMessage=Short Error Message ErrorCode=Error Code ErrorSeverityCode=Error Severity Code OnlinePaymentSystem=Online payment system -PaypalLiveEnabled=PayPal live enabled (otherwise test/sandbox mode) +PaypalLiveEnabled=PayPal "live" mode enabled (otherwise test/sandbox mode) PaypalImportPayment=Import PayPal payments PostActionAfterPayment=Post actions after payments ARollbackWasPerformedOnPostActions=A rollback was performed on all Post actions. You must complete post actions manually if they are necessary. diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index 95b93aba4e9..9668e00499f 100644 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -16,8 +16,8 @@ Create=Create Reference=Reference NewProduct=New product NewService=New service -ProductVatMassChange=Mass VAT change -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. +ProductVatMassChange=Global VAT Update +ProductVatMassChangeDesc=This tool updates the VAT rate defined on ALL products and services! MassBarcodeInit=Mass barcode init MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. ProductAccountancyBuyCode=Accounting code (purchase) @@ -36,16 +36,16 @@ ServicesOnSaleOnly=Services for sale only ServicesOnPurchaseOnly=Services for purchase only ServicesNotOnSell=Services not for sale and not for purchase ServicesOnSellAndOnBuy=Services for sale and for purchase -LastModifiedProductsAndServices=Latest %s modified products/services +LastModifiedProductsAndServices=Last %s modified products/services LastRecordedProducts=Latest %s recorded products LastRecordedServices=Latest %s recorded services CardProduct0=Product card CardProduct1=Service card Stock=Stock -Stocks=Stocks +Stocks=Stocks and location (warehouse) of products Movements=Movements -Sell=Sales -Buy=Purchases +Sell=Sell +Buy=Purchase OnSell=For sale OnBuy=For purchase NotOnSell=Not for sale @@ -60,16 +60,16 @@ ProductStatusNotOnBuyShort=Not for purchase UpdateVAT=Update vat UpdateDefaultPrice=Update default price UpdateLevelPrices=Update prices for each level -AppliedPricesFrom=Applied prices from +AppliedPricesFrom=Applied from SellingPrice=Selling price -SellingPriceHT=Selling price (net of tax) +SellingPriceHT=Selling price (excl. tax) SellingPriceTTC=Selling price (inc. tax) -CostPriceDescription=This price (net of tax) can be used to store the average amount this product cost to your company. It may be any price you calculate yourself, for example from the average buying price plus average production and distribution cost. +CostPriceDescription=This price field (excl. tax) can be used to store the average amount this product costs to your company. It may be any price you calculate yourself, for example from the average buying price plus average production and distribution cost. CostPriceUsage=This value could be used for margin calculation. SoldAmount=Sold amount PurchasedAmount=Purchased amount NewPrice=New price -MinPrice=Min. selling price +MinPrice=Min. sell price EditSellingPriceLabel=Edit selling price label CantBeLessThanMinPrice=The selling price can't be lower than minimum allowed for this product (%s without tax). This message can also appears if you type a too important discount. ContractStatusClosed=Closed @@ -78,7 +78,7 @@ ErrorProductBadRefOrLabel=Wrong value for reference or label. ErrorProductClone=There was a problem while trying to clone the product or service. ErrorPriceCantBeLowerThanMinPrice=Error, price can't be lower than minimum price. Suppliers=Suppliers -SupplierRef=Supplier's product ref. +SupplierRef=Supplier SKU ShowProduct=Show product ShowService=Show service ProductsAndServicesArea=Product and Services area @@ -95,7 +95,7 @@ SetDefaultBarcodeType=Set barcode type BarcodeValue=Barcode value NoteNotVisibleOnBill=Note (not visible on invoices, proposals...) ServiceLimitedDuration=If product is a service with limited duration: -MultiPricesAbility=Several segment of prices per product/service (each customer is in one segment) +MultiPricesAbility=Multiple price segments per product/service (each customer is in one price segment) MultiPricesNumPrices=Number of prices AssociatedProductsAbility=Activate virtual products (kits) AssociatedProducts=Virtual products @@ -109,7 +109,7 @@ CategoryFilter=Category filter ProductToAddSearch=Search product to add NoMatchFound=No match found ListOfProductsServices=List of products/services -ProductAssociationList=List of products/services that are component of this virtual product/package +ProductAssociationList=List of products/services that are component(s) of this virtual product/kit ProductParentList=List of virtual products/services with this product as a component ErrorAssociationIsFatherOfThis=One of selected product is parent with current product DeleteProduct=Delete a product/service @@ -122,15 +122,15 @@ ImportDataset_service_1=Services DeleteProductLine=Delete product line ConfirmDeleteProductLine=Are you sure you want to delete this product line? ProductSpecial=Special -QtyMin=Minimum Qty -PriceQtyMin=Price for this min. qty (w/o discount) -PriceQtyMinCurrency=Price for this min. qty (w/o discount) (currency) +QtyMin=Min. purchase quantity +PriceQtyMin=Equivalent/calculated price +PriceQtyMinCurrency=Price (currency) for this qty. (no discount) VATRateForSupplierProduct=VAT Rate (for this supplier/product) -DiscountQtyMin=Default discount for qty +DiscountQtyMin=Discount for this qty. NoPriceDefinedForThisSupplier=No price/qty defined for this supplier/product NoSupplierPriceDefinedForThisProduct=No supplier price/qty defined for this product -PredefinedProductsToSell=Predefined products to sell -PredefinedServicesToSell=Predefined services to sell +PredefinedProductsToSell=Predefined Product +PredefinedServicesToSell=Predefined Service PredefinedProductsAndServicesToSell=Predefined products/services to sell PredefinedProductsToPurchase=Predefined product to purchase PredefinedServicesToPurchase=Predefined services to purchase @@ -158,7 +158,7 @@ SuppliersPrices=Supplier prices SuppliersPricesOfProductsOrServices=Supplier prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Origin country -Nature=Nature +Nature=Product Type (material/finished) ShortLabel=Short label Unit=Unit p=u. @@ -218,18 +218,18 @@ Quarter1=1st. Quarter Quarter2=2nd. Quarter Quarter3=3rd. Quarter Quarter4=4th. Quarter -BarCodePrintsheet=Print bar code -PageToGenerateBarCodeSheets=With this tool, you can print sheets of bar code stickers. Choose format of your sticker page, type of barcode and value of barcode, then click on button %s. +BarCodePrintsheet=Print barcode +PageToGenerateBarCodeSheets=With this tool, you can print sheets of barcode stickers. Choose format of your sticker page, type of barcode and value of barcode, then click on button %s. NumberOfStickers=Number of stickers to print on page PrintsheetForOneBarCode=Print several stickers for one barcode BuildPageToPrint=Generate page to print FillBarCodeTypeAndValueManually=Fill barcode type and value manually. FillBarCodeTypeAndValueFromProduct=Fill barcode type and value from barcode of a product. FillBarCodeTypeAndValueFromThirdParty=Fill barcode type and value from barcode of a third party. -DefinitionOfBarCodeForProductNotComplete=Definition of type or value of bar code not complete for product %s. -DefinitionOfBarCodeForThirdpartyNotComplete=Definition of type or value of bar code non complete for third party %s. -BarCodeDataForProduct=Barcode information of product %s : -BarCodeDataForThirdparty=Barcode information of third party %s : +DefinitionOfBarCodeForProductNotComplete=Definition of type or value of barcode not complete for product %s. +DefinitionOfBarCodeForThirdpartyNotComplete=Definition of type or value of barcode non complete for third party %s. +BarCodeDataForProduct=Barcode information of product %s: +BarCodeDataForThirdparty=Barcode information of third party %s: ResetBarcodeForAllRecords=Define barcode value for all record (this will also reset barcode value already defined with new values) PriceByCustomer=Different prices for each customer PriceCatalogue=A single sell price per product/service @@ -238,7 +238,7 @@ AddCustomerPrice=Add price by customer ForceUpdateChildPriceSoc=Set same price on customer subsidiaries PriceByCustomerLog=Log of previous customer prices MinimumPriceLimit=Minimum price can't be lower then %s -MinimumRecommendedPrice=Minimum recommended price is : %s +MinimumRecommendedPrice=Minimum recommended price is: %s PriceExpressionEditor=Price expression editor PriceExpressionSelected=Selected price expression PriceExpressionEditorHelp1="price = 2 + 2" or "2 + 2" for setting the price. Use ; to separate expressions @@ -250,11 +250,11 @@ PriceMode=Price mode PriceNumeric=Number DefaultPrice=Default price ComposedProductIncDecStock=Increase/Decrease stock on parent change -ComposedProduct=Sub-product +ComposedProduct=Child products MinSupplierPrice=Minimum buying price MinCustomerPrice=Minimum selling price DynamicPriceConfiguration=Dynamic price configuration -DynamicPriceDesc=On product card, with this module enabled, you should be able to set mathematic functions to calculate Customer or Supplier prices. Such function can use all mathematic operators, some constants and variables. You can set here the variables you want to be able to use and if the variable need an automatic update, the external URL to use to ask Dolibarr to update the value automatically. +DynamicPriceDesc=You may define mathematical formulae to calculate Customer or Supplier prices. Such formulas can use all mathematical operators, some constants and variables. You can define here the variables you wish to use. If the variable needs an automatic update, you may define the external URL to allow Dolibarr to update the value automatically. AddVariable=Add Variable AddUpdater=Add Updater GlobalVariables=Global variables @@ -277,7 +277,7 @@ WarningSelectOneDocument=Please select at least one document DefaultUnitToShow=Unit NbOfQtyInProposals=Qty in proposals ClinkOnALinkOfColumn=Click on a link of column %s to get a detailed view... -ProductsOrServicesTranslations=Products or services translation +ProductsOrServicesTranslations=Products/Services translations TranslatedLabel=Translated label TranslatedDescription=Translated description TranslatedNote=Translated notes diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index b2dd90608f7..611cce2d9be 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -7,7 +7,7 @@ ProjectsArea=Projects Area ProjectStatus=Project status SharedProject=Everybody PrivateProject=Project contacts -ProjectsImContactFor=Projects I'm explicitely a contact of +ProjectsImContactFor=Projects for I am explicitly a contact AllAllowedProjects=All project I can read (mine + public) AllProjects=All projects MyProjectsDesc=This view is limited to projects you are a contact for @@ -221,7 +221,7 @@ OppStatusPENDING=Pending OppStatusWON=Won OppStatusLOST=Lost Budget=Budget -AllowToLinkFromOtherCompany=Allow to link project from other company

Supported values :
- Keep empty: Can link any project of the company (default)
- "all" : Can link any projects, even project of other companies
- A list of thirdparty id separated with commas : Can link all projects of these thirdparty defined (Example : 123,4795,53)
+AllowToLinkFromOtherCompany=Allow to link project from other company

Supported values:
- Keep empty: Can link any project of the company (default)
- "all": Can link any projects, even projects of other companies
- A list of third-party ids separated by commas: can link all projects of these third partys (Example: 123,4795,53)
LatestProjects=Latest %s projects LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks @@ -234,4 +234,4 @@ DontHaveTheValidateStatus=The project %s must be open to be closed RecordsClosed=%s project(s) closed SendProjectRef=Information project %s ModuleSalaryToDefineHourlyRateMustBeEnabled=Module 'Payment of employee wages' must be enabled to define employee hourly rate to have time spent valorized -NewTaskRefSuggested=Task ref already used, a new task ref is suggested +NewTaskRefSuggested=Task ref already used, a new task ref is required diff --git a/htdocs/langs/en_US/propal.lang b/htdocs/langs/en_US/propal.lang index c258381ea85..abaddec403d 100644 --- a/htdocs/langs/en_US/propal.lang +++ b/htdocs/langs/en_US/propal.lang @@ -22,7 +22,7 @@ SearchAProposal=Search a proposal NoProposal=No proposal ProposalsStatistics=Commercial proposal's statistics NumberOfProposalsByMonth=Number by month -AmountOfProposalsByMonthHT=Amount by month (net of tax) +AmountOfProposalsByMonthHT=Amount by month (excl. tax) NbOfProposals=Number of commercial proposals ShowPropal=Show proposal PropalsDraft=Drafts diff --git a/htdocs/langs/en_US/salaries.lang b/htdocs/langs/en_US/salaries.lang index 620517b5324..1e3607ce7cc 100644 --- a/htdocs/langs/en_US/salaries.lang +++ b/htdocs/langs/en_US/salaries.lang @@ -12,8 +12,8 @@ ShowSalaryPayment=Show salary payment THM=Average hourly rate TJM=Average daily rate CurrentSalary=Current salary -THMDescription=This value may be used to calculate cost of time consumed on a project entered by users if module project is used -TJMDescription=This value is currently as information only and is not used for any calculation +THMDescription=This value may be used to calculate the cost of time consumed on a project entered by users if module project is used +TJMDescription=This value is currently for information only and is not used for any calculation LastSalaries=Latest %s salary payments AllSalaries=All salary payments SalariesStatistics=Salary statistics diff --git a/htdocs/langs/en_US/sendings.lang b/htdocs/langs/en_US/sendings.lang index 2b46ada5ee9..df91da74688 100644 --- a/htdocs/langs/en_US/sendings.lang +++ b/htdocs/langs/en_US/sendings.lang @@ -69,4 +69,4 @@ SumOfProductWeights=Sum of product weights # warehouse details DetailWarehouseNumber= Warehouse details -DetailWarehouseFormat= W:%s (Qty : %d) +DetailWarehouseFormat= W:%s (Qty: %d) diff --git a/htdocs/langs/en_US/sms.lang b/htdocs/langs/en_US/sms.lang index 79bd8827198..055085eb16a 100644 --- a/htdocs/langs/en_US/sms.lang +++ b/htdocs/langs/en_US/sms.lang @@ -44,7 +44,7 @@ NbOfSms=No. of phone numbers ThisIsATestMessage=This is a test message SendSms=Send SMS SmsInfoCharRemain=No. of remaining characters -SmsInfoNumero= (international format ie : +33899701761) +SmsInfoNumero= (international format i.e.: +33899701761) DelayBeforeSending=Delay before sending (minutes) SmsNoPossibleSenderFound=No sender available. Check setup of your SMS provider. SmsNoPossibleRecipientFound=No target available. Check setup of your SMS provider. diff --git a/htdocs/langs/en_US/stocks.lang b/htdocs/langs/en_US/stocks.lang index fbbc00887aa..bb15ffdf910 100644 --- a/htdocs/langs/en_US/stocks.lang +++ b/htdocs/langs/en_US/stocks.lang @@ -5,7 +5,7 @@ Warehouses=Warehouses ParentWarehouse=Parent warehouse NewWarehouse=New warehouse / Stock area WarehouseEdit=Modify warehouse -MenuNewWarehouse=New warehouse +MenuNewWarehouse=New Warehouse WarehouseSource=Source warehouse WarehouseSourceNotDefined=No warehouse defined, AddWarehouse=Create warehouse @@ -75,12 +75,12 @@ DispatchVerb=Dispatch StockLimitShort=Limit for alert StockLimit=Stock limit for alert StockLimitDesc=(empty) means no warning.
0 can be used for a warning as soon as stock is empty. -PhysicalStock=Physical stock +PhysicalStock=Physical Stock RealStock=Real Stock -RealStockDesc=Physical or real stock is the stock you currently have into your internal warehouses/emplacements. -RealStockWillAutomaticallyWhen=The real stock will automatically change according to this rules (see stock module setup to change this): +RealStockDesc=Physical/real stock is the stock currently in the warehouses. +RealStockWillAutomaticallyWhen=The real stock will be modified according to this rule (as defined in the Stock module): VirtualStock=Virtual stock -VirtualStockDesc=Virtual stock is the stock you will get once all open pending actions that affect stocks will be closed (supplier order received, customer order shipped, ...) +VirtualStockDesc=Virtual stock is the calculated stock available once all open/pending actions (that affect stocks) are closed (supplier orders received, customer orders shipped etc.) IdWarehouse=Id warehouse DescWareHouse=Description warehouse LieuWareHouse=Localisation warehouse @@ -100,7 +100,7 @@ ThisWarehouseIsPersonalStock=This warehouse represents personal stock of %s %s SelectWarehouseForStockDecrease=Choose warehouse to use for stock decrease SelectWarehouseForStockIncrease=Choose warehouse to use for stock increase NoStockAction=No stock action -DesiredStock=Desired optimal stock +DesiredStock=Desired Stock DesiredStockDesc=This stock amount will be the value used to fill the stock by replenishment feature. StockToBuy=To order Replenishment=Replenishment @@ -171,16 +171,16 @@ inventoryValidate=Validated inventoryDraft=Running inventorySelectWarehouse=Warehouse choice inventoryConfirmCreate=Create -inventoryOfWarehouse=Inventory for warehouse : %s -inventoryErrorQtyAdd=Error : one quantity is less than zero +inventoryOfWarehouse=Inventory for warehouse: %s +inventoryErrorQtyAdd=Error: one quantity is less than zero inventoryMvtStock=By inventory inventoryWarningProductAlreadyExists=This product is already into list SelectCategory=Category filter SelectFournisseur=Supplier filter inventoryOnDate=Inventory -INVENTORY_DISABLE_VIRTUAL=Allow to not destock child product from a kit on inventory +INVENTORY_DISABLE_VIRTUAL=Virtual product (kit): do not decrement stock of a child product INVENTORY_USE_MIN_PA_IF_NO_LAST_PA=Use the buy price if no last buy price can be found -INVENTORY_USE_INVENTORY_DATE_FROM_DATEMVT=Stock movement have date of inventory +INVENTORY_USE_INVENTORY_DATE_FROM_DATEMVT=Stock movement has date of inventory inventoryChangePMPPermission=Allow to change PMP value for a product ColumnNewPMP=New unit PMP OnlyProdsInStock=Do not add product without stock @@ -202,7 +202,7 @@ inventoryDeleteLine=Delete line RegulateStock=Regulate Stock ListInventory=List StockSupportServices=Stock management supports Services -StockSupportServicesDesc=By default, you can stock only product with type "product". If on, and if module service is on, you can also stock a product with type "service" +StockSupportServicesDesc=By default, you can stock only products of type "product". You may also stock a product of type "service" if both module Services and this option are enabled. ReceiveProducts=Receive items StockIncreaseAfterCorrectTransfer=Increase by correction/transfer StockDecreaseAfterCorrectTransfer=Decrease by correction/transfer diff --git a/htdocs/langs/en_US/stripe.lang b/htdocs/langs/en_US/stripe.lang index ed3d24f4370..26f0e3ff03b 100644 --- a/htdocs/langs/en_US/stripe.lang +++ b/htdocs/langs/en_US/stripe.lang @@ -27,7 +27,7 @@ AccountParameter=Account parameters UsageParameter=Usage parameters InformationToFindParameters=Help to find your %s account information STRIPE_CGI_URL_V2=Url of Stripe CGI module for payment -VendorName=Name of vendor +VendorName=Name of supplier CSSUrlForPaymentForm=CSS style sheet url for payment form NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed @@ -61,4 +61,4 @@ ConfirmDeleteCard=Are you sure you want to delete this Credit or Debit card? CreateCustomerOnStripe=Create customer on Stripe CreateCardOnStripe=Create card on Stripe ShowInStripe=Show in Stripe -StripeUserAccountForActions=User account to use for some emails notification of Stripe events (Stripe payouts) +StripeUserAccountForActions=User account to use for email notification of some Stripe events (Stripe payouts) diff --git a/htdocs/langs/en_US/supplier_proposal.lang b/htdocs/langs/en_US/supplier_proposal.lang index ef2e7242e31..d5b51978920 100644 --- a/htdocs/langs/en_US/supplier_proposal.lang +++ b/htdocs/langs/en_US/supplier_proposal.lang @@ -1,22 +1,22 @@ # Dolibarr language file - Source file is en_US - supplier_proposal -SupplierProposal=Vendor commercial proposals -supplier_proposalDESC=Manage price requests to vendors +SupplierProposal=Supplier commercial proposals +supplier_proposalDESC=Manage price requests to suppliers SupplierProposalNew=New price request CommRequest=Price request CommRequests=Price requests SearchRequest=Find a request DraftRequests=Draft requests -SupplierProposalsDraft=Draft vendor proposals +SupplierProposalsDraft=Draft supplier proposals LastModifiedRequests=Latest %s modified price requests RequestsOpened=Open price requests -SupplierProposalArea=Vendor proposals area -SupplierProposalShort=Vendor proposal -SupplierProposals=Vendor proposals -SupplierProposalsShort=Vendor proposals +SupplierProposalArea=Supplier proposals area +SupplierProposalShort=Supplier proposal +SupplierProposals=Supplier proposals +SupplierProposalsShort=Supplier proposals NewAskPrice=New price request ShowSupplierProposal=Show price request AddSupplierProposal=Create a price request -SupplierProposalRefFourn=Vendor ref +SupplierProposalRefFourn=Supplier ref SupplierProposalDate=Delivery date SupplierProposalRefFournNotice=Before closing to "Accepted", think to grasp suppliers references. ConfirmValidateAsk=Are you sure you want to validate this price request under name %s? @@ -47,9 +47,9 @@ CommercialAsk=Price request DefaultModelSupplierProposalCreate=Default model creation DefaultModelSupplierProposalToBill=Default template when closing a price request (accepted) DefaultModelSupplierProposalClosed=Default template when closing a price request (refused) -ListOfSupplierProposals=List of vendor proposal requests -ListSupplierProposalsAssociatedProject=List of vendor proposals associated with project -SupplierProposalsToClose=Vendor proposals to close -SupplierProposalsToProcess=Vendor proposals to process +ListOfSupplierProposals=List of supplier proposal requests +ListSupplierProposalsAssociatedProject=List of supplier proposals associated with project +SupplierProposalsToClose=Supplier proposals to close +SupplierProposalsToProcess=Supplier proposals to process LastSupplierProposals=Latest %s price requests AllPriceRequests=All requests diff --git a/htdocs/langs/en_US/suppliers.lang b/htdocs/langs/en_US/suppliers.lang index ac5102323d9..91fe68b1cf1 100644 --- a/htdocs/langs/en_US/suppliers.lang +++ b/htdocs/langs/en_US/suppliers.lang @@ -1,11 +1,11 @@ # Dolibarr language file - Source file is en_US - suppliers -Suppliers=Vendors -SuppliersInvoice=Vendor invoice -ShowSupplierInvoice=Show Vendor Invoice -NewSupplier=New vendor +Suppliers=Suppliers +SuppliersInvoice=Supplier invoice +ShowSupplierInvoice=Show Supplier Invoice +NewSupplier=New supplier History=History -ListOfSuppliers=List of vendors -ShowSupplier=Show vendor +ListOfSuppliers=List of suppliers +ShowSupplier=Show supplier OrderDate=Order date BuyingPriceMin=Best buying price BuyingPriceMinShort=Best buying price @@ -14,15 +14,15 @@ TotalSellingPriceMinShort=Total of subproducts selling prices SomeSubProductHaveNoPrices=Some sub-products have no price defined AddSupplierPrice=Add buying price ChangeSupplierPrice=Change buying price -SupplierPrices=Vendor prices +SupplierPrices=Supplier prices ReferenceSupplierIsAlreadyAssociatedWithAProduct=This reference supplier is already associated with a reference: %s -NoRecordedSuppliers=No vendor recorded -SupplierPayment=Vendor payment -SuppliersArea=Vendor area -RefSupplierShort=Ref. vendor +NoRecordedSuppliers=No supplier recorded +SupplierPayment=Supplier payment +SuppliersArea=Supplier area +RefSupplierShort=Ref. supplier Availability=Availability -ExportDataset_fournisseur_1=Vendor invoices and invoice details -ExportDataset_fournisseur_2=Vendor invoices and payments +ExportDataset_fournisseur_1=Supplier invoices and invoice details +ExportDataset_fournisseur_2=Supplier invoices and payments ExportDataset_fournisseur_3=Purchase orders and order details ApproveThisOrder=Approve this order ConfirmApproveThisOrder=Are you sure you want to approve order %s? @@ -30,18 +30,18 @@ DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Are you sure you want to deny this order %s? ConfirmCancelThisOrder=Are you sure you want to cancel this order %s? AddSupplierOrder=Create Purchase Order -AddSupplierInvoice=Create vendor invoice -ListOfSupplierProductForSupplier=List of products and prices for vendor %s -SentToSuppliers=Sent to vendors +AddSupplierInvoice=Create supplier invoice +ListOfSupplierProductForSupplier=List of products and prices for supplier %s +SentToSuppliers=Sent to suppliers ListOfSupplierOrders=List of purchase orders MenuOrdersSupplierToBill=Purchase orders to invoice -NbDaysToDelivery=Delivery delay in days -DescNbDaysToDelivery=The biggest deliver delay of the products from this order -SupplierReputation=Vendor reputation +NbDaysToDelivery=Delivery delay (days) +DescNbDaysToDelivery=The longest delivery delay of the products from this order +SupplierReputation=Supplier reputation DoNotOrderThisProductToThisSupplier=Do not order -NotTheGoodQualitySupplier=Wrong quality +NotTheGoodQualitySupplier=Low quality ReputationForThisProduct=Reputation BuyerName=Buyer name AllProductServicePrices=All product / service prices AllProductReferencesOfSupplier=All product / service references of supplier -BuyingPriceNumShort=Vendor prices +BuyingPriceNumShort=Supplier prices diff --git a/htdocs/langs/en_US/ticket.lang b/htdocs/langs/en_US/ticket.lang index f7140d2c6ee..1a9e4ca232d 100644 --- a/htdocs/langs/en_US/ticket.lang +++ b/htdocs/langs/en_US/ticket.lang @@ -25,7 +25,7 @@ Permission56001=See tickets Permission56002=Modify tickets Permission56003=Delete tickets Permission56004=Manage tickets -Permission56005=See tickets of all third parties (not effective for external users, always be limited to the thirdparty they depend on) +Permission56005=See tickets of all third parties (not effective for external users, always be limited to the third party they depend on) TicketDictType=Tickets type TicketDictCategory=Tickets categories @@ -115,14 +115,14 @@ TicketsShowCompanyLogo=Display the logo of the company in the public interface TicketsShowCompanyLogoHelp=Enable this option to hide the logo of the main company in the pages of the public interface TicketsEmailAlsoSendToMainAddress=Also send notification to main email address TicketsEmailAlsoSendToMainAddressHelp=Enable this option to send an email to "Notification email from" address (see setup below) -TicketsLimitViewAssignedOnly=Restrict the display to tickets assigned to the current user (not effective for external users, always be limited to the thirdparty they depend on) +TicketsLimitViewAssignedOnly=Restrict the display to tickets assigned to the current user (not effective for external users, always be limited to the third party they depend on) TicketsLimitViewAssignedOnlyHelp=Only tickets assigned to the current user will be visible. Does not apply to a user with tickets management rights. TicketsActivatePublicInterface=Activate public interface TicketsActivatePublicInterfaceHelp=Public interface allow any visitors to create tickets. TicketsAutoAssignTicket=Automatically assign the user who created the ticket TicketsAutoAssignTicketHelp=When creating a ticket, the user can be automatically assigned to the ticket. TicketNumberingModules=Tickets numbering module -TicketNotifyTiersAtCreation=Notify thirdparty at creation +TicketNotifyTiersAtCreation=Notify third party at creation # # Index & list page @@ -203,7 +203,7 @@ TicketTimeToRead=Time elapsed before read TicketContacts=Contacts ticket TicketDocumentsLinked=Documents linked to ticket ConfirmReOpenTicket=Confirm reopen this ticket ? -TicketMessageMailIntroAutoNewPublicMessage=A new message was posted on the ticket with the subject %s : +TicketMessageMailIntroAutoNewPublicMessage=A new message was posted on the ticket with the subject %s: TicketAssignedToYou=Ticket assigned TicketAssignedEmailBody=You have been assigned the ticket #%s by %s MarkMessageAsPrivate=Mark message as private @@ -212,13 +212,13 @@ TicketEmailOriginIssuer=Issuer at origin of the tickets InitialMessage=Initial Message LinkToAContract=Link to a contract TicketPleaseSelectAContract=Select a contract -UnableToCreateInterIfNoSocid=Can not create an intervention when no third party are defined +UnableToCreateInterIfNoSocid=Can not create an intervention when no third party is defined TicketMailExchanges=Mail exchanges TicketInitialMessageModified=Initial message modified TicketMessageSuccesfullyUpdated=Message successfully updated TicketChangeStatus=Change status -TicketConfirmChangeStatus=Confirm the status change : %s ? -TicketLogStatusChanged=Status changed : %s to %s +TicketConfirmChangeStatus=Confirm the status change: %s ? +TicketLogStatusChanged=Status changed: %s to %s TicketNotNotifyTiersAtCreate=Not notify company at create Unread=Unread @@ -229,7 +229,7 @@ TicketLogMesgReadBy=Ticket read by %s NoLogForThisTicket=No log for this ticket yet TicketLogAssignedTo=Ticket assigned to %s TicketAssignedButLogActionNotSaved=Ticket assigned but no log saved ! -TicketLogPropertyChanged=Change classification : from %s to %s +TicketLogPropertyChanged=Change classification: from %s to %s TicketLogClosedBy=Ticket closed by %s TicketLogProgressSetTo=Progress change to %s percent TicketLogReopen=Ticket re-opened @@ -249,7 +249,7 @@ TicketNewEmailSubjectCustomer=New support ticket TicketNewEmailBody=This is an automatic email to confirm you have registered a new ticket. TicketNewEmailBodyCustomer=This is an automatic email to confirm a new ticket has just been created into your account. TicketNewEmailBodyInfosTicket=Information for monitoring the ticket -TicketNewEmailBodyInfosTrackId=Ticket tracking number : %s +TicketNewEmailBodyInfosTrackId=Ticket tracking number: %s TicketNewEmailBodyInfosTrackUrl=You can view the progress of the ticket by clicking the link above. TicketNewEmailBodyInfosTrackUrlCustomer=You can view the progress of the ticket in the specific interface by clicking the following link TicketEmailPleaseDoNotReplyToThisEmail=Please do not reply directly to this email! Use the link to reply into the interface. @@ -258,15 +258,15 @@ TicketPublicPleaseBeAccuratelyDescribe=Please accurately describe the problem. P TicketPublicMsgViewLogIn=Please enter ticket tracking ID TicketTrackId=Tracking ID OneOfTicketTrackId=One of yours tracking ID -ErrorTicketNotFound=Ticket with tracking ID %s not found ! +ErrorTicketNotFound=Ticket with tracking ID %s not found! Subject=Subject ViewTicket=View ticket ViewMyTicketList=View my ticket list -ErrorEmailMustExistToCreateTicket=Error : email address not found in our database +ErrorEmailMustExistToCreateTicket=Error: email address not found in our database TicketNewEmailSubjectAdmin=New ticket created -TicketNewEmailBodyAdmin=

Ticket has just been created with ID #%s, see informations :

+TicketNewEmailBodyAdmin=

Ticket has just been created with ID #%s, see information:

SeeThisTicketIntomanagementInterface=See ticket in management interface -TicketPublicInterfaceForbidden=Access for this area : forbidden +TicketPublicInterfaceForbidden=Access for this area: forbidden # notifications TicketNotificationEmailSubject=Ticket %s updated @@ -274,7 +274,7 @@ TicketNotificationEmailBody=This is an automatic message to notify you that tick TicketNotificationRecipient=Notification recipient TicketNotificationLogMessage=Log message TicketNotificationEmailBodyInfosTrackUrlinternal=View ticket into interface -TicketNotificationNumberEmailSent=Notification email sent : %s +TicketNotificationNumberEmailSent=Notification email sent: %s ActionsOnTicket=Events on ticket diff --git a/htdocs/langs/en_US/users.lang b/htdocs/langs/en_US/users.lang index 68fffde3bb0..70ca225670d 100644 --- a/htdocs/langs/en_US/users.lang +++ b/htdocs/langs/en_US/users.lang @@ -69,7 +69,7 @@ InternalUser=Internal user ExportDataset_user_1=Users and their properties DomainUser=Domain user %s Reactivate=Reactivate -CreateInternalUserDesc=This form allows you to create an user internal to your company/organization. To create an external user (customer, supplier, ...), use the button 'Create Dolibarr user' from third party's contact card. +CreateInternalUserDesc=This form allows you to create an user internal to your company/organization. To create an external user (customer, supplier, ...), use the button 'Create Dolibarr user' from third-party's contact card. InternalExternalDesc=An internal user is a user that is part of your company/organization.
An external user is a customer, supplier or other.

In both cases, permissions defines rights on Dolibarr, also external user can have a different menu manager than internal user (See Home - Setup - Display) PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. Inherited=Inherited diff --git a/htdocs/langs/en_US/website.lang b/htdocs/langs/en_US/website.lang index d96f2bfb1cb..94922827a91 100644 --- a/htdocs/langs/en_US/website.lang +++ b/htdocs/langs/en_US/website.lang @@ -76,9 +76,9 @@ DisableSiteFirst=Disable website first MyContainerTitle=My web site title 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 +WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party 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 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) +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.
Note also that edits of HTML source will be possible when 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 @@ -91,5 +91,5 @@ ExternalURLMustStartWithHttp=External URL must start with http:// or https:// ZipOfWebsitePackageToImport=Zip file of website package ShowSubcontainers=Include dynamic content InternalURLOfPage=Internal URL of page -ThisPageIsTranslationOf=This page/container is translation of +ThisPageIsTranslationOf=This page/container is a translation of ThisPageHasTranslationPages=This page/container has translation \ No newline at end of file diff --git a/htdocs/langs/en_US/withdrawals.lang b/htdocs/langs/en_US/withdrawals.lang index c2c384793c4..bdfe8130d2b 100644 --- a/htdocs/langs/en_US/withdrawals.lang +++ b/htdocs/langs/en_US/withdrawals.lang @@ -18,14 +18,14 @@ InvoiceWaitingWithdraw=Invoice waiting for direct debit AmountToWithdraw=Amount to withdraw WithdrawsRefused=Direct debit refused NoInvoiceToWithdraw=No customer invoice with open 'Direct debit requests' is waiting. Go on tab '%s' on invoice card to make a request. -ResponsibleUser=Responsible user +ResponsibleUser=User Responsible WithdrawalsSetup=Direct debit payment setup WithdrawStatistics=Direct debit payment statistics WithdrawRejectStatistics=Direct debit payment reject statistics LastWithdrawalReceipt=Latest %s direct debit receipts MakeWithdrawRequest=Make a direct debit payment request WithdrawRequestsDone=%s direct debit payment requests recorded -ThirdPartyBankCode=Third party bank code +ThirdPartyBankCode=Third-party bank code NoInvoiceCouldBeWithdrawed=No invoice debited successfully. Check that invoices are on companies with a valid IBAN and that IBAN has a UMR (Unique Mandate Reference) with mode %s. ClassCredited=Classify credited ClassCreditedConfirm=Are you sure you want to classify this withdrawal receipt as credited on your bank account? @@ -66,7 +66,7 @@ NotifyCredit=Withdrawal Credit NumeroNationalEmetter=National Transmitter Number WithBankUsingRIB=For bank accounts using RIB WithBankUsingBANBIC=For bank accounts using IBAN/BIC/SWIFT -BankToReceiveWithdraw=Bank account to receive direct debit +BankToReceiveWithdraw=Receiving Bank Account CreditDate=Credit on WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your country %s (Your country is not supported) ShowWithdraw=Show Withdraw @@ -78,7 +78,7 @@ ThisWillAlsoAddPaymentOnInvoice=This will also record payments to invoices and w StatisticsByLineStatus=Statistics by status of lines RUM=UMR RUMLong=Unique Mandate Reference -RUMWillBeGenerated=If empty, UMR number will be generated once bank account information are saved +RUMWillBeGenerated=If empty, a UMR (Unique Mandate Reference) will be generated once the bank account information is saved. WithdrawMode=Direct debit mode (FRST or RECUR) WithdrawRequestAmount=Amount of Direct debit request: WithdrawRequestErrorNilAmount=Unable to create direct debit request for empty amount. @@ -87,13 +87,13 @@ SepaMandateShort=SEPA Mandate PleaseReturnMandate=Please return this mandate form by email to %s or by mail to SEPALegalText=By signing this mandate form, you authorize (A) %s to send instructions to your bank to debit your account and (B) your bank to debit your account in accordance with the instructions from %s. As part of your rights, you are entitled to a refund from your bank under the terms and conditions of your agreement with your bank. A refund must be claimed within 8 weeks starting from the date on which your account was debited. Your rights regarding the above mandate are explained in a statement that you can obtain from your bank. CreditorIdentifier=Creditor Identifier -CreditorName=Creditor’s Name +CreditorName=Creditor Name SEPAFillForm=(B) Please complete all the fields marked * SEPAFormYourName=Your name SEPAFormYourBAN=Your Bank Account Name (IBAN) SEPAFormYourBIC=Your Bank Identifier Code (BIC) SEPAFrstOrRecur=Type of payment -ModeRECUR=Reccurent payment +ModeRECUR=Recurring payment ModeFRST=One-off payment PleaseCheckOne=Please check one only DirectDebitOrderCreated=Direct debit order %s created diff --git a/htdocs/langs/en_US/workflow.lang b/htdocs/langs/en_US/workflow.lang index c16caf44765..0927cdd5f70 100644 --- a/htdocs/langs/en_US/workflow.lang +++ b/htdocs/langs/en_US/workflow.lang @@ -14,7 +14,7 @@ descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Classify linked source custome descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Classify linked source customer order as billed when customer invoice is set to paid (and if the amount of the invoice is the same as the total amount of the linked order) descWORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING=Classify linked source customer order as shipped when a shipment is validated (and if the quantity shipped by all shipments is the same as in the order to update) # Autoclassify supplier order -descWORKFLOW_ORDER_CLASSIFY_BILLED_SUPPLIER_PROPOSAL=Classify linked source vendor proposal as billed when vendor invoice is validated (and if the amount of the invoice is the same as the total amount of the linked proposal) -descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER=Classify linked source purchase order as billed when vendor invoice is validated (and if the amount of the invoice is the same as the total amount of the linked order) +descWORKFLOW_ORDER_CLASSIFY_BILLED_SUPPLIER_PROPOSAL=Classify linked source supplier proposal as billed when supplier invoice is validated (and if the amount of the invoice is the same as the total amount of the linked proposal) +descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER=Classify linked source purchase order as billed when supplier invoice is validated (and if the amount of the invoice is the same as the total amount of the linked order) AutomaticCreation=Automatic creation AutomaticClassification=Automatic classification From 5ec9a1ca7fa85b4006e50e6779eacb19c22d4766 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 11 Dec 2018 10:15:13 +0100 Subject: [PATCH 310/349] Remove deprecated parameter --- htdocs/comm/mailing/cibles.php | 8 ++------ .../core/modules/mailings/contacts1.modules.php | 3 +-- htdocs/core/modules/mailings/example.modules.php | 3 +-- htdocs/core/modules/mailings/fraise.modules.php | 8 +------- htdocs/core/modules/mailings/pomme.modules.php | 8 +------- .../modules/mailings/thirdparties.modules.php | 3 +-- .../thirdparties_services_expired.modules.php | 16 ++++++++-------- .../core/modules/mailings/xinputfile.modules.php | 3 +-- .../core/modules/mailings/xinputuser.modules.php | 3 +-- .../mailinglist_mymodule_myobject.modules.php | 10 ++++------ 10 files changed, 21 insertions(+), 44 deletions(-) diff --git a/htdocs/comm/mailing/cibles.php b/htdocs/comm/mailing/cibles.php index cc920e3d124..84c1f5954b9 100644 --- a/htdocs/comm/mailing/cibles.php +++ b/htdocs/comm/mailing/cibles.php @@ -72,7 +72,7 @@ $object = new Mailing($db); if ($action == 'add') { - $module=GETPOST("module"); + $module=GETPOST("module",'alpha'); $result=-1; foreach ($modulesdir as $dir) @@ -89,14 +89,10 @@ if ($action == 'add') { require_once $file; - // We fill $filtersarray. Using this variable is now deprecated. Kept for backward compatibility. - $filtersarray=array(); - if (isset($_POST["filter"])) $filtersarray[0]=$_POST["filter"]; - // Add targets into database $obj = new $classname($db); dol_syslog("Call add_to_target on class ".$classname); - $result=$obj->add_to_target($id,$filtersarray); + $result=$obj->add_to_target($id); } } if ($result > 0) diff --git a/htdocs/core/modules/mailings/contacts1.modules.php b/htdocs/core/modules/mailings/contacts1.modules.php index 7a4d53172f4..588d61faf5e 100644 --- a/htdocs/core/modules/mailings/contacts1.modules.php +++ b/htdocs/core/modules/mailings/contacts1.modules.php @@ -331,10 +331,9 @@ class mailing_contacts1 extends MailingTargets * Ajoute destinataires dans table des cibles * * @param int $mailing_id Id of emailing - * @param array $filtersarray Optional filter data (deprecated) * @return int <0 si erreur, nb ajout si ok */ - function add_to_target($mailing_id,$filtersarray=array()) + function add_to_target($mailing_id) { // phpcs:enable global $conf, $langs; diff --git a/htdocs/core/modules/mailings/example.modules.php b/htdocs/core/modules/mailings/example.modules.php index 0af52dc5bd2..cd0a0ee9d5a 100644 --- a/htdocs/core/modules/mailings/example.modules.php +++ b/htdocs/core/modules/mailings/example.modules.php @@ -61,10 +61,9 @@ class mailing_example extends MailingTargets * This is the main function that returns the array of emails * * @param int $mailing_id Id of mailing. No need to use it. - * @param array $filtersarray If you used the formFilter function. Empty otherwise. * @return int <0 if error, number of emails added if ok */ - function add_to_target($mailing_id,$filtersarray=array()) + function add_to_target($mailing_id) { // phpcs:enable $target = array(); diff --git a/htdocs/core/modules/mailings/fraise.modules.php b/htdocs/core/modules/mailings/fraise.modules.php index 43798799acd..151d828aa61 100644 --- a/htdocs/core/modules/mailings/fraise.modules.php +++ b/htdocs/core/modules/mailings/fraise.modules.php @@ -225,17 +225,11 @@ class mailing_fraise extends MailingTargets * Ajoute destinataires dans table des cibles * * @param int $mailing_id Id of emailing - * @param array $filtersarray Param to filter sql request. Deprecated. Should use $_POST instead. * @return int < 0 si erreur, nb ajout si ok */ - function add_to_target($mailing_id,$filtersarray=array()) + function add_to_target($mailing_id) { // phpcs:enable - // Deprecation warning - if ($filtersarray) { - dol_syslog(__METHOD__ . ": filtersarray parameter is deprecated", LOG_WARNING); - } - global $langs,$_POST; // Load translation files required by the page diff --git a/htdocs/core/modules/mailings/pomme.modules.php b/htdocs/core/modules/mailings/pomme.modules.php index b2477c1fd55..91539359d6e 100644 --- a/htdocs/core/modules/mailings/pomme.modules.php +++ b/htdocs/core/modules/mailings/pomme.modules.php @@ -151,17 +151,11 @@ class mailing_pomme extends MailingTargets * Ajoute destinataires dans table des cibles * * @param int $mailing_id Id of emailing - * @param array $filtersarray Requete sql de selection des destinataires * @return int < 0 si erreur, nb ajout si ok */ - function add_to_target($mailing_id, $filtersarray=array()) + function add_to_target($mailing_id) { // phpcs:enable - // Deprecation warning - if ($filtersarray) { - dol_syslog(__METHOD__ . ": filtersarray parameter is deprecated", LOG_WARNING); - } - global $conf, $langs; $langs->load("companies"); diff --git a/htdocs/core/modules/mailings/thirdparties.modules.php b/htdocs/core/modules/mailings/thirdparties.modules.php index 49205cf6f80..5465b0af5c3 100644 --- a/htdocs/core/modules/mailings/thirdparties.modules.php +++ b/htdocs/core/modules/mailings/thirdparties.modules.php @@ -57,10 +57,9 @@ class mailing_thirdparties extends MailingTargets * This is the main function that returns the array of emails * * @param int $mailing_id Id of mailing. No need to use it. - * @param array $filtersarray If you used the formFilter function. Empty otherwise. * @return int <0 if error, number of emails added if ok */ - function add_to_target($mailing_id, $filtersarray=array()) + function add_to_target($mailing_id) { // phpcs:enable global $conf, $langs; diff --git a/htdocs/core/modules/mailings/thirdparties_services_expired.modules.php b/htdocs/core/modules/mailings/thirdparties_services_expired.modules.php index 91bd5127c1f..fc57a364c9d 100644 --- a/htdocs/core/modules/mailings/thirdparties_services_expired.modules.php +++ b/htdocs/core/modules/mailings/thirdparties_services_expired.modules.php @@ -82,26 +82,26 @@ class mailing_thirdparties_services_expired extends MailingTargets * This is the main function that returns the array of emails * * @param int $mailing_id Id of mailing. No need to use it. - * @param array $filtersarray If you used the formFilter function. Empty otherwise. * @return int <0 if error, number of emails added if ok */ - function add_to_target($mailing_id,$filtersarray=array()) + function add_to_target($mailing_id) { // phpcs:enable - $target = array(); - - // ----- Your code start here ----- + $key=GETPOST('filter','int'); $cibles = array(); $j = 0; $product=''; - foreach($filtersarray as $key) + if ($key == '0') { - if ($key == '0') return "Error: You must choose a filter"; - $product=$this->arrayofproducts[$key]; + $this->error = "Error: You must choose a filter"; + $this->errors[] = $this->error; + return $this->error; } + $product=$this->arrayofproducts[$key]; + $now=dol_now(); // La requete doit retourner: id, email, name diff --git a/htdocs/core/modules/mailings/xinputfile.modules.php b/htdocs/core/modules/mailings/xinputfile.modules.php index 7de27a0c753..a4caef12af8 100644 --- a/htdocs/core/modules/mailings/xinputfile.modules.php +++ b/htdocs/core/modules/mailings/xinputfile.modules.php @@ -115,10 +115,9 @@ class mailing_xinputfile extends MailingTargets * Ajoute destinataires dans table des cibles * * @param int $mailing_id Id of emailing - * @param array $filtersarray Requete sql de selection des destinataires * @return int < 0 si erreur, nb ajout si ok */ - function add_to_target($mailing_id,$filtersarray=array()) + function add_to_target($mailing_id) { // phpcs:enable global $conf,$langs,$_FILES; diff --git a/htdocs/core/modules/mailings/xinputuser.modules.php b/htdocs/core/modules/mailings/xinputuser.modules.php index 2364eeb08ef..bcbf5d9a41b 100644 --- a/htdocs/core/modules/mailings/xinputuser.modules.php +++ b/htdocs/core/modules/mailings/xinputuser.modules.php @@ -113,10 +113,9 @@ class mailing_xinputuser extends MailingTargets * Ajoute destinataires dans table des cibles * * @param int $mailing_id Id of emailing - * @param array $filtersarray Requete sql de selection des destinataires * @return int < 0 si erreur, nb ajout si ok */ - function add_to_target($mailing_id,$filtersarray=array()) + function add_to_target($mailing_id) { // phpcs:enable global $conf,$langs,$_FILES; diff --git a/htdocs/modulebuilder/template/core/modules/mailings/mailinglist_mymodule_myobject.modules.php b/htdocs/modulebuilder/template/core/modules/mailings/mailinglist_mymodule_myobject.modules.php index 545e53d350a..460df7e96bf 100644 --- a/htdocs/modulebuilder/template/core/modules/mailings/mailinglist_mymodule_myobject.modules.php +++ b/htdocs/modulebuilder/template/core/modules/mailings/mailinglist_mymodule_myobject.modules.php @@ -97,14 +97,12 @@ class mailing_mailinglist_mymodule_myobject extends MailingTargets * This is the main function that returns the array of emails * * @param int $mailing_id Id of emailing - * @param array $filtersarray Requete sql de selection des destinataires * @return int <0 if error, number of emails added if ok */ - function add_to_target($mailing_id,$filtersarray=array()) + function add_to_target($mailing_id) { // phpcs:enable $target = array(); - $cibles = array(); $j = 0; @@ -114,7 +112,7 @@ class mailing_mailinglist_mymodule_myobject extends MailingTargets if (! empty($_POST['filter']) && $_POST['filter'] != 'none') $sql.= " AND status = '".$this->db->escape($_POST['filter'])."'"; $sql.= " ORDER BY email"; - // Stocke destinataires dans cibles + // Stocke destinataires dans target $result=$this->db->query($sql); if ($result) { @@ -129,7 +127,7 @@ class mailing_mailinglist_mymodule_myobject extends MailingTargets $obj = $this->db->fetch_object($result); if ($old <> $obj->email) { - $cibles[$j] = array( + $target[$j] = array( 'email' => $obj->email, 'name' => $obj->lastname, 'id' => $obj->id, @@ -162,7 +160,7 @@ class mailing_mailinglist_mymodule_myobject extends MailingTargets // ----- Your code end here ----- - return parent::add_to_target($mailing_id, $cibles); + return parent::add_to_target($mailing_id, $target); } From 85af3ad513121d0158e4a9b5983dda227cc4f0df Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 11 Dec 2018 10:24:57 +0100 Subject: [PATCH 311/349] NEW Unsubscribed emails are now stored in dedicated table --- .../core/modules/mailings/modules_mailings.php | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/htdocs/core/modules/mailings/modules_mailings.php b/htdocs/core/modules/mailings/modules_mailings.php index f7136d4aa63..d3158ba9775 100644 --- a/htdocs/core/modules/mailings/modules_mailings.php +++ b/htdocs/core/modules/mailings/modules_mailings.php @@ -166,7 +166,7 @@ class MailingTargets // This can't be abstract as it is used for some method $this->db->begin(); - // Insert emailing targest from array into database + // Insert emailing targets from array into database $j = 0; $num = count($cibles); foreach ($cibles as $targetarray) @@ -211,6 +211,7 @@ class MailingTargets // This can't be abstract as it is used for some method dol_syslog(get_class($this)."::".__METHOD__.": mailing ".$j." targets added"); + /* //Update the status to show thirdparty mail that don't want to be contacted anymore' $sql = "UPDATE ".MAIN_DB_PREFIX."mailing_cibles"; $sql .= " SET statut=3"; @@ -219,8 +220,6 @@ class MailingTargets // This can't be abstract as it is used for some method dol_syslog(get_class($this)."::".__METHOD__.": mailing update status to display thirdparty mail that do not want to be contacted"); $result=$this->db->query($sql); - - //Update the status to show contact mail that don't want to be contacted anymore' $sql = "UPDATE ".MAIN_DB_PREFIX."mailing_cibles"; $sql .= " SET statut=3"; @@ -228,11 +227,23 @@ class MailingTargets // This can't be abstract as it is used for some method $sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe s ON s.rowid=sc.fk_soc WHERE s.fk_stcomm=-1 OR no_email=1))"; dol_syslog(get_class($this)."::".__METHOD__.": mailing update status to display contact mail that do not want to be contacted",LOG_DEBUG); $result=$this->db->query($sql); + */ + $sql = "UPDATE ".MAIN_DB_PREFIX."mailing_cibles"; + $sql .= " SET statut=3"; + $sql .= " WHERE fk_mailing=".$mailing_id." AND email IN (SELECT mu.email FROM ".MAIN_DB_PREFIX."mailing_unsubscribe AS mu WHERE mu.entity IN ('".getEntity('mailing')."'))"; + + dol_syslog(get_class($this)."::".__METHOD__.":mailing update status to display emails that do not want to be contacted anymore", LOG_DEBUG); + $result=$this->db->query($sql); + if (! $result) + { + dol_print_error($this->db); + } $this->update_nb($mailing_id); $this->db->commit(); + return $j; } From 1226868bd9123c46ff1b58ec2d0a612870d83c98 Mon Sep 17 00:00:00 2001 From: torvista Date: Tue, 11 Dec 2018 10:36:36 +0100 Subject: [PATCH 312/349] missed one --- htdocs/langs/en_US/companies.lang | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang index f457f06043f..effc78166ba 100644 --- a/htdocs/langs/en_US/companies.lang +++ b/htdocs/langs/en_US/companies.lang @@ -20,16 +20,16 @@ IdThirdParty=Id third party IdCompany=Company Id IdContact=Contact Id Contacts=Contacts/Addresses -ThirdPartyContacts=Third party contacts -ThirdPartyContact=Third party contact/address +ThirdPartyContacts=Third-party contacts +ThirdPartyContact=Third-party contact/address Company=Company CompanyName=Company name AliasNames=Alias name (commercial, trademark, ...) AliasNameShort=Alias Name Companies=Companies CountryIsInEEC=Country is inside the European Economic Community -ThirdPartyName=Third Party Name -ThirdPartyEmail=Third party email +ThirdPartyName=Third-Party Name +ThirdPartyEmail=Third-party email ThirdParty=Third Party ThirdParties=Third Parties ThirdPartyProspects=Prospects @@ -79,7 +79,7 @@ DefaultLang=Language default 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 VATIsNotUsed=Sales tax is not used -CopyAddressFromSoc=Copy address from Third Party details +CopyAddressFromSoc=Copy address from Third-Party details ThirdpartyNotCustomerNotSupplierSoNoRef=Third party neither customer nor supplier, no available referring objects ThirdpartyIsNeitherCustomerNorClientSoCannotHaveDiscounts=Third party neither customer nor supplier, discounts are not available PaymentBankAccount=Payment bank account From 4aff0b6471752cd753587dd5f9c89f29f8203a11 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 11 Dec 2018 10:52:59 +0100 Subject: [PATCH 313/349] Fix opensurvey --- htdocs/opensurvey/results.php | 16 +++++++++------- htdocs/public/opensurvey/studs.php | 9 ++++++--- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/htdocs/opensurvey/results.php b/htdocs/opensurvey/results.php index f3fd135f16d..34945504943 100644 --- a/htdocs/opensurvey/results.php +++ b/htdocs/opensurvey/results.php @@ -1050,18 +1050,20 @@ $toutsujet = explode(",", $object->sujet); // With old versions, this field was $compteursujet = 0; $meilleursujet = ''; -for ($i = 0; $i < $nbcolonnes; $i++) { - if (isset($sumfor[$i]) === true && isset($meilleurecolonne) === true && $sumfor[$i] == $meilleurecolonne) { +for ($i = 0; $i < $nbcolonnes; $i++) +{ + if (isset($sumfor[$i]) === true && isset($meilleurecolonne) === true && $sumfor[$i] == $meilleurecolonne) + { $meilleursujet.=", "; if ($object->format == "D") { $meilleursujetexport = $toutsujet[$i]; - + //var_dump($toutsujet); if (strpos($toutsujet[$i], '@') !== false) { $toutsujetdate = explode("@", $toutsujet[$i]); - $meilleursujet .= dol_print_date($toutsujetdate[0],'daytext'). ' ('.dol_print_date($toutsujetdate[0],'%A').')' . ' - ' . $toutsujetdate[1]; + $meilleursujet .= dol_print_date($toutsujetdate[0],'daytext'). ($toutsujetdate[0] ? ' ('.dol_print_date($toutsujetdate[0],'%A').')' : '') . ' - ' . $toutsujetdate[1]; } else { - $meilleursujet .= dol_print_date($toutsujet[$i],'daytext'). ' ('.dol_print_date($toutsujet[$i],'%A').')'; + $meilleursujet .= dol_print_date($toutsujet[$i],'daytext'). ($toutsujet[$i] ? ' ('.dol_print_date($toutsujet[$i],'%A').')' : ''); } } else @@ -1083,9 +1085,9 @@ if ($nbofcheckbox >= 2) print '

'."\n"; if (isset($meilleurecolonne) && $compteursujet == "1") { - print " " . $langs->trans('TheBestChoice') . ": ".$meilleursujet." " . $langs->trans("with") . " ".$meilleurecolonne."" . $vote_str . ".\n"; + print " " . $langs->trans('TheBestChoice') . ": ".$meilleursujet." " . $langs->trans("with") . " ".$meilleurecolonne." " . $vote_str . ".\n"; } elseif (isset($meilleurecolonne)) { - print " " . $langs->trans('TheBestChoices') . ": ".$meilleursujet." " . $langs->trans("with") . " ".$meilleurecolonne."" . $vote_str . ".\n"; + print " " . $langs->trans('TheBestChoices') . ": ".$meilleursujet." " . $langs->trans("with") . " ".$meilleurecolonne." " . $vote_str . ".\n"; } print '


'."\n"; } diff --git a/htdocs/public/opensurvey/studs.php b/htdocs/public/opensurvey/studs.php index a9bd8a0fb70..acf986bb226 100644 --- a/htdocs/public/opensurvey/studs.php +++ b/htdocs/public/opensurvey/studs.php @@ -95,7 +95,7 @@ if (GETPOST('ajoutcomment','alpha')) } // Add vote -if (GETPOST("boutonp") || GETPOST("boutonp.x") || GETPOST("boutonp_x")) // boutonp for chrom, boutonp_x for firefox +if (GETPOST("boutonp") || GETPOST("boutonp.x") || GETPOST("boutonp_x")) // boutonp for chrome, boutonp_x for firefox { if (!$canbemodified) accessforbidden(); @@ -160,9 +160,12 @@ if (GETPOST("boutonp") || GETPOST("boutonp.x") || GETPOST("boutonp_x")) // bout if ($email) { include_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'; - $body = $langs->trans('EmailSomeoneVoted', $nom, getUrlSondage($numsondage, true)); + $application = ($conf->global->MAIN_APPLICATION_TITLE ? $conf->global->MAIN_APPLICATION_TITLE : 'Dolibarr ERP/CRM'); - $cmailfile=new CMailFile("[".MAIN_APPLICATION_TITLE."] ".$langs->trans("Poll").': '.$object->titre, $email, $conf->global->MAIN_MAIL_EMAIL_FROM, $body); + $body = str_replace('\n', '
', $langs->transnoentities('EmailSomeoneVoted', $nom, getUrlSondage($numsondage, true))); + //var_dump($body);exit; + + $cmailfile=new CMailFile("[".$application."] ".$langs->trans("Poll").': '.$object->titre, $email, $conf->global->MAIN_MAIL_EMAIL_FROM, $body, null, null, null, '', '', 0, -1); $result=$cmailfile->sendfile(); } } From 760dcf21ba83a94ddcc4e260c3d488671c6857f6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 11 Dec 2018 13:47:39 +0100 Subject: [PATCH 314/349] FIX Missing generic css --- htdocs/theme/eldy/style.css.php | 8 ++++++++ htdocs/theme/md/style.css.php | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 05fd488e948..4a36fa4a197 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -1823,6 +1823,14 @@ foreach($mainmenuusedarray as $val) print "}\n"; } } +$j=0; +while ($j++ < 4) +{ + $url=dol_buildpath($path.'/theme/'.$theme.'/img/menus/generic'.$j."_over.png",1); + print "div.mainmenu.generic".$j." {\n"; + print " background-image: url(".$url.");\n"; + print "}\n"; +} // End of part to add more div class css ?> diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 3422135628c..7e4d8ec11d2 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1828,6 +1828,14 @@ foreach($mainmenuusedarray as $val) print "}\n"; } } +$j=0; +while ($j++ < 4) +{ + $url=dol_buildpath($path.'/theme/'.$theme.'/img/menus/generic'.$j."_over.png",1); + print "div.mainmenu.generic".$j." {\n"; + print " background-image: url(".$url.");\n"; + print "}\n"; +} // End of part to add more div class css ?> From 250725663d705b0e1cadc3f543b424bd33edfa9f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 11 Dec 2018 13:47:39 +0100 Subject: [PATCH 315/349] FIX Missing generic css --- htdocs/theme/eldy/style.css.php | 8 ++++++++ htdocs/theme/md/style.css.php | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 05fd488e948..4a36fa4a197 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -1823,6 +1823,14 @@ foreach($mainmenuusedarray as $val) print "}\n"; } } +$j=0; +while ($j++ < 4) +{ + $url=dol_buildpath($path.'/theme/'.$theme.'/img/menus/generic'.$j."_over.png",1); + print "div.mainmenu.generic".$j." {\n"; + print " background-image: url(".$url.");\n"; + print "}\n"; +} // End of part to add more div class css ?> diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 3422135628c..7e4d8ec11d2 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1828,6 +1828,14 @@ foreach($mainmenuusedarray as $val) print "}\n"; } } +$j=0; +while ($j++ < 4) +{ + $url=dol_buildpath($path.'/theme/'.$theme.'/img/menus/generic'.$j."_over.png",1); + print "div.mainmenu.generic".$j." {\n"; + print " background-image: url(".$url.");\n"; + print "}\n"; +} // End of part to add more div class css ?> From 98c14efa78ef9e1c8fdc3629dbd6d9835cae8cfd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 11 Dec 2018 14:10:20 +0100 Subject: [PATCH 316/349] Fix missing picto --- htdocs/theme/md/img/menus/generic1.png | Bin 133 -> 570 bytes htdocs/theme/md/img/menus/generic1_over.png | Bin 0 -> 486 bytes htdocs/theme/md/img/menus/generic2.png | Bin 133 -> 570 bytes htdocs/theme/md/img/menus/generic2_over.png | Bin 0 -> 548 bytes htdocs/theme/md/img/menus/generic3.png | Bin 133 -> 570 bytes htdocs/theme/md/img/menus/generic3_over.png | Bin 0 -> 486 bytes htdocs/theme/md/img/menus/generic4.png | Bin 133 -> 570 bytes htdocs/theme/md/img/menus/generic4_over.png | Bin 0 -> 486 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 htdocs/theme/md/img/menus/generic1_over.png create mode 100644 htdocs/theme/md/img/menus/generic2_over.png create mode 100644 htdocs/theme/md/img/menus/generic3_over.png create mode 100644 htdocs/theme/md/img/menus/generic4_over.png diff --git a/htdocs/theme/md/img/menus/generic1.png b/htdocs/theme/md/img/menus/generic1.png index b51ce3ed95a437af48d672cb4b8494807587c080..39f808bed32f27c7d591d2e68e170ee96468356b 100644 GIT binary patch literal 570 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?`XeJfkzEgKWroxlsyxRP*3bOO7PRLHVh5B4-HKdZBWO-EYDbZd43|BdSh)=a+78s?*nvSYh+ zU}C;r_LJ=m#t*JspB8eYAv1UOst3<6w%?Jr``y57dsb_9$Bcwvmpqr0XqTk6}LjodY}Ekti%cR>yn?%_pxT%nIX%f*6>cC^FE{avej=wKQ5T|;QOML@*NQhbFNQ4 z%Ovl}R%N=6&8<;SS2<+gW__moeV>+2J8AoU%F7emC4b5vbQIsgZ7L84igiy{KbLh* G2~7Z_uj}Ff literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1A5Ry@5R21q&u~5;q+UmdnXs1e(j>>FVdQ&MBb@07N}3VE_OC diff --git a/htdocs/theme/md/img/menus/generic1_over.png b/htdocs/theme/md/img/menus/generic1_over.png new file mode 100644 index 0000000000000000000000000000000000000000..adfa8c1599b9c2b74e15d0b86e5cba6dfbe8587a GIT binary patch literal 486 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?if!v#l>^8Umr0u{387!;VsMgq7~=$b(UP6Ti&X<-Ic9C+F;Y{zHhH(ZWm89 z3enS95<2PAi4Rh%W-jU7DjcHrP2JRVZR673pv%RM+l|9#&F@dre(}3~uc2+(y|q>o zSN=@hJ%Ks=`L^vZfBl~OUQ71gLp0RRbAQf+%&Ag!oIW1&b8c-9S29YA>}TFO(=_0c za_q<6wLg6p+6d2FexA>UH^(@QHU6@+edKJh%=KRtd(-Qty!`N==O6Q5>Ds50%W@q- OG34p$=d#Wzp$PyNUC@aD literal 0 HcmV?d00001 diff --git a/htdocs/theme/md/img/menus/generic2.png b/htdocs/theme/md/img/menus/generic2.png index b51ce3ed95a437af48d672cb4b8494807587c080..f4dfc5f360a87341fd9e6a59f10bc733c68028ee 100644 GIT binary patch literal 570 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?&`c`6eW&h%Oob=M$&=N7_nyQF`MYFDKH7{u|d1teJeDHOzV1N9zqM z4n`>NXMA%dQ{Ijt+067mm&j|Ef2Y5-*|JPJP<7%+vEws?slG9?#~Vd9FdWgDWXE>t zz{GsL>?hkBj2~RNJ}u-(LuT&mRS%wDY`-IK_q&1F_N>WTt$*DX8t25R&EpBcJeij|| z+0P6F^*;N7S&0+s*Cjuj?_K+O=Y2-;WvkzWeq1o^!S_Wg~5;q+UmdnXs1e(j>>FVdQ&MBb@07N}3VE_OC diff --git a/htdocs/theme/md/img/menus/generic2_over.png b/htdocs/theme/md/img/menus/generic2_over.png new file mode 100644 index 0000000000000000000000000000000000000000..c8e58fc222091713ae13ff57f13fef53b96a4511 GIT binary patch literal 548 zcmV+<0^9wGP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0UbDk&Ws2E00E>)L_t(o!|j>dO~Wu0hQ9z(ctC0e0}#XjWCOYZY*5&s8_*398)SsC zLD?YPpnV2J5lH2JcsZ3Kgo>RwH|irDwY3`iv;F(G>jol1TVsP3hlj5#wo0nE3&i?< zs@W*`o@S&O1093sCcqpRYp2G!J0~JG*%OgOMCRf)QV|)5NY{oZu&~Mm=$9?%k4V-H`#&hw(Pdav@NjFJB>LX}>qKPkgMI`gT3 mU;4Tz(s%A_P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0UsIsk^a;G00Fv5L_t(o!|jQgSZP0byDzW z=znlk2M2#a9qg*8pt#sU1S<#%R*Q?Z9tY2GDPnWm+qP#`_J%zKlE8Y%#B)LBFqKVQ9mjzb zumHp?l0F8~z>#k*Yvi|pGvL(MmQ=)mX>FUT;OEhY+#f#sfCD|vDw~LyU{geHL}Xh; zVuoXaVnsyKI*-v9Q_X+thFwx*ffL{yxCIJTNM%GZ3CsgM+FrE1VM}FBhZHGa+ohHT z4bE@9z_8W_6y+B9Gz*&f|7_G(pQ+H-%CQ?H^PjEyS6Qm#N2(#RY3j^7**Mv>Q|4P* z^G-HSHcmD!^G@?lHcmESkbkaY=ATSE2DxY*1SWv)5Q*Ob7pAN1Rq>#f;P;}bABb2W zoY$4j0v|yJdNsZVMu9FZBUHY#F9L7A@}-u^J@=I9$hR5!AHhKvxC=E9UH||907*qo IM6N<$f;5xuNdN!< literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1A5Ry@5R21q&u~5;q+UmdnXs1e(j>>FVdQ&MBb@07N}3VE_OC diff --git a/htdocs/theme/md/img/menus/generic3_over.png b/htdocs/theme/md/img/menus/generic3_over.png new file mode 100644 index 0000000000000000000000000000000000000000..0672d20bce4bb1776f71dc8038e32a8382f5ae87 GIT binary patch literal 486 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?5iL3@)IZ1~;#a?Jzp;5@B{K!=^C8I!mt3EpOG_?#fmmZLn!}-?!H?w~Hql zh3M%l37z!m#0RNWGne#k6%JARrfzDwwsC21(B)#s?Z)A==JzLQzxdt0*U+}?-dd}P zD}Sc$p1>UbeB1VyzkbhsuO)l$AsTAuxj$z@=2WRVP9Kl?Ik&clD;cFl_A_stX&P`z zIrd}k+MhlPZG>koKhI~wn`4~D8h=^ZK618L=K8OSz3FvRUViw`^N;zjbnVm0Wx0-^ O81i)Wb6Mw<&;$S`U(e_O literal 0 HcmV?d00001 diff --git a/htdocs/theme/md/img/menus/generic4.png b/htdocs/theme/md/img/menus/generic4.png index b51ce3ed95a437af48d672cb4b8494807587c080..5f9240240da3f037ca1918367f6b6489b972c260 100644 GIT binary patch literal 570 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?&`c`6eW&h%Oob=M$&=N7_nyQF`MYFDKH7{u|d1teJeDHOzV1N9zqM z4n`>NXMA%dQ{Ijt+067mm&j|Ef2Y5-*|JPJP<7%+vEws?slG9?#~Vd9FdWgDWXE>t zz{GsL>?hkBj2~RNJ}u-(LuT&mRS%wDY`-IK_q&1F_N>WTt$*DX8t25R&EpBcJeij|| z+0P6F^*;N7S&0+s*Cjuj?_K+O=Y2-;WvkzWeq1o^!S_Wg~5;q+UmdnXs1e(j>>FVdQ&MBb@07N}3VE_OC diff --git a/htdocs/theme/md/img/menus/generic4_over.png b/htdocs/theme/md/img/menus/generic4_over.png new file mode 100644 index 0000000000000000000000000000000000000000..6a4d7b1acce5db322cde66f1e2fad71876449e3f GIT binary patch literal 486 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?5iL3@)IZ1~;#a?Jzp;5@B{K!=^C8I!mt3EpOG_?#fmmZLn!}-?!H?w~Hql zh3M%l37z!m#0RNWGne#k6%JARrfzDwwsC21(B)#s?Z)A==JzLQzxdt0*U+}?-dd}P zD}Sc$p1>UbeB1VyzkbhsuO)l$AsTAuxj$z@=2WRVP9Kl?Ik&clD;cFl_A_stX&P`z zIrd}k+MhlPZG>koKhI~wn`4~D8h=^ZK618L=K8OSz3FvRUViw`^N;zjbnVm0Wx0-^ O81i)Wb6Mw<&;$Tu*w1GG literal 0 HcmV?d00001 From 024e1673e36d2d5a1aa919bac5639d1ff008197d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 11 Dec 2018 18:18:47 +0100 Subject: [PATCH 317/349] Fix merge lost --- htdocs/ticket/class/ticket.class.php | 54 +++++++++++----------------- 1 file changed, 21 insertions(+), 33 deletions(-) diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index 2ac28f6b81b..655fc7eeeaa 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -1495,15 +1495,17 @@ class Ticket extends CommonObject * 1- create entry into database for message storage * 2- if trigger, send an email to ticket contacts * - * @param User $user User that create - * @param string $message Log message - * @param int $noemail 0=send email after, 1=disable emails - * @return int <0 if KO, >0 if OK + * @param User $user User that create + * @param string $message Log message + * @param int $noemail 0=send email after, 1=disable emails + * @return int <0 if KO, >0 if OK */ public function createTicketLog(User $user, $message, $noemail = 0) { global $conf, $langs; + $error = 0; + $this->db->begin(); // Clean parameters @@ -1515,37 +1517,23 @@ class Ticket extends CommonObject return -1; } - // Insert request - $sql = "INSERT INTO " . MAIN_DB_PREFIX . "ticket_logs("; - $sql .= "entity,"; - $sql .= "datec,"; - $sql .= "fk_track_id,"; - $sql .= "fk_user_create,"; - $sql .= "message"; - $sql .= ") VALUES ("; - $sql .= " " . $conf->entity . ","; - $sql .= " '" . $this->db->idate(dol_now()) . "',"; - $sql .= " '" . $this->db->escape($this->track_id) . "',"; - $sql .= " " . ($user->id > 0 ? $user->id : 'NULL') . ","; - $sql .= " '" . $this->db->escape($message) . "'"; - $sql .= ")"; + // TODO Should call the trigger TICKET_MODIFY with $this->context with all data to record event + // so the event is stored by the agenda/event trigger - dol_syslog(get_class($this) . "::create_ticket_log sql=" . $sql, LOG_DEBUG); - $resql = $this->db->query($sql); - if ($resql) { - if ($conf->global->TICKET_ACTIVATE_LOG_BY_EMAIL && !$noemail) { - $this->sendLogByEmail($user, $message); - } + if (!$error) { + $this->db->commit(); - if (!$error) { - $this->db->commit(); - return 1; - } - } else { - $this->db->rollback(); - $this->error = "Error " . $this->db->lasterror(); - dol_syslog(get_class($this) . "::create_ticket_log " . $this->error, LOG_ERR); - return -1; + if ($conf->global->TICKET_ACTIVATE_LOG_BY_EMAIL && !$noemail) { + $this->sendLogByEmail($user, $message); + } + + return 1; + } + else + { + $this->db->rollback(); + + return -1; } } From 919443a101fdfea3349f468193a34488aa4846b3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 11 Dec 2018 18:23:45 +0100 Subject: [PATCH 318/349] Fix merge lost --- htdocs/ticket/class/ticket.class.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index 655fc7eeeaa..3bd35199d2f 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -1643,6 +1643,8 @@ class Ticket extends CommonObject } // Cache deja charge + // TODO Read the table llx_actioncomm + /* $sql = "SELECT rowid, fk_user_create, datec, message"; $sql .= " FROM " . MAIN_DB_PREFIX . "ticket_logs"; $sql .= " WHERE fk_track_id ='" . $this->db->escape($this->track_id) . "'"; @@ -1665,7 +1667,9 @@ class Ticket extends CommonObject $this->error = "Error " . $this->db->lasterror(); dol_syslog(get_class($this) . "::loadCacheLogsTicket " . $this->error, LOG_ERR); return -1; - } + }*/ + + return 0; } /** From 2abb2f054dcb9639d1dd46e702f8409aa4a55583 Mon Sep 17 00:00:00 2001 From: torvista Date: Tue, 11 Dec 2018 23:12:08 +0100 Subject: [PATCH 319/349] Fix conflict --- htdocs/langs/en_US/errors.lang | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index 8e43cc4a7a4..3a60fbfe98d 100644 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -213,6 +213,8 @@ ErrorNoteAlsoThatSubProductCantBeFollowedByLot=Note also that using virtual prod ErrorDescRequiredForFreeProductLines=Description is mandatory for lines with free product ErrorAPageWithThisNameOrAliasAlreadyExists=The page/container %s has the same name or alternative alias that the one your try to use ErrorDuringChartLoad=Error when loading chart of accounts. If few accounts were not loaded, you can still enter them manually. +ErrorBadSyntaxForParamKeyForContent=Bad syntax for param keyforcontent. Must have a value starting with %s or %s +ErrorVariableKeyForContentMustBeSet=Error, the constant with name %s (with text content to show) or %s (with external url to show) must be set. # Warnings WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user. WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined @@ -222,7 +224,7 @@ WarningPassIsEmpty=Warning, database password is empty. This is a security hole. WarningConfFileMustBeReadOnly=Warning, your config file (htdocs/conf/conf.php) can be overwritten by the web server. This is a serious security hole. Modify permissions on file to be in read only mode for operating system user used by Web server. If you use Windows and FAT format for your disk, you must know that this file system does not allow to add permissions on file, so can't be completely safe. WarningsOnXLines=Warnings on %s source record(s) WarningNoDocumentModelActivated=No model, for document generation, has been activated. A model will be chosen by default until you check your module setup. -WarningLockFileDoesNotExists=Warning, once setup is finished, you must disable the install/migration tools by adding a file install.lock into directory %s. Omitting the creation of this file is a grave security risk. +WarningLockFileDoesNotExists=Warning, once setup is finished, you must disable the installation/migration tools by adding a file install.lock into directory %s. Omitting the creation of this file is a grave security risk. 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). WarningCloseAlways=Warning, closing is done even if amount differs between source and target elements. Enable this feature with caution. WarningUsingThisBoxSlowDown=Warning, using this box slow down seriously all pages showing the box. @@ -235,3 +237,4 @@ WarningYourLoginWasModifiedPleaseLogin=Your login was modified. For security pur WarningAnEntryAlreadyExistForTransKey=An entry already exists for the translation key for this language WarningNumberOfRecipientIsRestrictedInMassAction=Warning, number of different recipient is limited to %s when using the mass actions on lists WarningDateOfLineMustBeInExpenseReportRange=Warning, the date of line is not in the range of the expense report +WarningProjectClosed=Project is closed. You must re-open it first. \ No newline at end of file From 946d55a7bb9c1b3b3724923c3a9ef5bcc5fafeab Mon Sep 17 00:00:00 2001 From: BENKE Charlene <1179011+defrance@users.noreply.github.com> Date: Wed, 12 Dec 2018 00:41:11 +0100 Subject: [PATCH 320/349] fk_default_warehouse not defined --- htdocs/product/class/product.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 6d3a0724006..ae6d193b80f 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -310,6 +310,7 @@ class Product extends CommonObject public $oldcopy; + public $fk_default_warehouse; /** * @var int ID */ From 13f54766781cd961651a0d0314249ba69d75c71f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Dec 2018 11:50:10 +0100 Subject: [PATCH 321/349] Responsive --- htdocs/admin/mails_templates.php | 82 ++++++++++++++++---------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/htdocs/admin/mails_templates.php b/htdocs/admin/mails_templates.php index a9068544e35..79614cbd3a0 100644 --- a/htdocs/admin/mails_templates.php +++ b/htdocs/admin/mails_templates.php @@ -448,8 +448,6 @@ $sql.=$db->plimit($listlimit+1,$offset); $fieldlist=explode(',',$tabfield[$id]); // Form to add a new line -$alabelisused=0; - print ''; print ''; print ''; @@ -461,38 +459,37 @@ print ''; print ''; foreach ($fieldlist as $field => $value) { - // Determine le nom du champ par rapport aux noms possibles - // dans les dictionnaires de donnees - $valuetoshow=ucfirst($fieldlist[$field]); // Par defaut - $valuetoshow=$langs->trans($valuetoshow); // try to translate - $align="left"; - if ($fieldlist[$field]=='fk_user') { $valuetoshow=$langs->trans("Owner");} - if ($fieldlist[$field]=='lang') { $valuetoshow=(empty($conf->global->MAIN_MULTILANGS) ? ' ' : $langs->trans("Language")); } - if ($fieldlist[$field]=='type') { $valuetoshow=$langs->trans("Type"); } - if ($fieldlist[$field]=='code') { $valuetoshow=$langs->trans("Code"); } - if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label') { $valuetoshow=$langs->trans("Code"); } - if ($fieldlist[$field]=='type_template') { $valuetoshow=$langs->trans("TypeOfTemplate"); } - if ($fieldlist[$field]=='private') { $align='center'; } - if ($fieldlist[$field]=='position') { $align='center'; } + // Determine le nom du champ par rapport aux noms possibles + // dans les dictionnaires de donnees + $valuetoshow=ucfirst($fieldlist[$field]); // Par defaut + $valuetoshow=$langs->trans($valuetoshow); // try to translate + $align="left"; + if ($fieldlist[$field]=='fk_user') { $valuetoshow=$langs->trans("Owner");} + if ($fieldlist[$field]=='lang') { $valuetoshow=(empty($conf->global->MAIN_MULTILANGS) ? ' ' : $langs->trans("Language")); } + if ($fieldlist[$field]=='type') { $valuetoshow=$langs->trans("Type"); } + if ($fieldlist[$field]=='code') { $valuetoshow=$langs->trans("Code"); } + if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label') { $valuetoshow=$langs->trans("Code"); } + if ($fieldlist[$field]=='type_template') { $valuetoshow=$langs->trans("TypeOfTemplate"); } + if ($fieldlist[$field]=='private') { $align='center'; } + if ($fieldlist[$field]=='position') { $align='center'; } - if ($fieldlist[$field]=='topic') { $valuetoshow=''; } - if ($fieldlist[$field]=='joinfiles') { $valuetoshow=''; } - if ($fieldlist[$field]=='content') { $valuetoshow=''; } - if ($fieldlist[$field]=='content_lines') { $valuetoshow=''; } + if ($fieldlist[$field]=='topic') { $valuetoshow=''; } + if ($fieldlist[$field]=='joinfiles') { $valuetoshow=''; } + if ($fieldlist[$field]=='content') { $valuetoshow=''; } + if ($fieldlist[$field]=='content_lines') { $valuetoshow=''; } - if ($valuetoshow != '') - { - print ''; - } - if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label') $alabelisused=1; + if ($valuetoshow != '') + { + print ''; + } } print ''; print ""; +// Show fields for topic, join files and body $fieldsforcontent = array('topic', 'joinfiles', 'content'); if (! empty($conf->global->MAIN_EMAIL_TEMPLATES_FOR_OBJECT_LINES)) { $fieldsforcontent = array('content','content_lines'); } foreach ($fieldsforcontent as $tmpfieldlist) @@ -631,11 +629,11 @@ if ($resql) $filterfound=0; foreach ($fieldlist as $field => $value) { - if ($value == 'label') print ''; + if ($value == 'label') print ''; elseif ($value == 'lang') { print ''; } elseif ($value == 'fk_user') @@ -644,13 +642,13 @@ if ($resql) $restrictid=array(); if (! $user->admin) $restrictid=array($user->id); //var_dump($restrictid); - print $form->select_dolusers($search_fk_user, 'search_fk_user', 1, null, 0, 'hierarchyme', null, 0, 0, 1, '', 0, '', 'maxwidth200'); + print $form->select_dolusers($search_fk_user, 'search_fk_user', 1, null, 0, 'hierarchyme', null, 0, 0, 1, '', 0, '', 'maxwidth100'); print ''; } elseif ($value == 'topic') print ''; elseif ($value == 'type_template') { - print ''; + print ''; } elseif (! in_array($value, array('content', 'content_lines'))) print ''; } @@ -672,6 +670,7 @@ if ($resql) $align="left"; $sortable=1; $valuetoshow=''; + $forcenowrap=1; /* $tmparray=getLabelOfField($fieldlist[$field]); $showfield=$tmp['showfield']; @@ -689,7 +688,7 @@ if ($resql) if ($fieldlist[$field]=='private') { $align='center'; } if ($fieldlist[$field]=='position') { $align='center'; } - if ($fieldlist[$field]=='joinfiles') { $valuetoshow=$langs->trans("FilesAttachedToEmail"); $align='center'; } + if ($fieldlist[$field]=='joinfiles') { $valuetoshow=$langs->trans("FilesAttachedToEmail"); $align='center'; $forcenowrap=0; } if ($fieldlist[$field]=='content') { $valuetoshow=$langs->trans("Content"); $showfield=0;} if ($fieldlist[$field]=='content_lines') { $valuetoshow=$langs->trans("ContentLines"); $showfield=0; } @@ -698,8 +697,8 @@ if ($resql) { if (! empty($tabhelp[$id][$value])) { - if (in_array($value, array('topic'))) $valuetoshow = $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2, 'tooltip'.$value); // Tooltip on click - else $valuetoshow = $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2, '', 1); // Tooltip on hover + if (in_array($value, array('topic'))) $valuetoshow = $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2, 'tooltip'.$value, $forcenowrap); // Tooltip on click + else $valuetoshow = $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2, '', $forcenowrap); // Tooltip on hover } print getTitleFieldOfList($valuetoshow, 0, $_SERVER["PHP_SELF"], ($sortable?$fieldlist[$field]:''), ($page?'page='.$page.'&':''), $param, "align=".$align, $sortfield, $sortorder); } @@ -1024,17 +1023,18 @@ function fieldList($fieldlist, $obj='', $tabname='', $context='') } else { - print $form->selectarray('type_template', $elementList, (! empty($obj->{$fieldlist[$field]})?$obj->{$fieldlist[$field]}:''), 1, 0, 0, '', 0, 0, 0, '', 'maxwidth200'); + print $form->selectarray('type_template', $elementList, (! empty($obj->{$fieldlist[$field]})?$obj->{$fieldlist[$field]}:''), 1, 0, 0, '', 0, 0, 0, '', 'maxwidth150 maxwidth100onsmartphone'); } print ''; } - elseif ($context == 'add' && in_array($fieldlist[$field], array('topic', 'joinfiles', 'content', 'content_lines'))) continue; + elseif ($context == 'add' && in_array($fieldlist[$field], array('topic', 'joinfiles', 'content', 'content_lines'))) continue; elseif ($context == 'edit' && in_array($fieldlist[$field], array('topic', 'joinfiles', 'content', 'content_lines'))) continue; elseif ($context == 'hide' && in_array($fieldlist[$field], array('topic', 'joinfiles', 'content', 'content_lines'))) continue; else { $size=''; $class=''; $classtd=''; if ($fieldlist[$field]=='code') $class='maxwidth100'; + if ($fieldlist[$field]=='label') $class='maxwidth100'; if ($fieldlist[$field]=='private') { $class='maxwidth50'; $classtd='center'; } if ($fieldlist[$field]=='position') { $class='maxwidth50'; $classtd='center'; } if ($fieldlist[$field]=='libelle') $class='quatrevingtpercent'; From c09d454938d71580b260904ede1a5886e634cba9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Dec 2018 12:16:57 +0100 Subject: [PATCH 322/349] Fix status in cron task list --- htdocs/cron/list.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/cron/list.php b/htdocs/cron/list.php index 2ddfbee5e8c..c89cfe1895d 100644 --- a/htdocs/cron/list.php +++ b/htdocs/cron/list.php @@ -230,6 +230,7 @@ $sql.= " t.params,"; $sql.= " t.md5params,"; $sql.= " t.module_name,"; $sql.= " t.priority,"; +$sql.= " t.processing,"; $sql.= " t.datelastrun,"; $sql.= " t.datenextrun,"; $sql.= " t.dateend,"; @@ -418,10 +419,9 @@ print "\n"; if ($num > 0) { // Loop on each job - $style='pair'; $now = dol_now(); $i=0; - $totalarray=array(); + while ($i < min($num,$limit)) { $obj = $db->fetch_object($result); @@ -434,6 +434,7 @@ if ($num > 0) $object->label = $obj->label; $object->status = $obj->status; $object->priority = $obj->priority; + $object->processing = $obj->processing; print ''; From 58175b76f26744c34eabd773900c8d12d85aa309 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Wed, 12 Dec 2018 12:17:28 +0100 Subject: [PATCH 323/349] to avoid html issue --- htdocs/core/class/commondocgenerator.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/commondocgenerator.class.php b/htdocs/core/class/commondocgenerator.class.php index e3350dbe14a..93b18e97641 100644 --- a/htdocs/core/class/commondocgenerator.class.php +++ b/htdocs/core/class/commondocgenerator.class.php @@ -1028,7 +1028,7 @@ abstract class CommonDocGenerator if(empty($columnText)) return; $pdf->SetXY($this->getColumnContentXStart($colKey),$curY); // Set curent position $colDef = $this->cols[$colKey]; - $pdf->MultiCell( $this->getColumnContentWidth($colKey),2, $columnText,'',$colDef['content']['align']); + $pdf->writeHTMLCell( $this->getColumnContentWidth($colKey),2,$this->getColumnContentXStart($colKey),$curY, $columnText,'',$colDef['content']['align']); } } From a31c4aff524627061e99dad50da2462f7a930234 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Dec 2018 12:21:02 +0100 Subject: [PATCH 324/349] Fix picto for status of cron task --- htdocs/cron/class/cronjob.class.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/cron/class/cronjob.class.php b/htdocs/cron/class/cronjob.class.php index df640576d9a..6873bff157e 100644 --- a/htdocs/cron/class/cronjob.class.php +++ b/htdocs/cron/class/cronjob.class.php @@ -1338,22 +1338,22 @@ class Cronjob extends CommonObject } elseif ($mode == 2) { - if ($status == 1) return img_picto($langs->trans('Enabled'),'statut4','class="pictostatus"').' '.$langs->trans('Enabled').$moretext; + if ($status == 1) return img_picto($langs->trans('Enabled'),'statut'.($processing?'1':'4'),'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').$moretext,'statut4','class="pictostatus"'); + if ($status == 1) return img_picto($langs->trans('Enabled').$moretext,'statut'.($processing?'1':'4'),'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').$moretext,'statut4','class="pictostatus"').' '.$langs->trans('Enabled').$moretext; + if ($status == 1) return img_picto($langs->trans('Enabled').$moretext,'statut'.($processing?'1':'4'),'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').$moretext.' '.img_picto($langs->trans('Enabled').$moretext,'statut4','class="pictostatus"'); + if ($status == 1) return $langs->trans('Enabled').$moretext.' '.img_picto($langs->trans('Enabled').$moretext,'statut'.($processing?'1':'4'),'class="pictostatus"'); elseif ($status == 0) return $langs->trans('Disabled').$moretext.' '.img_picto($langs->trans('Disabled').$moretext,'statut5','class="pictostatus"'); } } From ea041693b62efb9397627457fc1b95eb0acd3171 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Dec 2018 12:54:10 +0100 Subject: [PATCH 325/349] Code comment --- htdocs/install/mysql/tables/llx_links.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/tables/llx_links.sql b/htdocs/install/mysql/tables/llx_links.sql index 4d4ab401ba4..7e9fba8e2c5 100644 --- a/htdocs/install/mysql/tables/llx_links.sql +++ b/htdocs/install/mysql/tables/llx_links.sql @@ -15,7 +15,7 @@ -- along with this program. If not, see . -- -- --- Actions commerciales +-- Table to store external URL links to documents -- ======================================================================== create table llx_links From 95660f0671e3379b74c29779b44f56b845c5b062 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Dec 2018 13:01:15 +0100 Subject: [PATCH 326/349] Update Dolibarr schema --- dev/resources/dbmodel/dolibarr_schema.mwb | Bin 296494 -> 279274 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dev/resources/dbmodel/dolibarr_schema.mwb b/dev/resources/dbmodel/dolibarr_schema.mwb index aec0f2d22990c878c2492245549c35213b42d7a5..80d1d612d6555a603e2e33aa7782871e618ba5ef 100644 GIT binary patch literal 279274 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 Km|yf*H zcbX>O*KwJF|H~G*_ce2J_J8Drlr5cV=1jD>v|V`TVi1cr9wI6w12x&@q$9OO+PaiZ z+4lLJW&CH?R#KxnHzqkq;cD00t;rgUJN6cn6X0r*Ix1M>l&&5^gx8aziK_r7q$ie~ zAXcy6^giFS^ML8hY{9o)D=v`trmH1?=IjK}-wR{E{X#p7f6tZ}eW%Yqs>nlT@lf~S zs49Pz%)`c+`qhtM`rlq_!LTmNm_B+Yyq_{^ZUj?CBOr z&%3{G>1}*ia?>$M=0ysSS~AX9wOe9#iRZH+y_*pz#Z?_R-hb$%%ql7+)67|C&+&FI zb!)gOdKyiF&{FnRSc$n7Xw@3vt0%U`Im?BIb^?Cvz|{g0g(V`1zDU-??qHf@<|;!E z@t|FmzJ45ZLpVlUcilLa+a45<3JNG0*}UtfZ_z$Nc~#nQ^a@7lU^F{ZR@$2^I}=L@ zGdnYp-tEcU7=6%}bQRSTSRG~FPjj}~o3`4^sJMC8;E<QoXONk(Ux@={Atgw)@)$pMT?y)6G4mm z_xeK?!~xk=H1)kAkFPr_BP9q#_B41Qg;$VnF+{f_Xzn(+Hy zDEQS2KN(J1biO|)^jSK54v!*p-25r(lQN@afeiqdyMm!jh*l?M7e-RcEz)vFh}*lJ zcF?re2O!J#JO+vMlRs>b=IEp-Fv=5%TlATWcD8AS*X5KoQ|}&l_D-h-#;w7(>PzO1 zf^J+3%OqgLPr3bHL$P*WWVkQy{38`>>igX5*FKkeOCyVOnq-6c=5eDZ?_sF~2N)|K zS@flUvgmvN$)am7Ct91g)h-SF7J9`<3^Y`{VMLdRUH4SghQ$wDdCe^HXhb833q0Zjmd!a`Ue*bQxk<0p!%ln&I zib(%9r~Y|E{VdO%W9Y{Hx7S8jRUs7kNP*lFAS85t98D`!-Ot86&s@jww0zW7ga&|* z6}9bVYAfq<-5U-e_eJU)GlTUdZ}Y_@JtJm%Gw}c`evAGB zh~Xp0G}7Pwe?UPY^aQa@$#-9 zLw_X!{sUa`f<%fvn%$m32}zV7Y?1$kT;V``YPio;f+HU;+|eP-=mX$uhSC)XFbweC zkA@E;wwx_|uyYnynaTCilJ}L0_`FRIWlGnv>eJ5_?}tpo683g>pK)h;(k}-7Y(Qkk z{9*wnR*M~@;zWEN9|7B0!KY|!Ky%Jxzof|ZKMCHe?`o=!$5&3GJwjQgu}+Y;#13Fx@Q zp%x&JF;)Xat+Q(;21G|Cua1!alYQ*v7&}NdL_<7|D#K!re1c!}lRA~{%(m5Gv$b}? z$JVa^@IkaKu?Og=bfDvq9!~Z!`7$wdY~pBo&JFm=4BHM-6`8zmpN__!-2H)%?tZ6# zxclD#?tYKI-TfKcobY*q8J}MaL0Q7r~QS;?C$z2?#QjC zf!X1^pIX0YO##C{{W}}y&ffUZ@zXF;#7VE0p5zI$b(@D*ySj5>&@8R#+GaQY!z|eQ zl=G=W?pwyzl^>Xz))D_~L_ict(!CCs1EK2KXM=zG3s;W*&0p98WM=LuvLf=4FPoBv zyE6Z6iht%f`{U1(w0HIDR=@R!)%AYaEm#f3*_||paB=1R?vu2)_SR!w)a8o*Rga$g zTE#^-*T0ff8bba(N#!ql;m}0WXX(VA>WYEZ6nQ}!tycVGpSMiiXLW``nVT)&ByQh) zMsjw@6pgf>bvBbltf>wPEOU-iC?{_lDpBi+U3^}K~egJxe+PO9qQ zf3_Y8q2}Pu-WBgdr_W!u(H59Uzpl{zT=WagK1K3kj?utwE&P<;h0tUU=^#2V&XlgY zxal;A7rm5aPC-ua=YElJ(1(dLsjX(Dvww&&YXSUKW!IgD$F2uITh_EH`6B|ed(nE8 zg8uIe#M=AJOV;;s8L5lSPu8Omo^E)o>fBBz-DtE!O?vNj#0PY>v@no4Cv52ZKOCNs z@qT?HgBGD(8lKW=ArDx2=!&vsgjiQ0lacD!dDiz6SDIX85cw+oA~8Z zOIC6RFNYcsQk7n-!4d0jkX!oECQ&u9KCf<{TXz0jQZliAzqpQt%8##ToL3}!GIPAX zt75!f2z7|XMowkUb!EJse40g`!A4GbE_j?bu|7?IE;)o)b{@c5C1vOF^f--@<$B=E zD&>-&oIyZVLpnnj$d3EI5FU zD_|@FrWu+0f+`dW9gSF_aRfqqm7w_b zbuK7fz`BzxB87KxmEMR&AHbjMmPV0-tw40iNq-16b1M)`Y0q83xzx<`eu0&*_Xa7M z*xG^q3e0O-h2a0yU-2J(7BI*Sx*0Ir(xb6_U$Qw}*Dnh<9BoR9A4f;#S;oeXUio6c zE5A#zEzUMghwP5Yy$&F*8d!}pPF|)I_`YjI#V!;aO@}*&NZxRNKgDI7H2FrO(KQi8#NXntj`z>>xDf^2M3tY)8)j> zln+MT>`4T(-&SC}pp$C0X2M8;N-50tcECI)2#QDI2i~G~BbLvZlv#y3nDf zRmTJ>+t!5#5<3RKDP5Xc?o!mWEXgR;64;rfO%1 zR1t;6l%+-AG99Et`>CwqB3KhFxi{O}g&97KhtFEG^=;qLKCS;0DJhHB@A*yF*xhU{*!65RE3RBjYD$e5U$21hnE zK$Dm1l6cG$0HEC0=<;zKK%M{%BK%|SUj5)ReZq>g1)jJxA=_AYh>z)~c^SDr@Ek;L zlRCqKnMK& z-GUXLE1)LgEfJM9nbOQ&^`gpdOaEhYXL zC$&pm12MoIi%7_hF^O=}kVj#F^$<~{>{ZetNN9s;G3I4nL7C?uuh^t_#J|Nr0K#`D-;jivMY2+QtO9Qv{sCLXQA`gpAYyCs^$7s4dj_E zt~AK1zb)dp>d?3-f_7_+X*-xF3*jTv9Um;YGLz1;GovJRp*=_@u=<1LjtXv7TY4O2 zJ^J+;;e}2VtqR^xoQ%h+4~@sJ_qt7hdXEtEw$nLe;=(NTE$0)J zg|b4X(+daO6*DC$yhWrb$%2yp{$DmPf!{VS1{kJkCD10&zX5GRLBy_s*XN^BYsxo| z!3NX0TLxyIs}7@fc}3Qz2?Z(7#A1JBe$F8;NmtssH+?$BS9-4T~S}cugh!i;kr92OWvT za`RQk-pKXhN)ac@2w@fg}@Yp;|!sXXGZIF_oob16_@)%uLo zPIrQrVUW(s9vIw#9>?!jfZa|ZemN8Fc6%Va>h{Y{<_{;G1#mSNL+c)kq_LaxGhDih z*`Cp)XRR+vRppTww&5~4_kCW|o$M|xcB*}Ixy+k=TIV&%Tv%_JwXz!HJHq-dCiGqG z@Y`!yJ6_?z%bO`7RIMcpOQRcBa z2cC4nPdwt(IzIq9NAe3y4zyb8_WsAV*MdpVI8^X%OlLju zF;7+|LLpf}O}Rs2l*aM<*P>X}ncl;`#NUkq?c$)5~xwciYI*=3#rkw@m-2D4vo z8*-)hypj1Hp8D;qYEa$g$HVH;E0o#~(KXLk5}Gpq%Lu%GY|OHRpnx}@nblsm_%(J)xy41_aeU=6K0eP^8qj~w=)V)DJPO{hc6TIz> zNtMd8w-mm{Pg8}<6|o+x{*pYNE%an=?!Lv8r$i6>l>Dl*Rr;IE>es$=*NQIoYWm=t z!im;5N-S6y64!NzeX(<`uv;4-zN366$u@YwdH*#yePq0^gYH-C?o zT7TM`bitRR1}4@t5H(QHH1Uw!d*zWLk$|RQYEUql(b4^RbQF`0r@-ooPyULF1c+n< z`T zh!`(tpUZH}=AGBw#tD>81m@Qg4^-@QkGp~$N?J5xvA}xJ0kJEhjag88S2b@{_!YaG z9VCia@grvH2otb(!5OD#4YAoCYhY=*o+828eusLtSjWcNt1vsUnP5<(#WdU7wJQmRc8;EUufdrkgCD&&pY*-roWl)0R*d!L3AS z^ePBPk|(~&ef*ugFJFE}uqUMn8aC0$opmAxAYN&eN*crD3*b-_Y(;85g2*I zuwdcNE>rr)tehPG2;o%v;6R!{=$RXvL^plo2g{r}w@b(<`w>BX!zbMIChZi z;(g8w`fef*9G)CnEEY`0I;>DwL9n#kLq!Pj2U04XZ zR`0l`VPHRSwK{5t=+=s~^T#KW3zLVt(xQY1E}2src$UJFqQDo~#q=`*lw~nh4CJaXUR_yqRpp#glGftdwuk-_v)cg0DzXKwq$E=($K%%2V? zi@{ZmHZtPJ7P6kO6~sir`F_01rtl=?W{&saVmefdoAY~354+g+UywvW2BEmSUq6{T zcHXjivs(1_pX=gFLwewGGRJvXdB6WQ7h%n_kIXGd0hSu?hB$>Q9BemMdqjp~nT3a? z9=_ACefVzZ3ofaq(5NtprqC7vrT= zS%-NFwf%)BG*#Vn+v)8X)L_Sfz zdZ95$whDc@oZwcs{Oaj$v@#J+RXBwy-5Xr8IJyI7k;-+PXD67}?dw=E@l?_AJeFqL z4}W?U>_kMj6PHJ?sHNfE=(w(c+Y_ zSmQ(P<(GjE*+@Yc%+*&vsq~tI&9Z!)W)}i<3W?K)u&QFH%l)r7y3w5x2nX(sjf+^a zV5gi^CzZ7rtCgDUR~yx&{FV$?p!s9WH=B?_l(8qqc|G4BMO2l|Iq|Yzh+5CSQSk}_ zIj_73)0DDSWy%_ahWjY&YG*}ULeQj01wo?DY8TE-?<24m)w2h`P7J8xv;$C7pt&h1 ztb6aMjYz&@{@kcPa`pp{Iw9S(A|i=0j->FQGIB?}XTzvl`$GKno|bdN-pCO;&ME`v z4>?PZO?ENzeum}yssc~yJ|?{O@*^fL6c89>!=<(St!mgdb*&$vOQ1xJKDIPq@G_26lx~+(!xhu_ zgl>1mt1pt70Y|9ehx9m)pt7m(TNT3}Xr9+9CU1oze!i&Qt6#Z-Qpn}Amq#3OX10IeIE)EdMiPWIK{5mId^{C4`-*p~H)(P1VwPwcZ14d0tJbgz@+ zs7(9o{elXT@zd_vXId!Z-&SB5uP*ccz%eSwf<5HcKgNCS0~;>zo=&q}*SODH?HAMm z+N+Ps|02iS&L7H4Wz(3{{E%2+UHe+vlY?iNR?NXx%%P^1@(w24Q_lSZGVvJX4(1Km zX5f}9Z4*KMCKBS&cJ$gJ{5k5n#4h;%TzV0qUvQ%xCbKttQs(n&P<%Ym$}w_5NXam=KOAI=fJ-2&e>UvDo1 zKJy~s2~D)DbK#co&9q2F858h>k|6D)fenmY=k!fzciC1vFeFRGcsW4a~qqn`|UZPEs__NQ#aDG9C@JpynB<{}Swagbg_eySb0*Fhe z1p%#bXeYDW6&;j_75fR}(0R45aNN|u$FWRel^Ij9alzqPVh?@LtQqq)(X9I*KvwFJ zlY?lB&~HhUU!^AH2YM82&z=Zdh(kUdev^1FLq$#@Q9C_!zh+EH0a@>T5`S1^p(d-x z9aii(HrS>TaA`c1Q^<9N<%=V7uPPOhkD0VM-JRBcm@@pB*I3gH*$b87O^R0;b?vT> zt-Ck&L$oQM^B!D=+o!ES$?!mdl`syUv<0635qukCR+g51sBg5UI4f+LsDyRP0iVSv zCRqDe1z8tFu|<6E&Nb+V87GA$ynA;RFSO8K)I19JQ0|NOJHZW`NwBtD zxu#XbBKkai*9FAVA}JBJ(j?|b_Kt~^+99VY%-&)pAD1vX>SoKR05qDjC$KTRqoU=;so8xvsM!@zN7*^uI54$^U+yt8 zm!_$A;nUn%z5&2JB&~1!pV9E3XrXQ)v?dUl?V3~((P7u14XQy8@G70?6|R=wc-2IQ zOw!zBBZQwt4wCs+jG+Y2EY0IT!pc;NU2kYV2+DWiMEXEy_diX;_I6=S}`w1tT2-H;f6>US@68>V?rgRY1$&cgDNGnl43M*(sGVgdopi!xc-5`^~YkDeLeIAnm0dc zqmgMAGh^djfr3F-e)(Z=7YFIP@r6eXnwz_-jLG(7^zKCz#oO6OVW(a{Vi(8oEg;uv z<epYH1AR*oK>+!eSkU5ics8yb6y8SToMyGAZFDBqY!H*R3AjM6fX{02?zPMX+|B8MMx={A!&uF`IjB z`|(KY!P!p9*5nc0Qkry3q5{5H#o?t1{}Pbt3;>z;(^{T@f$GV~t_(gHs0wy?pVzD+ z>?oTfm2d8WL|_$vdX>x<3Y6* zyg5Lp+&e*k@)P~#w6F71%NayyITmN8X|iwHdR+rjbJVm9#@yPSu$~un-o&2}4{*5q z!Qos~vlt5H*_2Rxh+gW^C1!(=qJ9v+^$VaC)9h<^%{u!y?n;eXy3+1Ie`3|)07g0j zmnM~*jcsF2yE~u9m%<)Oyn|@{sI&Q6Rmc=;N;4xHmK@;79;f4 zdDaHxr=lzbPuL0*W6`x;K>;-6aYi&9CntFunM{31> zU%Wkr?l65(#z3BQO82Q*w07XpznmpIFaF~!$=xvixw%`d01-WkZYXm};B)Qk)t3>y z5%r&N>mdZ(nr84ATpx~DB}B|L#Qez8cSBgX1g$*jx~07Ofr(I1nHZ=ySeNQeTHUCa zNezUT%0!SWW9!m?$SG+Z?^u!XeXTTv*!vudM*3Ph`R@48?s#g+-i1lSBsax#RcZG- z4QRZx?OGF&pLtF2CVnGci-UbihJZcw!;#Ch7Q2DmZ<4g{ zFOqcPZ<4fc*AB6>=@Y}s$1@9_H;2kv|6g^Hm1AQkBgASD-5jh2&9YrtW4VQ*q*sgi z>MT^9MxBkvUO0<>;Tp<*{)TC?S)XA*xx35g8c)T1`}2RV1|g%ascs06wAaVqAnEph zfuv8579=}!zR<7zgc6o7cNG%7Q0@BrX7F|p&2S{9BHJ<%LKsozXtsPewZ&0t3aZfx zX@6Ivg%&=rWrEQBszz&SYW>vW`dq@~JsVabvswRqyk0 zSW-CtqqY~XjH?m~`*9oA4`D4IFg;gDTVya&2df_W(Y8pkdXg|CR{{rU5xU477J93U z#?u#NiBvDqjAS}wZb68uqx_!G1pBeqjJV@g6K?4}J0CaO@pe-j%BL|WBNC!eq`lE) zmP7OzV>jb547Es%ZWMX%NkUfs!vfY&g+NW#gAiJSQ_C5d7+%J!SXHPxdI}b#C3H)`pS<%2-+BehG30S+&GtALQAjT4k|DZUiQME zA&RhEqbp%Aq+;LUNud$4Jrw(-S6wt%a?7h>BDm{Pl)<@Ttk~TJr5`oC!rm(X4a$e- znr$mZ7OBN4g4iKth|QMxJ!EYw)O=W^dS$?**0tATn7!Z6q_+JUjlS{&(I)K1nF2rG zp*EG6lgG-cg48rJB|69;H&Jdf?m?vA@zl?wD8Eq2gOxxxzGo~+%>F)(#0G4oXmi~Z zi_3CSMtv>6NHbL(r zO$G|$;;BQMkg>#`3`*GWk<9wf}llzEdTIdy&Wx5O*tYS&*f=O6Phem z>z1L73*GcG@O+{chx5@+SZ9U7@6CqfAc?@&=F7E)iV(M%Uy~`88f!D8KA)9v{5z5> z(ax>jvKS0r2K<8UNv61ChsulYfb%Od4+z@)Iy*A>;I@eEV?~O*?O?&o87=tdq_6tM)`a0*7Q{=b6u(71 zfB$O52;3TF(~pvwTCZX^C(dmU#uUubW=fcy+2n@6uX8N&B^e6gf#u#zQ=c+|cO8da ztFU^ByPny}z5nwVJNfe%3;21A5z6FIertbKggaJut|!YaaVRG(WhWp>UH8~t* z`W@pq|2OWeznVtre+sS1)Y+nu9%Fkr-%(p+1$!X52i26?_ z&rbJ~i3!9hr!s{&7UD3B6NMFX0G01<$kzsnj z;>a>dC!W*8j}&6a;?6c(qd#DpGWbIWzMp@vDXs~SnzSdw<9r=la`9DVZs@-dw%L52 zZ5JX4+taatuzf#LoLD(Mv+K#;7{xSyQN6t=&u7C|*+-;nnjg%PzxY)W+7wzYR{{jy zj?e#q*nSi*L11+0cQl>*&ECap{0Dp2$c(B^2x)rT`Iq>gtRy8&gnRv;bqQ+RBn6QX z90CU2TT6FImm~1m8>XpJqcrCt(^EF85ma#G&;9^{d{b=Tc|Sw@nxP!oU2E zIl%A8`SD_1-|{o?J5r#M-t5)iK<-^p*Z+24Pfg8RzW4Ih>Zcpauqy!%^)E&rjqOsX zXq9u|-z=^p4gDI4XaKz#HuRKjEcvTv5e(7?&bRN^F3-0^VsO6E_^R?BTr6E3eF3DZ zNzAXf6_Xi6)g!7$qevjO6<$+yA~G5(3uJjB2nvM=5qyRd6%!esIiEs&y~l|X89~%} z+qP4b$!!QVO0d$$L-4(@nJg{HuyH>k4YOLv%Y#d8JmOM&y%QM&MAtk%&Fgt>GbbF) zrB|Tm=b!|e3fS5fAraLP>o7l9*R+p<%{T!rv3fof)?!QY&>6~burP7_v~Fv_D%(Bck+~b8;AHaD*HgBmh&=F3j>kb zdX)@~!OFJ+2u?W5FFiT7IAOUncM999?DH$VonqB!q(34^{NISEN!OI=6B*<`3QVem ze8=(?7XLGUlwF#i-AAT5^-xA51Zz8sYCG#dcs_fx2QP)I|9sr=L!5jGTJK%x9Z`%- z;s)pUjn0B;{vxN&zD%87LX%!3S-o(9p!g_Tx)iCQJL`{gg5%YmDD>m55$+JAopu|uIj|A{A z3{_tX#nyH(f82K~I|5+RmbJI3o|+1(<0!OrUBPi4hX)6<>r|WPGjeju%kPhadSrR< zCA;KBmBzG#L*9tJp=AhjR==VC8jW*2xFelsaH>f$SoU!VXeOj}eka4PFww=%??W#b zT@pOH&k{&vPK(o%^U|hsuU&f0RCyV4_o$s89nUG4N$IUNN_b)7iKXeb{PG|_wZih< zo5G=8AD*zb8q&t9FUNdIgwm#TQLre##IW*L9CE@>hh3Y5-3}3W2O5a^wCgaScllL) z9m<+1s#-FDS|nobIRBD~*v$SUEZhuqNGpu)Zjw^_gKgC1E0>QMre)X?1+{+*zkt+( zVEi}!iQ#_FGI%y+ja)v}Tl1U-^eZZjX?eR(WWawA5Olxn(6jX}96mT^;HAh~az6(_QDg<;4xR+v5Gu zxaH(xuqfHMuUH}DzFk@ zjYgJ3(#8qYAViw_j10#_azZf=iiN#E(x3|w42Pj2#h3Qp>cqi+r3{>g2>}3V92MXY zZ4E;M#q}!iU2#p^RE@=fb?pOJ8kErorNJNhw&{!isPnaZIwq40oI;V8m)ug z_G|B4P_BSFUL*yQ_g9c~!QYTZW)s&9?3qKc5w(Jx!!*4=gd4`JC4fSBb1d*_%pWVM zVp3D#+rCJs)y@f1PaWaA{a$06n!>THfI`%c0T+gTmjt&gWIX>x5R)fPT?#Uxjkj3U zehs`A$^>o>5VvZBuZfI+T1TjcK_46e^=>e<_0@bDg4lkbu`=c>p$+*J;n?uTNU$_; zXJHBufM%Ph!0Hd-#v9_aWI!rMBtqHo)>MfB4{U8ng%OKD-KE-;+W_hA%WCaeP7641-y~OU)G)}xUm-RSUmWY?yYWb@|9?TVfvUi#N=6kn`+qgxSpF3Der-xmM}MQf-u^;;&8YuIeSLOh zV)bWkhM20TC2IdOX10AxTn~7(DDlU7YyTj9{omYcE}W!Sg;uE!_gNmNL zbORTgSxo!Cd$fjCz+Tmr(3|hg6_S6!sAF1Lf&tQB(R;I?><7apyPwKTmSdR<*{i1? z30jbR%8?Iboiy2Os83o&nt~o+FFE|KpCdrj&&dIbmdYm>&8AO16j^$g>y3-Hu*nDE zJ?4deUqqqLHbq6%!3T-S*_WR-jXvF$4ot7PLO~ma6jblLK`1=1`pO|G?s~7+6#2>* z!~Eu-*{|XGZ|axXuMny~vR~iZLH0{B(;6M){6G3!*eTsdpwCHoH8x27IN9EN*z z6H}5ya*e_2Gob6n#m!{?lG1g0NQwt)7Y1 z|4pFV=L7;BTPm{zBS7BPOt*|l6)0t6eqVLj2g$6 z_x8u(s)qPm7t)p3)y^aavm(dQ@VowXI;@c*Ly;m~pT1mJ#t&6KW|<$o<~%Nd8Rqq1 z*UH?s$t%5GGQ^90H8(fl)a59zP}0uEpCxbk{!{+Ne^btm4o5hLLE@8u!htG3^N>2@YHzZ&4Q zf9ZB%zjZs;uBuw+`AwtB^=Y$L`WnaoXFt=2P^W)(26aDrwq0;}qlrY^XgvN8HyYh9 zer5l;(Ww9XMuQ%?E+*XQJn%X7(fv)PXBX@!F~il%<+p8h-Sd8I@R<3z_nWoa`q{jF z8)(~n+uLq2`aN!$I`LPCBKP;*zXiB#E$^i!5@IQJbtW!ZrQ)eQP=eJ?wQy8*?0pfy zzifcBGU0rpBbg3~3`Kjguqg|X6~9A4aSwC_-P-z#ucVLQD+wdIg3^zHh2P&liB;mc zD52PxLAkG20z2(e!QP#K)khm7H(Lp-d}aNw)(K+~7#?mHkY&+5gFn29XbUR5Yzyi> zX=-hNM^#7rd7~j#hyRE|! zIjt0UFiXIKroxYr{I5kYftI1!wo2xDZueLoOLr*g3%Z6#r(RE7)ac1sB&B( zp?tMEWK}k-%3repYlgUG$fR?6a4Z!R=)hXGmVhzQBLnY?%~G<_*sZ`h4}30lk--_g z;}QFf4q2g2*_6j^>->QPs9BPDq}Wk#i$ziiygvF4SSOMMUOwV+Z-iXegHkRc2wZIv zb4((T<-O?VFwmOtv7`rEJm_6g-mOa|>e=dk3L?$L^YNTugPn;YR-v zzQ03poUsxSfPP4H!StObTIOxK|Rgw<0+-qpuGetJNQNDJt)5+Tw8#=ly?-}@|gpB^w`5vgP|uB-GhQ{&3Z4j_SQC+c7gLbR#R z@{qk)1NmyXHMk)b27zEiV7?UEo6VrbV??JE73h>oWOlc=)>M+iQ^)YJz(R>HE$~+s z6w$*(6#XGlUS6{fk_d%GaPa&-qQ*57bvnnJ>W)$^ z9X%}`v+&r@Mj>KrW`X#siaDgHPFMUTo1XI zYO!LeTpqoe!r-~@WI%%7(hy->mkX;Uh=oNEVLpYsIllqAuGr2PAEO`!UF<|@;iD^>#Ma=ZA(k54 z{i?slX87X`jN8}m>mo#ANN^ZvuUF{-?e#U3Kn4E$9EcJw@)g`Mxj=ilL-0+|9zG1c z$omYbVXy|C6NM2tJ3TRl8dNVOyi1x#t+UUU`m%BhHHwE}On1b!>@nAwHkJ{zLi;h8 ztM1vW3f`nIzzGn;s%WxGQPT7Ol$|7ji-6KbK(5tcM;HYT!Cr_BDUi~jMAV3x*!tS6 z7r+t`Bdsg6!n`k0MELNr@YTd?itkc6kD_!_+&tEBa$4n)YLF{v)~fb8?$!>B9`3odXWt5pHi{ zqm+&em&wfLTFKqy;q6yxza#nxHVI`KBA}nF^Y6*2aRA{s^OMpU z9*h`{;GKE?Tn7l=!*@cEW%Ow@2O$Hg_V>`BsEo zdSdm`tsR~RVAr-$VcvLk95Ri2!w8ZmaYJv>LrTmBCUhm|2${3(N_pddRE%DZA4aQVYY2xTk4z5V2f|6M||U>)zic89hY@70%O^Y(hopz zE{R}~-T#@0{H~caRd*lu-IF)>HgB*3f^NEvpqt($xcD30GzmdB&Al?$jUv4nP+|8g zlF#_={qRMQE{;WQUpS%`cv#!n?Dt%@I{!`k=Uhhn=Umo>n9FqR&_({3%YN-mo36S1 zQ*dtW{X=lpOgg-6@$FObm}gZp{PmlH_DjLJ{!(!6zd)2Ip2bp~IKO{n^-YHN&b>cf z?@5=gcS|sq1?li+Zl07i@)}`XhVcdF*l>^5lN~ZAh%U#n@c(fvd$%Insym@T@Zlga zq}i50fj~$hJ}AX2U{vLv!NC%HX5**|3Ia?D7@k@&OaB6s>bxnxw}dR9l8JeL81KHO zGr`V?!}Vde>DOYy9~@X*rU|~(dH2|T)f01anci}n{>a-kv)V|oy4|}L?oDIzz@iZRSwp%*!+!lIlst;?1CO150ycjf ziRYk(gy2)#mcLYN(XxkP%;eDz3A{?~{1M}P z!KBX5$W2737M`FZC^bcv`_@+LwGUbTeL}aNCiYbY8aeYif8xv%OCC^p;M0Si=*xWuHSrI_ad)A}>vj zLGHvMrN%xX<$R`X&G)JDOP{anJ(CCf26X8t%3DwyG{i!W(^jrH%EB_06_MT~STzM< zuhR#{)1RUv*{#*=_Qyvog8F~J> zY)B8(#3~gdxT{j|l~`dvk@&_QTa4t`Nf8xqXx@JOF$wYFhYFt&ps>5 zX%*7QXOW~d5q-RL=G{*Icl$R0SF)g_ z64hcIDU>`YQJGiH{tA{uDsm`BaP^LuC^e=3vy3=p#^}ejgweeD0F8rdjlq_G60<+} zl~C24LxzieIq)VQ0f(PJnk_pHaO=m?x7ia>?vpw|tqQwyP9n)QW5_|B2aQ@~!@ceF zEM8umtXje-nM8Xc;>-k%f)}dR{z2wM?FC&8yn%OYGNWCB|=BfqNa1MCtwINeTD zDhgPl0K72bnn*947W!o66v0rst{{WcB1Q`897vcx+LMuB?}e-hCXqtigkz&1Zotfi zZEsJ6KZlg504fPEI7Job&Rs~4tnxQV5z{J?9)d8jrb@1k^uODDV<6HQxdsusG^$e+ ztFP!X`QrVnZ08*tZq)*S{!>=DVx^}CmewS3abzuM-Qhh%iF35lxrP%G)3s5CR16oa z#aiXjgvnYR6%)N~)SR0ye_TwhwQNNz_806v|F-d5n5E_EECS%3EXXo6!6>wMnM}AE zJa_*#D2KZh>ti7m#Y?oSGBFD(jLSJj(B5|raRzygcnMjdzlY)k9fsgmehSB}1Xw+Y zVMN<$199zt)6?0sxEr_In8lnhB%LHb?at@a_gx!wz}+7=DIE@Z_rSi?srhjp@{Jj= zN-D*_kzICUMjM-&hVB)=*J1Nz;d;lj5h`n_KOb+22CYy_k%^KY)S^9f*I2fd+@_Ii` z3Z2&!AN+8T9D8|A;L^{TsY7;^qSE0T%IxZCiviteb_25?dMDt*9B2PmE)2_5x&O!i zU|}ZzjfGiCZ;i*Byred#{H8XC|C`z@N%#fNqrUl)+T4EGv0}KE# zfWOw;TM?UY(Je^Po?M?NI2%KN0T_-|Du}Q9OQUfuEX3rRbk<8Rp4=|8m6pgNPL9d) zJioRn;Hh0J^V;_OgzmPb`i*ic+$OWTT(>?Y)yF^i05k<+n~Rgvmx^$CP{F3A+79@Y z8H!2bTl;hej#OG1o8e^C>#x8&Y%63hNq_4qG2-O$cMTAixzO!}u1CP{bDlQD)x2Ze zW&|)3B!#s;cBB#qq)TdCmS+i*%Kj`g^ zpg~)-n6F98+6Pg0f%9WORL5dn#7AXkU5rz)AwV36vnm9mlZgU^%&KiP%5AMypUSTd zyCP2}Ks(!kVd{*r4@n*rAhWpJ^P**9Vo_tY3n00`Fau-Wp_(IKHqNuS+H)frfew4c zAh)T`nylR)MMHxY%nzzqA()1>1W_+gS&c)xI+O@T4Oz)~k%@y8KR3822}rlY9)n)R zb(9E^r9?(8AfgL>#14X@(~cR<@z9iDM+U#&f)-%1PKPKiU?*M^CW~q%DVT>$kPA+b z|Hs+OMsexvWl*e(io|nJbdT!O4!~koCvi3XWCJ6NQ~-Lu1roh+7gSUpe0};RY-GZA zs1d#603!h+=KwRaCn5ZH7nx9V74}JK5nNXXp-x;~pc%=E*#rNXrDZsG0UAkwYkbw+ z^+yMF9{4Q#QIl``?};S$6#J@Pmv)-z(wK?>-`eR=1zE*Y_)XGNrf5i9^B?JdM=ad1 zA<&JcN@J|lhJp>X!ZyrbgP^4{F)rv1rfZT{!m?O%!zXJKqO`?9tY1F32x0BgC8ZCJ z!qH$g8a(zYiHiz8+OlFUB5<;_TxW8yzd{0KI9G31^k(0%T>2~kv5WxN3Fh0J-E9aE zK@Sqt$JhbNryXp8LO#DKIzgAI+3G09L-x`dR3-U~k8q zo=Z;zdjJqTBn+9*m8i!jeYC-mHJMONht3oh3zQ^ih3aD#J5KoyS7GbxZo-_`zA%3l zlNf=37NO$O!`OTt&=cqf%~pM^3<}4tcLOm(88EC%F(io+$>%ykenn zupSyp(iEnMz|*`Q1T~`N6>1gq7}f4Wtam!VdZ$RhEvlyj$Oo&$pj8jQ*S)bsb~#6r z+#41Tz0?n=BY=M3l_ZDI4+fE-ZQ9Qvd3AHvZ$E6YR$c3g2pIysS$*`z=%BU->JEF% z^vIr?WWSkq#x-a%!9wurn|-#K_h}MD5mR8)(Uz{mj^dWX0B@lh{thKQ6XCQ5`)Pk3 z3fzlt)^D4tJfE+Ye3r`wb!5{K21!Xwx%RwNxT);Hv4YmD3u@vB0YFl^_!Nol7Ti#{OKNHF|N35EqK%o=6R1;HjbkFi= z9G?1>CggQ7dWk*c51OJ&c~A9pE<4`j3iO4!6K{Yz9Q0_?AgDNP4Na>hg;#|_ZUkzq z5oQ;uM3e~f==G%Q!sL;r(I(7pQG$(KIl}`xm5sTHQai7ddAPb^%3rKlQc0XF3wM}m z?YU|E7}BE63-M?^`QoG-za+sls!NE5XxBwYlVU5mmpv~0%oVS_3J2%|65~(QMFQc7 zWGGyx4m&|U6t57CKEU%^*0<$8gGz z<1DB+(BjM<`u2%KIih$cuy5D45g{q<@l{^h>@`nX zUtHASUp0KwVc2@=@e;zUY(vpO-nF}MYmel8{731J-^`|O<@LmjtoWzd;h5bZuKKpp z?qn)+PsRhmT~cW?&jOm#ZP9Flubh854B7r+u;={KVDHPfiH_LBUBwD`Zp)ltw)j`X zF%$4`8zNq3n57X79=BWx@DEB@x!@E}c~V)lT0ntEa$7B;K?}6yp&w@&1e^v`zH=+~ zNz}Qcf>k9a%pj^rB0KuVWrd#}Td}{Li8^Adiz!Q2&O-_kSNIU%z`m10=13H8(=pG4 zaBoxPbwB>vpUgdcTy4F7kM<=pvVIpLVS4#Y~O{zaR}2pc~!S=(oarPQ|@&QsNXyEnTIo&;^= zF>6n$x)r&)Jj}028A*~r+K3D^K0(@WKu-Iikhz0e+Khko4&$RG$D1Wfj^kQ1`f8cs zG&*++X+E^CEPZJI?UGdc&5>-~$=SBo_K1%x#6wZhuG3CN<$oa?$|nM4zh<&QRtK(H}e$oSHj&>wa3hWmZZ%ee%XX zZ{lD^|C?;dGTo7g3|~`wG1K1+|FNfYt6-tn)Zzb6;fnqb;mTv8Z@>+;x%?fCaT(QL$O#nnaGM9kh+%)WDN`yxl!Ha$i8U7HEVv%r)G_8gkU-1lj3 zP=};oa12v(Xx2CmDci-dQ{`ME$$bg^z#-#4U2k@kA@5y!@0w{fD{oGHh@?}AS@q4b zGsK0&DfY(9qAm`NU%gb1-*tCCk>Ub6rHo;rK^v>2MhgBY!i+DAyxE_@uP`(4d9&~E zW-Cf!)8vYfFHdJR-k4#c$&m7zL8+asXFeG6oKa|S!hF-2p1EC*?lQAjZ?sa6Pw}97 z)Z%I|DM5A=!3;8+;*(~_B%SBR>nGzTw|K%U9@yXFan) zh9atL3#!-!1CBpcve}B?eNK_NSy}Azo?yGOu|)DNcFr}iyYI#B9@p%bZa-^uCb&PW zcwf^V1NzeF1F)9J72&(Ya=u zTY0x`UhZ52YG#m8ADZamj(OM+mL0d0zVW-$GW~G&ovViT-$811eD@V*o{UcSObr)U zI7zNMz1eLz+4n!D6cqajlTi8%laO2{=FFa3pt$<>h?pl@6K3}RYA2m~WaGAw*}%Nt z9eW4BB#syUD@?+4vdHVHOln+oRIQ`2L5toU{lkcb)i1Np{JLM5xRPT_Cr~gJtQe17 zUX#LpUz0E>|5Jp#H^iG$ZfG9@(?{3n^lteayUn3uK3j&;)Yyb0y z9wN8DYC0;itdn zH^35i7NQrm+Cm?kn#bS+i{FkwC3uDTI`xy?^we&10hJo@TI0c&Hh1hAoCWIotnR%I zGL4~;%W50k-1~PM2e>Y)ZC0$yi)IefghL-xHd@YcB)Nb7z@E4B(Q)A3`6K@kmfra0 zGg%(2OcEX$ce|ovqzK=N3=a(P_S1yM7|E*+Q(yTX58WmUsbm~9I{tAedrNH3uiACq z-}tR<$GgwpV%%4r@oo1n#!zL}hg@SAJkpzcrpz@Z?_EEy8<6(hul1foqw%ZfMN#RP z0UFk5DDB_%r!ZX^-s^2%{8-%X)NkvEYMvL%mdbv$DZ4Pz9gylbc5B;LFGHIlq1>}? z4?9ywJ;Y}0!=PvJTQhSrk6*<$D!TudQetL+ZvOWP6zvDAIWH07OWdIIe0isC8_-^2 zgFqIQ3JnxETRx_|ht+$TRqXqf{pD}u^mK8v+BlW&u$)+)$J z?ydW#t0!HY&$G#?N{8^zmSCf!YZjSjDX(e6-Dz*?#g}H)aN2?3tPUzRa8Y3@P$0k* z-}O;KOCFFjw%XmW3xaUc65`kuWtHn`gDy&hj}Q3ll5mA70#ku)HYX~6UBlzAj@nfd z4@5`pI-*=fASRJXc<-Jt_<)9A>>yU#5w-h5U|J2 zm=_blJ9E|c!~=Xd!a%SvCqieeb5wZ@c6GI7#f6Q7)ydJ4$5i5roH@tz7`zh(gT)soFGaPdVV;FA- zL(|G5L|Jq_=spGt9m_qW+;_D2`4a#xh$aF5N=28q%1pJ9zp~He;hTQAarw$9;^kKg ztTC6r1FVK5FCV(R9pABjWVn-@j;4(55n<`L?U67j-o}Lnc9ZOFk6VR( zZnG2oUrht#t;S!$TAiMDT5BBJWySA4u?&9{eN@fo)QLvZXo^e7aC(;}U- zf+86UOswrwdEuODeR7~qW!<|EpZdDONWw4^j6wloaWfc;D*LmxB7`4QQZNzSB}3y% z4qa2=Ki0ZJTUU@v(JbyGHJMQ@x_am3i}0h2<(|qA3xZ06a%x3X}~N3D)x)O=>f6 z>}T%yUiRStG#{az^fEevYcE_-%Hv`QWTf*|ms4;^S=iW5tsr>i8B<&9Zt|CiTwzs4 zETHKGYsbHg3WgH5zXWwV6)I~c5wW^J@3DJ=Bmr>C=v0JcyS4&d6ND?9rb-mGd)Eqt>R2&Mj@7bAq2mrXYC+Yct2TnoGkToF_qMWtYHwYxc_9cfQZ)=R{GG3TJIM*+wZ7sQJr%-`9NlOuEyP(NnP zV3Y&YbJq1&&q++G!)w%`pO^R_9SI1agBuw$bOUb4Uh_vpO%4S?^$}LCflpeE3P%B% zN*g6Orlg3P5|ri2peghMC@?Waru=7`B9LEZq-ULXu)%7P!w$n%ZD6-(9ujWX9#8g@ z3N3-@OARGn5zdP+LIzgTPVdQ|5{D{zv~dmipBAo*iZF^4hJBS9>OjQQY`iD^IGO@E z%?D(d6{Y|$P>>aWn8T7N1pMf56EQUPtuGf;%b%@d^+U7QRY^XQ#FesWCTXG3rF~xi zTvF)e=3xy&+EMY15nBacJ%*&MDdbhYy&I2rl+>JaLVV62mkdG*O&;iw1BQ-y=M{cs zMx5978#w_SnsL+M+fNt{kp*dSZbiq@NgqXW82xC2k76sb$Lja>Bn#PiwV5R4&S5>k zCRl=8i8NTMmg5~Yq$MY4N=J#n5wq5RjvbDYz6E9aNa&7IWjAgj+KUdS zFX?gKLQM}`)i$ihy-@7GhhPfSzC(V$6~a_UoE#BdXz5j6A&GVvpdh#;8KwZrQwXII zbOl!+m@-a7ClWTK>c`yS_TY;Z8!M@krOi5XzrEB|D1}mtd9mQtLu|aksh0_9kXv=p zX=web`$n1aCPbCvUFtl`oyp-}3fa2IoeFG78Py!5cnTqwG5N*3#v71~WML^8V?;;p z|JzNyvRYee?7!aBqnFU7ew#md?11^B<2ddx!^yDyl&oiOqI5G1@~sBf0@o7gha8o3 z{g3+g-_%vf#8Kq+o?jUu1!+LjssG`k{@eVK{M-DY4;Vz3=8qsS{2xO3q<)(}I;)+X z!*=Xj%;lFd?p|!k+!9La<=g$MyC&@CUHz6}nojkO{%ewHXaJUJg@(c zvbT5iehLqNJgKsuzmyIZ=uyFt1`KpLb&LZlI-K?MY)OFGUy=(G2;pLf6S zIp-h685x-Qz}&yJzWh$mfva)Fb`!_|FJ*B!HK;aGG($0{;6V5#WU z2xsURFds*Hgl{AJ{;63I`)fQF0wo|Df;}C(fTzRDp$wndj`ZJ+wQ*04wKW~KNArzq z@4cb^unaNnS69d?#5dpDCZRq}$9C<0L5DX`9U7VY8a~?`_u3b=s%SQU!&;vp`#fQ- zSHAzfXhEXLU+NktT5u-*>jdQ>VD1B;tc$j6tLGv=^YV5)8nFLtn)^K*(@V({4Rz6y zLVenHHkE9G(R`YYQN+1OI9vRN5PW&|y6Sw%G7J9RSj(FT7R;uB#@aECQ5xCP6}^nH zr+z9%j#ZkoZ^?Z$DbAms3Stu)#I`Ds(6@Lh2~dbgnyAsg6=Z%d_%!zIp3g2w8%_6> zsS8O92yMBKq-Di5f+?^cE@GTL;+^Ipzgq&+IKBY4i(pHxs%HSRu37r1B>TKx22=Q` zyH$q#kHZCCy%q#!B0cU9eeN&W^4#sVq13PE$6n8)`Gg&YB?+w3|5GXR`1o5Xqy4*5 z#&z?gl4q)+BDtra@V4xoXTLV-YeU!-o(z(uE_J#!GC9J18oaA!-p^JrP}{##vtyRN4oXF z(k!X%?jfIfAZ?^FHp`URr)TjiL>04%ai2+!ck8fLG+uM{i;_H2_%~26qWymY1y_bx zIE6Q#fP%e$0R=;1{s|O(5e@(as}~Qo|F|(|f;_P)afAL7D9FZ!pH@kPmmm)IVlXV? z#7tNaS=KV}ekEO;YNCr)q%EiXl$Crn$ft37=_I>Kd7Y%L zEeqLC{KYwjmmOfj{a6AP%#2-q|w6Sjg2;vE_YXdNzH;O4ZpIsF5VOYi<>bk6h=~UeYDYu6knY=aHu=Zj7 za!gjT#OSd05zJQ4QI16FOoNIFP+{$NHmoIabiapIn5Y8D!@>m1^{enUGYNo9h5NLL z(s*;2d=0i~5UiMfvsNT=pW!N@TV!-pT$3<`)#K#Q<80%Lb%5UCE@)d8mdk}$g;OY4 z4m?*TZbvOxh5-N3dyzvS@*dKa$kW&)aR<8t6~X&_M}U0JOL)iWuozinJ@nah7`c<6 zjRIcqK-5%NZ(db%R5o6#j;)cG%z6X%4;ng_`ex)lv>URw)zp&OQ4&B-1#^KX$FHXq z$bAJEU_u4-epR}A3I}D01DP8LISAnxh@B2L2rDan^L3vZKDRUj{GvK%fv_~x=bQt9 z9dQfry?|F2F)$My0thHE!b3m;g%rsx=Bp(-6C86DDPUwzqI4j*$Q4E!fiPx(Ty9*1 zlE0>gzosF(m@MYvhp)VsrdR0`DJjGl4u1(oEF7hdfMmrU4@g#MNiv-2kxtmbPba=@Hv`<8KsvJte$w_t*QV$Q*oN?- zQ&uOvC*nb2*~VvZ45$zpkPZ8(C7_gpBYJqLb|g|tu4R4|MU9mkzj)TT$eXypgKp@q z^P0|LLEYg2moTNFkJ z_^&?H(f6ER&@rK zu<*IjN?QjmE-S1CFpbLI3JdXVLT4ci;{R)b+2a;Hs)8)+bTo`9pXC!}E~Ie=L%^LD zE)EO>s((TsMEr5S8ay23+n@giUmn%fI>>Q2-#+WO2gsLpw|VE4bZxcn+5zELI2 z=7cumc`17SMRvZD-^8~7aEs!W51w~f8R*&Q`Yrl`M;@1bC1baEQVq@;?(Z26sSP8l zO*2L_1M{g_`zNY$R#*D(4ks_syOjO{J8$o9X)I}f14{eawk8jODhaPUC`AVsb(`SN z>DR-YHG>}oH@h|~JC~iK|H*aU(cO)DS0a|9y7JyP-%6+v-$wHjmp9~%IP`hIQWu`g*`d)|SP7P{{UOAa0C{HwTsHFWqq zE%?#6Jq{kd=k7Ed|19{0i{BC5L1$tU(tG_3a1y zQmvU_N&n_cjk(DMulN5;UMS#ic_DtmX8-4mkDY4#+U2Mld06Nnn~DWztkalAzXL-G zzXL-G;J{D>5E%OKAAuoc@P6Ms4{)XqFlNNUW&*}kIIuBQ+oWAq^0zS+`)RvB^xwAo z&KutnSX7%mf$jd9QBZ_uf2^nJ@Yt&1N>VnC2lk8hu{i!iqvI*G!$R{iA1giqPERWp z(xvNibjwG+_K=IBmCKSbM}>Q^_`EdO9Fs_s4$m% z{_4&T66^-*Qy`Mc-W3!?)^C}OBGBXJ(BsY|sP53(`sq*q&!#A;KTT1)e`|_jNKI?1 zBR^lRG_&wznhNIBUo_qId+9|T6V#-a+WMbnAOm{GKX%hsQ67J&38=rR3C7BQs0k18 zo_?RVe(VoMH~HPCuIG;bpC#_+CZzwPB+922XA*2THT>o+Qg+|$`@h>wD~s2P|7|yQ zaQkm|(|D-Jy|NsIHuU$TpLZQ8>lRShYTC_dxh}73*G|9iWZeC*o#UxqAy~2VU_L_8 zoA#zqCuAgzjD)4g>(Bh|-NS!E#B*i&=9L^ugv=MmXm~0xG~vyDw6tZTRDeO)*0L$l z6Br1tO-ZlVU77-ffhgDqHUlNM*Wj=6ijmX|VT3A!Jej>-?2jfNsgl~SkmbK(JoyDG z@x7lNcfGoSjt9`WBwkXsNJmBUNf!oEZ}Hg9`7!qx>lXKRb`D}xSQHd0{V@0+tlySw zCpDwpTTyVl`cwxH3KjBSqBDK7H_1N&ffvMMyJs0U4uL`e;X#;w55N{Kt6w+l6(%IO z9@T&A_nGD1AADvB#s#Aur*YS4;oyiQ8jK3Gq3G{^DDPMT-q9UPz&pBg*PTCc^j5aZ z&%^)mW&cnL;Y{irM-{z2VO{S^5jSV4pr`Wk#U3skcC(k&tC%A0Ht>xk>IAxpmUO1z zLrD?+J4+4KCC-vDy$lq2YxJY!%r(niv0H^!v$=BuBOZOR=;ZO!i&?>@#PH*(vE!+d zGFE=nf|<~P)c94^r^ovh+qpFAsNEX;>2ILao3MZ_+G>L9?x=TS&eQxUC!tw2^$ z^&gSEK!&&!4Fzy9#RqpoBk73uamtAFeaF5Vy#H~vU0}VtL5#g!AO<;XpPCz<4h7Kp zpbL<}wxe|lWGg#->CO*1tgNmexcFx%dUcXgG3r1`C)*S>w7m(rgu;{_+-DRN7-)0+ zg$(MQzJdyxTj`yUP~0R|fEMa-og-l=#X?&wc)(bAn5; z#w?xBoE$B0OUVk~{^-lr*$U@rUg;Lb$=0#S{K97OtI+b-g>FN+P}OuL&g$8;pyAFz z<)uaG+laMl8@6H!;HGGtcUnKzT_z=-MsGVFaR#Cfh$Uj+Wc;iX#K)BX91v5`0B zv(bPUcd&$*P&FN>P78vHPri+CA;MUc_GW{#=VER&Ry%b3lJ2TQHGizau`$ zqc_HLs3s!ej-WyXjD#9DR|6dO;`Gy3lAayu-`w9x>_1ON*ym{OERiM&8IkRTfu-G` zXMMZd#t#J`k>Gn#Ae!I<2TlYarj#H6k|j9Njuv?L6^s3ORJaB7ddq%41uUBV2jihY zu_&8S3|B)MH2K%W(Hm2R z3EzjNFe7*e1rVr!@|tsEcybtoQV~zQ^j(O;K#E&o1Z~M|;hoZ9&rkijPI)uu)e%97dmJ3i9LghVJe{>~~OaRa3UQXK0y@vKj2^iYOk zb(oT2eqVcbE91JdY(*`%9$BL#bG(&+JYf~{9N znsQ>YDj2}8C+JleHyf)<5;?H&%ft%|GAd9Lmv-O`4F*P%k1r9hbq0G-u7zE$rIeo| zK#V}XUL2c+q%#@-oR)6@>-1;PqOd8Xv{=aJpqdPbzzs<9>=YGfsIW0D_&(4`sD?-) z1s32{jDb-mC#Qq$yC8auf-|QDzOD#pJ(OF7RWT8X^Ou2DUXcdq5)f6w8j8Mstzm4^ zL&4#)AVVrtw!%WnjHoVnOJ^oj2@@nrfPL|DMva03IOU^=W=%1msBFT;4U$WgJ|z~5 z9JcIEAJgSCGXP=~E-6}*H5q=PoD~*+4Cq?a^ejxmOsRWHs^zt~1lCtt*G10iqW3x# zbT(r`#K3c5AjTag&Wi3IbAno-fCc@inM}&W4d`x(Se&?_2C+Hh!WB>-l<*MxXP_yt;emJN04IpTx8&#g zo3N0gI3US(Vf*su#Wy#3*o0owif=C zG#26L2XbkJ%BD5sRIN9$5Wnd&3)CfM%I@M~GxoqYpbT0M(NJcUidPB_Hr-)Kf!$A} z7sb0bul~t0138mtgvNg}bM;@P`UTxWa_LM=A~H+bFNeotvS;;{z!}CHf|$2ox_d z)!NB{LF-afXykaA(Oq{K9xLG8phyK=W(X%*1a1LDOb#n!XO*GDM}Qkyp?sGiuigU4 zMTCb*(L{{^5Hx@To{4%8AC>i5zp7S&O#LU?cp!#FT_2dqM}B6 zM`;>9Ti9k+BH2s@OCUwF*kQHn-q*7c>u1TqWF8U1xFjXHgS#XyiAfn_#YiCIs$(s# z_Iw=z4XT$DZ6X{HHpEL>|EO zrX37Z{C3{HfwRwzNbh}8n{&HehxbI5jHELvo+9Ag1+)~vk{U59rZcTZs`65}im*SB zH(6-y62`WP(~$^BbW(~Qg0+tltT-Bzc!M(XqR+5ug5tza_gqfVQf^_WM3-T*B}`3V zi>FdhJ~>`p)%VZ=?=425zZDKp+lV1gL+SEVKmBao&#pW!stE3&m~s|mUqlJ^{$1?S zQ$aG%e{+t5!M#0PNeP#?^zf<5bNIRru4e}84kq8Ja;+G#V<6-eASK=sal57Mg{}iK zlnA)@NQ6yFa$1jWYsVXju2L$R5M6}^RX5@j{!$dKaq`6x>Kjh1l-VfdcL;KoAL9wx z=&cuoiA0Tfa1 zu73v*%E}ndF&fHjQo+*;DXIy%8o_KTABqy#hb)ykZ_(XEm4^%bltMoj$t#_kmSD-F z;@rci$0FdUSM2;m!|75*#VKsC0;EX1x8kN^gS{>w21+%xz@jas=@(y=Fic{AS3yhz zcoi(*N^w>PM4q*tL^4_U;=9#AMg~7!b8+mUjPc2ntadZ4@o6i1g<-?RVTT9}QXYDy zRs7k2x-;p}h9Y%oGifS9BBF5EO3c22J~?pBcnZPogvG7^vC)_iuBhrXEv_VDa>P&r z>np|QUOR8~D`gS|^=9e}-0h_*J8R4H)6P`Hh-Uj}fgkiH9DqW-PZ0wA2%9DZ16N2G zg6tfw6fbT0;ZB3y9dx1DBCwOUNL_C%QHe7nh7%I6Z}7Wb=aDr3G`h6)%taDrWej%` zJ7SV0XL_oPnNl9x2h`b<6=D6!51(SyRNeRiNDCRLu+<6&giK8o2Wzs6pK1qylckB# zF)e>J%_$ePE=L1kegF}KAg5}EGcI9dqogr?DcpMkN=)8;VaY7m=SN zig7m6C0)_I5{C?zQ>NsZsgqc>rkBPBUo|L_tZOuo$1*YCOYJlQ%c=P_g!>g*8mIor4V_|l?ug2E;4a5_QT9>VGm zzH*1Z-v#xpBqY^EAtpn#Mj^XI-t+=~a`Mb8&Lv^t2lzSF;~g%1Ut%?}lP~}TM~?7C z9Pswv4zm&>_X!AhsIIgmwb?h?X>)vk@qF6lt0Wk^6KYTd$gN3QoEZ^gzs>U#d!3Bu zCrZQMJJpJS5`m|lfW$%YN$6ilP-C2~KS)qYSK#$C`A+U;#fXEU7@;|t+G`$sQ(W>O=m+! z7k?i4ENk9VGr6v5+GVMD1u{QE>Jx9HQ|W_Q zdz`fjozzO{zm|pc$S-B3SDU858kYSSF9}eyF^;hHUHE=F3~d~NVH`04vu22`@&+f& zQ^v#&JDLA@9_^qOHt*+y4%;amwHsR%Mp&%11{IPBw(~GuNl!ChVPi7tOy_$xq?2_h z9U3keE;g|RqM-z!`A1X17q`{r39A8bq`;ByIPswJ_5={CP9ODnTv zSK8^e*eM8NpIm!O(wUgiQS!%J;w6My3{n+Z9=cs~25-AtO)|yHU#@(p|40SQZ+(_- z!P;Hh+PT1EjgSJ5l^REPo2cwAnN=8PXopfGhAyG71v^g(M5o!@Y&7IZ*j)BLjeYO;V=A-^L%^GD5Kn`upl z4U&hv1x#|t|(gPh?V78M;WK2UpyL^rPQ|F=AJocG`I&`ZIx z;5_s}jZcNR?kqSD9We{WdQx3i`ALhBz^DB~g1b<7%OdpDVm|cqPphpM-0xP~0=hq~ zwvJK*mVRp}?)B?-Un?}~r8fW1JoJBQG3WEC{e^u5ZZSW)1k!5uf&W)pZSN+cL7B}- zLw>Z^Z0|p<-L1PT9Rv2N8(HO zHbv)UI%-t&EZAIgLs5jL-9DH9+#K%a-6d6;`4k4KBN6Qts9|>bC8k2bVG~v7>zfsB z4Jj`M)M$v3{cbWhj8AxpxwR!t2o+%ZyYi+4WpG~$UU(fMkQ*`)2jbgnhY>Qi<+%Y>9^&K)}UE1l`ANBUV}Ep5<3GzE0%3eX|o1#m$yPDR0G$ zWgV}oBCJdr-PERkd@qfK1^aF>VgN$A2_ecWa-gtYdJJfJ2oi^-zHp<@@}x5v5yB4- z1X4AOiJU-QW(?6O0sB%q!nv;1wx=3Rgzd!z1}hXK6D7H95*KGi;D7{g;IhG>Mdv&3ScPBU7=&~-giNAJD#Ye=_Vh7c zM!uS@L$5Li@zH?6Rq>Zl31ycH$RwypT*&FOB<)m)_5U}h(Z6otdp84!Ib zSv0*MUYy@bHx2>VqW;eBYlr~2Ew7U_0d7l>t;$Q)^D9#2dZ9n{rTm~ldu^$H6v9Z2 z=|u9kR?Mi4*wYli$U<#*t&~oP8D`=>B-IOsp&UOsSNj3yYL85&Hp?SW_j&ZE?sGzu zr|fTapUpiQLb?1l*6+WlTo*fN@x8lJI`pWCKwo-4LONddOR6>;jin}vBpI9Y^;+dV zZ55k-ik*8;8fUc;Y8Bn6W_}G`aQ-lJ===!=oOs;5?e;P0${ou=mEy+W_DQz1)Hf1C z1+-k_E6=+BO%XDn{7VtKrTUv9v=^c9FC2c)F--^(O z%JZ53p$8p3M!ze$AGMosxG{K7W4L_jJe{I`yZk_fdXs&6;YNbn8LYu?(bN!1dq|qj zVNNAt>+9LH_5E!z7mSWn=v+=5(!2Zg4aj#sQdKQmp-2~L3KV%C=WEI-x*x2U8R%y~ z8ntl_n}{ply`cUg(BWjt@0IO$Pn4p6C}#ZvptV2v0BCKBXB>KA0{CAHp9Wf8AD> zeXSXJWWzD6e}CdNjXFUf#C96uD1%pGeOvCYCAaI5ceFOfFzEEpz{tbj10y=NzmFxU z+1(wcYuhPrpxTLPve9 zotOf0Qa8Y#BfbLobC6GX*|49?nLSTR#XXe0jzaMhN91+p`pA4 z6?lK*5%2IDC)hjQD<>8Il|Paek>=K9m3{V&RA#<+CORs9Cl5y_Pa9t+Pk9`nMocbz zO`8IdO}$g5Z^ewHattas5PxteIsf*BeOrF7HOIX5vS7sJb`ycdyYbF3y>iqqOYj~` z>@$wN>JaEZM0p zFP6RfN83hp?8R?tUzvE%A8McLA8KFxU(`PDfx#Q@v?$!?YZoTL(ZMwTXT1KW3(Y?j zH9o)EsHRImQDZ6b7b)waP5WOxLtQY2M{57}3~m1x&k$YJPo>9pFtxA4=`U)Z@Wwx= zeOrgdtNSQUEw>pSa5Yw4iOB_c2@(VAp#R9%)6hzamJY}bZX^NFzF2u`HEi{QZo!e? zp^-df30|9LxX#W=wS>MvXr#Q#mhDTN%a`x^alwCuMl6BQh-tztm3kCx4-gvJHf-%i zn+)i!zYNSc{a}50TqE#TW@HAb0ci)wj7*%e+scidJ!M9o=Q+BzjVwN8MxZS!OZaa8 zof*N}(|kr2GpiPMdwG}lF_{D%!e0l(zOCoGH6eY3g?6pMVr}M9_KVD=+(YAY!$uHW z=6eP>ZISfG!^gdVn%DSuMjM^?O*!MCYK+>UN24XRuPn%H-`4-}oxUyzBPbfvJ1+Md;~)_Xr`oU@PqX^|yiyf_f-| z%dPtAq8pC=(IJz3*o#k=`B;45Iyt|a(|N(kevNnHJBS!yj-P)sjW=1{e3hK9@=s|Sr2`y;(7nu1=XC}n~QROWrByPgrg^X=Zz zAvcokbu8H>U8}!-PmZV?iB*?DaE8AV7zD>Qb*9X+Y4nX{j%DLnkb#lB%_ugF82uH| z+Ltqd$D2hq^gw0^D@+IuY}96Xs4ltUBI7`6r9$eu+ge`eTP?PPKvD!N5ac}qj+i~- z&c`Gn7*}611U2{|YWWxWbP9cW;bYK+=paIv54|FSO1dDp8p&V6L~jd3iSHb{F)fYI zskTm7ARgt`$t0MR3?E7faiIN<6)7ILn5?LY5e|$81)##o3q)X0ps}Id1W~czu*;2K z6NYbajzzD`sl@l6vzd`XQIStk!&p?n*<`~=rYn3ArVc`)398y_NPJCR27aRWA;1%5 zjaEjO%?KKR2KwD=^b%L3hoRAl*b)L@?l>X?>SII;TJB;5kwtB?PHK&LiXB67&8dnh ziXw2%jx!(vXuq>a;3yg1mC`{Mp$x0S>CIPX*>5#T)5BfxSdyaCds>0eWdf56S_G(# zVF0^&r+{9%b>629V-}a)lSCH>P30!M#hQ`PgHd1TPWOp#_gIeI4h_=7CXPHeMcF!u z4w$9>4ydn?x+Vt5=UTW>KNRuubz~U4{m|xCe`h@4@ z^4wXB`|B9Dus{#*t*7$|OZVQVy|aT<=OludWlQlL{yB+x z=I5IP?|qE!UlO*BdSrOVFCOfTU!Z)%iKz*L-@F*(ys6e&OnMMY7&bSNabO-f;yUWk z=CZVu*n=g)KsJmP>E9$H97Ya8SE|e2GV4hDXl*R9GcVscnKXQdulLxU9X*!$=_)>S z=i=`0l~5fc3-?RG?xFmEw-IR955^l!UoEx^m%pqXrQ}-&4PJL0#M<|Lv@Wjc$@uaR zS*ECW!|A7MFSAsd9<01NnqinE;1|%vEPnS9ov1kwGN`tIq36B!Rr2voemjNys#hSg zzx1X-15awUFYuW$~f3jo0QIDrm?MwUK%D%z1ysNtOS3V2-8I- z<{ZO!$8iVu;|YAY;b~q1h|-UnrdM3fw3P4>jf@Wb+SfT;cJ5l5O01=YPU+_Lc6pbt zEC<}FZeq&`UQ-!9h&|@cR89O6T;L!P(qBG>wpgD0Ut= zAYn3*a{YN?Q!yb3|CG?d_AVyK>KOU*w?Wo%>m_wuj$^L;*Lwt zf0Ze-C|B~tz2Y~vUC@0o!jTY2vp7_kQ7^2D)b#+S1^)W{ggB!bk9Zs?zaHBmm5RPQ2G-Rx8?^;Jq1 zv5kvwjFva{1n}WZa4_}>nBM=AA{*Z#Rp)%RM^xX`KPPZt)z6VYaWF-7@J*{%X*f_c z+%61-uoVDM1dGBQt+8XX7bHT4q0pJ_vjl$x-#^5G+<*G4B5|4}FXELXOIoZD&zX8E zyOscKDaw2Uhvu_V6sS@Z(}}2#bTQW1-#Xr6{=17pTIb z(rN1_f3Z#{hxi@!=;`J7w`b|+`U!M(@?U#CJguQ8UgqfKc6*(^KN0!q?W$71X>#h) zZRRGHURCe3$Y|@Nb-`*v%D}e&nNF6KAb@I)_6_!YznHOTtw+LraFLq-|Vbjnak$JJL;mavWx|b=~mz zW$!NcWERdG?BqI#Un=l~EAY6sJGr%ssEEB?m)D~JwjhU6c1Npq@rWXFxzkXfXVgdd^8uOJ5CH>1&8(@kH1 z$liorL4<&BAs2!;fm~dN)^B4C2LC(nt?jclm_hiP!7~uq4vo;%wncaJmGG9Fm@m0& zl;k=P`83H>lQCt(T{S{n(Nm_xx@kj%7X0ZX8%oY&sBHxuzM%n$j zB!xM6STdB7Jtg(|p_gAGsQzSL|D$M5VAt3ico8xXCqi)j26S+{D64yej0oswKBIC_ zdx;7*toH(Nk%dIC!i0Q_3S}cJoD~>IPL2+_T%|pl^yR1JhyYsnw*nDjYN6=BCFevK z3SI;>=hv_G8($&8-r}<-1YzJ?VM24H!Ze#3nOLh~x-zB0d`U{T_1kl!hYY#jeo0o#CQnP`*-Fq8(M6T+);VNG?BMdn@BVfQGB`K+Bv(Q;&dec#Mj zGO==7B!2x)WfIr+f*IIc<{j6Aul^(84{I!8jvLK_`SoL*(fpWe*kvcPulU>bTnXFt ztP^)iM$<$yMhiml$A+3b;zRH^_MF+^XV#pE172&*Zq2iow0UP@Joi?HMWC4aTX8}ZHY1&5e462;poBYd-wRz0i2#MZ|H{h0=qf?a?vbQi6 ze5O{jKvQ~a+pm+ZOvh&{DV&y?^Ol&#l3x&EDX@SK)btKvP*k77O4lirM0Nj-^Zpz6 z23-#A8=C(8Oet}Aan8udmJm!zMZ{^+o=~gh!=_h}d5FtJgYTf^^wjyx8)0v0#YW5m z*?w6eh@@y@a>|HF(Tk*T#=2o}MloqV7r|OCQ_~blSvV!Pa&{F-QF9bYfkvl;kter; z62YSP3%mD0ZkzrgIwj879$xT?2q6of(JEOICYTlr#Q8mb_vybOWC>51y%c8z|Gk+R z_I(NwDa+0Vj*C;?^Rxi+@`TGw-efdCv^wfQCtaw4wjM`#ZlJ)0z+rt|Z|K;CV1sPr zbqaO^EpI6=C+}y8xlM?BDgKm5`eoqV1q=IeAamg4c$-A&5$++d$MSf7X*gTg>ETzS zDJcY-$ub>80}RA0+w~bc8IUmK)tTkQ_@$EKkN?gd^Zt$w=01EzkwuwhIl(^C+j_nW zPMKvKTn`+gM8I2t>0F?KDwxtML$O;*07ZyXGHBZ?O$y zpx14g?>|>=G4rO^m2|4EZ7_#3AEkP(OSD9lD2rPM4v=j$jZsm1(fZ zmQJ@jsG+nC`~a3pEjghLG$9Q%sZ8kjK@H}H=VFVekm9~{x}uAxKR>*#5EL;VwVx&) zNf+>%3cS5y7)f7^%L#5Ums5>PWwIw4NrxjDAP;`E0OBF|sYc1i3J<+b%UfC7*zm*u zCcy<^dZ@`hWg%k$dw+xXO)coC1!$2`~pg!H-$h{AXfoQQ!kFc7<-NG{E+ilf@l9Hjvp8un6Lj4zHVjpxI1@^V zW~BgH6*$`9s5?2k3ISSftQDp~JFS#AZ(!*NoH>*si7g=e%tF>U2h2jqpbdMHv|Xr- zw`^Hn0AI$`Fs{fbJgYFCOYCFAlvt!#iGV)#sw=;>>0#N&mvX*bkpb~I#X1#xeaasx z(P+DagNRYabhhhj7OJ~Iv|&I1I_snOm@ijUR7;FaVT)Xo{_pQ2HLCw-5-7zWj?y@q zu&|q24pABb6Ui*Xt*xeF<*qJY=B#zNS0bc!2d0A1W>n%CO0UH0q>vb|lXqj*$o0P} z{e-k=9B)%c8@y7-gk?hLe(F>(*~rSwOWI?kriy&hgxuU**wHd7ma(I*VA~y)3?`&n zprZ*%Z5?oc>(-X9^8F%cf*C4*OT>X5 z`o_}=8$lJDq>bnT2czCe0PgJ!q*7?)I0;V10n*sd_DU@gM@!5wMLyJQDcM*l&Zu<% z$o1ljrgN&{g5dN9D|!j+wD|_F&H-VG6iZa6DV~o5%eC2zm<UrURHzyUn+Z(X~V|VIu%RL^zOV$q5 z!7Yjyu`13S#!$(01Mf#kZyNm2wELOoVo3W`5^&r#O7^$VuCwz!cvfXXHD@<;>!>AS z`WxDRpwa6fLpd@p`&_nZowwZ!9f12pE7GkgHyp_4 zFZi{@GUSM>YmntGUZ$nM?d@@0MnAl$jn%1SwOK}vy?C~mli-2L5Ug`~ zRUyAH>#~4fp^nhZsfO50lz|1^TpPJ`@m>>RkD{tJR=Lc5$Obm^PKw7FOM>-PLj3fw zOIiFhHoiK1aZ(0ddc95|Z0yL8)tbHVGWYup>CTm8qb>{ z7d6B8s}LlR9yn@IbR44#O24~`$Px%6PgO!Mal%+VLtmPgxAl5x)*NyuIK_B|OLOu( zhn6;vp;_D6bssa}w0RM@um* z#uNrIuI)wfrK`-{_jYRLdcTAv$A|!VGd7m0&Nc&QWXD9#L^sC>N}q4~{*urZo<=yl zLAEr^t1kL1-iZfNH@4+uPLWW~d3RlGBJ$cv7oEwZa!Y$#0mm}rhPxXhX1?iN>nQOo zr;uoZ=A94jSc3PN9){1z)|MXcy6Jw-kKXmjQH$=|`K}@0A}jp_X5tAMbq|mG*4L?I z?2g@;@6t!E2Nyr4!~~q^D;nf$UMELNko;{9&fBZM)zG@}Vk!v(48cQ+_Ur?-1QJ#Z zG~?c_4>GGibFj}u<}b1qMfb+rl^Fd{yE6Seii}6URF~HFQr%HS?>Cy5+kX&1{Uq8Y z+7PO96K;kf+E5%}CVrX7C@vkI82g<1#qIg`^ZXBxnKbx`KYosH=wrHzEmnSCj9_C^ zlRe}Tpi)!iSHsdBt;HJ{^oDgx1^I>W29qD|h~!lHfbggy#Xy!eARZ---U0l0Od_@% zNVb*wP=>tl*HH!(dW1eV;jghNR;I;T#V?|@*$tceDZLZT%}D!tdwKrB?m@XB zy@xwNx#eC)+e--hpalYgg;Fp1QMc)__DcnU3Ku38Nu_chrTGAf9s}X+U7V>!<}W-2 zXP_w(!2;8Ecvog9ei&Cmc-PZytZe+r#hMsTg#=H9LXict(rk&KBW7=(m~UwN726w4|n^r zg`)+Qt~{>&!9e4ds`!C}^H4UTwngsH!WV%7smJ#k=hMvP{GRAQz+Ig(GCt@Esq*xe z%)FVp^P${9TGfN}Td;CN0j0)-w)%VYZ-u?bVS`<4PBQ6LurHpSDR8d+?+XlCQ&;1; ze=RVOdt-|3j$icTjyJM+GG#Euc&{c{l2dNb&8nwOZrdBZ?OZy@UbvD2TuZe9;p}&We2r;h zZF?psqBI6D2e*x6gqGU4qh;Q;V^VgG#ZnWTckbPH5f2^p9bQtG;YFx;KQ8Wi&xo@D z@&41N_g>i%EB1ZP0(Tv<-$tPH<}(VR`HZrCdoxa5JywXAzvd>=nZ(O~MOzsqU*4?I z56+ete~A_JD<=3tZzQLA(r@ovB`LR@Op-Ypm)oVVUTMCBvdQ=hjjhnH#qa*sCtey1 z+*eh%d0*dqna|KdCy*lK>DRgcV3x)sL%UX+jH|c3p6gnH>y63TlFz12F=sMKG&k$A zdQiOd2pZoY7b*6WRLpEh*UR{;ge$<|jT($9k8yJ*b4MLhzR9||=IB*p*nz(}$vsJStFZ7smlb}Qvh&ey%8~aT zV7j;R-n(*j@ZWlRd%2yS+>LK5I(Fv-@V4>$oozZI6(rN7i2kUBD`@zXQSC77%*D-` zZO)`HN-8-fMgz-$DrycYdNmw0qGfYtIky=Cl@<%HCkt$=Q?pKugQ`g(tLNc@Jokf|W7{}Q{R_5)C zdakLlb0#YbQ4W`HJdJVilPnWLd3txUT3j=@C^w-s{lp?;kr)Uj(Gv3?F$aJPM4=nv zJK0Y<88t*hQ|&pyb2N@>@b6@;^hNhDbuw<>=d*)9Jk1OYHc&yvtPV*rusbH};cBR)0|>ShT%oNu}rj<9-`c7s8)P{qj7X+4S>+2vEd{{(OsK3LXko zl)RaQTxmY#dbaE)XUu~Mq(lP6Ed2p@9bw;mNB|Dbs6YmV8U_mAv1vq@GYp3CrL7po&lM&+S3;l)g-@&$gPKlI7xgBjP;9hwfS|yQ6uv~s>O$!U zvU-65sz8IX&TP<@t$VDdAtoa+8WSKlajsStmQxa&#fwxcCNzN{W(e=U=658UmBd8% z(cwUke1mQa0tt>v2`X!ndutdOr(jEOikj3L(6YlpfQMi>Hi|hq6pIR+-IzYPVjT+d z3KfG^qeccr>XOiVl*|Z`*f1`{5cg2;!WR4{)41I*w5)w~ezp|Zo!TAa0f7hOyDFJG z7vfa-<{$YRHfp49ZDvQvi|*ZnT((4};jmGIi--y|DwwcWg^P8J1Lal1-n3SZsHbJDbM9LY3!w3T zE07@`Q(~M=56Q!!;DbSE6K;hZk1es@CKz<$9nSGma)p!#DcBjTAa@o%!Lz;Nlh2bX z)bY!h2Jg_2~rZQmDmCD+F zS%-0U74bGq@`Od=9as~>=6KGzVaT&766S@&K@YQU`$+)BT0Rs|CZ z74T|8iYegxr%aiC1>`n}fmYFCh&M%Y6)X_ioNs5?TOjXL3tWoaA{xipGR!-4Y6jVO z$MU?y2RcPlBJm^WaBO4;cu$4JK}p$>?_}ku^2oL@S`pS0CEi(XCOKc}BubXemFN1&z7)m@O$h|R{olhRMG^}&Dp+7R&~-Sn z*py)35onYg$Tl97BAC|oux%LOn>ZKBu$EvTg)MzZ9GWXJ+VK=+ja4%;Zd1T5o_Q_f zU?IPlI2g;=LHMM z+HE0RD0=6oJ(Sun0yhp#RYpPxI|M@`>DMPswO?c6;l_%+7p@l9dH+RZYYdu_mLv;C ze5-h+f(fMk%{T(*MRkAFReML(f_B%WY^*3}bOr%K^3o}LqpOX+E2UZD?tZm9%ew_T zDpj3&IY~mk;Q}wCfmrdB-Zz7Ee5bCgOGvJ)7AI`aT6unK>b+jB1(gYTs%Vt4PoMdhVLtmAuxhY!SuSWO`lRB00#v*nr_9B+ z;7di{>-JBS6fs@7J2472A`Za$?XluC{2<`e@K~N117`H1{<^qYONeDjw(ZR1rGaN( zMwh4HyAJH0yhciM9*>%OX_t}R_a8*&CU&~;V@$WoWbM8dUo3y0WYZoSz3}NaIEBY} zOS8AO2Akv2Ck&oyEeZWI@}n#x(A|)8dYdsb4%=$*@~go^%*O#S>9qdfE_CldGmNM2 z@x3~uDb8~`Sr3-4Ud|cwDVHJHv6BsW61QYiVr1W@RELl^J9WPYY^~0J!h6>Icov-Jcach#vl<7!>ABG3MSWP71hJDbt>ks1~O z*91M<^v$iJJAUdo{mTvt{InJ7Sd*0{P zGr{uN&;Gh>SRz|HM^wqjjnmMraffB<>)Om<>7n$xdGOYcyhEpObNfYxJug{w9&!dJC>0V#mJ+U0stz~Lm*eg?U1ww8v>ghsU&+Fvek8FWa1 z>0@=In|!je_WoI&17WhAqNVTfa}2EVK>?Pf7~bd6r~OBF?%b2z-;sSKTw3?%$y^9zMg)80Y`4b93Zw=T&@D&o00#AwzrIna$np2 z>5d_!y9A^gC1+?s0Z~A@I~A3dZb|7H8buHg5RmR>=#cJ`?)qPYYpuQZ+V^ws=Xvpe zBN87Nhs(Ln-*J48T#?Ow@|?>+7~$oTN50aZwGq#9eb@_F>|J5kZ3^ zZIMC`g3Da>i3GbRexXb785$#4(T;_H2Sbf>nJyEnEW`^0H3U>vG(#Ik2Ya*L^Is+% zVhF|zDT)XNf+)B5$aoyO85!VT)ba#shH{ye1$x? zSA##)AE!;)Q!%j`ScKE*BEwQ*3jJEecBmD+Z_QHrHNvhDtfx&TUqFNu=)uEeHFYlI zM0_G(N`nD;KS&26M0Ww(Nh_qv+z0vkZ948XoGYdJh=(V3G+R$tr`^a6pWK5Cmgl zFfYJ6_y*I#`UbnNjRs^^sibtHr(a@W0$vxs4<^VGgk%+7lUb=qA3Hwv`?!@5U`#MF?Eth29iGW59%TZsR4 zcv1&MnHdHV~z_5XzXlNC{W*Pk2p8P_$)?3%bZqn~2T8 zp7e>}7sQ}tzxf8mn6KtTVN%U~E7sO4E+ zStwIJRHngqPvVaZ0)6BS3963(Lo3COs7d+n3oIG6*b}o73E7U>*%OlcPD6^wgCIz< zCMi>#-fmE;sJN5 z>R<(y$}vNxkx@sXhVa<{&J-vDOo6Mwkrc$wl1#LK?BGaq0_#XqrvDoSjyUpWfUDEz z#^|A%y3`8)*-)=HBPR3pk~`JsvM_zqT4L@h?%Q@V^EJd-$^H2)mN0*glQ(JH7kQ}F z*ReA<+1-?tbDVVo_d1T-D#@xMduYwt4qRdS-D!sx`{3&rB6-yg*ZR8rx+3)76ynqd z+#W2dRgS-wjcH4JRQQ|du{W5Jz=)>Ym%wnx00U>A-R71@ud5nHxMw3Qb~}EtMRNGy zcPKu+cm)ysOB#1QYx=5O%l(1r?he1$dLn9yTdT$Gh9V{YVnRE*Eag$UgV&8+)iPw^ z-tid;ha#-3xX8YGDPYXEF{S5Z){~3G)80Gs(c9a?IFwxRE#8l395+YwyXP6*oe>6? zg&tR^H$Q$wrastciv6ZvA><~Z*s;D;__)T{jFO|jvO!^EmE2Tgti2H%WX2AOlkM_y z!KgjpvAPrp zw!V?$yoR$ z>}~~Em+C`bf^|J1g1)Ld1<+(eSM>;0PPu|W)xI3nh^H1at-+ijm<&QHjFsu1wN703 zg1lmTT4R3d#?9HxzAd-z?+-m07G@x+Cl1m*p+R<~-$TTDGn{Ih@%5rRN*_f;U$^*eYU|zhM3CRt-YmAyuF2 z=I%?zqK6&2Pm@nCMi0yBd2@fhc6xd{>~|WeP*mBv^F$cy#S?@2tI*|*%PklBMMkMT#-(7zkTaTEl9eDz{<2l*ZAwtJy`5qyx6D1ODai`St= zB{zl{^wjki@(e%I$>3}i(^7Sv!&Ac^w*l4ei;D1P- zfqkP{Ba-ywUJvGn9a}Ua%PWvw1B(|zWg7aL+;V_~$LgPb_$6HKYn3vSBs&6*U*GbNtk?8Qe9S2Au zq+VT~f`HWp$1-S+%_W?BIJ$i{$Mhl3iHcHwSdMwTzIki6agrPRbIhD86=T|0NPm>A z|F0U~l3z^qSdNrcD?+MA*JdDxrpZ#7wvwvIFF?xB058w6YN(?ZjPRKfyc^RK;=dQDuUAHr_V;AyE3FVSj^;;FR4tG)2O`zONJJ?*Pblr_` zQB^ThTcJI;o?bgRYI~hNDcfCvgbof7g)jaE5fS0TUdBygz>Y9rXJb4gXqiHE+IDoA z+6WasYz4S`_HEL32-e7|l<%h+Z<6T)rVvKZ(zVH)1Y|3G(h0=l&@b5Vk809NvcOR? zv8wbK)F~S|U=SprF*Uma8apNO^0Se<;$<7NCAYMDNGUtY<%XoX4yLqDi1hX=KcGlk zFM#fK3y2*>m7Yf{KuS@AMJiXi;HZeKVB{Mz|B;#hZGg{u@jR)R*=qmjn;8x2Gu1<P2`I56knd zPgsw|sv%LAc4>V_I5cSE1cFZu$mH;e=$QuIu^An9DfOp?H|rA!ra6jC7_ejD(+K{vGrnehL+^;WCt} z)2Gp(=Mlefgg;zN-a;5FA>RmUg$i1>?Ms&? zsaxHz`Y~-_pFY?x{BpDEn@Xo*!k4S)ll+mPGzFHRdrKI(V7o#x`N^DuU}tEN^8$QU zIW8GDW6m`eX$0h(BWW4GUa2H6*9_0dNl`tL%G~kb!9t6#48gbs_;h*@0`` zp6-G^tDC-Q7QHU7NWooS5nn{&?1nwQH1u9vZf%117XOBaB-v#qa5tR{%euy2hvGY~ zvn{PS&3@UFJp8q_92WC;w{>8{)$_niGk*C?rX~Kf z_G1Gd`7`-=m_=Ln)QKBKj9ML-&paP6WZCWvS&h@Ea0cLYrTtz^n&*Y%#nXlNy@cX5 ziL<>^nSNf^lWF2hDX|vDsqMD-PRTS*$&FyIy1j^vd-Y~73LMVj={+93IRlnU8U*b{ z(0f46%=ORO8Ex%Nui|-I9bR@g)V(O%R=R}TcKs8P=D$OvA;s>IK0iQb2&lDIPb$~e zf8Tfut6ottX+?kPdSqM2Js$L7uTHD_t(mP^`kY=Ddi+Y;YJSJ~*&+Ak0LdQ$Mw)=w z9|A_m*WUsL%bx;bpTay?R2N0kg&&Pb})0ZbGV=9oC9kw=nS7zhIZ;5NNq~@fu=L>JW9;H|q?7igD zAvvz09gvb~C&>NGo-r`3W&c)jdhVie(W~2OvWTd-Vy^zU((@ud)uGch=(!|zY zoYX4uhyk86srzr45%gSY_gJJ{%)SuK-ez!3uT07M(BchZ2|T8;rq-=P!91>^8`0_cf1Dv3X`o6_Y%Jjk4s_KpD@kgF%*lRK)uFlI`s80gc%Xqvr0(%ioqpS-Qw+`cXR;bjP66I#Pb1)b>`<^w z^sR$9y5*XCVG=J!T4>RV>iXYTbRJNBL@TNoC$ix;L@{%k)&R?ILa_48`r)zts?bC?5B|A(^tx-Z980Q8V=g7*Od9~2| z%$V@wLpa#jsL*;?CAC=E49RigMNLus%q{{E$T$uW7)a2148QjBGp6!C%x&VkMsijD zI4Su&Z$Qr@Et+pqK(1RxI}@frZf=wlE*;chLb$Ydy4Nzd^kAhUBrKZG(u;zEY=d8& zQ%cqv>5W|dR`udj=X!uSng$1m=n-V^}pMK=eMNKiuL5oIuQn5y`QkeO*| z*aB}d!B@BHgRi{V1OxwEaORHJOq4pbugCGJ8=eK|@Nx$hgTJtvJd8AtA)iW$;*T zj3c7tHDLS4$GDXEWuykcO+XC8jl>O4T8aj#l1s2;(zcDgd)e|WeyIfw z5%1_AD+?hoHJLF;FVQEmHp;||eDSszN}L!@cU5l9gv2JU*RoPa;isW*FLl*(t@I}@t0`O%kOW%OZ_75+0r_3^;#fE;ylYYUys zj;cEinh_e1y`mDkl4Hu;1N1c3V5cA!HJ)#3oFnPJ(6slyne&cVT-_%h1eV)LEQ|o~ zlz_kwKZ1cl`irVJ0}FjH2EzdnELt9Z>}~ac0Dhfo0hRUB)=v2qkj(NIDkXNxCz1YS z&X&ZOyOd60VPGb=3=nh>WMK{0ykh5NAboz!>j~JnGJyek?oN)vg7mcW_G`L^G z)L_1Ql!Y}GnuugWF3(GSXO*Bv1}3WupmJQ5X8KY!ff16R)+SpBQ=l#fN7(BZrRT;= zIx8TjC;%M|#tf2k;+5V|HQ-WL7C|9({r;Wf8B0=Fi*j;@tnx#Fkg$+Qa8{+RvIlFz zW_w%UOgLV9mhFV?^Od=m7EJxE!0TlTJsLGdKnu>OjHgqg^fzLW<+g=~Rv9?j0^4T2 zVr0h6cZQ#J2;A_a7$u~hL&qHz)g88T;xhj%K-2*|S9wi5r94Z6Ok{a@Siw`xJT7{T zAf9EL*848}I+X+49GuL{z`D~UblGrm0jyBsQHUp0K}~!lB4i`4U5E=*Ym>-%;IPA} zlMo;RtUKk$4@q>hBqY>+kCj!aU@GnFmnUM`?KJqUzF+h6$?;^2;J6w4N)E8@bTyiw z9QYlX1UhF`n)Y%;bca+1nX0AXj-2@Rd`bdH$7iJtoQIadY{4uro-nniBME^h$1?L# z_(9uwp2nIf`QTJw)o2pBOt`cFMsTaM+T)RX!8-})iqC9Qon6+e9`huyuLyN!xoWg( z$z&HKW~CNz-y22&k}NXyG~t)TDKNf|gN2em^IYG-4aGf6^a3{L`F&CyXozYn9xtO4 z0y8hcrmLKga2clSM3$>ZYpYD`*}7H%-@%?*Zb(RLDK9U92l1MT@R{SA8HIe)r?so4 zg#7m+jG3ho)xBTD;1r=eSovCZE~k$kFOCCnx4n7*cUv6PoOAN+bsfq#6i#MX8MH*E zM-Bo_g~PSS#BjLw<)3gZusF1J{13pStA72*-{9KFJ>P*)h9;rrox`KQ2K*VXAA7!$ z?i+5#J+Y4B7P8&;zjV!`SK~$<0{p%LG8r#f$JeI`6ZP^tRV}pEWr+zpryh07__yj`UaI{DGriH}xG4HTGg}mf zIy@d+eEN57Ej1g^)~GimkAnYc80vrhZ5W3C%`mKm{VkMOq%gWn9Xy+`1#u7OHpi>v zrmqoisExtr=n3n48d3Wz-0}Qi;NkY-FPMSxyvO2 z4c5B;6!l#+5qtN4k0#Q0y+J;P=!YbVaIOL(bgTCNpmUu(V?bokd@hku#XJ2grn2GK zr|p_}u}u5Eu1$mImfhtMr|6tV+r#IXDhJI~JSmR=vQO7($L8dz*ab872eYd0j$Reb z!j-4OlB<*VRlw;eIo=1n0NY0t?T2+8mZDv!|Aj>Kv-#&wx*r9#gAF~s)qjg#GP@rK zgLmYQlAiFazqsT4@-@>g-M>0K^l1FPhMvAQvApy3sY-p{^wpAmPuvo8P7g`*=&8q} zxcTqswl-mDvt)MtUm}Jn51u-l#myhJ?+sHfWlZcn+YP=iWQ*}7k^bAz>Qps~+9n`- zVHp;1l2p=Ejg+OJaSr}BPy6d*LY%e!*Fq}^K&1jH$m&RDp+Hr8G`lSSkMIeMm zw$bKPtrHBnmceqB<5s4O^?e%Fz@JMt!=2`j+yu*H({t?@Q+BeVcRC|%(Ld-|4t7@F zBFZvSQcMnZ=E*baEC*Ve5``7RIs@f|{3s`bchM|OQ^1Ur4jMsnLIP#bXxs=}019J; zfBng8qjy#UD{_^S=IyWI%Vl3?7plB`rc*L~!H#QRDI9@TC2}NS?O5(9@SXg%wVw$6 z6T9_y&e7k6o^UNLXO-gG15(ydh-@#8aH!`9>g6|6T9qaVfD9YC0iCDZpr4`Z2u6mJ zkph+ukt8y?i+E24%6?AZ==%?4>)#ok+gOe1qsKP4A)WyE3z|QrY%2#MfeSN3g$H~p zqBnk?XQOC0D{cokm*KZUA^rk#ZK?)@ggUf@fI=hZ;6hPH%49@%^7u}nN!+v}M0rM< z3$de5tl7vJl4fM$p6pvcHymHoUrDhyb;1F7DH8VX&V(jXwFgo@!gnJM?_*%HLwa3~8YITE^QFNcm6)z$L%4@RtU*-|^ z58?n86aKTkK{^_9lFdLdv2U~5@wo`Z{L|?gS!5Wzu;&ONRsdCFdqgfh*I85@&BIcV zKz+#CDJ31tssJ!N$-Ydes6bbCkj3w@CB7Mc`e9^f?*$@Fz|Bm2q{1yxOFukKeLD_| zu=F}Z!OR%nyr6+3j%BKg5MW=**7!iXd8K zbjksrREr8$Ka{b^a?L_!r;w5DkP}zaVSgw@LEw^|MPaq*O@TQ)=1#_o@6EMmL3o1^ z8l*d&gJm22P!Z?C$BXJ{`WUlVOIDj6dhD1eeweuK6N1JIJ63%-@-d`%*Du77L72#_ z)X@#+s7Wf8tP_C9-sp_<*-C*x%kSsmvK<;+wnO5b0do9q1nho4?<)WiASsD;+2Kzh z;1r0(809G6?3SkBYXmsB`yhT?l|`sSwnl+CzUO^3{HB%#G28Ay4)bxs&;Y>2225B1 zfzTk#ZvTtJsEc{}cbz>gtCZ2Gtu%RXh>9{|IvCdIWS-FhO6q0q<=69-(*wW=)) zQUS7jy^_GZ9t{9w#dg8bTPCbu&8f+-a8UK1n@xGKD1z-EMM>xo97zGJK;m3kJEO#@ z_wtepr?gv*if6TOsu7% zu?C6Dj50IIN7+Va9*(W&?($v6ay=S>IeiE=0NiFm0KjdFS!D$eaES1MuK~8YJy7pu z#_&A-YD{y*b3MpT?Hz_CIC1c0(& z9g-oCpp2=nm|&|}Ey}B!V)hqD^>p8LZ|-Q!K433DJPMO!yh3Si z3FLV10!$F4)ZwqL-&zyp{45nYDFq+vMINd4NcS+})f`X(HD9ibD;_qqkWF64xr~#a zH+MQ}2%w{SFY%SXLfFlCx91Wo3np=|?I+b6_WgO&Wq+%-f;)ZtqhUT;fg{nwjy7Jh zJ9Gs|@5eowJ6;O7_~NMiYVKm-dpqT9BhgEy?gERtd;9mNZE6_owtrlHz1O2fYF768 za`Qx*&Z_;AZW~cyF&O4eN;3 z*J59XfBmdqGWFWuWyojcQ&AU#S>JZ`cy6n?^Npak4kowZxF%U`A*pLzm-mRBuqtxx zrSL0#)Y{6FCseiRsN0|X^ro>jnt!#gm^S`W`})9+)c=weG?o1>*;D?5|Mq3{Qa4*{ z6tKd3_A_JDf(yzYGiU<`FoQmy)#a`h?zXe;si}hOi|=tsJ}W1epb>XO8n>1_N#AmV zrPxXi8Ps~tL1dzqP*2*?1m^!)r*5#OL!- zB+-GP2T_O3%F|N)g75_U0l2|F1taLKd@+3Ht%T3K&M4e8gW-CZrF-Wy zA3Y4U^=-Y}JR&4-55PUA_3q!wou-}&E)4Ei@1AxIFf}h;&Aw@`OkDn^Ha^#5?R_=e z;Ie$fHaQyqL(e8`exdq*<>W?it^R|PyQyPh9ZdSpq&Ivkn)G%p`~S$vB^T4@gcV6F ze+&*8HcltiOVlG?37R|Ku}$}EvZ=P!9@+8|d(|x&j}ZO;sxuQlUeAa+dMroPWAC(Z zWgXyPyX)Z9Th61Kai4c1BMzrQt{-JZHLylYtU>ev_~iN=FQS|y%nVYeStF#EgF7DB&6?A{oi3t^y!l1=-5Fu?KA-b@M4bh& zv%{>V`l8VC>~c>XFuhh+dG*bouFT4j%H&F0QmbwD1&*YUt2@}Wr{ynR7S#0y-|Is< z&Uqq^;g`}{Kj_?8zp(9oyRx`=G(5V!xxKWpGTPN~D4Zc#ckX<%u)KNH7uyhl-#wTG z*O{MvNcoq`JGS_B`_ARP_mfql9S836;wbtH5LhvEgp};$$2u?PWw0HRDKtv?k&#uS z+>N>{CNk;y1Ex6B5RwUJxONis)|O;-rt7`=SUm$Yq@arP*fN-$yo8_8?*h|xhnyU4 z{w}lW)Yn)SB&?5Kk>qO3tqO;(R+$Jl>`2-}A%{A?tHJ^ePJ#{6f*OTFRje+sRiH=0 zCW|8UjnKF9eKWp7zc-a^z~AItEG;09D5oX|`zyUK*}(9>0&Xr;c>hhMHYNQFrk+WL zFR&?=@`^9xX`X39Rj(=R>{}~eTfZ`~e8s=MjRxiFw_ktf6+KA2M(X4R`zchV(ex^e zyq}YzwZ3%#{ybi`-I#e?F-sQ>l*-OOy?0e1bRgI4)aLaj968eg@jVM7&tn8B>R3tZ z^9v^LN}`34`iJ=^58@R&Z{d2qm(aWg=*p4`$?Iiv=LP6W+*Kr#Cy_qdbZ}gu9Xln9-7Yl#xx_#ixeh>-31?3O9D9@UKD~pdSmPA0@_Wb){z4Nb~<2ow|nMNsj^j(BP}J43p^U-2th1= zw#}dm->CCgCEN%yv>to80o;Ty{I=JTK!p|sAHHuQx(y-94hU$XqPLVUAT#!k`<#(g zmt2uLoO7+5)FIvLFBszYA>tvllIpeX2xe1L6P2x}(biaPkaA$7vVqQOG!G)C3In~g zCvb#dp%_KC>uIhpczE3O{CWSQd{(>`KyQT5qr#=pEhxBv6HCt^8w-j|_$j9*o_jih z$+Gyk%;e5aXTsu(!#K`0%u@>)bdiz{V4b)z0!FT8qomoqUK4s`Y+Pd~DO99$OL;c~YW6?2^_W@g`!hI3E+0ITUqMYAXY^`ywo8 zi5ix~L_}~uo%wlR{~mL9$B(~3lA8kszVjH|E-L!SQeFS1?8Udk zK3M&WvOiViR+*u%)S9%vEV%kJJMLOc%l%`%LBF1cWx=gKG;Zc+bqi3M^?43U-VpGw zk$671CjaSQHv$Ra>D_a;E?T2Ojj_7AFu7fZfRluawgG`FE=i(oyo?bNASqn&*m}UF z?#$E<7%(2;(fHO;?KYfBm#{q;O4l4h4#BT)2sJA*Mm5{`wesj`|2uJ4$<(eh4tKS0 zw}|3LcbQ?P{@Qyt7PFpd9;IrR8FQq}*KSF-2_dG^X%PdT%^mqp8aq$Nm@DW#XJ%Y( zm_qMMxq&jPHgsdS4_03+2igKthr&BAr<48VMFWrV*zvXJ^-QBXjTl!+|0>g()tL5t zz;XS9MCqdHlHcx%Gm7fjE_%(&)Z6dPE;DgGTxDxrj-)xivTBSa)~9IZa?K_KjWWVy zGd_;D0J~KUFDPKg^^ag*SFFc|H0KF!q5)F5v`nZiJZl%&#T)-mU$;EC5|C;+4cIVz~Yz3w!N8_=i+>y!i(d_6qek6gCv~2NY)XB*XA{L+H}FXS^7N z?)&A*!HOo+(>a3@Y=YbU7CBBssrd&5-Mij#qwpFpd!%RosPPKQ`jNo?4em`pR~zX1 z@!;$KnF(W>9Q!Ky=ghDpn|kkm@TOZ6{+Jo|?EdtojsL@&ZfOR*>7nh&2fw}PPm-qt z(ibbV|1OnjkvUl(E;C#oMlFnYCdE>9LrB9?^f&Kw3}5*E5-eSRNo0litq5us@gP=_!#BP{ z@mmou{C!+b8%yoj*|ITkE4YW^mQk;|HEOZ2lYhG&(20TevR{>fI*tJk>3wB^P)AJ+`$ zxKFsT<|CDD^2GM;qk4ad_z~^MR0>bg26t7nAP&CaRnQ-AIp0ahhtauChd4eoNE<$% z)Z}vACv_japnxX|V{C{)Y;s*&*sTI`O2KhaegRv_&xck!@XIY|2s}YBI);acn|^?A zhyib zgmNN~LxTdF(s3Tmm|jM^W2v3T)(i7a>}mhSt-QODnuNis~H|X9^>Tp=Vmc z>gt#96uHiKlrm>4MK&=GU)90kO{U?UBGd64d>c@|^@_4y8pCs(ZN2uuzFm6m-bL}< zhi^U^VR>q<*GiQ06uoo1DArTPH_}Z1QLwAxK`lG}nlQAOV~;S6SdW}o57+tyCSRcW z$Av!jrN>hNFHmGP*GX}3!;aKmtK734=^ZSv0$nyI!gn#}`)AoGh;^PKctiH{W3xW{ zB7}3mu{$|?1cc2`8X#8^Vm%iK9q>JovvBE>QCde3K^3URO3{Q2%*%!gay}mc)p?n% z<^+DB@E&(FF|^-ZD7<)#!IM^UGORVp2-3>+e3-ticb5j?G%|{yAMpKD-qYpjk)ulc z8q*J0kw5ks=3^@TDj50&2F1{QelE=Rtk{i09p48e=uNHmisbA=Ue+o>Qf7hc;-qzO zviulKwvUKA`FnvYF?b~P*~pb(y6jwF!MT7;U&8TKg+O0WVm!OmY?kDh+>qG8@z8)W z>*xzfeyq$4*Vos|dDUL4H|WF{NrMCaIp_NK3&M5H!Fru$O5Nnj@dA+oDSVJvsktbe zXXYPhVnVhZ3khP3x^cjK^-;=#im!aGNr@l=O6vZWZvK{xKni$}%6E0Z?i3Bhcl8-a zU~MMUFH;nykKPhb`tTZ5N(X;yK@upNf8TO8@Mw^Ktt-@Rwna0VKQhLuGbumZlF5Qb ztuu*oB&T_iScSbMMWcOJ)riSIRrH}oAe!t{XVPx|tpaW`8-)O_vB7Hl{~ecOwptCG zmk6BE&SOUZ(dB9?m8)2w?3w8-!afQ*>KelFl}IK4eR{(p1zIY>@ijCL5TYw!Lz(90 zMnnxq#1V{tepEwXDj;)4 z*dyIatGH~~uh1($xmEc@2N>*h;TrRX@RVn46h|!@4iM}CQp(u8>)lKw4{4Nqr&#MX-ouyt_U2l@74oZNv(Sz!b1hRK=%550Uiht>9K(y28h5Yo>GH!7;ZvJfnv-M z9Ump=+V}O+4z3MV_z7wCMXEPYS%=<;0Pm~9-1MI^_tEzqlio>Q19W^04khwuQ9vmz zzBm1z1?a|u7D&15uU%q(=%Pbh7Ga5vTKpV$$m@xd)X|86BM{<)6CmYDo)`en@H92L z^nIF?tJepTL@7Y}gcsiE>W3jHZRbkX$^|U%J2-IE&U0mn465q|^kpO(iq@7v=@0-u z3j83)44#IBsHVNjauqiC0=J}*0ZaPWvQu>7^W7}FymDezuV(N_bMGdE+dx>G$+WbJ z$P=c>sUXaCO#6J6ryuq*iPPxY*j>a!c|`Y*DP(lwRjg}>KK>m^l4Z{)_w z?xPvudgVav(*L3S^$F4~y!`dW|8M25fuHB5QSThq{Qp+|8rc1RQ~s*_-^*V^T`pTw zmIEA&gx=mUjZ@>>8SjoBKm4cGq|hAu{^+R$9BE{5R!uf`;_dhl3$4nL-);&-P~q z0arCtx6n5qpLcAO>4YHi_uURmx-WiLHX<28T%&#eoUB*@T#oQVSa>J^OLisL+6ufGmu_>N=m~cP zwW?}n(zQV(Y8L}BQAHoAHkA?Sz1jk*+5)%!8?~4qxa@(?k1i`~=bBhu z!0sFLQ*6ZkBr-;<)mAI}or2oa<@trP+H7s>jq*pKf!H4@xJXvSxLZZxkMOF6L+jPq zn)ZwL>REZ`hNml5Bd^yDPtw3R+cGN_MVWSZn!Rn>@OB5~Rxz#Y#6+lh0Vk2&Uh|7&OdQF{H**?7wkS&wAvNho zuwC@}JCZ02rUS;(l=sXbL7vJ<=q$cb_S!9LxPJsB{ z1F6y)MC*Vl-$7iLPxlsa3c-MGqt?ytgaf}jq4Ks2GGV!qbO%hS50(qElcK%Pd^-J^@4~wHU4+#HV3Lm zhXWqLtUxsaxjys(QE3GE-S#mHJUs#ma&LL+2AOUGgu4Bv4!B>d(xBXaKO6s+8O`&d z5a<@i2!;j75%5TBNBOqi$zn2gfY2@zM- z#E_FPCq(iU1Ldp$;77XM0Of`_QD*gzmuSWij6czUKU>~#imAJka<7V`Tz@|>P2}%o?pdpdX znUyliNcb`+1gOD@(UewV+eSTN6vjuHY688g%p>uEBV|&M!Kk1>;NVhjmb8qGxdALF z0$kl;bd^Q=2!Mo32;vP5L|~u=O~x$$ITrA`0_~o8c%gw)U>+C7qbHW_jlij8R!(c} z&{tqfsl6+yKCc&I)@eK@3iqR@RRkuXf5sK7-lhM^n3;nrlHCh7!&a{zd}?t@HJfNk$rv&d7<>WD!V zy5KkpN|M?(>K9`&MuDm+gac$@<;z3@%MY7qvahLSd`Fi%MMV!|hBWM+7nI_q>pfvv$daXFzlrLk7 zm!`pfj_-L74TGco<(i^0f&Y;>MBz**IOm3}LB7KP_Dq=UFF6j;Q`Nbuu1B>JoH@%6 z{x(&nJZW61#LpH%1PG;oQGFjUs^J-MqfS<5={~KAh^OT8?4l<(bLqPcYt z9IHwOEPS#KYi{fq1ZPI!2dsqN$J_*FS;fg473&wM>-Lod1lPD~Pd&|x9n>DsdPFTR?Nrm#PmqP&4 zH`;FqfZM}$Bb59QK?SNtQN*t>Wt(VT^di&c5mTT_h57RGLY`Mu2c=!wKSEV13fouFo!pFF`qh_wH~_uiFXzJpk&Rl@2+wUSBr}HE zf$aSJ2ogQhcIE}QZiLnI)Npt$X$X0tgG@{@WXIBWuOMK7Pxv)>>JS%o2-vEci$Z;H zIw_UPsX+FyGdL-LC7RbsO=Lt+TUj@pL#9lGEL4`SmW$L?$(}j9aNQ36!r%zJFyye( zTBk6uYFtUW7C~@d=E6uFs(6%*XdO5;6d6bZba*)p?#}V8 zpYCD~;rn5!WEogP#R@pDr}FWEqTaya5*BQA#R=pcfd57_mH=2?CRUWq9w~5>6i-xw z55Qeon)!T9;0376CVv)KR5h@g;W1>@hzDxFW?Zx3$&SNpx^pj~Dos?B2=j6pU_r^` zEr|)A0h+liLyDGx(R&m%ETRVf6Bj3Uz2eU=se%E3QyzlDC=e2;9UKF#6zFA$PztOJ zLQzZm(EKL{y7cvq19kOBgAJD2663q%8eOhHBS3ckEpH!JJ$8H%ZOjEN^@nibw{z_^aT<$kx&+e>jg)r+5+=Zttv~xtwj&&Bk!dEzq zwDDpM|1rtSCv&WtU5XoUSGQnISDDUC*Mg3?#4NoF4X%`1b`ORz5^yuV!`0~Dy_FK$ z(~(ExA7X;&9t45@wa(%F-`6?RA1;Rjl`oL=f3JM$S^cZ>MfC3p<;~xfFThTY-<2;N zca<-x?|ci;7u-`?{#N;d7XBZVFDLyB`W|xr#U^^ox7z%_n2b)pd_6jR$vT{W&xUAQ z=;7KxupRf+-!oO0u0vCQ&s6=F$`?~Ac;!pl*ZcJ36M)WSo9IbE|WqXUv ze%JcK1+=~pMc{m<2x%7}ir~)Zzqwh_5E=N2au|L*K3P*&Q7$VwfL&_aGA1$Ys7pB+ zNHZyS>vHKP8kDcuzaXbEm)au#`px!wcukGG1x*&ej0KB~#pJlQ-q5`Vn%F|ebbS%J zC{}K$R&_usy3N{0zcl&&#C;*_A`*rdkKBrY2*_vD;8DCD?lYB;_Bglf>3IqjK zqy@)XwI!svvTm|gUYYw%-DGN0u+L|Oztmp(v*M~HW2#YTuRuo0l*3^jv}+Fp!(bOh zKgYucgY^ks&Rco(^GW-^Ir0>cKgEck14I1V??LYpWCJkdZ(?=T1_IsMEqSvjMDIl6 z^Aw|mULSYcdwQ?m|EJjQApKixm;IaA{$gu&#{n-P1gM`Brrx9aa{WME(6uA~bmbzd zzdx+*s4_hB^xt=8OwR4xZi`P%itOA+f4%;u;`DOaqSDaG%i)oU4vq6v!Pc%>h2-D{ zQL)550WCX%=@3qg6Vbo5PWt?_brP=t-a5(k@2!&}yUe+%{jJO!BewlrKVr+iii8&t z;bk2BM6a<>*oM|QD7L?HpG$A7u~H}-CHz+ed;j%+qNzACrX!ViJ2Q~~N?=#F{YL^@ zsTRFF`8s;#cLG~U^13|Ai~Qdc*rFtIajNOIIo>RHt&=g3!gb?P+*MhHddb4y+cJVr zl`LD|u(;)b(Rc4oO)hSuqSfdrc`a+q@BTbBWdf%r75-l*k40&AW|;R{&(etkm3`f5 zzUFi0JnNPl-l>E>V>iebs2RVHnKm^0F!w+}iSrjXmuQw;A#Q{^zkt$o_`|1d!ty{E z?6a5Ju|N&EKuv@(fK~$5@-s;GBPEFCYd>$u`S`UomA7Y6qI?4myeH2I1SGeLbnbt-1z8w+>$FGnluLpA6cjjUnMOYPw{}Z`qoVx$(Knl}c_%ue+;CdO z@-&k=mPL)09|%Mi*3x|H6U$TP-}eTC?NWyLf^TW-*djK#D5IoVs8y^yRICy^ax@-L zgpj|4!MA3t@7T$ng#v!@&lcd#SgcDxPRVNqP9Uwa@V9`^ZZA~& ztDIc>8;rwkP{wT#?`MnVhD^^-tJhh~R#|HIU#>0?2TJGjShhN1K{}oYP{^;#v|!?7 zKQ%Nh_RR-*?hVl0n4{I|BC;?Dsnih$|Ui)@Gh zcfctS-UGqqiX+6#t@qxWdk$*-hrbsybToo+1cH4y92=$d$UBif;UgpC<7fo=%vf;) zV>8ech{y;UWI{4$MYew2*c&P^g;pUY6@Z~N7J*_`tZzPILYG`>P)PpB=!1IS1ZLQ= zRr`ly>-PTOdj6mMzUJE|!X~?tQUwtHH{s^C0w&qyI=ANA9PN8=n${`$CM?^9s>y3{ z31H#kA?Dj;@DIrG3niDX2%Fp|m-ERYzpM@*cxp$y9?s=_QNcEx$}t$jITACo_N4xa z$s4|qcH40!@idBZHaY*~R}3u`*`WJ;0=B(xb|&OZgeb~`&=jV^F=n3LMn7T96N#_{ zT~c+R{!V%&?C-CMucO=^ zYPdFdfrsTw1@icB9E$gw_P0xlX=%JZ@ziWvf3^(_mfdkEHE>}yr-0fzh5Mo~QvBI= zlJl>mexaS}p*K%1;q5btd)9>beh7jxfd1!SKo37u|FzKxII0jCs4N;;LemR4@ga}1 z-LiIMCK#TtIc_xc$WR3UZAa)*K$kq$dtU1hDg>$qF|ru4FUJaKLCz(y5_*pdaN+0H zYo4u9rVCjv;9!{N9WDIjAae zFaM7ji_9+&4aS3~1_F*&P9k5>Ade7ma|ibxnHZ2(jjz&SH%-&)mP+qXezn9>XPCK0DF&K1l%}_1mdsNfC9<5+;XX_l>fF= zzPdEdT$XL}`gHH`L{C2G3|WSGTti^t{-w-2>my~_M!@*bX~eFaTkk7# zv&}j^y`jJCU?m^_*umBZ{<4D=7d`!+yEF4q(^_@u{{R~U)%t%8y-#U3U4p1x;BpMx;&c;87qc^LzCu!C*)=L1o}%L8E8jH~n9XL~z6=j%|CaWvlX>cJ(0tW>Y`#-{$2B-(!HZ!IwG0|IBp zgu%pLju>Xd?PA`#c8L?T-M_u1KbsI2XpQo@Z+dyu9oqCVt$u=z*)?~x_5*^>8F&tH z!0Uq2*jhG|In?_zw$}eoV@({+ZMqUi9InF|&Rq&frNIU_qZa`+W5Gpo#Wy**9m;TNS}69t*u~XIGTlSWDD9GaCF|@F81UeNKt1kc!W)QRG#b+#0y1UUX#7g_mq6Wq8Vt+ZH2bA zr(-3|xz7t8IV>X1Y|;(bm5tf8{&gC(3UU6z_yEP&AGXb(W*1=4bO_l&ctB4O_^o#6 zhQiC=1g!eyctEHAl$E#3R%b@*^d}C0<~!axpho>7MUCpFi?x@}6}ygCA=Gc~&DqJK zNu(v^H7-Gipees#sqEMQoeIpNft-MZK!MUXH-X5GhCn{T z13CUtE$;ZH3q*8RCF5WGfLrmKn?(85O06u#*>ScZNU#FYKU*fnAZu-tK0}BmXDML^ z8fLcxEj{@mzAXVDpZsbU)#~*|MylUVOHsd+#33$R!eu1g3>~JTQzw`5DF_2`Q97 znvx6k|I=Q$AvZx4WpsMkWG?kbWt9x1-a`PD)pic+GhY2wu70sidrGiume*v^NRBXT z$TQmp5;!}K@ka)i!6V|pK;R43^xbYj;22!UnKT7xs6Jaj(fm`KO|hU5fHQn@=E-8~ zf9GWnOgsR%Y%bDfJReg`bT+itqBj01H_`lp$bKTd_FQ^9M;{j@Hw+Z4wjnXPCnBN9 zMRFANNLhpBK%{X zD3neoek&2dpx^kVB>m0H4!9oy^RihWu;c;^gEe#76-U@hv0v;~sE39D!9-Pe8u@O( zdAg|&kNT=dh*P*)Q46)%!EXzlbPH95BXC7kKg4MhFP-xC1{~sDjq+{(U@D+HFF<^~ccG}>bzvRM zu;xDStOmVz1kRO;ds*(L{ytYqy(cUm4Wk%00GmO7=Yq|kUtF%s>;Gv6EolPGpcr35 z2L80d*;Yk$#sD*vMMtXips<;(C2O@B;j zlUx3m%ZW2=*03x%q$P$4sk0ep0J1sJN{nJ+$ zrk-zxBgE#qrhj^xz5pRx5b!6LVAlH2T*A@=@1I=4hIh26saWZo6T$O# zZIVT4FP0CId+z3tQ#q)mtPzfH|kknP2jsWq{z-l&(Iw47hU!%7E9$ zI3aP)UF*u9?*y-q!}#j17zW*JPnKS4aH2>xv=oq>O84|wu#87sl8=S|w`8LsEA+1_ zpwIg6DnL2(zp4PFq}ey_>sl$Jnf@}Gm0vG8?x=_#;!*o+w6wXtX|5A2-KCS9(MK}> zkP^J5A_1d&G2Rv1e*3x*S<63RNtZG_!8Kf?@pi!TCt!0!_YQoxTkZrG0#)awA6(E} zq(T(7{vp~h0E;$kmTh7kc{c#jM)-xdfIa2cJ;?NVLkU)Kf|pjClEL>B`2I(ml6}7@ z@bl2xtiF9k7MbGUiOT7SJ%3vZ^oqTKqxPO59nsFs&=gcFtUFACLxQn(y+b{$4!w8? z-;T9^n-UQOL|q7eImu9d+;4nyNCJGa*A#C}^fnB#+ zd*~;wYbv9&THr=BAJR}eXTfv!KqUHhEr|{{4 z#yi_;rSr{c)KQOP-SvTB7N+Oh#ec#xldkFcZ67v0XcJP}E|qVtk?!4BNZtWE1}cj- zOPh1A_~`nd%w?xH&dTG*K8ejJEc0I#W6!akataiZT?^HdU9C+PUEDo!npu*0|3^!d7h)Da#+IV-OA=nFyilV2?NBGa z97^?)ROpH+dP~s!5pd$tazubGczD@Kvy5)oh~DCDYQS}T-eZeq z-6?$15VLx;ntn|i->3@+k+g<{qbTk8pa!)*s*p^j2woTnM%1&GqS5@$zMY`b^WXoN z1U#|)^F~~<;O_y_OBPOuJ11k{lJ}lBlSpE|_u+u>0nacs89{%cP6nf08^#P-8!*KR0G zoj6rC0)jqO&-X2vw{Ksx9As}`f#nwP!sjcb@Gp{rPD$Wk*8U%!l)Rk?e-ni=wf|B5 zJ>mzbzoirz0L(OUd5>^=F#+U)9Gg%57X#LzppXi@5P>zQN93-oqa590hDYm|{f`3u zSDgaRs3X?54q(p5j=r7pekb}_m#&2_p2=bTPSC@6_Q9Z+&5M+4j}jBOw`X;#*QYs2 z-cCVGG3J%Oev0^GBkGBK!$)RTQW&TEG7aOQYdCp92|T@0mn>Bz6&R`%{T)LRzsIj^ z`vhIuQ4F`%55ANN|3V`bbL<=FCLYX|ds=Kv6E6;oNc81M^s!hU33F;#tmreSepIIO zv;2jn^3mP(Q_d^oS^eS{A{=hMd+EX)c%_}=^vIZUvK($NheX&?sPOk)k@Un^=F#5d z;1Rk(PD%m~bMUMugzVSk9nih5g?{~R@$;q%wESdh){%q9oBaZZdL9Nl2Vscv@-@pm zXNGs$pvm=2kan=`Xjkm;1W_W3q6IoF^coy^UKv_IBrTNPf%>YZsuoBrvBtLil~@7> zmKXGY*uN;vNyRV@<4?nH2%%Rb8jNh^f&SNRf_dLTs40xDc^PHeq^?4KjJbHOdWb1r z%dLw!=)8ugCE4c50g1?C0rR{jCpoGt86_8Ay8cTLh7eM^h7%vkWTZ+}EIpz!0GkR1 zLn_~wdrBt#D@<;Dau)XVTvxdZIB&xqbZn43CIRc3{fz7VJ0c8= zQDlW}Nd3Wx%Ivog^^kj((Ehll&*)0PE-Y18{C0vZH{?`M;HSTCT z-8Xw+UKBS(wiHAp4OkbH918*Ve%8U>hMry~>AH(Mu^fknZMzuy=NbkvGt7%wC$`*iGbQ#Xyf0}q zhY~+(Wszv0yVdr{$6Ws7#K;&ktG6E|&`Y5}Lic~f7)z{prKsNAH!Bki ze@1{|wF&fsQmCr@J!7`$5(S4R?R#GN`+*9FWB1kClV7eCq0T1y>13V^?*&VQuG$NO znpg$&UF>)krm6pnTH5EQDv=QwG1dZnkFttV`F;OFjFnYZWZ7Crm`pWXrm}xvGoJD= zo)S?%IWU!SV;(@K!UfpCw9}d!B>~SPZYQZIE_X9u70s?VtQq{{J@2V#Tk4h3e zf5^9oi`sU)A&Vnew9QTswS5t${h^LbIK6iw7;hr9BK)nWxfx>}*{w0-MDPTN+*RPA ze^LyQVV4}gho9>7xpg5#-uQ6L`q$hSrDGxtDf@;TRQAChc7CgRJe{LT%XaRxpdP;|=gDr_PM;MVujPlhg=l!ksj0(~1Jyf)*yU-0&i; z8*y4PTK3}M3W@@fhK7p2n#7+ zx3&J^X9o6meb}ew-dH;^E*pt~n&-hUeyM-UZZ3mfM`q5(V%{B^9c^|sW<=pQ z&F0wcM~V#3ee0J!ap{c=pVs9^x>`GkhaLzi^!(dhdNC$4e3xIgS+IlIIwc$o(R^61 zTlVKo|I5{Wb$nE;g=sug(F~2eb-}og>w+)#j4+jG&~}Yb7cr9xW27`7yhr%oBb~F< z69P}&w-AwFtjhsrs4>OCM?DWUmfr+mx1nFh<)J|y38wgcdnMRmm%mTER!uYiVDP;n z>9Q#?M;7ea(LM)jRwZrFw6}ibB8r?9kH+GVGY}$*Mg?!vAPACx=Z3>zA@;x0NWaWg zlHL^^K$smw0CJV{xO~>Y%^lV+OX!yjp9;*oA6I+BdcK3u*`s$qZ~Ds-H4P!0yhtEa z;QVw1^b+kft9pdM6U~CikfI5G1B!2EoO#$s3BBDyj}%oKL|Sm7of+gi0fIcVJ`BVw z7(tvIfNm>3K>h+Mz>km|twoiqg)v!Hy7mG6<2DP+i8AK+c2s%3^? z`|R9j%Lg}_%LyE)!ShJy2!7_6=wQGsEICRnCArj=BqnE#g;oioMSwNmQL01_j3|3Z zXxz^{+hRHl3Od1c09y8D<6pROSYQtn{!r-cDRa6S{$wE0G{6hq(y6f7`dDz}Z2f`z zorFvXAoC5U$u>vFI>K`nMWt^4e{dzm1%elShK)fwH*Y3tDa@YD7u9J6feFRHhC4+1 zh03cy>3*RgrKS5x2aZzaMPm5kv9R=3VD z53na$*Qb9t3p|s!nKJ=S-Oi5yW?>Uc-<1IY>d^NS_VCV%@h2Xp%gvyN1h&sjpB2AL z&SbH{d>EqK?G(W0Brws8N{=EOsw3hg(8A;NJanjyJKi+C63E8mjBu!BicaVIi@3h- zU)!J$LG47;C!1t5`O~PTT*Jw`e6Z$^VTOwAz4ZZhe3MkZo#gf(#f%l8n7O12HU_EH zN2q$As~#DsQcR|p=KlUUy|DHz191mGN&j>8Blq1{Jh$DvbvEANv=cCHuwpM2>?9K7 zWYp1>sH5k$OZ?Z7b*Ah7ef+;zX7JdtAO2;UxgYK?PAjYZCk3wH5rGPIH&)EAXDxI$ z9W|}<_vhEId>;#lxhrl%08|tlJ?cv3rBBxVh!?}yiH(`HjF3Em^Fv$tWeBHtz)X=? z-fU8tj*yH!)6LJ}D#_37-*j=wA2&myG&}q{)D;ugo~X-SuU`mcO6vbd{_SJ1?;4LM zI5od=;|D;|hl2js4XPaHuU4e|f28LB=L8&9n+cX_RjC)hok-)~P;`X z84X1}Z&2lx&&LIBe-i&^0*-}(*In|7@cEpYBIIu7` zZXDc2lRsE5(*WpY_KB@iP)Yp$L1(Q6>t*J?F46sT>j2YP_axd+r0l1lOWB2YzHLqx z)+}&6F+AP7>IZQ>@!j8FU9Twk+ZeqmF*W;!Juzi|w$Gc$9A6QGUpxIa>qH0xyJ?^>XU}KF1RSwk@E0h9)XzxboMW>00kOzr`0A1_ zmwVlN0upmr1Jfi72y8CXD$gZ3fJg9dS{Z*Ae_X^NJ7z<$D*c9gA9{~{22L_#H=n;F zn_qt-Zn4LR3sh#LCAA@8P6v?AoA#kg0*)y07o}tkNhtKQk`9M?zn~p%nwRjFi_Cv3 zswraFq?V)y!^)?qAz(w4etRmZvxmozJVqB!NuOz=+JqIdj&8M076%pf zhKxn5Kv9p96-kOLUO0N16+HEO^oflo#PpeTN)u|1j?sn=MBT%7gRp?1VfV1F^wYcv za6P))0NoQB4Fw=QC=O8>G+0Yywrx~IZBF@ z#gu@0@F6)OVp>7HwyZX$C|R9~WPHu*@qByuCM2P3np5HN?PCssKy* z;z}HsUPqeCb-Fv$p;(rAVS-ZS1u<>p;&zOGl~T~;rJ$hm*m51Nw%T+0^dmTZ+6^8K zeEmEe2)<`MJI?6<3}f1e|g!#vBehBuP^Ev#D1{!V!{O0nR zTK}Wpyu4p_qxO0_q!rhVmSX3>$Uu$VD}dfyTl=1I^dZZ233VhZ4a0*l;)#`vLhS5eG2Vr`CquYun-nOl9I% zCm?md%hy1%SEaM>9tz?3`L^x1;9qV#-o=9r-!Eamd5-vPWdW3A`tR2b18`jDpMHBR z$!(oKXYI|cp3d%a^Yxg{o>=2{ztsMAXCo8!lU&nEc9Jh`ZaL_O&AYdE2N?0L24jEx zsSzh0r?;&`$)fZd^ZXRTbJdKePv!VmV@rPs@e`Lfms@V>@PK}$2?Qz!>sMB`rC3Ou zY^qXe>Q>8Ztr8qi}_>&Wds@6RF?#F z%bWg~>Ykfe9M%7Gw|wzNOC6~?11KPNLR+!kg%H2%pO~d<$$pwpa!l2TPmehD9KEwu z8(nxm$=xsB)0Mmt8?$Oe$^^qN*lC-VaOBSS=cIf1wtJlJnL3#T?s-eV>XmC#iVD;I zhp4XAp3rLTdA83r_xE1}9>V!Q1Rh>6foH|5|H1CWJ9xwA#=QQuwQHY*5c1b)ysKM zJ(x=tNHlDbwWl0=oxQ4kF{hXy9q3zngU-sZ+pF8Y-LQ;z{i0D|of5zR8&;$SJKrZq zq{DT#!cSi9yk#G&p-)0N({+!UM-|I@pXGhBf#mD9_j4zSDy(KE-a+%~Y3uOr_@kGV zuUDVZARjWr9_hIZXV8@FZefOxkpMB{_Xn@tVB`yZP}^LD>$+~biNg5n6|3K#{C_j-@*jk{2(meg@@qH}^YQiI`KTwj)NRZ=}~NUbcdMc<)dTFK7wTr44tp$Nz! zdNe7SN!&Q0Ah{B%%~a-e;`F#)hdfiW8*>l$B=<*lTg0i^N0+&vrHmPer&j84zf+M3n)q~u+)(NQn=l-ANE;^N;@#93I? zh~#yyvo?ww&alR>)$ZNs;ogbc&VMZ_+Xq8JR;l(QA`)_KcJRbE)6t%(x_fSW_2-@* z&|`8E(c=<3kDGrB@0~6@({gE>Z(;?9tm5zg`+$u(tcC?Yr6*1enKHqQw0?IN*=ya~ zEQ?WriEGu>+2QirajDGCNEQi`n`8R!H=@Zf{`U2trlw5 zNBX#NmRwe=pdC9NFc*BkC!nzAJBb#sheehWoFs%^KIEK$dq~t`;PjAt%+58?+err3 zi&>q=?-{(j+%~W#=xB$h?QqxS=74GiRtTSt)DJW1G5uUfFryjVIgK=lh##n#_2>+u zRJLfc?Y4N|hc}u$#duV(Cr4O_7}jt(lDN^t+O%z)VbK00Rj_!ltk`X9%m<4pXX70! z`Z1y=W%$1MC{qT*90#i}%|@D|t_FM@UXz_RlCTKSHyd?c2JQq`ASc?EvC4@xFCC^EBJAkRzs z=r8&F8SMghZl`lkCR$Gd5w5Ba4wvK8XfJh?R|?aLR&zZZYER&0_G7;BXKDXtEI4jk z4V(kzXMgl?2)V?2+&fE7j?uW#l$&H%S0*T!56$`d{R89s zv%w#8TR) zz(kbAr3rCyrhVr`tijhDdlRYW-tPT@YL=brWSWYYZXoN~L`4WFay z>ExIqT(gs+rpm=CG%M-HG)o)V4}1@JcX_L&9woh7@G_-HwKp-c&L{ltz6GZ~-PzDZ zqSqaJZ66CSi1BZeZTp_~OdnlpYkV6bsK$P{{EkK6s6MxS?X!fxa+d#K?JM{FhWw#U z_sz=HuQKmzvbMQ*GLJfHu67r2ZEQ?F?QD3bW8n;VB?~K_I#vVeE%<{6xKtD*n)fXy z`!`p_&g*Ee)W1{#DuT$$4^?s#Hx>EuT|a}A5hnp0{6jc zT^uHSj}3*z5Jl_YRj-9s&!WDVc=cx8O&r;lov+}r)~Q*lkY&Cs|iMTo{PZg04osjZTT-5yD-uww;{{d&Z8 z^q-QOal5?jb{>3lTJp#o_=cm~I$hc2;bqJZ3FC#_uOZ@Qk4tX2DL%O*Y%U3`K5$v- z=}g`nE)m1s_V~=HK1|#S2$;R!XSoTK0(yt=n-gTYN}GAK%#b|X@-wAow3^$9kwgE|Ng`$qp$ zKqUEPO5{*Su>(FfVU`jCjn5(U>cdlhc4Mt?@5n4Nql?T_Pq8~4>^Iv3T#QG^9o?6T+VJ&zG%X6@1iF2vNl~2F3G9_@H zT4CzIVlIF$ghvHYhn28Q7x%yx_Vr@D<1eJPm~Sn2yfk_`*`ZUtA!@?TE`X^6F`e2R zKF}akn9G{4%k~aTNUQjLAOCRp1KX_tv5NPXbnh89zZ-{vZh_Hh>A^b+EGeAq0@^x4 zf(haHi(Qf;zwcishWY~4zGp&>0L)rCKcpWZEbU5Idr0k=M~CwlF-VM-F)u2Y08!`J zLK`jwU57NbhKV1x{>3knA{>1V#`0yB+Va;2l&7)!{_n$Chh;kGnGY~(37M_5P2CZh zt*)LRH6W5e9nz5W*q%W~5LR6sh%gGv7N)efZ8Sh%^Dh(j=o?gskYFAP2wtSM_{l1V{*m z{u<$!bcjOq=m!|p6X_g`)$@3sA1kz|#D+i(aqVC4u#2HeX9QIR@f8b5OEs9uOYvM_ z`o&a%-DPR6v(P9S$i@e{7=o5V5c>r>whD&ILJCC?8(Q`&T$RbQ3XrnCwha?n;0T1Aenzwg~XVsZ{C#cryAq!E-xk#tApu2Kn9;ofk==oj9Z z9f*CEqsnDc=0f)6xO2tcGJ+m_-5H@L9sH0C3dr}+(IAvA0$D#r$*n0@50D^Bp&@(&C<-lW`TK_ymv8H8SD#zdAs7T@V9g6qjbbZR zPa*WV$?FJZ4GHlzf5T5SzprLL@i}r+)!Qjky%We_c>h617zVuq1f%gj@B_9q6dmD9 z4GcdH#xLqip# zGI>gOF=gXG%Cd0s?AK*SiFw=+c$-BI=9ViXok}{ydgl&l6pbb|sCs8?gP+l<#!d4t z3Gvki&A%+#z#sqhX_~N+WJ47bKWxsU5aO#iSu5ty;C%vxfzV+^m6@pv@Cs^_XjEAc zLH;U;ap6HMADFv|^F3r~Ux1f^ae`{;*^;@jFHdl~G^y|1sZ~k_=+T0lUaFe@-N<=A$2W`Zmi z4@wm1a=#FJtRQ!P$fLXNKLNf=1ux23(Mk_!yM{=VySw_`FB}Z8qnVu@#7-+zeoQmc zf!{1B^`3xWSosQpKGjf%ONz}QWoUKRDu4AKiL|X1dmZ`iO{Qfc< zQr9n;{MRX8hYX)v8>0YfM}#T<4-UrGE|wpvg%y+Ug=rUkl+q{Fe_(MHz!$L+WPt4D zDMtHbYnY21jOE2P9cWGP-!r8xxPqz=9Ce`8{1REeI6~54JJ0iVSay90@BgUEDf?9$ zSI!v;xJFAA5uNF|vMHT@djGz3C3<}HlPz*01F1x5^{ zZQcA?v#FIm(lRJf%RfX%$o_z(QP|!}+xGRQgOyPDJ4INPl8{nT$Wp&jiQ+EO^*E)( zsE|?{&3XW~NpY~<+yjFFUM4ZNRQ+a+Gz^k{ef{EiSZ$EFJoY%fJVyKt6Gjg2Y@>lN{=Ia6Lm`q$AE={y@-EV&k6q8frBE~}H&jfrDV-Q4) z^?;}0gv##=Qeh>|rxk~!^^NKQ1JW!8AL&NR;B?2kSi*=P3NJNr448u3H1@# z4oM7XUjR49nd)(c*z+{iBZ?)KQbw9<7=D@#Drx#9vBppFp5A+*QEe>O?5tTeEI+A^ zQOcnz{pb>%sG-JRRQi=kaAP6ZbI?}uTFFKU{6cI6sc{bWUXr+7gsLO-`9_Y=dCKb6 z`vIZO4%#o$3~E6zJc z5IHmCD&`bnP&vdHwB6O`aR?m35lk)53ngqm1WlsoLk7LDD)2T_?(YcB*cnUSAj+OW z6m`%9iM#9PGI0ed5r;d_;yHhUgNGHSVef}d#exrdM;wkpOXwX9M-3}Y!`?#yTOde- z{97>sL@|;w?&z_y$`>q8!z@iEUd?REAARYs6oVf$y+grf8HjKeajzwI`fBG*2X!xA z;yZM4xIAK(A+%1Qo)Htr5LeL3V*`IT77CRCwG_1iq=se5_$|JC9<)ZxjG0Y_I0?SS zp!u{XBsGL|2@Nq$;U$#fC`LaElp-I5SbxSMk|3laV$@;pBmx8?g(o)jO!bZ{Jr1XU z(;fVZZ0cf8sVBl$s7fq+PO<8BIBmYJ#AGP-yp17}9HUaP>2ky2)>V~)WBH=SM#4I% z3alK}!`yG`z4+~n_;G3(JAy)V7IldIg{rzgu2_Y|;Ysd}`95OhG|u2Fcz$K}+REj~W7a4M?@p4#a+l#AWzMh%$ukaB7&c zOQwVHfcN@Iv?GfG7q3R3YCFm|+31w~-^UdAo5fUu_E9*n}EmHgT)mQFnQvpGw^1MG|y#Q z1HPKVu1^0i9BopZ(1N}Jk2MD&`ufm|+X*iA8vY#8?_YbQB?d~5-#&7)6xO_naH7J$ zzIN_F`URp`k>>4?k#c)&RH)@QH}K1Fzr#vr3&jmqx1@_MvI$fjXu|Vj*2%s8Tjf1> zt0fRYd_9w!F-KIW=_>kd>=X+qd$5F5L#30#OA^guLTS;uMa0EbnO~JAT@dC&m0(e- z!U(;I-DfGW-!?P`MP)lX%+YJJG%wth{aMUJk#NildfX#s>Nk<=Kyhl5DGA3E6PDVV zaV!e(wu1H0IFhg+8b?;0@5(t@<$`Y1xh8X1ILfn@pR z22Qplq-3H`%2|IOqmVU2g#=%D;Wta~u4B@+swc}zb@=TLF{wVR293l0xPcS|@M*^^ z#^CF7(3X425NR+#K9{Xxz^xWmqXd@D6GmgDTqDi(+XgbJegS294g97MM47}F#|aG% z)^ftv`aucU`iY?OE=E!fST&kHT36n|@N#YSfr<_~F)=!8NqT?vQH&k_0ChgMpTMV( zuilXe`q~vH2)#y39u!$EQl~EAUNe77j1pSl-u7iRQwd|-PEyhEF4`ErK;e2Ha=KUVEwXG zHBmWuU6nLRTEu^)XWSkJy~jhcd?uLs$3TyCAI10W9uM6)YZP-xO=)4eUwGND=6nG- zF3=LeI7DcgT8c-{#gv$!*aRA~BHs(_KuC!fs@#ahkE3btMfR%%etusHfd^MR{;Iq0 z!J7kg;9F}8L1*#B(6R#&4hoX4K>sI%8o1QKDX&q|2W|}P?;%wz1Hz3VumvyBRVq;w zqYz6wUJ<;&}S1$?Rq* z>8jSLb6iEJAR6(~`Hy&{k{6*WcR$;NO6RB&c@Rs~%C#Bh+Y)@2NXkxm;^|0bP>icX z(d*P8-;Z|tF2mM{i+_i|tta3H8huK(u*tDH;5R#bF$Doig-=)&9YS?8H$3`dsk>^W zdM$019_Pj3qZI^>Ujgu+4V^EAFDE5_seu44Z0A!t7LDIaR)AkFwjnNh$*d75r^V73 zWKtT77=~?MfLTdStxj4ERXNk8x*M%h=kXOGbOyNc!&Ea^cr{GyEwQ=vXTO%8#*CB# zUGx6m&H!g*_4Ai&@bJO}7P2;tV;~=3n9n7z6t?T3I3xy@#W`?vMgAa4Go@oS1HUO6 znu&qHpTMrJUoy5c!{f0R_sRd$Y~9e+P3DTHSy^G4GwG>!)?%0hRD6B@Vw(1r^PPjm zd-kKv%Y$w$->dzc6M?0B(6_{Z6}qX_Q=T(|W0#jjN9Nb>F*vLF#4S!6u5jgtdp+LI z6miml^68HrdY|fkP4leQvd&9wfx&o&Ic=~qpr21BB&Qzrq!m?^D@K@tc1!!t2Q`$Zt(dL|u?3I7Cw0Py$NrFnoW^Jr;1tbZBh8uMhn??-Ragc> zYbCfR+$I~HrSIp4XJ>Y)a!^ad+-vfDQUf|)%G*ruRvu-19&H(iH+1O~08VpCgyHMS+zEw?L=;*WW&OR+a6{ zg_$gn-E-gHO8Tt$m_=MW@8}$my*ZjosJXvQtX91{b8F{o__36DexwVrhPuX|W_Q)= z)w0voc;a!zb0anpt!>Rur>44t@RM z^@BU2FRE|l&UVDv7$Vitm|6N|3cXoG9r0v+i2ade^Cfa6QKimYxCOh-+$sv0_1taB z#T2}cj?}l$?!OLx9W;M-s%tIbxop-}uc*SGtnL4GNbBLU6ksM$Xcp5wa?uubi-1y% zPk~nr_Zy4I(_@tOt!b@=?2nN|r)^tgGgPz6y-OJ^`T113nySwo)pUFFd~nf3(K>S! z%r>7vpvJtC7AG-sm)&=?`>Q!SZn9VHA6|i8e>z$A zoC*3?8Jx~SUi7^PzsA=}lEVxIVBWJ-ZsVR4&YmAYHq6KD&$UrfmdtTnPQhy(2522V zQgRsVr$uSdzgDzUnNE-}7YU%6bAs;k!3|V){%L95iXQrwcK^HbSLd(J3~21lC-km0 zy57sIH2#IjX~$kqag<*_eEpE9&@NkBa2_I{PN{PB{PDxINl46EcX^%Q`Cy*8A{6R;}{R2;~ zSqOPv+UJ$p9}8p)9BEcpfk=4?k+Z|6RtF?~yosm?;v5f6F*Vc;ll@C>2(Z|AR829u zYBW|SeIDPNho8#(v0(fl^3rtq1gj=l+C1=rZTFq>Bu$W@++JG0x_Hy{09uWF=fUm| zJm)iSU>y=~Q$xS@Mv2Gi`=J_)wkBx1%6!fkMO?n)<0dih@tQ5qGn(+GuL+UEb9-L0 zCg(6|5thxTctgAPKbv1{CuC^XIsdG^%p!I!g1yzY}zb{TyOowSmb}tT;p4f3* zeXnedUf`<9ctp||^<=`ak<&}*XQe(>FXHjLxN;@BbwsK~?mQ5EH!nh(=~mhKNKO~0 zPMcBUe0M@uWjc>)_feow;>sIGg7_f7c`j*xGSBt)0yoSyAMQAi=+^qGE^2p%tf~03 zvO?Qib5XlVrOajtuMO*r=B%M(hNnS$H^-qB^R-HTQlzxd%$21W^|LqcIPv;*grAjOtf6R-PPjaX!<*X) zZ+%*V7r@QgcFFQ+>(!XBZX@7@6H|({aeq_~Q75sn(wQk!-~s8WnluxCu*%%1YfiIW zQCR=J{#_zL7MB-}&ADjRyBH&rTb{FYZ-xS@D0(_-(Y8~z#ZYs6UQRgyd2ickSp0NZEcH!30fS4wZm6!M%Hzv?IS{A4Iv62H1!|0Tj!+JgOiHM?aV`_Sh2 zoa*fDir35o4jQA5RI;rIXeAOtXI#!nD27<>!!M;FwS3F@cexh6^%UdV7+QaDm zX`<~nl@gj+@(hG77?~bevTV|3b=Cu;DLdNC)|zsz$GMc2eU%YswgEenRGKeM-hcN= z;w6~O5@`h%gy^(l{72sJ4zwlaN=|94Ol%F5H->7pE}80Or6Z@kDLLFPs$5@SBt+CWMUUGlNG40z;ET%kW?q^D zpY_v*In59?bq2BcwA22qW6|BzV0+~5Y)(dHvATp7P3x_jE+0DbEY-nGt+P;iD?MI@)VcGm8lfCIKKH1GQO`ot0%Rr#U(7){F@6(+2$SXD-N3%0cMV&>=_0oB_ z3^4K5Y&XkFobRD4s?QX?ymq<ZgPhE>oiz%NNd()36F{ zZqwG>n#}QIfE^S#ZPF#pt=wL4A~fbLRfv(q`!cekB0-@d5!B_hlgT%jnOt*$a)d}S znJOZrBV|UM?T_$z%L6 zU+buY?XFYn%#mvpvQ?QD&F2@+O?c;)&JsOu8oAk7YsY){mFH+;Rkh9uF-n~4>UV}G z>GrbG^(D_*<-jp=o!jjB*=J}0Gy#FMo@T1;9cb%uYoZ5w8zNYX-HT90;>A|WW;YUo zU-rK}hAMbYgx#()L)6Km$Fpb4iW4N5Xfy8J99lK-PPzaL$$f4{%N=&Q}7X0_&mXdNEqU*#fX}32*c-&B|n|OiH$#OR<(j zuYA^za!NakQ=>Ga$kGY?l$W;38?=!uWQKcWk*S0HW*-=#Nvp54e7E0(YtB`=H;HfD zj-F+8F!>PHe7?lUpT$wG8NEA|vs_##GfsMC*r&2DbT`#U=o6M{ah{jFi__mRaAn;PiA`jWMz zh{D{R1t(HCxGosEecY;BpJm$FUfmnY4_uVtw@&aSB-2IDORY`d%*zsfzKkDXc&=&u zZH8y9^!q?nfCjD#Tz`y?hEDJiQ8;yu0Waf7ekRM;s5cD^Y8Q9fSG)o#Gmr*AMdI5? zzAR5%Jn51e>ngapbl~oZA5ht7hB;D&$B<+Y`RdiuXJKIY1FL+v_a`C zE8HrtW}OZonZWPAIQHcLmRniyavOL)tb|s;Ga{#5HLCT}Qm9bLiFc13 zjpgmyK`69h&!l@vCGNkq3J;Gdrk~j z_)IlfTX7+$0&_T47h{Tck%60THLwS8>M>$`TZfB{GU-6Nf?RYg`+F;wa};{-fZVQc z+0I`&IcdLR+CPDn7+MCrX z5?pXxZl+FqnswUqM@zO9O#xoWCmH5mqX-MBIe{K02|_8eygNO)EaHu=4W;4So<_rA zyR2Z!FshSjF;DT2_VJ9~BMeUGk7axPMrb~SKHAe15kBm40{ljta$+?Z3{xzP6O;E< z#R?(w8!X=3Inl|Y`3Kc`7@wN#k-fhvm^ri1~9GU;8t?v$p zBWmAHgoH>$FToN-jTSX(5LWLZqJ`C?vuf0cZuRIyFB>a*tS(rc)!XV4ySl6%eCz$L z-}ioh{ARDY&RjEdW@cxe^PKy>pHn1QT`}R}U@ah+uM@<#8kTdhcY~{@nq4uf6334& z`64HQ9+;31MSxxkFN}8qAIQ1G$90<-^917*SvWz zOl6!3>fMsbZb}+i?4(nwi-q{E^-wVIODKAqdB?k&na8*6;}!Ga-ZF79pWcaS9Rv6o zX1ug)x2vtZIt|c;t05-@Q%EH4%&Vd=4)skh(&@LzJ~bt^Eq;D+AsFC0l+N@(WsD0g zp&QU7+4*-r5|Rw5bC`_qGU(N|b8ijP0DPF8C!y_r{gOLww( zJu-%l50$s(tVXGhDjp>tAKNBll-w|#^xRky%T|0GEeNwgo$1IcM3xXYort=6vt#CCGQl~( zsmQDy*yDIu5pdMR$J57Cdb`9GZ6HKn?}d>cP*ZH&doNnlvNC-3-|p#NDunzmX_>wlgiB zCR_83vD;iFEQ}LXdJ*AfUzJQ30jrN5jdUDb9^HQ>u=41_tC7=^ z?I9e$tNA2TpcOHYRv^R3sC-@|*L@V@M7}>)3^~SyL4w5-nY6{`jr_Yt&y!j6w3ZX|D~ks`OsD^Jbr_6tIn3tr z|EnVz_o;8M0zD=)BrQ>*@P8?Ak^znaj}>~G-CznNo+D`yCik1Md&>+S`wSOw)r+H{ zqm{w2ybGDXz8Pvy` z>(2GBJ#{p0pOjT<#&FUa12B!74q{@#Rd(JHoz3*CC=^#TT;1=lBH5_s>Rc*zN9Mi- z!$hsE90otuX{3csypvO$@K@g2hjB$*6Fr@X3LHF@dVMO(&;*O1DfGeVFmD@kUz+mI zMgkaB;SPS-gsws+j|uB-&hBm6QO9y%&PpmYP3v^IDYTZq1U+eNxR8)VcJ&JDF@^o3 zgBKL|Cdk>hTw{kB!{QlTNsVms)cc;mr?PZi%j&>;e{9rXB8@`$`d8XVo?$ADnY2+m zTgPryyF2G5BBp+!LVQ32<43p3jHdr2f=J2Ye31*%_^!rMx_~vp@%Bl-u*#OOHm(bJ z1;jIprd5x=R7vgG^h0iVni^EDGwP)C1Uthr0Xg|igaFeS)K`H_I55wki0&|0?ar}@ zBFgW6qjNVzO`zyTm#Q5QxmVCkf!)5H9WecwL>=xQY|@FELNJ3AS=M1IXH6*@G#uIA zdGd;1&?9pcUKuKSYrfzKmyD2{@kBh2ywwU9o`~T3!-vB%%~0Xte4-{wQtN9(qLdnf z>iqrirrfFFpT=8bNQ22jPywgZMI=C)oN~OLV;h-u#6z!xyT&Rq6}v?;0{^xhG^9dP zpb%5?^IVsDw|xMowsaC7twJbz+LXrmD$+TJO)!oT>i^VE{QNPvbFUx@Q<%o{ zc5)j--<*SVZ?aMpvRU9PLQ;Wu#JdR*GP$6}9)?Rct+qvvoyzw2*S5nLcK#T_R>=+I z6n4+-&OXUL3|-wjo73R2uSB1Cp581-s%AJ*c}c1kVLbEKr_jR=S7xf(U`F*(3o1H6 zE=Sn;9+KZhYT!Y>K~j>D-IAUu?vo07yOlT zDfTv?>L`3TGdi|u6dUOB|>&9kYsI*-QmYU?tMD<6M1E0nfy(X3JtvFQ;GD}&=;g?ta?-HUg) zG$TNQe|!fYGYckj!x%NedUc*Ce^Ro$FHI{V zEm6OUTt$jJo-kU9wR`?(>}2!69Z>A131_F#aum&ErNowb7LW6?DjY z1qLOJnOq~+UBn`UNSEWoBarY0{*I26#Y`J#e|o0`zC{XltKkbTZMM^7t(8MNaR~!- z#!9YYfy`8*`@^Isn&h^&D8A)BlSI(xD&fqg!peE>vDcMg(oHx3S*mbXNh5Dh=>Uz8 zf@%JnJZ&W@ngkZ>>$82xOdXHroo(DrJhplvvQ%jpaTbF!Shba@xC6`{eyJ{SwL9k` zJwQ3fT#L7?y$n4Qz!ZogY?qNv1^>yR>8SD!4ES1O-M9tB?vsY;Ote3kwE!-{_62Ee z*GK}9emrmEw`Qczz_|G#BhkvU)-(FHs6ZM`RF&b*@^?C9r2@4Q?yIlHuIr%uaNM(o zjO-x)__+jjB(F%%MWZ2z7Mb?oVAJ8k-R=-@>4vze1O2$ zljZ^)F6ndbJbFQeawA&fx;!qq@~?63l{yJs$3**qcUn83AN_WU<4zQQ9)}OxHK`vZ z*3*lf-sdwDq{(ZF%KPbhh~wBN84~*|t4zK=r6K|aX^3;MVyjg6a_8XooHwSW7SHE= zdeCJ_xWEPRK~E$=vS<3z&DH@wUlHEsA{9k)8} z_S;P=4-maOFiYWu_B0jSOfoWJmxLNDK=Cot&VD}3c+uD|X!P%YVP&z-dCm(E+f*26%XS-DRlzU|;pZ`$+^!<8U7Wxke%Ey?w6(Hiqf&n5v56Ppi)% z!>83IpV+t`iEa`G%Ju3$s1+Q3uMq+Gpm(1HSI@`qrD!$q50FuHIdX>KK$*guE!VAe zr>@A|&UYhqIEqiDABo$)z^cB`flNnc`@fhCchH(^iZ>AkGcy&IsBsX^td0X0gWU)u zQ`z??Z2Nb2WQTVnVT^D*2e{Y6O0S*n*hUHpqLJR1lD#?TvE@)kDM>fMEocf~m*cl- ziA0f2#$>p6n~CkFiQyPwNpL1#PG>QzK9iOnGpSUQ%;q8evPutZ5IhVweEZ$uNawRx z*+Wjus@uq6IzUF*$!5;k5L~dj@%cpiV8u^d2bmsJOQt0*AzlM3;&~#dPXsfWiK0Kz z=WwornZ*5yBO!s|9I;c1+UhhoCm4g60B=7oM=a_gcJy#E{{u$gnTL~Yp5{Uhl&qpz zybf0O5n&@?a_Iw;rd|jk`WGd6%5Dysjoz^AEx(ogJ8qpuk8}DP(^DmRJjaf2O(}!r zRlN*`yK9l~Ojx$%HKR#WgFipT$tF6T!_0&MC$Z<)&bow1&YX0sIcm-2@YJM2@|AG` zs_xGpBRtQ`-x%^Q10os2s+WEB79+~x*6&Ak zzs7ALpOJqn0eU|pch%4D9Xl4XWp(&7xF_}Sn0T7CQvtI_DH)HsRleQUdp--{3O9l? zDRXV;m?uf8z}9>XeQ`vWUuQzY`c+A~3`c7wxIV$@WKaQr&@|s975FZUobI>`m`Q8k zoY2q2J%s~BjjCLE_ZiA6=k2X20{R5@mfe?yo9_MGnaRh)kr2jAeq7PGpMS@(a|<)W z@u~njQpMwT)PvZu7rF8a5AiC&-)VzHJSB)ofp>;UU*3vm$Y=r5JHw3l2K&qGQaQG z@M30pHYtwnUhOd&U&d4=FL#adQHnQ$!7-vXj=?z~XR>a<5Et@cz3?3B*Pbi|J@{Sb z=0|GXt*Rn6!PiR?`whFt76Cvpde03t@O;DxW>An)c#>IbE8+lifPv@whZyfK`VI6h zeh#6m!o|&qSLRmdz|xg_z=Iw7QJB*4*u6xlGoKpm?oNdQL!&Pn)th(`GPw$kt7E>57d5%K zu&}~^!on#Xc}&PWy@;l$ZLo;0g9S0;B_G4yKYBW3yuv*t4OsvypKJ+JJZ+R6WwqwL zUf_eIvin2$s53Y~@1t1oG%PbPTP~9<&}623LQ`A^D8owpHqPh!^A4{joFMA4I8 zwx)Jf{Eyw9ltqwE8PsV$%p=K@S&CAU!=Vg4-V~U!e-G=0huu~MdNhahn&J9W9eFvc zPr6%$B!4Zp7LG9{APpw6_VX?tyO6lR_WIzW5~rox!w8i8ll%wYN)+N9#j!Y6zwpc} z!Fh!4oC`}$5Z|J%L$ZSFlG|dz3U{xIt3VHcVw1ypm_}2H_p*T#$D0n>rjMTGL(9w~ zuq^*B-UXs)b{KMso_6Gzn%Z2!q1BXe^X0c247Q?&(t!+Y=0X8#CWMbH}-T?I}x$Tz-sNPHq!Pt^f91k zXa}xgyv7%p>f&Xf`9(lVV4OYkRfbA&&`b^Qe2PlD()lu&CE$x%5KQR&R500DM}jIz z8(w-)WbBE{F_-OTg4SPgL<0ax&kLT--C#6(_E~C%iOw%}Zw@wk_-14lO~V}s_-zRN zWrH^QhR8ACqZv`1GbTWkJq~5mo(2W3A5EQF>xdPJ_x7&0ev13j0OC-IU|JTDFfYtk z*m)Q7X*f|snj?Y9jbnVBY>o`F-e;x1CX@uP_I&wZT(%y&)#+BW3`8GRv&zz_S_L_r z`zo>DG<|LBx~BzKL|5A~2QY;zpT>s)p2yUEwIiuXdA_dHD~*-D?>7Yqtu&#gKvM^xsafZ!71ZF0#uud|MdpR9S5Kwq zsHM@%;MZodn6WPuxTrMRsWoy2oDO&w8)J)% zQvh7eM^!o(LhJoElSf)x%2oEI5cE{|DTroobO-;}}-ZC-E+A2iI*{(4pnwRlZG}#H62#Cau z9_);Jqwe1|ii~56gM`L^X=SOlE1^Tud8K`;i;U|wgB;L`cA2e#%+qUADl7(gg2v3` z9+#<)m>4frt~xX)BfCG1Wd7kJ|GT82fxp|rJ#lihFS@{IbX>VjE$#j+A?)tpV#mMq zAvJ0Ftux?;BRgv1B@3$HU*YdVGP{)@;*X}jg#`5FF^c0^p8q1|&l+_p54{Kce('; + switch($objp->type_mouvement){ + case "0": + print ''; + break; + case "1": + print ''; + break; + case "2": + print ''; + break; + case "3": + print ''; + break; + } } if (! empty($arrayfields['origin']['checked'])) { From 3484b50511d229a7b7a3fe470be1124532e17e49 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 13 Dec 2018 20:51:45 +0100 Subject: [PATCH 331/349] Update html.form.class.php --- htdocs/core/class/html.form.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index cb9e9860c46..cde19590d4a 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -4895,7 +4895,8 @@ class Form if (is_object($societe_vendeuse) && $societe_vendeuse->id == $mysoc->id && $societe_vendeuse->tva_assuj == "0") { // Override/enable VAT for expense report regardless of global setting - needed if expense report used for business expenses - if (empty ($conf->global->OVERRIDE_VAT_FOR_EXPENSE_REPORT)) { + if (empty($conf->global->OVERRIDE_VAT_FOR_EXPENSE_REPORT)) + { $title=' title="'.$langs->trans('VATIsNotUsed').'"'; $disabled=true; } From 1c7189ed4061710eef62f8b742de3276a6c74b26 Mon Sep 17 00:00:00 2001 From: torvista Date: Thu, 13 Dec 2018 22:24:45 +0100 Subject: [PATCH 332/349] supplier->vendor suppliers->vendors --- htdocs/langs/en_US/accountancy.lang | 12 +++---- htdocs/langs/en_US/bills.lang | 44 +++++++++++------------ htdocs/langs/en_US/categories.lang | 8 ++--- htdocs/langs/en_US/companies.lang | 55 +++++++++++++++-------------- htdocs/langs/en_US/main.lang | 18 +++++----- htdocs/langs/en_US/products.lang | 26 +++++++------- htdocs/langs/en_US/sendings.lang | 2 +- htdocs/langs/en_US/stripe.lang | 2 +- htdocs/langs/en_US/suppliers.lang | 42 +++++++++++----------- 9 files changed, 105 insertions(+), 104 deletions(-) diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index b4f52352434..c14b7bef0ca 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -44,7 +44,7 @@ CountriesInEECExceptMe=Countries in EEC except %s CountriesExceptMe=All countries except %s MainAccountForCustomersNotDefined=Main accounting account for customers not defined in setup -MainAccountForSuppliersNotDefined=Main accounting account for suppliers not defined in setup +MainAccountForSuppliersNotDefined=Main accounting account for vendors not defined in setup MainAccountForUsersNotDefined=Main accounting account for users not defined in setup MainAccountForVatPaymentNotDefined=Main accounting account for VAT payment not defined in setup @@ -95,7 +95,7 @@ MenuProductsAccounts=Product accounts ProductsBinding=Products accounts Ventilation=Binding to accounts CustomersVentilation=Customer invoice binding -SuppliersVentilation=Supplier invoice binding +SuppliersVentilation=Vendor invoice binding ExpenseReportsVentilation=Expense report binding CreateMvts=Create new transaction UpdateMvts=Modification of a transaction @@ -104,7 +104,7 @@ WriteBookKeeping=Journalize transactions in Ledger Bookkeeping=Ledger AccountBalance=Account balance ObjectsRef=Source object ref -CAHTF=Total purchase supplier before tax +CAHTF=Total purchase vendor before tax TotalExpenseReport=Total expense report InvoiceLines=Lines of invoices to bind InvoiceLinesDone=Bound lines of invoices @@ -194,7 +194,7 @@ ListeMvts=List of movements ErrorDebitCredit=Debit and Credit cannot have a value at the same time AddCompteFromBK=Add accounting accounts to the group ReportThirdParty=List third-party account -DescThirdPartyReport=Consult here the list of the third-party customers and suppliers and their accounting accounts +DescThirdPartyReport=Consult here the list of third-party customers and vendors and their accounting accounts ListAccounts=List of the accounting accounts UnknownAccountForThirdparty=Unknown third-party account. We will use %s UnknownAccountForThirdpartyBlocking=Unknown third-party account. Blocking error @@ -214,8 +214,8 @@ DescVentilDoneCustomer=Consult here the list of the lines of invoices customers DescVentilTodoCustomer=Bind invoice lines not already bound with a product accounting account ChangeAccount=Change the product/service accounting account for selected lines with the following accounting account: Vide=- -DescVentilSupplier=Consult here the list of supplier invoice lines bound or not yet bound to a product accounting account -DescVentilDoneSupplier=Consult here the list of the lines of invoices suppliers and their accounting account +DescVentilSupplier=Consult here the list of vendor invoice lines bound or not yet bound to a product accounting account +DescVentilDoneSupplier=Consult here the list of the lines of vendor invoices and their accounting account DescVentilTodoExpenseReport=Bind expense report lines not already bound with a fee accounting account DescVentilExpenseReport=Consult here the list of expense report lines bound (or not) to a fee accounting account DescVentilExpenseReportMore=If you setup accounting account on type of expense report lines, the application will be able to make all the binding between your expense report lines and the accounting account of your chart of accounts, just in one click with the button "%s". If account was not set on fees dictionary or if you still have some lines not bound to any account, you will have to make a manual binding from the menu "%s". diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index 644a78507a4..f755aada646 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -3,14 +3,14 @@ Bill=Invoice Bills=Invoices BillsCustomers=Customer invoices BillsCustomer=Customer invoice -BillsSuppliers=Supplier invoices +BillsSuppliers=Vendor invoices BillsCustomersUnpaid=Unpaid customer invoices BillsCustomersUnpaidForCompany=Unpaid customer invoices for %s -BillsSuppliersUnpaid=Unpaid supplier invoices -BillsSuppliersUnpaidForCompany=Unpaid supplier invoices for %s +BillsSuppliersUnpaid=Unpaid vendor invoices +BillsSuppliersUnpaidForCompany=Unpaid vendors invoices for %s BillsLate=Late payments BillsStatistics=Customers invoices statistics -BillsStatisticsSuppliers=Suppliers invoices statistics +BillsStatisticsSuppliers=Vendors invoices statistics DisabledBecauseDispatchedInBookkeeping=Disabled because invoice was dispatched into bookkeeping DisabledBecauseNotLastInvoice=Disabled because invoice is not erasable. Some invoices were recorded after this one and it will create holes in the counter. DisabledBecauseNotErasable=Disabled because cannot be erased @@ -53,9 +53,9 @@ InvoiceLine=Invoice line InvoiceCustomer=Customer invoice CustomerInvoice=Customer invoice CustomersInvoices=Customers invoices -SupplierInvoice=Supplier invoice -SuppliersInvoices=Suppliers invoices -SupplierBill=Supplier invoice +SupplierInvoice=Vendor invoice +SuppliersInvoices=Vendors invoices +SupplierBill=Vendor invoice SupplierBills=suppliers invoices Payment=Payment PaymentBack=Payment back @@ -67,11 +67,11 @@ PaidBack=Paid back DeletePayment=Delete payment ConfirmDeletePayment=Are you sure you want to delete this payment? 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. -SupplierPayments=Suppliers payments +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 vendor. +SupplierPayments=Vendor payments ReceivedPayments=Received payments ReceivedCustomersPayments=Payments received from customers -PayedSuppliersPayments=Payments paid to suppliers +PayedSuppliersPayments=Payments paid to vendors ReceivedCustomersPaymentsToValid=Received customers payments to validate PaymentsReportsForYear=Payments reports for %s PaymentsReports=Payments reports @@ -104,7 +104,7 @@ AddBill=Create invoice or credit note AddToDraftInvoices=Add to draft invoice DeleteBill=Delete invoice SearchACustomerInvoice=Search for a customer invoice -SearchASupplierInvoice=Search for a supplier invoice +SearchASupplierInvoice=Search for a vendor invoice CancelBill=Cancel an invoice SendRemindByMail=Send reminder by EMail DoPayment=Enter payment @@ -163,15 +163,15 @@ NewBill=New invoice LastBills=Latest %s invoices LatestTemplateInvoices=Latest %s template invoices LatestCustomerTemplateInvoices=Latest %s customer template invoices -LatestSupplierTemplateInvoices=Latest %s supplier template invoices +LatestSupplierTemplateInvoices=Latest %s vendor template invoices LastCustomersBills=Latest %s customer invoices -LastSuppliersBills=Latest %s supplier invoices +LastSuppliersBills=Latest %s vendor invoices AllBills=All invoices AllCustomerTemplateInvoices=All template invoices OtherBills=Other invoices DraftBills=Draft invoices CustomersDraftInvoices=Customer draft invoices -SuppliersDraftInvoices=Supplier draft invoices +SuppliersDraftInvoices=Vendor draft invoices Unpaid=Unpaid ConfirmDeleteBill=Are you sure you want to delete this invoice? ConfirmValidateBill=Are you sure you want to validate this invoice with reference %s? @@ -247,7 +247,7 @@ DateInvoice=Invoice date DatePointOfTax=Point of tax NoInvoice=No invoice ClassifyBill=Classify invoice -SupplierBillsToPay=Unpaid supplier invoices +SupplierBillsToPay=Unpaid vendor invoices CustomerBillsUnpaid=Unpaid customer invoices NonPercuRecuperable=Non-recoverable SetConditions=Set Payment Terms @@ -333,7 +333,7 @@ ConfirmRemoveDiscount=Are you sure you want to remove this discount? RelatedBill=Related invoice RelatedBills=Related invoices RelatedCustomerInvoices=Related customer invoices -RelatedSupplierInvoices=Related supplier invoices +RelatedSupplierInvoices=Related vendor invoices LatestRelatedBill=Latest related invoice WarningBillExist=Warning, one or more invoices already exist MergingPDFTool=Merging PDF tool @@ -465,7 +465,7 @@ Cheques=Checks DepositId=Id deposit NbCheque=Number of checks CreditNoteConvertedIntoDiscount=This %s has been converted into %s -UsBillingContactAsIncoiveRecipientIfExist=Use contact/address with type 'billing contact' instead of third party address as recipient for invoices +UsBillingContactAsIncoiveRecipientIfExist=Use contact/address with type 'billing contact' instead of third-party address as recipient for invoices ShowUnpaidAll=Show all unpaid invoices ShowUnpaidLateOnly=Show late unpaid invoices only PaymentInvoiceRef=Payment invoice %s @@ -488,7 +488,7 @@ ListOfYourUnpaidInvoices=List of unpaid invoices NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. RevenueStamp=Revenue stamp YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party -YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Supplier" of third party +YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (recommended Template) PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template @@ -502,10 +502,10 @@ TypeContact_facture_internal_SALESREPFOLL=Representative following-up customer i TypeContact_facture_external_BILLING=Customer invoice contact TypeContact_facture_external_SHIPPING=Customer shipping contact TypeContact_facture_external_SERVICE=Customer service contact -TypeContact_invoice_supplier_internal_SALESREPFOLL=Representative following-up supplier invoice -TypeContact_invoice_supplier_external_BILLING=Supplier invoice contact -TypeContact_invoice_supplier_external_SHIPPING=Supplier shipping contact -TypeContact_invoice_supplier_external_SERVICE=Supplier service contact +TypeContact_invoice_supplier_internal_SALESREPFOLL=Representative following-up vendor invoice +TypeContact_invoice_supplier_external_BILLING=Vendor invoice contact +TypeContact_invoice_supplier_external_SHIPPING=Vendor shipping contact +TypeContact_invoice_supplier_external_SERVICE=Vendor service contact # Situation invoices InvoiceFirstSituationAsk=First situation invoice InvoiceFirstSituationDesc=The situation invoices are tied to situations related to a progression, for example the progression of a construction. Each situation is tied to an invoice. diff --git a/htdocs/langs/en_US/categories.lang b/htdocs/langs/en_US/categories.lang index cef3eaa2815..897e05bfd30 100644 --- a/htdocs/langs/en_US/categories.lang +++ b/htdocs/langs/en_US/categories.lang @@ -10,7 +10,7 @@ modify=modify Classify=Classify CategoriesArea=Tags/Categories area ProductsCategoriesArea=Products/Services tags/categories area -SuppliersCategoriesArea=Suppliers tags/categories area +SuppliersCategoriesArea=Vendors tags/categories area CustomersCategoriesArea=Customers tags/categories area MembersCategoriesArea=Members tags/categories area ContactsCategoriesArea=Contacts tags/categories area @@ -32,7 +32,7 @@ WasAddedSuccessfully=%s was added successfully. ObjectAlreadyLinkedToCategory=Element is already linked to this tag/category. ProductIsInCategories=Product/service is linked to following tags/categories CompanyIsInCustomersCategories=This third party is linked to following customers/prospects tags/categories -CompanyIsInSuppliersCategories=This third party is linked to following suppliers tags/categories +CompanyIsInSuppliersCategories=This third party is linked to following vendors tags/categories MemberIsInCategories=This member is linked to following members tags/categories ContactIsInCategories=This contact is linked to following contacts tags/categories ProductHasNoCategory=This product/service is not in any tags/categories @@ -48,11 +48,11 @@ ContentsNotVisibleByAllShort=Contents not visible by all DeleteCategory=Delete tag/category ConfirmDeleteCategory=Are you sure you want to delete this tag/category? NoCategoriesDefined=No tag/category defined -SuppliersCategoryShort=Suppliers tag/category +SuppliersCategoryShort=Vendors tag/category CustomersCategoryShort=Customers tag/category ProductsCategoryShort=Products tag/category MembersCategoryShort=Members tag/category -SuppliersCategoriesShort=Suppliers tags/categories +SuppliersCategoriesShort=Vendors tags/categories CustomersCategoriesShort=Customers tags/categories ProspectsCategoriesShort=Prospects tags/categories CustomersProspectsCategoriesShort=Cust./Prosp. tags/categories diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang index effc78166ba..1510e350b90 100644 --- a/htdocs/langs/en_US/companies.lang +++ b/htdocs/langs/en_US/companies.lang @@ -8,11 +8,11 @@ ConfirmDeleteContact=Are you sure you want to delete this contact and all inheri MenuNewThirdParty=New Third Party MenuNewCustomer=New Customer MenuNewProspect=New Prospect -MenuNewSupplier=New Supplier +MenuNewSupplier=New Vendor MenuNewPrivateIndividual=New private individual -NewCompany=New company (prospect, customer, supplier) -NewThirdParty=New Third Party (prospect, customer, supplier) -CreateDolibarrThirdPartySupplier=Create a third party (supplier) +NewCompany=New company (prospect, customer, vendor) +NewThirdParty=New Third Party (prospect, customer, vendor) +CreateDolibarrThirdPartySupplier=Create a third party (vendor) CreateThirdPartyOnly=Create third party CreateThirdPartyAndContact=Create a third party + a child contact ProspectionArea=Prospection area @@ -80,8 +80,8 @@ 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 VATIsNotUsed=Sales tax is not used CopyAddressFromSoc=Copy address from Third-Party details -ThirdpartyNotCustomerNotSupplierSoNoRef=Third party neither customer nor supplier, no available referring objects -ThirdpartyIsNeitherCustomerNorClientSoCannotHaveDiscounts=Third party neither customer nor supplier, discounts are not available +ThirdpartyNotCustomerNotSupplierSoNoRef=Third party neither customer nor vendor, no available referring objects +ThirdpartyIsNeitherCustomerNorClientSoCannotHaveDiscounts=Third party neither customer nor vendor, discounts are not available PaymentBankAccount=Payment bank account OverAllProposals=Proposals OverAllOrders=Orders @@ -99,9 +99,9 @@ LocalTax2ES=IRPF TypeLocaltax1ES=RE Type TypeLocaltax2ES=IRPF Type WrongCustomerCode=Customer code invalid -WrongSupplierCode=Supplier code invalid +WrongSupplierCode=Vendor code invalid CustomerCodeModel=Customer code model -SupplierCodeModel=Supplier code model +SupplierCodeModel=Vendor code model Gencod=Barcode ##### Professional ID ##### ProfId1Short=Prof. id 1 @@ -267,27 +267,27 @@ Prospect=Prospect CustomerCard=Customer Card Customer=Customer CustomerRelativeDiscount=Relative customer discount -SupplierRelativeDiscount=Relative supplier discount +SupplierRelativeDiscount=Relative vendor discount CustomerRelativeDiscountShort=Relative discount CustomerAbsoluteDiscountShort=Absolute discount CompanyHasRelativeDiscount=This customer has a default discount of %s%% CompanyHasNoRelativeDiscount=This customer has no relative discount by default -HasRelativeDiscountFromSupplier=You have a default discount of %s%% from this supplier -HasNoRelativeDiscountFromSupplier=You have no default relative discount from this supplier +HasRelativeDiscountFromSupplier=You have a default discount of %s%% from this vendor +HasNoRelativeDiscountFromSupplier=You have no default relative discount from this vendor 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 CompanyHasCreditNote=This customer still has credit notes for %s %s -HasNoAbsoluteDiscountFromSupplier=You have no discount credit available from this supplier -HasAbsoluteDiscountFromSupplier=You have discounts available (credits notes or down payments) for %s %s from this supplier -HasDownPaymentOrCommercialDiscountFromSupplier=You have discounts available (commercial, down payments) for %s %s from this supplier -HasCreditNoteFromSupplier=You have credit notes for %s %s from this supplier +HasNoAbsoluteDiscountFromSupplier=You have no discount credit available from this vendor +HasAbsoluteDiscountFromSupplier=You have discounts available (credits notes or down payments) for %s %s from this vendor +HasDownPaymentOrCommercialDiscountFromSupplier=You have discounts available (commercial, down payments) for %s %s from this vendor +HasCreditNoteFromSupplier=You have credit notes for %s %s from this vendor CompanyHasNoAbsoluteDiscount=This customer has no discount credit available CustomerAbsoluteDiscountAllUsers=Absolute customer discounts (granted by all users) CustomerAbsoluteDiscountMy=Absolute customer discounts (granted by yourself) -SupplierAbsoluteDiscountAllUsers=Absolute supplier discounts (entered by all users) -SupplierAbsoluteDiscountMy=Absolute supplier discounts (entered by yourself) +SupplierAbsoluteDiscountAllUsers=Absolute vendor discounts (entered by all users) +SupplierAbsoluteDiscountMy=Absolute vendor discounts (entered by yourself) DiscountNone=None -Supplier=Supplier +Vendor=Vendor AddContact=Create contact AddContactAddress=Create contact/address EditContact=Edit contact @@ -304,13 +304,13 @@ DeleteACompany=Delete a company PersonalInformations=Personal data AccountancyCode=Accounting account CustomerCode=Customer Code -SupplierCode=Supplier Code +SupplierCode=Vendor Code CustomerCodeShort=Customer Code -SupplierCodeShort=Supplier Code +SupplierCodeShort=Vendor Code CustomerCodeDesc=Customer Code, unique for all customers -SupplierCodeDesc=Supplier Code, unique for all suppliers +SupplierCodeDesc=Vendor Code, unique for all vendors RequiredIfCustomer=Required if third party is a customer or prospect -RequiredIfSupplier=Required if third party is a supplier +RequiredIfSupplier=Required if third party is a vendor ValidityControledByModule=Validity controlled by module ThisIsModuleRules=Rules for this module ProspectToContact=Prospect to contact @@ -338,7 +338,7 @@ MyContacts=My contacts Capital=Capital CapitalOf=Capital of %s EditCompany=Edit company -ThisUserIsNot=This user is not a prospect, customer nor supplier +ThisUserIsNot=This user is not a prospect, customer nor vendor VATIntraCheck=Check VATIntraCheckDesc=The VAT ID must include the country prefix. The link %s uses the European VAT checker service (VIES) which requires internet access from the Dolibarr server. VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do @@ -394,9 +394,10 @@ ImportDataset_company_2=Third-Parties additional contacts/addresses and attribut ImportDataset_company_3=Third-Parties Bank accounts ImportDataset_company_4=Third-Parties Sales representatives (assign sales representatives/users to companies) PriceLevel=Price Level +PriceLevelLabels=Price Level Labels DeliveryAddress=Delivery address AddAddress=Add address -SupplierCategory=Supplier category +SupplierCategory=Vendor category JuridicalStatus200=Independent DeleteFile=Delete file ConfirmDeleteFile=Are you sure you want to delete this file? @@ -406,7 +407,7 @@ FiscalYearInformation=Fiscal Year FiscalMonthStart=Starting month of the fiscal year YouMustAssignUserMailFirst=You must create an email for this user prior to being able to add an email notification. YouMustCreateContactFirst=To be able to add email notifications, you must first define contacts with valid emails for the third party -ListSuppliersShort=List of Suppliers +ListSuppliersShort=List of Vendors ListProspectsShort=List of Prospects ListCustomersShort=List of Customers ThirdPartiesArea=Third Parties/Contacts @@ -420,7 +421,7 @@ CurrentOutstandingBill=Current outstanding bill OutstandingBill=Max. for outstanding bill OutstandingBillReached=Max. for outstanding bill reached OrderMinAmount=Minimum amount for order -MonkeyNumRefModelDesc=Return a number with the format %syymm-nnnn for the customer code and %syymm-nnnn for the supplier code where yy is year, mm is month and nnnn is a sequence with no break and no return to 0. +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. LeopardNumRefModelDesc=The code is free. This code can be modified at any time. ManagingDirectors=Manager(s) name (CEO, director, president...) MergeOriginThirdparty=Duplicate third party (third party you want to delete) @@ -431,4 +432,4 @@ SaleRepresentativeLogin=Login of sales representative SaleRepresentativeFirstname=First name of sales representative SaleRepresentativeLastname=Last name of sales representative ErrorThirdpartiesMerge=There was an error when deleting the third parties. Please check the log. Changes have been reverted. -NewCustomerSupplierCodeProposed=Customer or Supplier code already used, a new code is suggested +NewCustomerSupplierCodeProposed=Customer or Vendor code already used, a new code is suggested diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index a9526616781..47cdb28693d 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -417,7 +417,7 @@ Favorite=Favorite ShortInfo=Info. Ref=Ref. ExternalRef=Ref. extern -RefSupplier=Ref. supplier +RefSupplier=Ref. vendor RefPayment=Ref. payment CommercialProposalsShort=Commercial proposals Comment=Comment @@ -612,9 +612,9 @@ BuildDoc=Build Doc Entity=Environment Entities=Entities CustomerPreview=Customer preview -SupplierPreview=Supplier preview +SupplierPreview=Vendor preview ShowCustomerPreview=Show customer preview -ShowSupplierPreview=Show supplier preview +ShowSupplierPreview=Show vendor preview RefCustomer=Ref. customer Currency=Currency InfoAdmin=Information for administrators @@ -745,9 +745,9 @@ LinkToProposal=Link to proposal LinkToOrder=Link to order LinkToInvoice=Link to invoice LinkToTemplateInvoice=Link to template invoice -LinkToSupplierOrder=Link to supplier order -LinkToSupplierProposal=Link to supplier proposal -LinkToSupplierInvoice=Link to supplier invoice +LinkToSupplierOrder=Link to vendor order +LinkToSupplierProposal=Link to vendor proposal +LinkToSupplierInvoice=Link to vendor invoice LinkToContract=Link to contract LinkToIntervention=Link to intervention CreateDraft=Create draft @@ -875,7 +875,7 @@ Rights=Permissions LineNb=Line no. IncotermLabel=Incoterms TabLetteringCustomer=Customer lettering -TabLetteringSupplier=Supplier lettering +TabLetteringSupplier=Vendor lettering # Week day Monday=Monday Tuesday=Tuesday @@ -923,11 +923,11 @@ SearchIntoProductsOrServices=Products or services SearchIntoProjects=Projects SearchIntoTasks=Tasks SearchIntoCustomerInvoices=Customer invoices -SearchIntoSupplierInvoices=Supplier invoices +SearchIntoSupplierInvoices=Vendor invoices SearchIntoCustomerOrders=Customer orders SearchIntoSupplierOrders=Purchase orders SearchIntoCustomerProposals=Customer proposals -SearchIntoSupplierProposals=Supplier proposals +SearchIntoSupplierProposals=Vendor proposals SearchIntoInterventions=Interventions SearchIntoContracts=Contracts SearchIntoCustomerShipments=Customer shipments diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index 9668e00499f..5c1242a4181 100644 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -77,8 +77,8 @@ ErrorProductAlreadyExists=A product with reference %s already exists. ErrorProductBadRefOrLabel=Wrong value for reference or label. ErrorProductClone=There was a problem while trying to clone the product or service. ErrorPriceCantBeLowerThanMinPrice=Error, price can't be lower than minimum price. -Suppliers=Suppliers -SupplierRef=Supplier SKU +Suppliers=Vendors +SupplierRef=Vendor SKU ShowProduct=Show product ShowService=Show service ProductsAndServicesArea=Product and Services area @@ -87,7 +87,7 @@ ServicesArea=Services area ListOfStockMovements=List of stock movements BuyingPrice=Buying price PriceForEachProduct=Products with specific prices -SupplierCard=Supplier card +SupplierCard=Vendor card PriceRemoved=Price removed BarCode=Barcode BarcodeType=Barcode type @@ -125,10 +125,10 @@ ProductSpecial=Special QtyMin=Min. purchase quantity PriceQtyMin=Equivalent/calculated price PriceQtyMinCurrency=Price (currency) for this qty. (no discount) -VATRateForSupplierProduct=VAT Rate (for this supplier/product) +VATRateForSupplierProduct=VAT Rate (for this vendor/product) DiscountQtyMin=Discount for this qty. -NoPriceDefinedForThisSupplier=No price/qty defined for this supplier/product -NoSupplierPriceDefinedForThisProduct=No supplier price/qty defined for this product +NoPriceDefinedForThisSupplier=No price/qty defined for this vendor/product +NoSupplierPriceDefinedForThisProduct=No vendor price/qty defined for this product PredefinedProductsToSell=Predefined Product PredefinedServicesToSell=Predefined Service PredefinedProductsAndServicesToSell=Predefined products/services to sell @@ -154,8 +154,8 @@ NewRefForClone=Ref. of new product/service SellingPrices=Selling prices BuyingPrices=Buying prices CustomerPrices=Customer prices -SuppliersPrices=Supplier prices -SuppliersPricesOfProductsOrServices=Supplier prices (of products or services) +SuppliersPrices=Vendor prices +SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=Customs / Commodity / HS code CountryOrigin=Origin country Nature=Product Type (material/finished) @@ -243,8 +243,8 @@ PriceExpressionEditor=Price expression editor PriceExpressionSelected=Selected price expression PriceExpressionEditorHelp1="price = 2 + 2" or "2 + 2" for setting the price. Use ; to separate expressions PriceExpressionEditorHelp2=You can access ExtraFields with variables like #extrafield_myextrafieldkey# and global variables with #global_mycode# -PriceExpressionEditorHelp3=In both product/service and supplier prices there are these variables available:
#tva_tx# #localtax1_tx# #localtax2_tx# #weight# #length# #surface# #price_min# -PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# +PriceExpressionEditorHelp3=In both product/service and vendor prices there are these variables available:
#tva_tx# #localtax1_tx# #localtax2_tx# #weight# #length# #surface# #price_min# +PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In vendor prices only: #supplier_quantity# and #supplier_tva_tx# PriceExpressionEditorHelp5=Available global values: PriceMode=Price mode PriceNumeric=Number @@ -254,7 +254,7 @@ ComposedProduct=Child products MinSupplierPrice=Minimum buying price MinCustomerPrice=Minimum selling price DynamicPriceConfiguration=Dynamic price configuration -DynamicPriceDesc=You may define mathematical formulae to calculate Customer or Supplier prices. Such formulas can use all mathematical operators, some constants and variables. You can define here the variables you wish to use. If the variable needs an automatic update, you may define the external URL to allow Dolibarr to update the value automatically. +DynamicPriceDesc=You may define mathematical formulae to calculate Customer or Vendor prices. Such formulas can use all mathematical operators, some constants and variables. You can define here the variables you wish to use. If the variable needs an automatic update, you may define the external URL to allow Dolibarr to update the value automatically. AddVariable=Add Variable AddUpdater=Add Updater GlobalVariables=Global variables @@ -293,8 +293,8 @@ ProductSheet=Product sheet ServiceSheet=Service sheet PossibleValues=Possible values GoOnMenuToCreateVairants=Go on menu %s - %s to prepare attribute variants (like colors, size, ...) -UseProductFournDesc=Use supplier descriptions of products in supplier documents -ProductSupplierDescription=Supplier description for the product +UseProductFournDesc=Use vendor descriptions of products in vendor documents +ProductSupplierDescription=Vendor description for the product #Attributes VariantAttributes=Variant attributes ProductAttributes=Variant attributes for products diff --git a/htdocs/langs/en_US/sendings.lang b/htdocs/langs/en_US/sendings.lang index df91da74688..188533894e1 100644 --- a/htdocs/langs/en_US/sendings.lang +++ b/htdocs/langs/en_US/sendings.lang @@ -55,7 +55,7 @@ ShipmentLine=Shipment line ProductQtyInCustomersOrdersRunning=Product quantity into open customer orders ProductQtyInSuppliersOrdersRunning=Product quantity into open purchase orders ProductQtyInShipmentAlreadySent=Product quantity from open customer order already sent -ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from open supplier order already received +ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from open vendor order already received NoProductToShipFoundIntoStock=No product to ship found in warehouse %s. Correct stock or go back to choose another warehouse. WeightVolShort=Weight/Vol. ValidateOrderFirstBeforeShipment=You must first validate the order before being able to make shipments. diff --git a/htdocs/langs/en_US/stripe.lang b/htdocs/langs/en_US/stripe.lang index 26f0e3ff03b..37dfe689463 100644 --- a/htdocs/langs/en_US/stripe.lang +++ b/htdocs/langs/en_US/stripe.lang @@ -27,7 +27,7 @@ AccountParameter=Account parameters UsageParameter=Usage parameters InformationToFindParameters=Help to find your %s account information STRIPE_CGI_URL_V2=Url of Stripe CGI module for payment -VendorName=Name of supplier +VendorName=Name of vendor CSSUrlForPaymentForm=CSS style sheet url for payment form NewStripePaymentReceived=New Stripe payment received NewStripePaymentFailed=New Stripe payment tried but failed diff --git a/htdocs/langs/en_US/suppliers.lang b/htdocs/langs/en_US/suppliers.lang index 91fe68b1cf1..b69b11272b4 100644 --- a/htdocs/langs/en_US/suppliers.lang +++ b/htdocs/langs/en_US/suppliers.lang @@ -1,11 +1,11 @@ -# Dolibarr language file - Source file is en_US - suppliers -Suppliers=Suppliers -SuppliersInvoice=Supplier invoice -ShowSupplierInvoice=Show Supplier Invoice -NewSupplier=New supplier +# Dolibarr language file - Source file is en_US - vendors +Suppliers=Vendors +SuppliersInvoice=Vendor invoice +ShowSupplierInvoice=Show Vendor Invoice +NewSupplier=New vendor History=History -ListOfSuppliers=List of suppliers -ShowSupplier=Show supplier +ListOfSuppliers=List of vendors +ShowSupplier=Show vendor OrderDate=Order date BuyingPriceMin=Best buying price BuyingPriceMinShort=Best buying price @@ -14,15 +14,15 @@ TotalSellingPriceMinShort=Total of subproducts selling prices SomeSubProductHaveNoPrices=Some sub-products have no price defined AddSupplierPrice=Add buying price ChangeSupplierPrice=Change buying price -SupplierPrices=Supplier prices -ReferenceSupplierIsAlreadyAssociatedWithAProduct=This reference supplier is already associated with a reference: %s -NoRecordedSuppliers=No supplier recorded -SupplierPayment=Supplier payment -SuppliersArea=Supplier area -RefSupplierShort=Ref. supplier +SupplierPrices=Vendor prices +ReferenceSupplierIsAlreadyAssociatedWithAProduct=This vendor reference is already associated with a product: %s +NoRecordedSuppliers=No vendor recorded +SupplierPayment=Vendor payment +SuppliersArea=Vendor area +RefSupplierShort=Ref. vendor Availability=Availability -ExportDataset_fournisseur_1=Supplier invoices and invoice details -ExportDataset_fournisseur_2=Supplier invoices and payments +ExportDataset_fournisseur_1=Vendor invoices and invoice details +ExportDataset_fournisseur_2=Vendor invoices and payments ExportDataset_fournisseur_3=Purchase orders and order details ApproveThisOrder=Approve this order ConfirmApproveThisOrder=Are you sure you want to approve order %s? @@ -30,18 +30,18 @@ DenyingThisOrder=Deny this order ConfirmDenyingThisOrder=Are you sure you want to deny this order %s? ConfirmCancelThisOrder=Are you sure you want to cancel this order %s? AddSupplierOrder=Create Purchase Order -AddSupplierInvoice=Create supplier invoice -ListOfSupplierProductForSupplier=List of products and prices for supplier %s -SentToSuppliers=Sent to suppliers +AddSupplierInvoice=Create vendor invoice +ListOfSupplierProductForSupplier=List of products and prices for vendor %s +SentToSuppliers=Sent to vendors ListOfSupplierOrders=List of purchase orders MenuOrdersSupplierToBill=Purchase orders to invoice NbDaysToDelivery=Delivery delay (days) DescNbDaysToDelivery=The longest delivery delay of the products from this order -SupplierReputation=Supplier reputation +SupplierReputation=Vendor reputation DoNotOrderThisProductToThisSupplier=Do not order NotTheGoodQualitySupplier=Low quality ReputationForThisProduct=Reputation BuyerName=Buyer name AllProductServicePrices=All product / service prices -AllProductReferencesOfSupplier=All product / service references of supplier -BuyingPriceNumShort=Supplier prices +AllProductReferencesOfSupplier=All product / service references of vendor +BuyingPriceNumShort=Vendor prices From 5d5add641b3015efcd9486c9a93edb053d309502 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 14 Dec 2018 09:58:23 +0100 Subject: [PATCH 333/349] Fix scrutinizer --- htdocs/core/class/html.form.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index fce7e0607cd..800fa6e59d1 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -4896,7 +4896,7 @@ class Form if (is_object($societe_vendeuse) && $societe_vendeuse->id == $mysoc->id && $societe_vendeuse->tva_assuj == "0") { // Override/enable VAT for expense report regardless of global setting - needed if expense report used for business expenses - if (empty($conf->global->OVERRIDE_VAT_FOR_EXPENSE_REPORT)) + if (empty($conf->global->OVERRIDE_VAT_FOR_EXPENSE_REPORT)) { $title=' title="'.$langs->trans('VATIsNotUsed').'"'; $disabled=true; From e1baf3ab2be05ec7667a3f356d6d8bfa7329cee3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 14 Dec 2018 10:01:12 +0100 Subject: [PATCH 334/349] Update html.form.class.php --- htdocs/core/class/html.form.class.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 721c1997086..77b36354f15 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -2017,12 +2017,15 @@ class Form $sql = "SELECT "; $sql.= $selectFields . $selectFieldsGrouped; - //Product category - $sql.= ", (SELECT ".MAIN_DB_PREFIX."categorie_product.fk_categorie - FROM ".MAIN_DB_PREFIX."categorie_product - WHERE ".MAIN_DB_PREFIX."categorie_product.fk_product=p.rowid - LIMIT 1 + if (! empty($conf->global->PRODUCT_SORT_BY_CATEGORY)) + { + //Product category + $sql.= ", (SELECT ".MAIN_DB_PREFIX."categorie_product.fk_categorie + FROM ".MAIN_DB_PREFIX."categorie_product + WHERE ".MAIN_DB_PREFIX."categorie_product.fk_product=p.rowid + LIMIT 1 ) AS categorie_product_id "; + } //Price by customer if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES) && !empty($socid)) From fab6dde593351d715168ccd18c6d7259d65f5826 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 14 Dec 2018 10:51:32 +0100 Subject: [PATCH 335/349] Close #9825 --- htdocs/categories/class/categorie.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index fba393edc08..e4d95d490ed 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -1536,7 +1536,7 @@ class Categorie extends CommonObject if (colorIsLight($this->color)) $forced_color='categtextblack'; } - $link = '
'; + $link = ''; $linkend=''; $picto='category'; From 6eaa6a1d2893afe5b4a8e9c13e8aa94ab85c380b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 14 Dec 2018 10:56:13 +0100 Subject: [PATCH 336/349] Add missing column --- htdocs/install/mysql/migration/9.0.0-10.0.0.sql | 2 ++ htdocs/install/mysql/tables/llx_loan.sql | 7 ++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/htdocs/install/mysql/migration/9.0.0-10.0.0.sql b/htdocs/install/mysql/migration/9.0.0-10.0.0.sql index 1f5235cb43d..834cedb4694 100644 --- a/htdocs/install/mysql/migration/9.0.0-10.0.0.sql +++ b/htdocs/install/mysql/migration/9.0.0-10.0.0.sql @@ -35,6 +35,8 @@ -- For 10.0 +ALTER TABLE llx_loan ADD COLUMN insurance_amount double(24,8) DEFAULT 0; + ALTER TABLE llx_facture DROP INDEX idx_facture_uk_facnumber; ALTER TABLE llx_facture CHANGE facnumber ref VARCHAR(30) NOT NULL; ALTER TABLE llx_facture ADD UNIQUE INDEX uk_facture_ref (ref, entity); diff --git a/htdocs/install/mysql/tables/llx_loan.sql b/htdocs/install/mysql/tables/llx_loan.sql index 7277fa85d47..8237c33e149 100644 --- a/htdocs/install/mysql/tables/llx_loan.sql +++ b/htdocs/install/mysql/tables/llx_loan.sql @@ -27,7 +27,7 @@ create table llx_loan label varchar(80) NOT NULL, fk_bank integer, - capital double(24,8) default 0 NOT NULL, + capital double(24,8) DEFAULT 0 NOT NULL, datestart date, dateend date, nbterm real, @@ -36,9 +36,10 @@ create table llx_loan note_private text, note_public text, - capital_position double(24,8) default 0, -- If not a new loan, just have the position of capital + capital_position double(24,8) DEFAULT 0, -- If not a new loan, just have the position of capital date_position date, - + insurance_amount double(24,8) DEFAULT 0, + paid smallint default 0 NOT NULL, accountancy_account_capital varchar(32), From 42de7da334f2468048a0adef8dc247bd60e37937 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 14 Dec 2018 11:01:27 +0100 Subject: [PATCH 337/349] Update commonobject.class.php --- htdocs/core/class/commonobject.class.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 3c4b19e1c22..8e6e4ff823d 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -5799,11 +5799,14 @@ abstract class CommonObject $param_list=array_keys($param['options']); // $param_list='ObjectName:classPath' $showempty=(($required && $default != '')?0:1); $out=$form->selectForForms($param_list[0], $keyprefix.$key.$keysuffix, $value, $showempty); - list($class,$classfile)=explode(':',$param_list[0]); - if(file_exists(dol_buildpath(dirname(dirname($classfile)).'/card.php')))$url_path=dol_buildpath(dirname(dirname($classfile)).'/card.php',1); - else $url_path=dol_buildpath(dirname(dirname($classfile)).'/'.$class.'_card.php',1); - $out.=''; - //TODO Add Javascript code to add input fields contents to new elements urls + if ($conf->global->MAIN_FEATURES_LEVEL >= 2) + { + list($class,$classfile)=explode(':',$param_list[0]); + if (file_exists(dol_buildpath(dirname(dirname($classfile)).'/card.php'))) $url_path=dol_buildpath(dirname(dirname($classfile)).'/card.php',1); + else $url_path=dol_buildpath(dirname(dirname($classfile)).'/'.$class.'_card.php',1); + $out.=''; + // TODO Add Javascript code to add input fields contents to new elements urls + } } elseif ($type == 'password') { From 2f075147a3ae70ff21d83fa99688c7f31f1cfd0a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 14 Dec 2018 11:13:48 +0100 Subject: [PATCH 338/349] Migrate to 10 --- htdocs/install/check.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/install/check.php b/htdocs/install/check.php index 15806c38a1b..34379975828 100644 --- a/htdocs/install/check.php +++ b/htdocs/install/check.php @@ -437,7 +437,8 @@ else array('from'=>'5.0.0', 'to'=>'6.0.0'), array('from'=>'6.0.0', 'to'=>'7.0.0'), array('from'=>'7.0.0', 'to'=>'8.0.0'), - array('from'=>'8.0.0', 'to'=>'9.0.0') + array('from'=>'8.0.0', 'to'=>'9.0.0'), + array('from'=>'9.0.0', 'to'=>'10.0.0') ); $count=0; From 63aa7ac1ec5a64a062116c69522c52c60142f69a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 14 Dec 2018 11:16:05 +0100 Subject: [PATCH 339/349] Fix name of key --- htdocs/install/mysql/tables/llx_facture.key.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/tables/llx_facture.key.sql b/htdocs/install/mysql/tables/llx_facture.key.sql index 05251aff3f3..caed51240d7 100644 --- a/htdocs/install/mysql/tables/llx_facture.key.sql +++ b/htdocs/install/mysql/tables/llx_facture.key.sql @@ -19,7 +19,7 @@ -- ============================================================================ -ALTER TABLE llx_facture ADD UNIQUE INDEX idx_facture_uk_ref (ref, entity); +ALTER TABLE llx_facture ADD UNIQUE INDEX uk_facture_ref (ref, entity); ALTER TABLE llx_facture ADD INDEX idx_facture_fk_soc (fk_soc); ALTER TABLE llx_facture ADD INDEX idx_facture_fk_user_author (fk_user_author); From 8b0919d7e4007664a9d112db30e0ab07908a067d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 14 Dec 2018 11:26:37 +0100 Subject: [PATCH 340/349] Fix phpcs --- htdocs/loan/payment/payment.php | 121 ++++++++++++++++---------------- 1 file changed, 61 insertions(+), 60 deletions(-) diff --git a/htdocs/loan/payment/payment.php b/htdocs/loan/payment/payment.php index b38a058126f..33b855f8e99 100644 --- a/htdocs/loan/payment/payment.php +++ b/htdocs/loan/payment/payment.php @@ -63,7 +63,7 @@ if($last) } } } - + } if (!empty($line_id)) @@ -77,9 +77,11 @@ if (!empty($line_id)) } } + /* * Actions */ + if ($action == 'add_payment') { $error=0; @@ -103,78 +105,77 @@ if ($action == 'add_payment') setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Date")), null, 'errors'); $error++; } - if (! empty($conf->banque->enabled) && ! GETPOST('accountid', 'int') > 0) - { - setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("AccountToCredit")), null, 'errors'); - $error++; - } + if (! empty($conf->banque->enabled) && ! GETPOST('accountid', 'int') > 0) + { + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("AccountToCredit")), null, 'errors'); + $error++; + } if (! $error) { $paymentid = 0; - $amount = GETPOST('amount_capital') + GETPOST('amount_insurance') + GETPOST('amount_interest'); - if ($amount == 0) - { - setEventMessages($langs->trans('ErrorNoPaymentDefined'), null, 'errors'); - $error++; - } + $amount = GETPOST('amount_capital') + GETPOST('amount_insurance') + GETPOST('amount_interest'); + if ($amount == 0) + { + setEventMessages($langs->trans('ErrorNoPaymentDefined'), null, 'errors'); + $error++; + } - if (! $error) - { - $db->begin(); + if (! $error) + { + $db->begin(); - // Create a line of payments - $payment = new PaymentLoan($db); - $payment->chid = $chid; - $payment->datep = $datepaid; - $payment->label = $loan->label; + // Create a line of payments + $payment = new PaymentLoan($db); + $payment->chid = $chid; + $payment->datep = $datepaid; + $payment->label = $loan->label; $payment->amount_capital = GETPOST('amount_capital'); $payment->amount_insurance = GETPOST('amount_insurance'); $payment->amount_interest = GETPOST('amount_interest'); $payment->paymenttype = GETPOST('paymenttype', 'int'); - $payment->num_payment = GETPOST('num_payment'); - $payment->note_private = GETPOST('note_private','none'); - $payment->note_public = GETPOST('note_public','none'); + $payment->num_payment = GETPOST('num_payment'); + $payment->note_private = GETPOST('note_private','none'); + $payment->note_public = GETPOST('note_public','none'); - if (! $error) - { - $paymentid = $payment->create($user); - if ($paymentid < 0) - { - setEventMessages($payment->error, $payment->errors, 'errors'); - $error++; - } - } + if (! $error) + { + $paymentid = $payment->create($user); + if ($paymentid < 0) + { + setEventMessages($payment->error, $payment->errors, 'errors'); + $error++; + } + } - if (! $error) - { - $result = $payment->addPaymentToBank($user, $chid, 'payment_loan', '(LoanPayment)', GETPOST('accountid', 'int'), '', ''); - if (! $result > 0) - { - setEventMessages($payment->error, $payment->errors, 'errors'); - $error++; - } - elseif(isset($line)) - { - $line->fk_bank = $payment->fk_bank; - $line->update($user); - } - - } + if (! $error) + { + $result = $payment->addPaymentToBank($user, $chid, 'payment_loan', '(LoanPayment)', GETPOST('accountid', 'int'), '', ''); + if (! $result > 0) + { + setEventMessages($payment->error, $payment->errors, 'errors'); + $error++; + } + elseif(isset($line)) + { + $line->fk_bank = $payment->fk_bank; + $line->update($user); + } + } - if (! $error) - { - $db->commit(); - $loc = DOL_URL_ROOT.'/loan/card.php?id='.$chid; - header('Location: '.$loc); - exit; - } - else - { - $db->rollback(); - } - } + if (! $error) + { + $db->commit(); + $loc = DOL_URL_ROOT.'/loan/card.php?id='.$chid; + header('Location: '.$loc); + exit; + } + else + { + $db->rollback(); + } + } } $action = 'create'; @@ -274,7 +275,7 @@ if ($action == 'create') print '
'; - if (! empty($tabhelp[$id][$value]) && preg_match('/^http(s*):/i',$tabhelp[$id][$value])) print ''.$valuetoshow.' '.img_help(1,$valuetoshow).''; - else if (! empty($tabhelp[$id][$value])) - { - if (in_array($value, array('topic'))) print $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2, $value); // Tooltip on click - else print $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2); // Tooltip on hover - } - else print $valuetoshow; - print ''; + if (! empty($tabhelp[$id][$value]) && preg_match('/^http(s*):/i',$tabhelp[$id][$value])) print ''.$valuetoshow.' '.img_help(1,$valuetoshow).''; + else if (! empty($tabhelp[$id][$value])) + { + if (in_array($value, array('topic'))) print $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2, $value); // Tooltip on click + else print $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2); // Tooltip on hover + } + else print $valuetoshow; + print ''; print ''; @@ -535,6 +532,7 @@ print ''; print '
'; - print $formadmin->select_language($search_lang, 'search_lang', 0, null, 1, 0, 0, 'maxwidth150'); + print $formadmin->select_language($search_lang, 'search_lang', 0, null, 1, 0, 0, 'maxwidth100'); print ''.$form->selectarray('search_type_template', $elementList, $search_type_template, 1, 0, 0, '', 0, 0, 0, '', 'maxwidth200 maxwidth100onsmartphone').''.$form->selectarray('search_type_template', $elementList, $search_type_template, 1, 0, 0, '', 0, 0, 0, '', 'maxwidth100 maxwidth100onsmartphone').'
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

_i6TRN6(6iWUvh0n9v)eslf~S^NX0 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 From 911f343c97f2b85debf4e7bc4951e329525da8b8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Dec 2018 13:01:34 +0100 Subject: [PATCH 327/349] Removed deprecated files --- dev/resources/dbmodel/dolibarr.uml | 12 ------- dev/resources/dbmodel/dolibarr.umldi | 53 ---------------------------- 2 files changed, 65 deletions(-) delete mode 100644 dev/resources/dbmodel/dolibarr.uml delete mode 100644 dev/resources/dbmodel/dolibarr.umldi diff --git a/dev/resources/dbmodel/dolibarr.uml b/dev/resources/dbmodel/dolibarr.uml deleted file mode 100644 index 57078d6668b..00000000000 --- a/dev/resources/dbmodel/dolibarr.uml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/dev/resources/dbmodel/dolibarr.umldi b/dev/resources/dbmodel/dolibarr.umldi deleted file mode 100644 index ff97a2a25b1..00000000000 --- a/dev/resources/dbmodel/dolibarr.umldi +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 1512ba924263d7c23ef8080ee377e3a8a18a74a5 Mon Sep 17 00:00:00 2001 From: Lionel VESSILLER Date: Wed, 12 Dec 2018 14:20:04 +0100 Subject: [PATCH 328/349] Add contact status in category export --- htdocs/core/modules/modCategorie.class.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/core/modules/modCategorie.class.php b/htdocs/core/modules/modCategorie.class.php index 1006869d69f..f0561757eae 100644 --- a/htdocs/core/modules/modCategorie.class.php +++ b/htdocs/core/modules/modCategorie.class.php @@ -284,6 +284,7 @@ class modCategorie extends DolibarrModules 'p.email' => 'Email', 'p.note_private' => 'NotePrivate', 'p.note_public' => 'NotePublic', + 'p.statut' => 'Status', 's.nom'=>"Name", 's.client'=>"Customer", 's.fournisseur'=>"Supplier", @@ -301,6 +302,7 @@ class modCategorie extends DolibarrModules 'u.description' => "Text", 'p.lastname' => 'Text', 'p.firstname' => 'Text', + 'p.statut'=>"Numeric", 's.nom'=>"Text", 's.status'=>"Text", 's.address'=>"Text", @@ -333,6 +335,7 @@ class modCategorie extends DolibarrModules 'p.email' => 'contact', 'p.note_private' => 'contact', 'p.note_public' => 'contact', + 'p.statut' => 'contact', 's.nom'=>"company", 's.client'=>"company", 's.fournisseur'=>"company", From 555698a3af3fc63cc1b9c75d8528b1f8b7cd2b93 Mon Sep 17 00:00:00 2001 From: Ferran Marcet Date: Thu, 13 Dec 2018 10:36:30 +0100 Subject: [PATCH 329/349] Qual: Better management of select type of lines --- htdocs/contrat/card.php | 7 ------- htdocs/core/class/html.form.class.php | 8 ++++---- htdocs/core/tpl/objectline_create.tpl.php | 5 +++-- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index d53413efee0..5d2671ee129 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -2063,10 +2063,6 @@ else print '

'; print ''; // Array with (n*2)+1 lines - // Trick to not show product entries - $savproductenabled=$conf->product->enabled; - if (empty($conf->global->CONTRACT_SUPPORT_PRODUCTS)) $conf->product->enabled = 0; - // Form to add new line if ($action != 'editline') { @@ -2079,9 +2075,6 @@ else $reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook } - // Restore correct setup - $conf->product->enabled = $savproductenabled; - print '
'; print '
'; print ''; diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 8ba38b81edb..030f04a5ae3 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -878,7 +878,7 @@ class Form * @param string $htmlname Name of field in html form * @param int $showempty Add an empty field * @param int $hidetext Do not show label 'Type' before combo box (used only if there is at least 2 choices to select) - * @param integer $forceall 1=Force to show products and services in combo list, whatever are activated modules, 0=No force, -1=Force none (and set hidden field to 'service') + * @param integer $forceall 1=Force to show products and services in combo list, whatever are activated modules, 0=No force, 2=Force to show only Products, 3=Force to show only services, -1=Force none (and set hidden field to 'service') * @return void */ function select_type_of_lines($selected='',$htmlname='type',$showempty=0,$hidetext=0,$forceall=0) @@ -887,7 +887,7 @@ class Form global $db,$langs,$user,$conf; // If product & services are enabled or both disabled. - if ($forceall > 0 || (empty($forceall) && ! empty($conf->product->enabled) && ! empty($conf->service->enabled)) + if ($forceall == 1 || (empty($forceall) && ! empty($conf->product->enabled) && ! empty($conf->service->enabled)) || (empty($forceall) && empty($conf->product->enabled) && empty($conf->service->enabled)) ) { if (empty($hidetext)) print $langs->trans("Type").': '; @@ -910,12 +910,12 @@ class Form print ''; //if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); } - if (empty($forceall) && empty($conf->product->enabled) && ! empty($conf->service->enabled)) + if ((empty($forceall) && empty($conf->product->enabled) && ! empty($conf->service->enabled)) || $forceall == 3) { print $langs->trans("Service"); print ''; } - if (empty($forceall) && ! empty($conf->product->enabled) && empty($conf->service->enabled)) + if ((empty($forceall) && ! empty($conf->product->enabled) && empty($conf->service->enabled)) || $forceall == 2) { print $langs->trans("Product"); print ''; diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index 2489a40c5d7..d412c611a9d 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -7,6 +7,7 @@ * Copyright (C) 2014 Raphaël Doursenaud * Copyright (C) 2015-2016 Marcos García * Copyright (C) 2018 Frédéric France + * Copyright (C) 2018 Ferran Marcet * * 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 @@ -184,7 +185,7 @@ else { if ($object->element == 'contrat') { if (empty($conf->product->enabled) && empty($conf->service->enabled) && empty($conf->global->CONTRACT_SUPPORT_PRODUCTS)) $forceall=-1; // With contract, by default, no choice at all, except if CONTRACT_SUPPORT_PRODUCTS is set - else $forceall=0; + else if (empty($conf->global->CONTRACT_SUPPORT_PRODUCTS)) $forceall=3; } // Free line @@ -229,7 +230,7 @@ else { if (empty($senderissupplier)) { if (! empty($conf->product->enabled) && empty($conf->service->enabled)) echo $langs->trans('PredefinedProductsToSell'); - else if (empty($conf->product->enabled) && ! empty($conf->service->enabled)) echo $langs->trans('PredefinedServicesToSell'); + else if ((empty($conf->product->enabled) && ! empty($conf->service->enabled)) || ($object->element == 'contrat' && empty($conf->global->CONTRACT_SUPPORT_PRODUCTS))) echo $langs->trans('PredefinedServicesToSell'); else echo $langs->trans('PredefinedProductsAndServicesToSell'); } else From 3159c3f8d1afb88bfa0cbd4c82b5c2c86c9492f9 Mon Sep 17 00:00:00 2001 From: madx666 Date: Thu, 13 Dec 2018 11:28:49 +0100 Subject: [PATCH 330/349] Change type_mouvement on movement_list --- htdocs/product/stock/movement_list.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/htdocs/product/stock/movement_list.php b/htdocs/product/stock/movement_list.php index bd5ac4a4345..f6a694c57fa 100644 --- a/htdocs/product/stock/movement_list.php +++ b/htdocs/product/stock/movement_list.php @@ -1048,7 +1048,20 @@ if ($resql) if (! empty($arrayfields['m.type_mouvement']['checked'])) { // Type of movement - print '
'.$objp->type_mouvement.''.$langs->trans('StockIncreaseAfterCorrectTransfer').''.$langs->trans('StockDecreaseAfterCorrectTransfer').''.$langs->trans('StockDecrease').''.$langs->trans('StockIncrease').'
'; - dol_fiche_end(); + dol_fiche_end(); print ''; print ''; From 7be2097e87ef6da1c4a23915cb9fb0f49e16fa9e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 14 Dec 2018 12:00:14 +0100 Subject: [PATCH 341/349] Fix phpcs --- htdocs/loan/payment/payment.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/loan/payment/payment.php b/htdocs/loan/payment/payment.php index 33b855f8e99..07425ea1942 100644 --- a/htdocs/loan/payment/payment.php +++ b/htdocs/loan/payment/payment.php @@ -63,7 +63,6 @@ if($last) } } } - } if (!empty($line_id)) From d5bf9691eef1d77663ef8cc650070f5353152e73 Mon Sep 17 00:00:00 2001 From: altatof Date: Fri, 14 Dec 2018 15:10:32 +0100 Subject: [PATCH 342/349] allow product ajax search on description --- htdocs/core/class/html.form.class.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 8ba38b81edb..38b9d060e7f 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -19,6 +19,7 @@ * Copyright (C) 2018 Ferran Marcet * Copyright (C) 2018 Frédéric France * Copyright (C) 2018 Nicolas ZABOURI + * Copyright (C) 2018 Christophe Battarel * * 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 @@ -2131,6 +2132,11 @@ class Form if ($i > 0) $sql.=" AND "; $sql.="(p.ref LIKE '".$db->escape($prefix.$crit)."%' OR p.label LIKE '".$db->escape($prefix.$crit)."%'"; if (! empty($conf->global->MAIN_MULTILANGS)) $sql.=" OR pl.label LIKE '".$db->escape($prefix.$crit)."%'"; + if (!empty($conf->global->PRODUCT_AJAX_SEARCH_ON_DESCRIPTION)) + { + $sql.=" OR p.description LIKE '".$db->escape($prefix.$crit)."%'"; + if (! empty($conf->global->MAIN_MULTILANGS)) $sql.=" OR pl.description LIKE '".$db->escape($prefix.$crit)."%'"; + } if (! empty($conf->global->MAIN_SEARCH_PRODUCT_BY_FOURN_REF)) $sql.=" OR pfp.ref_fourn LIKE '".$db->escape($prefix.$crit)."%'"; $sql.=")"; $i++; From 185524bd5089ac3f059bb5726c359c84c2e84cdf Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 14 Dec 2018 15:49:58 +0100 Subject: [PATCH 343/349] Update fiscalyear.php --- htdocs/accountancy/admin/fiscalyear.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/accountancy/admin/fiscalyear.php b/htdocs/accountancy/admin/fiscalyear.php index 16e45d0646b..6a60a031a59 100644 --- a/htdocs/accountancy/admin/fiscalyear.php +++ b/htdocs/accountancy/admin/fiscalyear.php @@ -117,7 +117,7 @@ if ($result) } else { - $addbutton = '' . $langs->trans("NewFiscalYear") . ''; + $addbutton = '' . $langs->trans("NewFiscalYear") . ''; } $title = $langs->trans('AccountingPeriods'); From c377350c357615b381ef29b677e4f2c58e623a32 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 14 Dec 2018 16:09:12 +0100 Subject: [PATCH 344/349] Update facture-rec.class.php --- htdocs/compta/facture/class/facture-rec.class.php | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index fed1ca8c79c..23d30f0ad32 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -1006,15 +1006,12 @@ class FactureRec extends CommonInvoice { global $conf, $langs, $db, $user, $hookmanager; - $error=0; $nb_create=0; // Load translation files required by the page $langs->loadLangs(array("main","bills")); - $hookmanager->initHooks(array('createrecurringinvoices')); - $now = dol_now(); $tmparray=dol_getdate($now); $today = dol_mktime(23,59,59,$tmparray['mon'],$tmparray['mday'],$tmparray['year']); // Today is last second of current day @@ -1035,7 +1032,7 @@ class FactureRec extends CommonInvoice 'restrictioninvoiceid' => $restrictioninvoiceid, 'forcevalidation' => $forcevalidation, ); - $reshook = $hookmanager->executeHooks('writeSQL', $parameters, $sql); // note that $sql might be modified by hooks + $reshook = $hookmanager->executeHooks('beforeCreationOfRecurringInvoices', $parameters, $sql); // note that $sql might be modified by hooks $resql = $db->query($sql); if ($resql) @@ -1136,7 +1133,7 @@ class FactureRec extends CommonInvoice 'facturerec' => $facturerec, // it's an object which PHP passes by "reference", so modifiable by hooks. 'this' => $this, // it's an object which PHP passes by "reference", so modifiable by hooks. ); - $reshook = $hookmanager->executeHooks('generatedInvoice', $parameters, $facture); // note: $facture can be modified by hooks (warning: $facture can be null) + $reshook = $hookmanager->executeHooks('afterCreationOfRecurringInvoice', $parameters, $facture); // note: $facture can be modified by hooks (warning: $facture can be null) $i++; } From 5a9d034b1b7888f8fcc7f438707f2a9b6515095f Mon Sep 17 00:00:00 2001 From: PMickael Date: Fri, 14 Dec 2018 16:17:25 +0100 Subject: [PATCH 345/349] [Accounting][VAT] Fix balance should be based on period [Accounting][VAT] Fix balance should be based on period --- htdocs/compta/tva/index.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/htdocs/compta/tva/index.php b/htdocs/compta/tva/index.php index 4691b577368..517f15c81f3 100644 --- a/htdocs/compta/tva/index.php +++ b/htdocs/compta/tva/index.php @@ -562,12 +562,11 @@ if (! empty($conf->global->MAIN_FEATURES_LEVEL)) print load_fiche_titre($langs->trans("VATBalance"), '', ''); // need to add translation - $sql1 = "SELECT SUM(amount) as mm, date_format(f.datev,'%Y') as dm"; + $sql1 = "SELECT SUM(amount) as mm"; $sql1 .= " FROM " . MAIN_DB_PREFIX . "tva as f"; $sql1 .= " WHERE f.entity = " . $conf->entity; $sql1 .= " AND f.datev >= '" . $db->idate($date_start) . "'"; $sql1 .= " AND f.datev <= '" . $db->idate($date_end) . "'"; - $sql1 .= " GROUP BY dm ORDER BY dm ASC"; $result = $db->query($sql1); if ($result) { From 98b8113a39c0bba12f231f568386dd05afdc802c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 14 Dec 2018 16:20:23 +0100 Subject: [PATCH 346/349] Fix multicompany --- htdocs/webservices/server_invoice.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/webservices/server_invoice.php b/htdocs/webservices/server_invoice.php index 47c1b42e63b..4e8d3ec41d8 100644 --- a/htdocs/webservices/server_invoice.php +++ b/htdocs/webservices/server_invoice.php @@ -428,7 +428,7 @@ function getInvoicesForThirdParty($authentication,$idthirdparty) $sql ='SELECT f.rowid as facid, ref as ref, ref_ext, type, fk_statut as status, total_ttc, total, tva'; $sql.=' FROM '.MAIN_DB_PREFIX.'facture as f'; - $sql.=" WHERE f.entity = ".$conf->entity; + $sql.=" WHERE f.entity IN (".getEntity('invoice').")"; if ($idthirdparty != 'all' ) $sql.=" AND f.fk_soc = ".$db->escape($idthirdparty); $resql=$db->query($sql); From e0011222d1fef5fb51a9257e9643d272fab1e1fa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 14 Dec 2018 16:25:37 +0100 Subject: [PATCH 347/349] Fix syntax error --- htdocs/accountancy/admin/fiscalyear.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/accountancy/admin/fiscalyear.php b/htdocs/accountancy/admin/fiscalyear.php index 6a60a031a59..443bbfa4961 100644 --- a/htdocs/accountancy/admin/fiscalyear.php +++ b/htdocs/accountancy/admin/fiscalyear.php @@ -117,7 +117,7 @@ if ($result) } else { - $addbutton = '' . $langs->trans("NewFiscalYear") . ''; + $addbutton = '' . $langs->trans("NewFiscalYear") . ''; } $title = $langs->trans('AccountingPeriods'); From 89909ebab0ae6f596b6126b23817809d37880486 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 14 Dec 2018 17:32:41 +0100 Subject: [PATCH 348/349] Update html.form.class.php --- htdocs/core/class/html.form.class.php | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index f7f2462b604..0de5934b0c5 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -1389,7 +1389,7 @@ class Form * Return HTML code of the SELECT of list of all contacts (for a third party or all). * This also set the number of contacts found into $this->num * - * @since 9.0 Add afterSelectOptions hook & selectcontacts context. + * @since 9.0 Add afterSelectContactOptions hook * * @param int $socid Id ot third party or 0 for all or -1 for empty list * @param array|int $selected Array of ID of pre-selected contact id @@ -1418,17 +1418,15 @@ class Form if ($selected === '') $selected = array(); else if (!is_array($selected)) $selected = array($selected); - $out=''; + $out=''; - // Add selectcontacts hook if (! is_object($hookmanager)) { include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php'; $hookmanager=new HookManager($this->db); } - $hookmanager->initHooks(array('selectcontacts')); - // On recherche les societes + // We search third parties $sql = "SELECT sp.rowid, sp.lastname, sp.statut, sp.firstname, sp.poste"; if ($showsoc > 0) $sql.= " , s.nom as company"; $sql.= " FROM ".MAIN_DB_PREFIX ."socpeople as sp"; @@ -1523,7 +1521,7 @@ class Form 'showsoc'=>$showsoc, ); - $reshook = $hookmanager->executeHooks( 'afterSelectOptions', $parameters, $this, $action ); // Note that $action and $object may have been modified by some hooks + $reshook = $hookmanager->executeHooks( 'afterSelectContactOptions', $parameters, $this, $action ); // Note that $action and $object may have been modified by some hooks if ($htmlname != 'none' || $options_only) { From bd7df9869f9f81da5285caf8d64a3550e7585f90 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 14 Dec 2018 17:37:08 +0100 Subject: [PATCH 349/349] Update html.formmail.class.php --- htdocs/core/class/html.formmail.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index 664def9e2c4..c2804e19e1b 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -1058,8 +1058,8 @@ class FormMail extends Form //if (! $this->errorstomail) $this->errorstomail=$this->frommail; $errorstomail = (! empty($conf->global->MAIN_MAIL_ERRORS_TO) ? $conf->global->MAIN_MAIL_ERRORS_TO : $this->errorstomail); if ($this->witherrorstoreadonly) { - $out = ''; $out.= '\n"; } else {
'.$langs->trans("MailErrorsTo").''; + $out = ''; $out.= $errorstomail; $out.= "