From a254462bc9e360b047c2d3b44f510cdc207f64ac Mon Sep 17 00:00:00 2001 From: Adrien Raze Date: Thu, 2 Feb 2023 17:58:54 +0100 Subject: [PATCH 001/607] FIX : Sub-BOM's services prices were not good --- htdocs/bom/tpl/objectline_view.tpl.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/htdocs/bom/tpl/objectline_view.tpl.php b/htdocs/bom/tpl/objectline_view.tpl.php index ac277f6e880..6208abcbf6d 100644 --- a/htdocs/bom/tpl/objectline_view.tpl.php +++ b/htdocs/bom/tpl/objectline_view.tpl.php @@ -172,7 +172,8 @@ print ''; $coldisplay++; if (!empty($line->fk_bom_child)) { echo ''.price($tmpbom->total_cost * $line->qty).''; -} else { +} +else { echo ''.price($line->total_cost).''; } print ''; @@ -301,6 +302,16 @@ if ($resql) { $sub_bom->calculateCosts(); print ''.price(price2num($sub_bom->total_cost * $sub_bom_line->qty * $line->qty, 'MT')).''; $total_cost+= $sub_bom->total_cost * $sub_bom_line->qty * $line->qty; + } elseif($sub_bom_product->type == Product::TYPE_SERVICE && isModEnabled('workstation') && !empty($sub_bom_product->fk_default_workstation)) { + //Convert qty to hour + $unit = measuringUnitString($sub_bom_line->fk_unit, '', '', 1); + $qty = convertDurationtoHour($sub_bom_line->qty, $unit); + $workstation = new Workstation($this->db); + $res = $workstation->fetch($sub_bom_product->fk_default_workstation); + if ($res > 0) $sub_bom_line->total_cost = price2num($qty * ($workstation->thm_operator_estimated + $workstation->thm_machine_estimated), 'MT'); + + print ''.price(price2num($sub_bom_line->total_cost, 'MT')).''; + $this->total_cost += $line->total_cost; } elseif ($sub_bom_product->cost_price > 0) { print ''.price(price2num($sub_bom_product->cost_price * $sub_bom_line->qty * $line->qty, 'MT')).''; $total_cost+= $sub_bom_product->cost_price * $sub_bom_line->qty * $line->qty; From a07916858f7740dd6260ec2242fb15839bdf4ad7 Mon Sep 17 00:00:00 2001 From: Eric Seigne Date: Thu, 2 Feb 2023 21:36:41 +0100 Subject: [PATCH 002/607] fix whitepage if modCategorie is not enabled --- htdocs/projet/list.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 32192114a4c..1113cf06b9e 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -152,7 +152,9 @@ $search_date_end_endmonth = GETPOST('search_date_end_endmonth', 'int'); $search_date_end_endyear = GETPOST('search_date_end_endyear', 'int'); $search_date_end_endday = GETPOST('search_date_end_endday', 'int'); $search_date_end_end = dol_mktime(23, 59, 59, $search_date_end_endmonth, $search_date_end_endday, $search_date_end_endyear); // Use tzserver -$search_category_array = GETPOST("search_category_".Categorie::TYPE_PROJECT."_list", "array"); +if (isModEnabled('categorie')) { + $search_category_array = GETPOST("search_category_".Categorie::TYPE_PROJECT."_list", "array"); +} if ($search_status == '') { $search_status = -1; // -1 or 1 From c2f91b2e15cec9f680041aef260d348a2b2213cd Mon Sep 17 00:00:00 2001 From: VESSILLER Date: Fri, 3 Feb 2023 14:02:46 +0100 Subject: [PATCH 003/607] FIX attach file and send by mail in ticket --- htdocs/core/class/html.formticket.class.php | 8 ++++---- htdocs/ticket/class/ticket.class.php | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/core/class/html.formticket.class.php b/htdocs/core/class/html.formticket.class.php index cea007f8e61..cd6b9ecd7fc 100644 --- a/htdocs/core/class/html.formticket.class.php +++ b/htdocs/core/class/html.formticket.class.php @@ -910,7 +910,7 @@ class FormTicket $langs->loadLangs(array('other', 'mails')); // Clear temp files. Must be done at beginning, before call of triggers - if (GETPOST('mode', 'alpha') == 'init' || (GETPOST('modelmailselected', 'alpha') && GETPOST('modelmailselected', 'alpha') != '-1')) { + if (GETPOST('mode', 'alpha') == 'init' || (GETPOST('modelselected') && GETPOST('modelmailselected', 'alpha') && GETPOST('modelmailselected', 'alpha') != '-1')) { $this->clear_attached_files(); } @@ -943,10 +943,10 @@ class FormTicket $listofmimes = array(); $keytoavoidconflict = empty($this->trackid) ? '' : '-'.$this->trackid; // this->trackid must be defined - if (GETPOST('mode', 'alpha') == 'init' || (GETPOST('modelmailselected', 'alpha') && GETPOST('modelmailselected', 'alpha') != '-1')) { - if (!empty($arraydefaultmessage->joinfiles) && is_array($this->param['fileinit'])) { + if (GETPOST('mode', 'alpha') == 'init' || (GETPOST('modelselected') && GETPOST('modelmailselected', 'alpha') && GETPOST('modelmailselected', 'alpha') != '-1')) { + if (!empty($arraydefaultmessage->joinfiles) && !empty($this->param['fileinit']) && is_array($this->param['fileinit'])) { foreach ($this->param['fileinit'] as $file) { - $this->add_attached_files($file, basename($file), dol_mimetype($file)); + $formmail->add_attached_files($file, basename($file), dol_mimetype($file)); } } } diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index e03bdabe617..d12df619bb0 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -2454,7 +2454,7 @@ class Ticket extends CommonObject $maxheightmini = 72; $formmail = new FormMail($this->db); - + $formmail->trackid = 'tic'.$this->id; $attachedfiles = $formmail->get_attached_files(); $filepath = $attachedfiles['paths']; From 2e7371eee649798adbab3d73dcbb54773ba73bde Mon Sep 17 00:00:00 2001 From: Guenter Lukas Date: Mon, 6 Feb 2023 08:45:44 +0100 Subject: [PATCH 004/607] Fix #23795 --- htdocs/comm/propal/card.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php index eb8ac018979..c702cf66434 100644 --- a/htdocs/comm/propal/card.php +++ b/htdocs/comm/propal/card.php @@ -132,7 +132,6 @@ $permissiontoedit = $usercancreate; // Used by the include of actions_lineupdown // Security check if (!empty($user->socid)) { $socid = $user->socid; - $object->id = $user->socid; } restrictedArea($user, 'propal', $object->id); From 3a8fbd3aa8dfbb8847abbe5e162a29ddbcb633ab Mon Sep 17 00:00:00 2001 From: Guenter Lukas Date: Mon, 6 Feb 2023 10:32:54 +0100 Subject: [PATCH 005/607] update --- htdocs/comm/action/card.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index 545088e47e9..1412890b3d8 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -142,9 +142,6 @@ if (!empty($conf->global->AGENDA_REMINDER_EMAIL)) { $TDurationTypes = array('y'=>$langs->trans('Years'), 'm'=>$langs->trans('Month'), 'w'=>$langs->trans('Weeks'), 'd'=>$langs->trans('Days'), 'h'=>$langs->trans('Hours'), 'i'=>$langs->trans('Minutes')); $result = restrictedArea($user, 'agenda', $object->id, 'actioncomm&societe', 'myactions|allactions', 'fk_soc', 'id'); -if ($user->socid && $socid) { - $result = restrictedArea($user, 'societe', $socid); -} /* From 394c3f847c4ffb1fb62a08d2d3f45450fb387797 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20David?= Date: Mon, 6 Feb 2023 17:03:51 +0100 Subject: [PATCH 006/607] FIX clicktodial backtopage --- htdocs/core/lib/functions.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index f9adc7bcf40..dafa33242df 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3410,7 +3410,7 @@ function dol_print_phone($phone, $countrycode = '', $cid = 0, $socid = 0, $addli $type = 'AC_FAX'; } if (!empty($conf->global->AGENDA_ADDACTIONFORPHONE)) { - $link = ''.img_object($langs->trans("AddAction"), "calendar").''; + $link = ''.img_object($langs->trans("AddAction"), "calendar").''; } if ($link) { $newphone = '
'.$newphone.' '.$link.'
'; From fc767cbfbef84278a5998dd0d08c649133d01eea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Fali=C3=A8re?= Date: Mon, 6 Feb 2023 17:56:21 +0100 Subject: [PATCH 007/607] FIX discount wasn't taken into account when adding a line in BOM --- htdocs/bom/class/bom.class.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/bom/class/bom.class.php b/htdocs/bom/class/bom.class.php index 0e57bebd922..e414954d1a5 100644 --- a/htdocs/bom/class/bom.class.php +++ b/htdocs/bom/class/bom.class.php @@ -1058,8 +1058,10 @@ class BOM extends CommonObject return -1; } $line->unit_cost = price2num((!empty($tmpproduct->cost_price)) ? $tmpproduct->cost_price : $tmpproduct->pmp); - if (empty($line->unit_cost)) { - if ($productFournisseur->find_min_price_product_fournisseur($line->fk_product) > 0) { + if ((empty($line->unit_cost)) && ($productFournisseur->find_min_price_product_fournisseur($line->fk_product) > 0)) { + if ($productFournisseur->fourn_remise_percent != "0") { + $line->unit_cost = $productFournisseur->fourn_unitprice_with_discount; + } else { $line->unit_cost = $productFournisseur->fourn_unitprice; } } From 016d1117a69f3818485b3b7ad8e8c0d4a321fa7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Fali=C3=A8re?= Date: Mon, 6 Feb 2023 18:02:28 +0100 Subject: [PATCH 008/607] added my name to the file --- htdocs/bom/class/bom.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/bom/class/bom.class.php b/htdocs/bom/class/bom.class.php index e414954d1a5..8b866e221de 100644 --- a/htdocs/bom/class/bom.class.php +++ b/htdocs/bom/class/bom.class.php @@ -1,5 +1,6 @@ +/* Copyright (C) 2019 Laurent Destailleur + * Copyright (C) 2023 Benjamin Falière * * 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 From 8d1a84d56c8fece9c540247c7e2b3037f0193818 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Tue, 7 Feb 2023 14:56:38 +0100 Subject: [PATCH 009/607] fix : Warning: Undefined property: ExpenseReport:: in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/core/lib/pdf.lib.php on line 2289 --- .../expensereport/class/expensereport.class.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 2c4b4bec855..74d668f9d59 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -133,6 +133,21 @@ class ExpenseReport extends CommonObject public $statuts_short = array(); public $statuts_logo; + // Multicurrency + /** + * @var int Currency ID + */ + public $fk_multicurrency; + + /** + * @var string multicurrency code + */ + public $multicurrency_code; + public $multicurrency_tx; + public $multicurrency_total_ht; + public $multicurrency_total_tva; + public $multicurrency_total_ttc; + /** * Draft status From 495a8656522df4c752c4f48ddbf5ed39d268889b Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Tue, 7 Feb 2023 14:59:02 +0100 Subject: [PATCH 010/607] fix : Warning: Undefined property: ExpenseReportLine:: in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/core/lib/pdf.lib.php on line 2289 --- .../expensereport/class/expensereport.class.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 74d668f9d59..5526b5564c4 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -2754,6 +2754,21 @@ class ExpenseReportLine extends CommonObjectLine public $total_localtax1; public $total_localtax2; + // Multicurrency + /** + * @var int Currency ID + */ + public $fk_multicurrency; + + /** + * @var string multicurrency code + */ + public $multicurrency_code; + public $multicurrency_tx; + public $multicurrency_total_ht; + public $multicurrency_total_tva; + public $multicurrency_total_ttc; + /** * @var int ID into llx_ecm_files table to link line to attached file */ From 4cd7f7bedaceaaea1898bb04cf141127ef9c5fc6 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Tue, 7 Feb 2023 15:56:28 +0100 Subject: [PATCH 011/607] fix : Warning: Undefined property: pdf_standard:: in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/core/modules/expensereport/doc/pdf_standard.modules.php on line 582 --- htdocs/core/modules/expensereport/doc/pdf_standard.modules.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php index f365173ddbe..80418a86f91 100644 --- a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php @@ -92,6 +92,7 @@ class pdf_standard extends ModeleExpenseReport public $posxtva; public $posxup; public $posxqty; + public $posxtype; public $postotalht; public $postotalttc; From 9ad29faa32520163fe8e461c093891201f45146e Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Tue, 7 Feb 2023 16:01:09 +0100 Subject: [PATCH 012/607] fix : Warning: Undefined property: pdf_standard:: in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/core/modules/expensereport/doc/pdf_standard.modules.php on line 589 --- htdocs/core/modules/expensereport/doc/pdf_standard.modules.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php index 80418a86f91..4363a7e90f1 100644 --- a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php @@ -1,7 +1,7 @@ * Copyright (C) 2015 Alexandre Spangaro - * Copyright (C) 2016-2022 Philippe Grand + * Copyright (C) 2016-2023 Philippe Grand * Copyright (C) 2018-2020 Frédéric France * Copyright (C) 2018 Francis Appels * Copyright (C) 2019 Markus Welters @@ -93,6 +93,7 @@ class pdf_standard extends ModeleExpenseReport public $posxup; public $posxqty; public $posxtype; + public $posxprojet; public $postotalht; public $postotalttc; From 55d6e2ead026cf7dde9124e26432d97e3b63a9b5 Mon Sep 17 00:00:00 2001 From: tnegre Date: Tue, 7 Feb 2023 17:24:16 +0100 Subject: [PATCH 013/607] Fix prelevement line : the link to the facture was to a customer facture, even when it was a facturefourn. --- htdocs/compta/prelevement/line.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/prelevement/line.php b/htdocs/compta/prelevement/line.php index cba7777b734..6eb10ce6a1a 100644 --- a/htdocs/compta/prelevement/line.php +++ b/htdocs/compta/prelevement/line.php @@ -309,7 +309,11 @@ if ($id) { print img_object($langs->trans("ShowBill"), "bill"); print ' '; - print ''.$obj->ref."\n"; + if ($type == 'bank-transfer') { + print ''.$obj->ref."\n"; + } else { + print ''.$obj->ref."\n"; + } print ''; print img_object($langs->trans("ShowCompany"), "company").' '.$obj->name."\n"; From b880029ac048e3b3e256fac1baf24f2451348a3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9=20Cendrier?= Date: Wed, 8 Feb 2023 09:58:30 +0100 Subject: [PATCH 014/607] typos in getAttchments() $arrayobject --- htdocs/emailcollector/class/emailcollector.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index 53889ef9c07..5d0c92b4c32 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -1951,7 +1951,7 @@ class EmailCollector extends CommonObject 'ticket' => array('table' => 'ticket', 'fields' => array('ref'), 'class' => 'ticket/class/ticket.class.php', - 'object' => ' Ticket'), + 'object' => 'Ticket'), 'knowledgemanagement' => array('table' => 'knowledgemanagement_knowledgerecord', 'fields' => array('ref'), 'class' => 'knowledgemanagement/class/knowledgemanagement.class.php', @@ -1969,7 +1969,7 @@ class EmailCollector extends CommonObject 'class' => 'compta/facture/class/facture.class.php', 'object' => 'Facture'), 'fournisseur/facture' => array('table' => 'facture_fourn', - 'fields' => array('ref', ref_client), + 'fields' => array('ref', 'ref_client'), 'class' => 'fourn/class/fournisseur.facture.class.php', 'object' => 'FactureFournisseur'), 'produit' => array('table' => 'product', From 8a0fd114d45aacda94b9cf803bf4a4649d725928 Mon Sep 17 00:00:00 2001 From: atm-lena Date: Wed, 8 Feb 2023 10:48:46 +0100 Subject: [PATCH 015/607] FIX bug alias extra in extrafields syntax configuration --- htdocs/core/class/extrafields.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 8ac336f84f8..fbd857b0e27 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -1233,7 +1233,7 @@ class ExtraFields $InfoFieldList[4] = str_replace('$ID$', '0', $InfoFieldList[4]); } //We have to join on extrafield table - if (strpos($InfoFieldList[4], 'extra') !== false) { + if (strpos($InfoFieldList[4], 'extra.') !== false) { $sql .= ' as main, '.$this->db->prefix().$InfoFieldList[0].'_extrafields as extra'; $sqlwhere .= " WHERE extra.fk_object=main.".$InfoFieldList[2]." AND ".$InfoFieldList[4]; } else { From 1e53f87d518070479e71b0236d65e5d21320b7f9 Mon Sep 17 00:00:00 2001 From: Marc de Lima Lucio <68746600+marc-dll@users.noreply.github.com> Date: Wed, 8 Feb 2023 12:18:46 +0100 Subject: [PATCH 016/607] FIX: various PHP8 compatibility fixes --- htdocs/admin/agenda.php | 2 +- htdocs/admin/agenda_extsites.php | 2 +- htdocs/admin/agenda_other.php | 4 +-- htdocs/admin/agenda_xcal.php | 33 ++++++++++++++----- htdocs/admin/dav.php | 6 +++- htdocs/admin/facture.php | 8 +++-- htdocs/admin/payment.php | 6 ++-- .../core/class/commondocgenerator.class.php | 10 ++++++ .../modules/facture/mod_facture_mercure.php | 23 ++++++------- .../core/modules/payment/mod_payment_ant.php | 6 ++-- .../doc/doc_generic_proposal_odt.modules.php | 19 ++++++----- ..._generic_supplier_proposal_odt.modules.php | 19 ++++++----- .../mod_supplier_proposal_saphir.php | 8 +++-- .../user/doc/doc_generic_user_odt.modules.php | 17 ++++++---- .../doc/doc_generic_usergroup_odt.modules.php | 17 ++++++---- htdocs/dav/dav.lib.php | 2 +- htdocs/includes/tcpdi/tcpdi_parser.php | 4 +-- htdocs/main.inc.php | 2 ++ 18 files changed, 117 insertions(+), 71 deletions(-) diff --git a/htdocs/admin/agenda.php b/htdocs/admin/agenda.php index 730983ad090..bd1bae40d19 100644 --- a/htdocs/admin/agenda.php +++ b/htdocs/admin/agenda.php @@ -197,7 +197,7 @@ if (!empty($triggers)) { print ''.$trigger['label'].''; print ''; $key = 'MAIN_AGENDA_ACTIONAUTO_'.$trigger['code']; - $value = $conf->global->$key; + $value = getDolGlobalInt($key); print ''; print ''."\n"; } diff --git a/htdocs/admin/agenda_extsites.php b/htdocs/admin/agenda_extsites.php index 5567e741272..d6cb112810a 100644 --- a/htdocs/admin/agenda_extsites.php +++ b/htdocs/admin/agenda_extsites.php @@ -202,7 +202,7 @@ print ''.$langs->trans("AgendaExtSitesDesc")."\n"; -$selectedvalue=$conf->global->AGENDA_DISABLE_EXT; +$selectedvalue = getDolGlobalInt('AGENDA_DISABLE_EXT'); if ($selectedvalue==1) $selectedvalue=0; else $selectedvalue=1; print ""; diff --git a/htdocs/admin/agenda_other.php b/htdocs/admin/agenda_other.php index 8e50380e2ae..7a49d2def53 100644 --- a/htdocs/admin/agenda_other.php +++ b/htdocs/admin/agenda_other.php @@ -325,7 +325,7 @@ print ''."\n"; print ''."\n"; // Manual or automatic @@ -387,7 +387,7 @@ print ''."\n"; print ''."\n"; print ''."\n"; print ''."\n"; print '
'.$form->textwithpicto($langs->trans("AGENDA_DEFAULT_VIEW"), $htmltex print ' '."\n"; $tmplist = array(''=>' ', 'show_list'=>$langs->trans("ViewList"), 'show_month'=>$langs->trans("ViewCal"), 'show_week'=>$langs->trans("ViewWeek"), 'show_day'=>$langs->trans("ViewDay"), 'show_peruser'=>$langs->trans("ViewPerUser")); -print $form->selectarray('AGENDA_DEFAULT_VIEW', $tmplist, $conf->global->AGENDA_DEFAULT_VIEW); +print $form->selectarray('AGENDA_DEFAULT_VIEW', $tmplist, getDolGlobalString('AGENDA_DEFAULT_VIEW')); print '
'.$langs->trans("AGENDA_DEFAULT_FILTER_STATUS").' '."\n"; -$formactions->form_select_status_action('agenda', $conf->global->AGENDA_DEFAULT_FILTER_STATUS, 1, 'AGENDA_DEFAULT_FILTER_STATUS', 1, 2, 'minwidth100'); +$formactions->form_select_status_action('agenda', getDolGlobalString('AGENDA_DEFAULT_FILTER_STATUS'), 1, 'AGENDA_DEFAULT_FILTER_STATUS', 1, 2, 'minwidth100'); print '
'; diff --git a/htdocs/admin/agenda_xcal.php b/htdocs/admin/agenda_xcal.php index ce36d97d06a..fc75042146f 100644 --- a/htdocs/admin/agenda_xcal.php +++ b/htdocs/admin/agenda_xcal.php @@ -38,6 +38,23 @@ $langs->loadLangs(array("admin", "other", "agenda")); $def = array(); $actionsave = GETPOST('save', 'alpha'); +$MAIN_AGENDA_XCAL_EXPORTKEY = getDolGlobalString('MAIN_AGENDA_XCAL_EXPORTKEY'); +$MAIN_AGENDA_EXPORT_PAST_DELAY = getDolGlobalInt('MAIN_AGENDA_EXPORT_PAST_DELAY'); +$MAIN_AGENDA_EXPORT_CACHE = getDolGlobalInt('MAIN_AGENDA_EXPORT_CACHE'); +$AGENDA_EXPORT_FIX_TZ = getDolGlobalString('AGENDA_EXPORT_FIX_TZ'); + +if (GETPOSTISSET('MAIN_AGENDA_XCAL_EXPORTKEY')) { + $MAIN_AGENDA_XCAL_EXPORTKEY = trim(GETPOST('MAIN_AGENDA_XCAL_EXPORTKEY', 'alpha')); +} +if (GETPOSTISSET('MAIN_AGENDA_EXPORT_PAST_DELAY')) { + $MAIN_AGENDA_EXPORT_PAST_DELAY = intval(GETPOST('MAIN_AGENDA_EXPORT_PAST_DELAY', 'int')); +} +if (GETPOSTISSET('MAIN_AGENDA_EXPORT_CACHE')) { + $MAIN_AGENDA_EXPORT_CACHE = intval(GETPOST('MAIN_AGENDA_EXPORT_CACHE', 'int')); +} +if (GETPOSTISSET('AGENDA_EXPORT_FIX_TZ')) { + $AGENDA_EXPORT_FIX_TZ = trim(GETPOST('AGENDA_EXPORT_FIX_TZ', 'alpha')); +} // Sauvegardes parametres if ($actionsave) { @@ -45,10 +62,10 @@ if ($actionsave) { $db->begin(); - $i += dolibarr_set_const($db, 'MAIN_AGENDA_XCAL_EXPORTKEY', trim(GETPOST('MAIN_AGENDA_XCAL_EXPORTKEY', 'alpha')), 'chaine', 0, '', $conf->entity); - $i += dolibarr_set_const($db, 'MAIN_AGENDA_EXPORT_PAST_DELAY', trim(GETPOST('MAIN_AGENDA_EXPORT_PAST_DELAY', 'alpha')), 'chaine', 0, '', $conf->entity); - $i += dolibarr_set_const($db, 'MAIN_AGENDA_EXPORT_CACHE', trim(GETPOST('MAIN_AGENDA_EXPORT_CACHE', 'alpha')), 'chaine', 0, '', $conf->entity); - $i += dolibarr_set_const($db, 'AGENDA_EXPORT_FIX_TZ', trim(GETPOST('AGENDA_EXPORT_FIX_TZ', 'alpha')), 'chaine', 0, '', $conf->entity); + $i += dolibarr_set_const($db, 'MAIN_AGENDA_XCAL_EXPORTKEY', $MAIN_AGENDA_XCAL_EXPORTKEY, 'chaine', 0, '', $conf->entity); + $i += dolibarr_set_const($db, 'MAIN_AGENDA_EXPORT_PAST_DELAY', $MAIN_AGENDA_EXPORT_PAST_DELAY, 'chaine', 0, '', $conf->entity); + $i += dolibarr_set_const($db, 'MAIN_AGENDA_EXPORT_CACHE', $MAIN_AGENDA_EXPORT_CACHE, 'chaine', 0, '', $conf->entity); + $i += dolibarr_set_const($db, 'AGENDA_EXPORT_FIX_TZ', $AGENDA_EXPORT_FIX_TZ, 'chaine', 0, '', $conf->entity); if ($i >= 4) { $db->commit(); @@ -97,7 +114,7 @@ print ""; print ''; print ''.$langs->trans("PasswordTogetVCalExport").""; -print ''; +print ''; if (!empty($conf->use_javascript_ajax)) { print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_token" class="linkobject"'); } @@ -107,13 +124,13 @@ print ""; print ''; print "".$langs->trans("PastDelayVCalExport").""; -print "global->MAIN_AGENDA_EXPORT_PAST_DELAY)."\" size=\"10\"> ".$langs->trans("days").""; +print " ".$langs->trans("days").""; print " "; print ""; print ''; print "".$langs->trans("UseACacheDelay").""; -print "global->MAIN_AGENDA_EXPORT_CACHE)."\" size=\"10\">"; +print ""; print " "; print ""; @@ -130,7 +147,7 @@ print ""; print ''; print ''.$langs->trans("FixTZ").""; print ""; -print ''; +print ''; print '   '.$langs->trans("FillThisOnlyIfRequired"); print ""; print ""; diff --git a/htdocs/admin/dav.php b/htdocs/admin/dav.php index e12848e3de1..a19ffa17b49 100644 --- a/htdocs/admin/dav.php +++ b/htdocs/admin/dav.php @@ -42,7 +42,7 @@ $arrayofparameters = array( 'DAV_RESTICT_ON_IP'=>array('css'=>'minwidth200', 'enabled'=>1), 'DAV_ALLOW_PRIVATE_DIR'=>array('css'=>'minwidth200', 'enabled'=>2), 'DAV_ALLOW_PUBLIC_DIR'=>array('css'=>'minwidth200', 'enabled'=>1), - 'DAV_ALLOW_ECM_DIR'=>array('css'=>'minwidth200', 'enabled'=>$conf->ecm->enabled) + 'DAV_ALLOW_ECM_DIR'=>array('css'=>'minwidth200', 'enabled'=>! empty($conf->ecm->enabled)) ); // To fix when dire does not exists @@ -123,6 +123,10 @@ if ($action == 'edit') { print ''.$langs->trans("Parameter").''.$langs->trans("Value").''; foreach ($arrayofparameters as $key => $val) { + if (isset($val['enabled']) && empty($val['enabled'])) { + continue; + } + print ''; $tooltiphelp = (($langs->trans($key.'Tooltip') != $key.'Tooltip') ? $langs->trans($key.'Tooltip') : ''); $label = $langs->trans($key); diff --git a/htdocs/admin/facture.php b/htdocs/admin/facture.php index ae269492ddf..756484289aa 100644 --- a/htdocs/admin/facture.php +++ b/htdocs/admin/facture.php @@ -323,7 +323,7 @@ foreach ($dirmodels as $reldir) { if ($conf->global->FACTURE_ADDON == $file || $conf->global->FACTURE_ADDON.'.php' == $file) { print img_picto($langs->trans("Activated"), 'switch_on'); } else { - print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; + print ''.img_picto($langs->trans("Disabled"), 'switch_off').''; } print ''; @@ -661,12 +661,14 @@ if (!empty($conf->banque->enabled)) { } print ""; +$FACTURE_CHQ_NUMBER = getDolGlobalInt('FACTURE_CHQ_NUMBER'); + print ''; print "".$langs->trans("SuggestPaymentByChequeToAddress").""; print ""; print '', $tooltip, 1, 1).''; + $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; $texte .= '  '; @@ -84,17 +84,17 @@ class mod_facture_mercure extends ModeleNumRefFactures // Prefix setting of replacement invoices $texte .= ''.$langs->trans("Mask").' ('.$langs->trans("InvoiceReplacement").'):'; - $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; + $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; $texte .= ''; // Prefix setting of credit note $texte .= ''.$langs->trans("Mask").' ('.$langs->trans("InvoiceAvoir").'):'; - $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; + $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; $texte .= ''; // Prefix setting of deposit $texte .= ''.$langs->trans("Mask").' ('.$langs->trans("InvoiceDeposit").'):'; - $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; + $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; $texte .= ''; $texte .= ''; @@ -136,23 +136,20 @@ class mod_facture_mercure extends ModeleNumRefFactures */ public function getNextValue($objsoc, $invoice, $mode = 'next') { - global $db, $conf; + global $db; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; // Get Mask value $mask = ''; if (is_object($invoice) && $invoice->type == 1) { - $mask = $conf->global->FACTURE_MERCURE_MASK_REPLACEMENT; - if (!$mask) { - $mask = $conf->global->FACTURE_MERCURE_MASK_INVOICE; - } + $mask = getDolGlobalString('FACTURE_MERCURE_MASK_REPLACEMENT', getDolGlobalString('FACTURE_MERCURE_MASK_INVOICE')); } elseif (is_object($invoice) && $invoice->type == 2) { - $mask = $conf->global->FACTURE_MERCURE_MASK_CREDIT; + $mask = getDolGlobalString('FACTURE_MERCURE_MASK_CREDIT'); } elseif (is_object($invoice) && $invoice->type == 3) { - $mask = $conf->global->FACTURE_MERCURE_MASK_DEPOSIT; + $mask = getDolGlobalString('FACTURE_MERCURE_MASK_DEPOSIT'); } else { - $mask = $conf->global->FACTURE_MERCURE_MASK_INVOICE; + $mask = getDolGlobalString('FACTURE_MERCURE_MASK_INVOICE'); } if (!$mask) { $this->error = 'NotConfigured'; diff --git a/htdocs/core/modules/payment/mod_payment_ant.php b/htdocs/core/modules/payment/mod_payment_ant.php index 958074202fe..d59d7c47f6f 100644 --- a/htdocs/core/modules/payment/mod_payment_ant.php +++ b/htdocs/core/modules/payment/mod_payment_ant.php @@ -61,7 +61,7 @@ class mod_payment_ant extends ModeleNumRefPayments */ public function info() { - global $db, $conf, $langs; + global $db, $langs; $langs->load("bills"); @@ -82,7 +82,7 @@ class mod_payment_ant extends ModeleNumRefPayments // Parametrage du prefix $texte .= ''.$langs->trans("Mask").':'; - $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; + $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; $texte .= '  '; @@ -128,7 +128,7 @@ class mod_payment_ant extends ModeleNumRefPayments require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; // We get cursor rule - $mask = $conf->global->PAYMENT_ANT_MASK; + $mask = getDolGlobalString('PAYMENT_ANT_MASK'); if (!$mask) { $this->error = 'NotConfigured'; diff --git a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php index 66e2f3c8312..ab03b04b86e 100644 --- a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php +++ b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php @@ -117,13 +117,16 @@ class doc_generic_proposal_odt extends ModelePDFPropales $form = new Form($this->db); + $odtChosen = getDolGlobalInt('MAIN_PROPAL_CHOOSE_ODT_DOCUMENT') > 0; + $odtPath = trim(getDolGlobalString('PROPALE_ADDON_PDF_ODT_PATH')); + $texte = $this->description.".
\n"; $texte .= '
'; $texte .= ''; $texte .= ''; $texte .= ''; $texte .= ''; - if ($conf->global->MAIN_PROPAL_CHOOSE_ODT_DOCUMENT > 0) { + if ($odtChosen) { $texte .= ''; $texte .= ''; $texte .= ''; @@ -133,7 +136,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales // List of directories area $texte .= ''; $texttitle = $langs->trans("ListOfDirectories"); - $listofdir = explode(',', preg_replace('/[\r\n]+/', ',', trim($conf->global->PROPALE_ADDON_PDF_ODT_PATH))); + $listofdir = explode(',', preg_replace('/[\r\n]+/', ',', $odtPath)); $listoffiles = array(); foreach ($listofdir as $key => $tmpdir) { $tmpdir = trim($tmpdir); @@ -159,7 +162,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales $texte .= $form->textwithpicto($texttitle, $texthelp, 1, 'help', '', 1); $texte .= '
'; $texte .= ''; $texte .= '
'; $texte .= ''; @@ -167,7 +170,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales // Scan directories $nbofiles = count($listoffiles); - if (!empty($conf->global->PROPALE_ADDON_PDF_ODT_PATH)) { + if (!empty($odtPath)) { $texte .= $langs->trans("NumberOfModelFilesFound").': '; //$texte.=$nbofiles?'':''; $texte .= count($listoffiles); @@ -184,26 +187,26 @@ class doc_generic_proposal_odt extends ModelePDFPropales $texte .= '
'; // Set default template for different status of proposal - if ($conf->global->MAIN_PROPAL_CHOOSE_ODT_DOCUMENT > 0) { + if ($odtChosen) { // Model for creation $list = ModelePDFPropales::liste_modeles($this->db); $texte .= ''; $texte .= ''; $texte .= ''; $texte .= '"; $texte .= ''; $texte .= ''; $texte .= '"; $texte .= ''; $texte .= ''; $texte .= '"; $texte .= '
'.$langs->trans("DefaultModelPropalCreate").''; - $texte .= $form->selectarray('value2', $list, $conf->global->PROPALE_ADDON_PDF_ODT_DEFAULT); + $texte .= $form->selectarray('value2', $list, getDolGlobalString('PROPALE_ADDON_PDF_ODT_DEFAULT')); $texte .= "
'.$langs->trans("DefaultModelPropalToBill").''; - $texte .= $form->selectarray('value3', $list, $conf->global->PROPALE_ADDON_PDF_ODT_TOBILL); + $texte .= $form->selectarray('value3', $list, getDolGlobalString('PROPALE_ADDON_PDF_ODT_TOBILL')); $texte .= "
'.$langs->trans("DefaultModelPropalClosed").''; - $texte .= $form->selectarray('value4', $list, $conf->global->PROPALE_ADDON_PDF_ODT_CLOSED); + $texte .= $form->selectarray('value4', $list, getDolGlobalString('PROPALE_ADDON_PDF_ODT_CLOSED')); $texte .= "
'; } diff --git a/htdocs/core/modules/supplier_proposal/doc/doc_generic_supplier_proposal_odt.modules.php b/htdocs/core/modules/supplier_proposal/doc/doc_generic_supplier_proposal_odt.modules.php index 04f6ed49012..0cfcd91a350 100644 --- a/htdocs/core/modules/supplier_proposal/doc/doc_generic_supplier_proposal_odt.modules.php +++ b/htdocs/core/modules/supplier_proposal/doc/doc_generic_supplier_proposal_odt.modules.php @@ -118,13 +118,16 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal $form = new Form($this->db); + $odtChosen = getDolGlobalInt('MAIN_SUPPLIER_PROPOSAL_CHOOSE_ODT_DOCUMENT') > 0; + $odtPath = trim(getDolGlobalString('SUPPLIER_PROPOSAL_ADDON_PDF_ODT_PATH')); + $texte = $this->description.".
\n"; $texte .= ''; $texte .= ''; $texte .= ''; $texte .= ''; $texte .= ''; - if ($conf->global->MAIN_SUPPLIER_PROPOSAL_CHOOSE_ODT_DOCUMENT > 0) { + if ($odtChosen) { $texte .= ''; $texte .= ''; $texte .= ''; @@ -134,7 +137,7 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal // List of directories area $texte .= ''; $texttitle = $langs->trans("ListOfDirectories"); - $listofdir = explode(',', preg_replace('/[\r\n]+/', ',', trim($conf->global->SUPPLIER_PROPOSAL_ADDON_PDF_ODT_PATH))); + $listofdir = explode(',', preg_replace('/[\r\n]+/', ',', $odtPath)); $listoffiles = array(); foreach ($listofdir as $key => $tmpdir) { $tmpdir = trim($tmpdir); @@ -160,7 +163,7 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal $texte .= $form->textwithpicto($texttitle, $texthelp, 1, 'help', '', 1); $texte .= '
'; $texte .= ''; $texte .= '
'; - if ($conf->global->MAIN_SUPPLIER_PROPOSAL_CHOOSE_ODT_DOCUMENT > 0) { + if ($odtChosen) { // Model for creation $list = ModelePDFSupplierProposal::liste_modeles($this->db); $texte .= ''; $texte .= ''; $texte .= ''; $texte .= '"; $texte .= ''; $texte .= ''; $texte .= '"; $texte .= ''; $texte .= ''; $texte .= '"; $texte .= '
'.$langs->trans("DefaultModelSupplierProposalCreate").''; - $texte .= $form->selectarray('value2', $list, $conf->global->SUPPLIER_PROPOSAL_ADDON_PDF_ODT_DEFAULT); + $texte .= $form->selectarray('value2', $list, getDolGlobalString('SUPPLIER_PROPOSAL_ADDON_PDF_ODT_DEFAULT')); $texte .= "
'.$langs->trans("DefaultModelSupplierProposalToBill").''; - $texte .= $form->selectarray('value3', $list, $conf->global->SUPPLIER_PROPOSAL_ADDON_PDF_ODT_TOBILL); + $texte .= $form->selectarray('value3', $list, getDolGlobalString('SUPPLIER_PROPOSAL_ADDON_PDF_ODT_TOBILL')); $texte .= "
'.$langs->trans("DefaultModelSupplierProposalClosed").''; - $texte .= $form->selectarray('value4', $list, $conf->global->SUPPLIER_PROPOSAL_ADDON_PDF_ODT_CLOSED); + $texte .= $form->selectarray('value4', $list, getDolGlobalString('SUPPLIER_PROPOSAL_ADDON_PDF_ODT_CLOSED')); $texte .= "
'; } diff --git a/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_saphir.php b/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_saphir.php index e7db54062cb..99a05e12e4d 100644 --- a/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_saphir.php +++ b/htdocs/core/modules/supplier_proposal/mod_supplier_proposal_saphir.php @@ -64,7 +64,7 @@ class mod_supplier_proposal_saphir extends ModeleNumRefSupplierProposal */ public function info() { - global $conf, $langs, $db; + global $langs, $db; $langs->load("bills"); @@ -83,9 +83,11 @@ class mod_supplier_proposal_saphir extends ModeleNumRefSupplierProposal $tooltip .= $langs->trans("GenericMaskCodes4a", $langs->transnoentities("CommRequest"), $langs->transnoentities("CommRequest")); $tooltip .= $langs->trans("GenericMaskCodes5"); + $mask = dolGetGlobalString('SUPPLIER_PROPOSAL_SAPHIR_MASK'); + // Parametrage du prefix $texte .= ''.$langs->trans("Mask").':'; - $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; + $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; $texte .= '  '; @@ -131,7 +133,7 @@ class mod_supplier_proposal_saphir extends ModeleNumRefSupplierProposal require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; // On defini critere recherche compteur - $mask = $conf->global->SUPPLIER_PROPOSAL_SAPHIR_MASK; + $mask = empty($conf->global->SUPPLIER_PROPOSAL_SAPHIR_MASK) ? '' : $conf->global->SUPPLIER_PROPOSAL_SAPHIR_MASK; if (!$mask) { $this->error = 'NotConfigured'; diff --git a/htdocs/core/modules/user/doc/doc_generic_user_odt.modules.php b/htdocs/core/modules/user/doc/doc_generic_user_odt.modules.php index 656eb88ecaa..aa068a162e2 100644 --- a/htdocs/core/modules/user/doc/doc_generic_user_odt.modules.php +++ b/htdocs/core/modules/user/doc/doc_generic_user_odt.modules.php @@ -115,13 +115,16 @@ class doc_generic_user_odt extends ModelePDFUser $form = new Form($this->db); + $odtChosen = getDolGlobalInt('MAIN_PROPAL_CHOOSE_ODT_DOCUMENT') > 0; + $odtPath = trim(getDolGlobalString('USER_ADDON_PDF_ODT_PATH')); + $texte = $this->description.".
\n"; $texte .= ''; $texte .= ''; $texte .= ''; $texte .= ''; $texte .= ''; - if (!empty($conf->global->MAIN_PROPAL_CHOOSE_ODT_DOCUMENT)) { + if ($odtChosen) { $texte .= ''; $texte .= ''; $texte .= ''; @@ -131,7 +134,7 @@ class doc_generic_user_odt extends ModelePDFUser // List of directories area $texte .= ''; $texttitle = $langs->trans("ListOfDirectories"); - $listofdir = explode(',', preg_replace('/[\r\n]+/', ',', trim($conf->global->USER_ADDON_PDF_ODT_PATH))); + $listofdir = explode(',', preg_replace('/[\r\n]+/', ',', $odtPath)); $listoffiles = array(); foreach ($listofdir as $key => $tmpdir) { $tmpdir = trim($tmpdir); @@ -157,7 +160,7 @@ class doc_generic_user_odt extends ModelePDFUser $texte .= $form->textwithpicto($texttitle, $texthelp, 1, 'help', '', 1); $texte .= '
'; $texte .= ''; $texte .= '
'; $texte .= ''; @@ -167,26 +170,26 @@ class doc_generic_user_odt extends ModelePDFUser if (count($listofdir)) { $texte .= $langs->trans("NumberOfModelFilesFound").': '.count($listoffiles).''; - if (!empty($conf->global->MAIN_PROPAL_CHOOSE_ODT_DOCUMENT)) { + if ($odtChosen) { // Model for creation $list = ModelePDFUser::liste_modeles($this->db); $texte .= ''; $texte .= ''; $texte .= ''; $texte .= '"; $texte .= ''; $texte .= ''; $texte .= '"; $texte .= ''; $texte .= ''; $texte .= '"; $texte .= '
'.$langs->trans("DefaultModelPropalCreate").''; - $texte .= $form->selectarray('value2', $list, $conf->global->USER_ADDON_PDF_ODT_DEFAULT); + $texte .= $form->selectarray('value2', $list, getDolGlobalString('USER_ADDON_PDF_ODT_DEFAULT')); $texte .= "
'.$langs->trans("DefaultModelPropalToBill").''; - $texte .= $form->selectarray('value3', $list, $conf->global->USER_ADDON_PDF_ODT_TOBILL); + $texte .= $form->selectarray('value3', $list, getDolGlobalString('USER_ADDON_PDF_ODT_TOBILL')); $texte .= "
'.$langs->trans("DefaultModelPropalClosed").''; - $texte .= $form->selectarray('value4', $list, $conf->global->USER_ADDON_PDF_ODT_CLOSED); + $texte .= $form->selectarray('value4', $list, getDolGlobalString('USER_ADDON_PDF_ODT_CLOSED')); $texte .= "
'; } diff --git a/htdocs/core/modules/usergroup/doc/doc_generic_usergroup_odt.modules.php b/htdocs/core/modules/usergroup/doc/doc_generic_usergroup_odt.modules.php index e1c83023df9..e1e5238cb89 100644 --- a/htdocs/core/modules/usergroup/doc/doc_generic_usergroup_odt.modules.php +++ b/htdocs/core/modules/usergroup/doc/doc_generic_usergroup_odt.modules.php @@ -118,13 +118,16 @@ class doc_generic_usergroup_odt extends ModelePDFUserGroup $form = new Form($this->db); + $odtChosen = getDolGlobalInt('MAIN_PROPAL_CHOOSE_ODT_DOCUMENT') > 0; + $odtPath = trim(getDolGlobalString('USERGROUP_ADDON_PDF_ODT_PATH')); + $texte = $this->description.".
\n"; $texte .= ''; $texte .= ''; $texte .= ''; $texte .= ''; $texte .= ''; - if ($conf->global->MAIN_PROPAL_CHOOSE_ODT_DOCUMENT > 0) { + if ($odtChosen) { $texte .= ''; $texte .= ''; $texte .= ''; @@ -134,7 +137,7 @@ class doc_generic_usergroup_odt extends ModelePDFUserGroup // List of directories area $texte .= ''; $texttitle = $langs->trans("ListOfDirectories"); - $listofdir = explode(',', preg_replace('/[\r\n]+/', ',', trim($conf->global->USERGROUP_ADDON_PDF_ODT_PATH))); + $listofdir = explode(',', preg_replace('/[\r\n]+/', ',', $odtPath)); $listoffiles = array(); foreach ($listofdir as $key => $tmpdir) { $tmpdir = trim($tmpdir); @@ -160,7 +163,7 @@ class doc_generic_usergroup_odt extends ModelePDFUserGroup $texte .= $form->textwithpicto($texttitle, $texthelp, 1, 'help', '', 1); $texte .= '
'; $texte .= ''; $texte .= '
'; $texte .= ''; @@ -170,26 +173,26 @@ class doc_generic_usergroup_odt extends ModelePDFUserGroup if (count($listofdir)) { $texte .= $langs->trans("NumberOfModelFilesFound").': '.count($listoffiles).''; - if ($conf->global->MAIN_PROPAL_CHOOSE_ODT_DOCUMENT > 0) { + if ($odtChosen) { // Model for creation $list = ModelePDFUserGroup::liste_modeles($this->db); $texte .= ''; $texte .= ''; $texte .= ''; $texte .= '"; $texte .= ''; $texte .= ''; $texte .= '"; $texte .= ''; $texte .= ''; $texte .= '"; $texte .= '
'.$langs->trans("DefaultModelPropalCreate").''; - $texte .= $form->selectarray('value2', $list, $conf->global->USERGROUP_ADDON_PDF_ODT_DEFAULT); + $texte .= $form->selectarray('value2', $list, getDolGlobalString('USERGROUP_ADDON_PDF_ODT_DEFAULT')); $texte .= "
'.$langs->trans("DefaultModelPropalToBill").''; - $texte .= $form->selectarray('value3', $list, $conf->global->USERGROUP_ADDON_PDF_ODT_TOBILL); + $texte .= $form->selectarray('value3', $list, getDolGlobalString('USERGROUP_ADDON_PDF_ODT_TOBILL')); $texte .= "
'.$langs->trans("DefaultModelPropalClosed").''; - $texte .= $form->selectarray('value4', $list, $conf->global->USERGROUP_ADDON_PDF_ODT_CLOSED); + $texte .= $form->selectarray('value4', $list, getDolGlobalString('USERGROUP_ADDON_PDF_ODT_CLOSED')); $texte .= "
'; } diff --git a/htdocs/dav/dav.lib.php b/htdocs/dav/dav.lib.php index 2861b8744bf..9babbabbe83 100644 --- a/htdocs/dav/dav.lib.php +++ b/htdocs/dav/dav.lib.php @@ -54,7 +54,7 @@ function dav_admin_prepare_head() $h = 0; $head = array(); - $head[$h][0] = DOL_URL_ROOT.'/admin/dav.php?id='.$object->id; + $head[$h][0] = DOL_URL_ROOT.'/admin/dav.php'; $head[$h][1] = $langs->trans("WebDAV"); $head[$h][2] = 'webdav'; $h++; diff --git a/htdocs/includes/tcpdi/tcpdi_parser.php b/htdocs/includes/tcpdi/tcpdi_parser.php index 13e9839f2b4..174c496d4f4 100644 --- a/htdocs/includes/tcpdi/tcpdi_parser.php +++ b/htdocs/includes/tcpdi/tcpdi_parser.php @@ -1365,7 +1365,7 @@ class tcpdi_parser { $obj = $this->getObjectVal($obj); if (isset ($obj[1][1]['/Rotate'])) { $res = $this->getObjectVal($obj[1][1]['/Rotate']); - if ($res[0] == PDF_TYPE_OBJECT) + if (isset($res[0]) && $res[0] == PDF_TYPE_OBJECT) return $res[1]; return $res; } else { @@ -1373,7 +1373,7 @@ class tcpdi_parser { return false; } else { $res = $this->_getPageRotation($obj[1][1]['/Parent']); - if ($res[0] == PDF_TYPE_OBJECT) + if (isset($res[0]) && $res[0] == PDF_TYPE_OBJECT) return $res[1]; return $res; } diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index b97312859b9..d541f3abce5 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -754,6 +754,8 @@ if (!defined('NOLOGIN')) { $login = ''; } + $dol_authmode = ''; + if ($login) { $dol_authmode = $conf->authmode; // This properties is defined only when logged, to say what mode was successfully used $dol_tz = $_POST["tz"]; From 98bfba1f461be23fcce1451cd1f275ab82c9020e Mon Sep 17 00:00:00 2001 From: avolani <31508728+avolani@users.noreply.github.com> Date: Wed, 8 Feb 2023 16:20:47 +0100 Subject: [PATCH 017/607] Add missing table_element This allow usage of extrafields logic (still missing table and setup pages) --- htdocs/expensereport/class/expensereport.class.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index bc7e0f36baa..04c16fc2654 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -2680,6 +2680,11 @@ class ExpenseReportLine extends CommonObjectLine * @var DoliDB Database handler. */ public $db; + + /** + * @var string Name of table without prefix where object is stored + */ + public $table_element = 'expensereport_det'; /** * @var string Error code (or message) From 637603731a3785eadbdd454ae96ecc79ed570b7a Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Wed, 8 Feb 2023 15:26:10 +0000 Subject: [PATCH 018/607] Fixing style errors. --- htdocs/expensereport/class/expensereport.class.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 04c16fc2654..6ee3c8e19e7 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -2680,11 +2680,11 @@ class ExpenseReportLine extends CommonObjectLine * @var DoliDB Database handler. */ public $db; - + /** - * @var string Name of table without prefix where object is stored - */ - public $table_element = 'expensereport_det'; + * @var string Name of table without prefix where object is stored + */ + public $table_element = 'expensereport_det'; /** * @var string Error code (or message) From 38eee02272cbe06ada74cfb7b2d56f6cb7024db1 Mon Sep 17 00:00:00 2001 From: Adrien Raze Date: Wed, 8 Feb 2023 17:34:50 +0100 Subject: [PATCH 019/607] FIX : Make bom_net_needs list standard --- htdocs/bom/bom_net_needs.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/bom/bom_net_needs.php b/htdocs/bom/bom_net_needs.php index 60736d085da..f6644590a2e 100644 --- a/htdocs/bom/bom_net_needs.php +++ b/htdocs/bom/bom_net_needs.php @@ -218,6 +218,9 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''.$form->textwithpicto($langs->trans("PhysicalStock"), $text_stock_options, 1).''; print ''.$form->textwithpicto($langs->trans("VirtualStock"), $langs->trans("VirtualStockDesc")).''; print ''; + + print ''; + print ''; if (!empty($TChildBom)) { if ($action == 'treeview') { foreach ($TChildBom as $fk_bom => $TProduct) { @@ -266,7 +269,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea } } } - print ''; + print ''; print ''; From a17c7aba7348fa1ed3cc03ee974544f7498c9a7e Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Wed, 8 Feb 2023 19:25:03 +0100 Subject: [PATCH 020/607] Fix : sall becomes search_all on top menu search also --- htdocs/main.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 1dd9eb35c04..37d018a21ce 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -2732,7 +2732,7 @@ function top_menu_search() $buttonList .= '
'; - $searchInput = ''; + $searchInput = ''; $dropDownHtml = ''; From 01e0503b0f073fa39056f168b8fe6cf049e0cd3e Mon Sep 17 00:00:00 2001 From: VESSILLER Date: Thu, 9 Feb 2023 11:52:41 +0100 Subject: [PATCH 021/607] FIX several email sent to the same recipient when adding message from ticket --- htdocs/ticket/class/ticket.class.php | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index d12df619bb0..122c5ae35ab 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -2576,24 +2576,24 @@ class Ticket extends CommonObject $assigned_user = new User($this->db); $assigned_user->fetch($this->fk_user_assign); if (!empty($assigned_user->email)) { - $sendto[] = $assigned_user->getFullName($langs)." <".$assigned_user->email.">"; + $sendto[$assigned_user->email] = $assigned_user->getFullName($langs)." <".$assigned_user->email.">"; } else { $assigned_user_dont_have_email = $assigned_user->getFullName($langs); } } if (empty($sendto)) { if (!empty($conf->global->TICKET_PUBLIC_NOTIFICATION_NEW_MESSAGE_DEFAULT_EMAIL)) { - $sendto[] = $conf->global->TICKET_PUBLIC_NOTIFICATION_NEW_MESSAGE_DEFAULT_EMAIL; + $sendto[$conf->global->TICKET_PUBLIC_NOTIFICATION_NEW_MESSAGE_DEFAULT_EMAIL] = $conf->global->TICKET_PUBLIC_NOTIFICATION_NEW_MESSAGE_DEFAULT_EMAIL; } elseif (!empty($conf->global->TICKET_NOTIFICATION_EMAIL_TO)) { - $sendto[] = $conf->global->TICKET_NOTIFICATION_EMAIL_TO; + $sendto[$conf->global->TICKET_NOTIFICATION_EMAIL_TO] = $conf->global->TICKET_NOTIFICATION_EMAIL_TO; } } // Add global email address recipient if (!empty($conf->global->TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS) && - !empty($conf->global->TICKET_NOTIFICATION_EMAIL_TO) && !in_array($conf->global->TICKET_NOTIFICATION_EMAIL_TO, $sendto) + !empty($conf->global->TICKET_NOTIFICATION_EMAIL_TO) && !array_key_exists($conf->global->TICKET_NOTIFICATION_EMAIL_TO, $sendto) ) { - $sendto[] = $conf->global->TICKET_NOTIFICATION_EMAIL_TO; + $sendto[$conf->global->TICKET_NOTIFICATION_EMAIL_TO] = $conf->global->TICKET_NOTIFICATION_EMAIL_TO; } if (!empty($sendto)) { @@ -2677,7 +2677,7 @@ class Ticket extends CommonObject if ($info_sendto['email'] != '') { if (!empty($info_sendto['email'])) { - $sendto[] = trim($info_sendto['firstname']." ".$info_sendto['lastname'])." <".$info_sendto['email'].">"; + $sendto[$info_sendto['email']] = trim($info_sendto['firstname']." ".$info_sendto['lastname'])." <".$info_sendto['email'].">"; } //Contact type @@ -2693,9 +2693,9 @@ class Ticket extends CommonObject $message .= '
'.$langs->trans('TicketNotificationEmailBodyInfosTrackUrlinternal').' :
'.$object->track_id.'
'; // Add global email address recipient - if ($conf->global->TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS && !in_array($conf->global->TICKET_NOTIFICATION_EMAIL_TO, $sendto)) { + if ($conf->global->TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS && !array_key_exists($conf->global->TICKET_NOTIFICATION_EMAIL_TO, $sendto)) { if (!empty($conf->global->TICKET_NOTIFICATION_EMAIL_TO)) { - $sendto[] = $conf->global->TICKET_NOTIFICATION_EMAIL_TO; + $sendto[$conf->global->TICKET_NOTIFICATION_EMAIL_TO] = $conf->global->TICKET_NOTIFICATION_EMAIL_TO; } } @@ -2755,7 +2755,7 @@ class Ticket extends CommonObject if ($info_sendto['email'] != '' && $info_sendto['email'] != $object->origin_email) { if (!empty($info_sendto['email'])) { - $sendto[] = trim($info_sendto['firstname']." ".$info_sendto['lastname'])." <".$info_sendto['email'].">"; + $sendto[$info_sendto['email']] = trim($info_sendto['firstname']." ".$info_sendto['lastname'])." <".$info_sendto['email'].">"; } $recipient = dolGetFirstLastname($info_sendto['firstname'], $info_sendto['lastname'], '-1').' ('.strtolower($info_sendto['libelle']).')'; @@ -2775,21 +2775,21 @@ class Ticket extends CommonObject $message .= '
'.$message_signature; if (!empty($object->origin_email)) { - $sendto[] = $object->origin_email; + $sendto[$object->origin_email] = $object->origin_email; } - if ($object->fk_soc > 0 && !in_array($object->origin_email, $sendto)) { + if ($object->fk_soc > 0 && !array_key_exists($object->origin_email, $sendto)) { $object->socid = $object->fk_soc; $object->fetch_thirdparty(); if (!empty($object->thirdparty->email)) { - $sendto[] = $object->thirdparty->email; + $sendto[$object->thirdparty->email] = $object->thirdparty->email; } } // altairis: Add global email address reciepient - if ($conf->global->TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS && !in_array($conf->global->TICKET_NOTIFICATION_EMAIL_TO, $sendto)) { + if ($conf->global->TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS && !array_key_exists($conf->global->TICKET_NOTIFICATION_EMAIL_TO, $sendto)) { if (!empty($conf->global->TICKET_NOTIFICATION_EMAIL_TO)) { - $sendto[] = $conf->global->TICKET_NOTIFICATION_EMAIL_TO; + $sendto[$conf->global->TICKET_NOTIFICATION_EMAIL_TO] = $conf->global->TICKET_NOTIFICATION_EMAIL_TO; } } From 45900052e8c8007f88820cc8537ad84520e828cb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Feb 2023 13:54:39 +0100 Subject: [PATCH 022/607] Debug v17 --- htdocs/adherents/list.php | 2 +- htdocs/public/members/new.php | 18 +++++------------- htdocs/public/project/new.php | 1 - 3 files changed, 6 insertions(+), 15 deletions(-) diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php index c2b81860210..64cc4fa8dc4 100644 --- a/htdocs/adherents/list.php +++ b/htdocs/adherents/list.php @@ -37,7 +37,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; // Load translation files required by the page -$langs->loadLangs(array("members", "companies")); +$langs->loadLangs(array("members", "companies", "categories")); // Get parameters diff --git a/htdocs/public/members/new.php b/htdocs/public/members/new.php index 7c3e5754b23..33bbe59f118 100644 --- a/htdocs/public/members/new.php +++ b/htdocs/public/members/new.php @@ -34,7 +34,7 @@ * MEMBER_MIN_AMOUNT Minimum amount * MEMBER_NEWFORM_PAYONLINE Suggest payment with paypal, paybox or stripe * MEMBER_NEWFORM_DOLIBARRTURNOVER Show field turnover (specific for dolibarr foundation) - * MEMBER_URL_REDIRECT_SUBSCRIPTION Url to redirect once subscribe submitted + * MEMBER_URL_REDIRECT_SUBSCRIPTION Url to redirect once registration form has been submitted (hidden option, by default we just show a message on same page or redirect to the payment page) * MEMBER_NEWFORM_FORCETYPE Force type of member * MEMBER_NEWFORM_FORCEMORPHY Force nature of member (mor/phy) * MEMBER_NEWFORM_FORCECOUNTRYCODE Force country @@ -73,11 +73,12 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/cunits.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; // Init vars +$backtopage = GETPOST('backtopage', 'alpha'); +$action = GETPOST('action', 'aZ09'); + $errmsg = ''; $num = 0; $error = 0; -$backtopage = GETPOST('backtopage', 'alpha'); -$action = GETPOST('action', 'aZ09'); // Load translation files $langs->loadLangs(array("main", "members", "companies", "install", "other")); @@ -448,15 +449,6 @@ if (empty($reshook) && $action == 'add') { $urlback .= '&entity='.((int) $entity); } } - } - - if (!empty($backtopage)) { - $urlback = $backtopage; - dol_syslog("member ".$adh->ref." was created, we redirect to ".$urlback); - } elseif (!empty($conf->global->MEMBER_URL_REDIRECT_SUBSCRIPTION)) { - $urlback = $conf->global->MEMBER_URL_REDIRECT_SUBSCRIPTION; - // TODO Make replacement of __AMOUNT__, etc... - dol_syslog("member ".$adh->ref." was created, we redirect to ".$urlback); } else { $error++; $errmsg .= join('
', $adh->errors); @@ -476,7 +468,7 @@ if (empty($reshook) && $action == 'add') { } // Action called after a submitted was send and member created successfully -// If MEMBER_URL_REDIRECT_SUBSCRIPTION is set to url we never go here because a redirect was done to this url. +// If MEMBER_URL_REDIRECT_SUBSCRIPTION is set to an url, we never go here because a redirect was done to this url. Same if we ask to redirect to the payment page. // backtopage parameter with an url was set on member submit page, we never go here because a redirect was done to this url. if (empty($reshook) && $action == 'added') { diff --git a/htdocs/public/project/new.php b/htdocs/public/project/new.php index 778fc860e90..108f8d13771 100644 --- a/htdocs/public/project/new.php +++ b/htdocs/public/project/new.php @@ -416,7 +416,6 @@ if (empty($reshook) && $action == 'add') { } // Action called after a submitted was send and member created successfully -// If MEMBER_URL_REDIRECT_SUBSCRIPTION is set to url we never go here because a redirect was done to this url. // backtopage parameter with an url was set on member submit page, we never go here because a redirect was done to this url. if (empty($reshook) && $action == 'added') { llxHeaderVierge($langs->trans("NewLeadForm")); From dfda68a63c495ff54e6610418a33e58ddab53a3b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Feb 2023 14:30:48 +0100 Subject: [PATCH 023/607] Debug v17 - Online membership subscription of members --- htdocs/adherents/admin/website.php | 10 +++---- htdocs/langs/en_US/members.lang | 3 +- .../public/eventorganization/attendee_new.php | 2 +- htdocs/public/members/new.php | 11 ++++---- htdocs/public/partnership/new.php | 2 +- htdocs/public/payment/newpayment.php | 28 +++++++++---------- htdocs/public/payment/paymentok.php | 2 +- htdocs/public/project/new.php | 2 +- htdocs/public/project/suggestbooth.php | 2 +- htdocs/public/project/suggestconference.php | 2 +- 10 files changed, 32 insertions(+), 32 deletions(-) diff --git a/htdocs/adherents/admin/website.php b/htdocs/adherents/admin/website.php index 08e9f617750..705d7cf426f 100644 --- a/htdocs/adherents/admin/website.php +++ b/htdocs/adherents/admin/website.php @@ -58,7 +58,7 @@ if ($action == 'setMEMBER_ENABLE_PUBLIC') { if ($action == 'update') { $public = GETPOST('MEMBER_ENABLE_PUBLIC'); $amount = price2num(GETPOST('MEMBER_NEWFORM_AMOUNT'), 'MT', 2); - $editamount = GETPOST('MEMBER_NEWFORM_EDITAMOUNT'); + $minamount = GETPOST('MEMBER_MIN_AMOUNT'); $publiccounters = GETPOST('MEMBER_COUNTERS_ARE_PUBLIC'); $payonline = GETPOST('MEMBER_NEWFORM_PAYONLINE'); $forcetype = GETPOST('MEMBER_NEWFORM_FORCETYPE', 'int'); @@ -66,7 +66,7 @@ if ($action == 'update') { $res = dolibarr_set_const($db, "MEMBER_ENABLE_PUBLIC", $public, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, "MEMBER_NEWFORM_AMOUNT", $amount, 'chaine', 0, '', $conf->entity); - $res = dolibarr_set_const($db, "MEMBER_NEWFORM_EDITAMOUNT", $editamount, 'chaine', 0, '', $conf->entity); + $res = dolibarr_set_const($db, "MEMBER_MIN_AMOUNT", $minamount, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, "MEMBER_COUNTERS_ARE_PUBLIC", $publiccounters, 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, "MEMBER_NEWFORM_PAYONLINE", $payonline, 'chaine', 0, '', $conf->entity); if ($forcetype < 0) { @@ -232,11 +232,11 @@ if (!empty($conf->global->MEMBER_ENABLE_PUBLIC)) { print ''; print "\n"; - // Can edit + // Min amount print ''; - print $langs->trans("CanEditAmountDetail"); + print $langs->trans("MinimumAmount"); print ''; - print $form->selectyesno("MEMBER_NEWFORM_EDITAMOUNT", (!empty($conf->global->MEMBER_NEWFORM_EDITAMOUNT) ? $conf->global->MEMBER_NEWFORM_EDITAMOUNT : 0), 1); + print ''; print "\n"; // SHow counter of validated members publicly diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang index 71f01b36739..f8981df17d9 100644 --- a/htdocs/langs/en_US/members.lang +++ b/htdocs/langs/en_US/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=Contributions statistics NbOfSubscriptions=Number of contributions AmountOfSubscriptions=Amount collected from contributions TurnoverOrBudget=Turnover (for a company) or Budget (for a foundation) -DefaultAmount=Default amount of contribution +DefaultAmount=Default amount of contribution (used only if no amount is defined at member type level) +MinimumAmount=Minimum amount (used only when contribution amount is free) CanEditAmount=Subscription amount is free CanEditAmountDetail=Visitor can choose/edit amount of its contribution regardless of the member type AmountIsLowerToMinimumNotice=sur un dû total de %s diff --git a/htdocs/public/eventorganization/attendee_new.php b/htdocs/public/eventorganization/attendee_new.php index cb4ba38e628..f245b6c10f7 100644 --- a/htdocs/public/eventorganization/attendee_new.php +++ b/htdocs/public/eventorganization/attendee_new.php @@ -686,7 +686,7 @@ print load_fiche_titre($langs->trans("NewRegistration"), '', '', 0, 0, 'center') print '
'; print '
'; -print '
'; +print '
'; // Welcome message diff --git a/htdocs/public/members/new.php b/htdocs/public/members/new.php index 33bbe59f118..a121f2cc5a1 100644 --- a/htdocs/public/members/new.php +++ b/htdocs/public/members/new.php @@ -30,7 +30,6 @@ * * Note that you can add following constant to change behaviour of page * MEMBER_NEWFORM_AMOUNT Default amount for auto-subscribe form - * MEMBER_NEWFORM_EDITAMOUNT 0 or 1 = Amount can be edited * MEMBER_MIN_AMOUNT Minimum amount * MEMBER_NEWFORM_PAYONLINE Suggest payment with paypal, paybox or stripe * MEMBER_NEWFORM_DOLIBARRTURNOVER Show field turnover (specific for dolibarr foundation) @@ -431,7 +430,7 @@ if (empty($reshook) && $action == 'add') { } if (!empty($conf->global->MEMBER_NEWFORM_PAYONLINE) && $conf->global->MEMBER_NEWFORM_PAYONLINE != '-1') { - if (empty($conf->global->MEMBER_NEWFORM_EDITAMOUNT)) { // If edition of amount not allowed + if (empty($adht->caneditamount)) { // If edition of amount not allowed // TODO Check amount is same than the amount required for the type of member or if not defined as the defeault amount into $conf->global->MEMBER_NEWFORM_AMOUNT // It is not so important because a test is done on return of payment validation. } @@ -505,7 +504,7 @@ print load_fiche_titre($langs->trans("NewSubscription"), '', '', 0, 0, 'center') print '
'; print '
'; -print '
'; +print '
'; if (!empty($conf->global->MEMBER_NEWFORM_TEXT)) { print $langs->trans($conf->global->MEMBER_NEWFORM_TEXT)."
\n"; } else { @@ -765,7 +764,7 @@ if (!empty($conf->global->MEMBER_SKIP_TABLE) || !empty($conf->global->MEMBER_NEW $amount = $conf->global->MEMBER_NEWFORM_AMOUNT; } - if (!empty($conf->global->MEMBER_NEWFORM_EDITAMOUNT) || $caneditamount) { + if ($caneditamount) { print ''; print ' '.$langs->trans("Currency".$conf->currency).' – '; print $amount > 0 ? $langs->trans("AnyAmountWithAdvisedAmount", price($amount, 0, $langs, 1, -1, -1, $conf->currency)): $langs->trans("AnyAmountWithoutAdvisedAmount"); @@ -833,7 +832,7 @@ if (!empty($conf->global->MEMBER_SKIP_TABLE) || !empty($conf->global->MEMBER_NEW $i = 0; while ($i < $num) { - $objp = $db->fetch_object($result); + $objp = $db->fetch_object($result); // Load the member type and information on it print ''; print ''.dol_escape_htmltag($objp->label).''; @@ -843,7 +842,7 @@ if (!empty($conf->global->MEMBER_SKIP_TABLE) || !empty($conf->global->MEMBER_NEW print ''; print ''; $displayedamount = max(intval($objp->amount), intval(getDolGlobalInt("MEMBER_MIN_AMOUNT"))); - $caneditamount = !empty($conf->global->MEMBER_NEWFORM_EDITAMOUNT) || $objp->caneditamount; + $caneditamount = $objp->caneditamount; if ($objp->subscription) { if ($displayedamount > 0 || !$caneditamount) { print $displayedamount.' '.strtoupper($conf->currency); diff --git a/htdocs/public/partnership/new.php b/htdocs/public/partnership/new.php index b6444753eb7..d8e65f18c12 100644 --- a/htdocs/public/partnership/new.php +++ b/htdocs/public/partnership/new.php @@ -544,7 +544,7 @@ print load_fiche_titre($langs->trans("NewPartnershipRequest"), '', '', 0, 0, 'ce print '
'; print '
'; -print '
'; +print '
'; if (!empty($conf->global->PARTNERSHIP_NEWFORM_TEXT)) { print $langs->trans($conf->global->PARTNERSHIP_NEWFORM_TEXT)."
\n"; } else { diff --git a/htdocs/public/payment/newpayment.php b/htdocs/public/payment/newpayment.php index 264ead82877..e3257bd659c 100644 --- a/htdocs/public/payment/newpayment.php +++ b/htdocs/public/payment/newpayment.php @@ -1633,7 +1633,7 @@ if ($source == 'member' || $source == 'membersubscription') { $amount = max(0, $conf->global->MEMBER_MIN_AMOUNT, $amount); } print ''.price($amount, 1, $langs, 1, -1, -1, $currency).''; // Price with currency - $caneditamount = !empty($conf->global->MEMBER_NEWFORM_EDITAMOUNT) || $adht->caneditamount; + $caneditamount = $adht->caneditamount; $minimumamount = empty($conf->global->MEMBER_MIN_AMOUNT)? $adht->amount : max($conf->global->MEMBER_MIN_AMOUNT, $adht->amount > $amount); if (!$caneditamount && $minimumamount > $amount) { print ' '. $langs->trans("AmountIsLowerToMinimumNotice", price($adht->amount, 1, $langs, 1, -1, -1, $currency)); @@ -1751,13 +1751,13 @@ if ($source == 'donation') { // Amount print ''.$langs->trans("Amount"); if (empty($amount)) { - if (empty($conf->global->MEMBER_NEWFORM_AMOUNT)) { + if (empty($conf->global->DONATION_NEWFORM_AMOUNT)) { print ' ('.$langs->trans("ToComplete"); } - if (!empty($conf->global->MEMBER_EXT_URL_SUBSCRIPTION_INFO)) { - print ' - '.$langs->trans("SeeHere").''; + if (!empty($conf->global->DONATION_EXT_URL_SUBSCRIPTION_INFO)) { + print ' - '.$langs->trans("SeeHere").''; } - if (empty($conf->global->MEMBER_NEWFORM_AMOUNT)) { + if (empty($conf->global->DONATION_NEWFORM_AMOUNT)) { print ')'; } } @@ -1767,21 +1767,21 @@ if ($source == 'donation') { $valtoshow = price2num(GETPOST("newamount", 'alpha'), 'MT'); // force default subscription amount to value defined into constant... if (empty($valtoshow)) { - if (!empty($conf->global->MEMBER_NEWFORM_EDITAMOUNT)) { - if (!empty($conf->global->MEMBER_NEWFORM_AMOUNT)) { - $valtoshow = $conf->global->MEMBER_NEWFORM_AMOUNT; + if (!empty($conf->global->DONATION_NEWFORM_EDITAMOUNT)) { + if (!empty($conf->global->DONATION_NEWFORM_AMOUNT)) { + $valtoshow = $conf->global->DONATION_NEWFORM_AMOUNT; } } else { - if (!empty($conf->global->MEMBER_NEWFORM_AMOUNT)) { - $amount = $conf->global->MEMBER_NEWFORM_AMOUNT; + if (!empty($conf->global->DONATION_NEWFORM_AMOUNT)) { + $amount = $conf->global->DONATION_NEWFORM_AMOUNT; } } } } if (empty($amount) || !is_numeric($amount)) { //$valtoshow=price2num(GETPOST("newamount",'alpha'),'MT'); - if (!empty($conf->global->MEMBER_MIN_AMOUNT) && $valtoshow) { - $valtoshow = max($conf->global->MEMBER_MIN_AMOUNT, $valtoshow); + if (!empty($conf->global->DONATION_MIN_AMOUNT) && $valtoshow) { + $valtoshow = max($conf->global->DONATION_MIN_AMOUNT, $valtoshow); } print ''; print ''; @@ -1789,8 +1789,8 @@ if ($source == 'donation') { print ' '.$langs->trans("Currency".$currency).''; } else { $valtoshow = $amount; - if (!empty($conf->global->MEMBER_MIN_AMOUNT) && $valtoshow) { - $valtoshow = max($conf->global->MEMBER_MIN_AMOUNT, $valtoshow); + if (!empty($conf->global->DONATION_MIN_AMOUNT) && $valtoshow) { + $valtoshow = max($conf->global->DONATION_MIN_AMOUNT, $valtoshow); $amount = $valtoshow; } print ''.price($valtoshow, 1, $langs, 1, -1, -1, $currency).''; // Price with currency diff --git a/htdocs/public/payment/paymentok.php b/htdocs/public/payment/paymentok.php index a82364bcce3..e596fd3d261 100644 --- a/htdocs/public/payment/paymentok.php +++ b/htdocs/public/payment/paymentok.php @@ -441,7 +441,7 @@ if ($ispaymentok) { // Do action only if $FinalPaymentAmt is set (session variable is cleaned after this page to avoid duplicate actions when page is POST a second time) if (!empty($FinalPaymentAmt) && $paymentTypeId > 0) { // Security protection: - if (empty($conf->global->MEMBER_NEWFORM_EDITAMOUNT)) { // If we didn't allow members to choose their membership amount (if free amount is allowed, no need to check) + if (empty($adht->caneditamount)) { // If we didn't allow members to choose their membership amount (if the amount is allowed in edit mode, no need to check) if ($object->status == $object::STATUS_DRAFT) { // If the member is not yet validated, we check that the amount is the same as expected. $typeid = $object->typeid; diff --git a/htdocs/public/project/new.php b/htdocs/public/project/new.php index 108f8d13771..c07062e3284 100644 --- a/htdocs/public/project/new.php +++ b/htdocs/public/project/new.php @@ -450,7 +450,7 @@ print load_fiche_titre($langs->trans("NewContact"), '', '', 0, 0, 'center'); print '
'; print '
'; -print '
'; +print '
'; if (!empty($conf->global->PROJECT_NEWFORM_TEXT)) { print $langs->trans($conf->global->PROJECT_NEWFORM_TEXT)."
\n"; } else { diff --git a/htdocs/public/project/suggestbooth.php b/htdocs/public/project/suggestbooth.php index 68e469b6a00..0b2e24716d5 100644 --- a/htdocs/public/project/suggestbooth.php +++ b/htdocs/public/project/suggestbooth.php @@ -564,7 +564,7 @@ print load_fiche_titre($langs->trans("NewSuggestionOfBooth"), '', '', 0, 0, 'cen print '
'; print '
'; -print '
'; +print '
'; dol_htmloutput_errors($errmsg); diff --git a/htdocs/public/project/suggestconference.php b/htdocs/public/project/suggestconference.php index 5590b0bf94c..b3418ec9e84 100644 --- a/htdocs/public/project/suggestconference.php +++ b/htdocs/public/project/suggestconference.php @@ -497,7 +497,7 @@ print load_fiche_titre($langs->trans("NewSuggestionOfConference"), '', '', 0, 0, print '
'; print '
'; -print '
'; +print '
'; dol_htmloutput_errors($errmsg, $errors); From e83559afb0ab7963a0187dbdcb4f8d5ea89f72fa Mon Sep 17 00:00:00 2001 From: Quentin VIAL-GOUTEYRON Date: Thu, 9 Feb 2023 15:20:07 +0100 Subject: [PATCH 024/607] FIX strato pdf --- htdocs/core/modules/contract/doc/pdf_strato.modules.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/contract/doc/pdf_strato.modules.php b/htdocs/core/modules/contract/doc/pdf_strato.modules.php index 1875cfb833c..e9c53f4b354 100644 --- a/htdocs/core/modules/contract/doc/pdf_strato.modules.php +++ b/htdocs/core/modules/contract/doc/pdf_strato.modules.php @@ -230,7 +230,7 @@ class pdf_strato extends ModelePDFContract $default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance $heightforinfotot = 50; // Height reserved to output the info and total part $heightforfreetext = (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT) ? $conf->global->MAIN_PDF_FREETEXT_HEIGHT : 5); // Height reserved to output the free text on last page - $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + $heightforfooter = $this->marge_basse + 9; // Height reserved to output the footer (value include bottom margin) if (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS)) { $heightforfooter += 6; } @@ -383,7 +383,6 @@ class pdf_strato extends ModelePDFContract $pdf->writeHTMLCell(0, 0, $curX, $curY, dol_concatdesc($txtpredefinedservice, dol_concatdesc($txt, $desc)), 0, 1, 0); $pageposafter = $pdf->getPage(); $posyafter = $pdf->GetY(); - if ($posyafter > ($this->page_hauteur - ($heightforfooter + $heightforfreetext + $heightforinfotot))) { // There is no space left for total+free text if ($i == ($nblines - 1)) { // No more lines, and no space left to show total, so we create a new page $pdf->AddPage('', '', true); @@ -437,6 +436,9 @@ class pdf_strato extends ModelePDFContract $pagenb++; $pdf->setPage($pagenb); $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. + if(empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) { + $this->_pagehead($pdf, $object, 0, $outputlangs); + } if (!empty($tplidx)) { $pdf->useTemplate($tplidx); } @@ -459,6 +461,7 @@ class pdf_strato extends ModelePDFContract } } + // Show square if ($pagenb == 1) { $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0); From 78e1fad6bdf26548511a671f0c9a1b7830817939 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Thu, 9 Feb 2023 14:27:50 +0000 Subject: [PATCH 025/607] Fixing style errors. --- htdocs/core/modules/contract/doc/pdf_strato.modules.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/contract/doc/pdf_strato.modules.php b/htdocs/core/modules/contract/doc/pdf_strato.modules.php index e9c53f4b354..05e409ac9ed 100644 --- a/htdocs/core/modules/contract/doc/pdf_strato.modules.php +++ b/htdocs/core/modules/contract/doc/pdf_strato.modules.php @@ -436,7 +436,7 @@ class pdf_strato extends ModelePDFContract $pagenb++; $pdf->setPage($pagenb); $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. - if(empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) { + if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) { $this->_pagehead($pdf, $object, 0, $outputlangs); } if (!empty($tplidx)) { From 0e301988a4ed2089bdc3042e77a8b3383708df88 Mon Sep 17 00:00:00 2001 From: "Esteban L. Castro" <43482256+elcf@users.noreply.github.com> Date: Mon, 6 Feb 2023 18:29:50 -0400 Subject: [PATCH 026/607] Added key name to unique constraint --- htdocs/install/mysql/migration/15.0.0-16.0.0.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/migration/15.0.0-16.0.0.sql b/htdocs/install/mysql/migration/15.0.0-16.0.0.sql index d5deec862d0..fd4368b78af 100644 --- a/htdocs/install/mysql/migration/15.0.0-16.0.0.sql +++ b/htdocs/install/mysql/migration/15.0.0-16.0.0.sql @@ -688,7 +688,7 @@ ALTER TABLE llx_actioncomm MODIFY COLUMN note mediumtext; DELETE FROM llx_boxes WHERE box_id IN (select rowid FROM llx_boxes_def WHERE file IN ('box_bom.php@bom', 'box_bom.php', 'box_members.php', 'box_last_modified_ticket', 'box_members_last_subscriptions', 'box_members_last_modified', 'box_members_subscriptions_by_year')); DELETE FROM llx_boxes_def WHERE file IN ('box_bom.php@bom', 'box_bom.php', 'box_members.php', 'box_last_modified_ticket', 'box_members_last_subscriptions', 'box_members_last_modified', 'box_members_subscriptions_by_year'); -ALTER TABLE llx_takepos_floor_tables ADD UNIQUE(entity,label); +ALTER TABLE llx_takepos_floor_tables ADD UNIQUE uk_takepos_floor_tables (entity,label); ALTER TABLE llx_partnership ADD COLUMN url_to_check varchar(255); ALTER TABLE llx_c_partnership_type ADD COLUMN keyword varchar(128); From b65e3e401449c2706de1b5c2945b0838eba73d69 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Feb 2023 15:38:35 +0100 Subject: [PATCH 027/607] Fix all indexes must be named --- htdocs/install/mysql/migration/15.0.0-16.0.0.sql | 2 +- htdocs/install/mysql/tables/llx_takepos_floor_tables.key.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/install/mysql/migration/15.0.0-16.0.0.sql b/htdocs/install/mysql/migration/15.0.0-16.0.0.sql index fd4368b78af..ceff2a32f3c 100644 --- a/htdocs/install/mysql/migration/15.0.0-16.0.0.sql +++ b/htdocs/install/mysql/migration/15.0.0-16.0.0.sql @@ -688,7 +688,7 @@ ALTER TABLE llx_actioncomm MODIFY COLUMN note mediumtext; DELETE FROM llx_boxes WHERE box_id IN (select rowid FROM llx_boxes_def WHERE file IN ('box_bom.php@bom', 'box_bom.php', 'box_members.php', 'box_last_modified_ticket', 'box_members_last_subscriptions', 'box_members_last_modified', 'box_members_subscriptions_by_year')); DELETE FROM llx_boxes_def WHERE file IN ('box_bom.php@bom', 'box_bom.php', 'box_members.php', 'box_last_modified_ticket', 'box_members_last_subscriptions', 'box_members_last_modified', 'box_members_subscriptions_by_year'); -ALTER TABLE llx_takepos_floor_tables ADD UNIQUE uk_takepos_floor_tables (entity,label); +ALTER TABLE llx_takepos_floor_tables ADD UNIQUE INDEX uk_takepos_floor_tables (entity,label); ALTER TABLE llx_partnership ADD COLUMN url_to_check varchar(255); ALTER TABLE llx_c_partnership_type ADD COLUMN keyword varchar(128); diff --git a/htdocs/install/mysql/tables/llx_takepos_floor_tables.key.sql b/htdocs/install/mysql/tables/llx_takepos_floor_tables.key.sql index e90cd67e889..d2f699df325 100644 --- a/htdocs/install/mysql/tables/llx_takepos_floor_tables.key.sql +++ b/htdocs/install/mysql/tables/llx_takepos_floor_tables.key.sql @@ -13,4 +13,4 @@ -- You should have received a copy of the GNU General Public License -- along with this program. If not, see https://www.gnu.org/licenses/. -ALTER TABLE llx_takepos_floor_tables ADD UNIQUE(entity,label); \ No newline at end of file +ALTER TABLE llx_takepos_floor_tables ADD UNIQUE INDEX uk_takepos_floor_tables(entity,label); From 5ae079b0181dfbddf860f48f91161dd64230a61e Mon Sep 17 00:00:00 2001 From: Jean-Patrice Clerc <81645374+jpclerc-beep@users.noreply.github.com> Date: Mon, 6 Feb 2023 21:04:40 +0100 Subject: [PATCH 028/607] Ajout de la ligne pour enregistrer l'email du formulaire --- htdocs/public/project/new.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/public/project/new.php b/htdocs/public/project/new.php index c07062e3284..d4d6b4b68b5 100644 --- a/htdocs/public/project/new.php +++ b/htdocs/public/project/new.php @@ -224,6 +224,7 @@ if (empty($reshook) && $action == 'add') { } else { $thirdparty->name = dolGetFirstLastname(GETPOST('firstname'), GETPOST('lastname')); } + $thirdparty->email = GETPOST('email'); $thirdparty->address = GETPOST('address'); $thirdparty->zip = GETPOST('zip'); $thirdparty->town = GETPOST('town'); From 04c0272d05c03cb21e288db76c27f4ba2329efab Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Feb 2023 15:58:28 +0100 Subject: [PATCH 029/607] Doc --- htdocs/includes/odtphp/odf.php | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/htdocs/includes/odtphp/odf.php b/htdocs/includes/odtphp/odf.php index 1a951292f94..0bba0e59345 100644 --- a/htdocs/includes/odtphp/odf.php +++ b/htdocs/includes/odtphp/odf.php @@ -24,10 +24,10 @@ class OdfException extends Exception class Odf { protected $config = array( - 'ZIP_PROXY' => 'PclZipProxy', // PclZipProxy, PhpZipProxy - 'DELIMITER_LEFT' => '{', - 'DELIMITER_RIGHT' => '}', - 'PATH_TO_TMP' => '/tmp' + 'ZIP_PROXY' => 'PclZipProxy', // PclZipProxy, PhpZipProxy + 'DELIMITER_LEFT' => '{', + 'DELIMITER_RIGHT' => '}', + 'PATH_TO_TMP' => '/tmp' ); protected $file; protected $contentXml; // To store content of content.xml file @@ -152,12 +152,12 @@ class Odf } /** - * Replaces html tags in odt tags and returns a compatible string + * Replaces html tags found into the $value with ODT compatible tags and return the converted compatible string * - * @param string $value Replacement value - * @param bool $encode If true, special XML characters are encoded - * @param string $charset Charset - * @return string + * @param string $value Replacement value + * @param bool $encode If true, special XML characters are encoded + * @param string $charset Charset + * @return string String in ODTsyntax format */ public function convertVarToOdf($value, $encode = true, $charset = 'ISO-8859') { @@ -203,15 +203,18 @@ class Odf } } $this->contentXml = str_replace('', $fonts . '', $this->contentXml); - } else $convertedValue = preg_replace('/(\r\n|\r|\n)/i', "", $value); + } else { + $convertedValue = preg_replace('/(\r\n|\r|\n)/i', "", $value); + } return $convertedValue; } /** * Replaces html tags in with odt tags and returns an odt string - * @param array $tags An array with html tags generated by the getDataFromHtml() function - * @param array $customStyles An array of style defenitions that should be included inside the odt file + * + * @param array $tags An array with html tags generated by the getDataFromHtml() function + * @param array $customStyles An array of style defenitions that should be included inside the odt file * @param array $fontDeclarations An array of font declarations that should be included inside the odt file * @return string */ From 69b690c45e01ec898a3402fed24d282b15f5929a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Feb 2023 15:29:07 +0100 Subject: [PATCH 030/607] Merge pull request #23817 from elcf/develop Added key name to unique constraint --- htdocs/install/mysql/migration/15.0.0-16.0.0.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/migration/15.0.0-16.0.0.sql b/htdocs/install/mysql/migration/15.0.0-16.0.0.sql index 7c38fb59b6d..bee0477665f 100644 --- a/htdocs/install/mysql/migration/15.0.0-16.0.0.sql +++ b/htdocs/install/mysql/migration/15.0.0-16.0.0.sql @@ -688,7 +688,7 @@ ALTER TABLE llx_actioncomm MODIFY COLUMN note mediumtext; DELETE FROM llx_boxes WHERE box_id IN (select rowid FROM llx_boxes_def WHERE file IN ('box_bom.php@bom', 'box_bom.php', 'box_members.php', 'box_last_modified_ticket', 'box_members_last_subscriptions', 'box_members_last_modified', 'box_members_subscriptions_by_year')); DELETE FROM llx_boxes_def WHERE file IN ('box_bom.php@bom', 'box_bom.php', 'box_members.php', 'box_last_modified_ticket', 'box_members_last_subscriptions', 'box_members_last_modified', 'box_members_subscriptions_by_year'); -ALTER TABLE llx_takepos_floor_tables ADD UNIQUE(entity,label); +ALTER TABLE llx_takepos_floor_tables ADD UNIQUE uk_takepos_floor_tables (entity,label); ALTER TABLE llx_partnership ADD COLUMN url_to_check varchar(255); ALTER TABLE llx_c_partnership_type ADD COLUMN keyword varchar(128); From 8bd6f070aab2fd5efe01c4ce78fd274ee8002ac5 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Thu, 9 Feb 2023 17:22:45 +0100 Subject: [PATCH 031/607] FIX: product ref fourn same size in supplier order/invoice as in product price fourn --- htdocs/install/mysql/migration/14.0.0-15.0.0.sql | 3 +++ htdocs/install/mysql/tables/llx_commande_fournisseurdet.sql | 2 +- htdocs/install/mysql/tables/llx_facture_fourn_det.sql | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/htdocs/install/mysql/migration/14.0.0-15.0.0.sql b/htdocs/install/mysql/migration/14.0.0-15.0.0.sql index 5621ca6fad8..bef7621d282 100644 --- a/htdocs/install/mysql/migration/14.0.0-15.0.0.sql +++ b/htdocs/install/mysql/migration/14.0.0-15.0.0.sql @@ -530,3 +530,6 @@ ALTER TABLE llx_element_tag ADD CONSTRAINT fk_element_tag_categorie_rowid FOREIG -- Idea is to update this column manually in v15 with value in currency of company for bank that are not into the main currency and the transfer -- into accounting will use it in priority if value is not null. The script repair.sql contains the sequence to fix datas in llx_bank. ALTER TABLE llx_bank ADD COLUMN amount_main_currency double(24,8) NULL; + +ALTER TABLE llx_commande_fournisseurdet MODIFY COLUMN ref varchar(128); +ALTER TABLE llx_facture_fourn_det MODIFY COLUMN ref varchar(128); diff --git a/htdocs/install/mysql/tables/llx_commande_fournisseurdet.sql b/htdocs/install/mysql/tables/llx_commande_fournisseurdet.sql index f6092bc4c74..0dfed7152aa 100644 --- a/htdocs/install/mysql/tables/llx_commande_fournisseurdet.sql +++ b/htdocs/install/mysql/tables/llx_commande_fournisseurdet.sql @@ -25,7 +25,7 @@ create table llx_commande_fournisseurdet fk_commande integer NOT NULL, fk_parent_line integer NULL, fk_product integer, - ref varchar(50), -- supplier product ref + ref varchar(128), -- supplier product ref label varchar(255), -- product label description text, vat_src_code varchar(10) DEFAULT '', -- Vat code used as source of vat fields. Not strict foreign key here. diff --git a/htdocs/install/mysql/tables/llx_facture_fourn_det.sql b/htdocs/install/mysql/tables/llx_facture_fourn_det.sql index 30f57fa184b..8daf658fa68 100644 --- a/htdocs/install/mysql/tables/llx_facture_fourn_det.sql +++ b/htdocs/install/mysql/tables/llx_facture_fourn_det.sql @@ -24,7 +24,7 @@ create table llx_facture_fourn_det fk_facture_fourn integer NOT NULL, fk_parent_line integer NULL, fk_product integer NULL, - ref varchar(50), -- supplier product ref + ref varchar(128), -- supplier product ref label varchar(255), -- product label description text, pu_ht double(24,8), -- unit price excluding tax From da0daa49da8d0c64d05c832f07ae3d1cabd2d901 Mon Sep 17 00:00:00 2001 From: Marc de Lima Lucio <68746600+marc-dll@users.noreply.github.com> Date: Thu, 9 Feb 2023 18:01:59 +0100 Subject: [PATCH 032/607] FIX: some more PHP8 comptability fixes --- htdocs/core/class/html.formfile.class.php | 8 ++++---- .../triggers/interface_50_modAgenda_ActionsAuto.class.php | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 4bcf742d461..1d6a2b10a04 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -496,6 +496,10 @@ class FormFile $titletoshow = ($title == 'none' ? '' : $title); } + $addcolumforpicto = ($delallowed || $printer || $morepicto); + $colspan = (4 + ($addcolumforpicto ? 1 : 0)); + $colspanmore = 0; + // Show table if ($genallowed) { $modellist = array(); @@ -747,10 +751,6 @@ class FormFile $out .= ''; - $addcolumforpicto = ($delallowed || $printer || $morepicto); - $colspan = (4 + ($addcolumforpicto ? 1 : 0)); - $colspanmore = 0; - $out .= ''; // Model diff --git a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php index d441d364f4b..ba9cdba1493 100644 --- a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php +++ b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php @@ -1059,7 +1059,7 @@ class InterfaceActionsAuto extends DolibarrTriggers $ret = $actioncomm->create($user); // User creating action if ($ret > 0 && !empty($conf->global->MAIN_COPY_FILE_IN_EVENT_AUTO)) { - if (is_array($object->attachedfiles) && array_key_exists('paths', $object->attachedfiles) && count($object->attachedfiles['paths']) > 0) { + if (property_exists($object, 'attachedfiles') && is_array($object->attachedfiles) && array_key_exists('paths', $object->attachedfiles) && count($object->attachedfiles['paths']) > 0) { foreach ($object->attachedfiles['paths'] as $key => $filespath) { $srcfile = $filespath; $destdir = $conf->agenda->dir_output.'/'.$ret; From e5de31a7dea24c89164a6e870a400d77dd758737 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Feb 2023 18:23:19 +0100 Subject: [PATCH 033/607] Fix size of ref --- htdocs/install/mysql/migration/16.0.0-17.0.0.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/install/mysql/migration/16.0.0-17.0.0.sql b/htdocs/install/mysql/migration/16.0.0-17.0.0.sql index 2a1a9ee2fd5..744c000294b 100644 --- a/htdocs/install/mysql/migration/16.0.0-17.0.0.sql +++ b/htdocs/install/mysql/migration/16.0.0-17.0.0.sql @@ -393,3 +393,6 @@ ALTER TABLE llx_opensurvey_user_studs ADD COLUMN date_creation datetime NULL; ALTER TABLE llx_opensurvey_comments ADD COLUMN date_creation datetime NULL; ALTER TABLE llx_c_tva ADD COLUMN use_default tinyint DEFAULT 0; + +ALTER TABLE llx_commande_fournisseurdet MODIFY COLUMN ref varchar(128); +ALTER TABLE llx_facture_fourn_det MODIFY COLUMN ref varchar(128); From e9ce09f9d1a987e812c29198033a0f369c37743b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Feb 2023 18:50:22 +0100 Subject: [PATCH 034/607] Doc --- htdocs/core/lib/functions.lib.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 3a51575ef57..9311adb11ef 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -411,6 +411,9 @@ function dol_shutdown() /** * Return true if we are in a context of submitting the parameter $paramname from a POST of a form. + * Warning: + * For action=add, use: $var = GETPOST('var'); // No GETPOSTISSET, so GETPOST always called and default value is retreived if not a form POST, and value of form is retreived if it is a form POST. + * For action=update, use: $var = GETPOSTISSET('var') ? GETPOST('var') : $object->var; * * @param string $paramname Name or parameter to test * @return boolean True if we have just submit a POST or GET request with the parameter provided (even if param is empty) From c28f0d9386e1693c51c9ea2059765bc4bef2313a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Feb 2023 19:24:16 +0100 Subject: [PATCH 035/607] FIX #23860 --- htdocs/compta/facture/card.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index 80d3ed2b436..3aa43556e43 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -3119,7 +3119,11 @@ if ($action == 'create') { } // when bank account is empty (means not override by payment mode form a other object, like third-party), try to use default value - $fk_account = GETPOSTISSET("fk_account") ? GETPOST("fk_account", 'int') : $fk_account; + if ($socid > 0 && $fk_account) { // A company has already been set and it has a default fk_account + $fk_account = GETPOSTISSET('fk_account') ? GETPOST("fk_account", 'int') : $fk_account; // The GETPOST is used only if form was posted to avoid to take default value, because in such case, the default must be the one of the company + } else { // No company forced + $fk_account = GETPOST("fk_account", 'int'); + } if (!empty($soc->id)) { $absolute_discount = $soc->getAvailableDiscounts(); From 081ede08ec540694ad407edafb402bd068388d33 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Feb 2023 19:24:42 +0100 Subject: [PATCH 036/607] Fix label --- htdocs/societe/class/societe.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 01a72c6c7f3..cbc0a3d5975 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -235,7 +235,7 @@ class Societe extends CommonObject 'last_main_doc' =>array('type'=>'varchar(255)', 'label'=>'LastMainDoc', 'enabled'=>1, 'visible'=>-1, 'position'=>270), 'fk_multicurrency' =>array('type'=>'integer', 'label'=>'Fk multicurrency', 'enabled'=>1, 'visible'=>-1, 'position'=>440), 'multicurrency_code' =>array('type'=>'varchar(255)', 'label'=>'Multicurrency code', 'enabled'=>1, 'visible'=>-1, 'position'=>445), - 'fk_account' =>array('type'=>'integer', 'label'=>'AccountingAccount', 'enabled'=>1, 'visible'=>-1, 'position'=>450), + 'fk_account' =>array('type'=>'integer', 'label'=>'PaymentBankAccount', 'enabled'=>1, 'visible'=>-1, 'position'=>450), 'fk_warehouse' =>array('type'=>'integer', 'label'=>'Warehouse', 'enabled'=>1, 'visible'=>-1, 'position'=>455), 'logo' =>array('type'=>'varchar(255)', 'label'=>'Logo', 'enabled'=>1, 'visible'=>-1, 'position'=>400), 'logo_squarred' =>array('type'=>'varchar(255)', 'label'=>'Logo squarred', 'enabled'=>1, 'visible'=>-1, 'position'=>401), From 802ee770c3cac69d7efdb792d23b28d59b95ce70 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Feb 2023 19:24:16 +0100 Subject: [PATCH 037/607] FIX #23860 --- htdocs/compta/facture/card.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index 90f45018489..69155ecd8c7 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -2981,7 +2981,11 @@ if ($action == 'create') { } // when bank account is empty (means not override by payment mode form a other object, like third-party), try to use default value - $fk_account = GETPOSTISSET("fk_account") ? GETPOST("fk_account", 'int') : $fk_account; + if ($socid > 0 && $fk_account) { // A company has already been set and it has a default fk_account + $fk_account = GETPOSTISSET('fk_account') ? GETPOST("fk_account", 'int') : $fk_account; // The GETPOST is used only if form was posted to avoid to take default value, because in such case, the default must be the one of the company + } else { // No company forced + $fk_account = GETPOST("fk_account", 'int'); + } if (!empty($soc->id)) { $absolute_discount = $soc->getAvailableDiscounts(); From 5ef4aa78e9f7a29d0a7bfbcbb01b067a094995f4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Feb 2023 23:16:34 +0100 Subject: [PATCH 038/607] Fix filter using != --- htdocs/core/lib/functions.lib.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 9311adb11ef..bb69fd4966d 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -9768,7 +9768,7 @@ function natural_search($fields, $value, $mode = 0, $nofirstand = 0) $value = preg_replace('/\*/', '%', $value); // Replace * with % } if ($mode == 1) { - $value = preg_replace('/([<>=]+)\s+([0-9'.preg_quote($langs->trans("DecimalSeparator"), '/').'\-])/', '\1\2', $value); // Clean string '< 10' into '<10' so we can the explode on space to get all tests to do + $value = preg_replace('/([!<>=]+)\s+([0-9'.preg_quote($langs->trans("DecimalSeparator"), '/').'\-])/', '\1\2', $value); // Clean string '< 10' into '<10' so we can the explode on space to get all tests to do } $value = preg_replace('/\s*\|\s*/', '|', $value); @@ -9788,10 +9788,10 @@ function natural_search($fields, $value, $mode = 0, $nofirstand = 0) foreach ($fields as $field) { if ($mode == 1) { $operator = '='; - $newcrit = preg_replace('/([<>=]+)/', '', $crit); + $newcrit = preg_replace('/([!<>=]+)/', '', $crit); $reg = array(); - preg_match('/([<>=]+)/', $crit, $reg); + preg_match('/([!<>=]+)/', $crit, $reg); if (!empty($reg[1])) { $operator = $reg[1]; } From 65982c16753840aa88837ba2550e16e77f1b8ca7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Feb 2023 23:17:18 +0100 Subject: [PATCH 039/607] css --- htdocs/admin/emailcollector_card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/emailcollector_card.php b/htdocs/admin/emailcollector_card.php index 10e7ea300f8..d140dd39ce2 100644 --- a/htdocs/admin/emailcollector_card.php +++ b/htdocs/admin/emailcollector_card.php @@ -723,7 +723,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea // Add operation print ''; print ''; - print $form->selectarray('operationtype', $arrayoftypes, '', 1, 0, 0, '', 1, 0, 0, '', 'maxwidth300', 1); + print $form->selectarray('operationtype', $arrayoftypes, '', 1, 0, 0, '', 1, 0, 0, '', 'minwidth150 maxwidth300', 1); print ''; //print ''; $htmltext = $langs->transnoentitiesnoconv("OperationParamDesc"); From 73b894dca3bee2895c4dd4ab5039dff2f202e029 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Feb 2023 23:19:58 +0100 Subject: [PATCH 040/607] Fix the qty in stock when product has no lot --- htdocs/product/reassortlot.php | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/htdocs/product/reassortlot.php b/htdocs/product/reassortlot.php index 690d3f3f261..6da51124919 100644 --- a/htdocs/product/reassortlot.php +++ b/htdocs/product/reassortlot.php @@ -214,7 +214,7 @@ $morecss = array(); $sql = 'SELECT p.rowid, p.ref, p.label, p.barcode, p.price, p.price_ttc, p.price_base_type, p.entity,'; $sql .= ' p.fk_product_type, p.tms as datem,'; $sql .= ' p.duration, p.tosell as statut, p.tobuy, p.seuil_stock_alerte, p.desiredstock, p.stock, p.tosell, p.tobuy, p.tobatch,'; -$sql .= ' ps.fk_entrepot,'; +$sql .= ' ps.fk_entrepot, ps.reel,'; $sql .= ' e.ref as warehouse_ref, e.lieu as warehouse_lieu, e.fk_parent as warehouse_parent,'; $sql .= ' pb.batch, pb.eatby as oldeatby, pb.sellby as oldsellby,'; $sql .= ' pl.rowid as lotid, pl.eatby, pl.sellby,'; @@ -313,7 +313,7 @@ foreach ($search as $key => $val) { $sql .= " GROUP BY p.rowid, p.ref, p.label, p.barcode, p.price, p.price_ttc, p.price_base_type, p.entity,"; $sql .= " p.fk_product_type, p.tms,"; $sql .= " p.duration, p.tosell, p.tobuy, p.seuil_stock_alerte, p.desiredstock, p.stock, p.tosell, p.tobuy, p.tobatch,"; -$sql .= " ps.fk_entrepot,"; +$sql .= " ps.fk_entrepot, ps.reel,"; $sql .= " e.ref, e.lieu, e.fk_parent,"; $sql .= " pb.batch, pb.eatby, pb.sellby,"; $sql .= " pl.rowid, pl.eatby, pl.sellby"; @@ -322,7 +322,7 @@ if ($toolowstock) { $sql_having .= " HAVING SUM(".$db->ifsql('ps.reel IS NULL', '0', 'ps.reel').") < p.seuil_stock_alerte"; // Not used yet } if ($search_stock_physique != '') { - $natural_search_physique = natural_search('SUM(' . $db->ifsql('pb.qty IS NULL', '0', 'pb.qty') . ')', $search_stock_physique, 1, 1); + $natural_search_physique = natural_search('SUM(' . $db->ifsql('pb.qty IS NULL', $db->ifsql('ps.reel IS NULL', '0', 'ps.reel'), 'pb.qty') . ')', $search_stock_physique, 1, 1); $natural_search_physique = " " . substr($natural_search_physique, 1, -1); // remove first "(" and last ")" characters if (!empty($sql_having)) { $sql_having .= " AND"; @@ -689,7 +689,15 @@ while ($i < $imaxinloop) { print ''; //if ($objp->seuil_stock_alerte && ($objp->stock_physique < $objp->seuil_stock_alerte)) print img_warning($langs->trans("StockTooLow")).' '; - print $objp->stock_physique; + if (is_null($objp->stock_physique)) { + if (!empty($objp->reel)) { + print price2num($objp->reel, 'MS'); + } + } else { + if (!empty($objp->stock_physique)) { + print price2num($objp->stock_physique, 'MS'); + } + } print ''; print ''; From 616b006f2a053d2a589990adb0c0c3f15a353518 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Fri, 10 Feb 2023 10:56:55 +0100 Subject: [PATCH 041/607] fix : Warning: Undefined property: stdClass:: in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/core/modules/facture/mod_facture_mercure.php on line 80 --- htdocs/core/modules/facture/mod_facture_mercure.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/facture/mod_facture_mercure.php b/htdocs/core/modules/facture/mod_facture_mercure.php index 321741ea8a0..1e96c32129a 100644 --- a/htdocs/core/modules/facture/mod_facture_mercure.php +++ b/htdocs/core/modules/facture/mod_facture_mercure.php @@ -77,7 +77,7 @@ class mod_facture_mercure extends ModeleNumRefFactures // Setting the prefix $texte .= ''.$langs->trans("Mask").' ('.$langs->trans("InvoiceStandard").'):'; - $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; + $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; $texte .= '  '; From 3e7879c88671c24d5733c742cefdd8b80b13dac3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 10 Feb 2023 11:00:07 +0100 Subject: [PATCH 042/607] Debug v17 --- htdocs/projet/card.php | 3 ++- htdocs/projet/class/project.class.php | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index 501cdcc5f4b..00b0c11deaf 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -1060,7 +1060,8 @@ if ($action == 'create' && $user->rights->projet->creer) { if (!empty($conf->global->PROJECT_FILTER_FOR_THIRDPARTY_LIST)) { $filteronlist = $conf->global->PROJECT_FILTER_FOR_THIRDPARTY_LIST; } - $text = $form->select_company($object->thirdparty->id, 'socid', $filteronlist, 'None', 1, 0, array(), 0, 'minwidth300'); + $text = img_picto('', 'company', 'class="pictofixedwidth"'); + $text .= $form->select_company($object->thirdparty->id, 'socid', $filteronlist, 'None', 1, 0, array(), 0, 'minwidth300'); if (empty($conf->global->PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS) && empty($conf->dol_use_jmobile)) { $texthelp = $langs->trans("IfNeedToUseOtherObjectKeepEmpty"); print $form->textwithtooltip($text.' '.img_help(), $texthelp, 1, 0, '', '', 2); diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index c8d3be0163d..0d6df2ddc98 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -293,8 +293,8 @@ class Project extends CommonObject 'usage_task' =>array('type'=>'integer', 'label'=>'UsageTasks', 'enabled'=>1, 'visible'=>-1, 'position'=>140), 'usage_organize_event' =>array('type'=>'integer', 'label'=>'UsageOrganizeEvent', 'enabled'=>1, 'visible'=>-1, 'position'=>145), // Properties for event organization - 'date_start_event' =>array('type'=>'date', 'label'=>'DateStartEvent', 'enabled'=>1, 'visible'=>1, 'position'=>200), - 'date_end_event' =>array('type'=>'date', 'label'=>'DateEndEvent', 'enabled'=>1, 'visible'=>1, 'position'=>201), + 'date_start_event' =>array('type'=>'date', 'label'=>'DateStartEvent', 'enabled'=>"isModEnabled('eventorganization')", 'visible'=>1, 'position'=>200), + 'date_end_event' =>array('type'=>'date', 'label'=>'DateEndEvent', 'enabled'=>"isModEnabled('eventorganization')", 'visible'=>1, 'position'=>201), 'location' =>array('type'=>'text', 'label'=>'Location', 'enabled'=>1, 'visible'=>3, 'position'=>55, 'searchall'=>202), 'accept_conference_suggestions' =>array('type'=>'integer', 'label'=>'AllowUnknownPeopleSuggestConf', 'enabled'=>1, 'visible'=>-1, 'position'=>210), 'accept_booth_suggestions' =>array('type'=>'integer', 'label'=>'AllowUnknownPeopleSuggestBooth', 'enabled'=>1, 'visible'=>-1, 'position'=>211), From b52de45f73926958a7f7eecd978b7bed868c1b19 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Fri, 10 Feb 2023 11:01:09 +0100 Subject: [PATCH 043/607] fix : Warning: Undefined property: stdClass:: in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/core/modules/facture/mod_facture_mercure.php on line 88 --- htdocs/core/modules/facture/mod_facture_mercure.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/facture/mod_facture_mercure.php b/htdocs/core/modules/facture/mod_facture_mercure.php index 1e96c32129a..890d56e874b 100644 --- a/htdocs/core/modules/facture/mod_facture_mercure.php +++ b/htdocs/core/modules/facture/mod_facture_mercure.php @@ -85,7 +85,7 @@ class mod_facture_mercure extends ModeleNumRefFactures // Prefix setting of replacement invoices $texte .= ''.$langs->trans("Mask").' ('.$langs->trans("InvoiceReplacement").'):'; - $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; + $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; $texte .= ''; // Prefix setting of credit note From f1c929abd0f28aaaeaf3d6d466e5f179832053bc Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Fri, 10 Feb 2023 11:03:31 +0100 Subject: [PATCH 044/607] fix : Warning: Undefined property: stdClass:: in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/core/modules/facture/mod_facture_mercure.php on line 93 --- htdocs/core/modules/facture/mod_facture_mercure.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/facture/mod_facture_mercure.php b/htdocs/core/modules/facture/mod_facture_mercure.php index 890d56e874b..65594470c30 100644 --- a/htdocs/core/modules/facture/mod_facture_mercure.php +++ b/htdocs/core/modules/facture/mod_facture_mercure.php @@ -90,7 +90,7 @@ class mod_facture_mercure extends ModeleNumRefFactures // Prefix setting of credit note $texte .= ''.$langs->trans("Mask").' ('.$langs->trans("InvoiceAvoir").'):'; - $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; + $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; $texte .= ''; // Prefix setting of deposit From 4a826d47e93d30a0ec9e0308876169b410cbbbe5 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Fri, 10 Feb 2023 11:17:02 +0100 Subject: [PATCH 045/607] fix : Warning: Undefined property: stdClass:: in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/core/modules/facture/mod_facture_mercure.php on line 98 --- htdocs/core/modules/facture/mod_facture_mercure.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/facture/mod_facture_mercure.php b/htdocs/core/modules/facture/mod_facture_mercure.php index 65594470c30..e624487c9cf 100644 --- a/htdocs/core/modules/facture/mod_facture_mercure.php +++ b/htdocs/core/modules/facture/mod_facture_mercure.php @@ -77,7 +77,7 @@ class mod_facture_mercure extends ModeleNumRefFactures // Setting the prefix $texte .= ''.$langs->trans("Mask").' ('.$langs->trans("InvoiceStandard").'):'; - $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; + $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; $texte .= '  '; @@ -85,7 +85,7 @@ class mod_facture_mercure extends ModeleNumRefFactures // Prefix setting of replacement invoices $texte .= ''.$langs->trans("Mask").' ('.$langs->trans("InvoiceReplacement").'):'; - $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; + $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; $texte .= ''; // Prefix setting of credit note From 2e0b7fe4e8da235d76bd64156a83a3029920cc9d Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Fri, 10 Feb 2023 10:21:39 +0000 Subject: [PATCH 046/607] Fixing style errors. --- htdocs/core/modules/facture/mod_facture_mercure.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/facture/mod_facture_mercure.php b/htdocs/core/modules/facture/mod_facture_mercure.php index e624487c9cf..4185a8a08b6 100644 --- a/htdocs/core/modules/facture/mod_facture_mercure.php +++ b/htdocs/core/modules/facture/mod_facture_mercure.php @@ -77,7 +77,7 @@ class mod_facture_mercure extends ModeleNumRefFactures // Setting the prefix $texte .= ''.$langs->trans("Mask").' ('.$langs->trans("InvoiceStandard").'):'; - $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; + $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; $texte .= '  '; @@ -85,7 +85,7 @@ class mod_facture_mercure extends ModeleNumRefFactures // Prefix setting of replacement invoices $texte .= ''.$langs->trans("Mask").' ('.$langs->trans("InvoiceReplacement").'):'; - $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; + $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; $texte .= ''; // Prefix setting of credit note From 5acefe2e72162f52d95fe2dfc309daa02e16f949 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Fri, 10 Feb 2023 11:33:34 +0100 Subject: [PATCH 047/607] cleaning my previous --- htdocs/core/modules/facture/mod_facture_mercure.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/core/modules/facture/mod_facture_mercure.php b/htdocs/core/modules/facture/mod_facture_mercure.php index e624487c9cf..1f516fa08f6 100644 --- a/htdocs/core/modules/facture/mod_facture_mercure.php +++ b/htdocs/core/modules/facture/mod_facture_mercure.php @@ -77,7 +77,7 @@ class mod_facture_mercure extends ModeleNumRefFactures // Setting the prefix $texte .= ''.$langs->trans("Mask").' ('.$langs->trans("InvoiceStandard").'):'; - $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; + $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; $texte .= '  '; @@ -85,17 +85,17 @@ class mod_facture_mercure extends ModeleNumRefFactures // Prefix setting of replacement invoices $texte .= ''.$langs->trans("Mask").' ('.$langs->trans("InvoiceReplacement").'):'; - $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; + $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; $texte .= ''; // Prefix setting of credit note $texte .= ''.$langs->trans("Mask").' ('.$langs->trans("InvoiceAvoir").'):'; - $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; + $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; $texte .= ''; // Prefix setting of deposit $texte .= ''.$langs->trans("Mask").' ('.$langs->trans("InvoiceDeposit").'):'; - $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; + $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; $texte .= ''; $texte .= ''; From fa856424a4f5a50486ffca16dcc7fcc7decca3aa Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Fri, 10 Feb 2023 11:43:01 +0100 Subject: [PATCH 048/607] fix : Warning: Undefined property: Facture:: in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/core/modules/facture/doc/pdf_sponge.modules.php on line 1620 --- htdocs/core/modules/facture/doc/pdf_sponge.modules.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php index 5edfc3f6157..1d106f6f024 100644 --- a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php @@ -1617,7 +1617,7 @@ class pdf_sponge extends ModelePDFFactures // Get Total HT - $total_ht = (isModEnabled("multicurrency") && $object->mylticurrency_tx != 1 ? $object->multicurrency_total_ht : $object->total_ht); + $total_ht = (isModEnabled("multicurrency") && $object->multicurrency_tx != 1 ? $object->multicurrency_total_ht : $object->total_ht); // Total remise $total_line_remise = 0; From 02475369e638333dfecad09b58e5f84ab7e314a3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 10 Feb 2023 12:58:49 +0100 Subject: [PATCH 049/607] Fix bad link --- htdocs/projet/agenda.php | 2 +- htdocs/projet/card.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/projet/agenda.php b/htdocs/projet/agenda.php index a3c120d0a23..071e9eb2e9a 100644 --- a/htdocs/projet/agenda.php +++ b/htdocs/projet/agenda.php @@ -180,7 +180,7 @@ if (!empty($object->id)) { $morehtmlcenter .= dolGetButtonTitle($langs->trans('ShowAsConversation'), '', 'fa fa-comments imgforviewmode', $messagingUrl, '', 1); // Show link to change view in agenda - $messagingUrl = DOL_URL_ROOT.'/projet/info.php?id='.$object->id; + $messagingUrl = DOL_URL_ROOT.'/projet/agenda.php?id='.$object->id; $morehtmlcenter .= dolGetButtonTitle($langs->trans('MessageListViewType'), '', 'fa fa-bars imgforviewmode', $messagingUrl, '', 2); diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index 00b0c11deaf..e954f429781 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -1614,7 +1614,7 @@ if ($action == 'create' && $user->rights->projet->creer) { $MAXEVENT = 10; - $morehtmlcenter = dolGetButtonTitle($langs->trans('SeeAll'), '', 'fa fa-bars imgforviewmode', DOL_URL_ROOT.'/projet/info.php?id='.$object->id); + $morehtmlcenter = dolGetButtonTitle($langs->trans('SeeAll'), '', 'fa fa-bars imgforviewmode', DOL_URL_ROOT.'/projet/messaging.php?id='.$object->id); // List of actions on element include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php'; From d37c5ed6b1936f02179c3fd6bdee474179bedbc2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 10 Feb 2023 14:16:30 +0100 Subject: [PATCH 050/607] Debug v17 --- htdocs/admin/mails_templates.php | 31 +++++++++++++++---------------- htdocs/core/lib/functions.lib.php | 8 ++++---- htdocs/theme/eldy/global.inc.php | 2 +- htdocs/theme/md/btn.inc.php | 9 ++++++--- htdocs/theme/md/style.css.php | 5 +---- 5 files changed, 27 insertions(+), 28 deletions(-) diff --git a/htdocs/admin/mails_templates.php b/htdocs/admin/mails_templates.php index e462b7854ac..25a1ba101ad 100644 --- a/htdocs/admin/mails_templates.php +++ b/htdocs/admin/mails_templates.php @@ -675,17 +675,27 @@ if (!empty($user->admin) && (empty($_SESSION['leftmenu']) || $_SESSION['leftmenu } -// Confirmation de la suppression de la ligne +// Confirm deletion of record if ($action == 'delete') { - print $form->formconfirm($_SERVER["PHP_SELF"].'?'.($page ? 'page='.$page.'&' : '').'sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.$rowid.'&code='.$code.'&id='.$id, $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_delete', '', 0, 1); + print $form->formconfirm($_SERVER["PHP_SELF"].'?'.($page ? 'page='.$page.'&' : '').'sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.((int) $rowid).'&code='.urlencode($code).'&id='.((int) $id), $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_delete', '', 0, 1); } - - $fieldlist = explode(',', $tabfield[$id]); if ($action == 'create') { + // If data was already input, we define them in obj to populate input fields. + $obj = new stdClass(); + $obj->label = GETPOST('label'); + $obj->lang = GETPOST('lang'); + $obj->type_template = GETPOST('type_template'); + $obj->fk_user = GETPOST('fk_user', 'int'); + $obj->private = GETPOST('private', 'int'); + $obj->position = GETPOST('position'); + $obj->topic = GETPOST('topic'); + $obj->joinfiles = GETPOST('joinfiles'); + $obj->content = GETPOST('content', 'restricthtml'); + // Form to add a new line print ''; print ''; @@ -761,16 +771,6 @@ if ($action == 'create') { print ''; print ''; - $obj = new stdClass(); - // If data was already input, we define them in obj to populate input fields. - if (GETPOST('actionadd')) { - foreach ($fieldlist as $key => $val) { - if (GETPOST($val) != '') { - $obj->$val = GETPOST($val); - } - } - } - $tmpaction = 'create'; $parameters = array( 'fieldlist' => $fieldlist, @@ -828,7 +828,6 @@ if ($action == 'create') { if (empty($conf->global->FCKEDITOR_ENABLE_MAIL)) { $okforextended = false; } - $doleditor = new DolEditor($tmpfieldlist, (!empty($obj->$tmpfieldlist) ? $obj->$tmpfieldlist : ''), '', 180, 'dolibarr_mailings', 'In', false, $acceptlocallinktomedia, $okforextended, ROWS_4, '90%'); print $doleditor->Create(1); } @@ -848,7 +847,7 @@ if ($action == 'create') { print '
'; print ''; print '

'; -} // END IF not edit +} // List of available record in database dol_syslog("htdocs/admin/dict", LOG_DEBUG); diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index bb69fd4966d..37949215357 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -5371,10 +5371,10 @@ function load_fiche_titre($titre, $morehtmlright = '', $picto = 'generic', $pict $return .= '
'.$titre.'
'; $return .= ''; if (dol_strlen($morehtmlcenter)) { - $return .= ''.$morehtmlcenter.''; + $return .= ''.$morehtmlcenter.''; } if (dol_strlen($morehtmlright)) { - $return .= ''.$morehtmlright.''; + $return .= ''.$morehtmlright.''; } $return .= ''."\n"; @@ -5446,11 +5446,11 @@ function print_barre_liste($titre, $page, $file, $options = '', $sortfield = '', // Center if ($morehtmlcenter) { - print ''.$morehtmlcenter.''; + print ''.$morehtmlcenter.''; } // Right - print ''; + print ''; print ''; if ($sortfield) { $options .= "&sortfield=".urlencode($sortfield); diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 10617a51d72..8f7d4b1ef1e 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -4879,7 +4879,7 @@ div.titre { color: var(--colortexttitlenotab2); } -table.table-fiche-title .col-title div.titre{ +table.table-fiche-title .col-title div.titre, .col-right .btnTitle-icon { line-height: 40px; } table.table-fiche-title { diff --git a/htdocs/theme/md/btn.inc.php b/htdocs/theme/md/btn.inc.php index 5ccd2e100dd..fdd9668c7d3 100644 --- a/htdocs/theme/md/btn.inc.php +++ b/htdocs/theme/md/btn.inc.php @@ -342,8 +342,8 @@ a.btnTitle.btnTitleSelected { position: relative; margin: 0 0 0 10px; text-align: center; - color: #ffffff; - background-color: rgb(); + color: #000; + background-color: #eee; font-size: 12px; text-decoration: none; box-shadow: none; @@ -373,7 +373,10 @@ div.pagination .btnTitle:hover .btnTitle-label{ } .paginationafterarrows a.btnTitlePlus, .titre_right a.btnTitlePlus { - border: 1px solid var(--colorbackbody); + border: 1px solid var(--btncolorborder); +} +.paginationafterarrows a.btnTitlePlus:hover, .titre_right a.btnTitlePlus:hover { + border-color: #ddd; } diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 780059e3a8f..47a35f8d0bf 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -4168,9 +4168,6 @@ table.hidepaginationprevious .paginationprevious { table.hidepaginationnext .paginationnext { display: none; } -.paginationafterarrows a.btnTitlePlus { - border: 1px solid var(--btncolorborder); -} .paginationafterarrows a.btnTitlePlus:hover span:before { /* text-shadow: 0px 0px 5px #ccc; */ /* filter: invert(0.3); */ @@ -4906,7 +4903,7 @@ div.titre { table.centpercent.notopnoleftnoright.table-fiche-title { margin-bottom: 10px !important; } -table.table-fiche-title .col-title div.titre{ +table.table-fiche-title .col-title div.titre, .col-right .btnTitle-icon { line-height: 40px; } From c3a7cf57fcba3e4eafd3f6d1d51d47f93fcc9e14 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 10 Feb 2023 14:47:39 +0100 Subject: [PATCH 051/607] Debug v17 --- htdocs/theme/md/style.css.php | 32 ++++++++++++++---------------- htdocs/theme/md/theme_vars.inc.php | 4 ++-- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 47a35f8d0bf..6d56e452898 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1803,14 +1803,13 @@ tr.nobottom td { /* ============================================================================== */ /* Styles to hide objects */ /* ============================================================================== */ - .clearboth { clear:both; } .hideobject { display: none; } .minwidth25 { min-width: 25px; } .minwidth50 { min-width: 50px; } .minwidth75 { min-width: 75px; } /* rule for not too small screen only */ -@media only screen and (min-width: px) +@media only screen and (min-width: global->THEME_ELDY_WITDHOFFSET_FOR_REDUC3) ? round($nbtopmenuentries * 47, 0) + 130 : $conf->global->THEME_ELDY_WITDHOFFSET_FOR_REDUC3; ?>px) { .width20 { width: 20px; } .width25 { width: 25px; } @@ -3192,7 +3191,7 @@ a.aversion { .alogin, .alogin:hover { color: #888 !important; font-weight: normal !important; - font-size: px !important; + font-size: !important; } .alogin:hover, .atoplogin:hover { text-decoration:underline !important; @@ -3282,16 +3281,16 @@ div.vmenu, td.vmenu { .searchform .bordertransp { border: 0; } a.vmenu:link, a.vmenu:visited, a.vmenu:hover, a.vmenu:active, span.vmenu, span.vsmenu { - white-space: nowrap; font-size:px; font-family: ; text-align: ; font-weight: bold; + white-space: nowrap; font-size:; font-family: ; text-align: ; font-weight: bold; } -span.vmenudisabled, font.vmenudisabled { font-size:px; font-family: ; text-align: ; font-weight: bold; color: #aaa; margin-left: 4px; white-space: nowrap; } +span.vmenudisabled, font.vmenudisabled { font-size:; font-family: ; text-align: ; font-weight: bold; color: #aaa; margin-left: 4px; white-space: nowrap; } a.vmenu:link, a.vmenu:visited { color: var(--colortextbackvmenu); } -a.vsmenu:link, a.vsmenu:visited, a.vsmenu:hover, a.vsmenu:active, span.vsmenu { font-size:px; font-family: ; text-align: ; font-weight: normal; color: #202020; margin: 1px 1px 1px 8px; } +a.vsmenu:link, a.vsmenu:visited, a.vsmenu:hover, a.vsmenu:active, span.vsmenu { font-size:; font-family: ; text-align: ; font-weight: normal; color: #202020; margin: 1px 1px 1px 8px; } span.vsmenudisabled:not(.spanlilevel0), font.vsmenudisabled:not(.spanlilevel0) { - font-size:px; + font-size:; } span.vsmenudisabled, font.vsmenudisabled { font-family: ; @@ -5002,7 +5001,7 @@ div#card-errors { .ui-dialog-titlebar { } .ui-dialog-content { - font-size: px !important; + font-size: !important; } .ui-dialog.ui-corner-all.ui-widget.ui-widget-content.ui-front.ui-draggable { z-index: 1002 !important; /* Default 101 with ui-jquery, top menu have a z-index of 1000 */ @@ -7466,13 +7465,12 @@ div.clipboardCPValue.hidewithsize { width: px; } -/* nboftopmenuentries = , fontsize= */ -/* disableimages = */ -/* rule to reduce top menu - 1st reduction */ -@media only screen and (max-width: px) +/* nboftopmenuentries = , fontsize= */ +/* rule to reduce top menu - 1st reduction: Reduce width of top menu icons */ +@media only screen and (max-width: global->THEME_ELDY_WITDHOFFSET_FOR_REDUC1) ? round($nbtopmenuentries * 90, 0) + 340 : $conf->global->THEME_ELDY_WITDHOFFSET_FOR_REDUC1; ?>px) /* reduction 1 */ { div.tmenucenter { - max-width: px; /* size of viewport */ + max-width: 56px; /* size of viewport */ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; @@ -7496,16 +7494,16 @@ div.clipboardCPValue.hidewithsize { display: none; } } -/* rule to reduce top menu - 2nd reduction */ -@media only screen and (max-width: px) +/* rule to reduce top menu - 2nd reduction: Reduce width of top menu icons again */ +@media only screen and (max-width: global->THEME_ELDY_WITDHOFFSET_FOR_REDUC2) ? round($nbtopmenuentries * 69, 0) + 130 : $conf->global->THEME_ELDY_WITDHOFFSET_FOR_REDUC2; ?>px) /* reduction 2 */ { li.tmenucompanylogo { display: none; } div.tmenucenter { - max-width: px; /* size of viewport */ - text-overflow: clip; + max-width: 24px; /* size of viewport */ + text-overflow: clip; } .mainmenuaspan { font-size: 10px; diff --git a/htdocs/theme/md/theme_vars.inc.php b/htdocs/theme/md/theme_vars.inc.php index 5f26d0d83bd..84a1065f781 100644 --- a/htdocs/theme/md/theme_vars.inc.php +++ b/htdocs/theme/md/theme_vars.inc.php @@ -64,8 +64,8 @@ $colortexttitle = '20,20,20'; $colortexttitlelink = '0,0,120'; $colortext = '0,0,0'; $colortextlink = '0,0,120'; -$fontsize = '14'; -$fontsizesmaller = '11'; +$fontsize = '0.94em'; +$fontsizesmaller = '0.75em'; $topMenuFontSize = '1.1em'; $toolTipBgColor = 'rgba(255, 255, 255, 0.96)'; $toolTipFontColor = '#333'; From 218d7cf148804d4dc0a3a86fb9007560a5819250 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Fri, 10 Feb 2023 13:47:46 +0000 Subject: [PATCH 052/607] Fixing style errors. --- htdocs/bom/tpl/objectline_view.tpl.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/htdocs/bom/tpl/objectline_view.tpl.php b/htdocs/bom/tpl/objectline_view.tpl.php index 6208abcbf6d..95bbed79784 100644 --- a/htdocs/bom/tpl/objectline_view.tpl.php +++ b/htdocs/bom/tpl/objectline_view.tpl.php @@ -172,8 +172,7 @@ print ''; $coldisplay++; if (!empty($line->fk_bom_child)) { echo ''.price($tmpbom->total_cost * $line->qty).''; -} -else { +} else { echo ''.price($line->total_cost).''; } print ''; @@ -302,7 +301,7 @@ if ($resql) { $sub_bom->calculateCosts(); print ''.price(price2num($sub_bom->total_cost * $sub_bom_line->qty * $line->qty, 'MT')).''; $total_cost+= $sub_bom->total_cost * $sub_bom_line->qty * $line->qty; - } elseif($sub_bom_product->type == Product::TYPE_SERVICE && isModEnabled('workstation') && !empty($sub_bom_product->fk_default_workstation)) { + } elseif ($sub_bom_product->type == Product::TYPE_SERVICE && isModEnabled('workstation') && !empty($sub_bom_product->fk_default_workstation)) { //Convert qty to hour $unit = measuringUnitString($sub_bom_line->fk_unit, '', '', 1); $qty = convertDurationtoHour($sub_bom_line->qty, $unit); From 49f093daefec960a3c4e632fcb557dd9a93441a8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 10 Feb 2023 14:57:27 +0100 Subject: [PATCH 053/607] css --- htdocs/theme/md/info-box.inc.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/theme/md/info-box.inc.php b/htdocs/theme/md/info-box.inc.php index e2179b96162..9938225eebb 100644 --- a/htdocs/theme/md/info-box.inc.php +++ b/htdocs/theme/md/info-box.inc.php @@ -153,7 +153,7 @@ a.info-box-text-a i.fa.fa-exclamation-triangle { margin-bottom: 15px; border: 1px solid #e9e9e9; } -.info-box.info-box-sm{ +.info-box.info-box-sm { min-height: 80px; margin-bottom: 10px; } @@ -213,6 +213,10 @@ a.info-box-text-a i.fa.fa-exclamation-triangle { font-size: 25px; line-height: 92px; } +.info-box-module .info-box-icon { + padding-top: 4px; + padding-bottom: 4px; +} .opened-dash-board-wrap .info-box .info-box-icon { font-size: 2em; } From 1bc16f47c0633332e9a855bcc499b4b73d5ceb39 Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Fri, 10 Feb 2023 15:00:27 +0100 Subject: [PATCH 054/607] FIX : Missing right to edit service note when module product is disabled --- htdocs/product/note.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/note.php b/htdocs/product/note.php index b758f414035..52d912933eb 100644 --- a/htdocs/product/note.php +++ b/htdocs/product/note.php @@ -49,7 +49,7 @@ if ($id > 0 || !empty($ref)) { $object->fetch($id, $ref); } -$permissionnote = $user->rights->produit->creer; // Used by the include of actions_setnotes.inc.php +$permissionnote = ($user->rights->produit->creer || $user->rights->service->creer); // Used by the include of actions_setnotes.inc.php if ($object->id > 0) { if ($object->type == $object::TYPE_PRODUCT) { From 0cc8b5d7f2e6acc146d9eb51dd2b05179260c1c0 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Fri, 10 Feb 2023 15:02:11 +0100 Subject: [PATCH 055/607] fix : Warning: Undefined variable in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/core/class/html.formfile.class.php on line 924 --- htdocs/core/class/html.formfile.class.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index bc06d1517dc..ca058603ce1 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -920,6 +920,9 @@ class FormFile } if (is_object($hookmanager)) { + $addcolumforpicto = ($delallowed || $printer || $morepicto); + $colspan = (4 + ($addcolumforpicto ? 1 : 0)); + $colspanmore = 0; $parameters = array('colspan'=>($colspan + $colspanmore), 'socid'=>(isset($GLOBALS['socid']) ? $GLOBALS['socid'] : ''), 'id'=>(isset($GLOBALS['id']) ? $GLOBALS['id'] : ''), 'modulepart'=>$modulepart, 'relativepath'=>$relativepath); $res = $hookmanager->executeHooks('formBuilddocLineOptions', $parameters, $file); if (empty($res)) { From 26ec131048fa28f3c690cdf48302279c1af04ee7 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Fri, 10 Feb 2023 15:24:46 +0100 Subject: [PATCH 056/607] fix : Warning: Undefined property: stdClass:: in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/compta/facture/card-rec.php on line 122 --- htdocs/compta/facture/card-rec.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/card-rec.php b/htdocs/compta/facture/card-rec.php index b2f3521111e..580b585c28f 100644 --- a/htdocs/compta/facture/card-rec.php +++ b/htdocs/compta/facture/card-rec.php @@ -119,7 +119,7 @@ $usercanreopen = (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights $usercanunvalidate = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($usercancreate)) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->facture->invoice_advance->unvalidate))); $usercanproductignorepricemin = ((!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->produit->ignore_price_min_advance)) || empty($conf->global->MAIN_USE_ADVANCED_PERMS)); -$usercancreatemargin = $user->rights->margins->creer; +$usercancreatemargin = $user->hasRight("margins", "creer"); $usercanreadallmargin = $user->rights->margins->liretous; $usercancreatewithdrarequest = $user->rights->prelevement->bons->creer; From 66015cb11d754a2404a9a426e44b6187d566e14a Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Fri, 10 Feb 2023 15:30:34 +0100 Subject: [PATCH 057/607] fix : Warning: Undefined property: stdClass:: in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/compta/facture/card-rec.php on line 123 Warning: Attempt to read property liretous on null in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/compta/facture/card-rec.php on line 123 --- htdocs/compta/facture/card-rec.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/card-rec.php b/htdocs/compta/facture/card-rec.php index 580b585c28f..39763375fd2 100644 --- a/htdocs/compta/facture/card-rec.php +++ b/htdocs/compta/facture/card-rec.php @@ -120,7 +120,7 @@ $usercanunvalidate = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($ $usercanproductignorepricemin = ((!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->produit->ignore_price_min_advance)) || empty($conf->global->MAIN_USE_ADVANCED_PERMS)); $usercancreatemargin = $user->hasRight("margins", "creer"); -$usercanreadallmargin = $user->rights->margins->liretous; +$usercanreadallmargin = $user->hasRight("margins", "liretous"); $usercancreatewithdrarequest = $user->rights->prelevement->bons->creer; $now = dol_now(); From 457e6883e249938eee7ac1d0f1a4164a337fb5ab Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 10 Feb 2023 15:34:47 +0100 Subject: [PATCH 058/607] Fix excessive hooks log --- htdocs/core/ajax/selectsearchbox.php | 1 - htdocs/core/class/hookmanager.class.php | 6 +++++- htdocs/main.inc.php | 14 +++++++------- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/htdocs/core/ajax/selectsearchbox.php b/htdocs/core/ajax/selectsearchbox.php index 38c363654d3..d2379f46966 100644 --- a/htdocs/core/ajax/selectsearchbox.php +++ b/htdocs/core/ajax/selectsearchbox.php @@ -58,7 +58,6 @@ if (!isset($usedbyinclude) || empty($usedbyinclude)) { include_once DOL_DOCUMENT_ROOT.'/core/lib/json.lib.php'; -//global $hookmanager; $hookmanager->initHooks(array('searchform')); $search_boxvalue = GETPOST('q', 'restricthtml'); diff --git a/htdocs/core/class/hookmanager.class.php b/htdocs/core/class/hookmanager.class.php index 191887e1725..c9c559fce41 100644 --- a/htdocs/core/class/hookmanager.class.php +++ b/htdocs/core/class/hookmanager.class.php @@ -127,6 +127,7 @@ class HookManager } } } + // Log the init of hook but only for hooks thare are declared to be managed if (count($arraytolog) > 0) { dol_syslog(get_class($this)."::initHooks Loading hooks: ".join(', ', $arraytolog), LOG_DEBUG); } @@ -275,7 +276,10 @@ class HookManager $actionclassinstance->error = 0; $actionclassinstance->errors = array(); - dol_syslog(get_class($this)."::executeHooks Qualified hook found (hooktype=".$hooktype."). We call method ".get_class($actionclassinstance).'->'.$method.", context=".$context.", module=".$module.", action=".$action.((is_object($object) && property_exists($object, 'id')) ? ', object id='.$object->id : '').((is_object($object) && property_exists($object, 'element')) ? ', object element='.$object->element : ''), LOG_DEBUG); + if (getDolGlobalInt('MAIN_DEBUG_SHOW_EACH_QUALIFIED_HOOK_CALL') >= 2) { + // This his too much verbose, enabled in develop only + dol_syslog(get_class($this)."::executeHooks Qualified hook found (hooktype=".$hooktype."). We call method ".get_class($actionclassinstance).'->'.$method.", context=".$context.", module=".$module.", action=".$action.((is_object($object) && property_exists($object, 'id')) ? ', object id='.$object->id : '').((is_object($object) && property_exists($object, 'element')) ? ', object element='.$object->element : ''), LOG_DEBUG); + } // Add current context to avoid method execution in bad context, you can add this test in your method : eg if($currentcontext != 'formfile') return; // Note: The hook can use the $currentcontext in its code to avoid to be ran twice or be ran for one given context only diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 37d018a21ce..f476c9bafed 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -2870,14 +2870,9 @@ function left_menu($menu_array_before, $helppagename = '', $notused = '', $menu_ if (empty($conf->dol_hide_leftmenu) && (!defined('NOREQUIREMENU') || !constant('NOREQUIREMENU'))) { // Instantiate hooks for external modules - $hookmanager->initHooks(array('searchform', 'leftblock')); + $hookmanager->initHooks(array('leftblock')); print "\n".''."\n".'
'."\n"; - - if ($conf->browser->layout == 'phone') { - $conf->global->MAIN_USE_OLD_SEARCH_FORM = 1; // Select into select2 is awfull on smartphone. TODO Is this still true with select2 v4 ? - } - print "\n"; if (!is_object($form)) { @@ -2885,9 +2880,14 @@ function left_menu($menu_array_before, $helppagename = '', $notused = '', $menu_ } $selected = -1; if (empty($conf->global->MAIN_USE_TOP_MENU_SEARCH_DROPDOWN)) { + // Select into select2 is awfull on smartphone. TODO Is this still true with select2 v4 ? + if ($conf->browser->layout == 'phone') { + $conf->global->MAIN_USE_OLD_SEARCH_FORM = 1; + } + $usedbyinclude = 1; $arrayresult = null; - include DOL_DOCUMENT_ROOT.'/core/ajax/selectsearchbox.php'; // This set $arrayresult + include DOL_DOCUMENT_ROOT.'/core/ajax/selectsearchbox.php'; // This make initHooks('searchform') then set $arrayresult if ($conf->use_javascript_ajax && empty($conf->global->MAIN_USE_OLD_SEARCH_FORM)) { $searchform .= $form->selectArrayFilter('searchselectcombo', $arrayresult, $selected, '', 1, 0, (empty($conf->global->MAIN_SEARCHBOX_CONTENT_LOADED_BEFORE_KEY) ? 1 : 0), 'vmenusearchselectcombo', 1, $langs->trans("Search"), 1); From d183773ace1f036f1d128294e6c1ac3795031b05 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Fri, 10 Feb 2023 15:34:56 +0100 Subject: [PATCH 059/607] fix : Warning: Undefined property: stdClass:: in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/compta/facture/card-rec.php on line 124 --- htdocs/compta/facture/card-rec.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/card-rec.php b/htdocs/compta/facture/card-rec.php index 39763375fd2..96924f3bdd0 100644 --- a/htdocs/compta/facture/card-rec.php +++ b/htdocs/compta/facture/card-rec.php @@ -121,7 +121,7 @@ $usercanunvalidate = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($ $usercanproductignorepricemin = ((!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->produit->ignore_price_min_advance)) || empty($conf->global->MAIN_USE_ADVANCED_PERMS)); $usercancreatemargin = $user->hasRight("margins", "creer"); $usercanreadallmargin = $user->hasRight("margins", "liretous"); -$usercancreatewithdrarequest = $user->rights->prelevement->bons->creer; +$usercancreatewithdrarequest = $user->hasRight("prelevement", "bons","creer"); $now = dol_now(); From 1d9afa4808a64794970a9baaa52a06dc5ececc45 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Fri, 10 Feb 2023 14:45:03 +0000 Subject: [PATCH 060/607] Fixing style errors. --- htdocs/compta/facture/card-rec.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/card-rec.php b/htdocs/compta/facture/card-rec.php index 96924f3bdd0..06e9a762bca 100644 --- a/htdocs/compta/facture/card-rec.php +++ b/htdocs/compta/facture/card-rec.php @@ -121,7 +121,7 @@ $usercanunvalidate = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($ $usercanproductignorepricemin = ((!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->produit->ignore_price_min_advance)) || empty($conf->global->MAIN_USE_ADVANCED_PERMS)); $usercancreatemargin = $user->hasRight("margins", "creer"); $usercanreadallmargin = $user->hasRight("margins", "liretous"); -$usercancreatewithdrarequest = $user->hasRight("prelevement", "bons","creer"); +$usercancreatewithdrarequest = $user->hasRight("prelevement", "bons", "creer"); $now = dol_now(); From fb4077ef95de43de60990235a979c1c2d9fc2f58 Mon Sep 17 00:00:00 2001 From: Francis Appels Date: Fri, 10 Feb 2023 16:07:55 +0100 Subject: [PATCH 061/607] Remove double code --- htdocs/core/photos_resize.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/core/photos_resize.php b/htdocs/core/photos_resize.php index efbb3ba9c19..9bb974d75b3 100644 --- a/htdocs/core/photos_resize.php +++ b/htdocs/core/photos_resize.php @@ -453,7 +453,6 @@ if ($action == 'confirm_crop') { if ($result < 0) { setEventMessages($ecmfile->error, $ecmfile->errors, 'warnings'); } - $result = $ecmfile->create($user); } if ($backtourl) { From 8299501800d27661caf468133979f14c91a27c8f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 10 Feb 2023 16:14:32 +0100 Subject: [PATCH 062/607] Fix subrequest inside a loop --- htdocs/core/class/commonobject.class.php | 7 ++-- htdocs/projet/list.php | 49 ++++++++++++++++-------- 2 files changed, 36 insertions(+), 20 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index b5bcbe3ef8f..38202a0938a 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -1354,12 +1354,13 @@ abstract class CommonObject * * @param int $statusoflink Status of links to get (-1=all). Not used. * @param string $source Source of contact: 'external' or 'thirdparty' (llx_socpeople) or 'internal' (llx_user) - * @param int $list 0:Return array contains all properties, 1:Return array contains just id + * @param int $list 0:Returned array contains all properties, 1:Return array contains just id * @param string $code Filter on this code of contact type ('SHIPPING', 'BILLING', ...) * @param int $status Status of user or company + * @param array $arrayoftcids Array with ID of type of contacts. If we provide this, we can make a ec.fk_c_type_contact in ($arrayoftcids) to avoid link on tc table. TODO Not implemented. * @return array|int Array of contacts, -1 if error */ - public function liste_contact($statusoflink = -1, $source = 'external', $list = 0, $code = '', $status = -1) + public function liste_contact($statusoflink = -1, $source = 'external', $list = 0, $code = '', $status = -1, $typecontectids = array()) { // phpcs:enable global $langs; @@ -1401,7 +1402,7 @@ abstract class CommonObject $sql .= " AND t.statut = ".((int) $status); // t is llx_socpeople } } - $sql .= " AND tc.active=1"; + $sql .= " AND tc.active = 1"; if ($statusoflink >= 0) { $sql .= " AND ec.statut = ".((int) $statusoflink); } diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 32192114a4c..6574cf8d09d 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -1331,6 +1331,7 @@ while ($i < $imaxinloop) { $userAccess = $object->restrictedProjectArea($user); // why this ? if ($userAccess >= 0) { + // Thirdparty $companystatic->id = $obj->socid; $companystatic->name = $obj->name; $companystatic->name_alias = $obj->alias; @@ -1343,6 +1344,21 @@ while ($i < $imaxinloop) { $companystatic->town = $obj->town; $companystatic->country_code = $obj->country_code; + // Author + $userstatic->id = $obj->fk_user_creat; + $userstatic->login = $obj->login; + $userstatic->lastname = $obj->lastname; + $userstatic->firstname = $obj->firstname; + $userstatic->email = $obj->user_email; + $userstatic->statut = $obj->user_statut; + $userstatic->entity = $obj->entity; + $userstatic->photo = $obj->photo; + $userstatic->office_phone = $obj->office_phone; + $userstatic->office_fax = $obj->office_fax; + $userstatic->user_mobile = $obj->user_mobile; + $userstatic->job = $obj->job; + $userstatic->gender = $obj->gender; + print ''; // Action column @@ -1496,12 +1512,25 @@ while ($i < $imaxinloop) { if (!empty($numcontact)) { foreach ($tab as $contactproject) { //var_dump($contacttask); + $cid = $contactproject['id']; if ($source == 'internal') { - $c = new User($db); + if (empty($conf->cache['user'][$cid])) { + $c = new User($db); + $c->fetch($cid); + $conf->cache['user'][$cid] = $c; + } else { + $c = $conf->cache['user'][$cid]; + } } else { - $c = new Contact($db); + if (empty($conf->cache['contact'][$cid])) { + $c = new Contact($db); + $c->fetch($cid); + $conf->cache['contact'][$cid] = $c; + } else { + $c = $conf->cache['contact'][$cid]; + } } - $c->fetch($contactproject['id']); + if (!empty($c->photo)) { if (get_class($c) == 'User') { print $c->getNomUrl(-2, '', 0, 0, 24, 1, '', ($ifisrt ? '' : 'notfirst')); @@ -1703,20 +1732,6 @@ while ($i < $imaxinloop) { $totalarray['pos'][$totalarray['nbfield']] = 'p.price_booth'; } } - // Author - $userstatic->id = $obj->fk_user_creat; - $userstatic->login = $obj->login; - $userstatic->lastname = $obj->lastname; - $userstatic->firstname = $obj->firstname; - $userstatic->email = $obj->user_email; - $userstatic->statut = $obj->user_statut; - $userstatic->entity = $obj->entity; - $userstatic->photo = $obj->photo; - $userstatic->office_phone = $obj->office_phone; - $userstatic->office_fax = $obj->office_fax; - $userstatic->user_mobile = $obj->user_mobile; - $userstatic->job = $obj->job; - $userstatic->gender = $obj->gender; if (!empty($arrayfields['u.login']['checked'])) { print ''; From 36b0b7f03cd4cb380683466a884067d4d3874afd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 10 Feb 2023 16:15:05 +0100 Subject: [PATCH 063/607] Fix somes subrequests inside the loop --- htdocs/core/class/commonobject.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 38202a0938a..9eb66fa0745 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -1360,7 +1360,7 @@ abstract class CommonObject * @param array $arrayoftcids Array with ID of type of contacts. If we provide this, we can make a ec.fk_c_type_contact in ($arrayoftcids) to avoid link on tc table. TODO Not implemented. * @return array|int Array of contacts, -1 if error */ - public function liste_contact($statusoflink = -1, $source = 'external', $list = 0, $code = '', $status = -1, $typecontectids = array()) + public function liste_contact($statusoflink = -1, $source = 'external', $list = 0, $code = '', $status = -1, $arrayoftcids = array()) { // phpcs:enable global $langs; From a3d32fc7eb8bb0f7c590552aefb8ba43cb0bcfeb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 10 Feb 2023 16:53:16 +0100 Subject: [PATCH 064/607] Trans --- htdocs/categories/viewcat.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/categories/viewcat.php b/htdocs/categories/viewcat.php index 6f09e734406..f494dddb082 100644 --- a/htdocs/categories/viewcat.php +++ b/htdocs/categories/viewcat.php @@ -1005,7 +1005,7 @@ if ($type == Categorie::TYPE_PROJECT) { print ''; print ''; print ''; print ''; From 0235e24e0e6d1f01e8d9b8097a35aacad4fa67e3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 10 Feb 2023 17:54:07 +0100 Subject: [PATCH 065/607] Fix css multiseclect --- htdocs/core/class/html.form.class.php | 9 +++++++-- htdocs/theme/eldy/global.inc.php | 8 ++++++++ htdocs/theme/md/style.css.php | 8 ++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 6f0023548b9..1a15abe53bc 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -8408,8 +8408,13 @@ class Form } } - // Try also magic suggest - $out .= ''."\n"; if (is_array($array) && !empty($array)) { if ($value_as_key) { $array = array_combine($array, $array); diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 8f7d4b1ef1e..12d068168d0 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -6514,6 +6514,14 @@ ul.select2-results__options li { font-size: 0.95em; } +select.multiselectononeline { + padding: 0; + vertical-align: middle; + height: 28px !important; + opacity: 0; + /* width: 1px !important; */ +} + @media only screen and (min-width: 767px) { /* CSS to have the dropdown boxes larger that the input search area */ diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 6d56e452898..20349be0b4e 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -6421,6 +6421,14 @@ ul.select2-results__options li { font-size: 0.95em; } +select.multiselectononeline { + padding: 0; + vertical-align: middle; + height: 28px !important; + opacity: 0; + /* width: 1px !important; */ +} + @media only screen and (min-width: 767px) { /* CSS to have the dropdown boxes larger that the input search area */ From c21be771f87ea516ede1f2cd3cebccc8e614a295 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 10 Feb 2023 18:05:05 +0100 Subject: [PATCH 066/607] CSS --- htdocs/theme/eldy/global.inc.php | 1 + htdocs/theme/md/style.css.php | 1 + 2 files changed, 2 insertions(+) diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 12d068168d0..23bb38e8d5a 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -6517,6 +6517,7 @@ ul.select2-results__options li { select.multiselectononeline { padding: 0; vertical-align: middle; + min-height: unset; height: 28px !important; opacity: 0; /* width: 1px !important; */ diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 20349be0b4e..8c2934fb227 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -6424,6 +6424,7 @@ ul.select2-results__options li { select.multiselectononeline { padding: 0; vertical-align: middle; + min-height: unset; height: 28px !important; opacity: 0; /* width: 1px !important; */ From 211bda455d18e9e4d95d24097fe1b534202e026f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 10 Feb 2023 19:00:44 +0100 Subject: [PATCH 067/607] Debug v17 --- htdocs/core/js/lib_notification.js.php | 35 ++++++++++++++++++-------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/htdocs/core/js/lib_notification.js.php b/htdocs/core/js/lib_notification.js.php index d7e1932ca27..c33dbe2a3bd 100644 --- a/htdocs/core/js/lib_notification.js.php +++ b/htdocs/core/js/lib_notification.js.php @@ -66,6 +66,8 @@ print "jQuery(document).ready(function () {\n"; print ' var nowtime = Date.now();'; print ' var time_auto_update = '.max(1, getDolGlobalInt('MAIN_BROWSER_NOTIFICATION_FREQUENCY')).';'."\n"; // Always defined print ' var time_js_next_test;'."\n"; +print ' var dolnotif_nb_test_for_page = 0;'."\n"; +print ' var dolnotif_idinterval = null;'."\n"; ?> /* Check if Notification is supported */ @@ -82,7 +84,7 @@ if ("Notification" in window) { //var time_first_execution = (time_auto_update + (time_js_next_test - nowtime)) * 1000; //need milliseconds var time_first_execution = global->MAIN_BROWSER_NOTIFICATION_CHECK_FIRST_EXECUTION) ? 0 : $conf->global->MAIN_BROWSER_NOTIFICATION_CHECK_FIRST_EXECUTION); ?>; - setTimeout(first_execution, time_first_execution * 1000); + setTimeout(first_execution, time_first_execution * 1000); // Launch a first execution after a time_first_execution delay time_js_next_test = nowtime + time_first_execution; console.log("Launch browser notif check: setTimeout is set to launch 'first_execution' function after a wait of time_first_execution="+time_first_execution+". nowtime (time php page generation) = "+nowtime+" time_js_next_check = "+time_js_next_test); } else { @@ -91,14 +93,16 @@ if ("Notification" in window) { function first_execution() { - console.log("Call first_execution then set repeat time to time_auto_update = MAIN_BROWSER_NOTIFICATION_FREQUENCY = "+time_auto_update); - check_events(); //one check before setting the new time for other checks - setInterval(check_events, time_auto_update * 1000); // Set new time to run next check events + console.log("Call first_execution"); + result = check_events(); //one check before setting the new time for other checks + if (result > 0) { + console.log("Program a repeated run with a time_auto_update = MAIN_BROWSER_NOTIFICATION_FREQUENCY = "+time_auto_update+"s"); + dolnotif_idinterval = setInterval(check_events, time_auto_update * 1000); // Set new time to run next check events. time_auto_update=nb of seconds + } } function check_events() { - if (Notification.permission === "granted") - { + if (Notification.permission === "granted") { var currentToken = 'notrequired'; const allMeta = document.getElementsByTagName("meta"); for (let i = 0; i < allMeta.length; i++) { @@ -108,7 +112,9 @@ function check_events() { } } time_js_next_test += time_auto_update; - console.log("Call ajax to check events with time_js_next_test = "+time_js_next_test); + dolnotif_nb_test_for_page += 1; + + console.log("Call ajax to check events with time_js_next_test = "+time_js_next_test+" dolnotif_nb_test_for_page="+dolnotif_nb_test_for_page); $.ajax("", { type: "post", // Usually post or get @@ -188,10 +194,17 @@ function check_events() { } } }); - } - else - { - console.log("Cancel check_events. Useless because javascript Notification.permission is "+Notification.permission+" (blocked manualy or web site is not https)."); + + if (dolnotif_nb_test_for_page > 10) { + console.log("We did "+dolnotif_nb_test_for_page+" consecutive test on this page. We stop checking now from here by clearing dolnotif_idinterval="+dolnotif_idinterval); + clearInterval(dolnotif_idinterval); + } + + return 1; + } else { + console.log("Cancel check_events and timer. Useless because javascript Notification.permission is "+Notification.permission+" (blocked manualy or web site is not https)."); + + return 0; } } Date: Fri, 10 Feb 2023 19:08:03 +0100 Subject: [PATCH 068/607] Log --- htdocs/core/js/lib_notification.js.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/js/lib_notification.js.php b/htdocs/core/js/lib_notification.js.php index c33dbe2a3bd..2659b812bc6 100644 --- a/htdocs/core/js/lib_notification.js.php +++ b/htdocs/core/js/lib_notification.js.php @@ -93,7 +93,7 @@ if ("Notification" in window) { function first_execution() { - console.log("Call first_execution"); + console.log("Call first_execution of check_events()"); result = check_events(); //one check before setting the new time for other checks if (result > 0) { console.log("Program a repeated run with a time_auto_update = MAIN_BROWSER_NOTIFICATION_FREQUENCY = "+time_auto_update+"s"); @@ -190,12 +190,12 @@ function check_events() { data: { time_js_next_test: time_js_next_test, token: currentToken } }); } else { - console.log("No reminder to do found, next search at "+time_js_next_test); + console.log("No remind to do found, next search at "+time_js_next_test); } } }); - if (dolnotif_nb_test_for_page > 10) { + if (dolnotif_nb_test_for_page > 5) { console.log("We did "+dolnotif_nb_test_for_page+" consecutive test on this page. We stop checking now from here by clearing dolnotif_idinterval="+dolnotif_idinterval); clearInterval(dolnotif_idinterval); } From 582cb35ae4fed24edf935950788ee7537174f252 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 10 Feb 2023 19:15:14 +0100 Subject: [PATCH 069/607] Fix allow time to answer notification permission --- htdocs/core/js/lib_notification.js.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/js/lib_notification.js.php b/htdocs/core/js/lib_notification.js.php index 2659b812bc6..9724dc8c447 100644 --- a/htdocs/core/js/lib_notification.js.php +++ b/htdocs/core/js/lib_notification.js.php @@ -96,7 +96,7 @@ function first_execution() { console.log("Call first_execution of check_events()"); result = check_events(); //one check before setting the new time for other checks if (result > 0) { - console.log("Program a repeated run with a time_auto_update = MAIN_BROWSER_NOTIFICATION_FREQUENCY = "+time_auto_update+"s"); + console.log("check_events() is scheduled as a repeated task with a time_auto_update = MAIN_BROWSER_NOTIFICATION_FREQUENCY = "+time_auto_update+"s"); dolnotif_idinterval = setInterval(check_events, time_auto_update * 1000); // Set new time to run next check events. time_auto_update=nb of seconds } } @@ -204,7 +204,7 @@ function check_events() { } else { console.log("Cancel check_events and timer. Useless because javascript Notification.permission is "+Notification.permission+" (blocked manualy or web site is not https)."); - return 0; + return 2; // We return a positive so the repeated check will done even if authroization is not yet allowed may be after this check) } } Date: Fri, 10 Feb 2023 19:15:54 +0100 Subject: [PATCH 070/607] Log --- htdocs/core/js/lib_notification.js.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/js/lib_notification.js.php b/htdocs/core/js/lib_notification.js.php index 9724dc8c447..67423200405 100644 --- a/htdocs/core/js/lib_notification.js.php +++ b/htdocs/core/js/lib_notification.js.php @@ -202,7 +202,7 @@ function check_events() { return 1; } else { - console.log("Cancel check_events and timer. Useless because javascript Notification.permission is "+Notification.permission+" (blocked manualy or web site is not https)."); + console.log("Cancel check_events. Check is useless because javascript Notification.permission is "+Notification.permission+" (blocked manualy or web site is not https)."); return 2; // We return a positive so the repeated check will done even if authroization is not yet allowed may be after this check) } From 78201454e8e1fe8cc14a52b771e1e44d832d3b2c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 10 Feb 2023 19:19:11 +0100 Subject: [PATCH 071/607] Fix stop of timer is done also when checks fail --- htdocs/core/js/lib_notification.js.php | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/htdocs/core/js/lib_notification.js.php b/htdocs/core/js/lib_notification.js.php index 67423200405..102f760122a 100644 --- a/htdocs/core/js/lib_notification.js.php +++ b/htdocs/core/js/lib_notification.js.php @@ -102,6 +102,9 @@ function first_execution() { } function check_events() { + var result = 0; + dolnotif_nb_test_for_page += 1; + if (Notification.permission === "granted") { var currentToken = 'notrequired'; const allMeta = document.getElementsByTagName("meta"); @@ -112,7 +115,6 @@ function check_events() { } } time_js_next_test += time_auto_update; - dolnotif_nb_test_for_page += 1; console.log("Call ajax to check events with time_js_next_test = "+time_js_next_test+" dolnotif_nb_test_for_page="+dolnotif_nb_test_for_page); @@ -195,17 +197,19 @@ function check_events() { } }); - if (dolnotif_nb_test_for_page > 5) { - console.log("We did "+dolnotif_nb_test_for_page+" consecutive test on this page. We stop checking now from here by clearing dolnotif_idinterval="+dolnotif_idinterval); - clearInterval(dolnotif_idinterval); - } - - return 1; + result = 1; } else { - console.log("Cancel check_events. Check is useless because javascript Notification.permission is "+Notification.permission+" (blocked manualy or web site is not https)."); + console.log("Cancel check_events() with dolnotif_nb_test_for_page="+dolnotif_nb_test_for_page+". Check is useless because javascript Notification.permission is "+Notification.permission+" (blocked manualy or web site is not https)."); - return 2; // We return a positive so the repeated check will done even if authroization is not yet allowed may be after this check) + result = 2; // We return a positive so the repeated check will done even if authroization is not yet allowed may be after this check) } + + if (dolnotif_nb_test_for_page > 5) { + console.log("We did "+dolnotif_nb_test_for_page+" consecutive test on this page. We stop checking now from here by clearing dolnotif_idinterval="+dolnotif_idinterval); + clearInterval(dolnotif_idinterval); + } + + return result; } Date: Fri, 10 Feb 2023 19:24:50 +0100 Subject: [PATCH 072/607] Fix end of loop --- htdocs/core/js/lib_notification.js.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/js/lib_notification.js.php b/htdocs/core/js/lib_notification.js.php index 102f760122a..c2f7096432f 100644 --- a/htdocs/core/js/lib_notification.js.php +++ b/htdocs/core/js/lib_notification.js.php @@ -204,7 +204,7 @@ function check_events() { result = 2; // We return a positive so the repeated check will done even if authroization is not yet allowed may be after this check) } - if (dolnotif_nb_test_for_page > 5) { + if (dolnotif_nb_test_for_page >= 5) { console.log("We did "+dolnotif_nb_test_for_page+" consecutive test on this page. We stop checking now from here by clearing dolnotif_idinterval="+dolnotif_idinterval); clearInterval(dolnotif_idinterval); } From 23b4e999fbeabad0eba22b782cf497e6a2aacbfa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 10 Feb 2023 19:44:34 +0100 Subject: [PATCH 073/607] Better sql for unique index --- htdocs/install/mysql/migration/15.0.0-16.0.0.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/migration/15.0.0-16.0.0.sql b/htdocs/install/mysql/migration/15.0.0-16.0.0.sql index bee0477665f..f4b7689d6df 100644 --- a/htdocs/install/mysql/migration/15.0.0-16.0.0.sql +++ b/htdocs/install/mysql/migration/15.0.0-16.0.0.sql @@ -688,7 +688,7 @@ ALTER TABLE llx_actioncomm MODIFY COLUMN note mediumtext; DELETE FROM llx_boxes WHERE box_id IN (select rowid FROM llx_boxes_def WHERE file IN ('box_bom.php@bom', 'box_bom.php', 'box_members.php', 'box_last_modified_ticket', 'box_members_last_subscriptions', 'box_members_last_modified', 'box_members_subscriptions_by_year')); DELETE FROM llx_boxes_def WHERE file IN ('box_bom.php@bom', 'box_bom.php', 'box_members.php', 'box_last_modified_ticket', 'box_members_last_subscriptions', 'box_members_last_modified', 'box_members_subscriptions_by_year'); -ALTER TABLE llx_takepos_floor_tables ADD UNIQUE uk_takepos_floor_tables (entity,label); +ALTER TABLE llx_takepos_floor_tables ADD UNIQUE INDEX uk_takepos_floor_tables (entity,label); ALTER TABLE llx_partnership ADD COLUMN url_to_check varchar(255); ALTER TABLE llx_c_partnership_type ADD COLUMN keyword varchar(128); From ba1d3c9d8c6d56c691d4f36054aa446a12184bc5 Mon Sep 17 00:00:00 2001 From: Benjamin Sonntag Date: Fri, 10 Feb 2023 19:49:51 +0100 Subject: [PATCH 074/607] Update llx_accounting_account_fr.sql If you import this by hand, a key violation occurs. the 3352 account is named 3552, which collides which the 3552 below. I propose to fix that easily ;) --- htdocs/install/mysql/data/llx_accounting_account_fr.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/data/llx_accounting_account_fr.sql b/htdocs/install/mysql/data/llx_accounting_account_fr.sql index 4520969f82b..4c24d63e5b1 100644 --- a/htdocs/install/mysql/data/llx_accounting_account_fr.sql +++ b/htdocs/install/mysql/data/llx_accounting_account_fr.sql @@ -824,7 +824,7 @@ INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, acc INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 5317,'PCG14-DEV','STOCK','3312',5315,'Produits en cours P 2','1'); INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 5318,'PCG14-DEV','STOCK','335',5314,'Travaux en cours','1'); INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 5319,'PCG14-DEV','STOCK','3351',5318,'Travaux en cours T 1','1'); -INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 5320,'PCG14-DEV','STOCK','3552',5318,'Travaux en cours T 2','1'); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 5320,'PCG14-DEV','STOCK','3352',5318,'Travaux en cours T 2','1'); INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 5321,'PCG14-DEV','STOCK','34',5969,'En-cours de production de services','1'); INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 5322,'PCG14-DEV','STOCK','341',5321,'Etudes en cours','1'); INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 5323,'PCG14-DEV','STOCK','3411',5322,'Etudes en cours E 1','1'); From 9c706061bea8a5011dd273edee6bd815c3fe49aa Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Sat, 11 Feb 2023 08:48:09 +0100 Subject: [PATCH 075/607] FIX Object of class LDAP\Connection could not be converted to string --- htdocs/core/class/ldap.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/ldap.class.php b/htdocs/core/class/ldap.class.php index 7b3c6c4ac2c..847a1bf32e3 100644 --- a/htdocs/core/class/ldap.class.php +++ b/htdocs/core/class/ldap.class.php @@ -1058,7 +1058,7 @@ class Ldap if (is_array($attributeArray)) { // Return list with required fields $attributeArray = array_values($attributeArray); // This is to force to have index reordered from 0 (not make ldap_search fails) - dol_syslog(get_class($this)."::getRecords connection=".$this->connection." userDn=".$userDn." filter=".$filter." attributeArray=(".join(',', $attributeArray).")"); + dol_syslog(get_class($this)."::getRecords connection=".get_resource_type($this->connection)." userDn=".$userDn." filter=".$filter." attributeArray=(".join(',', $attributeArray).")"); //var_dump($attributeArray); $this->result = @ldap_search($this->connection, $userDn, $filter, $attributeArray); } else { From 8a091de9d79e0c12608626a1099e4a45a571abc7 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Sat, 11 Feb 2023 10:06:18 +0100 Subject: [PATCH 076/607] fix : Warning: Undefined property: stdClass:: in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/compta/facture/class/facture.class.php on line 1264 --- htdocs/compta/facture/class/facture.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 9b93721ca6a..161087a3bf9 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -1261,7 +1261,7 @@ class Facture extends CommonInvoice $object->ref_client = ''; $object->close_code = ''; $object->close_note = ''; - if ($conf->global->MAIN_DONT_KEEP_NOTE_ON_CLONING == 1) { + if (getDolGlobalInt('MAIN_DONT_KEEP_NOTE_ON_CLONING') == 1) { $object->note_private = ''; $object->note_public = ''; } From 8d531d92df2db14f1340563ff595015e81a740a3 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Sat, 11 Feb 2023 10:20:30 +0100 Subject: [PATCH 077/607] fix : typo and translation --- htdocs/compta/facture/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index 3aa43556e43..a9d9e040ec8 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -4327,7 +4327,7 @@ if ($action == 'create') { array('type' => 'other', 'name' => 'socid', 'label' => $langs->trans("SelectThirdParty"), 'value' => $form->select_company($object->socid, 'socid', '(s.client=1 OR s.client=2 OR s.client=3)', 1)), array('type' => 'date', 'name' => 'newdate', 'label' => $langs->trans("Date"), 'value' => dol_now()) ); - // Ask confirmatio to clone + // Request confirmation to clone $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?facid='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneInvoice', $object->ref), 'confirm_clone', $formquestion, 'yes', 1, 250); } From 4a8223ae297b54292f3eab5a3085c4268ea35d99 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Sat, 11 Feb 2023 11:59:48 +0100 Subject: [PATCH 078/607] FIX look and feel --- htdocs/core/class/html.form.class.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 1a15abe53bc..a672709cc48 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -5115,10 +5115,12 @@ class Form $i = 0; foreach ($input['values'] as $selkey => $selval) { $more .= '
'; - if ($i == 0) { - $more .= '
'.$input['label'].'
'; - } else { - $more .= '
 
'; + if (isset($input['label'])) { + if ($i == 0) { + $more .= '
'.$input['label'].'
'; + } else { + $more .= '
 
'; + } } $more .= '
Date: Sat, 11 Feb 2023 12:28:23 +0100 Subject: [PATCH 079/607] Debug v17 --- htdocs/core/lib/functions.lib.php | 10 ++++--- htdocs/core/menus/standard/eldy.lib.php | 2 +- .../modules/mailings/contacts1.modules.php | 2 +- htdocs/fourn/facture/card.php | 14 ++++----- htdocs/hrm/admin/job_extrafields.php | 2 +- htdocs/hrm/class/evaluation.class.php | 2 +- htdocs/hrm/class/position.class.php | 2 +- htdocs/hrm/compare.php | 2 +- htdocs/hrm/evaluation_agenda.php | 2 +- htdocs/hrm/evaluation_card.php | 2 +- htdocs/hrm/evaluation_contact.php | 2 +- htdocs/hrm/evaluation_document.php | 2 +- htdocs/hrm/evaluation_note.php | 2 +- htdocs/hrm/job_list.php | 2 +- htdocs/hrm/lib/hrm_job.lib.php | 2 +- htdocs/hrm/position_agenda.php | 2 +- htdocs/hrm/position_card.php | 2 +- htdocs/hrm/position_document.php | 2 +- htdocs/hrm/position_note.php | 2 +- htdocs/langs/en_US/hrm.lang | 6 ++-- htdocs/user/list.php | 30 +++++++++++++++++-- 21 files changed, 60 insertions(+), 34 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 37949215357..0f42862b724 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4098,7 +4098,8 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'filter', 'file-code', 'file-export', 'file-import', 'file-upload', 'autofill', 'folder', 'folder-open', 'folder-plus', 'gears', 'generate', 'globe', 'globe-americas', 'graph', 'grip', 'grip_title', 'group', 'help', 'holiday', - 'images', 'incoterm', 'info', 'intervention', 'inventory', 'intracommreport', 'knowledgemanagement', + 'images', 'incoterm', 'info', 'intervention', 'inventory', 'intracommreport', 'jobprofile', + 'knowledgemanagement', 'label', 'language', 'line', 'link', 'list', 'list-alt', 'listlight', 'loan', 'lock', 'lot', 'long-arrow-alt-right', 'margin', 'map-marker-alt', 'member', 'meeting', 'money-bill-alt', 'movement', 'mrp', 'note', 'next', 'off', 'on', 'order', @@ -4113,7 +4114,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'technic', 'ticket', 'error', 'warning', 'recent', 'reception', 'recruitmentcandidature', 'recruitmentjobposition', 'replacement', 'resource', 'recurring','rss', - 'shapes', 'square', 'stop-circle', 'supplier', 'supplier_proposal', 'supplier_order', 'supplier_invoice', + 'shapes', 'skill', 'square', 'stop-circle', 'supplier', 'supplier_proposal', 'supplier_order', 'supplier_invoice', 'timespent', 'title_setup', 'title_accountancy', 'title_bank', 'title_hrm', 'title_agenda', 'uncheck', 'url', 'user-cog', 'user-injured', 'user-md', 'vat', 'website', 'workstation', 'webhook', 'world', 'private', 'conferenceorbooth', 'eventorganization', @@ -4145,7 +4146,8 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'email'=>'at', 'establishment'=>'building', 'edit'=>'pencil-alt', 'entity'=>'globe', 'graph'=>'chart-line', 'grip_title'=>'arrows-alt', 'grip'=>'arrows-alt', 'help'=>'question-circle', 'generic'=>'file', 'holiday'=>'umbrella-beach', - 'info'=>'info-circle', 'inventory'=>'boxes', 'intracommreport'=>'globe-europe', 'knowledgemanagement'=>'ticket-alt', 'label'=>'layer-group', 'line'=>'bars', 'loan'=>'money-bill-alt', + 'info'=>'info-circle', 'inventory'=>'boxes', 'intracommreport'=>'globe-europe', 'jobprofile'=>'cogs', + 'knowledgemanagement'=>'ticket-alt', 'label'=>'layer-group', 'line'=>'bars', 'loan'=>'money-bill-alt', 'member'=>'user-alt', 'meeting'=>'chalkboard-teacher', 'mrp'=>'cubes', 'next'=>'arrow-alt-circle-right', 'trip'=>'wallet', 'expensereport'=>'wallet', 'group'=>'users', 'movement'=>'people-carry', 'sign-out'=>'sign-out-alt', @@ -4161,7 +4163,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'resize'=>'crop', 'supplier_order'=>'dol-order_supplier', 'supplier_proposal'=>'file-signature', 'refresh'=>'redo', 'region'=>'map-marked', 'replacement'=>'exchange-alt', 'resource'=>'laptop-house', 'recurring'=>'history', 'service'=>'concierge-bell', - 'state'=>'map-marked-alt', 'security'=>'key', 'salary'=>'wallet', 'shipment'=>'dolly', 'stock'=>'box-open', 'stats' => 'chart-bar', 'split'=>'code-branch', 'stripe'=>'stripe-s', + 'skill'=>'shapes', 'state'=>'map-marked-alt', 'security'=>'key', 'salary'=>'wallet', 'shipment'=>'dolly', 'stock'=>'box-open', 'stats' => 'chart-bar', 'split'=>'code-branch', 'stripe'=>'stripe-s', 'supplier'=>'building', 'technic'=>'cogs', 'timespent'=>'clock', 'title_setup'=>'tools', 'title_accountancy'=>'money-check-alt', 'title_bank'=>'university', 'title_hrm'=>'umbrella-beach', 'title_agenda'=>'calendar-alt', diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index d04cf9edc1a..b534a998107 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -2270,7 +2270,7 @@ function get_left_menu_hrm($mainmenu, &$newmenu, $usemenuhider = 1, $leftmenu = //$newmenu->add("/hrm/skill_list.php?mainmenu=hrm&leftmenu=hrm_sm", $langs->trans("List"), 1, $user->hasRight('hrm', 'all', 'read')); // Job (Description of work to do and skills required) - $newmenu->add("/hrm/job_list.php?mainmenu=hrm&leftmenu=hrm_sm", $langs->trans("JobsPosition"), 1, $user->hasRight('hrm', 'all', 'read'), '', $mainmenu, 'hrm_sm', 0, '', '', '', img_picto('', 'technic', 'class="paddingright pictofixedwidth"')); + $newmenu->add("/hrm/job_list.php?mainmenu=hrm&leftmenu=hrm_sm", $langs->trans("JobsProfiles"), 1, $user->hasRight('hrm', 'all', 'read'), '', $mainmenu, 'hrm_sm', 0, '', '', '', img_picto('', 'technic', 'class="paddingright pictofixedwidth"')); //$newmenu->add("/hrm/job_card.php?mainmenu=hrm&leftmenu=hrm_sm&action=create", $langs->transnoentities("NewObject", $langs->trans("Job")), 1, $user->hasRight('hrm', 'all', 'write')); //$newmenu->add("/hrm/job_list.php?mainmenu=hrm&leftmenu=hrm_sm", $langs->trans("List"), 1, $user->hasRight('hrm', 'all', 'read')); diff --git a/htdocs/core/modules/mailings/contacts1.modules.php b/htdocs/core/modules/mailings/contacts1.modules.php index 36be5bf40b3..71cbe6e6199 100644 --- a/htdocs/core/modules/mailings/contacts1.modules.php +++ b/htdocs/core/modules/mailings/contacts1.modules.php @@ -463,7 +463,7 @@ class mailing_contacts1 extends MailingTargets 'other' => ($langs->transnoentities("ThirdParty").'='.$obj->companyname).';'. ($langs->transnoentities("UserTitle").'='.($obj->civility_id ? $langs->transnoentities("Civility".$obj->civility_id) : '')).';'. - ($langs->transnoentities("JobPosition").'='.$obj->jobposition), + ($langs->transnoentities("PostOrFunction").'='.$obj->jobposition), 'source_url' => $this->url($obj->id), 'source_id' => $obj->id, 'source_type' => 'contact' diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 7eedcc29403..246f65c19f9 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -2199,7 +2199,7 @@ if ($action == 'create') { // Standard invoice print '
'; $tmp = ' '; - $desc = $form->textwithpicto($tmp.$langs->trans("InvoiceStandardAsk"), $langs->transnoentities("InvoiceStandardDesc"), 1, 'help', '', 0, 3); + $desc = $form->textwithpicto($tmp.'', $langs->transnoentities("InvoiceStandardDesc"), 1, 'help', '', 0, 3); print $desc; print '
'; @@ -2377,7 +2377,7 @@ if ($action == 'create') { }); }); '; - $text = $tmp.$langs->transnoentities("InvoiceAvoirAsk").' '; + $text = $tmp.' '; // $text.=''; $text .= '
'; - // Payment term print ''; + // Due date + print ''; + // Payment mode print '
'; - print $langs->trans("AddProjectIntoCategory").'  '; + print $langs->trans("AddObjectIntoCategory").'  '; $form->selectProjects('', 'elemid'); print '
'.$langs->trans('DateMaxPayment').''; - print $form->selectDate($datedue, 'ech', '', '', '', "add", 1, 1); - print '
'.$langs->trans('PaymentConditionsShort').''; print $form->getSelectConditionsPaiements(GETPOSTISSET('cond_reglement_id') ?GETPOST('cond_reglement_id', 'int') : $cond_reglement_id, 'cond_reglement_id'); print '
'.$langs->trans('DateMaxPayment').''; + print $form->selectDate($datedue, 'ech', '', '', '', "add", 1, 1); + print '
'.$langs->trans('PaymentMode').''; print img_picto('', 'bank', 'class="pictofixedwidth"'); diff --git a/htdocs/hrm/admin/job_extrafields.php b/htdocs/hrm/admin/job_extrafields.php index 6ac0773c00f..8b30b1c7051 100644 --- a/htdocs/hrm/admin/job_extrafields.php +++ b/htdocs/hrm/admin/job_extrafields.php @@ -67,7 +67,7 @@ require DOL_DOCUMENT_ROOT.'/core/actions_extrafields.inc.php'; * View */ -$textobject = $langs->transnoentitiesnoconv("JobPosition"); +$textobject = $langs->transnoentitiesnoconv("JobProfile"); $help_url = ''; $page_name = "HrmSetup"; diff --git a/htdocs/hrm/class/evaluation.class.php b/htdocs/hrm/class/evaluation.class.php index 51f8c8bc985..039888258b8 100644 --- a/htdocs/hrm/class/evaluation.class.php +++ b/htdocs/hrm/class/evaluation.class.php @@ -119,7 +119,7 @@ class Evaluation extends CommonObject 'status' => array('type'=>'smallint', 'label'=>'Status', 'enabled'=>'1', 'position'=>1000, 'notnull'=>1, 'default'=>0, 'visible'=>5, 'index'=>1, 'arrayofkeyval'=>array('0'=>'Draft', '1'=>'Validated', '6' => 'Closed'),), 'date_eval' => array('type'=>'date', 'label'=>'DateEval', 'enabled'=>'1', 'position'=>502, 'notnull'=>1, 'visible'=>1,), 'fk_user' => array('type'=>'integer:User:user/class/user.class.php:0', 'label'=>'User', 'enabled'=>'1', 'position'=>504, 'notnull'=>1, 'visible'=>1,), - 'fk_job' => array('type'=>'integer:Job:/hrm/class/job.class.php', 'label'=>'JobPosition', 'enabled'=>'1', 'position'=>505, 'notnull'=>1, 'visible'=>1,), + 'fk_job' => array('type'=>'integer:Job:/hrm/class/job.class.php', 'label'=>'JobProfile', 'enabled'=>'1', 'position'=>505, 'notnull'=>1, 'visible'=>1,), ); public $rowid; public $ref; diff --git a/htdocs/hrm/class/position.class.php b/htdocs/hrm/class/position.class.php index b685147a9b9..27c7643abe5 100644 --- a/htdocs/hrm/class/position.class.php +++ b/htdocs/hrm/class/position.class.php @@ -110,7 +110,7 @@ class Position extends CommonObject 'tms' => array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>'1', 'position'=>501, 'notnull'=>0, 'visible'=>-2,), 'fk_contrat' => array('type'=>'integer:Contrat:contrat/class/contrat.class.php', 'label'=>'fk_contrat', 'enabled'=>'1', 'position'=>50, 'notnull'=>0, 'visible'=>0,), 'fk_user' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'Employee', 'enabled'=>'1', 'position'=>55, 'notnull'=>1, 'visible'=>1, 'default'=>0), - 'fk_job' => array('type'=>'integer:Job:/hrm/class/job.class.php', 'label'=>'JobPosition', 'enabled'=>'1', 'position'=>56, 'notnull'=>1, 'visible'=>1,), + 'fk_job' => array('type'=>'integer:Job:/hrm/class/job.class.php', 'label'=>'JobProfile', 'enabled'=>'1', 'position'=>56, 'notnull'=>1, 'visible'=>1,), 'date_start' => array('type'=>'date', 'label'=>'DateStart', 'enabled'=>'1', 'position'=>51, 'notnull'=>1, 'visible'=>1,), 'date_end' => array('type'=>'date', 'label'=>'DateEnd', 'enabled'=>'1', 'position'=>52, 'notnull'=>0, 'visible'=>1,), 'abort_comment' => array('type'=>'varchar(255)', 'label'=>'AbandonmentComment', 'enabled'=>'getDolGlobalInt("HRM_JOB_POSITON_ENDING_COMMENT")', 'position'=>502, 'notnull'=>0, 'visible'=>1,), diff --git a/htdocs/hrm/compare.php b/htdocs/hrm/compare.php index beee61ca6fa..a9fbb3a1903 100644 --- a/htdocs/hrm/compare.php +++ b/htdocs/hrm/compare.php @@ -155,7 +155,7 @@ $fk_usergroup1 = GETPOST('fk_usergroup1'); $TJobs[$j->id] = $j->label; } - print $form->selectarray('fk_job', $TJobs, $fk_job, 1); + print img_picto('', 'jobprofile', 'class="pictofixedwidth"').$form->selectarray('fk_job', $TJobs, $fk_job, 1); ?>
diff --git a/htdocs/hrm/evaluation_agenda.php b/htdocs/hrm/evaluation_agenda.php index cc314bd9bce..31607e01b28 100644 --- a/htdocs/hrm/evaluation_agenda.php +++ b/htdocs/hrm/evaluation_agenda.php @@ -158,7 +158,7 @@ if ($object->id > 0) { $morehtmlref .= '
'.$langs->trans('Employee').' : '.$u_position->getNomUrl(1); $job = new Job($db); $job->fetch($object->fk_job); - $morehtmlref .= '
'.$langs->trans('JobPosition').' : '.$job->getNomUrl(1); + $morehtmlref .= '
'.$langs->trans('JobProfile').' : '.$job->getNomUrl(1); $morehtmlref .= '
'; diff --git a/htdocs/hrm/evaluation_card.php b/htdocs/hrm/evaluation_card.php index 101873a69e4..8f513d654f3 100644 --- a/htdocs/hrm/evaluation_card.php +++ b/htdocs/hrm/evaluation_card.php @@ -410,7 +410,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $morehtmlref .= '
'.$langs->trans('Employee').' : '.$u_position->getNomUrl(1); $job = new Job($db); $job->fetch($object->fk_job); - $morehtmlref .= '
'.$langs->trans('JobPosition').' : '.$job->getNomUrl(1); + $morehtmlref .= '
'.$langs->trans('JobProfile').' : '.$job->getNomUrl(1); $morehtmlref .= '
'; diff --git a/htdocs/hrm/evaluation_contact.php b/htdocs/hrm/evaluation_contact.php index 4ea2e8e81be..c96f562afc7 100644 --- a/htdocs/hrm/evaluation_contact.php +++ b/htdocs/hrm/evaluation_contact.php @@ -145,7 +145,7 @@ if ($object->id) { $morehtmlref .= '
'.$langs->trans('Employee').' : '.$u_position->getNomUrl(1); $job = new Job($db); $job->fetch($object->fk_job); - $morehtmlref .= '
'.$langs->trans('JobPosition').' : '.$job->getNomUrl(1); + $morehtmlref .= '
'.$langs->trans('JobProfile').' : '.$job->getNomUrl(1); $morehtmlref .= '
'; dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref, '', 0, '', '', 1); diff --git a/htdocs/hrm/evaluation_document.php b/htdocs/hrm/evaluation_document.php index 84bc6023291..7935ea7602c 100644 --- a/htdocs/hrm/evaluation_document.php +++ b/htdocs/hrm/evaluation_document.php @@ -138,7 +138,7 @@ if ($object->id) { $morehtmlref .= '
'.$langs->trans('Employee').' : '.$u_position->getNomUrl(1); $job = new Job($db); $job->fetch($object->fk_job); - $morehtmlref .= '
'.$langs->trans('JobPosition').' : '.$job->getNomUrl(1); + $morehtmlref .= '
'.$langs->trans('JobProfile').' : '.$job->getNomUrl(1); $morehtmlref .= '
'; dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref); diff --git a/htdocs/hrm/evaluation_note.php b/htdocs/hrm/evaluation_note.php index 3f0d41e946a..1164a9642b1 100644 --- a/htdocs/hrm/evaluation_note.php +++ b/htdocs/hrm/evaluation_note.php @@ -113,7 +113,7 @@ if ($id > 0 || !empty($ref)) { $morehtmlref .= '
'.$langs->trans('Employee').' : '.$u_position->getNomUrl(1); $job = new Job($db); $job->fetch($object->fk_job); - $morehtmlref .= '
'.$langs->trans('JobPosition').' : '.$job->getNomUrl(1); + $morehtmlref .= '
'.$langs->trans('JobProfile').' : '.$job->getNomUrl(1); $morehtmlref .= '
'; diff --git a/htdocs/hrm/job_list.php b/htdocs/hrm/job_list.php index 6cb1a4bf62c..0261c968d4c 100644 --- a/htdocs/hrm/job_list.php +++ b/htdocs/hrm/job_list.php @@ -207,7 +207,7 @@ $now = dol_now(); //$help_url="EN:Module_Job|FR:Module_Job_FR|ES:Módulo_Job"; $help_url = ''; -$title = $langs->trans("JobsPosition"); +$title = $langs->trans("JobsProfiles"); $morejs = array(); $morecss = array(); diff --git a/htdocs/hrm/lib/hrm_job.lib.php b/htdocs/hrm/lib/hrm_job.lib.php index 6a948b00439..cff07ef5e67 100644 --- a/htdocs/hrm/lib/hrm_job.lib.php +++ b/htdocs/hrm/lib/hrm_job.lib.php @@ -40,7 +40,7 @@ function jobPrepareHead($object) $head = array(); $head[$h][0] = DOL_URL_ROOT."/hrm/job_card.php?id=".$object->id; - $head[$h][1] = $langs->trans("JobPosition"); + $head[$h][1] = $langs->trans("JobProfile"); $head[$h][2] = 'job_card'; $h++; diff --git a/htdocs/hrm/position_agenda.php b/htdocs/hrm/position_agenda.php index af60ddea1b8..210f8974b68 100644 --- a/htdocs/hrm/position_agenda.php +++ b/htdocs/hrm/position_agenda.php @@ -158,7 +158,7 @@ if ($object->id > 0) { $morehtmlref .= ($u_position->id > 0 ? $u_position->getNomUrl(1) : $langs->trans('Employee').' : '); $job = new Job($db); $job->fetch($object->fk_job); - $morehtmlref .= '
'.$langs->trans('JobPosition').' : '.$job->getNomUrl(1); + $morehtmlref .= '
'.$langs->trans('JobProfile').' : '.$job->getNomUrl(1); $morehtmlref .= '
'; diff --git a/htdocs/hrm/position_card.php b/htdocs/hrm/position_card.php index fae9efd76ba..9004e8d2b13 100644 --- a/htdocs/hrm/position_card.php +++ b/htdocs/hrm/position_card.php @@ -288,7 +288,7 @@ function displayPositionCard(&$object) $morehtmlref .= ($u_position->id > 0 ? $u_position->getNomUrl(1) : $langs->trans('Employee').' : '); $job = new Job($db); $job->fetch($object->fk_job); - $morehtmlref .= '
'.$langs->trans('JobPosition').' : '.$job->getNomUrl(1); + $morehtmlref .= '
'.$langs->trans('JobProfile').' : '.$job->getNomUrl(1); $morehtmlref .= '
'; dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'rowid', $morehtmlref); diff --git a/htdocs/hrm/position_document.php b/htdocs/hrm/position_document.php index 521d6b0ec24..60c0e87c788 100644 --- a/htdocs/hrm/position_document.php +++ b/htdocs/hrm/position_document.php @@ -136,7 +136,7 @@ if ($object->id) { $morehtmlref .= ($u_position->id > 0 ? $u_position->getNomUrl(1) : $langs->trans('Employee').' : '); $job = new Job($db); $job->fetch($object->fk_job); - $morehtmlref .= '
'.$langs->trans('JobPosition').' : '.$job->getNomUrl(1); + $morehtmlref .= '
'.$langs->trans('JobProfile').' : '.$job->getNomUrl(1); $morehtmlref .= '
'; diff --git a/htdocs/hrm/position_note.php b/htdocs/hrm/position_note.php index a09b0e99699..fba8cd2067c 100644 --- a/htdocs/hrm/position_note.php +++ b/htdocs/hrm/position_note.php @@ -111,7 +111,7 @@ if ($id > 0 || !empty($ref)) { $morehtmlref .= ($u_position->id > 0 ? $u_position->getNomUrl(1) : $langs->trans('Employee').' : '); $job = new Job($db); $job->fetch($object->fk_job); - $morehtmlref .= '
'.$langs->trans('JobPosition').' : '.$job->getNomUrl(1); + $morehtmlref .= '
'.$langs->trans('JobProfile').' : '.$job->getNomUrl(1); $morehtmlref .= '
'; diff --git a/htdocs/langs/en_US/hrm.lang b/htdocs/langs/en_US/hrm.lang index 592009b8697..475e11131f4 100644 --- a/htdocs/langs/en_US/hrm.lang +++ b/htdocs/langs/en_US/hrm.lang @@ -26,8 +26,8 @@ HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created deplacement=Shift DateEval=Evaluation date JobCard=Job card -JobPosition=Job profile -JobsPosition=Job profiles +JobProfile=Job profile +JobsProfiles=Job profiles NewSkill=New Skill SkillType=Skill type Skilldets=List of ranks for this skill @@ -53,7 +53,7 @@ EmployeePositions=Employee positions EmployeesInThisPosition=Employees in this position group1ToCompare=Usergroup to analyze group2ToCompare=Second usergroup for comparison -OrJobToCompare=Compare to job skills requirements +OrJobToCompare=Compare to skill requirements of a job profile difference=Difference CompetenceAcquiredByOneOrMore=Competence acquired by one or more users but not requested by the second comparator MaxlevelGreaterThan=Max level greater than the one requested diff --git a/htdocs/user/list.php b/htdocs/user/list.php index d3139b438e2..a269a93fb7b 100644 --- a/htdocs/user/list.php +++ b/htdocs/user/list.php @@ -131,6 +131,7 @@ $arrayfields = array( 'u.email'=>array('label'=>"EMail", 'checked'=>1, 'position'=>35), 'u.api_key'=>array('label'=>"ApiKey", 'checked'=>0, 'position'=>40, "enabled"=>(!empty($conf->api->enabled) && $user->admin)), 'u.fk_soc'=>array('label'=>"Company", 'checked'=>($contextpage == 'employeelist' ? 0 : 1), 'position'=>45), + 'u.job'=>array('label'=>"PostOrFunction", 'checked'=>-1, 'position'=>50), 'u.salary'=>array('label'=>"Salary", 'checked'=>1, 'position'=>80, 'enabled'=>(!empty($conf->salaries->enabled) && $user->hasRight("salaries", "readall"))), 'u.datelastlogin'=>array('label'=>"LastConnexion", 'checked'=>1, 'position'=>100), 'u.datepreviouslogin'=>array('label'=>"PreviousConnexion", 'checked'=>0, 'position'=>110), @@ -159,6 +160,7 @@ $search_email = GETPOST('search_email', 'alpha'); $search_api_key = GETPOST('search_api_key', 'alphanohtml'); $search_statut = GETPOST('search_statut', 'intcomma'); $search_thirdparty = GETPOST('search_thirdparty', 'alpha'); +$search_job = GETPOST('search_job', 'alpha'); $search_warehouse = GETPOST('search_warehouse', 'alpha'); $search_supervisor = GETPOST('search_supervisor', 'intcomma'); $search_categ = GETPOST("search_categ", 'int'); @@ -250,6 +252,7 @@ if (empty($reshook)) { $search_email = ""; $search_statut = ""; $search_thirdparty = ""; + $search_job = ""; $search_warehouse = ""; $search_supervisor = ""; $search_api_key = ""; @@ -357,7 +360,7 @@ $morehtmlright = ""; // Build and execute select // -------------------------------------------------------------------- $sql = "SELECT DISTINCT u.rowid, u.lastname, u.firstname, u.admin, u.fk_soc, u.login, u.office_phone, u.user_mobile, u.email, u.api_key, u.accountancy_code, u.gender, u.employee, u.photo,"; -$sql .= " u.salary, u.datelastlogin, u.datepreviouslogin,"; +$sql .= " u.job, u.salary, u.datelastlogin, u.datepreviouslogin,"; $sql .= " u.ldap_sid, u.statut as status, u.entity,"; $sql .= " u.tms as date_update, u.datec as date_creation,"; $sql .= " u2.rowid as id2, u2.login as login2, u2.firstname as firstname2, u2.lastname as lastname2, u2.admin as admin2, u2.fk_soc as fk_soc2, u2.office_phone as ofice_phone2, u2.user_mobile as user_mobile2, u2.email as email2, u2.gender as gender2, u2.photo as photo2, u2.entity as entity2, u2.statut as status2,"; @@ -433,6 +436,9 @@ if ($search_email != '') { if ($search_api_key != '') { $sql .= natural_search("u.api_key", $search_api_key); } +if ($search_job != '') { + $sql .= natural_search(array('u.job'), $search_job); +} if ($search_statut != '' && $search_statut >= 0) { $sql .= " AND u.statut IN (".$db->sanitize($search_statut).")"; } @@ -772,6 +778,9 @@ if (!empty($arrayfields['u.fk_soc']['checked'])) { if (!empty($arrayfields['u.entity']['checked'])) { print ''; } +if (!empty($arrayfields['u.job']['checked'])) { + print ''; +} if (!empty($arrayfields['u.salary']['checked'])) { print ''; } @@ -823,7 +832,7 @@ if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { $totalarray['nbfield']++; } if (!empty($arrayfields['u.login']['checked'])) { - print_liste_field_titre("Login", $_SERVER['PHP_SELF'], "u.login", $param, "", "", $sortfield, $sortorder); + print_liste_field_titre($arrayfields['u.login']['label'], $_SERVER['PHP_SELF'], "u.login", $param, "", "", $sortfield, $sortorder); $totalarray['nbfield']++; } if (!empty($arrayfields['u.lastname']['checked'])) { @@ -871,7 +880,11 @@ if (!empty($arrayfields['u.fk_soc']['checked'])) { $totalarray['nbfield']++; } if (!empty($arrayfields['u.entity']['checked'])) { - print_liste_field_titre("Entity", $_SERVER['PHP_SELF'], "u.entity", $param, "", "", $sortfield, $sortorder); + print_liste_field_titre($arrayfields['u.entity']['label'], $_SERVER['PHP_SELF'], "u.entity", $param, "", "", $sortfield, $sortorder); + $totalarray['nbfield']++; +} +if (!empty($arrayfields['u.job']['checked'])) { + print_liste_field_titre($arrayfields['u.job']['label'], $_SERVER['PHP_SELF'], "u.job", $param, "", "", $sortfield, $sortorder); $totalarray['nbfield']++; } if (!empty($arrayfields['u.salary']['checked'])) { @@ -948,6 +961,7 @@ while ($i < $imaxinloop) { $object->status = $obj->status; $object->office_phone = $obj->office_phone; $object->user_mobile = $obj->user_mobile; + $object->job = $obj->job; $object->email = $obj->email; $object->gender = $obj->gender; $object->socid = $obj->fk_soc; @@ -1160,6 +1174,16 @@ while ($i < $imaxinloop) { } } + // Job position + if (!empty($arrayfields['u.job']['checked'])) { + print ''; + print dol_escape_htmltag($obj->job); + print ''; + if (!$i) { + $totalarray['nbfield']++; + } + } + // Salary if (!empty($arrayfields['u.salary']['checked'])) { print ''; From 1b3b7c93297118d84f23dd86b99401f8daf43c42 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 11 Feb 2023 12:34:21 +0100 Subject: [PATCH 080/607] Fix default values --- htdocs/admin/defaultvalues.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/admin/defaultvalues.php b/htdocs/admin/defaultvalues.php index 6903571d394..4baddd8b29b 100644 --- a/htdocs/admin/defaultvalues.php +++ b/htdocs/admin/defaultvalues.php @@ -147,12 +147,12 @@ if (($action == 'add' || (GETPOST('add') && $action != 'update')) || GETPOST('ac $object->value=$defaultvalue; $object->entity=$conf->entity; $result=$object->create($user); - if ($result<0) { + if ($result < 0) { $action = ''; setEventMessages($object->error, $object->errors, 'errors'); } else { setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); - $action = ""; + $action = ''; $defaulturl = ''; $defaultkey = ''; $defaultvalue = ''; @@ -324,16 +324,16 @@ print "\n"; print ''; // Page print ''; -print ''; +print ''; print ''."\n"; // Field print ''; -print ''; +print ''; print ''; // Value if ($mode != 'focus' && $mode != 'mandatory') { print ''; - print ''; + print ''; print ''; } // Limit to superadmin From c02113de6a36601ee26af2bc9390da006bd018db Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 11 Feb 2023 13:04:23 +0100 Subject: [PATCH 081/607] Debug v17 --- htdocs/hrm/evaluation_agenda.php | 28 +++++++++------ htdocs/hrm/evaluation_card.php | 2 +- htdocs/hrm/evaluation_contact.php | 2 +- htdocs/hrm/evaluation_document.php | 2 +- htdocs/hrm/evaluation_note.php | 2 +- htdocs/langs/en_US/hrm.lang | 2 +- .../template/myobject_agenda.php | 15 +++++--- htdocs/societe/agenda.php | 35 +++++++++++-------- 8 files changed, 52 insertions(+), 36 deletions(-) diff --git a/htdocs/hrm/evaluation_agenda.php b/htdocs/hrm/evaluation_agenda.php index 31607e01b28..28f4e33e4d4 100644 --- a/htdocs/hrm/evaluation_agenda.php +++ b/htdocs/hrm/evaluation_agenda.php @@ -96,8 +96,10 @@ $permissiontoread = $user->rights->hrm->evaluation->read; // Used by the include //if ($user->socid > 0) accessforbidden(); //if ($user->socid > 0) $socid = $user->socid; //$isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0); -//restrictedArea($user, $object->element, $object->id, $object->table_element, '', 'fk_soc', 'rowid', $isdraft); -if (empty($conf->hrm->enabled)) accessforbidden(); +//restrictedArea($user, $object->module, $object->id, $object->table_element, $object->element, 'fk_soc', 'rowid', $isdraft); +if (!isModEnabled('hrm')) { + accessforbidden(); +} if (!$permissiontoread) accessforbidden(); @@ -155,7 +157,7 @@ if ($object->id > 0) { $morehtmlref .= $langs->trans('Label').' : '.$object->label; $u_position = new User(($db)); $u_position->fetch($object->fk_user); - $morehtmlref .= '
'.$langs->trans('Employee').' : '.$u_position->getNomUrl(1); + $morehtmlref .= '
'.$u_position->getNomUrl(1); $job = new Job($db); $job->fetch($object->fk_job); $morehtmlref .= '
'.$langs->trans('JobProfile').' : '.$job->getNomUrl(1); @@ -196,21 +198,25 @@ if ($object->id > 0) { //$out.=""; } + $morehtmlright = ''; - print '
'; + //$messagingUrl = DOL_URL_ROOT.'/societe/messaging.php?socid='.$object->id; + //$morehtmlright .= dolGetButtonTitle($langs->trans('ShowAsConversation'), '', 'fa fa-comments imgforviewmode', $messagingUrl, '', 1); + //$messagingUrl = DOL_URL_ROOT.'/societe/agenda.php?socid='.$object->id; + //$morehtmlright .= dolGetButtonTitle($langs->trans('MessageListViewType'), '', 'fa fa-bars imgforviewmode', $messagingUrl, '', 2); if (isModEnabled('agenda')) { if (!empty($user->rights->agenda->myactions->create) || !empty($user->rights->agenda->allactions->create)) { - print ''.$langs->trans("AddAction").''; + $morehtmlright .= dolGetButtonTitle($langs->trans('AddAction'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out); } else { - print ''.$langs->trans("AddAction").''; + $morehtmlright .= dolGetButtonTitle($langs->trans('AddAction'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out, '', 0); } } - print '
'; - if (isModEnabled('agenda') && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { - $param = '&id='.$object->id.'&socid='.(!empty($socid) ? '&socid='.$socid : ''); + print '
'; + + $param = '&id='.$object->id.(!empty($socid) ? '&socid='.$socid : ''); if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) { $param .= '&contextpage='.urlencode($contextpage); } @@ -218,8 +224,8 @@ if ($object->id > 0) { $param .= '&limit='.urlencode($limit); } - - //print load_fiche_titre($langs->trans("ActionsOnEvaluation"), '', ''); + //print load_fiche_titre($langs->trans("ActionsOnMyObject"), '', ''); + print_barre_liste($langs->trans("Actions"), 0, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, '', 0, -1, '', 0, $morehtmlright, '', 0, 1, 1); // List of all actions $filters = array(); diff --git a/htdocs/hrm/evaluation_card.php b/htdocs/hrm/evaluation_card.php index 8f513d654f3..e59ba7db462 100644 --- a/htdocs/hrm/evaluation_card.php +++ b/htdocs/hrm/evaluation_card.php @@ -407,7 +407,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $morehtmlref .= $langs->trans('Label').' : '.$object->label; $u_position = new User(($db)); $u_position->fetch($object->fk_user); - $morehtmlref .= '
'.$langs->trans('Employee').' : '.$u_position->getNomUrl(1); + $morehtmlref .= '
'.$u_position->getNomUrl(1); $job = new Job($db); $job->fetch($object->fk_job); $morehtmlref .= '
'.$langs->trans('JobProfile').' : '.$job->getNomUrl(1); diff --git a/htdocs/hrm/evaluation_contact.php b/htdocs/hrm/evaluation_contact.php index c96f562afc7..ff41c152080 100644 --- a/htdocs/hrm/evaluation_contact.php +++ b/htdocs/hrm/evaluation_contact.php @@ -142,7 +142,7 @@ if ($object->id) { $morehtmlref .= $langs->trans('Label').' : '.$object->label; $u_position = new User(($db)); $u_position->fetch($object->fk_user); - $morehtmlref .= '
'.$langs->trans('Employee').' : '.$u_position->getNomUrl(1); + $morehtmlref .= '
'.$u_position->getNomUrl(1); $job = new Job($db); $job->fetch($object->fk_job); $morehtmlref .= '
'.$langs->trans('JobProfile').' : '.$job->getNomUrl(1); diff --git a/htdocs/hrm/evaluation_document.php b/htdocs/hrm/evaluation_document.php index 7935ea7602c..a707913c3c3 100644 --- a/htdocs/hrm/evaluation_document.php +++ b/htdocs/hrm/evaluation_document.php @@ -135,7 +135,7 @@ if ($object->id) { $morehtmlref .= $langs->trans('Label').' : '.$object->label; $u_position = new User(($db)); $u_position->fetch($object->fk_user); - $morehtmlref .= '
'.$langs->trans('Employee').' : '.$u_position->getNomUrl(1); + $morehtmlref .= '
'.$u_position->getNomUrl(1); $job = new Job($db); $job->fetch($object->fk_job); $morehtmlref .= '
'.$langs->trans('JobProfile').' : '.$job->getNomUrl(1); diff --git a/htdocs/hrm/evaluation_note.php b/htdocs/hrm/evaluation_note.php index 1164a9642b1..ba0ec02d616 100644 --- a/htdocs/hrm/evaluation_note.php +++ b/htdocs/hrm/evaluation_note.php @@ -110,7 +110,7 @@ if ($id > 0 || !empty($ref)) { $morehtmlref .= $langs->trans('Label').' : '.$object->label; $u_position = new User(($db)); $u_position->fetch($object->fk_user); - $morehtmlref .= '
'.$langs->trans('Employee').' : '.$u_position->getNomUrl(1); + $morehtmlref .= '
'.$u_position->getNomUrl(1); $job = new Job($db); $job->fetch($object->fk_job); $morehtmlref .= '
'.$langs->trans('JobProfile').' : '.$job->getNomUrl(1); diff --git a/htdocs/langs/en_US/hrm.lang b/htdocs/langs/en_US/hrm.lang index 475e11131f4..b31df5ee605 100644 --- a/htdocs/langs/en_US/hrm.lang +++ b/htdocs/langs/en_US/hrm.lang @@ -46,7 +46,7 @@ NewEval=New evaluation ValidateEvaluation=Validate evaluation ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with reference %s? EvaluationCard=Evaluation card -RequiredRank=Required rank for this job +RequiredRank=Required rank for the job profile EmployeeRank=Employee rank for this skill EmployeePosition=Employee position EmployeePositions=Employee positions diff --git a/htdocs/modulebuilder/template/myobject_agenda.php b/htdocs/modulebuilder/template/myobject_agenda.php index d7b84707b95..5cdcc27eade 100644 --- a/htdocs/modulebuilder/template/myobject_agenda.php +++ b/htdocs/modulebuilder/template/myobject_agenda.php @@ -276,20 +276,25 @@ if ($object->id > 0) { //$out.=""; } + $morehtmlright = ''; - print '
'; + //$messagingUrl = DOL_URL_ROOT.'/societe/messaging.php?socid='.$object->id; + //$morehtmlright .= dolGetButtonTitle($langs->trans('ShowAsConversation'), '', 'fa fa-comments imgforviewmode', $messagingUrl, '', 1); + //$messagingUrl = DOL_URL_ROOT.'/societe/agenda.php?socid='.$object->id; + //$morehtmlright .= dolGetButtonTitle($langs->trans('MessageListViewType'), '', 'fa fa-bars imgforviewmode', $messagingUrl, '', 2); if (isModEnabled('agenda')) { if (!empty($user->rights->agenda->myactions->create) || !empty($user->rights->agenda->allactions->create)) { - print ''.$langs->trans("AddAction").''; + $morehtmlright .= dolGetButtonTitle($langs->trans('AddAction'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out); } else { - print ''.$langs->trans("AddAction").''; + $morehtmlright .= dolGetButtonTitle($langs->trans('AddAction'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out, '', 0); } } - print '
'; if (isModEnabled('agenda') && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { + print '
'; + $param = '&id='.$object->id.(!empty($socid) ? '&socid='.$socid : ''); if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) { $param .= '&contextpage='.urlencode($contextpage); @@ -298,8 +303,8 @@ if ($object->id > 0) { $param .= '&limit='.urlencode($limit); } - //print load_fiche_titre($langs->trans("ActionsOnMyObject"), '', ''); + print_barre_liste($langs->trans("ActionsOnMyObject"), 0, $_SERVER["PHP_SELF"], '', $sortfield, $sortorder, '', 0, -1, '', 0, $morehtmlright, '', 0, 1, 1); // List of all actions $filters = array(); diff --git a/htdocs/societe/agenda.php b/htdocs/societe/agenda.php index 9e6c10a0ccd..b5d01422782 100644 --- a/htdocs/societe/agenda.php +++ b/htdocs/societe/agenda.php @@ -32,6 +32,8 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; // Load translation files required by the page $langs->loadLangs(array('agenda', 'bills', 'companies', 'orders', 'propal')); @@ -48,13 +50,6 @@ if (GETPOST('actioncode', 'array')) { $search_agenda_label = GETPOST('search_agenda_label'); -// Security check -$socid = GETPOST('socid', 'int'); -if ($user->socid) { - $socid = $user->socid; -} -$result = restrictedArea($user, 'societe', $socid, '&societe'); - $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'aZ09comma'); $sortorder = GETPOST('sortorder', 'aZ09comma'); @@ -72,9 +67,19 @@ if (!$sortorder) { $sortorder = 'DESC,DESC'; } +// Initialize technical objects +$object = new Societe($db); + // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context $hookmanager->initHooks(array('agendathirdparty')); +// Security check +$socid = GETPOST('socid', 'int'); +if ($user->socid) { + $socid = $user->socid; +} +$result = restrictedArea($user, 'societe', $socid, '&societe'); + /* * Actions @@ -109,28 +114,28 @@ if (empty($reshook)) { $form = new Form($db); if ($socid > 0) { - require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; - require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; - - $object = new Societe($db); $result = $object->fetch($socid); $title = $langs->trans("Agenda"); if (!empty($conf->global->MAIN_HTML_TITLE) && preg_match('/thirdpartynameonly/', $conf->global->MAIN_HTML_TITLE) && $object->name) { $title = $object->name." - ".$title; } - llxHeader('', $title); + $help_url = ''; + llxHeader('', $title, $help_url); if (isModEnabled('notification')) { $langs->load("mails"); } $head = societe_prepare_head($object); - print dol_get_fiche_head($head, 'agenda', $langs->trans("ThirdParty"), -1, 'company'); + + print dol_get_fiche_head($head, 'agenda', $langs->trans("ThirdParty"), -1, $object->picto); $linkback = ''.$langs->trans("BackToList").''; - dol_banner_tab($object, 'socid', $linkback, ($user->socid ? 0 : 1), 'rowid', 'nom'); + $morehtmlref = ''; + + dol_banner_tab($object, 'socid', $linkback, ($user->socid ? 0 : 1), 'rowid', 'nom', $morehtmlref); print '
'; @@ -202,7 +207,7 @@ if ($socid > 0) { $filters['search_agenda_label'] = $search_agenda_label; // TODO Replace this with same code than into list.php - show_actions_done($conf, $langs, $db, $object, null, 0, $actioncode, '', $filters, $sortfield, $sortorder); + show_actions_done($conf, $langs, $db, $object, null, 0, $actioncode, '', $filters, $sortfield, $sortorder, $object->module); } } From 216c4f02b6378b64bd5e9f3753ac65d002d08c2b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 11 Feb 2023 13:53:56 +0100 Subject: [PATCH 082/607] Fix bad test --- htdocs/main.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index f476c9bafed..de331c7c3d4 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -177,7 +177,7 @@ function testSqlAndScriptInject($val, $type) // We refuse html into html because some hacks try to obfuscate evil strings by inserting HTML into HTML. Example: error=alert(1) to bypass test on onerror $tmpval = preg_replace('/<[^<]+>/', '', $val); // List of dom events is on https://www.w3schools.com/jsref/dom_obj_event.asp and https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers - $inj += preg_match('/on(mouse|drag|key|load|touch|pointer|select|transition)([a-z]*)\s*=/i', $val); // onmousexxx can be set on img or any html tag like + $inj += preg_match('/on(mouse|drag|key|load|touch|pointer|select|transition)([a-z]*)\s*=/i', $tmpval); // onmousexxx can be set on img or any html tag like $inj += preg_match('/on(abort|afterprint|animation|auxclick|beforecopy|beforecut|beforeprint|beforeunload|blur|cancel|canplay|canplaythrough|change|click|close|contextmenu|cuechange|copy|cut)\s*=/i', $tmpval); $inj += preg_match('/on(dblclick|drop|durationchange|emptied|end|ended|error|focus|focusin|focusout|formdata|gotpointercapture|hashchange|input|invalid)\s*=/i', $tmpval); $inj += preg_match('/on(lostpointercapture|offline|online|pagehide|pageshow)\s*=/i', $tmpval); From d0858d8eaaa434a708d538ddef71299907b65e0a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 11 Feb 2023 14:55:46 +0100 Subject: [PATCH 083/607] Debug v17 --- htdocs/core/lib/website2.lib.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/lib/website2.lib.php b/htdocs/core/lib/website2.lib.php index 05727a1e539..aa6d4fbec21 100644 --- a/htdocs/core/lib/website2.lib.php +++ b/htdocs/core/lib/website2.lib.php @@ -730,6 +730,7 @@ function checkPHPCode($phpfullcodestringold, $phpfullcodestring) if (!$error) { $dolibarrdataroot = preg_replace('/([\\/]+)$/i', '', DOL_DATA_ROOT); $allowimportsite = true; + include DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; if (dol_is_file($dolibarrdataroot.'/installmodules.lock')) { $allowimportsite = false; } From 9e79e00f10c18b75d27dac4739041ac30e5ab1dc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 11 Feb 2023 15:19:49 +0100 Subject: [PATCH 084/607] Debug v17 --- htdocs/core/lib/website2.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/website2.lib.php b/htdocs/core/lib/website2.lib.php index aa6d4fbec21..e03f711c9c0 100644 --- a/htdocs/core/lib/website2.lib.php +++ b/htdocs/core/lib/website2.lib.php @@ -730,7 +730,7 @@ function checkPHPCode($phpfullcodestringold, $phpfullcodestring) if (!$error) { $dolibarrdataroot = preg_replace('/([\\/]+)$/i', '', DOL_DATA_ROOT); $allowimportsite = true; - include DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; if (dol_is_file($dolibarrdataroot.'/installmodules.lock')) { $allowimportsite = false; } From 67d8c74a609a61aaa58916b8e65c8a206e633f71 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Sat, 11 Feb 2023 21:23:40 +0100 Subject: [PATCH 085/607] fix : Warning: Undefined array key price_min_ttc in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/compta/facture/card.php on line 2157 --- htdocs/compta/facture/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index a9d9e040ec8..7af0f7046f9 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -2154,7 +2154,7 @@ if (empty($reshook)) { $pu_ht = $datapriceofproduct['pu_ht']; $pu_ttc = $datapriceofproduct['pu_ttc']; $price_min = $datapriceofproduct['price_min']; - $price_min_ttc = $datapriceofproduct['price_min_ttc']; + $price_min_ttc = (isset($datapriceofproduct['price_min_ttc'])) ? $datapriceofproduct['price_min_ttc'] : null; $price_base_type = $datapriceofproduct['price_base_type']; $tva_tx = $datapriceofproduct['tva_tx']; From 4a49ca86c9fe7fbfa3f2cf5cc9ece6c4018fe756 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 13 Feb 2023 13:29:30 +0100 Subject: [PATCH 086/607] Fix #huntr88841fe0-e332-49ce-a46b-36d4f091fd89 --- htdocs/core/lib/website.lib.php | 2 +- htdocs/core/lib/website2.lib.php | 1 + htdocs/website/index.php | 10 ++++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index c258e3198ce..d900b7718cf 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -69,7 +69,7 @@ function dolStripPhpCode($str, $replacewith = '') * * @param string $str String to clean * @return string Result string with php code only - * @see dolStripPhpCode() + * @see dolStripPhpCode(), checkPHPCode() */ function dolKeepOnlyPhpCode($str) { diff --git a/htdocs/core/lib/website2.lib.php b/htdocs/core/lib/website2.lib.php index e03f711c9c0..e619ab17a76 100644 --- a/htdocs/core/lib/website2.lib.php +++ b/htdocs/core/lib/website2.lib.php @@ -678,6 +678,7 @@ function showWebsiteTemplates(Website $website) * @param string $phpfullcodestringold PHP old string * @param string $phpfullcodestring PHP new string * @return int Error or not + * @see dolKeepOnlyPhpCode() */ function checkPHPCode($phpfullcodestringold, $phpfullcodestring) { diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 3a625818ba4..22e692ad824 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -806,6 +806,16 @@ if ($action == 'addcontainer' && $usercanedit) { // Remove comments $tmp['content'] = removeHtmlComment($tmp['content']); + // Check there is no PHP content into the imported file (must be only HTML + JS) + $phpcontent = dolKeepOnlyPhpCode('', $tmp['content']); + if ($phpcontent) { + $error++; + setEventMessages('Error getting '.$urltograb.': file that include PHP content is not allowed', null, 'errors'); + $action = 'createcontainer'; + } + } + + if (!$error) { $regs = array(); preg_match('/(.*)<\/head>/ims', $tmp['content'], $regs); From c1ee02c51059644dfcb0072e6280374897d509a7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 13 Feb 2023 13:33:48 +0100 Subject: [PATCH 087/607] Fix bad param --- htdocs/website/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 22e692ad824..271c139b667 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -807,7 +807,7 @@ if ($action == 'addcontainer' && $usercanedit) { $tmp['content'] = removeHtmlComment($tmp['content']); // Check there is no PHP content into the imported file (must be only HTML + JS) - $phpcontent = dolKeepOnlyPhpCode('', $tmp['content']); + $phpcontent = dolKeepOnlyPhpCode($tmp['content']); if ($phpcontent) { $error++; setEventMessages('Error getting '.$urltograb.': file that include PHP content is not allowed', null, 'errors'); From f569048eb2bd823525bce4ef52316e7a83e3345c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 11 Feb 2023 13:50:40 +0100 Subject: [PATCH 088/607] Fix #hunter7a048bb7-bfdd-4299-931e-9bc283e92bc8 --- htdocs/main.inc.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 98de8c12e5c..44ee262b700 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -167,16 +167,20 @@ function testSqlAndScriptInject($val, $type) $inj += preg_match('/on(lostpointercapture|offline|online|pagehide|pageshow)\s*=/i', $val); $inj += preg_match('/on(paste|pause|play|playing|progress|ratechange|reset|resize|scroll|search|seeked|seeking|show|stalled|start|submit|suspend)\s*=/i', $val); $inj += preg_match('/on(timeupdate|toggle|unload|volumechange|waiting|wheel)\s*=/i', $val); + // More not into the previous list + $inj += preg_match('/on(repeat|begin|finish|beforeinput)\s*=/i', $val); // We refuse html into html because some hacks try to obfuscate evil strings by inserting HTML into HTML. Example: error=alert(1) to bypass test on onerror $tmpval = preg_replace('/<[^<]+>/', '', $val); // List of dom events is on https://www.w3schools.com/jsref/dom_obj_event.asp and https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers - $inj += preg_match('/on(mouse|drag|key|load|touch|pointer|select|transition)([a-z]*)\s*=/i', $val); // onmousexxx can be set on img or any html tag like + $inj += preg_match('/on(mouse|drag|key|load|touch|pointer|select|transition)([a-z]*)\s*=/i', $tmpval); // onmousexxx can be set on img or any html tag like $inj += preg_match('/on(abort|afterprint|animation|auxclick|beforecopy|beforecut|beforeprint|beforeunload|blur|cancel|canplay|canplaythrough|change|click|close|contextmenu|cuechange|copy|cut)\s*=/i', $tmpval); $inj += preg_match('/on(dblclick|drop|durationchange|emptied|end|ended|error|focus|focusin|focusout|formdata|gotpointercapture|hashchange|input|invalid)\s*=/i', $tmpval); $inj += preg_match('/on(lostpointercapture|offline|online|pagehide|pageshow)\s*=/i', $tmpval); $inj += preg_match('/on(paste|pause|play|playing|progress|ratechange|reset|resize|scroll|search|seeked|seeking|show|stalled|start|submit|suspend)\s*=/i', $tmpval); $inj += preg_match('/on(timeupdate|toggle|unload|volumechange|waiting|wheel)\s*=/i', $tmpval); + // More not into the previous list + $inj += preg_match('/on(repeat|begin|finish|beforeinput)\s*=/i', $tmpval); //$inj += preg_match('/on[A-Z][a-z]+\*=/', $val); // To lock event handlers onAbort(), ... $inj += preg_match('/:|:|:/i', $val); // refused string ':' encoded (no reason to have it encoded) to lock 'javascript:...' From e9c5f515ced36ccdfd5312049d76d7dc3c1e68d3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 13 Feb 2023 14:35:02 +0100 Subject: [PATCH 089/607] Fix #huntrb1412070-740e-4119-8e4b-61bdc3af42aa --- htdocs/accountancy/admin/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/accountancy/admin/card.php b/htdocs/accountancy/admin/card.php index 02b95cfd043..535463822db 100644 --- a/htdocs/accountancy/admin/card.php +++ b/htdocs/accountancy/admin/card.php @@ -41,7 +41,7 @@ $ref = GETPOST('ref', 'alpha'); $rowid = GETPOST('rowid', 'int'); $cancel = GETPOST('cancel', 'alpha'); -$account_number = GETPOST('account_number', 'string'); +$account_number = GETPOST('account_number', 'alphanohtml'); $label = GETPOST('label', 'alpha'); // Security check From c3fc14a45af041919c1098c06781a2727b430b42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Fali=C3=A8re?= Date: Mon, 13 Feb 2023 16:05:12 +0100 Subject: [PATCH 090/607] FIX bad check on if in get_all_ways --- htdocs/categories/class/categorie.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index 27a301776b8..23495e9c5c1 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -11,6 +11,7 @@ * Copyright (C) 2015 Raphaël Doursenaud * Copyright (C) 2016 Charlie Benke * Copyright (C) 2018-2022 Frédéric France + * Copyright (C) 2023 Benjamin Falière * * 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 @@ -1463,7 +1464,7 @@ class Categorie extends CommonObject $ways = array(); $parents = $this->get_meres(); - if (!empty($parents)) { + if (is_array($parents)) { foreach ($parents as $parent) { $allways = $parent->get_all_ways(); foreach ($allways as $way) { From 2dec660763e526b280e9379c0a7da499e8d86bbb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 13 Feb 2023 16:12:38 +0100 Subject: [PATCH 091/607] Fix backto link --- htdocs/compta/bank/bankentries_list.php | 2 +- htdocs/compta/bank/line.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/bank/bankentries_list.php b/htdocs/compta/bank/bankentries_list.php index 6c961e85af9..a678c176ca7 100644 --- a/htdocs/compta/bank/bankentries_list.php +++ b/htdocs/compta/bank/bankentries_list.php @@ -175,7 +175,7 @@ $arrayfields = array( 'balance'=>array('label'=>$langs->trans("Balance"), 'checked'=>1, 'position'=>120), 'b.num_releve'=>array('label'=>$langs->trans("AccountStatement"), 'checked'=>1, 'position'=>130), 'b.conciliated'=>array('label'=>$langs->trans("BankLineReconciled"), 'enabled'=> $object->rappro, 'checked'=>($action == 'reconcile' ? 1 : 0), 'position'=>140), - 'b.fk_bordereau'=>array('label'=>$langs->trans("ChequeReceipt"), 'checked'=>0, 'position'=>150), + 'b.fk_bordereau'=>array('label'=>$langs->trans("ChequeNumber"), 'checked'=>0, 'position'=>150), ); // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; diff --git a/htdocs/compta/bank/line.php b/htdocs/compta/bank/line.php index 7c775b6e95c..fd75c9ceaee 100644 --- a/htdocs/compta/bank/line.php +++ b/htdocs/compta/bank/line.php @@ -327,7 +327,7 @@ if ($result) { print dol_get_fiche_head($head, 'bankline', $langs->trans('LineRecord'), 0, 'accountline', 0); - $linkback = ''.$langs->trans("BackToList").''; + $linkback = ''.$langs->trans("BackToList").''; dol_banner_tab($bankline, 'rowid', $linkback); From cac9a00bac0a522c2d54e7557c8c0a2912b66566 Mon Sep 17 00:00:00 2001 From: Eric Seigne Date: Mon, 13 Feb 2023 16:19:00 +0100 Subject: [PATCH 092/607] fix loi de finance 525 --- htdocs/blockedlog/README-fr.md | 2 +- htdocs/blockedlog/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/blockedlog/README-fr.md b/htdocs/blockedlog/README-fr.md index e92bd5a09fe..a5d709ca7a7 100644 --- a/htdocs/blockedlog/README-fr.md +++ b/htdocs/blockedlog/README-fr.md @@ -4,7 +4,7 @@ LOG INALTERABLE ## Fonctionnalité Ce module trace, en temps réel, certains évènements métiers dans une log inaltérable (que vous ne pouvez pas modifier une fois enregistrés) de type blockchain. -Ce module est requis pour la compatibilité avec les exigences légales de certains pays (comme la France avec la loi Fincance 2016 - Norme NF535). +Ce module est requis pour la compatibilité avec les exigences légales de certains pays (comme la France avec la loi Finance 2016 - Norme NF525). **Les évènements tracés de manière inaltérables sont:** diff --git a/htdocs/blockedlog/README.md b/htdocs/blockedlog/README.md index ec3174fb847..7bd9b10787e 100644 --- a/htdocs/blockedlog/README.md +++ b/htdocs/blockedlog/README.md @@ -4,7 +4,7 @@ BLOCKED LOG ## Feature This module tracks, in real time, some events into a non reversible log (that you can't modify once recorded) into a block chain. -This module provides compatibility with requirements of laws of some countries (like France with the law Fincance 2016 - Norme NF535). +This module provides compatibility with requirements of laws of some countries (like France with the law Finance 2016 - Norme NF525). **The tracked events are:** From 212f24ac9e64d92e9276708ab592b42b8112d28d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 13 Feb 2023 21:08:53 +0100 Subject: [PATCH 093/607] Prepare code to fix too many sql error --- htdocs/compta/facture/list.php | 7 +++++-- htdocs/core/class/commoninvoice.class.php | 10 +++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 99dd6bb02c2..a06742bb756 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -1863,11 +1863,14 @@ if ($resql) { $paiement = $facturestatic->getSommePaiement(); $totalcreditnotes = $facturestatic->getSumCreditNotesUsed(); $totaldeposits = $facturestatic->getSumDepositsUsed(); - $totalpay = $paiement + $totalcreditnotes + $totaldeposits; - $remaintopay = price2num($facturestatic->total_ttc - $totalpay); + $multicurrency_paiement = $facturestatic->getSommePaiement(1); $multicurrency_totalcreditnotes = $facturestatic->getSumCreditNotesUsed(1); $multicurrency_totaldeposits = $facturestatic->getSumDepositsUsed(1); + + $totalpay = $paiement + $totalcreditnotes + $totaldeposits; + $remaintopay = price2num($facturestatic->total_ttc - $totalpay); + $multicurrency_totalpay = $multicurrency_paiement + $multicurrency_totalcreditnotes + $multicurrency_totaldeposits; $multicurrency_remaintopay = price2num($facturestatic->multicurrency_total_ttc - $multicurrency_totalpay); diff --git a/htdocs/core/class/commoninvoice.class.php b/htdocs/core/class/commoninvoice.class.php index cbb8555446a..7818ab2fb11 100644 --- a/htdocs/core/class/commoninvoice.class.php +++ b/htdocs/core/class/commoninvoice.class.php @@ -131,8 +131,8 @@ abstract class CommonInvoice extends CommonObject * Return amount of payments already done. This must include ONLY the record into the payment table. * Payments dones using discounts, credit notes, etc are not included. * - * @param int $multicurrency Return multicurrency_amount instead of amount - * @return float|int Amount of payment already done, <0 and set ->error if KO + * @param int $multicurrency Return multicurrency_amount instead of amount. -1=Return both. + * @return float|int|array Amount of payment already done, <0 and set ->error if KO */ public function getSommePaiement($multicurrency = 0) { @@ -156,7 +156,11 @@ abstract class CommonInvoice extends CommonObject $this->db->free($resql); if ($obj) { - if ($multicurrency) { + if ($multicurrency < 0) { + $this->sumpayed = $obj->amount; + $this->sumpayed_multicurrency = $obj->multicurrency_amount; + return array('alreadypaid'=>(float) $obj->amount, 'alreadypaid_multicurrency'=>(float) $obj->multicurrency_amount); + } elseif ($multicurrency) { $this->sumpayed_multicurrency = $obj->multicurrency_amount; return (float) $obj->multicurrency_amount; } else { From 503b01334f1d288b0ca85d79de9f9b94eb811241 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 13 Feb 2023 21:11:39 +0100 Subject: [PATCH 094/607] Fix position for column of total --- htdocs/compta/facture/list.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index a06742bb756..0b11e8a78f6 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -1921,6 +1921,9 @@ if ($resql) { print ''; } print ''; + if (!$i) { + $totalarray['nbfield']++; + } } // No @@ -2530,9 +2533,9 @@ if ($resql) { print ''; } print ''; - } - if (!$i) { - $totalarray['nbfield']++; + if (!$i) { + $totalarray['nbfield']++; + } } print "\n"; From 5217ae28f8159ace983f4ddfdf2f2cb0b7f4ef9a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 13 Feb 2023 21:35:48 +0100 Subject: [PATCH 095/607] Fix load of margin infos --- htdocs/compta/facture/list.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 40b672cbd9e..1fea36daf54 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -1199,6 +1199,18 @@ if ($resql) { $i = 0; $totalarray = array(); + + $with_margin_info = false; + if (!empty($conf->margin->enabled) && ( + !empty($arrayfields['total_pa']['checked']) + || !empty($arrayfields['total_margin']['checked']) + || !empty($arrayfields['total_margin_rate']['checked']) + || !empty($arrayfields['total_mark_rate']['checked']) + ) + ) { + $with_margin_info = true; + } + while ($i < min($num, $limit)) { $obj = $db->fetch_object($resql); @@ -1281,7 +1293,7 @@ if ($resql) $facturestatic->alreadypaid = $paiement; $marginInfo = array(); - if (!empty($conf->margin->enabled)) { + if ($with_margin_info === true) { $facturestatic->fetch_lines(); $marginInfo = $formmargin->getMarginInfosArray($facturestatic); } From a5e9551564ac41727a54b76e250921be6d8fe282 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 13 Feb 2023 23:34:05 +0100 Subject: [PATCH 096/607] Fix Set a limit size on value for barcode generation --- htdocs/barcode/printsheet.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/htdocs/barcode/printsheet.php b/htdocs/barcode/printsheet.php index 373effecbe8..f87196a93af 100644 --- a/htdocs/barcode/printsheet.php +++ b/htdocs/barcode/printsheet.php @@ -116,6 +116,11 @@ if ($action == 'builddoc') { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("BarcodeValue")), null, 'errors'); $error++; } + $MAXLENGTH = 51200; // Limit set to 50Ko + if (dol_strlen($forbarcode) > $MAXLENGTH) { // barcode value + setEventMessages($langs->trans("ErrorFieldTooLong", $langs->transnoentitiesnoconv("BarcodeValue")).' ('.$langs->trans("RequireXStringMax", $MAXLENGTH).')', null, 'errors'); + $error++; + } if (empty($fk_barcode_type)) { // barcode type = barcode encoding setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("BarcodeType")), null, 'errors'); $error++; From 74a0b5f211b9350d8c7a9c1d4c75e703ac081001 Mon Sep 17 00:00:00 2001 From: Marc de Lima Lucio <68746600+marc-dll@users.noreply.github.com> Date: Tue, 14 Feb 2023 09:21:31 +0100 Subject: [PATCH 097/607] FIX: php 8 warnings: use v17 code --- htdocs/admin/dav.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/dav.php b/htdocs/admin/dav.php index 8310308265d..1b615ddeed1 100644 --- a/htdocs/admin/dav.php +++ b/htdocs/admin/dav.php @@ -43,7 +43,7 @@ $arrayofparameters = array( 'DAV_RESTICT_ON_IP'=>array('css'=>'minwidth200', 'enabled'=>1), 'DAV_ALLOW_PRIVATE_DIR'=>array('css'=>'minwidth200', 'enabled'=>2), 'DAV_ALLOW_PUBLIC_DIR'=>array('css'=>'minwidth200', 'enabled'=>1), - 'DAV_ALLOW_ECM_DIR'=>array('css'=>'minwidth200', 'enabled'=>! empty($conf->ecm->enabled)) + 'DAV_ALLOW_ECM_DIR'=>array('css'=>'minwidth200', 'enabled'=>isModEnabled('ecm')) ); // To fix when dire does not exists From 8b8ba10ae2e9a354d1471a1effacfc6258a2b7e9 Mon Sep 17 00:00:00 2001 From: Marc de Lima Lucio <68746600+marc-dll@users.noreply.github.com> Date: Tue, 14 Feb 2023 09:35:06 +0100 Subject: [PATCH 098/607] FIX: php 8 warnings: adapt to v17 --- htdocs/core/class/commondocgenerator.class.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/htdocs/core/class/commondocgenerator.class.php b/htdocs/core/class/commondocgenerator.class.php index 7e07d7427bc..1b59d44bdde 100644 --- a/htdocs/core/class/commondocgenerator.class.php +++ b/htdocs/core/class/commondocgenerator.class.php @@ -40,11 +40,6 @@ abstract class CommonDocGenerator */ public $name = ''; - /** - * @var string Name of constant that is used to save list of directories to scan - */ - public $scandir = ''; - /** * @var string Error code (or message) */ From 00a6a07d5a685dd4aebf3dd27cf90b7a1760648a Mon Sep 17 00:00:00 2001 From: Anthony Berton Date: Tue, 14 Feb 2023 10:31:55 +0100 Subject: [PATCH 099/607] FIX - Shipping address fetch-thirdparty --- htdocs/core/modules/facture/doc/pdf_crabe.modules.php | 7 ++++--- htdocs/core/modules/facture/doc/pdf_sponge.modules.php | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index 30a61fbb1d3..c3a8fcce500 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -2135,9 +2135,10 @@ class pdf_crabe extends ModelePDFFactures if (!empty($idaddressshipping)) { $contactshipping = $object->fetch_Contact($idaddressshipping[0]); - $object->fetch_thirdparty($object->contact->fk_soc); + $companystatic = new Societe($this->db); + $companystatic->fetch($object->contact->fk_soc); $carac_client_name_shipping=pdfBuildThirdpartyName($object->contact, $outputlangs); - $carac_client_shipping = pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty, $object->contact, $usecontact, 'target', $object); + $carac_client_shipping = pdf_build_address($outputlangs, $this->emetteur, $companystatic, $object->contact, $usecontact, 'target', $object); } else { $carac_client_name_shipping=pdfBuildThirdpartyName($object->thirdparty, $outputlangs); $carac_client_shipping=pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty, '', 0, 'target', $object);; @@ -2148,7 +2149,7 @@ class pdf_crabe extends ModelePDFFactures // Show shipping frame $pdf->SetXY($posx + 2, $posy - 5); $pdf->SetFont('', '', $default_font_size - 2); - $pdf->MultiCell($widthrecbox, '', $langs->trans('ShippingTo'), 0, 'L', 0); + $pdf->MultiCell($widthrecbox, '', $outputlangs->transnoentities('ShippingTo'), 0, 'L', 0); $pdf->Rect($posx, $posy, $widthrecbox, $hautcadre); // Show shipping name diff --git a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php index 1d106f6f024..9aa96e147ab 100644 --- a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php @@ -2384,9 +2384,10 @@ class pdf_sponge extends ModelePDFFactures if (!empty($idaddressshipping)) { $contactshipping = $object->fetch_Contact($idaddressshipping[0]); - $object->fetch_thirdparty($object->contact->fk_soc); + $companystatic = new Societe($this->db); + $companystatic->fetch($object->contact->fk_soc); $carac_client_name_shipping=pdfBuildThirdpartyName($object->contact, $outputlangs); - $carac_client_shipping = pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty, $object->contact, $usecontact, 'target', $object); + $carac_client_shipping = pdf_build_address($outputlangs, $this->emetteur, $companystatic, $object->contact, $usecontact, 'target', $object); } else { $carac_client_name_shipping=pdfBuildThirdpartyName($object->thirdparty, $outputlangs); $carac_client_shipping=pdf_build_address($outputlangs, $this->emetteur, $object->thirdparty, '', 0, 'target', $object); @@ -2397,7 +2398,7 @@ class pdf_sponge extends ModelePDFFactures // Show shipping frame $pdf->SetXY($posx + 2, $posy - 5); $pdf->SetFont('', '', $default_font_size - 2); - $pdf->MultiCell($widthrecbox, '', $langs->trans('ShippingTo'), 0, 'L', 0); + $pdf->MultiCell($widthrecbox, '', $outputlangs->transnoentities('ShippingTo'), 0, 'L', 0); $pdf->Rect($posx, $posy, $widthrecbox, $hautcadre); // Show shipping name From 89a2f7a0c10054de042ec5fe33be3a4004c67c5a Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Tue, 14 Feb 2023 10:53:59 +0100 Subject: [PATCH 100/607] FIX multicompany compatibility --- htdocs/core/lib/signature.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/signature.lib.php b/htdocs/core/lib/signature.lib.php index c59acbea209..600f3878a0a 100644 --- a/htdocs/core/lib/signature.lib.php +++ b/htdocs/core/lib/signature.lib.php @@ -120,7 +120,7 @@ function getOnlineSignatureUrl($mode, $type, $ref = '', $localorexternal = 1) // For multicompany if (!empty($out) && !empty($conf->multicompany->enabled)) { - $out .= "&entity=".$conf->entity; // Check the entity because we may have the same reference in several entities + $out .= "&entity=".$object->entity; // Check the entity because we may have the same reference in several entities } return $out; From 398ff6cd3b994e4f4d0ce9f3c545260e79d9a48c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 14 Feb 2023 20:07:00 +0100 Subject: [PATCH 101/607] Fix trans --- htdocs/societe/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index 96666b28d8c..f96f9bb4478 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -244,7 +244,7 @@ $arrayfields = array( 's.phone'=>array('label'=>"Phone", 'position'=>27, 'checked'=>1), 's.fax'=>array('label'=>"Fax", 'position'=>28, 'checked'=>0), 'typent.code'=>array('label'=>"ThirdPartyType", 'position'=>29, 'checked'=>$checkedtypetiers), - 'staff.code'=>array('label'=>"Staff", 'position'=>31, 'checked'=>0), + 'staff.code'=>array('label'=>"Workforce", 'position'=>31, 'checked'=>0), 's.siren'=>array('label'=>"ProfId1Short", 'position'=>40, 'checked'=>$checkedprofid1), 's.siret'=>array('label'=>"ProfId2Short", 'position'=>41, 'checked'=>$checkedprofid2), 's.ape'=>array('label'=>"ProfId3Short", 'position'=>42, 'checked'=>$checkedprofid3), From 0c855fbb3c993430b5d33816163cca2bc0dc0afd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 14 Feb 2023 20:56:10 +0100 Subject: [PATCH 102/607] Sync transifex --- .tx/config | 294 +++++++++++----------- dev/translation/txpull.sh | 2 +- htdocs/langs/ar_SA/admin.lang | 25 +- htdocs/langs/ar_SA/install.lang | 9 +- htdocs/langs/ar_SA/members.lang | 3 +- htdocs/langs/ar_SA/oauth.lang | 9 +- htdocs/langs/bg_BG/admin.lang | 25 +- htdocs/langs/bg_BG/install.lang | 8 +- htdocs/langs/ca_ES/accountancy.lang | 72 +++--- htdocs/langs/ca_ES/admin.lang | 64 ++--- htdocs/langs/ca_ES/agenda.lang | 5 +- htdocs/langs/ca_ES/banks.lang | 3 + htdocs/langs/ca_ES/bills.lang | 2 +- htdocs/langs/ca_ES/boxes.lang | 3 +- htdocs/langs/ca_ES/categories.lang | 4 +- htdocs/langs/ca_ES/commercial.lang | 12 +- htdocs/langs/ca_ES/companies.lang | 7 +- htdocs/langs/ca_ES/compta.lang | 10 +- htdocs/langs/ca_ES/dict.lang | 1 + htdocs/langs/ca_ES/errors.lang | 12 +- htdocs/langs/ca_ES/eventorganization.lang | 4 +- htdocs/langs/ca_ES/exports.lang | 2 +- htdocs/langs/ca_ES/holiday.lang | 34 +-- htdocs/langs/ca_ES/install.lang | 17 +- htdocs/langs/ca_ES/languages.lang | 4 +- htdocs/langs/ca_ES/loan.lang | 6 +- htdocs/langs/ca_ES/main.lang | 43 ++-- htdocs/langs/ca_ES/members.lang | 7 +- htdocs/langs/ca_ES/modulebuilder.lang | 12 +- htdocs/langs/ca_ES/mrp.lang | 7 +- htdocs/langs/ca_ES/oauth.lang | 3 +- htdocs/langs/ca_ES/orders.lang | 8 +- htdocs/langs/ca_ES/other.lang | 24 +- htdocs/langs/ca_ES/partnership.lang | 2 + htdocs/langs/ca_ES/projects.lang | 8 +- htdocs/langs/ca_ES/propal.lang | 6 +- htdocs/langs/ca_ES/receiptprinter.lang | 6 +- htdocs/langs/ca_ES/receptions.lang | 2 +- htdocs/langs/ca_ES/recruitment.lang | 4 +- htdocs/langs/ca_ES/salaries.lang | 2 +- htdocs/langs/ca_ES/stocks.lang | 6 +- htdocs/langs/ca_ES/stripe.lang | 4 +- htdocs/langs/ca_ES/ticket.lang | 14 +- htdocs/langs/ca_ES/users.lang | 7 +- htdocs/langs/ca_ES/website.lang | 36 ++- htdocs/langs/cs_CZ/admin.lang | 25 +- htdocs/langs/cs_CZ/install.lang | 8 +- htdocs/langs/cy_GB/admin.lang | 25 +- htdocs/langs/cy_GB/install.lang | 8 +- htdocs/langs/cy_GB/members.lang | 3 +- htdocs/langs/da_DK/admin.lang | 16 +- htdocs/langs/da_DK/agenda.lang | 1 + htdocs/langs/da_DK/banks.lang | 3 + htdocs/langs/da_DK/dict.lang | 1 + htdocs/langs/da_DK/errors.lang | 6 + htdocs/langs/da_DK/install.lang | 9 +- htdocs/langs/da_DK/main.lang | 3 + htdocs/langs/da_DK/members.lang | 3 +- htdocs/langs/da_DK/modulebuilder.lang | 41 ++- htdocs/langs/da_DK/oauth.lang | 9 +- htdocs/langs/da_DK/users.lang | 1 - htdocs/langs/de_AT/admin.lang | 1 - htdocs/langs/de_CH/admin.lang | 4 +- htdocs/langs/de_CH/boxes.lang | 5 - htdocs/langs/de_CH/main.lang | 1 - htdocs/langs/de_CH/users.lang | 1 - htdocs/langs/de_DE/admin.lang | 20 +- htdocs/langs/de_DE/agenda.lang | 1 + htdocs/langs/de_DE/banks.lang | 8 +- htdocs/langs/de_DE/bills.lang | 40 +-- htdocs/langs/de_DE/boxes.lang | 16 +- htdocs/langs/de_DE/categories.lang | 4 +- htdocs/langs/de_DE/companies.lang | 3 +- htdocs/langs/de_DE/dict.lang | 5 +- htdocs/langs/de_DE/errors.lang | 6 + htdocs/langs/de_DE/install.lang | 9 +- htdocs/langs/de_DE/mails.lang | 6 +- htdocs/langs/de_DE/main.lang | 23 +- htdocs/langs/de_DE/members.lang | 3 +- htdocs/langs/de_DE/modulebuilder.lang | 43 +++- htdocs/langs/de_DE/oauth.lang | 7 +- htdocs/langs/de_DE/projects.lang | 2 +- htdocs/langs/de_DE/propal.lang | 2 +- htdocs/langs/de_DE/recruitment.lang | 2 +- htdocs/langs/de_DE/suppliers.lang | 2 +- htdocs/langs/de_DE/ticket.lang | 6 +- htdocs/langs/de_DE/users.lang | 5 +- htdocs/langs/de_DE/withdrawals.lang | 2 +- htdocs/langs/el_CY/admin.lang | 1 - htdocs/langs/el_CY/install.lang | 2 + htdocs/langs/el_GR/admin.lang | 18 +- htdocs/langs/el_GR/agenda.lang | 1 + htdocs/langs/el_GR/banks.lang | 4 +- htdocs/langs/el_GR/dict.lang | 51 ++-- htdocs/langs/el_GR/errors.lang | 6 + htdocs/langs/el_GR/install.lang | 35 +-- htdocs/langs/el_GR/main.lang | 3 + htdocs/langs/el_GR/members.lang | 3 +- htdocs/langs/el_GR/modulebuilder.lang | 43 +++- htdocs/langs/el_GR/oauth.lang | 7 +- htdocs/langs/el_GR/receptions.lang | 2 +- htdocs/langs/el_GR/sendings.lang | 14 +- htdocs/langs/el_GR/users.lang | 1 - htdocs/langs/en_AE/admin.lang | 1 - htdocs/langs/en_AE/install.lang | 2 + htdocs/langs/en_AU/admin.lang | 1 - htdocs/langs/en_AU/install.lang | 2 + htdocs/langs/en_CA/admin.lang | 1 - htdocs/langs/en_CA/install.lang | 2 + htdocs/langs/en_GB/admin.lang | 2 - htdocs/langs/en_GB/install.lang | 2 + htdocs/langs/en_IN/admin.lang | 1 - htdocs/langs/en_SG/admin.lang | 1 - htdocs/langs/en_SG/install.lang | 2 + htdocs/langs/en_US/admin.lang | 30 ++- htdocs/langs/en_US/users.lang | 6 +- htdocs/langs/en_ZA/admin.lang | 1 - htdocs/langs/en_ZA/install.lang | 2 + htdocs/langs/es_AR/admin.lang | 2 - htdocs/langs/es_BO/admin.lang | 1 - htdocs/langs/es_BO/install.lang | 2 + htdocs/langs/es_CL/admin.lang | 5 - htdocs/langs/es_CL/install.lang | 2 +- htdocs/langs/es_CO/admin.lang | 5 +- htdocs/langs/es_CO/hrm.lang | 2 - htdocs/langs/es_CO/install.lang | 2 +- htdocs/langs/es_CO/members.lang | 1 - htdocs/langs/es_CR/admin.lang | 2 - htdocs/langs/es_CR/install.lang | 2 + htdocs/langs/es_DO/admin.lang | 1 - htdocs/langs/es_DO/install.lang | 2 + htdocs/langs/es_EC/admin.lang | 5 - htdocs/langs/es_EC/hrm.lang | 1 - htdocs/langs/es_EC/install.lang | 2 +- htdocs/langs/es_ES/admin.lang | 14 +- htdocs/langs/es_ES/banks.lang | 4 +- htdocs/langs/es_ES/install.lang | 9 +- htdocs/langs/es_ES/main.lang | 3 + htdocs/langs/es_ES/members.lang | 5 +- htdocs/langs/es_ES/oauth.lang | 7 +- htdocs/langs/es_ES/users.lang | 1 - htdocs/langs/es_GT/admin.lang | 1 - htdocs/langs/es_GT/install.lang | 2 + htdocs/langs/es_HN/admin.lang | 1 - htdocs/langs/es_HN/install.lang | 2 + htdocs/langs/es_MX/admin.lang | 2 - htdocs/langs/es_PA/admin.lang | 1 - htdocs/langs/es_PA/install.lang | 2 + htdocs/langs/es_PE/admin.lang | 1 - htdocs/langs/es_PE/install.lang | 2 + htdocs/langs/es_PY/admin.lang | 1 - htdocs/langs/es_PY/install.lang | 2 + htdocs/langs/es_US/admin.lang | 1 - htdocs/langs/es_US/install.lang | 2 + htdocs/langs/es_UY/admin.lang | 1 - htdocs/langs/es_UY/install.lang | 2 + htdocs/langs/es_VE/admin.lang | 2 - htdocs/langs/es_VE/install.lang | 2 + htdocs/langs/et_EE/admin.lang | 121 ++++++--- htdocs/langs/eu_ES/admin.lang | 153 ++++++++--- htdocs/langs/fa_IR/admin.lang | 25 +- htdocs/langs/fa_IR/install.lang | 8 +- htdocs/langs/fi_FI/admin.lang | 25 +- htdocs/langs/fr_BE/admin.lang | 1 - htdocs/langs/fr_BE/hrm.lang | 3 + htdocs/langs/fr_BE/install.lang | 2 + htdocs/langs/fr_CA/admin.lang | 3 +- htdocs/langs/fr_CH/admin.lang | 1 - htdocs/langs/fr_CH/hrm.lang | 3 + htdocs/langs/fr_CH/install.lang | 2 + htdocs/langs/fr_CI/admin.lang | 1 - htdocs/langs/fr_CI/hrm.lang | 3 + htdocs/langs/fr_CI/install.lang | 2 + htdocs/langs/fr_CM/admin.lang | 1 - htdocs/langs/fr_CM/hrm.lang | 3 + htdocs/langs/fr_CM/install.lang | 2 + htdocs/langs/fr_FR/admin.lang | 14 +- htdocs/langs/fr_FR/agenda.lang | 1 + htdocs/langs/fr_FR/banks.lang | 4 +- htdocs/langs/fr_FR/dict.lang | 1 + htdocs/langs/fr_FR/errors.lang | 6 + htdocs/langs/fr_FR/install.lang | 4 +- htdocs/langs/fr_FR/main.lang | 3 + htdocs/langs/fr_FR/members.lang | 3 +- htdocs/langs/fr_FR/modulebuilder.lang | 8 + htdocs/langs/fr_FR/oauth.lang | 3 +- htdocs/langs/fr_FR/users.lang | 1 - htdocs/langs/fr_GA/admin.lang | 1 - htdocs/langs/fr_GA/install.lang | 2 + htdocs/langs/gl_ES/admin.lang | 14 +- htdocs/langs/gl_ES/agenda.lang | 3 +- htdocs/langs/gl_ES/banks.lang | 4 +- htdocs/langs/gl_ES/companies.lang | 3 +- htdocs/langs/gl_ES/dict.lang | 1 + htdocs/langs/gl_ES/errors.lang | 6 + htdocs/langs/gl_ES/holiday.lang | 20 +- htdocs/langs/gl_ES/install.lang | 9 +- htdocs/langs/gl_ES/loan.lang | 4 +- htdocs/langs/gl_ES/main.lang | 3 + htdocs/langs/gl_ES/members.lang | 3 +- htdocs/langs/gl_ES/modulebuilder.lang | 41 ++- htdocs/langs/gl_ES/oauth.lang | 9 +- htdocs/langs/gl_ES/products.lang | 8 +- htdocs/langs/gl_ES/users.lang | 1 - htdocs/langs/he_IL/admin.lang | 153 ++++++++--- htdocs/langs/hr_HR/admin.lang | 14 +- htdocs/langs/hr_HR/install.lang | 8 +- htdocs/langs/hu_HU/admin.lang | 14 +- htdocs/langs/hu_HU/install.lang | 9 +- htdocs/langs/hu_HU/members.lang | 3 +- htdocs/langs/hu_HU/oauth.lang | 7 +- htdocs/langs/id_ID/admin.lang | 25 +- htdocs/langs/id_ID/install.lang | 8 +- htdocs/langs/id_ID/members.lang | 3 +- htdocs/langs/is_IS/admin.lang | 153 ++++++++--- htdocs/langs/it_CH/admin.lang | 1 - htdocs/langs/it_CH/hrm.lang | 3 + htdocs/langs/it_IT/admin.lang | 14 +- htdocs/langs/it_IT/bills.lang | 20 +- htdocs/langs/it_IT/install.lang | 11 +- htdocs/langs/it_IT/members.lang | 3 +- htdocs/langs/it_IT/oauth.lang | 9 +- htdocs/langs/it_IT/receptions.lang | 8 +- htdocs/langs/ja_JP/admin.lang | 14 +- htdocs/langs/ja_JP/agenda.lang | 1 + htdocs/langs/ja_JP/banks.lang | 3 + htdocs/langs/ja_JP/dict.lang | 1 + htdocs/langs/ja_JP/errors.lang | 6 + htdocs/langs/ja_JP/install.lang | 11 +- htdocs/langs/ja_JP/main.lang | 3 + htdocs/langs/ja_JP/members.lang | 7 +- htdocs/langs/ja_JP/modulebuilder.lang | 51 ++-- htdocs/langs/ja_JP/oauth.lang | 9 +- htdocs/langs/ja_JP/users.lang | 1 - htdocs/langs/kk_KZ/admin.lang | 25 +- htdocs/langs/kk_KZ/install.lang | 8 +- htdocs/langs/lo_LA/admin.lang | 25 +- htdocs/langs/lo_LA/install.lang | 8 +- htdocs/langs/lt_LT/admin.lang | 121 ++++++--- htdocs/langs/lv_LV/admin.lang | 14 +- htdocs/langs/lv_LV/install.lang | 4 +- htdocs/langs/lv_LV/members.lang | 3 +- htdocs/langs/lv_LV/oauth.lang | 3 +- htdocs/langs/lv_LV/users.lang | 1 - htdocs/langs/nb_NO/admin.lang | 14 +- htdocs/langs/nb_NO/agenda.lang | 1 + htdocs/langs/nb_NO/banks.lang | 3 + htdocs/langs/nb_NO/dict.lang | 1 + htdocs/langs/nb_NO/errors.lang | 6 + htdocs/langs/nb_NO/install.lang | 16 +- htdocs/langs/nb_NO/main.lang | 3 + htdocs/langs/nb_NO/members.lang | 3 +- htdocs/langs/nb_NO/modulebuilder.lang | 8 + htdocs/langs/nb_NO/oauth.lang | 25 +- htdocs/langs/nb_NO/users.lang | 1 - htdocs/langs/nl_BE/admin.lang | 3 - htdocs/langs/nl_NL/accountancy.lang | 84 +++---- htdocs/langs/nl_NL/admin.lang | 151 ++++++----- htdocs/langs/nl_NL/install.lang | 8 +- htdocs/langs/nl_NL/members.lang | 3 +- htdocs/langs/pl_PL/admin.lang | 25 +- htdocs/langs/pl_PL/install.lang | 8 +- htdocs/langs/pt_BR/admin.lang | 5 +- htdocs/langs/pt_MZ/admin.lang | 5 +- htdocs/langs/pt_PT/admin.lang | 25 +- htdocs/langs/pt_PT/install.lang | 8 +- htdocs/langs/ro_RO/admin.lang | 16 +- htdocs/langs/ro_RO/agenda.lang | 1 + htdocs/langs/ro_RO/banks.lang | 4 +- htdocs/langs/ro_RO/dict.lang | 1 + htdocs/langs/ro_RO/errors.lang | 6 + htdocs/langs/ro_RO/install.lang | 9 +- htdocs/langs/ro_RO/main.lang | 3 + htdocs/langs/ro_RO/members.lang | 3 +- htdocs/langs/ro_RO/modulebuilder.lang | 39 ++- htdocs/langs/ro_RO/oauth.lang | 9 +- htdocs/langs/ro_RO/users.lang | 1 - htdocs/langs/ru_RU/admin.lang | 25 +- htdocs/langs/ru_RU/install.lang | 8 +- htdocs/langs/ru_RU/members.lang | 3 +- htdocs/langs/sk_SK/admin.lang | 121 ++++++--- htdocs/langs/sl_SI/admin.lang | 25 +- htdocs/langs/sl_SI/install.lang | 186 +++++++------- htdocs/langs/sl_SI/members.lang | 3 +- htdocs/langs/sl_SI/oauth.lang | 3 +- htdocs/langs/sr_RS/admin.lang | 121 ++++++--- htdocs/langs/sv_SE/admin.lang | 104 ++++---- htdocs/langs/sv_SE/agenda.lang | 1 + htdocs/langs/sv_SE/banks.lang | 3 + htdocs/langs/sv_SE/dict.lang | 1 + htdocs/langs/sv_SE/errors.lang | 6 + htdocs/langs/sv_SE/install.lang | 38 +-- htdocs/langs/sv_SE/main.lang | 7 +- htdocs/langs/sv_SE/members.lang | 3 +- htdocs/langs/sv_SE/modulebuilder.lang | 8 + htdocs/langs/sv_SE/oauth.lang | 3 +- htdocs/langs/sv_SE/users.lang | 1 - htdocs/langs/ta_IN/admin.lang | 25 +- htdocs/langs/ta_IN/install.lang | 8 +- htdocs/langs/ta_IN/members.lang | 3 +- htdocs/langs/tg_TJ/admin.lang | 25 +- htdocs/langs/tg_TJ/install.lang | 8 +- htdocs/langs/th_TH/admin.lang | 265 +++++++++++-------- htdocs/langs/th_TH/agenda.lang | 88 ++++--- htdocs/langs/th_TH/assets.lang | 183 +++++++++++--- htdocs/langs/th_TH/banks.lang | 18 +- htdocs/langs/th_TH/bills.lang | 72 ++++-- htdocs/langs/th_TH/categories.lang | 11 +- htdocs/langs/th_TH/modulebuilder.lang | 62 +++-- htdocs/langs/th_TH/productbatch.lang | 76 +++--- htdocs/langs/th_TH/receiptprinter.lang | 6 +- htdocs/langs/th_TH/salaries.lang | 39 +-- htdocs/langs/th_TH/users.lang | 29 ++- htdocs/langs/th_TH/withdrawals.lang | 19 +- htdocs/langs/tr_TR/admin.lang | 25 +- htdocs/langs/uk_UA/admin.lang | 25 +- htdocs/langs/uk_UA/install.lang | 8 +- htdocs/langs/uk_UA/members.lang | 3 +- htdocs/langs/ur_PK/admin.lang | 25 +- htdocs/langs/ur_PK/install.lang | 8 +- htdocs/langs/ur_PK/members.lang | 3 +- htdocs/langs/uz_UZ/admin.lang | 25 +- htdocs/langs/uz_UZ/install.lang | 8 +- htdocs/langs/uz_UZ/members.lang | 3 +- htdocs/langs/vi_VN/admin.lang | 25 +- htdocs/langs/vi_VN/install.lang | 8 +- htdocs/langs/zh_CN/admin.lang | 25 +- htdocs/langs/zh_TW/admin.lang | 44 ++-- htdocs/langs/zh_TW/install.lang | 4 +- htdocs/langs/zh_TW/main.lang | 37 +-- htdocs/langs/zh_TW/members.lang | 3 +- htdocs/langs/zh_TW/oauth.lang | 3 +- htdocs/langs/zh_TW/orders.lang | 9 +- htdocs/langs/zh_TW/projects.lang | 27 +- htdocs/langs/zh_TW/stocks.lang | 70 +++--- 335 files changed, 3623 insertions(+), 1775 deletions(-) create mode 100644 htdocs/langs/el_CY/install.lang create mode 100644 htdocs/langs/en_AE/install.lang create mode 100644 htdocs/langs/en_AU/install.lang create mode 100644 htdocs/langs/en_CA/install.lang create mode 100644 htdocs/langs/en_GB/install.lang create mode 100644 htdocs/langs/en_SG/install.lang create mode 100644 htdocs/langs/en_ZA/install.lang create mode 100644 htdocs/langs/es_BO/install.lang create mode 100644 htdocs/langs/es_CR/install.lang create mode 100644 htdocs/langs/es_DO/install.lang create mode 100644 htdocs/langs/es_GT/install.lang create mode 100644 htdocs/langs/es_HN/install.lang create mode 100644 htdocs/langs/es_PA/install.lang create mode 100644 htdocs/langs/es_PE/install.lang create mode 100644 htdocs/langs/es_PY/install.lang create mode 100644 htdocs/langs/es_US/install.lang create mode 100644 htdocs/langs/es_UY/install.lang create mode 100644 htdocs/langs/es_VE/install.lang create mode 100644 htdocs/langs/fr_BE/hrm.lang create mode 100644 htdocs/langs/fr_BE/install.lang create mode 100644 htdocs/langs/fr_CH/hrm.lang create mode 100644 htdocs/langs/fr_CH/install.lang create mode 100644 htdocs/langs/fr_CI/hrm.lang create mode 100644 htdocs/langs/fr_CI/install.lang create mode 100644 htdocs/langs/fr_CM/hrm.lang create mode 100644 htdocs/langs/fr_CM/install.lang create mode 100644 htdocs/langs/fr_GA/install.lang create mode 100644 htdocs/langs/it_CH/hrm.lang diff --git a/.tx/config b/.tx/config index 494ba41613d..59bad9a52be 100644 --- a/.tx/config +++ b/.tx/config @@ -1,442 +1,442 @@ [main] -host = https://www.transifex.com +host = https://www.transifex.com lang_map = uz: uz_UZ, sw: sw_SW, sr@latin: sr_RS -[dolibarr.accountancy] +[o:dolibarr-association:p:dolibarr:r:accountancy] file_filter = htdocs/langs//accountancy.lang source_file = htdocs/langs/en_US/accountancy.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.admin] +[o:dolibarr-association:p:dolibarr:r:admin] file_filter = htdocs/langs//admin.lang source_file = htdocs/langs/en_US/admin.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.agenda] +[o:dolibarr-association:p:dolibarr:r:agenda] file_filter = htdocs/langs//agenda.lang source_file = htdocs/langs/en_US/agenda.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.assets] +[o:dolibarr-association:p:dolibarr:r:assets] file_filter = htdocs/langs//assets.lang source_file = htdocs/langs/en_US/assets.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.banks] +[o:dolibarr-association:p:dolibarr:r:banks] file_filter = htdocs/langs//banks.lang source_file = htdocs/langs/en_US/banks.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.bills] +[o:dolibarr-association:p:dolibarr:r:bills] file_filter = htdocs/langs//bills.lang source_file = htdocs/langs/en_US/bills.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.blockedlog] +[o:dolibarr-association:p:dolibarr:r:blockedlog] file_filter = htdocs/langs//blockedlog.lang source_file = htdocs/langs/en_US/blockedlog.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.bookmarks] +[o:dolibarr-association:p:dolibarr:r:bookmarks] file_filter = htdocs/langs//bookmarks.lang source_file = htdocs/langs/en_US/bookmarks.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.boxes] +[o:dolibarr-association:p:dolibarr:r:boxes] file_filter = htdocs/langs//boxes.lang source_file = htdocs/langs/en_US/boxes.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.cashdesk] +[o:dolibarr-association:p:dolibarr:r:cashdesk] file_filter = htdocs/langs//cashdesk.lang source_file = htdocs/langs/en_US/cashdesk.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.categories] +[o:dolibarr-association:p:dolibarr:r:categories] file_filter = htdocs/langs//categories.lang source_file = htdocs/langs/en_US/categories.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.commercial] +[o:dolibarr-association:p:dolibarr:r:commercial] file_filter = htdocs/langs//commercial.lang source_file = htdocs/langs/en_US/commercial.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.companies] +[o:dolibarr-association:p:dolibarr:r:companies] file_filter = htdocs/langs//companies.lang source_file = htdocs/langs/en_US/companies.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.compta] +[o:dolibarr-association:p:dolibarr:r:compta] file_filter = htdocs/langs//compta.lang source_file = htdocs/langs/en_US/compta.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.contracts] +[o:dolibarr-association:p:dolibarr:r:contracts] file_filter = htdocs/langs//contracts.lang source_file = htdocs/langs/en_US/contracts.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.cron] +[o:dolibarr-association:p:dolibarr:r:cron] file_filter = htdocs/langs//cron.lang source_file = htdocs/langs/en_US/cron.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.datapolicy] +[o:dolibarr-association:p:dolibarr:r:datapolicy] file_filter = htdocs/langs//datapolicy.lang source_file = htdocs/langs/en_US/datapolicy.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.deliveries] +[o:dolibarr-association:p:dolibarr:r:deliveries] file_filter = htdocs/langs//deliveries.lang source_file = htdocs/langs/en_US/deliveries.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.dict] +[o:dolibarr-association:p:dolibarr:r:dict] file_filter = htdocs/langs//dict.lang source_file = htdocs/langs/en_US/dict.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.donations] +[o:dolibarr-association:p:dolibarr:r:donations] file_filter = htdocs/langs//donations.lang source_file = htdocs/langs/en_US/donations.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.ecm] +[o:dolibarr-association:p:dolibarr:r:ecm] file_filter = htdocs/langs//ecm.lang source_file = htdocs/langs/en_US/ecm.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.errors] +[o:dolibarr-association:p:dolibarr:r:errors] file_filter = htdocs/langs//errors.lang source_file = htdocs/langs/en_US/errors.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.eventorganization] +[o:dolibarr-association:p:dolibarr:r:eventorganization] file_filter = htdocs/langs//eventorganization.lang source_file = htdocs/langs/en_US/eventorganization.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.exports] +[o:dolibarr-association:p:dolibarr:r:exports] file_filter = htdocs/langs//exports.lang source_file = htdocs/langs/en_US/exports.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.help] +[o:dolibarr-association:p:dolibarr:r:help] file_filter = htdocs/langs//help.lang source_file = htdocs/langs/en_US/help.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.holiday] +[o:dolibarr-association:p:dolibarr:r:holiday] file_filter = htdocs/langs//holiday.lang source_file = htdocs/langs/en_US/holiday.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.hrm] +[o:dolibarr-association:p:dolibarr:r:hrm] file_filter = htdocs/langs//hrm.lang source_file = htdocs/langs/en_US/hrm.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.install] +[o:dolibarr-association:p:dolibarr:r:install] file_filter = htdocs/langs//install.lang source_file = htdocs/langs/en_US/install.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.interventions] +[o:dolibarr-association:p:dolibarr:r:interventions] file_filter = htdocs/langs//interventions.lang source_file = htdocs/langs/en_US/interventions.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.intracommreport] +[o:dolibarr-association:p:dolibarr:r:intracommreport] file_filter = htdocs/langs//intracommreport.lang source_file = htdocs/langs/en_US/intracommreport.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.knowledgemanagement] +[o:dolibarr-association:p:dolibarr:r:knowledgemanagement] file_filter = htdocs/langs//knowledgemanagement.lang source_file = htdocs/langs/en_US/knowledgemanagement.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.languages-not-res] +[o:dolibarr-association:p:dolibarr:r:languages-not-res] file_filter = htdocs/langs//languages.lang source_file = htdocs/langs/en_US/languages.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.ldap] +[o:dolibarr-association:p:dolibarr:r:ldap] file_filter = htdocs/langs//ldap.lang source_file = htdocs/langs/en_US/ldap.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.link] +[o:dolibarr-association:p:dolibarr:r:link] file_filter = htdocs/langs//link.lang source_file = htdocs/langs/en_US/link.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.loan] +[o:dolibarr-association:p:dolibarr:r:loan] file_filter = htdocs/langs//loan.lang source_file = htdocs/langs/en_US/loan.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.mailmanspip] +[o:dolibarr-association:p:dolibarr:r:mailmanspip] file_filter = htdocs/langs//mailmanspip.lang source_file = htdocs/langs/en_US/mailmanspip.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.mails] +[o:dolibarr-association:p:dolibarr:r:mails] file_filter = htdocs/langs//mails.lang source_file = htdocs/langs/en_US/mails.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.main] +[o:dolibarr-association:p:dolibarr:r:main] file_filter = htdocs/langs//main.lang source_file = htdocs/langs/en_US/main.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.margins] +[o:dolibarr-association:p:dolibarr:r:margins] file_filter = htdocs/langs//margins.lang source_file = htdocs/langs/en_US/margins.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.members] +[o:dolibarr-association:p:dolibarr:r:members] file_filter = htdocs/langs//members.lang source_file = htdocs/langs/en_US/members.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.modulebuilder] +[o:dolibarr-association:p:dolibarr:r:modulebuilder] file_filter = htdocs/langs//modulebuilder.lang source_file = htdocs/langs/en_US/modulebuilder.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.mrp] +[o:dolibarr-association:p:dolibarr:r:mrp] file_filter = htdocs/langs//mrp.lang source_file = htdocs/langs/en_US/mrp.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.multicurrency] +[o:dolibarr-association:p:dolibarr:r:multicurrency] file_filter = htdocs/langs//multicurrency.lang source_file = htdocs/langs/en_US/multicurrency.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.oauth] +[o:dolibarr-association:p:dolibarr:r:oauth] file_filter = htdocs/langs//oauth.lang source_file = htdocs/langs/en_US/oauth.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.opensurvey] +[o:dolibarr-association:p:dolibarr:r:opensurvey] file_filter = htdocs/langs//opensurvey.lang source_file = htdocs/langs/en_US/opensurvey.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.orders] +[o:dolibarr-association:p:dolibarr:r:orders] file_filter = htdocs/langs//orders.lang source_file = htdocs/langs/en_US/orders.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.other] +[o:dolibarr-association:p:dolibarr:r:other] file_filter = htdocs/langs//other.lang source_file = htdocs/langs/en_US/other.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.partnership] +[o:dolibarr-association:p:dolibarr:r:partnership] file_filter = htdocs/langs//partnership.lang source_file = htdocs/langs/en_US/partnership.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.paybox] +[o:dolibarr-association:p:dolibarr:r:paybox] file_filter = htdocs/langs//paybox.lang source_file = htdocs/langs/en_US/paybox.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.paypal] +[o:dolibarr-association:p:dolibarr:r:paypal] file_filter = htdocs/langs//paypal.lang source_file = htdocs/langs/en_US/paypal.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.printing] +[o:dolibarr-association:p:dolibarr:r:printing] file_filter = htdocs/langs//printing.lang source_file = htdocs/langs/en_US/printing.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.productbatch] +[o:dolibarr-association:p:dolibarr:r:productbatch] file_filter = htdocs/langs//productbatch.lang source_file = htdocs/langs/en_US/productbatch.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.products] +[o:dolibarr-association:p:dolibarr:r:products] file_filter = htdocs/langs//products.lang source_file = htdocs/langs/en_US/products.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.projects] +[o:dolibarr-association:p:dolibarr:r:projects] file_filter = htdocs/langs//projects.lang source_file = htdocs/langs/en_US/projects.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.propal] +[o:dolibarr-association:p:dolibarr:r:propal] file_filter = htdocs/langs//propal.lang source_file = htdocs/langs/en_US/propal.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.receiptprinter] +[o:dolibarr-association:p:dolibarr:r:receiptprinter] file_filter = htdocs/langs//receiptprinter.lang source_file = htdocs/langs/en_US/receiptprinter.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.receptions] +[o:dolibarr-association:p:dolibarr:r:receptions] file_filter = htdocs/langs//receptions.lang source_file = htdocs/langs/en_US/receptions.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.recruitment] +[o:dolibarr-association:p:dolibarr:r:recruitment] file_filter = htdocs/langs//recruitment.lang source_file = htdocs/langs/en_US/recruitment.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.resource] +[o:dolibarr-association:p:dolibarr:r:resource] file_filter = htdocs/langs//resource.lang source_file = htdocs/langs/en_US/resource.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.salaries] +[o:dolibarr-association:p:dolibarr:r:salaries] file_filter = htdocs/langs//salaries.lang source_file = htdocs/langs/en_US/salaries.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.sendings] +[o:dolibarr-association:p:dolibarr:r:sendings] file_filter = htdocs/langs//sendings.lang source_file = htdocs/langs/en_US/sendings.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.sms] +[o:dolibarr-association:p:dolibarr:r:sms] file_filter = htdocs/langs//sms.lang source_file = htdocs/langs/en_US/sms.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.stocks] +[o:dolibarr-association:p:dolibarr:r:stocks] file_filter = htdocs/langs//stocks.lang source_file = htdocs/langs/en_US/stocks.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.stripe] +[o:dolibarr-association:p:dolibarr:r:stripe] file_filter = htdocs/langs//stripe.lang source_file = htdocs/langs/en_US/stripe.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.supplier_proposal] +[o:dolibarr-association:p:dolibarr:r:supplier_proposal] file_filter = htdocs/langs//supplier_proposal.lang source_file = htdocs/langs/en_US/supplier_proposal.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.suppliers] +[o:dolibarr-association:p:dolibarr:r:suppliers] file_filter = htdocs/langs//suppliers.lang source_file = htdocs/langs/en_US/suppliers.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.ticket] +[o:dolibarr-association:p:dolibarr:r:ticket] file_filter = htdocs/langs//ticket.lang source_file = htdocs/langs/en_US/ticket.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.trips] +[o:dolibarr-association:p:dolibarr:r:trips] file_filter = htdocs/langs//trips.lang source_file = htdocs/langs/en_US/trips.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.users] +[o:dolibarr-association:p:dolibarr:r:users] file_filter = htdocs/langs//users.lang source_file = htdocs/langs/en_US/users.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.website] +[o:dolibarr-association:p:dolibarr:r:website] file_filter = htdocs/langs//website.lang source_file = htdocs/langs/en_US/website.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.withdrawals] +[o:dolibarr-association:p:dolibarr:r:withdrawals] file_filter = htdocs/langs//withdrawals.lang source_file = htdocs/langs/en_US/withdrawals.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.workflow] +[o:dolibarr-association:p:dolibarr:r:workflow] file_filter = htdocs/langs//workflow.lang source_file = htdocs/langs/en_US/workflow.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES -[dolibarr.zapier] +[o:dolibarr-association:p:dolibarr:r:zapier] file_filter = htdocs/langs//zapier.lang source_file = htdocs/langs/en_US/zapier.lang source_lang = en_US -type = MOZILLAPROPERTIES +type = MOZILLAPROPERTIES diff --git a/dev/translation/txpull.sh b/dev/translation/txpull.sh index 1b0ce7614c5..1a41cc70f93 100755 --- a/dev/translation/txpull.sh +++ b/dev/translation/txpull.sh @@ -36,7 +36,7 @@ then echo "tx pull -a" tx pull -a - echo "Remove some language directories (not enough translated)" + echo "Remove some language directories (not enough translated) like ach, br_FR, en, frp, fy_NL, ..." rm -fr htdocs/langs/ach rm -fr htdocs/langs/br_FR rm -fr htdocs/langs/en diff --git a/htdocs/langs/ar_SA/admin.lang b/htdocs/langs/ar_SA/admin.lang index 30ca6ac2dd3..d931786d3ed 100644 --- a/htdocs/langs/ar_SA/admin.lang +++ b/htdocs/langs/ar_SA/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=مربعات الاختيار ExtrafieldCheckBoxFromList=مربعات الاختيار من الجدول ExtrafieldLink=رابط إلى كائن ComputedFormula=المجال المحسوب -ComputedFormulaDesc=يمكنك هنا إدخال صيغة باستخدام خصائص أخرى للكائن أو أي ترميز PHP للحصول على قيمة محسوبة ديناميكية. يمكنك استخدام أي صيغ متوافقة مع PHP بما في ذلك "؟" عامل الشرط ، والعنصر العام التالي: $ db ، $ conf ، $ langs ، $ mysoc ، $ user ، $ object .
تحذير : قد تتوفر بعض خصائص $ object فقط. إذا كنت بحاجة إلى خصائص غير محملة ، فما عليك سوى إحضار الكائن إلى الصيغة الخاصة بك كما في المثال الثاني.
يعني استخدام حقل محسوب أنه لا يمكنك إدخال أي قيمة لنفسك من الواجهة. أيضًا ، إذا كان هناك خطأ في بناء الجملة ، فقد لا ترجع الصيغة شيئًا.

مثال على الصيغة:
$ object-> id < 10 ? round($object-> id / 2، 2): ($ object-> id + 2 * $ user-> id) * (int) substr ($ mysoc- 2> zip، 1 )

مثال لإعادة تحميل الكائن
(($ reloadedobj = new Societe ($ db)) && ($ reloadedobj-> fetchNoCompute ($ obj-> id؟ $ obj-> id؟ > rowid: $ object-> id))> 0))؟ $ reloadedobj-> array_options ['options_extrafieldkey'] * $ reloadedobj-> capital / 5: '-1'

مثال آخر للصيغة لفرض تحميل الكائن وكائنه الأصلي:
(($ reloadedobj = $ dbj = )) && ($ reloadedobj-> fetchNoCompute ($ object-> id)> 0) && ($ secondloadedobj = مشروع جديد ($ db)) && ($ secondloadedobj-> fetchNoCompute ($ reloadedobj-> fk_project)> 0))؟ $ secondloadedobj-> ref: "المشروع الرئيسي غير موجود" +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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=تخزين المجال المحسوب ComputedpersistentDesc=سيتم تخزين الحقول الإضافية المحسوبة في قاعدة البيانات ، ومع ذلك ، سيتم إعادة حساب القيمة فقط عند تغيير كائن هذا الحقل. إذا كان الحقل المحسوب يعتمد على كائنات أخرى أو بيانات عالمية ، فقد تكون هذه القيمة خاطئة !! ExtrafieldParamHelpPassword=يعني ترك هذا الحقل فارغًا أنه سيتم تخزين هذه القيمة بدون تشفير (يجب إخفاء الحقل فقط بنجمة على الشاشة).
اضبط "تلقائي" لاستخدام قاعدة التشفير الافتراضية لحفظ كلمة المرور في قاعدة البيانات (عندئذٍ ستكون القيمة المقروءة هي التجزئة فقط ، ولا توجد طريقة لاسترداد القيمة الأصلية) @@ -645,6 +645,8 @@ Module2300Name=المهام المجدولة Module2300Desc=إدارة الوظائف المجدولة (الاسم المستعار كرون أو جدول كرونو) Module2400Name=الأحداث / الأجندة Module2400Desc=تتبع الأحداث. سجل الأحداث التلقائية لأغراض التتبع أو سجل الأحداث أو الاجتماعات اليدوية. هذه هي الوحدة الرئيسية للإدارة الجيدة لعلاقات العملاء أو البائعين. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=DMS / ECM Module2500Desc=نظام إدارة الوثائق / إدارة المحتوى الإلكتروني. التنظيم التلقائي للمستندات التي تم إنشاؤها أو تخزينها. شاركهم عند الحاجة. Module2600Name=API / Web services (SOAP server) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP التحويلات Maxmind القدرات Module3200Name=المحفوظات غير القابلة للتغيير Module3200Desc=تمكين سجل غير قابل للتغيير لأحداث العمل. يتم أرشفة الأحداث في الوقت الحقيقي. السجل هو جدول للقراءة فقط للأحداث المتسلسلة التي يمكن تصديرها. قد تكون هذه الوحدة إلزامية لبعض البلدان. +Module3300Name=Module Builder +Module3200Desc=تمكين سجل غير قابل للتغيير لأحداث العمل. يتم أرشفة الأحداث في الوقت الحقيقي. السجل هو جدول للقراءة فقط للأحداث المتسلسلة التي يمكن تصديرها. قد تكون هذه الوحدة إلزامية لبعض البلدان. Module3400Name=الشبكات الاجتماعية Module3400Desc=قم بتمكين حقول الشبكات الاجتماعية في عناوين وعناوين الأطراف الثالثة (سكايب ، تويتر ، فيسبوك ، ...). Module4000Name=HRM @@ -700,8 +704,10 @@ Module62000Name=شروط التجارة الدولية Module62000Desc=إضافة ميزات لإدارة Incoterms Module63000Name=مصادر Module63000Desc=إدارة الموارد (طابعات ، سيارات ، غرف ، ...) لتخصيصها للمناسبات +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Receptions -Permission11=قراءة الفواتير +Permission11=Read customer invoices (and payments) Permission12=إنشاء / تعديل فواتير العملاء Permission13=إبطال فواتير العميل Permission14=التحقق من صحة الفواتير @@ -943,7 +949,7 @@ Permission1190=الموافقة على (الموافقة الثانية) أوا Permission1191=أوامر تصدير الموردين وخصائصها Permission1201=ونتيجة للحصول على التصدير Permission1202=إنشاء / تعديل للتصدير -Permission1231=استعراض فاتورة المشتريات +Permission1231=Read vendor invoices (and payments) Permission1232=Create/modify vendor invoices Permission1233=Validate vendor invoices Permission1234=احذف فواتير البائع @@ -1230,7 +1236,7 @@ SetupDescription4= %s -> %s

هذا البرنامج SetupDescription5=قائمة الإعدادات الأخرى تقوم بإدارة المعطيات الاختيارية. SetupDescriptionLink= %s - %s SetupDescription3b=المعلمات الأساسية المستخدمة لتخصيص السلوك الافتراضي لتطبيقك (مثل الميزات المتعلقة بالبلد). -SetupDescription4b=هذا البرنامج عبارة عن مجموعة من العديد من الوحدات / التطبيقات. يجب تمكين الوحدات النمطية المتعلقة باحتياجاتك وتكوينها. ستظهر إدخالات القائمة مع تنشيط هذه الوحدات. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=الأحداث الأمنية التي يتم تدقيقها NoSecurityEventsAreAduited=لم يتم تدقيق أي أحداث أمنية. يمكنك تمكينهم من القائمة %s Audit=أحداث أمنية @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive=المشغلات في هذا الملف نشطة ح GeneratedPasswordDesc=اختر الطريقة التي سيتم استخدامها لكلمات المرور التي يتم إنشاؤها تلقائيًا. DictionaryDesc=أدخل جميع البيانات المرجعية. يمكنك إضافة القيم الخاصة بك إلى الافتراضي. ConstDesc=تتيح لك هذه الصفحة تحرير (تجاوز) المعلمات غير المتوفرة في الصفحات الأخرى. هذه معلمات محجوزة في الغالب للمطورين / استكشاف الأخطاء وإصلاحها المتقدمة فقط. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=يتم تعريف جميع المعلمات الأخرى المتعلقة بالأمان هنا. LimitsSetup=حدود / الدقيقة الإعداد LimitsDesc=يمكنك تحديد الحدود والدقة والتحسينات التي تستخدمها Dolibarr هنا @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=استخدام أنواع الأحداث (المُدارة AGENDA_USE_EVENT_TYPE_DEFAULT=قم بتعيين هذه القيمة الافتراضية تلقائيًا لنوع الحدث في نموذج إنشاء الحدث AGENDA_DEFAULT_FILTER_TYPE=عيِّن هذا النوع من الأحداث تلقائيًا في فلتر البحث لطريقة عرض الأجندة AGENDA_DEFAULT_FILTER_STATUS=عيّن هذه الحالة تلقائيًا للأحداث في فلتر البحث لعرض جدول الأعمال +AGENDA_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=أي طريقة عرض تريد فتحها بشكل افتراضي عند تحديد جدول أعمال القائمة AGENDA_REMINDER_BROWSER=قم بتمكين تذكير الحدث على متصفح المستخدم (عند الوصول إلى تاريخ التذكير ، تظهر نافذة منبثقة بواسطة المتصفح. يمكن لكل مستخدم تعطيل هذه الإشعارات من إعداد إعلام المتصفح الخاص به). AGENDA_REMINDER_BROWSER_SOUND=تمكين الإعلام الصوتي @@ -2129,6 +2139,7 @@ CodeLastResult=Latest result code NbOfEmailsInInbox=عدد رسائل البريد الإلكتروني في دليل المصدر LoadThirdPartyFromName=تحميل بحث الطرف الثالث على %s (تحميل فقط) LoadThirdPartyFromNameOrCreate=قم بتحميل بحث الطرف الثالث على %s (أنشئ إذا لم يتم العثور عليه) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=احفظ الملفات المرفقة في مستندات الكائن إذا تم العثور على مرجع لكائن في موضوع البريد الإلكتروني. WithDolTrackingID=رسالة من محادثة بدأت بأول بريد إلكتروني مرسل من Dolibarr WithoutDolTrackingID=رسالة من محادثة بدأها أول بريد إلكتروني لم يتم إرساله من Dolibarr @@ -2355,3 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/ar_SA/install.lang b/htdocs/langs/ar_SA/install.lang index cbe4aa51b37..a22612e5faf 100644 --- a/htdocs/langs/ar_SA/install.lang +++ b/htdocs/langs/ar_SA/install.lang @@ -28,6 +28,7 @@ ErrorPHPVersionTooLow=إصدار PHP قديم جدًا. مطلوب إصدار %s ErrorPHPVersionTooHigh=إصدار PHP مرتفع جدًا. مطلوب إصدار %s أو أقل. ErrorConnectedButDatabaseNotFound=الاتصال بالخادم ناجح ولكن قاعدة البيانات "%s" غير موجودة. ErrorDatabaseAlreadyExists=قاعدة البيانات '٪ ق' موجود بالفعل. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=إذا كانت قاعدة البيانات غير موجودة ، فارجع وحدد الخيار "إنشاء قاعدة بيانات". IfDatabaseExistsGoBackAndCheckCreate=إذا كانت قاعدة البيانات موجود بالفعل ، من العودة وإلغاء "إنشاء قاعدة بيانات" الخيار. WarningBrowserTooOld=إصدار المتصفح قديم جدًا. يوصى بشدة بترقية متصفحك إلى إصدار حديث من Firefox أو Chrome أو Opera. @@ -50,7 +51,6 @@ DatabaseName=اسم قاعدة البيانات DatabasePrefix=بادئة جدول قاعدة البيانات DatabasePrefixDescription=بادئة جدول قاعدة البيانات. إذا كانت فارغة ، يتم تعيينها افتراضيًا على llx_. AdminLogin=حساب المستخدم لمالك قاعدة بيانات Dolibarr. -PasswordAgain=أعد كتابة كلمة المرور AdminPassword=Dolibarr كلمة السر لمدير قاعدة البيانات. تبقي فارغة إذا لم يذكر اسمه في اتصال CreateDatabase=إنشاء قاعدة بيانات CreateUser=قم بإنشاء حساب مستخدم أو منح إذن حساب المستخدم على قاعدة بيانات Dolibarr @@ -88,7 +88,7 @@ LoginAlreadyExists=موجود بالفعل DolibarrAdminLogin=ادخل Dolibarr مشرف AdminLoginAlreadyExists=حساب مسؤول Dolibarr ' %s ' موجود بالفعل. ارجع إذا كنت تريد إنشاء واحدة أخرى. FailedToCreateAdminLogin=Failed to create Dolibarr administrator account. -WarningRemoveInstallDir=تحذير ، لأسباب أمنية ، بمجرد اكتمال التثبيت أو الترقية ، يجب إضافة ملف يسمى install.lock في دليل مستندات Dolibarr من أجل منع الاستخدام العرضي / الضار لأدوات التثبيت مرة أخرى. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=غير متوفر في PHP هذا ChoosedMigrateScript=اختار الهجرة سكريبت DataMigration=ترحيل قاعدة البيانات (البيانات) @@ -208,7 +208,12 @@ HideNotAvailableOptions=إخفاء الخيارات غير المتاحة ErrorFoundDuringMigration=تم الإبلاغ عن خطأ (أخطاء) أثناء عملية الترحيل ، لذا فإن الخطوة التالية غير متاحة. لتجاهل الأخطاء ، يمكنك النقر هنا ، لكن التطبيق أو بعض الميزات قد لا تعمل بشكل صحيح حتى يتم حل الأخطاء. YouTryInstallDisabledByDirLock=حاول التطبيق الترقية الذاتية ، ولكن تم تعطيل صفحات التثبيت / الترقية للأمان (تمت إعادة تسمية الدليل بلاحقة .lock).
YouTryInstallDisabledByFileLock=حاول التطبيق الترقية الذاتية ، ولكن تم تعطيل صفحات التثبيت / الترقية للأمان (من خلال وجود ملف قفل install.lock في دليل مستندات dolibarr).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=انقر هنا للذهاب إلى التطبيق الخاص بك ClickOnLinkOrRemoveManualy=إذا كانت الترقية قيد التقدم ، يرجى الانتظار. إذا لم يكن كذلك ، انقر فوق الارتباط التالي. إذا كنت ترى نفس الصفحة دائمًا ، فيجب عليك إزالة / إعادة تسمية الملف install.lock في دليل المستندات. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=محمل FunctionTest=اختبار الوظيفة +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/ar_SA/members.lang b/htdocs/langs/ar_SA/members.lang index e71475a85aa..f92fb5eb039 100644 --- a/htdocs/langs/ar_SA/members.lang +++ b/htdocs/langs/ar_SA/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=إحصاءات المساهمات NbOfSubscriptions=عدد المساهمات AmountOfSubscriptions=المبلغ المحصل من المساهمات TurnoverOrBudget=دوران (لشركة) أو الميزانية (على أساس) -DefaultAmount=المبلغ الافتراضي للمساهمة +DefaultAmount=Default amount of contribution (used only if no amount is defined at member type level) +MinimumAmount=Minimum amount (used only when contribution amount is free) CanEditAmount=Subscription amount is free CanEditAmountDetail=Visitor can choose/edit amount of its contribution regardless of the member type AmountIsLowerToMinimumNotice=sur un dû total de %s diff --git a/htdocs/langs/ar_SA/oauth.lang b/htdocs/langs/ar_SA/oauth.lang index 45c04f8cbf0..c9e7124dfc9 100644 --- a/htdocs/langs/ar_SA/oauth.lang +++ b/htdocs/langs/ar_SA/oauth.lang @@ -9,8 +9,9 @@ HasAccessToken=تم إنشاء رمز مميز وحفظها في قاعدة ال NewTokenStored=تم استلام الرمز وحفظه ToCheckDeleteTokenOnProvider=انقر هنا للتحقق / حذف التفويض المحفوظ بواسطة موفر %s OAuth TokenDeleted=حذف رمز +GetAccess=Click here to get a token RequestAccess=انقر هنا لطلب / تجديد الوصول والحصول على رمز جديد -DeleteAccess=انقر هنا لحذف رمز +DeleteAccess=Click here to delete the token UseTheFollowingUrlAsRedirectURI=استخدم عنوان URL التالي باعتباره Redirect URI عند إنشاء بيانات الاعتماد الخاصة بك مع موفر OAuth الخاص بك: ListOfSupportedOauthProviders=أضف موفري رمز OAuth2 المميز. بعد ذلك ، انتقل إلى صفحة مشرف موفر OAuth لإنشاء / الحصول على معرّف وسر OAuth وحفظهما هنا. بمجرد الانتهاء من ذلك ، قم بتشغيل علامة التبويب الأخرى لإنشاء الرمز المميز الخاص بك. OAuthSetupForLogin=صفحة لإدارة (إنشاء / حذف) رموز OAuth المميزة @@ -30,7 +31,11 @@ OAUTH_GITHUB_SECRET=OAuth GitHub Secret OAUTH_URL_FOR_CREDENTIAL=انتقل إلى هذه الصفحة لإنشاء أو الحصول على معرف OAuth والسري OAUTH_STRIPE_TEST_NAME=اختبار شريط OAuth OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live -OAUTH_ID=معرف OAuth +OAUTH_ID=OAuth Client ID OAUTH_SECRET=سر OAuth +OAUTH_TENANT=OAuth tenant OAuthProviderAdded=تمت إضافة موفر OAuth AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=إدخال OAuth لهذا الموفر وهذا التصنيف موجود بالفعل +URLOfServiceForAuthorization=URL provided by OAuth service for authentication +Scopes=Permissions (Scopes) +ScopeUndefined=Permissions (Scopes) undefined (see previous tab) diff --git a/htdocs/langs/bg_BG/admin.lang b/htdocs/langs/bg_BG/admin.lang index dc3aa7d8fd7..4673e1b266a 100644 --- a/htdocs/langs/bg_BG/admin.lang +++ b/htdocs/langs/bg_BG/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Полета за отметка ExtrafieldCheckBoxFromList=Отметки от таблица ExtrafieldLink=Връзка към обект ComputedFormula=Изчислено поле -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->fetchNoCompute($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->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Запазване на изчисленото поле ComputedpersistentDesc=Изчислените допълнителни полета ще бъдат съхранени в базата данни, но стойността ще бъде преизчислена само когато обектът на това поле бъде променен. Ако изчисленото поле зависи от други обекти или глобални данни, тази стойност може да е грешна!! ExtrafieldParamHelpPassword=Оставяйки това поле празно означава, че тази стойност ще бъде съхранена без криптиране (полето трябва да бъде скрито само със звезда на екрана).
Посочете 'auto', за да използвате правилото за криптиране по подразбиране и за да запазите паролата в базата данни (тогава четимата стойност ще бъде само хеш код и няма да има начин да извлечете реалната стойност). @@ -645,6 +645,8 @@ Module2300Name=Планирани задачи Module2300Desc=Управление на планирани задачи (cron или chrono таблица) Module2400Name=Събития / Календар Module2400Desc=Проследяване на събития. Регистриране на автоматични събития с цел проследяване или записване на ръчни събития и срещи. Това е основният модул за добро управление на взаимоотношенията с клиенти и доставчици. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=Документи / Съдържание Module2500Desc=Система за управление на документи / Управление на електронно съдържание. Автоматична организация на вашите генерирани или съхранени документи. Споделяне на документи. Module2600Name=API / Web services (SOAP server) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind възможности за преобразуване Module3200Name=Неизменими архиви Module3200Desc=Непроменлив дневник на бизнес събития. Събитията се архивират в реално време. Дневникът е таблица, достъпна единствено за четене, която съдържа последователни събития, които могат да бъдат експортирани. Този модул може да е задължителен за някои страни. +Module3300Name=Module Builder +Module3200Desc=Непроменлив дневник на бизнес събития. Събитията се архивират в реално време. Дневникът е таблица, достъпна единствено за четене, която съдържа последователни събития, които могат да бъдат експортирани. Този модул може да е задължителен за някои страни. Module3400Name=Социални мрежи Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...). Module4000Name=ЧР @@ -700,8 +704,10 @@ Module62000Name=Условия на доставка Module62000Desc=Добавяне на функции за управление на Инкотермс (условия на доставка) Module63000Name=Ресурси Module63000Desc=Управление на ресурси (принтери, коли, стаи, ...) с цел разпределяне по събития +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Стокови разписки -Permission11=Преглед на фактури за продажба +Permission11=Read customer invoices (and payments) Permission12=Създаване / променяне на фактури на продажба Permission13=Invalidate customer invoices Permission14=Валидиране на фактури за продажба @@ -943,7 +949,7 @@ Permission1190=Одобряване (второ одобрение) на пор Permission1191=Export supplier orders and their attributes Permission1201=Получаване на резултат с експортирани данни Permission1202=Създаване / променяне на експортирани данни -Permission1231=Преглед на фактури за доставка +Permission1231=Read vendor invoices (and payments) Permission1232=Създаване / променяне на фактури за доставка Permission1233=Валидиране на фактури за доставка Permission1234=Изтриване на фактури за доставка @@ -1230,7 +1236,7 @@ SetupDescription4=%s -> %s

Този софтуер е п SetupDescription5=Менюто "Други настройки" управлява допълнителни параметри. SetupDescriptionLink=%s - %s SetupDescription3b=Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Security events that are audited NoSecurityEventsAreAduited=No security events are audited. You can enable them from menu %s Audit=Security events @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive=Тригерите в този файл са акт GeneratedPasswordDesc=Изберете метода, който ще се използва за автоматично генерирани пароли. DictionaryDesc=Определете всички референтни данни. Може да добавите стойности по подразбиране. ConstDesc=Тази страница позволява да редактирате (презаписвате) параметри, които не са достъпни в други страници. Това са предимно запазени параметри само за разработчици / разширено отстраняване на проблеми. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=Тук са дефинирани всички параметри, свързани със сигурността. LimitsSetup=Граници / Прецизна настройка LimitsDesc=Тук може да дефинирате ограничения използвани от Dolibarr за по-голяма прецизност и оптимизация @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Използване на видове събития (у AGENDA_USE_EVENT_TYPE_DEFAULT=Автоматично задаване на стойност по подразбиране за вид събитие във формуляра при създаване на събитие AGENDA_DEFAULT_FILTER_TYPE=Автоматично задаване на стойност по подразбиране за вид събитие във филтъра за търсене на календара AGENDA_DEFAULT_FILTER_STATUS=Автоматично задаване на стойност по подразбиране за статус на събитие във филтъра за търсене на календара +AGENDA_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Which view do you want to open by default when selecting menu Agenda AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (When remind date is reached, a popup is shown by the browser. Each user can disable such notifications from its browser notification setup). AGENDA_REMINDER_BROWSER_SOUND=Активиране на звуково известяване @@ -2129,6 +2139,7 @@ CodeLastResult=Код на последния резултат NbOfEmailsInInbox=Брой имейли в директорията източник LoadThirdPartyFromName=Зареждане на името на контрагента от %s (само за зареждане) LoadThirdPartyFromNameOrCreate=Зареждане на името на контрагента от %s (да се създаде, ако не е намерено) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Message from a conversation initiated by a first email sent from Dolibarr WithoutDolTrackingID=Message from a conversation initiated by a first email NOT sent from Dolibarr @@ -2355,3 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/bg_BG/install.lang b/htdocs/langs/bg_BG/install.lang index d058e9ff73f..2112ce0782c 100644 --- a/htdocs/langs/bg_BG/install.lang +++ b/htdocs/langs/bg_BG/install.lang @@ -51,7 +51,6 @@ DatabaseName=Име на базата данни DatabasePrefix=Префикс на таблицата с база данни DatabasePrefixDescription=Префикс на таблицата с база данни. Ако е празно, по подразбиране ще бъде llx_. AdminLogin=Потребителски акаунт за собственика на базата данни на Dolibarr. -PasswordAgain=Повторете паролата AdminPassword=Парола за собственика на базата данни на Dolibarr. CreateDatabase=Създаване на база данни CreateUser=Създайте потребителски акаунт или предоставете разрешение за потребителски акаунт на базата данни на Dolibarr @@ -89,7 +88,7 @@ LoginAlreadyExists=Вече съществува DolibarrAdminLogin=Администратор на Dolibarr AdminLoginAlreadyExists=Администраторският профил ' %s ' за Dolibarr вече съществува. Върнете се обратно, ако искате да създадете друг. FailedToCreateAdminLogin=Неуспешно създаване на администраторски профил за Dolibarr. -WarningRemoveInstallDir=Внимание, от съображения за сигурност, след като инсталирането или приключи актуализацията, трябва да добавите файл с име install.lock в директорията /documents на Dolibarr, за да предотвратите повторното използване на инструментите за инсталиране. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=Не е налично за тази PHP инсталация ChoosedMigrateScript=Избран скрипт за миграция DataMigration=Миграция на база данни (данни) @@ -209,7 +208,12 @@ HideNotAvailableOptions=Скриване на недостъпни опции ErrorFoundDuringMigration=По време на процеса на миграция са докладвани грешки, така че следващата стъпка не е възможна. За да игнорирате грешките, може да кликнете тук , но приложението или някои функции може да не работят правилно, докато грешките не бъдат отстранени. YouTryInstallDisabledByDirLock=Приложението се опита да се самоактуализира, но страниците за инсталация / актуализация са били изключени от гледна точка на сигурност (директорията е преименувана с .lock суфикс).
YouTryInstallDisabledByFileLock=Приложението се опита да се самоактуализира, но страниците за инсталация / актуализация са били изключени от гледна точка на сигурност (от наличието на заключващ файл install.lock в директорията documents на Dolibarr).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=Кликнете тук, за да отидете в приложението си ClickOnLinkOrRemoveManualy=Ако актуализацията е в ход, моля изчакайте. Ако не, кликнете върху следната връзка. Ако винаги виждате същата страница, трябва да премахнете / преименувате файла install.lock в директорията Documents. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=Заредено FunctionTest=Функционален тест +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/ca_ES/accountancy.lang b/htdocs/langs/ca_ES/accountancy.lang index 4a42cad58e8..946fd976dde 100644 --- a/htdocs/langs/ca_ES/accountancy.lang +++ b/htdocs/langs/ca_ES/accountancy.lang @@ -14,8 +14,8 @@ ACCOUNTING_EXPORT_ENDLINE=Seleccioneu el tipus de retorn ACCOUNTING_EXPORT_PREFIX_SPEC=Especifica el prefix del nom del fitxer ThisService=Aquest servei ThisProduct=Aquest producte -DefaultForService=Default for services -DefaultForProduct=Default for products +DefaultForService=Per defecte als serveis +DefaultForProduct=Per defecte als productes ProductForThisThirdparty=Producte per a aquest tercer ServiceForThisThirdparty=Servei per a aquest tercer CantSuggest=No es pot suggerir @@ -59,7 +59,7 @@ MainAccountForSuppliersNotDefined=Compte comptable principal per a proveïdors n MainAccountForUsersNotDefined=Compte comptable per a usuaris no de definit en la configuració MainAccountForVatPaymentNotDefined=Compte comptable per a IVA no definida en la configuració MainAccountForSubscriptionPaymentNotDefined=Compte comptable per a IVA no definida en la configuració del mòdul -UserAccountNotDefined=Accounting account for user not defined in setup +UserAccountNotDefined=Compte comptable per a l'usuari no definit a la configuració AccountancyArea=Àrea de comptabilitat AccountancyAreaDescIntro=L'ús del mòdul de comptabilitat es realitza en diverses etapes: @@ -102,7 +102,7 @@ ShowAccountingJournal=Mostrar diari comptable ShowAccountingAccountInLedger=Mostra el compte comptable al Llibre major ShowAccountingAccountInJournals=Mostra el compte comptable als diaris DataUsedToSuggestAccount=Data used to suggest account -AccountAccountingSuggest=Account suggested +AccountAccountingSuggest=Compte suggerit MenuDefaultAccounts=Comptes per defecte MenuBankAccounts=Comptes bancaris MenuVatAccounts=Comptes d'IVA @@ -127,7 +127,7 @@ WriteBookKeeping=Registrar transaccions en comptabilitat Bookkeeping=Llibre major BookkeepingSubAccount=Subcompte AccountBalance=Compte saldo -AccountBalanceSubAccount=Sub-accounts balance +AccountBalanceSubAccount=Saldo de subcomptes ObjectsRef=Referència de l'objecte origen CAHTF=Total de compra a Proveïdor abans d'impostos TotalExpenseReport=Informe de despeses totals @@ -169,22 +169,22 @@ ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=En la transferència comptable, quin és e ACCOUNTING_SELL_JOURNAL=Diari de vendes (vendes i devolucions) ACCOUNTING_PURCHASE_JOURNAL=Diari de compres (compres i devolucions) -ACCOUNTING_BANK_JOURNAL=Cash journal (receipts and disbursements) +ACCOUNTING_BANK_JOURNAL=Diari d'efectiu (entrades i desemborsaments) ACCOUNTING_EXPENSEREPORT_JOURNAL=Diari de l'informe de despeses ACCOUNTING_MISCELLANEOUS_JOURNAL=Diari general ACCOUNTING_HAS_NEW_JOURNAL=Té un nou Diari -ACCOUNTING_INVENTORY_JOURNAL=Inventory journal +ACCOUNTING_INVENTORY_JOURNAL=Diari d'inventari ACCOUNTING_SOCIAL_JOURNAL=Diari social ACCOUNTING_RESULT_PROFIT=Compte de comptes de resultats (benefici) ACCOUNTING_RESULT_LOSS=Compte de resultats comptable (pèrdua) ACCOUNTING_CLOSURE_DEFAULT_JOURNAL=Revista de tancament -ACCOUNTING_ACCOUNT_TRANSFER_CASH=Account (from the Chart Of Account) to be used as the account for transitional bank transfers +ACCOUNTING_ACCOUNT_TRANSFER_CASH=Compte (del pla comptable) que s'utilitzarà com a compte per a transferències bancàries transitòries TransitionalAccount=Compte de transferència bancària transitòria -ACCOUNTING_ACCOUNT_SUSPENSE=Account (from the Chart Of Account) to be used as the account for unallocated funds either received or paid i.e. funds in "wait[ing]" -DONATION_ACCOUNTINGACCOUNT=Account (from the Chart Of Account) to be used to register donations (Donation module) +ACCOUNTING_ACCOUNT_SUSPENSE=Compte (del pla comptable) que s'utilitzarà com a compte per als fons no assignats, ja siguin rebuts o pagats, és a dir, fons en "espera" +DONATION_ACCOUNTINGACCOUNT=Compte (del pla comptable) que s'utilitzarà per a registrar donacions (mòdul de donacions) ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Account (from the Chart Of Account) to be used to register memberships subscriptions (Membership module - if membership recorded without invoice) ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Account (from the Chart Of Account) to be used as the default account to register customer deposit @@ -193,17 +193,17 @@ ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT=Account (from the Chart Of Account) to be us UseAuxiliaryAccountOnSupplierDeposit=Emmagatzema el compte del proveïdor com a compte individual al llibre major subsidiari per a les línies de pagament inicial (si està desactivat, el compte individual de les línies de pagament inicial romandrà buit) ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY=Accounting account by default to register customer retained warranty -ACCOUNTING_PRODUCT_BUY_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products purchased within same country (used if not defined in the product sheet) +ACCOUNTING_PRODUCT_BUY_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per als productes comprats al mateix país (utilitzat si no està definit a la fitxa del producte) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products purchased from EEC to another EEC country (used if not defined in the product sheet) ACCOUNTING_PRODUCT_BUY_EXPORT_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products purchased and imported from any other foreign country (used if not defined in the product sheet) -ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the sold products (used if not defined in the product sheet) +ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per als productes venuts (utilitzat si no està definit a la fitxa del producte) ACCOUNTING_PRODUCT_SOLD_INTRA_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products sold from EEC to another EEC country (used if not defined in the product sheet) ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products sold and exported to any other foreign country (used if not defined in the product sheet) -ACCOUNTING_SERVICE_BUY_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the services purchased within same country (used if not defined in the service sheet) +ACCOUNTING_SERVICE_BUY_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per als serveis adquirits al mateix país (utilitzat si no està definit al full de servei) ACCOUNTING_SERVICE_BUY_INTRA_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the services purchased from EEC to another EEC country (used if not defined in the service sheet) ACCOUNTING_SERVICE_BUY_EXPORT_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the services purchased and imported from other foreign country (used if not defined in the service sheet) -ACCOUNTING_SERVICE_SOLD_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the sold services (used if not defined in the service sheet) +ACCOUNTING_SERVICE_SOLD_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per als serveis venuts (utilitzat si no està definit al full de servei) ACCOUNTING_SERVICE_SOLD_INTRA_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the services sold from EEC to another EEC country (used if not defined in the service sheet) ACCOUNTING_SERVICE_SOLD_EXPORT_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the services sold and exported to any other foreign country (used if not defined in the service sheet) @@ -221,7 +221,7 @@ JournalLabel=Nom del diari NumPiece=Número de peça TransactionNumShort=Número de transacció AccountingCategory=Grup de comptes personalitzat -AccountingCategories=Custom groups of accounts +AccountingCategories=Grups de comptes personalitzats GroupByAccountAccounting=Agrupa per compte major GroupBySubAccountAccounting=Agrupa per subcompte comptable AccountingAccountGroupsDesc=Podeu definir aquí alguns grups de comptes comptables. S'utilitzaran per a informes comptables personalitzats. @@ -276,13 +276,13 @@ Reconcilable=Reconciliable TotalVente=Total turnover before tax TotalMarge=Marge total de vendes -DescVentilCustomer=Consult here the list of customer invoice lines bound (or not) to a product account from chart of account -DescVentilMore=In most cases, if you use predefined products or services and you set the account (from chart of account) on the product/service card, the application will be able to make all the binding between your invoice lines and the accounting account of your chart of accounts, just in one click with the button "%s". If account was not set on product/service cards or if you still have some lines not bound to an account, you will have to make a manual binding from the menu "%s". -DescVentilDoneCustomer=Consult here the list of the lines of invoices customers and their product account from chart of account -DescVentilTodoCustomer=Bind invoice lines not already bound with a product account from chart of account -ChangeAccount=Change the product/service account (from chart of account) for the selected lines with the following account: +DescVentilCustomer=Consulteu aquí la llista de línies de factura de client vinculades (o no) a un compte de producte des del pla comptable +DescVentilMore=En la majoria dels casos, si utilitzeu productes o serveis predefinits i configureu el compte (des del pla comptable) a la fitxa del producte/servei, l'aplicació podrà fer tota la vinculació entre les vostres línies de factura i el compte del vostre pla comptable, només amb un clic amb el botó «%s» . Si el compte no s'ha establert a les fitxes de producte/servei o si encara teniu algunes línies no vinculades a un compte, haureu de fer una vinculació manual des del menú «%s». +DescVentilDoneCustomer=Consulteu aquí la llista de les línies de factures dels clients i el seu compte de producte des del pla comptable +DescVentilTodoCustomer=Enllaçar línies de factura que encara no estiguin vinculades amb un compte de producte del pla comptable +ChangeAccount=Canvieu el compte de producte/servei (del pla comptable) per a les línies seleccionades amb el compte següent: Vide=- -DescVentilSupplier=Consult here the list of vendor invoice lines bound or not yet bound to a product account from chart of account (only record not already transfered in accountancy are visible) +DescVentilSupplier=Consulteu aquí la llista de línies de factura de proveïdor vinculades o encara no vinculades a un compte de producte des del pla comptable (només són visibles els registres no transferits a la comptabilitat) DescVentilDoneSupplier=Consulteu aquí la llista de les línies de venedors de factures i el seu compte comptable DescVentilTodoExpenseReport=Línies d'informes de despeses comptabilitzades encara no comptabilitzades amb un compte comptable de tarifa DescVentilExpenseReport=Consulteu aquí la llista de les línies d'informe de despeses vinculada (o no) a un compte comptable corresponent a tarifa @@ -294,21 +294,21 @@ DescClosure=Consulta aquí el nombre de moviments per mes encara no validats i b OverviewOfMovementsNotValidated=Visió general dels moviments no validats i bloquejats AllMovementsWereRecordedAsValidated=Tots els moviments es van registrar com a validats i bloquejats NotAllMovementsCouldBeRecordedAsValidated=No tots els moviments es van poder registrar com a validats i bloquejats -ValidateMovements=Validate and lock movements... +ValidateMovements=Valida i bloqueja moviments... DescValidateMovements=Queda prohibida qualsevol modificació o supressió de registres. Totes les entrades d’un exercici s’han de validar, en cas contrari, el tancament no serà possible ValidateHistory=Comptabilitza automàticament AutomaticBindingDone=Enllaços automàtics fets (%s): l'enllaç automàtic no és possible per a alguns registres (%s) DoManualBindingForFailedRecord=You have to do a manual link for the %s row(s) not linked automatically. -ErrorAccountancyCodeIsAlreadyUse=Error, you cannot remove or disable this account of chart of account because it is used +ErrorAccountancyCodeIsAlreadyUse=Error, no podeu eliminar ni desactivar aquest compte del pla comptable perquè està en ús MvtNotCorrectlyBalanced=Moviment no equilibrat correctament. Dèbit = %s i crèdit = %s Balancing=Saldo FicheVentilation=Fitxa de comptabilització GeneralLedgerIsWritten=Els assentaments s'han escrit al Llibre Major GeneralLedgerSomeRecordWasNotRecorded=Alguns dels assentaments no van poder ser registrats al diari. Si no hi ha cap altre missatge d'error, probablement és perquè ja es van registrar al diari. NoNewRecordSaved=No hi ha més registres per a transferir -ListOfProductsWithoutAccountingAccount=List of products not bound to any account of chart of account +ListOfProductsWithoutAccountingAccount=Llista de productes no vinculats a cap compte del pla comptable ChangeBinding=Canvia la comptabilització Accounted=Comptabilitzat en el llibre major NotYetAccounted=Encara no s'ha traslladat a la comptabilitat @@ -334,22 +334,22 @@ AccountingJournalType4=Banc AccountingJournalType5=Informes de despeses AccountingJournalType8=Inventari AccountingJournalType9=Haver -GenerationOfAccountingEntries=Generation of accounting entries +GenerationOfAccountingEntries=Generació d'assentaments comptables ErrorAccountingJournalIsAlreadyUse=Aquest diari ja està en ús -AccountingAccountForSalesTaxAreDefinedInto=Nota: el compte de comptes de l'impost de vendes es defineix al menú %s - %s +AccountingAccountForSalesTaxAreDefinedInto=Nota: El compte comptable per a l'impost de vendes es defineix al menú %s - %s NumberOfAccountancyEntries=Nombre d'entrades NumberOfAccountancyMovements=Nombre de moviments ACCOUNTING_DISABLE_BINDING_ON_SALES=Desactiva la vinculació i transferència de comptabilitat en vendes (les factures dels clients no es tindran en compte a la comptabilitat) ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=Desactiva la vinculació i transferència a la comptabilitat de les compres (les factures de proveïdors no es tindran en compte a la comptabilitat) ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Desactiva la vinculació i transferència de comptes en els informes de despeses (els informes de despeses no es tindran en compte a la comptabilitat) ACCOUNTING_ENABLE_LETTERING=Enable the lettering function in the accounting -ACCOUNTING_ENABLE_AUTOLETTERING=Enable the automatic lettering when transferring to accounting +ACCOUNTING_ENABLE_AUTOLETTERING=Habiliteu la lletra automàtica en traspassar a la comptabilitat ## Export NotExportLettering=Do not export the lettering when generating the file -NotifiedExportDate=Marca les línies exportades com a Exportades (per a modificar una línia, hauràs de suprimir tota la transacció i tornar-la a transferir a la comptabilitat) +NotifiedExportDate=Marca les línies exportades com a Exportades (per a modificar una línia, hauràs de suprimir tota la transacció i tornar-la a transferir a la comptabilitat) NotifiedValidationDate=Validar i bloquejar les entrades exportades (mateix efecte que la característica "%s", la modificació i la supressió de les línies DEFINITIVAMENT no seran possibles) -NotifiedExportFull=Export documents ? +NotifiedExportFull=Exportar documents? DateValidationAndLock=Validació de data i bloqueig ConfirmExportFile=Confirmació de la generació del fitxer d'exportació comptable? ExportDraftJournal=Exporta els esborranys del llibre @@ -415,11 +415,11 @@ Calculated=Calculat Formula=Fórmula ## Reconcile -LetteringAuto=Reconcile auto -LetteringManual=Reconcile manual +LetteringAuto=Reconciliació automàtica +LetteringManual=Reconciliació manual Unlettering=No reconciliar -UnletteringAuto=Unreconcile auto -UnletteringManual=Unreconcile manual +UnletteringAuto=Desconciliar automàticament +UnletteringManual=Desconciliar manual AccountancyNoLetteringModified=Cap conciliació modificada AccountancyOneLetteringModifiedSuccessfully=Una conciliació modificada amb èxit AccountancyLetteringModifiedSuccessfully=La reconciliació %s s'ha modificat correctament @@ -428,8 +428,8 @@ AccountancyOneUnletteringModifiedSuccessfully=S'ha desfet correctament una conci AccountancyUnletteringModifiedSuccessfully=%s conciliació desfeta correctament ## Confirm box -ConfirmMassUnletteringAuto=Bulk auto unreconcile confirmation -ConfirmMassUnletteringManual=Bulk manual unreconcile confirmation +ConfirmMassUnletteringAuto=Confirmació de desconciliació automàtica massiva +ConfirmMassUnletteringManual=Confirmació de desconciliació manual massiva ConfirmMassUnletteringQuestion=Are you sure you want to unreconcile the %s selected record(s)? ConfirmMassDeleteBookkeepingWriting=Confirmació d'esborrament massiu ConfirmMassDeleteBookkeepingWritingQuestion=Això suprimirà la transacció de la comptabilitat (se suprimiran totes les línies relacionades amb la mateixa transacció) Esteu segur que voleu suprimir els registres seleccionats %s? @@ -450,7 +450,7 @@ AccountancyErrorMismatchLetterCode=No coincideix en el codi de conciliació AccountancyErrorMismatchBalanceAmount=El saldo (%s) no és igual a 0 AccountancyErrorLetteringBookkeeping=S'han produït errors relacionats amb les transaccions: %s ErrorAccountNumberAlreadyExists=El número de comptabilitat %s ja existeix -ErrorArchiveAddFile=Can't put "%s" file in archive +ErrorArchiveAddFile=No es pot posar el fitxer «%s» a l'arxiu ## Import ImportAccountingEntries=Entrades de comptabilitat diff --git a/htdocs/langs/ca_ES/admin.lang b/htdocs/langs/ca_ES/admin.lang index 78fd6572a90..ff208a7cf9d 100644 --- a/htdocs/langs/ca_ES/admin.lang +++ b/htdocs/langs/ca_ES/admin.lang @@ -277,7 +277,7 @@ PaperSize=Tipus de paper Orientation=Orientació SpaceX=Àrea X SpaceY=Àrea Y -FontSize=Mida del tipus de lletra +FontSize=Mida de la lletra tipogràfica Content=Contingut ContentForLines=Contingut per a mostrar a cada producte o servei (de la variable __LINES__ de Contingut) NoticePeriod=Preavís @@ -451,14 +451,14 @@ ExtrafieldCheckBox=Caselles de selecció ExtrafieldCheckBoxFromList=Caselles de selecció des d'una taula ExtrafieldLink=Enllaç a un objecte ComputedFormula=Camp calculat -ComputedFormulaDesc=Podeu introduir aquí una fórmula utilitzant altres propietats de l’objecte o qualsevol codi PHP per a obtenir un valor calculat dinàmicament. Podeu utilitzar qualsevol fórmula compatible amb PHP, inclòs l'operador condicional «?» i els següents objectes globals: $db, $conf, $langs, $mysoc, $user, $object.
ATENCIÓ: Només poden estar disponibles algunes propietats de $object. Si necessiteu una propietat no carregada, només cal que incorporeu l'objecte a la vostra fórmula com en el segon exemple.
Utilitzar un camp calculat implica que no podreu introduir cap valor des de la interfície. A més, si hi ha un error de sintaxi, la fórmula pot no tornar res.

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

Exemple per a tornar a carregar l'objecte
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

Un altre exemple de fórmula per a forçar la càrrega de l'objecte i el seu objecte pare:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Emmagatzemar el camp computat ComputedpersistentDesc=Els camps addicionals calculats s’emmagatzemaran a la base de dades, però el valor només es recalcularà quan es canviï l’objecte d’aquest camp. Si el camp calculat depèn d'altres objectes o dades globals, aquest valor pot ser incorrecte!! ExtrafieldParamHelpPassword=Si deixeu aquest camp en blanc, vol dir que aquest valor s'emmagatzemarà sense xifratge (el camp només s'ha d'amagar amb una estrella a la pantalla).
Establiu 'auto' per a utilitzar la regla de xifratge predeterminada per a desar la contrasenya a la base de dades (aleshores, el valor llegit serà només el hash, no hi ha manera de recuperar el valor original) ExtrafieldParamHelpselect=La llista de valors ha de ser un conjunt de línies amb un format del tipus clau,valor (on la clau no pot ser '0')

per exemple:
1,valor1
2,valor2
codi3,valor3
...

Per a tenir la llista depenent d'una altra llista d'atributs complementaris:
1,valor1|options_codi_llista_pare:clau_pare
2,valor2|options_codi_llista_pare:clau_pare

Per a tenir la llista depenent d'una altra llista:
1,valor1|codi_llista_pare:clau_pare
2,valor2|codi_llista_pare:clau_pare ExtrafieldParamHelpcheckbox=La llista de valor ha de ser un conjunt de línies del tipus clau,valor (on la clau no pot ser '0')

per exemple:
1,valor1
2,valor2
3,valor3
... ExtrafieldParamHelpradio=La llista de valor ha de ser un conjunt de línies del tipus clau,valor (on la clau no pot ser '0')

per exemple:
1,valor1
2,valor2
3,valor3
... -ExtrafieldParamHelpsellist=Llista de valors que provenen d’una taula
Sintaxi: nom_taula:nom_camp:id_camp::filtresql
Exemple: c_typent:libelle:id::filtresql

- id_camp ha de ser necessàriament una clau primària numèrica
- el filtresql és una condició SQL. Pot ser una prova simple (p.ex. active=1) per a mostrar només els valors actius
També pots utilitzar $ID$ al filtre per a representar el ID de l'actual objecte en curs
Per a utilitzar un SELECT al filtre, utilitzeu la paraula clau $SEL$ per a evitar la protecció anti injecció.
Si vols filtrar camps addicionals, utilitza la sintaxi extra.nom_camp=... (on nom_camp és el codi del camp addicional)

Per a tenir la llista en funció d’una altra llista d’atributs complementaris:
c_typent:libelle:id:options_codi_llista_mare|parent_column:filtre

Per a tenir la llista en funció d'una altra llista:
c_typent:libelle:id:codi_llista_mare|parent_column:filter +ExtrafieldParamHelpsellist=Llista de valors que provenen d’una taula
Sintaxi: nom_taula:nom_camp:id_camp::filtresql
Exemple: c_typent:libelle:id::filtresql

- id_camp ha de ser necessàriament una clau primària numèrica
- el filtresql és una condició SQL. Pot ser una prova simple (p. ex. active=1) per a mostrar només els valors actius
També pots utilitzar $ID$ al filtre per a representar el ID de l'actual objecte en curs
Per a utilitzar un SELECT al filtre, utilitzeu la paraula clau $SEL$ per a evitar la protecció anti injecció.
Si vols filtrar camps addicionals, utilitza la sintaxi extra.nom_camp=... (on nom_camp és el codi del camp addicional)

Per a tenir la llista en funció d’una altra llista d’atributs complementaris:
c_typent:libelle:id:options_codi_llista_mare|parent_column:filtre

Per a tenir la llista en funció d'una altra llista:
c_typent:libelle:id:codi_llista_mare|parent_column:filter ExtrafieldParamHelpchkbxlst=La llista de valors prové d'una taula
Sintaxi: nom_taula:nom_camp:id_camp::filtre
Exemple: c_typent:libelle:id::filtre

filtre pot ser una comprovació simple (p. ex. active=1) per a mostrar només el valor actiu
També podeu utilitzar $ID$ en el filtre per a representar l'ID actual de l'objecte en curs
Per a fer un SELECT al filtre, utilitzeu $SEL$
si voleu filtrar per camps extra, utilitzeu la sintaxi extra.fieldcode=... (on el codi de camp és el codi del camp extra)

Per a tenir la llista depenent d'una altra llista d'atributs complementaris:
c_typent:libelle:id:options_codi_llista_pare|parent_column: filter

Per a tenir la llista depenent d'una altra llista:
c_typent:libelle:id:codi_llista_pare|parent_column:filter ExtrafieldParamHelplink=Els paràmetres han de ser ObjectName:Classpath
Sintaxi: ObjectName:Classpath ExtrafieldParamHelpSeparator=Manteniu-lo buit per un simple separador
Configureu-ho a 1 per a un separador col·lapsador (obert per defecte per a la sessió nova, i es mantindrà l'estat de cada sessió d'usuari)
Configureu-ho a 2 per a un separador col·lapsat (es va desplomar per defecte per a la sessió nova, i es mantindrà l'estat per a cada sessió d'usuari) @@ -645,7 +645,7 @@ Module2300Name=Tasques programades Module2300Desc=Gestió de tasques programades (àlies cron o taula de crons) Module2400Name=Esdeveniments/Agenda Module2400Desc=Seguiment d'esdeveniments. Registre d'esdeveniments automàtics per a fer el seguiment o registrar esdeveniments manuals o reunions. Aquest és el mòdul principal per a una bona gestió de la relació amb clients o proveïdors. -Module2430Name=Booking Calendar System +Module2430Name=Sistema de calendari de reserves Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=SGD / GCE Module2500Desc=Sistema de gestió de documents / Gestió de continguts electrònics. Organització automàtica dels vostres documents generats o emmagatzemats. Compartiu-los quan ho necessiteu. @@ -662,7 +662,7 @@ Module2900Name=GeoIPMaxmind Module2900Desc=Capacitats de conversió GeoIP Maxmind Module3200Name=Arxius inalterables Module3200Desc=Activa el registre d'alguns esdeveniments de negoci en un registre inalterable. Els esdeveniments s'arxiven en temps real. El registre és una taula d'esdeveniments encadenats que només es poden llegir i exportar. Aquest mòdul pot ser obligatori per a alguns països. -Module3300Name=Module Builder +Module3300Name=Creador de mòduls Module3200Desc=Activa el registre d'alguns esdeveniments de negoci en un registre inalterable. Els esdeveniments s'arxiven en temps real. El registre és una taula d'esdeveniments encadenats que només es poden llegir i exportar. Aquest mòdul pot ser obligatori per a alguns països. Module3400Name=Xarxes socials Module3400Desc=Activa els camps de les xarxes socials a tercers i adreces (skype, twitter, facebook...). @@ -704,8 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Afegeix funcions per a gestionar Incoterms Module63000Name=Recursos Module63000Desc=Gestiona els recursos (impressores, cotxes, habitacions...) que pots compartir en esdeveniments +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Recepcions -Permission11=Consulta factures de client +Permission11=Consulta les factures dels clients (i els cobraments) Permission12=Crear/Modificar factures Permission13=Invalida les factures dels clients Permission14=Valida les factures dels clients @@ -947,7 +949,7 @@ Permission1190=Aprova (segona aprovació) comandes de compra Permission1191=Exporta les comandes dels proveïdors i els seus atributs Permission1201=Obté el resultat d'una exportació Permission1202=Crear/modificar exportacions -Permission1231=Consulta factures de proveïdor +Permission1231=Consulta les factures de proveïdors (i els pagaments) Permission1232=Crea/modifica factures de proveïdor Permission1233=Valida factures de proveïdor Permission1234=Suprimeix factures de proveïdor @@ -981,11 +983,11 @@ Permission4003=Esborra habilitat/ocupació/posició Permission4021=Read evaluations (yours and your subordinates) Permission4022=Create/modify evaluations Permission4023=Validate evaluation -Permission4025=Delete evaluation -Permission4028=See comparison menu +Permission4025=Elimina l'avaluació +Permission4028=Veure menú comparatiu Permission4031=Llegeix informació personal Permission4032=Escriu informació personal -Permission4033=Read all evaluations (even those of user not subordinates) +Permission4033=Consulta totes les avaluacions (fins i tot les dels usuaris no subordinats) Permission10001=Llegiu el contingut del lloc web Permission10002=Crea / modifica contingut del lloc web (contingut html i javascript) Permission10003=Creeu / modifiqueu el contingut del lloc web (codi php dinàmic). Perillós, s'ha de reservar per a desenvolupadors restringits. @@ -1234,7 +1236,7 @@ SetupDescription4=  %s -> %s

Aquest programari és SetupDescription5=Altres entrades del menú d'instal·lació gestionen paràmetres opcionals. SetupDescriptionLink= %s - %s SetupDescription3b=Paràmetres bàsics utilitzats per a personalitzar el comportament predeterminat de la vostra aplicació (p. ex., per a funcions relacionades amb el país). -SetupDescription4b=Aquest programari és un conjunt de molts mòduls / aplicacions. Cal activar i configurar els mòduls relacionats amb les vostres necessitats. Les entrades del menú apareixeran amb l’activació d’aquests mòduls. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Esdeveniments de seguretat que s’auditen NoSecurityEventsAreAduited=No s’audita cap esdeveniment de seguretat. Podeu activar-les des del menú %s Audit=Esdeveniments de seguretat @@ -1256,7 +1258,7 @@ AreaForAdminOnly=Els paràmetres de configuració només poden ser establerts pe SystemInfoDesc=La informació del sistema és informació tècnica diversa que obteniu en mode de només lectura i visible només per als administradors. SystemAreaForAdminOnly=Aquesta àrea només està disponible per als usuaris administradors. Els permisos d'usuari de Dolibarr no poden canviar aquesta restricció. CompanyFundationDesc=Editeu la informació de la vostra empresa / organització. Feu clic al botó "%s" al final de la pàgina quan hagi acabat. -MoreNetworksAvailableWithModule=More social networks may be available by enabling the module "Social networks". +MoreNetworksAvailableWithModule=És possible que hi hagi més xarxes socials disponibles activant el mòdul "Xarxes socials". AccountantDesc=Si teniu un comptable extern, podeu editar aquí la seva informació. AccountantFileNumber=Número de fila DisplayDesc=Els paràmetres que afecten l'aspecte i la presentació de l'aplicació es poden modificar aquí. @@ -1274,7 +1276,7 @@ TriggerActiveAsModuleActive=Els activadors d'aquest fitxer estan actius, ja que GeneratedPasswordDesc=Trieu el mètode que s'utilitzarà per a les contrasenyes generades automàticament. DictionaryDesc=Afegeix totes les dades de referència. Pots afegir els teus valors per defecte. ConstDesc=Aquesta pàgina permet editar (anul·lar) paràmetres no disponibles en altres pàgines. Aquests són paràmetres reservats només per a desenvolupadors o solucions avançades de problemes. -MiscellaneousOptions=Miscellaneous options +MiscellaneousOptions=Opcions diverses MiscellaneousDesc=Aquí es defineixen la resta de paràmetres relacionats amb la seguretat. LimitsSetup=Configuració de límits i precisions LimitsDesc=Podeu definir aquí els límits i precisions utilitzats per Dolibarr @@ -1452,8 +1454,8 @@ InvoiceCheckPosteriorDate=Comproveu la data de fabricació abans de la validaci InvoiceCheckPosteriorDateHelp=La validació d'una factura estarà prohibida si la seva data és anterior a la data de l'última factura del mateix tipus. InvoiceOptionCategoryOfOperations=Display the mention "category of operations" on the invoice. InvoiceOptionCategoryOfOperationsHelp=Depending on the situation, the mention will appear in the form:
- Category of operations: Delivery of goods
- Category of operations: Provision of services
- Category of operations: Mixed - Delivery of goods & provision of services -InvoiceOptionCategoryOfOperationsYes1=Yes, below the address block -InvoiceOptionCategoryOfOperationsYes2=Yes, in the lower left-hand corner +InvoiceOptionCategoryOfOperationsYes1=Sí, a sota del bloc d'adreces +InvoiceOptionCategoryOfOperationsYes2=Sí, a la cantonada inferior esquerra ##### Proposals ##### PropalSetup=Configuració del mòdul Pressupostos ProposalsNumberingModules=Models de numeració de pressupostos @@ -1496,7 +1498,7 @@ WatermarkOnDraftContractCards=Marca d'aigua en contractes (en cas d'estar buit) ##### Members ##### MembersSetup=Configuració del mòdul Socis MemberMainOptions=Opcions principals -MemberCodeChecker=Options for automatic generation of member codes +MemberCodeChecker=Opcions per a la generació automàtica de codis de soci AdherentLoginRequired= Gestiona un compte d'usuari per a cada soci AdherentMailRequired=Cal un correu electrònic per a crear un soci nou MemberSendInformationByMailByDefault=La casella de selecció per a enviar una confirmació per correu electrònic als socis (validació o nova subscripció) està activada per defecte @@ -1831,9 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Utilitzeu tipus d'esdeveniments (gestionats en el menú Co AGENDA_USE_EVENT_TYPE_DEFAULT=Estableix automàticament aquest valor predeterminat per al tipus d'esdeveniment en el formulari de creació de l'esdeveniment AGENDA_DEFAULT_FILTER_TYPE=Estableix automàticament aquest tipus d'esdeveniment al filtre de cerca de la vista d'agenda AGENDA_DEFAULT_FILTER_STATUS=Estableix automàticament aquest estat per a esdeveniments al filtre de cerca de la visualització d'agenda -AGENDA_EVENT_PAST_COLOR=Past event color -AGENDA_EVENT_CURRENT_COLOR=Current event color -AGENDA_EVENT_FUTURE_COLOR=Future event color +AGENDA_EVENT_PAST_COLOR=Color de l'esdeveniment passat +AGENDA_EVENT_CURRENT_COLOR=Color de l'esdeveniment actual +AGENDA_EVENT_FUTURE_COLOR=Color de l'esdeveniment futur AGENDA_DEFAULT_VIEW=Quina vista voleu obrir de manera predeterminada en seleccionar el menú Agenda AGENDA_REMINDER_BROWSER=Activa el recordatori d'esdeveniments al navegador de l'usuari (Quan s'arriba a la data de recordatori, el navegador mostra una finestra emergent. Cada usuari pot desactivar aquestes notificacions des de la configuració de notificacions del navegador). AGENDA_REMINDER_BROWSER_SOUND=Habilita les notificacions sonores @@ -2318,8 +2320,8 @@ IconOnly=Només icona: només text a la informació sobre eines INVOICE_ADD_ZATCA_QR_CODE=Mostra el codi QR ZATCA a les factures INVOICE_ADD_ZATCA_QR_CODEMore=Alguns països àrabs necessiten aquest codi QR a les seves factures INVOICE_ADD_SWISS_QR_CODE=Mostra el codi QR-Bill suís a les factures -INVOICE_SHOW_SHIPPING_ADDRESS=Show shipping address -INVOICE_SHOW_SHIPPING_ADDRESSMore=Compulsory mention for France +INVOICE_SHOW_SHIPPING_ADDRESS=Mostra l'adreça d'enviament +INVOICE_SHOW_SHIPPING_ADDRESSMore=Menció obligatòria per a França UrlSocialNetworksDesc=Enllaç URL de la xarxa social. Utilitzeu {socialid} per a la part variable que conté l'identificador de la xarxa social. IfThisCategoryIsChildOfAnother=Si aquesta categoria és fill d'una altra DarkThemeMode=Mode de tema fosc @@ -2355,14 +2357,18 @@ HelpCssOnViewDesc=The Css used when viewing the field. HelpCssOnListDesc=The Css used when field is inside a list table.
Example: "tdoverflowmax200" RECEPTION_PDF_HIDE_ORDERED=Hide the quantity ordered on the generated documents for receptions MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT=Show the price on the generated documents for receptions -WarningDisabled=Warning disabled -LimitsAndMitigation=Access limits and mitigation -DesktopsOnly=Desktops only -DesktopsAndSmartphones=Desktops et smartphones -AllowOnlineSign=Allow online signing +WarningDisabled=Avís desactivat +LimitsAndMitigation=Límits d'accés i mitigació +DesktopsOnly=Només escriptoris +DesktopsAndSmartphones=Escriptoris i telèfons intel·ligents +AllowOnlineSign=Permet la signatura en línia AllowExternalDownload=Allow external download (without login, using a shared link) DeadlineDayVATSubmission=Deadline day for vat submission on the next month -MaxNumberOfAttachementOnForms=Max number of joinded files in a form +MaxNumberOfAttachementOnForms=Nombre màxim de fitxers units en un formulari IfDefinedUseAValueBeetween=If defined, use a value between %s and %s -Reload=Reload -ConfirmReload=Confirm module reload +Reload=Recarregar +ConfirmReload=Confirmeu la recàrrega del mòdul +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/ca_ES/agenda.lang b/htdocs/langs/ca_ES/agenda.lang index 0e5ffda43e7..8161362f142 100644 --- a/htdocs/langs/ca_ES/agenda.lang +++ b/htdocs/langs/ca_ES/agenda.lang @@ -68,6 +68,7 @@ ShipmentBackToDraftInDolibarr=Enviament %s retornat a l'estat d'esborrany ShipmentDeletedInDolibarr=Expedició %s eliminada ShipmentCanceledInDolibarr=Enviament %s cancel·lat ReceptionValidatedInDolibarr=S'ha validat la recepció %s +ReceptionDeletedInDolibarr=S'ha suprimit la recepció %s ReceptionClassifyClosedInDolibarr=Recepció %s classificada tancada OrderCreatedInDolibarr=Comanda %s creada OrderValidatedInDolibarr=Comanda %s validada @@ -78,7 +79,7 @@ OrderApprovedInDolibarr=Comanda %s aprovada OrderRefusedInDolibarr=Comanda %s rebutjada OrderBackToDraftInDolibarr=Comanda %s tornada a estat esborrany ProposalSentByEMail=Pressupost %s enviat per e-mail -ContractSentByEMail=Contracte %s enviat per correu electrònic +ContractSentByEMail=Contracte %s enviat per correu electrònic OrderSentByEMail=Comanda a proveïdor %s enviada per e-mail InvoiceSentByEMail=Factura a client %s enviada per e-mail SupplierOrderSentByEMail=Comanda de compra %s enviada per e-mail @@ -87,6 +88,7 @@ SupplierInvoiceSentByEMail=Factura de proveïdor %s enviada per e-mail ShippingSentByEMail=Enviament %s enviat per email ShippingValidated= Enviament %s validat InterventionSentByEMail=Intervenció %s enviada per e-mail +ProjectSentByEMail=Project %s sent by email ProposalDeleted=Pressupost esborrat OrderDeleted=Comanda esborrada InvoiceDeleted=Factura esborrada @@ -175,5 +177,6 @@ ReminderType=Tipus de devolució de trucada AddReminder=Crea una notificació de recordatori automàtica per a aquest esdeveniment ErrorReminderActionCommCreation=S'ha produït un error en crear la notificació de recordatori per a aquest esdeveniment BrowserPush=Notificació emergent del navegador +Reminders=Recordatoris ActiveByDefault=Habilitat per defecte Until=fins a diff --git a/htdocs/langs/ca_ES/banks.lang b/htdocs/langs/ca_ES/banks.lang index 85a966c9a0b..e72b34bf506 100644 --- a/htdocs/langs/ca_ES/banks.lang +++ b/htdocs/langs/ca_ES/banks.lang @@ -49,6 +49,9 @@ BankAccountDomiciliation=Dades bancàries BankAccountCountry=País del compte BankAccountOwner=Nom del titular del compte BankAccountOwnerAddress=Direcció del titular del compte +BankAccountOwnerZip=Codi postal del titular del compte +BankAccountOwnerTown=Ciutat del titular del compte +BankAccountOwnerCountry=País del titular del compte CreateAccount=Crear compte NewBankAccount=Compte nou NewFinancialAccount=Compte financer nou diff --git a/htdocs/langs/ca_ES/bills.lang b/htdocs/langs/ca_ES/bills.lang index 44769c6d765..70c5d1e927f 100644 --- a/htdocs/langs/ca_ES/bills.lang +++ b/htdocs/langs/ca_ES/bills.lang @@ -162,7 +162,7 @@ ErrorThisPartOrAnotherIsAlreadyUsedSoDiscountSerieCantBeRemoved=Aquesta part o u ErrorInvoiceIsNotLastOfSameType=Error: la data de la factura %s és %s. Ha de ser posterior o igual a l'última data per a les factures del mateix tipus (%s). Si us plau, canvieu la data de la factura. BillFrom=Emissor BillTo=Enviar a -ShippingTo=Shipping to +ShippingTo=L'enviament a ActionsOnBill=Accions en la factura RecurringInvoiceTemplate=Plantilla / Factura recurrent NoQualifiedRecurringInvoiceTemplateFound=No es pot generar cap factura de plantilla periòdica. diff --git a/htdocs/langs/ca_ES/boxes.lang b/htdocs/langs/ca_ES/boxes.lang index 21c7a45e648..2f762867307 100644 --- a/htdocs/langs/ca_ES/boxes.lang +++ b/htdocs/langs/ca_ES/boxes.lang @@ -24,6 +24,7 @@ BoxFicheInter=Últimes intervencions BoxCurrentAccounts=Balanç de comptes oberts BoxTitleMemberNextBirthdays=Aniversaris d'aquest mes (membres) BoxTitleMembersByType=Membres per tipus i estat +BoxTitleMembersByTags=Members by tags and status BoxTitleMembersSubscriptionsByYear=Subscripcions de membres per any BoxTitleLastRssInfos=Últimes %s notícies de %s BoxTitleLastProducts=Productes / Serveis: últims %s modificats @@ -44,7 +45,7 @@ BoxTitleSupplierOrdersAwaitingReception=Comandes del proveïdor en espera de rec BoxTitleLastModifiedContacts=Adreces i contactes: últims %s modificats BoxMyLastBookmarks=Adreces d'interès: últims %s BoxOldestExpiredServices=Serveis antics expirats -BoxOldestActions=Oldest events to do +BoxOldestActions=Els esdeveniments més antics per a fer BoxLastExpiredServices=Últims %s contactes amb serveis actius expirats BoxTitleLastActionsToDo=Últimes %s accions a fer BoxTitleOldestActionsToDo=Oldest %s events to do, not completed diff --git a/htdocs/langs/ca_ES/categories.lang b/htdocs/langs/ca_ES/categories.lang index 10b131874a7..adad27d415f 100644 --- a/htdocs/langs/ca_ES/categories.lang +++ b/htdocs/langs/ca_ES/categories.lang @@ -42,7 +42,7 @@ MemberHasNoCategory=Aquest soci no es troba en cap etiqueta ContactHasNoCategory=Aquest contacte no es troba en cap etiqueta ProjectHasNoCategory=Aquest projecte no es troba en cap etiqueta ClassifyInCategory=Afegeix a una etiqueta -RemoveCategory=Remove category +RemoveCategory=Elimina la categoria NotCategorized=Sense etiqueta CategoryExistsAtSameLevel=Aquesta categoria ja existeix per aquesta referència ContentsVisibleByAllShort=Contingut visible per tots @@ -88,7 +88,7 @@ DeleteFromCat=Elimina de l'etiqueta ExtraFieldsCategories=Atributs complementaris CategoriesSetup=Configuració d'etiquetes CategorieRecursiv=Enllaça amb l'etiqueta mare automàticament -CategorieRecursivHelp=If option is on, when you add an object into a subcategory, the object will also be added into the parent categories. +CategorieRecursivHelp=Si l'opció està activada, quan afegiu un objecte a una subcategoria, l'objecte també s'afegirà a les categories mares. AddProductServiceIntoCategory=Afegir el següent producte/servei AddCustomerIntoCategory=Assigna la categoria al client AddSupplierIntoCategory=Assigna la categoria al proveïdor diff --git a/htdocs/langs/ca_ES/commercial.lang b/htdocs/langs/ca_ES/commercial.lang index 43ab714cd2a..d432e1a2abe 100644 --- a/htdocs/langs/ca_ES/commercial.lang +++ b/htdocs/langs/ca_ES/commercial.lang @@ -75,15 +75,15 @@ DraftPropals=Pressupostos esborrany NoLimit=Sense límit ToOfferALinkForOnlineSignature=Enllaç per a la signatura en línia WelcomeOnOnlineSignaturePageProposal=Benvingut a la pàgina per a acceptar pressupostos de %s -WelcomeOnOnlineSignaturePageContract=Welcome to %s Contract PDF Signing Page +WelcomeOnOnlineSignaturePageContract=Benvingut a la pàgina de signatura de contracte en PDF %s WelcomeOnOnlineSignaturePageFichinter=Welcome to %s Intervention PDF Signing Page ThisScreenAllowsYouToSignDocFromProposal=Aquesta pantalla us permet acceptar i signar, o rebutjar, una cotització / proposta comercial -ThisScreenAllowsYouToSignDocFromContract=This screen allow you to sign contract on PDF format online. +ThisScreenAllowsYouToSignDocFromContract=Aquesta pantalla us permet signar el contracte en format PDF en línia. ThisScreenAllowsYouToSignDocFromFichinter=This screen allow you to sign intervention on PDF format online. ThisIsInformationOnDocumentToSignProposal=Aquesta és la informació del document a acceptar o rebutjar -ThisIsInformationOnDocumentToSignContract=This is information on contract to sign -ThisIsInformationOnDocumentToSignFichinter=This is information on intervention to sign +ThisIsInformationOnDocumentToSignContract=Aquesta és la informació del contracte per a signar +ThisIsInformationOnDocumentToSignFichinter=Aquesta és la informació sobre la intervenció a signar SignatureProposalRef=Signatura de pressupost / proposta comercial %s -SignatureContractRef=Signature of contract %s -SignatureFichinterRef=Signature of intervention %s +SignatureContractRef=Signatura del contracte %s +SignatureFichinterRef=Signatura d'intervenció %s FeatureOnlineSignDisabled=La funcionalitat de signatura en línia estava desactivada o bé el document va ser generat abans que fos habilitada la funció diff --git a/htdocs/langs/ca_ES/companies.lang b/htdocs/langs/ca_ES/companies.lang index ba49594bb39..f5af27b9064 100644 --- a/htdocs/langs/ca_ES/companies.lang +++ b/htdocs/langs/ca_ES/companies.lang @@ -313,11 +313,11 @@ CustomerAbsoluteDiscountShort=Descompte fixe CompanyHasRelativeDiscount=Aquest client té un descompte per defecte de %s%% CompanyHasNoRelativeDiscount=Aquest client no té descomptes relatius per defecte HasRelativeDiscountFromSupplier=You have a default discount of %s%% with this vendor -HasNoRelativeDiscountFromSupplier=No default relative discount with this vendor +HasNoRelativeDiscountFromSupplier=No hi ha descompte relatiu predeterminat amb aquest venedor CompanyHasAbsoluteDiscount=Aquest client té descomptes disponibles (notes de crèdit o bestretes) per %s %s CompanyHasDownPaymentOrCommercialDiscount=Aquest client té un descompte disponible (comercial, de pagament) per a %s%s CompanyHasCreditNote=Aquest client encara té abonaments per %s %s -HasNoAbsoluteDiscountFromSupplier=No discount/credit available from this vendor +HasNoAbsoluteDiscountFromSupplier=No hi ha descompte/crèdit disponible d'aquest venedor HasAbsoluteDiscountFromSupplier=Disposes de descomptes (notes de crèdits o pagaments pendents) per a %s %s d'aquest proveïdor HasDownPaymentOrCommercialDiscountFromSupplier=Teniu descomptes disponibles (comercials, pagaments inicials) de %s %s d'aquest proveïdor HasCreditNoteFromSupplier=Teniu notes de crèdit per a %s %s d'aquest proveïdor @@ -433,7 +433,7 @@ DolibarrLogin=Nom d'usuari de Dolibarr NoDolibarrAccess=Sense accés d'usuari ExportDataset_company_1=Tercers (empreses/entitats/persones físiques) i propietats ExportDataset_company_2=Contactes i propietats -ImportDataset_company_1=Usuaris i les seves propietats +ImportDataset_company_1=Tercers i les seves propietats ImportDataset_company_2=Contactes/Adreces i atributs addicionals de tercers ImportDataset_company_3=Comptes Bancaris de tercers ImportDataset_company_4=Tercers/Comercials (Assigna usuaris comercials / tercers) @@ -503,3 +503,4 @@ TwoRecordsOfCompanyName=more than one record exists for this company, please con CompanySection=Secció d'empresa ShowSocialNetworks=Mostra les xarxes socials HideSocialNetworks=Amaga les xarxes socials + diff --git a/htdocs/langs/ca_ES/compta.lang b/htdocs/langs/ca_ES/compta.lang index 5bbdda62aab..348a68aad1b 100644 --- a/htdocs/langs/ca_ES/compta.lang +++ b/htdocs/langs/ca_ES/compta.lang @@ -246,12 +246,12 @@ TurnoverPerProductInCommitmentAccountingNotRelevant=L'informe de volum de negoci TurnoverPerSaleTaxRateInCommitmentAccountingNotRelevant=L'informe del volum de negocis cobrat per la venda no està disponible. Aquest informe només està disponible per a la facturació facturada. CalculationMode=Mode de càlcul AccountancyJournal=Diari de codi de comptable -ACCOUNTING_VAT_SOLD_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for VAT on sales (used if not defined on VAT dictionary setup) -ACCOUNTING_VAT_BUY_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for VAT on purchases (used if not defined on VAT dictionary setup) -ACCOUNTING_VAT_PAY_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for paying VAT -ACCOUNTING_ACCOUNT_CUSTOMER=Account (from the Chart Of Account) used for "customer" third parties +ACCOUNTING_VAT_SOLD_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per a l'IVA a les vendes (utilitzat si no està definit a la configuració del diccionari d'IVA) +ACCOUNTING_VAT_BUY_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per a l'IVA a les compres (utilitzat si no està definit a la configuració del diccionari d'IVA) +ACCOUNTING_VAT_PAY_ACCOUNT=Compte (del pla comptable) que s'utilitzarà com a compte predeterminat per pagar l'IVA +ACCOUNTING_ACCOUNT_CUSTOMER=Compte (del pla comptable) utilitzat per a tercers «clients». ACCOUNTING_ACCOUNT_CUSTOMER_Desc=El compte comptable dedicat definit a la fitxa de tercer només s’utilitzarà per a la comptabilitat auxiliar. Aquest s'utilitzarà per al llibre major i com a valor per defecte de la comptabilitat auxiliar si no es defineix un compte comptable de client dedicat a tercers. -ACCOUNTING_ACCOUNT_SUPPLIER=Account (from the Chart of Account) used for the "vendor" third parties +ACCOUNTING_ACCOUNT_SUPPLIER=Compte (del pla comptable) utilitzat per a tercers «proveïdors». ACCOUNTING_ACCOUNT_SUPPLIER_Desc=El compte comptable dedicat definit a la fitxa de tercers només s'utilitzarà per al Llibre Major. Aquest serà utilitzat pel Llibre Major i com a valor predeterminat del subcompte si no es defineix un compte comptable a la fitxa del tercer. ConfirmCloneTax=Confirma el clonat d'un impost social / fiscal ConfirmCloneVAT=Confirma la còpia d’una declaració d’IVA diff --git a/htdocs/langs/ca_ES/dict.lang b/htdocs/langs/ca_ES/dict.lang index 6c44a20dfbb..7451026254e 100644 --- a/htdocs/langs/ca_ES/dict.lang +++ b/htdocs/langs/ca_ES/dict.lang @@ -247,6 +247,7 @@ CountryJE=Jersey CountryME=Monténégro CountryBL=Sant Bartomeu CountryMF=Saint-Martin +CountryXK=Kosovo ##### Civilities ##### CivilityMME=Senyora diff --git a/htdocs/langs/ca_ES/errors.lang b/htdocs/langs/ca_ES/errors.lang index 0818df26ea1..813e62d4cb9 100644 --- a/htdocs/langs/ca_ES/errors.lang +++ b/htdocs/langs/ca_ES/errors.lang @@ -14,7 +14,7 @@ ErrorLoginAlreadyExists=El nom d'usuari %s ja existeix. ErrorGroupAlreadyExists=El grup %s ja existeix. ErrorEmailAlreadyExists=El correu electrònic %s ja existeix. ErrorRecordNotFound=Registre no trobat -ErrorRecordNotFoundShort=Not found +ErrorRecordNotFoundShort=No trobat ErrorFailToCopyFile=No s'ha pogut copiar el fitxer " %s " a " %s ". ErrorFailToCopyDir=No s'ha pogut copiar el directori ' %s ' a ' %s '. ErrorFailToRenameFile=Error al renomenar l'arxiu '%s' a '%s'. @@ -49,7 +49,7 @@ ErrorBadImageFormat=El fitxer d'imatge no té un format compatible (el vostre PH ErrorBadDateFormat=El valor '%s' té un format de data no reconegut ErrorWrongDate=La data no és correcta. ErrorFailedToWriteInDir=No es pot escriure a la carpeta %s -ErrorFailedToBuildArchive=Failed to build archive file %s +ErrorFailedToBuildArchive=No s'ha pogut crear el fitxer d'arxiu %s ErrorFoundBadEmailInFile=S'ha trobat una sintaxi incorrecta del correu electrònic per a les línies %s al fitxer (exemple de la línia %s amb email=%s) ErrorUserCannotBeDelete=No es pot eliminar l'usuari. És possible que estigui relacionat amb entitats de Dolibarr. ErrorFieldsRequired=Alguns camps obligatoris s'han deixat en blanc. @@ -78,7 +78,7 @@ ErrorNoValueForCheckBoxType=Empleneu el valor de la llista de caselles de selecc ErrorNoValueForRadioType=Els valors de la llista han de ser indicats ErrorBadFormatValueList=La llista de valors no pot tenir més d'una coma: %s, però necessita com a mínim una: clau,valor ErrorFieldCanNotContainSpecialCharacters=El camp %s no pot contenir caràcters especials. -ErrorFieldCanNotContainSpecialNorUpperCharacters=The field %s must not contain special characters, nor upper case characters, and must start with an alphabetical character (a-z) +ErrorFieldCanNotContainSpecialNorUpperCharacters=El camp %s no ha de contenir caràcters especials ni majúscules i ha de començar amb un caràcter alfabètic (a-z) ErrorFieldMustHaveXChar=El camp %s ha de tenir com a mínim %s caràcters. ErrorNoAccountancyModuleLoaded=Mòdul de comptabilitat no activat ErrorExportDuplicateProfil=El nom d'aquest perfil ja existeix per aquest conjunt d'exportació @@ -304,6 +304,11 @@ ErrorValueCantBeNull=Value for %s can't be null ErrorDateOfMovementLowerThanDateOfFileTransmission=The date of the bank transaction can't be lower than the date of the file transmission ErrorTooMuchFileInForm=Too much files in form, the maximum number is %s file(s) ErrorSessionInvalidatedAfterPasswordChange=The session was been invalidated following a change of password, status or dates of validity. Please relogin. +ErrorExistingPermission = Permission %s for object %s already exists +ErrorFieldExist=The value for %s already exist +ErrorEqualModule=Module invalid in %s +ErrorFieldValue=Value for %s is incorrect +ErrorCoherenceMenu=%s is required when % equal LEFT # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=El paràmetre PHP upload_max_filesize (%s) és superior al paràmetre PHP post_max_size (%s). No es tracta d’una configuració consistent. @@ -342,6 +347,7 @@ WarningPaypalPaymentNotCompatibleWithStrict=El valor "Estricte" fa que les funci WarningThemeForcedTo=Avís, el tema s'ha forçat a %s per la constant oculta MAIN_FORCETHEME WarningPagesWillBeDeleted=Advertència, això també suprimirà totes les pàgines/contenidors existents del lloc web. Hauríeu d'exportar el vostre lloc web abans, de manera que tingueu una còpia de seguretat per tornar-lo a importar més tard. WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal=Automatic validation is disabled when option to decrease stock is set on "Invoice validation". +WarningModuleNeedRefrech = Module %s has been disabled. Don't forget to enable it # Validate RequireValidValue = El valor no és vàlid diff --git a/htdocs/langs/ca_ES/eventorganization.lang b/htdocs/langs/ca_ES/eventorganization.lang index f2acfbb129e..1a1ef41f4e7 100644 --- a/htdocs/langs/ca_ES/eventorganization.lang +++ b/htdocs/langs/ca_ES/eventorganization.lang @@ -133,7 +133,7 @@ LabelOfconference=Nom de la conferència ConferenceIsNotConfirmed=La inscripció no està disponible, la conferència encara no està confirmada DateMustBeBeforeThan=%s ha de ser anterior a %s DateMustBeAfterThan=%s ha de ser posterior a %s -MaxNbOfAttendeesReached=The maximum number of participants has been reached +MaxNbOfAttendeesReached=S'ha arribat al nombre màxim de participants NewSubscription=Inscripció OrganizationEventConfRequestWasReceived=S'ha rebut el vostre suggeriment per a una conferència OrganizationEventBoothRequestWasReceived=La vostra sol·licitud d’estand s’ha rebut @@ -166,7 +166,7 @@ PaymentBoothLocation = Pagament de la ubicació de l’estand DeleteConferenceOrBoothAttendee=Elimina l'assistent RegistrationAndPaymentWereAlreadyRecorder=Ja es va registrar un registre i un pagament per al correu electrònic %s EmailAttendee=Correu electrònic de l'assistent -EmailCompany=Company email +EmailCompany=Correu electrònic de l'empresa EmailCompanyForInvoice=Correu electrònic de l'empresa (per a la factura, si és diferent del correu electrònic dels assistents) ErrorSeveralCompaniesWithEmailContactUs=S'han trobat diverses empreses amb aquest correu electrònic, de manera que no podem validar automàticament el vostre registre. Si us plau, poseu-vos en contacte amb nosaltres a %s per a una validació manual ErrorSeveralCompaniesWithNameContactUs=S'han trobat diverses empreses amb aquest nom, de manera que no podem validar automàticament el vostre registre. Si us plau, poseu-vos en contacte amb nosaltres a %s per a obtenir una validació manual diff --git a/htdocs/langs/ca_ES/exports.lang b/htdocs/langs/ca_ES/exports.lang index 805e910aa03..1c129dba5ca 100644 --- a/htdocs/langs/ca_ES/exports.lang +++ b/htdocs/langs/ca_ES/exports.lang @@ -96,7 +96,7 @@ NbOfLinesImported=Nombre de línies correctament importades: %s. DataComeFromNoWhere=El valor a inserir no correspon a cap camp de l'arxiu origen. DataComeFromFileFieldNb=El valor a inserir prové de la columna %s al fitxer font. DataComeFromIdFoundFromRef=El valor que prové del fitxer font s'utilitzarà per a trobar l'identificador de l'objecte mare a utilitzar (per tant, l'objecte %s que té la referència del fitxer font ha d'existir a la base de dades). -DataComeFromIdFoundFromCodeId=The value of code that comes from source file will be used to find the id of the parent object to use (so the code from source file must exist in the dictionary %s). Note that if you know the id, you can also use it in the source file instead of the code. Import should work in both cases. +DataComeFromIdFoundFromCodeId=El valor del codi que prové del fitxer font s'utilitzarà per a trobar l'identificador de l'objecte pare a utilitzar (per tant, el codi del fitxer font ha d'existir al diccionari %s). Tingueu en compte que si coneixeu l'identificador, també podeu utilitzar-lo al fitxer font en lloc del codi. La importació hauria de funcionar en ambdós casos. DataIsInsertedInto=Les dades de l'arxiu d'origen s'inseriran en el següent camp: DataIDSourceIsInsertedInto=L'identificador de l'objecte pare, que s'ha trobat amb les dades del fitxer d'origen, s'inserirà al camp següent: DataCodeIDSourceIsInsertedInto=L'identificador de la línia pare, que s'ha trobat a partir del codi, s'inserirà al camp següent: diff --git a/htdocs/langs/ca_ES/holiday.lang b/htdocs/langs/ca_ES/holiday.lang index 2e5b738c17e..af0c560f896 100644 --- a/htdocs/langs/ca_ES/holiday.lang +++ b/htdocs/langs/ca_ES/holiday.lang @@ -2,12 +2,12 @@ HRM=RH Holidays=Dies lliures Holiday=Dies lliures -CPTitreMenu=Dies lliures +CPTitreMenu=Dia lliure MenuReportMonth=Estat mensual -MenuAddCP=Sol·licitud nova de permís +MenuAddCP=Sol·licitud nova de dia lliure MenuCollectiveAddCP=Nova sol·licitud de festiu col·lectiu NotActiveModCP=Heu d'habilitar el mòdul Dies lliures per a veure aquesta pàgina. -AddCP=Realitzar una petició de dies lliures +AddCP=Feu una sol·licitud de dia lliure DateDebCP=Data inici DateFinCP=Data fi DraftCP=Esborrany @@ -26,10 +26,10 @@ UserForApprovalFirstname=Nom de l'usuari d'aprovació UserForApprovalLastname=Cognom de l'usuari d'aprovació UserForApprovalLogin=Nom d'usuari de l’usuari d’aprovació DescCP=Descripció -SendRequestCP=Enviar la petició de dies lliures -DelayToRequestCP=Les peticions de dies lliures s'han de realitzar al menys %s dies abans. +SendRequestCP=Crea una sol·licitud de dia lliure +DelayToRequestCP=Les sol·licituds de dies lliures s'han de fer com a mínim %s dia abans. MenuConfCP=Saldo de dies lliures -SoldeCPUser=Deixa el saldo (en dies) %s +SoldeCPUser=Saldo de dies lliures %s ErrorEndDateCP=Ha d'indicar una data de fi superior a la data d'inici. ErrorSQLCreateCP=S'ha produït un error de SQL durant la creació: ErrorIDFicheCP=S'ha produït un error, aquesta sol·licitud de dies lliures no existeix @@ -41,7 +41,7 @@ TitreRequestCP=Fitxa de dies lliures TypeOfLeaveId=Tipus d'identificador de baixa TypeOfLeaveCode=Tipus de codi de baixa TypeOfLeaveLabel=Nom de tipus de permís -NbUseDaysCP=Nombre de dies de permís utilitzats +NbUseDaysCP=Nombre de dies lliures utilitzats NbUseDaysCPHelp=El càlcul té en compte els dies inhàbils i les vacances definides al diccionari. NbUseDaysCPShort=Dies de permís NbUseDaysCPShortInMonth=Dies de permís al mes @@ -53,7 +53,7 @@ DeleteCP=Eliminar ActionRefuseCP=Rebutja ActionCancelCP=Cancel·la StatutCP=Estat -TitleDeleteCP=Eliminar la petició de dies lliures +TitleDeleteCP=Suprimeix la sol·licitud de dies lliures ConfirmDeleteCP=Estàs segur de voler eliminar aquesta petició de dies lliures? ErrorCantDeleteCP=Error, no teniu permisos per a suprimir aquesta sol·licitud de permís. CantCreateCP=No teniu accés a fer sol·licituds de permís. @@ -76,16 +76,16 @@ DetailRefusCP=Motiu del rebuig DateRefusCP=Data del rebuig DateCancelCP=Data de l'anul·lació DefineEventUserCP=Assignar permís excepcional a un usuari -addEventToUserCP=Assignar aquest permís +addEventToUserCP=Assignar dia lliure NotTheAssignedApprover=No sou l'aprovador assignat MotifCP=Motiu UserCP=Usuari ErrorAddEventToUserCP=S'ha produït un error en l'assignació del permís excepcional. -AddEventToUserOkCP=S'ha afegit el permís excepcional. +AddEventToUserOkCP=S'ha completat la incorporació del dia lliure excepcional. ErrorFieldRequiredUserOrGroup=Cal omplir el camp "grup" o el camp "usuari". fusionGroupsUsers=El camp de grups i el camp d'usuari es fusionaran MenuLogCP=Veure registre de canvis -LogCP=Registre de totes les actualitzacions realitzades a "Saldo de permisos" +LogCP=Registre de totes les actualitzacions fetes a "Saldo de dies lliures" ActionByCP=Actualitzat per UserUpdateCP=Actualitzat per a PrevSoldeCP=Saldo anterior @@ -143,16 +143,16 @@ TemplatePDFHolidays=Plantilla per a sol·licituds de permisos en PDF FreeLegalTextOnHolidays=Text gratuït a PDF WatermarkOnDraftHolidayCards=Marques d'aigua sobre esborranys de sol·licituds de dies lliures HolidaysToApprove=Vacances per a aprovar -NobodyHasPermissionToValidateHolidays=Ningú no té permís per a validar les vacances -HolidayBalanceMonthlyUpdate=Actualització mensual del saldo de vacances +NobodyHasPermissionToValidateHolidays=Ningú té permís per a validar les sol·licituds de dies lliures +HolidayBalanceMonthlyUpdate=Actualització mensual del saldo de dies lliures XIsAUsualNonWorkingDay=%s sol ser un dia NO laborable BlockHolidayIfNegative=Bloqueja si el saldo és negatiu LeaveRequestCreationBlockedBecauseBalanceIsNegative=La creació d'aquesta sol·licitud de vacances està bloquejada perquè el vostre saldo és negatiu ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=La sol·licitud d'abandonament %s ha de ser esborrany, cancel·lada o rebutjada per eliminar-la -IncreaseHolidays=Increase holiday -HolidayRecordsIncreased= %s holiday records increased -HolidayRecordIncreased=Holiday record increased -ConfirmMassIncreaseHoliday=Bulk holiday increase +IncreaseHolidays=Increase leave balance +HolidayRecordsIncreased= %s leave balances increased +HolidayRecordIncreased=Leave balance increased +ConfirmMassIncreaseHoliday=Bulk leave balance increase NumberDayAddMass=Number of day to add to the selection ConfirmMassIncreaseHolidayQuestion=Are you sure you want to increase holiday of the %s selected record(s)? HolidayQtyNotModified=El saldo dels dies restants per a %s no s'ha canviat diff --git a/htdocs/langs/ca_ES/install.lang b/htdocs/langs/ca_ES/install.lang index e87de98def3..4057871b57b 100644 --- a/htdocs/langs/ca_ES/install.lang +++ b/htdocs/langs/ca_ES/install.lang @@ -28,6 +28,7 @@ ErrorPHPVersionTooLow=La versió de PHP és massa antiga. Es requereix la versi ErrorPHPVersionTooHigh=La versió de PHP és massa alta. Es requereix la versió %s o inferior. ErrorConnectedButDatabaseNotFound=S'ha trobat una connexió amb el servidor però la base de dades '%s' no s'ha trobat. ErrorDatabaseAlreadyExists=La base de dades '%s' ja existeix. +ErrorNoMigrationFilesFoundForParameters=No s'ha trobat cap fitxer de migració per a les versions seleccionades IfDatabaseNotExistsGoBackAndUncheckCreate=Si la base de dades no existeix, torneu enrere i marqueu l'opció "Crea una base de dades". IfDatabaseExistsGoBackAndCheckCreate=Si la base de dades ja existeix, torneu enrere i desmarqueu l'opció "Crea una base de dades". WarningBrowserTooOld=La versió del navegador és massa antiga. És molt recomanable actualitzar el vostre navegador a una versió recent de Firefox, Chrome o Opera. @@ -43,14 +44,13 @@ DolibarrDatabase=Base de dades Dolibarr DatabaseType=Tipus de la base de dades DriverType=Tipus del driver Server=Servidor -ServerAddressDescription=Nom o adreça IP del servidor de bases de dades. Normalment 'localhost' quan el servidor de base de dades està allotjat en el mateix servidor que el servidor web. +ServerAddressDescription=Nom o adreça IP del servidor de bases de dades. Normalment 'localhost' quan el servidor de bases de dades està allotjat al mateix servidor que el servidor web. ServerPortDescription=Port del servidor de la base de dades. Deixa-ho en blanc si ho desconeixes. DatabaseServer=Servidor de la base de dades DatabaseName=Nom de la base de dades DatabasePrefix=Prefix en les taules de base de dades DatabasePrefixDescription=Prefix de la taula de base de dades. Si està buit, per defecte a llx_. AdminLogin=Compte d'usuari del propietari de la base de dades Dolibarr. -PasswordAgain=Torna a escriure la confirmació de la contrasenya AdminPassword=Contrasenya de l'administrador de la base de dades Dolibarr. CreateDatabase=Crear la base de dades CreateUser=Crea un compte d'usuari o concedeix el permís del compte d'usuari a la base de dades Dolibarr @@ -88,7 +88,7 @@ LoginAlreadyExists=Ja existeix DolibarrAdminLogin=Nom d'usuari d’administrador de Dolibarr AdminLoginAlreadyExists=El compte d'administrador de Dolibarr ' %s ' ja existeix. Torneu enrere si voleu crear un altre. FailedToCreateAdminLogin=No s'ha pogut crear el compte d'administrador de Dolibarr. -WarningRemoveInstallDir=Advertiment, per motius de seguretat, un cop finalitzada la instal·lació o actualització, heu d'afegir un fitxer anomenat install.lock al directori del document Dolibarr per a evitar l'ús accidental / malintencionat de les eines d'instal·lació. +WarningRemoveInstallDir=Advertència, per motius de seguretat, un cop finalitzat el procés d'instal·lació, heu d'afegir un fitxer anomenat install.lock al directori de documents de Dolibarr per tal d'evitar l'ús accidental/maliciós de les eines d'instal·lació. FunctionNotAvailableInThisPHP=No està disponible en aquest PHP ChoosedMigrateScript=Elecció de l'script de migració DataMigration=Migració de la base de dades (dades) @@ -112,7 +112,7 @@ YouAskDatabaseCreationSoDolibarrNeedToConnect=Heu seleccionat crear una base de YouAskLoginCreationSoDolibarrNeedToConnect=Heu seleccionat crear un usuari de base de dades %s , però per això, Dolibarr necessita connectar-se al servidor %s amb permisos de superusuari %s . BecauseConnectionFailedParametersMayBeWrong=La connexió a la base de dades ha fallat: els paràmetres de l'amfitrió o superusuari han de ser incorrectes. OrphelinsPaymentsDetectedByMethod=Pagaments orfes detectats pel mètode %s -RemoveItManuallyAndPressF5ToContinue=Esborreu manualment i premeu F5 per continuar. +RemoveItManuallyAndPressF5ToContinue=Esborreu-lo manualment i premeu F5 per a continuar. FieldRenamed=S'ha canviat el nom del camp IfLoginDoesNotExistsCheckCreateUser=Si l'usuari encara no existeix, heu de marcar l'opció "Crear usuari" ErrorConnection=El servidor " %s ", el nom de la base de dades " %s ", inici de sessió " %s " o la contrasenya de la base de dades pot ser incorrecte o la versió del client PHP pot ser massa antiga en comparació amb la versió de la base de dades. @@ -124,7 +124,7 @@ IfAlreadyExistsCheckOption=Si el nom és correcte i la base de dades no existeix OpenBaseDir=Paràmetre php openbasedir YouAskToCreateDatabaseSoRootRequired=Heu marcat el quadre "Crea una base de dades". Per això, heu de proporcionar el nom d'usuari / contrasenya del superusuari (part inferior del formulari). YouAskToCreateDatabaseUserSoRootRequired=Heu marcat el quadre "Crea propietari de la base de dades". Per això, heu de proporcionar el nom d'usuari / contrasenya del superusuari (part inferior del formulari). -NextStepMightLastALongTime=El següent pas pot trigar diversos minuts. Després d'haver validat, li agraïm esperi a la completa visualització de la pàgina següent per continuar. +NextStepMightLastALongTime=El pas actual pot trigar uns quants minuts. Espereu fins que es mostri completament la següent pantalla abans de continuar. MigrationCustomerOrderShipping=Migració de dades d'enviament de comandes de venda MigrationShippingDelivery=Actualització de les dades d'enviaments MigrationShippingDelivery2=Actualització de les dades d'enviaments 2 @@ -132,7 +132,7 @@ MigrationFinished=S'ha acabat la migració LastStepDesc= Darrer pas : definiu aquí l'inici de sessió i la contrasenya que voleu utilitzar per connectar-se a Dolibarr. No perdis això, ja que és el compte mestre per administrar tots els altres / comptes d'usuari addicionals. ActivateModule=Activació del mòdul %s ShowEditTechnicalParameters=Feu clic aquí per a mostrar/editar els paràmetres avançats (mode expert) -WarningUpgrade=Advertència:\nPrimer heu executat una còpia de seguretat de la base de dades?\nAixò és molt recomanable. La pèrdua de dades (a causa, per exemple, d'errors a la versió 5.5.40/41/42/43 de mysql) pot ser possible durant aquest procés, de manera que és essencial fer un buidatge complet de la vostra base de dades abans d'iniciar qualsevol migració.\n\nFeu clic a D'acord per a iniciar el procés de migració... +WarningUpgrade=Avís:\nHas fet una còpia de seguretat de la base de dades primer?\nAixò és molt recomanable. La pèrdua de dades (a causa, per exemple, d'errors a la versió de mysql 5.5.40/41/42/43) és possible durant aquest procés, per la qual cosa és essencial fer un bolcat complet de la base de dades abans d'iniciar qualsevol migració.\n\nFeu clic a D'acord per a iniciar el procés de migració... ErrorDatabaseVersionForbiddenForMigration=La versió de la vostra base de dades és %s. Té un error crític, que fa possible la pèrdua de dades si feu canvis estructurals a la base de dades, tals com requereix el procés de migració. Per la seva raó, la migració no es permetrà fins que no actualitzeu la base de dades a una versió actualitzada (llista de versions conegudes amb errors: %s) KeepDefaultValuesWamp=Heu utilitzat l'assistent de configuració Dolibarr de DoliWamp, de manera que els valors proposats aquí ja estan optimitzats. Canvieu-los només si saps el que estàs fent. KeepDefaultValuesDeb=Heu utilitzat l'assistent de configuració Dolibarr des d'un paquet Linux (Ubuntu, Debian, Fedora ...), de manera que els valors proposats aquí ja estan optimitzats. Només cal introduir la contrasenya del propietari de la base de dades a crear. Canvieu altres paràmetres només si sabeu què feu. @@ -208,7 +208,12 @@ HideNotAvailableOptions=Amaga les opcions no disponibles ErrorFoundDuringMigration=S'han reportat error(s) durant el procés de migració, de manera que el següent pas no està disponible. Per ignorar els errors, podeu fer clic aquí , però l'aplicació o algunes funcions no funcionen correctament fins que es resolen els errors. YouTryInstallDisabledByDirLock=L'aplicació ha intentat actualitzar-se automàticament, però les pàgines d'instal·lació / actualització s'han desactivat per a la seguretat (el directori rep el nom amb el sufix .lock).
YouTryInstallDisabledByFileLock=L'aplicació s'ha intentat actualitzar automàticament, però les pàgines d'instal·lació / actualització s'han desactivat per a la seguretat (per l'existència d'un fitxer de bloqueig install.lock al directori de documents del dolibarr).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=Fes clic aquí per anar a la teva aplicació ClickOnLinkOrRemoveManualy=Si una actualització està en curs, espereu. Si no, feu clic al següent enllaç. Si sempre veieu aquesta mateixa pàgina, heu de suprimir / canviar el nom del fitxer install.lock del directori de documents. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=Carregat FunctionTest=Prova de funció +NodoUpgradeAfterDB=Cap acció sol·licitada pels mòduls externs després de l'actualització de la base de dades +NodoUpgradeAfterFiles=Cap acció sol·licitada pels mòduls externs després de l'actualització de fitxers o directoris +MigrationContractLineRank=Migra la línia de contracte per a utilitzar la classificació (i activa la reordenació) diff --git a/htdocs/langs/ca_ES/languages.lang b/htdocs/langs/ca_ES/languages.lang index fced7fe87ff..5dfbfd0ae12 100644 --- a/htdocs/langs/ca_ES/languages.lang +++ b/htdocs/langs/ca_ES/languages.lang @@ -23,7 +23,7 @@ Language_da_DK=Danès Language_de_DE=Alemany Language_de_AT=Alemany (Austria) Language_de_CH=Alemany (Suïssa) -Language_de_LU=German (Luxembourg) +Language_de_LU=Alemany (Luxemburg) Language_el_GR=Grec Language_el_CY=Grec (Xipre) Language_en_AE=Anglès (Emirats Àrabs Units) @@ -36,7 +36,7 @@ Language_en_SA=Anglès (Aràbia Saudita) Language_en_SG=Anglès (Singapur) Language_en_US=Anglès (Estats Units) Language_en_ZA=Anglès (Àfrica del Sud) -Language_en_ZW=English (Zimbabwe) +Language_en_ZW=Anglès (Zimbabwe) Language_es_ES=Espanyol Language_es_AR=Espanyol (Argentina) Language_es_BO=Espanyol (Bolivia) diff --git a/htdocs/langs/ca_ES/loan.lang b/htdocs/langs/ca_ES/loan.lang index edc241eb214..efc0ffda92f 100644 --- a/htdocs/langs/ca_ES/loan.lang +++ b/htdocs/langs/ca_ES/loan.lang @@ -28,7 +28,7 @@ CantUseScheduleWithLoanStartedToPaid = No es pot generar un calendari per a un p CantModifyInterestIfScheduleIsUsed = No pots modificar l’interès si fas servir la programació # Admin ConfigLoan=Configuració del mòdul de préstecs -LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Account (from the Chart Of Account) to be used by default for capital (Loan module) -LOAN_ACCOUNTING_ACCOUNT_INTEREST=Account (from the Chart Of Account) to be used by default for interest (Loan module) -LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Account (from the Chart Of Account) to be used by default for insurance (Loan module) +LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Compte (del pla comptable) que s'utilitzarà per defecte per al capital (mòdul de préstec) +LOAN_ACCOUNTING_ACCOUNT_INTEREST=Compte (del pla comptable) que s'utilitzarà per defecte per als interessos (mòdul de préstec) +LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Compte (del pla comptable) que s'utilitzarà per defecte per a l'assegurança (mòdul de préstec) CreateCalcSchedule=Edita el compromís financer diff --git a/htdocs/langs/ca_ES/main.lang b/htdocs/langs/ca_ES/main.lang index 77b9b4cd021..a7f516e8eed 100644 --- a/htdocs/langs/ca_ES/main.lang +++ b/htdocs/langs/ca_ES/main.lang @@ -34,7 +34,7 @@ NoTemplateDefined=No hi ha cap plantilla disponible per a aquest tipus de correu AvailableVariables=Variables de substitució disponibles NoTranslation=Sense traducció Translation=Traducció -Translations=Translations +Translations=Traduccions CurrentTimeZone=Fus horari PHP (Servidor) EmptySearchString=Introdueix criteris de cerca no buits EnterADateCriteria=Introduïu un criteri de data @@ -226,7 +226,7 @@ NoUserGroupDefined=Grup d'usuari no definit Password=Contrasenya PasswordRetype=Repetiu la vostra contrasenya NoteSomeFeaturesAreDisabled=Tingues en compte que molts mòduls i funcionalitats estan deshabilitats en aquesta demostració. -YourUserFile=Your user file +YourUserFile=El vostre fitxer d'usuari Name=Nom NameSlashCompany=Nom / Empresa Person=Persona @@ -490,7 +490,7 @@ ActionsOnContact=Esdeveniments per a aquest contacte / adreça ActionsOnContract=Esdeveniments per a aquest contracte ActionsOnMember=Esdeveniments d'aquest soci ActionsOnProduct=Esdeveniments sobre aquest producte -ActionsOnAsset=Events for this fixed asset +ActionsOnAsset=Esdeveniments per a aquest actiu fix NActionsLate=%s en retard ToDo=A realitzar Completed=Finalitzat @@ -898,9 +898,9 @@ MassFilesArea=Àrea de fitxers generats per accions massives ShowTempMassFilesArea=Mostra l'àrea de fitxers generats per accions massives ConfirmMassDeletion=Confirmació d'esborrament massiu ConfirmMassDeletionQuestion=Esteu segur que voleu suprimir els (s) registre (s) %s? -ConfirmMassClone=Bulk clone confirmation -ConfirmMassCloneQuestion=Select project to clone to -ConfirmMassCloneToOneProject=Clone to project %s +ConfirmMassClone=Confirma la clonació massiva +ConfirmMassCloneQuestion=Seleccioneu el projecte per a clonar +ConfirmMassCloneToOneProject=Clonar al projecte %s RelatedObjects=Objectes relacionats ClassifyBilled=Classifica facturat ClassifyUnbilled=Classifica no facturat @@ -923,6 +923,7 @@ NotAllExportedMovementsCouldBeRecordedAsExported=No s'ha pogut registrar tots el Miscellaneous=Diversos Calendar=Calendari GroupBy=Agrupat per... +GroupByX=Agrupat per %s ViewFlatList=Veure llista plana ViewAccountList=Veure llibre major ViewSubAccountList=Vegeu el subcompte del llibre major @@ -934,7 +935,7 @@ DirectDownloadInternalLink=Enllaç de descàrrega privat PrivateDownloadLinkDesc=Cal estar registrat i amb permisos per a visualitzar o descarregar el fitxer Download=Descarrega DownloadDocument=Baixar el document -DownloadSignedDocument=Download signed document +DownloadSignedDocument=Descarregar document signat ActualizeCurrency=Actualitza el canvi de divisa Fiscalyear=Any fiscal ModuleBuilder=Generador de mòduls i aplicacions @@ -1132,7 +1133,7 @@ DeleteFileText=Realment vols suprimir aquest fitxer? ShowOtherLanguages=Mostrar altres idiomes SwitchInEditModeToAddTranslation=Canviar a mode d'edició per a afegir traduccions per a aquest idioma NotUsedForThisCustomer=No s'utilitza per a aquest client -NotUsedForThisVendor=Not used for this vendor +NotUsedForThisVendor=No s'utilitza per a aquest venedor AmountMustBePositive=L'import ha de ser positiu ByStatus=Per estat InformationMessage=Informació @@ -1153,28 +1154,28 @@ EventReminder=Recordatori d'esdeveniments UpdateForAllLines=Actualització per a totes les línies OnHold=Fora de servei Civility=Civilitat -AffectTag=Assign a Tag -AffectUser=Assign a User -SetSupervisor=Set the supervisor +AffectTag=Assigna una etiqueta +AffectUser=Assigna un usuari +SetSupervisor=Estableix el supervisor CreateExternalUser=Crea un usuari extern -ConfirmAffectTag=Bulk Tag Assignement -ConfirmAffectUser=Bulk User Assignement +ConfirmAffectTag=Assignació massiva d'etiquetes +ConfirmAffectUser=Assignació massiva d'usuaris ProjectRole=Role assigned on each project/opportunity TasksRole=Role assigned on each task (if used) ConfirmSetSupervisor=Bulk Supervisor Set ConfirmUpdatePrice=Choose a increase/decrease price rate ConfirmAffectTagQuestion=Are you sure you want to assign tags to the %s selected record(s)? ConfirmAffectUserQuestion=Are you sure you want to assign users to the %s selected record(s)? -ConfirmSetSupervisorQuestion=Are you sure you want to set supervisor to the %s selected record(s)? +ConfirmSetSupervisorQuestion=Esteu segur que voleu establir el supervisor als %s registres seleccionats? ConfirmUpdatePriceQuestion=Are you sure you want to update the price of the %s selected record(s)? CategTypeNotFound=No s'ha trobat cap tipus d'etiqueta per al tipus de registres Rate=Tipus -SupervisorNotFound=Supervisor not found +SupervisorNotFound=No s'ha trobat el supervisor CopiedToClipboard=Copiat al porta-retalls InformationOnLinkToContract=Aquest import només és el total de totes les línies del contracte. No es té en compte cap noció de temps. ConfirmCancel=Esteu segur que voleu cancel·lar-la? EmailMsgID=Envia un correu electrònic a MsgID -EmailDate=Email date +EmailDate=Data del correu electrònic SetToStatus=Estableix a l'estat %s SetToEnabled=Estableix a activat SetToDisabled=Estableix a desactivat @@ -1215,10 +1216,12 @@ CreatedByPublicPortal=Creat a partir del portal públic UserAgent=Agent d'usuari InternalUser=Usuari intern ExternalUser=Usuari extern -NoSpecificContactAddress=No specific contact or address +NoSpecificContactAddress=No hi ha cap contacte ni adreça específics NoSpecificContactAddressBis=This tab is dedicated to force specific contacts or addresses for the current object. Use it only if you want to define one or several specific contacts or addresses for the object when the information on the thirdparty is not enough or not accurate. -HideOnVCard=Hide %s -AddToContacts=Add address to my contacts +HideOnVCard=Amaga %s +AddToContacts=Afegeix una adreça als meus contactes LastAccess=Últim accés UploadAnImageToSeeAPhotoHere=Carregueu una imatge de la pestanya %s per a veure una foto aquí -LastPasswordChangeDate=Last password change date +LastPasswordChangeDate=Data de l'últim canvi de contrasenya +PublicVirtualCardUrl=Virtual business card page +TreeView=Vista d'arbre diff --git a/htdocs/langs/ca_ES/members.lang b/htdocs/langs/ca_ES/members.lang index db410480361..0ab882c079a 100644 --- a/htdocs/langs/ca_ES/members.lang +++ b/htdocs/langs/ca_ES/members.lang @@ -35,7 +35,7 @@ DateSubscription=Data d'adhesió DateEndSubscription=Data de finalització de la subscripció EndSubscription=Fi de la pertinença SubscriptionId=Identificador de contribució -WithoutSubscription=Without membership +WithoutSubscription=Sense pertinença WaitingSubscription=Membership pending MemberId=Identificador de membre MemberRef=Membre Ref @@ -206,11 +206,12 @@ SubscriptionsStatistics=Estadístiques de contribucions NbOfSubscriptions=Nombre de contribucions AmountOfSubscriptions=Import recaptat de les contribucions TurnoverOrBudget=Volum de vendes (empresa) o Pressupost (associació o col.lectiu) -DefaultAmount=Import per defecte de la contribució +DefaultAmount=Import per defecte de la contribució (només s'utilitza si no es defineix cap import a nivell de tipus de soci) +MinimumAmount=Import mínim (només s'utilitza quan l'import de la contribució és gratuït) CanEditAmount=L'import de la subscripció és gratuït CanEditAmountDetail=El visitant pot triar/editar la quantitat de la seva contribució independentment del tipus de soci AmountIsLowerToMinimumNotice=sobre un total d'%s -MEMBER_NEWFORM_PAYONLINE=After the online registration, switch automatically on the online payment page +MEMBER_NEWFORM_PAYONLINE=Després del registre en línia, canvieu automàticament a la pàgina de pagament en línia ByProperties=Per naturalesa MembersStatisticsByProperties=Estadístiques dels membres per naturalesa VATToUseForSubscriptions=Tipus d’IVA a utilitzar per a les aportacions diff --git a/htdocs/langs/ca_ES/modulebuilder.lang b/htdocs/langs/ca_ES/modulebuilder.lang index ead829e1a93..362e623b434 100644 --- a/htdocs/langs/ca_ES/modulebuilder.lang +++ b/htdocs/langs/ca_ES/modulebuilder.lang @@ -56,7 +56,7 @@ RegenerateMissingFiles=Genera els fitxers que falten SpecificationFile=Fitxer de documentació LanguageFile=Arxiu del llenguatge ObjectProperties=Propietats de l'objecte -Property=Propery +Property=Propietat PropertyDesc=Una propietat és un atribut que caracteritza un objecte. Aquest atribut té un codi, un nom i un tipus amb diverses opcions. ConfirmDeleteProperty=Estàs segur que vols eliminar la propietat %s ? Això canviarà el codi a la classe PHP, però també eliminarà la columna de la definició de la taula de l'objecte. NotNull=No és NULL @@ -140,7 +140,7 @@ IncludeRefGeneration=The reference of this object must be generated automaticall IncludeRefGenerationHelp=Marqueu-ho si voleu incloure codi per gestionar automàticament la generació de la referència mitjançant regles de numeració personalitzades IncludeDocGeneration=I want the feature to generate some documents (PDF, ODT) from templates for this object IncludeDocGenerationHelp=Si ho marques, es generarà el codi per a afegir una casella "Generar document" al registre. -ShowOnCombobox=Show value into combo boxes +ShowOnCombobox=Mostra el valor en quadres combinats KeyForTooltip=Clau per donar més informació CSSClass=CSS per a editar/crear un formulari CSSViewClass=CSS per al formulari de lectura @@ -165,3 +165,11 @@ BadValueForType=Valor incorrecte per al tipus %s DefinePropertiesFromExistingTable=Define properties from an existing table DefinePropertiesFromExistingTableDesc=If a table in the database (for the object to create) already exists, you can use it to define the properties of the object. DefinePropertiesFromExistingTableDesc2=Keep empty if the table does not exist yet. The code generator will use different kinds of fields to build an example of table that you can edit later. +GeneratePermissions=Vull afegir els permisos d'aquest objecte +GeneratePermissionsHelp=generar permisos per defecte per a aquest objecte +PermissionDeletedSuccesfuly=El permís s'ha eliminat correctament +PermissionUpdatedSuccesfuly=El permís s'ha actualitzat correctament +PermissionAddedSuccesfuly=El permís s'ha afegit correctament +MenuDeletedSuccessfuly=El menú s'ha suprimit correctament +MenuAddedSuccessfuly=El menú s'ha afegit correctament +MenuUpdatedSuccessfuly=El menú s'ha actualitzat correctament diff --git a/htdocs/langs/ca_ES/mrp.lang b/htdocs/langs/ca_ES/mrp.lang index f00b539c73c..20e66cf2b42 100644 --- a/htdocs/langs/ca_ES/mrp.lang +++ b/htdocs/langs/ca_ES/mrp.lang @@ -11,7 +11,7 @@ Bom=Llista de materials BillOfMaterials=Llista de materials BillOfMaterialsLines=Línies de llista de materials BOMsSetup=Configuració del mòdul BOM -ListOfBOMs=Bills of material - BOM +ListOfBOMs=Llistats de materials - BOM ListOfManufacturingOrders=Ordres de fabricació NewBOM=Llista nova de materials ProductBOMHelp=Producte per a crear (o desmuntar) amb aquesta llista de material.
Nota: Els productes amb la propietat 'Natura del producte' = 'Matèria primera' no són visibles en aquesta llista. @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Esteu segur que voleu clonar la llista de materials ConfirmCloneMo=Esteu segur que voleu clonar la Ordre de Fabricació %s? ManufacturingEfficiency=Eficiència en la fabricació ConsumptionEfficiency=Eficiència del consum -Consumption=Consumption +Consumption=Consum ValueOfMeansLoss=El valor de 0,95 significa una mitjana de 5%% de pèrdua durant la fabricació o el desmuntatge ValueOfMeansLossForProductProduced=Un valor de 0,95 significa una mitjana de 5%% de pèrdues de producte produït DeleteBillOfMaterials=Suprimeix la llista de materials @@ -102,6 +102,7 @@ NbOperatorsRequired=Nombre d'operadors necessaris THMOperatorEstimated=Operador estimat THM THMMachineEstimated=Màquina THM estimada WorkstationType=Tipus d'estació de treball +DefaultWorkstation=Estació de treball per defecte Human=Humà Machine=Màquina HumanMachine=Humà / Màquina @@ -115,6 +116,6 @@ MoChildGenerate=Genera Child Mo ParentMo=MO Pare MOChild=MO Nen BomCantAddChildBom=La nomenclatura %s ja està present a l'arbre que porta a la nomenclatura %s -BOMNetNeeds = BOM Net Needs +BOMNetNeeds = Necessitats netes en BOM BOMProductsList=Productes de BOM BOMServicesList=Serveis de BOM diff --git a/htdocs/langs/ca_ES/oauth.lang b/htdocs/langs/ca_ES/oauth.lang index ec96630cfcb..3ee0725f0f2 100644 --- a/htdocs/langs/ca_ES/oauth.lang +++ b/htdocs/langs/ca_ES/oauth.lang @@ -31,8 +31,9 @@ OAUTH_GITHUB_SECRET=OAuth GitHub Secret OAUTH_URL_FOR_CREDENTIAL=Aneu a aquesta pàgina per a crear o obtenir el vostre identificador i secret d'OAuth OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live -OAUTH_ID=ID OAuth +OAUTH_ID=OAuth Client ID OAUTH_SECRET=Secret d'OAuth +OAUTH_TENANT=Inquilí d'OAuth OAuthProviderAdded=S'ha afegit el proveïdor OAuth AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Ja existeix una entrada d'OAuth per a aquest proveïdor i nom URLOfServiceForAuthorization=URL proporcionat pel servei OAuth per a l'autenticació diff --git a/htdocs/langs/ca_ES/orders.lang b/htdocs/langs/ca_ES/orders.lang index 530bfe3f540..94002f6a891 100644 --- a/htdocs/langs/ca_ES/orders.lang +++ b/htdocs/langs/ca_ES/orders.lang @@ -96,10 +96,10 @@ OrdersStatisticsSuppliers=Estadístiques de comandes de compra NumberOfOrdersByMonth=Nombre de comandes per mes AmountOfOrdersByMonthHT=Quantitat de comandes per mes (sense IVA) ListOfOrders=Llistat de comandes -ListOrderLigne=Lines of orders -productobuy=Products to buy only +ListOrderLigne=Línies de comandes +productobuy=Productes només per a comprar productonly=Només productes -disablelinefree=No lines free +disablelinefree=Sense línies lliures CloseOrder=Tancar comanda ConfirmCloseOrder=Vols classificar aquesta comanda com entregada? Un cop s'entrega la comanda, es podrà classificar com a facturada. ConfirmDeleteOrder=Vols eliminar aquesta comanda? @@ -135,7 +135,7 @@ SupplierOrderClassifiedBilled=Comanda de compra %s com a facturada OtherOrders=Altres comandes SupplierOrderValidatedAndApproved=La comanda del proveïdor està validada i aprovada: %s SupplierOrderValidated=La comanda del proveïdor està validada: %s -OrderShowDetail=Show order detail +OrderShowDetail=Mostra el detall de la comanda ##### Types de contacts ##### TypeContact_commande_internal_SALESREPFOLL=Ordre de venda de seguiment representatiu TypeContact_commande_internal_SHIPPING=Responsable del seguiment de l'enviament diff --git a/htdocs/langs/ca_ES/other.lang b/htdocs/langs/ca_ES/other.lang index 25afe2f2f8d..2ee4d2f4be1 100644 --- a/htdocs/langs/ca_ES/other.lang +++ b/htdocs/langs/ca_ES/other.lang @@ -31,7 +31,7 @@ NextYearOfInvoice=Any següent de la data de la factura DateNextInvoiceBeforeGen=Data de la propera factura (abans de la generació) DateNextInvoiceAfterGen=Data de la propera factura (després de la generació) GraphInBarsAreLimitedToNMeasures=Els gràfics es limiten a %s mesures en mode "Bars". En el seu lloc, s'ha seleccionat automàticament el mode "Línies". -OnlyOneFieldForXAxisIsPossible=Actualment només és possible 1 camp com a Eix X. Només s’ha seleccionat el primer camp seleccionat. +OnlyOneFieldForXAxisIsPossible=Actualment, només és possible 1 camp com a eix X. Només s'ha seleccionat el primer camp seleccionat. AtLeastOneMeasureIsRequired=Almenys 1 camp per a la mesura és obligatori AtLeastOneXAxisIsRequired=Almenys 1 camp per a l'Eix X és obligatori LatestBlogPosts=Darreres publicacions al bloc @@ -46,7 +46,9 @@ Notify_ORDER_SUPPLIER_APPROVE=Ordre de compra aprovat Notify_ORDER_SUPPLIER_REFUSE=S'ha rebutjat l'ordre de compra Notify_PROPAL_VALIDATE=Validació pressupost client Notify_PROPAL_CLOSE_SIGNED=La proposta del client ha tancat la signatura +Notify_PROPAL_CLOSE_SIGNED_WEB=Pressupost de client tancat i signat a la pàgina del portal Notify_PROPAL_CLOSE_REFUSED=La proposta del client es va tancar refusada +Notify_PROPAL_CLOSE_REFUSED_WEB=S'ha rebutjat i tancat el pressupost de client a la pàgina del portal Notify_PROPAL_SENTBYMAIL=Enviament pressupost per e-mail Notify_WITHDRAW_TRANSMIT=Transmissió domiciliació Notify_WITHDRAW_CREDIT=Abonament domiciliació @@ -181,6 +183,7 @@ SizeUnitfoot=peu SizeUnitpoint=punt BugTracker=Incidències SendNewPasswordDesc=Aquest formulari et permet sol·licitar una nova contrasenya. S'enviarà a la teva adreça de correu electrònic.
El canvi es farà efectiu una vegada facis clic a l'enllaç de confirmació del correu electrònic.
Comprova la teva safata d'entrada. +EnterNewPasswordHere=Introduïu la vostra nova contrasenya aquí BackToLoginPage=Tornar a la pàgina de connexió AuthenticationDoesNotAllowSendNewPassword=El mode d'autenticació de Dolibarr està configurat com "%s".
En aquest mode Dolibarr no pot conèixer ni modificar la seva contrasenya
Contacti amb l'administrador per conèixer les modalitats de canvi. EnableGDLibraryDesc=Instal·leu o activeu la biblioteca GD a la instal·lació de PHP per a utilitzar aquesta opció. @@ -210,6 +213,9 @@ EMailTextInvoiceValidated=La factura %s ha estat validada. EMailTextInvoicePayed=S'ha pagat la factura %s. EMailTextProposalValidated=S'ha validat la proposta %s. EMailTextProposalClosedSigned=La proposta %s s'ha tancat amb la signatura. +EMailTextProposalClosedSignedWeb=Proposal %s has been closed signed on portal page. +EMailTextProposalClosedRefused=Proposal %s has been closed refused. +EMailTextProposalClosedRefusedWeb=Proposal %s has been closed refuse on portal page. EMailTextOrderValidated=S'ha validat l'ordre %s. EMailTextOrderApproved=S'ha aprovat l'ordre %s. EMailTextOrderValidatedBy=L'ordre %s ha estat registrada per %s. @@ -277,8 +283,8 @@ LoginWith=Inicieu sessió amb %s ##### Export ##### ExportsArea=Àrea d'exportacions AvailableFormats=Formats disponibles -LibraryUsed=Llibreria utilitzada -LibraryVersion=Versió de la llibreria +LibraryUsed=Biblioteca utilitzada +LibraryVersion=Versió de la biblioteca ExportableDatas=Dades exportables NoExportableData=No hi ha dades exportables (sense mòduls amb dades exportables carregats, o no tenen permisos) ##### External sites ##### @@ -311,10 +317,10 @@ ExternalSiteURL=URL del lloc extern del contingut iframe HTML ExternalSiteModuleNotComplete=El mòdul Lloc web extern no ha estat configurat correctament. ExampleMyMenuEntry=La meva entrada del menú -# FTP +# ftp FTPClientSetup=Configuració del mòdul Client FTP o SFTP -NewFTPClient=Configuració nova de la connexió FTP/FTPS -FTPArea=Àrea FTP/FTPS +NewFTPClient=Nova configuració de connexió FTP/SFTP +FTPArea=Àrea FTP/SFTP FTPAreaDesc=Aquesta pantalla mostra una vista d'un servidor FTP i SFTP. SetupOfFTPClientModuleNotComplete=La configuració del mòdul Client FTP o SFTP sembla incompleta FTPFeatureNotSupportedByYourPHP=El vostre PHP no admet funcions FTP o SFTP @@ -325,3 +331,9 @@ FTPFailedToRemoveDir=No s'ha pogut eliminar la carpeta %s : comproveu el FTPPassiveMode=Mode passiu ChooseAFTPEntryIntoMenu=Tria un lloc FTP/SFTP del menú... FailedToGetFile=No s'han pogut obtenir els fitxers %s +ErrorFTPNodisconnect=Error en desconnectar el servidor FTP/SFTP +FileWasUpload=S'ha penjat el fitxer %s +FTPFailedToUploadFile=No s'ha pogut carregar el fitxer %s . +AddFolder=Crea una carpeta +FileWasCreateFolder=S'ha creat la carpeta %s +FTPFailedToCreateFolder=No s'ha pogut crear la carpeta %s . diff --git a/htdocs/langs/ca_ES/partnership.lang b/htdocs/langs/ca_ES/partnership.lang index 7254e26fcea..a88b18b8b4d 100644 --- a/htdocs/langs/ca_ES/partnership.lang +++ b/htdocs/langs/ca_ES/partnership.lang @@ -20,6 +20,7 @@ ModulePartnershipName=Gestió de la col·laboració PartnershipDescription=Mòdul Gestió de la col·laboració PartnershipDescriptionLong= Mòdul Gestió de la col·laboració Partnership=Associació +Partnerships=Col·laboracions AddPartnership=Afegiu associació CancelPartnershipForExpiredMembers=Associació: cancel·leu l'associació de membres amb subscripcions caducades PartnershipCheckBacklink=Associació: consulteu l'enllaç de retrocés de referència @@ -28,6 +29,7 @@ PartnershipCheckBacklink=Associació: consulteu l'enllaç de retrocés de refer # Menu # NewPartnership=Nova associació +NewPartnershipbyWeb= La vostra associació s'ha afegit correctament. ListOfPartnerships=Llista d'associació # diff --git a/htdocs/langs/ca_ES/projects.lang b/htdocs/langs/ca_ES/projects.lang index 7e49d3d4d4e..229e6971e98 100644 --- a/htdocs/langs/ca_ES/projects.lang +++ b/htdocs/langs/ca_ES/projects.lang @@ -23,7 +23,7 @@ TasksPublicDesc=Aquesta vista mostra tots els projectes i tasques en els que vos TasksDesc=Aquesta vista presenta tots els projectes i tasques (els permisos d'usuari us concedeixen permís per a veure-ho tot). AllTaskVisibleButEditIfYouAreAssigned=Totes les tasques per a projectes qualificats són visibles, però podeu ingressar només el temps per a la tasca assignada a l'usuari seleccionat. Assigneu la tasca si necessiteu introduir-hi el temps. OnlyYourTaskAreVisible=Només són visibles les tasques assignades. Si heu d'introduir el temps en una tasca i si la tasca no és visible aquí, heu d'assignar-la a vosaltres mateixos. -ImportDatasetProjects=Projects or opportunities +ImportDatasetProjects=Projectes o oportunitats ImportDatasetTasks=Tasques de projectes ProjectCategories=Etiquetes de projecte NewProject=Projecte nou @@ -38,9 +38,9 @@ OpportunitiesStatusForOpenedProjects=Import d'oportunitats de projectes oberts p OpportunitiesStatusForProjects=Import d'oportunitats de projectes oberts per estat ShowProject=Veure projecte ShowTask=Veure tasca -SetThirdParty=Set third party +SetThirdParty=Estableix un tercer SetProject=Indica el projecte -OutOfProject=Out of project +OutOfProject=Fora de projecte NoProject=Cap projecte definit NbOfProjects=Nombre de projectes NbOfTasks=Nombre de tasques @@ -169,7 +169,7 @@ OpportunityProbability=Probabilitat d'oportunitat OpportunityProbabilityShort=Probab. d'op. OpportunityAmount=Import de la oportunitat OpportunityAmountShort=Import de la oportunitat -OpportunityWeightedAmount=Amount of opportunity, weighted by probability +OpportunityWeightedAmount=Import d'oportunitat, ponderada per probabilitat OpportunityWeightedAmountShort=Op. quantitat ponderada OpportunityAmountAverageShort=Import mitjà de la oportunitat OpportunityAmountWeigthedShort=Import d'oportunitat ponderada diff --git a/htdocs/langs/ca_ES/propal.lang b/htdocs/langs/ca_ES/propal.lang index caca918f9a6..43b6863ba3f 100644 --- a/htdocs/langs/ca_ES/propal.lang +++ b/htdocs/langs/ca_ES/propal.lang @@ -95,7 +95,7 @@ DefaultModelPropalCreate=Model per defecte DefaultModelPropalToBill=Model per defecte en tancar un pressupost (a facturar) DocModelAzurDescription=Un model complet de pressupost (antiga implementació de la plantilla Cyan) DocModelCyanDescription=Un model de pressupost complet -FichinterSigned=Intervention signed +FichinterSigned=Intervenció signada IdProduct=ID de producte IdProposal=ID del pressupost IsNotADraft=no és un esborrany @@ -111,8 +111,8 @@ ProposalCustomerSignature=Acceptació per escrit, segell de l'empresa, data i si ProposalsStatisticsSuppliers=Estadístiques de propostes de proveïdors RefusePropal=Rebutja la proposta Sign=Signe -SignContract=Sign contract -SignFichinter=Sign intervention +SignContract=Signar contracte +SignFichinter=Signar la intervenció SignPropal=Acceptar la proposta Signed=signat SignedOnly=Només signat diff --git a/htdocs/langs/ca_ES/receiptprinter.lang b/htdocs/langs/ca_ES/receiptprinter.lang index 246b2285992..3ea95f46f8b 100644 --- a/htdocs/langs/ca_ES/receiptprinter.lang +++ b/htdocs/langs/ca_ES/receiptprinter.lang @@ -35,9 +35,9 @@ DOL_LINE_FEED=Salta la línia DOL_ALIGN_LEFT=Alinea el text a l'esquerra DOL_ALIGN_CENTER=Centra el text DOL_ALIGN_RIGHT=Alinea el text a la dreta -DOL_USE_FONT_A=Utilitzeu el tipus de lletra A de la impressora -DOL_USE_FONT_B=Utilitzeu el tipus de lletra B de la impressora -DOL_USE_FONT_C=Utilitzeu el tipus de lletra C de la impressora +DOL_USE_FONT_A=Utilitzeu la lletra tipogràfica A de la impressora +DOL_USE_FONT_B=Utilitzeu la lletra tipogràfica B de la impressora +DOL_USE_FONT_C=Utilitzeu la lletra tipogràfica C de la impressora DOL_PRINT_BARCODE=Imprimeix codi de barres DOL_PRINT_BARCODE_CUSTOMER_ID=Imprimeix codi de barres del ID de client DOL_CUT_PAPER_FULL=Talla el tiquet completament diff --git a/htdocs/langs/ca_ES/receptions.lang b/htdocs/langs/ca_ES/receptions.lang index 51a5290bc70..1ef267132bb 100644 --- a/htdocs/langs/ca_ES/receptions.lang +++ b/htdocs/langs/ca_ES/receptions.lang @@ -32,6 +32,7 @@ StatusReceptionDraftShort=Esborrany StatusReceptionValidatedShort=Validat StatusReceptionProcessedShort=Processats ReceptionSheet=Full de recepció +ValidateReception=Valida la recepció ConfirmDeleteReception=Vols suprimir aquesta recepció? ConfirmValidateReception=Vols validar aquesta recepció amb referència %s ? ConfirmCancelReception=Vols cancel·lar aquesta recepció? @@ -48,7 +49,6 @@ ReceptionsNumberingModules=Mòdul de numeració per a recepcions ReceptionsReceiptModel=Plantilles de documents per a recepcions NoMorePredefinedProductToDispatch=No hi ha més productes predefinits per ser enviats ReceptionExist=Hi ha una recepció -ByingPrice=Preu per ordre ReceptionBackToDraftInDolibarr=Recepció %s torna a esborrany ReceptionClassifyClosedInDolibarr=Recepció %s classificada Tancada ReceptionUnClassifyCloseddInDolibarr=La recepció %s torna a obrir diff --git a/htdocs/langs/ca_ES/recruitment.lang b/htdocs/langs/ca_ES/recruitment.lang index b9a7d395496..cf91f9e811c 100644 --- a/htdocs/langs/ca_ES/recruitment.lang +++ b/htdocs/langs/ca_ES/recruitment.lang @@ -29,7 +29,7 @@ RecruitmentSetup = Configuració de la contractació Settings = Configuració RecruitmentSetupPage = Introduïu aquí la configuració de les opcions principals del mòdul de contractació RecruitmentArea=Àrea de contractació -PublicInterfaceRecruitmentDesc=Les pàgines públiques de feines són URL públiques per a mostrar i respondre a feines actives. Hi ha un enllaç diferent per a cada treball actiu que es troba a cada registre de la feina. +PublicInterfaceRecruitmentDesc=Les pàgines públiques de llocs de treball són URL públics per a mostrar i respondre a les feines obertes. Hi ha un enllaç diferent per a cada treball obert, que es troba a cada registre de feina. EnablePublicRecruitmentPages=Activa les pàgines públiques de treballs actius # @@ -75,5 +75,5 @@ JobClosedTextCanceled=L’oferta de feina està tancada. ExtrafieldsJobPosition=Atributs complementaris (llocs de treball) ExtrafieldsApplication=Atributs complementaris (sol·licituds de feina) MakeOffer=Feu una oferta -WeAreRecruiting=Estem reclutant. Aquesta és una llista de places obertes per cobrir... +WeAreRecruiting=Estem reclutant. Aquesta és una llista de places obertes per a cobrir... NoPositionOpen=No hi ha posicions obertes de moment diff --git a/htdocs/langs/ca_ES/salaries.lang b/htdocs/langs/ca_ES/salaries.lang index ff6d4439d9b..8931092134c 100644 --- a/htdocs/langs/ca_ES/salaries.lang +++ b/htdocs/langs/ca_ES/salaries.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - salaries -SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Account (from the Chart of Account) used by default for "user" third parties +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Compte (del pla comptable) utilitzat per defecte per a tercers «usuaris». SALARIES_ACCOUNTING_ACCOUNT_PAYMENT_Desc=The dedicated account defined on user 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 user accounting account on user is not defined. SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Compte comptable per defecte per als pagaments salarials CREATE_NEW_SALARY_WITHOUT_AUTO_PAYMENT=De manera predeterminada, deixeu buida l'opció "Crear automàticament un pagament total" quan creeu un sou diff --git a/htdocs/langs/ca_ES/stocks.lang b/htdocs/langs/ca_ES/stocks.lang index 0db83a567c2..28109142013 100644 --- a/htdocs/langs/ca_ES/stocks.lang +++ b/htdocs/langs/ca_ES/stocks.lang @@ -147,9 +147,9 @@ Replenishments=reaprovisionament NbOfProductBeforePeriod=Quantitat del producte %s en estoc abans del període seleccionat (< %s) NbOfProductAfterPeriod=Quantitat de producte %s en estoc després del període seleccionat (> %s) MassMovement=Moviments en massa -SelectProductInAndOutWareHouse=Select a source warehouse (optional), a target warehouse, a product and a quantity then click "%s". Once this is done for all required movements, click on "%s". +SelectProductInAndOutWareHouse=Seleccioneu un magatzem d'origen (opcional), un magatzem de destinació, un producte i una quantitat i feu clic a "%s". Un cop fet això per a tots els moviments necessaris, feu clic a "%s". RecordMovement=Registre de transferència -RecordMovements=Record stock movements +RecordMovements=Registrar moviments d'estocs ReceivingForSameOrder=Recepcions d'aquesta comanda StockMovementRecorded=Moviments d'estoc registrat RuleForStockAvailability=Regles de requeriment d'estoc @@ -236,7 +236,7 @@ StockIncrease=Augment d'estoc StockDecrease=Disminució d'estoc InventoryForASpecificWarehouse=Inventari d’un magatzem específic InventoryForASpecificProduct=Inventari d’un producte específic -StockIsRequiredToChooseWhichLotToUse=An existing stock is required to be able to choose which lot to use +StockIsRequiredToChooseWhichLotToUse=Es requereix un estoc existent per a poder triar quin lot utilitzar ForceTo=Obligar a AlwaysShowFullArbo=Mostra l'arbre complet de magatzems a la finestra emergent dels enllaços de magatzem (Advertència: pot disminuir el rendiment de manera espectacular) StockAtDatePastDesc=Aquí podeu veure l'estoc (estoc real) en una data determinada del passat diff --git a/htdocs/langs/ca_ES/stripe.lang b/htdocs/langs/ca_ES/stripe.lang index 190e2d222cb..46910ccff08 100644 --- a/htdocs/langs/ca_ES/stripe.lang +++ b/htdocs/langs/ca_ES/stripe.lang @@ -62,7 +62,7 @@ DeleteACard=Suprimeix la targeta ConfirmDeleteCard=Estàs segur que vols eliminar aquesta targeta de crèdit o de dèbit? CreateCustomerOnStripe=Crea un client a Stripe CreateCardOnStripe=Crea una targeta a Stripe -CreateBANOnStripe=Create bank on Stripe +CreateBANOnStripe=Crea un banc a Stripe ShowInStripe=Mostra a Stripe StripeUserAccountForActions=Compte d'usuari que s'utilitzarà per a la notificació per correu electrònic d'alguns esdeveniments de Stripe (pagaments de Stripe) StripePayoutList=Llista de pagaments de Stripe @@ -73,6 +73,6 @@ ClickHereToTryAgain= Feu clic aquí per a tornar-ho a provar... S'ha afegit una resposta nova a un bitllet que seguiu. Aquest és el missatge:
TicketMessageMailIntroHelpAdmin=Aquest text s'inserirà abans de la resposta en respondre a un bitllet de Dolibarr -TicketMessageMailFooter=Message footer -TicketMessageMailFooterHelp=This text is added only at the end of the message sent by email and will not be saved. -TicketMessageMailFooterText=Message sent by %s via Dolibarr +TicketMessageMailFooter=Missatge del peu de pàgina +TicketMessageMailFooterHelp=Aquest text només s'afegeix al final del missatge enviat per correu electrònic i no es desarà. +TicketMessageMailFooterText=Missatge enviat per %s via Dolibarr TicketMessageMailFooterHelpAdmin=Aquest text s'inserirà després del missatge de resposta. TicketMessageHelp=Només aquest text es guardarà a la llista de missatges de la targeta de tiquet. TicketMessageSubstitutionReplacedByGenericValues=Les variables de substitució es reemplacen per valors genèrics. -ForEmailMessageWillBeCompletedWith=For email messages sent to external users, the message will be completed with +ForEmailMessageWillBeCompletedWith=Per als missatges de correu electrònic enviats a usuaris externs, el missatge es completarà amb TimeElapsedSince=Temps transcorregut des de TicketTimeToRead=Temps transcorregut abans de llegir TicketTimeElapsedBeforeSince=Temps transcorregut abans / després diff --git a/htdocs/langs/ca_ES/users.lang b/htdocs/langs/ca_ES/users.lang index ab4e884a2d7..000d3304565 100644 --- a/htdocs/langs/ca_ES/users.lang +++ b/htdocs/langs/ca_ES/users.lang @@ -128,8 +128,7 @@ DateLastLogin=Data darrera sessió DatePreviousLogin=Data d'inici de sessió anterior IPLastLogin=IP darrer inici de sessió IPPreviousLogin=IP d'inici de sessió anterior -ShowAllPerms=Show all permission rows -HideAllPerms=Hide all permission rows +ShowAllPerms=Mostra totes les files de permís +HideAllPerms=Amaga totes les files de permís UserPublicPageDesc=You can enable a virtual card for this user. An url with the user profile and a barcode will be available to allow anybody with a smartphone to scan it and add your contact to its address book. -EnablePublicVirtualCard=Enable the public virtual user card -PublicVirtualCardUrl=Public virtual user card +EnablePublicVirtualCard=Habilita la fitxa d'usuari virtual pública diff --git a/htdocs/langs/ca_ES/website.lang b/htdocs/langs/ca_ES/website.lang index 0a7692af62e..6a1485548e1 100644 --- a/htdocs/langs/ca_ES/website.lang +++ b/htdocs/langs/ca_ES/website.lang @@ -1,11 +1,12 @@ # Dolibarr language file - Source file is en_US - website Shortname=Codi +WebsiteName=Nom del lloc web WebsiteSetupDesc=Creeu aquí els llocs web que voleu utilitzar. A continuació, vagi a menú de llocs web per editar-los. DeleteWebsite=Elimina la pàgina web ConfirmDeleteWebsite=Esteu segur que voleu suprimir aquest lloc web? També se suprimiran totes les seves pàgines i contingut. Els fitxers penjats (com al directori de suports, al mòdul ECM...) es mantindran. WEBSITE_TYPE_CONTAINER=Tipus de pàgina/contenidor WEBSITE_PAGE_EXAMPLE=Pàgina web per a utilitzar com a exemple -WEBSITE_PAGENAME=Nom/alies de pàgina +WEBSITE_PAGENAME=Nom/àlies de pàgina WEBSITE_ALIASALT=Noms de pàgina alternatius / àlies WEBSITE_ALIASALTDesc=Utilitzeu aquí la llista d'altres noms/àlies, per la qual cosa també es pot accedir a la pàgina amb altres noms/àlies (per exemple, el nom antic després de canviar el nom de l'àlies per a mantenir el vincle d'enllaç a l'antic vincle/nom de treball). La sintaxi és:
nomalternatiu1, nomalternatiu2... WEBSITE_CSS_URL=URL del fitxer CSS extern @@ -15,13 +16,13 @@ WEBSITE_HTML_HEADER=Afegit a la part inferior de l'encapçalament HTML (comú a WEBSITE_ROBOT=Fitxer per robots (robots.txt) WEBSITE_HTACCESS=Fitxer .htaccess del lloc web WEBSITE_MANIFEST_JSON=Arxiu del lloc web manifest.json -WEBSITE_README=Fitxer README.md -WEBSITE_KEYWORDSDesc=Utilitza una coma per separar valors -EnterHereLicenseInformation=Introduïu aquí metadades o informació de llicència per a fer un fitxer README.md. si distribuïu el vostre lloc web com a plantilla, el fitxer s'inclourà al paquet. +WEBSITE_KEYWORDSDesc=Utilitzeu una coma per a separar els valors +EnterHereReadmeInformation=Introduïu aquí una descripció del lloc web. Si distribuïu el vostre lloc web com a plantilla, el fitxer s'inclourà al paquet de la plantilla. +EnterHereLicenseInformation=Introduïu aquí la LLICÈNCIA del codi de la web. Si distribuïu el vostre lloc web com a plantilla, el fitxer s'inclourà a la plantilla del paquet. HtmlHeaderPage=Encapçalament HTML (específic sols per aquesta pàgina) PageNameAliasHelp=Nom o àlies de la pàgina.
Aquest àlies també s'utilitza per construir un URL de SEO quan el lloc web es llanci des d'un Host Virtual d'un servidor web (com Apache, Nginx...). Utilitzeu el botó "%s" per editar aquest àlies. -EditTheWebSiteForACommonHeader=Nota: si voleu definir un encapçalament personalitzat per a totes les pàgines, editeu el encapçalament al nivell del lloc en comptes de la pàgina/contenidor. -MediaFiles=Llibreria Media +EditTheWebSiteForACommonHeader=Nota: si voleu definir una capçalera personalitzada per a totes les pàgines, editeu la capçalera al nivell del lloc en lloc de la pàgina/contenidor. +MediaFiles=Mediateca EditCss=Editar propietats EditMenu=Edita menú EditMedias=Editar multimèdia @@ -42,8 +43,10 @@ ViewPageInNewTab=Mostra la pàgina en una pestanya nova SetAsHomePage=Indica com a Pàgina principal RealURL=URL real ViewWebsiteInProduction=Mostra la pàgina web utilitzant les URLs d'inici -SetHereVirtualHost=Utilitzeu amb Apache/NGinx/...
Creeu al vostre servidor web (Apache, Nginx...) un Virtual Host dedicat amb PHP habilitat i un directori arrel a
%s -ExampleToUseInApacheVirtualHostConfig=Exemple a utilitzar en la configuració de d'un Virtual Host d'Apache: +Virtualhost=Host virtual o nom de domini +VirtualhostDesc=El nom de l'amfitrió o domini virtual (per exemple: www.mywebsite.com, mybigcompany.net, ...) +SetHereVirtualHost=Utilitzeu-lo amb Apache/NGinx/...
Creeu al vostre servidor web (Apache, Nginx, ...) un host virtual dedicat amb PHP habilitat i un directori arrel a
%s +ExampleToUseInApacheVirtualHostConfig=Exemple per a utilitzar a la configuració de l'amfitrió virtual d'Apache: YouCanAlsoTestWithPHPS= Utilitzeu-lo amb el servidor incrustat de PHP
En desenvolupar l'entorn, és possible que preferiu provar el lloc amb el servidor web incrustat de PHP (requereix PHP 5.5) executant
php -S 0.0. 0.0: 8080 -t %s YouCanAlsoDeployToAnotherWHP= Executeu el vostre lloc web amb un altre proveïdor d'allotjament Dolibarr
Si no teniu un servidor web com Apache o NGinx disponible a Internet, podeu exportar i importar el vostre lloc web a una altra instància d'allotjament Dolibarr proporcionada per una altra instància d'allotjament Dolibarr proporcionada per un altre servidor Dolibar complet. integració amb el mòdul del lloc web. Podeu trobar una llista d'alguns proveïdors d'allotjament de Dolibarr a https://saas.dolibarr.org CheckVirtualHostPerms=Comproveu també que l'usuari del VIRTUAL HOST (per exemple www-data) té permisos %s sobre els fitxers a
%s @@ -57,7 +60,7 @@ NoPageYet=Encara sense pàgines YouCanCreatePageOrImportTemplate=Podeu crear una pàgina nova o importar una plantilla completa del lloc web SyntaxHelp=Ajuda sobre consells de sintaxi específics YouCanEditHtmlSourceckeditor=Podeu editar el codi font HTML usant el botó "Codi font" a l'editor. -YouCanEditHtmlSource=
Podeu incloure el codi PHP en aquesta font mitjançant les etiquetes <?php ?>. Estan disponibles les variables globals següents: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.

També podeu incloure contingut d'una altra pàgina/contenidor amb la següent sintaxi:
<?php includeContainer('alias_of_container_to_include'); ?>

Podeu fer una redirecció a una altra pàgina/contenidor amb la següent sintaxi (Nota: no emeten cap contingut abans d'una redirecció) :?
< php redirectToContainer ( 'alias_of_container_to_redirect_to'); ? >

Per a afegir un vincle a una altra pàgina, utilitzeu la sintaxi:
<a href = "alias_of_page_to_link_to.php" >mylink<a>

Per a incloure un enllaç per a descàrrega un arxiu emmagatzemat en els documents un directori , utilitzeu el document document.php embolcall:
Exemple, per a un fitxer a documents / ecm (cal registrar-se)? ] nom de fitxer.ext ">
Per a un fitxer a documents / suports (directori obert per a accés públic), la sintaxi és:
a03900dfre31ecz "/document.php?modulepart=medias&file=[relative_dir/ Alanfilename.ext">
Per a un fitxer compartit amb un enllaç compartit (accés obert mitjançant la tecla hash compartida del fitxer), una sintaxis es0a0z0z0a009 /document.php?hashp=publicsharekeyoffile">

per a incloure un imatge emmagatzemat en els documents directori, utilitzeu el viewimage.php embolcall:
exemple, per a una imatge en documents / arxius multimèdia (obert directori d’accés públic), la sintaxi és:
<img src = "/ viewimage.php? modulepart = medias&file = [relative_dir /] filename.ext" a0129 +YouCanEditHtmlSource=
Podeu incloure codi PHP en aquesta font utilitzant les etiquetes <?php ?>. Les variables globals següents estan disponibles: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.

També podeu incloure el contingut d'una altra pàgina/contenidor amb la sintaxi següent:
<?php includeContainer('alias_of_container_to_include'); ?>

Podeu fer una redirecció a una altra pàgina/contenidor amb la següent sintaxi (Nota: no emeten cap contingut abans d'una redirecció):
<?php redirectToContainer('alias_of_container_to_redirect_to'); ?>

Per a afegir un vincle a una altra pàgina, utilitzeu la sintaxi:
<a href="alias_of_page_to_link_to.php">mylink<a>

Per a incloure un enllaç per a descàrrega un arxiu emmagatzemat en el directori documents utilitza el visor document.php:
Exemple, per a un fitxer a documents/ecm (cal registrar-se), la sintaxi és:
<a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
Per a un fitxer a documents/mitjans (directori obert per a l'accés públic), la sintaxi és:
<a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext">
Per a un fitxer compartit amb un enllaç de compartició (accés obert utilitzant una clau de fitxer compartit), la sintaxi és:
<a href=" /document.php?hashp=publicsharekeyoffile">

Per a incloure una imatge emmagatzemada en el directori documents, utilitza el visor viewimage.php :
Exemple, per a una imatge a documents/medias (directori obert d'accés públic), la sintaxi és:
<img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext">
#YouCanEditHtmlSource2=
To include a image shared publicaly, use the viewimage.php wrapper:
Example with a shared key 123456789, syntax is:
<img src="/viewimage.php?hashp=12345679012...">
YouCanEditHtmlSource2=Per a una imatge compartida amb un enllaç compartit (accés obert mitjançant la tecla hash compartida del fitxer), la sintaxi és:
<img src = "/ viewimage.php? Hashp = 12345679012 ..." a0012c7dcbe087987 YouCanEditHtmlSourceMore=
Més exemples d'HTML o codi dinàmic disponibles a la documentació wiki
. @@ -97,7 +100,7 @@ SubdirOfPage=Subdirectori dedicat a la pàgina AliasPageAlreadyExists=Alias de pàgina %s ja existeixen CorporateHomePage=Pàgina d'inici corporativa EmptyPage=Pàgina buida -ExternalURLMustStartWithHttp=L'URL externa ha de començar amb http:// o https:// +ExternalURLMustStartWithHttp=L'URL extern ha de començar per http:// o https:// ZipOfWebsitePackageToImport=Carregueu el fitxer Zip del paquet de plantilles del lloc web ZipOfWebsitePackageToLoad=o trieu un paquet de plantilles de lloc web incrustat disponible ShowSubcontainers=Mostra contingut dinàmic @@ -132,12 +135,12 @@ PublicAuthorAlias=Àlies d’autor públic AvailableLanguagesAreDefinedIntoWebsiteProperties=Els idiomes disponibles es defineixen a les propietats del lloc web ReplacementDoneInXPages=Substitució realitzada %s pàgines o contenidors RSSFeed=Fils RSS -RSSFeedDesc=Podeu obtenir un feed RSS dels darrers articles amb el tipus "blogpost" mitjançant aquesta URL +RSSFeedDesc=Podeu obtenir un feed RSS dels últims articles amb el tipus «entrada de bloc» mitjançant aquest URL PagesRegenerated=%s pàgina (es) / contenidor (s) regenerada RegenerateWebsiteContent=Regenera els fitxers de memòria cau del lloc web AllowedInFrames=Es permet en marcs DefineListOfAltLanguagesInWebsiteProperties=Definiu la llista de tots els idiomes disponibles a les propietats del lloc web. -GenerateSitemaps=Genera un fitxer de mapa del lloc del lloc web +GenerateSitemaps=Generate website sitemap.xml file ConfirmGenerateSitemaps=Si ho confirmeu, suprimireu el fitxer de mapa del lloc existent... ConfirmSitemapsCreation=Confirmeu la generació del mapa del lloc SitemapGenerated=Fitxer del mapa del lloc %s generat @@ -145,3 +148,12 @@ ImportFavicon=Favicon ErrorFaviconType=Favicon ha de ser png ErrorFaviconSize=El favicon ha de tenir una mida de 16x16, 32x32 o 64x64 FaviconTooltip=Pengeu una imatge que ha de ser PNG (16x16, 32x32 o 64x64) +NextContainer=Pàgina/Contenidor següent +PreviousContainer=Pàgina/Contenidor anterior +WebsiteMustBeDisabled=The website must have the status "%s" +WebpageMustBeDisabled=The web page must have the status "%s" +SetWebsiteOnlineBefore=When website is offline, all pages are offline. Change status of website first. +Booking=Reserva +Reservation=Reserva +PagesViewedPreviousMonth=Pàgines vistes (mes anterior) +PagesViewedTotal=Pàgines vistes (total) diff --git a/htdocs/langs/cs_CZ/admin.lang b/htdocs/langs/cs_CZ/admin.lang index 13a3ace17af..b483e426502 100644 --- a/htdocs/langs/cs_CZ/admin.lang +++ b/htdocs/langs/cs_CZ/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Zaškrtávače ExtrafieldCheckBoxFromList=Zaškrtávací políčka z tabulky ExtrafieldLink=Odkaz na objekt ComputedFormula=Vypočtené pole -ComputedFormulaDesc=Zde můžete zadat vzorec pomocí jiných vlastností objektu nebo jakéhokoli kódování PHP, abyste získali dynamickou vypočítanou hodnotu. Můžete použít libovolné vzorce kompatibilní s PHP, včetně "?" operátor stavu a následující globální objekt: $ db, $ conf, $ langs, $ mysoc, $ user, $ object .
VAROVÁNÍ : K dispozici mohou být pouze některé vlastnosti objektu $. Pokud potřebujete vlastnosti, které nejsou načteny, stačí si objekt načíst do vzorce jako v druhém příkladu.
Použití vypočítaného pole znamená, že z rozhraní nemůžete zadat žádnou hodnotu. Rovněž pokud dojde k chybě syntaxe, vzorec nemůže nic vrátit.

Příklad vzorce:
$ object-> id < 10 ? round($object-> id / 2, 2): ($ object-> id + 2 * $ user-> id) * (int) subst ($ mysoc-> zip, 1, 2, 2 )

Příklad opětovného načtení objektu
(($ reloadedobj = new Societe ($ db)) && ($ reloadedobj-> fetchNoCompute ($ obj-> id? $ obj-> id: $ obj-id: $ obj-id: $ obj-id: $ obj-id: $ obj-id: $ obj-> obj:? > rowid: $ object-> id))> 0))? $ reloadedobj-> array_options ['options_extrafieldkey'] * $ reloadedobj-> capital / 5: '-1'

Další příklad vzorce pro vynucení zatížení objektu a jeho nadřazeného objektu:
(= $ reloadedobj (= $ $ load) )) && ($ reloadedobj-> fetchNoCompute ($ object-> id)> 0) && ($ secondloadedobj = nový projekt ($ db)) && ($ secondloadedobj-> fetchNoCompute ($ reloadedobj-> fk_project)> 0))? $ secondloadedobj-> ref: 'Nadřazený projekt nebyl nalezen' +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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Uložte vypočítané pole ComputedpersistentDesc=Vypočítaná další pole pole budou uložena do databáze, hodnota však bude přepočítána pouze při změně objektu tohoto pole. Pokud vypočítané pole závisí na jiných objektech nebo globálních datech, může být tato hodnota špatná !! ExtrafieldParamHelpPassword=Pokud ponecháte toto pole prázdné, znamená to, že tato hodnota bude uložena bez šifrování (pole musí být skryto pouze s hvězdou na obrazovce).
Nastavte "auto" pro použití výchozího šifrovacího pravidla pro uložení hesla do databáze (pak hodnota bude číst pouze hash, žádný způsob získání původní hodnoty) @@ -645,6 +645,8 @@ Module2300Name=Naplánované úlohy Module2300Desc=Správa plánovaných úloh (alias cron nebo chrono table) Module2400Name=Události/Agenda Module2400Desc=Sledujte události. Nahrajte automatické události pro účely sledování nebo zaznamenávejte ruční události nebo schůzky. Jedná se o hlavní modul pro správné řízení vztahů se zákazníky nebo dodavateli. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=DMS / ECM Module2500Desc=Systém správy dokumentů / elektronické správy obsahu. Automatické uspořádání vytvořených nebo uložených dokumentů. Sdílejte je, když budete potřebovat. Module2600Name=API / Web services (SOAP server) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind konverze možnosti Module3200Name=Nezměnitelné archivy Module3200Desc=Povolení nezměnitelného protokolu obchodních událostí. Události jsou archivovány v reálném čase. Protokol je tabulka řetězových událostí jen pro čtení, která lze exportovat. Tento modul může být pro některé země povinný. +Module3300Name=Module Builder +Module3200Desc=Povolení nezměnitelného protokolu obchodních událostí. Události jsou archivovány v reálném čase. Protokol je tabulka řetězových událostí jen pro čtení, která lze exportovat. Tento modul může být pro některé země povinný. Module3400Name=Sociální sítě Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...). Module4000Name=HRM @@ -700,8 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Přidat funkce pro správu Incoterms Module63000Name=Zdroje Module63000Desc=Spravujte prostředky (tiskárny, auta, místnosti, ...) pro přidělování událostí +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Recepce -Permission11=Přečtěte si faktury zákazníků +Permission11=Read customer invoices (and payments) Permission12=Vytvářejte/upravujte zákaznické faktury Permission13=Invalidate customer invoices Permission14=Ověřte faktury zákazníků @@ -943,7 +949,7 @@ Permission1190=Schvalujte nákupní objednávky (druhé schválení) Permission1191=Export supplier orders and their attributes Permission1201=Získejte výsledek exportu Permission1202=Vytvořit/upravit export -Permission1231=Přečtěte si faktury dodavatele +Permission1231=Read vendor invoices (and payments) Permission1232=Vytvářejte/upravujte faktury dodavatele Permission1233=Ověřte faktury dodavatele Permission1234=Odstranit faktury dodavatele @@ -1230,7 +1236,7 @@ SetupDescription4=  %s -> %s

Tento software je sada SetupDescription5=Ostatní položky nabídky nastavení řídí volitelné parametry. SetupDescriptionLink=%s - %s SetupDescription3b=Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Security events that are audited NoSecurityEventsAreAduited=No security events are audited. You can enable them from menu %s Audit=Security events @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive=Spouštěče v tomto souboru jsou aktivní, protože GeneratedPasswordDesc=Zvolte metodu, která má být použita pro automatické generování hesel. DictionaryDesc=Vložit všechny referenční data. Můžete přidat své hodnoty na výchozí hodnoty. ConstDesc=Tato stránka umožňuje upravit (přepsat) parametry, které nejsou dostupné na jiných stránkách. Většinou jsou to vyhrazené parametry pouze pro vývojáře / pokročilé odstraňování problémů. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=Všechny ostatní parametry spojené s bezpečností definujete zde. LimitsSetup=Limity / Přesné nastavení LimitsDesc=Zde můžete definovat limity, přesnosti a optimalizace, které Dolibarr používá @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Používejte typy událostí (spravované v menu Nastaven AGENDA_USE_EVENT_TYPE_DEFAULT=Automaticky nastavte tuto výchozí hodnotu pro typ události ve formuláři pro tvorbu událostí AGENDA_DEFAULT_FILTER_TYPE=Automaticky nastavte tento typ události ve filtru vyhledávání v agendě AGENDA_DEFAULT_FILTER_STATUS=Automaticky nastavte tento stav událostí ve filtru vyhledávání v agendě +AGENDA_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Which view do you want to open by default when selecting menu Agenda AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (When remind date is reached, a popup is shown by the browser. Each user can disable such notifications from its browser notification setup). AGENDA_REMINDER_BROWSER_SOUND=Povolit zvukové upozornění @@ -2129,6 +2139,7 @@ CodeLastResult=Výstup posledního kódu NbOfEmailsInInbox=Počet e-mailů ve zdrojovém adresáři LoadThirdPartyFromName=Načíst vyhledávání subjektem na adrese %s (pouze načíst) LoadThirdPartyFromNameOrCreate=Načíst vyhledávání subjektů na adrese %s (vytvořit, pokud nebyly nalezeny) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Message from a conversation initiated by a first email sent from Dolibarr WithoutDolTrackingID=Message from a conversation initiated by a first email NOT sent from Dolibarr @@ -2355,3 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/cs_CZ/install.lang b/htdocs/langs/cs_CZ/install.lang index 7723af4ffbd..43a7f937cf4 100644 --- a/htdocs/langs/cs_CZ/install.lang +++ b/htdocs/langs/cs_CZ/install.lang @@ -51,7 +51,6 @@ DatabaseName=Název databáze DatabasePrefix=Předpona - prefix tabulek v databázi DatabasePrefixDescription=Databáze tabulky prefix. Pokud je prázdný, defaultní hodnota je llx_. AdminLogin=Uživatelský účet pro vlastníka Dolibarr database. -PasswordAgain=Zopakujte potvrzení hesla AdminPassword=Heslo pro vlastníka databáze Dolibarr. CreateDatabase=Vytvořit databázi CreateUser=Vytvořte uživatelský účet nebo udělte uživatelskému účtu oprávnění pro databázi Dolibarr @@ -89,7 +88,7 @@ LoginAlreadyExists=Již existuje DolibarrAdminLogin=Login Dolibarr administrátora AdminLoginAlreadyExists=Účet administrátora Dolibarru '%s' již existuje. Běžte zpět, pro vytvoření jiného účtu. FailedToCreateAdminLogin=Nepodařilo se vytvořit administrátorský účet Dolibarru. -WarningRemoveInstallDir=Varování, z bezpečnostních důvodů, jakmile instalace nebo upgrade je dokončen, měli byste přidat soubor s názvem install.lock v adresáři dokumentů Dolibarr. Předejdete nechtěnému/škodlivému spuštění instalace nástrojů. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=Není k dispozici na této instalaci PHP ChoosedMigrateScript=Vyberte migrační skript DataMigration=Migrace databáze (data) @@ -209,7 +208,12 @@ HideNotAvailableOptions=Skrýt nedostupné možnosti ErrorFoundDuringMigration=Byly hlášeny chyb(a)y během procesu migrace, takže další krok není k dispozici. Chcete-li ignorovat chyby, můžete kliknout zde , ale aplikace nebo některé funkce nemusí pracovat správně, dokud nejsou chyby vyřešeny. YouTryInstallDisabledByDirLock=Aplikace se pokoušela samoinnicializovat, ale stránky pro instalaci / upgrade byly pro zabezpečení zakázány (adresář byl přejmenován na příponu .lock).
YouTryInstallDisabledByFileLock=Aplikace se pokoušela o vlastní inovaci, ale stránky s instalací / upgradem byly zakázány z důvodu zabezpečení (existence souboru zámku install.lock v adresáři dokumentů dolibarr).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=Kliknutím sem přejdete do aplikace ClickOnLinkOrRemoveManualy=Pokud probíhá aktualizace, počkejte prosím. Pokud ne, klikněte na následující odkaz. Pokud vždy vidíte stejnou stránku, musíte odebrat / přejmenovat soubor install.lock v adresáři dokumentů. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=Načteno FunctionTest=Test funkce +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/cy_GB/admin.lang b/htdocs/langs/cy_GB/admin.lang index f0647ba6bcb..ed7c0f29233 100644 --- a/htdocs/langs/cy_GB/admin.lang +++ b/htdocs/langs/cy_GB/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Blychau ticio ExtrafieldCheckBoxFromList=Blychau ticio o'r bwrdd ExtrafieldLink=Cyswllt i wrthrych ComputedFormula=Maes cyfrifiadurol -ComputedFormulaDesc=Gallwch chi nodi fformiwla yma gan ddefnyddio priodweddau gwrthrych arall neu unrhyw god PHP i gael gwerth cyfrifiadurol deinamig. Gallwch ddefnyddio unrhyw fformiwlâu sy'n gydnaws â PHP gan gynnwys y "?" gweithredwr cyflwr, a gwrthrych byd-eang canlynol: $db, $conf, $langs, $mysoc, $user, $object .
RHYBUDD : Dim ond rhai priodweddau $object all fod ar gael. Os oes angen eiddo arnoch heb ei lwytho, rhowch y gwrthrych i'ch fformiwla fel yn yr ail enghraifft.
Mae defnyddio maes cyfrifiadurol yn golygu na allwch nodi unrhyw werth o'r rhyngwyneb i chi'ch hun. Hefyd, os oes gwall cystrawen, efallai na fydd y fformiwla yn dychwelyd dim.

Enghraifft o fformiwla:
$object->id < 10 ? round($object-> id / 2, 2): ($object->id + 2 * $user->id) * ($mys) substr($mys) substr(>2), )

Enghraifft i ail-lwytho gwrthrych
(($reloadedobj = Cymdeithas newydd($db)) && ($reloadedobj->fetchNoCompute($obj->id ?> ($obj->id ): $obj->id >rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->cyfalaf / 5: '-1'

Enghraifft arall o fformiwla i orfodi llwyth o wrthrych a'i riant wrthrych: a0342fccfda(19reloadbz0($j) newydd )) && ($reloadedobj->fetchNoCompute($object->id)> 0) && ($secondloadedobj = Prosiect newydd($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Heb ganfod y prosiect rhiant' +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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Storio maes cyfrifiadurol ComputedpersistentDesc=Bydd meysydd ychwanegol a gyfrifir yn cael eu storio yn y gronfa ddata, fodd bynnag, dim ond pan fydd gwrthrych y maes hwn yn cael ei newid y bydd y gwerth yn cael ei ailgyfrifo. Os yw'r maes a gyfrifwyd yn dibynnu ar wrthrychau eraill neu ddata byd-eang efallai bod y gwerth hwn yn anghywir!! ExtrafieldParamHelpPassword=Mae gadael y maes hwn yn wag yn golygu y bydd y gwerth hwn yn cael ei storio heb ei amgryptio (rhaid cuddio'r maes gyda seren ar y sgrin yn unig).
Gosod 'auto' i ddefnyddio'r rheol amgryptio rhagosodedig i gadw cyfrinair yn y gronfa ddata (yna y gwerth a ddarllenir fydd y stwnsh yn unig, dim ffordd i adfer y gwerth gwreiddiol) @@ -645,6 +645,8 @@ Module2300Name=Swyddi wedi'u hamserlennu Module2300Desc=Rheoli swyddi a drefnwyd (alias cron neu dabl crono) Module2400Name=Digwyddiadau/Agenda Module2400Desc=Traciwch ddigwyddiadau. Logio digwyddiadau awtomatig at ddibenion olrhain neu gofnodi digwyddiadau neu gyfarfodydd â llaw. Dyma'r prif fodiwl ar gyfer Rheoli Perthynas Cwsmer neu Werthwr yn dda. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=DMS / ECM Module2500Desc=System Rheoli Dogfennau / Rheoli Cynnwys Electronig. Trefniadaeth awtomatig o'ch dogfennau a gynhyrchir neu a storiwyd. Rhannwch nhw pan fo angen. Module2600Name=API / Web services (SOAP server) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=Galluoedd trosi GeoIP Maxmind Module3200Name=Archifau Annewidiadwy Module3200Desc=Galluogi log na ellir ei newid o ddigwyddiadau busnes. Mae digwyddiadau'n cael eu harchifo mewn amser real. Mae'r log yn dabl darllen yn unig o ddigwyddiadau cadwyn y gellir eu hallforio. Gall y modiwl hwn fod yn orfodol ar gyfer rhai gwledydd. +Module3300Name=Module Builder +Module3200Desc=Galluogi log na ellir ei newid o ddigwyddiadau busnes. Mae digwyddiadau'n cael eu harchifo mewn amser real. Mae'r log yn dabl darllen yn unig o ddigwyddiadau cadwyn y gellir eu hallforio. Gall y modiwl hwn fod yn orfodol ar gyfer rhai gwledydd. Module3400Name=Rhwydweithiau Cymdeithasol Module3400Desc=Galluogi meysydd Rhwydweithiau Cymdeithasol yn drydydd partïon a chyfeiriadau (skype, twitter, facebook, ...). Module4000Name=HRM @@ -700,8 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Ychwanegu nodweddion i reoli Incoterms Module63000Name=Adnoddau Module63000Desc=Rheoli adnoddau (argraffwyr, ceir, ystafelloedd, ...) ar gyfer dyrannu i ddigwyddiadau +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Receptions -Permission11=Darllenwch anfonebau cwsmeriaid +Permission11=Read customer invoices (and payments) Permission12=Creu/addasu anfonebau cwsmeriaid Permission13=Annilysu anfonebau cwsmeriaid Permission14=Dilysu anfonebau cwsmeriaid @@ -943,7 +949,7 @@ Permission1190=Cymeradwyo (ail gymeradwyaeth) archebion prynu Permission1191=Allforio archebion cyflenwyr a'u priodoleddau Permission1201=Cael canlyniad allforio Permission1202=Creu/Addasu allforyn -Permission1231=Darllen anfonebau gwerthwr +Permission1231=Read vendor invoices (and payments) Permission1232=Creu/addasu anfonebau gwerthwr Permission1233=Dilysu anfonebau gwerthwr Permission1234=Dileu anfonebau gwerthwr @@ -1230,7 +1236,7 @@ SetupDescription4= %s -> %s

Mae'r meddalwedd hwn yn SetupDescription5=Mae cofnodion dewislen Setup eraill yn rheoli paramedrau dewisol. SetupDescriptionLink= %s - %s SetupDescription3b=Paramedrau sylfaenol a ddefnyddir i addasu ymddygiad diofyn eich cais (e.e. ar gyfer nodweddion sy'n gysylltiedig â gwlad). -SetupDescription4b=Mae'r feddalwedd hon yn gyfres o lawer o fodiwlau/cymwysiadau. Rhaid galluogi a ffurfweddu'r modiwlau sy'n gysylltiedig â'ch anghenion. Bydd cofnodion dewislen yn ymddangos gyda gweithrediad y modiwlau hyn. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Digwyddiadau diogelwch sy'n cael eu harchwilio NoSecurityEventsAreAduited=Nid oes unrhyw ddigwyddiadau diogelwch yn cael eu harchwilio. Gallwch eu galluogi o ddewislen %s Audit=Digwyddiadau diogelwch @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive=Mae sbardunau yn y ffeil hon yn weithredol gan fod m GeneratedPasswordDesc=Dewiswch y dull i'w ddefnyddio ar gyfer cyfrineiriau a gynhyrchir yn awtomatig. DictionaryDesc=Mewnosodwch yr holl ddata cyfeirio. Gallwch ychwanegu eich gwerthoedd at y rhagosodiad. ConstDesc=Mae'r dudalen hon yn eich galluogi i olygu (diystyru) paramedrau nad ydynt ar gael mewn tudalennau eraill. Paramedrau neilltuedig yw'r rhain yn bennaf ar gyfer datblygwyr / datrys problemau uwch yn unig. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=Mae'r holl baramedrau eraill sy'n ymwneud â diogelwch wedi'u diffinio yma. LimitsSetup=Cyfyngiadau / Gosodiad manwl gywir LimitsDesc=Gallwch ddiffinio terfynau, manwl gywirdeb ac optimeiddiadau a ddefnyddir gan Dolibarr yma @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Defnyddiwch fathau o ddigwyddiadau (a reolir yn y ddewisle AGENDA_USE_EVENT_TYPE_DEFAULT=Gosodwch y gwerth rhagosodedig hwn yn awtomatig ar gyfer y math o ddigwyddiad ar ffurf creu digwyddiad AGENDA_DEFAULT_FILTER_TYPE=Gosod y math hwn o ddigwyddiad yn awtomatig yn hidlydd chwilio gwedd agenda AGENDA_DEFAULT_FILTER_STATUS=Gosodwch y statws hwn yn awtomatig ar gyfer digwyddiadau yn hidlydd chwilio gwedd agenda +AGENDA_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Pa wedd ydych chi am ei hagor yn ddiofyn wrth ddewis Agenda ddewislen AGENDA_REMINDER_BROWSER=Galluogi nodyn atgoffa digwyddiad ar borwr defnyddiwr (Pan gyrhaeddir y dyddiad atgoffa, bydd y porwr yn dangos naidlen. Gall pob defnyddiwr analluogi hysbysiadau o'r fath o osod hysbysiadau ei borwr). AGENDA_REMINDER_BROWSER_SOUND=Galluogi hysbysiad sain @@ -2129,6 +2139,7 @@ CodeLastResult=Cod canlyniad diweddaraf NbOfEmailsInInbox=Nifer y negeseuon e-bost yn y cyfeiriadur ffynhonnell LoadThirdPartyFromName=Llwytho chwiliad trydydd parti ar %s (llwyth yn unig) LoadThirdPartyFromNameOrCreate=Llwythwch chwiliad trydydd parti ar %s (creu os na chanfyddir) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Cadw'r ffeiliau sydd wedi'u hatodi i mewn i ddogfennau gwrthrych os canfyddir cyf o wrthrych ym mhwnc e-bost. WithDolTrackingID=Neges o sgwrs a gychwynnwyd gan e-bost cyntaf a anfonwyd o Ddolibarr WithoutDolTrackingID=Neges o sgwrs a gychwynnwyd gan e-bost cyntaf NID anfonwyd o Ddolibarr @@ -2355,3 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/cy_GB/install.lang b/htdocs/langs/cy_GB/install.lang index d2ad4f7b112..a70e6be2dd7 100644 --- a/htdocs/langs/cy_GB/install.lang +++ b/htdocs/langs/cy_GB/install.lang @@ -51,7 +51,6 @@ DatabaseName=Enw cronfa ddata DatabasePrefix=Rhagddodiad tabl cronfa ddata DatabasePrefixDescription=Rhagddodiad tabl cronfa ddata. Os yn wag, rhagosodwch i llx_. AdminLogin=Cyfrif defnyddiwr ar gyfer perchennog cronfa ddata Dolibarr. -PasswordAgain=Ail-deipiwch cadarnhad cyfrinair AdminPassword=Cyfrinair ar gyfer perchennog cronfa ddata Dolibarr. CreateDatabase=Creu cronfa ddata CreateUser=Creu cyfrif defnyddiwr neu roi caniatâd cyfrif defnyddiwr ar gronfa ddata Dolibarr @@ -89,7 +88,7 @@ LoginAlreadyExists=Eisoes yn bodoli DolibarrAdminLogin=Mewngofnod gweinyddol Dolibarr AdminLoginAlreadyExists=Mae cyfrif gweinyddwr Dolibarr ' %s ' eisoes yn bodoli. Ewch yn ôl os ydych am greu un arall. FailedToCreateAdminLogin=Wedi methu creu cyfrif gweinyddwr Dolibarr. -WarningRemoveInstallDir=Rhybudd, am resymau diogelwch, unwaith y bydd y gosodiad neu'r uwchraddiad wedi'i gwblhau, dylech ychwanegu ffeil o'r enw install.lock i gyfeiriadur dogfennau Dolibarr er mwyn atal defnydd damweiniol/maleisus o'r offer gosod eto. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=Ddim ar gael yn y PHP hwn ChoosedMigrateScript=Dewiswch sgript mudo DataMigration=Mudo cronfa ddata (data) @@ -209,7 +208,12 @@ HideNotAvailableOptions=Cuddio opsiynau nad ydynt ar gael ErrorFoundDuringMigration=Adroddwyd am wall(au) yn ystod y broses fudo felly nid yw'r cam nesaf ar gael. I anwybyddu gwallau, gallwch cliciwch yma , ond efallai na fydd y cais neu rai nodweddion yn gweithio'n gywir nes bod y gwallau wedi'u datrys. YouTryInstallDisabledByDirLock=Ceisiodd y rhaglen hunan-uwchraddio, ond mae'r tudalennau gosod/uwchraddio wedi'u hanalluogi er diogelwch (cyfeiriadur wedi'i ailenwi ag ôl-ddodiad .lock).
YouTryInstallDisabledByFileLock=Ceisiodd y cymhwysiad hunan-uwchraddio, ond mae'r tudalennau gosod/uwchraddio wedi'u hanalluogi er diogelwch (trwy fodolaeth ffeil clo install.lock yn y cyfeiriadur dogfennau dolibarr).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=Cliciwch yma i fynd i'ch cais ClickOnLinkOrRemoveManualy=Os oes uwchraddiad ar y gweill, arhoswch. Os na, cliciwch ar y ddolen ganlynol. Os byddwch bob amser yn gweld yr un dudalen hon, rhaid i chi dynnu / ailenwi'r ffeil install.lock yn y cyfeiriadur dogfennau. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=Wedi'i lwytho FunctionTest=Prawf swyddogaeth +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/cy_GB/members.lang b/htdocs/langs/cy_GB/members.lang index a51460a8782..ccb15efeb44 100644 --- a/htdocs/langs/cy_GB/members.lang +++ b/htdocs/langs/cy_GB/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=Ystadegau cyfraniadau NbOfSubscriptions=Nifer y cyfraniadau AmountOfSubscriptions=Swm a gasglwyd o gyfraniadau TurnoverOrBudget=Trosiant (ar gyfer cwmni) neu Gyllideb (ar gyfer sylfaen) -DefaultAmount=Swm y cyfraniad rhagosodedig +DefaultAmount=Default amount of contribution (used only if no amount is defined at member type level) +MinimumAmount=Minimum amount (used only when contribution amount is free) CanEditAmount=Subscription amount is free CanEditAmountDetail=Visitor can choose/edit amount of its contribution regardless of the member type AmountIsLowerToMinimumNotice=sur un dû total de %s diff --git a/htdocs/langs/da_DK/admin.lang b/htdocs/langs/da_DK/admin.lang index 390a3d10170..7cc08f19041 100644 --- a/htdocs/langs/da_DK/admin.lang +++ b/htdocs/langs/da_DK/admin.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Udskriv reference og periode for vare i PDF +BoldRefAndPeriodOnPDF=Udskriv reference og periode for produktvare i PDF BoldLabelOnPDF=Udskriv vare etiket med fed skrift i PDF Foundation=Grundlag Version=Version @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Afkrydsningsfelter ExtrafieldCheckBoxFromList=Afkrydsningsfelter fra tabellen ExtrafieldLink=Link til et objekt ComputedFormula=Beregnet felt -ComputedFormulaDesc=Du kan her indtaste en formel ved hjælp af andre egenskaber af objektet eller enhver PHP-kodning for at få en dynamisk beregnet værdi. Du kan bruge alle PHP-kompatible formler inklusive "?" betingelsesoperator og følgende globale objekt: $db, $conf, $langs, $mysoc, $user, $object.
ADVARSEL: Kun nogle egenskaber for $object er tilgængelige. Hvis du har brug for en egenskab, der ikke er indlæst, skal du hente objektet ind i din formel som i det andet eksempel.
Brug af et beregnet felt betyder, at du ikke selv kan indtaste nogen værdi fra grænsefladen. Hvis der er en syntaksfejl, vil formlen muligvis ikke returnere noget.

Eksempel på formel:
$object->id < 10 ? round($object->id / 2, 2): ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Eksempel på genindlæsning af objekt
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

Andet eksempel på formel til at tvinge genindlæsning af objektet og dets overordnede objekt:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' +ComputedFormulaDesc=Du kan her indtaste en formel ved hjælp af andre egenskaber for objektet eller enhver PHP-kodning for at få en dynamisk beregnet værdi. Du kan bruge alle PHP-kompatible formler inklusive "?" betingelsesoperator og følgende globale objekt: $db, $conf, $langs, $mysoc, $user, $objectoffield .
ADVARSEL : Hvis du har brug for egenskaber for et objekt, der ikke er indlæst, skal du bare hente objektet ind i din formel som i det andet eksempel.
Brug af et beregnet felt betyder, at du ikke kan indtaste dig selv nogen værdi fra grænsefladen. Hvis der er en syntaksfejl, vil formlen muligvis ikke returnere noget.

Eksempel på formel:
$objectoffield->id < 10 ? round($objectoffield-> id / 2, 2): ($objectoffield->id + 2 *$user->oc, 1,2) )

Eksempel på genindlæsning af objekt
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoftionsfield_>id)' >$rebjreoptions]field->id-$' > ->hovedstad / 5: '-1')

Andet eksempel på formel til at tvinge belastning af objektet og dets overordnede objekt:
(($reloadedobj = new Task($db)) && ($reloadfield ->id) > 0) && ($secondloadedobj = nyt projekt($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Overordnet projekt blev ikke fundet' Computedpersistent=Gem beregnet felt ComputedpersistentDesc=Beregnet ekstra felter vil blive gemt i databasen, dog vil værdien først blive genberegnet, når objektet i dette felt ændres. Hvis det beregnede felt afhænger af andre objekter eller globale data, kan denne værdi være forkert!! ExtrafieldParamHelpPassword=At lade dette felt være tomt betyder, at denne værdi vil blive gemt uden kryptering (feltet må kun skjules med stjerne på skærmen).
Indstil 'auto' for at bruge standardkrypteringsreglen til at gemme adgangskoden i databasen (så vil værdien kun være hashen, ingen måde at hente den oprindelige værdi på) @@ -704,8 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Tilføj funktioner til at administrere Incoterms Module63000Name=Ressourcer Module63000Desc=Administrer ressourcer (printere, biler, lokaler, ...) til at allokere til begivenheder +Module66000Name=Aktiver OAuth2-godkendelse +Module66000Desc=Giv et værktøj til at generere og administrere OAuth2-tokens. Tokenet kan derefter bruges af nogle andre moduler. Module94160Name=Modtagelse -Permission11=Læs kundefakturaer +Permission11=Læs kundefakturaer (og betalinger) Permission12=Oprette/ændre kundefakturaer Permission13=Ugyldiggør kundefakturaer Permission14=Validere kundefakturaer @@ -947,7 +949,7 @@ Permission1190=Godkend (anden godkendelse) indkøbsordrer Permission1191=Eksporter leverandørordrer og deres attributter Permission1201=Få resultatet af en eksport Permission1202=Opret/ændre en eksport -Permission1231=Læs leverandørfakturaer +Permission1231=Læs leverandørfakturaer (og betalinger) Permission1232=Opret/rediger leverandørfakturaer Permission1233=Valider leverandørfakturaer Permission1234=Slet leverandørfaktura @@ -1234,7 +1236,7 @@ SetupDescription4=%s -> %s

Denne software er en pakke me SetupDescription5=Andet opsætning menu administrerer yderligere parametre. SetupDescriptionLink=%s - %s SetupDescription3b=Grundlæggende parametre, der bruges til at tilpasse standardadfærden for din applikations standardfunktioner (f.eks. til lande specifikke funktioner). -SetupDescription4b=Denne software er en pakke med mange moduler. De moduler, der er relateret til dine behov, skal aktiveres og konfigureres. Menupunkter vises ved aktiveringen af disse moduler. +SetupDescription4b=Denne software er en suite af mange moduler/applikationer. De moduler, der er relateret til dine behov, skal aktiveres. Menupunkter vises ved aktivering af disse moduler. AuditedSecurityEvents=Sikkerhedshændelser, der revideres NoSecurityEventsAreAduited=Ingen sikkerhedshændelser revideres. Du kan aktivere dem fra menuen %s Audit=Sikkerhedshændelser @@ -2366,3 +2368,7 @@ MaxNumberOfAttachementOnForms=Maks. antal sammenføjede filer i en formular IfDefinedUseAValueBeetween=Hvis det er defineret, skal du bruge en værdi mellem %s og %s Reload=Genindlæs ConfirmReload=Bekræft modulgenindlæsning +WarningModuleHasChangedLastVersionCheckParameter=Advarsel: modulet %s har indstillet en parameter til at kontrollere sin version ved hver sideadgang. Dette er en dårlig og ikke tilladt praksis, der kan gøre siden til at administrere moduler ustabil. Kontakt venligst forfatteren af modulet for at rette dette. +WarningModuleHasChangedSecurityCsrfParameter=Advarsel: modulet %s har deaktiveret CSRF-sikkerheden for din instans. Denne handling er mistænkelig, og din installation er muligvis ikke længere sikret. Kontakt venligst forfatteren af modulet for forklaring. +EMailsInGoingDesc=Indgående e-mails administreres af modulet %s. Du skal aktivere og konfigurere det, hvis du har brug for at understøtte indgående e-mails. +MAIN_IMAP_USE_PHPIMAP=Brug PHP-IMAP-biblioteket til IMAP i stedet for native PHP IMAP. Dette tillader også brugen af en OAuth2-forbindelse til IMAP (modulet OAuth skal også være aktiveret). diff --git a/htdocs/langs/da_DK/agenda.lang b/htdocs/langs/da_DK/agenda.lang index db7b35bfd4c..d9f4e15738f 100644 --- a/htdocs/langs/da_DK/agenda.lang +++ b/htdocs/langs/da_DK/agenda.lang @@ -177,5 +177,6 @@ ReminderType=Tilbagekaldelsestype AddReminder=Opret en automatisk påmindelsesmeddelelse om denne begivenhed ErrorReminderActionCommCreation=Fejl ved oprettelse af påmindelsesmeddelelsen for denne begivenhed BrowserPush=Browser pop op meddelelse +Reminders=Påmindelser ActiveByDefault=Aktiveret som standard Until=indtil diff --git a/htdocs/langs/da_DK/banks.lang b/htdocs/langs/da_DK/banks.lang index a364de13923..e6e98e53869 100644 --- a/htdocs/langs/da_DK/banks.lang +++ b/htdocs/langs/da_DK/banks.lang @@ -49,6 +49,9 @@ BankAccountDomiciliation=Bank adresse BankAccountCountry=Konto land BankAccountOwner=Konto ejer navn BankAccountOwnerAddress=Konto ejer adresse +BankAccountOwnerZip=Kontoejer post Nr. +BankAccountOwnerTown=Kontoejer by +BankAccountOwnerCountry=Kontoejerland CreateAccount=Opret konto NewBankAccount=Ny konto NewFinancialAccount=Ny finansiel konto diff --git a/htdocs/langs/da_DK/dict.lang b/htdocs/langs/da_DK/dict.lang index 524f307efc5..18633521326 100644 --- a/htdocs/langs/da_DK/dict.lang +++ b/htdocs/langs/da_DK/dict.lang @@ -247,6 +247,7 @@ CountryJE=Jersey CountryME=Montenegro CountryBL=Saint Barthelemy CountryMF=Saint Martin +CountryXK=Kosovo ##### Civilities ##### CivilityMME=Mrs diff --git a/htdocs/langs/da_DK/errors.lang b/htdocs/langs/da_DK/errors.lang index 94d7ff0f677..1739bd8c8fe 100644 --- a/htdocs/langs/da_DK/errors.lang +++ b/htdocs/langs/da_DK/errors.lang @@ -304,6 +304,11 @@ ErrorValueCantBeNull=Værdien for %s kan ikke være 0 ErrorDateOfMovementLowerThanDateOfFileTransmission=Datoen for banktransaktionen må ikke være lavere end datoen for filoverførslen ErrorTooMuchFileInForm=For mange filer i form, det maksimale antal er %s fil(er) ErrorSessionInvalidatedAfterPasswordChange=Sessionen blev ugyldiggjort efter en ændring af adgangskode, status eller gyldighedsdatoer. Log venligst på igen. +ErrorExistingPermission = Tilladelse %s for objekt %s findes allerede +ErrorFieldExist=Værdien for %s findes allerede +ErrorEqualModule=Modul ugyldigt i %s +ErrorFieldValue=Værdien for %s er forkert +ErrorCoherenceMenu= %s er påkrævet, når % er lig med VENSTRE # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Din PHP-parameter upload_max_filesize (%s) er højere end PHP-parameter post_max_size (%s). Dette er ikke en ensartet opsætning. @@ -342,6 +347,7 @@ WarningPaypalPaymentNotCompatibleWithStrict=Værdien 'Strict' gør, at onlinebet WarningThemeForcedTo=Advarsel, temaet er blevet tvunget til %s af skjult konstant MAIN_FORCETHEME WarningPagesWillBeDeleted=Advarsel, dette vil også slette alle eksisterende sider/containere på hjemmesiden. Du bør eksportere dit websted før, så du har en sikkerhedskopi til at genimportere det senere. WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal=Automatisk validering er deaktiveret, når muligheden for at reducere lager er indstillet på "Fakturavalidering". +WarningModuleNeedRefrech = Modul %s er blevet deaktiveret. Glem ikke at aktivere det # Validate RequireValidValue = Værdien er ikke gyldig diff --git a/htdocs/langs/da_DK/install.lang b/htdocs/langs/da_DK/install.lang index 93502365f83..02c92f58ca4 100644 --- a/htdocs/langs/da_DK/install.lang +++ b/htdocs/langs/da_DK/install.lang @@ -28,6 +28,7 @@ ErrorPHPVersionTooLow=PHP-versionen er for gammel. Version %s eller nyere er på ErrorPHPVersionTooHigh=PHP-versionen er for høj. Version %s eller lavere er påkrævet. ErrorConnectedButDatabaseNotFound=Forbindelsen til serveren lykkedes, men databasen '%s' blev ikke fundet. ErrorDatabaseAlreadyExists=Databasen '%s' eksisterer allerede. +ErrorNoMigrationFilesFoundForParameters=Der blev ikke fundet nogen migreringsfil for de valgte versioner IfDatabaseNotExistsGoBackAndUncheckCreate=Hvis databasen ikke eksisterer, skal du gå tilbage og markere "Opret database". IfDatabaseExistsGoBackAndCheckCreate=Hvis databasen allerede eksisterer, skal du gå tilbage og fjerne markeringen i "Opret database". WarningBrowserTooOld=Versionen af browseren er for gammel. Det anbefales at opgradere din browser til en nyere version af Firefox, Chrome eller Opera. @@ -50,7 +51,6 @@ DatabaseName=Database navn DatabasePrefix=Database tabel præfiks DatabasePrefixDescription=Database tabel præfiks. Hvis tom, er standardindstillingen llx_. AdminLogin=Brugerkonto for Dolibarr-database ejer. -PasswordAgain=Indtast adgangskodebekræftelse igen AdminPassword=Adgangskode til Dolibarr database ejer. CreateDatabase=Opret database CreateUser=Opret brugerkonto eller giv brugerkonto tilladelse til Dolibarr databasen @@ -88,7 +88,7 @@ LoginAlreadyExists=Eksisterer allerede DolibarrAdminLogin=Dolibarr admin login AdminLoginAlreadyExists=Dolibarr-administratorkontoen '%s' findes allerede. Gå tilbage, hvis du vil oprette en anden. FailedToCreateAdminLogin=Failed to create Dolibarr administrator account. -WarningRemoveInstallDir=Advarsel, af sikkerhedsmæssige årsager, når installationen eller opgraderingen er fuldført, bør du tilføje en fil kaldet install.lock i Dolibarr-dokumentbiblioteket for at forhindre utilsigtet/ondsindet brug af installationsværktøjerne igen. +WarningRemoveInstallDir=Advarsel, af sikkerhedsmæssige årsager, når installationsprocessen er færdig, skal du tilføje en fil kaldet install.lock i Dolibarr-dokumentbiblioteket for at forhindre utilsigtet/ondsindet brug af installationsværktøjerne igen. FunctionNotAvailableInThisPHP=Ikke tilgængelig i denne PHP ChoosedMigrateScript=Vælg migreringsscript DataMigration=Databasemigration (data) @@ -208,7 +208,12 @@ HideNotAvailableOptions=Skjul utilgængelige muligheder ErrorFoundDuringMigration=Fejl (er) blev rapporteret under migrationsprocessen, så næste trin er ikke tilgængeligt. For at ignorere fejl kan du klikke her , men programmet eller nogle funktioner fungerer muligvis ikke korrekt, før fejlene er løst. YouTryInstallDisabledByDirLock=Programmet forsøgte at opgradere selv, men installerings- / opgraderingssiderne er blevet deaktiveret for sikkerhed (mappen omdøbes med .lock-suffix).
YouTryInstallDisabledByFileLock=Programmet forsøgte at opgradere selv, men installerings- / opgraderingssiderne er blevet deaktiveret for sikkerhed (ved at der findes en låsfil install.lock i dolibarr-dokumenter-mappen).
+YouTryUpgradeDisabledByMissingFileUnLock=Applikationen forsøgte at opgradere sig selv, men opgraderingsprocessen er i øjeblikket ikke tilladt.
ClickHereToGoToApp=Klik her for at gå til din ansøgning ClickOnLinkOrRemoveManualy=Hvis en opgradering er i gang, skal du vente. Hvis ikke, skal du klikke på følgende link. Hvis du altid ser denne samme side, skal du fjerne / omdøbe filen install.lock i dokumentmappen. +ClickOnLinkOrCreateUnlockFileManualy=Hvis en opgradering er i gang, vent venligst... Hvis ikke, skal du oprette en fil upgrade.unlock i Dolibarr-dokumentbiblioteket. Loaded=Indlæst FunctionTest=Funktionstest +NodoUpgradeAfterDB=Ingen handling anmodet om af eksterne moduler efter opgradering af database +NodoUpgradeAfterFiles=Ingen handling anmodet om af eksterne moduler efter opgradering af filer eller mapper +MigrationContractLineRank=Migrer kontraktlinje for at bruge rang (og aktivere genbestilling) diff --git a/htdocs/langs/da_DK/main.lang b/htdocs/langs/da_DK/main.lang index 98efad1705a..5a33e5b69d0 100644 --- a/htdocs/langs/da_DK/main.lang +++ b/htdocs/langs/da_DK/main.lang @@ -923,6 +923,7 @@ NotAllExportedMovementsCouldBeRecordedAsExported=Ikke alle eksporterede bevægel Miscellaneous=Diverse Calendar=Kalender GroupBy=Gruppér efter +GroupByX=Gruppér efter %s ViewFlatList=Se flad liste ViewAccountList=Vis hovedbog ViewSubAccountList=Se underkonto hovedbog @@ -1222,3 +1223,5 @@ AddToContacts=Tilføj adresse til mine kontakter LastAccess=Sidste adgang UploadAnImageToSeeAPhotoHere=Upload et billede fra fanen %s for at se et billede her LastPasswordChangeDate=Dato for sidste ændring af adgangskode +PublicVirtualCardUrl=Virtuel visitkortside +TreeView=Træ oversigt diff --git a/htdocs/langs/da_DK/members.lang b/htdocs/langs/da_DK/members.lang index 673cd548d92..f9159214a1e 100644 --- a/htdocs/langs/da_DK/members.lang +++ b/htdocs/langs/da_DK/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=Bidragsstatistik NbOfSubscriptions=Antal bidrag AmountOfSubscriptions=Beløb opkrævet fra bidrag TurnoverOrBudget=Omsætning (for et selskab) eller Budget (en fond) -DefaultAmount=Standardbeløb for bidrag +DefaultAmount=Standardbeløb for bidrag (bruges kun, hvis der ikke er defineret noget beløb på medlemstypeniveau) +MinimumAmount=Minimumsbeløb (bruges kun, når bidragsbeløbet er gratis) CanEditAmount=Abonnementsbeløbet er gratis CanEditAmountDetail=Besøgende kan vælge/redigere beløbet for sit bidrag uanset medlemstype AmountIsLowerToMinimumNotice=på et samlet forfald af%s diff --git a/htdocs/langs/da_DK/modulebuilder.lang b/htdocs/langs/da_DK/modulebuilder.lang index 5e6d41ecf51..c0622ac9602 100644 --- a/htdocs/langs/da_DK/modulebuilder.lang +++ b/htdocs/langs/da_DK/modulebuilder.lang @@ -1,7 +1,8 @@ # Dolibarr language file - Source file is en_US - loan +IdModule= Modul id ModuleBuilderDesc=Dette værktøj må kun bruges af erfarne brugere eller udviklere. Det giver værktøjer til at bygge eller redigere dit eget modul. Dokumentation for alternativ manuel udvikling er her . EnterNameOfModuleDesc=Indtast navnet på modulet/applikationen, der skal oprettes uden mellemrum. Brug store bogstaver til at adskille ord (for eksempel: MyModule, EcommerceForShop, SyncWithMySystem...) -EnterNameOfObjectDesc=Indtast navnet på det objekt, der skal oprettes, uden mellemrum. Brug store bogstaver til at adskille ord (for eksempel: Mit objekt, elev, lærer...). CRUD-klassefilen, men også API-fil, sider til liste/tilføj/rediger/slet objekt og SQL-filer vil blive genereret. +EnterNameOfObjectDesc=Indtast navnet på det objekt, der skal oprettes, uden mellemrum. Brug store bogstaver til at adskille ord (for eksempel: Mit objekt, elev, lærer...). CRUD-klassefilen, siderne til at liste/tilføje/redigere/slette objektet og SQL-filerne vil blive genereret. EnterNameOfDictionaryDesc=Indtast navnet på den ordbog, der skal oprettes uden mellemrum. Brug store bogstaver til at adskille ord (for eksempel: MyDico...). Klassefilen, men også SQL-filen vil blive genereret. ModuleBuilderDesc2=Sti, hvor moduler genereres / redigeres (første bibliotek for eksterne moduler defineret i %s):%s ModuleBuilderDesc3=Genererede / redigerbare moduler fundet: %s @@ -9,6 +10,7 @@ ModuleBuilderDesc4=Et modul registreres som 'redigerbart', når filen % NewModule=Nyt modul NewObjectInModulebuilder=Nyt objekt NewDictionary=Ny ordbog +ModuleName=Modulnavn ModuleKey=Modul nøgle ObjectKey=Objektnøgle DicKey=Ordbogsnøgle @@ -48,11 +50,14 @@ PathToModulePackage=Sti til zip af modul / applikationspakke PathToModuleDocumentation=Sti til fil af modul / applikationsdokumentation (%s) SpaceOrSpecialCharAreNotAllowed=Mellemrum eller specialtegn er ikke tilladt. FileNotYetGenerated=Filen er endnu ikke genereret +GenerateCode=Generer kode RegenerateClassAndSql=Tving opdatering af .class og .sql filer RegenerateMissingFiles=Generer manglende filer SpecificationFile=Dokumentationsfil LanguageFile=Fil til sprog ObjectProperties=Objektegenskaber +Property=Ejendom +PropertyDesc=En egenskab er en egenskab, der karakteriserer et objekt. Denne attribut har en kode, en etiket og en type med flere muligheder. ConfirmDeleteProperty=Er du sikker på, at du vil slette ejendommen %s ? Dette vil ændre kode i PHP klasse, men også fjerne kolonne fra tabeldefinition af objekt. NotNull=Ikke NULL NotNullDesc=1=Indstil databasen til IKKE NULL, 0=Tillad nulværdier, -1=Tillad nulværdier ved at tvinge værdien til NULL, hvis den er tom ('' eller 0) @@ -81,15 +86,16 @@ IsAMeasure=Er en foranstaltning DirScanned=Directory scannet NoTrigger=Ingen udløser NoWidget=Ingen widget -GoToApiExplorer=API udforske +ApiExplorer=API udforske ListOfMenusEntries=Liste over menupunkter ListOfDictionariesEntries=Liste over poster i ordbøger ListOfPermissionsDefined=Liste over definerede tilladelser SeeExamples=Se eksempler her -EnabledDesc=Tilstand at have dette felt aktivt (Eksempler: 1 eller $ conf-> global-> MYMODULE_MYOPTION) -VisibleDesc=Er feltet synligt? (Eksempler: 0 = Aldrig synlig, 1 = Synlig på listen og opret / opdater / vis formularer, 2 = Kun synlig på listen, 3 = Synlig kun på oprettelse / opdatering / visningsformular (ikke liste), 4 = Synlig på listen og 3 opdaterings- / visningsformular kun (ikke oprettes), 5 = Synlig på formularen for slut visningsvisning (ikke opretning, ikke opdatering).

Brug af en negativ værdi betyder felt vises ikke som standard på listen, men kan vælges til visning).

Det kan være et udtryk, for eksempel:
preg_match ('/ public /', $ _SERVER ['PHP_SELF'])? 0: 1
($ bruger-> rettigheder-> ferie-> definere_ferie? 1: 0) -DisplayOnPdfDesc=Vis dette felt på kompatible PDF-dokumenter, du kan administrere position med "Position" -feltet.
I øjeblikket er kendte kompatible PDF-modeller: eratosthene (ordre), espadon (skib), svamp (fakturaer), cyan (propal / tilbud), cornas (leverandørbestilling)

a0e7843947c06f0a0f6a0 = display
2 = vise, hvis ikke tømmes

for dokumentlinjer:
0 = ikke vises
1 = vises i en kolonne
3 = display på linje beskrivelse søjlen efter beskrivelsen
4 = display i beskrivelsen kolonne efter beskrivelse kun hvis den ikke er tom -DisplayOnPdf=Vis på PDF +EnabledDesc=Betingelse for at have dette felt aktivt.

Eksempler:
1
isModEnabled('MAIN_MODULE_MYMODULE')
getDolGlobalString('MYMODULE_OPTION')==2 +VisibleDesc=Er feltet synligt? (Eksempler: 0=Aldrig synlig, 1=Synlig på liste og opret/opdater/vis formularer, 2=Kun synlig på liste, 3=Kun synlig på oprette/opdater/se formular (ikke liste), 4=Synlig på liste og kun opdater/vis formular (ikke oprette), 5=Kun synlig på liste slut visning formular (ikke opret, ikke opdatering).

Brug af en negativ værdi betyder, at feltet ikke vises som standard på listen, men kan vælges til visning). +ItCanBeAnExpression=Det kan være et udtryk. Eksempel:
preg_match('/public/', $_SERVER['PHP_SELF'])?0:1
$user->hasRight('holiday', 'define_holiday')?1:5 +DisplayOnPdfDesc=Vis dette felt på kompatible PDF-dokumenter, du kan administrere position med feltet "Position".
For dokument :
0 = ikke vist
1 = vist
2 = vist kun hvis ikke tom

For dokument linier :
0 = ikke vist
1 = vist i en række
3 = display in line description kolonne efter beskrivelsen
4 = vises kun i beskrivelseskolonne efter beskrivelsen, hvis den ikke er tom +DisplayOnPdf=På PDF IsAMeasureDesc=Kan værdien af ​​feltet akkumuleres for at få en samlet liste? (Eksempler: 1 eller 0) SearchAllDesc=Er feltet brugt til at foretage en søgning fra hurtigsøgningsværktøjet? (Eksempler: 1 eller 0) SpecDefDesc=Indtast her alt dokumentation, du vil levere med dit modul, som ikke allerede er defineret af andre faner. Du kan bruge .md eller bedre den rige .asciidoc-syntaks. @@ -130,27 +136,40 @@ UseSpecificEditorURL = Brug en bestemt editor webadresse UseSpecificFamily = Brug en bestemt familie UseSpecificAuthor = Brug en bestemt forfatter UseSpecificVersion = Brug en bestemt initial version -IncludeRefGeneration=Referencen til objektet skal genereres automatisk af tilpassede nummereringsregler +IncludeRefGeneration=Referencen til dette objekt skal genereres automatisk af tilpassede nummereringsregler IncludeRefGenerationHelp=Marker dette, hvis du vil inkludere kode til at styre genereringen af referencen automatisk ved hjælp af tilpassede nummereringsregler -IncludeDocGeneration=Jeg vil generere nogle dokumenter fra skabeloner til objektet +IncludeDocGeneration=Jeg vil have funktionen til at generere nogle dokumenter (PDF, ODT) fra skabeloner til dette objekt IncludeDocGenerationHelp=Hvis du markerer dette, vil nogle koder genereres for at tilføje en kasse "Generer dokument" på posten. -ShowOnCombobox=Vis værdi til combobox +ShowOnCombobox=Vis værdi i kombinationsbokse KeyForTooltip=Nøgle til værktøjstip CSSClass=CSS til redigering / oprettelse af formular CSSViewClass=CSS til læst form CSSListClass=CSS til liste NotEditable=Ikke redigerbar ForeignKey=Fremmed nøgle -TypeOfFieldsHelp=Type felter:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]]
'1' betyder, at vi tilføjer en +-knap efter kombinationen for at oprette posten
'filter' er en SQL-betingelse, eksempel: 'status=1 OG fk_user=__USER_ID__ AND entity IN (__SHARED_ENTITIES__)' +ForeignKeyDesc=Hvis værdien af dette felt skal garanteres findes i en anden tabel. Indtast her en værdi, der matcher syntaks: tablename.parentfieldtocheck +TypeOfFieldsHelp=Eksempel:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]]
' 1' betyder, at vi tilføjer en +-knap efter kombinationen for at oprette posten
'filter' er en sql-betingelse, eksempel: 'status=1 OG fk_user=__USER_ID__ AND entity IN (__SHARED_ENTITIES__)' +TypeOfFieldsHelpIntro=Dette er typen af feltet/attributten. AsciiToHtmlConverter=Ascii til HTML-konverter AsciiToPdfConverter=Ascii til PDF konverter TableNotEmptyDropCanceled=Tabellen er ikke tom. Drop er annulleret. ModuleBuilderNotAllowed=Modulbyggeren er tilgængelig, men ikke tilladt for din bruger. ImportExportProfiles=Import og eksport af profiler -ValidateModBuilderDesc=Indstil dette til 1, hvis du vil have metoden $this->validateField() for objektet, der kaldes for at validere indholdet af feltet under indsættelse eller opdatering. Indstil 0, hvis der ikke er behov for validering. +ValidateModBuilderDesc=Indstil dette til 1, hvis du vil have metoden $this->validateField() for objekt, der kaldes for at validere indholdet af feltet under indsættelse eller opdatering. Indstil 0, hvis der ikke er behov for validering. WarningDatabaseIsNotUpdated=Advarsel: Databasen opdateres ikke automatisk, du skal ødelægge tabeller og deaktivere-aktivere modulet for at få tabeller genskabt LinkToParentMenu=Forældremenu (fk_xxxxmenu) ListOfTabsEntries=Liste over faneposter TabsDefDesc=Definer her de faner, som dit modul giver TabsDefDescTooltip=Fanerne, der leveres af dit modul/applikation, er defineret i arrayet $this->tabs i modulbeskrivelsesfilen. Du kan redigere denne fil manuelt eller bruge den indlejrede editor. BadValueForType=Forkert værdi for type %s +DefinePropertiesFromExistingTable=Definer egenskaber fra en eksisterende tabel +DefinePropertiesFromExistingTableDesc=Hvis der allerede findes en tabel i databasen (for objektet at oprette), kan du bruge den til at definere objektets egenskaber. +DefinePropertiesFromExistingTableDesc2=Hold tom, hvis tabellen ikke eksisterer endnu. Kodegeneratoren vil bruge forskellige slags felter til at bygge et eksempel på en tabel, som du kan redigere senere. +GeneratePermissions=Jeg vil tilføje rettighederne til dette objekt +GeneratePermissionsHelp=generere standardrettigheder for dette objekt +PermissionDeletedSuccesfuly=Tilladelsen er blevet fjernet +PermissionUpdatedSuccesfuly=Tilladelsen er blevet opdateret +PermissionAddedSuccesfuly=Tilladelsen er blevet tilføjet +MenuDeletedSuccessfuly=Menuen er blevet slettet +MenuAddedSuccessfuly=Menuen er blevet tilføjet +MenuUpdatedSuccessfuly=Menuen er blevet opdateret diff --git a/htdocs/langs/da_DK/oauth.lang b/htdocs/langs/da_DK/oauth.lang index a0402533e66..cd000256af8 100644 --- a/htdocs/langs/da_DK/oauth.lang +++ b/htdocs/langs/da_DK/oauth.lang @@ -9,8 +9,9 @@ HasAccessToken=Et token blev genereret og gemt i lokal database NewTokenStored=Token modtaget og gemt ToCheckDeleteTokenOnProvider=Klik her for at kontrollere / slette autorisation gemt af %s OAuth udbyder TokenDeleted=Token slettet +GetAccess=Klik her for at få et token RequestAccess=Klik her for at anmode om/forny adgang og modtage et nyt token -DeleteAccess=Click here to delete token +DeleteAccess=Klik her for at slette token UseTheFollowingUrlAsRedirectURI=Brug følgende URL som omdirigerings-URI, når du opretter dine legitimationsoplysninger hos din OAuth-udbyder: ListOfSupportedOauthProviders=Tilføj dine OAuth2-tokenudbydere. Gå derefter ind på din OAuth-udbyders administratorside for at oprette/få et OAuth-id og en hemmelighed og gemme dem her. Når du er færdig, skal du skifte til den anden fane for at generere dit token. OAuthSetupForLogin=Side for at administrere (generere/slette) OAuth-tokens @@ -30,7 +31,11 @@ OAUTH_GITHUB_SECRET=OAuth GitHub Secret OAUTH_URL_FOR_CREDENTIAL=Gå til denne side for at oprette eller få dit OAuth-id og din hemmelighed OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live -OAUTH_ID=OAuth-id +OAUTH_ID=OAuth-klient-id OAUTH_SECRET=OAuth-hemmelighed +OAUTH_TENANT=OAuth lejer OAuthProviderAdded=OAuth-udbyder tilføjet AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Der findes allerede en OAuth-post for denne udbyder og etiket +URLOfServiceForAuthorization=URL leveret af OAuth-tjenesten til godkendelse +Scopes=Tilladelser (omfang) +ScopeUndefined=Tilladelser (omfang) udefinerede (se forrige fane) diff --git a/htdocs/langs/da_DK/users.lang b/htdocs/langs/da_DK/users.lang index 48076bd127a..f24d043ded4 100644 --- a/htdocs/langs/da_DK/users.lang +++ b/htdocs/langs/da_DK/users.lang @@ -132,4 +132,3 @@ ShowAllPerms=Vis alle tilladelsesrækker HideAllPerms=Skjul alle tilladelsesrækker UserPublicPageDesc=Du kan aktivere et virtuelt kort for denne bruger. En url med brugerprofilen og en stregkode vil være tilgængelig, så alle med en smartphone kan scanne den og tilføje din kontakt til dens adressebog. EnablePublicVirtualCard=Aktiver det offentlige virtuelle brugerkort -PublicVirtualCardUrl=Offentligt virtuelt brugerkort diff --git a/htdocs/langs/de_AT/admin.lang b/htdocs/langs/de_AT/admin.lang index eb37ef1ee98..65ff9c0e6e3 100644 --- a/htdocs/langs/de_AT/admin.lang +++ b/htdocs/langs/de_AT/admin.lang @@ -147,7 +147,6 @@ CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. MAIN_OPTIMIZEFORCOLORBLINDDesc=Aktiviere diese Option wenn Sie Farbenblind sind, in machen Fällen wird die Farbeinstellung geändert um den Kontrast zu erhöhen. WithGMailYouCanCreateADedicatedPassword=Wenn Sie bei einem GMail-Konto die Überprüfung in zwei Schritten aktiviert haben, wird empfohlen, ein dediziertes zweites Kennwort für die Anwendung zu erstellen, anstatt Ihr eigenes Kontokennwort von https://myaccount.google.com/ zu verwenden. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
EndPointFor=Endpunkt für %s: %s DeleteEmailCollector=E-Mail-Sammler löschen ConfirmDeleteEmailCollector=Möchten Sie diesen E-Mail-Sammler wirklich löschen? diff --git a/htdocs/langs/de_CH/admin.lang b/htdocs/langs/de_CH/admin.lang index 917d538c29e..c02678ee290 100644 --- a/htdocs/langs/de_CH/admin.lang +++ b/htdocs/langs/de_CH/admin.lang @@ -440,6 +440,7 @@ DictionaryCompanyJuridicalType=Rechtsformen von Unternehmen DictionaryActions=Arten von Kalenderereignissen DictionaryVAT=MwSt.-Sätze DictionaryPaperFormat=Papierformate +DictionaryAvailability=Lieferverzug DictionaryAccountancysystem=Kontenplan Modul DictionaryEMailTemplates=E-Mail Textvorlagen SetupSaved=Setup gespeichert @@ -565,6 +566,7 @@ DetailTitre=Menübezeichner oder Bezeichnungs-Code für Übersetzung DetailLangs=Sprachdateiname für Bezeichnungsübersetzung OptionVatMode=MwSt. fällig OptionVATDebitOption=Rückstellungsbasis +SupposedToBePaymentDate=Zahlungsdatum in Verwendung falls Lieferdatum unbekannt AgendaSetup=Aufgaben/Termine-Modul Einstellungen ClickToDialSetup=Click-to-Dial Moduleinstellungen CashDeskSetup=Modul Kasse (POS) einrichten @@ -632,13 +634,11 @@ NewEmailCollector=Neuer E-Mail - Sammeldienst EMailHost=IMAP Server Host EmailCollectorConfirmCollectTitle=E-Mail - Sammeldienst Bestätigung NoNewEmailToProcess=Ich habe keinen neuen E-Mails (die zu den Filtern passen) abzuarbeiten. -OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a company name from email subject into a temporary variable:
tmp_var=EXTRACT:SUBJECT:Message from company ([^\n]*)

Examples to set the properties of an object to create:
objproperty1=SET:a hard coded value
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (value is set only if property is not already defined)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. ResourceSetup=Modul Ressourcen einrichten UseSearchToSelectResource=Zeige eine Suchmaske für Ressourcen, statt eine Drop-down - Liste DisabledResourceLinkUser=Verknüpfungsmöglichkeit zwischen Ressource und Benutzer unterbinden. DisabledResourceLinkContact=Verknüpfungsmöglichkeit zwischen Ressource und Kontakt unterbinden. ConfirmUnactivation=Bestätige das Zurücksetzen des Moduls. ExportSetup=Modul Daten-Export einrichten -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FeatureNotAvailableWithReceptionModule=Diese Funktion ist nicht verfügbar, wenn das Modul 'Lieferungen' aktiv ist DictionaryProductNature=Produktart diff --git a/htdocs/langs/de_CH/boxes.lang b/htdocs/langs/de_CH/boxes.lang index 7bd9754e4fe..a53b209ac52 100644 --- a/htdocs/langs/de_CH/boxes.lang +++ b/htdocs/langs/de_CH/boxes.lang @@ -7,10 +7,7 @@ BoxLastProductsInContract=%s zuletzt in Verträgen verwendete Produkte/Leistunge BoxOldestUnpaidCustomerBills=Älteste offene Kundenrechnungen BoxOldestUnpaidSupplierBills=Älteste offene Lieferantenrechnungen BoxLastProspects=Zuletzt bearbeitete Leads -BoxLastCustomers=Zuletzt bearbeitete Kunden -BoxLastSuppliers=Zuletzt bearbeitete Lieferanten BoxLastCustomerOrders=Neueste Kundenbestellungen -BoxLastActions=Neueste Aktionen BoxLastMembers=Neueste Mitglieder BoxFicheInter=Neueste Arbeitseinsätze BoxTitleMemberNextBirthdays=Mitglieder - Geburtstage dieses Monates @@ -30,8 +27,6 @@ BoxTitleLastActionsToDo=%s neueste Aktionen zu erledigen BoxGoodCustomers=Guter Kunde LastRefreshDate=Datum der letzten Aktualisierung NoRecordedBookmarks=Keine Lesezeichen gesetzt. Klicken Sie hier, um ein Lesezeichen zu setzen. -NoRecordedCustomers=Keine erfassten Kunden -NoRecordedContacts=Keine erfassten Kontakte NoRecordedInterventions=Keine verzeichneten Einsätze BoxLatestSupplierOrdersAwaitingReception=Die neuesten Bestellungen (nicht ausgeliefert) NoSupplierOrder=Keine erfassten Lieferantenbestellungen diff --git a/htdocs/langs/de_CH/main.lang b/htdocs/langs/de_CH/main.lang index 8b888ed2bfa..eec8f32e6ee 100644 --- a/htdocs/langs/de_CH/main.lang +++ b/htdocs/langs/de_CH/main.lang @@ -83,7 +83,6 @@ Close=Schliessen CloseBox=Box vom Startbildschirm entfernen ConfirmSendCardByMail=Willst du diese Karte wirklich an %s mailen? Resiliate=Abschliessen -Cancel=Abbrechen Validate=Bestätigen ValidateAndApprove=Freigeben und bestätigen NotValidated=Nicht validiert diff --git a/htdocs/langs/de_CH/users.lang b/htdocs/langs/de_CH/users.lang index b5a0fd13dcb..c7c14ca597b 100644 --- a/htdocs/langs/de_CH/users.lang +++ b/htdocs/langs/de_CH/users.lang @@ -32,7 +32,6 @@ ConfirmCreateThirdParty=Willst du wirklich für dieses Mitglied einen Partner er LoginToCreate=Zu erstellende Anmeldung NameToCreate=Name des neuen Geschäftspartners YourRole=Ihre Rolle -HierarchicalResponsible=Vorgesetzter UseTypeFieldToChange=Nutzen sie das Feld "Typ" zum ändern WeeklyHours=Geleistete Stunden pro Woche DisabledInMonoUserMode=Im Wartungsmodus deaktiviert diff --git a/htdocs/langs/de_DE/admin.lang b/htdocs/langs/de_DE/admin.lang index 68fcfa043dc..9ebc81795f1 100644 --- a/htdocs/langs/de_DE/admin.lang +++ b/htdocs/langs/de_DE/admin.lang @@ -448,10 +448,10 @@ ExtrafieldSeparator=Trennzeichen (kein Feld) ExtrafieldPassword=Passwort-Feld ExtrafieldRadio=Radiobuttons (nur eine Option auswählbar) ExtrafieldCheckBox=Kontrollkästchen / Dropdownliste (mehrere Optionen auswählbar) -ExtrafieldCheckBoxFromList=Kontrollkästchen / Dropdownliste aus DB-Tabelle (mehrere Optionen auswählbar) +ExtrafieldCheckBoxFromList=Kontrollkästchen/Dropdownliste aus DB-Tabelle (mehrere Optionen auswählbar) ExtrafieldLink=Verknüpftes Objekt ComputedFormula=Berechnetes Feld -ComputedFormulaDesc=Sie können hier eine Formel mit anderen Eigenschaften des Objekts oder beliebigen PHP-Code eingeben, um einen dynamisch berechneten Wert zu erhalten. Sie können alle PHP-kompatiblen Formeln verwenden, einschließlich dem "?"-Bedingungsoperator und die folgenden globalen Objekte: $db, $conf, $langs, $mysoc, $user, $object.
WARNUNG: Möglicherweise sind nur einige Eigenschaften von $object verfügbar. Wenn Sie Eigenschaften benötigen, die nicht geladen sind, holen Sie sich das Objekt einfach wie im zweiten Beispiel in Ihre Formel.
Wenn Sie ein berechnetes Feld verwenden, können Sie keinen Wert über die Benutzerschnittstelle eingeben. Wenn ein Syntaxfehler vorliegt, gibt die Formel möglicherweise nichts zurück.

Beispiel für eine Formel:
$object-> id < 10 ? round($object-> id/2, 2): ($object-> id + 2 * $user-> id) * (int) substr ($mysoc-> zip, 1, 2 )

Beispiel für das Laden eines Objekts:
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

Anderes Beispiel für eine Formel zum Laden des Objekts und seines übergeordneten Objekts:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' +ComputedFormulaDesc=Sie können hier eine Formel eingeben, die andere Eigenschaften des Objekts oder beliebigen PHP-Code verwendet, um einen dynamisch berechneten Wert zu erhalten. Sie können alle PHP-kompatiblen Formeln verwenden, einschließlich des "?" Bedingungsoperators und folgende globalen Objekte: $db, $conf, $langs, $mysoc, $user, $objectoffield.
WARNUNG : Wenn Sie Eigenschaften eines nicht geladenen Objekts benötigen, holen Sie sich das Objekt einfach selbst in Ihre Formel wie im zweiten Beispiel.
Die Verwendung eines berechneten Felds bedeutet, dass Sie selbst keinen Wert über die Schnittstelle eingeben können. Auch wenn ein Syntaxfehler vorliegt, gibt die Formel möglicherweise nichts zurück.

Formelbeispiel:
$objectoffield->id < 10 ? round($objectoffield-> id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2 )

Beispiel zum erneuten Laden des Objekts
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->id) > 0 ? ->capital / 5: '-1')

Anderes Beispiel für eine Formel, um das Laden des Objekts und seines übergeordneten Objekts zu erzwingen:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($objectoffield ->id) > 0) && ($secondloadedobj = neues Projekt($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Übergeordnetes Projekt nicht gefunden' Computedpersistent=Berechnetes Feld speichern ComputedpersistentDesc=Berechnete Extrafelder werden in der Datenbank gespeichert, dennoch wird ihr Wert nur dann neu berechnet wenn sich das Objekt zu diesem Feld ändert. Falls das berechnete Feld von anderen Objekten oder globalen Daten abhängt, kann sein Wert falsch sein! ExtrafieldParamHelpPassword=Wenn Sie dieses Feld leer lassen, wird dieser Wert unverschlüsselt gespeichert (das Feld darf nur mit einem Stern auf dem Bildschirm ausgeblendet werden).
Stellen Sie 'auto'; ein, um die Standardverschlüsselungsregel zum Speichern des Kennworts in der Datenbank zu verwenden (dann ist der gelesene Wert nur der Hash, keine Möglichkeit, den ursprünglichen Wert abzurufen). @@ -704,8 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Funktionen zum Verwalten von Incoterms hinzufügen Module63000Name=Ressourcen Module63000Desc=Verwaltung von Ressourcen (Drucker, Autos, Räume, ...) für zugeordnete Ereignisse +Module66000Name=OAuth2-Authentifizierung aktivieren +Module66000Desc=Stellt ein Tool zum Generieren und Verwalten von OAuth2-Token bereit. Der Token kann dann von einigen anderen Modulen verwendet werden. Module94160Name=Wareneingänge -Permission11=Rechnungen einsehen +Permission11=Kundenrechnungen (und Zahlungen) einsehen Permission12=Rechnungen erstellen/bearbeiten Permission13=Ungültige Kundenrechnungen Permission14=Rechnungen freigeben @@ -947,7 +949,7 @@ Permission1190=Lieferantenbestellungen bestätigen (zweite Bestätigung) Permission1191=Exportieren Sie Lieferantenaufträge und deren Attribute Permission1201=Exportresultate einsehen Permission1202=Export erstellen/bearbeiten -Permission1231=Lieferantenrechnungen einsehen +Permission1231=Lieferantenrechnungen (und Zahlungen) einsehen Permission1232=Lieferantenrechnungen (Eingangsrechnungen) erstellen/bearbeiten Permission1233=Lieferantenrechnungen freigeben Permission1234=Lieferantenrechnungen löschen @@ -1067,11 +1069,11 @@ DictionaryFormatCards=Kartenformate DictionaryFees=Spesenabrechnung - Arten von Spesenpositionen DictionarySendingMethods=Versandarten DictionaryStaff=Anzahl der Beschäftigten -DictionaryAvailability=Lieferverzug +DictionaryAvailability=Lieferdauer DictionaryOrderMethods=Bestellmethoden DictionarySource=Quelle der Angebote/Aufträge DictionaryAccountancyCategory=Benutzerdefinierte Gruppen für Berichte -DictionaryAccountancysystem=Kontenplan-Modelle +DictionaryAccountancysystem=Kontenplan-Vorlagen DictionaryAccountancyJournal=Buchhaltungsjournale DictionaryEMailTemplates=E-Mail-Vorlagen DictionaryUnits=Einheiten @@ -1234,7 +1236,7 @@ SetupDescription4= %s -> %s

Diese Software ist eine SetupDescription5=Andere Setup-Menüs verwalten optionale Parameter. SetupDescriptionLink= %s - %s SetupDescription3b=Grundlegende Parameter, um das Standardverhalten Ihrer Anwendung anzupassen (z. B. für länderbezogene Funktionen). -SetupDescription4b=Diese Software umfasst zahlreiche Module/Anwendungen. Die für Ihre Anforderungen erforderlichen Module müssen aktiviert und konfiguriert werden. Nach der Aktivierung dieser Module erscheinen entsprechende zusätzliche Menüeinträge. +SetupDescription4b=Diese Software ist eine Suite aus vielen Modulen/Anwendungen. Die für Sie relevanten Module müssen aktiviert werden. Mit der Aktivierung dieser Module erscheinen entsprechende Menüeinträge. AuditedSecurityEvents=Sicherheitsereignisse, die überwacht werden NoSecurityEventsAreAduited=Es werden keine Sicherheitsereignisse überwacht. Sie können sie über das Menü %s aktivieren Audit=Sicherheitsrelevante Ereignisse @@ -2366,3 +2368,7 @@ MaxNumberOfAttachementOnForms=Maximale Anzahl verbundener Dateien in einem Formu IfDefinedUseAValueBeetween=Wenn definiert, einen Wert zwischen %s und %s verwenden Reload=Neu laden ConfirmReload=Neuladen des Moduls bestätigen +WarningModuleHasChangedLastVersionCheckParameter=Achtung: Das Modul %s hat einen Parameter gesetzt, um seine Version bei jedem Seitenzugriff zu prüfen. Dies ist eine schlechte und nicht erlaubte Vorgehensweise, die dazu führen kann, dass die Seite zum Verwalten von Modulen instabil wird. Bitte wenden Sie sich an den Autor des Moduls, um dies zu beheben. +WarningModuleHasChangedSecurityCsrfParameter=Warnung: Das Modul %s hat die CSRF-Sicherheit Ihrer Instanz deaktiviert. Diese Aktion ist verdächtig und Ihre Installation ist möglicherweise nicht mehr gesichert. Bitte wenden Sie sich zur Erläuterung an den Autor des Moduls. +EMailsInGoingDesc=Eingehende E-Mails werden vom Modul %s verwaltet. Sie müssen es aktivieren und konfigurieren, wenn Sie eingehende E-Mails unterstützen müssen. +MAIN_IMAP_USE_PHPIMAP=Verwenden Sie die PHP-IMAP-Bibliothek für IMAP anstelle von nativem PHP-IMAP. Dies ermöglicht auch die Verwendung einer OAuth2-Verbindung für IMAP (Modul OAuth muss ebenfalls aktiviert sein). diff --git a/htdocs/langs/de_DE/agenda.lang b/htdocs/langs/de_DE/agenda.lang index e9cf555109a..e8aeb2987f3 100644 --- a/htdocs/langs/de_DE/agenda.lang +++ b/htdocs/langs/de_DE/agenda.lang @@ -177,5 +177,6 @@ ReminderType=Erinnerungstyp AddReminder=Erstellt eine automatische Erinnerungsbenachrichtigung für dieses Ereignis ErrorReminderActionCommCreation=Fehler beim Erstellen der Erinnerungsbenachrichtigung für dieses Ereignis BrowserPush=Browser-Popup-Benachrichtigung +Reminders=Erinnerungen ActiveByDefault=Standardmäßig aktiviert Until=bis diff --git a/htdocs/langs/de_DE/banks.lang b/htdocs/langs/de_DE/banks.lang index 7fe61fb045b..146de0ae58d 100644 --- a/htdocs/langs/de_DE/banks.lang +++ b/htdocs/langs/de_DE/banks.lang @@ -12,13 +12,13 @@ ShowAccount=Zeige Konto AccountRef=Bankkonto Nr./Ref. AccountLabel=Kontobezeichnung CashAccount=Geldkonto -CashAccounts=Geldkonten +CashAccounts=Kassen-/Bargeldkonten CurrentAccounts=Girokonten SavingAccounts=Sparkonten ErrorBankLabelAlreadyExists=Kontobezeichnung existiert bereits BankBalance=Kontostand BankBalanceBefore=Saldo (vorher) -BankBalanceAfter=Bilanz (nachher) +BankBalanceAfter=Saldo (nachher) BalanceMinimalAllowed=Mindestbestand BalanceMinimalDesired=Gewünschter Mindestbestand InitialBankBalance=Eröffnungsbestand @@ -49,6 +49,9 @@ BankAccountDomiciliation=Kontoadresse BankAccountCountry=Bankkonto Land BankAccountOwner=Kontoinhaber BankAccountOwnerAddress=Kontoinhaber-Adresse +BankAccountOwnerZip=Kontoinhaber PLZ +BankAccountOwnerTown=Kontoinhaber Stadt +BankAccountOwnerCountry=Kontoinhaber Land CreateAccount=Konto erstellen NewBankAccount=Neues Konto NewFinancialAccount=Neues Konto @@ -185,4 +188,3 @@ AlreadyOneBankAccount=Es wurde bereits ein Bankkonto definiert SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation=SEPA-Überweisung: „Zahlungsart“ auf Ebene „Überweisung“. SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp=Bei der Generierung einer SEPA-XML-Datei für Überweisungen kann nun der Abschnitt „PaymentTypeInformation“ innerhalb des Abschnitts „CreditTransferTransactionInformation“ platziert werden (statt im Abschnitt „Payment“). Wir empfehlen dringend, dies deaktiviert zu lassen, um PaymentTypeInformation auf Payment-Ebene zu platzieren, da nicht alle Banken es auf CreditTransferTransactionInformation-Ebene akzeptieren. Wenden Sie sich an Ihre Bank, bevor Sie PaymentTypeInformation auf der Ebene CreditTransferTransactionInformation platzieren. ToCreateRelatedRecordIntoBank=Um einen fehlenden zugehörigen Bankdatensatz zu erstellen -BanklineExtraFields=Ergänzende Attribute Bankbuchung diff --git a/htdocs/langs/de_DE/bills.lang b/htdocs/langs/de_DE/bills.lang index 96398f48b67..d19f72ac565 100644 --- a/htdocs/langs/de_DE/bills.lang +++ b/htdocs/langs/de_DE/bills.lang @@ -374,7 +374,7 @@ LatestRelatedBill=Letzte ähnliche Rechnung WarningBillExist=Achtung, es existiert bereits mindestens eine Rechnung hierzu MergingPDFTool=PDF zusammenführen AmountPaymentDistributedOnInvoice=Zahlungsbetrag verteilt auf Rechnung -PaymentOnDifferentThirdBills=Erlaube Zahlungen für Rechnungen an verschiedene Partner der selben Firma. +PaymentOnDifferentThirdBills=Erlaube gemeinsame Zahlungen für Rechnungen unterschiedlicher Geschäftspartner mit gemeinsamer Muttergesellschaft PaymentNote=Zahlungshinweis ListOfPreviousSituationInvoices=Liste der vorherigen Fortschrittsrechnungen ListOfNextSituationInvoices=Liste der nächsten Fortschrittsrechnungen @@ -406,7 +406,7 @@ GeneratedFromTemplate=Erzeugt von der Rechnungsvorlage %s WarningInvoiceDateInFuture=Achtung, das Rechnungsdatum liegt nach dem aktuellen Datum WarningInvoiceDateTooFarInFuture=Achtung, das Rechnungsdatum ist zu weit entfernt vom aktuellen Datum ViewAvailableGlobalDiscounts=Zeige verfügbare Rabatte -GroupPaymentsByModOnReports=Zahlungen nach Modus auf Berichte gruppieren +GroupPaymentsByModOnReports=In Berichten Zahlungen nach Zahlungsart gruppieren # PaymentConditions Statut=Status PaymentConditionShortRECEP=sofort @@ -559,41 +559,41 @@ CactusNumRefModelDesc1=Rückgabenummer im Format %syymm-nnnn für Standard-Rechn EarlyClosingReason=Grund für die vorzeitige Schließung EarlyClosingComment=Notiz zur vorzeitigen Schließung ##### Types de contacts ##### -TypeContact_facture_internal_SALESREPFOLL=Repräsentative Follow-up Kundenrechnung +TypeContact_facture_internal_SALESREPFOLL=Mitarbeiter für Nachverfolgung der Kundenrechnung TypeContact_facture_external_BILLING=Kontakt für Kundenrechnungen TypeContact_facture_external_SHIPPING=Kundenversand Kontakt TypeContact_facture_external_SERVICE=Kundenservice Kontakt -TypeContact_invoice_supplier_internal_SALESREPFOLL=Repräsentative Folgerechnung eines Lieferanten +TypeContact_invoice_supplier_internal_SALESREPFOLL=Mitarbeiter für Nachverfolgung der Lieferantenrechnung TypeContact_invoice_supplier_external_BILLING=Kontakt für Lieferantenrechnungen TypeContact_invoice_supplier_external_SHIPPING=Kontakt für Lieferantenversand TypeContact_invoice_supplier_external_SERVICE=Händler-Servicekontakt # Situation invoices -InvoiceFirstSituationAsk=Erste Fortschritt-Rechnung -InvoiceFirstSituationDesc=Die Abschlagsrechnungen beziehen sich auf Abschläge, die einem Fortschritt entsprechen, beispielsweise dem Fortschritt eines Bauvorhabens. Jeder Abschlag ist mit einer Rechnung verknüpft. -InvoiceSituation=Rechnung nach Fortschritt -PDFInvoiceSituation=Rechnung nach Fortschritt -InvoiceSituationAsk=Rechnung folgende Situation -InvoiceSituationDesc=Erstellen Sie eine neue Situation im Anschluss an eine bereits bestehende -SituationAmount=Situation Rechnungsbetrag (ohne USt.) +InvoiceFirstSituationAsk=Erste Abschlagsrechnung +InvoiceFirstSituationDesc=Die Abschlagsrechnungen beziehen sich auf Abschläge, die einem Fortschritt entsprechen, beispielsweise dem Fortschritt eines Bauvorhabens. Jeder erreichte Fortschritt ist mit einer Rechnung verknüpft. +InvoiceSituation=Abschlagsrechnung +PDFInvoiceSituation=Abschlagsrechnung +InvoiceSituationAsk=Abschlagsrechnung nach Fortschritt +InvoiceSituationDesc=Erstellen Sie eine neue Abschlagsrechnung im Anschluss an eine bereits bestehende +SituationAmount=Rechnungsbetrag Abschlagsrechnung (ohne USt.) SituationDeduction=Situation Subtraktion ModifyAllLines=Bearbeite alle Zeilen -CreateNextSituationInvoice=Erstelle nächsten Fortschritt-Rechnung +CreateNextSituationInvoice=Erstelle nächste Abschlagsrechnung ErrorFindNextSituationInvoice=Fehler Kann die nächste Situation im Zyklus nicht finden -ErrorOutingSituationInvoiceOnUpdate=Kann diese Situationsrechnung nicht ausschliessen. +ErrorOutingSituationInvoiceOnUpdate=Kann diese Abschlagsrechnung nicht ausschliessen. ErrorOutingSituationInvoiceCreditNote=Kann dies verknüpfte Gutschrift nicht ausschliessen. NotLastInCycle=Diese Rechnung ist nicht die letzte im Zyklus und darf nicht geändert werden. -DisabledBecauseNotLastInCycle=Die nächste Situation existiert bereits. -DisabledBecauseFinal=Dieser Status ist endgültig. +DisabledBecauseNotLastInCycle=Eine nachfolgende Abschlagsrechnung existiert bereits. +DisabledBecauseFinal=Diese Abschlagsrechnung ist endgültig. situationInvoiceShortcode_AS=AS situationInvoiceShortcode_S=So -CantBeLessThanMinPercent=Der Fortschritt kann nicht kleiner als sein bisheriger Wert werden. +CantBeLessThanMinPercent=Der Fortschritt kann nicht kleiner als in der vorhergehenden Abschlagsrechnung sein. NoSituations=Keine offenen Positionen InvoiceSituationLast=Allgemeine Endrechnung -PDFCrevetteSituationNumber=Fortschritt-Rechnung Nr. %s +PDFCrevetteSituationNumber=Abschlagsrechnung Nr. %s PDFCrevetteSituationInvoiceLineDecompte=Fortschrittsrechnungen - Anzahl -PDFCrevetteSituationInvoiceTitle=Rechnung nach Fortschritt -PDFCrevetteSituationInvoiceLine=Teilrechnung Nr. %s: Rechnung Nr.%s über %s -TotalSituationInvoice=Gesamt Fortschrittrechnung +PDFCrevetteSituationInvoiceTitle=Abschlagsrechnung nach Fortschritt +PDFCrevetteSituationInvoiceLine=Abschlagsrechnung Nr. %s: Rechnung Nr.%s über %s +TotalSituationInvoice=Summe Abschlagsrechnung invoiceLineProgressError=Fortschritt der Rechnungsposition kann nicht größer oder gleich sein wie der Status der nächsten Rechnungsposition updatePriceNextInvoiceErrorUpdateline=Fehler: Preis auf Rechnungszeile aktualisieren: %s ToCreateARecurringInvoice=Um eine wiederkehrende Rechnung für diesen Vertrag zu erstellen, legen Sie zuerst einen Rechnungsentwurf an, wandeln diesen dann in eine Rechnungsvorlage um und definieren die Häufigkeit der Erstellung der zukünftigen Rechnungen. diff --git a/htdocs/langs/de_DE/boxes.lang b/htdocs/langs/de_DE/boxes.lang index 10eeb91d1e4..21627668e2e 100644 --- a/htdocs/langs/de_DE/boxes.lang +++ b/htdocs/langs/de_DE/boxes.lang @@ -7,14 +7,14 @@ BoxProductsAlertStock=Bestandeswarnungen für Produkte BoxLastProductsInContract=Zuletzt in Verträgen aufgenommene Produkte/Leistungen (maximal %s) BoxLastSupplierBills=Neueste Lieferantenrechnungen BoxLastCustomerBills=Neueste Kundenrechnungen -BoxOldestUnpaidCustomerBills=älteste unbezahlte Kundenrechnungen -BoxOldestUnpaidSupplierBills=älteste unbezahlte Lieferantenrechnungen +BoxOldestUnpaidCustomerBills=Älteste unbezahlte Kundenrechnungen +BoxOldestUnpaidSupplierBills=Älteste unbezahlte Lieferantenrechnungen BoxLastProposals=Neueste Angebote BoxLastProspects=Zuletzt bearbeitete Interessenten -BoxLastCustomers=zuletzt berarbeitete Kunden -BoxLastSuppliers=zuletzt bearbeitete Lieferanten -BoxLastCustomerOrders=neueste Lieferantenbestellungen -BoxLastActions=Neuste Aktionen +BoxLastCustomers=Zuletzt bearbeitete Kunden +BoxLastSuppliers=Zuletzt bearbeitete Lieferanten +BoxLastCustomerOrders=Neueste Lieferantenbestellungen +BoxLastActions=Neueste Aktionen BoxLastContracts=Neueste Verträge BoxLastContacts=Neueste Kontakte/Adressen BoxLastMembers=neueste Mitglieder @@ -64,8 +64,8 @@ FailedToRefreshDataInfoNotUpToDate=Fehler beim RSS-Abruf. Letzte erfolgreiche Ak LastRefreshDate=Letzte Aktualisierung NoRecordedBookmarks=Keine Lesezeichen definiert. ClickToAdd=Hier klicken zum Hinzufügen. -NoRecordedCustomers=keine erfassten Kunden -NoRecordedContacts=keine erfassten Kontakte +NoRecordedCustomers=Keine erfassten Kunden +NoRecordedContacts=Keine erfassten Kontakte NoActionsToDo=Keine Aufgaben/Termine zu erledigen NoRecordedOrders=Keine erfassten Kundenaufträge NoRecordedProposals=Keine erfassten Angebote diff --git a/htdocs/langs/de_DE/categories.lang b/htdocs/langs/de_DE/categories.lang index 9e9f407c2b0..dac61114aa2 100644 --- a/htdocs/langs/de_DE/categories.lang +++ b/htdocs/langs/de_DE/categories.lang @@ -77,13 +77,13 @@ CatMemberList=Liste der Mitgliederkategorien CatContactList=Liste der Schlagwörter / Kategorien für Kontakte CatProjectsList=Liste der Schlagwörter / Kategorien für Projekte CatUsersList=Liste der Schlagwörter / Kategorien für Benutzer -CatSupLinks=Verknüpfungen zwischen Anbietern und Schlagwörter / Kategorien +CatSupLinks=Verknüpfungen zwischen Anbietern und Kategorien CatCusLinks=Verknüpfungen zwischen Kunden-/Leads und Kategorien CatContactsLinks=Verknüpfungen zwischen Kontakten/Adressen und Tags/Kategorien CatProdLinks=Verknüpfungen zwischen Produkten/Leistungen und Kategorien CatMembersLinks=Verknüpfungen zwischen Mitgliedern und Kategorien CatProjectsLinks=Verknüpfungen zwischen Projekten und Kategorien bzw. Suchwörtern -CatUsersLinks=Verknüpfungen zwischen Benutzern und Schlagwörter / Kategorien +CatUsersLinks=Verknüpfungen zwischen Benutzern und Kategorien DeleteFromCat=Aus Kategorie entfernen ExtraFieldsCategories=Ergänzende Attribute CategoriesSetup=Kategorie-Einstellungen diff --git a/htdocs/langs/de_DE/companies.lang b/htdocs/langs/de_DE/companies.lang index 2c1086dbf3a..7208c46cfd7 100644 --- a/htdocs/langs/de_DE/companies.lang +++ b/htdocs/langs/de_DE/companies.lang @@ -301,7 +301,7 @@ ProfId4DZ=Kundenidentifikationsnummer VATIntra=Umsatzsteuer-ID VATIntraShort=USt-IdNr. VATIntraSyntaxIsValid=Die Syntax ist gültig -VATReturn=Mehrwertsteuererstattung +VATReturn=Umsatzsteuervorauszahlung ProspectCustomer=Interessent/Kunde Prospect=Interessent CustomerCard=Kunde – Übersicht @@ -503,3 +503,4 @@ TwoRecordsOfCompanyName=Für dieses Unternehmen existiert mehr als ein Datensatz CompanySection=Unternehmensbereich ShowSocialNetworks=Soziale Netzwerke anzeigen HideSocialNetworks=Soziale Netzwerke ausblenden + diff --git a/htdocs/langs/de_DE/dict.lang b/htdocs/langs/de_DE/dict.lang index d28eed5e738..d36674790ed 100644 --- a/htdocs/langs/de_DE/dict.lang +++ b/htdocs/langs/de_DE/dict.lang @@ -7,11 +7,11 @@ CountryDE=Deutschland CountryCH=Schweiz # Warning, country code GB is for United Kingdom. UK Does not exists as country code in ISO standard. CountryGB=Großbritannien -CountryUK=England +CountryUK=Vereinigte Königreich CountryIE=Irland CountryCN=China CountryTN=Tunesien -CountryUS=Vereinigte Staaten +CountryUS=Vereinigte Staaten von Amerika\n CountryMA=Marokko CountryDZ=Algerien CountryCA=Kanada @@ -247,6 +247,7 @@ CountryJE=Jersey CountryME=Montenegro CountryBL=Saint Barthelemy CountryMF=Saint Martin +CountryXK=Kosovo ##### Civilities ##### CivilityMME=Frau diff --git a/htdocs/langs/de_DE/errors.lang b/htdocs/langs/de_DE/errors.lang index 0791a31a29a..0f51b201082 100644 --- a/htdocs/langs/de_DE/errors.lang +++ b/htdocs/langs/de_DE/errors.lang @@ -304,6 +304,11 @@ ErrorValueCantBeNull=Der Wert für %s darf nicht null sein ErrorDateOfMovementLowerThanDateOfFileTransmission=Das Datum der Banküberweisung darf nicht vor dem Datum der Dateiübermittlung liegen ErrorTooMuchFileInForm=Zu viele Dateien im Formular, die maximale Anzahl beträgt %s Datei(en) ErrorSessionInvalidatedAfterPasswordChange=Die Sitzung wurde nach einer Änderung von Passwort, Status oder Gültigkeitsdaten ungültig. Bitte melden Sie sich erneut an. +ErrorExistingPermission = Berechtigung %s für Objekt %s existiert bereits +ErrorFieldExist=Der Wert für %s existiert bereits +ErrorEqualModule=Modul ungültig in %s +ErrorFieldValue=Der Wert für %s ist falsch +ErrorCoherenceMenu= %s ist erforderlich, wenn % LEFT ist # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Ihr PHP Parameter upload_max_filesize (%s) ist größer als Parameter post_max_size (%s). Dies ist eine inkonsistente Einstellung. @@ -342,6 +347,7 @@ WarningPaypalPaymentNotCompatibleWithStrict=Der Wert 'Strict' führt dazu, dass WarningThemeForcedTo=Warnung, das Theme wurde durch die versteckte Konstante MAIN_FORCETHEME auf %s erzwungen WarningPagesWillBeDeleted=Achtung: dadurch werden auch alle bestehenden Seiten/Container der Website gelöscht. Sie sollten Ihre Website vorher exportieren, damit Sie ein Backup haben, um sie später wieder zu importieren. WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal=Die automatische Freigabe ist deaktiviert, wenn die Option zur Bestandsverringerung auf "Rechnungsfreigabe" eingestellt ist. +WarningModuleNeedRefrech = Modul %s wurde deaktiviert. Vergessen Sie nicht, es zu aktivieren # Validate RequireValidValue = Wert nicht gültig diff --git a/htdocs/langs/de_DE/install.lang b/htdocs/langs/de_DE/install.lang index f9278fec8d4..5afef9047ea 100644 --- a/htdocs/langs/de_DE/install.lang +++ b/htdocs/langs/de_DE/install.lang @@ -28,6 +28,7 @@ ErrorPHPVersionTooLow=PHP-Version zu alt. Version %s oder höher ist erforderlic ErrorPHPVersionTooHigh=PHP-Version zu hoch. Version %s oder niedriger ist erforderlich. ErrorConnectedButDatabaseNotFound=Verbindung zum Server erfolgreich, jedoch konnte Datenbank '%s' nicht gefunden werden. ErrorDatabaseAlreadyExists=Eine Datenbank mit dem Namen '%s' existiert bereits. +ErrorNoMigrationFilesFoundForParameters=Für die ausgewählten Versionen wurde keine Migrationsdatei gefunden IfDatabaseNotExistsGoBackAndUncheckCreate=Sollte die Datenbank noch nicht existieren, gehen Sie bitte zurück und aktivieren Sie das Kontrollkästchen "Datenbank erstellen". IfDatabaseExistsGoBackAndCheckCreate=Sollte die Datenbank bereits existieren, gehen Sie bitte zurück und deaktivieren Sie das Kontrollkästchen "Datenbank erstellen". WarningBrowserTooOld=Ihre Browser-Version ist veraltet. Es wird dringend empfohlen auf eine aktuelle Version von Firefox, Chrome oder Opera upzugraden. @@ -50,7 +51,6 @@ DatabaseName=Name der Datenbank DatabasePrefix=Präfix für die Datenbanktabellen DatabasePrefixDescription=Tabellen-Präfix der Datenbank. Sofern nicht gesetzt, wird 'llx_' benutzt. AdminLogin=Login für Dolibarr Datenbank-Administrator. -PasswordAgain=Passworteingabe bestätigen AdminPassword=Passwort des dolibarr-Datenbankadministrators CreateDatabase=Datenbank erstellen CreateUser=Erstellen Sie ein Benutzerkonto oder erteilen Sie der Dolibarr-Datenbank die Berechtigung für ein Benutzerkonto @@ -88,7 +88,7 @@ LoginAlreadyExists=Dieser Benutzername ist bereits vergeben DolibarrAdminLogin=Anmeldung für dolibarr-Administrator AdminLoginAlreadyExists=Ein Administratorkonto '%s' ist bereits vorhanden. \nGehen Sie zurück um ein anderes Konto zu erstellen. FailedToCreateAdminLogin=Fehler beim erstellen des Dolibarr Administrator Kontos. -WarningRemoveInstallDir=Warnung: Aus Sicherheitsgründen sollten Sie nach Abschluss der Installation oder Aktualisierung eine Datei mit dem Namen install.lock in das Dolibarr-Dokumentenverzeichnis einfügen, um die versehentliche / böswillige Verwendung der Installationstools zu verhindern. +WarningRemoveInstallDir=Warnung: Aus Sicherheitsgründen müssen Sie nach Abschluss des Installationsvorgangs eine Datei namens install.lock in das Dokumentenverzeichnis von Dolibarr einfügen, um die erneute versehentliche/böswillige Verwendung der Installationstools zu verhindern. FunctionNotAvailableInThisPHP=Diese Funktion steht in Ihrer eingesetzten PHP-Version nicht zur Verfügung. ChoosedMigrateScript=Verwendetes Migrationsskript: DataMigration=Datenmigration @@ -208,7 +208,12 @@ HideNotAvailableOptions=Nicht verfügbare Optionen ausblenden ErrorFoundDuringMigration=Während des Migrationsprozesses wurden Fehler gemeldet. Der nächste Schritt ist nicht verfügbar. Um Fehler zu ignorieren, können Sie hier klicken , aber die Anwendung oder einige Funktionen funktionieren möglicherweise nicht richtig, bis die Fehler behoben sind. YouTryInstallDisabledByDirLock=Die Anwendung hat versucht, sich selbst zu aktualisieren, aber die Installations- / Aktualisierungsseiten wurden aus Sicherheitsgründen deaktiviert (Verzeichnis umbenannt mit .lock-Suffix).
YouTryInstallDisabledByFileLock=Die Anwendung hat versucht, sich selbst zu aktualisieren, aber die Installations-/Upgrade-Seiten wurden aus Sicherheitsgründen deaktiviert (durch die Existenz einer Sperrdatei install.lock im Dokumenten-Verzeichnis).
+YouTryUpgradeDisabledByMissingFileUnLock=Die Anwendung hat versucht, sich selbst zu aktualisieren, aber der Aktualisierungsprozess ist derzeit nicht zulässig.
ClickHereToGoToApp=Hier klicken um zu Ihrer Anwendung zu kommen ClickOnLinkOrRemoveManualy=Wenn ein Upgrade durchgeführt wird, warten Sie bitte. Wenn nicht, klicken Sie auf den folgenden Link. Wenn Sie immer dieselbe Seite sehen, müssen Sie die Datei install.lock im Dokumentenverzeichnis entfernen / umbenennen. +ClickOnLinkOrCreateUnlockFileManualy=Wenn gerade ein Upgrade durchgeführt wird, warten Sie bitte... Wenn nicht, müssen Sie eine Datei upgrade.unlock im Dokumentenverzeichnis von Dolibarr erstellen. Loaded=Geladen FunctionTest=Funktionstest +NodoUpgradeAfterDB=Keine Aktion von externen Modulen nach Upgrade der Datenbank angefordert +NodoUpgradeAfterFiles=Keine Aktion von externen Modulen nach dem Upgrade von Dateien oder Verzeichnissen angefordert +MigrationContractLineRank=Vertragszeile migrieren, um Rang zu verwenden (und Neuordnung zu aktivieren) diff --git a/htdocs/langs/de_DE/mails.lang b/htdocs/langs/de_DE/mails.lang index 95e4c06ba4b..7bce9acc096 100644 --- a/htdocs/langs/de_DE/mails.lang +++ b/htdocs/langs/de_DE/mails.lang @@ -97,12 +97,12 @@ EmailCollectorFilterDesc=Alle Filter müssen übereinstimmen, damit eine E-Mail # Libelle des modules de liste de destinataires mailing LineInFile=Zeile %s in der Datei -RecipientSelectionModules=Möglichkeit des Hinzufügens +RecipientSelectionModules=Vordefinierte Empfängerlisten MailSelectedRecipients=Ausgewählte Empfänger MailingArea=Übersicht E-Mail-Kampagnen LastMailings=Neueste E-Mail-Kampagnen (maximal %s) TargetsStatistics=Zielstatistiken -NbOfCompaniesContacts=Einzigartige Partnerkontakte +NbOfCompaniesContacts=Kontakte/einmalige Adressen MailNoChangePossible=Die Empfängerliste einer freigegebenen E-Mail-Kampagne kann nicht mehr bearbeitet werden. SearchAMailing=Suche E-Mail-Kampagne SendMailing=E-Mail-Kampagne versenden @@ -141,7 +141,7 @@ YouCanAlsoUseSupervisorKeyword=Sie können auch das Schlüsselwort __SUP NbOfTargetedContacts=Aktuelle Anzahl der E-Mails-Kontakte UseFormatFileEmailToTarget=Die importierte Datei muss im folgenden Format vorliegen:
E-Mail-Adresse;Nachname;Vorname;Zusatzinformationen. UseFormatInputEmailToTarget=Geben Sie eine Zeichenkette im Format
E-Mail-Adresse;Nachname;Vorname;Zusatzinformationen ein -MailAdvTargetRecipients=Empfänger (Erweitere Selektion) +MailAdvTargetRecipients=Empfänger (erweiterte Auswahl) AdvTgtTitle=Füllen Sie die Eingabefelder zur Vorauswahl der Partner- oder Kontakt- / Adressen - Empänger AdvTgtSearchTextHelp=Verwenden Sie %% als Platzhalter. Um beispielsweise alle Elemente wie jean, joe, jim zu finden, können Sie j%% eingeben, außerdem ; als Trennzeichen für Werte verwenden und ! für ohne diesen Wert. Zum Beispiel wird jean; joe; jim%% ;! Jimo ;!jima%% zielt auf alle die mit jean, joe, jim beginnen, aber nicht auf jimo und nicht auf alles, was mit jima beginnt AdvTgtSearchIntHelp=Intervall verwenden um eine Integer oder Fliesskommazahl auszuwählen diff --git a/htdocs/langs/de_DE/main.lang b/htdocs/langs/de_DE/main.lang index 6b1db066cd9..4aa75a20c80 100644 --- a/htdocs/langs/de_DE/main.lang +++ b/htdocs/langs/de_DE/main.lang @@ -174,7 +174,7 @@ ConfirmSendCardByMail=Möchten Sie wirklich die Inhalte dieser Karteikarte per E Delete=Löschen Remove=Entfernen Resiliate=Beenden -Cancel=Stornieren +Cancel=Abbrechen Modify=Ändern Edit=Bearbeiten Validate=Freigeben @@ -201,7 +201,7 @@ Search=Suchen SearchOf=Suche nach SearchMenuShortCut=STRG + Umschalt + f QuickAdd=Schnelles Hinzufügen -QuickAddMenuShortCut=Ctrl (bzw. Strg) + Umschalttaste + l +QuickAddMenuShortCut=STRG + Umschalt + l Valid=Freigeben Approve=Genehmigen Disapprove=Abgelehnt @@ -242,7 +242,7 @@ Code=Name Type=Typ Language=Sprache MultiLanguage=Mehrsprachig -Note=Hinweis +Note=Anmerkungen Title=Bezeichnung Label=Bezeichnung RefOrLabel=Ref. oder Bezeichnung @@ -546,8 +546,8 @@ StatusInterInvoiced=Berechnet Validated=Freigegeben ValidatedToProduce=Freigegeben (zu produzieren) Opened=Offen -OpenAll=Öffnen (Alle) -ClosedAll=Schließen (Alle) +OpenAll=Offene (Alle) +ClosedAll=Geschlossene (Alle) New=Neu Discount=Rabatt Unknown=Unbekannt @@ -732,7 +732,7 @@ ExpectedQty=Erwartete Menge PartialWoman=Teilweise TotalWoman=Vollständig NeverReceived=Nie erhalten -Canceled=Storniert +Canceled=widerrufen YouCanChangeValuesForThisListFromDictionarySetup=Sie können die Listenoptionen unter Start - Einstellungen - Stammdaten anpassen YouCanChangeValuesForThisListFrom=Werte für diese Liste können im Menü %s bearbeitet werden YouCanSetDefaultValueInModuleSetup=Sie können den Standardwert beim Erstellen eines neuen Datensatzes festlegen (Modul-Setup). @@ -923,6 +923,7 @@ NotAllExportedMovementsCouldBeRecordedAsExported=Nicht alle exportierten Bewegun Miscellaneous=Verschiedenes Calendar=Terminkalender GroupBy=Gruppiere nach ... +GroupByX=Gruppieren nach %s ViewFlatList=Listenansicht zeigen ViewAccountList=Hauptbuch anzeigen ViewSubAccountList=Unterkonten-Buch anzeigen @@ -1155,21 +1156,21 @@ OnHold=angehalten Civility=Anrede/Titel AffectTag=Schlagwort/Kategorie zuweisen AffectUser=Benutzer zuordnen -SetSupervisor=Führungskraft festlegen +SetSupervisor=Vorgesetzten festlegen CreateExternalUser=Externen Benutzer anlegen ConfirmAffectTag=Massenzuweisung von Schlagwörtern/Kategorien ConfirmAffectUser=Massenzuordnung von Benutzern ProjectRole=Für jedes Projekt / jeden Lead zugewiesene Rolle TasksRole=Für jede Aufgabe zugewiesene Rolle (falls verwendet) -ConfirmSetSupervisor=Führungskraft für mehrere festlegen +ConfirmSetSupervisor=Vorgesetzten für mehrere festlegen ConfirmUpdatePrice=Wählen Sie den Wert der Preiserhöhung/-senkung ConfirmAffectTagQuestion=Möchten Sie den %s ausgewählten Datensätzen wirklich Schlagwörter/Kategorien zuweisen? ConfirmAffectUserQuestion=Möchten Sie die Benutzer wirklich den ausgewählten %s Datensätzen zuordnen? -ConfirmSetSupervisorQuestion=Möchten Sie die Führungskraft wirklich für die ausgewählten %s-Datensätze festlegen? +ConfirmSetSupervisorQuestion=Möchten Sie den Verantwortlichen wirklich für die ausgewählten %s-Datensätze festlegen? ConfirmUpdatePriceQuestion=Möchten Sie den Preis der %s ausgewählten Datensätze wirklich aktualisieren? CategTypeNotFound=Für den Datensatztyp wurde kein Tag-Typ gefunden Rate=Rate -SupervisorNotFound=Führungskraft nicht gefunden +SupervisorNotFound=Vorgesetzten nicht gefunden CopiedToClipboard=In die Zwischenablage kopiert InformationOnLinkToContract=Dieser Betrag ist nur die Summe aller Vertragszeilen. Zeitbegriff wird nicht berücksichtigt. ConfirmCancel=Sind Sie sicher, dass Sie abbrechen möchten @@ -1222,3 +1223,5 @@ AddToContacts=Adresse zu meinen Kontakten hinzufügen LastAccess=Letzter Zugriff UploadAnImageToSeeAPhotoHere=Laden Sie ein Bild auf der Registerkarte %s hoch, um hier ein Foto zu sehen LastPasswordChangeDate=Datum der letzten Passwortänderung +PublicVirtualCardUrl=Virtuelle Visitenkartenseite +TreeView=Baumansicht diff --git a/htdocs/langs/de_DE/members.lang b/htdocs/langs/de_DE/members.lang index 5262debe779..0c6595f5d04 100644 --- a/htdocs/langs/de_DE/members.lang +++ b/htdocs/langs/de_DE/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=Statistiken zu Mitgliedsbeiträgen NbOfSubscriptions=Anzahl der Beitragszahlungen AmountOfSubscriptions=Summer der erhaltenen Beitragszahlungen TurnoverOrBudget=Umsatz (Firma) oder Budget (Verein/Stiftung) -DefaultAmount=Standardhöhe des Mitgliedsbeitrags +DefaultAmount=Standardbetrag des Mitgliedsbeitrags (wird nur verwendet, wenn auf Ebene der Mitgliedschaftstypen kein Betrag definiert ist) +MinimumAmount=Mindestbetrag (wird nur verwendet, wenn der Beitragsbetrag kostenlos ist) CanEditAmount=Die Mitgliedschaft ist kostenlos CanEditAmountDetail=Der Besucher kann die Höhe seines Beitrags unabhängig vom Mitgliedstyp auswählen/bearbeiten AmountIsLowerToMinimumNotice=von einem Gesamtbetrag von %s diff --git a/htdocs/langs/de_DE/modulebuilder.lang b/htdocs/langs/de_DE/modulebuilder.lang index f4ea8214838..bea94f335b1 100644 --- a/htdocs/langs/de_DE/modulebuilder.lang +++ b/htdocs/langs/de_DE/modulebuilder.lang @@ -1,7 +1,8 @@ # Dolibarr language file - Source file is en_US - loan -ModuleBuilderDesc=Dieses Tool ist für erfahrene Nutzer und Entwickler gedacht. Es stellt Werkzeuge zum Erstellen und bearbeiten von eigenen Modulen zur Verfügung. Eine Dokumentation für eine alternative manuelle Entwicklung (von Modulen) findet sich hier. +IdModule= Modul-ID +ModuleBuilderDesc=Dieses Tool ist für erfahrene Nutzer und Entwickler gedacht. Es stellt Werkzeuge zum Erstellen und Bearbeiten von eigenen Modulen zur Verfügung. Eine Dokumentation für eine alternative manuelle Entwicklung findet sich hier. EnterNameOfModuleDesc=Geben Sie den Namen des zu erstellenden Moduls / der Anwendung ohne Leerzeichen ein. Verwenden Sie Großbuchstaben, um Wörter zu trennen (Beispiel: MyModule, EcommerceForShop, SyncWithMySystem...) -EnterNameOfObjectDesc=Geben Sie den Namen des zu erstellenden Objekts ohne Leerzeichen ein. Verwenden Sie Großbuchstaben, um Wörter zu trennen (z. B.: MyObject, Student, Teacher...). Die CRUD-Klassendatei, aber auch die API-Datei, Seiten zum Auflisten/Hinzufügen/Bearbeiten/Löschen von Objekten und SQL-Dateien werden generiert. +EnterNameOfObjectDesc=Geben Sie den Namen des zu erstellenden Objekts ohne Leerzeichen ein. Verwenden Sie Großbuchstaben, um Wörter zu trennen (z. B.: MyObject, Student, Teacher...). Die CRUD-Klassendatei, die Seiten zum Auflisten/Hinzufügen/Bearbeiten/Löschen des Objekts und die SQL-Dateien werden generiert. EnterNameOfDictionaryDesc=Geben Sie den Namen des zu erstellenden Wörterbuchs ohne Leerzeichen ein. Verwenden Sie Großbuchstaben, um Wörter zu trennen (Beispiel: MyDico...). Die Klassendatei, aber auch die SQL-Datei werden generiert. ModuleBuilderDesc2=Pfad, in dem Module generiert / bearbeitet werden (erstes Verzeichnis für externe Module, definiert in %s): %s ModuleBuilderDesc3=Gefundene generierte/bearbeitbare Module : %s @@ -9,6 +10,7 @@ ModuleBuilderDesc4=Ein Modul wird als 'editierbar' erkannt, wenn die Datei %s
wirklich löschen? Dadurch wird Code in der PHP-Klasse geändert, aber auch die Spalte aus der Tabellendefinition des Objekts entfernt. NotNull=Not NULL NotNullDesc=1=Datenbank auf NOT NULL setzen, 0=Nullwerte zulassen, -1=Nullwerte zulassen, indem der Wert auf NULL gesetzt wird, wenn er leer ist ('' oder 0) @@ -72,23 +77,24 @@ TestClassFile=Datei für PHP Unit Testklasse SqlFile=SQL Datei PageForLib=Datei für die gemeinsame PHP-Bibliothek PageForObjLib=Datei für die Objekt-PHP-Bibliothek -SqlFileExtraFields=SQL Datei für zusätzliche Eigenschaften +SqlFileExtraFields=SQL Datei für ergänzende Attribute SqlFileKey=SQL Datei für Schlüsselwerte -SqlFileKeyExtraFields=SQL-Datei für die Schlüssel der Extrafields +SqlFileKeyExtraFields=SQL-Datei für die Schlüssel der ergänzenden Attribute AnObjectAlreadyExistWithThisNameAndDiffCase=Es existiert bereits ein Objekt mit diesem Namen und einer anderen Groß-/Kleinschreibung UseAsciiDocFormat=Sie können das Markdown-Format verwenden, empfohlen wird jedoch, das Asciidoc-Format zu verwenden (Vergleich zwischen .md und .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown) IsAMeasure=Ist ein Maß (addierbar) DirScanned=Verzeichnis gescannt NoTrigger=Kein Trigger NoWidget=Kein Widget -GoToApiExplorer=API-Explorer +ApiExplorer=API-Explorer ListOfMenusEntries=Liste der Menüeinträge ListOfDictionariesEntries=Liste der Stammdaten ListOfPermissionsDefined=Liste der definierten Berechtigungen SeeExamples=Siehe Beispiele -EnabledDesc=Condition to have this field active (Examples: 1 or $conf->global->MYMODULE_MYOPTION) -VisibleDesc=Ist das Feld sichtbar? (Beispiele: 0 = Nie sichtbar, 1 = Auf Liste sichtbar und Formulare erstellen / aktualisieren / anzeigen, 2 = Nur auf Liste sichtbar, 3 = Nur auf Formular erstellen / aktualisieren / anzeigen (nicht Liste), 4 = Auf Liste sichtbar und nur sichtbar bei Formular aktualisieren / anzeigen (nicht erstellen), 5 = Nur im Formular für die Listenendansicht sichtbar (nicht erstellen, nicht aktualisieren).

Wenn ein negativer Wert verwendet wird, wird das Feld standardmäßig nicht in der Liste angezeigt, kann jedoch zur Anzeige ausgewählt werden.)

Es kann sich um einen Ausdruck handeln, z. B.:
preg_match('/public/', $_SERVER['PHP_SELF'])?0:1
($user->rights->holiday->define_holiday ? 1 : 0) -DisplayOnPdfDesc=Zeigt dieses Feld in kompatiblen PDF-Dokumenten an. Sie können die Anzeigeposition über das Feld "Position" beeinflussen.
Derzeit bekannte kompatible PDF-Modelle sind: eratosthene (Bestellung), espadon (Lieferung), sponge (Rechnung), cyan (Angebot), cornas (Lieferantenauftrag)

Für Dokument:
0 = nicht anzeigen
1 = anzeigen
2 = anzeigen, wenn nicht leer

Für Einzelpositionen:
0 = nicht anzeigen
1 = in Spalte anzeigen
3 = in Beschreibungszeile nach der Beschreibung anzeigen
4 = nur falls nicht leer: in Beschreibungszeile nach der Beschreibung anzeigen +EnabledDesc=Bedingung, dass dieses Feld aktiv ist.

Beispiele:
1
isModEnabled('MAIN_MODULE_MYMODULE')
getDolGlobalString('MYMODULE_OPTION')==2 +VisibleDesc=Ist das Feld sichtbar? (Beispiele: 0=Nie sichtbar, 1=Sichtbar auf Liste und Erstellen/Aktualisieren/Anzeigen von Formularen, 2=Sichtbar nur auf Liste, 3=Sichtbar nur auf Erstellen/Aktualisieren/Anzeigen von Formularen (keine Liste), 4=Sichtbar auf Liste und Nur Formular aktualisieren/anzeigen (nicht erstellen), 5=Sichtbar nur im Listen-Endansichtsformular (nicht erstellen, nicht aktualisieren)

Die Verwendung eines negativen Werts bedeutet, dass das Feld nicht standardmäßig in der Liste angezeigt wird, aber zur Anzeige ausgewählt werden kann). +ItCanBeAnExpression=Dies kann ein Ausdruck sein. Beispiel:
preg_match('/public/', $_SERVER['PHP_SELF'])?0:1
$user->hasRight('holiday', 'define_holiday')?1:5 +DisplayOnPdfDesc=Zeigt dieses Feld in kompatiblen PDF-Dokumenten an, Sie können die Position mit dem Feld "Position" beeinflussen.
Für gesamtes Dokument:
0 = nicht anzeigen
1 = anzeigen
2 = anzeigen, wenn nicht leer

Für Einzelpositionen:
0 = nicht anzeigen
1 = in einer Spalte anzeigen
3 = in der Beschreibungszeile nach der Beschreibung anzeigen
4 = nur falls nicht leer: in Beschreibungszeile nach der Beschreibung anzeigen DisplayOnPdf=Anzeige im PDF IsAMeasureDesc=Kann der Wert des Feldes kumuliert werden, um eine Summe in die Liste aufzunehmen? (Beispiele: 1 oder 0) SearchAllDesc=Wird das Feld verwendet, um eine Suche über das Schnellsuchwerkzeug durchzuführen? (Beispiele: 1 oder 0) @@ -130,18 +136,20 @@ UseSpecificEditorURL = Verwenden Sie eine bestimmte Editor-URL UseSpecificFamily = Verwenden Sie eine bestimmte Kategorie/Gruppe UseSpecificAuthor = Verwenden Sie einen bestimmten Autor UseSpecificVersion = Verwenden Sie eine bestimmte Anfangsversion -IncludeRefGeneration=Die Referenz des Objekts soll automatisch mittels benutzerdefinierter Nummerierungsregeln generiert werden +IncludeRefGeneration=Die Referenz dieses Objekts muss automatisch durch benutzerdefinierte Nummerierungsregeln generiert werden IncludeRefGenerationHelp=Aktivieren Sie diese Option, wenn Sie Code einschließen möchten, der die Referenz automatisch mit Hilfe von benutzerdefinierten Nummerierungsregeln generiert -IncludeDocGeneration=Für das Objekt sollen Dokumente aus Vorlagen generiert werden können. +IncludeDocGeneration=Für das Objekt sollen Dokumente aus Vorlagen (PDF, ODT) generiert werden können. IncludeDocGenerationHelp=Wenn Sie dies aktivieren, wird Code generiert, um dem Datensatz ein Feld "Dokument generieren" hinzuzufügen. -ShowOnCombobox=Wert in der Combobox anzeigen +ShowOnCombobox=Wert in Combo-Box anzeigen KeyForTooltip=Schlüssel für Tooltip CSSClass=CSS zum Bearbeiten/Erstellen von Formularen (edit/create) CSSViewClass=CSS für das Lesen von Formularen (read) CSSListClass=CSS für Listen NotEditable=Nicht bearbeitbar ForeignKey=Fremdschlüssel -TypeOfFieldsHelp=Feldtypen:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]]
„1“ bedeutet, dass wir nach der Kombobox eine '+'-Schaltfläche hinzufügen, um den Datensatz zu erstellen
'filter' ist eine SQL-Bedingung, Beispiel: 'status=1 AND fk_user=__USER_ID__ AND entity IN (__SHARED_ENTITIES__)' +ForeignKeyDesc=Wenn der Wert dieses Felds garantiert in einer anderen Tabelle vorhanden sein muss, geben Sie hier eine Syntax zum Abgleich der Werte ein: tablename.parentfieldtocheck +TypeOfFieldsHelp=Beispiel:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]]
'1' bedeutet, dass nach der Kombobox eine '+'-Schaltfläche hinzufügt wird, um den Datensatz zu erstellen
'filter' ist eine SQL-Bedingung, Beispiel: 'status=1 AND fk_user=__USER_ID__ AND entity IN (__SHARED_ENTITIES__)' +TypeOfFieldsHelpIntro=Dies ist der Typ des Felds/Attributs. AsciiToHtmlConverter=Ascii zu HTML Konverter AsciiToPdfConverter=Ascii zu PDF Konverter TableNotEmptyDropCanceled=Tabelle nicht leer. Löschen wurde abgebrochen. @@ -154,3 +162,14 @@ ListOfTabsEntries=Liste der Registerkarteneinträge/Tab-Einträge TabsDefDesc=Definieren Sie hier die von Ihrem Modul bereitgestellten Registerkarten/Tabs TabsDefDescTooltip=Die von Ihrem Modul/Ihrer Anwendung bereitgestellten Registerkarten/Tabs sind im Array $this->tabs in der Moduldeskriptordatei definiert. Sie können diese Datei manuell bearbeiten oder den eingebetteten Editor verwenden. BadValueForType=Ungültiger Wert für Typ %s +DefinePropertiesFromExistingTable=Eigenschaften aus einer vorhandenen Tabelle definieren +DefinePropertiesFromExistingTableDesc=Wenn bereits eine Tabelle in der Datenbank (für das zu erstellende Objekt) vorhanden ist, können Sie diese verwenden, um die Eigenschaften des Objekts zu definieren. +DefinePropertiesFromExistingTableDesc2=Leer lassen, wenn die Tabelle noch nicht existiert. Der Codegenerator verwendet verschiedene Arten von Feldern, um eine Beispieltabelle zu erstellen, die Sie später bearbeiten können. +GeneratePermissions=Ich möchte die Rechte für dieses Objekt hinzufügen +GeneratePermissionsHelp=Standardrechte für dieses Objekt generieren +PermissionDeletedSuccesfuly=Die Berechtigung wurde erfolgreich entfernt +PermissionUpdatedSuccesfuly=Die Berechtigung wurde erfolgreich aktualisiert +PermissionAddedSuccesfuly=Die Berechtigung wurde erfolgreich hinzugefügt +MenuDeletedSuccessfuly=Das Menü wurde erfolgreich gelöscht +MenuAddedSuccessfuly=Das Menü wurde erfolgreich hinzugefügt +MenuUpdatedSuccessfuly=Das Menü wurde erfolgreich aktualisiert diff --git a/htdocs/langs/de_DE/oauth.lang b/htdocs/langs/de_DE/oauth.lang index 1c235015ddb..9bd8029b9eb 100644 --- a/htdocs/langs/de_DE/oauth.lang +++ b/htdocs/langs/de_DE/oauth.lang @@ -9,6 +9,7 @@ HasAccessToken=Ein Token wurde erstellt und in der lokalen Datenbank gespeichert NewTokenStored=Token empfangen und gespeichert ToCheckDeleteTokenOnProvider=Klicke hier um prüfen/entfernen Authentifizierung gespeichert durch den OAuth Anbieter %s TokenDeleted=Token gelöscht +GetAccess=Hier klicken, um ein Token zu erhalten RequestAccess=Klicken Sie hier, um den Zugriff anzufordern/zu erneuern und ein neues Token zu erhalten DeleteAccess=Hier klicken, um das Token zu löschen UseTheFollowingUrlAsRedirectURI=Verwenden Sie die folgende URL als Redirect-URI, wenn Sie Ihre Anmeldeinformationen bei Ihrem OAuth-Anbieter erstellen: @@ -30,7 +31,11 @@ OAUTH_GITHUB_SECRET=OAuth GitHub Secret OAUTH_URL_FOR_CREDENTIAL=Gehen Sie zu dieser Seite, um Ihre OAuth-ID und Ihr Geheimnis zu erstellen oder abzurufen OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live -OAUTH_ID=OAuth-ID +OAUTH_ID=OAuth-Client-ID OAUTH_SECRET=OAuth-Geheimnis +OAUTH_TENANT=OAuth-Mandant OAuthProviderAdded=OAuth-Anbieter hinzugefügt AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Ein OAuth-Eintrag für diesen Anbieter und dieses Label ist bereits vorhanden +URLOfServiceForAuthorization=URL, die vom OAuth-Dienst zur Authentifizierung bereitgestellt wird +Scopes=Berechtigungen (Scopes) +ScopeUndefined=Berechtigungen (Scopes) undefiniert (siehe vorheriges Tab) diff --git a/htdocs/langs/de_DE/projects.lang b/htdocs/langs/de_DE/projects.lang index 92589e6721a..599a47d8c88 100644 --- a/htdocs/langs/de_DE/projects.lang +++ b/htdocs/langs/de_DE/projects.lang @@ -53,7 +53,7 @@ RefTask=Aufgabenreferenz LabelTask=Aufgabenbezeichnung TaskTimeSpent=Zeitaufwände für Aufgaben TaskTimeUser=Benutzer -TaskTimeNote=Hinweis +TaskTimeNote=Anmerkung TaskTimeDate=Datum TasksOnOpenedProject=Aufgaben in offenen Projekten WorkloadNotDefined=Arbeitsaufwand nicht definiert diff --git a/htdocs/langs/de_DE/propal.lang b/htdocs/langs/de_DE/propal.lang index 050b83a7a33..4284af6117f 100644 --- a/htdocs/langs/de_DE/propal.lang +++ b/htdocs/langs/de_DE/propal.lang @@ -107,7 +107,7 @@ PropalAlreadyRefused=Angebot bereits abgelehnt PropalAlreadySigned=Angebot bereits angenommen PropalRefused=Angebot abgelehnt PropalSigned=Angebot beauftragt -ProposalCustomerSignature=Auftraggeber: Name in Klarschrift, Ort, Datum, Unterschrift +ProposalCustomerSignature=Name in Klarschrift, Ort, Datum, Unterschrift Auftraggeber ProposalsStatisticsSuppliers=Statistik Lieferantenanfragen RefusePropal=Angebot ablehnen Sign=Beauftragen diff --git a/htdocs/langs/de_DE/recruitment.lang b/htdocs/langs/de_DE/recruitment.lang index 13fb604b489..e3505d06789 100644 --- a/htdocs/langs/de_DE/recruitment.lang +++ b/htdocs/langs/de_DE/recruitment.lang @@ -42,7 +42,7 @@ NbOfEmployeesExpected=Erwartete Anzahl von Mitarbeitern JobLabel=Bezeichnung der beruflichen Position WorkPlace=Arbeitsort DateExpected=Erwartetes Datum -FutureManager=Zukünftige Führungskraft +FutureManager=Zukünftiger Verantwortlicher ResponsibleOfRecruitement=Verantwortlicher für die Personalbeschaffung IfJobIsLocatedAtAPartner=Wenn sich die Stelle am Standort eines Geschäftspartners befindet PositionToBeFilled=Offene Stelle diff --git a/htdocs/langs/de_DE/suppliers.lang b/htdocs/langs/de_DE/suppliers.lang index 54890cab6d8..dcaff8ccee7 100644 --- a/htdocs/langs/de_DE/suppliers.lang +++ b/htdocs/langs/de_DE/suppliers.lang @@ -37,7 +37,7 @@ ListOfSupplierProductForSupplier=Liste der Produkte und Preise für Lieferanten SentToSuppliers=An Lieferanten versandt ListOfSupplierOrders=Liste der Lieferantenbestellungen MenuOrdersSupplierToBill=Lieferantenbestellungen zu Rechnungen -NbDaysToDelivery=Lieferverzug (Tage) +NbDaysToDelivery=Lieferdauer (Tage) DescNbDaysToDelivery=Die längste Lieferverzögerung der Produkte aus dieser Bestellung SupplierReputation=Lieferanten-Reputation ReferenceReputation=Ref. Reputation diff --git a/htdocs/langs/de_DE/ticket.lang b/htdocs/langs/de_DE/ticket.lang index db22f635a81..6360717dcc4 100644 --- a/htdocs/langs/de_DE/ticket.lang +++ b/htdocs/langs/de_DE/ticket.lang @@ -35,7 +35,7 @@ TicketDictSeverity=Ticket-Dringlichkeiten TicketDictResolution=Ticket-Auflösung TicketTypeShortCOM=Anfrage an Verkauf -TicketTypeShortHELP=Erbitte funktionale Hilfestellung +TicketTypeShortHELP=Antrag auf funktionelle Hilfe TicketTypeShortISSUE=Problem oder Fehler TicketTypeShortPROBLEM=Problem TicketTypeShortREQUEST=Änderungs- oder Erweiterungsanforderung @@ -204,7 +204,7 @@ TicketMessageSuccessfullyAdded=Mitteilung erfolgreich gespeichert TicketMessagesList=Liste der Mitteilungen NoMsgForThisTicket=Keine Mitteilungen zu diesem Ticket TicketProperties=Kategorisierung -LatestNewTickets=Neuste nicht gelesene Tickets (maximal %s) +LatestNewTickets=Neueste nicht gelesene Tickets (maximal %s) TicketSeverity=Dringlichkeit ShowTicket=Ticket zeigen RelatedTickets=Verknüpfte Tickets @@ -252,7 +252,7 @@ InitialMessage=Originalmitteilung LinkToAContract=Link zu Vertrag TicketPleaseSelectAContract=Vertrag auswählen UnableToCreateInterIfNoSocid=Es kann kein Serviceauftrag erstellt werden, wenn keine Geschäftspartner definiert sind -TicketMailExchanges=Mailaustausch +TicketMailExchanges=Schriftverkehr TicketInitialMessageModified=Originalmitteilung aktualisiert TicketMessageSuccesfullyUpdated=Mitteilung erfolgreich aktualisiert TicketChangeStatus=Status ändern diff --git a/htdocs/langs/de_DE/users.lang b/htdocs/langs/de_DE/users.lang index 3831051df46..877f4bede24 100644 --- a/htdocs/langs/de_DE/users.lang +++ b/htdocs/langs/de_DE/users.lang @@ -100,7 +100,7 @@ YourQuotaOfUsersIsReached=Ihr Kontingent aktiver Benutzer ist erreicht NbOfUsers=Anzahl Benutzer NbOfPermissions=Anzahl Berechtigungen DontDowngradeSuperAdmin=Nur ein SuperAdmin kann einen SuperAdmin downgraden -HierarchicalResponsible=Führungskraft +HierarchicalResponsible=Vorgesetzter HierarchicView=Hierarchische Ansicht UseTypeFieldToChange=Nutzen sie das Feld "Typ" zum Ändern OpenIDURL=OpenID URL @@ -120,7 +120,7 @@ RangeOfLoginValidity=Datumsbereich der Zugriffsgültigkeit CantDisableYourself=Sie können nicht ihr eigenes Benutzerkonto deaktivieren ForceUserExpenseValidator=Genehmiger für Spesenabrechnungen festlegen ForceUserHolidayValidator=Genehmiger für Urlaubsanträge festlegen -ValidatorIsSupervisorByDefault=Standardmäßig ist die Führungskraft des Benutzers der Prüfer. Leer lassen, um dieses Verhalten beizubehalten. +ValidatorIsSupervisorByDefault=Standardmäßig ist der Freigebende der Vorgesetzte des Benutzers. Lassen Sie es leer, um dieses Verhalten beizubehalten. UserPersonalEmail=Private E-Mail-Adresse UserPersonalMobile=Private Mobiltelefonnummer WarningNotLangOfInterface=Warnung: das ist die eingestellte Muttersprache die der Benutzer spricht, nicht die ausgewählte Sprache der Benutzeroberfläche. Um die angezeigte Sprache der Benutzeroberfläche zu ändern, gehe zum Tab %s @@ -132,4 +132,3 @@ ShowAllPerms=Alle Berechtigungen anzeigen HideAllPerms=Alle Berechtigungen ausblenden UserPublicPageDesc=Sie können für diesen Benutzer eine virtuelle Karte aktivieren. Eine URL mit dem Benutzerprofil und einem Barcode wird verfügbar sein, damit jeder mit einem Smartphone sie scannen und Ihren Kontakt zu seinem Adressbuch hinzufügen kann. EnablePublicVirtualCard=Aktivieren Sie die öffentliche virtuelle Benutzerkarte -PublicVirtualCardUrl=Öffentliche virtuelle Benutzerkarte diff --git a/htdocs/langs/de_DE/withdrawals.lang b/htdocs/langs/de_DE/withdrawals.lang index 1455b43acbe..bea6789100f 100644 --- a/htdocs/langs/de_DE/withdrawals.lang +++ b/htdocs/langs/de_DE/withdrawals.lang @@ -97,7 +97,7 @@ WithBankUsingRIB=Bankkonten mit RIB WithBankUsingBANBIC=Bankkonten mit IBAN/BIC BankToReceiveWithdraw=Bankkonto für Abbuchungen BankToPayCreditTransfer=Bankkonto als Zahlungsquelle verwendet -CreditDate=Am +CreditDate=Gewährt am WithdrawalFileNotCapable=Abbuchungsformular für Ihr Land %s konnte nicht erstellt werden (Dieses Land wird nicht unterstützt). ShowWithdraw=Zeige Lastschrift IfInvoiceNeedOnWithdrawPaymentWontBeClosed=Wenn auf der Rechnung mindestens ein Lastschrift-Zahlungsauftrag noch nicht verarbeitet wurde, wird dieser nicht als bezahlt festgelegt, um eine vorherige Abhebungsverwaltung zu ermöglichen. diff --git a/htdocs/langs/el_CY/admin.lang b/htdocs/langs/el_CY/admin.lang index aac79a4499a..f8581db8efb 100644 --- a/htdocs/langs/el_CY/admin.lang +++ b/htdocs/langs/el_CY/admin.lang @@ -4,4 +4,3 @@ EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
diff --git a/htdocs/langs/el_CY/install.lang b/htdocs/langs/el_CY/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/el_CY/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/el_GR/admin.lang b/htdocs/langs/el_GR/admin.lang index 8e30b738283..5dbf7939e27 100644 --- a/htdocs/langs/el_GR/admin.lang +++ b/htdocs/langs/el_GR/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Πλαίσια ελέγχου ExtrafieldCheckBoxFromList=Πλαίσια ελέγχου από τον πίνακα ExtrafieldLink=Σύνδεσμος με ένα αντικείμενο ComputedFormula=Υπολογισμένο πεδίο -ComputedFormulaDesc=Μπορείτε να εισαγάγετε εδώ έναν τύπο χρησιμοποιώντας άλλες ιδιότητες αντικειμένου ή οποιαδήποτε κωδικοποίηση PHP για να λάβετε μια δυναμικά υπολογισμένη τιμή. Μπορείτε να χρησιμοποιήσετε οποιουσδήποτε τύπους συμβατούς με PHP, συμπεριλαμβανομένου του τελεστή συνθήκης "?" και το ακόλουθο καθολικό αντικείμενο: $db, $conf, $langs, $mysoc, $user, $object .
ΠΡΟΕΙΔΟΠΟΙΗΣΗ : Μόνο ορισμένες ιδιότητες του $object ενδέχεται να είναι διαθέσιμες. Εάν χρειάζεστε ιδιότητες που δεν έχουν φορτωθεί, απλώς συμπεριλάβετε το αντικείμενο στον τύπο σας όπως στο δεύτερο παράδειγμα.
Η χρήση ενός υπολογιστικού πεδίου σημαίνει ότι δεν μπορείτε να εισαγάγετε καμία τιμή από τη διεπαφή. Επίσης, εάν υπάρχει συντακτικό σφάλμα, ο τύπος ενδέχεται να μην επιστρέψει τίποτα.

Παράδειγμα τύπου:
$object->id < 10 ? round($object->id / 2, 2): ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Παράδειγμα για επαναφόρτωση του αντικειμένου
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

Άλλο παράδειγμα τύπου για την επιβολή φόρτωσης του αντικειμένου και του γονικού του αντικειμένου:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' +ComputedFormulaDesc=Μπορείτε να εισαγάγετε εδώ έναν τύπο χρησιμοποιώντας άλλες ιδιότητες αντικειμένου ή οποιαδήποτε κωδικοποίηση PHP για να λάβετε μια δυναμικά υπολογισμένη τιμή. Μπορείτε να χρησιμοποιήσετε οποιουσδήποτε τύπους συμβατούς με PHP, συμπεριλαμβανομένου του τελεστή συνθήκης "?" και το ακόλουθο καθολικό αντικείμενο: $db, $conf, $langs, $mysoc, $user, $object .
ΠΡΟΕΙΔΟΠΟΙΗΣΗ : Εάν χρειάζεστε ιδιότητες που δεν έχουν φορτωθεί, απλώς συμπεριλάβετε το αντικείμενο στον τύπο σας όπως στο δεύτερο παράδειγμα.
Η χρήση ενός υπολογισμένου πεδίου σημαίνει ότι δεν μπορείτε να εισαγάγετε καμία τιμή από τη διεπαφή. Επίσης, εάν υπάρχει συντακτικό σφάλμα, ο τύπος ενδέχεται να μην επιστρέψει τίποτα.

Παράδειγμα τύπου:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Παράδειγμα για επαναφόρτωση του αντικειμένου
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->id) > 0 ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1')

Άλλο παράδειγμα τύπου για την επιβολή φόρτωσης του αντικειμένου και του γονικού του αντικειμένου:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Αποθήκευση υπολογισμένου πεδίου ComputedpersistentDesc=Τα υπολογισμένα επιπλέον πεδία θα αποθηκευτούν στη βάση δεδομένων, ωστόσο, η τιμή θα επανυπολογιστεί μόνο όταν αλλάξει το αντικείμενο αυτού του πεδίου. Εάν το υπολογισμένο πεδίο εξαρτάται από άλλα αντικείμενα ή καθολικά δεδομένα, αυτή η τιμή μπορεί να είναι λανθασμένη!! ExtrafieldParamHelpPassword=Αφήνοντας αυτό το πεδίο κενό σημαίνει ότι αυτή η τιμή θα αποθηκευτεί χωρίς κρυπτογράφηση (το πεδίο πρέπει να είναι κρυμμένο μόνο από αστεράκια στην οθόνη).
Ρυθμίστε σε 'auto' για να χρησιμοποιήσετε τον προεπιλεγμένο κανόνα κρυπτογράφησης και να αποθηκεύσετε τον κωδικό πρόσβασης στη βάση δεδομένων (τότε θα είναι αναγνώσιμο μόνο το hash της τιμής και δεν υπάρχει κανένας τρόπος για να ανακτήσετε την αρχική τιμή) @@ -704,8 +704,10 @@ Module62000Name=Διεθνείς Εμπορικοί Όροι Module62000Desc=Προσθέστε λειτουργίες για τη διαχείριση των διεθνών εμπορικών όρων Module63000Name=Πόροι Module63000Desc=Διαχειριστείτε πόρους (εκτυπωτές, αυτοκίνητα, δωμάτια, ...) για κατανομή σε εκδηλώσεις +Module66000Name=Ενεργοποίηση έλεγχου ταυτότητας OAuth2 +Module66000Desc=Παρέχει ένα εργαλείο για τη δημιουργία και τη διαχείριση OAuth2 token. Το token μπορεί στη συνέχεια να χρησιμοποιηθεί από κάποιες άλλες ενότητες. Module94160Name=Παραλαβές -Permission11=Ανάγνωση τιμολογίων πελατών +Permission11=Ανάγνωση τιμολογίων πελατών (και πληρωμές) Permission12=Δημιουργία / τροποποίηση τιμολογίων πελατών Permission13=Ακύρωση τιμολογίων πελατών Permission14=Επικύρωση τιμολογίων πελατών @@ -947,7 +949,7 @@ Permission1190=Έγκριση παραγγελιών αγοράς (δεύτερ Permission1191=Εξαγωγή παραγγελιών προμηθευτών και τα χαρακτηριστικά τους Permission1201=Λήψη αποτελέσματος μιας εξαγωγής Permission1202=Δημιουργία / Τροποποίηση εξαγωγής -Permission1231=Ανάγνωση τιμολογίων προμηθευτή +Permission1231=Ανάγνωση τιμολογίων προμηθευτών (και πληρωμές) Permission1232=Δημιουργία / τροποποίηση τιμολογίων προμηθευτή Permission1233=Επικύρωση τιμολογίων προμηθευτή Permission1234=Διαγραφή τιμολογίων προμηθευτή @@ -1234,7 +1236,7 @@ SetupDescription4=  %s -> %s

Αυτό το λογι SetupDescription5=Άλλες καταχωρήσεις του μενού Ρυθμίσεις αφορούν σε προαιρετικές παραμέτρους. SetupDescriptionLink= %s - %s SetupDescription3b=Βασικές παράμετροι που χρησιμοποιούνται για την προσαρμογή της προεπιλεγμένης συμπεριφοράς της εφαρμογής σας (π.χ. για λειτουργίες που σχετίζονται με τη χώρα). -SetupDescription4b=Αυτό το λογισμικό είναι μια σουίτα πολλών λειτουργικών ενοτήτων/εφαρμογών. Οι ενότητες που σχετίζονται με τις ανάγκες σας πρέπει να είναι ενεργοποιημένες και ρυθμισμένες. Οι καταχωρήσεις μενού θα εμφανιστούν με την ενεργοποίηση αυτών των ενοτήτων. +SetupDescription4b=Αυτό το λογισμικό είναι μια σουίτα πολλών ενοτήτων/εφαρμογών. Οι ενότητες που σχετίζονται με τις ανάγκες σας πρέπει να είναι ενεργοποιημένες. Οι καταχωρήσεις μενού θα εμφανιστούν με την ενεργοποίηση αυτών των ενοτήτων. AuditedSecurityEvents=Συμβάντα ασφαλείας που ελέγχθηκαν NoSecurityEventsAreAduited=Δεν ελέγχονται συμβάντα ασφαλείας. Μπορείτε να τα ενεργοποιήσετε από το μενού %s Audit=Συμβάντα ασφαλείας @@ -1749,8 +1751,8 @@ NotificationDisableConfirmMessageFix=Απόκρυψη της λίστας παρ SendingsSetup=Ρύθμιση ενότητας αποστολών SendingsReceiptModel=Υπόδειγμα απόδειξης αποστολής SendingsNumberingModules=Ενότητες αρίθμησης αποστόλων -SendingsAbility=Υποστήριξη φύλλων αποστολής για παραδόσεις πελατών -NoNeedForDeliveryReceipts=Στις περισσότερες περιπτώσεις, τα φύλλα αποστολής χρησιμοποιούνται τόσο ως φύλλα για παραδόσεις πελατών (κατάλογος προϊόντων προς αποστολή) όσο και ως φύλλα που παραλαμβάνονται και υπογράφονται από τον πελάτη. Ως εκ τούτου, η παραλαβή των παραδόσεων προϊόντων είναι διπλότυπο χαρακτηριστικό και σπάνια ενεργοποιείται. +SendingsAbility=Υποστήριξη δελτίων αποστολής για παραδόσεις σε πελάτες +NoNeedForDeliveryReceipts=Στις περισσότερες περιπτώσεις, τα δελτία αποστολής χρησιμοποιούνται τόσο ως δελτία για παραδόσεις σε πελάτες (κατάλογος προϊόντων προς αποστολή) όσο και ως δελτία που παραλαμβάνονται και υπογράφονται από τον πελάτη. Ως εκ τούτου, η παραλαβή των παραδόσεων προϊόντων είναι διπλότυπο χαρακτηριστικό και σπάνια ενεργοποιείται. FreeLegalTextOnShippings=Ελεύθερο κείμενο στις αποστολές ##### Deliveries ##### DeliveryOrderNumberingModules=Ενότητα αρίθμησης αποδείξεων παραδόσεων προϊόντων @@ -2366,3 +2368,7 @@ MaxNumberOfAttachementOnForms=Μέγιστος αριθμός επισυναπτ IfDefinedUseAValueBeetween=Εάν ορίζεται, χρησιμοποιήστε μια τιμή μεταξύ %s και %s Reload=Επαναφόρτωση ConfirmReload=Επιβεβαίωση επαναφόρτωσης της μονάδας +WarningModuleHasChangedLastVersionCheckParameter=Προειδοποίηση: η ενότητα %s έχει ορίσει μια παράμετρο για έλεγχο της έκδοσής της σε κάθε πρόσβαση σελίδας. Αυτή είναι μια κακή και μη επιτρεπόμενη πρακτική που μπορεί να κάνει τη σελίδα διαχείρισης ενοτήτων ασταθή. Επικοινωνήστε με τον δημιουργό της ενότητας για να το διορθώσει. +WarningModuleHasChangedSecurityCsrfParameter=Προειδοποίηση: η ενότητα %s έχει απενεργοποιήσει την ασφάλεια CSRF της εγκατάστασης σας. Αυτή η ενέργεια είναι ύποπτη και η εγκατάστασή σας ενδέχεται να μην είναι πλέον ασφαλής. Επικοινωνήστε με τον δημιουργό της ενότητας για εξηγήσεις. +EMailsInGoingDesc=Η διαχείριση των εισερχόμενων email γίνεται από τη ενότητα %s. Πρέπει να την ενεργοποιήσετε και να την διαμορφώσετε εάν χρειάζεται να υποστηρίζετε εισερχόμενα email. +MAIN_IMAP_USE_PHPIMAP=Χρησιμοποιήστε τη βιβλιοθήκη PHP-IMAP για IMAP αντί για εγγενή PHP IMAP. Αυτό επιτρέπει επίσης τη χρήση μιας σύνδεσης OAuth2 για IMAP (η μονάδα OAuth πρέπει επίσης να είναι ενεργοποιημένη). diff --git a/htdocs/langs/el_GR/agenda.lang b/htdocs/langs/el_GR/agenda.lang index 09dd46c4ea3..a40cf3ff2d2 100644 --- a/htdocs/langs/el_GR/agenda.lang +++ b/htdocs/langs/el_GR/agenda.lang @@ -177,5 +177,6 @@ ReminderType=Τύπος επανάκλησης AddReminder=Δημιουργήστε μια αυτόματη ειδοποίηση υπενθύμισης για αυτή την ενέργεια ErrorReminderActionCommCreation=Σφάλμα κατά τη δημιουργία της ειδοποίησης υπενθύμισης για αυτή την ενέργεια BrowserPush=Αναδυόμενη ειδοποίηση προγράμματος περιήγησης +Reminders=Υπενθυμίσεις ActiveByDefault=Ενεργοποιημένο από προεπιλογή Until=μέχρι diff --git a/htdocs/langs/el_GR/banks.lang b/htdocs/langs/el_GR/banks.lang index b94c14f4b1c..9a3b52111fb 100644 --- a/htdocs/langs/el_GR/banks.lang +++ b/htdocs/langs/el_GR/banks.lang @@ -49,6 +49,9 @@ BankAccountDomiciliation=Διεύθυνση τράπεζας BankAccountCountry=Χώρα λογαριασμού BankAccountOwner=Ιδιοκτήτης Λογαριασμού BankAccountOwnerAddress=Διεύθυνση Ιδιοκτήτη λογαριασμού +BankAccountOwnerZip=Τ.Κ. κατόχου λογαριασμού +BankAccountOwnerTown=Πόλη κατόχου λογαριασμού +BankAccountOwnerCountry=Χώρα κατόχου λογαριασμού CreateAccount=Δημιουργία Λογαριασμού NewBankAccount=Νέος Λογαριασμός NewFinancialAccount=Νέος λογαριασμός @@ -185,4 +188,3 @@ AlreadyOneBankAccount=Έχει ήδη οριστεί ένας τραπεζικό SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation=Μεταφορά SEPA: 'Τύπος Πληρωμής' στο επίπεδο 'Μεταφορά Πίστωσης' SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp=Όταν δημιουργείτε ένα αρχείο SEPA XML για μεταφορές πίστωσης, η ενότητα "Πληροφορίες Τύπου πληρωμής" μπορεί τώρα να τοποθετηθεί στην ενότητα "Πληροφορίες Μεταφοράς Πίστωσης" (αντί της ενότητας "Πληρωμή"). Συνιστούμε ανεπιφύλακτα να μην το επιλέξετε ώστε να παραμείνουν η Πληροφορίες Τύπου πληρωμής σε επίπεδο πληρωμής, καθώς όλες οι τράπεζες δεν θα το αποδεχτούν απαραίτητα σε επίπεδο Πληροφοριών Μεταφοράς Πίστωσης. Επικοινωνήστε με την τράπεζά σας προτού τοποθετήσετε το Πληροφορίες Τύπου πληρωμής σε επίπεδο Πληροφοριών Μεταφοράς Πίστωσης. ToCreateRelatedRecordIntoBank=Για να δημιουργήσετε σχετικό τραπεζικό αρχείο που λείπει -BanklineExtraFields=Επιπλέον πεδία τραπεζικής γραμμής diff --git a/htdocs/langs/el_GR/dict.lang b/htdocs/langs/el_GR/dict.lang index 059e51b2f41..15f54b039c7 100644 --- a/htdocs/langs/el_GR/dict.lang +++ b/htdocs/langs/el_GR/dict.lang @@ -247,10 +247,13 @@ CountryJE=Τζέρσεϊ CountryME=Μαυροβούνιο CountryBL=Άγιος Βαρθολομαίος CountryMF=Άγιος Μαρτίνος +CountryXK=Κοσσυφοπέδιο ##### Civilities ##### CivilityMME=Κυρία +CivilityMMEShort=Κυρία CivilityMR=Κύριος +CivilityMRShort=Κύριος CivilityMLE=Δεσποινίς CivilityMTRE=Master CivilityDR=Δόκτορας @@ -332,28 +335,28 @@ PaperFormatCAP6=Format P6 Canada ExpAutoCat=Αυτοκίνητο ExpCycloCat=Μοτοποδήλατο ExpMotoCat=Μοτοσικλέτα -ExpAuto3CV=3 CV -ExpAuto4CV=4 CV -ExpAuto5CV=5 CV -ExpAuto6CV=6 CV -ExpAuto7CV=7 CV -ExpAuto8CV=8 CV -ExpAuto9CV=9 CV -ExpAuto10CV=10 CV -ExpAuto11CV=11 CV -ExpAuto12CV=12 CV -ExpAuto3PCV=3 CV και περισσότερο -ExpAuto4PCV=4 CV και περισσότερο -ExpAuto5PCV=5 CV και περισσότερο -ExpAuto6PCV=6 CV και περισσότερο -ExpAuto7PCV=7 CV και πολλά άλλα -ExpAuto8PCV=8 CV και περισσότερο -ExpAuto9PCV=9 CV και περισσότερο -ExpAuto10PCV=10 CV και περισσότερο -ExpAuto11PCV=11 CV και περισσότερο -ExpAuto12PCV=12 CV και περισσότερα -ExpAuto13PCV=13 CV και περισσότερο +ExpAuto3CV=3 Ίππων +ExpAuto4CV=4 Ίππων +ExpAuto5CV=5 Ίππων +ExpAuto6CV=6 Ίππων +ExpAuto7CV=7 Ίππων +ExpAuto8CV=8 Ίππων +ExpAuto9CV=9 Ίππων +ExpAuto10CV=10 Ίππων +ExpAuto11CV=11 Ίππων +ExpAuto12CV=12 Ίππων +ExpAuto3PCV=3 Ίππων και περισσότερο +ExpAuto4PCV=4 Ίππων και περισσότερο +ExpAuto5PCV=5 Ίππων και περισσότερο +ExpAuto6PCV=6 Ίππων και περισσότερο +ExpAuto7PCV=7 Ίππων και περισσότερο +ExpAuto8PCV=8 Ίππων και περισσότερο +ExpAuto9PCV=9 Ίππων και περισσότερο +ExpAuto10PCV=10 Ίππων και περισσότερο +ExpAuto11PCV=11 Ίππων και περισσότερο +ExpAuto12PCV=12 Ίππων και περισσότερο +ExpAuto13PCV=13 Ίππων και περισσότερο ExpCyclo=Χωρητικότητα μικρότερη στα 50cm3 -ExpMoto12CV=Μοτοσικλέτα 1 ή 2 CV -ExpMoto345CV=Μοτοσικλέτα 3, 4 ή 5 CV -ExpMoto5PCV=Μοτοσικλέτα 5 CV και περισσότερο +ExpMoto12CV=Μοτοσικλέτα 1 ή 2 Ίππων +ExpMoto345CV=Μοτοσικλέτα 3, 4 ή 5 Ίππων +ExpMoto5PCV=Μοτοσικλέτα 5 Ίππων και περισσότερο diff --git a/htdocs/langs/el_GR/errors.lang b/htdocs/langs/el_GR/errors.lang index 89f518ceea0..05e04990296 100644 --- a/htdocs/langs/el_GR/errors.lang +++ b/htdocs/langs/el_GR/errors.lang @@ -304,6 +304,11 @@ ErrorValueCantBeNull=Η τιμή για %s δεν μπορεί να ε ErrorDateOfMovementLowerThanDateOfFileTransmission=Η ημερομηνία της τραπεζικής συναλλαγής δεν μπορεί να είναι παλαιότερη από την ημερομηνία αποστολής του αρχείου ErrorTooMuchFileInForm=Πάρα πολλά αρχεία στην φόρμα, ο μέγιστος αριθμός είναι %s αρχεία ErrorSessionInvalidatedAfterPasswordChange=Η συνεδρία ακυρώθηκε μετά από αλλαγή κωδικού πρόσβασης, κατάστασης ή ημερομηνιών εγκυρότητας. Παρακαλώ συνδεθείτε ξανά. +ErrorExistingPermission = Η άδεια %s για το αντικείμενο %s υπάρχει ήδη +ErrorFieldExist=Η τιμή για %s υπάρχει ήδη +ErrorEqualModule=Μη έγκυρη ενότητα στο %s +ErrorFieldValue=Η τιμή για %s είναι λανθασμένη +ErrorCoherenceMenu= %s απαιτείται όταν % ισούται με LEFT # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Η παράμετρος PHP upload_max_filesize (%s) είναι υψηλότερη από την παράμετρο PHP post_max_size (%s). Αυτή δεν είναι μια συνεπής ρύθμιση. @@ -342,6 +347,7 @@ WarningPaypalPaymentNotCompatibleWithStrict=Η τιμή "Αυστηρή" κάν WarningThemeForcedTo=Προειδοποίηση, έχει γίνει επιβολή του θέματος %s από την κρυφή σταθερά MAIN_FORCETEME WarningPagesWillBeDeleted=Προειδοποίηση, αυτό θα διαγράψει επίσης όλες τις υπάρχουσες σελίδες/container του ιστότοπου. Θα πρέπει να εξάγετε τον ιστότοπό σας νωρίτερα, ώστε να έχετε ένα αντίγραφο ασφαλείας για να μπορείτε να τον εισάγετε ξανά αργότερα αν χρειαστει. WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal=Η αυτόματη επικύρωση είναι απενεργοποιημένη όταν η επιλογή μείωσης του αποθέματος έχει οριστεί στην "Επικύρωση τιμολογίου". +WarningModuleNeedRefrech = Η ενότητα %s έχει απενεργοποιηθεί. Μην ξεχάσετε να την ενεργοποιήσετε # Validate RequireValidValue = Η τιμή δεν είναι έγκυρη diff --git a/htdocs/langs/el_GR/install.lang b/htdocs/langs/el_GR/install.lang index 4e1ea55486c..031c711835a 100644 --- a/htdocs/langs/el_GR/install.lang +++ b/htdocs/langs/el_GR/install.lang @@ -28,6 +28,7 @@ ErrorPHPVersionTooLow=Η έκδοση PHP είναι πολύ παλιά. Απα ErrorPHPVersionTooHigh=Η έκδοση PHP είναι πολύ νέα. Απαιτείται η έκδοση %s ή παλαιοτερη ErrorConnectedButDatabaseNotFound=Η σύνδεση με τον διακομιστή ήταν επιτυχής, αλλά η βάση δεδομένων '%s' δεν βρέθηκε. ErrorDatabaseAlreadyExists=Η βάση δεδομένων '%s' υπάρχει ήδη. +ErrorNoMigrationFilesFoundForParameters=Δεν βρέθηκε αρχείο μετεγκατάστασης για τις επιλεγμένες εκδόσεις IfDatabaseNotExistsGoBackAndUncheckCreate=Εάν η βάση δεδομένων δεν υπάρχει, επιστρέψτε και ελέγξτε την επιλογή "Δημιουργία βάσης δεδομένων". IfDatabaseExistsGoBackAndCheckCreate=Εάν υπάρχει ήδη βάση δεδομένων, επιστρέψτε και καταργήστε την επιλογή "Δημιουργία βάσης δεδομένων". WarningBrowserTooOld=Η έκδοση του προγράμματος περιήγησης είναι πολύ παλιά. Η αναβάθμιση του προγράμματος περιήγησης σε μια πρόσφατη έκδοση των Firefox, Chrome ή Opera συνιστάται ιδιαίτερα. @@ -50,7 +51,6 @@ DatabaseName=Όνομα της βάσης δεδομένων DatabasePrefix=Πρόθεμα πίνακα βάσεων δεδομένων DatabasePrefixDescription=Πρόθεμα πίνακα βάσης δεδομένων. Εάν είναι κενό, η προεπιλογή είναι llx_. AdminLogin=Λογαριασμός χρήστη για τον κάτοχο της βάσης δεδομένων Dolibarr. -PasswordAgain=Πληκτρολογήστε ξανά την επιβεβαίωση κωδικού πρόσβασης AdminPassword=Κωδικός ιδιοκτήτη της βάσης δεδομένων Dolibarr. CreateDatabase=Δημιουργία βάσης δεδομένων CreateUser=Δημιουργήστε λογαριασμό χρήστη ή παραχωρήστε άδεια λογαριασμού χρήστη στη βάση δεδομένων Dolibarr @@ -63,7 +63,7 @@ SaveConfigurationFile=Αποθήκευση παραμέτρων σε ServerConnection=Σύνδεση με το διακομιστή DatabaseCreation=Δημιουργία βάσης δεδομένων CreateDatabaseObjects=Δημιουργία αντικειμένων βάσης δεδομένων -ReferenceDataLoading=Reference data loading +ReferenceDataLoading=Φόρτωση δεδομένων αναφοράς TablesAndPrimaryKeysCreation=Δημιουργία πινάκων και πρωτευόντων κλειδιών CreateTableAndPrimaryKey=Δημιουργία πίνακα %s CreateOtherKeysForTable=Δημιουργήστε ξένα κλειδιά και ευρετήρια για τον πίνακα %s @@ -88,12 +88,12 @@ LoginAlreadyExists=Υπάρχει ήδη DolibarrAdminLogin=Όνομα χρήστη διαχειριστή Dolibarr AdminLoginAlreadyExists=Ο λογαριασμός διαχειριστή Dolibarr " %s " υπάρχει ήδη. Επιστρέψτε αν θέλετε να δημιουργήσετε ένα άλλο. FailedToCreateAdminLogin=Αποτυχία δημιουργίας λογαριασμού διαχειριστή του Dolibarr. -WarningRemoveInstallDir=Προειδοποίηση, για λόγους ασφαλείας, μόλις ολοκληρωθεί η εγκατάσταση ή η αναβάθμιση, θα πρέπει να προσθέσετε ένα αρχείο που ονομάζεται install.lock στον κατάλογο εγγράφων του Dolibarr, προκειμένου να αποτραπεί ξανά η τυχαία/κακόβουλη χρήση των εργαλείων εγκατάστασης. +WarningRemoveInstallDir=Προειδοποίηση, για λόγους ασφαλείας, μόλις ολοκληρωθεί η διαδικασία εγκατάστασης, πρέπει να προσθέσετε ένα αρχείο που ονομάζεται install.lock στον κατάλογο Documents του Dolibarr προκειμένου να αποτραπεί η τυχαία/κακόβουλη χρήση των εργαλείων εγκατάστασης. FunctionNotAvailableInThisPHP=Δεν είναι διαθέσιμη σε αυτήν την PHP ChoosedMigrateScript=Επιλέξτε script μετεγκατάστασης DataMigration=Μετακίνηση βάσης δεδομένων (δεδομένα) DatabaseMigration=Μετακίνηση βάσης δεδομένων (δομή + μερικά δεδομένα) -ProcessMigrateScript=Script processing +ProcessMigrateScript=Η μετεγκατάσταση ειναι σε εξέλιξη ChooseYourSetupMode=Επιλέξτε τη λειτουργία ρύθμισης και κάντε κλικ στο "Έναρξη"... FreshInstall=Νέα εγκατάσταση FreshInstallDesc=Χρησιμοποιήστε αυτήν τη λειτουργία εάν αυτή είναι η πρώτη σας εγκατάσταση. Εάν όχι, αυτή η λειτουργία μπορεί να επιδιορθώσει μια ημιτελή προηγούμενη εγκατάσταση. Εάν θέλετε να αναβαθμίσετε την έκδοσή σας, επιλέξτε τη λειτουργία "Αναβάθμιση". @@ -107,7 +107,7 @@ AlreadyDone=Η μετεγκατάσταση έχει ολοκληρωθεί DatabaseVersion=Έκδοση βάσης δεδομένων ServerVersion=Έκδοση διακομιστή βάσης δεδομένων YouMustCreateItAndAllowServerToWrite=Πρέπει να δημιουργήσετε αυτόν τον κατάλογο και να επιτρέψετε στον διακομιστή web να εγγράψει σε αυτόν. -DBSortingCollation=Character sorting order +DBSortingCollation=Σειρά ταξινόμησης χαρακτήρων YouAskDatabaseCreationSoDolibarrNeedToConnect=Έχετε επιλέξει τη δημιουργία βάσης δεδομένων %s , αλλά για αυτό, το Dolibarr πρέπει να συνδεθεί με τον διακομιστή %s με δικαιώματα υπερχρήστη %s . YouAskLoginCreationSoDolibarrNeedToConnect=Επιλέξατε να δημιουργήσετε τον χρήστη βάσης δεδομένων %s , αλλά για αυτό, το Dolibarr πρέπει να συνδεθεί με τον διακομιστή %s με δικαιώματα υπερχρήστη%s . BecauseConnectionFailedParametersMayBeWrong=Η σύνδεση της βάσης δεδομένων απέτυχε: οι παράμετροι κεντρικού υπολογιστή ή υπερχρήστη πρέπει να είναι λανθασμένες. @@ -125,9 +125,9 @@ OpenBaseDir=Παράμετρος openbasedir PHP YouAskToCreateDatabaseSoRootRequired=Επιλέξατε το πλαίσιο "Δημιουργία βάσης δεδομένων". Για αυτό, πρέπει να δώσετε το όνομα χρήστη/κωδικό πρόσβασης του υπερχρήστη (κάτω μέρος της φόρμας). YouAskToCreateDatabaseUserSoRootRequired=Επιλέξατε το πλαίσιο "Δημιουργία κατόχου βάσης δεδομένων". Για αυτό, πρέπει να δώσετε το όνομα χρήστη/κωδικό πρόσβασης του υπερχρήστη (κάτω μέρος της φόρμας). NextStepMightLastALongTime=Το τρέχον βήμα μπορεί να διαρκέσει αρκετά λεπτά. Περιμένετε μέχρι να εμφανιστεί πλήρως η επόμενη οθόνη πριν συνεχίσετε. -MigrationCustomerOrderShipping=Μετεγκατάσταση της αποστολής για αποθήκευση παραγγελιών πωλήσεων -MigrationShippingDelivery=Upgrade storage of shipping -MigrationShippingDelivery2=Upgrade storage of shipping 2 +MigrationCustomerOrderShipping=Μεταφορά χώρου αποθήκευσης για αποστολή παραγγελιών πωλήσεων +MigrationShippingDelivery=Αναβάθμιση χώρου αποθήκευσης αποστολής +MigrationShippingDelivery2=Αναβάθμιση χώρου αποθήκευσης αποστολής 2 MigrationFinished=Η μετεγκατάσταση ολοκληρώθηκε LastStepDesc= Τελευταίο βήμα : Ορίστε εδώ το όνομα χρήστη και τον κωδικό πρόσβασης που θέλετε να χρησιμοποιήσετε για να συνδεθείτε στο Dolibarr. Μην το χάσετε, καθώς είναι ο κύριος λογαριασμός για τη διαχείριση όλων των άλλων/πρόσθετων λογαριασμών χρηστών. ActivateModule=Ενεργοποίηση ενότητας %s @@ -180,8 +180,8 @@ MigrationReopenedContractsNumber=%s συμβάσεις τροποποιήθηκ MigrationReopeningContractsNothingToUpdate=Δεν υπάρχει κλειστή σύμβαση για άνοιγμα MigrationBankTransfertsUpdate=Ενημέρωση συνδέσμων μεταξύ τραπεζικών εγγραφών και τραπεζικών μεταφορών MigrationBankTransfertsNothingToUpdate=Όλοι οι σύνδεσμοι είναι ενημερωμένοι -MigrationShipmentOrderMatching=Sendings receipt update -MigrationDeliveryOrderMatching=Delivery receipt update +MigrationShipmentOrderMatching=Ενημέρωση αποδείξεων αποστολής +MigrationDeliveryOrderMatching=Ενημέρωση απόδειξης παράδοσης MigrationDeliveryDetail=Ενημέρωση παράδοσης MigrationStockDetail=Ενημέρωση αξίας αποθεμάτων προϊόντων MigrationMenusDetail=Ενημέρωση πινάκων δυναμικών μενού @@ -195,20 +195,25 @@ MigrationCategorieAssociation=Μετακίνηση των κατηγοριών MigrationEvents=Μεταφορά συμβάντων για προσθήκη κατόχου συμβάντος στον πίνακα ανάθεσης MigrationEventsContact=Μετεγκατάσταση συμβάντων για προσθήκη επαφής συμβάντων στον πίνακα ανάθεσης MigrationRemiseEntity=Ενημερώστε την τιμή πεδίου οντότητας για llx_societe_remise -MigrationRemiseExceptEntity=Ενημέρωση φορέα τιμών πεδίου στον πίνακα llx_societe_remise_except +MigrationRemiseExceptEntity=Ενημερώστε την τιμή πεδίου οντότητας για llx_societe_remise_except MigrationUserRightsEntity=Ενημερώστε την τιμή πεδίου οντότητας των llx_user_rights MigrationUserGroupRightsEntity=Ενημερώστε την τιμή πεδίου οντότητας του llx_usergroup_rights -MigrationUserPhotoPath=Μετανάστευση φωτογραφικών διαδρομών για χρήστες -MigrationFieldsSocialNetworks=Μετεγκατάσταση χρηστών πεδίων κοινωνικών δικτύων (%s) +MigrationUserPhotoPath=Μετεγκατάσταση διαδρομών φωτογραφιών για χρήστες +MigrationFieldsSocialNetworks=Μετεγκατάσταση των πεδίων κοινωνικών δικτύων των χρηστών (%s) MigrationReloadModule=Επαναφόρτωση της ενότητας %s MigrationResetBlockedLog=Επαναφορά της ενότητας BlockedLog για τον αλγόριθμο v7 -MigrationImportOrExportProfiles=Μετεγκατάσταση προφίλ εισαγωγής ή εξαγωγής (%s) +MigrationImportOrExportProfiles=Μετεγκατάσταση των προφίλ εισαγωγής ή εξαγωγής (%s) ShowNotAvailableOptions=Εμφάνιση μη διαθέσιμων επιλογών HideNotAvailableOptions=Απόκρυψη μη διαθέσιμων επιλογών ErrorFoundDuringMigration=Αναφέρθηκαν σφάλματα κατά τη διαδικασία μετεγκατάστασης, επομένως το επόμενο βήμα δεν είναι διαθέσιμο. Για να αγνοήσετε τα σφάλματα, μπορείτε να κάντε κλικ εδώ , αλλά η εφαρμογή ή ορισμένες λειτουργίες ενδέχεται να μην λειτουργούν σωστά μέχρι να επιλυθούν τα σφάλματα. -YouTryInstallDisabledByDirLock=Η εφαρμογή προσπάθησε να αυτο-αναβαθμιστεί, αλλά οι σελίδες εγκατάστασης / αναβάθμισης έχουν απενεργοποιηθεί για λόγους ασφαλείας (ο κατάλογος μετονομάζεται σε κατάληξη .lock).
+YouTryInstallDisabledByDirLock=Η εφαρμογή προσπάθησε να κάνει αυτόματη αναβάθμιση, αλλά οι σελίδες εγκατάστασης/αναβάθμισης έχουν απενεργοποιηθεί για λόγους ασφαλείας (ο κατάλογος μετονομάστηκε με επίθημα .lock).
YouTryInstallDisabledByFileLock=Η εφαρμογή προσπάθησε να αυτο-αναβαθμιστεί, αλλά οι σελίδες εγκατάστασης / αναβάθμισης έχουν απενεργοποιηθεί για λόγους ασφαλείας (με την ύπαρξη ενός αρχείου κλειδώματος install.lock στον κατάλογο εγγράφων του dolibarr).
+YouTryUpgradeDisabledByMissingFileUnLock=Η εφαρμογή προσπάθησε να αυτοαναβαθμιστεί, αλλά προς το παρόν δεν επιτρέπεται η διαδικασία αναβάθμισης.
ClickHereToGoToApp=Κάντε κλικ εδώ για να μεταβείτε στην εφαρμογή σας ClickOnLinkOrRemoveManualy=Εάν μια αναβάθμιση βρίσκεται σε εξέλιξη, παρακαλώ περιμένετε. Εάν όχι, κάντε κλικ στον παρακάτω σύνδεσμο. Εάν βλέπετε πάντα την ίδια σελίδα, πρέπει να αφαιρέσετε/μετονομάσετε το αρχείο install.lock στον κατάλογο εγγράφων. +ClickOnLinkOrCreateUnlockFileManualy=Εάν μια αναβάθμιση βρίσκεται σε εξέλιξη, περιμένετε... Εάν όχι, πρέπει να δημιουργήσετε ένα αρχείο upgrade.unlock στον κατάλογο Documents του Dolibarr. Loaded=Φορτωμένο FunctionTest=Δοκιμή λειτουργίας +NodoUpgradeAfterDB=Δεν απαιτείται κάποια ενέργεια από εξωτερικές ενότητες μετά την αναβάθμιση της βάσης δεδομένων +NodoUpgradeAfterFiles=Δεν απαιτείται κάποια ενέργεια από εξωτερικές ενότητες μετά την αναβάθμιση αρχείων ή καταλόγων +MigrationContractLineRank=Αλλαγή γραμμής συμβολαίου με χρήση της κατάταξης (και ενεργοποίηση της αναδιάταξης) diff --git a/htdocs/langs/el_GR/main.lang b/htdocs/langs/el_GR/main.lang index 18f1f56ae44..6446882d08e 100644 --- a/htdocs/langs/el_GR/main.lang +++ b/htdocs/langs/el_GR/main.lang @@ -923,6 +923,7 @@ NotAllExportedMovementsCouldBeRecordedAsExported=Δεν ήταν δυνατή η Miscellaneous=Διάφορα Calendar=Ημερολόγιο GroupBy=Ομαδοποίηση κατά... +GroupByX=Ομαδοποίηση κατά %s ViewFlatList=Προβολή λίστας ViewAccountList=Προβολή καθολικού ViewSubAccountList=Προβολή καθολικού δευτερεύοντος λογαριασμού @@ -1222,3 +1223,5 @@ AddToContacts=Προσθήκη διεύθυνσης στις επαφές μου LastAccess=Τελευταία πρόσβαση UploadAnImageToSeeAPhotoHere=Ανεβάστε μια εικόνα από την καρτέλα %s για να δείτε μια φωτογραφία εδώ LastPasswordChangeDate=Ημερομηνία τελευταίας αλλαγής κωδικού πρόσβασης +PublicVirtualCardUrl=Σελίδα εικονικής επαγγελματικής κάρτας +TreeView=Tree view diff --git a/htdocs/langs/el_GR/members.lang b/htdocs/langs/el_GR/members.lang index 1884393ae06..a710eed77ef 100644 --- a/htdocs/langs/el_GR/members.lang +++ b/htdocs/langs/el_GR/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=Στατιστικά στοιχεία συνδρομών NbOfSubscriptions=Αριθμός συνδρομών AmountOfSubscriptions=Ποσό που εισπράχθηκε από συνδρομές TurnoverOrBudget=Κύκλος εργασιών (για εταιρεία) ή προϋπολογισμός (για ίδρυμα) -DefaultAmount=Προκαθορισμένο ποσό συνδρομών +DefaultAmount=Προεπιλεγμένο ποσό συνδρομής (χρησιμοποιείται μόνο εάν δεν έχει καθοριστεί ποσό σε επίπεδο τύπου μέλους) +MinimumAmount=Ελάχιστο ποσό (χρησιμοποιείται μόνο όταν το ποσό συνδρομής είναι ελεύθερο) CanEditAmount=Το ποσό της συνδρομής είναι της δίκης σας επιλογής CanEditAmountDetail=Ο επισκέπτης μπορεί να επιλέξει/επεξεργαστεί το ποσό της συνεισφοράς του ανεξάρτητα από τον τύπο μέλους AmountIsLowerToMinimumNotice=Επί συνολικού οφειλόμενου των %s diff --git a/htdocs/langs/el_GR/modulebuilder.lang b/htdocs/langs/el_GR/modulebuilder.lang index 5663900d9fa..12d2db20cb2 100644 --- a/htdocs/langs/el_GR/modulebuilder.lang +++ b/htdocs/langs/el_GR/modulebuilder.lang @@ -1,7 +1,8 @@ # Dolibarr language file - Source file is en_US - loan +IdModule= Αναγνωριστικό ενότητας ModuleBuilderDesc=Αυτό το εργαλείο πρέπει να χρησιμοποιείται μόνο από έμπειρους χρήστες ή προγραμματιστές. Παρέχει βοηθητικά προγράμματα για να δημιουργήσετε ή να επεξεργαστείτε τη δική σας ενότητα. Η τεκμηρίωση για εναλλακτικό τρόπο ανάπτυξης είναι εδώ . EnterNameOfModuleDesc=Εισάγετε το όνομα της ενότητας/εφαρμογής που θέλετε να δημιουργήσετε χωρίς κενά. Χρησιμοποιήστε κεφαλαία για να διαχωρίσετε λέξεις (Για παράδειγμα: MyModule, EcommerceForShop, SyncWithMySystem...) -EnterNameOfObjectDesc=Εισάγετε το όνομα του αντικειμένου που θέλετε να δημιουργήσετε χωρίς κενά. Χρησιμοποιήστε κεφαλαία για να διαχωρίσετε λέξεις (Για παράδειγμα: MyObject, Student, Teacher...). Θα δημιουργηθούν, το αρχείο κλάσης CRUD αλλά και το αρχείο API, οι σελίδες για λίστα/προσθήκη/επεξεργασία/διαγραφή αντικειμένου και αρχεία SQL. +EnterNameOfObjectDesc=Εισάγετε το όνομα του αντικειμένου που θέλετε να δημιουργήσετε χωρίς κενά. Χρησιμοποιήστε κεφαλαία για να διαχωρίσετε λέξεις (Για παράδειγμα: MyObject, Student, Teacher...). Θα δημιουργηθούν, το αρχείο κλάσης CRUD, οι σελίδες για λίστα/προσθήκη/επεξεργασία/διαγραφή αντικειμένου και αρχεία SQL. EnterNameOfDictionaryDesc=Εισάγετε το όνομα του λεξικού που θέλετε να δημιουργήσετε χωρίς κενά. Χρησιμοποιήστε κεφαλαία για να διαχωρίσετε λέξεις (Για παράδειγμα: MyDico...). Θα δημιουργηθεί το αρχείο κλάσης, αλλά και το αρχείο SQL. ModuleBuilderDesc2=Διαδρομή όπου δημιουργούνται/επεξεργάζονται οι ενότητες (πρώτος κατάλογος για εξωτερικές ενότητες που ορίζεται σε %s): %s ModuleBuilderDesc3=Βρέθηκαν δημιουργημένες/επεξεργάσιμες ενότητες: %s @@ -9,6 +10,7 @@ ModuleBuilderDesc4=Μια ενότητα ανιχνεύεται ως "επεξε NewModule=Νέα ενότητα NewObjectInModulebuilder=Νέο αντικείμενο NewDictionary=Νέο λεξικό +ModuleName=Όνομα ενότητας ModuleKey=κλειδί ενότητας ObjectKey=Κλειδί αντικειμένου DicKey=Κλειδί λεξικού @@ -48,11 +50,14 @@ PathToModulePackage=Διαδρομή προς το αρχείο zip του πα PathToModuleDocumentation=Διαδρομή προς το αρχείο τεκμηρίωσης ενότητας/εφαρμογής (%s) SpaceOrSpecialCharAreNotAllowed=Δεν επιτρέπονται κενά(space) ή ειδικοί χαρακτήρες. FileNotYetGenerated=Το αρχείο δεν έχει δημιουργηθεί ακόμη +GenerateCode=Δημιουργία κώδικα RegenerateClassAndSql=Αναγκαστική ενημέρωση των αρχείων .class και .sql RegenerateMissingFiles=Δημιουργία αρχείων που λείπουν SpecificationFile=Αρχείο τεκμηρίωσης LanguageFile=Αρχείο γλώσσας ObjectProperties=Ιδιότητες αντικειμένου +Property=Ιδιότητα +PropertyDesc=Μια ιδιότητα είναι ένα χαρακτηριστικό ενός αντικείμενου. Αυτό το χαρακτηριστικό έχει έναν κωδικό, μια ετικέτα και έναν τύπο με πολλές επιλογές. ConfirmDeleteProperty=Είστε σίγουροι ότι θέλετε να διαγράψετε την ιδιότητα %s; Αυτό θα αλλάξει τον κώδικα στην κλαση PHP αλλά και θα αφαιρέσει τη στήλη από τον πίνακα ορισμού του αντικειμένου. NotNull=Not NULL NotNullDesc=1=Ορίστε τη βάση δεδομένων σε NOT NULL, 0=Να επιτρέπονται null τιμές, -1=Να επιτρέπονται null τιμές επιβάλλοντας την τιμή σε NULL εάν είναι κενή ('' ή 0) @@ -81,15 +86,16 @@ IsAMeasure=Είναι ένα μέτρο DirScanned=Ο κατάλογος σαρώθηκε NoTrigger=Χωρίς trigger NoWidget=Χωρίς γραφικό στοιχείο -GoToApiExplorer=API explorer +ApiExplorer=API explorer ListOfMenusEntries=Λίστα καταχωρήσεων μενού ListOfDictionariesEntries=Λίστα καταχωρήσεων λεξικών ListOfPermissionsDefined=Λίστα καθορισμένων δικαιωμάτων SeeExamples=Δείτε παραδείγματα εδώ -EnabledDesc=Προϋπόθεση να είναι ενεργό αυτό το πεδίο (Παραδείγματα: 1 ή $conf->global->MYMODULE_MYOPTION) -VisibleDesc=Είναι ορατό το πεδίο; (Παραδείγματα: 0=Ποτέ δεν είναι ορατό, 1=Ορατό στη λίστα και δημιουργία/ενημέρωση/προβολή φορμών, 2=Ορατό μόνο στη λίστα, 3=Ορατό μόνο στη φόρμα δημιουργίας/ενημέρωσης/προβολής (όχι στη λίστα), 4=Ορατό στη λίστα και ενημέρωση/προβολή μόνο φόρμας (όχι δημιουργία), 5=Ορατό μόνο στη φόρμα προβολής και λίστας (όχι δημιουργία, όχι ενημέρωση).

Η χρήση αρνητικής τιμής σημαίνει ότι το πεδίο δεν εμφανίζεται από προεπιλογή στη λίστα, αλλά μπορεί να επιλεγεί για προβολή).

Μπορεί να είναι μια έκφραση, για παράδειγμα:
preg_match('/public/', $_SERVER['PHP_SELF'])?0:1
($user->rights->holiday->define_holiday ? 1 : 0) -DisplayOnPdfDesc=Εμφανίστε αυτό το πεδίο σε συμβατά έγγραφα PDF, μπορείτε να διαχειριστείτε τη θέση με το πεδίο "Position".
Επί του παρόντος, γνωστά μοντέλα συμβατών PDF είναι: eratosthene (παραγγελίες), espadon (αποστολές), sponge (τιμολόγια), cyan (προσφορές), cornas (παραγγελίες προμηθευτή)

Για έγγραφα:
0 = δεν εμφανίζονται
1 = εμφανίζονται
2 = εμφανίζονται μόνο αν δεν είναι κενά

Για τις γραμμές εγγράφου:
0 = δεν εμφανίζονται
1 = εμφανίζονται σε μια στήλη
3 = εμφανιζονται στη στήλη περιγραφής της γραμμής μετά την περιγραφή
4 = εμφανίζονται στη στήλη περιγραφής μετά την περιγραφή μόνο αν δεν είναι κενή -DisplayOnPdf=Εμφάνιση σε PDF +EnabledDesc=Προϋπόθεση για να είναι ενεργό αυτό το πεδίο.

Παραδείγματα:
1
isModEnabled('MAIN_MODULE_MYMODULE')
getDolGlobalString('MYMODULE_OPTION')==2 +VisibleDesc=Είναι ορατό το πεδίο; (Παραδείγματα: 0=Ποτέ δεν είναι ορατό, 1=Ορατό στη λίστα και δημιουργία/ενημέρωση/προβολή φόρμας, 2=Ορατό μόνο στη λίστα, 3=Ορατό μόνο στη δημιουργία/ενημέρωση/προβολή φόρμας (όχι στη λίστα), 4=Ορατό στη λίστα και μόνο στην ενημέρωση/προβολή φόρμας (όχι δημιουργία), 5=Ορατό μόνο στη λίστα και προβολή φόρμας (όχι δημιουργία, όχι ενημέρωση).

Η χρήση αρνητικής τιμής σημαίνει ότι το πεδίο δεν εμφανίζεται από προεπιλογή στη λίστα, αλλά μπορεί να επιλεγεί για προβολή). +ItCanBeAnExpression=Μπορεί να είναι μια έκφραση. Παράδειγμα:
preg_match('/public/', $_SERVER['PHP_SELF'])?0:1
$user->hasRight('holiday', 'define_holiday')?1:5 +DisplayOnPdfDesc=Εμφάνιση αυτού του πεδίου σε συμβατά έγγραφα PDF, μπορείτε να διαχειριστείτε τη θέση με το πεδίο "Position".
Για έγγραφο :
0 = δεν εμφανίζεται
1 = εμφάνιση
2 = εμφάνιση μόνο όταν δεν ειναι κενό

Για γραμμές εγγράφων :
0 = δεν εμφανίζεται
1 = εμφάνιση σε στήλη
3 = εμφάνιση σε στήλη γραμμής περιγραφής μετά από την περιγραφή
4 = εμφάνιση στη στήλη περιγραφής μετά την περιγραφή μόνο εάν δεν είναι κενή +DisplayOnPdf=Σε PDF IsAMeasureDesc=Μπορεί η τιμή του πεδίου να αθροιστεί για να πάρει ένα σύνολο σε λίστα; (Παραδείγματα: 1 ή 0) SearchAllDesc=Χρησιμοποιείται το πεδίο για την αναζήτηση από το εργαλείο γρήγορης αναζήτησης; (Παραδείγματα: 1 ή 0) SpecDefDesc=Εισάγετε εδώ όλη την τεκμηρίωση που θέλετε να παράσχετε με την ενότητα σας, η οποία δεν έχει ήδη καθοριστεί από άλλες καρτέλες. Μπορείτε να χρησιμοποιήσετε το .md ή καλύτερα, την πλούσια σύνταξη .asciidoc. @@ -119,7 +125,7 @@ UseSpecificReadme=Χρησιμοποιήστε ένα συγκεκριμένο R ContentOfREADMECustomized=Σημείωση: Το περιεχόμενο του αρχείου README.md έχει αντικατασταθεί από συγκεκριμένη τιμή που έχει οριστεί στη ρύθμιση του ModuleBuilder. RealPathOfModule=Πραγματική διαδρομή της ενότητας ContentCantBeEmpty=Το περιεχόμενο του αρχείου δεν μπορεί να είναι άδειο -WidgetDesc=Μπορείτε να δημιουργήσετε και να επεξεργαστείτε εδώ τα γραφικά στοιχεία(widgets) που θα ενσωματωθούν με τη μονάδα σας. +WidgetDesc=Μπορείτε να δημιουργήσετε και να επεξεργαστείτε εδώ τα γραφικά στοιχεία(widgets) που θα ενσωματωθούν με τη ενότητα σας. CSSDesc=Μπορείτε να δημιουργήσετε και να επεξεργαστείτε εδώ ένα αρχείο με εξατομικευμένο CSS ενσωματωμένο στην ενότητα σας. JSDesc=Μπορείτε να δημιουργήσετε και να επεξεργαστείτε εδώ ένα αρχείο με Javascript ενσωματωμένο με την ενότητα σας. CLIDesc=Μπορείτε να δημιουργήσετε εδώ ορισμένα scripts γραμμής εντολών που θέλετε να παρέχετε με την ενότητα σας. @@ -130,27 +136,40 @@ UseSpecificEditorURL = Χρησιμοποιήστε μια συγκεκριμέ UseSpecificFamily = Χρησιμοποιήστε μια συγκεκριμένη κατηγορία UseSpecificAuthor = Χρησιμοποιήστε έναν συγκεκριμένο συντάκτη UseSpecificVersion = Χρησιμοποιήστε μια συγκεκριμένη αρχική έκδοση -IncludeRefGeneration=Η αναφορά του αντικειμένου πρέπει να δημιουργείται αυτόματα από προσαρμοσμένους κανόνες αρίθμησης +IncludeRefGeneration=Η αναφορά αυτού του αντικειμένου πρέπει να δημιουργείται αυτόματα από προσαρμοσμένους κανόνες αρίθμησης IncludeRefGenerationHelp=Επιλέξτε αυτό εάν θέλετε να συμπεριλάβετε κώδικα για τη διαχείριση της αυτόματης δημιουργίας αναφοράς χρησιμοποιώντας προσαρμοσμένους κανόνες αρίθμησης -IncludeDocGeneration=Θέλω να δημιουργήσω ορισμένα έγγραφα από πρότυπα για το αντικείμενο +IncludeDocGeneration=Θέλω την δυνατότητα να δημιουργεί ορισμένα έγγραφα (PDF, ODT) από πρότυπα για αυτό το αντικείμενο IncludeDocGenerationHelp=Εάν το επιλέξετε, θα δημιουργηθεί κάποιος κώδικας για να προσθέσετε ένα πλαίσιο "Δημιουργία εγγράφου" στην εγγραφή. -ShowOnCombobox=Εμφάνιση τιμής στο combobox +ShowOnCombobox=Εμφάνιση τιμής σε σύνθετα πλαίσια KeyForTooltip=Κλειδί αναδυόμενου πλαισίου επεξήγησης(tooltip) CSSClass=CSS για επεξεργασία/δημιουργία φόρμας CSSViewClass=CSS για φόρμα ανάγνωσης CSSListClass=CSS για λίστα NotEditable=Μη επεξεργάσιμο ForeignKey=Ξένο κλειδί -TypeOfFieldsHelp=Τύπος πεδίων:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]]
'1' σημαίνει ότι προσθέτουμε ένα κουμπί + μετά τον συνδυασμό για να δημιουργήσουμε την εγγραφή
'φίλτρο' είναι μια συνθήκη sql, για παράδειγμα:'status=1 AND fk_user=__USER_ID__ AND entity IN (__SHARED_ENTITIES__)' +ForeignKeyDesc=Εάν η τιμή αυτού του πεδίου πρέπει οπωσδήποτε να υπάρχει σε ένα άλλον πίνακα. Εισαγάγετε εδώ μια σύνταξη που αντιστοιχεί στην τιμή: tablename.parentfieldtocheck +TypeOfFieldsHelp=Παράδειγμα:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]]
'1'' σημαίνει ότι προσθέτουμε ένα κουμπί + μετά το σύνθετο πλαίσιο για να δημιουργήσουμε την εγγραφή
'filter' is a sql condition, παράδειγμα: 'status=1 AND fk_user=__USER_ID__ AND entity IN (__SHARED_ENTITIES__)' +TypeOfFieldsHelpIntro=Αυτός είναι ο τύπος του πεδίου/χαρακτηριστικού. AsciiToHtmlConverter=Μεταροπέας από Ascii σε HTML AsciiToPdfConverter=Μεταροπέας από Ascii σε PDF TableNotEmptyDropCanceled=Ο πίνακας δεν είναι άδειος. Η διαγραφή ακυρώθηκε. ModuleBuilderNotAllowed=Το εργαλείο δημιουργίας ενοτήτων(module builder) είναι διαθέσιμο αλλά δεν επιτρέπεται στον χρήστη σας. ImportExportProfiles=Προφίλ εισαγωγής και εξαγωγής -ValidateModBuilderDesc=Ορίστε το σε 1 εάν θέλετε να καλείται η μέθοδος $this->validateField() του αντικειμένου για την επικύρωση του περιεχομένου του πεδίου κατά την εισαγωγή ή την ενημέρωση. Ορίστε σε 0 εάν δεν απαιτείται επικύρωση. +ValidateModBuilderDesc=Ορίστε το σε 1 εάν θέλετε να καλείται η μέθοδος του αντικειμένου $this->validateField() για την επικύρωση του περιεχομένου του πεδίου κατά την εισαγωγή ή την ενημέρωση. Ορίστε σε 0 εάν δεν απαιτείται επικύρωση. WarningDatabaseIsNotUpdated=Προειδοποίηση: Η βάση δεδομένων δεν ενημερώνεται αυτόματα, πρέπει να διαγράψετε τους πίνακες και να απενεργοποιήσετε-ενεργοποιήσετε την ενότητα για την αναδημιουργία πινάκων LinkToParentMenu=Γονικό μενού (fk_xxxxmenu) ListOfTabsEntries=Λίστα καταχωρήσεων καρτελών TabsDefDesc=Ορίστε εδώ τις καρτέλες που παρέχονται από την ενότητα σας TabsDefDescTooltip=Οι καρτέλες που παρέχονται από την ενότητα/εφαρμογή σας ορίζονται στον πίνακα $this->tabs στο αρχείο περιγραφής της ενότητας. Μπορείτε να επεξεργαστείτε μη αυτόματα αυτό το αρχείο ή να χρησιμοποιήσετε τον ενσωματωμένο επεξεργαστή. BadValueForType=Λάθος τιμή για τον τύπο %s +DefinePropertiesFromExistingTable=Ορίστε ιδιότητες από έναν υπάρχοντα πίνακα +DefinePropertiesFromExistingTableDesc=Εάν υπάρχει ήδη ένας πίνακας στη βάση δεδομένων (για τη δημιουργία του αντικειμένου), μπορείτε να τον χρησιμοποιήσετε για να ορίσετε τις ιδιότητες του αντικειμένου. +DefinePropertiesFromExistingTableDesc2=Διατηρήστε το κενό εάν ο πίνακας δεν υπάρχει ακόμα. Ο code generator θα χρησιμοποιήσει διαφορετικά είδη πεδίων για να δημιουργήσει ένα παράδειγμα πίνακα που μπορείτε να επεξεργαστείτε αργότερα. +GeneratePermissions=Θέλω να προσθέσω δικαιώματα για αυτό το αντικείμενο +GeneratePermissionsHelp=δημιουργία προεπιλεγμένων δικαιωμάτων για αυτό το αντικείμενο +PermissionDeletedSuccesfuly=Η άδεια καταργήθηκε με επιτυχία +PermissionUpdatedSuccesfuly=Η άδεια ενημερώθηκε με επιτυχία +PermissionAddedSuccesfuly=Η άδεια προστέθηκε με επιτυχία +MenuDeletedSuccessfuly=Το μενού διαγράφηκε επιτυχώς +MenuAddedSuccessfuly=Το μενού προστέθηκε με επιτυχία +MenuUpdatedSuccessfuly=Το μενού ενημερώθηκε με επιτυχία diff --git a/htdocs/langs/el_GR/oauth.lang b/htdocs/langs/el_GR/oauth.lang index 885656a347e..d71231a6d60 100644 --- a/htdocs/langs/el_GR/oauth.lang +++ b/htdocs/langs/el_GR/oauth.lang @@ -9,6 +9,7 @@ HasAccessToken=Ένα token πρόσβασης δημιουργήθηκε και NewTokenStored=Το token αποθηκεύτηκε ToCheckDeleteTokenOnProvider=Πατήστε εδώ για να ελέγξετε/διαγράψετε την εξουσιοδότηση που έχει αποθηκευτεί από %s πάροχο ανοιχτού πρωτοκόλλου εξουσιοδότησης OAuth TokenDeleted=Το token διαγράφηκε +GetAccess=Κάντε κλικ εδώ για να λάβετε ένα token RequestAccess=Κάντε κλικ εδώ για να ζητήσετε/ανανεώσετε την πρόσβαση και να λάβετε ένα νέο token DeleteAccess=Κάντε κλικ εδώ για να διαγράψετε το token UseTheFollowingUrlAsRedirectURI=Χρησιμοποιήστε την ακόλουθη διεύθυνση URL ως URI ανακατεύθυνσης κατά τη δημιουργία των διαπιστευτηρίων σας με τον παροχέα υπηρεσιών OAuth: @@ -30,7 +31,11 @@ OAUTH_GITHUB_SECRET=GitHub OAuth Secret OAUTH_URL_FOR_CREDENTIAL=Μεταβείτε σε αυτή τη σελίδα για να δημιουργήσετε ή να λάβετε το αναγνωριστικό και το Secret OAuth OAUTH_STRIPE_TEST_NAME=Δοκιμή OAuth Stripe OAUTH_STRIPE_LIVE_NAME=OAuth Stripe -OAUTH_ID=Αναγνωριστικό OAuth +OAUTH_ID=OAuth Client ID OAUTH_SECRET=Secret OAuth +OAUTH_TENANT=OAuth tenant OAuthProviderAdded=Προστέθηκε πάροχος OAuth AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Υπάρχει ήδη μια καταχώριση για αυτόν τον πάροχο και την ετικέτα OAuth  +URLOfServiceForAuthorization=URL που παρέχεται από την υπηρεσία OAuth για έλεγχο ταυτότητας +Scopes=Άδειες (Πεδίο εφαρμογής) +ScopeUndefined=Άδειες (Πεδίο εφαρμογής) ακαθόριστα (δείτε προηγούμενη καρτέλα) diff --git a/htdocs/langs/el_GR/receptions.lang b/htdocs/langs/el_GR/receptions.lang index b844a24afb2..5f0199a5170 100644 --- a/htdocs/langs/el_GR/receptions.lang +++ b/htdocs/langs/el_GR/receptions.lang @@ -31,7 +31,7 @@ StatusReceptionProcessed=Διενεργήθηκε StatusReceptionDraftShort=Προσχέδιο StatusReceptionValidatedShort=Επικυρώθηκε StatusReceptionProcessedShort=Διενεργήθηκε -ReceptionSheet=Κατάσταση παραλαβής +ReceptionSheet=Δελτίο παραλαβής ValidateReception=Επικύρωση παραλαβής ConfirmDeleteReception=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή την παραλαβή; ConfirmValidateReception=Είστε σίγουροι ότι θέλετε να επικυρώσετε αυτή την παραλαβή με αναφορά %s ; diff --git a/htdocs/langs/el_GR/sendings.lang b/htdocs/langs/el_GR/sendings.lang index df8e0a2746d..033f3f3c63c 100644 --- a/htdocs/langs/el_GR/sendings.lang +++ b/htdocs/langs/el_GR/sendings.lang @@ -37,19 +37,19 @@ StatusSendingProcessed=Σε εξέλιξη StatusSendingDraftShort=Προσχέδιο StatusSendingValidatedShort=Επικυρωμένη StatusSendingProcessedShort=Σε εξέλιξη -SendingSheet=Φύλλο αποστολής +SendingSheet=Δελτίο αποστολής ConfirmDeleteSending=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτήν την αποστολή; ConfirmValidateSending=Είστε σίγουροι ότι θέλετε να επικυρώσετε αυτήν την αποστολή με αναφορά %s ? ConfirmCancelSending=Είστε σίγουροι ότι θέλετε να ακυρώσετε αυτήν την αποστολή; -DocumentModelMerou=Μοντέλο Mérou A5 +DocumentModelMerou=Υπόδειγμα Mérou A5 WarningNoQtyLeftToSend=Προειδοποίηση, κανένα προϊόν δεν ειναι σε αναμονή για αποστολή. StatsOnShipmentsOnlyValidated=Τα στατιστικά αφορούν μόνο επικυρωμένες αποστολές. Η ημερομηνία που χρησιμοποιείται είναι η ημερομηνία επικύρωσης της αποστολής (η προγραμματισμένη ημερομηνία παράδοσης δεν είναι πάντα γνωστή) DateDeliveryPlanned=Προγραμματισμένη ημερομηνία παράδοσης -RefDeliveryReceipt=Παραλαβή παράδοσης αναφοράς -StatusReceipt=Κατάσταση παραλαβής κατάστασης -DateReceived=Παράδοση Ημερομηνία παραλαβής +RefDeliveryReceipt=Αναφορά παράδοσης παραλαβής +StatusReceipt=Κατάσταση παράδοσης παραλαβής +DateReceived=Ημερομηνία παραλαβής παράδοσης ClassifyReception=Ταξινόμηση παραλαβής -SendShippingByEMail=Αποστολή αποστολής μέσω ηλεκτρονικού ταχυδρομείου +SendShippingByEMail=Αποστολή "αποστολής" με email SendShippingRef=Υποβολή της αποστολής %s ActionsOnShipping=Ενέργειες κατά την αποστολή LinkToTrackYourPackage=Σύνδεσμος για να παρακολουθείτε το πακέτο σας @@ -66,7 +66,7 @@ ValidateOrderFirstBeforeShipment=Θα πρέπει πρώτα να επικυρ # Sending methods # ModelDocument DocumentModelTyphon=Πληρέστερο πρότυπο έγγραφο για αποδεικτικά παράδοσης (logo. ..) -DocumentModelStorm=Πληρέστερο πρότυπο έγγραφο για αποδεικτικά παράδοσης και συμβατότητα με επιπλέον πεδία (λογότυπο...) +DocumentModelStorm=Πληρέστερο υπόδειγμα εγγράφου για αποδεικτικά παράδοσης και συμβατότητα με επιπλέον πεδία (λογότυπο...) Error_EXPEDITION_ADDON_NUMBER_NotDefined=Η σταθερά EXPEDITION_ADDON_NUMBER δεν έχει οριστεί SumOfProductVolumes=Άθροισμα όγκου του προϊόντος SumOfProductWeights=Άθροισμα βάρους προϊόντων diff --git a/htdocs/langs/el_GR/users.lang b/htdocs/langs/el_GR/users.lang index ef21d43871c..c3e1da3352c 100644 --- a/htdocs/langs/el_GR/users.lang +++ b/htdocs/langs/el_GR/users.lang @@ -132,4 +132,3 @@ ShowAllPerms=Εμφάνιση όλων των γραμμών δικαιωμάτ HideAllPerms=Απόκρυψη όλων των γραμμών δικαιωμάτων UserPublicPageDesc=Μπορείτε να ενεργοποιήσετε μια εικονική κάρτα για αυτόν τον χρήστη. Ένα url με το προφίλ χρήστη και έναν γραμμωτό κώδικα θα είναι διαθέσιμο για να επιτρέπεται σε οποιονδήποτε διαθέτει smartphone να το σαρώσει και να προσθέσει την επαφή σας στο βιβλίο διευθύνσεών του. EnablePublicVirtualCard=Ενεργοποιήστε τη δημόσια εικονική κάρτα χρήστη -PublicVirtualCardUrl=Δημόσια εικονική κάρτα χρήστη diff --git a/htdocs/langs/en_AE/admin.lang b/htdocs/langs/en_AE/admin.lang index c5ab56cb8d8..4117e853156 100644 --- a/htdocs/langs/en_AE/admin.lang +++ b/htdocs/langs/en_AE/admin.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - admin OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/en_AE/install.lang b/htdocs/langs/en_AE/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/en_AE/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/en_AU/admin.lang b/htdocs/langs/en_AU/admin.lang index 45e2f6bfbf4..db58c22f4ab 100644 --- a/htdocs/langs/en_AU/admin.lang +++ b/htdocs/langs/en_AU/admin.lang @@ -5,6 +5,5 @@ DictionaryVAT=GST Rates or Sales Tax Rates OptionVatMode=GST due LinkColor=Colour of links OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/en_AU/install.lang b/htdocs/langs/en_AU/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/en_AU/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/en_CA/admin.lang b/htdocs/langs/en_CA/admin.lang index 591cd054d85..049606832a2 100644 --- a/htdocs/langs/en_CA/admin.lang +++ b/htdocs/langs/en_CA/admin.lang @@ -4,6 +4,5 @@ CompanyZip=Postal code LDAPFieldZip=Postal code FormatZip=Postal code OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/en_CA/install.lang b/htdocs/langs/en_CA/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/en_CA/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/en_GB/admin.lang b/htdocs/langs/en_GB/admin.lang index f61f52381f7..cc479cead7d 100644 --- a/htdocs/langs/en_GB/admin.lang +++ b/htdocs/langs/en_GB/admin.lang @@ -45,5 +45,3 @@ CompanyZip=Postcode LDAPFieldZip=Postcode GenbarcodeLocation=Barcode generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode FormatZip=Postcode -OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a company name from email subject into a temporary variable:
tmp_var=EXTRACT:SUBJECT:Message from company ([^\n]*)

Examples to set the properties of an object to create:
objproperty1=SET:a hard coded value
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (value is set only if property is not already defined)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
diff --git a/htdocs/langs/en_GB/install.lang b/htdocs/langs/en_GB/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/en_GB/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/en_IN/admin.lang b/htdocs/langs/en_IN/admin.lang index 52838fa3e3a..ba8622ddede 100644 --- a/htdocs/langs/en_IN/admin.lang +++ b/htdocs/langs/en_IN/admin.lang @@ -15,6 +15,5 @@ FreeLegalTextOnProposal=Free text on quotations WatermarkOnDraftProposal=Watermark on draft quotations (none if empty) MailToSendProposal=Customer quotations OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/en_SG/admin.lang b/htdocs/langs/en_SG/admin.lang index c5ab56cb8d8..4117e853156 100644 --- a/htdocs/langs/en_SG/admin.lang +++ b/htdocs/langs/en_SG/admin.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - admin OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/en_SG/install.lang b/htdocs/langs/en_SG/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/en_SG/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index f20065556bf..e986fbc2599 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -645,6 +645,8 @@ Module2300Name=Scheduled jobs Module2300Desc=Scheduled jobs management (alias cron or chrono table) Module2400Name=Events/Agenda Module2400Desc=Track events. Log automatic events for tracking purposes or record manual events or meetings. This is the principal module for good Customer or Vendor Relationship Management. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. 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) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind conversions capabilities Module3200Name=Unalterable Archives Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. +Module3300Name=Module Builder +Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. Module3400Name=Social Networks Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...). Module4000Name=HRM @@ -703,7 +707,7 @@ Module63000Desc=Manage resources (printers, cars, rooms, ...) for allocating to Module66000Name=Enable OAuth2 authentication Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Receptions -Permission11=Read customer invoices +Permission11=Read customer invoices (and payments) Permission12=Create/modify customer invoices Permission13=Invalidate customer invoices Permission14=Validate customer invoices @@ -945,7 +949,7 @@ Permission1190=Approve (second approval) purchase orders Permission1191=Export supplier orders and their attributes Permission1201=Get result of an export Permission1202=Create/Modify an export -Permission1231=Read vendor invoices +Permission1231=Read vendor invoices (and payments) Permission1232=Create/modify vendor invoices Permission1233=Validate vendor invoices Permission1234=Delete vendor invoices @@ -1232,7 +1236,7 @@ SetupDescription4=%s -> %s

This software is a suite of m SetupDescription5=Other Setup menu entries manage optional parameters. SetupDescriptionLink=%s - %s SetupDescription3b=Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Security events that are audited NoSecurityEventsAreAduited=No security events are audited. You can enable them from menu %s Audit=Security events @@ -1272,6 +1276,7 @@ TriggerActiveAsModuleActive=Triggers in this file are active as module %s GeneratedPasswordDesc=Choose the method to be used for auto-generated passwords. DictionaryDesc=Insert all reference data. You can add your values to the default. ConstDesc=This page allows you to edit (override) parameters not available in other pages. These are mostly reserved parameters for developers/advanced troubleshooting only. +MiscellaneousOptions=Miscellaneous options 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 @@ -1305,6 +1310,8 @@ YouMustRunCommandFromCommandLineAfterLoginToUser=You must run this command from YourPHPDoesNotHaveSSLSupport=SSL functions not available in your PHP DownloadMoreSkins=More skins to download SimpleNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset +SimpleRefNumRefModelDesc=Returns the reference number in the format n where n is a sequential auto-incrementing number with no reset +AdvancedNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset SimpleNumRefNoDateModelDesc=Returns the reference number in the format %s-nnnn where nnnn is a sequential auto-incrementing number with no reset ShowProfIdInAddress=Show professional ID with addresses ShowVATIntaInAddress=Hide intra-Community VAT number @@ -1445,6 +1452,10 @@ SuppliersPayment=Vendor payments SupplierPaymentSetup=Vendor payments setup InvoiceCheckPosteriorDate=Check facture date before validation InvoiceCheckPosteriorDateHelp=Validating an invoice will be forbidden if its date is anterior to the date of last invoice of same type. +InvoiceOptionCategoryOfOperations=Display the mention "category of operations" on the invoice. +InvoiceOptionCategoryOfOperationsHelp=Depending on the situation, the mention will appear in the form:
- Category of operations: Delivery of goods
- Category of operations: Provision of services
- Category of operations: Mixed - Delivery of goods & provision of services +InvoiceOptionCategoryOfOperationsYes1=Yes, below the address block +InvoiceOptionCategoryOfOperationsYes2=Yes, in the lower left-hand corner ##### Proposals ##### PropalSetup=Commercial proposals module setup ProposalsNumberingModules=Commercial proposal numbering models @@ -1487,6 +1498,7 @@ WatermarkOnDraftContractCards=Watermark on draft contracts (none if empty) ##### Members ##### MembersSetup=Members module setup MemberMainOptions=Main options +MemberCodeChecker=Options for automatic generation of member codes 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 @@ -1821,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Use events types (managed in menu Setup -> Dictionaries -> 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_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Which view do you want to open by default when selecting menu Agenda AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (When remind date is reached, a popup is shown by the browser. Each user can disable such notifications from its browser notification setup). AGENDA_REMINDER_BROWSER_SOUND=Enable sound notification @@ -2124,6 +2139,7 @@ CodeLastResult=Latest result code NbOfEmailsInInbox=Number of emails in source directory LoadThirdPartyFromName=Load third party searching on %s (load only) LoadThirdPartyFromNameOrCreate=Load third party searching on %s (create if not found) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Message from a conversation initiated by a first email sent from Dolibarr WithoutDolTrackingID=Message from a conversation initiated by a first email NOT sent from Dolibarr @@ -2133,7 +2149,7 @@ CreateCandidature=Create job application FormatZip=Zip MainMenuCode=Menu entry code (mainmenu) ECMAutoTree=Show automatic ECM tree -OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a company name from email subject into a temporary variable:
tmp_var=EXTRACT:SUBJECT:Message from company ([^\n]*)

Examples to set the properties of an object to create:
objproperty1=SET:a hard coded value
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (value is set only if property is not already defined)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\s*([^\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\s([^\s]*)

Use a ; char as separator to extract or set several properties. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a company name from email subject into a temporary variable:
tmp_var=EXTRACT:SUBJECT:Message from company ([^\n]*)

Examples to set the properties of an object to create:
objproperty1=SET:a hard coded value
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (value is set only if property is not already defined)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. OpeningHours=Opening hours OpeningHoursDesc=Enter here the regular opening hours of your company. ResourceSetup=Configuration of Resource module @@ -2179,7 +2195,7 @@ LargerThan=Larger than IfTrackingIDFoundEventWillBeLinked=Note that If a tracking ID of an object is found into email, or if the email is an answer of an email aready collected and linked to an object, the created event will be automatically linked to the known related object. WithGMailYouCanCreateADedicatedPassword=With a GMail account, if you enabled the 2 steps validation, it is recommanded to create a dedicated second password for the application instead of using your own account passsword from https://myaccount.google.com/. EmailCollectorTargetDir=It may be a desired behaviour to move the email into another tag/directory when it was processed successfully. Just set name of directory here to use this feature (Do NOT use special characters in name). Note that you must also use a read/write login account. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\s([^\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
EndPointFor=End point for %s : %s DeleteEmailCollector=Delete email collector ConfirmDeleteEmailCollector=Are you sure you want to delete this email collector? @@ -2350,5 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/en_US/users.lang b/htdocs/langs/en_US/users.lang index cfd8cbb0362..8da39ed1cd8 100644 --- a/htdocs/langs/en_US/users.lang +++ b/htdocs/langs/en_US/users.lang @@ -73,7 +73,7 @@ ExportDataset_user_1=Users and their properties DomainUser=Domain user %s Reactivate=Reactivate CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. -InternalExternalDesc=An internal user is a user that is part of your company/organization, or is a partner user outside of your organization that may need to see more data than data related to his company (the permission system will define what he can or can't see or do).
An external user is a customer, vendor or other that must view ONLY data related to himself (Creating an external user for a third-party can be done from the contact record of the third-party).

In both cases, you must grant permissions on the features that the user need. +InternalExternalDesc=An internal user is a user that is part of your company/organization, or is a partner user outside of your organization that may need to see more data than data related to his company (the permission system will define what he can or can't see or do).
An external user is a customer, vendor or other that must view ONLY data related to himself (Creating an external user for a third-party can be done from the contact record of the third-party).

In both cases, you must grant permissions on the features that the user need. PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. Inherited=Inherited UserWillBe=Created user will be @@ -82,7 +82,7 @@ UserWillBeExternalUser=Created user will be an external user (because linked to IdPhoneCaller=Id phone caller NewUserCreated=User %s created NewUserPassword=Password change for %s -NewPasswordValidated=Your new password have been validated and must be used now to login. +NewPasswordValidated=Your new password have been validated and must be used now to login. EventUserModified=User %s modified UserDisabled=User %s disabled UserEnabled=User %s activated @@ -130,3 +130,5 @@ IPLastLogin=IP last login IPPreviousLogin=IP previous login ShowAllPerms=Show all permission rows HideAllPerms=Hide all permission rows +UserPublicPageDesc=You can enable a virtual card for this user. An url with the user profile and a barcode will be available to allow anybody with a smartphone to scan it and add your contact to its address book. +EnablePublicVirtualCard=Enable the public virtual user card diff --git a/htdocs/langs/en_ZA/admin.lang b/htdocs/langs/en_ZA/admin.lang index c5ab56cb8d8..4117e853156 100644 --- a/htdocs/langs/en_ZA/admin.lang +++ b/htdocs/langs/en_ZA/admin.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - admin OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/en_ZA/install.lang b/htdocs/langs/en_ZA/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/en_ZA/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/es_AR/admin.lang b/htdocs/langs/es_AR/admin.lang index beedcee5010..e5702d9da8f 100644 --- a/htdocs/langs/es_AR/admin.lang +++ b/htdocs/langs/es_AR/admin.lang @@ -589,12 +589,10 @@ EmailCollectorConfirmCollectTitle=Correo electrónico recoger confirmación NoNewEmailToProcess=No hay correo electrónico nuevo (filtros coincidentes) para procesar CodeLastResult=Último código de resultado ECMAutoTree=Mostrar arbol ECM automatico -OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a company name from email subject into a temporary variable:
tmp_var=EXTRACT:SUBJECT:Message from company ([^\n]*)

Examples to set the properties of an object to create:
objproperty1=SET:a hard coded value
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (value is set only if property is not already defined)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. ResourceSetup=Configuración del módulo de recursos UseSearchToSelectResource=Use un formulario de búsqueda para elegir un recurso (en lugar de una lista desplegable). DisabledResourceLinkUser=Deshabilitar la función para vincular un recurso a los usuarios DisabledResourceLinkContact=Deshabilitar función para vincular un recurso a contactos ConfirmUnactivation=Confirmar el reinicio del módulo OnMobileOnly=Solo en pantalla pequeña (teléfono inteligente) -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
Settings =Ajustes diff --git a/htdocs/langs/es_BO/admin.lang b/htdocs/langs/es_BO/admin.lang index c5ab56cb8d8..4117e853156 100644 --- a/htdocs/langs/es_BO/admin.lang +++ b/htdocs/langs/es_BO/admin.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - admin OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/es_BO/install.lang b/htdocs/langs/es_BO/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/es_BO/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/es_CL/admin.lang b/htdocs/langs/es_CL/admin.lang index ffa31853958..2dc95870e47 100644 --- a/htdocs/langs/es_CL/admin.lang +++ b/htdocs/langs/es_CL/admin.lang @@ -322,7 +322,6 @@ ExtrafieldCheckBox=Casillas de verificación ExtrafieldCheckBoxFromList=Casillas de verificación de la mesa ExtrafieldLink=Enlace a un objeto ComputedFormula=Campo computado -ComputedFormulaDesc=Puede ingresar aquí una fórmula usando otras propiedades del objeto o cualquier codificación PHP para obtener un valor calculado dinámico. Puede utilizar cualquier fórmula compatible con PHP, incluido el "?" operador de condición y el siguiente objeto global: $ db, $ conf, $ langs, $ mysoc, $ user, $ object .
ADVERTENCIA : Solo algunas propiedades de $ object pueden estar disponibles. Si necesita propiedades no cargadas, simplemente busque el objeto en su fórmula como en el segundo ejemplo.
El uso de un campo calculado significa que no puede ingresar ningún valor desde la interfaz. Además, si hay un error de sintaxis, es posible que la fórmula no devuelva nada.

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

Ejemplo para volver a cargar el objeto
(($ reloadedobj = new Societe ($ db)) && ($ reloadedobj-> fetchNoCompute ($ obj-> id? $ obj-> id: (? $ obj-> id?) > rowid: $ objeto-> id))> 0))? $ reloadedobj-> array_options ['options_extrafieldkey'] * $ reloadedobj-> capital / 5: '-1'

Otro ejemplo de fórmula para forzar la carga del objeto y su objeto principal:
(($ new reloadedobjb )) && ($ reloadedobj-> fetchNoCompute ($ object-> id)> 0) && ($ secondloadedobj = new Project ($ db)) && ($ secondloadedobj-> fetchNoCompute ($ reloadedobj-> fk_project)> 0))? $ secondloadedobj-> ref: 'Proyecto principal no encontrado' Computedpersistent=Almacenar campo computado ExtrafieldParamHelpPassword=Si deja este campo en blanco, significa que este valor se almacenará sin cifrado (el campo solo debe estar oculto con una estrella en la pantalla).
Establezca 'auto' para usar la regla de cifrado predeterminada para guardar la contraseña en la base de datos (entonces el valor leído será solo el hash, no hay manera de recuperar el valor original) ExtrafieldParamHelpselect=La lista de valores debe ser líneas con clave de formato, valor (donde la clave no puede ser '0')

por ejemplo:
1, valor1
2, valor2
código3, valor3
...

Para tener la lista dependiendo de otra lista de atributos complementarios:
1, value1 | options_ parent_list_code : parent_key
2, value2 | options_ parent_list_code : parent_key

Para tener la lista dependiendo de otra lista:
1, valor1 | parent_list_code : parent_key
2, valor2 | parent_list_code : parent_key @@ -471,7 +470,6 @@ Module55000Desc=Cree encuestas en línea, encuestas o votos (como Doodle, Studs, Module60000Desc=Módulo para gestionar comisiones Module62000Desc=Añadir características para gestionar Incoterms. Module63000Desc=Gestionar recursos (impresoras, coches, salas, ...) para asignar a eventos. -Permission11=Lea las facturas de los clientes Permission12=Crear/modificar facturas de clientes Permission14=Validar facturas de clientes Permission15=Enviar facturas de clientes por correo electrónico @@ -621,7 +619,6 @@ Permission1188=Eliminar órdenes de compra Permission1190=Aprobar (segunda aprobación) órdenes de compra Permission1201=Obtener el resultado de una exportación Permission1202=Crear / Modificar una exportación -Permission1231=Leer facturas de proveedores Permission1232=Crear / modificar facturas de proveedores Permission1233=Validar facturas de proveedores Permission1234=Eliminar facturas de proveedores @@ -1335,7 +1332,6 @@ NbOfEmailsInInbox=Número de correos electrónicos en el directorio de origen LoadThirdPartyFromName=Cargar búsqueda de terceros en %s (solo carga) LoadThirdPartyFromNameOrCreate=Cargar búsqueda de terceros en %s (crear si no se encuentra) ECMAutoTree=Mostrar arbol ECM automatico -OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a company name from email subject into a temporary variable:
tmp_var=EXTRACT:SUBJECT:Message from company ([^\n]*)

Examples to set the properties of an object to create:
objproperty1=SET:a hard coded value
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (value is set only if property is not already defined)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. OpeningHoursDesc=Introduzca aquí el horario habitual de apertura de su empresa. ResourceSetup=Configuración del módulo de recursos UseSearchToSelectResource=Use un formulario de búsqueda para elegir un recurso (en lugar de una lista desplegable). @@ -1353,7 +1349,6 @@ DebugBar=Barra de debug WarningValueHigherSlowsDramaticalyOutput=Advertencia, los valores más altos ralentizan dramáticamente la salida. ModuleActivated=El módulo %s está activado y ralentiza la interfaz EXPORTS_SHARE_MODELS=Los modelos de exportación se comparten con todos. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
EndPointFor=Punto final para %s: %s DeleteEmailCollector=Eliminar el colector de correo electrónico ConfirmDeleteEmailCollector=¿Estás seguro de que deseas eliminar este recopilador de correo electrónico? diff --git a/htdocs/langs/es_CL/install.lang b/htdocs/langs/es_CL/install.lang index 9bc3060c806..a0765f46705 100644 --- a/htdocs/langs/es_CL/install.lang +++ b/htdocs/langs/es_CL/install.lang @@ -63,7 +63,7 @@ GoToUpgradePage=Ir a la página de actualización de nuevo WithNoSlashAtTheEnd=Sin la barra "/" al final AdminLoginAlreadyExists=La cuenta de administrador de Dolibarr ' %s ' ya existe. Vuelve si quieres crear otro. FailedToCreateAdminLogin=Error al crear la cuenta de administrador de Dolibarr. -WarningRemoveInstallDir=Advertencia, por razones de seguridad, una vez que se complete la instalación o la actualización, debe agregar un archivo llamado install.lock en el directorio de documentos de Dolibarr para evitar nuevamente el uso accidental / malicioso de las herramientas de instalación. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. ChoosedMigrateScript=Elija script de migración DataMigration=Migración de base de datos (datos) DatabaseMigration=Migración de la base de datos (estructura + algunos datos) diff --git a/htdocs/langs/es_CO/admin.lang b/htdocs/langs/es_CO/admin.lang index 3a97bbd7d88..e1efb45f47b 100644 --- a/htdocs/langs/es_CO/admin.lang +++ b/htdocs/langs/es_CO/admin.lang @@ -340,7 +340,6 @@ ExtrafieldCheckBox=Casillas de verificación ExtrafieldCheckBoxFromList=Casillas de verificación de la mesa ExtrafieldLink=Enlace a un objeto ComputedFormula=Campo computado -ComputedFormulaDesc=Puede ingresar aquí una fórmula usando otras propiedades del objeto o cualquier codificación PHP para obtener un valor calculado dinámico. Puede utilizar cualquier fórmula compatible con PHP, incluido el "?" operador de condición y el siguiente objeto global: $db, $conf, $langs, $mysoc, $user, $object.
ADVERTENCIA: Solo algunas propiedades de $object pueden estar disponibles. Si necesita propiedades no cargadas, simplemente busque el objeto en su fórmula como en el segundo ejemplo.
El uso de un campo calculado significa que no puede ingresar ningún valor desde la interfaz. Además, si hay un error de sintaxis, es posible que la fórmula no devuelva nada.

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

Ejemplo para recargar el objeto
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1''

Otro ejemplo de fórmula para forzar la carga del objeto y su objeto principal:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Almacenar campo calculado ComputedpersistentDesc=Los campos adicionales calculados se almacenarán en la base de datos, sin embargo, el valor solo se volverá a calcular cuando se cambie el objeto de este campo. Si el campo calculado depende de otros objetos o datos globales, ¡este valor puede ser incorrecto! ExtrafieldParamHelpPassword=Dejar este campo en blanco significa que este valor se almacenará sin cifrado (el campo solo debe estar oculto con una estrella en la pantalla).
Establezca 'auto' para usar la regla de cifrado predeterminada para guardar la contraseña en la base de datos (entonces el valor leído será el hash solo, no hay forma de recuperar el valor original) @@ -516,7 +515,6 @@ Module59000Desc=Módulo para seguir márgenes Module60000Desc=Módulo para gestionar comisiones. Module62000Desc=Añadir características para gestionar Incoterms. Module63000Desc=Gestionar recursos (impresoras, coches, salas, ...) para destinarlos a eventos -Permission11=Lea las facturas de los clientes. Permission12=Crear / modificar facturas de clientes. Permission13=Invalidar facturas de clientes Permission14=Validar facturas de clientes. @@ -711,7 +709,6 @@ Permission1189=Marcar / desmarcar la recepción de una orden de compra Permission1190=Aprobar (segunda aprobación) órdenes de compra Permission1191=Exportar órdenes de proveedores y sus atributos Permission1202=Crear / Modificar una exportación -Permission1231=Leer facturas de proveedores Permission1232=Crear / modificar facturas de proveedores Permission1233=Validar facturas de proveedores Permission1234=Eliminar facturas de proveedores @@ -904,7 +901,6 @@ SetupDescription3= %s -> %s

Parámetros básicos uti SetupDescription4= %s -> %s

Este software es un conjunto de muchos módulos/aplicaciones. Los módulos relacionados con sus necesidades deben estar habilitados y configurados. Las entradas del menú aparecerán con la activación de estos módulos. SetupDescription5=Otras entradas del menú de configuración administran parámetros opcionales. SetupDescriptionLink= %s - %s -SetupDescription4b=Este software es un conjunto de muchos módulos / aplicaciones. Los módulos relacionados con sus necesidades deben estar habilitados y configurados. Las entradas del menú aparecerán con la activación de estos módulos. InfoBrowser=Navegador InfoOS=Sistema operativo InfoWebServer=Servidor web @@ -962,6 +958,7 @@ YouMustRunCommandFromCommandLineAfterLoginToUser=Debe ejecutar este comando desd YourPHPDoesNotHaveSSLSupport=Funciones SSL no disponibles en tu PHP DownloadMoreSkins=Más skins para descargar SimpleNumRefModelDesc=Devuelve el número de referencia en el formato %syymm-nnnn donde yy es el año, mm es el mes y nnnn es un número secuencial que se incrementa automáticamente sin reinicio. +AdvancedNumRefModelDesc=Devuelve el número de referencia en el formato %syymm-nnnn donde yy es el año, mm es el mes y nnnn es un número secuencial que se incrementa automáticamente sin reinicio. ShowProfIdInAddress=Mostrar identificación profesional con direcciones ShowVATIntaInAddress=Ocultar el número de IVA intracomunitario MAIN_DISABLE_METEO=Desactivar el pulgar meteorológico diff --git a/htdocs/langs/es_CO/hrm.lang b/htdocs/langs/es_CO/hrm.lang index a296080a06a..a9b8a546778 100644 --- a/htdocs/langs/es_CO/hrm.lang +++ b/htdocs/langs/es_CO/hrm.lang @@ -9,8 +9,6 @@ DictionaryFunction=HRM - Puestos de trabajo ListOfEmployees=Lista de empleados HrmSetup=Configuración del módulo HRM JobCard=Tarjeta de trabajo -JobPosition=Perfil de trabajo -JobsPosition=Perfiles de trabajo SkillCard=Tarjeta de habilidad EmployeeSkillsUpdated=Se actualizaron las habilidades de los empleados (consulte la pestaña "Habilidades" de la tarjeta de empleado) OrJobToCompare=Compare con los requisitos de habilidades laborales diff --git a/htdocs/langs/es_CO/install.lang b/htdocs/langs/es_CO/install.lang index 25abb1385ae..11a75200e96 100644 --- a/htdocs/langs/es_CO/install.lang +++ b/htdocs/langs/es_CO/install.lang @@ -69,7 +69,7 @@ WithNoSlashAtTheEnd=Sin la barra "/" al final DirectoryRecommendation= IMPORTANTE : Debe usar un directorio que esté fuera de las páginas web (por lo tanto, no use un subdirectorio del parámetro anterior). AdminLoginAlreadyExists=La cuenta de administrador de Dolibarr ' %s ' ya existe. Vuelve si quieres crear otro. FailedToCreateAdminLogin=Error al crear la cuenta de administrador de Dolibarr. -WarningRemoveInstallDir=Una advertencia, por razones de seguridad, una vez que se complete la instalación o actualización, debe agregar un archivo llamado install.lock en el directorio de documentos de Dolibarr para evitar nuevamente el uso accidental / malicioso de las herramientas de instalación. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. ChoosedMigrateScript=Elegir script de migración DataMigration=Migración de base de datos (datos) DatabaseMigration=Migración de base de datos (estructura + algunos datos) diff --git a/htdocs/langs/es_CO/members.lang b/htdocs/langs/es_CO/members.lang index 4ccdc33dd19..8ccc6c6fffe 100644 --- a/htdocs/langs/es_CO/members.lang +++ b/htdocs/langs/es_CO/members.lang @@ -139,7 +139,6 @@ SubscriptionsStatistics=Estadísticas de contribuciones NbOfSubscriptions=Numero de contribuciones AmountOfSubscriptions=Monto recaudado de las contribuciones TurnoverOrBudget=Facturación (para una empresa) o Presupuesto (para una fundación) -DefaultAmount=Importe predeterminado de la contribución CanEditAmountDetail=El visitante puede elegir/editar el monto de su contribución independientemente del tipo de miembro MembersStatisticsByProperties=Estadísticas de miembros por naturaleza VATToUseForSubscriptions=Tasa de IVA a utilizar para las contribuciones diff --git a/htdocs/langs/es_CR/admin.lang b/htdocs/langs/es_CR/admin.lang index 485e2d7adf4..bcada1b6272 100644 --- a/htdocs/langs/es_CR/admin.lang +++ b/htdocs/langs/es_CR/admin.lang @@ -4,5 +4,3 @@ BoldLabelOnPDF=Imprimir etiqueta del producto en Negrita en el PDF VersionProgram=Versión del programa VersionLastInstall=Versión inicial instalada VersionLastUpgrade=Actualizar a la versión más reciente -OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a company name from email subject into a temporary variable:
tmp_var=EXTRACT:SUBJECT:Message from company ([^\n]*)

Examples to set the properties of an object to create:
objproperty1=SET:a hard coded value
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (value is set only if property is not already defined)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
diff --git a/htdocs/langs/es_CR/install.lang b/htdocs/langs/es_CR/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/es_CR/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/es_DO/admin.lang b/htdocs/langs/es_DO/admin.lang index 8317eec449a..7b4cc2ab334 100644 --- a/htdocs/langs/es_DO/admin.lang +++ b/htdocs/langs/es_DO/admin.lang @@ -8,6 +8,5 @@ DictionaryVAT=Tasa de ITBIS (Impuesto sobre ventas en EEUU) UnitPriceOfProduct=Precio unitario sin ITBIS de un producto OptionVatMode=Opción de carga de ITBIS OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/es_DO/install.lang b/htdocs/langs/es_DO/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/es_DO/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/es_EC/admin.lang b/htdocs/langs/es_EC/admin.lang index 46393f0ddb1..ac000e71761 100644 --- a/htdocs/langs/es_EC/admin.lang +++ b/htdocs/langs/es_EC/admin.lang @@ -317,7 +317,6 @@ ExtrafieldCheckBox=Casillas de verificación ExtrafieldCheckBoxFromList=Casillas de verificación de la tabla ExtrafieldLink=Enlace a un objeto ComputedFormula=Campo calculado -ComputedFormulaDesc=Puede ingresar aquí una fórmula utilizando otras propiedades del objeto o cualquier codificación PHP para obtener un valor calculado dinámico. Puede usar cualquier fórmula compatible con PHP, incluido el "?" operador de condición y siguiente objeto global: $db, $conf, $langs, $mysoc, $user, $object.
ADVERTENCIA: Solo algunas propiedades de $object pueden estar disponibles. Si necesita propiedades no cargadas, simplemente busque el objeto en su fórmula como en el segundo ejemplo.
El uso de un campo calculado significa que no puede ingresar ningún valor desde la interfaz. Además, si hay un error de sintaxis, la fórmula puede no devolver nada.

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

Ejemplo para recargar el objeto
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

Otro ejemplo de fórmula para forzar la carga del objeto y su objeto principal:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Proyecto principal no encontrado' Computedpersistent=Almacenar campo calculado ComputedpersistentDesc=Los campos adicionales calculados se almacenarán en la base de datos, sin embargo, el valor solo se volverá a calcular cuando se cambie el objeto de este campo. ¡Si el campo calculado depende de otros objetos o datos globales, este valor podría estar equivocado! ExtrafieldParamHelpPassword=Dejar este campo en blanco significa que este valor se almacenará sin cifrado (el campo solo debe estar oculto con una estrella en la pantalla).
Establezca 'auto' para usar la regla de cifrado predeterminada para guardar la contraseña en la base de datos (entonces el valor leído será el hash solo, no hay forma de recuperar el valor original) @@ -476,7 +475,6 @@ Module55000Desc=Cree encuestas en línea, encuestas o votos (como Doodle, Studs, Module60000Desc=Módulo para gestionar las comisiones Module62000Desc=Añadir características para gestionar Incoterms. Module63000Desc=Gestionar recursos (impresoras, coches, salas, ...) para asignar a eventos. -Permission11=Leer facturas de clientes Permission12=Crear / modificar facturas de clientes Permission14=Validar facturas de clientes Permission15=Enviar facturas de cliente por correo electrónico @@ -637,7 +635,6 @@ Permission1188=Eliminar pedidos de compra Permission1190=Aprobar (segunda aprobación) órdenes de compra Permission1201=Obtener el resultado de una exportación Permission1202=Crear / Modificar una exportación -Permission1231=Leer facturas de proveedores Permission1232=Crear / modificar facturas de proveedores Permission1233=Validar facturas de proveedores Permission1234=Eliminar facturas de proveedores @@ -1391,7 +1388,6 @@ NbOfEmailsInInbox=Número de correos electrónicos en el directorio de origen LoadThirdPartyFromName=Cargue la búsqueda de terceros en %s (solo carga) LoadThirdPartyFromNameOrCreate=Cargue la búsqueda de terceros en %s (crear si no se encuentra) ECMAutoTree=Mostrar arbol ECM automatico -OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a company name from email subject into a temporary variable:
tmp_var=EXTRACT:SUBJECT:Message from company ([^\n]*)

Examples to set the properties of an object to create:
objproperty1=SET:a hard coded value
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (value is set only if property is not already defined)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. OpeningHoursDesc=Ingrese aquí los horarios regulares de su empresa. ResourceSetup=Configuración del módulo de recursos UseSearchToSelectResource=Use un formulario de búsqueda para elegir un recurso (en lugar de una lista desplegable). @@ -1416,7 +1412,6 @@ EXPORTS_SHARE_MODELS=Los modelos de exportación se comparten con todos ExportSetup=Configuración del módulo Exportar InstanceUniqueID=ID único de la instancia WithGMailYouCanCreateADedicatedPassword=Con una cuenta de GMail, si habilitó la validación de 2 pasos, se recomienda crear una segunda contraseña dedicada para la aplicación en lugar de usar la contraseña de su propia cuenta de https://myaccount.google.com/. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
EndPointFor=Punto final para %s: %s DeleteEmailCollector=Eliminar recopilador de correo electrónico ConfirmDeleteEmailCollector=¿Estás seguro de que deseas eliminar este recopilador de correo electrónico? diff --git a/htdocs/langs/es_EC/hrm.lang b/htdocs/langs/es_EC/hrm.lang index 4e07ce80a63..b78f354ab22 100644 --- a/htdocs/langs/es_EC/hrm.lang +++ b/htdocs/langs/es_EC/hrm.lang @@ -3,4 +3,3 @@ HRM_EMAIL_EXTERNAL_SERVICE=Correo electrónico para prevenir el servicio externo ConfirmDeleteEstablishment=¿Estás seguro de que deseas eliminar este establecimiento? OpenEtablishment=Establecimiento abierto HrmSetup=Configuración del módulo de RRHH (Recursos Humanos) -JobPosition=Trabajo diff --git a/htdocs/langs/es_EC/install.lang b/htdocs/langs/es_EC/install.lang index f50b423e828..ff82bda217d 100644 --- a/htdocs/langs/es_EC/install.lang +++ b/htdocs/langs/es_EC/install.lang @@ -68,7 +68,7 @@ WithNoSlashAtTheEnd=Sin la barra "/" al final DirectoryRecommendation= IMPORTANTE: debe usar un directorio que esté fuera de las páginas web (por lo tanto, no use un subdirectorio del parámetro anterior). AdminLoginAlreadyExists=La cuenta de administrador de Dolibarr '%s' ya existe. Regrese si quiere crear otro. FailedToCreateAdminLogin=Error al crear la cuenta de administrador de Dolibarr. -WarningRemoveInstallDir=Advertencia, por razones de seguridad, una vez que se complete la instalación o actualización, debe agregar un archivo llamado install.lock en el directorio de documentos de Dolibarr para evitar nuevamente el uso accidental / malicioso de las herramientas de instalación. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. ChoosedMigrateScript=Elegir secuencia de comandos de migración DataMigration=Migración de base de datos (datos) DatabaseMigration=Migración de la base de datos (estructura + algunos datos) diff --git a/htdocs/langs/es_ES/admin.lang b/htdocs/langs/es_ES/admin.lang index 106fcde2207..6867b574d01 100644 --- a/htdocs/langs/es_ES/admin.lang +++ b/htdocs/langs/es_ES/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Casilla de verificación ExtrafieldCheckBoxFromList=Casilla de selección de tabla ExtrafieldLink=Objeto adjuntado ComputedFormula=Campo combinado -ComputedFormulaDesc=Puede introducir aquí una fórmula utilizando otras propiedades de objeto o cualquier código PHP para obtener un valor calculado dinámico. Puede utilizar cualquier fórmula compatible con PHP, incluido el operador de condición "?" y los objetos globales siguientes: $db, $conf, $langs, $mysoc, $user, $object.
ATENCIÓN: Sólo algunas propiedades de $object pueden estar disponibles. Si necesita propiedades no cargadas, solo busque el objeto en su fórmula como en el segundo ejemplo.
Usar un campo computado significa que no puede ingresar ningún valor desde la interfaz. Además, si hay un error de sintaxis, la fórmula puede que no devuelva nada.

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

Ejemlo de recarga de objeto
(($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'

Otro ejemplo de fórmula para forzar la carga del objeto y su objeto principal:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetch($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetch($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref : 'Proyecto principal no encontrado' +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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Almacenar campo combinado ComputedpersistentDesc=Los campos adicionales calculados se almacenarán en la base de datos, sin embargo, el valor solo se volverá a calcular cuando se cambie el objeto de este campo. ¡Si el campo calculado depende de otros objetos o datos globales, este valor podría ser incorrecto! ExtrafieldParamHelpPassword=Mantener este campo vacío significa que el valor se almacenará sin cifrado (el campo permanecerá solo oculto con estrellas en la pantalla).
Establezca aquí el valor 'auto' para usar la regla de cifrado predeterminada para guardar la contraseña en la base de datos (entonces el valor leído será solo el hash, no hay forma de recuperar el valor original) @@ -704,8 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Añade funciones para gestionar Incoterm Module63000Name=Recursos Module63000Desc=Gestiona recursos (impresoras, automóviles, salas, ...) para compartirlos en los eventos +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Recepciones -Permission11=Consultar facturas +Permission11=Read customer invoices (and payments) Permission12=Crear/Modificar facturas Permission13=Desvalidar facturas de cliente Permission14=Validar facturas @@ -947,7 +949,7 @@ Permission1190=Aprobar (segunda aprobación) pedidos a proveedores Permission1191=Exportar pedidos a proveedor y sus atributos Permission1201=Obtener resultado de una exportación Permission1202=Crear/codificar exportaciones -Permission1231=Leer facturas de proveedor +Permission1231=Read vendor invoices (and payments) Permission1232=Crear/modificar factura de proveedor Permission1233=Validar facturas de proveedor Permission1234=Eliminar facturas de proveedor @@ -1234,7 +1236,7 @@ SetupDescription4=%s -> %s

Este software es una colecci SetupDescription5=Las otras entradas de configuración gestionan parámetros opcionales. SetupDescriptionLink= %s-%s SetupDescription3b=Parámetros básicos utilizados para personalizar el comportamiento predeterminado de su aplicación (por ejemplo, para funciones relacionadas con el país). -SetupDescription4b=Este software es un conjunto de muchos módulos/aplicaciones. Los módulos relacionados con sus necesidades deben ser habilitados y configurados. Las entradas del menú aparecerán con la activación de estos módulos. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Eventos de seguridad que se auditan NoSecurityEventsAreAduited=No se auditan eventos de seguridad. Puede habilitarlos desde el menú %s Audit=Eventos de seguridad @@ -2366,3 +2368,7 @@ MaxNumberOfAttachementOnForms=Número máximo de archivos unidos en un formulari IfDefinedUseAValueBeetween=Si está definido, use un valor entre %s y %s Reload=Recargar ConfirmReload=Confirmar recarga de módulo +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/es_ES/banks.lang b/htdocs/langs/es_ES/banks.lang index cf9b1648f10..5a1e63c3634 100644 --- a/htdocs/langs/es_ES/banks.lang +++ b/htdocs/langs/es_ES/banks.lang @@ -49,6 +49,9 @@ BankAccountDomiciliation=Domiciliación de cuenta BankAccountCountry=País de la cuenta BankAccountOwner=Nombre del titular de la cuenta BankAccountOwnerAddress=Dirección del titular de la cuenta +BankAccountOwnerZip=Código postal del propietario de la cuenta +BankAccountOwnerTown=Población del propietario de la cuenta +BankAccountOwnerCountry=País del propietario de la cuenta CreateAccount=Crear cuenta NewBankAccount=Nueva cuenta NewFinancialAccount=Nueva cuenta financiera @@ -185,4 +188,3 @@ AlreadyOneBankAccount=Ya se ha definido una cuenta bancaria SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation=Transferencia SEPA: 'Tipo de pago' a nivel de 'Transferencia de crédito' SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp=Al generar un archivo SEPA XML para transferencias de crédito, la sección "PaymentTypeInformation" ahora se puede colocar dentro de la sección "CreditTransferTransactionInformation" (en lugar de la sección "Pago"). Recomendamos enfáticamente dejar esto sin marcar para colocar la información de tipo de pago en el nivel de pago, ya que no todos los bancos la aceptarán necesariamente en el nivel de información de transacción de transferencia de crédito. Comuníquese con su banco antes de colocar PaymentTypeInformation en el nivel CreditTransferTransactionInformation. ToCreateRelatedRecordIntoBank=Para crear un registro bancario relacionado faltante -BanklineExtraFields=Campos adicionales de línea bancaria diff --git a/htdocs/langs/es_ES/install.lang b/htdocs/langs/es_ES/install.lang index a547fdfe6b7..4d9d543c780 100644 --- a/htdocs/langs/es_ES/install.lang +++ b/htdocs/langs/es_ES/install.lang @@ -28,6 +28,7 @@ ErrorPHPVersionTooLow=Versión de PHP demasiado antigua. Se requiere la versión ErrorPHPVersionTooHigh=Versión de PHP demasiado alta. Se requiere la versión %s o anterior. ErrorConnectedButDatabaseNotFound=La conexión al servidor es correcta pero no se encuentra la base de datos '%s' ErrorDatabaseAlreadyExists=La base de datos '%s' ya existe. +ErrorNoMigrationFilesFoundForParameters=No se encontró ningún archivo de migración para las versiones seleccionadas IfDatabaseNotExistsGoBackAndUncheckCreate=Si la base de datos no existe, vuelva atrás y active la opción "Crear base de datos" IfDatabaseExistsGoBackAndCheckCreate=Si la base de datos ya existe, vuelva atrás y desactive la opción "crear la base de datos". WarningBrowserTooOld=Su navegador es muy antiguo. Le recomendamos que actualice a una versión reciente de Firefox, Chrome u Opera. @@ -50,7 +51,6 @@ DatabaseName=Nombre de la base de datos DatabasePrefix=Prefijo para las tablas DatabasePrefixDescription=Prefijo de tabla de base de datos. Si está vacío, el valor predeterminado es llx_. AdminLogin=Usuario del administrador de la base de datos Dolibarr. -PasswordAgain=Verificación de la contraseña AdminPassword=Contraseña del administrador de la base de datos Dolibarr. Deje vacío si se conecta en anonymous CreateDatabase=Crear la base de datos CreateUser=Crear propietario o concederle permiso en la base de datos @@ -88,7 +88,7 @@ LoginAlreadyExists=Ya existe DolibarrAdminLogin=Login del usuario administrador de Dolibarr AdminLoginAlreadyExists=La cuenta de administrador Dolibarr '%s' ya existe. Vuelva atrás si desea crear otra. FailedToCreateAdminLogin=No se pudo crear la cuenta de administrador Dolibarr. -WarningRemoveInstallDir=Atención, por razones de seguridad, con el fin de bloquear un nuevo uso de las herramientas de instalación/actualización, es aconsejable crear en el directorio de documentos de Dolibarr un archivo llamado install.lock en solo lectura para prevenir el uso accidental/malicioso de las herramientas de instalación nuevamente. +WarningRemoveInstallDir=Advertencia, por razones de seguridad, una vez que se completa el proceso de instalación, debe agregar un archivo llamado install.lock en el directorio documents de Dolibarr para evitar el uso accidental/malicioso de las herramientas de instalación nuevamente. FunctionNotAvailableInThisPHP=No disponible en este PHP ChoosedMigrateScript=Elección del script de migración DataMigration=Migración de los datos (datos) @@ -208,7 +208,12 @@ HideNotAvailableOptions=Ocultar opciones no disponibles ErrorFoundDuringMigration=Se ha producido un error durante el proceso de migración, por lo que el siguiente paso no está disponible. Para ignorar errores puede hacer clic aquí, pero la aplicación a algunas funcionalidades pueden no funcionar correctamente mientras no se arregle el problema. YouTryInstallDisabledByDirLock=La aplicación intenta instalar la actualización, pero las páginas de instalación/actualización se han desactivado por razones de seguridad (el nombre del directorio se ha cambiado con el sufijo .lock).
YouTryInstallDisabledByFileLock=La aplicación intenta instalar la actualización, pero las páginas de instalación/actualización se han desactivado por razones de seguridad (mediante el archivo de bloqueo install.lock del directorio de documentos de dolibarr).
+YouTryUpgradeDisabledByMissingFileUnLock=La aplicación intentó autoactualizarse, pero el proceso de actualización actualmente no está permitido.
ClickHereToGoToApp=Haga clic aquí para ir a su aplicación ClickOnLinkOrRemoveManualy=Si hay una actualización en curso, espere. Si no, haga clic en el siguiente enlace. Si siempre ve esta misma página, debe eliminar/cambiar el nombre del archivo install.lock en el directorio de documentos. +ClickOnLinkOrCreateUnlockFileManualy=Si hay una actualización en curso, espere... De lo contrario, debe crear un archivo upgrade.unlock en el directorio de documentos de Dolibarr. Loaded=Cargado FunctionTest=Prueba de funcionamiento +NodoUpgradeAfterDB=Ninguna acción solicitada por módulos externos después de la actualización de la base de datos +NodoUpgradeAfterFiles=Ninguna acción solicitada por módulos externos después de la actualización de archivos o directorios +MigrationContractLineRank=Migrar Línea de contrato para usar Rango (y habilitar Reordenar) diff --git a/htdocs/langs/es_ES/main.lang b/htdocs/langs/es_ES/main.lang index 2d313c230e8..1537957a9b4 100644 --- a/htdocs/langs/es_ES/main.lang +++ b/htdocs/langs/es_ES/main.lang @@ -923,6 +923,7 @@ NotAllExportedMovementsCouldBeRecordedAsExported=No todos los movimientos export Miscellaneous=Miscelánea Calendar=Calendario GroupBy=Agrupado por... +GroupByX=Agrupar por %s ViewFlatList=Ver lista plana ViewAccountList=Ver libro mayor ViewSubAccountList=Ver libro mayor de subcuenta @@ -1222,3 +1223,5 @@ AddToContacts=Agregar dirección a mis contactos LastAccess=Ultimo acceso UploadAnImageToSeeAPhotoHere=Sube una imagen de la pestaña %s para ver una foto aquí LastPasswordChangeDate=Última fecha de cambio de contraseña +PublicVirtualCardUrl=Virtual business card page +TreeView=Vista de árbol diff --git a/htdocs/langs/es_ES/members.lang b/htdocs/langs/es_ES/members.lang index 4c9e9824ab0..00b6c00a16e 100644 --- a/htdocs/langs/es_ES/members.lang +++ b/htdocs/langs/es_ES/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=Estadísticas de suscripciones NbOfSubscriptions=Número de cotizaciones AmountOfSubscriptions=Cantidad recaudada de las suscripciones TurnoverOrBudget=Volumen de ventas (empresa) o Presupuesto (asociación o colectivo) -DefaultAmount=Importe por defecto cotización +DefaultAmount=Default amount of contribution (used only if no amount is defined at member type level) +MinimumAmount=Minimum amount (used only when contribution amount is free) CanEditAmount=El monto de la suscripción es gratis CanEditAmountDetail=El visitante puede elegir/editar el importe de su contribución independientemente del tipo de miembro AmountIsLowerToMinimumNotice=sobre una deuda total de %s @@ -231,4 +232,4 @@ CreateDolibarrLoginDesc=La creación de un login de usuario para los miembros le CreateDolibarrThirdPartyDesc=Un tercero es la entidad legal que se utilizará en la factura si decide generar una factura para cada contribución. Podrá crearlo más tarde durante el proceso de registro de la contribución. MemberFirstname=Nombre del miembro MemberLastname=Apellido del miembro -MemberCodeDesc=Member Code, unique for all members +MemberCodeDesc=Código de miembro, único para todos los miembros diff --git a/htdocs/langs/es_ES/oauth.lang b/htdocs/langs/es_ES/oauth.lang index c013fee5b5e..ea5c09712a3 100644 --- a/htdocs/langs/es_ES/oauth.lang +++ b/htdocs/langs/es_ES/oauth.lang @@ -9,6 +9,7 @@ HasAccessToken=Se ha generado y guardado en la base de datos local un token NewTokenStored=Token recibido y guardado ToCheckDeleteTokenOnProvider=Haga clic aquí para comprobar/eliminar la autorización guardada por el proveedor de OAuth %s TokenDeleted=Token eliminado +GetAccess=Haga clic aquí para obtener un token RequestAccess=Haga clic aquí para solicitar/renovar el acceso y recibir un nuevo token DeleteAccess=Haga clic aquí para eliminar el token UseTheFollowingUrlAsRedirectURI=Utilice la siguiente dirección URL como redireccionamiento URI al crear su credencial de su proveedor OAuth: @@ -30,7 +31,11 @@ OAUTH_GITHUB_SECRET=Oauth GitHub Secret OAUTH_URL_FOR_CREDENTIAL=Vaya a esta página para crear u obtener su ID y secreto de OAuth OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live -OAUTH_ID=ID de OAuth +OAUTH_ID=OAuth Client ID OAUTH_SECRET=Secreto OAuth +OAUTH_TENANT=OAuth tenant OAuthProviderAdded=Proveedor de OAuth agregado AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Ya existe una entrada de OAuth para este proveedor y etiqueta +URLOfServiceForAuthorization=URL proporcionada por el servicio OAuth para la autenticación +Scopes=Permisos (Ámbitos) +ScopeUndefined=Permisos (Ámbitos) indefinidos (ver pestaña anterior) diff --git a/htdocs/langs/es_ES/users.lang b/htdocs/langs/es_ES/users.lang index aa3901d511f..adc12419eef 100644 --- a/htdocs/langs/es_ES/users.lang +++ b/htdocs/langs/es_ES/users.lang @@ -132,4 +132,3 @@ ShowAllPerms=Mostrar todas las filas de permisos HideAllPerms=Ocultar todas las filas de permisos UserPublicPageDesc=Puede habilitar una tarjeta virtual para este usuario. Una URL con el perfil de usuario y un código de barras estará disponible para permitir que cualquier persona con un teléfono inteligente lo escanee y agregue su contacto a su libreta de direcciones. EnablePublicVirtualCard=Habilitar la tarjeta de usuario virtual pública -PublicVirtualCardUrl=Tarjeta de usuario virtual pública diff --git a/htdocs/langs/es_GT/admin.lang b/htdocs/langs/es_GT/admin.lang index c5ab56cb8d8..4117e853156 100644 --- a/htdocs/langs/es_GT/admin.lang +++ b/htdocs/langs/es_GT/admin.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - admin OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/es_GT/install.lang b/htdocs/langs/es_GT/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/es_GT/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/es_HN/admin.lang b/htdocs/langs/es_HN/admin.lang index c5ab56cb8d8..4117e853156 100644 --- a/htdocs/langs/es_HN/admin.lang +++ b/htdocs/langs/es_HN/admin.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - admin OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/es_HN/install.lang b/htdocs/langs/es_HN/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/es_HN/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/es_MX/admin.lang b/htdocs/langs/es_MX/admin.lang index 4097de49b9f..b0fe6be2f6a 100644 --- a/htdocs/langs/es_MX/admin.lang +++ b/htdocs/langs/es_MX/admin.lang @@ -272,8 +272,6 @@ AllPublishers=Todos los editores AddMenus=Añadir menús AddPermissions=Añadir permisos CodeLastResult=Último código de resultado -OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a company name from email subject into a temporary variable:
tmp_var=EXTRACT:SUBJECT:Message from company ([^\n]*)

Examples to set the properties of an object to create:
objproperty1=SET:a hard coded value
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (value is set only if property is not already defined)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
ShowProjectLabel=Etiqueta de proyecto TemplateAdded=Plantilla agregada MailToSendEventOrganization=Organización de Eventos diff --git a/htdocs/langs/es_PA/admin.lang b/htdocs/langs/es_PA/admin.lang index 7a1aa3e37f8..192f55e8e56 100644 --- a/htdocs/langs/es_PA/admin.lang +++ b/htdocs/langs/es_PA/admin.lang @@ -1,6 +1,5 @@ # Dolibarr language file - Source file is en_US - admin VersionUnknown=Desconocido OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/es_PA/install.lang b/htdocs/langs/es_PA/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/es_PA/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/es_PE/admin.lang b/htdocs/langs/es_PE/admin.lang index 34a13d1f06f..0d34be258dc 100644 --- a/htdocs/langs/es_PE/admin.lang +++ b/htdocs/langs/es_PE/admin.lang @@ -10,6 +10,5 @@ UnitPriceOfProduct=Precio unitario sin IGV de un producto OptionVatMode=IGV adeudado MailToSendInvoice=Facturas de Clientes OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/es_PE/install.lang b/htdocs/langs/es_PE/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/es_PE/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/es_PY/admin.lang b/htdocs/langs/es_PY/admin.lang index c5ab56cb8d8..4117e853156 100644 --- a/htdocs/langs/es_PY/admin.lang +++ b/htdocs/langs/es_PY/admin.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - admin OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/es_PY/install.lang b/htdocs/langs/es_PY/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/es_PY/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/es_US/admin.lang b/htdocs/langs/es_US/admin.lang index c5ab56cb8d8..4117e853156 100644 --- a/htdocs/langs/es_US/admin.lang +++ b/htdocs/langs/es_US/admin.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - admin OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/es_US/install.lang b/htdocs/langs/es_US/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/es_US/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/es_UY/admin.lang b/htdocs/langs/es_UY/admin.lang index c5ab56cb8d8..4117e853156 100644 --- a/htdocs/langs/es_UY/admin.lang +++ b/htdocs/langs/es_UY/admin.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - admin OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/es_UY/install.lang b/htdocs/langs/es_UY/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/es_UY/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/es_VE/admin.lang b/htdocs/langs/es_VE/admin.lang index 5ac3d8e921b..f3aeaf2ce7c 100644 --- a/htdocs/langs/es_VE/admin.lang +++ b/htdocs/langs/es_VE/admin.lang @@ -31,5 +31,3 @@ WatermarkOnDraftSupplierProposal=Marca de agua en solicitudes de precios a prove LDAPMemberObjectClassListExample=Lista de ObjectClass que definen los atributos de un registro (ej: top,inetOrgPerson o top,user for active directory) LDAPUserObjectClassListExample=Lista de ObjectClass que definen los atributos de un registro (ej: top,inetOrgPerson o top,user for active directory) LDAPContactObjectClassListExample=Lista de objectClass que definen los atributos de un registro (ej: top,inetOrgPerson o top,user for active directory) -OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a company name from email subject into a temporary variable:
tmp_var=EXTRACT:SUBJECT:Message from company ([^\n]*)

Examples to set the properties of an object to create:
objproperty1=SET:a hard coded value
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (value is set only if property is not already defined)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
diff --git a/htdocs/langs/es_VE/install.lang b/htdocs/langs/es_VE/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/es_VE/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/et_EE/admin.lang b/htdocs/langs/et_EE/admin.lang index 3ca9ddef1cc..ae48821de9c 100644 --- a/htdocs/langs/et_EE/admin.lang +++ b/htdocs/langs/et_EE/admin.lang @@ -51,8 +51,6 @@ ClientSortingCharset=Client collation WarningModuleNotActive=Moodul %s peab olema sisse lülitatud. WarningOnlyPermissionOfActivatedModules=Antud lehel näidatakse vaid aktiivsete moodulitega seotud õigusi. Teisi mooduleid saab aktiveerida Kodu->Seadistamine->Moodulid lehel. DolibarrSetup=Dolibarri paigaldamine või uuendamine -InternalUser=Sisemine kasutaja -ExternalUser=Väline kasutaja InternalUsers=Sisemised kasutajad ExternalUsers=Välised kasutajad UserInterface=User interface @@ -294,6 +292,7 @@ MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (default value in php.ini: %s) MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS Port (Not defined into PHP on Unix-like systems) MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (Not defined into PHP on Unix-like systems) MAIN_MAIL_EMAIL_FROM=Sender email for automatic emails (default value in php.ini: %s) +EMailHelpMsgSPFDKIM=To prevent Dolibarr emails to be classified as spam, make sure that the server is authorized to send e-mails from this address by SPF and DKIM configuration MAIN_MAIL_ERRORS_TO=Email used for error returns emails (fields 'Errors-To' in emails sent) MAIN_MAIL_AUTOCOPY_TO= Copy (Bcc) all sent emails to MAIN_DISABLE_ALL_MAILS=Disable all email sending (for test purposes or demos) @@ -439,8 +438,10 @@ Unique=Unikaalne Boolean=Tõeväärtus (üks märkeruut) ExtrafieldPhone = Telefon ExtrafieldPrice = Hind +ExtrafieldPriceWithCurrency=Price with currency ExtrafieldMail = E-post ExtrafieldUrl = URL +ExtrafieldIP = IP ExtrafieldSelect = Valikute nimekiri ExtrafieldSelectList = Vali tabelist ExtrafieldSeparator=Eraldaja (mitte väli) @@ -450,7 +451,7 @@ ExtrafieldCheckBox=Märkeruudud ExtrafieldCheckBoxFromList=Märkeruudud tabelist ExtrafieldLink=Viide objektile ComputedFormula=Arvutatud väli -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->fetchNoCompute($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->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Store computed field ComputedpersistentDesc=Computed extra fields will be stored in the database, however, the value will only be recalculated when the object of this field is changed. If the computed field depends on other objects or global data this value might be wrong!! 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) @@ -501,7 +502,8 @@ WarningPHPMail=WARNING: The setup to send emails from the application is using t WarningPHPMailA=- Using the server of the Email Service Provider increases the trustability of your email, so it increases the deliverablity without being flagged as SPAM WarningPHPMailB=- Some Email Service 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 for delivery (be careful also of your email provider's sending quota). WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to send emails is also interesting so all emails sent from application will also be saved into your "Sent" directory of your mailbox. -WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. +WarningPHPMailD=It is therefore recommended to change the sending method of e-mails to the value "SMTP". +WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. 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. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s @@ -514,7 +516,7 @@ PageUrlForDefaultValuesCreate=
Example:
For the form to create a new third 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 AlsoDefaultValuesAreEffectiveForActionCreate=Also note that overwritting default values for form creation works only for pages that were correctly designed (so with parameter action=create or presend...) EnableDefaultValues=Lubage vaikeväärtuste kohandamine -EnableOverwriteTranslation=Lubage ülekirjutatud tõlke kasutamine +EnableOverwriteTranslation=Allow customization of translations GoIntoTranslationMenuToChangeThis=A translation has been found for the key with this code. To change this value, you must edit it from Home-Setup-translation. WarningSettingSortOrder=Warning, setting a default sort order may result in a technical error when going on the list page if field is an unknown field. If you experience such an error, come back to this page to remove the default sort order and restore default behavior. Field=Väli @@ -643,11 +645,13 @@ Module2300Name=Plaanitud käivitused Module2300Desc=Scheduled jobs management (alias cron or chrono table) Module2400Name=Events/Agenda Module2400Desc=Track events. Log automatic events for tracking purposes or record manual events or meetings. This is the principal module for good Customer or Vendor Relationship Management. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. 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) +Module2600Name=API / Web services (SOAP server) Module2600Desc=Lülita sisse Dolibarri SOAPi server API võimaldamiseks -Module2610Name=API/Web services (REST server) +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 Purchase orders are currently supported.) @@ -658,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind konverteerimise võimekus Module3200Name=Unalterable Archives Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. +Module3300Name=Module Builder +Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. Module3400Name=Sotsiaalvõrgud Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...). Module4000Name=Personalihaldus @@ -698,7 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Add features to manage Incoterms Module63000Name=Ressursid Module63000Desc=Manage resources (printers, cars, rooms, ...) for allocating to events -Permission11=Müügiarvete vaatamine +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. +Module94160Name=Receptions +Permission11=Read customer invoices (and payments) Permission12=Müügiarvete loomine/toimetamine Permission13=Invalidate customer invoices Permission14=Müügiarvete kinnitamine @@ -842,9 +851,9 @@ Permission286=Kontaktide ekspor Permission291=Tariifide vaatamine Permission292=Tariifide õiguste seadmine Permission293=Modify customer's tariffs -Permission300=Read barcodes -Permission301=Create/modify barcodes -Permission302=Delete barcodes +Permission301=Generate PDF sheets of barcodes +Permission304=Create/modify barcodes +Permission305=Delete barcodes Permission311=Teenuste vaatamine Permission312=Assign service/subscription to contract Permission331=Järjehoidjate vaatamine @@ -940,7 +949,7 @@ Permission1190=Approve (second approval) purchase orders Permission1191=Export supplier orders and their attributes Permission1201=Eksportimise tulemuse kätte saamine Permission1202=Ekspordi loomine/muutmine -Permission1231=Read vendor invoices +Permission1231=Read vendor invoices (and payments) Permission1232=Create/modify vendor invoices Permission1233=Validate vendor invoices Permission1234=Delete vendor invoices @@ -971,13 +980,14 @@ Permission3301=Generate new modules Permission4001=Read skill/job/position Permission4002=Create/modify skill/job/position Permission4003=Delete skill/job/position -Permission4020=Read evaluations -Permission4021=Create/modify your evaluation -Permission4022=Validate evaluation -Permission4023=Delete evaluation -Permission4030=See comparison menu +Permission4021=Read evaluations (yours and your subordinates) +Permission4022=Create/modify evaluations +Permission4023=Validate evaluation +Permission4025=Delete evaluation +Permission4028=See comparison menu Permission4031=Read personal information Permission4032=Write personal information +Permission4033=Read all evaluations (even those of user not subordinates) Permission10001=Read website content Permission10002=Create/modify website content (html and javascript content) Permission10003=Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers. @@ -1081,6 +1091,10 @@ DictionaryAssetDisposalType=Type of disposal of assets TypeOfUnit=Type of unit SetupSaved=Seadistused salvestatud SetupNotSaved=Setup not saved +OAuthServiceConfirmDeleteTitle=Delete OAuth entry +OAuthServiceConfirmDeleteMessage=Are you sure you want to delete this OAuth entry ? All existing tokens for it will also be deleted. +ErrorInEntryDeletion=Error in entry deletion +EntryDeleted=Entry deleted BackToModuleList=Back to Module list BackToDictionaryList=Back to Dictionaries list TypeOfRevenueStamp=Type of tax stamp @@ -1222,7 +1236,7 @@ SetupDescription4=%s -> %s

This software is a suite of m SetupDescription5=Other Setup menu entries manage optional parameters. SetupDescriptionLink=%s - %s SetupDescription3b=Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Security events that are audited NoSecurityEventsAreAduited=No security events are audited. You can enable them from menu %s Audit=Security events @@ -1244,6 +1258,7 @@ AreaForAdminOnly=Setup parameters can be set by administrator users only. SystemInfoDesc=Süsteemi info sisaldab mitmesugust tehnilist infot, mida ei saa muuta ning mis on nähtav vaid administraatoritele. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. +MoreNetworksAvailableWithModule=More social networks may be available by enabling the module "Social networks". AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and presentation of the application can be modified here. @@ -1261,6 +1276,7 @@ TriggerActiveAsModuleActive=Selles failis olevad trigerid on aktiivsed, kuna moo GeneratedPasswordDesc=Choose the method to be used for auto-generated passwords. DictionaryDesc=Insert all reference data. You can add your values to the default. ConstDesc=This page allows you to edit (override) parameters not available in other pages. These are mostly reserved parameters for developers/advanced troubleshooting only. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=All other security related parameters are defined here. LimitsSetup=Piiride/täpsuse seadistamine LimitsDesc=You can define limits, precisions and optimizations used by Dolibarr here @@ -1294,6 +1310,8 @@ YouMustRunCommandFromCommandLineAfterLoginToUser=Antud käsu peab käivitama kä YourPHPDoesNotHaveSSLSupport=Antud PHP ei võimalda SSL funktsioone DownloadMoreSkins=Veel alla laetavaid kujundusi SimpleNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset +SimpleRefNumRefModelDesc=Returns the reference number in the format n where n is a sequential auto-incrementing number with no reset +AdvancedNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset SimpleNumRefNoDateModelDesc=Returns the reference number in the format %s-nnnn where nnnn is a sequential auto-incrementing number with no reset ShowProfIdInAddress=Show professional ID with addresses ShowVATIntaInAddress=Hide intra-Community VAT number @@ -1380,7 +1398,7 @@ GetBarCode=Hangi triipkood NumberingModules=Numbering models DocumentModules=Document models ##### Module password generation -PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters in lowercase. +PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters. PasswordGenerationNone=Do not suggest a generated password. Password must be typed in manually. PasswordGenerationPerso=Return a password according to your personally defined configuration. SetupPerso=According to your configuration @@ -1434,6 +1452,10 @@ SuppliersPayment=Tarnija maksed SupplierPaymentSetup=Vendor payments setup InvoiceCheckPosteriorDate=Check facture date before validation InvoiceCheckPosteriorDateHelp=Validating an invoice will be forbidden if its date is anterior to the date of last invoice of same type. +InvoiceOptionCategoryOfOperations=Display the mention "category of operations" on the invoice. +InvoiceOptionCategoryOfOperationsHelp=Depending on the situation, the mention will appear in the form:
- Category of operations: Delivery of goods
- Category of operations: Provision of services
- Category of operations: Mixed - Delivery of goods & provision of services +InvoiceOptionCategoryOfOperationsYes1=Yes, below the address block +InvoiceOptionCategoryOfOperationsYes2=Yes, in the lower left-hand corner ##### Proposals ##### PropalSetup=Pakkumiste mooduli seadistamine ProposalsNumberingModules=Pakkumiste numeratsiooni mudelid @@ -1476,11 +1498,12 @@ WatermarkOnDraftContractCards=Vesimärk lepingu mustanditel (mitte midagi, kui t ##### Members ##### MembersSetup=Liikmete mooduli seadistamine MemberMainOptions=Põhilised seaded +MemberCodeChecker=Options for automatic generation of member codes AdherentLoginRequired= Halda iga liikme kasutajanime AdherentMailRequired=Email required to create a new member MemberSendInformationByMailByDefault=Liikmetele e-kirja kinnituse saatmise (kinnitamise või uue tellimuse puhul) märkeruut on vaikimisi valitud MemberCreateAnExternalUserForSubscriptionValidated=Create an external user login for each new member subscription validated -VisitorCanChooseItsPaymentMode=Visitor can choose from available payment modes +VisitorCanChooseItsPaymentMode=Visitor can choose from any 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. MembersDocModules=Document templates for documents generated from member record ##### LDAP setup ##### @@ -1742,8 +1765,8 @@ ActivateFCKeditor=Aktiveeri keerulisem toimeti järgmistel lehtedel: FCKeditorForNotePublic=WYSIWIG creation/edition of the field "public notes" of elements FCKeditorForNotePrivate=WYSIWIG creation/edition of the field "private notes" of elements FCKeditorForCompany=WYSIWIG creation/edition of the field description of elements (except products/services) -FCKeditorForProduct=WYSIWIG creation/edition of the field description of products/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 creation/edition of products description or lines for objects (lines of proposals, orders, invoices, etc...). +FCKeditorForProductDetails2=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. FCKeditorForMailing= WYSIWIG loomine/muutmine masspostitusel (Tööriistad->E-kirjad) FCKeditorForUserSignature=WYSIWIG loomine/muutmine kasutaja allkirjas FCKeditorForMail=WYSIWIG creation/edition for all mail (except Tools->eMailing) @@ -1766,7 +1789,7 @@ DetailMenuHandler=Menüü töötleja uue menüü asukoha jaoks DetailMenuModule=Mooduli nimi, kui menüükanne tuleb moodulist DetailType=Menüü tüüp (üleval või vasakul) DetailTitre=Menüü etikett või silt koodis tõlkimise jaoks -DetailUrl=URL, kuhu menüü saadab (täielik URLi link või väline link http:// kujul) +DetailUrl=URL where menu send you (Relative URL link or external link with https://) DetailEnabled=Tingimus kande näitamiseks või mitte näitamiseks DetailRight=Volitamata hallide menüüde näitamise tingimus DetailLangs=Keelefaili nimi siltide koodide tõlke jaoks @@ -1810,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Use events types (managed in menu Setup -> Dictionaries -> 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_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Which view do you want to open by default when selecting menu Agenda AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (When remind date is reached, a popup is shown by the browser. Each user can disable such notifications from its browser notification setup). AGENDA_REMINDER_BROWSER_SOUND=Enable sound notification @@ -1837,7 +1863,7 @@ StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatib CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sale from Point of Sale. Hence a warehouse is required. CashDeskForceDecreaseStockLabel=Stock decrease for batch products was forced. CashDeskForceDecreaseStockDesc=Decrease first by the oldest eatby and sellby dates. -CashDeskReaderKeyCodeForEnter=Key code for "Enter" defined in barcode reader (Example: 13) +CashDeskReaderKeyCodeForEnter=Key ASCII code for "Enter" defined in barcode reader (Example: 13) ##### Bookmark ##### BookmarkSetup=Järjehoidjate mooduli seadistamine 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. @@ -1875,7 +1901,7 @@ SuppliersInvoiceNumberingModel=Vendor invoices numbering models IfSetToYesDontForgetPermission=If set to a non null value, don't forget to provide permissions to groups or users allowed for the second approval ##### GeoIPMaxmind ##### GeoIPMaxmindSetup=GeoIP Maxmind mooduli seadistamine -PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation.
Examples:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoLite2-Country.mmdb +PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation NoteOnPathLocation=Pane tähele, et IP-aadressi ja riiki siduv andmefail peab olema PHP poolt loetavas kaustas (kontrolli PHP open_basedir seadistust ja failisüsteemi õigusi). YouCanDownloadFreeDatFileTo=Maxmind GeoIP tasuta demo versiooni saab alla laadida aadressilt %s. YouCanDownloadAdvancedDatFileTo=Maxmind GeoIP täielikuma uuendustega versiooni saab alla laadida aadressilt %s. @@ -1926,6 +1952,7 @@ BackupDumpWizard=Wizard to build the database dump file BackupZipWizard=Wizard to build the archive of documents directory 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 a manual process only a privileged user may perform. +InstallModuleFromWebHasBeenDisabledContactUs=Install or development of external modules or dynamic websites, from the application, is currently locked for security purpose. Please contact us if you need to enable this feature. 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 @@ -2053,6 +2080,8 @@ RemoveSpecialChars=Remove special characters COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN_REGEX) COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Duplicate not allowed +RemoveSpecialWords=Clean certain words when generating sub-accounts for customers or suppliers +RemoveSpecialWordsHelp=Specify the words to be cleaned before calculating the customer or supplier account. Use a ";" between each word GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact) GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here HelpOnTooltip=Help text to show on tooltip @@ -2080,6 +2109,7 @@ MailboxTargetDirectory=Mailbox target directory EmailcollectorOperations=Operations to do by collector EmailcollectorOperationsDesc=Operations are executed from top to bottom order MaxEmailCollectPerCollect=Max number of emails collected per collect +TestCollectNow=Test collect CollectNow=Collect now ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s? DateLastCollectResult=Date of latest collect try @@ -2109,6 +2139,7 @@ CodeLastResult=Latest result code NbOfEmailsInInbox=Number of emails in source directory LoadThirdPartyFromName=Load third party searching on %s (load only) LoadThirdPartyFromNameOrCreate=Load third party searching on %s (create if not found) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Message from a conversation initiated by a first email sent from Dolibarr WithoutDolTrackingID=Message from a conversation initiated by a first email NOT sent from Dolibarr @@ -2183,6 +2214,7 @@ ShowProjectLabel=Project Label PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty +PDFIn2Languages=Show labels into PDF in 2 different languages PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2211,12 +2243,12 @@ MailToPartnership=Partnership AGENDA_EVENT_DEFAULT_STATUS=Default event status when creating a event from the form YouShouldDisablePHPFunctions=You should disable PHP functions IfCLINotRequiredYouShouldDisablePHPFunctions=Except if you need to run system commands in custom code, you shoud disable PHP functions -PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an anitivurs program), you must keep PHP functions +PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an antivirus program), you must keep PHP functions NoWritableFilesFoundIntoRootDir=No writable files or directories of the common programs were found into your root directory (Good) RecommendedValueIs=Recommended: %s Recommended=Soovitatav NotRecommended=Not recommended -ARestrictedPath=Some restricted path +ARestrictedPath=Some restricted path for data files CheckForModuleUpdate=Check for external modules updates CheckForModuleUpdateHelp=This action will connect to editors of external modules to check if a new version is available. ModuleUpdateAvailable=An update is available @@ -2264,7 +2296,7 @@ LateWarningAfter="Late" warning after TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode -ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. +ExportUseLowMemoryModeHelp=Use the low memory mode to generate the dump file (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that the file is complete and error message can't be reported if it fails. Use it if you experience not enough memory errors. ModuleWebhookName = Webhook ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL @@ -2288,6 +2320,8 @@ IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices +INVOICE_SHOW_SHIPPING_ADDRESS=Show shipping address +INVOICE_SHOW_SHIPPING_ADDRESSMore=Compulsory mention for France UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. IfThisCategoryIsChildOfAnother=If this category is a child of another one DarkThemeMode=Dark theme mode @@ -2307,3 +2341,34 @@ UsePassword=Use a password UseOauth=Use a OAUTH token Images=Images MaxNumberOfImagesInGetPost=Max number of images allowed in a HTML field submitted in a form +MaxNumberOfPostOnPublicPagesByIP=Max number of posts on public pages with the same IP address in a month +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: +ScriptIsEmpty=The script is empty +ShowHideTheNRequests=Show/hide the %s SQL request(s) +DefinedAPathForAntivirusCommandIntoSetup=Define a path for an antivirus program into %s +TriggerCodes=Triggerable events +TriggerCodeInfo=Enter here the trigger code(s) that must generate a post of a web request (only external URL are allowed). You can enter several trigger codes separated by a comma. +EditableWhenDraftOnly=If unchecked, the value can only be modified when object has a draft status +CssOnEdit=Css on edit pages +CssOnView=Css on view pages +CssOnList=Css on list pages +HelpCssOnEditDesc=The Css used when editing the field.
Example: "minwiwdth100 maxwidth500 widthcentpercentminusx" +HelpCssOnViewDesc=The Css used when viewing the field. +HelpCssOnListDesc=The Css used when field is inside a list table.
Example: "tdoverflowmax200" +RECEPTION_PDF_HIDE_ORDERED=Hide the quantity ordered on the generated documents for receptions +MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT=Show the price on the generated documents for receptions +WarningDisabled=Warning disabled +LimitsAndMitigation=Access limits and mitigation +DesktopsOnly=Desktops only +DesktopsAndSmartphones=Desktops et smartphones +AllowOnlineSign=Allow online signing +AllowExternalDownload=Allow external download (without login, using a shared link) +DeadlineDayVATSubmission=Deadline day for vat submission on the next month +MaxNumberOfAttachementOnForms=Max number of joinded files in a form +IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/eu_ES/admin.lang b/htdocs/langs/eu_ES/admin.lang index ab80d04586d..8b53146ebc7 100644 --- a/htdocs/langs/eu_ES/admin.lang +++ b/htdocs/langs/eu_ES/admin.lang @@ -51,8 +51,6 @@ ClientSortingCharset=Client collation WarningModuleNotActive=%s moduluak gaituta egon behar du WarningOnlyPermissionOfActivatedModules=Aktibatutako moduluekin erlazionatutako baimenak bakarrik erakusten dira hemen. Beste modulu batzuk aktibatu ditzakezu Hasiera->Konfigurazioa->Moduluak orrian. DolibarrSetup=Dolibarr instalatu edo eguneratu -InternalUser=Barneko erabiltzailea -ExternalUser=Kanpoko erabiltzailea InternalUsers=Barneko erabiltzaileak ExternalUsers=Kanpoko erabiltzaileak UserInterface=User interface @@ -294,6 +292,7 @@ MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (default value in php.ini: %s) MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS Port (Not defined into PHP on Unix-like systems) MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (Not defined into PHP on Unix-like systems) MAIN_MAIL_EMAIL_FROM=Sender email for automatic emails (default value in php.ini: %s) +EMailHelpMsgSPFDKIM=To prevent Dolibarr emails to be classified as spam, make sure that the server is authorized to send e-mails from this address by SPF and DKIM configuration MAIN_MAIL_ERRORS_TO=Email used for error returns emails (fields 'Errors-To' in emails sent) MAIN_MAIL_AUTOCOPY_TO= Copy (Bcc) all sent emails to MAIN_DISABLE_ALL_MAILS=Disable all email sending (for test purposes or demos) @@ -439,8 +438,10 @@ Unique=Unique Boolean=Boolean (one checkbox) ExtrafieldPhone = Telefonoa ExtrafieldPrice = Prezioa +ExtrafieldPriceWithCurrency=Price with currency ExtrafieldMail = E-posta ExtrafieldUrl = Url +ExtrafieldIP = IP ExtrafieldSelect = Aukeren zerrenda ExtrafieldSelectList = Taulatik aukeratu ExtrafieldSeparator=Separator (not a field) @@ -450,7 +451,7 @@ 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->fetchNoCompute($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->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Store computed field ComputedpersistentDesc=Computed extra fields will be stored in the database, however, the value will only be recalculated when the object of this field is changed. If the computed field depends on other objects or global data this value might be wrong!! 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) @@ -477,7 +478,7 @@ InstalledInto=Installed into directory %s BarcodeInitForThirdparties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have %s record on %s %s without barcode defined. -InitEmptyBarCode=Init value for next %s empty records +InitEmptyBarCode=Init value for the %s empty barcodes 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 @@ -501,7 +502,8 @@ WarningPHPMail=WARNING: The setup to send emails from the application is using t WarningPHPMailA=- Using the server of the Email Service Provider increases the trustability of your email, so it increases the deliverablity without being flagged as SPAM WarningPHPMailB=- Some Email Service 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 for delivery (be careful also of your email provider's sending quota). WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to send emails is also interesting so all emails sent from application will also be saved into your "Sent" directory of your mailbox. -WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. +WarningPHPMailD=It is therefore recommended to change the sending method of e-mails to the value "SMTP". +WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. 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. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s @@ -514,7 +516,7 @@ PageUrlForDefaultValuesCreate=
Example:
For the form to create a new third 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 AlsoDefaultValuesAreEffectiveForActionCreate=Also note that overwritting default values for form creation works only for pages that were correctly designed (so with parameter action=create or presend...) EnableDefaultValues=Enable customization of default values -EnableOverwriteTranslation=Enable usage of overwritten translation +EnableOverwriteTranslation=Allow customization of translations GoIntoTranslationMenuToChangeThis=A translation has been found for the key with this code. To change this value, you must edit it from Home-Setup-translation. WarningSettingSortOrder=Warning, setting a default sort order may result in a technical error when going on the list page if field is an unknown field. If you experience such an error, come back to this page to remove the default sort order and restore default behavior. Field=Field @@ -643,11 +645,13 @@ Module2300Name=Scheduled jobs Module2300Desc=Scheduled jobs management (alias cron or chrono table) Module2400Name=Events/Agenda Module2400Desc=Track events. Log automatic events for tracking purposes or record manual events or meetings. This is the principal module for good Customer or Vendor Relationship Management. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. 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) +Module2600Name=API / Web services (SOAP server) Module2600Desc=Enable the Dolibarr SOAP server providing API services -Module2610Name=API/Web services (REST server) +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 Purchase orders are currently supported.) @@ -658,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind conversions capabilities Module3200Name=Unalterable Archives Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. +Module3300Name=Module Builder +Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. Module3400Name=Social Networks Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...). Module4000Name=HRM @@ -698,7 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Add features to manage Incoterms Module63000Name=Resources Module63000Desc=Manage resources (printers, cars, rooms, ...) for allocating to events -Permission11=Bezeroen fakturak ikusi +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. +Module94160Name=Receptions +Permission11=Read customer invoices (and payments) Permission12=Bezeroen fakturak sortu/aldatu Permission13=Invalidate customer invoices Permission14=Bezeroaren fakturak balioztatu @@ -714,6 +723,7 @@ Permission27=Delete commercial proposals Permission28=Export commercial proposals Permission31=Produktuak ikusi Permission32=Create/modify products +Permission33=Read prices products Permission34=Produktuak ezabatu Permission36=See/manage hidden products Permission38=Produktuak esportatu @@ -739,6 +749,7 @@ Permission79=Create/modify subscriptions Permission81=Read customers orders Permission82=Create/modify customers orders Permission84=Validate customers orders +Permission85=Generate the documents sales orders Permission86=Send customers orders Permission87=Close customers orders Permission88=Cancel customers orders @@ -840,9 +851,9 @@ Permission286=Export contacts Permission291=Read tariffs Permission292=Set permissions on the tariffs Permission293=Modify customer's tariffs -Permission300=Read barcodes -Permission301=Create/modify barcodes -Permission302=Delete barcodes +Permission301=Generate PDF sheets of barcodes +Permission304=Create/modify barcodes +Permission305=Delete barcodes Permission311=Read services Permission312=Assign service/subscription to contract Permission331=Read bookmarks @@ -874,6 +885,7 @@ Permission525=Access loan calculator Permission527=Export loans Permission531=Read services Permission532=Create/modify services +Permission533=Read prices services Permission534=Delete services Permission536=See/manage hidden services Permission538=Export services @@ -937,7 +949,7 @@ Permission1190=Approve (second approval) purchase orders Permission1191=Export supplier orders and their attributes Permission1201=Get result of an export Permission1202=Create/Modify an export -Permission1231=Read vendor invoices +Permission1231=Read vendor invoices (and payments) Permission1232=Create/modify vendor invoices Permission1233=Validate vendor invoices Permission1234=Delete vendor invoices @@ -968,13 +980,14 @@ Permission3301=Generate new modules Permission4001=Read skill/job/position Permission4002=Create/modify skill/job/position Permission4003=Delete skill/job/position -Permission4020=Read evaluations -Permission4021=Create/modify your evaluation -Permission4022=Validate evaluation -Permission4023=Delete evaluation -Permission4030=See comparison menu +Permission4021=Read evaluations (yours and your subordinates) +Permission4022=Create/modify evaluations +Permission4023=Validate evaluation +Permission4025=Delete evaluation +Permission4028=See comparison menu Permission4031=Read personal information Permission4032=Write personal information +Permission4033=Read all evaluations (even those of user not subordinates) Permission10001=Read website content Permission10002=Create/modify website content (html and javascript content) Permission10003=Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers. @@ -1078,6 +1091,10 @@ DictionaryAssetDisposalType=Type of disposal of assets TypeOfUnit=Type of unit SetupSaved=Setup saved SetupNotSaved=Setup not saved +OAuthServiceConfirmDeleteTitle=Delete OAuth entry +OAuthServiceConfirmDeleteMessage=Are you sure you want to delete this OAuth entry ? All existing tokens for it will also be deleted. +ErrorInEntryDeletion=Error in entry deletion +EntryDeleted=Entry deleted BackToModuleList=Back to Module list BackToDictionaryList=Back to Dictionaries list TypeOfRevenueStamp=Type of tax stamp @@ -1219,7 +1236,7 @@ SetupDescription4=%s -> %s

This software is a suite of m SetupDescription5=Other Setup menu entries manage optional parameters. SetupDescriptionLink=%s - %s SetupDescription3b=Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Security events that are audited NoSecurityEventsAreAduited=No security events are audited. You can enable them from menu %s Audit=Security events @@ -1235,11 +1252,13 @@ BrowserName=Browser name BrowserOS=Browser OS ListOfSecurityEvents=List of Dolibarr security events SecurityEventsPurged=Security events purged +TrackableSecurityEvents=Trackable security events LogEventDesc=Enable logging for specific security events. Administrators the log 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 to administrator users only. Dolibarr user permissions cannot change this restriction. CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. +MoreNetworksAvailableWithModule=More social networks may be available by enabling the module "Social networks". AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and presentation of the application can be modified here. @@ -1257,6 +1276,7 @@ TriggerActiveAsModuleActive=Triggers in this file are active as module %s GeneratedPasswordDesc=Choose the method to be used for auto-generated passwords. DictionaryDesc=Insert all reference data. You can add your values to the default. ConstDesc=This page allows you to edit (override) parameters not available in other pages. These are mostly reserved parameters for developers/advanced troubleshooting only. +MiscellaneousOptions=Miscellaneous options 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 @@ -1290,6 +1310,8 @@ YouMustRunCommandFromCommandLineAfterLoginToUser=You must run this command from YourPHPDoesNotHaveSSLSupport=SSL functions not available in your PHP DownloadMoreSkins=More skins to download SimpleNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset +SimpleRefNumRefModelDesc=Returns the reference number in the format n where n is a sequential auto-incrementing number with no reset +AdvancedNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset SimpleNumRefNoDateModelDesc=Returns the reference number in the format %s-nnnn where nnnn is a sequential auto-incrementing number with no reset ShowProfIdInAddress=Show professional ID with addresses ShowVATIntaInAddress=Hide intra-Community VAT number @@ -1376,7 +1398,7 @@ GetBarCode=Get barcode NumberingModules=Numbering models DocumentModules=Document models ##### Module password generation -PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters in lowercase. +PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters. PasswordGenerationNone=Do not suggest a generated password. Password must be typed in manually. PasswordGenerationPerso=Return a password according to your personally defined configuration. SetupPerso=According to your configuration @@ -1430,6 +1452,10 @@ SuppliersPayment=Vendor payments SupplierPaymentSetup=Vendor payments setup InvoiceCheckPosteriorDate=Check facture date before validation InvoiceCheckPosteriorDateHelp=Validating an invoice will be forbidden if its date is anterior to the date of last invoice of same type. +InvoiceOptionCategoryOfOperations=Display the mention "category of operations" on the invoice. +InvoiceOptionCategoryOfOperationsHelp=Depending on the situation, the mention will appear in the form:
- Category of operations: Delivery of goods
- Category of operations: Provision of services
- Category of operations: Mixed - Delivery of goods & provision of services +InvoiceOptionCategoryOfOperationsYes1=Yes, below the address block +InvoiceOptionCategoryOfOperationsYes2=Yes, in the lower left-hand corner ##### Proposals ##### PropalSetup=Commercial proposals module setup ProposalsNumberingModules=Commercial proposal numbering models @@ -1472,11 +1498,12 @@ WatermarkOnDraftContractCards=Watermark on draft contracts (none if empty) ##### Members ##### MembersSetup=Kideak moduluaren konfigurazioa MemberMainOptions=Aukera nagusiak +MemberCodeChecker=Options for automatic generation of member codes AdherentLoginRequired= Kide bakoitzarentzat Sarrera bat kudeatu AdherentMailRequired=Email required to create a new member MemberSendInformationByMailByDefault=Kideei posta berrespena bidaltzeko kontrol-laukia (balioztapena edo harpidetza berria) aktibatuta dago lehenespenez MemberCreateAnExternalUserForSubscriptionValidated=Create an external user login for each new member subscription validated -VisitorCanChooseItsPaymentMode=Visitor can choose from available payment modes +VisitorCanChooseItsPaymentMode=Visitor can choose from any 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. MembersDocModules=Document templates for documents generated from member record ##### LDAP setup ##### @@ -1738,8 +1765,8 @@ ActivateFCKeditor=Activate advanced editor for: FCKeditorForNotePublic=WYSIWIG creation/edition of the field "public notes" of elements FCKeditorForNotePrivate=WYSIWIG creation/edition of the field "private notes" of elements FCKeditorForCompany=WYSIWIG creation/edition of the field description of elements (except products/services) -FCKeditorForProduct=WYSIWIG creation/edition of the field description of products/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 creation/edition of products description or lines for objects (lines of proposals, orders, invoices, etc...). +FCKeditorForProductDetails2=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. FCKeditorForMailing= WYSIWIG creation/edition for mass eMailings (Tools->eMailing) FCKeditorForUserSignature=WYSIWIG creation/edition of user signature FCKeditorForMail=WYSIWIG creation/edition for all mail (except Tools->eMailing) @@ -1762,7 +1789,7 @@ DetailMenuHandler=Menu handler where to show new menu DetailMenuModule=Module name if menu entry come from a module DetailType=Type of menu (top or left) DetailTitre=Menu label or label code for translation -DetailUrl=URL where menu send you (Absolute URL link or external link with http://) +DetailUrl=URL where menu send you (Relative URL link or external link with https://) DetailEnabled=Condition to show or not entry DetailRight=Condition to display unauthorized grey menus DetailLangs=Lang file name for label code translation @@ -1806,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Use events types (managed in menu Setup -> Dictionaries -> 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_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Which view do you want to open by default when selecting menu Agenda AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (When remind date is reached, a popup is shown by the browser. Each user can disable such notifications from its browser notification setup). AGENDA_REMINDER_BROWSER_SOUND=Enable sound notification @@ -1833,7 +1863,7 @@ StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatib CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sale from Point of Sale. Hence a warehouse is required. CashDeskForceDecreaseStockLabel=Stock decrease for batch products was forced. CashDeskForceDecreaseStockDesc=Decrease first by the oldest eatby and sellby dates. -CashDeskReaderKeyCodeForEnter=Key code for "Enter" defined in barcode reader (Example: 13) +CashDeskReaderKeyCodeForEnter=Key ASCII code for "Enter" defined in barcode reader (Example: 13) ##### Bookmark ##### BookmarkSetup=Bookmark module setup 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. @@ -1871,7 +1901,7 @@ SuppliersInvoiceNumberingModel=Vendor invoices numbering models IfSetToYesDontForgetPermission=If set to a non null value, don't forget to provide permissions to groups or users allowed for the second approval ##### GeoIPMaxmind ##### GeoIPMaxmindSetup=GeoIP Maxmind module setup -PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation.
Examples:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoLite2-Country.mmdb +PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation NoteOnPathLocation=Note that your ip to country data file must be inside a directory your PHP can read (Check your PHP open_basedir setup and filesystem permissions). YouCanDownloadFreeDatFileTo=You can download a free demo version of the Maxmind GeoIP country file at %s. YouCanDownloadAdvancedDatFileTo=You can also download a more complete version, with updates, of the Maxmind GeoIP country file at %s. @@ -1922,6 +1952,7 @@ BackupDumpWizard=Wizard to build the database dump file BackupZipWizard=Wizard to build the archive of documents directory 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 a manual process only a privileged user may perform. +InstallModuleFromWebHasBeenDisabledContactUs=Install or development of external modules or dynamic websites, from the application, is currently locked for security purpose. Please contact us if you need to enable this feature. 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 @@ -1977,6 +2008,7 @@ MailToSendSupplierOrder=Purchase orders MailToSendSupplierInvoice=Vendor invoices MailToSendContract=Kontratuak MailToSendReception=Receptions +MailToExpenseReport=Expense reports MailToThirdparty=Third parties MailToMember=Kideak MailToUser=Erabiltzaileak @@ -2030,6 +2062,7 @@ MAIN_PDF_MARGIN_RIGHT=Right margin on PDF MAIN_PDF_MARGIN_TOP=Top margin on PDF MAIN_PDF_MARGIN_BOTTOM=Bottom margin on PDF MAIN_DOCUMENTS_LOGO_HEIGHT=Height for logo on PDF +DOC_SHOW_FIRST_SALES_REP=Show first sales representative MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Add column for picture on proposal lines MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Width of the column if a picture is added on lines MAIN_PDF_NO_SENDER_FRAME=Hide borders on sender address frame @@ -2047,6 +2080,8 @@ RemoveSpecialChars=Remove special characters COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN_REGEX) COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Duplicate not allowed +RemoveSpecialWords=Clean certain words when generating sub-accounts for customers or suppliers +RemoveSpecialWordsHelp=Specify the words to be cleaned before calculating the customer or supplier account. Use a ";" between each word GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact) GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here HelpOnTooltip=Help text to show on tooltip @@ -2063,11 +2098,18 @@ EmailCollectors=Email collectors 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 +EMailHostPort=Port of email IMAP server +loginPassword=Login/Password +oauthToken=Oauth2 token +accessType=Acces type +oauthService=Oauth service +TokenMustHaveBeenCreated=Module OAuth2 must be enabled and an oauth2 token must have been created with the correct permissions (for example scope "gmail_full" with OAuth for Gmail). MailboxSourceDirectory=Mailbox source directory MailboxTargetDirectory=Mailbox target directory EmailcollectorOperations=Operations to do by collector EmailcollectorOperationsDesc=Operations are executed from top to bottom order MaxEmailCollectPerCollect=Max number of emails collected per collect +TestCollectNow=Test collect CollectNow=Collect now ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s? DateLastCollectResult=Date of latest collect try @@ -2097,6 +2139,7 @@ CodeLastResult=Latest result code NbOfEmailsInInbox=Number of emails in source directory LoadThirdPartyFromName=Load third party searching on %s (load only) LoadThirdPartyFromNameOrCreate=Load third party searching on %s (create if not found) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Message from a conversation initiated by a first email sent from Dolibarr WithoutDolTrackingID=Message from a conversation initiated by a first email NOT sent from Dolibarr @@ -2106,7 +2149,7 @@ CreateCandidature=Create job application FormatZip=Zip MainMenuCode=Menu entry code (mainmenu) ECMAutoTree=Show automatic ECM tree -OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a company name from email subject into a temporary variable:
tmp_var=EXTRACT:SUBJECT:Message from company ([^\n]*)

Examples to set the properties of an object to create:
objproperty1=SET:a hard coded value
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (value is set only if property is not already defined)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. OpeningHours=Opening hours OpeningHoursDesc=Enter here the regular opening hours of your company. ResourceSetup=Configuration of Resource module @@ -2171,6 +2214,7 @@ ShowProjectLabel=Project Label PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty +PDFIn2Languages=Show labels into PDF in 2 different languages PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2199,12 +2243,12 @@ MailToPartnership=Partnership AGENDA_EVENT_DEFAULT_STATUS=Default event status when creating a event from the form YouShouldDisablePHPFunctions=You should disable PHP functions IfCLINotRequiredYouShouldDisablePHPFunctions=Except if you need to run system commands in custom code, you shoud disable PHP functions -PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an anitivurs program), you must keep PHP functions +PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an antivirus program), you must keep PHP functions NoWritableFilesFoundIntoRootDir=No writable files or directories of the common programs were found into your root directory (Good) RecommendedValueIs=Recommended: %s Recommended=Gomendatua NotRecommended=Not recommended -ARestrictedPath=Some restricted path +ARestrictedPath=Some restricted path for data files CheckForModuleUpdate=Check for external modules updates CheckForModuleUpdateHelp=This action will connect to editors of external modules to check if a new version is available. ModuleUpdateAvailable=An update is available @@ -2212,6 +2256,7 @@ NoExternalModuleWithUpdate=No updates found for external modules SwaggerDescriptionFile=Swagger API description file (for use with redoc for example) YouEnableDeprecatedWSAPIsUseRESTAPIsInstead=You enabled deprecated WS API. You should use REST API instead. RandomlySelectedIfSeveral=Randomly selected if several pictures are available +SalesRepresentativeInfo=For Proposals, Orders, Invoices. DatabasePasswordObfuscated=Database password is obfuscated in conf file DatabasePasswordNotObfuscated=Database password is NOT obfuscated in conf file APIsAreNotEnabled=APIs modules are not enabled @@ -2251,7 +2296,7 @@ LateWarningAfter="Late" warning after TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode -ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. +ExportUseLowMemoryModeHelp=Use the low memory mode to generate the dump file (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that the file is complete and error message can't be reported if it fails. Use it if you experience not enough memory errors. ModuleWebhookName = Webhook ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL @@ -2275,7 +2320,55 @@ IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices +INVOICE_SHOW_SHIPPING_ADDRESS=Show shipping address +INVOICE_SHOW_SHIPPING_ADDRESSMore=Compulsory mention for France UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. IfThisCategoryIsChildOfAnother=If this category is a child of another one +DarkThemeMode=Dark theme mode +AlwaysDisabled=Always disabled +AccordingToBrowser=According to browser +AlwaysEnabled=Always Enabled +DoesNotWorkWithAllThemes=Will not work with all themes NoName=No name +ShowAdvancedOptions= Show advanced options +HideAdvancedoptions= Hide advanced options CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: +OauthNotAvailableForAllAndHadToBeCreatedBefore=OAUTH2 authentication is not available for all hosts, and a token with the right permissions must have been created upstream with the OAUTH module +MAIN_MAIL_SMTPS_OAUTH_SERVICE=OAUTH2 authentication service +DontForgetCreateTokenOauthMod=A token with the right permissions must have been created upstream with the OAUTH module +MAIN_MAIL_SMTPS_AUTH_TYPE=Authentification method +UsePassword=Use a password +UseOauth=Use a OAUTH token +Images=Images +MaxNumberOfImagesInGetPost=Max number of images allowed in a HTML field submitted in a form +MaxNumberOfPostOnPublicPagesByIP=Max number of posts on public pages with the same IP address in a month +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: +ScriptIsEmpty=The script is empty +ShowHideTheNRequests=Show/hide the %s SQL request(s) +DefinedAPathForAntivirusCommandIntoSetup=Define a path for an antivirus program into %s +TriggerCodes=Triggerable events +TriggerCodeInfo=Enter here the trigger code(s) that must generate a post of a web request (only external URL are allowed). You can enter several trigger codes separated by a comma. +EditableWhenDraftOnly=If unchecked, the value can only be modified when object has a draft status +CssOnEdit=Css on edit pages +CssOnView=Css on view pages +CssOnList=Css on list pages +HelpCssOnEditDesc=The Css used when editing the field.
Example: "minwiwdth100 maxwidth500 widthcentpercentminusx" +HelpCssOnViewDesc=The Css used when viewing the field. +HelpCssOnListDesc=The Css used when field is inside a list table.
Example: "tdoverflowmax200" +RECEPTION_PDF_HIDE_ORDERED=Hide the quantity ordered on the generated documents for receptions +MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT=Show the price on the generated documents for receptions +WarningDisabled=Warning disabled +LimitsAndMitigation=Access limits and mitigation +DesktopsOnly=Desktops only +DesktopsAndSmartphones=Desktops et smartphones +AllowOnlineSign=Allow online signing +AllowExternalDownload=Allow external download (without login, using a shared link) +DeadlineDayVATSubmission=Deadline day for vat submission on the next month +MaxNumberOfAttachementOnForms=Max number of joinded files in a form +IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/fa_IR/admin.lang b/htdocs/langs/fa_IR/admin.lang index 1b11d861453..9cb64178dbc 100644 --- a/htdocs/langs/fa_IR/admin.lang +++ b/htdocs/langs/fa_IR/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=کادرهای تائید ExtrafieldCheckBoxFromList=کادرهای تائید از جدول ExtrafieldLink=پیوند به یک شیء ComputedFormula=بخش محاسبه شده -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->fetchNoCompute($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->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=بخش محاسبه‌شدۀ فروشگاه ComputedpersistentDesc=بخش‌های محاسبه‌شدۀ اضافی در پایگاه داده ذخیره خواهند شد، به‌هرحال مقدار تنها در زمانی دوباره محاسبه خواهد شد که شیء این بخش تغییر کند. در صورتی که بخش محاسبه‌شده به سایر اشیاء یا داده‌های سراسری وابسته باشد، این مقدار ممکن است خطا باشد!! ExtrafieldParamHelpPassword=خالی رها کردن این بخش به معنای این است که مقدار بدون حفاظت ذخیره خواهد شد (بخش مربوطه باید با یک ستاره روی صفحه پنهان باشد).
'auto' را برای استفاده از قواعد حفاظت برای ذخیرۀ گذرواژه در بانک‌داده ذخیره کنید (مقدار خوانده شده کدبندی شده است و امکان خواندن مقدار اصلی دیگر وجود نخواهد داشت) @@ -645,6 +645,8 @@ Module2300Name=وظایف برنامه‌ریزی‌شده Module2300Desc=مدیریت وظایف برنامه‌ریزی‌شده (alias cron یا chrono table) Module2400Name=رخدادها/جلسات Module2400Desc=رهگیری رخدادها. گزارش‌گیری خودکار رخدادها برای اهداف رهگیری یا ثبت دستی رخدادها یا ملاقات‌ها. این واحد مفهومی برای مشتری خوب یا مدیریت ارتباط با تامین کننده است. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=DMS / ECM Module2500Desc=سامانۀ مدیریت مستندات / مدیریت محتوای الکترونیکی. سازماندهی خودکار مستندات ذخیره شده یا تولید شدۀ شما. اشتراک‌گذاری در صورت نیاز. Module2600Name=API / Web services (SOAP server) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=قابلیت‌های تبدیل GeoIP Maxmind Module3200Name=بایگانی‌های تغییرناپذیر Module3200Desc=فعال کردن یک گزارش کاری غیرقابل تغییر. رخدادها به صورت بلادرنگ بایگانی خواهند شد. گزارش به صورت یک جدول فقط‌خواندنی از رخدادهای زنجیره‌ای در آمده که قابلیت صادرات دارند. برای بعضی از کشورها این واحد، اجباری است. +Module3300Name=Module Builder +Module3200Desc=فعال کردن یک گزارش کاری غیرقابل تغییر. رخدادها به صورت بلادرنگ بایگانی خواهند شد. گزارش به صورت یک جدول فقط‌خواندنی از رخدادهای زنجیره‌ای در آمده که قابلیت صادرات دارند. برای بعضی از کشورها این واحد، اجباری است. Module3400Name=شبکه‌های اجتماعی Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...). Module4000Name=مدیریت منابع انسانی @@ -700,8 +704,10 @@ Module62000Name=Incoterms Module62000Desc=افزودن قابلیت‌های مدیریت Incoterms که شرایط و قرارداهای ارتباطی تجارت بین الملل است Module63000Name=منابع Module63000Desc=مدیریت منابع (چاپ‌گرها، خودروها، اتاق‌ها و غیره) برای انتساب به رخدادها +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=دریافت‌های کالا -Permission11=ملاحظۀ صورت‌حساب‌های مشتریان +Permission11=Read customer invoices (and payments) Permission12=ایجاد/ویرایش صورت‌حساب مشتریان Permission13=Invalidate customer invoices Permission14=اعتباردهی صورت‌حساب مشتریان @@ -943,7 +949,7 @@ Permission1190=تائید (تائید دوم) سفارش خرید Permission1191=Export supplier orders and their attributes Permission1201=دریافت نتیجۀ صادرات Permission1202=ایجاد/ویرایش صادرات -Permission1231=ملاحظۀ صورت‌حساب‌های فروشندگان +Permission1231=Read vendor invoices (and payments) Permission1232=ساخت/ویرایش صورت‌حساب‌های فروشندگان Permission1233=اعتباردهی صورت‌حساب‌های فروشندگان Permission1234=حذف صورت‌حساب‌های فروشندگان @@ -1230,7 +1236,7 @@ SetupDescription4=%s -> %s

This software is a suite of m SetupDescription5=سایر عناوین فهرست برپاسازی برای مدیریت مقادیر اختیاری. SetupDescriptionLink=%s - %s SetupDescription3b=Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Security events that are audited NoSecurityEventsAreAduited=No security events are audited. You can enable them from menu %s Audit=Security events @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive=محرک‌های این فایل در هنگامی GeneratedPasswordDesc=روش ایجاد خودکار گذرواژه را تعیین کنید. DictionaryDesc=همۀ داده‌های مرجع را درج کنید. شما می‌توانید همۀ مقادیر را به شکل پیش‌فرض وارد کنید. ConstDesc=This page allows you to edit (override) parameters not available in other pages. These are mostly reserved parameters for developers/advanced troubleshooting only. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=همۀ سایر مقادیر امنیتی در این قسمت تعریف شده‌اند. LimitsSetup=تنظیمات محدودیت‌ها/تدقیق‌ها LimitsDesc=شما می‌توانید محدودیت‌ها، تعیین دقیق و بهینه سازی مورد استفاده در Dolibarr را اینجا تعریف کنید @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=استفاده از انواع رخداد (قابل‌مد AGENDA_USE_EVENT_TYPE_DEFAULT=ثبت خودکار این مقدار پیش‌فرض برای نوع رخداد در برگۀ ساخت رخداد AGENDA_DEFAULT_FILTER_TYPE=ثبت خودکار این نوع از رخداد در صافی جستجوی نمای جلسات AGENDA_DEFAULT_FILTER_STATUS=ثبت خودکار این وضعیت جلسه در صافی جستجوی نمای جلسات +AGENDA_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Which view do you want to open by default when selecting menu Agenda AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (When remind date is reached, a popup is shown by the browser. Each user can disable such notifications from its browser notification setup). AGENDA_REMINDER_BROWSER_SOUND=فعال‌کردن آگاهی‌رسانی صوتی @@ -2129,6 +2139,7 @@ CodeLastResult=آخرین کد نتیجه NbOfEmailsInInbox=تعداد رایانامه‌های موجود در پوشۀ منبع LoadThirdPartyFromName=بارگذاری جستجوی شخص‌سوم روی %s (فقط بارگذاری) LoadThirdPartyFromNameOrCreate=بارگذاری جستجوی شخص سوم روی %s (ساختن در صورت عدم یافتن) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Message from a conversation initiated by a first email sent from Dolibarr WithoutDolTrackingID=Message from a conversation initiated by a first email NOT sent from Dolibarr @@ -2355,3 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/fa_IR/install.lang b/htdocs/langs/fa_IR/install.lang index 9418dc5ba06..592ae91cb35 100644 --- a/htdocs/langs/fa_IR/install.lang +++ b/htdocs/langs/fa_IR/install.lang @@ -51,7 +51,6 @@ DatabaseName=نام پایگاه‌داده DatabasePrefix=پیش‌شوند جداول پایگاه‌داده DatabasePrefixDescription=پیش‌وند جداول پایگاه داده، اگر خالی بگذارید برابر با llx_ خواهد بود AdminLogin=حساب کاربری برای صاحب پایگاه‌دادۀ Dolibarr. -PasswordAgain=تائید گذرواژه را دوباره‌نویسی کنید AdminPassword=گذرواژۀ صاحب پایگاه‌دادۀ Dolibarr. CreateDatabase=ساخت پایگاه‌داده CreateUser=ساخت حساب کاربری یا اعطای مجوز به حساب کاربری در پایگاه دادۀ Dolibarr @@ -89,7 +88,7 @@ LoginAlreadyExists=قبلا وجود داشته است DolibarrAdminLogin=ورود کاربر مدیر به Dolibarr AdminLoginAlreadyExists=حساب مدیریت Dolibarr '%s' قبلا وجود داشته است. در صورتی که می‌خواهید یکی دیگر بسازید، به عقب برگردید. FailedToCreateAdminLogin=امکان ساخت حساب مدیریتی Dolibarr نبود -WarningRemoveInstallDir=هشدار، به دلایل امنیتی، پس از آن‌که عملیات نصب یا ارتقا پایان یات، شما باید یک فایل با نام install.lock در پوشۀ document ساخته تا امکان استفادۀ تصادفی/نفوذی از ابزار نصب را ببندید. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=در این PHP فعال نیست ChoosedMigrateScript=یک برنامۀ مهاجرت انتخاب کنید DataMigration=مهاجرت پایگاه داده (داده‌ها) @@ -209,7 +208,12 @@ HideNotAvailableOptions=پنهان کردن گزینه‌های خارج از د ErrorFoundDuringMigration=خطا(ها)ئی که در طول انجام انتقال گزارش می‌شوند و منجر به این می‌شوند گام بعدی فعال نباشد. برای نادیده گرفتن خطاها شما باید اینجا کلیک کنید، اما ممکن است برنامه یا برخی قابلیت‌ها تا زمانی که خطاها رفع نشود، کار نکند. YouTryInstallDisabledByDirLock=برنامه تلاش کرده است که خود را ارتقا دهد، اما صفحات نصب/ارتقا به دلایل امنیتی غیرفعال شده (پوشه با یک پسوند .lock پس‌وند گرفته است).
YouTryInstallDisabledByFileLock=برنامه تلاش کرده است خود را ارتقا دهد، اما صفحات نصب/ارتقا به دلایل امنیتی غیر فعال شده است ( چون فایل قفل install.lock در پوشۀ documents دلیبار وجود دارد).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=برای مراجعه به برنامه این‌جا کلیک کنید ClickOnLinkOrRemoveManualy=If an upgrade is in progress, please wait. If not, click on the following link. If you always see this same page, you must remove/rename the file install.lock in the documents directory. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=Loaded FunctionTest=Function test +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/fi_FI/admin.lang b/htdocs/langs/fi_FI/admin.lang index 4c372964f74..a3375fde153 100644 --- a/htdocs/langs/fi_FI/admin.lang +++ b/htdocs/langs/fi_FI/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Valintaruudut ExtrafieldCheckBoxFromList=Valintaruudut taulusta ExtrafieldLink=Linkki objektiin ComputedFormula=Laskettu kenttä -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->fetchNoCompute($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->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Tallenna laskettu kenttä ComputedpersistentDesc=Lasketut ylimääräiset kentät tallennetaan tietokantaan, mutta arvo lasketaan uudelleen vasta, kun tämän kentän kohdetta muutetaan. Jos laskettu kenttä riippuu muista kohteista tai globaaleista tiedoista, tämä arvo saattaa olla väärä!! ExtrafieldParamHelpPassword=Jos jätät tämän kentän tyhjäksi, tämä arvo tallennetaan ilman salausta (kenttä on piilotettava vain tähdellä näytöllä).
Aseta 'auto' käyttämään oletussalaussääntöä salasanan tallentamiseksi tietokantaan (silloin luettu arvo on vain hash, ei mitään tapaa hakea alkuperäistä arvoa) @@ -645,6 +645,8 @@ Module2300Name=Ajastetut työt Module2300Desc=Ajastettujen töiden hallinnointi (alias cron or chrono table) Module2400Name=Events/Agenda Module2400Desc=Seuraa tapahtumia. Kirjaa automaattiset tapahtumat seurantatarkoituksiin tai tallenna manuaaliset tapahtumat tai kokoukset. Tämä on tärkein asiakas- tai toimittajasuhteiden hallinnan moduuli. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=DMS / ECM Module2500Desc=Asiakirjojen hallintajärjestelmä / elektroninen sisällönhallinta. Luomiesi tai tallennettujen asiakirjojesi automaattinen järjestäminen. Jaa ne tarvittaessa. Module2600Name=API / Web services (SOAP server) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind tulokset valmiuksia Module3200Name=Muuttamattomat arkistot Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. +Module3300Name=Module Builder +Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. Module3400Name=Sosiaaliset verkostot Module3400Desc=Ota sosiaalisten verkostojen kentät käyttöön kolmansille osapuolille ja osoitteille (skype, twitter, facebook, ...). Module4000Name=Henkilöstöhallinta @@ -700,8 +704,10 @@ Module62000Name=Incoterm-ehdot Module62000Desc=Add features to manage Incoterms Module63000Name=Resurssit Module63000Desc=Manage resources (printers, cars, rooms, ...) for allocating to events +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Receptions -Permission11=Lue laskut +Permission11=Read customer invoices (and payments) Permission12=Luo laskut Permission13=Mitätöi asiakaslaskut Permission14=Vahvistetut laskut @@ -943,7 +949,7 @@ Permission1190=Hyväksy (toinen vaihe) ostotilaukset Permission1191=Vie toimittajan tilaukset ja niiden määritteet Permission1201=Hanki seurauksena vienti Permission1202=Luo / Muuta vienti -Permission1231=Lue toimittajien laskut +Permission1231=Read vendor invoices (and payments) Permission1232=Luo/Muokkaa toimittajien laskuja Permission1233=Vahvista myyjän laskut Permission1234=Poista toimittajien laskuja @@ -1230,7 +1236,7 @@ SetupDescription4=%s -> %s

This software is a suite of m SetupDescription5=Other Setup menu entries manage optional parameters. SetupDescriptionLink=%s - %s SetupDescription3b=Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Security events that are audited NoSecurityEventsAreAduited=No security events are audited. You can enable them from menu %s Audit=Security events @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive=Käynnistäjät tähän tiedostoon ovat aktiivisia < GeneratedPasswordDesc=Valitse menetelmä, jota käytetään automaattisesti luotuihin salasanoihin. DictionaryDesc=Lisää kaikki viitetiedot. Voit lisätä omia arvoja oletusarvoon. ConstDesc=This page allows you to edit (override) parameters not available in other pages. These are mostly reserved parameters for developers/advanced troubleshooting only. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=Kaikki turvallisuuteen liittyvät parametrit määritetään täällä. LimitsSetup=Rajat / Tarkkuus LimitsDesc=You can define limits, precisions and optimizations used by Dolibarr here @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Use events types (managed in menu Setup -> Dictionaries -> AGENDA_USE_EVENT_TYPE_DEFAULT=Aseta tämä oletusarvo automaattisesti tapahtuman tyypille tapahtuman luontilomakkeessa 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_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Which view do you want to open by default when selecting menu Agenda AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (When remind date is reached, a popup is shown by the browser. Each user can disable such notifications from its browser notification setup). AGENDA_REMINDER_BROWSER_SOUND=Ota käyttöön ilmoitusäänet @@ -2129,6 +2139,7 @@ CodeLastResult=Viimeisin tuloskoodi NbOfEmailsInInbox=Lähdehakemistossa olevien sähköpostien määrä LoadThirdPartyFromName=Lataa kolmannen osapuolen haku sivustolta %s (vain lataus) LoadThirdPartyFromNameOrCreate=Lataa kolmannen osapuolen haku sivustolta %s (luo, jos sitä ei löydy) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Viesti keskustelusta, jonka aloitti ensimmäinen sähköposti, lähetetty Dolibarrista WithoutDolTrackingID=Viesti keskustelusta, jonka aloitti ensimmäinen sähköposti, EI lähetetty Dolibarrista @@ -2355,3 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/fr_BE/admin.lang b/htdocs/langs/fr_BE/admin.lang index 81e53590442..8203f3de772 100644 --- a/htdocs/langs/fr_BE/admin.lang +++ b/htdocs/langs/fr_BE/admin.lang @@ -18,7 +18,6 @@ Module20Name=Propales Module30Name=Factures Target=Objectif OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
Recommended=Recommandée IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/fr_BE/hrm.lang b/htdocs/langs/fr_BE/hrm.lang new file mode 100644 index 00000000000..c71599d9ff1 --- /dev/null +++ b/htdocs/langs/fr_BE/hrm.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - hrm +RequiredRank=Required rank for this job +OrJobToCompare=Compare to job skills requirements diff --git a/htdocs/langs/fr_BE/install.lang b/htdocs/langs/fr_BE/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/fr_BE/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/fr_CA/admin.lang b/htdocs/langs/fr_CA/admin.lang index 7a2585bf734..4547055d218 100644 --- a/htdocs/langs/fr_CA/admin.lang +++ b/htdocs/langs/fr_CA/admin.lang @@ -190,6 +190,7 @@ DeleteFiscalYear=Supprimer la période comptable ConfirmDeleteFiscalYear=Êtes-vous sûr de supprimer cette période comptable? ShowFiscalYear=Afficher la période comptable SalariesSetup=Configuration du module salariés +InstallModuleFromWebHasBeenDisabledByFile=L'installation de module externe depuis l'application a été désactivé par l'administrator. Vous devez lui demander de supprimer le fichier %s pour permettre cette fonctionnalité. ConfFileMustContainCustom=L'installation ou la construction d'un module externe à partir de l'application doit sauvegarder les fichiers du module dans le répertoire %s. Pour que ce répertoire soit traité par Dolibarr, vous devez configurer votre conf / conf.php pour ajouter les 2 lignes de directive:
$ dolibarr_main_url_root_alt = '/ custom';
$ dolibarr_main_document_root_alt = '%s / custom'; HighlightLinesOnMouseHover=Mettez en surbrillance les lignes de table lorsque déplacement de la souris passe au-dessus PressF5AfterChangingThis=Appuyez sur CTRL + F5 sur le clavier ou effacez votre cache de navigateur après avoir changé cette valeur pour l'avoir efficace @@ -234,6 +235,4 @@ LandingPage=Page d'atterrissage ModuleEnabledAdminMustCheckRights=Le module a été activé. Les autorisations pour les modules activés ont été données uniquement aux utilisateurs administratifs. Vous devrez peut-être accorder des autorisations aux autres utilisateurs ou groupes manuellement si nécessaire. BaseCurrency=Monnaie de référence de la société (entrer dans la configuration de l'entreprise pour modifier cela) FormatZip=Code postal -OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a company name from email subject into a temporary variable:
tmp_var=EXTRACT:SUBJECT:Message from company ([^\n]*)

Examples to set the properties of an object to create:
objproperty1=SET:a hard coded value
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (value is set only if property is not already defined)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. UseSearchToSelectResource=Utilisez un formulaire de recherche pour choisir une ressource (plutôt qu'une liste déroulante). -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
diff --git a/htdocs/langs/fr_CH/admin.lang b/htdocs/langs/fr_CH/admin.lang index 48875993c72..c809b652f17 100644 --- a/htdocs/langs/fr_CH/admin.lang +++ b/htdocs/langs/fr_CH/admin.lang @@ -13,7 +13,6 @@ LDAPMembersSynchro=Membres LDAPMembersTypesSynchro=Types de membres MailToMember=Membres OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
Recommended=Recommandée IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/fr_CH/hrm.lang b/htdocs/langs/fr_CH/hrm.lang new file mode 100644 index 00000000000..c71599d9ff1 --- /dev/null +++ b/htdocs/langs/fr_CH/hrm.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - hrm +RequiredRank=Required rank for this job +OrJobToCompare=Compare to job skills requirements diff --git a/htdocs/langs/fr_CH/install.lang b/htdocs/langs/fr_CH/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/fr_CH/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/fr_CI/admin.lang b/htdocs/langs/fr_CI/admin.lang index c5ab56cb8d8..4117e853156 100644 --- a/htdocs/langs/fr_CI/admin.lang +++ b/htdocs/langs/fr_CI/admin.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - admin OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/fr_CI/hrm.lang b/htdocs/langs/fr_CI/hrm.lang new file mode 100644 index 00000000000..c71599d9ff1 --- /dev/null +++ b/htdocs/langs/fr_CI/hrm.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - hrm +RequiredRank=Required rank for this job +OrJobToCompare=Compare to job skills requirements diff --git a/htdocs/langs/fr_CI/install.lang b/htdocs/langs/fr_CI/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/fr_CI/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/fr_CM/admin.lang b/htdocs/langs/fr_CM/admin.lang index c5ab56cb8d8..4117e853156 100644 --- a/htdocs/langs/fr_CM/admin.lang +++ b/htdocs/langs/fr_CM/admin.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - admin OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/fr_CM/hrm.lang b/htdocs/langs/fr_CM/hrm.lang new file mode 100644 index 00000000000..c71599d9ff1 --- /dev/null +++ b/htdocs/langs/fr_CM/hrm.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - hrm +RequiredRank=Required rank for this job +OrJobToCompare=Compare to job skills requirements diff --git a/htdocs/langs/fr_CM/install.lang b/htdocs/langs/fr_CM/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/fr_CM/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index ae53079b4a8..d98626a2a94 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Cases à cocher ExtrafieldCheckBoxFromList=Cases à cocher issues d'une table ExtrafieldLink=Lien vers un objet ComputedFormula=Champ calculé -ComputedFormulaDesc=Vous pouvez entrer ici une formule utilisant les propriétés objet ou tout code PHP pour obtenir des valeurs dynamiques. Vous pouvez utiliser toute formule compatible PHP, incluant l'opérateur conditionnel "?", et les objets globaux suivants : $db, $conf, $langs, $mysoc, $user, $object.
ATTENTION : Seulement quelques propriétés de l'objet $object pourraient être disponibles. Si vous avez besoin de propriétés non chargées, créez vous même une instance de l'objet dans votre formule, comme dans le deuxième exemple.
Utiliser un champs calculé signifie que vous ne pouvez pas entrer vous même toute valeur à partir de l'interface. Aussi, s'il y a une erreur de syntaxe, la formule pourrait ne rien retourner.

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

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

Un autre exemple de formule pour forcer le rechargement d'un objet et de son objet parent:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetch($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref : 'Objet parent projet non trouvé' +ComputedFormulaDesc=Vous pouvez entrer ici une formule en utilisant d’autres propriétés de l'objet ou tout autre code PHP pour obtenir une valeur calculée dynamique. Vous pouvez utiliser toutes les formules compatibles PHP, y compris l'opérateur conditionnel "?", ainsi que les objets globaux suvants : $db, $conf, $langs, $mysoc, $user, $objectoffield.
ATTENTION : Si vous avez besoin des propriétés d’un objet non disponible, il vous suffit de le charger même dans votre formule comme dans le deuxième exemple.
L'utilisation d'un champ calculé signifie que vous ne pouvez pas entrer vous-même une valeur depuis l’interface. De même, en cas d'erreur de syntaxe, la formule peut ne rien retourner.

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

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

Autre exemple de formule pour forcer le chargement d'un objet et de ses objets parents :
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref : 'Projet parent introuvable’ Computedpersistent=Stocker le champ calculé ComputedpersistentDesc=Les champs supplémentaires calculés seront stockés dans la base de données. Toutefois, la valeur ne sera recalculée que lorsque l'objet de ce champ sera modifié. Si le champ calculé dépend d'autres objets ou de données globales, cette valeur peut être fausse !! ExtrafieldParamHelpPassword=Laissez ce champ vide signifie que la valeur sera stockée sans cryptage (le champ doit juste être caché avec des étoiles sur l'écran).
Définissez la valeur 'auto' pour utiliser la règle de cryptage par défaut pour enregistrer le mot de passe dans la base de données (ensuite la valeur utilisée sera le hash uniquement, sans moyen de retrouver la valeur d'origine) @@ -704,8 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Ajouts de fonctionnalités pour gérer les incoterms Module63000Name=Ressources Module63000Desc=Gère les ressources (imprimantes, voitures, salles...). les ressources peuvent être affectées à des événements. +Module66000Name=Activer l'authentification OAuth2 +Module66000Desc=Fournit un outil pour générer et gérer les jetons OAuth2 Module94160Name=Réceptions -Permission11=Consulter les factures clients +Permission11=Lire les factures (et paiements) clients Permission12=Créer/modifier les factures clients Permission13=Dé-valider les factures clients Permission14=Valider les factures clients @@ -947,7 +949,7 @@ Permission1190=Approuver les commandes fournisseur (second niveau) Permission1191=Exporter les commandes fournisseurs et leurs attributs Permission1201=Récupérer le résultat d'un export Permission1202=Créer/modifier un export -Permission1231=Consulter les factures fournisseur +Permission1231=Lire les factures (et paiements) fournisseurs Permission1232=Créer les factures fournisseur Permission1233=Valider les factures fournisseur Permission1234=Supprimer les factures fournisseur @@ -1234,7 +1236,7 @@ SetupDescription4= %s -> %s

Ce logiciel est un ensembl SetupDescription5=Les autres entrées de configuration gèrent des paramètres facultatifs. SetupDescriptionLink= %s - %s SetupDescription3b=Paramètres de base utilisés pour personnaliser le comportement par défaut de votre application (par exemple pour les fonctionnalités liées au pays). -SetupDescription4b=Ce logiciel est une suite de nombreux modules/applications. Les modules liés à vos besoins doivent être activés et configurés. Les entrées de menu apparaîtront avec l'activation de ces modules. +SetupDescription4b=Ce logiciel est une suite de nombreux modules/applications. Les modules correspondants à vos besoins doivent être activés et configurés. Les entrées de menu apparaîtront avec l'activation de ces modules. AuditedSecurityEvents=Événements de sécurité audités NoSecurityEventsAreAduited=Aucun événement de sécurité n'est audité. Vous pouvez les activer à partir du menu %s Audit=Événements de sécurité @@ -2366,3 +2368,7 @@ MaxNumberOfAttachementOnForms=Nombre maximum de fichiers joints dans un formulai IfDefinedUseAValueBeetween=Si défini, utilisez une valeur entre %s et %s Reload=Recharger ConfirmReload=Confirmer le rechargement du module +WarningModuleHasChangedLastVersionCheckParameter=Attention : le module %sa configuré un paramètre de vérification de sa version à chaque chargement de page. Cette mauvaise pratique, non autorisée, pourrait rendre instable la page d'administration des modules. Veuillez contacter l'auteur du module pour qu'il régle ce problème. +WarningModuleHasChangedSecurityCsrfParameter=Attention : le module %sa désactivé la sécurisation CSRF de votre instance. Cette action est suspecte et votre installation pourrait ne plus être sécurisée. Veuillez contacter l'auteur du module pour obtenir des explications. +EMailsInGoingDesc=La réception des e-mails est gérée par le module %s. Vous devez l'activer et le configurer si vous avez besoin de prendre en charge messages entrants. +MAIN_IMAP_USE_PHPIMAP=Utiliser la librairie PHP-IMAP pour la prise en charge IMAP, à la place du support IMAP natif de PHP. Ceci permet également l'utilisation d'une connexion OAuth2 pour IMAP (le module OAuth doit aussi être activé). diff --git a/htdocs/langs/fr_FR/agenda.lang b/htdocs/langs/fr_FR/agenda.lang index e5a5fe354c4..86e97805dd5 100644 --- a/htdocs/langs/fr_FR/agenda.lang +++ b/htdocs/langs/fr_FR/agenda.lang @@ -177,5 +177,6 @@ ReminderType=Type de rappel AddReminder=Créer une notification de rappel automatique pour cet événement ErrorReminderActionCommCreation=Erreur lors de la création de la notification de rappel pour cet événement BrowserPush=Notification par Popup navigateur +Reminders=Rappels ActiveByDefault=Activé par défaut Until=jusqu'à diff --git a/htdocs/langs/fr_FR/banks.lang b/htdocs/langs/fr_FR/banks.lang index 35de9806932..bd9ea2ee1b3 100644 --- a/htdocs/langs/fr_FR/banks.lang +++ b/htdocs/langs/fr_FR/banks.lang @@ -49,6 +49,9 @@ BankAccountDomiciliation=Domiciliation du compte BankAccountCountry=Pays du compte BankAccountOwner=Nom du propriétaire du compte BankAccountOwnerAddress=Adresse du propriétaire du compte +BankAccountOwnerZip=Code postal du détenteur du compte +BankAccountOwnerTown=Ville du détenteur du compte +BankAccountOwnerCountry=Pays du détenteur du compte CreateAccount=Créer compte NewBankAccount=Nouveau compte NewFinancialAccount=Nouveau compte financier @@ -185,4 +188,3 @@ AlreadyOneBankAccount=un compte bancaire est déjà défini SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation=Virement SEPA : 'Type de paiement' au niveau 'Virement' SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp=A la génération d'un fichier SEPA XML pour les virements, la section "PaymentTypeInformation" peut maintenant être placée dans la section "CreditTransferTransactionInformation" (à la place de la section "Payment").\nNous recommandons fortement de ne pas cocher cette case pour conserver "PaymentTypeInformation" dans "Payment level" car toutes les banques ne l'accepterons pas obligatoirement au niveau de "CreditTransferTransactionInformation". Contactez votre banque avant de modifier ce paramètre. ToCreateRelatedRecordIntoBank=Pour créer un enregistrement bancaire associé manquant -BanklineExtraFields=Extrait de la ligne bancaire diff --git a/htdocs/langs/fr_FR/dict.lang b/htdocs/langs/fr_FR/dict.lang index 7c7df064619..f86a03411db 100644 --- a/htdocs/langs/fr_FR/dict.lang +++ b/htdocs/langs/fr_FR/dict.lang @@ -247,6 +247,7 @@ CountryJE=Jersey CountryME=Monténégro CountryBL=Saint-Barthélemy CountryMF=Saint-Martin +CountryXK=Kosovo ##### Civilities ##### CivilityMME=Madame diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang index 397971c24c2..5948fedc37a 100644 --- a/htdocs/langs/fr_FR/errors.lang +++ b/htdocs/langs/fr_FR/errors.lang @@ -304,6 +304,11 @@ ErrorValueCantBeNull=La valeur pour %s ne peut pas être nulle ErrorDateOfMovementLowerThanDateOfFileTransmission=La date de l'opération bancaire ne peut être inférieure à la date de transmission du fichier ErrorTooMuchFileInForm=Trop de fichiers dans le formulaire, le nombre maximum est de %s fichier(s) ErrorSessionInvalidatedAfterPasswordChange=La session a été invalidée suite à un changement de mot de passe, d'état ou de dates de validité. Veuillez vous reconnecter. +ErrorExistingPermission = La permission %s pour l'objet %s existe déjà. +ErrorFieldExist=La valeur pour %s existe déjà +ErrorEqualModule=Module invalide dans %s. +ErrorFieldValue=La valeur pour %s est incorrecte +ErrorCoherenceMenu=%sest requise lorsque % vaut LEFT # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Votre paramètre PHP upload_max_filesize (%s) est supérieur au paramètre PHP post_max_size (%s). Ceci n'est pas une configuration cohérente. @@ -342,6 +347,7 @@ WarningPaypalPaymentNotCompatibleWithStrict=La valeur 'Strict' fait que les fonc WarningThemeForcedTo=Attention, le choix du thème a été forcé à %s par la constante cachée MAIN_FORCETHEME WarningPagesWillBeDeleted=Attention, cela supprimera également toutes les pages/conteneurs existants du site. Vous devriez exporter votre site Web avant, afin d'avoir une sauvegarde pour le réimporter plus tard. WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal=La validation automatique est désactivée lorsque l'option de diminution du stock est définie sur "Validation de la facture". +WarningModuleNeedRefrech = Le module %s a été désactivé. N'oubliez pas de le réactiver # Validate RequireValidValue = Valeur non valide diff --git a/htdocs/langs/fr_FR/install.lang b/htdocs/langs/fr_FR/install.lang index f8eeeef324d..deba44bf403 100644 --- a/htdocs/langs/fr_FR/install.lang +++ b/htdocs/langs/fr_FR/install.lang @@ -88,7 +88,7 @@ LoginAlreadyExists=Existe déjà DolibarrAdminLogin=Identifiant de l'utilisateur administrateur de Dolibarr AdminLoginAlreadyExists=Compte administrateur Dolibarr '%s' déjà existant. Revenez en arrière si vous voulez en créer un autre. FailedToCreateAdminLogin=Echec de la création du compte administrateur Dolibarr -WarningRemoveInstallDir=Attention, pour des raisons de sécurité, afin de bloquer une nouvelle utilisation des outils d'installation/migration, une fois l'installation terminée, il est conseillé de placer dans le répertoire document de Dolibarr un fichier nommé install.lock en lecture seule. +WarningRemoveInstallDir=Attention, pour des raisons de sécurité, une fois la procédure d'installation terminée, vous devez ajouter un fichier nommé install.lock dans le dossier des documents de Dolibarr. Ceci permet de prévenir d'une réutilisation accidentelle ou malveillante des outils d'installation. FunctionNotAvailableInThisPHP=Non disponible sur ce PHP ChoosedMigrateScript=Choix du script de migration DataMigration=Migration de la base (données) @@ -208,8 +208,10 @@ HideNotAvailableOptions=Cacher les choix 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=L'application essaie de se mettre à jour, mais les pages d'installation / mise à jour 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).
+YouTryUpgradeDisabledByMissingFileUnLock=L'application a tenté de se mettre à jour elle-même, mais la procédure de mise à jour n'est actuellement pas permise.
ClickHereToGoToApp=Cliquez ici pour aller sur votre application ClickOnLinkOrRemoveManualy=Si une mise à niveau est en cours, veuillez patienter. Si non, cliquez sur le lien suivant. Si vous atteignez toujours cette page, vous devez supprimer manuellement le fichier install.lock dans le répertoire documents +ClickOnLinkOrCreateUnlockFileManualy=Si une mise à jour est en cours, veuillez patienter… Sinon, vous devez créer un fichier upgrade.unlock dans le dossier des documents Dolibarr. Loaded=Chargé FunctionTest=Fonction test NodoUpgradeAfterDB=Aucune action demandée par les modules externes après la mise à jour de la base de données diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang index d809f719a7b..619dde3f5a1 100644 --- a/htdocs/langs/fr_FR/main.lang +++ b/htdocs/langs/fr_FR/main.lang @@ -923,6 +923,7 @@ NotAllExportedMovementsCouldBeRecordedAsExported=Tous les mouvements exportés n Miscellaneous=Divers Calendar=Calendrier GroupBy=Grouper par... +GroupByX=Grouper par %s ViewFlatList=Voir vue liste ViewAccountList=Voir le grand livre ViewSubAccountList=Voir le grand livre auxiliaire @@ -1222,3 +1223,5 @@ AddToContacts=Ajouter l'adresse à mes contacts LastAccess=Dernier accès UploadAnImageToSeeAPhotoHere=Téléverser une image depuis l'onglet %s pour afficher une image ici LastPasswordChangeDate=Date du dernier changement de mot de passe +PublicVirtualCardUrl=Page de carte de visite virtuelle +TreeView=Vue arborescente diff --git a/htdocs/langs/fr_FR/members.lang b/htdocs/langs/fr_FR/members.lang index 024cef5226b..4192a038508 100644 --- a/htdocs/langs/fr_FR/members.lang +++ b/htdocs/langs/fr_FR/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=Statistiques sur les cotisations NbOfSubscriptions=Nombre de cotisations AmountOfSubscriptions=Montant des cotisations TurnoverOrBudget=Chiffre affaire (pour société) ou Budget (asso ou collectivité) -DefaultAmount=Montant par défaut de la cotisation +DefaultAmount=Montant de contribution par défaut (uniquement utilisé en l'absence de montant définit au niveau du type de membre) +MinimumAmount=Montant minimum (uniquement utilisé lorsque le montant de contribution est libre) CanEditAmount=Le montant de l'abonnement est gratuit CanEditAmountDetail=Le visiteur peut choisir/modifier le montant de sa contribution quel que soit le type d'adhérent AmountIsLowerToMinimumNotice=Le montant est inférieur au montant minimum de %s diff --git a/htdocs/langs/fr_FR/modulebuilder.lang b/htdocs/langs/fr_FR/modulebuilder.lang index 9cd5fe23a00..b7f0cff3602 100644 --- a/htdocs/langs/fr_FR/modulebuilder.lang +++ b/htdocs/langs/fr_FR/modulebuilder.lang @@ -165,3 +165,11 @@ BadValueForType=Mauvaise valeur pour le type %s DefinePropertiesFromExistingTable=Définir des propriétés à partir d'une table existante DefinePropertiesFromExistingTableDesc=Si une table dans la base de données (pour l'objet à créer) existe déjà, vous pouvez l'utiliser pour définir les propriétés de l'objet. DefinePropertiesFromExistingTableDesc2=Laisser vide si la table n'existe pas encore. Le générateur de code utilisera différents types de champs pour créer un exemple de table que vous pourrez modifier ultérieurement. +GeneratePermissions=Je souhaite ajouter les droits pour cet objet +GeneratePermissionsHelp=générer les droits par défaut pour cet objet +PermissionDeletedSuccesfuly=Les permissions ont été retirées avec succès +PermissionUpdatedSuccesfuly=Les permissions ont été mises à jour avec succès +PermissionAddedSuccesfuly=Les permissions ont été ajoutées avec succès +MenuDeletedSuccessfuly=Le menu a été supprimé avec succès +MenuAddedSuccessfuly=Le menu a été ajouté avec succès +MenuUpdatedSuccessfuly=Le menu a été mis à jour avec succès diff --git a/htdocs/langs/fr_FR/oauth.lang b/htdocs/langs/fr_FR/oauth.lang index e884f616f39..58d3b485ecb 100644 --- a/htdocs/langs/fr_FR/oauth.lang +++ b/htdocs/langs/fr_FR/oauth.lang @@ -31,8 +31,9 @@ OAUTH_GITHUB_SECRET=Secret Oauth GitHub OAUTH_URL_FOR_CREDENTIAL=Accédez à cette page pour créer ou obtenir votre identifiant OAuth et votre secret OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live -OAUTH_ID=ID OAuth +OAUTH_ID=ID client OAuth OAUTH_SECRET=Code secret OAuth +OAUTH_TENANT=Tenant OAuth OAuthProviderAdded=Fournisseur OAuth ajouté AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Une entrée OAuth pour ce fournisseur et ce libellé existe déjà URLOfServiceForAuthorization=URL fournie par le service OAuth pour l'authentification diff --git a/htdocs/langs/fr_FR/users.lang b/htdocs/langs/fr_FR/users.lang index 1f55490f476..964f77e516d 100644 --- a/htdocs/langs/fr_FR/users.lang +++ b/htdocs/langs/fr_FR/users.lang @@ -132,4 +132,3 @@ ShowAllPerms=Afficher toutes les lignes d'autorisation HideAllPerms=Masquer toutes les lignes d'autorisation UserPublicPageDesc=Vous pouvez activer une carte virtuelle pour cet utilisateur. Une URL avec le profil utilisateur et un code barre sera disponible pour permettre à quiconque muni d'un smartphone de le scanner et d'ajouter le contact à son carnet d'adresse. EnablePublicVirtualCard=Activer la fiche utilisateur virtuelle publique -PublicVirtualCardUrl=Fiche utilisateur virtuelle publique diff --git a/htdocs/langs/fr_GA/admin.lang b/htdocs/langs/fr_GA/admin.lang index 10a19479a6e..0054bf2e414 100644 --- a/htdocs/langs/fr_GA/admin.lang +++ b/htdocs/langs/fr_GA/admin.lang @@ -2,6 +2,5 @@ Module20Name=Devis Module30Name=Factures OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/fr_GA/install.lang b/htdocs/langs/fr_GA/install.lang new file mode 100644 index 00000000000..0d1a1ba2c9f --- /dev/null +++ b/htdocs/langs/fr_GA/install.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - install +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. diff --git a/htdocs/langs/gl_ES/admin.lang b/htdocs/langs/gl_ES/admin.lang index 325d245ce24..90180ce3ae1 100644 --- a/htdocs/langs/gl_ES/admin.lang +++ b/htdocs/langs/gl_ES/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Caixa de verificación ExtrafieldCheckBoxFromList=Caixa de verificación da táboa ExtrafieldLink=Vínculo a un obxecto ComputedFormula=Campo combinado -ComputedFormulaDesc=Pode introducir aquí unha fórmula utilizando outras propiedades de obxecto o calquera código PHP para obter un valor calculado dinámico. Pode utilizar calquera fórmula compatible con PHP, incluído o operador de condición "?" e os obxectos globais seguintes: $db, $conf, $langs, $mysoc, $user, $object.
ATENCIÓN: Só algunhas propiedades de $object poden estar dispoñibles. Se precisa propiedades non cargadas, só procure o obxecto na súa fórmula como no segundo exemplo.
Usar un campo computado significa que non pode ingresar ningún valor dende a interfaz. Tamén, se hai un error de sintaxe, e posible que a fórmula non devolva nada.

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

Exemplo de recarga de obxecto
(($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'

Outro exemplo de fórmula para forzar a carga do obxecto e o seu obxecto principal:
(($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=Pode introducir aquí unha fórmula usando outras propiedades do obxecto ou calquera codigo PHP para obter un valor dinámico calculado. Pode usar calquera fórmula compatible con PHP, incluíndo o "?" operador de condición e o seguinte obxecto global: $db, $conf, $langs, $mysoc, $user, $objectoffield .
AVISO : Se precisa propiedades dun obxecto que non está cargado, só ten que buscar o obxecto na súa fórmula como no segundo exemplo.
Usar un campo calculado significa que non pode introducir ningún valor desde a interface. Ademais, se hai un erro de sintaxe, a fórmula pode non devolver nada.

Exemplo de fórmula:
$objectoffield->id < 10 ? round($objectoffield-> id / 2, 2): ($objectoffield->id + 2 * $user->ocid, *$(user->ocid,) )

Exemplo para recargar o obxecto
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield-->id)options'extraloadedobj0 ? ->capital / 5: '-1')

Outro exemplo de fórmula para forzar a carga do obxecto e do seu obxecto pai:
(($reloadedobj = new Task($db)) && ($reloadedNoobj) ->id) > 0) && ($secondloadedobj = novo proxecto ($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Non se atopou o proxecto principal' Computedpersistent=Almacenar campo combinado ComputedpersistentDesc=Os campos adicionais calculados gardaranse na base de datos, con todo, o valor só se recalculará cando se cambie o obxecto deste campo. Se o campo calculado depende doutros obxectos ou datos globais, este valor pode ser incorrecto. ExtrafieldParamHelpPassword=Deixar este campo en branco significa que este valor gardarase sen cifrado (o campo estará oculto coa estrelas na pantalla).
Estableza aquí o valor "auto" para usar a regra de cifrado predeterminada para gardar o contrasinal na base de datos (entón o valor lido será só o hash, non hai forma de recuperar o valor orixinal) @@ -704,8 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Engade funcións para xestionar Incoterms Module63000Name=Recursos Module63000Desc=Xestionar recursos (impresoras, automóbiles, salas, ...) pode asignalos a eventos +Module66000Name=Activa a autenticación OAuth2 +Module66000Desc=Proporciona unha ferramenta para xerar e xestionar tokens OAuth2. O token pode ser usado por outros módulos. Module94160Name=Recepcións -Permission11=Consultar facturas de cliente +Permission11=Ler facturas a clientes (e pagamentos) Permission12=Crear/Modificar facturas de cliente Permission13=Invalidar facturas de cliente Permission14=Validar facturas de cliente @@ -947,7 +949,7 @@ Permission1190=Aprobar (segunda aprobación) pedimentos a provedores Permission1191=Exportar pedimentos a provedores e os seus atributos Permission1201=Obter resultado dunha exportación Permission1202=Crear/codificar exportacións -Permission1231=Consultar facturas de provedores +Permission1231=Ler facturas de provedores (e paggamentos) Permission1232=Crear facturas de provedores Permission1233=Validar facturas de provedores Permission1234=Eliminar facturas de provedores @@ -1234,7 +1236,7 @@ SetupDescription4=%s -> %s

Este software é unha colec SetupDescription5=Outras entradas do menú de configuración xestionan parámetros opcionais. SetupDescriptionLink=%s - %s SetupDescription3b=Parámetros básicos empregados para personalizar o comportamento predeterminado da súa aplicación (por exemplo, para funcións relacionadas co país). -SetupDescription4b=Este software é unha suite de moitos módulos/aplicacións. Os módulos relacionados coas súas necesidades deben ser habilitados e configurados. As entradas no menú aparecerán ao habilitar eses módulos. +SetupDescription4b=Este software é un conxunto de moitos módulos/aplicacións. Os módulos relacionados coas súas necesidade teñen que ser habilitados. As entradas do menú aparecerán ao habilitar eses módulos. AuditedSecurityEvents=Eventos de seguridade auditados NoSecurityEventsAreAduited=Non se auditan eventos de seguridade. Pode activalos no menu %s Audit=Eventos de seguridade @@ -2366,3 +2368,7 @@ MaxNumberOfAttachementOnForms=Número máximo de ficheiros unidos nun formulario IfDefinedUseAValueBeetween=Se está definido, use un valor entre %s e %s Reload=Recarga ConfirmReload=Confirmar recarga do módulo +WarningModuleHasChangedLastVersionCheckParameter=Aviso: o módulo %s estableceu un parámetro para comprobar a súa versión en cada acceso á páxina. Esta é unha práctica mala e non permitida que pode facer que a páxina para administrar módulos sexa inestable. Poñase en contacto co autor do módulo para solucionar isto. +WarningModuleHasChangedSecurityCsrfParameter=Aviso: o módulo %s desactivou a seguridade CSRF da súa instancia. Esta acción é sospeitosa e é posible que a súa instalación non estea xa protexida. Póñase en contacto co autor do módulo para obter explicacións. +EMailsInGoingDesc=Os correos electrónicos entrantes son xestionados polo módulo %s. Debe activalo e configuralo se precisa admitir correos electrónicos entrantes. +MAIN_IMAP_USE_PHPIMAP=Use a biblioteca PHP-IMAP para IMAP en lugar da nitivae PHP IMAP. Isto tamén permite o uso dunha conexión OAuth2 para IMAP (o módulo OAuth tamén debe estar activado). diff --git a/htdocs/langs/gl_ES/agenda.lang b/htdocs/langs/gl_ES/agenda.lang index 9d2bf347b43..662d94f2918 100644 --- a/htdocs/langs/gl_ES/agenda.lang +++ b/htdocs/langs/gl_ES/agenda.lang @@ -31,7 +31,7 @@ ViewWeek=Vista semanal ViewPerUser=Vista por usuario ViewPerType=Vista por tipo AutoActions= Inclusión automática na axenda -AgendaAutoActionDesc= Aquí podes definir os eventos que queras que Dolibarr cre automáticamente en Axenda. Se non sinalas nada, só as accións manuais serán visualizadas na axenda. O seguimento automático de accións comerciais sobre obxectos (validación, cambio de estado), non será gardado. +AgendaAutoActionDesc= Aquí pode definir os eventos que quera que Dolibarr cree automáticamente na Axenda. Se non sinala nada, só as accións manuais serán visualizadas na axenda. O seguimento automático de accións comerciais sobre obxectos (validación, cambio de estado), non será gardado. AgendaSetupOtherDesc= Esta páxina ten opcións que permiten a configuración da exportación dos eventos de Dolibarr a un calendario externo (Thunderbird, Google Calendar etc...) AgendaExtSitesDesc=Esta páxina permite configurar fontes externas de calendarios para ver os seus eventos dentro da axenda Dolibarr. ActionsEvents=Eventos para que Dolibarr cre unha acción na axenda automáticamente @@ -177,5 +177,6 @@ ReminderType=Tipo de devolución da chamada AddReminder=Crear unha notificación de lembranza automática para este evento ErrorReminderActionCommCreation=Erro ao crear a notificación de lembranza para este evento BrowserPush=Notificación emerxente no navegador +Reminders=Lembretes ActiveByDefault=Activado por defecto Until=ata que diff --git a/htdocs/langs/gl_ES/banks.lang b/htdocs/langs/gl_ES/banks.lang index e21e90b021d..d1328f1195f 100644 --- a/htdocs/langs/gl_ES/banks.lang +++ b/htdocs/langs/gl_ES/banks.lang @@ -49,6 +49,9 @@ BankAccountDomiciliation=Enderezo do Banco BankAccountCountry=País do Banco BankAccountOwner=Nome do titular da conta BankAccountOwnerAddress=Enderezo do titular da conta +BankAccountOwnerZip=Código postal do propietario da conta +BankAccountOwnerTown=Cidade do propietario da conta +BankAccountOwnerCountry=País do propietario da conta CreateAccount=Crear conta NewBankAccount=Nova conta NewFinancialAccount=Nova conta financiera @@ -185,4 +188,3 @@ AlreadyOneBankAccount=Xa foi definida unha conta bancaria SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation=Transferencia SEPA: "Tipo de pagamento" no nivel "Transferencia de crédito". SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp=Cando se xera un ficheiro XML SEPA para pagamento por transferencia, agora pódese colocar a sección "PaymentTypeInformation" dentro da sección "CreditTransferTransactionInformation" (en lugar da sección "Pagamento"). Recomendamos encarecidamente que non se marque esta opción para colocar PaymentTypeInformation a nivel de pagamento, xa que todos os bancos non a aceptarán necesariamente o nivel de CreditTransferTransactionInformation. Poñase en contacto co seu banco antes de colocar PaymentTypeInformation no nivel CreditTransferTransactionInformation. ToCreateRelatedRecordIntoBank=Para crear un rexistro bancario relacionado que falta -BanklineExtraFields=Campos extra da liña bancaria diff --git a/htdocs/langs/gl_ES/companies.lang b/htdocs/langs/gl_ES/companies.lang index 10518100b75..100e44c1370 100644 --- a/htdocs/langs/gl_ES/companies.lang +++ b/htdocs/langs/gl_ES/companies.lang @@ -405,7 +405,7 @@ PL_UNKNOWN=Descoñecido PL_LOW=Baixo PL_MEDIUM=Medio PL_HIGH=Alto -TE_UNKNOWN=- +TE_UNKNOWN=Descoñecido TE_STARTUP=Startup TE_GROUP=Gran empresa TE_MEDIUM=PYME @@ -503,3 +503,4 @@ TwoRecordsOfCompanyName=existe máis dun rexistro para esta empresa, póñase en CompanySection=Sección empresa ShowSocialNetworks=Amosar redes sociais HideSocialNetworks=Ocultar redes sociais + diff --git a/htdocs/langs/gl_ES/dict.lang b/htdocs/langs/gl_ES/dict.lang index 1090c0d9eae..49f6d6a7f08 100644 --- a/htdocs/langs/gl_ES/dict.lang +++ b/htdocs/langs/gl_ES/dict.lang @@ -247,6 +247,7 @@ CountryJE=Jersey CountryME=Montenegro CountryBL=Saint-Barthélemy CountryMF=Saint-Martin +CountryXK=Kosovo ##### Civilities ##### CivilityMME=Señora diff --git a/htdocs/langs/gl_ES/errors.lang b/htdocs/langs/gl_ES/errors.lang index a9add42b94d..3a54b10294d 100644 --- a/htdocs/langs/gl_ES/errors.lang +++ b/htdocs/langs/gl_ES/errors.lang @@ -304,6 +304,11 @@ ErrorValueCantBeNull=O valor para %s non pode ser nulo ErrorDateOfMovementLowerThanDateOfFileTransmission=A data da transacción bancaria non pode ser inferior á data de transmisión do ficheiro ErrorTooMuchFileInForm=Hai demasiados ficheiros no formulario, o número máximo é %s ficheiro(s) ErrorSessionInvalidatedAfterPasswordChange=A sesión foi invalidada despois do cambio de contrasinal, estado ou datas de validez. Reinicie sesión. +ErrorExistingPermission = Permiso %s para o obxecto %s +ErrorFieldExist=O valor de %s xa existe +ErrorEqualModule=Módulo non válido en %s +ErrorFieldValue=O valor para %s é incorrecto +ErrorCoherenceMenu= %s é preciso cando % é igual á ESQUERDA # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=O seu parámetro PHP upload_max_filesize (%s) é superior ao parámetro PHP post_max_size (%s). Esta non é unha configuración consistente. @@ -342,6 +347,7 @@ WarningPaypalPaymentNotCompatibleWithStrict=O valor "Estricto" fai que as funci WarningThemeForcedTo=Aviso, o tema foi forzado a %s pola constante oculta MAIN_FORCETHEME WarningPagesWillBeDeleted=Aviso, isto tamén eliminará todas as páxinas/contedores existentes do sitio web. Debería exportar o seu sitio web antes, para ter unha copia de seguridade e poder importalo de novo máis tarde. WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal=A validación automática está desactivada cando a opción para diminuír o stock está definida en "Validación de facturas". +WarningModuleNeedRefrech = Desactivouse o módulo %s . Non esqueza activalo # Validate RequireValidValue = Valor non válido diff --git a/htdocs/langs/gl_ES/holiday.lang b/htdocs/langs/gl_ES/holiday.lang index 138cb78406c..3024981fd96 100644 --- a/htdocs/langs/gl_ES/holiday.lang +++ b/htdocs/langs/gl_ES/holiday.lang @@ -43,8 +43,8 @@ TypeOfLeaveCode=Código tipo de días libres TypeOfLeaveLabel=Tipo de etiqueta de días libres NbUseDaysCP=Número de días de vacacións utilizados NbUseDaysCPHelp=O cálculo ten en conta os días non laborais e as vacacións definidas no dicionario. -NbUseDaysCPShort=Días de vacacións -NbUseDaysCPShortInMonth=Días de vacacións no mes +NbUseDaysCPShort=Días libres +NbUseDaysCPShortInMonth=Días libres no mes DayIsANonWorkingDay=%s non é dia laboral DateStartInMonth=Data de inicio en mes DateEndInMonth=Data de fin en mes @@ -116,8 +116,8 @@ LEAVE_SICK=Baixa por enfermidade LEAVE_OTHER=Outro motivo de día libre LEAVE_PAID_FR=Vacación ## Configuration du Module ## -LastUpdateCP=Última actualización automática da asignación de vacacións -MonthOfLastMonthlyUpdate=Mes da última actualización automática da asignación de vacacións +LastUpdateCP=Última actualización automática da asignación de días libres +MonthOfLastMonthlyUpdate=Mes da última actualización automática da asignación de días libres UpdateConfCPOK=Actualización efectuada. Module27130Name= Xestión dos días libres Module27130Desc= Xestión dos días libres @@ -143,16 +143,16 @@ TemplatePDFHolidays=Padrón PDF para pedimento de días libres FreeLegalTextOnHolidays=Texto libre no PDF WatermarkOnDraftHolidayCards=Marca de auga no borrador de pedimento de días libres HolidaysToApprove=Vacacións para aprobar -NobodyHasPermissionToValidateHolidays=Ninguén ten permisos para validar vacacións -HolidayBalanceMonthlyUpdate=Actualización mensual do saldo de vacacións +NobodyHasPermissionToValidateHolidays=Ninguén ten permiso para validar as solicitudes de días libres +HolidayBalanceMonthlyUpdate=Actualización mensual do saldo de días libres XIsAUsualNonWorkingDay=%s é habitualmente un día NON laboral BlockHolidayIfNegative=Bloquear se o saldo é negativo LeaveRequestCreationBlockedBecauseBalanceIsNegative=Bloqueouse a creación desta solicitude de días porque o seu saldo é negativo ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=A solicitude de saída %s debe estar en borrador, cancelada ou rexeitada para ser eliminada -IncreaseHolidays=Aumentar as vacacións -HolidayRecordsIncreased= %s aumentaron os rexistros de vacacións -HolidayRecordIncreased=Aumentou o rexistro de vacacións -ConfirmMassIncreaseHoliday=Aumento masivo de vacacións +IncreaseHolidays=Aumentar o saldo de días libres +HolidayRecordsIncreased= %s saldos de días libres aumentados +HolidayRecordIncreased=Saldo de días libres aumentado +ConfirmMassIncreaseHoliday=Aumento masivo do saldo de días libres NumberDayAddMass=Número de día para engadir á selección ConfirmMassIncreaseHolidayQuestion=Está certo de querer aumentar as vacacións do(s) rexistro(s) seleccionado(s) %s? HolidayQtyNotModified=O saldo dos días restantes para %s non se modificou diff --git a/htdocs/langs/gl_ES/install.lang b/htdocs/langs/gl_ES/install.lang index 7fd233ea2e3..956aceeabac 100644 --- a/htdocs/langs/gl_ES/install.lang +++ b/htdocs/langs/gl_ES/install.lang @@ -28,6 +28,7 @@ ErrorPHPVersionTooLow=A versión de PHP é moi antiga. Requírese a versión %s ErrorPHPVersionTooHigh=Versión de PHP demasiado alta. Requírese a versión %s ou inferior. ErrorConnectedButDatabaseNotFound=Conexión correcta ao servidor pero non se atopou a base de datos '%s'. ErrorDatabaseAlreadyExists=A base de datos '%s' xa existe. +ErrorNoMigrationFilesFoundForParameters=Non se atopou ningún ficheiro de migración para as versións seleccionadas IfDatabaseNotExistsGoBackAndUncheckCreate=Se a base de datos non existe, volte atrás e marque a opción "Crear base de datos". IfDatabaseExistsGoBackAndCheckCreate=Se a base de datos xa existe, volte atrás e desmarque a opción "Crear base de datos". WarningBrowserTooOld=A versión do navegador é antiga de mais. É moi recomendable actualizar o seu navegador a unha versión recente de Firefox, Chrome ou Opera. @@ -50,7 +51,6 @@ DatabaseName=Nome da base de datos DatabasePrefix=Prefixo da táboa da base de datos DatabasePrefixDescription=Prefixo da táboa da base de datos. Se está baleiro, por defecto llx_. AdminLogin=Conta de usuario para o propietario da base de datos Dolibarr. -PasswordAgain=Voltar a escribir a confirmación do contrasinal AdminPassword=Contrasinal para o propietario da base de datos Dolibarr. CreateDatabase=Crear base de datos CreateUser=Crear conta de usuario ou conceder permiso á conta de usuario na base de datos Dolibarr @@ -88,7 +88,7 @@ LoginAlreadyExists=Xa existe DolibarrAdminLogin=Inicio de sesión do administrador de Dolibarr AdminLoginAlreadyExists=A conta de administrador Dolibarr '%s ' xa existe. Volte atrás se queres crear outro. FailedToCreateAdminLogin=Produciuse un fallo ao crear a conta de administrador de Dolibarr. -WarningRemoveInstallDir=Aviso, por motivos de seguridade, unha vez finalizada a instalación ou actualización, debería engadir un ficheiro chamado install.lock ao directorio do documento Dolibarr para evitar o uso accidental/malicioso da instalación ferramentas de novo. +WarningRemoveInstallDir=Aviso, por motivos de seguridade, unha vez com pletada a instalación, debería engadir un ficheiro chamado install.lock no directorio de documento de Dolibarr para evitar o uso accidental/malicioso da ferramenta de instalación de novo. FunctionNotAvailableInThisPHP=Non dispoñible neste PHP ChoosedMigrateScript=Escolla un script de migración DataMigration=Migración da base de datos (datos) @@ -208,7 +208,12 @@ HideNotAvailableOptions=Ocultar opcións non dispoñibles ErrorFoundDuringMigration=Informáronse erros durante o proceso de migración polo que o seguinte paso non está dispoñible. Para ignorar os erros, pode facer clic aquí , pero é posible que a aplicación ou algunhas funcións non funcionen correctamente ata que non se resolvan os erros. YouTryInstallDisabledByDirLock=A aplicación tentou actualizarse por si mesma, pero as páxinas de instalación/actualización desactiváronse por seguridade (directorio renomeado co sufixo .lock).
YouTryInstallDisabledByFileLock=A aplicación intentou actualizarse por si mesma, pero as páxinas de instalación/actualización desactiváronse por seguridade (pola existencia dun ficheiro de bloqueo install.lock no directorio de documentos dolibarr).
+YouTryUpgradeDisabledByMissingFileUnLock=A aplicación tentou auto actualizarse, pero o proceso de actualización non está permitido actualmente.
ClickHereToGoToApp=Fai clic aquí para ir á súa aplicación ClickOnLinkOrRemoveManualy=Se hai unha actualización en curso, agarde. Se non, faga clic na seguinte ligazón. Se sempre ve esta mesma páxina, debe eliminar/renomear o ficheiro install.lock no directorio de documentos. +ClickOnLinkOrCreateUnlockFileManualy=Se hai unha actualización en curso, agarde... Se non, debe crear un ficheiro upgrade.unlock no directorio de documentos de Dolibarr. Loaded=Cargado FunctionTest=Función test +NodoUpgradeAfterDB=Non se solicita ningunha acción polos módulos externos despois da actualización da base de datos +NodoUpgradeAfterFiles=Non se solicita ningunha acción polos módulos externos despois da actualización de ficheiros ou directorios +MigrationContractLineRank=Migrar a liña de contrato para usar Rango (e activar Reordenar) diff --git a/htdocs/langs/gl_ES/loan.lang b/htdocs/langs/gl_ES/loan.lang index 21a28fa60ab..755d817795a 100644 --- a/htdocs/langs/gl_ES/loan.lang +++ b/htdocs/langs/gl_ES/loan.lang @@ -21,10 +21,10 @@ LoanPaid=Empréstito pagado ListLoanAssociatedProject=Listaxe de empréstitos asociados ao proxecto AddLoan=Crear empréstito FinancialCommitment=Compromiso financieiro -InterestAmount=Xuro +InterestAmount=Importe xuro CapitalRemain=Capital restante TermPaidAllreadyPaid = Este prazo xa está pago -CantUseScheduleWithLoanStartedToPaid = Non se pode xerar un cronograma para un rmpréstito cun pagamento iniciado +CantUseScheduleWithLoanStartedToPaid = Non se pode xerar un cronograma para un empréstito cun pagamento iniciado CantModifyInterestIfScheduleIsUsed = Non pode modificar os xuros se xa está planificado # Admin ConfigLoan=Configuración do módulo empréstitos diff --git a/htdocs/langs/gl_ES/main.lang b/htdocs/langs/gl_ES/main.lang index c36035f9294..bd87e4f9635 100644 --- a/htdocs/langs/gl_ES/main.lang +++ b/htdocs/langs/gl_ES/main.lang @@ -923,6 +923,7 @@ NotAllExportedMovementsCouldBeRecordedAsExported=Non todos os movementos exporta Miscellaneous=Miscelánea Calendar=Calendario GroupBy=Agrupado por... +GroupByX=Agrupar por %s ViewFlatList=Ver listaxe plana ViewAccountList=Ver Libro Maior ViewSubAccountList=Ver subconta Libro Maior @@ -1222,3 +1223,5 @@ AddToContacts=Engadir enderezo aos meus contactos LastAccess=Último acceso UploadAnImageToSeeAPhotoHere=Cargue unha imaxe da pestana %s para ver unha foto aquí LastPasswordChangeDate=Última data de modificación de contrasinal +PublicVirtualCardUrl=Páxina virtual de tarxetas de visita +TreeView=Vista en árbore diff --git a/htdocs/langs/gl_ES/members.lang b/htdocs/langs/gl_ES/members.lang index 6155f7b843f..1e46997f4cc 100644 --- a/htdocs/langs/gl_ES/members.lang +++ b/htdocs/langs/gl_ES/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=Estatísticas das achegas NbOfSubscriptions=Número de achegas AmountOfSubscriptions=Cantidade recollida das achegas TurnoverOrBudget=Volumen de vendas (para empresa) ou Orzamento (para Fundación) -DefaultAmount=Importe da achega por defecto +DefaultAmount=Importe predeterminado da contribución (utilízase só se non se define ningunha cantidade a topo de nivel de membro) +MinimumAmount=Importe mínimo (usado só cando o importe da contribución é gratuíto) CanEditAmount=O importe da subscrición é gratuíto CanEditAmountDetail=O visitante pode escoller/editar a cantidade da súa contribución independentemente do tipo de membro AmountIsLowerToMinimumNotice=un debito total de %s diff --git a/htdocs/langs/gl_ES/modulebuilder.lang b/htdocs/langs/gl_ES/modulebuilder.lang index 4fdb87efd4d..530707b9624 100644 --- a/htdocs/langs/gl_ES/modulebuilder.lang +++ b/htdocs/langs/gl_ES/modulebuilder.lang @@ -1,7 +1,8 @@ # Dolibarr language file - Source file is en_US - loan +IdModule= ID do módulo ModuleBuilderDesc=Esta ferramenta só debe ser utilizada por usuarios ou desenvolvedores experimentados. Ofrece utilidades para construír ou editar o seu propio módulo. A documentación para o desenvolvemento manual alternativo está aquí EnterNameOfModuleDesc=Introduza o nome do módulo/aplicación que quere crear sen espazos. Use maiúsculas para separar palabras (por exemplo: MeuMódulo, TendaComercioElectrónico, SincronizarMeuSistema...) -EnterNameOfObjectDesc=Introduza o nome do obxecto a crear sen espazos. Use maiúsculas para separar palabras (Por exemplo: O meu obxecto, Alumno, Profesor...). Xeraranse o ficheiro de clase CRUD, pero tamén o ficheiro API, páxinas para listar/engadir/editar/eliminar obxectos e ficheiros SQL. +EnterNameOfObjectDesc=Introduza o nome do obxecto a crear sen espazos. Use maiúsculas para separar palabras (Por exemplo: O meu obxecto, Alumno, Profesor...). Xerarase o ficheiro de clase CRUD, as páxinas para listar/engadir/editar/eliminar o obxecto e os ficheiros SQL. EnterNameOfDictionaryDesc=Introduce o nome do dicionario que queres crear sen espazos. Use maiúsculas para separar palabras (Por exemplo: MeuDico...). Xerarase o ficheiro de clase, pero tamén o ficheiro SQL. ModuleBuilderDesc2=Ruta onde se xeran/editan os módulos (primeiro directorio para módulos externos definidos en %s): %s ModuleBuilderDesc3=Atopáronse módulos xerados/editables: %s @@ -9,6 +10,7 @@ ModuleBuilderDesc4=Detéctase un módulo como "editable" cando o ficheiro %s
? Isto cambiará o código na clase PHP pero tamén eliminará a columna da definición de obxecto da táboa. NotNull=Non NULO NotNullDesc=1=Establecer a base de datos como NON NULL, 0=Permitir valores nulos, -1=Permitir valores nulos forzando o valor a NULL se está baleiro ('' ou 0) @@ -81,15 +86,16 @@ IsAMeasure=É unha medida DirScanned=Directorio analizado NoTrigger=Non hai trigger NoWidget=Non hai widget -GoToApiExplorer=Explorador de API +ApiExplorer=Explorador de API ListOfMenusEntries=Listaxe de entradas de menú ListOfDictionariesEntries=Listaxe de entradas de dicionarios ListOfPermissionsDefined=Listaxe de permisos definidos SeeExamples=Ver exemplos aquí -EnabledDesc=Condición para ter activo este campo (Exemplos: 1 ou $ conf-> global-> MYMODULE_MYOPTION) -VisibleDesc=¿É visible o campo? (Exemplos: 0= Nunca visible, 1= Visible na lista e crear/actualizar/ver formularios, 2= Visible só na lista, 3= Visible só na forma de crear/actualizar/ver (non lista), 4= Visible na lista e actualizar/ver formulario só (non crear), 5= Visible só no formulario de visualización final da lista (non crear, non actualizar).

Usar un valor negativo significa que o campo non se amosa por defecto na lista, pero pódese seleccionar para ver).

Pode ser unha expresión, por exemplo:
preg_match ('/ public /', $ _SERVER ['PHP_SELF'])?0:1
($ usuario-> dereitos->vacacións->definir_ vacacións?1:0) -DisplayOnPdfDesc=Amosar este campo en documentos PDF compatibles, pode xestionar a posición co campo "Posición".
Actualmente, os modelos PDF compatibles coñecidos son: eratosteno (pedimento), espadón (envío), sponge (facturas), cian (orzamentos), cornas (pedimento a provedor)

Paara o documento:
0= non amosado
1=amosar
2= amosar só se non está baleiro

Para as liñas do documento
0= non amosado
1=amosar nunha columna
3=amosar na liña da columna de descrición despois da descrición
4= amosar na columna de descrición só despois da descrición se non está baleira -DisplayOnPdf=Amosar en PDF +EnabledDesc=Condición para ter este campo activo.

Exemplos:
1
isModEnabled('MAIN_MODULE_MYMODULE')
getDolGlobalString('MYMODULE_OPTION')==2 +VisibleDesc=O campo é visible? (Exemplos: 0=Nunca visible, 1=Visible na listace e crear/actualizar/ver formularios, 2=Visible só na lista, 3=Visible só ao crear/actualizar/ver formulario (non na listaxe), 4=Visible na listaxe e actualizar/ver formulario só (non crear), 5=Visible só no formulario de visualización final da listaxe (non crear, non actualizar).

Usar un valor negativo significa que o campo non se amosa por defecto na listaxe pero pode seleccionarse para ver). +ItCanBeAnExpression=Pode ser unha expresión. Exemplo:
preg_match('/public/', $_SERVER['PHP_SELF'])?0:1
$user->hasRight('holiday', 'define_holiday')?1:5 +DisplayOnPdfDesc=Amosa este campo en documentos PDF compatibles, pode xestionar a posición co campo "Posición".
Para documentos :
0 = non visualizar
1 = visualizar
2 = visualizar se non está baleiro

Para liñas de documentoss :
0 = non visualizar
1 = visuliazar na columna
3 = visualizar na columna de descrición de liña despois da descrición
4 = visualizar na columna de descrición despois da descrición só se non está baleira +DisplayOnPdf=En PDF IsAMeasureDesc=¿Pódese acumular o valor do campo para obter un total na lista? (Exemplos: 1 ou 0) SearchAllDesc=¿O campo utilízase para facer unha procura desde a ferramenta de busca rápida? (Exemplos: 1 ou 0) SpecDefDesc=Introduza aquí toda a documentación que desexa proporcionar co seu módulo que non estexa xa definida por outras pestanas. Pode usar .md ou mellor, a rica sintaxe .asciidoc. @@ -130,27 +136,40 @@ UseSpecificEditorURL = Usar unha URL de editor específico UseSpecificFamily = Usar unha familia específica UseSpecificAuthor = Usar un autor específico UseSpecificVersion = Usar unha versión inicial específica -IncludeRefGeneration=A referencia do obxecto debe xerarse automaticamente mediante regras de numeración personalizadas +IncludeRefGeneration=A referencia deste obxecto debe xerarse automaticamente mediante regras de numeración personalizadas IncludeRefGenerationHelp=Marque isto se quere incluír código para xestionar a xeración da referencia automaticamente mediante regras de numeración personalizadas -IncludeDocGeneration=Quero xerar algúns documentos a partir de modelos para o obxecto +IncludeDocGeneration=Quero que a función xere algúns documentos (PDF, ODT) a partir de modelos para este obxecto IncludeDocGenerationHelp=Se marca isto, xerarase algún código para engadir unha caixa "Xerar documento" no rexistro. -ShowOnCombobox=Mostrar o valor en combobox +ShowOnCombobox=Amosa o valor en caixas combinadas KeyForTooltip=Chave para a información sobre ferramentas CSSClass=CSS para editar/crear formulario CSSViewClass=CSS para formulario de lectura CSSListClass=CSS para a listaxe NotEditable=Non editable ForeignKey=Chave estranxeira -TypeOfFieldsHelp=Tipo de campos:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]]
'1' significa que engadimos un botón + despois do combo para crear o rexistro
'filter' é unha condición sql, exemplo: 'status=1 AND fk_user=__USER_ID__ AND entity IN (__SHARED_ENTITIES__)' +ForeignKeyDesc=Se hai que garantir que o valor deste campo exista noutra táboa. Introduza aquí un valor que coincida coa sintaxe: tablename.parentfieldtocheck +TypeOfFieldsHelp=Exemplo:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]]
' 1' significa que engadimos un botón + despois do combo para crear o rexistro
'filtro' é unha condición sql, exemplo: 'status=1 AND fk_user=__USER_ID__ AND entity IN (__SHARED_ENTITIES__)' +TypeOfFieldsHelpIntro=Este é o tipo de campo/atributo. AsciiToHtmlConverter=Conversor de ascii a HTML AsciiToPdfConverter=Conversor de ascii a PDF TableNotEmptyDropCanceled=A táboa non está baleira. Cancelouse a eliminación. ModuleBuilderNotAllowed=O creador de módulos está dispoñible pero non permitido ao seu usuario. ImportExportProfiles=Importar e exportar perfís -ValidateModBuilderDesc=Estableza isto en 1 se quere que o método $this->validateField() do obxecto sexa chamado para validar o contido do campo durante a inserción ou a actualización. Establece 0 se non se precisa validación. +ValidateModBuilderDesc=Estableza isto en 1 se quere que o método $this->validateField() do obxecto sexa chamado para validar o contido do campo durante a inserción ou actualización. Estableza 0 se non se precisa validación. WarningDatabaseIsNotUpdated=Aviso: a base de datos non se actualiza automaticamente, debe eliminar as táboas e desactivar-habilitar o módulo para que as táboas se creen de novo LinkToParentMenu=Menú principal (fk_xxxxmenu) ListOfTabsEntries=Lista de entradas de pestanas TabsDefDesc=Defina aquí as pestanas que proporciona o seu módulo TabsDefDescTooltip=As pestanas proporcionadas polo seu módulo/aplicación defínense na matriz $this->tabs no ficheiro descritor do módulo. Pode editar este ficheiro manualmente ou usar o editor incorporado. BadValueForType=Valor incorrecto para o tipo %s +DefinePropertiesFromExistingTable=Definir propiedades a partir dunha táboa existente +DefinePropertiesFromExistingTableDesc=Se xa existe unha táboa na base de datos (para que o obxecto se cree), pode usala para definir as propiedades do obxecto. +DefinePropertiesFromExistingTableDesc2=Mantéñase baleiro se a táboa aínda non existe. O xerador de código usará diferentes tipos de campos para construír un exemplo de táboa que pode editar máis tarde. +GeneratePermissions=Quero engadir dereitos para este obxecto +GeneratePermissionsHelp=xera dereitos predeterminados para este obxecto +PermissionDeletedSuccesfuly=O permiso foi eliminado correctamente +PermissionUpdatedSuccesfuly=O permiso actualizouse correctamente +PermissionAddedSuccesfuly=O permiso engadiuse correctamente +MenuDeletedSuccessfuly=O menú eliminouse correctamente +MenuAddedSuccessfuly=O menú engadiuse correctamente +MenuUpdatedSuccessfuly=O menú actualizouse correctamente diff --git a/htdocs/langs/gl_ES/oauth.lang b/htdocs/langs/gl_ES/oauth.lang index 5fbff98dd7f..22af3c0b6db 100644 --- a/htdocs/langs/gl_ES/oauth.lang +++ b/htdocs/langs/gl_ES/oauth.lang @@ -9,8 +9,9 @@ HasAccessToken=Foi xerado e gardado na base de datos local un token NewTokenStored=Token recibido e gardado ToCheckDeleteTokenOnProvider=Faga clic aquí para comprobar/eliminar a autorización gardada polo fornecedor de OAuth %s TokenDeleted=Token eliminado +GetAccess=Prema aquí para obter un token RequestAccess=Prema aquí para solicitar/renovar o acceso e recibir un novo token -DeleteAccess=Faga clic aquí para eliminar o token +DeleteAccess=Prema aquí para eliminar o token UseTheFollowingUrlAsRedirectURI=Utilice o seguinte URL como redirección URI cando cree as súas credenciais co seu provedor de OAuth: ListOfSupportedOauthProviders=Engada os seus provedores de tokens OAuth2. A continuación, vaia á páxina de administración do seu provedor de OAuth para crear/obter un ID de OAuth e un Segredo e gárdeos aquí. Unha vez feito isto, active a outra pestana para xerar o seu token. OAuthSetupForLogin=Páxina para xestionar (xerar/eliminar) tokens OAuth @@ -30,7 +31,11 @@ OAUTH_GITHUB_SECRET=Oauth GitHub Secret OAUTH_URL_FOR_CREDENTIAL=Vaia a esta páxina para crear ou obter o seu ID e Segredo de OAuth OAUTH_STRIPE_TEST_NAME=Test OAuth Stripe OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live -OAUTH_ID=ID de OAuth +OAUTH_ID=ID de cliente de OAuth OAUTH_SECRET=Segredo de OAuth +OAUTH_TENANT=Inquilino de OAuth OAuthProviderAdded=Engadiuse o provedor de OAuth AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Xa existe unha entrada de OAuth e etiqueta para este provedor +URLOfServiceForAuthorization=URL proporcionada polo servizo OAuth para a autenticación +Scopes=Permisos (ámbitos) +ScopeUndefined=Permisos (Ámbitos) indefinidos (consulte a lapela anterior) diff --git a/htdocs/langs/gl_ES/products.lang b/htdocs/langs/gl_ES/products.lang index 7dd2ca5f92f..bc8be6ab487 100644 --- a/htdocs/langs/gl_ES/products.lang +++ b/htdocs/langs/gl_ES/products.lang @@ -179,7 +179,7 @@ Nature=Natureza do produto (materia prima/manufacturado) NatureOfProductShort=Natureza do produto NatureOfProductDesc=Materia prima ou produto manufacturado ShortLabel=Etiqueta curta -Unit=Unidade +Unit=Ud p=u. set=conxunto se=conxunto @@ -345,7 +345,7 @@ PossibleValues=Valores posibles GoOnMenuToCreateVairants=Vaia ao menú %s - %s para preparar variables de atributos (como cores, tamaño, ...) UseProductFournDesc=Engade unha función para definir a descrición do produto definida polos vendedores (para cada referencia do vendedor) ademais da descrición para os clientes ProductSupplierDescription=Descrición do produto do provedor -UseProductSupplierPackaging=Utilice o envase nos prezos do provedor (recalcule as cantidades segundo o prezo do empaquetado do provedor ao engadir/actualizar a liña nos documentos do provedor) +UseProductSupplierPackaging=Use embalaxe para prezos redondeados a múltiplos para prezos de compra (recalcule as cantidades segundo os múltiplos establecidos nos prezos de compra ao engadir/actualizar a liña nos documentos dun provedor) PackagingForThisProduct=Empaquetado PackagingForThisProductDesc=Mercará automaticamente un múltiplo desta cantidade. QtyRecalculatedWithPackaging=A cantidade da liña recalculouse segundo o empaquetado do provedor @@ -399,7 +399,7 @@ ActionAvailableOnVariantProductOnly=Acción só dispoñible na variante do produ ProductsPricePerCustomer=Prezos de produto por cliente ProductSupplierExtraFields=Atributos adicionais (Prezos Provedor) DeleteLinkedProduct=Eliminar o produto fillo ligado á combinación -AmountUsedToUpdateWAP=Cantidade a usar para actualizar o Prezo Medio Ponderado +AmountUsedToUpdateWAP=Importe unitario a utilizar para actualizar o Prezo Medio Ponderado PMPValue=Prezo medio ponderado PMPValueShort=PMP mandatoryperiod=Períodos obrigatorios @@ -416,6 +416,7 @@ ProductsMergeSuccess=Os produtos fusionáronse ErrorsProductsMerge=Erros na combinación de produtos SwitchOnSaleStatus=Activa o estado de venda SwitchOnPurchaseStatus=Activa o estado de compra +UpdatePrice=Aumentar/diminuír o prezo ao cliente StockMouvementExtraFields= Campos extra (movemento de stock) InventoryExtraFields= Campos adicionais (inventario) ScanOrTypeOrCopyPasteYourBarCodes=Escanee ou escriba ou copia/pega os seus códigos de barras @@ -427,3 +428,4 @@ RealValuation=Valor real ConfirmEditExtrafield = Seleccione o campo extra que quere modificar ConfirmEditExtrafieldQuestion = Está certo de querer modificar este campo extra? ModifyValueExtrafields = Modificar o valor dun campo extra +OrProductsWithCategories=Ou produtos con etiquetas/categorías diff --git a/htdocs/langs/gl_ES/users.lang b/htdocs/langs/gl_ES/users.lang index 801c125e210..16c58925020 100644 --- a/htdocs/langs/gl_ES/users.lang +++ b/htdocs/langs/gl_ES/users.lang @@ -132,4 +132,3 @@ ShowAllPerms=Mostra todas as filas de permisos HideAllPerms=Ocultar todas as filas de permisos UserPublicPageDesc=Pode activar unha tarxeta virtual para este usuario. Haberá dispoñible un URL co perfil de usuario e un código de barras para que calquera persoa que teña un teléfono intelixente poida escaneala e engadir o seu contacto á súa axenda de enderezos. EnablePublicVirtualCard=Activa a tarxeta de usuario virtual pública -PublicVirtualCardUrl=Tarxeta de usuario virtual pública diff --git a/htdocs/langs/he_IL/admin.lang b/htdocs/langs/he_IL/admin.lang index 9d9e1c5fccd..26f39363219 100644 --- a/htdocs/langs/he_IL/admin.lang +++ b/htdocs/langs/he_IL/admin.lang @@ -51,8 +51,6 @@ ClientSortingCharset=Client collation WarningModuleNotActive=%s מודול יש להפעיל WarningOnlyPermissionOfActivatedModules=הרשאות רק הקשורים מודולים מופעלים מוצגים כאן. ניתן להפעיל מודולים נוספים ב-Home> Setup-> דף מודולים. DolibarrSetup=Dolibarr להתקין או לשדרג -InternalUser=פנימית המשתמש -ExternalUser=משתמש חיצוני InternalUsers=משתמשים פנימיים ExternalUsers=משתמשים חיצוניים UserInterface=User interface @@ -294,6 +292,7 @@ MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (default value in php.ini: %s) MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS Port (Not defined into PHP on Unix-like systems) MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (Not defined into PHP on Unix-like systems) MAIN_MAIL_EMAIL_FROM=Sender email for automatic emails (default value in php.ini: %s) +EMailHelpMsgSPFDKIM=To prevent Dolibarr emails to be classified as spam, make sure that the server is authorized to send e-mails from this address by SPF and DKIM configuration MAIN_MAIL_ERRORS_TO=Email used for error returns emails (fields 'Errors-To' in emails sent) MAIN_MAIL_AUTOCOPY_TO= Copy (Bcc) all sent emails to MAIN_DISABLE_ALL_MAILS=Disable all email sending (for test purposes or demos) @@ -439,8 +438,10 @@ Unique=Unique Boolean=Boolean (one checkbox) ExtrafieldPhone = Phone ExtrafieldPrice = Price +ExtrafieldPriceWithCurrency=Price with currency ExtrafieldMail = Email ExtrafieldUrl = Url +ExtrafieldIP = ה-IP ExtrafieldSelect = Select list ExtrafieldSelectList = Select from table ExtrafieldSeparator=Separator (not a field) @@ -450,7 +451,7 @@ 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->fetchNoCompute($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->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Store computed field ComputedpersistentDesc=Computed extra fields will be stored in the database, however, the value will only be recalculated when the object of this field is changed. If the computed field depends on other objects or global data this value might be wrong!! 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) @@ -477,7 +478,7 @@ InstalledInto=Installed into directory %s BarcodeInitForThirdparties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have %s record on %s %s without barcode defined. -InitEmptyBarCode=Init value for next %s empty records +InitEmptyBarCode=Init value for the %s empty barcodes 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 @@ -501,7 +502,8 @@ WarningPHPMail=WARNING: The setup to send emails from the application is using t WarningPHPMailA=- Using the server of the Email Service Provider increases the trustability of your email, so it increases the deliverablity without being flagged as SPAM WarningPHPMailB=- Some Email Service 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 for delivery (be careful also of your email provider's sending quota). WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to send emails is also interesting so all emails sent from application will also be saved into your "Sent" directory of your mailbox. -WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. +WarningPHPMailD=It is therefore recommended to change the sending method of e-mails to the value "SMTP". +WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. 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. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s @@ -514,7 +516,7 @@ PageUrlForDefaultValuesCreate=
Example:
For the form to create a new third 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 AlsoDefaultValuesAreEffectiveForActionCreate=Also note that overwritting default values for form creation works only for pages that were correctly designed (so with parameter action=create or presend...) EnableDefaultValues=Enable customization of default values -EnableOverwriteTranslation=Enable usage of overwritten translation +EnableOverwriteTranslation=Allow customization of translations GoIntoTranslationMenuToChangeThis=A translation has been found for the key with this code. To change this value, you must edit it from Home-Setup-translation. WarningSettingSortOrder=Warning, setting a default sort order may result in a technical error when going on the list page if field is an unknown field. If you experience such an error, come back to this page to remove the default sort order and restore default behavior. Field=Field @@ -643,11 +645,13 @@ Module2300Name=Scheduled jobs Module2300Desc=Scheduled jobs management (alias cron or chrono table) Module2400Name=Events/Agenda Module2400Desc=Track events. Log automatic events for tracking purposes or record manual events or meetings. This is the principal module for good Customer or Vendor Relationship Management. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. 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) +Module2600Name=API / Web services (SOAP server) Module2600Desc=Enable the Dolibarr SOAP server providing API services -Module2610Name=API/Web services (REST server) +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 Purchase orders are currently supported.) @@ -658,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind המרות יכולות Module3200Name=Unalterable Archives Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. +Module3300Name=Module Builder +Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. Module3400Name=Social Networks Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...). Module4000Name=HRM @@ -698,7 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Add features to manage Incoterms Module63000Name=Resources Module63000Desc=Manage resources (printers, cars, rooms, ...) for allocating to events -Permission11=לקרוא חשבוניות של לקוחות +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. +Module94160Name=Receptions +Permission11=Read customer invoices (and payments) Permission12=צור / לשנות חשבוניות של לקוחות Permission13=Invalidate customer invoices Permission14=אימות חשבוניות של לקוחות @@ -714,6 +723,7 @@ Permission27=מחק הצעות מסחריות Permission28=ייצוא הצעות מסחריות Permission31=קראו מוצרים Permission32=צור / לשנות מוצרים +Permission33=Read prices products Permission34=מחק מוצרים Permission36=ראה / ניהול מוצרים מוסתרים Permission38=ייצוא מוצרים @@ -739,6 +749,7 @@ Permission79=צור / לשנות מנויים Permission81=לקרוא הזמנות הלקוחות Permission82=ליצור / לשנות הזמנות הלקוחות Permission84=תוקף צווי לקוחות +Permission85=Generate the documents sales orders Permission86=שלח הזמנות הלקוחות Permission87=סגור לקוחות הזמנות Permission88=ביטול הזמנות הלקוחות @@ -840,9 +851,9 @@ Permission286=ייצוא אנשי קשר Permission291=קרא את התעריפים Permission292=להגדיר הרשאות על תעריפי את Permission293=Modify customer's tariffs -Permission300=Read barcodes -Permission301=Create/modify barcodes -Permission302=Delete barcodes +Permission301=Generate PDF sheets of barcodes +Permission304=Create/modify barcodes +Permission305=Delete barcodes Permission311=לקרוא שירותים Permission312=Assign service/subscription to contract Permission331=קרא את הסימניות @@ -874,6 +885,7 @@ Permission525=Access loan calculator Permission527=Export loans Permission531=לקרוא שירותים Permission532=יצירה / שינוי שירותים +Permission533=Read prices services Permission534=מחק את השירותים Permission536=ראה / ניהול שירותים נסתרים Permission538=יצוא שירותים @@ -937,7 +949,7 @@ Permission1190=Approve (second approval) purchase orders Permission1191=Export supplier orders and their attributes Permission1201=קבל תוצאה של יצוא Permission1202=יצירה / שינוי של הייצוא -Permission1231=Read vendor invoices +Permission1231=Read vendor invoices (and payments) Permission1232=Create/modify vendor invoices Permission1233=Validate vendor invoices Permission1234=Delete vendor invoices @@ -968,13 +980,14 @@ Permission3301=Generate new modules Permission4001=Read skill/job/position Permission4002=Create/modify skill/job/position Permission4003=Delete skill/job/position -Permission4020=Read evaluations -Permission4021=Create/modify your evaluation -Permission4022=Validate evaluation -Permission4023=Delete evaluation -Permission4030=See comparison menu +Permission4021=Read evaluations (yours and your subordinates) +Permission4022=Create/modify evaluations +Permission4023=Validate evaluation +Permission4025=Delete evaluation +Permission4028=See comparison menu Permission4031=Read personal information Permission4032=Write personal information +Permission4033=Read all evaluations (even those of user not subordinates) Permission10001=Read website content Permission10002=Create/modify website content (html and javascript content) Permission10003=Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers. @@ -1078,6 +1091,10 @@ DictionaryAssetDisposalType=Type of disposal of assets TypeOfUnit=Type of unit SetupSaved=הגדרת הציל SetupNotSaved=Setup not saved +OAuthServiceConfirmDeleteTitle=Delete OAuth entry +OAuthServiceConfirmDeleteMessage=Are you sure you want to delete this OAuth entry ? All existing tokens for it will also be deleted. +ErrorInEntryDeletion=Error in entry deletion +EntryDeleted=Entry deleted BackToModuleList=Back to Module list BackToDictionaryList=Back to Dictionaries list TypeOfRevenueStamp=Type of tax stamp @@ -1219,7 +1236,7 @@ SetupDescription4=%s -> %s

This software is a suite of m SetupDescription5=Other Setup menu entries manage optional parameters. SetupDescriptionLink=%s - %s SetupDescription3b=Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Security events that are audited NoSecurityEventsAreAduited=No security events are audited. You can enable them from menu %s Audit=Security events @@ -1235,11 +1252,13 @@ BrowserName=Browser name BrowserOS=Browser OS ListOfSecurityEvents=רשימת אירועים Dolibarr הביטחון SecurityEventsPurged=אירועים ביטחוניים מטוהר +TrackableSecurityEvents=Trackable security events LogEventDesc=Enable logging for specific security events. Administrators the log 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=מערכת מידע הוא מידע טכני שונות נכנסת למצב קריאה בלבד ונראה לעין עבור מנהלי בלבד. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. +MoreNetworksAvailableWithModule=More social networks may be available by enabling the module "Social networks". AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and presentation of the application can be modified here. @@ -1257,6 +1276,7 @@ TriggerActiveAsModuleActive=גורמים בקובץ זה הם פעיל %s GeneratedPasswordDesc=Choose the method to be used for auto-generated passwords. DictionaryDesc=Insert all reference data. You can add your values to the default. ConstDesc=This page allows you to edit (override) parameters not available in other pages. These are mostly reserved parameters for developers/advanced troubleshooting only. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=All other security related parameters are defined here. LimitsSetup=גבולות / הגדרת Precision LimitsDesc=You can define limits, precisions and optimizations used by Dolibarr here @@ -1290,6 +1310,8 @@ YouMustRunCommandFromCommandLineAfterLoginToUser=עליך להפעיל את הפ YourPHPDoesNotHaveSSLSupport=פונקציות שאינן זמינות ב-SSL-PHP DownloadMoreSkins=עוד סקינים להורדה SimpleNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset +SimpleRefNumRefModelDesc=Returns the reference number in the format n where n is a sequential auto-incrementing number with no reset +AdvancedNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset SimpleNumRefNoDateModelDesc=Returns the reference number in the format %s-nnnn where nnnn is a sequential auto-incrementing number with no reset ShowProfIdInAddress=Show professional ID with addresses ShowVATIntaInAddress=Hide intra-Community VAT number @@ -1376,7 +1398,7 @@ GetBarCode=Get barcode NumberingModules=Numbering models DocumentModules=Document models ##### Module password generation -PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters in lowercase. +PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters. PasswordGenerationNone=Do not suggest a generated password. Password must be typed in manually. PasswordGenerationPerso=Return a password according to your personally defined configuration. SetupPerso=According to your configuration @@ -1430,6 +1452,10 @@ SuppliersPayment=Vendor payments SupplierPaymentSetup=Vendor payments setup InvoiceCheckPosteriorDate=Check facture date before validation InvoiceCheckPosteriorDateHelp=Validating an invoice will be forbidden if its date is anterior to the date of last invoice of same type. +InvoiceOptionCategoryOfOperations=Display the mention "category of operations" on the invoice. +InvoiceOptionCategoryOfOperationsHelp=Depending on the situation, the mention will appear in the form:
- Category of operations: Delivery of goods
- Category of operations: Provision of services
- Category of operations: Mixed - Delivery of goods & provision of services +InvoiceOptionCategoryOfOperationsYes1=Yes, below the address block +InvoiceOptionCategoryOfOperationsYes2=Yes, in the lower left-hand corner ##### Proposals ##### PropalSetup=מודול הצעות מסחרי ההתקנה ProposalsNumberingModules=הצעה מסחרית המונה מודולים @@ -1472,11 +1498,12 @@ WatermarkOnDraftContractCards=Watermark on draft contracts (none if empty) ##### Members ##### MembersSetup=חברי מודול ההתקנה MemberMainOptions=אפשרויות עיקריות +MemberCodeChecker=Options for automatic generation of member codes AdherentLoginRequired= ניהול התחברות לכל חבר AdherentMailRequired=Email required to create a new member MemberSendInformationByMailByDefault=תיבת סימון לשלוח אישור בדואר לחברי (אימות או מנוי חדש) מופעלת כברירת מחדל MemberCreateAnExternalUserForSubscriptionValidated=Create an external user login for each new member subscription validated -VisitorCanChooseItsPaymentMode=Visitor can choose from available payment modes +VisitorCanChooseItsPaymentMode=Visitor can choose from any 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. MembersDocModules=Document templates for documents generated from member record ##### LDAP setup ##### @@ -1738,8 +1765,8 @@ ActivateFCKeditor=הפעל עורך מתקדם עבור: FCKeditorForNotePublic=WYSIWIG creation/edition of the field "public notes" of elements FCKeditorForNotePrivate=WYSIWIG creation/edition of the field "private notes" of elements FCKeditorForCompany=WYSIWIG creation/edition of the field description of elements (except products/services) -FCKeditorForProduct=WYSIWIG creation/edition of the field description of products/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 creation/edition of products description or lines for objects (lines of proposals, orders, invoices, etc...). +FCKeditorForProductDetails2=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. FCKeditorForMailing= WYSIWIG יצירת / מהדורה של דברי דואר FCKeditorForUserSignature=WYSIWIG creation/edition of user signature FCKeditorForMail=WYSIWIG creation/edition for all mail (except Tools->eMailing) @@ -1762,7 +1789,7 @@ DetailMenuHandler=תפריט המטפל היכן להציג תפריט חדש DetailMenuModule=שם מודול אם סעיף מתפריט באים מודול DetailType=סוג התפריט (למעלה או שמאלה) DetailTitre=תפריט תווית או קוד תווית לתרגום -DetailUrl=כתובת האתר שם התפריט לשלוח לך (קישור URL מוחלטת או קישור חיצוני עם http://) +DetailUrl=URL where menu send you (Relative URL link or external link with https://) DetailEnabled=מצב להראות או לא רשומה DetailRight=מצב כדי להציג תפריטים אפורים לא מורשים DetailLangs=לנג שם הקובץ לתרגום הקוד תווית @@ -1806,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Use events types (managed in menu Setup -> Dictionaries -> 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_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Which view do you want to open by default when selecting menu Agenda AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (When remind date is reached, a popup is shown by the browser. Each user can disable such notifications from its browser notification setup). AGENDA_REMINDER_BROWSER_SOUND=Enable sound notification @@ -1833,7 +1863,7 @@ StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatib CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sale from Point of Sale. Hence a warehouse is required. CashDeskForceDecreaseStockLabel=Stock decrease for batch products was forced. CashDeskForceDecreaseStockDesc=Decrease first by the oldest eatby and sellby dates. -CashDeskReaderKeyCodeForEnter=Key code for "Enter" defined in barcode reader (Example: 13) +CashDeskReaderKeyCodeForEnter=Key ASCII code for "Enter" defined in barcode reader (Example: 13) ##### Bookmark ##### BookmarkSetup=הפוך ההתקנה מודול 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. @@ -1871,7 +1901,7 @@ SuppliersInvoiceNumberingModel=Vendor invoices numbering models IfSetToYesDontForgetPermission=If set to a non null value, don't forget to provide permissions to groups or users allowed for the second approval ##### GeoIPMaxmind ##### GeoIPMaxmindSetup=GeoIP Maxmind ההתקנה מודול -PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation.
Examples:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoLite2-Country.mmdb +PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation NoteOnPathLocation=שים לב כי ה-IP שלכם לקובץ נתונים המדינה חייב להיות בתוך ספרייה PHP שלך יכול לקרוא (יש לבדוק את תוכנית ההתקנה של PHP שלך open_basedir מערכת קבצים והרשאות). YouCanDownloadFreeDatFileTo=ניתן להוריד גרסת הדגמה חינם של הקובץ הארץ GeoIP Maxmind ב %s. YouCanDownloadAdvancedDatFileTo=ניתן גם להוריד גירסה מלאה יותר, עם עדכונים של הקובץ הארץ GeoIP Maxmind ב %s. @@ -1922,6 +1952,7 @@ BackupDumpWizard=Wizard to build the database dump file BackupZipWizard=Wizard to build the archive of documents directory 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 a manual process only a privileged user may perform. +InstallModuleFromWebHasBeenDisabledContactUs=Install or development of external modules or dynamic websites, from the application, is currently locked for security purpose. Please contact us if you need to enable this feature. 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 @@ -1977,6 +2008,7 @@ MailToSendSupplierOrder=Purchase orders MailToSendSupplierInvoice=Vendor invoices MailToSendContract=חוזים MailToSendReception=Receptions +MailToExpenseReport=Expense reports MailToThirdparty=צדדים שלישיים MailToMember=משתמשים MailToUser=משתמשים @@ -2030,6 +2062,7 @@ MAIN_PDF_MARGIN_RIGHT=Right margin on PDF MAIN_PDF_MARGIN_TOP=Top margin on PDF MAIN_PDF_MARGIN_BOTTOM=Bottom margin on PDF MAIN_DOCUMENTS_LOGO_HEIGHT=Height for logo on PDF +DOC_SHOW_FIRST_SALES_REP=Show first sales representative MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Add column for picture on proposal lines MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Width of the column if a picture is added on lines MAIN_PDF_NO_SENDER_FRAME=Hide borders on sender address frame @@ -2047,6 +2080,8 @@ RemoveSpecialChars=Remove special characters COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN_REGEX) COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Duplicate not allowed +RemoveSpecialWords=Clean certain words when generating sub-accounts for customers or suppliers +RemoveSpecialWordsHelp=Specify the words to be cleaned before calculating the customer or supplier account. Use a ";" between each word GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact) GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here HelpOnTooltip=Help text to show on tooltip @@ -2063,11 +2098,18 @@ EmailCollectors=Email collectors 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 +EMailHostPort=Port of email IMAP server +loginPassword=Login/Password +oauthToken=Oauth2 token +accessType=Acces type +oauthService=Oauth service +TokenMustHaveBeenCreated=Module OAuth2 must be enabled and an oauth2 token must have been created with the correct permissions (for example scope "gmail_full" with OAuth for Gmail). MailboxSourceDirectory=Mailbox source directory MailboxTargetDirectory=Mailbox target directory EmailcollectorOperations=Operations to do by collector EmailcollectorOperationsDesc=Operations are executed from top to bottom order MaxEmailCollectPerCollect=Max number of emails collected per collect +TestCollectNow=Test collect CollectNow=Collect now ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s? DateLastCollectResult=Date of latest collect try @@ -2097,6 +2139,7 @@ CodeLastResult=Latest result code NbOfEmailsInInbox=Number of emails in source directory LoadThirdPartyFromName=Load third party searching on %s (load only) LoadThirdPartyFromNameOrCreate=Load third party searching on %s (create if not found) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Message from a conversation initiated by a first email sent from Dolibarr WithoutDolTrackingID=Message from a conversation initiated by a first email NOT sent from Dolibarr @@ -2106,7 +2149,7 @@ CreateCandidature=Create job application FormatZip=רוכסן MainMenuCode=Menu entry code (mainmenu) ECMAutoTree=Show automatic ECM tree -OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a company name from email subject into a temporary variable:
tmp_var=EXTRACT:SUBJECT:Message from company ([^\n]*)

Examples to set the properties of an object to create:
objproperty1=SET:a hard coded value
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (value is set only if property is not already defined)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. OpeningHours=Opening hours OpeningHoursDesc=Enter here the regular opening hours of your company. ResourceSetup=Configuration of Resource module @@ -2171,6 +2214,7 @@ ShowProjectLabel=Project Label PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty +PDFIn2Languages=Show labels into PDF in 2 different languages PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2199,12 +2243,12 @@ MailToPartnership=Partnership AGENDA_EVENT_DEFAULT_STATUS=Default event status when creating a event from the form YouShouldDisablePHPFunctions=You should disable PHP functions IfCLINotRequiredYouShouldDisablePHPFunctions=Except if you need to run system commands in custom code, you shoud disable PHP functions -PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an anitivurs program), you must keep PHP functions +PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an antivirus program), you must keep PHP functions NoWritableFilesFoundIntoRootDir=No writable files or directories of the common programs were found into your root directory (Good) RecommendedValueIs=Recommended: %s Recommended=מומלץ NotRecommended=Not recommended -ARestrictedPath=Some restricted path +ARestrictedPath=Some restricted path for data files CheckForModuleUpdate=Check for external modules updates CheckForModuleUpdateHelp=This action will connect to editors of external modules to check if a new version is available. ModuleUpdateAvailable=An update is available @@ -2212,6 +2256,7 @@ NoExternalModuleWithUpdate=No updates found for external modules SwaggerDescriptionFile=Swagger API description file (for use with redoc for example) YouEnableDeprecatedWSAPIsUseRESTAPIsInstead=You enabled deprecated WS API. You should use REST API instead. RandomlySelectedIfSeveral=Randomly selected if several pictures are available +SalesRepresentativeInfo=For Proposals, Orders, Invoices. DatabasePasswordObfuscated=Database password is obfuscated in conf file DatabasePasswordNotObfuscated=Database password is NOT obfuscated in conf file APIsAreNotEnabled=APIs modules are not enabled @@ -2251,7 +2296,7 @@ LateWarningAfter="Late" warning after TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode -ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. +ExportUseLowMemoryModeHelp=Use the low memory mode to generate the dump file (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that the file is complete and error message can't be reported if it fails. Use it if you experience not enough memory errors. ModuleWebhookName = Webhook ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL @@ -2275,7 +2320,55 @@ IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices +INVOICE_SHOW_SHIPPING_ADDRESS=Show shipping address +INVOICE_SHOW_SHIPPING_ADDRESSMore=Compulsory mention for France UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. IfThisCategoryIsChildOfAnother=If this category is a child of another one +DarkThemeMode=Dark theme mode +AlwaysDisabled=Always disabled +AccordingToBrowser=According to browser +AlwaysEnabled=Always Enabled +DoesNotWorkWithAllThemes=Will not work with all themes NoName=No name +ShowAdvancedOptions= Show advanced options +HideAdvancedoptions= Hide advanced options CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: +OauthNotAvailableForAllAndHadToBeCreatedBefore=OAUTH2 authentication is not available for all hosts, and a token with the right permissions must have been created upstream with the OAUTH module +MAIN_MAIL_SMTPS_OAUTH_SERVICE=OAUTH2 authentication service +DontForgetCreateTokenOauthMod=A token with the right permissions must have been created upstream with the OAUTH module +MAIN_MAIL_SMTPS_AUTH_TYPE=Authentification method +UsePassword=Use a password +UseOauth=Use a OAUTH token +Images=Images +MaxNumberOfImagesInGetPost=Max number of images allowed in a HTML field submitted in a form +MaxNumberOfPostOnPublicPagesByIP=Max number of posts on public pages with the same IP address in a month +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: +ScriptIsEmpty=The script is empty +ShowHideTheNRequests=Show/hide the %s SQL request(s) +DefinedAPathForAntivirusCommandIntoSetup=Define a path for an antivirus program into %s +TriggerCodes=Triggerable events +TriggerCodeInfo=Enter here the trigger code(s) that must generate a post of a web request (only external URL are allowed). You can enter several trigger codes separated by a comma. +EditableWhenDraftOnly=If unchecked, the value can only be modified when object has a draft status +CssOnEdit=Css on edit pages +CssOnView=Css on view pages +CssOnList=Css on list pages +HelpCssOnEditDesc=The Css used when editing the field.
Example: "minwiwdth100 maxwidth500 widthcentpercentminusx" +HelpCssOnViewDesc=The Css used when viewing the field. +HelpCssOnListDesc=The Css used when field is inside a list table.
Example: "tdoverflowmax200" +RECEPTION_PDF_HIDE_ORDERED=Hide the quantity ordered on the generated documents for receptions +MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT=Show the price on the generated documents for receptions +WarningDisabled=Warning disabled +LimitsAndMitigation=Access limits and mitigation +DesktopsOnly=Desktops only +DesktopsAndSmartphones=Desktops et smartphones +AllowOnlineSign=Allow online signing +AllowExternalDownload=Allow external download (without login, using a shared link) +DeadlineDayVATSubmission=Deadline day for vat submission on the next month +MaxNumberOfAttachementOnForms=Max number of joinded files in a form +IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/hr_HR/admin.lang b/htdocs/langs/hr_HR/admin.lang index 9ee2f7d5163..cb9c3a3ba18 100644 --- a/htdocs/langs/hr_HR/admin.lang +++ b/htdocs/langs/hr_HR/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Checkboxes ExtrafieldCheckBoxFromList=Checkboxes from table ExtrafieldLink=Poveži s objektom ComputedFormula=Izračunato polje -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->fetchNoCompute($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->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Pohrani izračunato polje ComputedpersistentDesc=Izračunata dodatna polja bit će pohranjena u bazi podataka, međutim, vrijednost će se ponovno izračunati samo kada se promijeni objekt ovog polja. Ako izračunato polje ovisi o drugim objektima ili globalnim podacima, ova vrijednost može biti pogrešna!! ExtrafieldParamHelpPassword=Ako ovo polje ostavite praznim, znači da će ova vrijednost biti pohranjena bez šifriranja (polje mora biti skriveno samo sa zvjezdicom na zaslonu).
Postavite 'auto' za korištenje zadanog pravila šifriranja za spremanje lozinke u bazu podataka (tada će pročitana vrijednost biti samo hash, nema načina da se dohvati izvorna vrijednost) @@ -704,8 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Dodaj mogučnosti za upravljanje Incoterm-om Module63000Name=Sredstva Module63000Desc=Upravljajte resursima (pisači, automobili, sobe,...) za dodjelu događaja +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Receptions -Permission11=Pregledaj izlazne račune +Permission11=Read customer invoices (and payments) Permission12=Izradi/promijeni izlazne račune Permission13=Poništite račune kupaca Permission14=Ovjeri izlazni račun @@ -947,7 +949,7 @@ Permission1190=Odobri (drogo odobrenje) narudžba dobavljača Permission1191=Izvoz narudžbi dobavljača i njihovih atributa Permission1201=Primi rezultat izvoza Permission1202=Izradi/izmjeni izvoz -Permission1231=Čitaj račune dobavljača +Permission1231=Read vendor invoices (and payments) Permission1232=Kreiraj/izmjeni račune dobavljača Permission1233=Ovjeri račune dobavljača Permission1234=Obriši račune dobavljača @@ -1234,7 +1236,7 @@ SetupDescription4= %s -> %s

Ovaj softver je paket m SetupDescription5=Ostali unosi izbornika za postavljanje upravljaju izbornim parametrima. SetupDescriptionLink= %s - %s SetupDescription3b=Osnovni parametri koji se koriste za prilagodbu zadanog ponašanja vaše aplikacije (npr. za značajke vezane uz zemlju). -SetupDescription4b=Ovaj softver je skup mnogih modula/aplikacija. Moduli koji se odnose na vaše potrebe moraju biti omogućeni i konfigurirani. Unosi izbornika će se pojaviti s aktivacijom ovih modula. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Sigurnosni događaji koji se revidiraju NoSecurityEventsAreAduited=Sigurnosni događaji se ne revidiraju. Možete ih omogućiti iz izbornika %s Audit=Sigurnosni događaji @@ -2366,3 +2368,7 @@ MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s Reload=Reload ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/hr_HR/install.lang b/htdocs/langs/hr_HR/install.lang index 5195a2e170d..51499430cdd 100644 --- a/htdocs/langs/hr_HR/install.lang +++ b/htdocs/langs/hr_HR/install.lang @@ -51,7 +51,6 @@ DatabaseName=Naziv baze podataka DatabasePrefix=Prefiks tablice baze podataka DatabasePrefixDescription=Prefiks tablice baze podataka. Ako je prazno, zadano je llx_. AdminLogin=Korisnički račun za vlasnika baze podataka Dolibarr. -PasswordAgain=Ponovno upišite potvrdu lozinke AdminPassword=Lozinka za vlasnika baze podataka Dolibarr. CreateDatabase=Izradi bazu podataka CreateUser=Stvorite korisnički račun ili dodijelite dopuštenje korisničkog računa za bazu podataka Dolibarr @@ -89,7 +88,7 @@ LoginAlreadyExists=Već postoji DolibarrAdminLogin=Dolibarr administratorska prijava AdminLoginAlreadyExists=Dolibarr administratorski račun ' %s ' već postoji. Vratite se ako želite stvoriti još jednu. FailedToCreateAdminLogin=Neuspješno kreiranje administratorskog računa. -WarningRemoveInstallDir=Upozorenje, iz sigurnosnih razloga, nakon završetka instalacije ili nadogradnje, trebali biste dodati datoteku pod nazivom install.lock u direktorij dokumenata Dolibarr kako biste spriječili ponovno slučajnu/zlonamjernu upotrebu instalacijskih alata. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=Nije dostupno u ovom PHP-u ChoosedMigrateScript=Odaberite skriptu za migraciju DataMigration=Migracija baze podataka (podaci) @@ -209,7 +208,12 @@ HideNotAvailableOptions=Sakrij nedostupne opcije ErrorFoundDuringMigration=Pogreške su prijavljene tijekom procesa migracije pa sljedeći korak nije dostupan. Da biste zanemarili pogreške, možete kliknuti ovdje , ali aplikacija ili neke značajke možda neće raditi ispravno dok se pogreške ne riješe. YouTryInstallDisabledByDirLock=Aplikacija se pokušala samostalno nadograditi, ali stranice za instalaciju/nadogradnju onemogućene su radi sigurnosti (direktorij je preimenovan sa sufiksom .lock).
YouTryInstallDisabledByFileLock=Aplikacija se pokušala samostalno nadograditi, ali stranice za instalaciju/nadogradnju su onemogućene radi sigurnosti (zbog postojanja datoteke zaključavanja install.lock u direktoriju dokumenata dolibarra).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=Kliknite ovdje da biste otišli na svoju prijavu ClickOnLinkOrRemoveManualy=Ako je nadogradnja u tijeku, pričekajte. Ako ne, kliknite na sljedeću poveznicu. Ako uvijek vidite istu stranicu, morate ukloniti/preimenovati datoteku install.lock u direktoriju dokumenata. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=Učitano FunctionTest=Funkcionalni test +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/hu_HU/admin.lang b/htdocs/langs/hu_HU/admin.lang index 460c2ce847f..e6d8637e617 100644 --- a/htdocs/langs/hu_HU/admin.lang +++ b/htdocs/langs/hu_HU/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Jelölőnégyzeteket ExtrafieldCheckBoxFromList=Jelölőnégyzetek a táblából ExtrafieldLink=Link egy objektumhoz ComputedFormula=Számított mező -ComputedFormulaDesc=Itt megadhat egy képletet az objektum más tulajdonságait vagy bármilyen PHP kódot használva, hogy dinamikusan számított értéket kapjon. Bármilyen PHP-kompatibilis képletet használhat, beleértve a "?" feltétel operátor és a következő globális objektum: $db, $conf, $langs, $mysoc, $user, $object.
FIGYELMEZTETÉS: A $objektum csak néhány tulajdonsága lehet elérhető. Ha olyan tulajdonságra van szüksége, amely nincs betöltve, egyszerűen töltse be az objektumot a képletbe, mint a második példában.
A kiszámított mező használata azt jelenti, hogy nem adhat meg magának semmilyen értéket a felületről. Szintaktikai hiba esetén előfordulhat, hogy a képlet semmit sem ad vissza.

Példa a képletre:
$object->id < 10 ? round($object->id / 2, 2): ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Példa objektum újratöltésére
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj-> rowid: $objektum->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

Egy másik példa az objektum és szülőobjektuma betöltésének kényszerítésére szolgáló képletre:
(($reloadedobj = új feladat($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = új projekt($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project ) > 0)) ? $secondloadedobj->ref: "A szülőprojekt nem található" +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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Számított mező mentése ComputedpersistentDesc=A kiszámított extra mezőket az adatbázis tárolja, azonban az érték csak akkor kerül újraszámításra, ha a mező objektuma megváltozik. Ha a kiszámított mező más objektumoktól vagy globális adatoktól függ, akkor ez az érték rossz lehet! ExtrafieldParamHelpPassword=Ha ezt a mezőt üresen hagyja, akkor ez az érték titkosítás nélkül lesz tárolva (a mezőt csak a csillaggal lehet elrejteni a képernyőn).
Állítsa be az „auto” értéket az alapértelmezett titkosítási szabály használatával a jelszó adatbázisba mentéséhez (akkor az olvasott érték csak hash kód lesz, az eredeti érték nem olvasható) @@ -704,8 +704,10 @@ Module62000Name=Nemzetközi kereskedelmi feltételek Module62000Desc=Funkciók hozzáadása a Nemzetközi kereskedelmi feltételek kezeléséhez Module63000Name=Erőforrások Module63000Desc=Az eseményekhez elosztandó erőforrások (nyomtatók, autók, helyiségek, ...) kezelése +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Átvételek -Permission11=Olvassa vevői számlák +Permission11=Read customer invoices (and payments) Permission12=Létrehozza / módosítja vevői számlák Permission13=Érvénytelen vevői számlák Permission14=Érvényesítés vevői számlák @@ -947,7 +949,7 @@ Permission1190=Beszerzési rendelések jóváhagyása (második jóváhagyás). Permission1191=Szállítói rendelések és attribútumuk exportálása Permission1201=Get eredményeképpen az export Permission1202=Létrehozása / módosítása a kiviteli -Permission1231=Szállítói számlák olvasása +Permission1231=Read vendor invoices (and payments) Permission1232=Szállítói számlák létrehozása/módosítása Permission1233=Szállítói számlák ellenőrzése Permission1234=Szállítói számlák törlése @@ -1234,7 +1236,7 @@ SetupDescription4=%s -> %s

Ez a szoftver számos modul/a SetupDescription5=Az "Egyéb beállítás" menü az opcionális paramétereket tartalmazza. SetupDescriptionLink=%s - %s SetupDescription3b=Az alkalmazás alapértelmezett viselkedésének testreszabásához használt alapvető paraméterek (pl. az országgal kapcsolatos szolgáltatásokhoz). -SetupDescription4b=Ez a szoftver sok modulból/alkalmazásból álló csomag. Az Ön igényeihez kapcsolódó modulokat engedélyezni és konfigurálni kell. Ezen modulok aktiválásával menübejegyzések jelennek meg. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Auditált biztonsági események NoSecurityEventsAreAduited=Nincsenek biztonsági események auditálva. A %s menüből engedélyezheti őket Audit=Biztonsági események @@ -2366,3 +2368,7 @@ MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s Reload=Reload ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/hu_HU/install.lang b/htdocs/langs/hu_HU/install.lang index ecc3ba04460..d20c74b3285 100644 --- a/htdocs/langs/hu_HU/install.lang +++ b/htdocs/langs/hu_HU/install.lang @@ -28,6 +28,7 @@ ErrorPHPVersionTooLow=A PHP verzió túl régi. Az %s vagy újabb verzió szüks ErrorPHPVersionTooHigh=A PHP verzió túl magas. Az %s vagy régebbi verzió szükséges. ErrorConnectedButDatabaseNotFound=A kiszolgálóhoz való csatlakozás sikeres, de a '%s' adatbázis nem található. ErrorDatabaseAlreadyExists='%s' adatbázis már létezik. +ErrorNoMigrationFilesFoundForParameters=Nem található migrációs fájl a kiválasztott verziókhoz IfDatabaseNotExistsGoBackAndUncheckCreate=Ha az adatbázis nem létezik, menjen vissza és jelölje be az "Adatbázis létrehozása" opciót. IfDatabaseExistsGoBackAndCheckCreate=Ha az adatbázis már létezik, menjen vissza és ne válassza az "Adatbázis létrehozása" opciót. WarningBrowserTooOld=A böngésző verziója túl régi. Javasoljuk, hogy frissítse böngészőjét a Firefox, Chrome vagy Opera legújabb verziójára. @@ -50,7 +51,6 @@ DatabaseName=Adatbázis név DatabasePrefix=Adatbázistábla előtag DatabasePrefixDescription=Adatbázistábla előtag. Ha üres, az alapértelmezett érték llx_. AdminLogin=Felhasználói fiók a Dolibarr adatbázis-tulajdonos számára. -PasswordAgain=Írja be újra a jelszó megerősítését AdminPassword=Adatbázis tulajdonos jelszava. CreateDatabase=Adatbázis lérehozása CreateUser=Felhasználói fiók létrehozása vagy felhasználói fiók engedélyezése a Dolibarr adatbázisban @@ -88,7 +88,7 @@ LoginAlreadyExists=Már létezik DolibarrAdminLogin=Dolibarr admin bejelentkezés AdminLoginAlreadyExists=A „%s” Dolibarr rendszergazdai fiók már létezik. Menjen vissza, ha másikat szeretne létrehozni. FailedToCreateAdminLogin=Nem tudta létrehozni a Dolibarr rendszergazda fiókot. -WarningRemoveInstallDir=Figyelmeztetés, biztonsági okokból, ha a telepítés vagy frissítés befejeződött, adjon hozzá egy install.lock nevű fájlt a Dolibarr dokumentumkönyvtárába, hogy megakadályozza a telepítőeszközök véletlen/rosszindulatú használatát. újra. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=Nem érhető el ebben a PHP-ben ChoosedMigrateScript=Migrációs szkript választása DataMigration=Adatbázis migráció (adatok) @@ -208,7 +208,12 @@ HideNotAvailableOptions=A nem elérhető opciók elrejtése ErrorFoundDuringMigration=Hiba(k) jelentek meg az áttelepítési folyamat során, így a következő lépés nem érhető el. A hibák figyelmen kívül hagyásához kattintson ide, de előfordulhat, hogy az alkalmazás vagy egyes szolgáltatások nem működnek megfelelően, amíg a hibákat meg nem oldják. YouTryInstallDisabledByDirLock=Az alkalmazás megpróbált önállóan frissíteni, de a telepítési/frissítési oldalakat a biztonság kedvéért letiltották (a könyvtárat .lock utótaggal nevezték át).
YouTryInstallDisabledByFileLock=Az alkalmazás megpróbált önállóan frissíteni, de a telepítési/frissítési oldalakat a biztonság kedvéért letiltották (a dolibarr dokumentumok könyvtárában található install.lock zárolási fájl miatt).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=Kattintson ide az alkalmazás megnyitásához ClickOnLinkOrRemoveManualy=Ha frissítés van folyamatban, kérjük, várjon. Ha nem, kattintson a következő linkre. Ha mindig ugyanazt az oldalt látja, el kell távolítania/át kell neveznie az install.lock fájlt a dokumentumok könyvtárában. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=Töltve FunctionTest=Funkcióteszt +NodoUpgradeAfterDB=A külső modulok nem kérnek semmilyen műveletet az adatbázis frissítése után +NodoUpgradeAfterFiles=A fájlok vagy könyvtárak frissítése után külső modulok nem kérnek semmilyen műveletet +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/hu_HU/members.lang b/htdocs/langs/hu_HU/members.lang index ebf07cd2356..f7aab8332b0 100644 --- a/htdocs/langs/hu_HU/members.lang +++ b/htdocs/langs/hu_HU/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=Hozzájárulási statisztikák NbOfSubscriptions=Hozzájárulások száma AmountOfSubscriptions=A hozzájárulásokból beszedett összeg TurnoverOrBudget=Forgalom (egy cégnél) vagy Költségvetés (alapítványnál) -DefaultAmount=A hozzájárulás alapértelmezett összege +DefaultAmount=Default amount of contribution (used only if no amount is defined at member type level) +MinimumAmount=Minimum amount (used only when contribution amount is free) CanEditAmount=Subscription amount is free CanEditAmountDetail=A látogató tagtípustól függetlenül választhatja/szerkesztheti hozzájárulásának mértékét AmountIsLowerToMinimumNotice=összesen esedékes %s diff --git a/htdocs/langs/hu_HU/oauth.lang b/htdocs/langs/hu_HU/oauth.lang index 3e9309da2cd..9011742d6ae 100644 --- a/htdocs/langs/hu_HU/oauth.lang +++ b/htdocs/langs/hu_HU/oauth.lang @@ -9,6 +9,7 @@ HasAccessToken=A tokent létrehozta és elmentette a helyi adatbázisba NewTokenStored=Token fogadva és elmentve ToCheckDeleteTokenOnProvider=Kattintson ide a %s OAuth szolgáltató által mentett jogosultság ellenőrzéséhez/törléséhez TokenDeleted=Token törölve +GetAccess=Kattintson ide a token beszerzéséhez RequestAccess=Kattintson ide a hozzáférés kéréséhez/megújításához és új token fogadásához DeleteAccess=Kattintson ide a token törléséhez UseTheFollowingUrlAsRedirectURI=Használja a következő URL-t átirányítási URI-ként, amikor létrehozza hitelesítő adatait az OAuth-szolgáltatóval: @@ -30,7 +31,11 @@ OAUTH_GITHUB_SECRET=OAuth GitHub titkos OAUTH_URL_FOR_CREDENTIAL=Nyissa meg ezt az oldalt az OAuth-azonosító és a titkosság létrehozásához vagy lekéréséhez OAUTH_STRIPE_TEST_NAME=OAuth kapcsolat teszt OAUTH_STRIPE_LIVE_NAME=OAuth kapcsolat élő -OAUTH_ID=OAuth-azonosító +OAUTH_ID=OAuth Client ID OAUTH_SECRET=OAuth titkos +OAUTH_TENANT=OAuth tenant OAuthProviderAdded=OAuth-szolgáltató hozzáadva AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Ehhez a szolgáltatóhoz és címkéhez már létezik OAuth-bejegyzés +URLOfServiceForAuthorization=Az OAuth szolgáltatás által hitelesítéshez biztosított URL +Scopes=Permissions (Scopes) +ScopeUndefined=Permissions (Scopes) undefined (see previous tab) diff --git a/htdocs/langs/id_ID/admin.lang b/htdocs/langs/id_ID/admin.lang index 6bd4035bdb1..269995a4027 100644 --- a/htdocs/langs/id_ID/admin.lang +++ b/htdocs/langs/id_ID/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Kotak centang ExtrafieldCheckBoxFromList=Kotak centang dari tabel ExtrafieldLink=Tautan ke suatu objek ComputedFormula=Baris yang dihitung -ComputedFormulaDesc=Anda dapat memasukkan rumus di sini menggunakan properti objek lain atau kode PHP apa pun untuk mendapatkan nilai komputasi dinamis. Anda dapat menggunakan rumus PHP yang kompatibel termasuk "?" kondisi operator, dan objek global berikut:$ db, $ conf, $ langs, $ mysoc, $ user, $ object .
PERINGATAN : Hanya beberapa properti $ objek yang mungkin tersedia. Jika Anda membutuhkan properti yang tidak dimuat, ambil sendiri objek ke rumus Anda seperti pada contoh kedua.
Menggunakan baris yang dihitung berarti Anda tidak dapat memasukkan nilai apa pun dari antarmuka. Juga, jika ada kesalahan sintaks, rumus mungkin tidak menghasilkan apa-apa.

Contoh rumus:
$ objek-> id < 10 ? round($object-> id / 2, 2): ($ object-> id + 2 * $ user-> id) * (int), substr ($, 2,> )

Contoh untuk memuat ulang objek
(($ reloadedobj = new Societe ($ db)) && ($ reloadedobj-> fetchNoCompute ($ obj-> id? $ object? $ obj? $ obj> $ obj> $ obj> $ object? > rowid: $ object-> id))> 0))? $ reloadedobj-> array_options ['options_extrafieldkey'] * $ reloadedobj-> capital / 5: '-1'

Contoh rumus lain untuk memaksa memuat objek dan objek induknya: a0342fccfda19bb $ tugas ($ rel ulang ($ rel) )) && ($ reloadedobj-> fetchNoCompute ($ object-> id)> 0) && ($ secondloadedobj = Proyek baru ($ db)) && ($ secondloadedobj-> fetchNoCompute ($ reloadedobj-> fk_project)> 0))? $ secondloadedobj-> ref: 'Proyek induk tidak ditemukan' +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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Simpan baris yang dihitung ComputedpersistentDesc=Baris ekstra yang dikomputasi akan disimpan dalam basisdata, namun nilainya hanya akan dikalkulasi ulang ketika objek baris ini diubah. Jika baris yang dihitung bergantung pada objek lain atau data global, nilai ini mungkin salah!! ExtrafieldParamHelpPassword=Membiarkan baris ini kosong berarti nilai ini akan disimpan tanpa enkripsi (baris harus disembunyikan hanya dengan bintang di layar).
Atur 'otomatis' untuk menggunakan aturan enkripsi secara default untuk menyimpan kata sandi ke dalam basisdata (kemudian nilai baca akan menjadi hash saja, tidak ada cara untuk mengambil nilai asli) @@ -645,6 +645,8 @@ Module2300Name=Pekerjaan terjadwal Module2300Desc=Manajemen pekerjaan terjadwal (alias tabel cron atau chrono) Module2400Name=Perihal / Agenda Module2400Desc=Lacak agenda. Catat kejadian otomatis untuk tujuan pelacakan atau catat agenda atau pertemuan manual. Ini adalah modul utama untuk Manajemen Hubungan Pelanggan dan Vendor yang baik. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=DMS / ECM Module2500Desc=Sistem Manajemen Dokumen / Manajemen Konten Elektronik. Organisasi otomatis dari dokumen Anda yang dihasilkan atau disimpan. Bagikan saat Anda membutuhkannya. Module2600Name=API / Web services (SOAP server) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind kemampuan konversi Module3200Name=Arsip yang Tidak Dapat Diubah Module3200Desc=Aktifkan log peristiwa bisnis yang tidak dapat diubah. Perihal diarsipkan secara waktu nyata. Log adalah tabel read-only peristiwa dirantai yang dapat diekspor. Modul ini mungkin wajib untuk beberapa negara. +Module3300Name=Module Builder +Module3200Desc=Aktifkan log peristiwa bisnis yang tidak dapat diubah. Perihal diarsipkan secara waktu nyata. Log adalah tabel read-only peristiwa dirantai yang dapat diekspor. Modul ini mungkin wajib untuk beberapa negara. Module3400Name=Jaringan sosial Module3400Desc=Aktifkan bidang Jaringan Sosial ke pihak ketiga dan alamat (skype, twitter, facebook, ...). Module4000Name=HRM @@ -700,8 +704,10 @@ Module62000Name=Istilah Ekonomi Internasional Module62000Desc=Tambahkan fitur untuk mengelola Incoterms Module63000Name=Sumber daya Module63000Desc=Kelola sumber daya (printer, mobil, kamar, ...) untuk dialokasikan ke agenda +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Penerimaan -Permission11=Membaca Nota Pelanggan +Permission11=Read customer invoices (and payments) Permission12=Membuat/Merubah Nota Pelanggan Permission13=Faktur pelanggan tidak valid Permission14=Validasi Nota Pelanggan @@ -943,7 +949,7 @@ Permission1190=Menyetujui (persetujuan kedua) pesanan pembelian Permission1191=Ekspor pesanan pemasok dan atributnya Permission1201=Dapatkan hasil ekspor Permission1202=Buat / Ubah ekspor -Permission1231=Baca faktur vendor +Permission1231=Read vendor invoices (and payments) Permission1232=Buat / ubah faktur vendor Permission1233=Validasi faktur vendor Permission1234=Hapus faktur vendor @@ -1230,7 +1236,7 @@ SetupDescription4= %s -> %s

Perangkat lunak ini ada SetupDescription5=Entri menu Pengaturan lainnya mengatur parameter opsional. SetupDescriptionLink= %s - %s SetupDescription3b=Parameter dasar yang digunakan untuk menyesuaikan perilaku default aplikasi Anda (mis. untuk fitur terkait negara). -SetupDescription4b=Perangkat lunak ini adalah rangkaian dari banyak modul/aplikasi. Modul yang terkait dengan kebutuhan Anda harus diaktifkan dan dikonfigurasi. Entri menu akan muncul dengan aktivasi modul ini. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Peristiwa keamanan yang diaudit NoSecurityEventsAreAduited=Tidak ada peristiwa keamanan yang diaudit. Anda dapat mengaktifkannya dari menu %s Audit=Acara keamanan @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive=Pemicu dalam file ini aktif karena modul%sdia GeneratedPasswordDesc=Pilih metode yang akan digunakan untuk kata sandi yang dibuat secara otomatis. DictionaryDesc=Masukkan semua data referensi. Anda dapat menambahkan nilai Anda ke default. ConstDesc=Halaman ini memungkinkan Anda untuk mengedit (menimpa) parameter yang tidak tersedia di halaman lain. Ini sebagian besar merupakan parameter khusus untuk pengembang / pemecahan masalah lanjut saja. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=Semua parameter terkait keamanan lainnya didefinisikan di sini. LimitsSetup=Batas / Pengaturan presisi LimitsDesc=Anda dapat menentukan batasan, tindakan awal, dan optimisasi yang digunakan oleh Dolibarr di sini @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Gunakan jenis agenda (dikelola dalam Pengaturan menu -> Ka AGENDA_USE_EVENT_TYPE_DEFAULT=Secara otomatis mengatur nilai default ini untuk jenis agenda di agenda buat formulir AGENDA_DEFAULT_FILTER_TYPE=Secara otomatis mengatur jenis agenda ini di filter pencarian tampilan agenda AGENDA_DEFAULT_FILTER_STATUS=Secara otomatis mengatur status ini untuk agenda di filter pencarian tampilan agenda +AGENDA_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Tampilan mana yang ingin Anda buka secara default saat memilih menu Agenda AGENDA_REMINDER_BROWSER=Aktifkan pengingat acara pada browser pengguna (Ketika tanggal pengingat tercapai, popup ditampilkan oleh browser. Setiap pengguna dapat menonaktifkan pemberitahuan tersebut dari pengaturan pemberitahuan browser). AGENDA_REMINDER_BROWSER_SOUND=Aktifkan pemberitahuan suara @@ -2129,6 +2139,7 @@ CodeLastResult=Kode hasil terbaru NbOfEmailsInInbox=Jumlah email dalam direktori sumber LoadThirdPartyFromName=Muat pihak ketiga yang mencari di %s (hanya memuat) LoadThirdPartyFromNameOrCreate=Muat pencarian pihak ketiga di %s (buat jika tidak ditemukan) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Pesan dari percakapan yang dimulai oleh email pertama yang dikirim dari Dolibarr WithoutDolTrackingID=Pesan dari percakapan yang dimulai dengan email pertama TIDAK dikirim dari Dolibarr @@ -2355,3 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/id_ID/install.lang b/htdocs/langs/id_ID/install.lang index 8aac1bb7f95..263c3a20d56 100644 --- a/htdocs/langs/id_ID/install.lang +++ b/htdocs/langs/id_ID/install.lang @@ -51,7 +51,6 @@ DatabaseName=Nama Database DatabasePrefix=Awalan tabel basis data DatabasePrefixDescription=Awalan tabel basis data. Jika kosong, standarnya adalah llx_. AdminLogin=Akun pengguna untuk pemilik basis data Dolibarr. -PasswordAgain=Ketik ulang konfirmasi kata sandi AdminPassword=Kata sandi untuk pemilik basis data Dolibarr. CreateDatabase=Buat basis data CreateUser=Buat akun pengguna atau berikan izin akun pengguna pada basis data Dolibarr @@ -89,7 +88,7 @@ LoginAlreadyExists=Telah ada DolibarrAdminLogin=Login admin Dolibarr AdminLoginAlreadyExists=Akun administrator Dolibarr ' %s ' sudah ada. Kembali jika Anda ingin membuat yang lain. FailedToCreateAdminLogin=Gagal membuat akun administrator Dolibarr. -WarningRemoveInstallDir=Peringatan, untuk alasan keamanan, setelah instalasi atau peningkatan selesai, Anda harus menambahkan file yang bernamainstall.lockke direktori dokumen Dolibarr untuk mencegah penggunaan perangkat instal yang tidak disengaja / berbahaya lagi. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=Tidak tersedia di PHP ini ChoosedMigrateScript=Pilih skrip migrasi DataMigration=Migrasi basis data (data) @@ -209,7 +208,12 @@ HideNotAvailableOptions=Sembunyikan opsi yang tidak tersedia ErrorFoundDuringMigration=Kesalahan dilaporkan selama proses migrasi sehingga langkah selanjutnya tidak tersedia. Untuk mengabaikan kesalahan, Anda dapat klik di sini , tetapi aplikasi atau beberapa fitur mungkin tidak berfungsi dengan benar sampai kesalahan diselesaikan. YouTryInstallDisabledByDirLock=Aplikasi mencoba melakukan pemutakhiran sendiri, tetapi halaman instal / pemutakhiran telah dinonaktifkan untuk keamanan (direktori diubah namanya dengan akhiran .lock).
YouTryInstallDisabledByFileLock=Aplikasi mencoba melakukan pemutakhiran sendiri, tetapi halaman instal / pemutakhiran telah dinonaktifkan untuk keamanan (dengan adanya file kunciinstall.lock dalam direktori dokumen dolibarr).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=Klik di sini untuk pergi ke aplikasi Anda ClickOnLinkOrRemoveManualy=Jika peningkatan sedang berlangsung, harap tunggu. Jika tidak, klik tautan berikut. Jika Anda selalu melihat halaman yang sama, Anda harus menghapus / mengganti nama file install.lock di direktori dokumen. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=Sarat FunctionTest=Tes fungsi +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/id_ID/members.lang b/htdocs/langs/id_ID/members.lang index 4405393681a..9c499b200c0 100644 --- a/htdocs/langs/id_ID/members.lang +++ b/htdocs/langs/id_ID/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=Statistik kontribusi NbOfSubscriptions=Jumlah kontribusi AmountOfSubscriptions=Jumlah yang dikumpulkan dari kontribusi TurnoverOrBudget=Omset (untuk perusahaan) atau Anggaran (untuk yayasan) -DefaultAmount=Jumlah kontribusi default +DefaultAmount=Default amount of contribution (used only if no amount is defined at member type level) +MinimumAmount=Minimum amount (used only when contribution amount is free) CanEditAmount=Subscription amount is free CanEditAmountDetail=Visitor can choose/edit amount of its contribution regardless of the member type AmountIsLowerToMinimumNotice=sur un dû total de %s diff --git a/htdocs/langs/is_IS/admin.lang b/htdocs/langs/is_IS/admin.lang index e08f54e6424..1255f40be09 100644 --- a/htdocs/langs/is_IS/admin.lang +++ b/htdocs/langs/is_IS/admin.lang @@ -51,8 +51,6 @@ ClientSortingCharset=Client collation WarningModuleNotActive=Module %s verður að vera virkt WarningOnlyPermissionOfActivatedModules=Aðeins heimildir sem tengjast virkar einingar eru sýnd hér. Þú getur virkjað annarra eininga í Home-> Uppsetning-> Mát síðu. DolibarrSetup=Dolibarr skipulag -InternalUser=Innri notandi -ExternalUser=Ytri notandi InternalUsers=Innri notendur ExternalUsers=Ytri notendur UserInterface=User interface @@ -294,6 +292,7 @@ MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (default value in php.ini: %s) MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS Port (Not defined into PHP on Unix-like systems) MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (Not defined into PHP on Unix-like systems) MAIN_MAIL_EMAIL_FROM=Sender email for automatic emails (default value in php.ini: %s) +EMailHelpMsgSPFDKIM=To prevent Dolibarr emails to be classified as spam, make sure that the server is authorized to send e-mails from this address by SPF and DKIM configuration MAIN_MAIL_ERRORS_TO=Email used for error returns emails (fields 'Errors-To' in emails sent) MAIN_MAIL_AUTOCOPY_TO= Copy (Bcc) all sent emails to MAIN_DISABLE_ALL_MAILS=Disable all email sending (for test purposes or demos) @@ -439,8 +438,10 @@ Unique=Unique Boolean=Boolean (one checkbox) ExtrafieldPhone = Sími ExtrafieldPrice = Verð +ExtrafieldPriceWithCurrency=Price with currency ExtrafieldMail = Email ExtrafieldUrl = Url +ExtrafieldIP = IP ExtrafieldSelect = Select list ExtrafieldSelectList = Select from table ExtrafieldSeparator=Separator (not a field) @@ -450,7 +451,7 @@ 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->fetchNoCompute($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->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Store computed field ComputedpersistentDesc=Computed extra fields will be stored in the database, however, the value will only be recalculated when the object of this field is changed. If the computed field depends on other objects or global data this value might be wrong!! 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) @@ -477,7 +478,7 @@ InstalledInto=Installed into directory %s BarcodeInitForThirdparties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have %s record on %s %s without barcode defined. -InitEmptyBarCode=Init value for next %s empty records +InitEmptyBarCode=Init value for the %s empty barcodes 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 @@ -501,7 +502,8 @@ WarningPHPMail=WARNING: The setup to send emails from the application is using t WarningPHPMailA=- Using the server of the Email Service Provider increases the trustability of your email, so it increases the deliverablity without being flagged as SPAM WarningPHPMailB=- Some Email Service 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 for delivery (be careful also of your email provider's sending quota). WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to send emails is also interesting so all emails sent from application will also be saved into your "Sent" directory of your mailbox. -WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. +WarningPHPMailD=It is therefore recommended to change the sending method of e-mails to the value "SMTP". +WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. 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. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s @@ -514,7 +516,7 @@ PageUrlForDefaultValuesCreate=
Example:
For the form to create a new third 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 AlsoDefaultValuesAreEffectiveForActionCreate=Also note that overwritting default values for form creation works only for pages that were correctly designed (so with parameter action=create or presend...) EnableDefaultValues=Enable customization of default values -EnableOverwriteTranslation=Enable usage of overwritten translation +EnableOverwriteTranslation=Allow customization of translations GoIntoTranslationMenuToChangeThis=A translation has been found for the key with this code. To change this value, you must edit it from Home-Setup-translation. WarningSettingSortOrder=Warning, setting a default sort order may result in a technical error when going on the list page if field is an unknown field. If you experience such an error, come back to this page to remove the default sort order and restore default behavior. Field=Field @@ -643,11 +645,13 @@ Module2300Name=Scheduled jobs Module2300Desc=Scheduled jobs management (alias cron or chrono table) Module2400Name=Events/Agenda Module2400Desc=Track events. Log automatic events for tracking purposes or record manual events or meetings. This is the principal module for good Customer or Vendor Relationship Management. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. 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) +Module2600Name=API / Web services (SOAP server) Module2600Desc=Enable the Dolibarr SOAP server providing API services -Module2610Name=API/Web services (REST server) +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 Purchase orders are currently supported.) @@ -658,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind viðskipti viðbúnað Module3200Name=Unalterable Archives Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. +Module3300Name=Module Builder +Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. Module3400Name=Social Networks Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...). Module4000Name=HRM @@ -698,7 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Add features to manage Incoterms Module63000Name=Gagnagrunnur Module63000Desc=Manage resources (printers, cars, rooms, ...) for allocating to events -Permission11=Lesa reikningum +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. +Module94160Name=Receptions +Permission11=Read customer invoices (and payments) Permission12=Búa til reikninga Permission13=Invalidate customer invoices Permission14=Staðfesta reikningum @@ -714,6 +723,7 @@ Permission27=Eyða auglýsing tillögur Permission28=Útflutningur auglýsing tillögur Permission31=Lesa vörur Permission32=Búa til / breyta vörur +Permission33=Read prices products Permission34=Eyða vöru Permission36=Sjá / stjórna falinn vörur Permission38=Útflutningur vöru @@ -739,6 +749,7 @@ Permission79=Búa til / breyta áskrift Permission81=Lesa viðskiptavinum pantanir Permission82=Búa til / breyta viðskiptavini pantanir Permission84=Staðfesta viðskiptavinum pantanir +Permission85=Generate the documents sales orders Permission86=Senda viðskiptavinum pantanir Permission87=Loka viðskiptavinum pantanir Permission88=Hætta við viðskiptavini pantanir @@ -840,9 +851,9 @@ Permission286=Útflutningur tengiliðir Permission291=Lesa gjaldskrá Permission292=Setja heimildir um gjaldtöku Permission293=Modify customer's tariffs -Permission300=Read barcodes -Permission301=Create/modify barcodes -Permission302=Delete barcodes +Permission301=Generate PDF sheets of barcodes +Permission304=Create/modify barcodes +Permission305=Delete barcodes Permission311=Lesa þjónusta Permission312=Assign service/subscription to contract Permission331=Lesa bókamerki @@ -874,6 +885,7 @@ Permission525=Access loan calculator Permission527=Export loans Permission531=Lesa þjónusta Permission532=Búa til / breyta þjónusta +Permission533=Read prices services Permission534=Eyða þjónustu Permission536=Sjá / stjórna falinn þjónusta Permission538=Útflutningur þjónustu @@ -937,7 +949,7 @@ Permission1190=Approve (second approval) purchase orders Permission1191=Export supplier orders and their attributes Permission1201=Fá vegna útflutnings Permission1202=Búa til / breyta útflutnings -Permission1231=Read vendor invoices +Permission1231=Read vendor invoices (and payments) Permission1232=Create/modify vendor invoices Permission1233=Validate vendor invoices Permission1234=Delete vendor invoices @@ -968,13 +980,14 @@ Permission3301=Generate new modules Permission4001=Read skill/job/position Permission4002=Create/modify skill/job/position Permission4003=Delete skill/job/position -Permission4020=Read evaluations -Permission4021=Create/modify your evaluation -Permission4022=Validate evaluation -Permission4023=Delete evaluation -Permission4030=See comparison menu +Permission4021=Read evaluations (yours and your subordinates) +Permission4022=Create/modify evaluations +Permission4023=Validate evaluation +Permission4025=Delete evaluation +Permission4028=See comparison menu Permission4031=Read personal information Permission4032=Write personal information +Permission4033=Read all evaluations (even those of user not subordinates) Permission10001=Read website content Permission10002=Create/modify website content (html and javascript content) Permission10003=Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers. @@ -1078,6 +1091,10 @@ DictionaryAssetDisposalType=Type of disposal of assets TypeOfUnit=Type of unit SetupSaved=Skipulag vistuð SetupNotSaved=Setup not saved +OAuthServiceConfirmDeleteTitle=Delete OAuth entry +OAuthServiceConfirmDeleteMessage=Are you sure you want to delete this OAuth entry ? All existing tokens for it will also be deleted. +ErrorInEntryDeletion=Error in entry deletion +EntryDeleted=Entry deleted BackToModuleList=Back to Module list BackToDictionaryList=Back to Dictionaries list TypeOfRevenueStamp=Type of tax stamp @@ -1219,7 +1236,7 @@ SetupDescription4=%s -> %s

This software is a suite of m SetupDescription5=Other Setup menu entries manage optional parameters. SetupDescriptionLink=%s - %s SetupDescription3b=Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Security events that are audited NoSecurityEventsAreAduited=No security events are audited. You can enable them from menu %s Audit=Security events @@ -1235,11 +1252,13 @@ BrowserName=Browser name BrowserOS=Browser OS ListOfSecurityEvents=Listi yfir Dolibarr öryggi viðburðir SecurityEventsPurged=Öryggi viðburðir hreinsa +TrackableSecurityEvents=Trackable security events LogEventDesc=Enable logging for specific security events. Administrators the log 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=Kerfi upplýsingar er ýmis tæknilegar upplýsingar sem þú færð í lesa aðeins háttur og sýnileg Aðeins kerfisstjórar. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. +MoreNetworksAvailableWithModule=More social networks may be available by enabling the module "Social networks". AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and presentation of the application can be modified here. @@ -1257,6 +1276,7 @@ TriggerActiveAsModuleActive=Hrindir af stað í þessari skrá eru virku og m GeneratedPasswordDesc=Choose the method to be used for auto-generated passwords. DictionaryDesc=Insert all reference data. You can add your values to the default. ConstDesc=This page allows you to edit (override) parameters not available in other pages. These are mostly reserved parameters for developers/advanced troubleshooting only. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=All other security related parameters are defined here. LimitsSetup=Mörk / Precision skipulag LimitsDesc=You can define limits, precisions and optimizations used by Dolibarr here @@ -1290,6 +1310,8 @@ YouMustRunCommandFromCommandLineAfterLoginToUser=Þú verður að keyra þessa s YourPHPDoesNotHaveSSLSupport=SSL virka ekki í boði í PHP þinn DownloadMoreSkins=Fleiri skinn til að sækja SimpleNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset +SimpleRefNumRefModelDesc=Returns the reference number in the format n where n is a sequential auto-incrementing number with no reset +AdvancedNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset SimpleNumRefNoDateModelDesc=Returns the reference number in the format %s-nnnn where nnnn is a sequential auto-incrementing number with no reset ShowProfIdInAddress=Show professional ID with addresses ShowVATIntaInAddress=Hide intra-Community VAT number @@ -1376,7 +1398,7 @@ GetBarCode=Get barcode NumberingModules=Numbering models DocumentModules=Document models ##### Module password generation -PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters in lowercase. +PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters. PasswordGenerationNone=Do not suggest a generated password. Password must be typed in manually. PasswordGenerationPerso=Return a password according to your personally defined configuration. SetupPerso=According to your configuration @@ -1430,6 +1452,10 @@ SuppliersPayment=Vendor payments SupplierPaymentSetup=Vendor payments setup InvoiceCheckPosteriorDate=Check facture date before validation InvoiceCheckPosteriorDateHelp=Validating an invoice will be forbidden if its date is anterior to the date of last invoice of same type. +InvoiceOptionCategoryOfOperations=Display the mention "category of operations" on the invoice. +InvoiceOptionCategoryOfOperationsHelp=Depending on the situation, the mention will appear in the form:
- Category of operations: Delivery of goods
- Category of operations: Provision of services
- Category of operations: Mixed - Delivery of goods & provision of services +InvoiceOptionCategoryOfOperationsYes1=Yes, below the address block +InvoiceOptionCategoryOfOperationsYes2=Yes, in the lower left-hand corner ##### Proposals ##### PropalSetup=Auglýsing tillögur mát skipulag ProposalsNumberingModules=Auglýsing tillögu tala mát @@ -1472,11 +1498,12 @@ WatermarkOnDraftContractCards=Watermark on draft contracts (none if empty) ##### Members ##### MembersSetup=Members mát skipulag MemberMainOptions=Helstu möguleikar +MemberCodeChecker=Options for automatic generation of member codes AdherentLoginRequired= Stjórna Innskráning fyrir hvern meðlim AdherentMailRequired=Email required to create a new member MemberSendInformationByMailByDefault=Checkbox að senda póst staðfestingu á meðlimum (löggilding eða nýja áskrift) er sjálfgefið MemberCreateAnExternalUserForSubscriptionValidated=Create an external user login for each new member subscription validated -VisitorCanChooseItsPaymentMode=Visitor can choose from available payment modes +VisitorCanChooseItsPaymentMode=Visitor can choose from any 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. MembersDocModules=Document templates for documents generated from member record ##### LDAP setup ##### @@ -1738,8 +1765,8 @@ ActivateFCKeditor=Virkja FCKeditor fyrir: FCKeditorForNotePublic=WYSIWIG creation/edition of the field "public notes" of elements FCKeditorForNotePrivate=WYSIWIG creation/edition of the field "private notes" of elements FCKeditorForCompany=WYSIWIG creation/edition of the field description of elements (except products/services) -FCKeditorForProduct=WYSIWIG creation/edition of the field description of products/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 creation/edition of products description or lines for objects (lines of proposals, orders, invoices, etc...). +FCKeditorForProductDetails2=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. FCKeditorForMailing= WYSIWIG sköpun / útgáfa af póstlista FCKeditorForUserSignature=WYSIWIG creation/edition of user signature FCKeditorForMail=WYSIWIG creation/edition for all mail (except Tools->eMailing) @@ -1762,7 +1789,7 @@ DetailMenuHandler=Valmynd dýraþjálfari hvar á að birta nýja valmynd DetailMenuModule=Module nafn ef matseðill færsla kemur frá einingu DetailType=Tegund matseðill (toppur eða vinstri) DetailTitre=Valmynd merki eða merki kóðann fyrir þýðingar -DetailUrl=URL þar Valmynd senda þér (Alger URL hlekkur eða ytri tengsl við http://) +DetailUrl=URL where menu send you (Relative URL link or external link with https://) DetailEnabled=Skilyrði að sýna eða ekki færslu DetailRight=Skilyrði sýna leyfisleysi valmyndir grár DetailLangs=Lang skrá nafn merki númer þýðingar @@ -1806,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Use events types (managed in menu Setup -> Dictionaries -> 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_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Which view do you want to open by default when selecting menu Agenda AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (When remind date is reached, a popup is shown by the browser. Each user can disable such notifications from its browser notification setup). AGENDA_REMINDER_BROWSER_SOUND=Enable sound notification @@ -1833,7 +1863,7 @@ StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatib CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sale from Point of Sale. Hence a warehouse is required. CashDeskForceDecreaseStockLabel=Stock decrease for batch products was forced. CashDeskForceDecreaseStockDesc=Decrease first by the oldest eatby and sellby dates. -CashDeskReaderKeyCodeForEnter=Key code for "Enter" defined in barcode reader (Example: 13) +CashDeskReaderKeyCodeForEnter=Key ASCII code for "Enter" defined in barcode reader (Example: 13) ##### Bookmark ##### BookmarkSetup=Bókamerki mát skipulag 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. @@ -1871,7 +1901,7 @@ SuppliersInvoiceNumberingModel=Vendor invoices numbering models IfSetToYesDontForgetPermission=If set to a non null value, don't forget to provide permissions to groups or users allowed for the second approval ##### GeoIPMaxmind ##### GeoIPMaxmindSetup=GeoIP Maxmind mát skipulag -PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation.
Examples:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoLite2-Country.mmdb +PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation NoteOnPathLocation=Athugaðu að IP þinn til landsins gögn skrá verður inni í möppuna PHP geta lesið (Athugaðu PHP open_basedir skipulag og skráarkerfi leyfi). YouCanDownloadFreeDatFileTo=Þú getur sótt ókeypis útgáfa af Maxmind GeoIP landi skrá hjá %s . YouCanDownloadAdvancedDatFileTo=Þú getur einnig hlaðið niður fleiri heill útgáfa með uppfærslum á Maxmind GeoIP landi skrá hjá %s . @@ -1922,6 +1952,7 @@ BackupDumpWizard=Wizard to build the database dump file BackupZipWizard=Wizard to build the archive of documents directory 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 a manual process only a privileged user may perform. +InstallModuleFromWebHasBeenDisabledContactUs=Install or development of external modules or dynamic websites, from the application, is currently locked for security purpose. Please contact us if you need to enable this feature. 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 @@ -1977,6 +2008,7 @@ MailToSendSupplierOrder=Purchase orders MailToSendSupplierInvoice=Vendor invoices MailToSendContract=Samningar MailToSendReception=Receptions +MailToExpenseReport=Expense reports MailToThirdparty=Í þriðja aðila MailToMember=Meðlimir MailToUser=Notendur @@ -2030,6 +2062,7 @@ MAIN_PDF_MARGIN_RIGHT=Right margin on PDF MAIN_PDF_MARGIN_TOP=Top margin on PDF MAIN_PDF_MARGIN_BOTTOM=Bottom margin on PDF MAIN_DOCUMENTS_LOGO_HEIGHT=Height for logo on PDF +DOC_SHOW_FIRST_SALES_REP=Show first sales representative MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Add column for picture on proposal lines MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Width of the column if a picture is added on lines MAIN_PDF_NO_SENDER_FRAME=Hide borders on sender address frame @@ -2047,6 +2080,8 @@ RemoveSpecialChars=Remove special characters COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN_REGEX) COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Duplicate not allowed +RemoveSpecialWords=Clean certain words when generating sub-accounts for customers or suppliers +RemoveSpecialWordsHelp=Specify the words to be cleaned before calculating the customer or supplier account. Use a ";" between each word GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact) GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here HelpOnTooltip=Help text to show on tooltip @@ -2063,11 +2098,18 @@ EmailCollectors=Email collectors 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 +EMailHostPort=Port of email IMAP server +loginPassword=Login/Password +oauthToken=Oauth2 token +accessType=Acces type +oauthService=Oauth service +TokenMustHaveBeenCreated=Module OAuth2 must be enabled and an oauth2 token must have been created with the correct permissions (for example scope "gmail_full" with OAuth for Gmail). MailboxSourceDirectory=Mailbox source directory MailboxTargetDirectory=Mailbox target directory EmailcollectorOperations=Operations to do by collector EmailcollectorOperationsDesc=Operations are executed from top to bottom order MaxEmailCollectPerCollect=Max number of emails collected per collect +TestCollectNow=Test collect CollectNow=Collect now ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s? DateLastCollectResult=Date of latest collect try @@ -2097,6 +2139,7 @@ CodeLastResult=Latest result code NbOfEmailsInInbox=Number of emails in source directory LoadThirdPartyFromName=Load third party searching on %s (load only) LoadThirdPartyFromNameOrCreate=Load third party searching on %s (create if not found) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Message from a conversation initiated by a first email sent from Dolibarr WithoutDolTrackingID=Message from a conversation initiated by a first email NOT sent from Dolibarr @@ -2106,7 +2149,7 @@ CreateCandidature=Create job application FormatZip=Zip MainMenuCode=Menu entry code (mainmenu) ECMAutoTree=Show automatic ECM tree -OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a company name from email subject into a temporary variable:
tmp_var=EXTRACT:SUBJECT:Message from company ([^\n]*)

Examples to set the properties of an object to create:
objproperty1=SET:a hard coded value
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (value is set only if property is not already defined)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. OpeningHours=Opening hours OpeningHoursDesc=Enter here the regular opening hours of your company. ResourceSetup=Configuration of Resource module @@ -2171,6 +2214,7 @@ ShowProjectLabel=Project Label PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty +PDFIn2Languages=Show labels into PDF in 2 different languages PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2199,12 +2243,12 @@ MailToPartnership=Partnership AGENDA_EVENT_DEFAULT_STATUS=Default event status when creating a event from the form YouShouldDisablePHPFunctions=You should disable PHP functions IfCLINotRequiredYouShouldDisablePHPFunctions=Except if you need to run system commands in custom code, you shoud disable PHP functions -PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an anitivurs program), you must keep PHP functions +PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an antivirus program), you must keep PHP functions NoWritableFilesFoundIntoRootDir=No writable files or directories of the common programs were found into your root directory (Good) RecommendedValueIs=Recommended: %s Recommended=Mælt NotRecommended=Not recommended -ARestrictedPath=Some restricted path +ARestrictedPath=Some restricted path for data files CheckForModuleUpdate=Check for external modules updates CheckForModuleUpdateHelp=This action will connect to editors of external modules to check if a new version is available. ModuleUpdateAvailable=An update is available @@ -2212,6 +2256,7 @@ NoExternalModuleWithUpdate=No updates found for external modules SwaggerDescriptionFile=Swagger API description file (for use with redoc for example) YouEnableDeprecatedWSAPIsUseRESTAPIsInstead=You enabled deprecated WS API. You should use REST API instead. RandomlySelectedIfSeveral=Randomly selected if several pictures are available +SalesRepresentativeInfo=For Proposals, Orders, Invoices. DatabasePasswordObfuscated=Database password is obfuscated in conf file DatabasePasswordNotObfuscated=Database password is NOT obfuscated in conf file APIsAreNotEnabled=APIs modules are not enabled @@ -2251,7 +2296,7 @@ LateWarningAfter="Late" warning after TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode -ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. +ExportUseLowMemoryModeHelp=Use the low memory mode to generate the dump file (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that the file is complete and error message can't be reported if it fails. Use it if you experience not enough memory errors. ModuleWebhookName = Webhook ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL @@ -2275,7 +2320,55 @@ IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices +INVOICE_SHOW_SHIPPING_ADDRESS=Show shipping address +INVOICE_SHOW_SHIPPING_ADDRESSMore=Compulsory mention for France UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. IfThisCategoryIsChildOfAnother=If this category is a child of another one +DarkThemeMode=Dark theme mode +AlwaysDisabled=Always disabled +AccordingToBrowser=According to browser +AlwaysEnabled=Always Enabled +DoesNotWorkWithAllThemes=Will not work with all themes NoName=No name +ShowAdvancedOptions= Show advanced options +HideAdvancedoptions= Hide advanced options CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: +OauthNotAvailableForAllAndHadToBeCreatedBefore=OAUTH2 authentication is not available for all hosts, and a token with the right permissions must have been created upstream with the OAUTH module +MAIN_MAIL_SMTPS_OAUTH_SERVICE=OAUTH2 authentication service +DontForgetCreateTokenOauthMod=A token with the right permissions must have been created upstream with the OAUTH module +MAIN_MAIL_SMTPS_AUTH_TYPE=Authentification method +UsePassword=Use a password +UseOauth=Use a OAUTH token +Images=Images +MaxNumberOfImagesInGetPost=Max number of images allowed in a HTML field submitted in a form +MaxNumberOfPostOnPublicPagesByIP=Max number of posts on public pages with the same IP address in a month +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: +ScriptIsEmpty=The script is empty +ShowHideTheNRequests=Show/hide the %s SQL request(s) +DefinedAPathForAntivirusCommandIntoSetup=Define a path for an antivirus program into %s +TriggerCodes=Triggerable events +TriggerCodeInfo=Enter here the trigger code(s) that must generate a post of a web request (only external URL are allowed). You can enter several trigger codes separated by a comma. +EditableWhenDraftOnly=If unchecked, the value can only be modified when object has a draft status +CssOnEdit=Css on edit pages +CssOnView=Css on view pages +CssOnList=Css on list pages +HelpCssOnEditDesc=The Css used when editing the field.
Example: "minwiwdth100 maxwidth500 widthcentpercentminusx" +HelpCssOnViewDesc=The Css used when viewing the field. +HelpCssOnListDesc=The Css used when field is inside a list table.
Example: "tdoverflowmax200" +RECEPTION_PDF_HIDE_ORDERED=Hide the quantity ordered on the generated documents for receptions +MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT=Show the price on the generated documents for receptions +WarningDisabled=Warning disabled +LimitsAndMitigation=Access limits and mitigation +DesktopsOnly=Desktops only +DesktopsAndSmartphones=Desktops et smartphones +AllowOnlineSign=Allow online signing +AllowExternalDownload=Allow external download (without login, using a shared link) +DeadlineDayVATSubmission=Deadline day for vat submission on the next month +MaxNumberOfAttachementOnForms=Max number of joinded files in a form +IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/it_CH/admin.lang b/htdocs/langs/it_CH/admin.lang index 3b3a8d2c685..e4705c82130 100644 --- a/htdocs/langs/it_CH/admin.lang +++ b/htdocs/langs/it_CH/admin.lang @@ -1,4 +1,3 @@ # Dolibarr language file - Source file is en_US - admin -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/it_CH/hrm.lang b/htdocs/langs/it_CH/hrm.lang new file mode 100644 index 00000000000..c71599d9ff1 --- /dev/null +++ b/htdocs/langs/it_CH/hrm.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - hrm +RequiredRank=Required rank for this job +OrJobToCompare=Compare to job skills requirements diff --git a/htdocs/langs/it_IT/admin.lang b/htdocs/langs/it_IT/admin.lang index f877e9ef1c2..da2bd4092f3 100644 --- a/htdocs/langs/it_IT/admin.lang +++ b/htdocs/langs/it_IT/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Checkboxes ExtrafieldCheckBoxFromList=Checkboxes from table ExtrafieldLink=Collegamento ad un oggetto ComputedFormula=Campo calcolato -ComputedFormulaDesc=Puoi inserire qui una formula usando altre proprietà dell'oggetto o qualsiasi codice PHP per ottenere un valore calcolato dinamico. Puoi utilizzare qualsiasi formula compatibile con PHP incluso l'operatore condizione "?" e i seguenti oggetti globali: $db, $conf, $langs, $mysoc, $user, $object .
ATTENZIONE : Potrebbero essere disponibili solo alcune proprietà di $object. Se hai bisogno di proprietà non caricate, recupera l'oggetto nella tua formula come nel secondo esempio.
L'uso di un campo calcolato significa che non è possibile immettere alcun valore dall'interfaccia. Inoltre, se si verifica un errore di sintassi, la formula potrebbe non restituire nulla.

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

Esempio per ricaricare l'oggetto
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

Altro esempio di formula per forzare il caricamento dell'oggetto e del suo oggetto padre:
(($ reloaded = )) && ($ reloadedobj-> fetchNoCompute ($ object-> id)> 0) && ($ secondloadedobj = nuovo progetto ($ db)) && ($ secondloadedobj-> fetchNoCompute ($ reloadedobj-> fk_project)> 0))? $ secondloadedobj-> ref: 'Progetto padre non trovato' +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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Store computed field ComputedpersistentDesc=Computed extra fields will be stored in the database, however, the value will only be recalculated when the object of this field is changed. If the computed field depends on other objects or global data this value might be wrong!! 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) @@ -704,8 +704,10 @@ Module62000Name=Import-Export Module62000Desc=Aggiunge funzioni per la gestione Incoterm Module63000Name=Risorse Module63000Desc=Gestione risorse (stampanti, automobili, locali, ...) e loro utilizzo all'interno degli eventi +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Receptions -Permission11=Vedere le fatture attive +Permission11=Read customer invoices (and payments) Permission12=Creare fatture attive Permission13=Invalidare le fatture dei clienti Permission14=Convalidare le fatture attive @@ -947,7 +949,7 @@ Permission1190=Approvare (seconda approvazione) ordini fornitori Permission1191=Esporta gli ordini dei fornitori e i loro attributi Permission1201=Ottieni il risultato di un esportazione Permission1202=Creare/Modificare esportazioni -Permission1231=Visualizzare le fatture fornitori +Permission1231=Read vendor invoices (and payments) Permission1232=Creare / modificare fatture fornitore Permission1233=Convalidare fatture fornitore Permission1234=Eliminare fatture fornitore @@ -1234,7 +1236,7 @@ SetupDescription4=  %s -> %s

Questo software è una SetupDescription5=Altre voci di menu consentono la gestione di parametri opzionali. SetupDescriptionLink= %s - %s SetupDescription3b=Parametri di base utilizzati per personalizzare il comportamento predefinito dell'applicazione (ad es. per le funzionalità relative al paese). -SetupDescription4b=Questo software è una suite di molti moduli/applicazioni. I moduli relativi alle tue esigenze devono essere abilitati e configurati. Le voci del menu appariranno con l'attivazione di questi moduli. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Eventi di sicurezza controllati NoSecurityEventsAreAduited=Nessun evento di sicurezza viene controllato. Puoi abilitarli dal menu %s Audit=Eventi di sicurezza @@ -2366,3 +2368,7 @@ MaxNumberOfAttachementOnForms=Numero massimo di file uniti in un modulo IfDefinedUseAValueBeetween=Se definito, utilizzare un valore compreso tra %s e %s Reload=Ricaricare ConfirmReload=Conferma il ricaricamento del modulo +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/it_IT/bills.lang b/htdocs/langs/it_IT/bills.lang index a7e2c7d4d70..93abf3fad03 100644 --- a/htdocs/langs/it_IT/bills.lang +++ b/htdocs/langs/it_IT/bills.lang @@ -218,8 +218,8 @@ NumberOfBillsByMonth=Numero di fatture per mese AmountOfBills=Importo delle fatture AmountOfBillsHT=Importo delle fature (al netto delle imposte) AmountOfBillsByMonthHT=Importo delle fatture per mese (al netto delle imposte) -UseSituationInvoices=Allow situation invoice -UseSituationInvoicesCreditNote=Allow situation invoice credit note +UseSituationInvoices=Consenti fatture stato avanzamento lavori +UseSituationInvoicesCreditNote=Consenti note di credito stato avanzamento lavori Retainedwarranty=Retained warranty AllowedInvoiceForRetainedWarranty=Garanzia trattenuta utilizzabile sulle seguenti tipologie di fatture RetainedwarrantyDefaultPercent=Retained warranty default percent @@ -234,7 +234,7 @@ setPaymentConditionsShortRetainedWarranty=Set retained warranty payment terms setretainedwarranty=Set retained warranty setretainedwarrantyDateLimit=Set retained warranty date limit RetainedWarrantyDateLimit=Retained warranty date limit -RetainedWarrantyNeed100Percent=The situation invoice need to be at 100%% progress to be displayed on PDF +RetainedWarrantyNeed100Percent=La fattura SAL deve essere al 100%%% di progresso per essere mostrata sul PDF AlreadyPaid=Già pagato AlreadyPaidBack=Già rimborsato AlreadyPaidNoCreditNotesNoDeposits=Già pagata (senza note di credito e note d'accredito) @@ -378,9 +378,9 @@ PaymentOnDifferentThirdBills=Allow payments on different third parties bills but PaymentNote=Nota di pagamento ListOfPreviousSituationInvoices=Elenco delle fatture di avanzamento lavori precedenti ListOfNextSituationInvoices=Elenco delle prossime fatture di avanzamento lavori -ListOfSituationInvoices=List of situation invoices -CurrentSituationTotal=Total current situation -DisabledBecauseNotEnouthCreditNote=To remove a situation invoice from cycle, this invoice's credit note total must cover this invoice total +ListOfSituationInvoices=Elenco fatture SAL +CurrentSituationTotal=Totale SAL +DisabledBecauseNotEnouthCreditNote=Per rimuovere una fattura SAL dal ciclo, il totale della nota di credito deve copire l'intero importo totale della fattura RemoveSituationFromCycle=Remove this invoice from cycle ConfirmRemoveSituationFromCycle=Remove this invoice %s from cycle ? ConfirmOuting=Confirm outing @@ -578,8 +578,8 @@ SituationAmount=Importo della fattura di avanzamento lavori (al netto delle impo SituationDeduction=Sottrazione avanzamento ModifyAllLines=Modifica tutte le righe CreateNextSituationInvoice=Crea il prossimo avanzamento lavori -ErrorFindNextSituationInvoice=Error unable to find next situation cycle ref -ErrorOutingSituationInvoiceOnUpdate=Unable to outing this situation invoice. +ErrorFindNextSituationInvoice=Errore: impossibile trovare il riferimento del ciclo di fatturazione SAL +ErrorOutingSituationInvoiceOnUpdate=Impossibile risolvere questa fatturazione SAL. ErrorOutingSituationInvoiceCreditNote=Unable to outing linked credit note. NotLastInCycle=Questa fattura non è la più recente e non può essere modificata DisabledBecauseNotLastInCycle=Il prossimo avanzamento lavori esiste già @@ -590,9 +590,9 @@ CantBeLessThanMinPercent=Il valore dell'avanzamento non può essere inferiore al NoSituations=Nessuna situazione aperta InvoiceSituationLast=Fattura a conclusione lavori PDFCrevetteSituationNumber=Situazione n°%s -PDFCrevetteSituationInvoiceLineDecompte=Fattura ad avanzamento lavori - COUNT +PDFCrevetteSituationInvoiceLineDecompte=Fattura ad avanzamento lavori - CONTA PDFCrevetteSituationInvoiceTitle=Fattura di avanzamento lavori -PDFCrevetteSituationInvoiceLine=Situation N°%s: Inv. N°%s on %s +PDFCrevetteSituationInvoiceLine=SAL N°%s: Fatt. N°%s su %s TotalSituationInvoice=Totale avanzamento lavori invoiceLineProgressError=L'avanzamento della riga fattura non può essere maggiore o uguale alla successiva riga fattura updatePriceNextInvoiceErrorUpdateline=Error: update price on invoice line: %s diff --git a/htdocs/langs/it_IT/install.lang b/htdocs/langs/it_IT/install.lang index 8fbb9eca9cb..026603e789d 100644 --- a/htdocs/langs/it_IT/install.lang +++ b/htdocs/langs/it_IT/install.lang @@ -28,6 +28,7 @@ ErrorPHPVersionTooLow=Versione PHP troppo vecchia. È richiesta la versione %s o ErrorPHPVersionTooHigh=Versione PHP troppo alta. È richiesta la versione %s o precedente. ErrorConnectedButDatabaseNotFound=Connection to server successful but database '%s' not found. ErrorDatabaseAlreadyExists=Il database %s esiste già. +ErrorNoMigrationFilesFoundForParameters=Nessun file di migrazione trovato per le versioni selezionate IfDatabaseNotExistsGoBackAndUncheckCreate=If the database does not exist, go back and check option "Create database". IfDatabaseExistsGoBackAndCheckCreate=Se il database esiste già, torna indietro e deseleziona l'opzione "Crea database". WarningBrowserTooOld=Version of browser is too old. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommended. @@ -48,9 +49,8 @@ ServerPortDescription=Porta. Lasciare vuoto se sconosciuta. DatabaseServer=Database server DatabaseName=Nome del database DatabasePrefix=Database table prefix -DatabasePrefixDescription=Database table prefix. If empty, defaults to llx_. +DatabasePrefixDescription=Prefisso tabelle database. Se vuoto, il default è llx_. AdminLogin=User account for the Dolibarr database owner. -PasswordAgain=Retype password confirmation AdminPassword=Password per amministratore del database. Da lasciare vuoto se ci si collega in forma anonima CreateDatabase=Crea database CreateUser=Create user account or grant user account permission on the Dolibarr database @@ -88,7 +88,7 @@ LoginAlreadyExists=Esiste già DolibarrAdminLogin=Login dell'amministratore di Dolibarr AdminLoginAlreadyExists=Dolibarr administrator account '%s' already exists. Go back if you want to create another one. FailedToCreateAdminLogin=Impossibile creare l'account amministratore di 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. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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 ChoosedMigrateScript=Scegli script di migrazione DataMigration=Database migration (data) @@ -208,7 +208,12 @@ HideNotAvailableOptions=Nascondi opzioni non disponibili ErrorFoundDuringMigration=Error(s) were reported during the migration process so next step is not available. To ignore errors, you can click here, but the application or some features may not work correctly until the errors are resolved. 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).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=Click here to go to your application ClickOnLinkOrRemoveManualy=Se è in corso un aggiornamento, attendere. In caso contrario, fai clic sul seguente link. Se vedi sempre questa stessa pagina, devi rimuovere / rinominare il file install.lock nella directory dei documenti. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=Caricato FunctionTest=Test di funzionalita +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/it_IT/members.lang b/htdocs/langs/it_IT/members.lang index 7efb31bc8ac..0450d53adb2 100644 --- a/htdocs/langs/it_IT/members.lang +++ b/htdocs/langs/it_IT/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=Statistiche dei contributi NbOfSubscriptions=Numero di contributi AmountOfSubscriptions=Importo raccolto dai contributi TurnoverOrBudget=Giro d'affari (aziende) o Budget (fondazione) -DefaultAmount=Importo predefinito del contributo +DefaultAmount=Default amount of contribution (used only if no amount is defined at member type level) +MinimumAmount=Minimum amount (used only when contribution amount is free) CanEditAmount=L'importo dell'abbonamento è gratuito CanEditAmountDetail=Il visitatore può scegliere/modificare l'importo del suo contributo indipendentemente dal tipo di membro AmountIsLowerToMinimumNotice=su un totale dovuto di %s diff --git a/htdocs/langs/it_IT/oauth.lang b/htdocs/langs/it_IT/oauth.lang index 70284f51e10..b14c5606f05 100644 --- a/htdocs/langs/it_IT/oauth.lang +++ b/htdocs/langs/it_IT/oauth.lang @@ -9,8 +9,9 @@ HasAccessToken=Un token è stato generato e salvato nel database locale NewTokenStored=Token received and saved ToCheckDeleteTokenOnProvider=Click here to check/delete authorization saved by %s OAuth provider TokenDeleted=Token eliminato +GetAccess=Click here to get a token RequestAccess=Clicca qui per richiedere/rinnovare l'accesso e ricevere un nuovo token -DeleteAccess=Click here to delete token +DeleteAccess=Premi qui per eliminare il token UseTheFollowingUrlAsRedirectURI=Usa il seguente indirizzo come Redirect URI quando crei le credenziali sul tuo provider OAuth: ListOfSupportedOauthProviders=Aggiungi i tuoi provider di token OAuth2. Quindi, vai sulla pagina di amministrazione del tuo provider OAuth per creare/ottenere un ID OAuth e un segreto e salvarli qui. Una volta terminato, passa all'altra scheda per generare il tuo token. OAuthSetupForLogin=Pagina per gestire (generare/eliminare) i token OAuth @@ -30,7 +31,11 @@ OAUTH_GITHUB_SECRET=Oauth GitHub Secret OAUTH_URL_FOR_CREDENTIAL=Vai a questa pagina per creare o ottenere il tuo ID OAuth e Secret OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live -OAUTH_ID=OAuth ID +OAUTH_ID=OAuth Client ID OAUTH_SECRET=OAuth segreto +OAUTH_TENANT=OAuth tenant OAuthProviderAdded=Aggiunto provider OAuth AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Esiste già una voce OAuth per questo provider ed etichetta +URLOfServiceForAuthorization=URL provided by OAuth service for authentication +Scopes=Permissions (Scopes) +ScopeUndefined=Permissions (Scopes) undefined (see previous tab) diff --git a/htdocs/langs/it_IT/receptions.lang b/htdocs/langs/it_IT/receptions.lang index e7c43fed2d1..1d0453a9620 100644 --- a/htdocs/langs/it_IT/receptions.lang +++ b/htdocs/langs/it_IT/receptions.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions ReceptionDescription=Gestione ricezione prodotti (Crea documenti di ricezione) -ReceptionsSetup=Configurazione ricezione prodotti +ReceptionsSetup=Configurazione delle ricezioni fornitore RefReception=Rif. ricezione Reception=Ricezione Receptions=Ricezioni @@ -9,10 +9,10 @@ Reception=Ricezione Receptions=Ricezioni ShowReception=Mostra Ricezioni ReceptionsArea=Area ricezioni -ListOfReceptions=Lista ricezioni +ListOfReceptions=Elenco ricezioni ReceptionMethod=Modalità ricezione LastReceptions=Ultime %s ricezioni -StatisticsOfReceptions=Statitiche ricezioni +StatisticsOfReceptions=Statistiche ricezioni NbOfReceptions=Numero di ricezioni NumberOfReceptionsByMonth=Numero di ricezioni per mese ReceptionCard=Ricezione prodotti @@ -21,7 +21,7 @@ CreateReception=Crea ricezione QtyInOtherReceptions=Qtà altre ricezioni OtherReceptionsForSameOrder=Altre ricezioni per questo ordine ReceptionsAndReceivingForSameOrder=Ricezioni per questo ordine -ReceptionsToValidate=Ricezioni da validare +ReceptionsToValidate=Ricezioni da convalidare StatusReceptionCanceled=Annullata StatusReceptionDraft=Bozza StatusReceptionValidated=Convalidato (prodotti da ricevere o già ricevuti) diff --git a/htdocs/langs/ja_JP/admin.lang b/htdocs/langs/ja_JP/admin.lang index aa27c33f9fc..a29776436ca 100644 --- a/htdocs/langs/ja_JP/admin.lang +++ b/htdocs/langs/ja_JP/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=チェックボックス ExtrafieldCheckBoxFromList=テーブルのチェックボックス ExtrafieldLink=オブジェクトへのリンク ComputedFormula=計算フィールド -ComputedFormulaDesc=ここに、オブジェクトの他のプロパティまたは任意のPHPコーディングを使用して数式を入力し、動的な計算値を取得できる。 "?" を含むPHP互換の数式を使用できる。条件演算子、および次のグローバルオブジェクト: $db, $conf, $langs, $mysoc, $user, $object.
警告: $objectの一部のプロパティのみが使用可能である可能性がある。 ロードされていないプロパティが必要な場合は、2番目の例のように、単純にオブジェクトを自分で数式にフェッチする。
計算フィールドを使用すると、インターフェイスから値を入力できなくなる。また、構文エラーがある場合、数式は何も返さない場合がある。

式の例:
$object->id < 10 ? round($object->id / 2, 2): ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

オブジェクトをリロードする例
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

オブジェクトとその親オブジェクトを強制的にロードする式のその他の例:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' +ComputedFormulaDesc=ここで、オブジェクトの他のプロパティまたは任意の PHP コーディングを使用して式を入力し、動的に計算された値を取得できる。 「?」を含む任意の PHP 互換式を使用できる。条件演算子、および次のグローバル オブジェクト: $db、$conf、$langs、$mysoc、$user、$objectoffield
警告 : ロードされていないオブジェクトのプロパティが必要な場合は、2 番目の例のように、オブジェクトを式にフェッチすること。
計算フィールドを使用すると、インターフェイスから値を入力できなくなる。また、構文エラーがある場合、式は何も返さない場合がある。

式の例:
$objectoffield->id < 10 ? round($objectoffield-> id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2->capital / 5: '-1')

オブジェクトをリロードする例:
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->id) > 0 ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1')

オブジェクトとその親オブジェクトを強制ロードする式の他の例:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: '親プロジェクトが見当たらない' Computedpersistent=計算フィールドを保存する ComputedpersistentDesc=計算された追加フィールドはデータベースに保存されるが、値はこのフィールドのオブジェクトが変更された場合にのみ再計算される。計算フィールドが他のオブジェクトまたはグローバルデータに依存している場合、この値は間違っている可能性がある!! ExtrafieldParamHelpPassword=このフィールドを空白のままにすると、この値は暗号化なしで保存される ( フィールドは画面上の星印でのみ非表示にする必要がある ) 。
デフォルトの暗号化ルールを使用してパスワードをデータベースに保存するように「auto」を設定する ( この場合、読み取られる値はハッシュのみになり、元の値を取得する方法はない ) @@ -704,8 +704,10 @@ Module62000Name=インコタームズ Module62000Desc=インコタームズを管理する機能を追加する Module63000Name=資源 Module63000Desc=イベントに割り当てるためのリソース ( プリンター、車、部屋など ) を管理する +Module66000Name=OAuth2 認証を有効にする +Module66000Desc=OAuth2 トークンを生成および管理するためのツールを提供する。その後、トークンは他のモジュールで使用できる。 Module94160Name=領収 -Permission11=顧客の請求書を読込む +Permission11=顧客の請求書 (および支払い) を読込む Permission12=顧客の請求書を作成/変更 Permission13=顧客の請求書を無効にする Permission14=顧客の請求書を検証 @@ -947,7 +949,7 @@ Permission1190=購買発注を承認 ( 2回目の承認 ) する Permission1191=サプライヤーの注文とその属性をエクスポート Permission1201=エクスポートの結果を得る Permission1202=エクスポートを作成/変更 -Permission1231=仕入先の請求書を読込む +Permission1231=仕入先の請求書 (および支払い) を読込む Permission1232=仕入先の請求書を作成/変更する Permission1233=仕入先の請求書を検証 Permission1234=仕入先の請求書を削除する @@ -1234,7 +1236,7 @@ SetupDescription4= %s-> %s

このソフトウェア SetupDescription5=その他の設定メニューエントリは、オプションのパラメータを管理する。 SetupDescriptionLink= %s-%s SetupDescription3b=アプリケーションのデフォルト動作をカスタマイズするために使用される基本的パラメータ(国に関連する機能など)。 -SetupDescription4b=このソフトウェアは、多くのモジュール/アプリケーションで編まれている。ニーズに関連するモジュールを有効にして構成する必要がある。こうしたモジュールを有効化すると、メニューエントリが表示される。 +SetupDescription4b=このソフトウェアは、多くのモジュール/アプリケーションのスイートです。ニーズに関連するモジュールを有効にする必要がある。これらのモジュールを有効にすると、メニュー エントリが表示される。 AuditedSecurityEvents=監査されるセキュリティイベント NoSecurityEventsAreAduited=セキュリティイベントは監査されない。メニュー%sから有効にできる Audit=セキュリティ イベント @@ -2366,3 +2368,7 @@ MaxNumberOfAttachementOnForms=フォーム内の結合ファイルの最大数 IfDefinedUseAValueBeetween=定義されている場合は、%s と %s の間の値を使用する Reload=リロード ConfirmReload=モジュールのリロードを確定 +WarningModuleHasChangedLastVersionCheckParameter=警告: モジュール %s は、ページ アクセスごとにバージョンをチェックするパラメータを設定している。これは、モジュールを管理するページを不安定にする可能性がある、不適切で許可されていない慣行です。これを修正するには、モジュールの作成者に連絡すること。 +WarningModuleHasChangedSecurityCsrfParameter=警告: モジュール %s はインスタンスの CSRF セキュリティを無効にしました。このアクションは疑わしいものであり、インストールが保護されていない可能性がある。説明については、モジュールの作成者に連絡すること。 +EMailsInGoingDesc=受信メールはモジュール %s によって管理される。受信メールをサポートする必要がある場合は、有効にして構成する必要がある。 +MAIN_IMAP_USE_PHPIMAP=ネイティブ PHP IMAP の代わりに、IMAP 用の PHP-IMAP ライブラリを使用する。これにより、IMAP に OAuth2 接続を使用することもできる (モジュール OAuth も有効にする必要がある)。 diff --git a/htdocs/langs/ja_JP/agenda.lang b/htdocs/langs/ja_JP/agenda.lang index 9ee8f21c982..bd62b078c42 100644 --- a/htdocs/langs/ja_JP/agenda.lang +++ b/htdocs/langs/ja_JP/agenda.lang @@ -177,5 +177,6 @@ ReminderType=コールバック種別 AddReminder=このイベントの自動リマインダー通知を作成する ErrorReminderActionCommCreation=このイベントのリマインダー通知の作成中にエラーが発生した BrowserPush=ブラウザのポップアップ通知 +Reminders=リマインダー ActiveByDefault=デフォルトで有効 Until=それまで diff --git a/htdocs/langs/ja_JP/banks.lang b/htdocs/langs/ja_JP/banks.lang index c992ea2dcc5..b3b94130457 100644 --- a/htdocs/langs/ja_JP/banks.lang +++ b/htdocs/langs/ja_JP/banks.lang @@ -49,6 +49,9 @@ BankAccountDomiciliation=銀行の住所 BankAccountCountry=口座国 BankAccountOwner=口座所有者名 BankAccountOwnerAddress=口座所有者のアドレス +BankAccountOwnerZip=アカウント所有者の zip +BankAccountOwnerTown=アカウント所有者の町 +BankAccountOwnerCountry=アカウント所有者の国 CreateAccount=口座を作成 NewBankAccount=新規口座 NewFinancialAccount=新規金融口座 diff --git a/htdocs/langs/ja_JP/dict.lang b/htdocs/langs/ja_JP/dict.lang index 6fb9b7e3258..7c44aa57c8e 100644 --- a/htdocs/langs/ja_JP/dict.lang +++ b/htdocs/langs/ja_JP/dict.lang @@ -247,6 +247,7 @@ CountryJE=ジャージー島 CountryME=モンテネグロ CountryBL=セントバーツ CountryMF=サンマルタン島 +CountryXK=コソボ ##### Civilities ##### CivilityMME=ミセス diff --git a/htdocs/langs/ja_JP/errors.lang b/htdocs/langs/ja_JP/errors.lang index d9297d36b88..4f05d480d7e 100644 --- a/htdocs/langs/ja_JP/errors.lang +++ b/htdocs/langs/ja_JP/errors.lang @@ -304,6 +304,11 @@ ErrorValueCantBeNull= %s の値は null 不可 ErrorDateOfMovementLowerThanDateOfFileTransmission=銀行取引の日付は、ファイル送信の日付より前にすることはできない ErrorTooMuchFileInForm=フォーム内のファイルが多すぎる。最大数は %s ファイル (s) ErrorSessionInvalidatedAfterPasswordChange=パスワード、ステータス、または有効期限が変更されたため、セッションが無効になった。再ログインすること。 +ErrorExistingPermission = オブジェクト %s に対する権限 %s は既に存在する +ErrorFieldExist= %s の値は既に存在する +ErrorEqualModule= %s で無効なモジュール +ErrorFieldValue= %s の値が正しくない +ErrorCoherenceMenu= %s は、 % が LEFT と等しい場合に必要です。 # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=PHPパラメータ upload_max_filesize(%s)は、PHPパラメータ post_max_size(%s)よりも大きくなっている。これは一貫した設定ではない。 @@ -342,6 +347,7 @@ WarningPaypalPaymentNotCompatibleWithStrict=値「Strict」では、現在はオ WarningThemeForcedTo=警告、テーマは隠し定数 MAIN_FORCETHEME によって%sに強制された WarningPagesWillBeDeleted=警告、これにより、ウェブサイトの既存のページ/コンテナもすべて削除される。事前にウェブサイトをエクスポートする必要があり、後で再インポートするためのバックアップとなる。 WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal=「請求書の検証」で在庫を減らすオプションが設定されている場合、自動検証は無効になる。 +WarningModuleNeedRefrech = モジュール %s が無効になった。有効にすることを忘れないこと # Validate RequireValidValue = 値が無効. diff --git a/htdocs/langs/ja_JP/install.lang b/htdocs/langs/ja_JP/install.lang index 6983572ab28..eef2f22fff3 100644 --- a/htdocs/langs/ja_JP/install.lang +++ b/htdocs/langs/ja_JP/install.lang @@ -28,6 +28,7 @@ ErrorPHPVersionTooLow=PHPバージョンが古すぎ。バージョン%s以降 ErrorPHPVersionTooHigh=PHPバージョンが高すぎる。バージョン%s以下が必要。 ErrorConnectedButDatabaseNotFound=サーバーへの接続は成功したが、データベース '%s'が見つからない。 ErrorDatabaseAlreadyExists=データベース %s は既に存在する。 +ErrorNoMigrationFilesFoundForParameters=選択したバージョンの移行ファイルが見つからない IfDatabaseNotExistsGoBackAndUncheckCreate=データベースが存在しない場合は、戻って "データベースの作成" オプションをオンにする。 IfDatabaseExistsGoBackAndCheckCreate=データベースが既に存在する場合は、戻ってチェックを外してオプションの "データベースの作成" を参照すること。 WarningBrowserTooOld=ブラウザのバージョンが古すぎる。ブラウザをFirefox、Chrome、またはOperaの最新バージョンにアップグレードすることを強くお勧めする。 @@ -50,7 +51,6 @@ DatabaseName=データベース名 DatabasePrefix=データベースのテーブル接頭辞 DatabasePrefixDescription=データベースのテーブル接頭辞。空欄にするとデフォルトの「llx_」が設定される。 AdminLogin=Dolibarrデータベース所有者のユーザアカウント。 -PasswordAgain=パスワード確定の再入力 AdminPassword=Dolibarrデータベースの所有者のパスワード。 CreateDatabase=データベースを作成する。 CreateUser=Dolibarrデータベースでユーザアカウントを作成するか、ユーザアカウントのアクセス許可を付与する @@ -88,7 +88,7 @@ LoginAlreadyExists=既に存在する DolibarrAdminLogin=Dolibarr 管理者ログイン AdminLoginAlreadyExists=Dolibarr管理者アカウント ' %s'は既に存在する。別のものを作成したい場合は戻ること。 FailedToCreateAdminLogin=Dolibarr管理者アカウントの作成に失敗した。 -WarningRemoveInstallDir=警告:セキュリティ上の理由から、インストールツールの不意または悪意ある再使用を防ぐため、インストールまたはアップグレードの完了後に install.lockというファイルをドキュメントディレクトリにアップロードすること。 +WarningRemoveInstallDir=警告: セキュリティ上の理由から、インストール プロセスが完了したら、 install.lock というファイルを Dolibarr ドキュメント ディレクトリに追加して、インストール ツールの偶発的または悪意のある使用を再度防止する必要がある。 FunctionNotAvailableInThisPHP=このPHPでは使用できない ChoosedMigrateScript=移行スクリプトを選択する。 DataMigration=データベースの移行(データ) @@ -130,7 +130,7 @@ MigrationShippingDelivery=出荷の保管庫をアップグレード MigrationShippingDelivery2=出荷 2 の保管庫をアップグレード MigrationFinished=マイグレーションが終了した LastStepDesc= 最後のステップ:Dolibarrへの接続に使用するログインとパスワードを設定する。 他の全ユーザアカウント・追加のユーザアカウントを管理するためのマスターアカウントであるため、紛失しないようにして下さい。 -ActivateModule=モジュール%sを有効化する +ActivateModule=モジュール%sを活性化する ShowEditTechnicalParameters=高度なパラメータを表示/編集するには、ここをクリックすること (エキスパートモード) WarningUpgrade=警告:\n最初にデータベースバックアップを実行したか?\nこれを強くお勧めする。このプロセス中にデータが失われる可能性があるため(たとえば、mysqlバージョン5.5.40 / 41/42/43のバグが原因)、移行を開始する前にデータベースの完全なダンプを取得することが不可欠。\n\n "OK" をクリックして移行プロセスを開始する... ErrorDatabaseVersionForbiddenForMigration=データベースのバージョンは%s。重大なバグがあり、移行プロセスで必要になるなど、データベースに構造的な変更を加えるとデータが失われる可能性がある。彼の理由により、データベースをレイヤー(パッチ)バージョンにアップグレードするまで移行は許可されない(既知のバグのあるバージョンのリスト:%s) @@ -208,7 +208,12 @@ HideNotAvailableOptions=利用できないオプションを非表示にする ErrorFoundDuringMigration=移行プロセス中にエラーが報告されたため、次のステップは利用できない。エラーを無視するには、ここをクリックできるが、エラーが解決されるまで、アプリケーションまたは一部の機能が正しく動作しない場合がある。 YouTryInstallDisabledByDirLock=アプリケーションは自己アップグレードを試みたが、インストール/アップグレードページはセキュリティのために無効になっている(ディレクトリの名前が.lockサフィックスに変更された)。
YouTryInstallDisabledByFileLock=アプリケーションは自己アップグレードを試みたが、インストール/アップグレードページはセキュリティのために無効になっている(dolibarrドキュメントディレクトリにロックファイル install.lock が存在するため)。
+YouTryUpgradeDisabledByMissingFileUnLock=アプリケーションは自己アップグレードを試みたが、アップグレード プロセスは現在許可されない。
ClickHereToGoToApp=アプリケーションに移動するには、ここをクリックすること ClickOnLinkOrRemoveManualy=アップグレードが進行中の場合は、しばらく待つこと。そうでない場合は、次のリンクをクリックすること。この同じページが常に表示される場合は、documentsディレクトリのinstall.lockファイルを削除/名前変更する必要がある。 +ClickOnLinkOrCreateUnlockFileManualy=アップグレードが進行中の場合は、しばらく待つこと... そうでない場合は、ファイル upgrade.unlock を Dolibarr ドキュメント ディレクトリに作成する必要がある。 Loaded=ロード済 FunctionTest=機能テスト +NodoUpgradeAfterDB=データベースのアップグレード後、外部モジュールによって要求されたアクションはない +NodoUpgradeAfterFiles=ファイルまたはディレクトリのアップグレード後、外部モジュールによるアクションは不要 +MigrationContractLineRank=契約明細を移行してランクを使用する (および再注文を有効化) diff --git a/htdocs/langs/ja_JP/main.lang b/htdocs/langs/ja_JP/main.lang index 027ed62262d..e1c475456b0 100644 --- a/htdocs/langs/ja_JP/main.lang +++ b/htdocs/langs/ja_JP/main.lang @@ -923,6 +923,7 @@ NotAllExportedMovementsCouldBeRecordedAsExported=エクスポートされた全 Miscellaneous=その他 Calendar=カレンダー GroupBy=グループ化... +GroupByX=%s でグループ化 ViewFlatList=フラットリストを表示 ViewAccountList=元帳を表示 ViewSubAccountList=補助勘定科目元帳を表示 @@ -1222,3 +1223,5 @@ AddToContacts=連絡先にアドレスを追加 LastAccess=最終アクセス UploadAnImageToSeeAPhotoHere=タブ %s から画像をアップロードし、ここに写真を表示する LastPasswordChangeDate=パスワードの最終変更日 +PublicVirtualCardUrl=仮想名刺ページ +TreeView=ツリー表示 diff --git a/htdocs/langs/ja_JP/members.lang b/htdocs/langs/ja_JP/members.lang index b01fef82a5a..dbb2bb36501 100644 --- a/htdocs/langs/ja_JP/members.lang +++ b/htdocs/langs/ja_JP/members.lang @@ -95,7 +95,7 @@ VoteAllowed=許可される投票 Physical=個人 Moral=株式会社 MorAndPhy=法人および個人 -Reenable=再度有効にする +Reenable=再有効化 ExcludeMember=構成員を除外する Exclude=除外する ConfirmExcludeMember=この構成員を除外してもよいか? @@ -112,7 +112,7 @@ FollowingLinksArePublic=以下のリンクはDolibarrの権限によって保護 PublicMemberList=公共の構成員リスト BlankSubscriptionForm=公開自己登録フォーム BlankSubscriptionFormDesc=Dolibarrは、外部の訪問者が財団への登録を依頼できるように、公開URL /ウェブサイトを提供できる。オンライン支払モジュールが有効になっている場合、支払フォームも自動的に提供される場合がある。 -EnablePublicSubscriptionForm=セルフサブスクリプションフォームで公開ウェブサイトを有効にする +EnablePublicSubscriptionForm=セルフサブスクリプションフォームで公開ウェブサイトを有効化 ForceMemberType=構成員種別を強制する ExportDataset_member_1=構成員と拠出金 ImportDataset_member_1=構成員 @@ -206,7 +206,8 @@ SubscriptionsStatistics=拠出金統計 NbOfSubscriptions=拠出金の本数 AmountOfSubscriptions=拠出金から集計した金額 TurnoverOrBudget=売上高(法人の場合)または予算(基礎用) -DefaultAmount=デフォルトの拠出金金額 +DefaultAmount=デフォルトの拠出額 (メンバー タイプ レベルで金額が定義されていない場合にのみ使用) +MinimumAmount=最低額(寄付額が無料の場合のみ使用) CanEditAmount=購読金額は無料 CanEditAmountDetail=訪問者は、メンバーの種類に関係なく、寄付の金額を選択/編集できる AmountIsLowerToMinimumNotice=sur un dû total de %s diff --git a/htdocs/langs/ja_JP/modulebuilder.lang b/htdocs/langs/ja_JP/modulebuilder.lang index 47e28f19dbc..a4423a481b5 100644 --- a/htdocs/langs/ja_JP/modulebuilder.lang +++ b/htdocs/langs/ja_JP/modulebuilder.lang @@ -1,7 +1,8 @@ # Dolibarr language file - Source file is en_US - loan +IdModule= モジュール ID ModuleBuilderDesc=このツールは、経験豊富なユーザまたは開発者のみが使用する必要がある。独自のモジュールを構築または編集するためのユーティリティを提供する。代替の手動開発のドキュメントは、ここにある。 EnterNameOfModuleDesc=作成するモジュール/アプリケーションの名前をスペースなしで入力する。大文字を使用して単語を区切る(例:MyModule、EcommerceForShop、SyncWithMySystem ...) -EnterNameOfObjectDesc=作成するオブジェクトの名前をスペースなしで入力する。大文字を使用して単語を区切る(例:MyObject、Student、Teacher ...)。 CRUDクラスファイルだけでなく、APIファイル、オブジェクトを一覧表示/追加/編集/削除するページ、およびSQLファイルが生成される。 +EnterNameOfObjectDesc=作成するオブジェクトの名前をスペースなしで入力する。単語を区切るには大文字を使用する (例: MyObject、Student、Teacher...)。 CRUD クラス ファイル、オブジェクトを一覧表示/追加/編集/削除するページと SQL ファイルが生成される。 EnterNameOfDictionaryDesc=作成する辞書の名前をスペースなしで入力する。大文字を使用して単語を区切る(例:MyDico ...)。クラスファイルだけでなく、SQLファイルも生成される。 ModuleBuilderDesc2=モジュールが生成/編集されるパス(%sに定義された外部モジュールの最初のディレクトリ): %s ModuleBuilderDesc3=生成された/編集可能なモジュールが見つかった: %s @@ -9,6 +10,7 @@ ModuleBuilderDesc4=ファイル%s がモジュールディレ NewModule=新規モジュール NewObjectInModulebuilder=新規オブジェクト NewDictionary=新規辞書 +ModuleName=モジュール名 ModuleKey=モジュールキー ObjectKey=オブジェクトキー DicKey=辞書キー @@ -30,8 +32,8 @@ DangerZone=危険区域 BuildPackage=パッケージをビルドする BuildPackageDesc=アプリケーションのzipパッケージを生成して、Dolibarrで配布する準備を整えることができる。また、 DoliStore.comのようなマーケットプレイスで配布または販売することもできる。 BuildDocumentation=ドキュメントを作成する -ModuleIsNotActive=このモジュールはまだ有効化されていない。 %sにアクセスしてライブにするか、ここをクリックすること -ModuleIsLive=このモジュールは有効化されている。変更を加えると、現在のライブ機能が破損する可能性がある。 +ModuleIsNotActive=このモジュールはまだ活性化されていない。 %sにアクセスしてライブにするか、ここをクリックすること +ModuleIsLive=このモジュールは活性化されている。変更を加えると、現在のライブ機能が破損する可能性がある。 DescriptionLong=長い説明 EditorName=編集者の名前 EditorUrl=編集者のURL @@ -48,11 +50,14 @@ PathToModulePackage=モジュール/アプリケーションパッケージのzi PathToModuleDocumentation=モジュール/アプリケーションドキュメントのファイルへのパス(%s) SpaceOrSpecialCharAreNotAllowed=スペースや特殊文字は使用できない。 FileNotYetGenerated=ファイルはまだ生成されていない +GenerateCode=コードを生成する RegenerateClassAndSql=.classファイルと.sqlファイルの強制更新 RegenerateMissingFiles=不足しているファイルを生成する SpecificationFile=ドキュメントのファイル LanguageFile=言語のファイル ObjectProperties=オブジェクトのプロパティ +Property=適当 +PropertyDesc=プロパティは、オブジェクトを特徴付ける属性。この属性には、コード、ラベル、およびいくつかのオプションを持つタイプがある。 ConfirmDeleteProperty=プロパティ%s を削除してもよいか?これにより、PHPクラスのコードが変更されるが、オブジェクトのテーブル定義から列も削除される。 NotNull=NULLではない NotNullDesc=1=データベースを NOT NULL に設定、0=null値を許可、-1=空の場合に値をNULLに強制することでnull値を許可(''または0) @@ -81,15 +86,16 @@ IsAMeasure=尺度は DirScanned=スキャンされたディレクトリ NoTrigger=トリガーなし NoWidget=ウィジェットなし -GoToApiExplorer=APIエクスプローラー +ApiExplorer=API エクスプローラー ListOfMenusEntries=メニューエントリのリスト ListOfDictionariesEntries=辞書エントリのリスト ListOfPermissionsDefined=定義された権限のリスト SeeExamples=こちらの例を見ること -EnabledDesc=このフィールドをアクティブにする条件(例:1または$ conf-> global-> MYMODULE_MYOPTION) -VisibleDesc=フィールドは表示されているか? (例:0 =表示されない、1 =リストおよび作成/更新/表示フォームで表示、2 =リストでのみ表示、3 =作成/更新/表示フォームでのみ表示(リストではない)、4 =リストおよび更新/表示フォームでのみ表示(作成しない)、5 =リストおよび表示フォームでのみ表示(作成しない、更新しない)

負の値を使用すると、フィールドはデフォルトでリストに表示されないが、表示用に選択できる)。

これは、次のような式にできる。例:
preg_match('/public/', $_SERVER['PHP_SELF'])?0:
($user->rights->holiday->define_holiday ? 1 : 0) -DisplayOnPdfDesc=互換性のあるPDFドキュメントにこのフィールドを表示する。 "Position" フィールドで位置を管理できる。
現在、既知の互換性のあるPDFモデルは次のとおり : eratosthene (注文), espadon (発送), sponge (請求), cyan (提案/見積), cornas (仕入発注)

ドキュメントの場合:
0 = 非表示
1 = 表示
2 = 空でない場合のみ表示

ドキュメント行の場合 :
0 = 非表示
1 = カラムに表示
3 = 説明の後の説明カラムに表示
4 = 空でない場合のみ、説明の後の説明カラムに表示 -DisplayOnPdf=PDFで表示 +EnabledDesc=このフィールドをアクティブにする条件。

例:
1
isModEnabled('MAIN_MODULE_MYMODULE')
getDolGlobalString('MYMODULE_OPTION')==2 +VisibleDesc=フィールドは表示されているか? (例: 0=表示されない、1=リストおよび作成/更新/表示フォームで表示される、2=リストでのみ表示される、3=作成/更新/表示フォームでのみ表示される (リストを除く)、4=リストおよび更新/表示フォームで表示される(作成を除く)、 5=リストおよび表示フォームで表示される(作成と更新を除く)。

負の値を使用すると、フィールドはデフォルトではリストに表示されないが、表示用に選択できることを意味する)。 +ItCanBeAnExpression=表現となりえるもの。例:
preg_match('/public/', $_SERVER['PHP_SELF'])?0:1
$user->hasRight('holiday', 'define_holiday')?1:5 +DisplayOnPdfDesc=互換性のある PDF ドキュメントでこのフィールドを表示すると、「位置」フィールドで位置を管理できる。
ドキュメントに対して:
0 = 非表示
1 = 表示
2 = 空以外なら表示

ドキュメントの行に対して :
0 = 非表示
1 = 1欄に表示
3 = 説明の後の行説明欄に表示
4 = 空以外なら、説明の後の説明欄に表示 +DisplayOnPdf=PDFで IsAMeasureDesc=フィールドの値を累積して、合計をリストに入れることはできるか? (例:1または0) SearchAllDesc=クイック検索ツールから検索するためにフィールドが使用されているか? (例:1または0) SpecDefDesc=他のタブでまだ定義されていない、モジュールで提供する全ドキュメントをここに入力する。豊富な.asciidoc構文である.md以上を使用できる。 @@ -97,9 +103,9 @@ LanguageDefDesc=このファイルに、各言語ファイルの全キーと翻 MenusDefDesc=モジュールが提供するメニューをここで定義する DictionariesDefDesc=モジュールが提供する辞書をここで定義する PermissionsDefDesc=モジュールによって提供される新規権限をここで定義する -MenusDefDescTooltip=モジュール/アプリケーションによって提供されるメニューは、モジュール記述子ファイルの配列 $ this->menusに定義されている。このファイルを手動で編集するか、埋め込みエディターを使用できる。

注:定義されると(およびモジュールが再有効化されると)、メニューは%sの管理者ユーザが使用できるメニューエディターにも表示される。 -DictionariesDefDescTooltip=モジュール/アプリケーションによって提供されるディクショナリは、モジュール記述子ファイルの配列 $ this-> dictionariesに定義されている。このファイルを手動で編集するか、埋め込みエディターを使用できる。

注:定義(およびモジュールの再有効化)が完了すると、%sの管理者ユーザには辞書も設定領域に表示される。 -PermissionsDefDescTooltip=モジュール/アプリケーションによって提供されるアクセス許可は、配列 $ this-> rightsにモジュール記述子ファイルに定義される。このファイルを手動で編集するか、埋め込みエディターを使用できる。

注:定義されると(およびモジュールが再有効化されると)、アクセス許可はデフォルトのアクセス許可設定%sに表示される。 +MenusDefDescTooltip=モジュール/アプリケーションによって提供されるメニューは、モジュール記述子ファイルの配列 $ this->menusに定義されている。このファイルを手動で編集するか、埋め込みエディターを使用できる。

注:定義されると(およびモジュールが再活性化されると)、メニューは%sの管理者ユーザが使用できるメニューエディターにも表示される。 +DictionariesDefDescTooltip=モジュール/アプリケーションによって提供されるディクショナリは、モジュール記述子ファイルの配列 $ this-> dictionariesに定義されている。このファイルを手動で編集するか、埋め込みエディターを使用できる。

注:定義(およびモジュールの再活性化)が完了すると、%sの管理者ユーザには辞書も設定領域に表示される。 +PermissionsDefDescTooltip=モジュール/アプリケーションによって提供されるアクセス許可は、配列 $ this-> rightsにモジュール記述子ファイルに定義される。このファイルを手動で編集するか、埋め込みエディターを使用できる。

注:定義されると(およびモジュールが再活性化されると)、アクセス許可はデフォルトのアクセス許可設定%sに表示される。 HooksDefDesc=定義する:管理したいフックのコンテキストを module_parts['hooks'] プロパティのモジュール記述子の中に。 (コンテキストのリストは、コアコードで 'initHooks(' を検索すると見つかる).
編集する:フックされた関数のコードを追加するためのフックファイルを。 (フック可能な関数は、コアコードで 'executeHooks' を検索すると見つかる). TriggerDefDesc=モジュールの外部のビジネスイベント(他のモジュールによってトリガーされるイベント)が実行されるときに実行するコードをトリガーファイルで定義する。 SeeIDsInUse=インストールで使用されているIDを確認する @@ -130,27 +136,40 @@ UseSpecificEditorURL = 特定のエディターURLを使用する UseSpecificFamily = 特定の家族を使用する UseSpecificAuthor = 特定の作成者を使用する UseSpecificVersion = 特定の初期バージョンを使用する -IncludeRefGeneration=オブジェクトの参照は、カスタム採番ルールによって自動的に生成される必要がある +IncludeRefGeneration=このオブジェクトの参照は、カスタム番号付けルールによって自動的に生成される必要がある IncludeRefGenerationHelp=カスタム採番ルールを使用して参照の生成を自動的に管理するコードを含める場合は、これをチェックすること -IncludeDocGeneration=オブジェクトのテンプレートからいくつかのドキュメントを生成したい +IncludeDocGeneration=このオブジェクトのテンプレートからいくつかのドキュメント (PDF、ODT) を生成する機能が必要 IncludeDocGenerationHelp=これをチェックすると、レコードに「ドキュメントの生成」ボックスを追加するためのコードが生成される。 -ShowOnCombobox=コンボボックスに値を表示する +ShowOnCombobox=値をコンボ ボックスに表示する KeyForTooltip=ツールチップのキー CSSClass=フォーム 編集/作成 用のCSS CSSViewClass=読取フォーム用CSS CSSListClass=リストのCSS NotEditable=編集不可 ForeignKey=外部キー -TypeOfFieldsHelp=フィールドのタイプ:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]]
'1'は、コンボの後に+ボタンを追加して、レコードを作成することを意味する
'filter' はSQLの条件文、例: 'status=1 AND fk_user=__USER_ID__ AND entity IN (__SHARED_ENTITIES__)' +ForeignKeyDesc=このフィールドの値が別のテーブルに存在することを保証する必要がある場合。構文に一致する値をここに入力する: tablename.parentfieldtocheck +TypeOfFieldsHelp=例:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]]
'1' は、レコードを作成するコンボの後に + ボタンを追加することを意味する
'filter' はSQL 条件、例: 'status=1 AND fk_user=__USER_ID__ AND entity IN (__SHARED_ENTITIES__)' +TypeOfFieldsHelpIntro=これは、フィールド/属性のタイプ。 AsciiToHtmlConverter=アスキーからHTMLへのコンバーター AsciiToPdfConverter=アスキーからPDFへのコンバーター TableNotEmptyDropCanceled=テーブルが空ではない。ドロップはキャンセルされた。 ModuleBuilderNotAllowed=モジュールビルダーは利用できるが、あなたのユーザには許可されていない。 ImportExportProfiles=プロファイルのインポートとエクスポート -ValidateModBuilderDesc=挿入または更新中にフィールドの内容を検証ために呼び出されるオブジェクトの $this->validateField() メソッドがある場合、これを1に設定する。検証が必要ない場合は0を設定する。 +ValidateModBuilderDesc=オブジェクトの $this->validateField() メソッドを呼び出して、挿入または更新中にフィールドの内容を検証する場合は、これを 1 に設定する。検証が必要ない場合は 0 を設定する。 WarningDatabaseIsNotUpdated=警告:データベースは自動的に更新済にならない。テーブルを破棄し、モジュールを 無効 - 有効 にしてテーブルを再作成する必要がある LinkToParentMenu=親メニュー(fk_xxxxmenu) ListOfTabsEntries=タブエントリのリスト TabsDefDesc=モジュールによって提供されるタブをここで定義する TabsDefDescTooltip=モジュール/アプリケーションによって提供されるタブは、配列 $this->tabsにおいてモジュール記述子ファイルに定義される。このファイルを手動で編集できるし、埋め込みエディターの使用もできる。 BadValueForType=タイプ%sの値が正しくない +DefinePropertiesFromExistingTable=既存のテーブルからプロパティを定義する +DefinePropertiesFromExistingTableDesc=データベース内に (オブジェクトを作成するための) テーブルが既に存在する場合は、それを使用してオブジェクトのプロパティを定義できる。 +DefinePropertiesFromExistingTableDesc2=テーブルがまだ存在しない場合は、空のままにすること。コード ジェネレーターはさまざまな種類のフィールドを使用して、後で編集できるテーブルの例を作成する。 +GeneratePermissions=このオブジェクトに権限を追加したい +GeneratePermissionsHelp=このオブジェクトのデフォルトの権利を生成する +PermissionDeletedSuccesfuly=権限が正常に削除された +PermissionUpdatedSuccesfuly=権限が正常に更新された +PermissionAddedSuccesfuly=権限が正常に追加された +MenuDeletedSuccessfuly=メニューが正常に削除された +MenuAddedSuccessfuly=メニューが正常に追加された +MenuUpdatedSuccessfuly=メニューは正常に更新された diff --git a/htdocs/langs/ja_JP/oauth.lang b/htdocs/langs/ja_JP/oauth.lang index 86639c898c3..36347fdeba4 100644 --- a/htdocs/langs/ja_JP/oauth.lang +++ b/htdocs/langs/ja_JP/oauth.lang @@ -9,8 +9,9 @@ HasAccessToken=トークンを生成し、ローカルデータベースに保 NewTokenStored=トークンを受け取り、保存した ToCheckDeleteTokenOnProvider=ここをクリックすると %s OAuth プロバイダによって保存された承認を確認/削除する TokenDeleted=トークンを削除した +GetAccess=ここをクリックしてトークンを取得 RequestAccess=アクセスをリクエスト/更新して新しいトークンを受け取るには、ここをクリックすること -DeleteAccess=ここをクリックするとトークンを削除する +DeleteAccess=トークンを削除するには、ここをクリックすること UseTheFollowingUrlAsRedirectURI=OAuthプロバイダーで認証情報を作成するときは、リダイレクトURIとして次のURLを使用する。 ListOfSupportedOauthProviders=OAuth2トークンプロバイダーを追加する。次に、OAuthプロバイダーの管理ページに移動してOAuth IDとシークレットを作成/取得し、ここに保存する。完了したら、他のタブをオンにしてトークンを生成する。 OAuthSetupForLogin=OAuthトークンを管理(生成/削除)するページ @@ -30,7 +31,11 @@ OAUTH_GITHUB_SECRET=OAuthGitHubシークレット OAUTH_URL_FOR_CREDENTIAL=このページに移動する OAuthIDとシークレットを作成または取得するには OAUTH_STRIPE_TEST_NAME=OAuthストライプテスト OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live -OAUTH_ID=OAuth ID +OAUTH_ID=OAuth クライアント ID OAUTH_SECRET=OAuthシークレット +OAUTH_TENANT=OAuth テナント OAuthProviderAdded=OAuthプロバイダーが追加された AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=このプロバイダーとラベルのOAuthエントリは既に存在する +URLOfServiceForAuthorization=OAuth サービスが認証用に提供する URL +Scopes=権限 (スコープ) +ScopeUndefined=パーミッション (スコープ) 未定義 (前のタブを参照) diff --git a/htdocs/langs/ja_JP/users.lang b/htdocs/langs/ja_JP/users.lang index 70a62efac33..ccc2e086e18 100644 --- a/htdocs/langs/ja_JP/users.lang +++ b/htdocs/langs/ja_JP/users.lang @@ -132,4 +132,3 @@ ShowAllPerms=すべての権限行を表示 HideAllPerms=すべての許可行を非表示 UserPublicPageDesc=このユーザーの仮想カードを有効化可能。ユーザー プロファイルとバーコードを含む URL が利用可能になり、スマートフォンを持っている人なら誰でもそれをスキャンしてアドレス帳に連絡先を追加できる。 EnablePublicVirtualCard=パブリック仮想ユーザー カードを有効化 -PublicVirtualCardUrl=パブリック仮想ユーザー カード diff --git a/htdocs/langs/kk_KZ/admin.lang b/htdocs/langs/kk_KZ/admin.lang index 74043145b74..f26426e6e64 100644 --- a/htdocs/langs/kk_KZ/admin.lang +++ b/htdocs/langs/kk_KZ/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Құсбелгілер ExtrafieldCheckBoxFromList=Кестеден құсбелгілер қойыңыз ExtrafieldLink=Объектіге сілтеме ComputedFormula=Есептелген өріс -ComputedFormulaDesc=Мұнда динамикалық есептелген мәнді алу үшін объектінің басқа қасиеттерін немесе кез келген PHP кодтауын қолдана отырып формуланы енгізуге болады. Сіз PHP -ге сәйкес келетін формулаларды қолдана аласыз, оның ішінде «?» шарт операторы және келесі жаһандық объект: $ db, $ conf, $ langs, $ mysoc, $ user, $ object .
ЕСКЕРТУ ЕСКЕРТУ: $ объектінің кейбір қасиеттері ғана қол жетімді болуы мүмкін. Егер сізге жүктелмеген қасиеттер қажет болса, нысанды екінші мысалдағыдай формулаға енгізіңіз.
Есептелген өрісті пайдалану интерфейстен өзіңізге ешқандай мән енгізе алмайтыныңызды білдіреді. Сонымен қатар, егер синтаксистік қате болса, формула ештеңені қайтармауы мүмкін.

Формула мысалы:
$ object-> id < 10 ? round($object-> id / 2, 2): ($ object-> id + 2 * $ user-> id) * (int) substr ($ mysoc, 2)

нысанды қайта жүктеуге мысал
(($ reloadedobj = new Societe ($ db)) && ($ reloadedobj-> fetchNoCompute ($ obj-> id- $ obj- $? > rowid: $ object-> id))> 0))? $ reloadedobj-> array_options ['options_extrafieldkey'] * $ reloadedobj-> capital / 5: '-1'

Нысанды және оның негізгі объектісін жүктеуге мәжбүрлейтін формуланың басқа мысалы:
($ d = $ reloadedobj-> )) && ($ reloadedobj-> fetchNoCompute ($ object-> id)> 0) && ($ secondloadedobj = new Project ($ db)) && ($ secondloadedobj-> fetchNoCompute ($ reloadedobj-> fk_project)> 0))? $ secondloadedobj-> ref: 'Негізгі жоба табылмады' +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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Есептелген өрісті сақтау ComputedpersistentDesc=Есептелген қосымша өрістер дерекқорда сақталады, алайда бұл өрістің объектісі өзгерген кезде ғана мән қайта есептеледі. Егер есептелетін өріс басқа объектілерге немесе жаһандық деректерге тәуелді болса, бұл мән қате болуы мүмкін !! ExtrafieldParamHelpPassword=Бұл өрісті бос қалдырсаңыз, бұл мән шифрлаусыз сақталатынын білдіреді (өріс экрандағы жұлдызшамен ғана жасырылуы керек).
«Авто» параметрін құпия сөзді дерекқорға сақтау үшін әдепкі шифрлау ережесін қолдану үшін орнатыңыз (онда мән мәні тек хэш болады, бастапқы мәнді шығарып алуға болмайды) @@ -645,6 +645,8 @@ Module2300Name=Жоспарланған тапсырмалар Module2300Desc=Жоспарланған жұмысты басқару (cron немесе хроно лақап аты) Module2400Name=Оқиғалар/Күн тәртібі Module2400Desc=Оқиғаларды бақылау. Бақылау мақсатында автоматты оқиғаларды тіркеңіз немесе қолмен оқиғалар мен кездесулерді жазыңыз. Бұл клиенттермен жақсы қарым -қатынасты басқарудың негізгі модулі. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=DMS / ECM Module2500Desc=Құжаттарды басқару жүйесі / электронды мазмұнды басқару. Жасалған немесе сақталған құжаттарды автоматты түрде ұйымдастыру. Қажет кезде оларды бөлісіңіз. Module2600Name=API / Web services (SOAP server) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind түрлендіру мүмкіндіктері Module3200Name=Өзгермейтін мұрағаттар Module3200Desc=Іскерлік оқиғалардың өзгермейтін журналын қосыңыз. Оқиғалар нақты уақыт режимінде мұрағатталады. Журнал-экспорттауға болатын тізбектелген оқиғалардың тек оқуға арналған кестесі. Бұл модуль кейбір елдер үшін міндетті болуы мүмкін. +Module3300Name=Module Builder +Module3200Desc=Іскерлік оқиғалардың өзгермейтін журналын қосыңыз. Оқиғалар нақты уақыт режимінде мұрағатталады. Журнал-экспорттауға болатын тізбектелген оқиғалардың тек оқуға арналған кестесі. Бұл модуль кейбір елдер үшін міндетті болуы мүмкін. Module3400Name=Әлеуметтік желілер Module3400Desc=Әлеуметтік желілер өрістерін үшінші тараптар мен мекенжайларға қосыңыз (скайп, twitter, facebook, ...). Module4000Name=HRM @@ -700,8 +704,10 @@ Module62000Name=Инкотермс Module62000Desc=Incoterms басқару үшін мүмкіндіктерді қосыңыз Module63000Name=Ресурстар Module63000Desc=Іс -шараларға бөлу үшін ресурстарды (принтерлер, машиналар, бөлмелер, ...) басқарыңыз +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Receptions -Permission11=Клиенттердің шот -фактураларын оқыңыз +Permission11=Read customer invoices (and payments) Permission12=Тұтынушылардың шот -фактураларын жасаңыз/өзгертіңіз Permission13=Тұтынушылардың шот -фактураларын жарамсыз ету Permission14=Тұтынушылардың шот -фактураларын растау @@ -943,7 +949,7 @@ Permission1190=Сатып алу тапсырыстарын бекіту (екі Permission1191=Жеткізушілердің тапсырыстарын және олардың атрибуттарын экспорттау Permission1201=Экспорт нәтижесін алыңыз Permission1202=Экспортты жасау/өзгерту -Permission1231=Сатушының шот -фактураларын оқыңыз +Permission1231=Read vendor invoices (and payments) Permission1232=Жеткізушінің шот -фактураларын жасаңыз/өзгертіңіз Permission1233=Жеткізушінің шот -фактураларын тексеру Permission1234=Жеткізушінің шот -фактураларын жою @@ -1230,7 +1236,7 @@ SetupDescription4= %s -> %s

Бұл бағдарла SetupDescription5=Орнату мәзірінің басқа жазбалары қосымша параметрлерді басқарады. SetupDescriptionLink= %s - %s SetupDescription3b=Қолданбаның әдепкі әрекетін реттеу үшін қолданылатын негізгі параметрлер (мысалы, елге қатысты мүмкіндіктер үшін). -SetupDescription4b=Бұл бағдарлама көптеген модульдер/қосымшалар жиынтығы болып табылады. Сіздің қажеттіліктеріңізге байланысты модульдер қосылып, конфигурациялануы керек. Бұл модульдерді қосқанда мәзір жазбалары пайда болады. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Қауіпсіздік оқиғалары тексеріледі NoSecurityEventsAreAduited=Қауіпсіздік оқиғалары тексерілмейді. Сіз оларды %s мәзірінен қосуға болады Audit=Қауіпсіздік оқиғалары @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive=Бұл файлдағы триггерлер %s GeneratedPasswordDesc=Автоматты түрде жасалынатын құпия сөздер үшін қолданылатын әдісті таңдаңыз. DictionaryDesc=Барлық анықтамалық деректерді енгізіңіз. Сіз өз мәндеріңізді әдепкіге қоса аласыз. ConstDesc=Бұл бет басқа беттерде жоқ параметрлерді өңдеуге (ауыстыруға) мүмкіндік береді. Бұл негізінен әзірлеушілерге арналған резервтелген параметрлер/тек ақаулықтарды жетілдіру. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=Қауіпсіздікке қатысты барлық басқа параметрлер мұнда анықталған. LimitsSetup=Шектер/дәлдікті орнату LimitsDesc=Мұнда сіз Dolibarr қолданатын шектеулерді, дәлдіктерді және оңтайландыруларды анықтай аласыз @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Оқиға түрлерін қолданыңыз (Setup м AGENDA_USE_EVENT_TYPE_DEFAULT=Оқиғаны құру формасындағы оқиға түрі үшін осы әдепкі мәнді автоматты түрде орнатыңыз AGENDA_DEFAULT_FILTER_TYPE=Күн тәртібінің іздеу сүзгісінде оқиғаның бұл түрін автоматты түрде орнатыңыз AGENDA_DEFAULT_FILTER_STATUS=Күн тәртібінің іздеу сүзгісіндегі оқиғалар үшін бұл күйді автоматты түрде орнатыңыз +AGENDA_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Күн тәртібі мәзірін таңдағанда әдепкі бойынша қай көріністі ашқыңыз келеді AGENDA_REMINDER_BROWSER= браузерінде оқиғасы туралы еске салуды қосу (Еске түсіру күніне жеткенде, шолғыш қалқымалы терезені көрсетеді. Әр қолданушы браузердің хабарландыру қондырғысынан осындай хабарландыруларды өшіре алады). AGENDA_REMINDER_BROWSER_SOUND=Дыбыстық хабарландыруды қосу @@ -2129,6 +2139,7 @@ CodeLastResult=Соңғы нәтиже коды NbOfEmailsInInbox=Бастапқы каталогтағы электрондық пошталардың саны LoadThirdPartyFromName=%s бойынша іздейтін үшінші тарапты жүктеңіз (тек жүктеу үшін) LoadThirdPartyFromNameOrCreate=%s бойынша үшінші тарап іздеуді жүктеңіз (табылмаса жасаңыз) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Dolibarr жіберген бірінші электрондық пошта арқылы басталған сөйлесуден хабар WithoutDolTrackingID=Dolibarr жібермеген ЕМЕС бірінші электрондық пошта арқылы басталған сөйлесуден хабар @@ -2355,3 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/kk_KZ/install.lang b/htdocs/langs/kk_KZ/install.lang index b16cace5e25..61441951eea 100644 --- a/htdocs/langs/kk_KZ/install.lang +++ b/htdocs/langs/kk_KZ/install.lang @@ -51,7 +51,6 @@ DatabaseName=Мәліметтер қорының атауы DatabasePrefix=Деректер кестесінің префиксі DatabasePrefixDescription=Деректер кестесінің префиксі. Егер бос болса, әдепкі бойынша llx_. AdminLogin=Dolibarr дерекқор иесінің пайдаланушы тіркелгісі. -PasswordAgain=Құпия сөзді растауды қайта теріңіз AdminPassword=Dolibarr дерекқор иесінің құпия сөзі. CreateDatabase=Мәліметтер қорын құру CreateUser=Пайдаланушы тіркелгісін жасаңыз немесе Dolibarr дерекқорында пайдаланушы тіркелгісіне рұқсат беріңіз @@ -89,7 +88,7 @@ LoginAlreadyExists=Қазірдің өзінде бар DolibarrAdminLogin=Dolibarr әкімшісінің логині AdminLoginAlreadyExists=Dolibarr әкімші тіркелгісі ' %s ' бұрыннан бар. Егер сіз басқасын жасағыңыз келсе, оралыңыз. FailedToCreateAdminLogin=Dolibarr әкімші тіркелгісін жасау мүмкін болмады. -WarningRemoveInstallDir=Ескерту, қауіпсіздік мақсатында, орнату немесе жаңарту аяқталғаннан кейін, Dolibarr құжаттар каталогына install.lock деп аталатын файлды қайта орнату кездейсоқ/зиянды пайдаланылуын болдырмау үшін қосу қажет. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=Бұл PHP -те қол жетімді емес ChoosedMigrateScript=Көшіру сценарийін таңдаңыз DataMigration=Мәліметтер қорын көшіру (деректер) @@ -209,7 +208,12 @@ HideNotAvailableOptions=Қол жетімді емес опцияларды жа ErrorFoundDuringMigration=Тасымалдау кезінде қателер туралы хабарланды, сондықтан келесі қадам мүмкін емес. Қателерді елемеу үшін мына жерді басыңыз, бірақ қателер шешілмейінше бағдарлама немесе кейбір мүмкіндіктер дұрыс жұмыс істемеуі мүмкін. YouTryInstallDisabledByDirLock=Қолданба өзін-өзі жаңартуға тырысты, бірақ қауіпсіздік үшін орнату/жаңарту беттері өшірілді (каталогтың аты .lock суффиксімен өзгертілді).
YouTryInstallDisabledByFileLock=Қолданба өзін-өзі жаңартуға тырысты, бірақ қауіпсіздік үшін орнату/жаңарту беттері өшірілді (dolibarr құжаттар каталогында install.lock құлыптау файлының болуымен).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=Өтінішке өту үшін мына жерді басыңыз ClickOnLinkOrRemoveManualy=Егер жаңарту жүріп жатса, күтіңіз. Егер жоқ болса, келесі сілтемені басыңыз. Егер сіз дәл осы бетті үнемі көретін болсаңыз, құжаттар каталогындағы install.lock файлын алып тастауыңыз керек. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=Жүктелді FunctionTest=Функционалды тест +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/lo_LA/admin.lang b/htdocs/langs/lo_LA/admin.lang index 631c0f19433..e63ddd1ff26 100644 --- a/htdocs/langs/lo_LA/admin.lang +++ b/htdocs/langs/lo_LA/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=ກ່ອງເຄື່ອງາຍ ExtrafieldCheckBoxFromList=ກ່ອງເຄື່ອງາຍຈາກຕາຕະລາງ ExtrafieldLink=ເຊື່ອມຕໍ່ຫາວັດຖຸ ComputedFormula=ຊ່ອງຂໍ້ມູນທີ່ ຄຳ ນວນແລ້ວ -ComputedFormulaDesc=ເຈົ້າສາມາດໃສ່ສູດຢູ່ທີ່ນີ້ໂດຍໃຊ້ຄຸນສົມບັດອື່ນຂອງວັດຖຸຫຼືລະຫັດ PHP ໃດ ໜຶ່ງ ເພື່ອໃຫ້ໄດ້ຄ່າທີ່ຄໍານວນແບບເຄື່ອນໄຫວ. ເຈົ້າສາມາດໃຊ້ສູດທີ່ເຂົ້າກັນໄດ້ກັບ PHP ລວມທັງເຄື່ອງ"າຍ "?" ຕົວປະຕິບັດເງື່ອນໄຂ, ແລະປະຕິບັດຕາມວັດຖຸທົ່ວໂລກ: $ db, $ conf, $ langs, $ mysoc, $ user, $ object .
ຄໍາເຕືອນ : ມີພຽງບາງຄຸນສົມບັດຂອງ $ object ທີ່ມີຢູ່. ຖ້າເຈົ້າຕ້ອງການຄຸນສົມບັດທີ່ບໍ່ໄດ້ໂຫຼດ, ພຽງແຕ່ເອົາວັດຖຸເຂົ້າໄປໃນສູດຂອງເຈົ້າຄືກັບຕົວຢ່າງທີສອງ.
ການນໍາໃຊ້ຊ່ອງຂໍ້ມູນທີ່ຖືກຄໍານວນແລ້ວmeansາຍຄວາມວ່າເຈົ້າບໍ່ສາມາດປ້ອນຄ່າໃດ yourself ເຂົ້າມາຈາກອິນເຕີເຟດໄດ້. ນອກຈາກນັ້ນ, ຖ້າມີຂໍ້ຜິດພາດທາງໄວຍະກອນ, ສູດ ຄຳ ນວນອາດຈະບໍ່ສົ່ງຄືນຫຍັງເລີຍ.

ຕົວຢ່າງສູດ:
$ object-> id < 10 ? round($object-> id / 2, 2): ($ object-> id + 2 * $ user-> id) * (int) substr ($ mysoc-> zip, )

ຕົວຢ່າງເພື່ອໂຫຼດວັດຖຸໃa່
(($ reloadedobj = societe ໃnew່ ($ db)) && ($ reloadedobj-> fetchNoCompute ($ obj-> id? $ obj-> id: ($ obj-> id: $ $- > ແຖວ: $ object-> id))> 0))? $ reloadedobj-> array_options ['options_extrafieldkey'] * $ reloadedobj-> capital / 5: '-1'

ຕົວຢ່າງອື່ນ of ຂອງສູດເພື່ອບັງຄັບ load ຂອງ object ແລະ object ຫຼັກຂອງມັນ:
(($ reloadedob )) && ($ reloadedobj-> fetchNoCompute ($ object-> id)> 0) && ($ secondloadedobj = ໂຄງການໃ(່ ($ db)) && ($ secondloadedobj-> fetchNoCompute ($ reloadedobob-> fk_project)> 0))? $ secondloadedobj-> ref: 'ບໍ່ພົບໂຄງການຂອງພໍ່ແມ່' +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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=ບ່ອນເກັບຂໍ້ມູນ ຄຳ ນວນຮ້ານ ComputedpersistentDesc=ການຄິດໄລ່ຊ່ອງຂໍ້ມູນພິເສດຈະຖືກເກັບໄວ້ໃນຖານຂໍ້ມູນ, ແນວໃດກໍ່ຕາມ, ຄ່າຈະຖືກຄິດໄລ່ຄືນໃwhen່ເມື່ອວັດຖຸຂອງຊ່ອງຂໍ້ມູນນີ້ຖືກປ່ຽນໄປເທົ່ານັ້ນ. ຖ້າຊ່ອງຂໍ້ມູນທີ່ຖືກຄໍານວນຂື້ນກັບວັດຖຸອື່ນຫຼືຂໍ້ມູນທົ່ວໂລກຄ່ານີ້ອາດຈະຜິດ !! ExtrafieldParamHelpPassword=ການປ່ອຍຊ່ອງນີ້ໃຫ້ຫວ່າງໄວ້meansາຍຄວາມວ່າຄ່ານີ້ຈະຖືກເກັບໄວ້ໂດຍບໍ່ມີການເຂົ້າລະຫັດ (ຊ່ອງຂໍ້ມູນຈະຕ້ອງເຊື່ອງໄວ້ດ້ວຍດາວຢູ່ເທິງ ໜ້າ ຈໍເທົ່ານັ້ນ).
ຕັ້ງ 'ອັດຕະໂນມັດ' ເພື່ອໃຊ້ກົດການເຂົ້າລະຫັດເລີ່ມຕົ້ນເພື່ອບັນທຶກລະຫັດຜ່ານໃສ່ຖານຂໍ້ມູນ (ຈາກນັ້ນຄ່າທີ່ອ່ານຈະເປັນ hash ເທົ່ານັ້ນ, ບໍ່ມີທາງທີ່ຈະດຶງເອົາຄ່າເດີມໄດ້) @@ -645,6 +645,8 @@ Module2300Name=ວຽກທີ່ວາງແຜນໄວ້ Module2300Desc=ການຈັດການວຽກຕາມ ກຳ ນົດ (ນາມແcrງ cron ຫຼື chrono table) Module2400Name=ເຫດການ/ວາລະ Module2400Desc=ຕິດຕາມເຫດການ. ບັນທຶກເຫດການອັດຕະໂນມັດເພື່ອຈຸດປະສົງການຕິດຕາມຫຼືບັນທຶກເຫດການຫຼືການປະຊຸມດ້ວຍຕົນເອງ. ນີ້ແມ່ນໂມດູນຫຼັກສໍາລັບການຄຸ້ມຄອງຄວາມສໍາພັນຂອງລູກຄ້າຫຼືຜູ້ຂາຍທີ່ດີ. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=DMS / ECM Module2500Desc=ລະບົບການຈັດການເອກະສານ / ການຈັດການເນື້ອໃນເອເລັກໂຕຣນິກ. ການຈັດລະບຽບເອກະສານທີ່ສ້າງຂຶ້ນຫຼືເກັບໄວ້ໂດຍອັດຕະໂນມັດຂອງເຈົ້າ. ແບ່ງປັນໃຫ້ເຂົາເຈົ້າໃນເວລາທີ່ທ່ານຕ້ອງການ. Module2600Name=API / Web services (SOAP server) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=ຄວາມສາມາດໃນການແປງ GeoIP Maxmind Module3200Name=ເອກະສານທີ່ບໍ່ສາມາດປ່ຽນແປງໄດ້ Module3200Desc=ເປີດໃຊ້ບັນທຶກເຫດການທາງທຸລະກິດທີ່ບໍ່ສາມາດປ່ຽນແປງໄດ້. ເຫດການຖືກເກັບໄວ້ໃນເວລາຈິງ. ໄມ້ທ່ອນເປັນຕາຕະລາງອ່ານຂອງເຫດການທີ່ມີລະບົບຕ່ອງໂສ້ເທົ່ານັ້ນທີ່ສາມາດສົ່ງອອກໄດ້. ໂມດູນນີ້ອາດຈະເປັນຂໍ້ບັງຄັບສໍາລັບບາງປະເທດ. +Module3300Name=Module Builder +Module3200Desc=ເປີດໃຊ້ບັນທຶກເຫດການທາງທຸລະກິດທີ່ບໍ່ສາມາດປ່ຽນແປງໄດ້. ເຫດການຖືກເກັບໄວ້ໃນເວລາຈິງ. ໄມ້ທ່ອນເປັນຕາຕະລາງອ່ານຂອງເຫດການທີ່ມີລະບົບຕ່ອງໂສ້ເທົ່ານັ້ນທີ່ສາມາດສົ່ງອອກໄດ້. ໂມດູນນີ້ອາດຈະເປັນຂໍ້ບັງຄັບສໍາລັບບາງປະເທດ. Module3400Name=ເຄືອຂ່າຍສັງຄົມ Module3400Desc=ເປີດໃຊ້ງານເຄືອຂ່າຍສັງຄົມເຂົ້າໄປໃນພາກສ່ວນທີສາມແລະທີ່ຢູ່ (skype, twitter, facebook, ... ). Module4000Name=HRM @@ -700,8 +704,10 @@ Module62000Name=Incoterms Module62000Desc=ເພີ່ມຄຸນສົມບັດເພື່ອຈັດການ Incoterms Module63000Name=ຊັບ​ພະ​ຍາ​ກອນ Module63000Desc=ຈັດການຊັບພະຍາກອນ (ເຄື່ອງພິມ, ລົດ, ຫ້ອງ, ... ) ສໍາລັບຈັດສັນໃຫ້ກັບເຫດການ +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Receptions -Permission11=ອ່ານໃບແຈ້ງ ໜີ້ ລູກຄ້າ +Permission11=Read customer invoices (and payments) Permission12=ສ້າງ/ແກ້ໄຂໃບແຈ້ງ ໜີ້ ລູກຄ້າ Permission13=ໃບແຈ້ງ ໜີ້ ລູກຄ້າບໍ່ຖືກຕ້ອງ Permission14=ກວດສອບໃບຮຽກເກັບເງິນຂອງລູກຄ້າ @@ -943,7 +949,7 @@ Permission1190=ອະນຸມັດ (ການອະນຸມັດຄັ້ງ Permission1191=ຄໍາສັ່ງສົ່ງອອກຂອງຜູ້ສະ ໜອງ ແລະຄຸນລັກສະນະຂອງມັນ Permission1201=ໄດ້ຮັບຜົນຂອງການສົ່ງອອກ Permission1202=ສ້າງ/ແກ້ໄຂການສົ່ງອອກ -Permission1231=ອ່ານໃບແຈ້ງ ໜີ້ ຜູ້ຂາຍ +Permission1231=Read vendor invoices (and payments) Permission1232=ສ້າງ/ແກ້ໄຂໃບແຈ້ງ ໜີ້ ຜູ້ຂາຍ Permission1233=ກວດສອບໃບຮຽກເກັບເງິນຜູ້ຂາຍ Permission1234=ລຶບໃບຮຽກເກັບເງິນຜູ້ຂາຍ @@ -1230,7 +1236,7 @@ SetupDescription4= %s -> %s

ຊອບແວນີ SetupDescription5=ລາຍການເມນູການຕັ້ງຄ່າອື່ນຈັດການຕົວກໍານົດການທາງເລືອກ. SetupDescriptionLink= %s - %s SetupDescription3b=ຕົວກໍານົດພື້ນຖານທີ່ໃຊ້ເພື່ອປັບແຕ່ງພຶດຕິກໍາເລີ່ມຕົ້ນຂອງແອັບພລິເຄຊັນຂອງເຈົ້າ (ເຊັ່ນ: ສໍາລັບລັກສະນະທີ່ກ່ຽວຂ້ອງກັບປະເທດ). -SetupDescription4b=ຊອບແວນີ້ແມ່ນຊຸດຂອງໂມດູນ/ຄໍາຮ້ອງສະຫມັກຈໍານວນຫຼາຍ. ໂມດູນທີ່ກ່ຽວຂ້ອງກັບຄວາມຕ້ອງການຂອງເຈົ້າຕ້ອງຖືກເປີດໃຊ້ແລະຕັ້ງຄ່າ. ລາຍການເມນູຈະປະກົດຂຶ້ນພ້ອມກັບການເປີດໃຊ້ໂມດູນເຫຼົ່ານີ້. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=ເຫດການຄວາມປອດໄພທີ່ຖືກກວດສອບ NoSecurityEventsAreAduited=ບໍ່ມີການກວດສອບເຫດການຄວາມປອດໄພ. ເຈົ້າສາມາດເປີດ ນຳ ໃຊ້ພວກມັນໄດ້ຈາກເມນູ %s Audit=ເຫດການຄວາມປອດໄພ @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive=ທຣິກເກີຢູ່ໃນໄຟລ this GeneratedPasswordDesc=ເລືອກວິທີທີ່ຈະໃຊ້ ສຳ ລັບລະຫັດຜ່ານທີ່ສ້າງຂຶ້ນໂດຍອັດຕະໂນມັດ. DictionaryDesc=ໃສ່ຂໍ້ມູນການອ້າງອີງທັງົດ. ເຈົ້າສາມາດເພີ່ມຄຸນຄ່າຂອງເຈົ້າເປັນຄ່າເລີ່ມຕົ້ນ. ConstDesc=ໜ້າ ນີ້ອະນຸຍາດໃຫ້ເຈົ້າສາມາດແກ້ໄຂ (ລົບລ້າງ) ພາຣາມີເຕີທີ່ບໍ່ມີຢູ່ໃນ ໜ້າ ອື່ນ. ສ່ວນໃຫຍ່ເຫຼົ່ານີ້ແມ່ນຕົວກໍານົດທີ່ສະຫງວນໄວ້ສໍາລັບຜູ້ພັດທະນາ/ການແກ້ໄຂບັນຫາຂັ້ນສູງເທົ່ານັ້ນ. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=ຕົວກໍານົດການທີ່ກ່ຽວຂ້ອງກັບຄວາມປອດໄພອື່ນ All ທັງareົດຖືກກໍານົດຢູ່ທີ່ນີ້. LimitsSetup=ການຈໍາກັດ/ການຕັ້ງຄ່າຄວາມແມ່ນຍໍາ LimitsDesc=ເຈົ້າສາມາດກໍານົດຂອບເຂດຈໍາກັດ, ຄວາມຊັດເຈນແລະການເພີ່ມປະສິດທິພາບທີ່ໃຊ້ໂດຍ Dolibarr ຢູ່ທີ່ນີ້ @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=ໃຊ້ປະເພດເຫດການ (ຈັດກ AGENDA_USE_EVENT_TYPE_DEFAULT=ກໍານົດຄ່າເລີ່ມຕົ້ນນີ້ໂດຍອັດຕະໂນມັດສໍາລັບປະເພດຂອງເຫດການໃນຮູບແບບການສ້າງເຫດການ AGENDA_DEFAULT_FILTER_TYPE=ກຳ ນົດເຫດການປະເພດນີ້ໂດຍອັດຕະໂນມັດຢູ່ໃນຕົວກັ່ນຕອງການຊອກຫາຂອງມຸມມອງວາລະ AGENDA_DEFAULT_FILTER_STATUS=ຕັ້ງສະຖານະນີ້ໂດຍອັດຕະໂນມັດສໍາລັບເຫດການຢູ່ໃນຕົວກັ່ນຕອງການຄົ້ນຫາຂອງມຸມມອງວາລະ +AGENDA_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=ມຸມມອງໃດທີ່ເຈົ້າຕ້ອງການເປີດຕາມຄ່າເລີ່ມຕົ້ນເມື່ອເລືອກເມນູວາລະ AGENDA_REMINDER_BROWSER=ເປີດໃຊ້ງານການແຈ້ງເຕືອນເຫດການ ຢູ່ໃນບຣາວເຊີຂອງຜູ້ໃຊ້ (ເມື່ອຮອດວັນທີເຕືອນ, ໂປແກຼມທ່ອງເວັບຈະປາກົດຂຶ້ນມາ. AGENDA_REMINDER_BROWSER_SOUND=ເປີດໃຊ້ການແຈ້ງເຕືອນສຽງ @@ -2129,6 +2139,7 @@ CodeLastResult=ລະຫັດຜົນໄດ້ຮັບຫຼ້າສຸດ NbOfEmailsInInbox=ຈຳ ນວນອີເມວຢູ່ໃນບັນຊີລາຍຊື່ແຫຼ່ງທີ່ມາ LoadThirdPartyFromName=ໂຫຼດການຄົ້ນຫາຈາກພາກສ່ວນທີສາມຢູ່ໃນ %s (ໂຫຼດເທົ່ານັ້ນ) LoadThirdPartyFromNameOrCreate=ໂຫຼດການຄົ້ນຫາຈາກພາກສ່ວນທີສາມຢູ່ໃນ %s (ສ້າງຖ້າບໍ່ພົບ) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=ຂໍ້ຄວາມຈາກການສົນທະນາທີ່ລິເລີ່ມໂດຍອີເມວ ທຳ ອິດທີ່ສົ່ງຈາກ Dolibarr WithoutDolTrackingID=ຂໍ້ຄວາມຈາກການສົນທະນາທີ່ລິເລີ່ມໂດຍອີເມວ ທຳ ອິດບໍ່ໄດ້ສົ່ງຈາກ Dolibarr @@ -2355,3 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/lo_LA/install.lang b/htdocs/langs/lo_LA/install.lang index 10d3f90736d..57990c7b9a5 100644 --- a/htdocs/langs/lo_LA/install.lang +++ b/htdocs/langs/lo_LA/install.lang @@ -51,7 +51,6 @@ DatabaseName=ຊື່ຖານຂໍ້ມູນ DatabasePrefix=ຄຳ ນຳ ໜ້າ ຕາຕະລາງຖານຂໍ້ມູນ DatabasePrefixDescription=ຄຳ ນຳ ໜ້າ ຕາຕະລາງຖານຂໍ້ມູນ. ຖ້າຫວ່າງເປົ່າ, ຄ່າເລີ່ມຕົ້ນແມ່ນ llx_. AdminLogin=ບັນຊີຜູ້ໃຊ້ສໍາລັບເຈົ້າຂອງຖານຂໍ້ມູນ Dolibarr. -PasswordAgain=ພິມລະຫັດຢືນຢັນອີກຄັ້ງ AdminPassword=ລະຫັດຜ່ານສໍາລັບເຈົ້າຂອງຖານຂໍ້ມູນ Dolibarr. CreateDatabase=ສ້າງຖານຂໍ້ມູນ CreateUser=ສ້າງບັນຊີຜູ້ໃຊ້ຫຼືໃຫ້ການອະນຸຍາດບັນຊີຜູ້ໃຊ້ຢູ່ໃນຖານຂໍ້ມູນ Dolibarr @@ -89,7 +88,7 @@ LoginAlreadyExists=ມີຢູ່ແລ້ວ DolibarrAdminLogin=ເຂົ້າສູ່ລະບົບ admin Dolibarr AdminLoginAlreadyExists=ບັນຊີຜູ້ເບິ່ງແຍງລະບົບ Dolibarr ' %s ' ມີຢູ່ແລ້ວ. ກັບຄືນຖ້າເຈົ້າຕ້ອງການສ້າງອັນໃanother່. FailedToCreateAdminLogin=ສ້າງບັນຊີຜູ້ເບິ່ງແຍງລະບົບ Dolibarr ບໍ່ ສຳ ເລັດ. -WarningRemoveInstallDir=ຄໍາເຕືອນ, ສໍາລັບເຫດຜົນດ້ານຄວາມປອດໄພ, ເມື່ອການຕິດຕັ້ງຫຼືການອັບເກຣດສໍາເລັດ, ເຈົ້າຄວນເພີ່ມໄຟລ called ທີ່ເອີ້ນວ່າ install.lock ເຂົ້າໄປໃນໄດເລກະທໍລີເອກະສານ Dolibarr ເພື່ອປ້ອງກັນການນໍາໃຊ້ເຄື່ອງມືຕິດຕັ້ງໂດຍບັງເອີນ. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=ບໍ່ມີຢູ່ໃນ PHP ນີ້ ChoosedMigrateScript=ເລືອກສະຄຣິບການຍ້າຍ DataMigration=ການຍ້າຍຖານຂໍ້ມູນ (ຂໍ້ມູນ) @@ -209,7 +208,12 @@ HideNotAvailableOptions=ເຊື່ອງຕົວເລືອກທີ່ບ ErrorFoundDuringMigration=ລາຍງານຂໍ້ຜິດພາດໃນລະຫວ່າງຂັ້ນຕອນການຍ້າຍດັ່ງນັ້ນຂັ້ນຕອນຕໍ່ໄປບໍ່ສາມາດໃຊ້ໄດ້. ເພື່ອບໍ່ສົນໃຈຄວາມຜິດພາດ, ເຈົ້າສາມາດ ຄລິກທີ່ນີ້ , ແຕ່ແອັບພລິເຄຊັນຫຼືບາງຄຸນສົມບັດອາດຈະບໍ່ເຮັດວຽກໄດ້ຖືກຕ້ອງຈົນກວ່າຈະແກ້ໄຂຂໍ້ຜິດພາດ. YouTryInstallDisabledByDirLock=ແອັບພລິເຄຊັນພະຍາຍາມອັບເກຣດຕົນເອງ, ແຕ່ ໜ້າ ຕິດຕັ້ງ/ອັບເກຣດໄດ້ຖືກປິດການ ນຳ ໃຊ້ເພື່ອຄວາມປອດໄພ (ໄດເຣັກທໍຣີປ່ຽນຊື່ດ້ວຍ .lock suffix).
YouTryInstallDisabledByFileLock=ແອັບພລິເຄຊັນພະຍາຍາມອັບເກຣດຕົນເອງ, ແຕ່ ໜ້າ ຕິດຕັ້ງ/ອັບເກຣດໄດ້ຖືກປິດການ ນຳ ໃຊ້ເພື່ອຄວາມປອດໄພ (ໂດຍການມີໄຟລ lock ລັອກ install.lock ໃນແຟ້ມເອກະສານ dolibarr).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=ຄລິກທີ່ນີ້ເພື່ອໄປຫາໃບສະັກຂອງເຈົ້າ ClickOnLinkOrRemoveManualy=ຖ້າການອັບເກຣດພວມ ດຳ ເນີນຢູ່, ກະລຸນາລໍຖ້າ. ຖ້າບໍ່ແມ່ນ, ຄລິກທີ່ລິ້ງຕໍ່ໄປນີ້. ຖ້າເຈົ້າເຫັນ ໜ້າ ດຽວກັນນີ້ສະເ,ີ, ເຈົ້າຕ້ອງລຶບ/ປ່ຽນຊື່ໄຟລ install install.lock ຢູ່ໃນລາຍການເອກະສານ. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=ໂຫຼດແລ້ວ FunctionTest=ການທົດສອບການທໍາງານ +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/lt_LT/admin.lang b/htdocs/langs/lt_LT/admin.lang index 4053f4b2161..dd4c00857a8 100644 --- a/htdocs/langs/lt_LT/admin.lang +++ b/htdocs/langs/lt_LT/admin.lang @@ -51,8 +51,6 @@ ClientSortingCharset=Client collation WarningModuleNotActive=%s modulis turi būti įjungtas WarningOnlyPermissionOfActivatedModules=Čia rodomi tik aktyvuotų modulių leidimai. Kiti moduliai gali būti aktyvuoti Namai->Paruošimas->Moduliai puslapyje. DolibarrSetup=Dolibarr įdiegimas arba atnaujinimas -InternalUser=Vidinis naudotojas -ExternalUser=Išorinis naudotojas InternalUsers=Vidiniai naudotojai ExternalUsers=Išoriniai naudotojai UserInterface=User interface @@ -294,6 +292,7 @@ MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (default value in php.ini: %s) MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS Port (Not defined into PHP on Unix-like systems) MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (Not defined into PHP on Unix-like systems) MAIN_MAIL_EMAIL_FROM=Sender email for automatic emails (default value in php.ini: %s) +EMailHelpMsgSPFDKIM=To prevent Dolibarr emails to be classified as spam, make sure that the server is authorized to send e-mails from this address by SPF and DKIM configuration MAIN_MAIL_ERRORS_TO=Email used for error returns emails (fields 'Errors-To' in emails sent) MAIN_MAIL_AUTOCOPY_TO= Copy (Bcc) all sent emails to MAIN_DISABLE_ALL_MAILS=Disable all email sending (for test purposes or demos) @@ -439,8 +438,10 @@ Unique=Unikalus Boolean=Boolean (one checkbox) ExtrafieldPhone = Telefonas ExtrafieldPrice = Kaina +ExtrafieldPriceWithCurrency=Price with currency ExtrafieldMail = El. paštas ExtrafieldUrl = Url +ExtrafieldIP = IP ExtrafieldSelect = Pasirinkti sąrašą ExtrafieldSelectList = Pasirinkite iš lentelės ExtrafieldSeparator=Separator (not a field) @@ -450,7 +451,7 @@ ExtrafieldCheckBox=Checkboxes ExtrafieldCheckBoxFromList=Checkboxes from table ExtrafieldLink=Nuoroda į objektą, 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->fetchNoCompute($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->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Store computed field ComputedpersistentDesc=Computed extra fields will be stored in the database, however, the value will only be recalculated when the object of this field is changed. If the computed field depends on other objects or global data this value might be wrong!! 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) @@ -501,7 +502,8 @@ WarningPHPMail=WARNING: The setup to send emails from the application is using t WarningPHPMailA=- Using the server of the Email Service Provider increases the trustability of your email, so it increases the deliverablity without being flagged as SPAM WarningPHPMailB=- Some Email Service 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 for delivery (be careful also of your email provider's sending quota). WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to send emails is also interesting so all emails sent from application will also be saved into your "Sent" directory of your mailbox. -WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. +WarningPHPMailD=It is therefore recommended to change the sending method of e-mails to the value "SMTP". +WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. 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. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s @@ -514,7 +516,7 @@ PageUrlForDefaultValuesCreate=
Example:
For the form to create a new third 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 AlsoDefaultValuesAreEffectiveForActionCreate=Also note that overwritting default values for form creation works only for pages that were correctly designed (so with parameter action=create or presend...) EnableDefaultValues=Enable customization of default values -EnableOverwriteTranslation=Enable usage of overwritten translation +EnableOverwriteTranslation=Allow customization of translations GoIntoTranslationMenuToChangeThis=A translation has been found for the key with this code. To change this value, you must edit it from Home-Setup-translation. WarningSettingSortOrder=Warning, setting a default sort order may result in a technical error when going on the list page if field is an unknown field. If you experience such an error, come back to this page to remove the default sort order and restore default behavior. Field=Laukas @@ -643,11 +645,13 @@ Module2300Name=Suplanuoti darbai Module2300Desc=Scheduled jobs management (alias cron or chrono table) Module2400Name=Events/Agenda Module2400Desc=Track events. Log automatic events for tracking purposes or record manual events or meetings. This is the principal module for good Customer or Vendor Relationship Management. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. 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) +Module2600Name=API / Web services (SOAP server) Module2600Desc=Enable the Dolibarr SOAP server providing API services -Module2610Name=API/Web services (REST server) +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 Purchase orders are currently supported.) @@ -658,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP MaxMind konvertavimo galimybes Module3200Name=Unalterable Archives Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. +Module3300Name=Module Builder +Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. Module3400Name=Social Networks Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...). Module4000Name=Žmogiškųjų išteklių valdymas (HRM) @@ -698,7 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Add features to manage Incoterms Module63000Name=Ištekliai Module63000Desc=Manage resources (printers, cars, rooms, ...) for allocating to events -Permission11=Skaityti klientų sąskaitas +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. +Module94160Name=Receptions +Permission11=Read customer invoices (and payments) Permission12=Sukurti/keisti klientų sąskaitas Permission13=Invalidate customer invoices Permission14=Patvirtinti klientų sąskaitas @@ -842,9 +851,9 @@ Permission286=Eksportuoti adresatus Permission291=Skaityti tarifus Permission292=Nustatyti leidimus tarifams Permission293=Modify customer's tariffs -Permission300=Read barcodes -Permission301=Create/modify barcodes -Permission302=Delete barcodes +Permission301=Generate PDF sheets of barcodes +Permission304=Create/modify barcodes +Permission305=Delete barcodes Permission311=Skaityti paslaugas Permission312=Priskirti servisą / prenumeratą prie sutarties Permission331=Skaityti žymes @@ -940,7 +949,7 @@ Permission1190=Approve (second approval) purchase orders Permission1191=Export supplier orders and their attributes Permission1201=Gauti eksporto rezultatą Permission1202=Sukurti/keisti eksportą -Permission1231=Read vendor invoices +Permission1231=Read vendor invoices (and payments) Permission1232=Create/modify vendor invoices Permission1233=Validate vendor invoices Permission1234=Delete vendor invoices @@ -971,13 +980,14 @@ Permission3301=Generate new modules Permission4001=Read skill/job/position Permission4002=Create/modify skill/job/position Permission4003=Delete skill/job/position -Permission4020=Read evaluations -Permission4021=Create/modify your evaluation -Permission4022=Validate evaluation -Permission4023=Delete evaluation -Permission4030=See comparison menu +Permission4021=Read evaluations (yours and your subordinates) +Permission4022=Create/modify evaluations +Permission4023=Validate evaluation +Permission4025=Delete evaluation +Permission4028=See comparison menu Permission4031=Read personal information Permission4032=Write personal information +Permission4033=Read all evaluations (even those of user not subordinates) Permission10001=Read website content Permission10002=Create/modify website content (html and javascript content) Permission10003=Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers. @@ -1081,6 +1091,10 @@ DictionaryAssetDisposalType=Type of disposal of assets TypeOfUnit=Type of unit SetupSaved=Nustatymai išsaugoti SetupNotSaved=Setup not saved +OAuthServiceConfirmDeleteTitle=Delete OAuth entry +OAuthServiceConfirmDeleteMessage=Are you sure you want to delete this OAuth entry ? All existing tokens for it will also be deleted. +ErrorInEntryDeletion=Error in entry deletion +EntryDeleted=Entry deleted BackToModuleList=Back to Module list BackToDictionaryList=Back to Dictionaries list TypeOfRevenueStamp=Type of tax stamp @@ -1222,7 +1236,7 @@ SetupDescription4=%s -> %s

This software is a suite of m SetupDescription5=Other Setup menu entries manage optional parameters. SetupDescriptionLink=%s - %s SetupDescription3b=Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Security events that are audited NoSecurityEventsAreAduited=No security events are audited. You can enable them from menu %s Audit=Security events @@ -1244,6 +1258,7 @@ AreaForAdminOnly=Setup parameters can be set by administrator users only. SystemInfoDesc=Sistemos informacija yra įvairi techninė informacija, kurią gausite tik skaitymo režimu, ir bus matoma tik sistemos administratoriams. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. +MoreNetworksAvailableWithModule=More social networks may be available by enabling the module "Social networks". AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and presentation of the application can be modified here. @@ -1261,6 +1276,7 @@ TriggerActiveAsModuleActive=Trigeriai šiame faile yra aktyvūs, nes modulis GeneratedPasswordDesc=Choose the method to be used for auto-generated passwords. DictionaryDesc=Insert all reference data. You can add your values to the default. ConstDesc=This page allows you to edit (override) parameters not available in other pages. These are mostly reserved parameters for developers/advanced troubleshooting only. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=All other security related parameters are defined here. LimitsSetup=Apribojimų/Tikslumo nustatymai LimitsDesc=You can define limits, precisions and optimizations used by Dolibarr here @@ -1294,6 +1310,8 @@ YouMustRunCommandFromCommandLineAfterLoginToUser=Jūs turite paleisti šią koma YourPHPDoesNotHaveSSLSupport=SSL funkcijos negalimos Jūsų PHP DownloadMoreSkins=Parsisiųsti daugiau grafinių vaizdų (skins) SimpleNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset +SimpleRefNumRefModelDesc=Returns the reference number in the format n where n is a sequential auto-incrementing number with no reset +AdvancedNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset SimpleNumRefNoDateModelDesc=Returns the reference number in the format %s-nnnn where nnnn is a sequential auto-incrementing number with no reset ShowProfIdInAddress=Show professional ID with addresses ShowVATIntaInAddress=Hide intra-Community VAT number @@ -1380,7 +1398,7 @@ GetBarCode=Gauti brūkšninį kodą NumberingModules=Numbering models DocumentModules=Document models ##### Module password generation -PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters in lowercase. +PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters. PasswordGenerationNone=Do not suggest a generated password. Password must be typed in manually. PasswordGenerationPerso=Return a password according to your personally defined configuration. SetupPerso=According to your configuration @@ -1434,6 +1452,10 @@ SuppliersPayment=Vendor payments SupplierPaymentSetup=Vendor payments setup InvoiceCheckPosteriorDate=Check facture date before validation InvoiceCheckPosteriorDateHelp=Validating an invoice will be forbidden if its date is anterior to the date of last invoice of same type. +InvoiceOptionCategoryOfOperations=Display the mention "category of operations" on the invoice. +InvoiceOptionCategoryOfOperationsHelp=Depending on the situation, the mention will appear in the form:
- Category of operations: Delivery of goods
- Category of operations: Provision of services
- Category of operations: Mixed - Delivery of goods & provision of services +InvoiceOptionCategoryOfOperationsYes1=Yes, below the address block +InvoiceOptionCategoryOfOperationsYes2=Yes, in the lower left-hand corner ##### Proposals ##### PropalSetup=Komercinių pasiūlymų modulio nuostatos ProposalsNumberingModules=Komercinių pasiūlymų numeracijos modeliai @@ -1476,11 +1498,12 @@ WatermarkOnDraftContractCards=Vandens ženklas ant sutarčių projektų (nieko j ##### Members ##### MembersSetup=Narių modulio nuostatos MemberMainOptions=Pagrindinės opcijos +MemberCodeChecker=Options for automatic generation of member codes AdherentLoginRequired= Valdyti kiekvieno nario Prisijungimą AdherentMailRequired=Email required to create a new member MemberSendInformationByMailByDefault=Patvirtinimas paukščiuku žymimame langelyje pašto siuntimui nariams (patvirtinimas arba nauja įmoka) yra pagal nutylėjimą MemberCreateAnExternalUserForSubscriptionValidated=Create an external user login for each new member subscription validated -VisitorCanChooseItsPaymentMode=Visitor can choose from available payment modes +VisitorCanChooseItsPaymentMode=Visitor can choose from any 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. MembersDocModules=Document templates for documents generated from member record ##### LDAP setup ##### @@ -1742,8 +1765,8 @@ ActivateFCKeditor=Įjungti išplėstinį redaktorių: FCKeditorForNotePublic=WYSIWIG creation/edition of the field "public notes" of elements FCKeditorForNotePrivate=WYSIWIG creation/edition of the field "private notes" of elements FCKeditorForCompany=WYSIWIG creation/edition of the field description of elements (except products/services) -FCKeditorForProduct=WYSIWIG creation/edition of the field description of products/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 creation/edition of products description or lines for objects (lines of proposals, orders, invoices, etc...). +FCKeditorForProductDetails2=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. FCKeditorForMailing= WYSIWIG kūrimas/redagavimas masiniams e-laiškams (Tools-> eMailing) FCKeditorForUserSignature=Vartotojo parašo WYSIWIG kūrimas/redagavimas FCKeditorForMail=WYSIWIG creation/edition for all mail (except Tools->eMailing) @@ -1766,7 +1789,7 @@ DetailMenuHandler=Meniu prižiūrėtojas gali rodyti naują meniu DetailMenuModule=Modulio pavadinimas, jei meniu įrašas gaunamas iš modulio DetailType=Meniu tipas (viršuje arba kairėje) DetailTitre=Meniu etiketė arba etiketės kodas vertimui -DetailUrl=URL, kur meniu Jms nurodo (Absolute URL nuoroda arba išorinė nuoroda su http://) +DetailUrl=URL where menu send you (Relative URL link or external link with https://) DetailEnabled=Sąlyga parodyti, ar ne įrašą DetailRight=Sąlyga parodyti neleidžiamus pilkus meniu punktus DetailLangs=Lang failo pavadinimas etiketės kodo vertimui @@ -1810,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Use events types (managed in menu Setup -> Dictionaries -> 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_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Which view do you want to open by default when selecting menu Agenda AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (When remind date is reached, a popup is shown by the browser. Each user can disable such notifications from its browser notification setup). AGENDA_REMINDER_BROWSER_SOUND=Enable sound notification @@ -1837,7 +1863,7 @@ StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatib CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sale from Point of Sale. Hence a warehouse is required. CashDeskForceDecreaseStockLabel=Stock decrease for batch products was forced. CashDeskForceDecreaseStockDesc=Decrease first by the oldest eatby and sellby dates. -CashDeskReaderKeyCodeForEnter=Key code for "Enter" defined in barcode reader (Example: 13) +CashDeskReaderKeyCodeForEnter=Key ASCII code for "Enter" defined in barcode reader (Example: 13) ##### Bookmark ##### BookmarkSetup=Žymeklių modulio nustatymas 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. @@ -1875,7 +1901,7 @@ SuppliersInvoiceNumberingModel=Vendor invoices numbering models IfSetToYesDontForgetPermission=If set to a non null value, don't forget to provide permissions to groups or users allowed for the second approval ##### GeoIPMaxmind ##### GeoIPMaxmindSetup=GeoIP MaxMind modulio nustatymas -PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation.
Examples:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoLite2-Country.mmdb +PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation NoteOnPathLocation=Atkreipkite dėmesį, kad Jūsų IP į šalies duomenų bylos turi būti viduje katalogo, kurį Jūsų PHP gali skaityti (Patikrinkite savo PHP open_basedir nustatymus ir failų sistemos leidimus). YouCanDownloadFreeDatFileTo=Galite atsisiųsti MaxMind GeoIP šalies failo nemokamą demonstracinę versiją į %s. YouCanDownloadAdvancedDatFileTo=Taip pat galite atsisiųsti pilnesnę versiją su atnaujinimais, MaxMind GeoIP šalies failą %s. @@ -1926,6 +1952,7 @@ BackupDumpWizard=Wizard to build the database dump file BackupZipWizard=Wizard to build the archive of documents directory 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 a manual process only a privileged user may perform. +InstallModuleFromWebHasBeenDisabledContactUs=Install or development of external modules or dynamic websites, from the application, is currently locked for security purpose. Please contact us if you need to enable this feature. 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 @@ -2053,6 +2080,8 @@ RemoveSpecialChars=Remove special characters COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN_REGEX) COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Duplicate not allowed +RemoveSpecialWords=Clean certain words when generating sub-accounts for customers or suppliers +RemoveSpecialWordsHelp=Specify the words to be cleaned before calculating the customer or supplier account. Use a ";" between each word GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact) GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here HelpOnTooltip=Help text to show on tooltip @@ -2080,6 +2109,7 @@ MailboxTargetDirectory=Mailbox target directory EmailcollectorOperations=Operations to do by collector EmailcollectorOperationsDesc=Operations are executed from top to bottom order MaxEmailCollectPerCollect=Max number of emails collected per collect +TestCollectNow=Test collect CollectNow=Collect now ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s? DateLastCollectResult=Date of latest collect try @@ -2109,6 +2139,7 @@ CodeLastResult=Latest result code NbOfEmailsInInbox=Number of emails in source directory LoadThirdPartyFromName=Load third party searching on %s (load only) LoadThirdPartyFromNameOrCreate=Load third party searching on %s (create if not found) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Message from a conversation initiated by a first email sent from Dolibarr WithoutDolTrackingID=Message from a conversation initiated by a first email NOT sent from Dolibarr @@ -2183,6 +2214,7 @@ ShowProjectLabel=Project Label PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty +PDFIn2Languages=Show labels into PDF in 2 different languages PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2211,12 +2243,12 @@ MailToPartnership=Partnership AGENDA_EVENT_DEFAULT_STATUS=Default event status when creating a event from the form YouShouldDisablePHPFunctions=You should disable PHP functions IfCLINotRequiredYouShouldDisablePHPFunctions=Except if you need to run system commands in custom code, you shoud disable PHP functions -PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an anitivurs program), you must keep PHP functions +PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an antivirus program), you must keep PHP functions NoWritableFilesFoundIntoRootDir=No writable files or directories of the common programs were found into your root directory (Good) RecommendedValueIs=Recommended: %s Recommended=Rekomenduojamas NotRecommended=Not recommended -ARestrictedPath=Some restricted path +ARestrictedPath=Some restricted path for data files CheckForModuleUpdate=Check for external modules updates CheckForModuleUpdateHelp=This action will connect to editors of external modules to check if a new version is available. ModuleUpdateAvailable=An update is available @@ -2264,7 +2296,7 @@ LateWarningAfter="Late" warning after TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode -ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. +ExportUseLowMemoryModeHelp=Use the low memory mode to generate the dump file (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that the file is complete and error message can't be reported if it fails. Use it if you experience not enough memory errors. ModuleWebhookName = Webhook ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL @@ -2288,6 +2320,8 @@ IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices +INVOICE_SHOW_SHIPPING_ADDRESS=Show shipping address +INVOICE_SHOW_SHIPPING_ADDRESSMore=Compulsory mention for France UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. IfThisCategoryIsChildOfAnother=If this category is a child of another one DarkThemeMode=Dark theme mode @@ -2307,3 +2341,34 @@ UsePassword=Use a password UseOauth=Use a OAUTH token Images=Images MaxNumberOfImagesInGetPost=Max number of images allowed in a HTML field submitted in a form +MaxNumberOfPostOnPublicPagesByIP=Max number of posts on public pages with the same IP address in a month +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: +ScriptIsEmpty=The script is empty +ShowHideTheNRequests=Show/hide the %s SQL request(s) +DefinedAPathForAntivirusCommandIntoSetup=Define a path for an antivirus program into %s +TriggerCodes=Triggerable events +TriggerCodeInfo=Enter here the trigger code(s) that must generate a post of a web request (only external URL are allowed). You can enter several trigger codes separated by a comma. +EditableWhenDraftOnly=If unchecked, the value can only be modified when object has a draft status +CssOnEdit=Css on edit pages +CssOnView=Css on view pages +CssOnList=Css on list pages +HelpCssOnEditDesc=The Css used when editing the field.
Example: "minwiwdth100 maxwidth500 widthcentpercentminusx" +HelpCssOnViewDesc=The Css used when viewing the field. +HelpCssOnListDesc=The Css used when field is inside a list table.
Example: "tdoverflowmax200" +RECEPTION_PDF_HIDE_ORDERED=Hide the quantity ordered on the generated documents for receptions +MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT=Show the price on the generated documents for receptions +WarningDisabled=Warning disabled +LimitsAndMitigation=Access limits and mitigation +DesktopsOnly=Desktops only +DesktopsAndSmartphones=Desktops et smartphones +AllowOnlineSign=Allow online signing +AllowExternalDownload=Allow external download (without login, using a shared link) +DeadlineDayVATSubmission=Deadline day for vat submission on the next month +MaxNumberOfAttachementOnForms=Max number of joinded files in a form +IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/lv_LV/admin.lang b/htdocs/langs/lv_LV/admin.lang index 54f557e18ed..83041a00ee4 100644 --- a/htdocs/langs/lv_LV/admin.lang +++ b/htdocs/langs/lv_LV/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Izvēles rūtiņas ExtrafieldCheckBoxFromList=Izvēles rūtiņas no tabulas ExtrafieldLink=Saite uz objektu ComputedFormula=Aprēķinātais lauks -ComputedFormulaDesc=Šeit var ievadīt formulu, izmantojot citas objekta īpašības vai jebkuru PHP kodējumu, lai iegūtu dinamisku aprēķinātu vērtību. Jūs varat izmantot jebkuras ar PHP saderīgas formulas, ieskaitot "?" nosacījuma operators un sekojošs globālais objekts: $ db, $ conf, $ langs, $ mysoc, $ user, $ object .
BRĪDINĀJUMS : Var būt pieejamas tikai dažas objekta $ īpašības. Ja jums nepieciešami rekvizīti, kas nav ielādēti, vienkārši ienesiet objektu savā formulā, piemēram, otrajā piemērā.
Izmantojot aprēķinātu lauku, nozīmē, ka no interfeisa nevar sev ievadīt nekādas vērtības. Turklāt, ja ir sintakse kļūda, formula var neko neatdot.

Piemērs formulai:
$ object-> id < 10 ? round($object-> id / 2, 2): ($ object-> id + 2 * $ user-> id) * (int) substr ($ mysoc-> zip, 1 )

Piemērs objekta pārlādēšanai
(($ reloadedobj = jauna Societe ($ db)) && ($ reloadedobj-> fetchNoCompute) ($ obj-> id? $ obj-> id: ($ obj-> id: (ob ob-): > rowid: $ object-> id))> 0))? $ reloadedobj-> masīvs_options ['options_extrafieldkey'] * $ reloadedobj-> capital / 5: '-1'

Cits piemērs formulai, ar kuras palīdzību tiek piespiesta objekta un tā vecāka objekta ielāde:
(($ reloadedobj = new )) && ($ reloadedobj-> fetchNoCompute ($ object-> id)> 0) && ($ secondloadedobj = new Project ($ db)) && ($ secondloadedobj-> fetchNoCompute ($ reloadedobj-> fk_project)> 0))? $ secondloadedobj-> ref: 'Vecāku projekts nav atrasts' +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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Veikt aprēķinātu lauku ComputedpersistentDesc=Aprēķinātie papildu lauki tiks saglabāti datubāzē, taču vērtība tiks pārrēķināta tikai tad, kad mainīsies šī lauka objekts. Ja aprēķinātais lauks ir atkarīgs no citiem objektiem vai globāliem datiem, šī vērtība var būt nepareiza! ExtrafieldParamHelpPassword=Atstājot šo lauku tukšu, tas nozīmē, ka šī vērtība tiks saglabāta bez šifrēšanas (laukam jābūt paslēptai tikai ar zvaigznīti uz ekrāna).
Iestatiet 'auto', lai izmantotu noklusējuma šifrēšanas kārtulu, lai saglabātu paroli datubāzē (pēc tam vērtība lasīt būs ashh tikai, nav iespējams izgūt sākotnējo vērtību) @@ -704,8 +704,10 @@ Module62000Name=Inkoterms Module62000Desc=Pievienojiet funkcijas, lai pārvaldītu Incoterms Module63000Name=Resursi Module63000Desc=Pārvaldiet resursus (printerus, automašīnas, telpas, ...), lai piešķirtu notikumiem +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Pieņemšanas -Permission11=Lasīt klientu rēķinus +Permission11=Read customer invoices (and payments) Permission12=Izveidot / mainīt klientu rēķinus Permission13=Nederīgi klientu rēķini Permission14=Pārbaudīt klientu rēķinus @@ -947,7 +949,7 @@ Permission1190=Apstiprināt (otro apstiprinājumu) pirkuma pasūtījumus Permission1191=Eksporta piegādātāju pasūtījumi un to atribūti Permission1201=Saņemt eksportēšanas rezultātu Permission1202=Izveidot/Modificēt eksportu -Permission1231=Lasīt pārdevēja rēķinus +Permission1231=Read vendor invoices (and payments) Permission1232=Izveidojiet / modificējiet piegādātāja rēķinus Permission1233=Apstiprināt pārdevēja rēķinus Permission1234=Dzēst piegādātāja rēķinus @@ -1234,7 +1236,7 @@ SetupDescription4=  %s -> %s

Šī programmatūra ir SetupDescription5=Citi iestatījumu izvēlnes ieraksti pārvalda izvēles parametrus. SetupDescriptionLink= %s - %s SetupDescription3b=Pamata parametri, ko izmanto, lai pielāgotu jūsu lietojumprogrammas noklusējuma darbību (piemēram, ar valsti saistītām funkcijām). -SetupDescription4b=Šī programmatūra ir daudzu moduļu/lietojumprogrammu komplekts. Ar jūsu vajadzībām saistītajiem moduļiem jābūt iespējotiem un konfigurētiem. Izvēlnes ieraksti parādīsies, aktivizējot šos moduļus. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Drošības pasākumi, kas tiek pārbaudīti NoSecurityEventsAreAduited=Netiek pārbaudīti nekādi drošības notikumi. Tos var iespējot no izvēlnes %s Audit=Drošības notikumi @@ -2366,3 +2368,7 @@ MaxNumberOfAttachementOnForms=Maksimālais savienoto failu skaits veidlapā IfDefinedUseAValueBeetween=Ja definēts, izmantojiet vērtību no %s līdz %s Reload=Pārlādēt ConfirmReload=Apstipriniet moduļa atkārtotu ielādi +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/lv_LV/install.lang b/htdocs/langs/lv_LV/install.lang index 6ceb32e7759..7fdb56406f8 100644 --- a/htdocs/langs/lv_LV/install.lang +++ b/htdocs/langs/lv_LV/install.lang @@ -88,7 +88,7 @@ LoginAlreadyExists=Jau eksistē DolibarrAdminLogin=Dolibarr administratora lietotāja vārds AdminLoginAlreadyExists=Dolibarr administratora konts '%s' jau pastāv. Atgriezieties, ja vēlaties izveidot vēl vienu. FailedToCreateAdminLogin=Neizdevās izveidot Dolibarr administratora kontu. -WarningRemoveInstallDir=Drošības apsvērumu dēļ, instalēšanas vai atjaunināšanas pabeigšanas brīdī drošības nolūkos Dolibarr dokumentu direktorijā jāievieto fails install.lock, lai novērstu nejaušu/ļaunprātīgu instalēšanas rīku lietošanu. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=Nav pieejams šajā PHP ChoosedMigrateScript=Izvēlieties migrācijas skriptu DataMigration=Datubāzes migrācijas (dati) @@ -208,8 +208,10 @@ HideNotAvailableOptions=Slēpt nepieejamās iespējas ErrorFoundDuringMigration=Migrēšanas laikā tika ziņots par kļūdu (-ēm), tāpēc nākamais solis nav pieejams. Lai ignorētu kļūdas, varat noklikšķināt šeit , bet lietojumprogramma vai dažas funkcijas var nedarboties pareizi, līdz kļūdas nav atrisinātas. YouTryInstallDisabledByDirLock=Pieteikums mēģināja pašupjaunināt, bet instalēšanas / jaunināšanas lapas tika atspējotas drošībai (direktorija nosaukums tika pārdēvēts ar .lock sufiksu).
YouTryInstallDisabledByFileLock=Lietojumprogramma mēģināja pašatjaunināties, bet instalēšanas/atjaunināšanas lapas tika bloķētas drošībai (ar bloķēšanas failu install.lock Dolibarr dokumentu direktorijā).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=Noklikšķiniet šeit, lai pārietu uz savu pieteikumu ClickOnLinkOrRemoveManualy=Ja notiek jaunināšana, lūdzu, uzgaidiet. Ja nē, noklikšķiniet uz šīs saites. Ja vienmēr redzat šo pašu lapu, dokumentu direktorijā ir jānoņem/jāpārdēvē fails install.lock. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=Iekrauts FunctionTest=Funkcijas pārbaude NodoUpgradeAfterDB=Pēc datu bāzes jaunināšanas ārējie moduļi neprasa nekādas darbības diff --git a/htdocs/langs/lv_LV/members.lang b/htdocs/langs/lv_LV/members.lang index 7fceb4fdd04..5c40d7c817f 100644 --- a/htdocs/langs/lv_LV/members.lang +++ b/htdocs/langs/lv_LV/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=Ieguldījumu statistika NbOfSubscriptions=Iemaksu skaits AmountOfSubscriptions=No iemaksām iekasētā summa TurnoverOrBudget=Apgrozījums (uzņēmumam) vai budžets (par pamatu) -DefaultAmount=Iemaksas noklusējuma summa +DefaultAmount=Default amount of contribution (used only if no amount is defined at member type level) +MinimumAmount=Minimum amount (used only when contribution amount is free) CanEditAmount=Abonementa summa ir bezmaksas CanEditAmountDetail=Apmeklētājs var izvēlēties/rediģēt sava ieguldījuma apjomu neatkarīgi no dalībnieka veida AmountIsLowerToMinimumNotice=sur un dû total de %s diff --git a/htdocs/langs/lv_LV/oauth.lang b/htdocs/langs/lv_LV/oauth.lang index 4db6340f052..d5764c3825c 100644 --- a/htdocs/langs/lv_LV/oauth.lang +++ b/htdocs/langs/lv_LV/oauth.lang @@ -31,8 +31,9 @@ OAUTH_GITHUB_SECRET=OAuth GitHub noslēpums OAUTH_URL_FOR_CREDENTIAL=Dodieties uz šo lapu , lai izveidotu vai iegūtu savu OAuth ID un noslēpumu OAUTH_STRIPE_TEST_NAME=OAuth svītras tests OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live -OAUTH_ID=OAuth ID +OAUTH_ID=OAuth Client ID OAUTH_SECRET=OAuth noslēpums +OAUTH_TENANT=OAuth tenant OAuthProviderAdded=Pievienots OAuth nodrošinātājs AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=OAuth ieraksts šim nodrošinātājam un iezīmei jau pastāv URLOfServiceForAuthorization=URL, ko nodrošina OAuth pakalpojums autentifikācijai diff --git a/htdocs/langs/lv_LV/users.lang b/htdocs/langs/lv_LV/users.lang index 8bf8a4dccc5..47c3ec8d9ac 100644 --- a/htdocs/langs/lv_LV/users.lang +++ b/htdocs/langs/lv_LV/users.lang @@ -132,4 +132,3 @@ ShowAllPerms=Rādīt visas atļauju rindas HideAllPerms=Slēpt visas atļauju rindas UserPublicPageDesc=Šim lietotājam varat iespējot virtuālo karti. Būs pieejams URL ar lietotāja profilu un svītrkodu, lai ikviens, kam ir viedtālrunis, varētu to skenēt un pievienot jūsu kontaktpersonu savai adrešu grāmatai. EnablePublicVirtualCard=Iespējot publisko virtuālo lietotāja karti -PublicVirtualCardUrl=Publiskā virtuālā lietotāja karte diff --git a/htdocs/langs/nb_NO/admin.lang b/htdocs/langs/nb_NO/admin.lang index cd5f19e37ed..3072281ce19 100644 --- a/htdocs/langs/nb_NO/admin.lang +++ b/htdocs/langs/nb_NO/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Sjekkbokser ExtrafieldCheckBoxFromList=Avkrysningsbokser fra tabell ExtrafieldLink=Lenke til et objekt ComputedFormula=Beregnet felt -ComputedFormulaDesc=Du kan legge inn en formel her ved hjelp av andre egenskaper for objekt eller hvilken som helst PHP-koding for å få en dynamisk beregnet verdi. Du kan bruke alle PHP-kompatible formler, inkludert "?" tilstandsoperatør, og følgende globale objekt: $db, $conf, $langs, $mysoc, $user, $object .
ADVARSEL : Bare noen egenskaper for $-objekt kan være tilgjengelige. Hvis du trenger egenskaper som ikke er lastet, er det bare å hente objektet i formelen som i det andre eksemplet.
Ved å bruke et beregnet felt betyr det at du ikke kan skrive inn noen verdi fra grensesnittet. Og, hvis det er en syntaksfeil, kan det hende formelen ikke returnerer noe.

Eksempel på formel:
$object-> id < 10 ? round($object->id / 2, 2): ($object-> id + 2 * $user-> id) * (int) substr($mysoc-> zip, 1, 2 )

Eksempel på å laste inn objekt
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

Et annet eksempel på formel for å tvinge objektets belastning og dets overordnede objekt:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Overordnet prosjekt ikke funnet' +ComputedFormulaDesc=Her kan du angi en formel ved å bruke andre egenskaper til objektet eller en hvilken som helst PHP-koding for å få en dynamisk beregnet verdi. Du kan bruke alle PHP-kompatible formler inkludert "?" betingelsesoperator og følgende globale objekt: $db, $conf, $langs, $mysoc, $user, $objectoffield.
WARNING: Hvis du trenger egenskapene til et objekt som ikke er lastet, kan du bare hente objektet inn i formelen din som i det andre eksempelet.
Å bruke et beregnet felt betyr at du ikke kan angi noen verdi fra grensesnittet. Dessuten, hvis det er en syntaksfeil, kan det hende at formelen ikke returnerer noe.

Eksempel på formel:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Eksempel for å laste inn objektet på nytt
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->id) > 0 ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1')

Annet eksempel på formel for å tvinge inn lasting av objektet og dets overordnede objekt:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Lagre beregnede felt ComputedpersistentDesc=Beregnede ekstrafelt vil bli lagret i databasen, men verdien blir bare omregnet når objektet til dette feltet endres. Hvis det beregnede feltet avhenger av andre objekter eller globale data, kan denne verdien være feil! ExtrafieldParamHelpPassword=Hvis dette feltet er tomt, vil denne verdien bli lagret uten kryptering (feltet må bare skjules med stjerne på skjermen).
Angi 'auto' for å bruke standard krypteringsregel for å lagre passordet i databasen (da vil verdiavlesning være bare hash, uten noen måte å hente opprinnelig verdi på) @@ -704,8 +704,10 @@ Module62000Name=Incotermer Module62000Desc=Legg til egenskaper for å administrere Incoterm Module63000Name=Ressurser Module63000Desc=Administrer ressurser (skrivere, biler, rom, ...) for tildeling til arrangementer +Module66000Name=Aktiver OAuth2-autentisering +Module66000Desc=Gi et verktøy for å generere og administrere OAuth2-tokens. Tokenet kan da brukes av noen andre moduler. Module94160Name=Mottak -Permission11=Vis kundefakturaer +Permission11=Les kundefakturaer (og betalinger) Permission12=Opprett/endre kundefakturaer Permission13=Ugyldiggjør kundefakturaer Permission14=Valider kundefakturaer @@ -947,7 +949,7 @@ Permission1190=Godkjenn (andre godkjenning) innkjøpsordre Permission1191=Eksporter leverandørordre og deres attributter Permission1201=Resultat av en eksport Permission1202=Opprett/endre eksport -Permission1231=Les leverandørfakturaer +Permission1231=Les leverandørfakturaer (og betalinger) Permission1232=Opprett/endre leverandørfakturaer Permission1233=Valider leverandørfakturaer Permission1234=Slett leverandørfakturaer @@ -1234,7 +1236,7 @@ SetupDescription4=%s -> %s

Denne programvaren er en ser SetupDescription5=Annet oppsett menyoppføringer styrer valgfrie parametere. SetupDescriptionLink=%s - %s SetupDescription3b=Grunnleggende parametere som brukes til å tilpasse standardoppførselen til applikasjonen din (f.eks. for landsrelaterte funksjoner). -SetupDescription4b=Denne programvaren er en pakke med mange moduler/applikasjoner. Modulene relatert til dine behov må aktiveres og konfigureres. Menyoppføringer vil vises med aktivering av disse modulene. +SetupDescription4b=Denne programvaren er en pakke med mange moduler/applikasjoner. Modulene knyttet til dine behov må aktiveres. Menyoppføringer vil vises med aktivering av disse modulene. AuditedSecurityEvents=Sikkerhetshendelser som blir revidert NoSecurityEventsAreAduited=Ingen sikkerhetshendelser blir revidert. Du kan aktivere dem fra meny %s Audit=Sikkerhetshendelser @@ -2366,3 +2368,7 @@ MaxNumberOfAttachementOnForms=Maks antall sammenføyde filer i et skjema IfDefinedUseAValueBeetween=Hvis definert, bruk en verdi mellom %s og %s Reload=Last inn på nytt ConfirmReload=Bekreft modulinnlasting +WarningModuleHasChangedLastVersionCheckParameter=Advarsel: modulen %s har satt en parameter for å sjekke versjonen ved hver sidetilgang. Dette er en dårlig og ikke tillatt praksis som kan gjøre siden for å administrere moduler ustabil. Ta kontakt med forfatteren av modulen for å fikse dette. +WarningModuleHasChangedSecurityCsrfParameter=Advarsel: modulen %s har deaktivert CSRF-sikkerheten til forekomsten din. Denne handlingen er mistenkelig, og installasjonen din er kanskje ikke lenger sikret. Ta kontakt med forfatteren av modulen for forklaring. +EMailsInGoingDesc=Innkommende e-poster administreres av modulen %s. Du må aktivere og konfigurere den hvis du trenger å støtte inngående e-post. +MAIN_IMAP_USE_PHPIMAP=Bruk PHP-IMAP-biblioteket for IMAP i stedet for opprinnelig PHP IMAP. Dette tillater også bruk av en OAuth2-tilkobling for IMAP (modul OAuth må også være aktivert). diff --git a/htdocs/langs/nb_NO/agenda.lang b/htdocs/langs/nb_NO/agenda.lang index be3715279f4..5a4d68a2cd2 100644 --- a/htdocs/langs/nb_NO/agenda.lang +++ b/htdocs/langs/nb_NO/agenda.lang @@ -177,5 +177,6 @@ ReminderType=Tilbakekallingstype AddReminder=Opprett et automatisk varsel for denne hendelsen ErrorReminderActionCommCreation=Feil ved oppretting av varselet for denne hendelsen BrowserPush=Varsling om nettleser-popup +Reminders=Påminnelser ActiveByDefault=Aktivert som standard Until=til diff --git a/htdocs/langs/nb_NO/banks.lang b/htdocs/langs/nb_NO/banks.lang index e4d7e342837..f4795eb03a9 100644 --- a/htdocs/langs/nb_NO/banks.lang +++ b/htdocs/langs/nb_NO/banks.lang @@ -49,6 +49,9 @@ BankAccountDomiciliation=Bankadresse BankAccountCountry=Konto land BankAccountOwner=Kontoeier BankAccountOwnerAddress=Kontoeiers adresse +BankAccountOwnerZip=Kontoeier postnummer +BankAccountOwnerTown=Kontoeier by +BankAccountOwnerCountry=Kontoeier land CreateAccount=Opprett konto NewBankAccount=Ny konto NewFinancialAccount=Ny hovedbokskonto diff --git a/htdocs/langs/nb_NO/dict.lang b/htdocs/langs/nb_NO/dict.lang index 829b35dbca2..bf9c185fae2 100644 --- a/htdocs/langs/nb_NO/dict.lang +++ b/htdocs/langs/nb_NO/dict.lang @@ -247,6 +247,7 @@ CountryJE=Jersey CountryME=Montenegro CountryBL=Saint-Barthélemy CountryMF=Saint Martin +CountryXK=Kosovo ##### Civilities ##### CivilityMME=Fru diff --git a/htdocs/langs/nb_NO/errors.lang b/htdocs/langs/nb_NO/errors.lang index 42d4270db4a..ed5e53e5c6d 100644 --- a/htdocs/langs/nb_NO/errors.lang +++ b/htdocs/langs/nb_NO/errors.lang @@ -304,6 +304,11 @@ ErrorValueCantBeNull=Verdien for %s kan ikke være null ErrorDateOfMovementLowerThanDateOfFileTransmission=Datoen for banktransaksjonen kan ikke være lavere enn datoen for filoverføringen ErrorTooMuchFileInForm=For mange filer i skjemaet, maksimalt antall er %s fil(er) ErrorSessionInvalidatedAfterPasswordChange=Økten ble ugyldig etter endring av passord, status eller gyldighetsdato. Logg på på nytt. +ErrorExistingPermission = Tillatelse %s for objekt %s finnes allerede +ErrorFieldExist=Verdien for %s finnes allerede +ErrorEqualModule=Modulen er ugyldig i %s +ErrorFieldValue=Verdien for %s er feil +ErrorCoherenceMenu= %s er nødvendig når % er lik VENSTRE # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=PHP-parameteren upload_max_filesize (%s) er høyere enn PHP-parameteren post_max_size (%s). Dette er ikke et konsistent oppsett. @@ -342,6 +347,7 @@ WarningPaypalPaymentNotCompatibleWithStrict=Verdien 'Strict' gjør at betalingsf WarningThemeForcedTo=Advarsel, tema har blitt tvunget til %s av skjult konstant MAIN_FORCETHEME WarningPagesWillBeDeleted=Advarsel, dette vil også slette alle eksisterende sider/beholdere på nettstedet. Du bør eksportere nettstedet ditt før, så du har en sikkerhetskopi for å reimportere den senere. WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal=Automatisk validering er deaktivert når alternativet for å redusere beholdning er satt på "Fakturavalidering". +WarningModuleNeedRefrech = Modul %s er deaktivert. Ikke glem å aktivere den # Validate RequireValidValue = Verdien er ikke gyldig diff --git a/htdocs/langs/nb_NO/install.lang b/htdocs/langs/nb_NO/install.lang index 4605a2e999d..01844a79471 100644 --- a/htdocs/langs/nb_NO/install.lang +++ b/htdocs/langs/nb_NO/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Konfigurasjonsfil %s er ikke skrivbar. Sjekk tillat ConfFileIsWritable=Konfigurasjonsfil %s er skrivbar. ConfFileMustBeAFileNotADir=Konfigurasjonsfil %s må være en fil, ikke en katalog. ConfFileReload=Laster parametere fra konfigurasjonsfilen på nytt. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=Konfigurasjonsfilen conf/conf.php eksisterer ikke eller er ikke lesbar. Vi kjører installasjonsprosessen for å prøve å initialisere den. PHPSupportPOSTGETOk=Dette PHP støtter variablene POST og GET. PHPSupportPOSTGETKo=Det er mulig at ditt PHP-oppsett ikke støtter variablene POST og/eller GET. Sjekk parametrene variables_order i php.ini. PHPSupportSessions=Denne PHP støtter sesjoner. @@ -24,11 +24,11 @@ ErrorWrongValueForParameter=Du har kanskje skrevet feil verdi for parameteren '% ErrorFailedToCreateDatabase=Kunne ikke opprette database '%s'. ErrorFailedToConnectToDatabase=Kunne ikke koble til database '%s'. ErrorDatabaseVersionTooLow=Databaseversjonen (%s) er for gammel. Versjon %s eller senere kreves -ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. -ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. +ErrorPHPVersionTooLow=PHP-versjonen er for gammel. Versjon %s eller høyere kreves. +ErrorPHPVersionTooHigh=PHP-versjonen er for høy. Versjon %s eller lavere kreves. ErrorConnectedButDatabaseNotFound=Tilkobling til server vellykket, men database '%s' ikke funnet. ErrorDatabaseAlreadyExists=Database '%s' finnes allerede. -ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions +ErrorNoMigrationFilesFoundForParameters=Fant ingen migreringsfil for de valgte versjonene IfDatabaseNotExistsGoBackAndUncheckCreate=Hvis databasen ikke finnes, gå tilbake og kryss av alternativet "Opprett database". IfDatabaseExistsGoBackAndCheckCreate=Hvis databasen allerede eksisterer, gå tilbake og fjern "Opprett database" alternativet. WarningBrowserTooOld=Nettleseren din er utdatert. Det anbefales å oppgradere til siste versjon av Firefox, Chrome eller Opera. @@ -51,7 +51,6 @@ DatabaseName=Databasenavn DatabasePrefix=Database tabellprefiks DatabasePrefixDescription=Database tabellprefiks. Hvis tom, er standardinnstillingen llx_. AdminLogin=Brukerkonto for Dolibarr databaseeier. -PasswordAgain=Skriv inn passordbekreftelsen på nytt AdminPassword=Passord for Dolibarr databaseeier. CreateDatabase=Opprett database CreateUser=Opprett brukerkonto eller gi tillatelse til brukerkonto til Dolibarr-databasen @@ -89,7 +88,7 @@ LoginAlreadyExists=Finnes allerede DolibarrAdminLogin=Dolibarr admin login AdminLoginAlreadyExists=Dolibarr administratorkonto ' %s ' finnes allerede. Gå tilbake hvis du vil opprette en annen. FailedToCreateAdminLogin=Klarte ikke å opprette Dolibarr administratorkonto -WarningRemoveInstallDir=Advarsel, av sikkerhetsgrunner, når installasjonen eller oppgraderingen er fullført, bør du legge til en fil kalt install.lock i Dolibarr-dokumentmappen for å forhindre utilsiktet/ondsinnet bruk av installeringsverktøyene igjen. +WarningRemoveInstallDir=Advarsel, av sikkerhetsgrunner, når installasjonsprosessen er fullført, må du legge til en fil kalt install.lock i Dolibarr-dokumentkatalogen for å forhindre utilsiktet/ondsinnet bruk av installasjonsverktøyene igjen. FunctionNotAvailableInThisPHP=Ikke tilgjengelig på denne PHP ChoosedMigrateScript=Velg migrasjonscript DataMigration=Database migrasjon (data) @@ -209,7 +208,12 @@ HideNotAvailableOptions=Skjul utilgjengelige alternativer ErrorFoundDuringMigration=Feil ble rapportert under migreringsprosessen, slik at neste trinn ikke er tilgjengelig. For å ignorere feil kan du klikke her , men programmet eller noen funksjoner fungerer kanskje ikke riktig før feilene er løst. YouTryInstallDisabledByDirLock=Programmet prøvde å oppgradere selv, men installerings- / oppgraderingssidene er deaktivert for sikkerhet (katalog omdøpt med .lock-suffiks).
YouTryInstallDisabledByFileLock=Programmet prøvde å oppgradere selv, men installerings- / oppgraderingssidene er deaktivert for sikkerhet (ved eksistensen av en låsfil install.lock i dolibarr-dokumenter katalogen).
+YouTryUpgradeDisabledByMissingFileUnLock=Applikasjonen prøvde å selvoppgradere, men oppgraderingsprosessen er foreløpig ikke tillatt.
ClickHereToGoToApp=Klikk her for å gå til din applikasjon ClickOnLinkOrRemoveManualy=Vennligst vent hvis en oppgradering pågår. Hvis ikke, klikk på følgende lenke. Hvis du alltid ser den samme siden, må du fjerne/gi nytt navn til filen install.lock i dokumentkatalogen. +ClickOnLinkOrCreateUnlockFileManualy=Hvis en oppgradering pågår, vennligst vent... Hvis ikke, må du opprette en fil upgrade.unlock i Dolibarr-dokumentkatalogen. Loaded=Lastet FunctionTest=Funksjonstest +NodoUpgradeAfterDB=Ingen handling forespurt av eksterne moduler etter oppgradering av database +NodoUpgradeAfterFiles=Ingen handling forespurt av eksterne moduler etter oppgradering av filer eller kataloger +MigrationContractLineRank=Migrer kontraktslinje for å bruke rangering (og aktiver ombestilling) diff --git a/htdocs/langs/nb_NO/main.lang b/htdocs/langs/nb_NO/main.lang index e6b80ec284c..211d485db58 100644 --- a/htdocs/langs/nb_NO/main.lang +++ b/htdocs/langs/nb_NO/main.lang @@ -923,6 +923,7 @@ NotAllExportedMovementsCouldBeRecordedAsExported=Ikke alle eksporterte bevegelse Miscellaneous=Diverse Calendar=Kalender GroupBy=Grupper etter... +GroupByX=Grupper etter %s ViewFlatList=Vis liste ViewAccountList=Vis hovedbok ViewSubAccountList=Vis underkonto hovedbok @@ -1222,3 +1223,5 @@ AddToContacts=Legg til adresse i kontaktene mine LastAccess=Siste tilgang UploadAnImageToSeeAPhotoHere=Last opp et bilde fra fanen %s for å se et bilde her LastPasswordChangeDate=Dato for siste endring av passord +PublicVirtualCardUrl=Virtuell visittkortside +TreeView=Trevisning diff --git a/htdocs/langs/nb_NO/members.lang b/htdocs/langs/nb_NO/members.lang index 07da6648c7b..2ba247470a5 100644 --- a/htdocs/langs/nb_NO/members.lang +++ b/htdocs/langs/nb_NO/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=Bidragsstatistikk NbOfSubscriptions=Antall bidrag AmountOfSubscriptions=Beløp samlet inn fra bidrag TurnoverOrBudget=Omsetning (for et selskap) eller Budsjett (for en organisasjon) -DefaultAmount=Standard bidragsbeløp +DefaultAmount=Standard bidragsbeløp (brukes bare hvis ingen beløp er definert på medlemstypenivå) +MinimumAmount=Minimumsbeløp (brukes bare når bidragsbeløpet er gratis) CanEditAmount=Abonnementsbeløpet er gratis CanEditAmountDetail=Besøkende kan velge/redigere beløpet for sitt bidrag uavhengig av medlemstype AmountIsLowerToMinimumNotice=Totalt forfall på %s diff --git a/htdocs/langs/nb_NO/modulebuilder.lang b/htdocs/langs/nb_NO/modulebuilder.lang index e27845018d3..bdbe28d93e9 100644 --- a/htdocs/langs/nb_NO/modulebuilder.lang +++ b/htdocs/langs/nb_NO/modulebuilder.lang @@ -165,3 +165,11 @@ BadValueForType=Feil verdi for type %s DefinePropertiesFromExistingTable=Definer egenskaper fra en eksisterende tabell DefinePropertiesFromExistingTableDesc=Hvis en tabell i databasen (for objektet som skal opprettes) allerede eksisterer, kan du bruke den til å definere egenskapene til objektet. DefinePropertiesFromExistingTableDesc2=Hold tom hvis tabellen ikke eksisterer ennå. Kodegeneratoren vil bruke forskjellige typer felt for å bygge et eksempel på en tabell som du kan redigere senere. +GeneratePermissions=Jeg vil legge til rettighetene for dette objektet +GeneratePermissionsHelp=generer standardrettigheter for dette objektet +PermissionDeletedSuccesfuly=Tillatelsen er fjernet +PermissionUpdatedSuccesfuly=Tillatelsen er oppdatert +PermissionAddedSuccesfuly=Tillatelsen er lagt til +MenuDeletedSuccessfuly=Menyen er slettet +MenuAddedSuccessfuly=Menyen er lagt til +MenuUpdatedSuccessfuly=Menyen har blitt oppdatert diff --git a/htdocs/langs/nb_NO/oauth.lang b/htdocs/langs/nb_NO/oauth.lang index 81368517bff..9e2b8dbdf00 100644 --- a/htdocs/langs/nb_NO/oauth.lang +++ b/htdocs/langs/nb_NO/oauth.lang @@ -9,13 +9,14 @@ HasAccessToken=En nøkkel ble generert og lagret i lokal database NewTokenStored=Nøkkel mottatt og lagret ToCheckDeleteTokenOnProvider=Klikk her for å hake av/slette autorisasjon lagret av %s OAuth-leverandør TokenDeleted=Nøkkel slettet -RequestAccess=Click here to request/renew access and receive a new token -DeleteAccess=Klikk her for å slette nøkkel +GetAccess=Klikk her for å få et token +RequestAccess=Klikk her for å be om/fornye tilgang og motta et nytt token +DeleteAccess=Klikk her for å slette tokenet UseTheFollowingUrlAsRedirectURI=Bruk følgende URL som redirect-URL når du lager din legitimasjon hos din OAuth tilbyder -ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. -OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens +ListOfSupportedOauthProviders=Legg til OAuth2-tokenleverandørene dine. Gå deretter til OAuth-leverandørens admin-side for å opprette/få en OAuth-ID og Secret og lagre dem her. Når du er ferdig, slår du på den andre fanen for å generere tokenet ditt. +OAuthSetupForLogin=Side for å administrere (generere/slette) OAuth-tokens SeePreviousTab=Se forrige fane -OAuthProvider=OAuth provider +OAuthProvider=OAuth-leverandør OAuthIDSecret=OAuth ID og hemmelig spørsmål TOKEN_REFRESH=Nøkkeloppfriskning tilstede TOKEN_EXPIRED=Nøkkel utgått @@ -27,10 +28,14 @@ OAUTH_GOOGLE_SECRET=OAuth Google Secret OAUTH_GITHUB_NAME=OAuth GitHub service OAUTH_GITHUB_ID=OAuth GitHub ID OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret +OAUTH_URL_FOR_CREDENTIAL=Gå til denne siden for å opprette eller få din OAuth ID og Hemmelighet OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live -OAUTH_ID=OAuth ID -OAUTH_SECRET=OAuth secret -OAuthProviderAdded=OAuth provider added -AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists +OAUTH_ID=OAuth-klient-ID +OAUTH_SECRET=OAuth-hemmelighet +OAUTH_TENANT=OAuth-leier +OAuthProviderAdded=OAuth-leverandør lagt til +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Det finnes allerede en OAuth-oppføring for denne leverandøren og etiketten +URLOfServiceForAuthorization=URL levert av OAuth-tjenesten for autentisering +Scopes=Tillatelser (omfang) +ScopeUndefined=Tillatelser (omfang) udefinert (se forrige fane) diff --git a/htdocs/langs/nb_NO/users.lang b/htdocs/langs/nb_NO/users.lang index a81039928db..b16e59c4268 100644 --- a/htdocs/langs/nb_NO/users.lang +++ b/htdocs/langs/nb_NO/users.lang @@ -132,4 +132,3 @@ ShowAllPerms=Vis alle tillatelsesrader HideAllPerms=Skjul alle tillatelsesrader UserPublicPageDesc=Du kan aktivere et virtuelt kort for denne brukeren. En url med brukerprofilen og en strekkode vil være tilgjengelig slik at alle med en smarttelefon kan skanne den og legge til kontakten din i adresseboken. EnablePublicVirtualCard=Aktiver det offentlige virtuelle brukerkortet -PublicVirtualCardUrl=Offentlig virtuelt brukerkort diff --git a/htdocs/langs/nl_BE/admin.lang b/htdocs/langs/nl_BE/admin.lang index 82330f1518e..89d82008a7c 100644 --- a/htdocs/langs/nl_BE/admin.lang +++ b/htdocs/langs/nl_BE/admin.lang @@ -183,7 +183,6 @@ NewVATRates=Nieuw BTW tarief PriceBaseTypeToChange=Wijzig op prijzen waarop een base reference waarde gedefiniëerd is MassConvert=Start bulkconversie Boolean=Boolean (één selectievakje) -ExtrafieldPriceWithCurrency=Prijs met valuta ExtrafieldUrl =url ExtrafieldSeparator=Separator (geen veld) ExtrafieldPassword=Paswoord @@ -249,7 +248,5 @@ MailToSendReception=Ontvangen MailToExpenseReport=Uitgaven rapporten MailToThirdparty=Klant AddBoxes=Widgets toevoegen -OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a company name from email subject into a temporary variable:
tmp_var=EXTRACT:SUBJECT:Message from company ([^\n]*)

Examples to set the properties of an object to create:
objproperty1=SET:a hard coded value
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (value is set only if property is not already defined)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. GeneralOptions=Algemene opties ExportSetup=Installatie van module Exporteren -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
diff --git a/htdocs/langs/nl_NL/accountancy.lang b/htdocs/langs/nl_NL/accountancy.lang index a7da8ab21a4..cf230b6cafe 100644 --- a/htdocs/langs/nl_NL/accountancy.lang +++ b/htdocs/langs/nl_NL/accountancy.lang @@ -14,8 +14,8 @@ ACCOUNTING_EXPORT_ENDLINE=Selecteer het nieuwe regel type ACCOUNTING_EXPORT_PREFIX_SPEC=Specificeer de prefix voor de bestandsnaam ThisService=Deze dienst ThisProduct=Dit product -DefaultForService=Default for services -DefaultForProduct=Default for products +DefaultForService=Standaard voor services +DefaultForProduct=Standaard voor producten ProductForThisThirdparty=Product voor deze relatie ServiceForThisThirdparty=Service voor deze relatie CantSuggest=Geen suggestie @@ -101,8 +101,8 @@ ShowAccountingAccount=Toon grootboekrekening ShowAccountingJournal=Toon dagboek ShowAccountingAccountInLedger=Grootboekrekening in grootboek ShowAccountingAccountInJournals=Laat grootboekrekening zien in journaals -DataUsedToSuggestAccount=Data used to suggest account -AccountAccountingSuggest=Account suggested +DataUsedToSuggestAccount=Gegevens die worden gebruikt om een account voor te stellen +AccountAccountingSuggest=Rekening voorgesteld MenuDefaultAccounts=Standaard GB-rekeningen MenuBankAccounts=Bankrekeningen MenuVatAccounts=BTW rekeningen @@ -127,7 +127,7 @@ WriteBookKeeping=Boek transacties in de boekhouding Bookkeeping=Grootboek BookkeepingSubAccount=Sub-grootboek AccountBalance=Balans -AccountBalanceSubAccount=Sub-accounts balance +AccountBalanceSubAccount=Saldo subrekeningen ObjectsRef=Ref. bron-object CAHTF=Totaal inkoop leverancier excl. BTW TotalExpenseReport=Totaal resultaatrekening kosten @@ -180,32 +180,32 @@ ACCOUNTING_RESULT_PROFIT=Resultaat grootboekrekening (winst) ACCOUNTING_RESULT_LOSS=Resultaat grootboekrekening (Verlies) ACCOUNTING_CLOSURE_DEFAULT_JOURNAL=Afsluiten journaal -ACCOUNTING_ACCOUNT_TRANSFER_CASH=Account (from the Chart Of Account) to be used as the account for transitional bank transfers +ACCOUNTING_ACCOUNT_TRANSFER_CASH=Rekening (uit het rekeningschema) die moet worden gebruikt als rekening voor tijdelijke bankoverschrijvingen TransitionalAccount=Overgangsrekening -ACCOUNTING_ACCOUNT_SUSPENSE=Account (from the Chart Of Account) to be used as the account for unallocated funds either received or paid i.e. funds in "wait[ing]" -DONATION_ACCOUNTINGACCOUNT=Account (from the Chart Of Account) to be used to register donations (Donation module) -ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Account (from the Chart Of Account) to be used to register memberships subscriptions (Membership module - if membership recorded without invoice) +ACCOUNTING_ACCOUNT_SUSPENSE=Rekening (uit het rekeningschema) die moet worden gebruikt als de rekening voor ontvangen of betaalde niet-toegewezen fondsen, d.w.z. fondsen in "wachten" +DONATION_ACCOUNTINGACCOUNT=Rekening (uit het Rekeningschema) voor het registreren van donaties (Donatiemodule) +ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Rekening (uit het Rekeningschema) te gebruiken om abonnementen op lidmaatschappen te registreren (Lidmaatschapsmodule - indien lidmaatschap geregistreerd zonder factuur) -ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Account (from the Chart Of Account) to be used as the default account to register customer deposit +ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Rekening (uit het Rekeningschema) die moet worden gebruikt als de standaardrekening om deposito's van klanten te registreren UseAuxiliaryAccountOnCustomerDeposit=Klantrekening opslaan als individuele rekening in subgrootboek voor vooruitbetalingsregels (indien uitgeschakeld, blijft individuele rekening voor vooruitbetalingsregels leeg) -ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT=Account (from the Chart Of Account) to be used as the default +ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT=Rekening (uit het Rekeningschema) als standaard te gebruiken UseAuxiliaryAccountOnSupplierDeposit=Leveranciersrekening opslaan als individuele rekening in subgrootboek voor vooruitbetalingsregels (indien uitgeschakeld, blijft individuele rekening voor vooruitbetalingsregels leeg) -ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY=Accounting account by default to register customer retained warranty +ACCOUNTING_ACCOUNT_CUSTOMER_RETAINED_WARRANTY=Boekhoudingsaccount standaard om de door de klant behouden garantie te registreren -ACCOUNTING_PRODUCT_BUY_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products purchased within same country (used if not defined in the product sheet) -ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products purchased from EEC to another EEC country (used if not defined in the product sheet) -ACCOUNTING_PRODUCT_BUY_EXPORT_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products purchased and imported from any other foreign country (used if not defined in the product sheet) -ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the sold products (used if not defined in the product sheet) -ACCOUNTING_PRODUCT_SOLD_INTRA_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products sold from EEC to another EEC country (used if not defined in the product sheet) -ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the products sold and exported to any other foreign country (used if not defined in the product sheet) +ACCOUNTING_PRODUCT_BUY_ACCOUNT=Rekening (uit het rekeningschema) te gebruiken als de standaardrekening voor de producten die in hetzelfde land zijn gekocht (gebruikt indien niet gedefinieerd in het productblad) +ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Rekening (uit het rekeningschema) te gebruiken als de standaardrekening voor de producten die van de EEG naar een ander EEG-land worden gekocht (gebruikt indien niet gedefinieerd in het productblad) +ACCOUNTING_PRODUCT_BUY_EXPORT_ACCOUNT=Rekening (uit het rekeningschema) te gebruiken als de standaardrekening voor de producten die zijn gekocht en geïmporteerd uit een ander buitenland (gebruikt indien niet gedefinieerd in het productblad) +ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Rekening (uit het Rekeningschema) te gebruiken als de standaardrekening voor de verkochte producten (gebruikt indien niet gedefinieerd in het productblad) +ACCOUNTING_PRODUCT_SOLD_INTRA_ACCOUNT=Rekening (uit het rekeningschema) te gebruiken als de standaardrekening voor de producten die vanuit de EEG naar een ander EEG-land worden verkocht (gebruikt indien niet gedefinieerd in het productblad) +ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT=Rekening (uit het Rekeningschema) te gebruiken als de standaardrekening voor de producten die worden verkocht en geëxporteerd naar een ander buitenland (gebruikt indien niet gedefinieerd in het productblad) -ACCOUNTING_SERVICE_BUY_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the services purchased within same country (used if not defined in the service sheet) -ACCOUNTING_SERVICE_BUY_INTRA_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the services purchased from EEC to another EEC country (used if not defined in the service sheet) -ACCOUNTING_SERVICE_BUY_EXPORT_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the services purchased and imported from other foreign country (used if not defined in the service sheet) -ACCOUNTING_SERVICE_SOLD_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the sold services (used if not defined in the service sheet) -ACCOUNTING_SERVICE_SOLD_INTRA_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the services sold from EEC to another EEC country (used if not defined in the service sheet) -ACCOUNTING_SERVICE_SOLD_EXPORT_ACCOUNT=Account (from the Chart Of Account) to be used as the default account for the services sold and exported to any other foreign country (used if not defined in the service sheet) +ACCOUNTING_SERVICE_BUY_ACCOUNT=Rekening (uit het rekeningschema) te gebruiken als de standaardrekening voor de diensten die in hetzelfde land zijn gekocht (gebruikt indien niet gedefinieerd in het serviceblad) +ACCOUNTING_SERVICE_BUY_INTRA_ACCOUNT=Rekening (uit het rekeningschema) te gebruiken als de standaardrekening voor de diensten die van de EEG naar een ander EEG-land worden gekocht (gebruikt indien niet gedefinieerd in het serviceblad) +ACCOUNTING_SERVICE_BUY_EXPORT_ACCOUNT=Rekening (uit het rekeningschema) te gebruiken als de standaardrekening voor de diensten die zijn gekocht en geïmporteerd uit een ander buitenland (gebruikt indien niet gedefinieerd in het serviceblad) +ACCOUNTING_SERVICE_SOLD_ACCOUNT=Rekening (uit het Rekeningschema) te gebruiken als de standaardrekening voor de verkochte diensten (gebruikt indien niet gedefinieerd in het serviceblad) +ACCOUNTING_SERVICE_SOLD_INTRA_ACCOUNT=Rekening (uit het rekeningschema) te gebruiken als de standaardrekening voor de diensten die vanuit de EEG naar een ander EEG-land worden verkocht (gebruikt indien niet gedefinieerd in het serviceblad) +ACCOUNTING_SERVICE_SOLD_EXPORT_ACCOUNT=Rekening (van het Rekeningschema) te gebruiken als de standaardrekening voor de diensten die worden verkocht en geëxporteerd naar een ander buitenland (gebruikt indien niet gedefinieerd in het serviceblad) Doctype=Type of document Docdate=Date @@ -220,8 +220,8 @@ Codejournal=Journaal JournalLabel=Journaal label NumPiece=Boekingstuk TransactionNumShort=Transactienummer -AccountingCategory=Custom group of accounts -AccountingCategories=Custom groups of accounts +AccountingCategory=Aangepaste groep accounts +AccountingCategories=Aangepaste groepen accounts GroupByAccountAccounting=Groeperen op grootboekrekening GroupBySubAccountAccounting=Groepeer op subgrootboekrekening AccountingAccountGroupsDesc=Hier kunt u enkele grootboekrekening-groepen definiëren. Deze worden gebruikt voor gepersonaliseerde boekhoudrapporten. @@ -269,20 +269,20 @@ ShowSubtotalByGroup=Toon subtotaal op niveau Pcgtype=Rekening hoofdgroep PcgtypeDesc=Cluster grootboekrekeningen welke gebruikt worden als vooraf gedefinieerde 'filter'- en' groepeer'-criteria voor sommige boekhoudrapporten. 'INKOMEN' of 'UITGAVEN' worden bijvoorbeeld gebruikt als groepen voor boekhoudrekeningen van producten om het kosten- / inkomstenrapport samen te stellen. -AccountingCategoriesDesc=Custom group of accounts can be used to group accounting accounts into one name to ease filter use or building of custom reports. +AccountingCategoriesDesc=Aangepaste groep rekeningen kan worden gebruikt om boekhoudrekeningen onder één naam te groeperen om het gebruik van filters of het maken van aangepaste rapporten te vergemakkelijken. Reconcilable=Samentrekken TotalVente=Total turnover before tax TotalMarge=Total sales margin -DescVentilCustomer=Consult here the list of customer invoice lines bound (or not) to a product account from chart of account -DescVentilMore=In most cases, if you use predefined products or services and you set the account (from chart of account) on the product/service card, the application will be able to make all the binding between your invoice lines and the accounting account of your chart of accounts, just in one click with the button "%s". If account was not set on product/service cards or if you still have some lines not bound to an account, you will have to make a manual binding from the menu "%s". -DescVentilDoneCustomer=Consult here the list of the lines of invoices customers and their product account from chart of account -DescVentilTodoCustomer=Bind invoice lines not already bound with a product account from chart of account -ChangeAccount=Change the product/service account (from chart of account) for the selected lines with the following account: +DescVentilCustomer=Raadpleeg hier de lijst met klantfactuurregels die al dan niet gebonden zijn aan een productrekening uit het rekeningschema +DescVentilMore=In de meeste gevallen, als u vooraf gedefinieerde producten of diensten gebruikt en u de rekening (vanuit het rekeningschema) instelt op de product-/dienstkaart, kan de applicatie alle binding tussen uw factuurregels en de boekhoudrekening van uw grafiek maken van accounts, met slechts één klik met de knop "%s" . Als er geen account is ingesteld op product-/servicekaarten of als u nog steeds enkele regels hebt die niet aan een account zijn gebonden, moet u een handmatige binding maken vanuit het menu " %s ". +DescVentilDoneCustomer=Raadpleeg hier de lijst met factuurregels van klanten en hun productrekening uit het rekeningschema +DescVentilTodoCustomer=Bind factuurregels die nog niet zijn gebonden met een productrekening vanuit het rekeningschema +ChangeAccount=Wijzig de product-/dienstrekening (uit rekeningschema) voor de geselecteerde regels met de volgende rekening: Vide=- -DescVentilSupplier=Consult here the list of vendor invoice lines bound or not yet bound to a product account from chart of account (only record not already transfered in accountancy are visible) +DescVentilSupplier=Raadpleeg hier de lijst met leveranciersfactuurregels die al dan niet gebonden zijn aan een productrekening uit het rekeningschema (alleen records die nog niet in de boekhouding zijn overgezet zijn zichtbaar) DescVentilDoneSupplier=Raadpleeg hier de regels van de leveranciers facturen en hun tegenrekening DescVentilTodoExpenseReport=Koppel kosten-boekregels aan grootboekrekeningen welke nog niet zijn vastgelegd DescVentilExpenseReport=Hier kunt u de lijst raadplegen van kostenregels om te koppelen aan een grootboekrekening (of niet). @@ -299,16 +299,16 @@ DescValidateMovements=Elke wijziging of verwijdering van inboeken, afletteren en ValidateHistory=Automatisch afstemmen AutomaticBindingDone=Automatische bindings uitgevoerd (%s) - Automatische binding was niet mogelijk voor record (%s) -DoManualBindingForFailedRecord=You have to do a manual link for the %s row(s) not linked automatically. +DoManualBindingForFailedRecord=U moet een handmatige koppeling maken voor de %s rij(en) die niet automatisch zijn gekoppeld. -ErrorAccountancyCodeIsAlreadyUse=Error, you cannot remove or disable this account of chart of account because it is used +ErrorAccountancyCodeIsAlreadyUse=Fout, u kunt deze rekening of rekeningschema niet verwijderen of uitschakelen omdat deze wordt gebruikt MvtNotCorrectlyBalanced=Beweging niet correct gebalanceerd. Debet = %s & Credit = %s Balancing=Balansen FicheVentilation=Koppelen card GeneralLedgerIsWritten=Grootboek transacties GeneralLedgerSomeRecordWasNotRecorded=Sommige transacties konden niet worden doorgeboekt. Als er geen andere foutmelding is, komt dit waarschijnlijk omdat ze reeds zijn doorgeboekt. NoNewRecordSaved=Geen record meer om over te zetten -ListOfProductsWithoutAccountingAccount=List of products not bound to any account of chart of account +ListOfProductsWithoutAccountingAccount=Lijst van producten die niet gebonden zijn aan enige rekening of rekeningschema ChangeBinding=Wijzig koppeling Accounted=Geboekt in grootboek NotYetAccounted=Nog niet overgezet naar boekhouding @@ -343,13 +343,13 @@ ACCOUNTING_DISABLE_BINDING_ON_SALES=Schakel het koppelen en doorboeken naar de b ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=Schakel het koppelen en doorboeken naar de boekhouding van inkopen uit (facturen van leveranciers worden niet doorgeboekt in de boekhouding) ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Schakel het koppelen en doorboeken naar de boekhouding van onkostendeclaraties uit (met onkostendeclaraties wordt geen rekening gehouden in de boekhouding) ACCOUNTING_ENABLE_LETTERING=Schakel de afletteren functie in de boekhouding in -ACCOUNTING_ENABLE_AUTOLETTERING=Enable the automatic lettering when transferring to accounting +ACCOUNTING_ENABLE_AUTOLETTERING=Schakel de automatische belettering in bij het overstappen naar de boekhouding ## Export NotExportLettering=Exporteer het afletteren niet bij het genereren van het bestand NotifiedExportDate=Geëxporteerde regels markeren als geëxporteerd (om een regel te wijzigen, moet u de hele transactie verwijderen en opnieuw in de boekhouding opnemen) NotifiedValidationDate=Valideer en vergrendel de geëxporteerde items (hetzelfde effect als de functie "%s", wijziging en verwijdering van de regels is ZEKER niet mogelijk) -NotifiedExportFull=Export documents ? +NotifiedExportFull=Documenten exporteren? DateValidationAndLock=Datum validatie en vergrendelen ConfirmExportFile=Bevestiging van het genereren van het boekhoudkundige exportbestand ? ExportDraftJournal=Journaal exporteren @@ -406,7 +406,7 @@ SaleLocal=Lokale verkoop SaleExport=Verkoop buitenland SaleEEC=Verkoop binnen de EU SaleEECWithVAT=Verkoop binnen de EU met een btw die niet nul is, dus we veronderstellen dat dit GEEN intracommunautaire verkoop is en de voorgestelde grootboekrekening het standaardproductaccount is. -SaleEECWithoutVATNumber=Sale in EEC with no VAT but the VAT ID of thirdparty is not defined. We fall back on the account for standard sales. You can fix the VAT ID of the thirdparty, or change the product account suggested for binding if needed. +SaleEECWithoutVATNumber=Verkoop in de EEG zonder btw, maar het btw-nummer van de derde partij is niet gedefinieerd. Voor standaardverkopen vallen we terug op de rekening. U kunt indien nodig het btw-nummer van de derde partij corrigeren of het productaccount wijzigen dat wordt voorgesteld om te binden. ForbiddenTransactionAlreadyExported=Niet toegestaan: De transactie is gevalideerd en/of geëxporteerd. ForbiddenTransactionAlreadyValidated=Niet toegestaan: De transactie is gevalideerd. ## Dictionary @@ -450,7 +450,7 @@ AccountancyErrorMismatchLetterCode=Mismatch in afstemmingscode AccountancyErrorMismatchBalanceAmount=Het saldo (%s) is niet gelijk aan 0 AccountancyErrorLetteringBookkeeping=Er zijn fouten opgetreden met betrekking tot de transacties: %s ErrorAccountNumberAlreadyExists=Het boekhoudnummer %s bestaat al -ErrorArchiveAddFile=Can't put "%s" file in archive +ErrorArchiveAddFile=Kan het bestand "%s" niet in het archief plaatsen ## Import ImportAccountingEntries=Boekingen @@ -477,7 +477,7 @@ FECFormatMulticurrencyCode=Multivalutacode (Idevise) DateExport=Exportdatum WarningReportNotReliable=Waarschuwing, dit rapport is niet gebaseerd op het grootboek, dus bevat het niet de transactie die handmatig in het grootboek is gewijzigd. Als uw journalisatie up-to-date is, is de weergave van de boekhouding nauwkeuriger. ExpenseReportJournal=Kostenoverzicht -DocsAlreadyExportedAreExcluded=Docs already exported are excluded -ClickToHideAlreadyExportedLines=Click to hide already exported lines +DocsAlreadyExportedAreExcluded=Reeds geëxporteerde documenten worden uitgesloten +ClickToHideAlreadyExportedLines=Klik om reeds geëxporteerde regels te verbergen NAccounts=%s accounts diff --git a/htdocs/langs/nl_NL/admin.lang b/htdocs/langs/nl_NL/admin.lang index 4bba34f36e4..c2f0769e319 100644 --- a/htdocs/langs/nl_NL/admin.lang +++ b/htdocs/langs/nl_NL/admin.lang @@ -292,7 +292,7 @@ MAIN_MAIL_SMTP_SERVER=SMTP / SMTPS-host (standaard waarde in php.ini: %s) MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS-poort (niet gedefinieerd in PHP op Unix-achtige systemen) MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (niet gedefinieerd in PHP op Unix-achtige systemen) MAIN_MAIL_EMAIL_FROM=E-mail afzender voor automatische e-mails (standaardwaarde in php.ini: %s) -EMailHelpMsgSPFDKIM=To prevent Dolibarr emails to be classified as spam, make sure that the server is authorized to send e-mails from this address by SPF and DKIM configuration +EMailHelpMsgSPFDKIM=Om te voorkomen dat Dolibarr-e-mails als spam worden geclassificeerd, moet u ervoor zorgen dat de server is geautoriseerd om e-mails vanaf dit adres te verzenden via SPF- en DKIM-configuratie MAIN_MAIL_ERRORS_TO=E-mailadres voor gebruikt foute e-mails (velden 'Fout-Aan' in verzonden e-mails) MAIN_MAIL_AUTOCOPY_TO= Kopieer (BCC) alle verzonden e-mails naar MAIN_DISABLE_ALL_MAILS=Schakel alle e-mailverzending uit (voor testdoeleinden of demo's) @@ -438,7 +438,7 @@ Unique=Uniek Boolean=Boolean (één checkbox) ExtrafieldPhone = Telefoon ExtrafieldPrice = Prijs -ExtrafieldPriceWithCurrency=Price with currency +ExtrafieldPriceWithCurrency=Prijs met valuta ExtrafieldMail = E-mail ExtrafieldUrl = Url ExtrafieldIP = IP @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Checkboxen ExtrafieldCheckBoxFromList=Checkboxen uit tabel ExtrafieldLink=Link naar een object ComputedFormula=Berekend veld -ComputedFormulaDesc=U kunt hier een formule invoeren met andere eigenschappen van het object of een PHP-codering om een dynamisch berekende waarde te krijgen. U kunt alle PHP compatibele formules gebruiken, inclusief de "?" condition operator en volgend globaal object: $ db, $ conf, $ langs, $ mysoc, $ user, $ object .
WAARSCHUWING : Mogelijk zijn slechts enkele eigenschappen van $ object beschikbaar. Als je eigenschappen nodig hebt die niet zijn geladen, haal dan gewoon het object in je formule zoals in het tweede voorbeeld.
Als u een berekend veld gebruikt, betekent dit dat u geen enkele waarde uit de interface kunt invoeren. Als er een syntaxisfout is, retourneert de formule mogelijk ook niets.

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

Voorbeeld om object
(($ $ reloadedobj = new Societe ($ db)) && ($ reloadedobj-> fetchNoCompute ($ obj-> id? $ obj-> id> ($ obj-> id: ($ obj-)) te herladen > rowid: $ object-> id))> 0))? $ reloadedobj-> array_options ['options_extrafieldkey'] * $ reloadedobj-> capital / 5: '-1'

Ander voorbeeld van formule om het laden van een object en het bovenliggende object te forceren:
(($ reloadedbj0) )) && ($ reloadedobj-> fetchNoCompute ($ object-> id)> 0) && ($ secondloadedobj = nieuw project ($ db)) && ($ secondloadedobj-> fetchNoCompute ($ 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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Berekend veld opslaan ComputedpersistentDesc=Berekende extra velden worden opgeslagen in de database, maar de waarde wordt alleen opnieuw berekend als het object van dit veld wordt gewijzigd. Als het berekende veld afhankelijk is van andere objecten of algemene gegevens, kan deze waarde onjuist zijn !! ExtrafieldParamHelpPassword=Dit veld leeg laten betekent dat deze waarde zonder codering wordt opgeslagen (veld mag alleen worden verborgen met een ster op het scherm).
Stel 'auto' in om de standaard coderingsregel te gebruiken om het wachtwoord in de database op te slaan (waarde lezen is dan alleen de hash, geen manier om de oorspronkelijke waarde op te halen) @@ -502,8 +502,8 @@ WarningPHPMail=WAARSCHUWING: De instelling om e-mails te verzenden vanuit de app WarningPHPMailA=- Het gebruik van de server van de e-mailserviceprovider verhoogt de betrouwbaarheid van uw e-mail. Dus het verhoogt de kans te worden afgeleverd zonder te worden gemarkeerd als SPAM WarningPHPMailB=- Sommige e-mailproviders (zoals Yahoo) staan niet toe dat u een e-mail verzendt vanaf een andere server dan hun eigen server. Uw huidige installatie gebruikt de server van de applicatie om e-mail te verzenden en niet de server van uw e-mailprovider, dus sommige ontvangers (degene die compatibel zijn met het beperkende DMARC-protocol) zullen uw e-mailprovider vragen of zij uw e-mail kunnen accepteren en sommige e-mailproviders (zoals Yahoo) reageert mogelijk "nee" omdat de server niet van hen is, dus enkele van uw verzonden e-mails worden mogelijk niet geaccepteerd voor bezorging (let ook op de verzendquota van uw e-mailprovider). WarningPHPMailC=- Het gebruik van de SMTP-server van uw eigen e-mailserviceprovider om e-mails te verzenden is ook interessant, dus alle e-mails die vanuit de toepassing worden verzonden, worden ook opgeslagen in uw "Verzonden" -map van uw mailbox. -WarningPHPMailD=It is therefore recommended to change the sending method of e-mails to the value "SMTP". -WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. +WarningPHPMailD=Het is daarom aan te raden om de verzendmethode van e-mails te wijzigen in de waarde "SMTP". +WarningPHPMailDbis=Als u echt de standaard "PHP"-methode voor het verzenden van e-mails wilt behouden, negeert u deze waarschuwing of verwijdert u deze door %shier te klikken%s. WarningPHPMail2=Als uw e-mail SMTP-provider de e-mailclient moet beperken tot bepaalde IP-adressen (zeer zeldzaam), is dit het IP-adres van de mail user agent (MUA) voor uw ERP CRM-toepassing: %s. WarningPHPMailSPF=Als de domeinnaam in je e-mailadres van de afzender beschermd is door een SPF record (vraag je domeinnaam registrar), dan moet je de volgende IP's toevoegen in het SPF record van de DNS van je domein: %s . ActualMailSPFRecordFound=Werkelijk SPF-record gevonden (voor e-mail %s): %s @@ -516,7 +516,7 @@ PageUrlForDefaultValuesCreate=
Voorbeeld:
Voor het formulier om een nie PageUrlForDefaultValuesList=
Voorbeeld:
Voor de pagina met een lijst van relaties, is dit %s .
Voor de URL van externe modules die in de aangepaste map zijn geïnstalleerd, moet u de "custom /" niet opnemen, dus gebruik een pad zoals mymodule / mypagelist.php en niet custom / mymodule / mypagelist.php.
Als u standaardwaarde alleen als url heeft enkele parameter wilt, kunt u gebruik maken van %s AlsoDefaultValuesAreEffectiveForActionCreate=Merk ook op dat het overschrijven van standaardwaarden voor het maken van formulieren alleen werkt voor pagina's die correct zijn ontworpen (dus met parameteractie = maken of aanpassen ...) EnableDefaultValues=Aanpassing van standaardwaarden inschakelen -EnableOverwriteTranslation=Allow customization of translations +EnableOverwriteTranslation=Sta aanpassing van vertalingen toe GoIntoTranslationMenuToChangeThis=Er is een vertaling gevonden voor de sleutel met deze code. Om deze waarde te wijzigen, moet u deze bewerken vanuit Home-Setup-vertaling. WarningSettingSortOrder=Pas op. Het instellen van een standaardsorteervolgorde kan resulteren in een technische fout wanneer u op de lijstpagina gaat als veld een onbekend veld is. Als u een dergelijke fout ondervindt, gaat u terug naar deze pagina om de standaard sorteervolgorde te verwijderen en het standaardgedrag te herstellen. Field=veld @@ -645,11 +645,13 @@ Module2300Name=Geplande taken Module2300Desc=Taakplanning (ook wel cron of chrono tabel) Module2400Name=Gebeurtenissen/Agenda Module2400Desc=Volgen van gebeurtenissen. Registreer automatische gebeurtenissen voor vastleggingen of neem handmatige gebeurtenissen of vergaderingen op. Dit is de belangrijkste module voor goed klant- of leveranciersrelatiebeheer. +Module2430Name=Boekingskalendersysteem +Module2430Desc=Zorg voor een online agenda zodat iedereen afspraken kan boeken, volgens vooraf gedefinieerde bereiken of beschikbaarheid. Module2500Name=DMS / ECM Module2500Desc=Document Management System / Electronic Content Management. Geautomatiseerde organisatie van gemaakte en opgeslagen documenten. Deel deze indien gewenst. -Module2600Name=API / Web services (SOAP server) +Module2600Name=API / webservices (SOAP-server) Module2600Desc=Schakel de Dolibarr SOAP server in die API services aanbiedt -Module2610Name=API / Web services (REST server) +Module2610Name=API / webservices (REST-server) Module2610Desc=Schakel de Dolibarr REST-server in die API-services biedt Module2660Name=Aanroepen WebServices (SOAP-client) Module2660Desc=Schakel de Dolibarr-webserviceclient in (kan worden gebruikt om gegevens / verzoeken naar externe servers te pushen. Alleen inkooporders worden momenteel ondersteund.) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=Capaciteitconversie GeoIP Maxmind Module3200Name=Niet aanpasbare archieven Module3200Desc=Schakel een niet aanpasbaar logboek van zakelijke evenementen in. Evenementen worden in realtime gearchiveerd. Het logboek is een alleen-lezen tabel met gekoppelde gebeurtenissen die kunnen worden geëxporteerd. Deze module kan voor sommige landen verplicht zijn. +Module3300Name=Modulebouwer +Module3200Desc=Schakel een niet aanpasbaar logboek van zakelijke evenementen in. Evenementen worden in realtime gearchiveerd. Het logboek is een alleen-lezen tabel met gekoppelde gebeurtenissen die kunnen worden geëxporteerd. Deze module kan voor sommige landen verplicht zijn. Module3400Name=Sociale netwerken Module3400Desc=Schakel Social Network-velden in voor derden en adressen (skype, twitter, facebook, ...). Module4000Name=HRM @@ -700,8 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Functies toevoegen om Incoterms te beheren Module63000Name=Bronnen Module63000Desc=Beheer middelen (printers, auto's, kamers, ...) voor toewijzing aan evenementen +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Ontvangsten -Permission11=Bekijk afnemersfacturen +Permission11=Read customer invoices (and payments) Permission12=Creëer / wijzigen afnemersfacturen Permission13=Klantfacturen laten vervallen Permission14=Valideer afnemersfacturen @@ -845,7 +851,7 @@ Permission286=Contactpersonen exporteren Permission291=Tarieven inzien Permission292=Stel rechten voor tarieven in Permission293=Wijzig klant-tarieven -Permission301=Generate PDF sheets of barcodes +Permission301=Genereer PDF-vellen met streepjescodes Permission304=Barcodes maken/wijzigen Permission305=Verwijder barcodes Permission311=Diensten inzien @@ -943,7 +949,7 @@ Permission1190=Goedkeuren (tweede goedkeuring) inkooporders Permission1191=Exporteer bestellingen van leveranciers en hun attributen Permission1201=Geef het resultaat van een uitvoervergunning Permission1202=Creëren/wijzigen een uitvoervergunning -Permission1231=Lees leveranciersfacturen +Permission1231=Read vendor invoices (and payments) Permission1232=Creëer/wijzig leveranciersfacturen Permission1233=Valideer leveranciersfacturen Permission1234=Verwijderen leveranciersfacturen @@ -974,14 +980,14 @@ Permission3301=Maak nieuwe modules Permission4001=Lees vaardigheid/baan/positie Permission4002=Vaardigheid/baan/positie aanmaken/wijzigen Permission4003=Vaardigheid/baan/positie verwijderen -Permission4021=Read evaluations (yours and your subordinates) -Permission4022=Create/modify evaluations +Permission4021=Lees evaluaties (van u en uw ondergeschikten) +Permission4022=Evaluaties maken/wijzigen Permission4023=Evaluatie valideren Permission4025=Evaluatie verwijderen Permission4028=Zie vergelijkingsmenu Permission4031=Persoonlijke informatie lezen Permission4032=Schrijf persoonlijke informatie -Permission4033=Read all evaluations (even those of user not subordinates) +Permission4033=Lees alle evaluaties (zelfs die van gebruikers die niet ondergeschikt zijn) Permission10001=Lees website-inhoud Permission10002=Website-inhoud maken / wijzigen (HTML- en JavaScript-inhoud) Permission10003=Creëer / wijzig website-inhoud (dynamische php-code). Gevaarlijk, moet worden voorbehouden aan beperkte ontwikkelaars. @@ -1085,10 +1091,10 @@ DictionaryAssetDisposalType=Type vervreemding van activa TypeOfUnit=Type eenheid SetupSaved=Instellingen opgeslagen SetupNotSaved=Installatie niet opgeslagen -OAuthServiceConfirmDeleteTitle=Delete OAuth entry -OAuthServiceConfirmDeleteMessage=Are you sure you want to delete this OAuth entry ? All existing tokens for it will also be deleted. -ErrorInEntryDeletion=Error in entry deletion -EntryDeleted=Entry deleted +OAuthServiceConfirmDeleteTitle=OAuth-invoer verwijderen +OAuthServiceConfirmDeleteMessage=Weet u zeker dat u dit OAuth-item wilt verwijderen? Alle bestaande tokens ervoor worden ook verwijderd. +ErrorInEntryDeletion=Fout bij het verwijderen van invoer +EntryDeleted=Invoer verwijderd BackToModuleList=Terug naar modulelijst BackToDictionaryList=Terug naar woordenboekenlijst TypeOfRevenueStamp=Soort belastingstempel @@ -1230,7 +1236,7 @@ SetupDescription4=  %s -> %s

Dit programma is een s SetupDescription5=Andere items in het Setup-menu beheren optionele parameters. SetupDescriptionLink= %s - %s SetupDescription3b=Basisparameters die worden gebruikt om het standaardgedrag van uw toepassing aan te passen (bijvoorbeeld voor landgerelateerde functies). -SetupDescription4b=Deze software is een suite van vele modules/applicaties. De modules met betrekking tot uw behoeften moeten worden ingeschakeld en geconfigureerd. Menu-items verschijnen met de activering van deze modules. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Beveiligingsgebeurtenissen die worden gecontroleerd NoSecurityEventsAreAduited=Er worden geen beveiligingsgebeurtenissen gecontroleerd. U kunt ze inschakelen via menu %s Audit=Beveiligingsgebeurtenissen @@ -1252,7 +1258,7 @@ AreaForAdminOnly=Setup functies kunnen alleen door Administrator gebruikers- Category of operations: Delivery of goods
- Category of operations: Provision of services
- Category of operations: Mixed - Delivery of goods & provision of services -InvoiceOptionCategoryOfOperationsYes1=Yes, below the address block -InvoiceOptionCategoryOfOperationsYes2=Yes, in the lower left-hand corner +InvoiceOptionCategoryOfOperations=Vermeld de vermelding "categorie van verrichtingen" op de factuur. +InvoiceOptionCategoryOfOperationsHelp=Afhankelijk van de situatie verschijnt de vermelding in de volgende vorm:
- Categorie van activiteiten: Levering van goederen
- Categorie van activiteiten: Dienstverlening
- Categorie van activiteiten: Gemengd - Levering van goederen en dienstverlening +InvoiceOptionCategoryOfOperationsYes1=Ja, onder het adresblok +InvoiceOptionCategoryOfOperationsYes2=Ja, in de linker benedenhoek ##### Proposals ##### PropalSetup=Offertemoduleinstellingen ProposalsNumberingModules=Offertenummeringmodules @@ -1491,12 +1498,12 @@ WatermarkOnDraftContractCards=Watermerk op voorlopige contracten (leeg=geen) ##### Members ##### MembersSetup=Ledenmoduleinstellingen MemberMainOptions=Hoofdopties -MemberCodeChecker=Options for automatic generation of member codes +MemberCodeChecker=Opties voor het automatisch genereren van lidcodes AdherentLoginRequired= Beheren van een login voor elk lid AdherentMailRequired=E-mail vereist om een nieuw lid te maken MemberSendInformationByMailByDefault=Vinkvakje om een bevestigingse-mail te sturen naar leden (validatie van nieuwe abonnementen). Staat standaard aan. MemberCreateAnExternalUserForSubscriptionValidated=Maak een externe gebruikerslogin aan voor elk gevalideerd nieuw lidmaatschap -VisitorCanChooseItsPaymentMode=Visitor can choose from any available payment modes +VisitorCanChooseItsPaymentMode=Bezoeker kan kiezen uit alle beschikbare betalingswijzen MEMBER_REMINDER_EMAIL=Automatische herinnering per e-mail inschakelen voor verlopen abonnementen. Opmerking: Module %s moet zijn ingeschakeld en correct zijn ingesteld om herinneringen te verzenden. MembersDocModules=Documentsjablonen voor documenten die zijn gegenereerd op basis van een ledenrecord ##### LDAP setup ##### @@ -1758,8 +1765,8 @@ ActivateFCKeditor=Activeer FCKeditor voor: FCKeditorForNotePublic=WYSIWIG creatie/editie van het veld "openbare notities" van elementen FCKeditorForNotePrivate=WYSIWIG creatie/editie van het veld "private notes" van elementen FCKeditorForCompany=WYSIWIG creatie/editie van de veldbeschrijving van elementen (behalve producten/diensten) -FCKeditorForProductDetails=WYSIWIG creation/edition of products description or lines for objects (lines of proposals, orders, invoices, etc...). -FCKeditorForProductDetails2=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 creatie/editie van productbeschrijving of lijnen voor objecten (lijnen met voorstellen, bestellingen, facturen, enz...). +FCKeditorForProductDetails2=Waarschuwing: het gebruik van deze optie wordt in dit geval serieus afgeraden, omdat dit problemen kan veroorzaken met speciale tekens en paginaopmaak bij het samenstellen van PDF-bestanden. FCKeditorForMailing= WYSIWIG creatie / bewerking van mailings FCKeditorForUserSignature=WYSIWIG creatie /aanpassing van ondertekening FCKeditorForMail=WYSIWIG creatie / bewerking voor alle e-mail (behalve Gereedschap-> E-mailing) @@ -1782,7 +1789,7 @@ DetailMenuHandler=Menuverwerker waar het nieuwe menu getoond moet worden DetailMenuModule=Modulenaam als menu-item van een module afkomstig is DetailType=Menutype (boven of links (Top of Left)TODO) DetailTitre=Menulabel of labelcode voor de vertaling -DetailUrl=URL where menu send you (Relative URL link or external link with https://) +DetailUrl=URL waar het menu u naartoe stuurt (relatieve URL-link of externe link met https://) DetailEnabled=Voorwaarde voor het wel of niet tonen van het menu-item DetailRight=Voorwaarde om onbevoegde grijze menu's weer te geven DetailLangs=.lang bestandsnaam voor labelcodevertaling @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Gebruik gebeurtenistypen (beheerd in menu Setup -> Woor AGENDA_USE_EVENT_TYPE_DEFAULT=Stel deze standaardwaarde automatisch in voor het type evenement in het formulier voor het maken van een evenement AGENDA_DEFAULT_FILTER_TYPE=Stel dit type evenement automatisch in het zoekfilter van de agendaweergave in AGENDA_DEFAULT_FILTER_STATUS=Stel deze status automatisch in voor evenementen in het zoekfilter van de agendaweergave +AGENDA_EVENT_PAST_COLOR=Kleur van afgelopen evenement +AGENDA_EVENT_CURRENT_COLOR=Huidige gebeurteniskleur +AGENDA_EVENT_FUTURE_COLOR=Toekomstige evenementkleur AGENDA_DEFAULT_VIEW=Welke weergave wil je standaard openen als je menu Agenda selecteert AGENDA_REMINDER_BROWSER=Schakel gebeurtenisherinnering in de browser van de gebruiker in (wanneer de herinneringsdatum wordt bereikt, wordt een pop-up weergegeven door de browser. Elke gebruiker kan dergelijke meldingen uitschakelen via de instellingen van de browser). AGENDA_REMINDER_BROWSER_SOUND=Schakel geluidsmelding in @@ -1853,7 +1863,7 @@ StockDecreaseForPointOfSaleDisabledbyBatch=Voorraadafname in POS is niet compati CashDeskYouDidNotDisableStockDecease=U hebt de voorraaddaling niet uitgeschakeld bij een verkoop vanuit het verkooppunt. Daarom is een magazijn vereist. CashDeskForceDecreaseStockLabel=Afname van voorraad voor batchproducten werd geforceerd. CashDeskForceDecreaseStockDesc=Verlaag eerst met de oudste eet- en verkoopdata. -CashDeskReaderKeyCodeForEnter=Key ASCII code for "Enter" defined in barcode reader (Example: 13) +CashDeskReaderKeyCodeForEnter=Key ASCII-code voor "Enter" gedefinieerd in barcodelezer (Voorbeeld: 13) ##### Bookmark ##### BookmarkSetup=Weblinkmoduleinstellingen BookmarkDesc=Met deze module kunt u bladwijzers beheren. U kunt ook snelkoppelingen toevoegen aan Dolibarr-pagina's of externe websites in het linkermenu. @@ -1891,7 +1901,7 @@ SuppliersInvoiceNumberingModel=Nummeringsmodellen voor leveranciersfacturen IfSetToYesDontForgetPermission=Als deze is ingesteld op een niet-nulwaarde, vergeet dan niet om machtigingen te verstrekken aan groepen of gebruikers die zijn toegestaan voor de tweede goedkeuring ##### GeoIPMaxmind ##### GeoIPMaxmindSetup="GeoIP Maxmind"-moduleinstellingen -PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation +PathToGeoIPMaxmindCountryDataFile=Pad naar bestand met vertaling van Maxmind ip naar land NoteOnPathLocation=Let op dat uw "GeoIP Maxmind"-landbestand zich bevind in een map die door uw PHP-installatie kan worden gelezen (Controleer uwPHP open_basedir instelling en de bestandsrechten). YouCanDownloadFreeDatFileTo=U kunt een gratis demo versie downloaden van een "Maxmind GeoIP"-landbestand op het adres %s. YouCanDownloadAdvancedDatFileTo=U kunt ook een completere versie, met updates downloaden van het "Maxmind GeoIP"-landbestand op het adres %s. @@ -1942,7 +1952,7 @@ BackupDumpWizard=Wizard om een database-dumpbestand aan te maken BackupZipWizard=Wizard om een archief met documentenmap te maken SomethingMakeInstallFromWebNotPossible=Installatie van externe module is niet mogelijk via de webinterface om de volgende reden: SomethingMakeInstallFromWebNotPossible2=Om deze reden is het hier beschreven upgradeproces een handmatig proces dat alleen een bevoorrechte gebruiker mag uitvoeren. -InstallModuleFromWebHasBeenDisabledContactUs=Install or development of external modules or dynamic websites, from the application, is currently locked for security purpose. Please contact us if you need to enable this feature. +InstallModuleFromWebHasBeenDisabledContactUs=Het installeren of ontwikkelen van externe modules of dynamische websites vanuit de applicatie is momenteel om veiligheidsredenen vergrendeld. Neem contact met ons op als u deze functie wilt inschakelen. InstallModuleFromWebHasBeenDisabledByFile=Installeren van externe module van toepassing is uitgeschakeld door uw beheerder. Je moet hem vragen om het bestand %s te verwijderen om deze functie mogelijk te maken. ConfFileMustContainCustom=Het installeren of bouwen van een externe module vanuit de applicatie moet de modulebestanden opslaan in de map %s . Om deze map door Dolibarr te laten verwerken, moet u uw conf / conf.php instellen om de 2 richtlijnregels toe te voegen:
$ dolibarr_main_url_root_alt = '/ custom'
$ dolibarr_main_document_root_alt = '%s / custom' HighlightLinesOnMouseHover=Markeer tabellijnen wanneer u er met de muis overheen gaat @@ -2070,8 +2080,8 @@ RemoveSpecialChars=Verwijder speciale tekens COMPANY_AQUARIUM_CLEAN_REGEX=Regex-filter om waarde te reinigen (COMPANY_AQUARIUM_CLEAN_REGEX) COMPANY_DIGITARIA_CLEAN_REGEX=Regex-filter om waarde op te schonen (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Dupliceren niet toegestaan -RemoveSpecialWords=Clean certain words when generating sub-accounts for customers or suppliers -RemoveSpecialWordsHelp=Specify the words to be cleaned before calculating the customer or supplier account. Use a ";" between each word +RemoveSpecialWords=Reinig bepaalde woorden bij het genereren van subaccounts voor klanten of leveranciers +RemoveSpecialWordsHelp=Geef de woorden op die moeten worden opgeschoond voordat de klant- of leveranciersrekening wordt berekend. Gebruik een ";" tussen elk woord GDPRContact=Functionaris voor gegevensbescherming (DPO, gegevensprivacy of GDPR-contact) GDPRContactDesc=Als u persoonsgegevens opslaat in uw Informatiesysteem, kunt u hier de contactpersoon noemen die verantwoordelijk is voor de Algemene Verordening Gegevensbescherming HelpOnTooltip=Help-tekst om op knopinfo weer te geven @@ -2099,7 +2109,7 @@ MailboxTargetDirectory=Doeldirectory voor mailbox EmailcollectorOperations=Operaties te doen door verzamelaar EmailcollectorOperationsDesc=Bewerkingen worden op volgorde begin tot eind uitgevoerd MaxEmailCollectPerCollect=Max aantal verzamelde e-mails per verzameling -TestCollectNow=Test collect +TestCollectNow=Test verzamelen CollectNow=Verzamel nu ConfirmCloneEmailCollector=Weet u zeker dat u de e-mailcollector %s wilt klonen? DateLastCollectResult=Datum laatste poging van verzamelen @@ -2129,6 +2139,7 @@ CodeLastResult=Laatste resultaatcode NbOfEmailsInInbox=Aantal e-mails in bronmap LoadThirdPartyFromName=Zoeken van derden laden op %s (alleen laden) LoadThirdPartyFromNameOrCreate=Zoeken van derden laden op %s (maken indien niet gevonden) +LoadContactFromEmailOrCreate=Contact zoeken laden op %s (maken indien niet gevonden) AttachJoinedDocumentsToObject=Sla bijgevoegde bestanden op in objectdocumenten als een referentie van een object wordt gevonden in een e-mailonderwerp. WithDolTrackingID=Bericht inzake een gesprek geïnitieerd door een eerste e-mail verzonden vanuit Dolibarr WithoutDolTrackingID=Bericht van een gesprek geïnitieerd door een eerste e-mail die NIET is verzonden vanuit Dolibarr @@ -2203,7 +2214,7 @@ ShowProjectLabel=Projectlabel PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Alias opnemen in naam van derde partij THIRDPARTY_ALIAS=Naam derde partij - Alias derde partij ALIAS_THIRDPARTY=Alias derde partij - Naam derde partij -PDFIn2Languages=Show labels into PDF in 2 different languages +PDFIn2Languages=Toon labels in PDF in 2 verschillende talen PDF_USE_ALSO_LANGUAGE_CODE=Als u wilt dat sommige teksten in uw PDF worden gedupliceerd in 2 verschillende talen in dezelfde gegenereerde PDF, moet u hier deze tweede taal instellen, zodat de gegenereerde PDF 2 verschillende talen op dezelfde pagina bevat, degene die is gekozen bij het genereren van PDF en deze ( slechts enkele PDF-sjablonen ondersteunen dit). Voor 1 taal per pdf leeg houden. PDF_USE_A=Genereer PDF-documenten met formaat PDF/A in plaats van standaard formaat PDF FafaIconSocialNetworksDesc=Voer hier de code van een FontAwesome-pictogram in. Als je niet weet wat FontAwesome is, kun je het generieke waarde fa-adresboek gebruiken. @@ -2232,12 +2243,12 @@ MailToPartnership=Vennootschap AGENDA_EVENT_DEFAULT_STATUS=Standaard gebeurtenisstatus bij het maken van een gebeurtenis vanuit het formulier YouShouldDisablePHPFunctions=U moet PHP-functies uitschakelen IfCLINotRequiredYouShouldDisablePHPFunctions=Behalve als u systeemopdrachten in aangepaste code moet uitvoeren, moet u PHP-functies uitschakelen -PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an antivirus program), you must keep PHP functions +PHPFunctionsRequiredForCLI=Voor shell-doeleinden (zoals geplande taakback-up of het uitvoeren van een antivirusprogramma), moet u PHP-functies behouden NoWritableFilesFoundIntoRootDir=Er zijn geen beschrijfbare bestanden of mappen van de gebruikelijke programma's gevonden in uw hoofdmap (Goed) RecommendedValueIs=Aanbevolen: %s Recommended=Aanbevolen NotRecommended=Niet aangeraden -ARestrictedPath=Some restricted path for data files +ARestrictedPath=Een beperkt pad voor gegevensbestanden CheckForModuleUpdate=Controleren op updates van externe modules CheckForModuleUpdateHelp=Deze actie maakt verbinding met editors van externe modules om te controleren of er een nieuwe versie beschikbaar is. ModuleUpdateAvailable=Een update is beschikbaar @@ -2285,7 +2296,7 @@ LateWarningAfter="Vertraagde" waarschuwing na TemplateforBusinessCards=Sjabloon voor een visitekaartje in een ander formaat InventorySetup= Setup inventarisatie ExportUseLowMemoryMode=Gebruik een modus met weinig geheugen -ExportUseLowMemoryModeHelp=Use the low memory mode to generate the dump file (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that the file is complete and error message can't be reported if it fails. Use it if you experience not enough memory errors. +ExportUseLowMemoryModeHelp=Gebruik de lage geheugenmodus om het dumpbestand te genereren (compressie gebeurt via een pijp in plaats van in het PHP-geheugen). Met deze methode kan niet worden gecontroleerd of het bestand compleet is en kan er geen foutbericht worden gemeld als het mislukt. Gebruik het als u niet genoeg geheugenfouten ervaart. ModuleWebhookName = webhook ModuleWebhookDesc = Interface om dolibarr-triggers te vangen en naar een URL te sturen @@ -2309,8 +2320,8 @@ IconOnly=Alleen pictogram - Alleen tekst op knopinfo INVOICE_ADD_ZATCA_QR_CODE=Toon de ZATCA QR-code op facturen INVOICE_ADD_ZATCA_QR_CODEMore=Sommige Arabische landen hebben deze QR-code nodig op hun facturen INVOICE_ADD_SWISS_QR_CODE=Toon de Zwitserse QR-factuurcode op facturen -INVOICE_SHOW_SHIPPING_ADDRESS=Show shipping address -INVOICE_SHOW_SHIPPING_ADDRESSMore=Compulsory mention for France +INVOICE_SHOW_SHIPPING_ADDRESS=Verzendadres tonen +INVOICE_SHOW_SHIPPING_ADDRESSMore=Verplichte vermelding voor Frankrijk UrlSocialNetworksDesc=URL-link van sociaal netwerk. Gebruik {socialid} voor het variabele deel dat de sociale netwerk-ID bevat. IfThisCategoryIsChildOfAnother=Als deze categorie een kind is van een andere DarkThemeMode=Donkere themamodus @@ -2330,28 +2341,34 @@ UsePassword=Gebruik een wachtwoord UseOauth=Gebruik een OAUTH-token Images=Afbeeldingen MaxNumberOfImagesInGetPost=Maximaal aantal afbeeldingen toegestaan in een HTML-veld ingediend in een formulier -MaxNumberOfPostOnPublicPagesByIP=Max number of posts on public pages with the same IP address in a month +MaxNumberOfPostOnPublicPagesByIP=Max. aantal berichten op openbare pagina's met hetzelfde IP-adres in een maand CIDLookupURL=De module brengt een URL die door een externe tool kan worden gebruikt om de naam van een derde partij of contactpersoon van zijn telefoonnummer te krijgen. De te gebruiken URL is: -ScriptIsEmpty=The script is empty -ShowHideTheNRequests=Show/hide the %s SQL request(s) -DefinedAPathForAntivirusCommandIntoSetup=Define a path for an antivirus program into %s -TriggerCodes=Triggerable events -TriggerCodeInfo=Enter here the trigger code(s) that must generate a post of a web request (only external URL are allowed). You can enter several trigger codes separated by a comma. -EditableWhenDraftOnly=If unchecked, the value can only be modified when object has a draft status -CssOnEdit=Css on edit pages -CssOnView=Css on view pages -CssOnList=Css on list pages -HelpCssOnEditDesc=The Css used when editing the field.
Example: "minwiwdth100 maxwidth500 widthcentpercentminusx" -HelpCssOnViewDesc=The Css used when viewing the field. -HelpCssOnListDesc=The Css used when field is inside a list table.
Example: "tdoverflowmax200" -RECEPTION_PDF_HIDE_ORDERED=Hide the quantity ordered on the generated documents for receptions -MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT=Show the price on the generated documents for receptions -WarningDisabled=Warning disabled -LimitsAndMitigation=Access limits and mitigation -DesktopsOnly=Desktops only -DesktopsAndSmartphones=Desktops et smartphones -AllowOnlineSign=Allow online signing -AllowExternalDownload=Allow external download (without login, using a shared link) -DeadlineDayVATSubmission=Deadline day for vat submission on the next month -MaxNumberOfAttachementOnForms=Max number of joinded files in a form -IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +ScriptIsEmpty=Het script is leeg +ShowHideTheNRequests=Toon/verberg de %s SQL-aanvraag(en) +DefinedAPathForAntivirusCommandIntoSetup=Definieer een pad voor een antivirusprogramma in %s +TriggerCodes=Activeerbare gebeurtenissen +TriggerCodeInfo=Voer hier de triggercode(s) in die een bericht van een webverzoek moeten genereren (alleen externe URL's zijn toegestaan). U kunt meerdere triggercodes invoeren, gescheiden door een komma. +EditableWhenDraftOnly=Indien niet aangevinkt, kan de waarde alleen worden gewijzigd als het object de conceptstatus heeft +CssOnEdit=Css op bewerkingspagina's +CssOnView=Css op weergavepagina's +CssOnList=Css op lijstpagina's +HelpCssOnEditDesc=De CSS die wordt gebruikt bij het bewerken van het veld.
Voorbeeld: "minwiwdth100 maxwidth500 widthcentpercentminusx" +HelpCssOnViewDesc=De gebruikte CSS bij het bekijken van het veld. +HelpCssOnListDesc=De CSS die wordt gebruikt wanneer het veld zich in een lijsttabel bevindt.
Voorbeeld: "tdoverflowmax200" +RECEPTION_PDF_HIDE_ORDERED=Verberg de bestelde hoeveelheid op de gegenereerde documenten voor ontvangsten +MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT=Toon de prijs op de gegenereerde documenten voor recepties +WarningDisabled=Waarschuwing uitgeschakeld +LimitsAndMitigation=Toegangslimieten en beperking +DesktopsOnly=Alleen desktops +DesktopsAndSmartphones=Desktops en smartphones +AllowOnlineSign=Sta online ondertekenen toe +AllowExternalDownload=Externe download toestaan (zonder login, met behulp van een gedeelde link) +DeadlineDayVATSubmission=Deadline voor btw-indiening in de volgende maand +MaxNumberOfAttachementOnForms=Max. aantal samengevoegde bestanden in een formulier +IfDefinedUseAValueBeetween=Gebruik indien gedefinieerd een waarde tussen %s en %s +Reload=Herladen +ConfirmReload=Bevestig het opnieuw laden van de module +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/nl_NL/install.lang b/htdocs/langs/nl_NL/install.lang index e73a3129bdd..ae5028dd6ac 100644 --- a/htdocs/langs/nl_NL/install.lang +++ b/htdocs/langs/nl_NL/install.lang @@ -51,7 +51,6 @@ DatabaseName=Databasenaam DatabasePrefix=Voorvoegsel databasetabel DatabasePrefixDescription=Voorvoegsel databasetabel. Indien leeg, standaard ingesteld op llx_. AdminLogin=Gebruikersaccount voor de eigenaar van de Dolibarr-database. -PasswordAgain=Bevestig het wachtwoord opnieuw AdminPassword=Wachtwoord voor de database eigenaar. CreateDatabase=Creëer database CreateUser=Maak een gebruikersaccount of verleen gebruikersaccountrechten op de Dolibarr-database @@ -89,7 +88,7 @@ LoginAlreadyExists=Bestaat al DolibarrAdminLogin=Login van de Dolibarr beheerder AdminLoginAlreadyExists=Dolibarr-beheerdersaccount ' %s ' bestaat al. Ga terug als je nog een wilt maken. FailedToCreateAdminLogin=Aanmaken Dolibarr administrator account niet geslaagd. -WarningRemoveInstallDir=Waarschuwing, om veiligheidsredenen moet u, zodra de installatie of upgrade is voltooid, een bestand met de naam install.lock toevoegen aan de Dolibarr-documentmap om opnieuw per ongeluk / kwaadwillig gebruik van de installatiehulpmiddelen te voorkomen. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=Niet beschikbaar in deze PHP ChoosedMigrateScript=Kies het migratiescript DataMigration=Database migratie (gegevens) @@ -209,7 +208,12 @@ HideNotAvailableOptions=Niet-beschikbare opties verbergen ErrorFoundDuringMigration=Er zijn fouten gemeld tijdens het migratieproces, dus de volgende stap is niet beschikbaar. Om fouten te negeren, kunt u hier klikken , maar de toepassing of sommige functies werken mogelijk niet correct totdat de fouten zijn opgelost. YouTryInstallDisabledByDirLock=De toepassing probeerde zelf te upgraden, maar de installatie- / upgradepagina's zijn om veiligheidsredenen uitgeschakeld (map hernoemd met .lock-achtervoegsel).
YouTryInstallDisabledByFileLock=De applicatie probeerde zelf te upgraden, maar de installatie / upgrade-pagina's zijn om veiligheidsredenen uitgeschakeld (door het bestaan van een slotbestand install.lock in de dolibarr-documentenmap).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=Klik hier om naar uw toepassing te gaan ClickOnLinkOrRemoveManualy=Even geduld als er een upgrade wordt uitgevoerd. Is dit klaar, klik dan op de volgende link. Als u altijd dezelfde pagina ziet, moet u het bestand install.lock in de documentenmap verwijderen / hernoemen. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=Geladen FunctionTest=Functietest +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/nl_NL/members.lang b/htdocs/langs/nl_NL/members.lang index 44b6bc543de..051fe88c825 100644 --- a/htdocs/langs/nl_NL/members.lang +++ b/htdocs/langs/nl_NL/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=Bijdragenstatistieken NbOfSubscriptions=Aantal bijdragen AmountOfSubscriptions=Bedrag uit bijdragen TurnoverOrBudget=Omzet (voor een bedrijf) of budget (voor een vereniging) -DefaultAmount=Bedrag standaardbijdrage +DefaultAmount=Default amount of contribution (used only if no amount is defined at member type level) +MinimumAmount=Minimum amount (used only when contribution amount is free) CanEditAmount=Subscription amount is free CanEditAmountDetail=Visitor can choose/edit amount of its contribution regardless of the member type AmountIsLowerToMinimumNotice=sur un dû total de %s diff --git a/htdocs/langs/pl_PL/admin.lang b/htdocs/langs/pl_PL/admin.lang index 40db11da129..bf7e0f5dcb4 100644 --- a/htdocs/langs/pl_PL/admin.lang +++ b/htdocs/langs/pl_PL/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Pola wyboru ExtrafieldCheckBoxFromList=Pola wyboru z tabeli ExtrafieldLink=Link do obiektu ComputedFormula=Obliczone pole -ComputedFormulaDesc=Możesz tu wprowadzić formułę, używając innych właściwości obiektu lub dowolnego kodowania PHP, aby uzyskać dynamiczną wartość obliczoną. Możesz używać dowolnych formuł zgodnych z PHP, w tym znaku „?” operator warunku i następujący obiekt globalny: $db, $conf, $langs, $mysoc, $user, $object .
OSTRZEŻENIE : Tylko niektóre właściwości obiektu $object mogą być dostępne. Jeśli potrzebujesz właściwości, które nie są załadowane, po prostu wczytaj obiekt do formuły, tak jak w drugim przykładzie.
Użycie pola obliczeniowego oznacza, że nie możesz samodzielnie wprowadzić żadnej wartości z interfejsu. Ponadto, jeśli wystąpi błąd składni, formuła może nic nie zwrócić.

Przykład formuły:
$object->id < 10 ? round($object->id / 2, 2): ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Przykład przeładowania obiektu
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

Inny przykład formuły wymuszającej ładowanie obiektu i jego obiektu nadrzędnego:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: „Nie znaleziono projektu nadrzędnego” +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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Zapisz obliczone pole ComputedpersistentDesc=Obliczone dodatkowe pola zostaną zapisane w bazie danych, jednak wartość zostanie przeliczona tylko wtedy, gdy obiekt tego pola zostanie zmieniony. Jeśli obliczone pole zależy od innych obiektów lub danych globalnych, ta wartość może być nieprawidłowa !! ExtrafieldParamHelpPassword=Pozostawienie tego pola pustego oznacza, że ta wartość będzie przechowywana bez szyfrowania (pole musi być ukryte tylko z gwiazdką na ekranie).
Ustaw `` auto '', aby użyć domyślnej reguły szyfrowania do zapisania hasła w bazie danych (wtedy odczytana wartość będzie tylko hashem, nie ma możliwości odzyskania oryginalnej wartości) @@ -645,6 +645,8 @@ Module2300Name=Zaplanowane zadania Module2300Desc=Zarządzanie zaplanowanymi zadaniami (jak cron lub chrono table) Module2400Name=Wydarzenia/Agenda Module2400Desc=Śledź wydarzenia. Rejestruj automatyczne zdarzenia do celów śledzenia lub rejestruj zdarzenia ręczne lub spotkania. Jest to główny moduł dobrego zarządzania relacjami z klientami lub dostawcami. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=SZD / ZZE Module2500Desc=System Zarządzania Dokumentami / Zarządzanie Zawartością Elektroniczną. Automatyczna organizacja twoich wygenerowanych lub składowanych dokumentów. Udostępniaj je kiedy chcesz. Module2600Name=API / Web services (SOAP server) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=Możliwości konwersji GeoIP Maxmind Module3200Name=Niezmienione archiwa Module3200Desc=Włącz niezmienny dziennik zdarzeń biznesowych. Wydarzenia są archiwizowane w czasie rzeczywistym. Dziennik jest tabelą tylko do odczytu połączonych zdarzeń, które można wyeksportować. Ten moduł może być obowiązkowy w niektórych krajach. +Module3300Name=Module Builder +Module3200Desc=Włącz niezmienny dziennik zdarzeń biznesowych. Wydarzenia są archiwizowane w czasie rzeczywistym. Dziennik jest tabelą tylko do odczytu połączonych zdarzeń, które można wyeksportować. Ten moduł może być obowiązkowy w niektórych krajach. Module3400Name=Sieci społecznościowe Module3400Desc=Włącz pola sieci społecznościowych w kontrahentach i adresach (skype, twitter, facebook, ...). Module4000Name=HR @@ -700,8 +704,10 @@ Module62000Name=Formuły handlowe Module62000Desc=Dodaj funkcje do zarządzania Incoterms Module63000Name=Zasoby Module63000Desc=Zarządzaj zasobami (drukarki, samochody, pokoje, ...) w celu przydzielania ich do wydarzeń +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Receptions -Permission11=Czytaj faktur klientów +Permission11=Read customer invoices (and payments) Permission12=Tworzenie/modyfikacja faktur klientów Permission13=Unieważnij faktury klienta Permission14=Walidacja faktur klienta @@ -943,7 +949,7 @@ Permission1190=Zatwierdź (drugie zatwierdzenie) zamówienia zakupu Permission1191=Eksport zamówień dostawców i ich atrybutów Permission1201=Wygeneruj wyniki eksportu Permission1202=Utwórz / modyfikuj eksport -Permission1231=Przeczytaj faktury od dostawców +Permission1231=Read vendor invoices (and payments) Permission1232=Twórz/modyfikuj faktury od dostawców Permission1233=Weryfikuj faktury od dostawców Permission1234=Usuń faktury dostawcy @@ -1230,7 +1236,7 @@ SetupDescription4= %s -> %s

To oprogramowanie jest SetupDescription5=Pozycje w menu Inne Ustawienia zarządzają parametrami opcjonalnymi. SetupDescriptionLink= %s - %s SetupDescription3b=Podstawowe parametry używane do dostosowania domyślnego zachowania Twojej aplikacji (np. w przypadku funkcji związanych z krajem). -SetupDescription4b=To oprogramowanie to zestaw wielu modułów/aplikacji. Moduły związane z Twoimi potrzebami muszą być włączone i skonfigurowane. Wpisy menu pojawią się wraz z aktywacją tych modułów. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Zdarzenia dotyczące bezpieczeństwa poddawane inspekcji NoSecurityEventsAreAduited=Żadne zdarzenia dotyczące bezpieczeństwa nie są poddawane inspekcji. Możesz je włączyć z menu %s Audit=Wydarzenia związane z bezpieczeństwem @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive=Wyzwalacze w tym pliku są aktywne jako modułu % GeneratedPasswordDesc=Wybierz metodę, która ma być używana w przypadku haseł generowanych automatycznie. DictionaryDesc=Wprowadź wszystkie potrzebne dane. Wartości można dodać do ustawień domyślnych. ConstDesc=Ta strona umożliwia edycję (nadpisanie) parametrów niedostępnych na innych stronach. Są to w większości parametry zarezerwowane tylko dla programistów / zaawansowanego rozwiązywania problemów. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=Inne powiązane parametry bezpieczeństwa są zdefiniowane tutaj LimitsSetup=Ograniczenia / Precision konfiguracji LimitsDesc=Tutaj możesz zdefiniować limity, dokładności i optymalizacje używane przez Dolibarr @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Użyj typów wydarzeń (zarządzanych w menu Ustawienia -> AGENDA_USE_EVENT_TYPE_DEFAULT=Automatycznie ustaw tę domyślną wartość dla typu zdarzenia w formularzu tworzenia wydarzenia AGENDA_DEFAULT_FILTER_TYPE=Automatycznie ustaw ten typ wydarzenia w filtrze wyszukiwania widoku planu AGENDA_DEFAULT_FILTER_STATUS=Automatycznie ustawiaj ten stan dla wydarzeń w filtrze wyszukiwania w widoku planu zajęć +AGENDA_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Który widok chcesz otworzyć domyślnie po wybraniu menu Plan AGENDA_REMINDER_BROWSER=Włącz przypomnienie o zdarzeniu w przeglądarce użytkownika (Kiedy nadejdzie data przypomnienia, przeglądarka wyświetli wyskakujące okienko. Każdy użytkownik może wyłączyć takie powiadomienia w ustawieniach powiadomień przeglądarki). AGENDA_REMINDER_BROWSER_SOUND=Włącz powiadomienia dźwiękowe @@ -2129,6 +2139,7 @@ CodeLastResult=Kod najnowszego wyniku NbOfEmailsInInbox=Liczba e-maili w katalogu źródłowym LoadThirdPartyFromName=Załaduj wyszukiwanie osób trzecich na %s (tylko ładowanie) LoadThirdPartyFromNameOrCreate=Załaduj wyszukiwanie osób trzecich na %s (utwórz, jeśli nie znaleziono) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Wiadomość z rozmowy zainicjowanej pierwszym e-mailem wysłanym przez Dolibarr WithoutDolTrackingID=Wiadomość z rozmowy zainicjowanej pierwszym e-mailem NIE wysłanym od Dolibarr @@ -2355,3 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/pl_PL/install.lang b/htdocs/langs/pl_PL/install.lang index 24a06369132..047c47cf183 100644 --- a/htdocs/langs/pl_PL/install.lang +++ b/htdocs/langs/pl_PL/install.lang @@ -51,7 +51,6 @@ DatabaseName=Nazwa bazy danych DatabasePrefix=Prefiks tabeli bazy danych DatabasePrefixDescription=Prefiks tabeli bazy danych. Jeśli pusty, domyślnie llx_. AdminLogin=Konto użytkownika właściciela bazy danych Dolibarr. -PasswordAgain=Potwierdź hasło ponownie AdminPassword=Hasło do bazy danych CreateDatabase=Utwórz bazę danych CreateUser=Utwórz konto użytkownika lub przyznaj uprawnienia kontu użytkownika w bazie danych Dolibarr @@ -89,7 +88,7 @@ LoginAlreadyExists=Już istnieje DolibarrAdminLogin=Użytkownik administracyjny Dolibarra AdminLoginAlreadyExists=Konto administratora Dolibarr „ %s ” już istnieje. Wróć, jeśli chcesz utworzyć kolejny. FailedToCreateAdminLogin=Utworzenie konta administratora Dolibarr nie powiodło się. -WarningRemoveInstallDir=Ostrzeżenie, ze względów bezpieczeństwa, po zakończeniu instalacji lub aktualizacji należy dodać plik o nazwie install.lock do katalogu dokumentów Dolibarr, aby zapobiec przypadkowemu / złośliwemu użyciu narzędzi instalacyjnych. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=Niedostępne w tym PHP ChoosedMigrateScript=Wybierz skrypt migracyjny DataMigration=Migracja bazy danych (dane) @@ -209,7 +208,12 @@ HideNotAvailableOptions=Ukryj niedostępne opcje ErrorFoundDuringMigration=Błędy zostały zgłoszone podczas procesu migracji, więc następny krok nie jest dostępny. Aby zignorować błędy, możesz kliknąć tutaj , ale aplikacja lub niektóre funkcje mogą nie działać poprawnie, dopóki błędy nie zostaną rozwiązane. YouTryInstallDisabledByDirLock=Aplikacja próbowała przeprowadzić samodzielną aktualizację, ale strony instalacji / aktualizacji zostały wyłączone ze względów bezpieczeństwa (nazwa katalogu została zmieniona z przyrostkiem .lock).
YouTryInstallDisabledByFileLock=Aplikacja próbowała przeprowadzić samodzielną aktualizację, ale strony instalacji / aktualizacji zostały wyłączone ze względów bezpieczeństwa (ze względu na istnienie pliku blokady install.lock w katalogu dokumentów dolibarr).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=Kliknij tutaj, aby przejść do swojej aplikacji ClickOnLinkOrRemoveManualy=Jeśli trwa aktualizacja, poczekaj. Jeśli nie, kliknij poniższe łącze. Jeśli zawsze widzisz tę samą stronę, musisz usunąć / zmienić nazwę pliku install.lock w katalogu dokumentów. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=Załadowany FunctionTest=Test działania +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/pt_BR/admin.lang b/htdocs/langs/pt_BR/admin.lang index 14092ad9ee3..73a4bb7c0bf 100644 --- a/htdocs/langs/pt_BR/admin.lang +++ b/htdocs/langs/pt_BR/admin.lang @@ -338,7 +338,6 @@ ExtrafieldCheckBox=Caixas de seleção ExtrafieldCheckBoxFromList=Caixas de seleção da tabela ExtrafieldLink=Link para um objeto ComputedFormula=Campo computado -ComputedFormulaDesc=Você pode inserir aqui uma fórmula usando outras propriedades do objeto ou qualquer código PHP para obter um valor computado dinâmico. Você pode usar qualquer fórmula compatível com PHP, incluindo o "?" operador de condição e objeto global seguinte: $db, $conf, $langs, $mysoc, $user, $object .
AVISO : Apenas algumas propriedades do $object podem estar disponíveis. Se você precisar de propriedades não carregadas, basta buscar o objeto em sua fórmula, como no segundo exemplo.
Usar um campo computado significa que você não pode inserir qualquer valor da interface. Além disso, se houver um erro de sintaxe, a fórmula pode retornar nada.

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

Exemplo para recarregar o objeto
(($reloadedobj = novo Societe($db)) && ($reloadedobj-> fetch ($obj-> id? $ obj-> id: ($obj-> rowid? $obj-> rowid: $object-> id )) > 0))? $reloadedobj-> array_options ['options_extrafieldkey'] * $reloadedobj-> capital / 5: '-1'

Outro exemplo de fórmula para forçar a carga do objeto e seu objeto pai:
(($reloadedobj = new Task($db)) && ($reloadedobj-> fetch ($object-> id) > 0) && ($secondloadedobj = new Project ($db)) && ($secondloadedobj-> fetch($reloadedobj-> fk_project) > 0)) ? $secondloadedobj-> ref: 'Projeto pai não encontrado' Computedpersistent=Armazenar campo computado ComputedpersistentDesc=Campos extra computados serão armazenados no banco de dados, no entanto, o valor será recalculado somente quando o objeto deste campo for alterado. Se o campo computado depender de outros objetos ou dados globais, esse valor pode estar errado !! ExtrafieldParamHelpselect=Lista de valores deve ser linhas com chave de formato, valor (onde a chave não pode ser '0')

por exemplo:
1, value1
2, value2
código3, valor3
...

Para que a lista dependa de outra lista de atributos complementares:
1, valor1 | opções_ pai_list_code : parent_key
2, valor2 | opções_ pai_list_code : parent_key

Para ter a lista dependendo de outra lista:
1, valor1 | parent_list_code : parent_key
2, value2 | parent_list_code : parent_key @@ -515,7 +514,6 @@ Module62000Name=Termos Internacionais de Comércio Module62000Desc=Adicione recursos para gerenciar Termos Internacionais de Comércio Module63000Desc=Gerenciar recursos (impressoras, carros, salas, ...) para alocar eventos Module94160Name=Recebimentos -Permission11=Ler Faturas de Clientes Permission12=Criar/Modificar Faturas de Clientes Permission14=Faturas de Clientes Validadas Permission15=Enviar Faturas de Clientes por E-Mail @@ -741,7 +739,6 @@ Permission1190=Aprovar pedidos de compra (segunda aprovação) Permission1191=Exportar pedidos de fornecedores e seus atributos Permission1201=Conseguir Resultado de uma Exportação Permission1202=Criar/Modificar uma Exportação -Permission1231=Ler faturas de fornecedores Permission1232=Criar/modificar faturas de fornecedores Permission1234=Excluir faturas de fornecedores Permission1235=Enviar faturas de fornecedores por e-mail @@ -956,7 +953,6 @@ SetupDescription4= %s -> %s

Este software é um conj SetupDescription5=Outras entradas do menu de configuração gerenciam parâmetros opcionais. SetupDescriptionLink= %s - %s SetupDescription3b=Parâmetros básicos usados para personalizar o comportamento padrão do seu aplicativo (por exemplo, para recursos relacionados ao país). -SetupDescription4b=Este software é um conjunto de muitos módulos/aplicativos. Os módulos relacionados às suas necessidades devem estar habilitados e configurados. As entradas do menu aparecerão com a ativação desses módulos. AuditedSecurityEvents=Eventos de segurança que são auditados NoSecurityEventsAreAduited=Nenhum evento de segurança é auditado. Você pode habilitá-los no menu %s InfoOS=Sobre o SO @@ -1011,6 +1007,7 @@ YouMustRunCommandFromCommandLineAfterLoginToUser=Você deve rodar esse comando n YourPHPDoesNotHaveSSLSupport=Função SSL functions não está disponível no seu PHP DownloadMoreSkins=Mais skins para baixar SimpleNumRefModelDesc=Retorna o número de referência no formato %s yymm-nnnn onde yy é o ano, mm é o mês e nnnn é um número de incremento automático sequencial sem redefinição +AdvancedNumRefModelDesc=Retorna o número de referência no formato %s yymm-nnnn onde yy é o ano, mm é o mês e nnnn é um número de incremento automático sequencial sem redefinição SimpleNumRefNoDateModelDesc=Retorna o número de referência no formato %s-nnnn onde nnnn é um número sequencial de incremento automático sem reinicialização ShowProfIdInAddress=Mostrar ID profissional com endereços ShowVATIntaInAddress=Ocultar número de IVA intracomunitário diff --git a/htdocs/langs/pt_MZ/admin.lang b/htdocs/langs/pt_MZ/admin.lang index 298b41c28c1..a7ccdbf4100 100644 --- a/htdocs/langs/pt_MZ/admin.lang +++ b/htdocs/langs/pt_MZ/admin.lang @@ -339,7 +339,6 @@ ExtrafieldCheckBox=Caixas de seleção ExtrafieldCheckBoxFromList=Caixas de seleção da tabela ExtrafieldLink=Link para um objeto ComputedFormula=Campo computado -ComputedFormulaDesc=Você pode inserir aqui uma fórmula usando outras propriedades do objeto ou qualquer código PHP para obter um valor computado dinâmico. Você pode usar qualquer fórmula compatível com PHP, incluindo o "?" operador de condição e objeto global seguinte: $db, $conf, $langs, $mysoc, $user, $object .
AVISO : Apenas algumas propriedades do $object podem estar disponíveis. Se você precisar de propriedades não carregadas, basta buscar o objeto em sua fórmula, como no segundo exemplo.
Usar um campo computado significa que você não pode inserir qualquer valor da interface. Além disso, se houver um erro de sintaxe, a fórmula pode retornar nada.

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

Exemplo para recarregar o objeto
(($reloadedobj = novo Societe($db)) && ($reloadedobj-> fetch ($obj-> id? $ obj-> id: ($obj-> rowid? $obj-> rowid: $object-> id )) > 0))? $reloadedobj-> array_options ['options_extrafieldkey'] * $reloadedobj-> capital / 5: '-1'

Outro exemplo de fórmula para forçar a carga do objeto e seu objeto pai:
(($reloadedobj = new Task($db)) && ($reloadedobj-> fetch ($object-> id) > 0) && ($secondloadedobj = new Project ($db)) && ($secondloadedobj-> fetch($reloadedobj-> fk_project) > 0)) ? $secondloadedobj-> ref: 'Projeto pai não encontrado' Computedpersistent=Armazenar campo computado ComputedpersistentDesc=Campos extra computados serão armazenados no banco de dados, no entanto, o valor será recalculado somente quando o objeto deste campo for alterado. Se o campo computado depender de outros objetos ou dados globais, esse valor pode estar errado !! ExtrafieldParamHelpselect=Lista de valores deve ser linhas com chave de formato, valor (onde a chave não pode ser '0')

por exemplo:
1, value1
2, value2
código3, valor3
...

Para que a lista dependa de outra lista de atributos complementares:
1, valor1 | opções_ pai_list_code : parent_key
2, valor2 | opções_ pai_list_code : parent_key

Para ter a lista dependendo de outra lista:
1, valor1 | parent_list_code : parent_key
2, value2 | parent_list_code : parent_key @@ -517,7 +516,6 @@ Module62000Desc=Adicione recursos para gerenciar Termos Internacionais de Comér Module63000Name=Resorsas Module63000Desc=Gerenciar recursos (impressoras, carros, salas, ...) para alocar eventos Module94160Name=Recebimentos -Permission11=Ler Faturas de Clientes Permission12=Criar/Modificar Faturas de Clientes Permission14=Faturas de Clientes Validadas Permission15=Enviar Faturas de Clientes por E-Mail @@ -736,7 +734,6 @@ Permission1190=Aprovar pedidos de compra (segunda aprovação) Permission1191=Exportar pedidos de fornecedores e seus atributos Permission1201=Conseguir Resultado de uma Exportação Permission1202=Criar/Modificar uma Exportação -Permission1231=Ler faturas de fornecedores Permission1232=Criar/modificar faturas de fornecedores Permission1234=Excluir faturas de fornecedores Permission1235=Enviar faturas de fornecedores por e-mail @@ -954,7 +951,6 @@ SetupDescription4= %s -> %s

Este software é um conj SetupDescription5=Outras entradas do menu de configuração gerenciam parâmetros opcionais. SetupDescriptionLink= %s - %s SetupDescription3b=Parâmetros básicos usados para personalizar o comportamento padrão do seu aplicativo (por exemplo, para recursos relacionados ao país). -SetupDescription4b=Este software é um conjunto de muitos módulos/aplicativos. Os módulos relacionados às suas necessidades devem estar habilitados e configurados. As entradas do menu aparecerão com a ativação desses módulos. AuditedSecurityEvents=Eventos de segurança que são auditados NoSecurityEventsAreAduited=Nenhum evento de segurança é auditado. Você pode habilitá-los no menu %s InfoOS=Sobre o SO @@ -1009,6 +1005,7 @@ YouMustRunCommandFromCommandLineAfterLoginToUser=Você deve rodar esse comando n YourPHPDoesNotHaveSSLSupport=Função SSL functions não está disponível no seu PHP DownloadMoreSkins=Mais skins para baixar SimpleNumRefModelDesc=Retorna o número de referência no formato %s yymm-nnnn onde yy é o ano, mm é o mês e nnnn é um número de incremento automático sequencial sem redefinição +AdvancedNumRefModelDesc=Retorna o número de referência no formato %s yymm-nnnn onde yy é o ano, mm é o mês e nnnn é um número de incremento automático sequencial sem redefinição SimpleNumRefNoDateModelDesc=Retorna o número de referência no formato %s-nnnn onde nnnn é um número sequencial de incremento automático sem reinicialização ShowProfIdInAddress=Mostrar ID profissional com endereços ShowVATIntaInAddress=Ocultar número de IVA intracomunitário diff --git a/htdocs/langs/pt_PT/admin.lang b/htdocs/langs/pt_PT/admin.lang index abd4fdfc59f..3e9068e3bb2 100644 --- a/htdocs/langs/pt_PT/admin.lang +++ b/htdocs/langs/pt_PT/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Caixas de marcação ExtrafieldCheckBoxFromList=Caixas de marcação da tabela ExtrafieldLink=Vincular a um objeto ComputedFormula=Campo calculado -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->fetchNoCompute($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->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Store computed field ComputedpersistentDesc=Computed extra fields will be stored in the database, however, the value will only be recalculated when the object of this field is changed. If the computed field depends on other objects or global data this value might be wrong!! ExtrafieldParamHelpPassword=Deixar esse campo em branco significa que esse valor será armazenado sem criptografia (o campo deve ser oculto apenas com estrela na tela).
Defina 'auto' para usar a regra de criptografia padrão para salvar a senha no banco de dados (o valor lido será o hash apenas, nenhuma maneira de recuperar o valor original) @@ -645,6 +645,8 @@ Module2300Name=Tarefas agendadas Module2300Desc=Gestão de trabalhos agendados (alias cron ou tabela chrono) Module2400Name=Eventos/Agenda Module2400Desc=Provas de pista. Registre eventos automáticos para fins de rastreamento ou registre eventos ou reuniões manuais. Este é o módulo principal para um bom gerenciamento de relacionamento com o cliente ou fornecedor. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=SGD / GEC Module2500Desc=Sistema de Gestão de Documentos / Gestão de Conteúdo Eletrónico. Organização automática dos seus documentos gerados ou armazenados. Compartilhe-os quando precisar. Module2600Name=API / Web services (SOAP server) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=Capacidades de conversões GeoIP Maxmind Module3200Name=Arquivos inalteráveis Module3200Desc=Ativar um registro inalterável de eventos de negócios. Eventos são arquivados em tempo real. O log é uma tabela somente leitura de eventos encadeados que podem ser exportados. Este módulo pode ser obrigatório para alguns países. +Module3300Name=Module Builder +Module3200Desc=Ativar um registro inalterável de eventos de negócios. Eventos são arquivados em tempo real. O log é uma tabela somente leitura de eventos encadeados que podem ser exportados. Este módulo pode ser obrigatório para alguns países. Module3400Name=Redes sociais Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...). Module4000Name=GRH @@ -700,8 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Adicione recursos para gerenciar Incoterms Module63000Name=Recursos Module63000Desc=Manage resources (printers, cars, rooms, ...) for allocating to events +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Receptions -Permission11=Consultar faturas a clientes +Permission11=Read customer invoices (and payments) Permission12=Criar/modificar faturas a clientes Permission13=Invalidar faturas de clientes Permission14=Validar faturas a clientes @@ -943,7 +949,7 @@ Permission1190=Approve (second approval) purchase orders Permission1191=Export supplier orders and their attributes Permission1201=Obter resultado de uma exportação Permission1202=Criar/Modificar uma exportação -Permission1231=Leia as faturas do fornecedor +Permission1231=Read vendor invoices (and payments) Permission1232=Criar / modificar faturas de fornecedores Permission1233=Validar faturas de fornecedores Permission1234=Excluir faturas de fornecedor @@ -1230,7 +1236,7 @@ SetupDescription4= %s -> %s

Este software é um con SetupDescription5=Outras entradas do menu Setup gerenciam parâmetros opcionais. SetupDescriptionLink=%s - %s SetupDescription3b=Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Security events that are audited NoSecurityEventsAreAduited=No security events are audited. You can enable them from menu %s Audit=Eventos de segurança @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive=Os acionadores deste ficheiro estão ativos, isto po GeneratedPasswordDesc=Escolha o método a ser usado para senhas geradas automaticamente. DictionaryDesc=Insira todos os dados de referência. Você pode adicionar os seus valores aos valores predefinidos. ConstDesc=Esta página permite que você edite (substitua) parâmetros não disponíveis em outras páginas. Em sua maioria, esses parâmetros são reservados apenas para desenvolvedores / solução de problemas avançada. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=Aqui são definidos todos os outros parâmetros relacionados com segurança. LimitsSetup=Configuração de limites/precisão LimitsDesc=Você pode definir limites, precisões e otimizações usadas pelo Dolibarr aqui @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Use tipos de eventos (gerenciados no menu Setup -> Diction AGENDA_USE_EVENT_TYPE_DEFAULT=Definir automaticamente este valor padrão para o tipo de evento no formulário de criação de evento AGENDA_DEFAULT_FILTER_TYPE=Definir automaticamente esse tipo de evento no filtro de pesquisa da visualização da agenda AGENDA_DEFAULT_FILTER_STATUS=Definir automaticamente este status para eventos no filtro de pesquisa da visualização da agenda +AGENDA_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Which view do you want to open by default when selecting menu Agenda AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (When remind date is reached, a popup is shown by the browser. Each user can disable such notifications from its browser notification setup). AGENDA_REMINDER_BROWSER_SOUND=Ativar notificação sonora @@ -2129,6 +2139,7 @@ CodeLastResult=Latest result code NbOfEmailsInInbox=Number of emails in source directory LoadThirdPartyFromName=Load third party searching on %s (load only) LoadThirdPartyFromNameOrCreate=Load third party searching on %s (create if not found) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Message from a conversation initiated by a first email sent from Dolibarr WithoutDolTrackingID=Message from a conversation initiated by a first email NOT sent from Dolibarr @@ -2355,3 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/pt_PT/install.lang b/htdocs/langs/pt_PT/install.lang index 31f5a8642b3..964c155c622 100644 --- a/htdocs/langs/pt_PT/install.lang +++ b/htdocs/langs/pt_PT/install.lang @@ -51,7 +51,6 @@ DatabaseName=Nome da Base de Dados DatabasePrefix=Prefixo da tabela de banco de dados DatabasePrefixDescription=Prefixo da tabela do banco de dados. Se vazio, o padrão é llx_. AdminLogin=Conta de usuário para o proprietário do banco de dados Dolibarr. -PasswordAgain=Redigite a confirmação da senha AdminPassword=A senha para o utilizador da base de dados Dolibarr. CreateDatabase=Criar base de dados CreateUser=Crie uma conta de usuário ou conceda permissão de conta de usuário no banco de dados Dolibarr @@ -89,7 +88,7 @@ LoginAlreadyExists=Já existe DolibarrAdminLogin=Sessão Administrador Dolibarr AdminLoginAlreadyExists=Conta de administrador Dolibarr ' %s ' já existe. Volte se você quiser criar outro. FailedToCreateAdminLogin=Falha na criação da conta de Administrador do Dolibarr. -WarningRemoveInstallDir=Atenção, por razões de segurança, assim que a instalação ou atualização estiver completa, você deve adicionar um arquivo chamado install.lock no diretório de documentos do Dolibarr para evitar o uso acidental / malicioso das ferramentas de instalação novamente. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=Não disponível neste PHP ChoosedMigrateScript=Escolhido migrar script DataMigration=Migração da base-de-dados (dados) @@ -209,7 +208,12 @@ HideNotAvailableOptions=Ocultar opções indisponíveis ErrorFoundDuringMigration=Erro (s) foram relatados durante o processo de migração, portanto, a próxima etapa não está disponível. Para ignorar erros, você pode clicar aqui , mas o aplicativo ou alguns recursos podem não funcionar corretamente até que os erros sejam resolvidos. YouTryInstallDisabledByDirLock=O aplicativo tentou fazer o upgrade automático, mas as páginas de instalação / atualização foram desativadas para segurança (o diretório foi renomeado com o sufixo .lock).
YouTryInstallDisabledByFileLock=O aplicativo tentou fazer o upgrade automático, mas as páginas de instalação / atualização foram desativadas para segurança (pela existência de um arquivo de bloqueio install.lock no diretório de documentos dolibarr). +YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=Clique aqui para ir ao seu aplicativo ClickOnLinkOrRemoveManualy=If an upgrade is in progress, please wait. If not, click on the following link. If you always see this same page, you must remove/rename the file install.lock in the documents directory. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=Loaded FunctionTest=Function test +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/ro_RO/admin.lang b/htdocs/langs/ro_RO/admin.lang index 4d36c0d27c3..fe6f24b2aa8 100644 --- a/htdocs/langs/ro_RO/admin.lang +++ b/htdocs/langs/ro_RO/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Casete de bifare ExtrafieldCheckBoxFromList=Casete de selectare din tabel ExtrafieldLink=Link către un obiect ComputedFormula=Câmp calculat -ComputedFormulaDesc=Puteți introduce aici o formulă folosind alte proprietăți ale obiectului sau orice cod PHP pentru a obține o valoare calculată dinamic. Puteți utiliza orice formule compatibile PHP, inclusiv "?" operator de condiții și următorul obiect global: $db, $conf, $langs, $mysoc, $user, $object.
ATENŢIE: Doar unele proprietăți $object pot fi disponibile. Dacă aveți nevoie de o proprietate care nu este încărcată, introduceți singur obiectul în formula dvs. ca în cel de-al doilea exemplu.
Utilizarea unui câmp calculat înseamnă că nu puteți introduce nici o valoare din interfață. De asemenea, dacă există o eroare de sintaxă, formula nu poate returna nimic.\n

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

Exemplu cu reîncărcarea obiectului
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

Un alt exemplu de formulă pentru a forța încărcarea obiectului și a obiectului său părinte:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Proiectul părinte nu a fost găsit' +ComputedFormulaDesc=Poți introduce aici o formulă folosind alte proprietăți ale obiectului sau orice codare PHP pentru a obține o valoare calculată dinamică. Poți utiliza orice formulă compatibilă cu PHP, inclusiv "?" operator de condiție și următorul obiect global: $db, $conf, $langs, $mysoc, $user, $objectoffield.
ATENȚIE: Dacă ai nevoie de proprietățile unui obiect neîncărcat, adu obiectul în formula ta ca în a doilea exemplu.
Folosind un câmp calculat înseamnă că nu poți introduce nicio valoare din interfață. De asemenea, dacă există o eroare de sintaxă, formula poate returna nimic.

Exemplu de formulă:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Exemplu de reîncărcare a obiectului
(( $reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->id) > 0 ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1' )

Alt exemplu de formulă pentru a forța încărcarea obiectului și a obiectului părinte:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Proiect($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: „Proiectul părinte nu a fost găsit” Computedpersistent=Câmp calculat stocat ComputedpersistentDesc=Extracâmpurile calculate vor fi stocate în baza de date, cu toate acestea, valorile lor vor fi recalculate numai atunci când obiectul acestui câmp este modificat. Dacă câmpul calculat depinde de alte obiecte sau date globale, aceste valori ar putea fi greșite!! ExtrafieldParamHelpPassword=Lăsând acest câmp necompletat înseamnă că această valoare va fi stocată fără criptare (câmpul trebuie ascuns cu steluţe pe ecran).
Setaţi 'auto' pentru utilizarea regulii de criptare implicită la salvarea parolei în baza de date (atunci valoarea citită va fi numai hash, nefiind nici o şansă de a recupera valoarea inițială) @@ -704,8 +704,10 @@ Module62000Name=Incoterm Module62000Desc=Adăugați caracteristici pentru a gestiona Incoterms Module63000Name=Resurse Module63000Desc=Gestionarea resurselor (imprimante, mașini, camere, ...) pentru a le aloca evenimentelor +Module66000Name=Activare autentificare OAuth2 +Module66000Desc=Furnizează un instrument pentru a genera și gestiona token-uri OAuth2. Token-ul poate fi apoi folosit de alte module. Module94160Name=Recepţii -Permission11=Citeşte facturi clienţi +Permission11=Citește facturile clienți (și plăți) Permission12=Creare/modificare facturi clienţi Permission13=Invalidează facturi client Permission14=Validare facturi client @@ -947,7 +949,7 @@ Permission1190=Aprobă comenzile de achiziție (a doua aprobare) Permission1191=Export comenzi de achiziţie cu atribute Permission1201=Descarcă rezultatul unui export de date Permission1202=Creare/modificare export de date -Permission1231=Citeşte facturi furnizori +Permission1231=Citește facturi furnizor (și plăți) Permission1232=Creare/modificare facturi furnizori Permission1233=Validare facturi furnizori Permission1234=Șterge facturi furnizori @@ -1234,7 +1236,7 @@ SetupDescription4=%s->%s

Acest software este o suită de SetupDescription5=Meniul Alte setări gestionează parametrii opționali. SetupDescriptionLink=%s - %s SetupDescription3b=Parametrii de bază utilizați pentru a personaliza comportamentul implicit al aplicației (de exemplu, pentru funcționalităţile legate de țară). -SetupDescription4b=Acest software este o suită de mai multe module/aplicații. Modulele care vă sunt necesare trebuie să fie activate și configurate. Intrările din meniu vor apărea odată cu activarea acestor module. +SetupDescription4b=Acest software este o suită de multe module/aplicații. Modulele de care ai nevoie trebuiesc activate. Intrările din meniu vor apărea odată cu activarea acestor module. AuditedSecurityEvents=Evenimentele de securitate care sunt auditate NoSecurityEventsAreAduited=Niciun eveniment de securitate nu este auditat. Le poţi activa din meniul %s Audit=Evenimente securitate @@ -1762,7 +1764,7 @@ AdvancedEditor=Editor avansat ActivateFCKeditor=Activaţi editorul avansat pentru: FCKeditorForNotePublic=Creare/editare WYSIWIG câmp "note publice" pe elemente FCKeditorForNotePrivate=Creare/editare WYSIWIG câmp "note private" pe elemente -FCKeditorForCompany=Creare/editare WYSIWIG câmp descriere elemente (cu excepția produselor/serviciilor)  +FCKeditorForCompany=Creare/editare WYSIWIG câmp descriere elemente (cu excepția produselor/serviciilor) FCKeditorForProductDetails=Creare/editare WYSIWYG a descrierii produselor sau a liniilor pentru obiecte (linii de oferte, comenzi, facturi, etc...). FCKeditorForProductDetails2=Atenție: Utilizarea acestei opțiuni pentru acest caz nu este recomandată, deoarece poate crea probleme cu caracterele speciale și formatarea paginii la generarea fișierelor PDF. FCKeditorForMailing= Creare/editare WYSIWIG pentru newslettere (Instrumente->Newslettere) @@ -2366,3 +2368,7 @@ MaxNumberOfAttachementOnForms=Numărul maxim de fișiere unite într-un formular IfDefinedUseAValueBeetween=Dacă este definită, utilizează o valoare între %s și %s Reload=Reîncărcare ConfirmReload=Confirmare reîncărcare modul +WarningModuleHasChangedLastVersionCheckParameter=Atenție: modulul %s a setat un parametru pentru a-și verifica versiunea la fiecare accesare de pagină. Aceasta este o practică proastă și nepermisă care poate face ca pagina de administrare a modulelor să fie instabilă. Contactează autorul modulului pentru a remedia acest lucru. +WarningModuleHasChangedSecurityCsrfParameter=Atenție: modulul %s a dezactivat securitatea CSRF a instanței tale. Această acțiune este suspectă și este posibil ca instalarea ta să nu mai fie securizată. Contacteză autorul modulului pentru explicații.  +EMailsInGoingDesc=E-mailurile primite sunt gestionate de modulul %s. Trebuie să îl activezi și să îl configurezi dacă trebuie să accepți e-mailurile primite. +MAIN_IMAP_USE_PHPIMAP=Utilizează biblioteca PHP-IMAP pentru IMAP în loc de PHP IMAP nativ. Acest lucru permite, de asemenea, utilizarea unei conexiuni OAuth2 pentru IMAP (modulul OAuth trebuie, de asemenea, activat).  diff --git a/htdocs/langs/ro_RO/agenda.lang b/htdocs/langs/ro_RO/agenda.lang index 4ef2f59df66..8a6a9fc63e6 100644 --- a/htdocs/langs/ro_RO/agenda.lang +++ b/htdocs/langs/ro_RO/agenda.lang @@ -177,5 +177,6 @@ ReminderType=Tip callback AddReminder=Creați o notificare automată de reminder pentru acest eveniment ErrorReminderActionCommCreation=Eroare la crearea notificării de reminder pentru acest eveniment BrowserPush=Notificări popup browser +Reminders=Reminder-e ActiveByDefault=Activat implicit Until=până diff --git a/htdocs/langs/ro_RO/banks.lang b/htdocs/langs/ro_RO/banks.lang index 19400a27dd4..a69fcdbe705 100644 --- a/htdocs/langs/ro_RO/banks.lang +++ b/htdocs/langs/ro_RO/banks.lang @@ -49,6 +49,9 @@ BankAccountDomiciliation=Adresa băncii BankAccountCountry=Ţară Cont BankAccountOwner=Nume deţinător cont BankAccountOwnerAddress=Adresă deţinător Cont +BankAccountOwnerZip=Cod poștal deținător cont +BankAccountOwnerTown=Localitate deținător cont +BankAccountOwnerCountry=Țară deținător cont CreateAccount=Crează cont NewBankAccount=Cont nou NewFinancialAccount=Cont financiar nou @@ -185,4 +188,3 @@ AlreadyOneBankAccount=Este deja definit un cont bancar SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation=Transfer SEPA: 'Tip de plată' la nivelul 'Transfer de credit'. SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp=Când se generează un fișier XML SEPA pentru transferuri de credit, secțiunea "PaymentTypeInformation" poate fi acum plasată în secțiunea "CreditTransferTransactionInformation" (în loc de secțiunea "Plată"). Vă recomandăm insistent să păstrați această casetă nebifată pentru a plasa PaymentTypeInformation la nivel de plată, deoarece toate băncile nu o vor accepta neapărat la nivel de CreditTransferTransactionInformation. Contactați banca înainte de a plasa PaymentTypeInformation la nivel CreditTransferTransactionInformation. ToCreateRelatedRecordIntoBank=De creat înregistrarea bancară aferentă care lipseşte -BanklineExtraFields=Extracâmpuri linie bancară diff --git a/htdocs/langs/ro_RO/dict.lang b/htdocs/langs/ro_RO/dict.lang index 24a8bcd5ed3..7e58761abb1 100644 --- a/htdocs/langs/ro_RO/dict.lang +++ b/htdocs/langs/ro_RO/dict.lang @@ -247,6 +247,7 @@ CountryJE=Jersey CountryME=Muntenegru CountryBL=Saint Barthélemy CountryMF=Saint Martin +CountryXK=Kosovo ##### Civilities ##### CivilityMME=D-na diff --git a/htdocs/langs/ro_RO/errors.lang b/htdocs/langs/ro_RO/errors.lang index 3ffcfd9637d..86919a04ae3 100644 --- a/htdocs/langs/ro_RO/errors.lang +++ b/htdocs/langs/ro_RO/errors.lang @@ -304,6 +304,11 @@ ErrorValueCantBeNull=Valoarea pentru %s nu poate fi nulă ErrorDateOfMovementLowerThanDateOfFileTransmission=Data tranzacției bancare nu poate fi anterioară datei de transmitere a fișierului ErrorTooMuchFileInForm=Prea multe fișiere în formular, numărul maxim de fișier(e) este %s ErrorSessionInvalidatedAfterPasswordChange=Sesiunea a fost invalidată în urma unei modificări a parolei, a stării sau a datelor de valabilitate. Reconectează-te. +ErrorExistingPermission = Permisiunea %s pentru obiectul %s există deja +ErrorFieldExist=Valoarea pentru %s există deja +ErrorEqualModule=Modul invalid în %s +ErrorFieldValue=Valoarea pentru %s este incorectă +ErrorCoherenceMenu=%s este obligatoriu când % egal STÂNGA # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Parametrul tău PHP upload_max_filesize (%s) este mai mare decât paramentrul PHP post_max_size (%s). Aceasta nu este o configuraţie consistentă. @@ -342,6 +347,7 @@ WarningPaypalPaymentNotCompatibleWithStrict=Valoarea 'Strictă' face ca funcții WarningThemeForcedTo=Atenție, tema %s a fost forțată de constanta ascunsă MAIN_FORCETHEME  WarningPagesWillBeDeleted=Atenție, acest lucru va șterge și toate paginile/containerele existente ale site-ului. Ar trebui să exporți site-ul înainte, astfel încât să ai o copie de rezervă pentru a-l reimporta mai târziu.  WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal=Validarea automată este dezactivată când opțiunea de scădere a stocului este setată pe "Validare factură". +WarningModuleNeedRefrech = Modulul %s a fost dezavtivat. Nu uita să-l activezi # Validate RequireValidValue = Valoare invalidă diff --git a/htdocs/langs/ro_RO/install.lang b/htdocs/langs/ro_RO/install.lang index 7c89d198bf5..d4de0c5fb16 100644 --- a/htdocs/langs/ro_RO/install.lang +++ b/htdocs/langs/ro_RO/install.lang @@ -28,6 +28,7 @@ ErrorPHPVersionTooLow=Versiune PHP este prea veche. Versiunea %s sau mai nouă e ErrorPHPVersionTooHigh=Versiune PHP prea nouă. Versiunea %s sau mai veche este necesară. ErrorConnectedButDatabaseNotFound=Conectarea la server a reușit, dar baza de date '%s' nu a fost găsită. ErrorDatabaseAlreadyExists=Baza de date '%s' există deja. +ErrorNoMigrationFilesFoundForParameters=Nu a fost găsit niciun fișier de migrare pentru versiunile selectate IfDatabaseNotExistsGoBackAndUncheckCreate=Dacă baza de date nu există, reveniți și bifați opțiunea "Creare bază de date". IfDatabaseExistsGoBackAndCheckCreate=Dacă baza de date există deja, du-te înapoi şi debifează opţiunea "Creare bază de date". WarningBrowserTooOld=Versiunea browserului este prea veche. Este recomandat să vă actualizați browserul la o versiune recentă de Firefox, Chrome sau Opera. @@ -50,7 +51,6 @@ DatabaseName=Nume bază de date DatabasePrefix=Prefixul tabel bază de date DatabasePrefixDescription=Prefixul tabelului din baza de date. Dacă este gol, implicit este llx_. AdminLogin=Cont utilizator pentru proprietarul bazei de date a sistemului. -PasswordAgain=Rescrieți confirmarea parolei AdminPassword=Parola pentru proprietarul bazei de date a sistemului. CreateDatabase=Creare bază de date CreateUser=Creați un cont de utilizator sau acordați permisiunea unui cont de utilizator în baza de date a sistemului @@ -88,7 +88,7 @@ LoginAlreadyExists=Există deja DolibarrAdminLogin=Sistem admin autentificare AdminLoginAlreadyExists=Contul de administrator sistem '%s' există deja. Întoarce-te dacă vrei să creezi altul. FailedToCreateAdminLogin=Eşec la crearea contului de administrator sistem. -WarningRemoveInstallDir=Avertisment, din motive de securitate, odată ce instalarea sau actualizarea este completă, trebuie să adăugați un fișier numit install.lock în directorul de documente sistem pentru a preveni utilizarea accidentală/rău intenționată a instrumentelor de instalare din nou . +WarningRemoveInstallDir=Atenție, din motive de securitate, odată ce procesul de instalare este finalizat, trebuie să adaugi un fișier numit install.lock în directorul de documente Dolibarr pentru a preveni din nou utilizarea accidentală/răuvoitoare a instrumentelor de instalare. FunctionNotAvailableInThisPHP=Nu este disponibil în acest PHP ChoosedMigrateScript=Alegeţi script-ul de migraţie DataMigration=Migrarea bazei de date (date) @@ -208,7 +208,12 @@ HideNotAvailableOptions=Ascunde opțiunile indisponibile ErrorFoundDuringMigration=Au fost raportate eroare(ri) în timpul procesului de migrare, astfel încât următorul pas nu este disponibil. Pentru a ignora erorile, puteți apăsa aici, dar este posibil ca aplicația sau unele caracteristici să nu funcționeze corect până când erorile nu sunt rezolvate. YouTryInstallDisabledByDirLock=Sistemul a încercat să se autoactualizeze, însă paginile de instalare/upgrade au fost dezactivate din motive de securitate (directorul este redenumit cu sufixul .lock).
YouTryInstallDisabledByFileLock=Aplicația a încercat să se autoactualizeze, însă paginile de instalare/upgrade au fost dezactivate din motive de securitate (există un fișier de blocare install.lock în directorul de documente al sistemului).
+YouTryUpgradeDisabledByMissingFileUnLock=Aplicația a încercat să se auto-actualizeze, dar procesul de actualizare nu este permis în prezent.
ClickHereToGoToApp=Faceți clic aici pentru a merge la aplicația ta. ClickOnLinkOrRemoveManualy=Dacă o actualizare este în curs, așteptați. Dacă nu, faceți clic pe următorul link. Dacă vedeți întotdeauna aceeași pagină, trebuie să eliminați/să redenumiți fișierul install.lock din directorul documentelor. +ClickOnLinkOrCreateUnlockFileManualy=Dacă o actualizare este în curs, așteaptă... Dacă nu, trebuie să creezi un fișier upgrade.unlock în directorul de documente al sistemului.  Loaded=Încărcat FunctionTest=Test de funcţionare +NodoUpgradeAfterDB=Nicio acțiune solicitată de module externe după actualizarea bazei de date +NodoUpgradeAfterFiles=Nicio acțiune solicitată de module externe după actualizarea fișierelor sau directoarelor +MigrationContractLineRank=Migrare linie contract pentru a utiliza rangul (și activare Re-comandă) diff --git a/htdocs/langs/ro_RO/main.lang b/htdocs/langs/ro_RO/main.lang index cb697ae5b02..4e14d42827f 100644 --- a/htdocs/langs/ro_RO/main.lang +++ b/htdocs/langs/ro_RO/main.lang @@ -923,6 +923,7 @@ NotAllExportedMovementsCouldBeRecordedAsExported=Nu toate mişcările exportate Miscellaneous=Diverse Calendar=Calendar GroupBy=Grupare după... +GroupByX=Grupare după %s ViewFlatList=Vizualizare listă aplatizată ViewAccountList=Afişare registru jurnal ViewSubAccountList=Afişare registru analitice @@ -1222,3 +1223,5 @@ AddToContacts=Adaugă adresă la contactele mele LastAccess=Ultima accesare UploadAnImageToSeeAPhotoHere=Încarcă o imagine din fila %s pentru a vedea o fotografie aici LastPasswordChangeDate= Data ultimei modificări a parolei +PublicVirtualCardUrl=Pagina virtuală de cărți de vizită +TreeView=Vizualizare arborescentă diff --git a/htdocs/langs/ro_RO/members.lang b/htdocs/langs/ro_RO/members.lang index 3d77a5f9eda..7f901d0d43d 100644 --- a/htdocs/langs/ro_RO/members.lang +++ b/htdocs/langs/ro_RO/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=Statistici contribuţii NbOfSubscriptions=Număr contribuţii AmountOfSubscriptions=Suma colectată din contribuţii TurnoverOrBudget=Cifra de afaceri (pentru o companie), sau Bugetul (pentru o fundaţie) -DefaultAmount=Valoarea implicită a contribuţiei +DefaultAmount=Valoarea implicită a contribuției (utilizată numai dacă nu este definită nicio sumă la nivel de tip de membru) +MinimumAmount=Suma minimă (utilizată numai atunci când suma contribuției este gratuită) CanEditAmount=Aderarea/înscrierea este gratuită CanEditAmountDetail=Vizitatorul poate alege/modifica suma cu care contribuie, indiferent de tipul de membru AmountIsLowerToMinimumNotice=dintr-un total de %s diff --git a/htdocs/langs/ro_RO/modulebuilder.lang b/htdocs/langs/ro_RO/modulebuilder.lang index f2cb75bc24d..99c123d6baa 100644 --- a/htdocs/langs/ro_RO/modulebuilder.lang +++ b/htdocs/langs/ro_RO/modulebuilder.lang @@ -1,7 +1,8 @@ # Dolibarr language file - Source file is en_US - loan +IdModule= Id modul ModuleBuilderDesc=Acest instrument trebuie folosit numai de utilizatori sau dezvoltatori experimentați. Oferă utilități pentru a construi sau edita propriul modul. Documentația pentru dezvoltarea manuală alternativă se găseşte aici. EnterNameOfModuleDesc=Introdu numele modulului/aplicației de creat fără spații. Foloseşte majuscule pentru a separa cuvintele (De exemplu: MyModule, EcommerceForShop, SyncWithMySystem...) -EnterNameOfObjectDesc=Introdu numele obiectului de creat fără spații. Foloseşte majuscule pentru a separa cuvinte (De exemplu: MyObject, Student, Teacher...). Se vor genera fișierul clasă CRUD, dar și fișierul API, paginile de listă/adăugare/editare/ștergere obiect și fișierele SQL. +EnterNameOfObjectDesc=Introdu numele obiectului de creat fără spații. Folosește majuscule pentru a separa cuvintele (de exemplu: MyObject, Student, Teacher...). Se vor genera fișierul clasei CRUD, paginile de listare/adăugare/editare/ștergere a obiectului și fișierele SQL. EnterNameOfDictionaryDesc=Introdu numele dicționarului de creat fără spații. Foloseşte majuscule pentru a separa cuvintele (de exemplu: MyDic...). Se va genera fişierul clasă, dar şi fişierul SQL. ModuleBuilderDesc2=Calea unde sunt generate/editate modulele (primul director pentru module externe definite în %s): %s ModuleBuilderDesc3=Module generate/editabile găsite: %s @@ -9,6 +10,7 @@ ModuleBuilderDesc4=Un modul este detectat ca "editabil" atunci când fișierul < NewModule=Modul nou NewObjectInModulebuilder=Obiect nou NewDictionary=Dicţionar nou +ModuleName=Nume modul ModuleKey=Cheie modul ObjectKey=Cheie obiect DicKey=Cheie dicţionar @@ -48,11 +50,14 @@ PathToModulePackage=Calea pentru arhiva zip a pachetului modul/aplicație PathToModuleDocumentation=Calea către fişierul documentaţie al modulului/aplicaţiei (%s) SpaceOrSpecialCharAreNotAllowed=Spațiile sau caracterele speciale nu sunt permise. FileNotYetGenerated=Fișierul nu a fost încă generat +GenerateCode=Generare cod RegenerateClassAndSql=Forţează actualizarea fişierelor .class şi .sql RegenerateMissingFiles=Generați fișierele lipsă SpecificationFile=Fişier de documentaţie LanguageFile=Fișier pentru limbă ObjectProperties=Proprietăţi obiect +Property=Proprietate +PropertyDesc=O proprietate este un atribut care caracterizează un obiect. Acest atribut are un cod, o etichetă și un tip cu mai multe opțiuni. ConfirmDeleteProperty=Sigur doriți să ștergeți proprietatea %s? Acest lucru va schimba codul în clasa PHP, dar va elimina și coloana din definiția tabelului de obiect. NotNull=Nu NUL NotNullDesc=1=Setare baza de date la NOT NULL, 0=Permite valori nule, -1=Permite valori nule forțând valoarea la NULL dacă este goală ('' sau 0) @@ -81,15 +86,16 @@ IsAMeasure=Este o măsură DirScanned=Directorul scanat NoTrigger=Niciun trigger NoWidget=Nu există widget -GoToApiExplorer=Explorer API +ApiExplorer=Explorer API ListOfMenusEntries=Lista intrărilor din meniu ListOfDictionariesEntries=Listă înregistrări dicţionare ListOfPermissionsDefined=Lista permisiunilor definite SeeExamples=Vedeți aici exemple -EnabledDesc=Condiție de activare a acestui câmp (Exemple: 1 sau $conf->global->MYMODULE_MYOPTION) -VisibleDesc=Este vizibil câmpul? (Exemple: 0 = Invizibil întotdeauna, 1 = Vizibil în liste și în formularele de creare/actualizare/vizualizare, 2 = Vizibil doar în liste, 3 = Vizibil numai în formularele de creare/actualizare/vizualizare (nu în liste), 4 = Vizibil în liste și în formularele de actualizare/vizualizare (nu în cele de creare), 5 = Vizibil numai pe formularul de vizualizare finală a listei (nu pe cele de creare sau actualizare).

Utilizarea unei valori negative înseamnă că câmp nu este afișat implicit în listă, dar poate fi selectat pentru vizualizare).

Poate fi o expresie, de exemplu:
preg_match ('/ public /', $ _SERVER ['PHP_SELF'])? 0: 1
($ user-> rights-> holiday-> define_holiday? 1: 0) -DisplayOnPdfDesc=Afișează acest câmp pe documente PDF compatibile, poți gestiona poziția cu câmpul „Poziție”.
În prezent, modelele PDF compatibile cunoscute sunt: ​​eratostene (comandă), espadon (livrări), sponge (facturi), cyan (propunere/ofertă), cornas (comandă furnizor)

Pentru document:
0 = nu este afișat
1 = afișare
2 = afișare numai dacă nu este gol

Pentru liniile documentului:
0 = nu este afișat
1 = afișat într-o coloană
3 = afișare în coloana de descriere a liniei după descriere
4 = afișare în coloana de descriere numai după descriere dacă nu este gol -DisplayOnPdf=Afişare în PDF +EnabledDesc=Condiție pentru a avea acest câmp activ.

Exemple:
1
isModEnabled('MAIN_MODULE_MYMODULE')
getDolGlobalString('MYMODULE_OPTION')==2 +VisibleDesc=Este câmpul vizibil? (Exemple: 0=Niciodată vizibil, 1=Vizibil în listă și în formularele de creare/actualizare/vizualizare, 2=Vizibil doar în listă, 3=Vizibil doar pe formularul de creare/actualizare/vizualizare (nu în listă), 4=Vizibil în listă și numai în formularul de actualizare/vizualizare (nu de creare), 5=Vizibil numai în formularul de vizualizare finală a listei (nu de creare, nu de actualizare).

Folosirea unei valori negative înseamnă că câmpul nu este afișat implicit în listă, dar poate fi selectat pentru vizualizare). +ItCanBeAnExpression=Poate fi o expresie. Exemplu:
preg_match('/public/', $_SERVER['PHP_SELF'])?0:1
$user->hasRight('holiday', 'define_holiday')?1:5 +DisplayOnPdfDesc=Afișați acest câmp pe documente PDF compatibile, poți gestiona poziția cu câmpul "Poziție".
Pentru document :
0 = nu este afișat
1 = afișat
2 = afișat numai dacă nu este gol

Pentru liniile documentului :
0 = neafișat
1 = afișat într-o coloană
3 = afișat în coloana descriere a rândului după descriere
4 = afișare în coloana descriere după descriere numai dacă nu este goală +DisplayOnPdf=În PDF IsAMeasureDesc=Poate fi cumulată valoarea câmpului pentru a obține un total în listă? (Exemple: 1 sau 0) SearchAllDesc=Este folosit câmpul pentru a face o căutare cu instrumentul de căutare rapidă? (Exemple: 1 sau 0) SpecDefDesc=Introduceți aici toată documentația pe care doriți să o furnizați împreună cu modulul, care nu este deja definită de alte file. Puteți utiliza .md sau mai bine, sintaxa îmbogăţită .asciidoc. @@ -130,18 +136,20 @@ UseSpecificEditorURL = Utilizează un URL specificat de editor UseSpecificFamily = Utilizează o familie specifică UseSpecificAuthor = Utilizează un autor specific UseSpecificVersion = Utilizează o versiune iniţială specifică -IncludeRefGeneration=Referința obiectului trebuie să fie generată automat prin reguli de numerotare personalizate  +IncludeRefGeneration=Referința acestui obiect trebuie să fie generată automat prin reguli de numerotare personalizate  IncludeRefGenerationHelp=Bifează această opțiune dacă vrei să incluzi cod pentru a gestiona automat generarea referinței folosind reguli de numerotare personalizate -IncludeDocGeneration=Vreau să generez documente din șabloane pentru obiect +IncludeDocGeneration=Vreau caracteristica să genereze unele documente (PDF, ODT) din șabloane pentru acest obiect IncludeDocGenerationHelp=Dacă bifaţi, va fi generat cod pentru a adăuga o casetă "Generare document" în înregistrarea respectivă. -ShowOnCombobox=Afişează valoare în combox +ShowOnCombobox=Afișare valoare în listele combo KeyForTooltip=Cheie pentru tooltip CSSClass=CSS pentru editare/creare formular CSSViewClass=CSS pentru vizualizare formular CSSListClass=CSS pentru listă NotEditable=Needitabil ForeignKey=Cheie străină -TypeOfFieldsHelp=Tip de câmpuri:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]]
'1” înseamnă că adăugăm un buton + după combo pentru a crea înregistrarea
'filter' este o condiție sql, de exemplu: 'status=1 AND fk_user=__USER_ID__ AND entity IN (__SHARED_ENTITIES__)' +ForeignKeyDesc=Dacă valoarea acestui câmp trebuie garantată să existe într-un alt tabel. Introdu aici o sintaxă care să corespundă valorii: tablename.parentfieldtocheck +TypeOfFieldsHelp=Exemplu:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]]
'1' înseamnă că adăugăm un buton + după combo pentru a crea înregistrarea
'filter' este o condiție sql, exemplu: 'status=1 AND fk_user=__USER_ID__ AND entity IN (__SHARED_ENTITIES__)' +TypeOfFieldsHelpIntro=Acesta este tipul câmpului/atributului. AsciiToHtmlConverter=Convertor ASCII la HTML AsciiToPdfConverter=Convertor ASCII la PDF TableNotEmptyDropCanceled=Tabelul nu este gol. Operaţiunea de drop a fost anulată. @@ -154,3 +162,14 @@ ListOfTabsEntries=Listă tab-uri TabsDefDesc=Defineşte aici tab-urile furnizate de modulul tău TabsDefDescTooltip=Tab-urile furnizate de modulul/aplicația ta sunt definite în matricea $this->tabs în fișierul descriptor al modulului. Poți edita manual acest fișier sau poți utiliza editorul încorporat.  BadValueForType=Valoare incorectă pentru tipul %s +DefinePropertiesFromExistingTable=Definește proprietăți dintr-un tabel existent +DefinePropertiesFromExistingTableDesc=Dacă un tabel din baza de date (pentru ca obiectul să fie creat) există deja, îl poți folosi pentru a defini proprietățile obiectului. +DefinePropertiesFromExistingTableDesc2=Lasă necompletat dacă tabelul nu există încă. Generatorul de cod va folosi diferite tipuri de câmpuri pentru a construi un exemplu de tabel pe care îl poți edita ulterior. +GeneratePermissions=vreau să adaug drepturile pentru acest obiect +GeneratePermissionsHelp=generează drepturi implicite pentru acest obiect +PermissionDeletedSuccesfuly=Permisiunea a fost eliminată cu succes +PermissionUpdatedSuccesfuly=Permisiunea a fost actualizată cu succes +PermissionAddedSuccesfuly=Permisiunea a fost adăugată cu succes +MenuDeletedSuccessfuly=Meniul a fost șters cu succes +MenuAddedSuccessfuly=Meniul a fost adăugat cu succes +MenuUpdatedSuccessfuly=Meniul a fost actualizat cu succes diff --git a/htdocs/langs/ro_RO/oauth.lang b/htdocs/langs/ro_RO/oauth.lang index 7608fdef072..4e77f4ce90c 100644 --- a/htdocs/langs/ro_RO/oauth.lang +++ b/htdocs/langs/ro_RO/oauth.lang @@ -9,8 +9,9 @@ HasAccessToken=Un token a fost generat și salvat în baza de date locală NewTokenStored=Token-ul a fost primit și salvat ToCheckDeleteTokenOnProvider=Faceți clic aici pentru a verifica/șterge autorizația salvată de furnizorul OAuth %s TokenDeleted=Token şters +GetAccess=Clic aici pentr a obține un token RequestAccess=Clic aici pentru a solicita/reînnoi accesul și pentru a primi un nou token  -DeleteAccess=Click aici pentru a șterge token-ul +DeleteAccess=Clic aici pentru a șterge token-ul UseTheFollowingUrlAsRedirectURI=Utilizați adresa URL următoare ca URI de redirecționare atunci când vă creați acreditările cu furnizorul de servicii OAuth: ListOfSupportedOauthProviders=Adăugă furnizorii tăi de token-uri OAuth2. Apoi, accesează pagina de administrare a furnizorului OAuth pentru a crea/obține un ID OAuth și un secret și salveză-le aici. După ce ai terminat, comută pe cealaltă filă pentru a-ți genera token-ul. OAuthSetupForLogin=Pagină gestionare (generare/ștergere) token-uri OAuth @@ -30,7 +31,11 @@ OAUTH_GITHUB_SECRET=OAuth GitHub Secret OAUTH_URL_FOR_CREDENTIAL=Accesează această pagină pentru a crea sau a obține ID-ul și Secretul OAuth OAUTH_STRIPE_TEST_NAME=Testare OAuth Stripe OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live -OAUTH_ID=ID OAuth +OAUTH_ID=ID Client OAuth OAUTH_SECRET=Secret OAuth +OAUTH_TENANT=OAuth tenant OAuthProviderAdded=Furnizor OAuth adăugat AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Există deja o intrare OAuth pentru acest furnizor și etichetă +URLOfServiceForAuthorization=Adresa URL furnizată de serviciul OAuth pentru autentificare +Scopes=Permisiuni (Domenii) +ScopeUndefined=Permisiuni (domenii) nedefinite (vezi fila anterioară) diff --git a/htdocs/langs/ro_RO/users.lang b/htdocs/langs/ro_RO/users.lang index e6334179bfd..9dc35d88e3c 100644 --- a/htdocs/langs/ro_RO/users.lang +++ b/htdocs/langs/ro_RO/users.lang @@ -132,4 +132,3 @@ ShowAllPerms=Afișează toate rândurile de permisiuni HideAllPerms=Ascunde toate rândurile de permisiuni UserPublicPageDesc=Poți activa un card virtual pentru acest utilizator. O adresă URL cu profilul utilizatorului și un cod de bare vor fi disponibile pentru a permite oricui are un smartphone să îl scaneze și să adauge persoana de contact în agenda sa. EnablePublicVirtualCard=Activare publică card virtual de utilizator -PublicVirtualCardUrl=Card virtual public de utilizator diff --git a/htdocs/langs/ru_RU/admin.lang b/htdocs/langs/ru_RU/admin.lang index 053deb792a3..fc2270f06a7 100644 --- a/htdocs/langs/ru_RU/admin.lang +++ b/htdocs/langs/ru_RU/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Флажок ExtrafieldCheckBoxFromList=Флажки из таблицы ExtrafieldLink=Ссылка на объект ComputedFormula=Вычисленное поле -ComputedFormulaDesc=Вы можете ввести здесь формулу, используя другие свойства объекта или любую кодировку PHP, чтобы получить динамическое вычисленное значение. Вы можете использовать любые PHP-совместимые формулы, включая знак "?" оператор условия и следующий глобальный объект: $db, $conf, $langs, $mysoc, $user, $object.
ПРЕДУПРЕЖДЕНИЕ: могут быть доступны только некоторые свойства объекта $. Если вам нужны не загруженные свойства, просто выберите объект в формулу, как во втором примере.
Использование вычисляемого поля означает, что вы не можете ввести себе какое-либо значение из интерфейса. Кроме того, в случае синтаксической ошибки формула может ничего не вернуть.

Пример формулы:
$object->id < 10 ? round($object->id / 2, 2): ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Пример перезагрузки объекта
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

Другой пример формулы для принудительной загрузки объекта и его родительского объекта:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Сохранить вычисленное поле ComputedpersistentDesc=Вычисленные дополнительные поля будут сохранены в базе данных, однако значение будет пересчитано только при изменении объекта этого поля. Если вычисляемое поле зависит от других объектов или глобальных данных, это значение может быть неправильным!! ExtrafieldParamHelpPassword=Оставьте это поле пустым, чтобы значение хранилось без шифрования (поле должно быть скрыто только звездочкой на экране).
Установите 'auto', чтобы использовать правило шифрования по умолчанию для сохранения пароля в базе данных (тогда считываемое значение будет только хешем, никакой возможности восстановить исходное значение) @@ -645,6 +645,8 @@ Module2300Name=Запланированные задания Module2300Desc=Управление запланированными заданиями (alias cron или chrono table) Module2400Name=События/Повестка дня Module2400Desc=Отслеживать события. Журнал автоматических событий для отслеживания или записи вручную событий или встреч. Это основной модуль для хорошего управления взаимоотношениями с клиентами или поставщиками. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=Модуль DMS/ECM Module2500Desc=Система управления документами / Управление электронным контентом. Автоматическая организация ваших сгенерированных или сохраненных документов. Поделитесь ими, когда вам нужно. Module2600Name=API / Web services (SOAP server) @@ -660,6 +662,8 @@ Module2900Name=Модуль GeoIPMaxmind Module2900Desc=Подключение к службе GeoIP MaxMind для преобразования IP-адреса в название страны Module3200Name=Неограниченные архивы Module3200Desc=Включите неизменяемый журнал деловых событий. События архивируются в режиме реального времени. Журнал представляет собой доступную только для чтения таблицу связанных событий, которые можно экспортировать. Этот модуль может быть обязательным для некоторых стран. +Module3300Name=Module Builder +Module3200Desc=Включите неизменяемый журнал деловых событий. События архивируются в режиме реального времени. Журнал представляет собой доступную только для чтения таблицу связанных событий, которые можно экспортировать. Этот модуль может быть обязательным для некоторых стран. Module3400Name=Социальные сети Module3400Desc=Включите поля социальных сетей в третьи стороны и адреса (скайп, твиттер, фейсбук, ...). Module4000Name=Управление персоналом @@ -700,8 +704,10 @@ Module62000Name=Обязанности по доставке товаров Module62000Desc=Добавить функции для управления Инкотермс Module63000Name=Ресурсы Module63000Desc=Управление ресурсами (принтеры, машины, комнаты, ...) для распределения на события +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Поступлдения -Permission11=Просмотр счетов-фактур клиентов +Permission11=Read customer invoices (and payments) Permission12=Создание/Изменение счета-фактуры Permission13=Аннулирование счетов-фактур клиентов Permission14=Проверка счета-фактуры @@ -943,7 +949,7 @@ Permission1190=Утвердить (второе утверждение) зака Permission1191=Экспорт заказов поставщиков и их атрибутов Permission1201=Получите результат экспорта Permission1202=Создание/Изменение экспорта -Permission1231=Просмотреть счета поставщиков +Permission1231=Read vendor invoices (and payments) Permission1232=Создание/изменение счетов поставщиков Permission1233=Проверка счетов поставщиков Permission1234=Удалить счета поставщиков @@ -1230,7 +1236,7 @@ SetupDescription4=%s -> %s

Это программное SetupDescription5=Другие пункты меню настройки управляют дополнительными параметрами. SetupDescriptionLink=%s - %s SetupDescription3b=Основные параметры, используемые для настройки поведения вашего приложения по умолчанию (например, для функций, связанных со страной). -SetupDescription4b=Это программное обеспечение представляет собой набор из множества модулей/приложений. Модули, связанные с вашими потребностями, должны быть включены и настроены. Записи меню появятся при активации этих модулей. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=События безопасности, которые подвергаются аудиту NoSecurityEventsAreAduited=События безопасности не проверяются. Вы можете включить их из меню %s Audit=События безопасности @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive=Триггеры в этом файле активн GeneratedPasswordDesc=Выберите метод, который будет использоваться для автоматически сгенерированных паролей. DictionaryDesc=Вставьте все справочные данные. Вы можете добавить свои значения по умолчанию. ConstDesc=Эта страница позволяет вам редактировать (переопределять) параметры, недоступные на других страницах. В основном это зарезервированные параметры только для разработчиков / расширенного поиска и устранения неисправностей. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=Все остальные параметры, связанные с безопасностью, определены здесь. LimitsSetup=Пределы / Точная настройка LimitsDesc=Вы можете определить пределы, точности и оптимизации, используемые Dolibarr здесь @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Использовать типы событий (упра AGENDA_USE_EVENT_TYPE_DEFAULT=Автоматически устанавливать это значение по умолчанию для типа события в форме создания события AGENDA_DEFAULT_FILTER_TYPE=Автоматически устанавливать этот тип события в поисковом фильтре просмотра повестки дня AGENDA_DEFAULT_FILTER_STATUS=Автоматически устанавливать этот статус для событий в поисковом фильтре представления повестки дня +AGENDA_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Какой вид вы хотите открыть по умолчанию при выборе меню «Повестка дня» AGENDA_REMINDER_BROWSER=Включить напоминание о событии в браузере пользователя (при достижении даты напоминания в браузере отображается всплывающее окно. Каждый пользователь может отключить такие уведомления в настройках уведомлений браузера). AGENDA_REMINDER_BROWSER_SOUND=Включить звуковое оповещение @@ -2129,6 +2139,7 @@ CodeLastResult=Последний код результата NbOfEmailsInInbox=Количество писем в исходном каталоге LoadThirdPartyFromName=Загрузить сторонний поиск на %s (только загрузка) LoadThirdPartyFromNameOrCreate=Загрузите сторонний поиск на %s (создайте, если не найден) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Сохраняйте вложенные файлы в документы объекта, если ссылка на объект найдена в теме письма. WithDolTrackingID=Сообщение из беседы, инициированной первым письмом, отправленным от Dolibarr WithoutDolTrackingID=Сообщение из беседы, инициированной первым электронным письмом, НЕ отправленным от Dolibarr @@ -2355,3 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/ru_RU/install.lang b/htdocs/langs/ru_RU/install.lang index 440984fd86f..ee39e55ffbe 100644 --- a/htdocs/langs/ru_RU/install.lang +++ b/htdocs/langs/ru_RU/install.lang @@ -51,7 +51,6 @@ DatabaseName=Название базы данных DatabasePrefix=Префикс таблицы базы данных DatabasePrefixDescription=Префикс таблицы базы данных. Если пусто, по умолчанию будет llx_. AdminLogin=Учетная запись владельца базы данных Dolibarr. -PasswordAgain=Подтвердите пароль еще раз AdminPassword=Пароль Dolibarr для администратора базы данных. Держите пустым, если вы подключаетесь в анонимном CreateDatabase=Создание базы данных CreateUser=Создайте учетную запись пользователя или предоставьте разрешение учетной записи пользователя в базе данных Dolibarr @@ -89,7 +88,7 @@ LoginAlreadyExists=Уже существует DolibarrAdminLogin=Dolibarr администратора AdminLoginAlreadyExists=Учетная запись администратора Dolibarr «%s» уже существует. Вернитесь назад, если хотите создать еще один. FailedToCreateAdminLogin=Не удалось создать учетную запись администратора Dolibarr. -WarningRemoveInstallDir=Предупреждение: по соображениям безопасности после завершения установки или обновления вы должны добавить файл с именем install.lock в каталог документов Dolibarr, чтобы предотвратить повторное случайное / злонамеренное использование инструментов установки. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=Недоступно в этом PHP ChoosedMigrateScript=Выбранная перенести скрипт DataMigration=Перенос данных (данные) @@ -209,7 +208,12 @@ HideNotAvailableOptions=Скрыть недоступные параметры ErrorFoundDuringMigration=В процессе миграции были зарегистрированы ошибки, поэтому следующий шаг недоступен. Чтобы игнорировать ошибки, вы можете щелкнуть здесь, но приложение или некоторые функции могут работать некорректно, пока ошибки не будут устранены. YouTryInstallDisabledByDirLock=Приложение попыталось выполнить самообновление, но страницы установки/обновления были отключены в целях безопасности (каталог переименован с суффиксом .lock).
YouTryInstallDisabledByFileLock=Приложение попыталось выполнить самообновление, но страницы установки/обновления были отключены в целях безопасности (из-за наличия файла блокировки install.lock в каталоге документов dolibarr).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=Щелкните здесь, чтобы перейти к своему приложению ClickOnLinkOrRemoveManualy=Если обновление в процессе, подождите. В противном случае щелкните следующую ссылку. Если вы всегда видите одну и ту же страницу, вы должны удалить/переименовать файл install.lock в каталоге документов. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=Загружено FunctionTest=Тест функции +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/ru_RU/members.lang b/htdocs/langs/ru_RU/members.lang index 498f556616e..d1aa664e433 100644 --- a/htdocs/langs/ru_RU/members.lang +++ b/htdocs/langs/ru_RU/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=Статистика вкладов NbOfSubscriptions=Количество вкладов AmountOfSubscriptions=Сумма, полученная от взносов TurnoverOrBudget=Оборот (за компанию) или бюджета (за основу) -DefaultAmount=Сумма взноса по умолчанию +DefaultAmount=Default amount of contribution (used only if no amount is defined at member type level) +MinimumAmount=Minimum amount (used only when contribution amount is free) CanEditAmount=Subscription amount is free CanEditAmountDetail=Visitor can choose/edit amount of its contribution regardless of the member type AmountIsLowerToMinimumNotice=sur un dû total de %s diff --git a/htdocs/langs/sk_SK/admin.lang b/htdocs/langs/sk_SK/admin.lang index d1dd653d380..258dfb88f4e 100644 --- a/htdocs/langs/sk_SK/admin.lang +++ b/htdocs/langs/sk_SK/admin.lang @@ -51,8 +51,6 @@ ClientSortingCharset=Client collation WarningModuleNotActive=Modul %s musí byť povolený WarningOnlyPermissionOfActivatedModules=Iba povolenia týkajúcej sa aktivovaných modulov sú uvedené tu. Môžete aktivovať ďalšie moduly na domovskej-> Nastavenie-> Moduly stránku. DolibarrSetup=Inštalovať alebo aktualizovať Dolibarr -InternalUser=Interný užívateľ -ExternalUser=Externý užívateľ InternalUsers=Interní používatelia ExternalUsers=Externí používatelia UserInterface=User interface @@ -294,6 +292,7 @@ MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (default value in php.ini: %s) MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS Port (Not defined into PHP on Unix-like systems) MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (Not defined into PHP on Unix-like systems) MAIN_MAIL_EMAIL_FROM=Sender email for automatic emails (default value in php.ini: %s) +EMailHelpMsgSPFDKIM=To prevent Dolibarr emails to be classified as spam, make sure that the server is authorized to send e-mails from this address by SPF and DKIM configuration MAIN_MAIL_ERRORS_TO=Email used for error returns emails (fields 'Errors-To' in emails sent) MAIN_MAIL_AUTOCOPY_TO= Copy (Bcc) all sent emails to MAIN_DISABLE_ALL_MAILS=Disable all email sending (for test purposes or demos) @@ -439,8 +438,10 @@ Unique=Unikátna Boolean=Boolean (one checkbox) ExtrafieldPhone = Telefón ExtrafieldPrice = Cena +ExtrafieldPriceWithCurrency=Price with currency ExtrafieldMail = E-mail ExtrafieldUrl = Url +ExtrafieldIP = IP ExtrafieldSelect = Vyberte zoznam ExtrafieldSelectList = Vyberte z tabuľky ExtrafieldSeparator=Separator (not a field) @@ -450,7 +451,7 @@ ExtrafieldCheckBox=Checkboxes ExtrafieldCheckBoxFromList=Checkboxes from table ExtrafieldLink=Odkaz na objekt 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->fetchNoCompute($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->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Store computed field ComputedpersistentDesc=Computed extra fields will be stored in the database, however, the value will only be recalculated when the object of this field is changed. If the computed field depends on other objects or global data this value might be wrong!! 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) @@ -501,7 +502,8 @@ WarningPHPMail=WARNING: The setup to send emails from the application is using t WarningPHPMailA=- Using the server of the Email Service Provider increases the trustability of your email, so it increases the deliverablity without being flagged as SPAM WarningPHPMailB=- Some Email Service 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 for delivery (be careful also of your email provider's sending quota). WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to send emails is also interesting so all emails sent from application will also be saved into your "Sent" directory of your mailbox. -WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. +WarningPHPMailD=It is therefore recommended to change the sending method of e-mails to the value "SMTP". +WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. 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. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s @@ -514,7 +516,7 @@ PageUrlForDefaultValuesCreate=
Example:
For the form to create a new third 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 AlsoDefaultValuesAreEffectiveForActionCreate=Also note that overwritting default values for form creation works only for pages that were correctly designed (so with parameter action=create or presend...) EnableDefaultValues=Enable customization of default values -EnableOverwriteTranslation=Enable usage of overwritten translation +EnableOverwriteTranslation=Allow customization of translations GoIntoTranslationMenuToChangeThis=A translation has been found for the key with this code. To change this value, you must edit it from Home-Setup-translation. WarningSettingSortOrder=Warning, setting a default sort order may result in a technical error when going on the list page if field is an unknown field. If you experience such an error, come back to this page to remove the default sort order and restore default behavior. Field=Pole @@ -643,11 +645,13 @@ Module2300Name=Naplánované úlohy Module2300Desc=Scheduled jobs management (alias cron or chrono table) Module2400Name=Events/Agenda Module2400Desc=Track events. Log automatic events for tracking purposes or record manual events or meetings. This is the principal module for good Customer or Vendor Relationship Management. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. 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/Webové služby ( SOAP server ) +Module2600Name=API / Web services (SOAP server) Module2600Desc=Spustiť Dolibarr SOAP server ponukajúci služby API -Module2610Name=API/Web služby ( REST server ) +Module2610Name=API / Web services (REST server) Module2610Desc=Zapnúť Dolibarr REST server ponúkajúci API službu Module2660Name=Call WebServices (SOAP client) Module2660Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Only Purchase orders are currently supported.) @@ -658,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP MaxMind konverzie možnosti Module3200Name=Unalterable Archives Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. +Module3300Name=Module Builder +Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. Module3400Name=Social Networks Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...). Module4000Name=HRM @@ -698,7 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Add features to manage Incoterms Module63000Name=Zdroje Module63000Desc=Manage resources (printers, cars, rooms, ...) for allocating to events -Permission11=Prečítajte si zákazníkov faktúry +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. +Module94160Name=Receptions +Permission11=Read customer invoices (and payments) Permission12=Vytvoriť / upraviť zákazníkov faktúr Permission13=Invalidate customer invoices Permission14=Overiť zákazníkov faktúry @@ -842,9 +851,9 @@ Permission286=Export kontaktov Permission291=Prečítajte tarify Permission292=Nastavenie povolení na sadzby Permission293=Modify customer's tariffs -Permission300=Read barcodes -Permission301=Create/modify barcodes -Permission302=Delete barcodes +Permission301=Generate PDF sheets of barcodes +Permission304=Create/modify barcodes +Permission305=Delete barcodes Permission311=Prečítajte služby Permission312=Priradiť službu / predplatné k zmluve Permission331=Prečítajte si záložky @@ -940,7 +949,7 @@ Permission1190=Approve (second approval) purchase orders Permission1191=Export supplier orders and their attributes Permission1201=Získajte výsledok exportu Permission1202=Vytvoriť / Upraviť vývoz -Permission1231=Read vendor invoices +Permission1231=Read vendor invoices (and payments) Permission1232=Create/modify vendor invoices Permission1233=Validate vendor invoices Permission1234=Delete vendor invoices @@ -971,13 +980,14 @@ Permission3301=Generate new modules Permission4001=Read skill/job/position Permission4002=Create/modify skill/job/position Permission4003=Delete skill/job/position -Permission4020=Read evaluations -Permission4021=Create/modify your evaluation -Permission4022=Validate evaluation -Permission4023=Delete evaluation -Permission4030=See comparison menu +Permission4021=Read evaluations (yours and your subordinates) +Permission4022=Create/modify evaluations +Permission4023=Validate evaluation +Permission4025=Delete evaluation +Permission4028=See comparison menu Permission4031=Read personal information Permission4032=Write personal information +Permission4033=Read all evaluations (even those of user not subordinates) Permission10001=Read website content Permission10002=Create/modify website content (html and javascript content) Permission10003=Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers. @@ -1081,6 +1091,10 @@ DictionaryAssetDisposalType=Type of disposal of assets TypeOfUnit=Type of unit SetupSaved=Nastavenie uložené SetupNotSaved=Setup not saved +OAuthServiceConfirmDeleteTitle=Delete OAuth entry +OAuthServiceConfirmDeleteMessage=Are you sure you want to delete this OAuth entry ? All existing tokens for it will also be deleted. +ErrorInEntryDeletion=Error in entry deletion +EntryDeleted=Entry deleted BackToModuleList=Back to Module list BackToDictionaryList=Back to Dictionaries list TypeOfRevenueStamp=Type of tax stamp @@ -1222,7 +1236,7 @@ SetupDescription4=%s -> %s

This software is a suite of m SetupDescription5=Other Setup menu entries manage optional parameters. SetupDescriptionLink=%s - %s SetupDescription3b=Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Security events that are audited NoSecurityEventsAreAduited=No security events are audited. You can enable them from menu %s Audit=Security events @@ -1244,6 +1258,7 @@ AreaForAdminOnly=Setup parameters can be set by administrator users only. SystemInfoDesc=Systémové informácie je rôzne technické informácie získate v režime iba pre čítanie a viditeľné len pre správcov. SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. +MoreNetworksAvailableWithModule=More social networks may be available by enabling the module "Social networks". AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and presentation of the application can be modified here. @@ -1261,6 +1276,7 @@ TriggerActiveAsModuleActive=Trigger v tomto súbore sú aktívne ako modul %s GeneratedPasswordDesc=Choose the method to be used for auto-generated passwords. DictionaryDesc=Vložte referenčné data. Môžete pridať vaše hodnoty ako základ ConstDesc=This page allows you to edit (override) parameters not available in other pages. These are mostly reserved parameters for developers/advanced troubleshooting only. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=Ostatné bezpečnostné parametre sú definované tu. LimitsSetup=Limity / Presné nastavenie LimitsDesc=You can define limits, precisions and optimizations used by Dolibarr here @@ -1294,6 +1310,8 @@ YouMustRunCommandFromCommandLineAfterLoginToUser=Je nutné spustiť tento príka YourPHPDoesNotHaveSSLSupport=SSL funkcia nie je k dispozícii vo vašom PHP DownloadMoreSkins=Ďalšie skiny k stiahnutiu SimpleNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset +SimpleRefNumRefModelDesc=Returns the reference number in the format n where n is a sequential auto-incrementing number with no reset +AdvancedNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset SimpleNumRefNoDateModelDesc=Returns the reference number in the format %s-nnnn where nnnn is a sequential auto-incrementing number with no reset ShowProfIdInAddress=Show professional ID with addresses ShowVATIntaInAddress=Hide intra-Community VAT number @@ -1380,7 +1398,7 @@ GetBarCode=Získať čiarový kód NumberingModules=Numbering models DocumentModules=Document models ##### Module password generation -PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters in lowercase. +PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters. PasswordGenerationNone=Do not suggest a generated password. Password must be typed in manually. PasswordGenerationPerso=Return a password according to your personally defined configuration. SetupPerso=According to your configuration @@ -1434,6 +1452,10 @@ SuppliersPayment=Vendor payments SupplierPaymentSetup=Vendor payments setup InvoiceCheckPosteriorDate=Check facture date before validation InvoiceCheckPosteriorDateHelp=Validating an invoice will be forbidden if its date is anterior to the date of last invoice of same type. +InvoiceOptionCategoryOfOperations=Display the mention "category of operations" on the invoice. +InvoiceOptionCategoryOfOperationsHelp=Depending on the situation, the mention will appear in the form:
- Category of operations: Delivery of goods
- Category of operations: Provision of services
- Category of operations: Mixed - Delivery of goods & provision of services +InvoiceOptionCategoryOfOperationsYes1=Yes, below the address block +InvoiceOptionCategoryOfOperationsYes2=Yes, in the lower left-hand corner ##### Proposals ##### PropalSetup=Obchodné návrhy modul nastavenia ProposalsNumberingModules=Komerčné návrh číslovanie modely @@ -1476,11 +1498,12 @@ WatermarkOnDraftContractCards=Vodoznak na návrhy zmluvy ( nie ak prázdne ) ##### Members ##### MembersSetup=Členovia modul nastavenia MemberMainOptions=Hlavné voľby +MemberCodeChecker=Options for automatic generation of member codes AdherentLoginRequired= Spravovanie Prihlásenie pre každého člena AdherentMailRequired=Email required to create a new member MemberSendInformationByMailByDefault=Zaškrtávacie políčko poslať mailom potvrdenie členom (validácia alebo nové predplatné) je v predvolenom nastavení MemberCreateAnExternalUserForSubscriptionValidated=Create an external user login for each new member subscription validated -VisitorCanChooseItsPaymentMode=Visitor can choose from available payment modes +VisitorCanChooseItsPaymentMode=Visitor can choose from any 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. MembersDocModules=Document templates for documents generated from member record ##### LDAP setup ##### @@ -1742,8 +1765,8 @@ ActivateFCKeditor=Aktivácia pokročilé editor pre: FCKeditorForNotePublic=WYSIWIG creation/edition of the field "public notes" of elements FCKeditorForNotePrivate=WYSIWIG creation/edition of the field "private notes" of elements FCKeditorForCompany=WYSIWIG creation/edition of the field description of elements (except products/services) -FCKeditorForProduct=WYSIWIG creation/edition of the field description of products/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 creation/edition of products description or lines for objects (lines of proposals, orders, invoices, etc...). +FCKeditorForProductDetails2=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. FCKeditorForMailing= WYSIWIG vytvorenie / edícia pre hromadné eMailings (Nástroje-> e-mailom) FCKeditorForUserSignature=WYSIWIG vytvorenie / edícia užívateľského podpisu FCKeditorForMail=WYSIWIG creation/edition for all mail (except Tools->eMailing) @@ -1766,7 +1789,7 @@ DetailMenuHandler=Menu handler, kde má novú ponuku DetailMenuModule=Názov modulu, pokiaľ položky ponuky pochádzajú z modulu DetailType=Druh ponuky (horný alebo ľavý) DetailTitre=Menu štítok alebo etiketa kód pre preklad -DetailUrl=URL, kde Ponuka poslať (absolútny URL odkaz alebo externý odkaz s http://) +DetailUrl=URL where menu send you (Relative URL link or external link with https://) DetailEnabled=Stav chcete alebo nechcete záznam DetailRight=Podmienka pre zobrazenie neoprávneným sivé menu DetailLangs=Lang názov súboru pre preklad kódu štítok @@ -1810,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Use events types (managed in menu Setup -> Dictionaries -> 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_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Which view do you want to open by default when selecting menu Agenda AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (When remind date is reached, a popup is shown by the browser. Each user can disable such notifications from its browser notification setup). AGENDA_REMINDER_BROWSER_SOUND=Enable sound notification @@ -1837,7 +1863,7 @@ StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatib CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sale from Point of Sale. Hence a warehouse is required. CashDeskForceDecreaseStockLabel=Stock decrease for batch products was forced. CashDeskForceDecreaseStockDesc=Decrease first by the oldest eatby and sellby dates. -CashDeskReaderKeyCodeForEnter=Key code for "Enter" defined in barcode reader (Example: 13) +CashDeskReaderKeyCodeForEnter=Key ASCII code for "Enter" defined in barcode reader (Example: 13) ##### Bookmark ##### BookmarkSetup=Záložka Nastavenie modulu 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. @@ -1875,7 +1901,7 @@ SuppliersInvoiceNumberingModel=Vendor invoices numbering models IfSetToYesDontForgetPermission=If set to a non null value, don't forget to provide permissions to groups or users allowed for the second approval ##### GeoIPMaxmind ##### GeoIPMaxmindSetup=GeoIP MaxMind modul nastavenia -PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation.
Examples:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoLite2-Country.mmdb +PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation NoteOnPathLocation=Všimnite si, že Vaša IP do súboru záznamu krajiny musia byť vo vnútri adresára si môžete prečítať PHP (PHP open_basedir Skontrolujte nastavenia a oprávnenia súborového systému). YouCanDownloadFreeDatFileTo=Tu si môžete stiahnuť zadarmo demo verziu krajiny GeoIP MaxMind súbor na %s. YouCanDownloadAdvancedDatFileTo=Môžete si tiež stiahnuť úplnejší verziu s aktualizáciou, zo zeme GeoIP MaxMind súbor na %s. @@ -1926,6 +1952,7 @@ BackupDumpWizard=Wizard to build the database dump file BackupZipWizard=Wizard to build the archive of documents directory SomethingMakeInstallFromWebNotPossible=Inštalácia externého modulu z webu nie je možná kôli : SomethingMakeInstallFromWebNotPossible2=For this reason, process to upgrade described here is a manual process only a privileged user may perform. +InstallModuleFromWebHasBeenDisabledContactUs=Install or development of external modules or dynamic websites, from the application, is currently locked for security purpose. Please contact us if you need to enable this feature. 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=Zvýrazniť riadok pre prechode kurzora @@ -2053,6 +2080,8 @@ RemoveSpecialChars=Remove special characters COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN_REGEX) COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Duplicate not allowed +RemoveSpecialWords=Clean certain words when generating sub-accounts for customers or suppliers +RemoveSpecialWordsHelp=Specify the words to be cleaned before calculating the customer or supplier account. Use a ";" between each word GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact) GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here HelpOnTooltip=Help text to show on tooltip @@ -2080,6 +2109,7 @@ MailboxTargetDirectory=Mailbox target directory EmailcollectorOperations=Operations to do by collector EmailcollectorOperationsDesc=Operations are executed from top to bottom order MaxEmailCollectPerCollect=Max number of emails collected per collect +TestCollectNow=Test collect CollectNow=Collect now ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s? DateLastCollectResult=Date of latest collect try @@ -2109,6 +2139,7 @@ CodeLastResult=Latest result code NbOfEmailsInInbox=Number of emails in source directory LoadThirdPartyFromName=Load third party searching on %s (load only) LoadThirdPartyFromNameOrCreate=Load third party searching on %s (create if not found) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Message from a conversation initiated by a first email sent from Dolibarr WithoutDolTrackingID=Message from a conversation initiated by a first email NOT sent from Dolibarr @@ -2183,6 +2214,7 @@ ShowProjectLabel=Project Label PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty +PDFIn2Languages=Show labels into PDF in 2 different languages PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2211,12 +2243,12 @@ MailToPartnership=Partnership AGENDA_EVENT_DEFAULT_STATUS=Default event status when creating a event from the form YouShouldDisablePHPFunctions=You should disable PHP functions IfCLINotRequiredYouShouldDisablePHPFunctions=Except if you need to run system commands in custom code, you shoud disable PHP functions -PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an anitivurs program), you must keep PHP functions +PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an antivirus program), you must keep PHP functions NoWritableFilesFoundIntoRootDir=No writable files or directories of the common programs were found into your root directory (Good) RecommendedValueIs=Recommended: %s Recommended=Odporúčaná NotRecommended=Not recommended -ARestrictedPath=Some restricted path +ARestrictedPath=Some restricted path for data files CheckForModuleUpdate=Check for external modules updates CheckForModuleUpdateHelp=This action will connect to editors of external modules to check if a new version is available. ModuleUpdateAvailable=An update is available @@ -2264,7 +2296,7 @@ LateWarningAfter="Late" warning after TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode -ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. +ExportUseLowMemoryModeHelp=Use the low memory mode to generate the dump file (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that the file is complete and error message can't be reported if it fails. Use it if you experience not enough memory errors. ModuleWebhookName = Webhook ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL @@ -2288,6 +2320,8 @@ IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices +INVOICE_SHOW_SHIPPING_ADDRESS=Show shipping address +INVOICE_SHOW_SHIPPING_ADDRESSMore=Compulsory mention for France UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. IfThisCategoryIsChildOfAnother=If this category is a child of another one DarkThemeMode=Dark theme mode @@ -2307,3 +2341,34 @@ UsePassword=Use a password UseOauth=Use a OAUTH token Images=Images MaxNumberOfImagesInGetPost=Max number of images allowed in a HTML field submitted in a form +MaxNumberOfPostOnPublicPagesByIP=Max number of posts on public pages with the same IP address in a month +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: +ScriptIsEmpty=The script is empty +ShowHideTheNRequests=Show/hide the %s SQL request(s) +DefinedAPathForAntivirusCommandIntoSetup=Define a path for an antivirus program into %s +TriggerCodes=Triggerable events +TriggerCodeInfo=Enter here the trigger code(s) that must generate a post of a web request (only external URL are allowed). You can enter several trigger codes separated by a comma. +EditableWhenDraftOnly=If unchecked, the value can only be modified when object has a draft status +CssOnEdit=Css on edit pages +CssOnView=Css on view pages +CssOnList=Css on list pages +HelpCssOnEditDesc=The Css used when editing the field.
Example: "minwiwdth100 maxwidth500 widthcentpercentminusx" +HelpCssOnViewDesc=The Css used when viewing the field. +HelpCssOnListDesc=The Css used when field is inside a list table.
Example: "tdoverflowmax200" +RECEPTION_PDF_HIDE_ORDERED=Hide the quantity ordered on the generated documents for receptions +MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT=Show the price on the generated documents for receptions +WarningDisabled=Warning disabled +LimitsAndMitigation=Access limits and mitigation +DesktopsOnly=Desktops only +DesktopsAndSmartphones=Desktops et smartphones +AllowOnlineSign=Allow online signing +AllowExternalDownload=Allow external download (without login, using a shared link) +DeadlineDayVATSubmission=Deadline day for vat submission on the next month +MaxNumberOfAttachementOnForms=Max number of joinded files in a form +IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/sl_SI/admin.lang b/htdocs/langs/sl_SI/admin.lang index 68a6f17711e..7ab414d4340 100644 --- a/htdocs/langs/sl_SI/admin.lang +++ b/htdocs/langs/sl_SI/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Potrditvena polja ExtrafieldCheckBoxFromList=Potrditvena polja iz tabele ExtrafieldLink=Poveži z objektom ComputedFormula=Računalniško polje -ComputedFormulaDesc=Tukaj lahko vnesete formulo z uporabo drugih lastnosti predmeta ali katerega koli kodiranja PHP, da dobite dinamično izračunano vrednost. Uporabite lahko katero koli formulo, združljivo s PHP, vključno z "?" operator pogoja in naslednji globalni objekt: $db, $conf, $langs, $mysoc, $user, $object .
OPOZORILO : Morda so na voljo samo nekatere lastnosti predmeta $object. Če potrebujete, da lastnosti niso naložene, sami prinesite predmet v svojo formulo, kot v drugem primeru.
Uporaba izračunanega polja pomeni, da sami ne morete vnesti nobene vrednosti iz vmesnika. Tudi če pride do sintaksne napake, formula morda ne vrne ničesar.

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

Primer za ponovno nalaganje predmeta
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj- >rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

Drug primer formule za prisilno nalaganje predmeta in njegovega nadrejenega objekta:
(($reloadedobj = novo opravilo($db) )) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = nov projekt($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0))? $secondloadedobj->ref: 'Nadrejeni projekt ni bil najden' +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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Shranite izračunano polje ComputedpersistentDesc=Izračunana dodatna polja bodo shranjena v zbirki podatkov, vendar bo vrednost ponovno izračunana šele, ko bo predmet tega polja spremenjen. Če je izračunano polje odvisno od drugih objektov ali globalnih podatkov, je ta vrednost morda napačna!! ExtrafieldParamHelpPassword=Če pustite to polje prazno, bo ta vrednost shranjena brez šifriranja (polje mora biti skrito samo z zvezdico na zaslonu).
Nastavite »samodejno« za uporabo privzetega šifrirnega pravila za shranjevanje gesla v zbirko podatkov (takrat bo prebrana vrednost samo zgoščena vrednost, ni možnosti za pridobitev izvirne vrednosti) @@ -645,6 +645,8 @@ Module2300Name=Načrtovana delovna mesta Module2300Desc=Upravljanje načrtovanih opravil (alias cron ali chrono table) Module2400Name=Dogodki/Koledar Module2400Desc=Sledite dogodkom. Beležite samodejne dogodke za namene sledenja ali beležite ročne dogodke ali sestanke. To je glavni modul za upravljanje odnosov s kupci ali dobavitelji. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=DMS / ECM Module2500Desc=Sistem za upravljanje dokumentov / upravljanje elektronskih vsebin. Samodejna organizacija vaših ustvarjenih ali shranjenih dokumentov. Delite jih, ko jih potrebujete. Module2600Name=API / spletne storitve (strežnik SOAP) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=Možnost konverzije GeoIP Maxmind Module3200Name=Nespremenljivi arhivi Module3200Desc=Omogočite nespremenljiv dnevnik poslovnih dogodkov. Dogodki se arhivirajo v realnem času. Dnevnik je tabela verižnih dogodkov samo za branje, ki jo je mogoče izvoziti. Ta modul je lahko obvezen za nekatere države. +Module3300Name=Module Builder +Module3200Desc=Omogočite nespremenljiv dnevnik poslovnih dogodkov. Dogodki se arhivirajo v realnem času. Dnevnik je tabela verižnih dogodkov samo za branje, ki jo je mogoče izvoziti. Ta modul je lahko obvezen za nekatere države. Module3400Name=Socialna omrežja Module3400Desc=Omogočite polja Social Networks v tretjih osebah in naslovih (skype, twitter, facebook, ...). Module4000Name=HRM @@ -700,8 +704,10 @@ Module62000Name=Mednarodni Poslovni Izrazi Module62000Desc=Dodajte funkcije za upravljanje Incoterms Module63000Name=Viri Module63000Desc=Upravljanje virov (tiskalniki, avtomobili, sobe, ...) za dodeljevanje dogodkov +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Sprejemi -Permission11=Branje računov +Permission11=Read customer invoices (and payments) Permission12=Kreiranje/Spreminjanje računov Permission13=Razveljavite račune strank Permission14=Potrjevanje računov @@ -943,7 +949,7 @@ Permission1190=Odobritev (druga odobritev) naročilnic Permission1191=Izvoz naročil dobaviteljev in njihovih atributov Permission1201=pregled rezultatov izvoza Permission1202=Kreiranje/spreminjanje izvoza -Permission1231=Preberite prejete račune +Permission1231=Read vendor invoices (and payments) Permission1232=Ustvarite/spremenite prejete račune Permission1233=Potrdite prejete račune Permission1234=Izbrišite prejete račune @@ -1230,7 +1236,7 @@ SetupDescription4= %s -> %s

Ta programska oprema je SetupDescription5=Drugi vnosi v nastavitvenem meniju upravljajo izbirne parametre. SetupDescriptionLink= %s - %s SetupDescription3b=Osnovni parametri, ki se uporabljajo za prilagajanje privzetega vedenja vaše aplikacije (npr. za funkcije, povezane z državo). -SetupDescription4b=Ta programska oprema je zbirka številnih modulov/aplikacij. Moduli, povezani z vašimi potrebami, morajo biti omogočeni in konfigurirani. Z aktivacijo teh modulov se prikažejo vnosi v meniju. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Varnostni dogodki, ki so revidirani NoSecurityEventsAreAduited=Noben varnostni dogodek ni revidiran. Omogočite jih lahko v meniju %s Audit=Varnostni dogodki @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive=Prožilci v tej datoteki so aktivni, ker je omogoče GeneratedPasswordDesc=Izberite metodo, ki bo uporabljena za samodejno ustvarjena gesla. DictionaryDesc=Vnesite vse referenčne podatke. Svoje vrednosti lahko dodate privzetim. ConstDesc=Ta stran vam omogoča urejanje (preglasitev) parametrov, ki niso na voljo na drugih straneh. To so večinoma rezervirani parametri samo za razvijalce/napredno odpravljanje težav. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=Tukaj so definirani vsi ostali varnostni parametri. LimitsSetup=Nastavitve omejitev/natančnosti LimitsDesc=Tukaj lahko določite omejitve, natančnosti in optimizacije, ki jih uporablja Dolibarr @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Uporaba vrst dogodkov (upravlja se v meniju Nastavitve -> AGENDA_USE_EVENT_TYPE_DEFAULT=Samodejno nastavi to privzeto vrednost za vrsto dogodka v obrazcu za ustvarjanje dogodka AGENDA_DEFAULT_FILTER_TYPE=Samodejno nastavi to vrsto dogodka v iskalnem filtru pogleda dnevnega reda AGENDA_DEFAULT_FILTER_STATUS=Samodejno nastavi to stanje za dogodke v iskalnem filtru pogleda dnevnega reda +AGENDA_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Kateri pogled želite privzeto odpreti, ko izberete meni Dnevni red AGENDA_REMINDER_BROWSER=Omogoči opomnik dogodka v brskalniku uporabnika (Ko je dosežen datum opomnika, brskalnik prikaže pojavno okno. Vsak uporabnik lahko onemogoči takšna obvestila v nastavitvi obvestil brskalnika). AGENDA_REMINDER_BROWSER_SOUND=Omogoči zvočno obvestilo @@ -2129,6 +2139,7 @@ CodeLastResult=Koda zadnjega rezultata NbOfEmailsInInbox=Število e-poštnih sporočil v izvornem imeniku LoadThirdPartyFromName=Naloži iskanje partnerjev na %s (samo nalaganje) LoadThirdPartyFromNameOrCreate=Naloži iskanje partnerjev na %s (ustvari, če ni najden) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Shranite priložene datoteke v dokumente predmeta, če je v e-poštni temi najden sklic predmeta. WithDolTrackingID=Sporočilo iz pogovora, ki ga je sprožilo prvo e-poštno sporočilo, poslano iz Dolibarra WithoutDolTrackingID=Sporočilo iz pogovora, ki ga je sprožilo prvo e-poštno sporočilo, ki NI poslano iz Dolibarra @@ -2355,3 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/sl_SI/install.lang b/htdocs/langs/sl_SI/install.lang index 87bd5fa646d..90b6b327654 100644 --- a/htdocs/langs/sl_SI/install.lang +++ b/htdocs/langs/sl_SI/install.lang @@ -2,36 +2,36 @@ InstallEasy=Sledite navodilom korak za korakom. MiscellaneousChecks=Kontrola pogojev ConfFileExists=Konfiguracijska datoteka %s že obstaja. -ConfFileDoesNotExistsAndCouldNotBeCreated=Configuration file %s does not exist and could not be created! +ConfFileDoesNotExistsAndCouldNotBeCreated=Konfiguracijska datoteka %s ne obstaja in je ni bilo mogoče ustvariti! ConfFileCouldBeCreated=Konfiguracijska datoteka %s se lahko kreira. -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=Konfiguracijske datoteke %s ni mogoče zapisovati. Preverite dovoljenja. Pri prvi namestitvi mora imeti vaš spletni strežnik možnost pisanja v to datoteko med postopkom konfiguracije (»chmod 666« na primer v OS, podobnem Unixu). ConfFileIsWritable=V konfiguracijsko datoteka %s je možno zapisovanje. -ConfFileMustBeAFileNotADir=Configuration file %s must be a file, not a directory. -ConfFileReload=Reloading parameters from configuration file. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. +ConfFileMustBeAFileNotADir=Konfiguracijska datoteka %s mora biti datoteka in ne imenik. +ConfFileReload=Ponovno nalaganje parametrov iz konfiguracijske datoteke. +NoReadableConfFileSoStartInstall=Konfiguracijska datoteka conf/conf.php ne obstaja ali pa ni berljiva. Zagnali bomo postopek namestitve, da ga poskusimo inicializirati. PHPSupportPOSTGETOk=Ta PHP podpira spremenljivke POST in GET. -PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check the parameter variables_order in php.ini. +PHPSupportPOSTGETKo=Možno je, da vaše nastavitve PHP ne podpirajo spremenljivk POST in/ali GET. Preverite parameter variables_order v php.ini. PHPSupportSessions=Ta PHP podpira seje. -PHPSupport=This PHP supports %s functions. +PHPSupport=Ta PHP podpira funkcije %s. PHPMemoryOK=Maksimalni spomin za sejo vašega PHP je nastavljen na %s. To bi moralo zadoščati. -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. -ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. +PHPMemoryTooLow=Vaš največji pomnilnik PHP seje je nastavljen na %s bajtov. To je prenizko. Spremenite svoj php.ini , da nastavite parameter memory_limit na vsaj %s +Recheck=Kliknite tukaj za podrobnejši test +ErrorPHPDoesNotSupportSessions=Vaša namestitev PHP ne podpira sej. Ta funkcija je potrebna, da lahko Dolibarr deluje. Preverite nastavitve PHP in dovoljenja za imenik sej. +ErrorPHPDoesNotSupport=Vaša namestitev PHP ne podpira funkcij %s. ErrorDirDoesNotExists=Mapa %s ne obstaja. -ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. +ErrorGoBackAndCorrectParameters=Vrnite se nazaj in preverite/popravite parametre. ErrorWrongValueForParameter=Morda ste vnesli napačno vrednost parametra '%s'. ErrorFailedToCreateDatabase=Neuspešno kreiranje baze podatkov '%s'. ErrorFailedToConnectToDatabase=Neuspešna povezava z bazo podatkov '%s'. ErrorDatabaseVersionTooLow=Verzija baze podatkov (%s) je prestara. Zahtevana je verzija %s ali novejša. -ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. -ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. -ErrorConnectedButDatabaseNotFound=Connection to server successful but database '%s' not found. +ErrorPHPVersionTooLow=Različica PHP je prestara. Zahtevana je različica %s ali novejša. +ErrorPHPVersionTooHigh=Različica PHP je previsoka. Zahtevana je različica %s ali nižja. +ErrorConnectedButDatabaseNotFound=Povezava s strežnikom je bila uspešna, vendar baze podatkov '%s' ni mogoče najti. ErrorDatabaseAlreadyExists=Baza podatkov '%s' že obstaja. -ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions -IfDatabaseNotExistsGoBackAndUncheckCreate=If the database does not exist, go back and check option "Create database". +ErrorNoMigrationFilesFoundForParameters=Za izbrane različice ni bilo mogoče najti datoteke za selitev +IfDatabaseNotExistsGoBackAndUncheckCreate=Če baza podatkov ne obstaja, se vrnite nazaj in označite možnost "Ustvari bazo podatkov". IfDatabaseExistsGoBackAndCheckCreate=Če baza podatkov že obstaja, se vrnite nazaj in odznačite opcijo "Ustvari bazo podatkov". -WarningBrowserTooOld=Version of browser is too old. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommended. +WarningBrowserTooOld=Različica brskalnika je prestara. Zelo priporočljivo je, da svoj brskalnik nadgradite na najnovejšo različico Firefoxa, Chroma ali Opere. PHPVersion=PHP Verzija License=Uporablja licenco ConfigurationFile=Konfiguracijska datoteka @@ -44,23 +44,22 @@ DolibarrDatabase=Dolibarr baza podatkov DatabaseType=Tip baze podatkov DriverType=Tip gonilnika Server=Strežnik -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=Ime ali naslov IP za strežnik baze podatkov. Običajno 'localhost', ko strežnik baze podatkov gostuje na istem strežniku kot spletni strežnik. ServerPortDescription=Vrata strežnika baze podatkov. Če niso znana, pustite prazno. DatabaseServer=Strežnik za bazo podatkov DatabaseName=Ime baze podatkov -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=Predpona tabele baze podatkov +DatabasePrefixDescription=Predpona tabele baze podatkov. Če je prazno, je privzeto llx_. +AdminLogin=Uporabniški račun za lastnika baze podatkov Dolibarr. AdminPassword=Geslo za lastnika Dolibarr baze podatkov. CreateDatabase=Ustvari bazo podatkov -CreateUser=Create user account or grant user account permission on the Dolibarr database +CreateUser=Ustvarite uporabniški račun ali dodelite dovoljenje za uporabniški račun v bazi podatkov Dolibarr DatabaseSuperUserAccess=Strežnik za bazo podatkov – »Super uporabnik« dostop -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 +CheckToCreateDatabase=Označite polje, če zbirka podatkov še ne obstaja in jo je treba ustvariti.
V tem primeru morate vnesti tudi uporabniško ime in geslo za račun superuporabnika na dnu te strani. +CheckToCreateUser=Označite polje, če:
uporabniški račun baze podatkov še ne obstaja in ga je zato treba ustvariti, ali
če uporabniški račun obstaja, baza podatkov pa ne obstaja in je treba odobriti dovoljenja.
V tem primeru morate vnesti uporabniški račun in geslo ter tudi ime in geslo računa superuporabnika na dnu te strani. Če to polje ni potrjeno, morata lastnik baze podatkov in geslo že obstajati. +DatabaseRootLoginDescription=Ime računa superuporabnika (za ustvarjanje novih baz podatkov ali novih uporabnikov), obvezno, če baza podatkov ali njen lastnik še ne obstaja. +KeepEmptyIfNoPassword=Pustite prazno, če superuporabnik nima gesla (NI priporočljivo) +SaveConfigurationFile=Shranjevanje parametrov v ServerConnection=Povezava s strežnikom DatabaseCreation=Ustvarjanje baze podatkov CreateDatabaseObjects=Ustvarjanje objektov baze podatkov @@ -71,83 +70,83 @@ CreateOtherKeysForTable=Kreiranje tujih ključev in indeksov za tabelo %s OtherKeysCreation=Kreiranje tujih ključev in indeksov FunctionsCreation=Kreiranje funkcij AdminAccountCreation=Kreiranje uporabniškega imena za Administratorja -PleaseTypePassword=Please type a password, empty passwords are not allowed! -PleaseTypeALogin=Please type a login! -PasswordsMismatch=Passwords differs, please try again! +PleaseTypePassword=Vnesite geslo, prazna gesla niso dovoljena! +PleaseTypeALogin=Prosim vnesite prijavo! +PasswordsMismatch=Gesla se razlikujejo, poskusite znova! SetupEnd=Nastavitev je zaključena SystemIsInstalled=Ta instalacija je zaključena. SystemIsUpgraded=Dolibarr Je bil uspešno nadgrajen. YouNeedToPersonalizeSetup=Dolibarr morate konfigurirati, da bi ustrezal vašim potrebam (izgled, funkcije, ...). Prosim, sledite spodnji povezavi: -AdminLoginCreatedSuccessfuly=Dolibarr administrator login '%s' created successfully. +AdminLoginCreatedSuccessfuly=Skrbniška prijava Dolibarr ' %s ' je bila uspešno ustvarjena. GoToDolibarr=Zaženi Dolibarr GoToSetupArea=Zaženi Dolibarr (področje nastavitev) -MigrationNotFinished=The database version is not completely up to date: run the upgrade process again. +MigrationNotFinished=Različica baze podatkov ni popolnoma posodobljena: znova zaženite postopek nadgradnje. GoToUpgradePage=Ponovno pojdite na stran za nadgradnjo WithNoSlashAtTheEnd=Brez poševnice "/" na koncu -DirectoryRecommendation=IMPORTANT: You must use a directory that is outside of the web pages (so do not use a subdirectory of previous parameter). +DirectoryRecommendation= POMEMBNO : Uporabiti morate imenik, ki je zunaj spletnih strani (zato ne uporabljajte podimenika prejšnjega parametra). LoginAlreadyExists=Že obstaja DolibarrAdminLogin=Uporabniško ime Dolibarr administratorja -AdminLoginAlreadyExists=Dolibarr administrator account '%s' already exists. Go back if you want to create another one. -FailedToCreateAdminLogin=Failed to create Dolibarr administrator account. -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 +AdminLoginAlreadyExists=Skrbniški račun Dolibarr ' %s ' že obstaja. Vrnite se, če želite ustvariti še enega. +FailedToCreateAdminLogin=Ustvarjanje skrbniškega računa Dolibarr ni uspelo. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=Ni na voljo v tem PHP-ju ChoosedMigrateScript=Izberite skript za selitev -DataMigration=Database migration (data) -DatabaseMigration=Database migration (structure + some data) +DataMigration=Selitev baze podatkov (podatki) +DatabaseMigration=Selitev baze podatkov (struktura + nekaj podatkov) ProcessMigrateScript=Obdelava skripta ChooseYourSetupMode=Izberite vaš način namestitve in kliknite "Start"... FreshInstall=Sveža namestitev -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=Ta način uporabite, če je to vaša prva namestitev. Če ne, lahko ta način popravi nepopolno prejšnjo namestitev. Če želite nadgraditi svojo različico, izberite način »Nadgradnja«. Upgrade=Nadgraditev UpgradeDesc=Ta način uporabite, če ste zamenjali stare Dolibarr datoteke z datotekami iz novejše različice. S tem boste nadgradili vašo bazo podatkov in podatke. Start=Start InstallNotAllowed=Namestitev ni možna zaradi dovoljenj v conf.php YouMustCreateWithPermission=Ustvariti morate datoteko %s in nastaviti dovoljenja za zapisovanje za spletni strežnik med postopkom namestitve. -CorrectProblemAndReloadPage=Please fix the problem and press F5 to reload the page. +CorrectProblemAndReloadPage=Odpravite težavo in pritisnite F5 za ponovno nalaganje strani. AlreadyDone=Že prenešeno DatabaseVersion=Različica baze podatkov ServerVersion=Različica strežnika baze podatkov YouMustCreateItAndAllowServerToWrite=Ustvariti morate to mapo in dovoliti spletnemu strežniku zapisovanje vanjo. DBSortingCollation=Vrstni red znakov -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=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=Povezava z bazo podatkov ni uspela: parametri gostitelja ali super uporabnika morajo biti napačni. OrphelinsPaymentsDetectedByMethod=Osamljena plačila so bila zaznana z metodo %s RemoveItManuallyAndPressF5ToContinue=Ročno odstranite in pritisnite F5 za nadaljevanje. FieldRenamed=Polje je primenovano -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=Če uporabnik še ne obstaja, morate označiti možnost "Ustvari uporabnika" +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. InstallChoiceRecommanded=Priporočena izbira za namestitev različice %s iz vaše trenutne različice %s InstallChoiceSuggested=Predlagana izbira namestitve. -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=Ciljna različica (%s) ima vrzel v več različicah. Čarovnik za namestitev se bo vrnil in predlagal nadaljnjo selitev, ko bo ta končana. +CheckThatDatabasenameIsCorrect=Preverite, ali je ime baze podatkov " %s " pravilno. IfAlreadyExistsCheckOption=Če je to ime pravilno in baza podatkov še ne obstaja, morate označiti opcijo "Ustvari bazo podatkov". OpenBaseDir=Parameter 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. -MigrationCustomerOrderShipping=Migrate shipping for sales orders storage +YouAskToCreateDatabaseSoRootRequired=Označili ste polje »Ustvari bazo podatkov«. Za to morate vnesti prijavo/geslo superuporabnika (na dnu obrazca). +YouAskToCreateDatabaseUserSoRootRequired=Označili ste polje »Ustvari lastnika baze podatkov«. Za to morate vnesti prijavo/geslo superuporabnika (na dnu obrazca). +NextStepMightLastALongTime=Trenutni korak lahko traja nekaj minut. Počakajte, da se naslednji zaslon v celoti prikaže, preden nadaljujete. +MigrationCustomerOrderShipping=Preselitev pošiljanja za shranjevanje prodajnih naročil MigrationShippingDelivery=Nadgraditev skladišča za odpremo MigrationShippingDelivery2=Nadgraditev skladišča za odpremo 2 MigrationFinished=Prenos končan -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= Zadnji korak : Tukaj določite prijavo in geslo, ki ju želite uporabiti za povezavo z Dolibarr. Ne izgubite tega, saj je glavni račun za upravljanje vseh drugih/dodatnih uporabniških računov. ActivateModule=Vključite modul %s ShowEditTechnicalParameters=Kliknite tukaj za prikaz/popravek naprednih parametrov (expertni način) -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... -ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug, making data loss possible if you make structural changes in your database, such as is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a layer (patched) version (list of known buggy versions: %s) -KeepDefaultValuesWamp=You used the Dolibarr setup wizard from DoliWamp, so values proposed here are already optimized. Change them only if you know what you are doing. -KeepDefaultValuesDeb=You used the Dolibarr setup wizard from a Linux package (Ubuntu, Debian, Fedora...), so the values proposed here are already optimized. Only the password of the database owner to create must be entered. Change other parameters only if you know what you are doing. -KeepDefaultValuesMamp=You used the Dolibarr setup wizard from DoliMamp, so the values proposed here are already optimized. Change them only if you know what you are doing. -KeepDefaultValuesProxmox=You used the Dolibarr setup wizard from a Proxmox virtual appliance, so the values proposed here are already optimized. Change them only if you know what you are doing. -UpgradeExternalModule=Run dedicated upgrade process of external module -SetAtLeastOneOptionAsUrlParameter=Set at least one option as a parameter in URL. For example: '...repair.php?standard=confirmed' -NothingToDelete=Nothing to clean/delete -NothingToDo=Nothing to do +WarningUpgrade=Opozorilo:\nSte najprej zagnali varnostno kopijo baze podatkov?\nTo je zelo priporočljivo. Med tem postopkom je lahko možna izguba podatkov (na primer zaradi napak v mysql različici 5.5.40/41/42/43), zato je bistveno, da naredite popoln izpis vaše baze podatkov, preden začnete s selitvijo.\n\nKliknite V redu, da začnete postopek selitve ... +ErrorDatabaseVersionForbiddenForMigration=Vaša različica zbirke podatkov je %s. Ima kritično napako, zaradi katere je možna izguba podatkov, če naredite strukturne spremembe v svoji zbirki podatkov, kot to zahteva postopek selitve. Iz njegovega razloga selitev ne bo dovoljena, dokler ne nadgradite svoje baze podatkov na plastno (popravljeno) različico (seznam znanih različic z napakami: %s) +KeepDefaultValuesWamp=Uporabili ste čarovnika za nastavitev Dolibarr iz DoliWampa, zato so tukaj predlagane vrednosti že optimizirane. Spremenite jih le, če veste, kaj počnete. +KeepDefaultValuesDeb=Uporabili ste čarovnika za nastavitev Dolibarr iz paketa Linux (Ubuntu, Debian, Fedora ...), zato so tukaj predlagane vrednosti že optimizirane. Vnesti je treba samo geslo lastnika baze podatkov, ki jo želite ustvariti. Druge parametre spreminjajte le, če veste, kaj počnete. +KeepDefaultValuesMamp=Uporabili ste čarovnika za nastavitev Dolibarr iz DoliMampa, zato so tukaj predlagane vrednosti že optimizirane. Spremenite jih le, če veste, kaj počnete. +KeepDefaultValuesProxmox=Uporabili ste čarovnika za nastavitev Dolibarr iz virtualne naprave Proxmox, zato so tukaj predlagane vrednosti že optimizirane. Spremenite jih le, če veste, kaj počnete. +UpgradeExternalModule=Zaženite namenski postopek nadgradnje zunanjega modula +SetAtLeastOneOptionAsUrlParameter=Nastavite vsaj eno možnost kot parameter v URL-ju. Na primer: '...repair.php?standard=confirmed' +NothingToDelete=Nič za čiščenje/brisanje +NothingToDo=Nič za početi ######### # upgrade MigrationFixData=Popravek denormaliziranih podatkov MigrationOrder=Prenos podatkov o naročilih kupcev -MigrationSupplierOrder=Data migration for vendor's orders +MigrationSupplierOrder=Migracija podatkov za naročila dobavitelja MigrationProposal=Prenos podatkov o komercialnih ponudbah MigrationInvoice=Prenos podatkov o računih za kupce MigrationContract=Prenos podatkov o pogodbah @@ -163,9 +162,9 @@ MigrationContractsUpdate=Posodobitev podatkov o pogodbah MigrationContractsNumberToUpdate=%s pogodb je potrebno posodobiti MigrationContractsLineCreation=Ustvarite vrstico v pogodbi za pogodbo št. %s MigrationContractsNothingToUpdate=Nič več ni potrebno narediti -MigrationContractsFieldDontExist=Field fk_facture does not exist anymore. Nothing to do. +MigrationContractsFieldDontExist=Polje fk_facture ne obstaja več. Nič za početi. MigrationContractsEmptyDatesUpdate=Popravek manjkajočih datumov v pogodbah -MigrationContractsEmptyDatesUpdateSuccess=Contract empty date correction done successfully +MigrationContractsEmptyDatesUpdateSuccess=Popravek praznega datuma pogodbe je bil uspešno izveden MigrationContractsEmptyDatesNothingToUpdate=Ni potreben popravek manjkajočih datumov v pogodbah MigrationContractsEmptyCreationDatesNothingToUpdate=Ni potreben popravek datumov kreiranja pogodb MigrationContractsInvalidDatesUpdate=Popravek manjkajočih datumov v pogodbah @@ -173,13 +172,13 @@ MigrationContractsInvalidDateFix=Popravek pogodbe %s (Datum pogodbe=%s, Začetni MigrationContractsInvalidDatesNumber=%s spremenjenih pogodb MigrationContractsInvalidDatesNothingToUpdate=Ni napačnih datumov za popravek MigrationContractsIncoherentCreationDateUpdate=Popravek napačne vrednosti datuma kreiranja pogodbe -MigrationContractsIncoherentCreationDateUpdateSuccess=Bad value contract creation date correction done successfully +MigrationContractsIncoherentCreationDateUpdateSuccess=Popravek datuma nastanka pogodbe o slabi vrednosti je bil uspešno izveden MigrationContractsIncoherentCreationDateNothingToUpdate=Ni potreben popravek napačnih datumov kreiranja pogodb MigrationReopeningContracts=Odpri pogodbo, ki je bila pomotoma zaprta MigrationReopenThisContract=Ponovno odpri pogodbo %s MigrationReopenedContractsNumber=%s spremenjenih pogodb MigrationReopeningContractsNothingToUpdate=Ni zaprtih pogodb, ki bi jih morali ponovno odpreti -MigrationBankTransfertsUpdate=Update links between bank entry and a bank transfer +MigrationBankTransfertsUpdate=Posodobite povezave med bančnim vnosom in bančnim nakazilom MigrationBankTransfertsNothingToUpdate=Vse povezave so posodobljene MigrationShipmentOrderMatching=Odpremnice so posodobljene MigrationDeliveryOrderMatching=Dobavnice so posodobljene @@ -187,29 +186,34 @@ MigrationDeliveryDetail=Dobave so posodobljene MigrationStockDetail=Posodobitev vrednosti zalog proizvodov MigrationMenusDetail=Posodobitev tabel dinamičnih menijev MigrationDeliveryAddress=Posodobitev naslovov za dobavo pošiljk -MigrationProjectTaskActors=Data migration for table llx_projet_task_actors +MigrationProjectTaskActors=Selitev podatkov za tabelo llx_projet_task_actors MigrationProjectUserResp=Prenos podatkov polja fk_user_resp tabele llx_projet v llx_element_contact MigrationProjectTaskTime=Posodobitev porabljenega časa v sekundah MigrationActioncommElement=Posodobitev podatkov o aktivnostih -MigrationPaymentMode=Data migration for payment type +MigrationPaymentMode=Selitev podatkov za vrsto plačila MigrationCategorieAssociation=Migracija kategorij -MigrationEvents=Migration of events to add event owner into assignment table -MigrationEventsContact=Migration of events to add event contact into assignment table -MigrationRemiseEntity=Update entity field value of llx_societe_remise -MigrationRemiseExceptEntity=Update entity field value of llx_societe_remise_except -MigrationUserRightsEntity=Update entity field value of llx_user_rights -MigrationUserGroupRightsEntity=Update entity field value of llx_usergroup_rights -MigrationUserPhotoPath=Migration of photo paths for users -MigrationFieldsSocialNetworks=Migration of users fields social networks (%s) +MigrationEvents=Selitev dogodkov za dodajanje lastnika dogodka v tabelo dodelitev +MigrationEventsContact=Migracija dogodkov za dodajanje kontakta dogodka v tabelo dodelitev +MigrationRemiseEntity=Posodobite vrednost polja entitete llx_societe_remise +MigrationRemiseExceptEntity=Posodobite vrednost polja entitete llx_societe_remise_except +MigrationUserRightsEntity=Posodobite vrednost polja entitete llx_user_rights +MigrationUserGroupRightsEntity=Posodobite vrednost polja entitete llx_usergroup_rights +MigrationUserPhotoPath=Migracija foto poti za uporabnike +MigrationFieldsSocialNetworks=Migracija uporabnikov s področja socialnih omrežij (%s) MigrationReloadModule=Ponovno naložite modul %s -MigrationResetBlockedLog=Reset module BlockedLog for v7 algorithm -MigrationImportOrExportProfiles=Migration of import or export profiles (%s) -ShowNotAvailableOptions=Show unavailable options -HideNotAvailableOptions=Hide unavailable options -ErrorFoundDuringMigration=Error(s) were reported during the migration process so next step is not available. To ignore errors, you can click here, but the application or some features may not work correctly until the errors are resolved. -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).
-ClickHereToGoToApp=Click here to go to your application -ClickOnLinkOrRemoveManualy=If an upgrade is in progress, please wait. If not, click on the following link. If you always see this same page, you must remove/rename the file install.lock in the documents directory. -Loaded=Loaded -FunctionTest=Function test +MigrationResetBlockedLog=Ponastavi modul BlockedLog za algoritem v7 +MigrationImportOrExportProfiles=Selitev uvoznih ali izvoznih profilov (%s) +ShowNotAvailableOptions=Prikaži nerazpoložljive možnosti +HideNotAvailableOptions=Skrij nerazpoložljive možnosti +ErrorFoundDuringMigration=Med postopkom selitve so bile sporočene napake, zato naslednji korak ni na voljo. Če želite prezreti napake, lahko kliknete tukaj , vendar aplikacija ali nekatere funkcije morda ne bodo delovale pravilno, dokler napake ne bodo odpravljene. +YouTryInstallDisabledByDirLock=Aplikacija se je poskušala samonadgraditi, vendar so bile strani za namestitev/nadgradnjo onemogočene zaradi varnosti (imenik preimenovan s pripono .lock).
+YouTryInstallDisabledByFileLock=Aplikacija se je poskušala samonadgraditi, vendar so bile strani za namestitev/nadgradnjo onemogočene zaradi varnosti (zaradi obstoja zaklepne datoteke install.lock v imeniku dokumentov dolibarr).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
+ClickHereToGoToApp=Kliknite tukaj, da odprete svojo prijavo +ClickOnLinkOrRemoveManualy=Če je nadgradnja v teku, počakajte. Če ne, kliknite naslednjo povezavo. Če vedno vidite isto stran, morate odstraniti/preimenovati datoteko install.lock v imeniku dokumentov. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. +Loaded=Naloženo +FunctionTest=Test delovanja +NodoUpgradeAfterDB=Zunanji moduli po nadgradnji baze podatkov ne zahtevajo nobenega dejanja +NodoUpgradeAfterFiles=Zunanji moduli po nadgradnji datotek ali imenikov ne zahtevajo nobenega dejanja +MigrationContractLineRank=Preseli pogodbo med rangirane (in omogoči rangiranje) diff --git a/htdocs/langs/sl_SI/members.lang b/htdocs/langs/sl_SI/members.lang index eea2c387d6c..e9616b7c30a 100644 --- a/htdocs/langs/sl_SI/members.lang +++ b/htdocs/langs/sl_SI/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=Statistika prispevkov NbOfSubscriptions=Število prispevkov AmountOfSubscriptions=Znesek, zbran s prispevki TurnoverOrBudget=Obseg prodaje (za podjetje) ali proračun (za fundacijo) -DefaultAmount=Privzeti znesek prispevka +DefaultAmount=Default amount of contribution (used only if no amount is defined at member type level) +MinimumAmount=Minimum amount (used only when contribution amount is free) CanEditAmount=Subscription amount is free CanEditAmountDetail=Obiskovalec lahko izbere/uredi višino svojega prispevka ne glede na vrsto člana AmountIsLowerToMinimumNotice=sur un dû total de %s diff --git a/htdocs/langs/sl_SI/oauth.lang b/htdocs/langs/sl_SI/oauth.lang index edf61db23e4..0f6a4aeec0d 100644 --- a/htdocs/langs/sl_SI/oauth.lang +++ b/htdocs/langs/sl_SI/oauth.lang @@ -31,8 +31,9 @@ OAUTH_GITHUB_SECRET=OAuth GitHub Secret OAUTH_URL_FOR_CREDENTIAL=Pojdite na to stran , da ustvarite ali pridobite svoj ID in skrivnost OAuth OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live -OAUTH_ID=OAuth ID +OAUTH_ID=OAuth Client ID OAUTH_SECRET=Skrivnost OAuth +OAUTH_TENANT=OAuth tenant OAuthProviderAdded=Dodan ponudnik OAuth AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Vnos OAuth za tega ponudnika in oznako že obstaja URLOfServiceForAuthorization=URL, ki ga zagotavlja storitev OAuth za preverjanje pristnosti diff --git a/htdocs/langs/sr_RS/admin.lang b/htdocs/langs/sr_RS/admin.lang index 09bf746bf1b..d05a96ba136 100644 --- a/htdocs/langs/sr_RS/admin.lang +++ b/htdocs/langs/sr_RS/admin.lang @@ -51,8 +51,6 @@ ClientSortingCharset=Client collation WarningModuleNotActive=Modul %s mora biti omogućen WarningOnlyPermissionOfActivatedModules=Ovde se pokazuju samo dozvole u vezi sa aktiviranim modulima. Možete aktivirati druge module u Početna->Podešavanja->Moduli. DolibarrSetup=Dolibarr instalacija ili nadogradnja -InternalUser=Interni korisnik -ExternalUser=Spoljni korisnik InternalUsers=Interni korisnici ExternalUsers=Spoljni korisnici UserInterface=User interface @@ -294,6 +292,7 @@ MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (podrazumevana vrednost u php.ini: %s%s) +EMailHelpMsgSPFDKIM=To prevent Dolibarr emails to be classified as spam, make sure that the server is authorized to send e-mails from this address by SPF and DKIM configuration MAIN_MAIL_ERRORS_TO=Email koji se koristi za povratne mailove sa greškom (polje 'Errors-To' u poslatim email-ovima) MAIN_MAIL_AUTOCOPY_TO= Kopirati (Bcc) sve poslate email-ove na MAIN_DISABLE_ALL_MAILS=Onemogućiti slanje email-ova (u svrhu testiranja ili demoa) @@ -439,8 +438,10 @@ Unique=Jedinstveno Boolean=Boolean (jedan čekboks) ExtrafieldPhone = Telefon ExtrafieldPrice = Cena +ExtrafieldPriceWithCurrency=Price with currency ExtrafieldMail = Email ExtrafieldUrl = Url +ExtrafieldIP = IP ExtrafieldSelect = Odabir sa liste ExtrafieldSelectList = Odabir iz tabele ExtrafieldSeparator=Odvajač (nije polje) @@ -450,7 +451,7 @@ ExtrafieldCheckBox=Čekboksevi 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->fetchNoCompute($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->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Store computed field ComputedpersistentDesc=Computed extra fields will be stored in the database, however, the value will only be recalculated when the object of this field is changed. If the computed field depends on other objects or global data this value might be wrong!! 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) @@ -501,7 +502,8 @@ WarningPHPMail=WARNING: The setup to send emails from the application is using t WarningPHPMailA=- Using the server of the Email Service Provider increases the trustability of your email, so it increases the deliverablity without being flagged as SPAM WarningPHPMailB=- Some Email Service 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 for delivery (be careful also of your email provider's sending quota). WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to send emails is also interesting so all emails sent from application will also be saved into your "Sent" directory of your mailbox. -WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. +WarningPHPMailD=It is therefore recommended to change the sending method of e-mails to the value "SMTP". +WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. 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. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s @@ -514,7 +516,7 @@ PageUrlForDefaultValuesCreate=
Example:
For the form to create a new third 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 AlsoDefaultValuesAreEffectiveForActionCreate=Also note that overwritting default values for form creation works only for pages that were correctly designed (so with parameter action=create or presend...) EnableDefaultValues=Enable customization of default values -EnableOverwriteTranslation=Enable usage of overwritten translation +EnableOverwriteTranslation=Allow customization of translations GoIntoTranslationMenuToChangeThis=A translation has been found for the key with this code. To change this value, you must edit it from Home-Setup-translation. WarningSettingSortOrder=Warning, setting a default sort order may result in a technical error when going on the list page if field is an unknown field. If you experience such an error, come back to this page to remove the default sort order and restore default behavior. Field=Polje @@ -643,11 +645,13 @@ Module2300Name=Planirani poslovi Module2300Desc=Menadžment planiranih poslova (alias cron ili chrono tabela) Module2400Name=Događaji/agenda Module2400Desc=Pratite događaje. Logovanje automatskih događaja za praćenje smisla ili beleženje ručnih događaja ili sastanaka. Ovo je glavni modul za Menadžment Odnosa sa Kupcima ili Dobavljačima +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=DMS / ECM Module2500Desc=Sistem menadžmenta dokumenata DMS / Menadžment elektronskog sadržaja ECM. Automatska organizacija vaših generisanih i sačuvanih dokuemenata. Delite ih kada je potrebno. -Module2600Name=API/Web servisi (SOAP server) +Module2600Name=API / Web services (SOAP server) Module2600Desc=Omogućiti da Dolibarr SOAP server pruža API servis -Module2610Name=API/Web services (REST server) +Module2610Name=API / Web services (REST server) Module2610Desc=Enable the Dolibarr REST server providing API services Module2660Name=Poziv WebServices (SOAP client) Module2660Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Only Purchase orders are currently supported.) @@ -658,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind mogućnosti konverzije Module3200Name=Unalterable Archives Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. +Module3300Name=Module Builder +Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. Module3400Name=Social Networks Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...). Module4000Name=HRM @@ -698,7 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Add features to manage Incoterms Module63000Name=Resursi Module63000Desc=Manage resources (printers, cars, rooms, ...) for allocating to events -Permission11=Pregled računa za kupce +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. +Module94160Name=Receptions +Permission11=Read customer invoices (and payments) Permission12=Napravi/promeni račun za kupca Permission13=Poništi račun za kupca Permission14=Potvrdi račun za kupca @@ -842,9 +851,9 @@ Permission286=Export contacts Permission291=Read tariffs Permission292=Set permissions on the tariffs Permission293=Modify customer's tariffs -Permission300=Read barcodes -Permission301=Create/modify barcodes -Permission302=Delete barcodes +Permission301=Generate PDF sheets of barcodes +Permission304=Create/modify barcodes +Permission305=Delete barcodes Permission311=Read services Permission312=Assign service/subscription to contract Permission331=Read bookmarks @@ -940,7 +949,7 @@ Permission1190=Approve (second approval) purchase orders Permission1191=Export supplier orders and their attributes Permission1201=Get result of an export Permission1202=Create/Modify an export -Permission1231=Read vendor invoices +Permission1231=Read vendor invoices (and payments) Permission1232=Create/modify vendor invoices Permission1233=Validate vendor invoices Permission1234=Delete vendor invoices @@ -971,13 +980,14 @@ Permission3301=Generate new modules Permission4001=Read skill/job/position Permission4002=Create/modify skill/job/position Permission4003=Delete skill/job/position -Permission4020=Read evaluations -Permission4021=Create/modify your evaluation -Permission4022=Validate evaluation -Permission4023=Delete evaluation -Permission4030=See comparison menu +Permission4021=Read evaluations (yours and your subordinates) +Permission4022=Create/modify evaluations +Permission4023=Validate evaluation +Permission4025=Delete evaluation +Permission4028=See comparison menu Permission4031=Read personal information Permission4032=Write personal information +Permission4033=Read all evaluations (even those of user not subordinates) Permission10001=Read website content Permission10002=Create/modify website content (html and javascript content) Permission10003=Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers. @@ -1081,6 +1091,10 @@ DictionaryAssetDisposalType=Type of disposal of assets TypeOfUnit=Type of unit SetupSaved=Setup saved SetupNotSaved=Setup not saved +OAuthServiceConfirmDeleteTitle=Delete OAuth entry +OAuthServiceConfirmDeleteMessage=Are you sure you want to delete this OAuth entry ? All existing tokens for it will also be deleted. +ErrorInEntryDeletion=Error in entry deletion +EntryDeleted=Entry deleted BackToModuleList=Back to Module list BackToDictionaryList=Back to Dictionaries list TypeOfRevenueStamp=Type of tax stamp @@ -1222,7 +1236,7 @@ SetupDescription4=%s -> %s

This software is a suite of m SetupDescription5=Other Setup menu entries manage optional parameters. SetupDescriptionLink=%s - %s SetupDescription3b=Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Security events that are audited NoSecurityEventsAreAduited=No security events are audited. You can enable them from menu %s Audit=Security events @@ -1244,6 +1258,7 @@ 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 to administrator users only. Dolibarr user permissions cannot change this restriction. CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. +MoreNetworksAvailableWithModule=More social networks may be available by enabling the module "Social networks". AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and presentation of the application can be modified here. @@ -1261,6 +1276,7 @@ TriggerActiveAsModuleActive=Triggers in this file are active as module %s GeneratedPasswordDesc=Choose the method to be used for auto-generated passwords. DictionaryDesc=Insert all reference data. You can add your values to the default. ConstDesc=This page allows you to edit (override) parameters not available in other pages. These are mostly reserved parameters for developers/advanced troubleshooting only. +MiscellaneousOptions=Miscellaneous options 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 @@ -1294,6 +1310,8 @@ YouMustRunCommandFromCommandLineAfterLoginToUser=You must run this command from YourPHPDoesNotHaveSSLSupport=SSL functions not available in your PHP DownloadMoreSkins=More skins to download SimpleNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset +SimpleRefNumRefModelDesc=Returns the reference number in the format n where n is a sequential auto-incrementing number with no reset +AdvancedNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset SimpleNumRefNoDateModelDesc=Returns the reference number in the format %s-nnnn where nnnn is a sequential auto-incrementing number with no reset ShowProfIdInAddress=Show professional ID with addresses ShowVATIntaInAddress=Hide intra-Community VAT number @@ -1380,7 +1398,7 @@ GetBarCode=Get barcode NumberingModules=Numbering models DocumentModules=Document models ##### Module password generation -PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters in lowercase. +PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters. PasswordGenerationNone=Do not suggest a generated password. Password must be typed in manually. PasswordGenerationPerso=Povrati lozinku po konfiguraciji koju ste definisali. SetupPerso=Prema Vašoj konfiguraciji @@ -1434,6 +1452,10 @@ SuppliersPayment=Vendor payments SupplierPaymentSetup=Vendor payments setup InvoiceCheckPosteriorDate=Check facture date before validation InvoiceCheckPosteriorDateHelp=Validating an invoice will be forbidden if its date is anterior to the date of last invoice of same type. +InvoiceOptionCategoryOfOperations=Display the mention "category of operations" on the invoice. +InvoiceOptionCategoryOfOperationsHelp=Depending on the situation, the mention will appear in the form:
- Category of operations: Delivery of goods
- Category of operations: Provision of services
- Category of operations: Mixed - Delivery of goods & provision of services +InvoiceOptionCategoryOfOperationsYes1=Yes, below the address block +InvoiceOptionCategoryOfOperationsYes2=Yes, in the lower left-hand corner ##### Proposals ##### PropalSetup=Commercial proposals module setup ProposalsNumberingModules=Commercial proposal numbering models @@ -1476,11 +1498,12 @@ WatermarkOnDraftContractCards=Watermark on draft contracts (none if empty) ##### Members ##### MembersSetup=Members module setup MemberMainOptions=Main options +MemberCodeChecker=Options for automatic generation of member codes 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 MemberCreateAnExternalUserForSubscriptionValidated=Create an external user login for each new member subscription validated -VisitorCanChooseItsPaymentMode=Visitor can choose from available payment modes +VisitorCanChooseItsPaymentMode=Visitor can choose from any 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. MembersDocModules=Document templates for documents generated from member record ##### LDAP setup ##### @@ -1742,8 +1765,8 @@ ActivateFCKeditor=Activate advanced editor for: FCKeditorForNotePublic=WYSIWIG creation/edition of the field "public notes" of elements FCKeditorForNotePrivate=WYSIWIG creation/edition of the field "private notes" of elements FCKeditorForCompany=WYSIWIG creation/edition of the field description of elements (except products/services) -FCKeditorForProduct=WYSIWIG creation/edition of the field description of products/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 creation/edition of products description or lines for objects (lines of proposals, orders, invoices, etc...). +FCKeditorForProductDetails2=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. FCKeditorForMailing= WYSIWIG creation/edition for mass eMailings (Tools->eMailing) FCKeditorForUserSignature=WYSIWIG creation/edition of user signature FCKeditorForMail=WYSIWIG creation/edition for all mail (except Tools->eMailing) @@ -1766,7 +1789,7 @@ DetailMenuHandler=Menu handler where to show new menu DetailMenuModule=Module name if menu entry come from a module DetailType=Type of menu (top or left) DetailTitre=Menu label or label code for translation -DetailUrl=URL where menu send you (Absolute URL link or external link with http://) +DetailUrl=URL where menu send you (Relative URL link or external link with https://) DetailEnabled=Condition to show or not entry DetailRight=Condition to display unauthorized grey menus DetailLangs=Lang file name for label code translation @@ -1810,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Use events types (managed in menu Setup -> Dictionaries -> 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_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Which view do you want to open by default when selecting menu Agenda AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (When remind date is reached, a popup is shown by the browser. Each user can disable such notifications from its browser notification setup). AGENDA_REMINDER_BROWSER_SOUND=Enable sound notification @@ -1837,7 +1863,7 @@ StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatib CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sale from Point of Sale. Hence a warehouse is required. CashDeskForceDecreaseStockLabel=Stock decrease for batch products was forced. CashDeskForceDecreaseStockDesc=Decrease first by the oldest eatby and sellby dates. -CashDeskReaderKeyCodeForEnter=Key code for "Enter" defined in barcode reader (Example: 13) +CashDeskReaderKeyCodeForEnter=Key ASCII code for "Enter" defined in barcode reader (Example: 13) ##### Bookmark ##### BookmarkSetup=Bookmark module setup 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. @@ -1875,7 +1901,7 @@ SuppliersInvoiceNumberingModel=Vendor invoices numbering models IfSetToYesDontForgetPermission=If set to a non null value, don't forget to provide permissions to groups or users allowed for the second approval ##### GeoIPMaxmind ##### GeoIPMaxmindSetup=GeoIP Maxmind module setup -PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation.
Examples:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoLite2-Country.mmdb +PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation NoteOnPathLocation=Note that your ip to country data file must be inside a directory your PHP can read (Check your PHP open_basedir setup and filesystem permissions). YouCanDownloadFreeDatFileTo=You can download a free demo version of the Maxmind GeoIP country file at %s. YouCanDownloadAdvancedDatFileTo=You can also download a more complete version, with updates, of the Maxmind GeoIP country file at %s. @@ -1926,6 +1952,7 @@ BackupDumpWizard=Wizard to build the database dump file BackupZipWizard=Wizard to build the archive of documents directory 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 a manual process only a privileged user may perform. +InstallModuleFromWebHasBeenDisabledContactUs=Install or development of external modules or dynamic websites, from the application, is currently locked for security purpose. Please contact us if you need to enable this feature. 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 @@ -2053,6 +2080,8 @@ RemoveSpecialChars=Remove special characters COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN_REGEX) COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Duplicate not allowed +RemoveSpecialWords=Clean certain words when generating sub-accounts for customers or suppliers +RemoveSpecialWordsHelp=Specify the words to be cleaned before calculating the customer or supplier account. Use a ";" between each word GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact) GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here HelpOnTooltip=Help text to show on tooltip @@ -2080,6 +2109,7 @@ MailboxTargetDirectory=Mailbox target directory EmailcollectorOperations=Operations to do by collector EmailcollectorOperationsDesc=Operations are executed from top to bottom order MaxEmailCollectPerCollect=Max number of emails collected per collect +TestCollectNow=Test collect CollectNow=Collect now ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s? DateLastCollectResult=Date of latest collect try @@ -2109,6 +2139,7 @@ CodeLastResult=Latest result code NbOfEmailsInInbox=Number of emails in source directory LoadThirdPartyFromName=Load third party searching on %s (load only) LoadThirdPartyFromNameOrCreate=Load third party searching on %s (create if not found) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Message from a conversation initiated by a first email sent from Dolibarr WithoutDolTrackingID=Message from a conversation initiated by a first email NOT sent from Dolibarr @@ -2183,6 +2214,7 @@ ShowProjectLabel=Project Label PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty +PDFIn2Languages=Show labels into PDF in 2 different languages PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2211,12 +2243,12 @@ MailToPartnership=Partnership AGENDA_EVENT_DEFAULT_STATUS=Default event status when creating a event from the form YouShouldDisablePHPFunctions=You should disable PHP functions IfCLINotRequiredYouShouldDisablePHPFunctions=Except if you need to run system commands in custom code, you shoud disable PHP functions -PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an anitivurs program), you must keep PHP functions +PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an antivirus program), you must keep PHP functions NoWritableFilesFoundIntoRootDir=No writable files or directories of the common programs were found into your root directory (Good) RecommendedValueIs=Recommended: %s Recommended=Preporučeno NotRecommended=Not recommended -ARestrictedPath=Some restricted path +ARestrictedPath=Some restricted path for data files CheckForModuleUpdate=Check for external modules updates CheckForModuleUpdateHelp=This action will connect to editors of external modules to check if a new version is available. ModuleUpdateAvailable=An update is available @@ -2264,7 +2296,7 @@ LateWarningAfter="Late" warning after TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode -ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. +ExportUseLowMemoryModeHelp=Use the low memory mode to generate the dump file (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that the file is complete and error message can't be reported if it fails. Use it if you experience not enough memory errors. ModuleWebhookName = Webhook ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL @@ -2288,6 +2320,8 @@ IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices +INVOICE_SHOW_SHIPPING_ADDRESS=Show shipping address +INVOICE_SHOW_SHIPPING_ADDRESSMore=Compulsory mention for France UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. IfThisCategoryIsChildOfAnother=If this category is a child of another one DarkThemeMode=Dark theme mode @@ -2307,3 +2341,34 @@ UsePassword=Use a password UseOauth=Use a OAUTH token Images=Images MaxNumberOfImagesInGetPost=Max number of images allowed in a HTML field submitted in a form +MaxNumberOfPostOnPublicPagesByIP=Max number of posts on public pages with the same IP address in a month +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: +ScriptIsEmpty=The script is empty +ShowHideTheNRequests=Show/hide the %s SQL request(s) +DefinedAPathForAntivirusCommandIntoSetup=Define a path for an antivirus program into %s +TriggerCodes=Triggerable events +TriggerCodeInfo=Enter here the trigger code(s) that must generate a post of a web request (only external URL are allowed). You can enter several trigger codes separated by a comma. +EditableWhenDraftOnly=If unchecked, the value can only be modified when object has a draft status +CssOnEdit=Css on edit pages +CssOnView=Css on view pages +CssOnList=Css on list pages +HelpCssOnEditDesc=The Css used when editing the field.
Example: "minwiwdth100 maxwidth500 widthcentpercentminusx" +HelpCssOnViewDesc=The Css used when viewing the field. +HelpCssOnListDesc=The Css used when field is inside a list table.
Example: "tdoverflowmax200" +RECEPTION_PDF_HIDE_ORDERED=Hide the quantity ordered on the generated documents for receptions +MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT=Show the price on the generated documents for receptions +WarningDisabled=Warning disabled +LimitsAndMitigation=Access limits and mitigation +DesktopsOnly=Desktops only +DesktopsAndSmartphones=Desktops et smartphones +AllowOnlineSign=Allow online signing +AllowExternalDownload=Allow external download (without login, using a shared link) +DeadlineDayVATSubmission=Deadline day for vat submission on the next month +MaxNumberOfAttachementOnForms=Max number of joinded files in a form +IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/sv_SE/admin.lang b/htdocs/langs/sv_SE/admin.lang index d4f9ce90625..43a99a810b3 100644 --- a/htdocs/langs/sv_SE/admin.lang +++ b/htdocs/langs/sv_SE/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Kryssrutor ExtrafieldCheckBoxFromList=Kryssrutor från tabell ExtrafieldLink=Länk till ett objekt ComputedFormula=Beräknat fält -ComputedFormulaDesc=Här kan du ange en formel som använder andra objektegenskaper eller någon PHP-kodning för att få ett dynamiskt beräknat värde. Du kan använda alla PHP-kompatibla formler inklusive "?" operand och följande globala objekt: $db, $conf, $langs, $mysoc, $user, $object.
VARNING: Endast vissa egenskaper för $object kan vara tillgängliga. Om du behöver egenskaper som inte har laddats hämtar du bara objektet till din formel som i det andra exemplet.
Att använda ett beräknat fält betyder att du inte kan ange något värde från gränssnittet. Om det finns ett syntaxfel kan formeln kanske inte returnera något.

Exempel på formel
$object->id<10?round($object->id/2,2):($object->id+2*$user->id)*(int) substr($mysoc->zip,1,2)

Exempel på att ladda om objekt
(($reloadedobj=newSociete($db))&&($reloadedobj->fetchNoCompute($obj->id?$obj->id:($obj->rad)>rowid:$object->id))>0))?$reloadedobj->array_options ['options_extrafieldkey']*$reloadedobj->capital/5:'-1'

Annat exempel på formel för att tvinga objektets laddning och dess överordnade objekt:
(($reloadedob=))&&($reloadedobj->fetchNoCompute($object->id)>0)&&($secondloadedobj=newProject($db))&&($secondloadedobj->fetchNoCompute($reloadedobj->fk_project)>0))?$secondloadedobj->ref:'Överordnat projekt hittades inte' +ComputedFormulaDesc=Du kan här ange en formel med hjälp av andra egenskaper hos objektet eller någon PHP-kodning för att få ett dynamiskt beräknat värde. Du kan använda alla PHP-kompatibla formler inklusive "?" condition operator och följande globala objekt: $db, $conf, $langs, $mysoc, $user, $objectoffield .
VARNING : Om du behöver egenskaper för ett objekt som inte är laddat, hämta bara objektet till din formel som i det andra exemplet.
Att använda ett beräknat fält innebär att du inte kan ange något värde från gränssnittet. Dessutom, om det finns ett syntaxfel kan formeln inte returnera något.

Exempel på formel:
$objectoffield->id < 10 ? round($objectoffield-> id / 2, 2): ($objectoffield->id + 2 * $user-> sub, 2, 2, 2 * $ (int)-> sub )

Exempel på att ladda om objektet
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffields_do) *' >loadedobjettions_exemplar-> id-> $arbjreoptionsfältet->id) ->capital / 5: '-1')

Annat exempel på formel för att tvinga fram laddning av objekt och dess överordnade objekt:
(($reloadedobj = new Task($db)) && ($reload($reload) ->id) > 0) && ($secondloadedobj = new project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Föräldraprojekt hittades inte' Computedpersistent=Lagra beräknat fält ComputedpersistentDesc=Beräknade extrafält kommer att lagras i databasen, men värdet beräknas bara om objektet för detta fält ändras. Om det beräknade fältet beror på andra objekt eller globala data kan detta värde vara fel!! ExtrafieldParamHelpPassword=Om du lämnar fältet tomt betyder det att detta värde kommer att sparas utan kryptering (fältet döljas bara med stjärnor på skärmen).
Ange 'auto' för att använda standardregel för kryptering för att spara lösenord i databasen (då är läsningsvärde endast en hash och det finns inget sätt att hämta originalvärdet) @@ -645,8 +645,8 @@ Module2300Name=Schemalagda jobb Module2300Desc=Hantering av schemalagda jobb (cron eller chrono-tabell) Module2400Name=Händelser/dagordning Module2400Desc=Registrera händelser. Logga automatiska händelser för spårningsändamål eller registrera händelser eller möten manuellt. Detta är huvudmodulen för bra kund- eller leverantörsrelation! -Module2430Name=Bokningskalendersystem -Module2430Desc=Tillhandahåll en onlinekalender så att vem som helst kan boka möten, enligt fördefinierade intervall eller tillgänglighet. +Module2430Name=Bokningssystem +Module2430Desc=Tillhandahåll en onlinekalender så att vem som helst kan boka möten enligt fördefinierade intervall eller tillgänglighet. Module2500Name=DMS/ECM Module2500Desc=Dokumenthanteringssystem/elektronisk innehållshantering. Automatisk organisering av dina skapade eller lagrade dokument. Dela dem när du behöver. Module2600Name=API/webbtjänster (SOAP-server) @@ -704,8 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Lägg till funktioner för att hantera Incoterms Module63000Name=Resurser Module63000Desc=Hantera resurser (skrivare, bilar, rum, ...) för att tilldela händelser +Module66000Name=Aktivera OAuth2-autentisering +Module66000Desc=Tillhandahåll ett verktyg för att generera och hantera OAuth2-tokens. Token kan sedan användas av vissa andra moduler. Module94160Name=Mottagningar -Permission11=Se fakturor +Permission11=Läs kundfakturor (och betalningar) Permission12=Skapa/ändra fakturor Permission13=Ogiltigförklara fakturor Permission14=Bekräfta fakturor @@ -947,7 +949,7 @@ Permission1190=Godkänn (andra godkännande) inköpsorder Permission1191=Exportera leverantörsorder och deras attribut Permission1201=Få resultatet av en export Permission1202=Skapa/ändra en export -Permission1231=Se leverantörsfakturor +Permission1231=Läs leverantörsfakturor (och betalningar) Permission1232=Skapa/ändra leverantörsfakturor Permission1233=Bekräfta leverantörsfakturor Permission1234=Radera leverantörsfakturor @@ -1234,7 +1236,7 @@ SetupDescription4= %s -> %s

Denna programvara innehå SetupDescription5=Andra inställningsmenyposter hanterar valfria parametrar. SetupDescriptionLink=%s - %s SetupDescription3b=Grundläggande inställningar för att anpassa standardbeteendet (t.ex. för landsspecifika funktioner). -SetupDescription4b=Denna programvara innehåller en serie av många moduler. Modulerna för just dina behov måste vara aktiverade och konfigurerade. Menyposter visas efter aktiveringen av dessa moduler. +SetupDescription4b=Denna programvara är en svit med många moduler/applikationer. Modulerna relaterade till dina behov måste aktiveras. Menyposter kommer att visas när dessa moduler aktiveras. AuditedSecurityEvents=Säkerhetshändelser som granskas NoSecurityEventsAreAduited=Inga säkerhetshändelser granskas. Du kan aktivera dem från menyn %s Audit=Säkerhetshändelser @@ -1408,77 +1410,77 @@ UsersSetup=Inställningar för modulen Användare UserMailRequired=E-postadress krävs för att skapa en ny användare UserHideInactive=Dölj inaktiva användare från alla kombinationslistor över användare (rekommenderas inte: detta kan innebära att du inte kan filtrera eller söka efter gamla användare på vissa sidor) UsersDocModules=Dokumentmallar för dokument som genereras från användarposten -GroupsDocModules=Dokumentmallar för dokument som genereras från en grupppost +GroupsDocModules=Dokumentmallar för dokument som genereras från en gruppost ##### HRM setup ##### HRMSetup=Inställning av HRM-modulen ##### Company setup ##### CompanySetup=Inställning av modulen Företag -CompanyCodeChecker=Alternativ för automatisk generering av kund / leverantörskoder -AccountCodeManager=Alternativ för automatisk generering av kund / leverantörsräkningskod -NotificationsDesc=E-postmeddelanden kan skickas automatiskt för vissa Dolibarr-evenemang.
Mottagare av notiser kan definieras: +CompanyCodeChecker=Alternativ för automatisk generering av kundnummer/leverantörsnummer +AccountCodeManager=Alternativ för automatisk generering av bokföringskod för kund/leverantör +NotificationsDesc=E-postmeddelanden kan skickas automatiskt för vissa evenemang.
Mottagare av notiser kan anges: NotificationsDescUser=* per användare, en användare i taget. -NotificationsDescContact=* per tredjepartskontakter (kunder eller leverantörer), en kontakt i taget. +NotificationsDescContact=* per tredjepartskontakter (kund eller leverantör), en kontakt i taget. NotificationsDescGlobal=* eller genom att sätta en global e-postadress under inställningar för modulen ModelModules=Dokumentmallar -DocumentModelOdt=Generera dokument från OpenDocument-mallar (.ODT / .ODS-filer från LibreOffice, OpenOffice, KOffice, TextEdit, ...) -WatermarkOnDraft=Vattenstämpel utkast -JSOnPaimentBill=Aktivera funktionen för att fylla automatiskt betalningslinjer på inbetalningskort -CompanyIdProfChecker=Regler för professionella id +DocumentModelOdt=Generera dokument från OpenDocument-mallar (.ODT/.ODS-filer från LibreOffice, OpenOffice, KOffice, TextEdit, ...) +WatermarkOnDraft=Vattenstämpel på dokumentutkast +JSOnPaimentBill=Aktivera funktionen för att automatiskt fylla betalrader på inbetalningskort +CompanyIdProfChecker=Regler för professionell id MustBeUnique=Måste vara unik? MustBeMandatory=Obligatoriskt att skapa tredje part (om momsnummer eller typ av företag definieras)? MustBeInvoiceMandatory=Obligatoriskt att bekräfta fakturor? TechnicalServicesProvided=Tekniska tjänster tillhandahålls #####DAV ##### -WebDAVSetupDesc=Det här är länken för åtkomst till WebDAV-katalogen. Den innehåller en "allmän" dir öppen för alla användare som känner till webbadressen (om offentlig katalogåtkomst tillåts) och en "privat" katalog som behöver ett befintligt inloggningskonto / lösenord för åtkomst. -WebDavServer=Root-URL för %s-servern: %s +WebDAVSetupDesc=Det här är länken för åtkomst till WebDAV-katalogen. Den innehåller en "allmän" katalog öppen för alla användare som känner till webbadressen (om offentlig katalogåtkomst tillåts) och en "privat" katalog som behöver ett befintligt inloggningskonto/lösenord för åtkomst. +WebDavServer=Root-URL för %s-servern:%s ##### Webcal setup ##### -WebCalUrlForVCalExport=En export länk till %s format finns på följande länk: %s +WebCalUrlForVCalExport=En exportlänk till %s format finns på följande länk: %s ##### Invoices ##### -BillsSetup=Fakturor modul inställning -BillsNumberingModule=Fakturor och kreditnotor numrering modul -BillsPDFModules=Faktura dokument modeller +BillsSetup=Fakturor modulinställning +BillsNumberingModule=Numreringsmodell för fakturor och kreditfakturor +BillsPDFModules=Faktura dokumentmodeller BillsPDFModulesAccordindToInvoiceType=Faktura dokumentmodeller enligt fakturatyp -PaymentsPDFModules=Betalningsdokumentmodeller -ForceInvoiceDate=Force fakturadatum till giltighetsdatum -SuggestedPaymentModesIfNotDefinedInInvoice=Föreslaget betalningsläge på faktura som standard om det inte definieras på fakturan +PaymentsPDFModules=Faktura dokumentmodeller +ForceInvoiceDate=Tvinga fakturadatum till giltighetsdatum +SuggestedPaymentModesIfNotDefinedInInvoice=Föreslaget betalningsläge på faktura som standard om det inte anges på fakturan SuggestPaymentByRIBOnAccount=Föreslå betalning genom uttag på konto SuggestPaymentByChequeToAddress=Föreslå betalning med check till -FreeLegalTextOnInvoices=Fri text på fakturor -WatermarkOnDraftInvoices=Vattenstämpel på utkast till fakturor (ingen om tom) -PaymentsNumberingModule=Betalningsnummereringsmodell +FreeLegalTextOnInvoices=Fritext på fakturor +WatermarkOnDraftInvoices=Vattenstämpel på fakturautkast (tomt om ingen) +PaymentsNumberingModule=Numreringsmodell för betalningar SuppliersPayment=Leverantörsbetalningar SupplierPaymentSetup=Inställningar för leverantörsbetalningar InvoiceCheckPosteriorDate=Kontrollera fakturadatum före godkännande InvoiceCheckPosteriorDateHelp=Godkännande av fakturan är förbjudet om datumet är tidigare än senaste fakturan av samma typ -InvoiceOptionCategoryOfOperations=Visa omnämningen "verksamhetskategori" på fakturan. +InvoiceOptionCategoryOfOperations=Visa "verksamhetskategori" på fakturan. InvoiceOptionCategoryOfOperationsHelp=Beroende på situationen kommer omnämnandet att visas i formen:
- Verksamhetskategori: Leverans av varor
- Verksamhetskategori: Tillhandahållande av tjänster
- Verksamhetskategori: Blandat och tillhandahållande av tjänster InvoiceOptionCategoryOfOperationsYes1=Ja, under adressblocket InvoiceOptionCategoryOfOperationsYes2=Ja, i nedre vänstra hörnet ##### Proposals ##### -PropalSetup=Kommersiella förslag modul inställning -ProposalsNumberingModules=Kommersiella förslag numrering moduler -ProposalsPDFModules=Kommersiella förslag dokument modeller -SuggestedPaymentModesIfNotDefinedInProposal=Föreslaget betalningsläge på förslag som standard om det inte definieras i förslaget -FreeLegalTextOnProposal=Fri text på affärsförslag -WatermarkOnDraftProposal=Vattenstämpel på utkast till affärsförslag (ingen om tom) -BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Be om bankkonto destination förslag +PropalSetup=Modulinställning för offerter +ProposalsNumberingModules=Numreringsmodell för offerter +ProposalsPDFModules=Dokumentmodeller för offerter +SuggestedPaymentModesIfNotDefinedInProposal=Föreslaget betalsätt för offerter som standard om det inte anges i offerten +FreeLegalTextOnProposal=Fritext i offerter +WatermarkOnDraftProposal=Vattenstämpel på offertutkast (tom om ingen) +BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Fråga efter mottagande bankkonto på offert ##### SupplierProposal ##### -SupplierProposalSetup=Pris begär leverantörer modul konfiguration -SupplierProposalNumberingModules=Pris förfrågningar leverantörer numrerings modeller -SupplierProposalPDFModules=Pris begär leverantörer dokument modeller -FreeLegalTextOnSupplierProposal=Fritext på förfrågningar pris leverantörer -WatermarkOnDraftSupplierProposal=Vattenstämpel om förslaget pris begär leverantörer (ingen om tom) -BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL=Fråga efter bankkonto destination prisbegäran -WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Be om lagerkälla för order +SupplierProposalSetup=Modulinställning prisförfrågan leverantör +SupplierProposalNumberingModules=Numreringsmodell för prisförfrågan hos leverantör +SupplierProposalPDFModules=Dokumentmodeller för prisförfrågan hos leverantörer +FreeLegalTextOnSupplierProposal=Fritext på prisförfrågan hos leverantörer +WatermarkOnDraftSupplierProposal=Vattenstämpel på utkast till prisförfrågan hos leverantör (tom om ingen) +BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL=Fråga efter mottagande bankkonto för prisförfrågan hos leverantör +WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Fråga efter lager vid order ##### Suppliers Orders ##### -BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Be om kontokortdestination för inköpsorder +BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Fråga efter mottagande bankkonto vid inköpsorder ##### Orders ##### -SuggestedPaymentModesIfNotDefinedInOrder=Föreslaget betalningsläge på försäljningsorder om standardvärde inte är inställt i ordern -OrdersSetup=Försäljningsorderhanteringsinställningar -OrdersNumberingModules=Beställningar numrering moduler -OrdersModelModule=Beställ dokument modeller -FreeLegalTextOnOrders=Fri text på order -WatermarkOnDraftOrders=Vattenstämpel på utkast till beställningar (ingen om tom) +SuggestedPaymentModesIfNotDefinedInOrder=Föreslaget betalsätt på försäljningsorder som standard och om inte angivet i ordererkännandet +OrdersSetup=Inställningar för försäljningsorder +OrdersNumberingModules=Modulnumrering för ordererkännande +OrdersModelModule=Dokumentmodeller för försäljningsorder +FreeLegalTextOnOrders=Fritext på ordererkännanden +WatermarkOnDraftOrders=Vattenstämpel på utkast till ordererkännande (tom om ingen) ShippableOrderIconInList=Lägg en ikon i Order lista som anger om beställningen är shippable BANK_ASK_PAYMENT_BANK_DURING_ORDER=Fråga om målbankkonto för order ##### Interventions ##### @@ -2366,3 +2368,7 @@ MaxNumberOfAttachementOnForms=Max antal sammanfogade filer i ett formulär IfDefinedUseAValueBeetween=Om angiven, använd ett värde mellan %soch %s Reload=Ladda om ConfirmReload=Bekräfta omladdning av modulen +WarningModuleHasChangedLastVersionCheckParameter=Varning: modulen %s har satt en parameter för att kontrollera dess version vid varje sidåtkomst. Detta är en dålig och otillåten praxis som kan göra sidan för att administrera moduler instabil. Kontakta skaparen av modulen för att fixa detta. +WarningModuleHasChangedSecurityCsrfParameter=Varning: modulen %s har inaktiverat CSRF-säkerheten för din instans. Denna åtgärd är misstänkt och din installation kanske inte längre är säkrad. Kontakta författaren av modulen för förklaring. +EMailsInGoingDesc=Inkommande e-postmeddelanden hanteras av modulen %s. Du måste aktivera och konfigurera det om du behöver stödja inkommande e-postmeddelanden. +MAIN_IMAP_USE_PHPIMAP=Använd PHP-IMAP-biblioteket för IMAP istället för inbyggt PHP IMAP. Detta tillåter också användningen av en OAuth2-anslutning för IMAP (modulen OAuth måste också vara aktiverad). diff --git a/htdocs/langs/sv_SE/agenda.lang b/htdocs/langs/sv_SE/agenda.lang index 55fa261258d..1a84efeee4a 100644 --- a/htdocs/langs/sv_SE/agenda.lang +++ b/htdocs/langs/sv_SE/agenda.lang @@ -177,5 +177,6 @@ ReminderType=Återanropstyp AddReminder=Skapa en automatisk påminnelse för händelsen ErrorReminderActionCommCreation=Fel vid skapande av påminnelse BrowserPush=Popup i webbläsare +Reminders=Påminnelser ActiveByDefault=Aktiverad som standard Until=tills diff --git a/htdocs/langs/sv_SE/banks.lang b/htdocs/langs/sv_SE/banks.lang index 63f54c9f208..71f714f2f81 100644 --- a/htdocs/langs/sv_SE/banks.lang +++ b/htdocs/langs/sv_SE/banks.lang @@ -49,6 +49,9 @@ BankAccountDomiciliation=Bankadress BankAccountCountry=Konto land BankAccountOwner=Kontoinnehavare namn BankAccountOwnerAddress=Kontoinnehavare adress +BankAccountOwnerZip=Kontoägarens postnummer +BankAccountOwnerTown=Kontoägarens stad +BankAccountOwnerCountry=Kontoägarens land CreateAccount=Skapa konto NewBankAccount=Nytt konto NewFinancialAccount=Nytt finansiellt konto diff --git a/htdocs/langs/sv_SE/dict.lang b/htdocs/langs/sv_SE/dict.lang index daad01c28d8..df5d09a060c 100644 --- a/htdocs/langs/sv_SE/dict.lang +++ b/htdocs/langs/sv_SE/dict.lang @@ -247,6 +247,7 @@ CountryJE=Jersey CountryME=Montenegro CountryBL=Saint Barthelemy CountryMF=Saint Martin +CountryXK=Kosovo ##### Civilities ##### CivilityMME=Mrs diff --git a/htdocs/langs/sv_SE/errors.lang b/htdocs/langs/sv_SE/errors.lang index e49a78d4d53..ddbf7e223d1 100644 --- a/htdocs/langs/sv_SE/errors.lang +++ b/htdocs/langs/sv_SE/errors.lang @@ -304,6 +304,11 @@ ErrorValueCantBeNull=Värdet för %s kan inte vara null ErrorDateOfMovementLowerThanDateOfFileTransmission=Datumet för banktransaktionen får inte vara tidigare än datumet för filöverföringen ErrorTooMuchFileInForm=För många filer i formuläret, det maximala antalet är %s fil(er) ErrorSessionInvalidatedAfterPasswordChange=Sessionen ogiltigförklarades efter byte av lösenord, status eller giltighetsdatum. Vänligen logga in igen. +ErrorExistingPermission = Tillstånd %s för objekt %s finns redan +ErrorFieldExist=Värdet för %s finns redan +ErrorEqualModule=Modul ogiltig i %s +ErrorFieldValue=Värdet för %s är felaktigt +ErrorCoherenceMenu= %s krävs när % är lika med VÄNSTER # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Din PHP-parameter upload_max_filesize (%s) är högre än PHP-parameter post_max_size (%s). Detta är inte en konsekvent installation. @@ -342,6 +347,7 @@ WarningPaypalPaymentNotCompatibleWithStrict=Värdet "Strikt" gör att onlinebeta WarningThemeForcedTo=Varning, temat har tvingats till %s av en dold konstant MAIN_FORCETHEME WarningPagesWillBeDeleted=Varning, detta kommer också att radera alla befintliga sidor/behållare på webbplatsen. Du bör exportera din webbplats innan, så du har en säkerhetskopia för att återimportera den senare. WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal=Automatisk validering är inaktiverad när alternativet att minska lager är inställt på "Fakturavalidering". +WarningModuleNeedRefrech = Modul %s har inaktiverats. Glöm inte att aktivera det # Validate RequireValidValue = Värdet är inte giltigt diff --git a/htdocs/langs/sv_SE/install.lang b/htdocs/langs/sv_SE/install.lang index bd463e4ecb5..ef6ea8d0365 100644 --- a/htdocs/langs/sv_SE/install.lang +++ b/htdocs/langs/sv_SE/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Konfigurationsfil %s är inte skrivbar. Kontrolle ConfFileIsWritable=Konfigurationsfilen %s är skrivbar. ConfFileMustBeAFileNotADir=Konfigurationsfil %s måste vara en fil, inte en katalog. ConfFileReload=Uppdatera parametrar från konfigurationsfilen. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=Konfigurationsfilen conf/conf.php finns inte eller är inte läsbar. Vi kommer att köra installationsprocessen för att försöka initiera den. PHPSupportPOSTGETOk=Detta stöder PHP variabler POST och GET. PHPSupportPOSTGETKo=Det är möjligt att din PHP-inställning inte stöder variabler POST och / eller GET. Kontrollera parametern variables_order i php.ini. PHPSupportSessions=Detta stöder PHP sessioner. @@ -24,11 +24,11 @@ ErrorWrongValueForParameter=Du kan ha skrivit fel värde för parametern "% ErrorFailedToCreateDatabase=Misslyckades med att skapa databasen %s. ErrorFailedToConnectToDatabase=Det gick inte att ansluta till databasen "%s". ErrorDatabaseVersionTooLow=Databasens version (%s) för gammal. Version %s eller senare krävs. -ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. -ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. +ErrorPHPVersionTooLow=PHP-versionen är för gammal. Version %s eller högre krävs. +ErrorPHPVersionTooHigh=PHP-versionen är för hög. Version %s eller lägre krävs. ErrorConnectedButDatabaseNotFound=Anslutning till servern lyckad men databasen '%s' hittades inte. ErrorDatabaseAlreadyExists=Databas "%s" finns redan. -ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions +ErrorNoMigrationFilesFoundForParameters=Ingen migreringsfil hittades för de valda versionerna IfDatabaseNotExistsGoBackAndUncheckCreate=Om databasen inte existerar, gå tillbaka och kolla alternativet "Skapa databas". IfDatabaseExistsGoBackAndCheckCreate=Om databasen redan finns, gå tillbaka och avmarkera "Skapa databasen" valen. WarningBrowserTooOld=Versionen av webbläsaren är för gammal. Uppgradering av webbläsaren till en ny version av Firefox, Chrome eller Opera rekommenderas starkt. @@ -51,7 +51,6 @@ DatabaseName=Databas namn DatabasePrefix=Databas tabell prefix DatabasePrefixDescription=Databas tabell prefix. Om tomt är standardvärdet llx_. AdminLogin=Användarkonto för Dolibarr databasägare. -PasswordAgain=Skriv in lösenordsbekräftelsen igen AdminPassword=Lösenord för Dolibarr databas ägaren. CreateDatabase=Skapa databas CreateUser=Skapa användarkonto eller bevilja användarkonto behörighet i Dolibarr databasen @@ -89,7 +88,7 @@ LoginAlreadyExists=Redan finns DolibarrAdminLogin=Dolibarr admin logik AdminLoginAlreadyExists=Dolibarr administratörskonto ' %s ' existerar redan. Gå tillbaka om du vill skapa en annan. FailedToCreateAdminLogin=Misslyckades med att skapa Dolibarr administratörskonto. -WarningRemoveInstallDir=Varning av säkerhetsskäl, när installationen eller uppgraderingen är klar ska du lägga till en fil som heter install.lock i Dolibarr-dokumentkatalogen för att förhindra att installeringsverktygen används oavsiktligt / skadligt igen. +WarningRemoveInstallDir=Varning, av säkerhetsskäl, när installationsprocessen är klar måste du lägga till en fil som heter install.lock i Dolibarr-dokumentkatalogen för att förhindra oavsiktlig/skadlig användning av installationsverktygen igen. FunctionNotAvailableInThisPHP=Ej tillgängligt i detta PHP ChoosedMigrateScript=Välj migration script DataMigration=Databasmigration (data) @@ -159,26 +158,26 @@ MigrationPaymentsNumberToUpdate=%s betalning (s) att uppdatera MigrationProcessPaymentUpdate=Uppdatera betalning (s) %s MigrationPaymentsNothingToUpdate=Inga fler saker att göra MigrationPaymentsNothingUpdatable=Inga fler betalningar som kan rättas till -MigrationContractsUpdate=Kontrakt data korrigering +MigrationContractsUpdate=Kontraktdata korrigering MigrationContractsNumberToUpdate=%s kontrakt (s) att uppdatera -MigrationContractsLineCreation=Skapa kontrakt linje för %s kontrakt ref +MigrationContractsLineCreation=Skapa kontraktsrader för %s kontrakt ref MigrationContractsNothingToUpdate=Inga fler saker att göra MigrationContractsFieldDontExist=Fält fk_facture existerar inte längre. Inget att göra. -MigrationContractsEmptyDatesUpdate=Kontrakt tom datum korrigering +MigrationContractsEmptyDatesUpdate=Datumkorrigering av tomt datum för kontrakt MigrationContractsEmptyDatesUpdateSuccess=Kontrakt tom datumkorrigering gjord framgångsrikt -MigrationContractsEmptyDatesNothingToUpdate=Inga kontrakt tom datum för att korrigera +MigrationContractsEmptyDatesNothingToUpdate=Inga kontrakt utan datum att korrigera MigrationContractsEmptyCreationDatesNothingToUpdate=Inget avtal datum för skapande att korrigera MigrationContractsInvalidDatesUpdate=Bad valuteringsdag kontrakt korrigering -MigrationContractsInvalidDateFix=Rätt kontrakt %s (Contract datum = %s, som börjar min tjänst datum = %s) +MigrationContractsInvalidDateFix=Rätta kontrakt %s (Contract datum = %s, som börjar min tjänst datum = %s) MigrationContractsInvalidDatesNumber=%s kontrakt modifierade MigrationContractsInvalidDatesNothingToUpdate=Inget datum med dålig värde för att korrigera -MigrationContractsIncoherentCreationDateUpdate=Dåligt värde kontraktet datum för skapande korrigering -MigrationContractsIncoherentCreationDateUpdateSuccess=Dålig värdering av kontraktsdatum skapades korrekt -MigrationContractsIncoherentCreationDateNothingToUpdate=Inget dåligt värde för kontrakt skapande datum för att korrigera -MigrationReopeningContracts=Öppna kontraktet stängs av misstag +MigrationContractsIncoherentCreationDateUpdate=Felaktigt värde kontraktet datum för skapande korrigering +MigrationContractsIncoherentCreationDateUpdateSuccess=Felaktigt värdering av kontraktsdatum skapades korrekt +MigrationContractsIncoherentCreationDateNothingToUpdate=Inget felaktigt värde för kontrakt skapande datum för att korrigera +MigrationReopeningContracts=Öppna kontraktet som stängs av misstag MigrationReopenThisContract=Öppna kontrakt %s MigrationReopenedContractsNumber=%s kontrakt modifierade -MigrationReopeningContractsNothingToUpdate=Ingen stängd kontrakt för att öppna +MigrationReopeningContractsNothingToUpdate=Inget stängt kontrakt att öppna MigrationBankTransfertsUpdate=Uppdatera länkar mellan bankpost och banköverföring MigrationBankTransfertsNothingToUpdate=Alla länkar är uppdaterade MigrationShipmentOrderMatching=Sendings kvitto uppdatering @@ -209,7 +208,12 @@ HideNotAvailableOptions=Dölj otillgängliga alternativ ErrorFoundDuringMigration=Fel (er) rapporterades under migreringsprocessen så nästa steg är inte tillgängligt. För att ignorera fel kan du klicka här , men programmet eller vissa funktioner kanske inte fungerar korrekt tills felen har lösts. YouTryInstallDisabledByDirLock=Applikationen försökte självuppgradera, men installations- / uppgraderingssidorna har inaktiverats för säkerhet (katalog omdämd med .lock-suffix).
YouTryInstallDisabledByFileLock=Applikationen försökte självuppgradera, men installations- / uppgraderingssidorna har inaktiverats för säkerhet (genom att det finns en låsfil install.lock i katalogen dolibarr documents).
+YouTryUpgradeDisabledByMissingFileUnLock=Applikationen försökte självuppgradera, men uppgraderingsprocessen är för närvarande inte tillåten.
ClickHereToGoToApp=Klicka här för att gå till din ansökan ClickOnLinkOrRemoveManualy=Vänta, om en uppgradering pågår. Om inte, klicka på följande länk. Om du alltid ser samma sida måste du ta bort / byta namn på filen install.lock i dokumentkatalogen. -Loaded=Lastad +ClickOnLinkOrCreateUnlockFileManualy=Om en uppgradering pågår, vänta... Om inte måste du skapa en fil upgrade.unlock till Dolibarrs dokumentkatalog. +Loaded=Laddad FunctionTest=Funktionstest +NodoUpgradeAfterDB=Ingen åtgärd begärd av externa moduler efter uppgradering av databasen +NodoUpgradeAfterFiles=Ingen åtgärd begärd av externa moduler efter uppgradering av filer eller kataloger +MigrationContractLineRank=Migrera kontraktsrad för att använda Rank (och aktivera omordning) diff --git a/htdocs/langs/sv_SE/main.lang b/htdocs/langs/sv_SE/main.lang index 3df909136a6..e822151b5e1 100644 --- a/htdocs/langs/sv_SE/main.lang +++ b/htdocs/langs/sv_SE/main.lang @@ -898,9 +898,9 @@ MassFilesArea=Område för filer som skapats via bulkåtgärder ShowTempMassFilesArea=Visa område med filer som skapats via bulkåtgärder ConfirmMassDeletion=Bekräftelse för bulkradering ConfirmMassDeletionQuestion=Är du säker på att du vill ta bort %s markerade post(er)? -ConfirmMassClone=Bekräftelse av bulkklon +ConfirmMassClone=Bekräftelse av kloning i bulk ConfirmMassCloneQuestion=Välj projekt att klona till -ConfirmMassCloneToOneProject=Klona för att projektera %s +ConfirmMassCloneToOneProject=Klona till projekt %s RelatedObjects=Relaterade objekt ClassifyBilled=Märk fakturerad ClassifyUnbilled=Märk ofakturerad @@ -923,6 +923,7 @@ NotAllExportedMovementsCouldBeRecordedAsExported=Inte alla exporterade förflytt Miscellaneous=Diverse Calendar=Kalender GroupBy=Gruppera efter... +GroupByX=Gruppera efter %s ViewFlatList=Visa platt lista ViewAccountList=Visa huvudbok ViewSubAccountList=Visa bok för underkonton @@ -1222,3 +1223,5 @@ AddToContacts=Lägg till adress till mina kontakter LastAccess=Senaste åtkomst UploadAnImageToSeeAPhotoHere=Ladda upp en bild från fliken %s för att se ett foto här LastPasswordChangeDate=Datum för senaste lösenordsändring +PublicVirtualCardUrl=Virtuell visitkortsida +TreeView=Trädvy diff --git a/htdocs/langs/sv_SE/members.lang b/htdocs/langs/sv_SE/members.lang index c98b2f139d8..02e05cb70bb 100644 --- a/htdocs/langs/sv_SE/members.lang +++ b/htdocs/langs/sv_SE/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=Bidragsstatistik NbOfSubscriptions=Antal bidrag AmountOfSubscriptions=Belopp som samlas in från bidrag TurnoverOrBudget=Omsättning (för ett företag) eller Budget (för en stiftelse) -DefaultAmount=Standardbelopp för bidrag +DefaultAmount=Standardbelopp för bidrag (används endast om inget belopp är definierat på medlemstypsnivå) +MinimumAmount=Minsta belopp (används endast när bidragsbeloppet är gratis) CanEditAmount=Prenumerationen är gratis CanEditAmountDetail=Besökare kan välja/redigera beloppet för sitt bidrag oavsett medlemstyp AmountIsLowerToMinimumNotice=på totalt förfallen till %s diff --git a/htdocs/langs/sv_SE/modulebuilder.lang b/htdocs/langs/sv_SE/modulebuilder.lang index 78fe4115358..e38ab157fc8 100644 --- a/htdocs/langs/sv_SE/modulebuilder.lang +++ b/htdocs/langs/sv_SE/modulebuilder.lang @@ -165,3 +165,11 @@ BadValueForType=Fel värde för typ %s DefinePropertiesFromExistingTable=Definiera egenskaper från en befintlig tabell DefinePropertiesFromExistingTableDesc=Om det redan finns en tabell i databasen (för objektet att skapa) kan du använda den för att definiera objektets egenskaper. DefinePropertiesFromExistingTableDesc2=Håll tabellen tom om den inte finns ännu. Kodgeneratorn kommer att använda olika typer av fält för att bygga ett exempel på tabell som du kan redigera senare. +GeneratePermissions=Jag vill lägga till rättigheterna för detta objekt +GeneratePermissionsHelp=generera standardrättigheter för detta objekt +PermissionDeletedSuccesfuly=Behörigheten har tagits bort +PermissionUpdatedSuccesfuly=Behörigheten har uppdaterats +PermissionAddedSuccesfuly=Behörighet har lagts till +MenuDeletedSuccessfuly=Menyn har raderats +MenuAddedSuccessfuly=Menyn har lagts till +MenuUpdatedSuccessfuly=Menyn har uppdaterats diff --git a/htdocs/langs/sv_SE/oauth.lang b/htdocs/langs/sv_SE/oauth.lang index 6d64ab3f817..bcb8c8b56a5 100644 --- a/htdocs/langs/sv_SE/oauth.lang +++ b/htdocs/langs/sv_SE/oauth.lang @@ -31,8 +31,9 @@ OAUTH_GITHUB_SECRET=OAuth GitHub hemlig OAUTH_URL_FOR_CREDENTIAL=Gå till den här sidan för att skapa eller få ditt OAuth-ID och hemlig nyckel OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Strip Live -OAUTH_ID=OAuth-ID +OAUTH_ID=OAuth-klient-ID OAUTH_SECRET=OAuth hemlig nyckel +OAUTH_TENANT=OAuth innehavare OAuthProviderAdded=OAuth-leverantör har lagts till AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=En OAuth-post för den här leverantören och etiketten finns redan URLOfServiceForAuthorization=URL tillhandahållen av OAuth-tjänsten för autentisering diff --git a/htdocs/langs/sv_SE/users.lang b/htdocs/langs/sv_SE/users.lang index 87e8edc08f0..aafb6448d47 100644 --- a/htdocs/langs/sv_SE/users.lang +++ b/htdocs/langs/sv_SE/users.lang @@ -132,4 +132,3 @@ ShowAllPerms=Visa alla rättighetsrader HideAllPerms=Dölj alla rättighetsrader UserPublicPageDesc=Du kan aktivera ett virtuellt kort för den här användaren. En url med användarprofilen och en streckkod kommer att finnas tillgänglig så att alla med en smartphone kan skanna den och lägga till din kontakt i adressboken. EnablePublicVirtualCard=Aktivera det offentliga virtuella användarkortet -PublicVirtualCardUrl=Offentligt virtuellt användarkort diff --git a/htdocs/langs/ta_IN/admin.lang b/htdocs/langs/ta_IN/admin.lang index 0559086fe84..1d9e7a9316b 100644 --- a/htdocs/langs/ta_IN/admin.lang +++ b/htdocs/langs/ta_IN/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=தேர்வுப்பெட்டிகள் ExtrafieldCheckBoxFromList=அட்டவணையில் இருந்து தேர்வுப்பெட்டிகள் ExtrafieldLink=ஒரு பொருளுக்கான இணைப்பு ComputedFormula=கணக்கிடப்பட்ட புலம் -ComputedFormulaDesc=டைனமிக் கணக்கிடப்பட்ட மதிப்பைப் பெற, பொருளின் பிற பண்புகள் அல்லது ஏதேனும் PHP குறியீட்டைப் பயன்படுத்தி நீங்கள் இங்கே ஒரு சூத்திரத்தை உள்ளிடலாம். "?" உட்பட எந்த PHP இணக்கமான சூத்திரங்களையும் நீங்கள் பயன்படுத்தலாம். நிபந்தனை ஆபரேட்டர் மற்றும் பின்வரும் உலகளாவிய பொருள்: $db, $conf, $langs, $mysoc, $user, $object .
எச்சரிக்கை : $object இன் சில பண்புகள் மட்டுமே கிடைக்கக்கூடும். உங்களுக்கு ஏற்றப்படாத பண்புகள் தேவைப்பட்டால், இரண்டாவது எடுத்துக்காட்டில் உள்ளதைப் போல உங்கள் சூத்திரத்தில் பொருளைப் பெறுங்கள்.
கணக்கிடப்பட்ட புலத்தைப் பயன்படுத்தினால், இடைமுகத்திலிருந்து எந்த மதிப்பையும் நீங்களே உள்ளிட முடியாது. மேலும், தொடரியல் பிழை இருந்தால், சூத்திரம் எதையும் வழங்காது.

சூத்திரத்தின் எடுத்துக்காட்டு:
$object->id < 10 ? round($object-> id / 2, 2): ($object->id + 2 * $zin, 1) )

பொருளை மீண்டும் ஏற்றுவதற்கான எடுத்துக்காட்டு
(($reloadedobj = புதிய சமூகம்($db)) && ($reloadedobj->fetchNoCompute($obj->jid-$obj->jid-$obj-> >rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

பொருளின் சுமை மற்றும் அதன் மூலப் பொருளை கட்டாயப்படுத்துவதற்கான சூத்திரத்தின் மற்ற எடுத்துக்காட்டு: )) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = புதிய திட்டம்($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent Project கிடைக்கவில்லை' +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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=கணக்கிடப்பட்ட புலத்தை சேமிக்கவும் ComputedpersistentDesc=கணக்கிடப்பட்ட கூடுதல் புலங்கள் தரவுத்தளத்தில் சேமிக்கப்படும், இருப்பினும், இந்த புலத்தின் பொருள் மாற்றப்படும் போது மட்டுமே மதிப்பு மீண்டும் கணக்கிடப்படும். கணக்கிடப்பட்ட புலம் மற்ற பொருள்கள் அல்லது உலகளாவிய தரவு சார்ந்து இருந்தால் இந்த மதிப்பு தவறாக இருக்கலாம்!! ExtrafieldParamHelpPassword=இந்த புலத்தை காலியாக விடுவது என்பது குறியாக்கம் இல்லாமல் இந்த மதிப்பு சேமிக்கப்படும் (புலம் திரையில் நட்சத்திரத்துடன் மட்டுமே மறைக்கப்பட வேண்டும்).
தரவுத்தளத்தில் கடவுச்சொல்லைச் சேமிக்க இயல்புநிலை குறியாக்க விதியைப் பயன்படுத்த 'தானியங்கு' அமைக்கவும் (பின்னர் மதிப்பு வாசிப்பு ஹாஷ் மட்டுமே, அசல் மதிப்பை மீட்டெடுக்க வழி இல்லை) @@ -645,6 +645,8 @@ Module2300Name=திட்டமிடப்பட்ட வேலைகள் Module2300Desc=திட்டமிடப்பட்ட வேலைகள் மேலாண்மை (மாறுபெயர் கிரான் அல்லது க்ரோனோ அட்டவணை) Module2400Name=நிகழ்வுகள்/நிகழ்ச்சி நிரல் Module2400Desc=நிகழ்வுகளைக் கண்காணிக்கவும். கண்காணிப்பு நோக்கங்களுக்காக தானியங்கி நிகழ்வுகளை பதிவு செய்யவும் அல்லது கைமுறை நிகழ்வுகள் அல்லது சந்திப்புகளை பதிவு செய்யவும். நல்ல வாடிக்கையாளர் அல்லது விற்பனையாளர் உறவு மேலாண்மைக்கான முதன்மை தொகுதி இதுவாகும். +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=டிஎம்எஸ் / ஈசிஎம் Module2500Desc=ஆவண மேலாண்மை அமைப்பு / மின்னணு உள்ளடக்க மேலாண்மை. நீங்கள் உருவாக்கிய அல்லது சேமிக்கப்பட்ட ஆவணங்களின் தானியங்கி அமைப்பு. உங்களுக்குத் தேவைப்படும்போது அவற்றைப் பகிரவும். Module2600Name=API / Web services (SOAP server) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind மாற்றும் திறன்கள் Module3200Name=மாற்ற முடியாத காப்பகங்கள் Module3200Desc=வணிக நிகழ்வுகளின் மாற்ற முடியாத பதிவை இயக்கவும். நிகழ்வுகள் நிகழ்நேரத்தில் காப்பகப்படுத்தப்படும். பதிவு என்பது ஏற்றுமதி செய்யக்கூடிய சங்கிலி நிகழ்வுகளின் படிக்க மட்டுமேயான அட்டவணை. இந்த தொகுதி சில நாடுகளில் கட்டாயமாக இருக்கலாம். +Module3300Name=Module Builder +Module3200Desc=வணிக நிகழ்வுகளின் மாற்ற முடியாத பதிவை இயக்கவும். நிகழ்வுகள் நிகழ்நேரத்தில் காப்பகப்படுத்தப்படும். பதிவு என்பது ஏற்றுமதி செய்யக்கூடிய சங்கிலி நிகழ்வுகளின் படிக்க மட்டுமேயான அட்டவணை. இந்த தொகுதி சில நாடுகளில் கட்டாயமாக இருக்கலாம். Module3400Name=சமுக வலைத்தளங்கள் Module3400Desc=மூன்றாம் தரப்பினர் மற்றும் முகவரிகளில் சமூக வலைப்பின்னல்கள் புலங்களை இயக்கவும் (ஸ்கைப், ட்விட்டர், பேஸ்புக், ...). Module4000Name=HRM @@ -700,8 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Incoterms ஐ நிர்வகிக்க அம்சங்களைச் சேர்க்கவும் Module63000Name=வளங்கள் Module63000Desc=நிகழ்வுகளுக்கு ஒதுக்குவதற்கான ஆதாரங்களை (அச்சுப்பொறிகள், கார்கள், அறைகள், ...) நிர்வகிக்கவும் +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Receptions -Permission11=வாடிக்கையாளர் இன்வாய்ஸ்களைப் படிக்கவும் +Permission11=Read customer invoices (and payments) Permission12=வாடிக்கையாளர் இன்வாய்ஸ்களை உருவாக்கவும்/மாற்றவும் Permission13=வாடிக்கையாளர் இன்வாய்ஸ்களை செல்லாததாக்கு Permission14=வாடிக்கையாளர் இன்வாய்ஸ்களை சரிபார்க்கவும் @@ -943,7 +949,7 @@ Permission1190=(இரண்டாவது ஒப்புதல்) கொள Permission1191=ஏற்றுமதி சப்ளையர் ஆர்டர்கள் மற்றும் அவற்றின் பண்புக்கூறுகள் Permission1201=ஏற்றுமதியின் முடிவைப் பெறுங்கள் Permission1202=ஏற்றுமதியை உருவாக்கவும்/மாற்றவும் -Permission1231=விற்பனையாளர் இன்வாய்ஸ்களைப் படிக்கவும் +Permission1231=Read vendor invoices (and payments) Permission1232=விற்பனையாளர் இன்வாய்ஸ்களை உருவாக்கவும்/மாற்றவும் Permission1233=விற்பனையாளர் இன்வாய்ஸ்களை சரிபார்க்கவும் Permission1234=விற்பனையாளர் இன்வாய்ஸ்களை நீக்கவும் @@ -1230,7 +1236,7 @@ SetupDescription4= %s -> %s

இந்த மென SetupDescription5=பிற அமைவு மெனு உள்ளீடுகள் விருப்ப அளவுருக்களை நிர்வகிக்கின்றன. SetupDescriptionLink= %s - %s SetupDescription3b=உங்கள் பயன்பாட்டின் இயல்புநிலை நடத்தையைத் தனிப்பயனாக்கப் பயன்படுத்தப்படும் அடிப்படை அளவுருக்கள் (எ.கா. நாடு தொடர்பான அம்சங்களுக்கு). -SetupDescription4b=இந்த மென்பொருள் பல தொகுதிகள்/பயன்பாடுகளின் தொகுப்பாகும். உங்கள் தேவைகளுடன் தொடர்புடைய தொகுதிகள் இயக்கப்பட்டு கட்டமைக்கப்பட வேண்டும். இந்த தொகுதிகளை செயல்படுத்தும்போது மெனு உள்ளீடுகள் தோன்றும். +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=தணிக்கை செய்யப்படும் பாதுகாப்பு நிகழ்வுகள் NoSecurityEventsAreAduited=பாதுகாப்பு நிகழ்வுகள் எதுவும் தணிக்கை செய்யப்படவில்லை. நீங்கள் அவற்றை %s என்ற மெனுவிலிருந்து இயக்கலாம் Audit=பாதுகாப்பு நிகழ்வுகள் @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive=தொகுதி %s இயக்கப் GeneratedPasswordDesc=தானாக உருவாக்கப்பட்ட கடவுச்சொற்களுக்குப் பயன்படுத்த வேண்டிய முறையைத் தேர்ந்தெடுக்கவும். DictionaryDesc=அனைத்து குறிப்பு தரவுகளையும் செருகவும். உங்கள் மதிப்புகளை இயல்புநிலையில் சேர்க்கலாம். ConstDesc=பிற பக்கங்களில் இல்லாத அளவுருக்களைத் திருத்த (மேற்பார்வை) இந்தப் பக்கம் அனுமதிக்கிறது. இவை பெரும்பாலும் டெவலப்பர்கள்/மேம்பட்ட சரிசெய்தலுக்கு மட்டுமே ஒதுக்கப்பட்ட அளவுருக்கள். +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=மற்ற அனைத்து பாதுகாப்பு தொடர்பான அளவுருக்கள் இங்கே வரையறுக்கப்பட்டுள்ளன. LimitsSetup=வரம்புகள்/துல்லியமான அமைப்பு LimitsDesc=Dolibarr பயன்படுத்தும் வரம்புகள், துல்லியங்கள் மற்றும் மேம்படுத்தல்களை நீங்கள் இங்கே வரையறுக்கலாம் @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=நிகழ்வுகளின் வகைகளைப AGENDA_USE_EVENT_TYPE_DEFAULT=நிகழ்வு உருவாக்கும் படிவத்தில் நிகழ்வின் வகைக்கு இந்த இயல்புநிலை மதிப்பை தானாக அமைக்கவும் AGENDA_DEFAULT_FILTER_TYPE=நிகழ்ச்சி நிரல் பார்வையின் தேடல் வடிப்பானில் இந்த வகையான நிகழ்வைத் தானாக அமைக்கவும் AGENDA_DEFAULT_FILTER_STATUS=நிகழ்ச்சி நிரல் பார்வையின் தேடல் வடிப்பானில் நிகழ்வுகளுக்கு இந்த நிலையை தானாக அமைக்கவும் +AGENDA_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=மெனு நிகழ்ச்சி நிரலைத் தேர்ந்தெடுக்கும்போது எந்தக் காட்சியை இயல்பாகத் திறக்க விரும்புகிறீர்கள் AGENDA_REMINDER_BROWSER=பயனரின் உலாவி
இல் நிகழ்வு நினைவூட்டல் ஐ இயக்கவும் (நினைவூட்டல் தேதியை அடைந்ததும், உலாவியால் ஒரு பாப்அப் காண்பிக்கப்படும். ஒவ்வொரு பயனரும் அதன் உலாவி அறிவிப்பு அமைப்பிலிருந்து அத்தகைய அறிவிப்புகளை முடக்கலாம்). AGENDA_REMINDER_BROWSER_SOUND=ஒலி அறிவிப்பை இயக்கவும் @@ -2129,6 +2139,7 @@ CodeLastResult=சமீபத்திய முடிவு குறியீ NbOfEmailsInInbox=மூல கோப்பகத்தில் உள்ள மின்னஞ்சல்களின் எண்ணிக்கை LoadThirdPartyFromName=%s இல் மூன்றாம் தரப்பு தேடலை ஏற்றவும் (ஏற்றம் மட்டும்) LoadThirdPartyFromNameOrCreate=%s இல் மூன்றாம் தரப்பு தேடலை ஏற்றவும் (கண்டுபிடிக்கவில்லை என்றால் உருவாக்கவும்) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Dolibarr இலிருந்து அனுப்பப்பட்ட முதல் மின்னஞ்சலின் மூலம் தொடங்கப்பட்ட உரையாடலில் இருந்து வந்த செய்தி WithoutDolTrackingID=Dolibarr இலிருந்து அனுப்பப்படாத முதல் மின்னஞ்சலால் தொடங்கப்பட்ட உரையாடலில் இருந்து வந்த செய்தி @@ -2355,3 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/ta_IN/install.lang b/htdocs/langs/ta_IN/install.lang index 682b5cd7503..cba5f35cab2 100644 --- a/htdocs/langs/ta_IN/install.lang +++ b/htdocs/langs/ta_IN/install.lang @@ -51,7 +51,6 @@ DatabaseName=தரவுத்தளத்தின் பெயர் DatabasePrefix=தரவுத்தள அட்டவணை முன்னொட்டு DatabasePrefixDescription=தரவுத்தள அட்டவணை முன்னொட்டு. காலியாக இருந்தால், llx_க்கு இயல்புநிலையாக இருக்கும். AdminLogin=Dolibarr தரவுத்தள உரிமையாளருக்கான பயனர் கணக்கு. -PasswordAgain=கடவுச்சொல் உறுதிப்படுத்தலை மீண்டும் தட்டச்சு செய்யவும் AdminPassword=Dolibarr தரவுத்தள உரிமையாளருக்கான கடவுச்சொல். CreateDatabase=தரவுத்தளத்தை உருவாக்கவும் CreateUser=Dolibarr தரவுத்தளத்தில் பயனர் கணக்கை உருவாக்கவும் அல்லது பயனர் கணக்கு அனுமதியை வழங்கவும் @@ -89,7 +88,7 @@ LoginAlreadyExists=ஏற்கனவே இருக்கிறது DolibarrAdminLogin=டோலிபார் நிர்வாகி உள்நுழைவு AdminLoginAlreadyExists=Dolibarr நிர்வாகி கணக்கு ' %s ' ஏற்கனவே உள்ளது. நீங்கள் மற்றொன்றை உருவாக்க விரும்பினால் திரும்பிச் செல்லவும். FailedToCreateAdminLogin=Dolibarr நிர்வாகி கணக்கை உருவாக்க முடியவில்லை. -WarningRemoveInstallDir=எச்சரிக்கை, பாதுகாப்பு காரணங்களுக்காக, நிறுவல் அல்லது மேம்படுத்தல் முடிந்ததும், நிறுவல் கருவிகளை மீண்டும் தற்செயலாக/தீங்கு விளைவிக்கும் வகையில் பயன்படுத்துவதைத் தடுக்க, நீங்கள் install.lock என்ற கோப்பை Dolibarr ஆவணக் கோப்பகத்தில் சேர்க்க வேண்டும். +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=இந்த PHP இல் கிடைக்கவில்லை ChoosedMigrateScript=இடம்பெயர்வு ஸ்கிரிப்டைத் தேர்ந்தெடுக்கவும் DataMigration=தரவுத்தள இடம்பெயர்வு (தரவு) @@ -209,7 +208,12 @@ HideNotAvailableOptions=கிடைக்காத விருப்பங் ErrorFoundDuringMigration=இடம்பெயர்வுச் செயல்பாட்டின் போது பிழை(கள்) பதிவாகியதால் அடுத்த கட்டம் கிடைக்கவில்லை. பிழைகளைப் புறக்கணிக்க, இங்கே கிளிக் செய்யலாம் , ஆனால் பிழைகள் தீர்க்கப்படும் வரை பயன்பாடு அல்லது சில அம்சங்கள் சரியாக வேலை செய்யாமல் போகலாம். YouTryInstallDisabledByDirLock=பயன்பாடு சுய-மேம்படுத்த முயற்சித்தது, ஆனால் பாதுகாப்புக்காக நிறுவல்/மேம்படுத்துதல் பக்கங்கள் முடக்கப்பட்டுள்ளன (அடைவு .lock பின்னொட்டு என மறுபெயரிடப்பட்டது).
YouTryInstallDisabledByFileLock=பயன்பாடு சுய-மேம்படுத்த முயற்சித்தது, ஆனால் பாதுகாப்புக்காக நிறுவல்/மேம்படுத்துதல் பக்கங்கள் முடக்கப்பட்டுள்ளன (dolibarr ஆவணங்கள் கோப்பகத்தில் install.lock என்ற பூட்டுக் கோப்பு இருப்பதால்).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=உங்கள் விண்ணப்பத்திற்குச் செல்ல இங்கே கிளிக் செய்யவும் ClickOnLinkOrRemoveManualy=மேம்படுத்தல் செயல்பாட்டில் இருந்தால், காத்திருக்கவும். இல்லையென்றால், பின்வரும் இணைப்பைக் கிளிக் செய்யவும். நீங்கள் எப்பொழுதும் இதே பக்கத்தைப் பார்த்தால், ஆவணங்கள் கோப்பகத்தில் உள்ள install.lock கோப்பை நீக்க/மறுபெயரிட வேண்டும். +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=ஏற்றப்பட்டது FunctionTest=செயல்பாட்டு சோதனை +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/ta_IN/members.lang b/htdocs/langs/ta_IN/members.lang index 73a3ccf65a4..6a8e098b741 100644 --- a/htdocs/langs/ta_IN/members.lang +++ b/htdocs/langs/ta_IN/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=பங்களிப்புகளின் புள NbOfSubscriptions=பங்களிப்புகளின் எண்ணிக்கை AmountOfSubscriptions=பங்களிப்புகளிலிருந்து சேகரிக்கப்பட்ட தொகை TurnoverOrBudget=விற்றுமுதல் (ஒரு நிறுவனத்திற்கு) அல்லது பட்ஜெட் (ஒரு அடித்தளத்திற்கு) -DefaultAmount=பங்களிப்பு தொகையின் இயல்புநிலை +DefaultAmount=Default amount of contribution (used only if no amount is defined at member type level) +MinimumAmount=Minimum amount (used only when contribution amount is free) CanEditAmount=Subscription amount is free CanEditAmountDetail=Visitor can choose/edit amount of its contribution regardless of the member type AmountIsLowerToMinimumNotice=sur un dû total de %s diff --git a/htdocs/langs/tg_TJ/admin.lang b/htdocs/langs/tg_TJ/admin.lang index d23d2f3cd7d..a278a7cb366 100644 --- a/htdocs/langs/tg_TJ/admin.lang +++ b/htdocs/langs/tg_TJ/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Қуттиҳои қайд ExtrafieldCheckBoxFromList=Қуттиҳои қайд аз ҷадвал ExtrafieldLink=Истинод ба объект ComputedFormula=Майдони ҳисобшуда -ComputedFormulaDesc=Шумо метавонед дар ин ҷо формуларо бо истифода аз дигар хосиятҳои объект ё ҳама гуна рамзгузории PHP ворид кунед, то арзиши динамикии ҳисобшударо ба даст оред. Шумо метавонед ҳама гуна формулаҳои мувофиқи PHP -ро истифода баред, аз ҷумла "?" оператори шартҳо ва объекти зерини глобалӣ: $ db, $ conf, $ langs, $ mysoc, $ user, $ object .
ҲУШДОР : Танҳо баъзе хосиятҳои $ object метавонанд дастрас бошанд. Агар ба шумо амволе лозим бошад, ки бор нашуда бошад, танҳо объекти худро ба формулаи худ ворид кунед, ба мисли мисоли дуввум.
Истифодаи майдони ҳисобшуда маънои онро дорад, ки шумо наметавонед ба худ ягон интерфейсро ворид кунед. Инчунин, агар хатои синтаксис мавҷуд бошад, формула ҳеҷ чизро баргардонида наметавонад.

Мисоли формула:
$ object-> id < 10 ? round($object-> id / 2, 2): ($ object-> id + 2 * $ user-> id) * (int) substr ($ mysoc)> )

Мисол барои дубора бор кардани объект
(($ reloadedobj = Societe ($ db)) && ($ reloadedobj-> fetchNoCompute ($ obj-> id- $ obj-> $? > rowid: $ object-> id))> 0))? $ reloadedobj-> array_options ['options_extrafieldkey'] * $ reloadedobj-> capital / 5: '-1'

Намунаи дигари формула барои маҷбур кардани сарбории объект ва объекти волои он: a0342fccfda19bzob (($ re $) )) && ($ reloadedobj-> fetchNoCompute ($ object-> id)> 0) && ($ secondloadedobj = Лоиҳаи нав ($ db)) && ($ secondloadedobj-> fetchNoCompute ($ reloadedobj-> fk_project)> 0))? $ secondloadedobj-> ref: 'Лоиҳаи волидайн ёфт нашуд' +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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Майдони ҳисобшударо захира кунед ComputedpersistentDesc=Майдонҳои иловагии ҳисобшуда дар пойгоҳи додаҳо нигоҳ дошта мешаванд, аммо арзиши он танҳо ҳангоми тағир додани объекти ин майдон аз нав ҳисоб карда мешавад. Агар майдони ҳисобшуда аз дигар объектҳо ё маълумоти глобалӣ вобаста бошад, ин арзиш метавонад хато бошад !! ExtrafieldParamHelpPassword=Ин майдонро холӣ гузоштан маънои онро дорад, ки ин арзиш бидуни рамзгузорӣ нигоҳ дошта мешавад (майдон бояд танҳо бо ситора дар экран пинҳон карда шавад).
'auto' -ро таъин кунед, то қоидаи рамзгузории пешфарзро барои захира кардани парол дар пойгоҳи дода истифода барад (он гоҳ арзиши хониш танҳо ҳашт хоҳад буд, ҳеҷ роҳе барои гирифтани арзиши аслӣ) @@ -645,6 +645,8 @@ Module2300Name=Корҳои ба нақша гирифташуда Module2300Desc=Идоракунии банақшагирифтаи корҳо (тахаллуси cron ё ҷадвали хроно) Module2400Name=Рӯйдодҳо/рӯзнома Module2400Desc=Ҳодисаҳоро пайгирӣ кунед. Ҳодисаҳои автоматиро бо мақсади пайгирӣ сабт кунед ё рӯйдодҳо ё вохӯриҳои дастиро сабт кунед. Ин модули асосӣ барои идоракунии муносибатҳои хуб бо муштариён ё фурӯшандагон мебошад. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=DMS / ECM Module2500Desc=Системаи идоракунии ҳуҷҷатҳо / Идоракунии мундариҷаи электронӣ. Ташкили худкори ҳуҷҷатҳои тавлидшуда ё захирашудаи шумо. Ҳангоми зарурат онҳоро мубодила кунед. Module2600Name=API / Web services (SOAP server) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=Имкониятҳои табдили GeoIP Maxmind Module3200Name=Архивҳои тағирнопазир Module3200Desc=Журнали тағирнопазири рӯйдодҳои тиҷоратиро фаъол созед. Чорабиниҳо дар вақти воқеӣ бойгонӣ карда мешаванд. Журнал як ҷадвали рӯйдодҳои занҷирбанд аст, ки онҳоро содир кардан мумкин аст. Ин модул метавонад барои баъзе кишварҳо ҳатмӣ бошад. +Module3300Name=Module Builder +Module3200Desc=Журнали тағирнопазири рӯйдодҳои тиҷоратиро фаъол созед. Чорабиниҳо дар вақти воқеӣ бойгонӣ карда мешаванд. Журнал як ҷадвали рӯйдодҳои занҷирбанд аст, ки онҳоро содир кардан мумкин аст. Ин модул метавонад барои баъзе кишварҳо ҳатмӣ бошад. Module3400Name=Шабакаҳои иҷтимоӣ Module3400Desc=Майдонҳои шабакаҳои иҷтимоиро ба шахсони сеюм ва суроғаҳо (скайп, twitter, facebook, ...) фаъол созед. Module4000Name=HRM @@ -700,8 +704,10 @@ Module62000Name=Инкотермс Module62000Desc=Илова кардани хусусиятҳо барои идоракунии Incoterms Module63000Name=Манбаъҳо Module63000Desc=Идоракунии захираҳо (принтерҳо, мошинҳо, ҳуҷраҳо, ...) барои тақсим кардани чорабиниҳо +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Receptions -Permission11=Ҳисобномаҳои муштариёнро хонед +Permission11=Read customer invoices (and payments) Permission12=Ҳисобнома -фактураҳои муштариёнро эҷод/тағир диҳед Permission13=Ҳисобнома -фактураҳои муштариёнро беэътибор кунед Permission14=Ҳисобнома -фактураҳои муштариёнро тасдиқ кунед @@ -943,7 +949,7 @@ Permission1190=Фармонҳои харидро тасдиқ кунед (тас Permission1191=Фармоишҳои молрасон ва хусусиятҳои онҳоро содир кунед Permission1201=Натиҷаи содиротро ба даст оред Permission1202=Эҷод/тағир додани содирот -Permission1231=Ҳисобнома -фактураҳои фурӯшандаро хонед +Permission1231=Read vendor invoices (and payments) Permission1232=Эҷод/тағир додани фактураҳои фурӯшанда Permission1233=Ҳисобнома -фактураҳои фурӯшандаро тасдиқ кунед Permission1234=Ҳисобнома -фактураҳои фурӯшандаро нест кунед @@ -1230,7 +1236,7 @@ SetupDescription4= %s -> %s

Ин нармафзор SetupDescription5=Дигар вурудоти менюи Танзимот параметрҳои ихтиёриро идора мекунанд. SetupDescriptionLink= %s - %s SetupDescription3b=Параметрҳои асосӣ, ки барои танзими рафтори пешфарзии барномаи шумо истифода мешаванд (масалан, барои хусусиятҳои марбут ба кишвар). -SetupDescription4b=Ин нармафзор маҷмӯи бисёр модулҳо/барномаҳо мебошад. Модулҳои марбут ба ниёзҳои шумо бояд фаъол ва танзим карда шаванд. Воридоти меню бо фаъолсозии ин модулҳо пайдо мешаванд. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Ҳодисаҳои амниятӣ, ки тафтиш карда мешаванд NoSecurityEventsAreAduited=Ҳеҷ гуна рӯйдодҳои амниятӣ тафтиш карда намешаванд. Шумо метавонед онҳоро аз менюи %s фаъол созед Audit=Чорабиниҳои амниятӣ @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive=Триггерҳо дар ин файл фаъола GeneratedPasswordDesc=Усулеро интихоб кунед, ки барои гузарвожаҳои худкор тавлидшаванда истифода шавад. DictionaryDesc=Ҳама маълумоти истинодро ворид кунед. Шумо метавонед арзишҳои худро ба пешфарз илова кунед. ConstDesc=Ин саҳифа ба шумо имкон медиҳад, ки параметрҳои дар дигар саҳифаҳо мавҷудбударо таҳрир кунед (бекор кунед). Инҳо асосан параметрҳои ҳифзшуда барои таҳиягарон/танҳо ҳалли мушкилоти пешрафта мебошанд. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=Ҳама параметрҳои дигари марбут ба амният дар ин ҷо муайян карда шудаанд. LimitsSetup=Маҳдудиятҳо/Танзими дақиқ LimitsDesc=Шумо метавонед маҳдудиятҳо, дақиқӣ ва оптимизатсияи аз ҷониби Dolibarr истифодашударо дар ин ҷо муайян кунед @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Навъҳои рӯйдодҳоро истифода ба AGENDA_USE_EVENT_TYPE_DEFAULT=Ба таври худкор ин арзиши пешфарзро барои намуди ҳодиса дар шакли эҷоди ҳодиса таъин кунед AGENDA_DEFAULT_FILTER_TYPE=Ба таври худкор ин намуди чорабиниро дар филтри ҷустуҷӯи намуди рӯзнома танзим кунед AGENDA_DEFAULT_FILTER_STATUS=Ба таври худкор ин ҳолатро барои рӯйдодҳо дар филтри ҷустуҷӯи намуди рӯзнома таъин кунед +AGENDA_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Ҳангоми интихоби меню Agenda кадом намуди онро шумо бо нобаёнӣ кушодан мехоҳед AGENDA_REMINDER_BROWSER=Ёддошти ҳодиса -ро дар браузери корбар фаъол созед (Вақте ки ба санаи хотиррасон расида мешавад, браузер поп -апро нишон медиҳад. Ҳар як корбар метавонад чунин огоҳиҳоро аз танзимоти огоҳиномаи браузери худ хомӯш кунад). AGENDA_REMINDER_BROWSER_SOUND=Огоҳии овозиро фаъол созед @@ -2129,6 +2139,7 @@ CodeLastResult=Рамзи натиҷаҳои охирин NbOfEmailsInInbox=Шумораи мактубҳо дар феҳристи манбаъҳо LoadThirdPartyFromName=Ҷустуҷӯи тарафи сеюмро дар %s бор кунед (танҳо бор) LoadThirdPartyFromNameOrCreate=Ҷустуҷӯи тарафи сеюмро дар %s бор кунед (эҷод кунед, агар наёбад) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Паём аз сӯҳбате, ки бо аввалин почтаи электронӣ аз Dolibarr фиристода шудааст WithoutDolTrackingID=Паём аз сӯҳбате, ки бо почтаи аввал оғоз шудааст, аз Dolibarr фиристода нашудааст @@ -2355,3 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/tg_TJ/install.lang b/htdocs/langs/tg_TJ/install.lang index ac851fed382..c3a91593d3b 100644 --- a/htdocs/langs/tg_TJ/install.lang +++ b/htdocs/langs/tg_TJ/install.lang @@ -51,7 +51,6 @@ DatabaseName=Номи пойгоҳи додаҳо DatabasePrefix=Префикси ҷадвали пойгоҳи додаҳо DatabasePrefixDescription=Префикси ҷадвали пойгоҳи додаҳо. Агар холӣ бошад, пешфарз ба llx_. AdminLogin=Ҳисоби корбар барои соҳиби пойгоҳи додаҳои Dolibarr. -PasswordAgain=Тасдиқи паролро дубора нависед AdminPassword=Рамз барои соҳиби пойгоҳи додаҳои Dolibarr. CreateDatabase=Базаи маълумот эҷод кунед CreateUser=Ҳисоби корбар эҷод кунед ё дар пойгоҳи додаҳои Dolibarr иҷозати ҳисоби корбар диҳед @@ -89,7 +88,7 @@ LoginAlreadyExists=Аллакай вуҷуд дорад DolibarrAdminLogin=Вуруд ба администратор Dolibarr AdminLoginAlreadyExists=Ҳисоби мудири Dolibarr ' %s ' аллакай мавҷуд аст. Баргардед, агар шумо мехоҳед дигареро эҷод кунед. FailedToCreateAdminLogin=Ҳисоби мудири Dolibarr эҷод нашуд. -WarningRemoveInstallDir=Огоҳӣ, бо сабабҳои амниятӣ, пас аз анҷом ёфтани насб ё навсозӣ, шумо бояд файли install.lock -ро ба феҳристи ҳуҷҷатҳои Dolibarr илова кунед, то дубора истифодаи тасодуфӣ/зарароваронаи асбобҳои насбкуниро пешгирӣ кунед. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=Дар ин PHP дастрас нест ChoosedMigrateScript=Скрипти муҳоҷиратро интихоб кунед DataMigration=Муҳоҷирати пойгоҳи додаҳо (маълумот) @@ -209,7 +208,12 @@ HideNotAvailableOptions=Вариантҳои дастнорасро пинҳон ErrorFoundDuringMigration=Дар ҷараёни муҳоҷират хато (ҳо) гузориш дода шуданд, бинобарин қадами оянда дастрас нест. Барои нодида гирифтани хатогиҳо, шумо метавонед ин ҷо клик кунед , аммо барнома ё баъзе хусусиятҳо то он даме, ки хатогиҳо ҳал нашаванд, дуруст кор намекунанд. YouTryInstallDisabledByDirLock=Барнома кӯшиш кард, ки худро такмил диҳад, аммо саҳифаҳои насбкунӣ/навсозӣ барои амният ғайрифаъол карда шудаанд (директория бо суффикси .lock номида шудааст).
YouTryInstallDisabledByFileLock=Барнома кӯшиш кард, ки худсозӣ кунад, аммо саҳифаҳои насб/навсозӣ барои амният ғайрифаъол карда шуданд (бо мавҷудияти файли қулфи install.lock дар феҳристи ҳуҷҷатҳои dolibarr).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=Барои рафтан ба аризаи худ ин ҷо клик кунед ClickOnLinkOrRemoveManualy=Агар навсозӣ идома дошта бошад, интизор шавед. Дар акси ҳол, истиноди зеринро клик кунед. Агар шумо ҳамеша ҳамон як саҳифаро бинед, шумо бояд файли install.lock -ро аз директорияи ҳуҷҷатҳо хориҷ кунед/номгузорӣ кунед. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=Бор карда шуд FunctionTest=Санҷиши функсия +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/th_TH/admin.lang b/htdocs/langs/th_TH/admin.lang index dec2043069b..ebb4ae622dc 100644 --- a/htdocs/langs/th_TH/admin.lang +++ b/htdocs/langs/th_TH/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF -BoldLabelOnPDF=Print label of product item in Bold in PDF +BoldRefAndPeriodOnPDF=พิมพ์ข้อมูลอ้างอิงและระยะเวลาของรายการสินค้าในรูปแบบ PDF +BoldLabelOnPDF=พิมพ์ฉลากสินค้าเป็นตัวหนาใน PDF Foundation=มูลนิธิ Version=เวอร์ชั่น Publisher=ผู้เผยแพร่ @@ -18,8 +18,8 @@ FileIntegrityIsOkButFilesWereAdded=ผ่านการตรวจสอบค FileIntegritySomeFilesWereRemovedOrModified=การตรวจสอบความสมบูรณ์ของไฟล์ล้มเหลว ไฟล์บางไฟล์ถูกแก้ไข ลบ หรือเพิ่ม GlobalChecksum=Global checksum MakeIntegrityAnalysisFrom=ทำการวิเคราะห์ความสมบูรณ์ของไฟล์แอปพลิเคชันจาก -LocalSignature=Embedded local signature (less reliable) -RemoteSignature=Remote distant signature (more reliable) +LocalSignature=Embedded local signature (ความน่าเชื่อถือน้อยกว่า) +RemoteSignature=Remote distant signature (เชื่อถือได้มากขึ้น) FilesMissing=ไฟล์ที่ขาดหายไป FilesUpdated=ไฟล์ล่าสุด FilesModified=ไฟล์ที่มีการแก้ไข @@ -51,8 +51,6 @@ ClientSortingCharset=Client collation WarningModuleNotActive=โมดูล %s ต้องเปิดใช้งาน WarningOnlyPermissionOfActivatedModules=สิทธิ์เฉพาะที่เกี่ยวข้องกับการเปิดใช้งานโมดูลจะแสดงที่นี่ คุณสามารถเปิดใช้งานโมดูลอื่น ๆ ในหน้าแรก> Setup-> หน้าโมดูล DolibarrSetup=ติดตั้ง Dolibarr หรืออัพเกรด -InternalUser=ผู้ใช้ภายใน -ExternalUser=ผู้ใช้ภายนอก InternalUsers=ผู้ใช้ภายใน ExternalUsers=ผู้ใช้ภายนอก UserInterface=หน้าจอผู้ใช้ @@ -80,14 +78,14 @@ DisableJavascript=ปิดใช้งานฟังก์ชัน JavaScript DisableJavascriptNote=หมายเหตุ: เพื่อการทดสอบหรือดีบักเท่านั้น สำหรับการเพิ่มประสิทธิภาพสำหรับคนตาบอดหรือเบราว์เซอร์ข้อความ คุณอาจต้องการใช้การตั้งค่าในโปรไฟล์ของผู้ใช้ UseSearchToSelectCompanyTooltip=นอกจากนี้ถ้าคุณมีจำนวนมากของบุคคลที่สาม (> 100 000) คุณสามารถเพิ่มความเร็วโดยการตั้งค่า COMPANY_DONOTSEARCH_ANYWHERE คงเป็น 1 ใน Setup-> อื่น ๆ ค้นหาแล้วจะถูก จำกัด ในการเริ่มต้นของสตริง UseSearchToSelectContactTooltip=นอกจากนี้ถ้าคุณมีจำนวนมากของบุคคลที่สาม (> 100 000) คุณสามารถเพิ่มความเร็วโดยการตั้งค่า CONTACT_DONOTSEARCH_ANYWHERE คงเป็น 1 ใน Setup-> อื่น ๆ ค้นหาแล้วจะถูก จำกัด ในการเริ่มต้นของสตริง -DelaiedFullListToSelectCompany=Wait until a key is pressed before loading content of Third Parties combo list.
This may increase performance if you have a large number of third parties, but it is less convenient. -DelaiedFullListToSelectContact=Wait until a key is pressed before loading content of Contact combo list.
This may increase performance if you have a large number of contacts, but it is less convenient. -NumberOfKeyToSearch=Number of characters to trigger search: %s -NumberOfBytes=Number of Bytes +DelaiedFullListToSelectCompany=รอจนกระทั่งกดปุ่มก่อนที่จะโหลดเนื้อหาของรายการคอมโบของบุคคลที่สาม
การดำเนินการนี้อาจเพิ่มประสิทธิภาพหากคุณมีบุคคลที่สามจำนวนมาก แต่สะดวกน้อยกว่า +DelaiedFullListToSelectContact=รอจนกระทั่งกดปุ่มก่อนที่จะโหลดเนื้อหาของรายการคำสั่งผสมที่ติดต่อ
สิ่งนี้อาจเพิ่มประสิทธิภาพหากคุณมีผู้ติดต่อจำนวนมาก แต่สะดวกน้อยกว่า +NumberOfKeyToSearch=จำนวนอักขระที่จะเรียกใช้การค้นหา: %s +NumberOfBytes=จำนวนไบต์ SearchString=ค้นหา สตริง NotAvailableWhenAjaxDisabled=ไม่สามารถใช้ได้เมื่ออาแจ็กซ์ปิดการใช้งาน -AllowToSelectProjectFromOtherCompany=On document of a third party, can choose a project linked to another third party -TimesheetPreventAfterFollowingMonths=Prevent recording time spent after the following number of months +AllowToSelectProjectFromOtherCompany=ในเอกสารของบุคคลที่สาม สามารถเลือกโครงการที่เชื่อมโยงกับบุคคลที่สามรายอื่นได้ +TimesheetPreventAfterFollowingMonths=ป้องกันการใช้เวลาบันทึกหลังจากจำนวนเดือนต่อไปนี้ JavascriptDisabled=ปิดใช้งาน JavaScript UsePreviewTabs=ใช้แท็บตัวอย่าง ShowPreview=โชว์พรีวิว @@ -109,11 +107,11 @@ NextValueForReplacements=ค่าถัดไป (เปลี่ยน) MustBeLowerThanPHPLimit=หมายเหตุ: ปัจจุบันการกำหนดค่า PHP ของคุณจำกัดขนาดไฟล์สูงสุดสำหรับการอัปโหลด %s%sโดยไม่คำนึงถึงค่าของพารามิเตอร์นี้ NoMaxSizeByPHPLimit=หมายเหตุ: ไม่ จำกัด มีการตั้งค่าในการกำหนดค่าของ PHP MaxSizeForUploadedFiles=ขนาดสูงสุดของไฟล์ที่อัปโหลด (0 ไม่อนุญาตให้อัปโหลดใด ๆ ) -UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages +UseCaptchaCode=ใช้รหัสกราฟิก (CAPTCHA) ในหน้าเข้าสู่ระบบและหน้าสาธารณะบางหน้า AntiVirusCommand=เส้นทางแบบเต็มคำสั่งป้องกันไวรัส -AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan
Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe +AntiVirusCommandExample=ตัวอย่างสำหรับ ClamAv Daemon (ต้องการ clamav-daemon): /usr/bin/clamdscan
ตัวอย่างสำหรับ ClamWin (ช้ามาก): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= พารามิเตอร์เพิ่มเติมเกี่ยวกับบรรทัดคำสั่ง -AntiVirusParamExample=Example for ClamAv Daemon: --fdpass
Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +AntiVirusParamExample=ตัวอย่างสำหรับ ClamAv Daemon:--fdpass
ตัวอย่างสำหรับ ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=การติดตั้งโมดูลบัญขี UserSetup=การตั้งค่าการจัดการผู้ใช้ MultiCurrencySetup=การตั้งค่าหลายสกุลเงิน @@ -149,49 +147,49 @@ MaxNbOfLinesForBoxes=จำนวนบรรทัดสูงสุดสำ AllWidgetsWereEnabled=วิดเจ็ตทั้งหมดที่มีเปิดใช้งานแล้ว PositionByDefault=Default order Position=ตำแหน่ง -MenusDesc=Menu managers set content of the two menu bars (horizontal and vertical). -MenusEditorDesc=The menu editor allows you to define custom menu entries. Use it carefully to avoid instability and permanently unreachable menu entries.
Some modules add menu entries (in menu All mostly). If you remove some of these entries by mistake, you can restore them disabling and reenabling the module. +MenusDesc=ตัวจัดการเมนูกำหนดเนื้อหาของแถบเมนูสองแถบ (แนวนอนและแนวตั้ง) +MenusEditorDesc=ตัวแก้ไขเมนูช่วยให้คุณกำหนดรายการเมนูแบบกำหนดเองได้ ใช้อย่างระมัดระวังเพื่อหลีกเลี่ยงความไม่เสถียรและรายการเมนูที่ไม่สามารถเข้าถึงได้อย่างถาวร
บางโมดูลเพิ่มรายการเมนู (ในเมนู ทั้งหมด ส่วนใหญ่). หากคุณลบรายการเหล่านี้บางส่วนโดยไม่ได้ตั้งใจ คุณสามารถกู้คืนรายการเหล่านี้ได้โดยปิดใช้งานและเปิดใช้งานโมดูลอีกครั้ง MenuForUsers=เมนูสำหรับผู้ใช้ LangFile=ไฟล์ .lang -Language_en_US_es_MX_etc=Language (en_US, es_MX, ...) +Language_en_US_es_MX_etc=ภาษา (en_US, es_MX, ...) System=ระบบ SystemInfo=ข้อมูลของระบบ SystemToolsArea=พื้นที่เครื่องมือของระบบ -SystemToolsAreaDesc=This area provides administration functions. Use the menu to choose the required feature. +SystemToolsAreaDesc=พื้นที่นี้มีฟังก์ชั่นการบริหาร ใช้เมนูเพื่อเลือกคุณสมบัติที่ต้องการ Purge=ล้าง -PurgeAreaDesc=This page allows you to delete all files generated or stored by Dolibarr (temporary files or all files in %s directory). Using this feature is not normally necessary. It is provided as a workaround for users whose Dolibarr is hosted by a provider that does not offer permissions to delete files generated by the web server. -PurgeDeleteLogFile=Delete log files, including %s defined for Syslog module (no risk of losing data) -PurgeDeleteTemporaryFiles=Delete all log and temporary files (no risk of losing data). Parameter can be 'tempfilesold', 'logfiles' or both 'tempfilesold+logfiles'. Note: Deletion of temporary files is done only if the temp directory was created more than 24 hours ago. -PurgeDeleteTemporaryFilesShort=Delete log and temporary files (no risk of losing data) -PurgeDeleteAllFilesInDocumentsDir=Delete all files in directory: %s.
This will delete all generated documents related to elements (third parties, invoices etc...), files uploaded into the ECM module, database backup dumps and temporary files. +PurgeAreaDesc=หน้านี้อนุญาตให้คุณลบไฟล์ทั้งหมดที่สร้างหรือจัดเก็บโดย Dolibarr (ไฟล์ชั่วคราวหรือไฟล์ทั้งหมดใน %s ไดเรกทอรี). โดยปกติแล้วการใช้คุณสมบัตินี้ไม่จำเป็น มีไว้เพื่อเป็นวิธีแก้ปัญหาสำหรับผู้ใช้ที่ Dolibarr โฮสต์โดยผู้ให้บริการที่ไม่ได้ให้สิทธิ์ในการลบไฟล์ที่สร้างโดยเว็บเซิร์ฟเวอร์ +PurgeDeleteLogFile=ลบ log ไฟล์ รวมถึง %s กำหนดไว้สำหรับโมดูล Syslog (ไม่มีความเสี่ยงในการสูญเสียข้อมูล) +PurgeDeleteTemporaryFiles=ลบบันทึกและไฟล์ชั่วคราวทั้งหมด (ไม่มีความเสี่ยงในการสูญเสียข้อมูล) พารามิเตอร์สามารถเป็น 'tempfilesold', 'logfiles' หรือทั้งสองอย่าง 'tempfilesold+logfiles' หมายเหตุ: การลบไฟล์ชั่วคราวจะทำได้ต่อเมื่อไดเร็กทอรี temp ถูกสร้างขึ้นนานกว่า 24 ชั่วโมงที่ผ่านมา +PurgeDeleteTemporaryFilesShort=ลบบันทึกและไฟล์ชั่วคราว (ไม่มีความเสี่ยงในการสูญเสียข้อมูล) +PurgeDeleteAllFilesInDocumentsDir=ลบไฟล์ทั้งหมดในไดเรกทอรี: %s.
การดำเนินการนี้จะลบเอกสารที่สร้างขึ้นทั้งหมดที่เกี่ยวข้องกับองค์ประกอบ (บุคคลที่สาม ใบแจ้งหนี้ ฯลฯ...) ไฟล์ที่อัปโหลดไปยังโมดูล ECM ดัมพ์สำรองฐานข้อมูล และไฟล์ชั่วคราว PurgeRunNow=ล้างในขณะนี้ -PurgeNothingToDelete=No directory or files to delete. +PurgeNothingToDelete=ไม่มีไดเรกทอรีหรือไฟล์ที่จะลบ PurgeNDirectoriesDeleted=% ไฟล์หรือไดเรกทอรีลบ -PurgeNDirectoriesFailed=Failed to delete %s files or directories. +PurgeNDirectoriesFailed=ลบไม่สำเร็จ %s ไฟล์หรือไดเรกทอรี PurgeAuditEvents=ล้างทุกเหตุการณ์การรักษาความปลอดภัย -ConfirmPurgeAuditEvents=Are you sure you want to purge all security events? All security logs will be deleted, no other data will be removed. +ConfirmPurgeAuditEvents=คุณแน่ใจหรือไม่ว่าต้องการล้างกิจกรรมด้านความปลอดภัยทั้งหมด บันทึกความปลอดภัยทั้งหมดจะถูกลบ และจะไม่มีการลบข้อมูลอื่นๆ GenerateBackup=สร้างการสำรองข้อมูล Backup=การสำรองข้อมูล Restore=คืนข้อมูล RunCommandSummary=การสำรองข้อมูลได้รับการเปิดตัวที่มีคำสั่งต่อไป BackupResult=ผลการสำรองข้อมูล BackupFileSuccessfullyCreated=แฟ้มสำรองข้อมูลที่สร้างที่ประสบความสำเร็จ -YouCanDownloadBackupFile=The generated file can now be downloaded +YouCanDownloadBackupFile=ไฟล์ที่สร้างขึ้นสามารถดาวน์โหลดได้แล้ว NoBackupFileAvailable=ไม่มีไฟล์สำรองข้อมูลที่มี ExportMethod=วิธีการส่งออก ImportMethod=วิธีนำเข้า ToBuildBackupFileClickHere=เพื่อสร้างแฟ้มสำรองข้อมูลคลิก ที่นี่ -ImportMySqlDesc=To import a MySQL backup file, you may use phpMyAdmin via your hosting or use the mysql command from the Command line.
For example: +ImportMySqlDesc=ในการนำเข้าไฟล์สำรอง MySQL คุณสามารถใช้ phpMyAdmin ผ่านทางโฮสติ้งของคุณหรือใช้คำสั่ง mysql จากบรรทัดคำสั่ง
ตัวอย่างเช่น: ImportPostgreSqlDesc=ที่จะนำเข้าแฟ้มสำรองข้อมูลคุณต้องใช้คำสั่ง pg_restore จากบรรทัดคำสั่ง: ImportMySqlCommand=% s% s โมดูลที่เปิดใช้งาน จะแสดง -ModulesDesc=The modules/applications determine which features are available in the software. Some modules require permissions to be granted to users after activating the module. Click the on/off button %s of each module to enable or disable a module/application. -ModulesDesc2=Click the wheel button %s to configure the module/application. -ModulesMarketPlaceDesc=You can find more modules to download on external websites on the Internet... -ModulesDeployDesc=If permissions on your file system allow it, you can use this tool to deploy an external module. The module will then be visible on the tab %s. -ModulesMarketPlaces=Find external app/modules -ModulesDevelopYourModule=Develop your own app/modules -ModulesDevelopDesc=You may also develop your own module or find a partner to develop one for you. -DOLISTOREdescriptionLong=Instead of switching on www.dolistore.com web site to find an external module, you can use this embedded tool that will perform the search on the external market place for you (may be slow, need an internet access)... -NewModule=New module -FreeModule=Free -CompatibleUpTo=Compatible with version %s -NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). -CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). -SeeInMarkerPlace=See in Market place +ModulesDesc=โมดูล/แอปพลิเคชันจะกำหนดคุณลักษณะที่มีในซอฟต์แวร์ บางโมดูลจำเป็นต้องให้สิทธิ์แก่ผู้ใช้หลังจากเปิดใช้งานโมดูล คลิกปุ่มเปิด/ปิด %s ของแต่ละโมดูลเพื่อเปิดหรือปิดใช้งานโมดูล/แอปพลิเคชัน +ModulesDesc2=คลิกปุ่ม %s เพื่อกำหนดค่าโมดูล/แอปพลิเคชัน +ModulesMarketPlaceDesc=คุณสามารถค้นหาโมดูลเพิ่มเติมเพื่อดาวน์โหลดได้จากเว็บไซต์ภายนอกบนอินเทอร์เน็ต... +ModulesDeployDesc=หากสิทธิ์ในระบบไฟล์ของคุณอนุญาต คุณสามารถใช้เครื่องมือนี้เพื่อปรับใช้โมดูลภายนอกได้ โมดูลจะปรากฏบนแท็บ %s. +ModulesMarketPlaces=ค้นหาแอป/โมดูลภายนอก +ModulesDevelopYourModule=พัฒนาแอป/โมดูลของคุณเอง +ModulesDevelopDesc=คุณยังสามารถพัฒนาโมดูลของคุณเองหรือหาพันธมิตรเพื่อพัฒนาโมดูลให้กับคุณ +DOLISTOREdescriptionLong=แทนที่จะเปิดเว็บไซต์ www.dolistore.com หากต้องการค้นหาโมดูลภายนอก คุณสามารถใช้เครื่องมือที่ฝังไว้นี้ซึ่งจะทำการค้นหาในตลาดภายนอกให้กับคุณ (อาจช้า ต้องใช้อินเทอร์เน็ต)... +NewModule=โมดูลใหม่ +FreeModule=ฟรี +CompatibleUpTo=เข้ากันได้กับรุ่น %s +NotCompatible=โมดูลนี้ดูเหมือนจะเข้ากันไม่ได้กับ Dolibarr ของคุณ %s (ต่ำสุด %s - มากสุด %s). +CompatibleAfterUpdate=โมดูลนี้ต้องการการอัปเดต Dolibarr ของคุณ %s (ต่ำสุด %s - สูงสุด %s). +SeeInMarkerPlace=ดูในมาร์เก็ตเพลส SeeSetupOfModule=ดูการตั้งค่าของโมดูล %s -SetOptionTo=Set option %s to %s +SetOptionTo=ตั้งค่าตัวเลือก %s ถึง %s Updated=อัพเดต AchatTelechargement=ซื้อ / ดาวน์โหลด -GoModuleSetupArea=To deploy/install a new module, go to the Module setup area: %s. +GoModuleSetupArea=หากต้องการปรับใช้/ติดตั้งโมดูลใหม่ ให้ไปที่ส่วนการตั้งค่าโมดูล:%s. DoliStoreDesc=DoliStore สถานที่อย่างเป็นทางการสำหรับตลาด Dolibarr ERP / CRM โมดูลภายนอก -DoliPartnersDesc=List of companies providing custom-developed modules or features.
Note: since Dolibarr is an open source application, anyone experienced in PHP programming should be able to develop a module. -WebSiteDesc=External websites for more add-on (non-core) modules... -DevelopYourModuleDesc=Some solutions to develop your own module... +DoliPartnersDesc=รายชื่อบริษัทที่ให้บริการโมดูลหรือฟีเจอร์ที่พัฒนาขึ้นเอง
หมายเหตุ: เนื่องจาก Dolibarr เป็นแอปพลิเคชั่นโอเพ่นซอร์ส ใครก็ตาม ที่มีประสบการณ์ในการเขียนโปรแกรม PHP ควรสามารถพัฒนาโมดูลได้ +WebSiteDesc=เว็บไซต์ภายนอกสำหรับโมดูลเพิ่มเติม (ที่ไม่ใช Core)... +DevelopYourModuleDesc=โซลูชันบางอย่างเพื่อพัฒนาโมดูลของคุณเอง... URL=URL -RelativeURL=Relative URL -BoxesAvailable=Widgets available -BoxesActivated=Widgets activated +RelativeURL=URL สัมพัทธ์ +BoxesAvailable=Widgets ที่มี +BoxesActivated=Widgets ที่เปิดใช้งาน ActivateOn=เปิดใช้งานบน ActiveOn=เปิดใช้งานใน -ActivatableOn=Activatable on +ActivatableOn=เปิดใช้งาน บน SourceFile=แฟ้มแหล่งที่มา AvailableOnlyIfJavascriptAndAjaxNotDisabled=มีจำหน่ายเฉพาะในกรณีที่ไม่ได้ใช้งาน JavaScript ปิดการใช้งาน Required=ที่จำเป็น UsedOnlyWithTypeOption=ตัวเลือกที่ใช้โดยวาระการประชุมบางส่วนเท่านั้น Security=ความปลอดภัย Passwords=รหัสผ่าน -DoNotStoreClearPassword=Encrypt passwords stored in database (NOT as plain-text). It is strongly recommended to activate this option. -MainDbPasswordFileConfEncrypted=Encrypt database password stored in conf.php. It is strongly recommended to activate this option. +DoNotStoreClearPassword=เข้ารหัสรหัสผ่านที่จัดเก็บไว้ในฐานข้อมูล (ไม่ใช่ข้อความธรรมดา) ขอแนะนำให้เปิดใช้งานตัวเลือกนี้ +MainDbPasswordFileConfEncrypted=เข้ารหัสรหัสผ่านฐานข้อมูลที่จัดเก็บไว้ใน conf.php ขอแนะนำให้เปิดใช้งานตัวเลือกนี้ InstrucToEncodePass=จะมีรหัสผ่านที่เข้ารหัสเป็นไฟล์ conf.php เปลี่ยนสาย
$ dolibarr_main_db_pass = "... ";
โดย
$ dolibarr_main_db_pass = "crypted:% s"; InstrucToClearPass=จะมีรหัสผ่านถอดรหัส (ชัดเจน) เป็นไฟล์ conf.php เปลี่ยนสาย
$ dolibarr_main_db_pass = "crypted ... ";
โดย
$ dolibarr_main_db_pass = "% s"; -ProtectAndEncryptPdfFiles=Protect generated PDF files. This is NOT recommended as it 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. +ProtectAndEncryptPdfFiles=ป้องกันไฟล์ PDF ที่สร้างขึ้น ไม่แนะนำเนื่องจากเป็นการหยุดการสร้าง PDF จำนวนมาก +ProtectAndEncryptPdfFilesDesc=การป้องกันเอกสาร PDF ทำให้สามารถอ่านและพิมพ์ด้วยเบราว์เซอร์ PDF ใดก็ได้ อย่างไรก็ตาม ไม่สามารถแก้ไขและคัดลอกได้อีกต่อไป โปรดทราบว่าการใช้คุณลักษณะนี้ทำให้การสร้าง PDF ที่ผสานรวมทั้งหมดไม่ทำงาน Feature=ความสามารถ DolibarrLicense=ใบอนุญาต Developpers=นักพัฒนา / ผู้ร่วมสมทบ -OfficialWebSite=Dolibarr official web site -OfficialWebSiteLocal=Local web site (%s) -OfficialWiki=Dolibarr documentation / Wiki +OfficialWebSite=เว็บไซต์อย่างเป็นทางการของ Dolibarr +OfficialWebSiteLocal=Local เว็บไซต์ (%s) +OfficialWiki=เอกสาร Dolibarr / Wiki OfficialDemo=Dolibarr สาธิตออนไลน์ OfficialMarketPlace=ตลาดอย่างเป็นทางการสำหรับโมดูลภายนอก / addons OfficialWebHostingService=อ้างอิงเว็บโฮสติ้ง (Cloud โฮสติ้ง) ReferencedPreferredPartners=พาร์ทเนอร์ที่ต้องการ -OtherResources=Other resources -ExternalResources=External Resources -SocialNetworks=Social Networks +OtherResources=แหล่งข้อมูลอื่นๆ +ExternalResources=แหล่งข้อมูลภายนอก +SocialNetworks=สังคมออนไลน์ SocialNetworkId=Social Network ID -ForDocumentationSeeWiki=For user or developer documentation (Doc, FAQs...),
take a look at the Dolibarr Wiki:
%s -ForAnswersSeeForum=For any other questions/help, you can use the Dolibarr forum:
%s -HelpCenterDesc1=Here are some resources for getting help and support with Dolibarr. -HelpCenterDesc2=Some of these resources are only available in english. +ForDocumentationSeeWiki=สำหรับเอกสารผู้ใช้หรือผู้พัฒนา (เอกสาร คำถามที่พบบ่อย...),
ดูที่ Dolibarr Wiki:
%s +ForAnswersSeeForum=สำหรับคำถาม/ความช่วยเหลืออื่นๆ คุณสามารถใช้ฟอรัม Dolibarr:
%s +HelpCenterDesc1=ต่อไปนี้คือแหล่งข้อมูลบางส่วนสำหรับการรับความช่วยเหลือและการสนับสนุนจาก Dolibarr +HelpCenterDesc2=แหล่งข้อมูลเหล่านี้บางส่วนมีให้เฉพาะใน ภาษาอังกฤษ. CurrentMenuHandler=จัดการเมนูปัจจุบัน MeasuringUnit=หน่วยการวัด LeftMargin=Left margin @@ -294,6 +292,7 @@ MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (default value in php.ini: %s) MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS Port (Not defined into PHP on Unix-like systems) MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (Not defined into PHP on Unix-like systems) MAIN_MAIL_EMAIL_FROM=Sender email for automatic emails (default value in php.ini: %s) +EMailHelpMsgSPFDKIM=To prevent Dolibarr emails to be classified as spam, make sure that the server is authorized to send e-mails from this address by SPF and DKIM configuration MAIN_MAIL_ERRORS_TO=Email used for error returns emails (fields 'Errors-To' in emails sent) MAIN_MAIL_AUTOCOPY_TO= Copy (Bcc) all sent emails to MAIN_DISABLE_ALL_MAILS=Disable all email sending (for test purposes or demos) @@ -439,8 +438,10 @@ Unique=เป็นเอกลักษณ์ Boolean=Boolean (one checkbox) ExtrafieldPhone = โทรศัพท์ ExtrafieldPrice = ราคา +ExtrafieldPriceWithCurrency=Price with currency ExtrafieldMail = อีเมล ExtrafieldUrl = Url +ExtrafieldIP = IP ExtrafieldSelect = เลือกรายการ ExtrafieldSelectList = เลือกจากตาราง ExtrafieldSeparator=Separator (not a field) @@ -450,7 +451,7 @@ ExtrafieldCheckBox=Checkboxes ExtrafieldCheckBoxFromList=Checkboxes from table ExtrafieldLink=เชื่อมโยงไปยังวัตถุ 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->fetchNoCompute($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->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Store computed field ComputedpersistentDesc=Computed extra fields will be stored in the database, however, the value will only be recalculated when the object of this field is changed. If the computed field depends on other objects or global data this value might be wrong!! 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) @@ -501,7 +502,8 @@ WarningPHPMail=WARNING: The setup to send emails from the application is using t WarningPHPMailA=- Using the server of the Email Service Provider increases the trustability of your email, so it increases the deliverablity without being flagged as SPAM WarningPHPMailB=- Some Email Service 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 for delivery (be careful also of your email provider's sending quota). WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to send emails is also interesting so all emails sent from application will also be saved into your "Sent" directory of your mailbox. -WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. +WarningPHPMailD=It is therefore recommended to change the sending method of e-mails to the value "SMTP". +WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. 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. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s @@ -514,7 +516,7 @@ PageUrlForDefaultValuesCreate=
Example:
For the form to create a new third 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 AlsoDefaultValuesAreEffectiveForActionCreate=Also note that overwritting default values for form creation works only for pages that were correctly designed (so with parameter action=create or presend...) EnableDefaultValues=Enable customization of default values -EnableOverwriteTranslation=Enable usage of overwritten translation +EnableOverwriteTranslation=Allow customization of translations GoIntoTranslationMenuToChangeThis=A translation has been found for the key with this code. To change this value, you must edit it from Home-Setup-translation. WarningSettingSortOrder=Warning, setting a default sort order may result in a technical error when going on the list page if field is an unknown field. If you experience such an error, come back to this page to remove the default sort order and restore default behavior. Field=สนาม @@ -643,11 +645,13 @@ Module2300Name=งานที่กำหนดเวลาไว้ Module2300Desc=Scheduled jobs management (alias cron or chrono table) Module2400Name=Events/Agenda Module2400Desc=Track events. Log automatic events for tracking purposes or record manual events or meetings. This is the principal module for good Customer or Vendor Relationship Management. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. 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) +Module2600Name=API / Web services (SOAP server) Module2600Desc=เปิดใช้งานเซิร์ฟเวอร์ SOAP Dolibarr ให้บริการ API -Module2610Name=API/Web services (REST server) +Module2610Name=API / Web services (REST server) Module2610Desc=เปิดใช้งานเซิร์ฟเวอร์ Dolibarr REST API ให้บริการ Module2660Name=Call WebServices (SOAP client) Module2660Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Only Purchase orders are currently supported.) @@ -658,7 +662,9 @@ Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind ความสามารถในการแปลง Module3200Name=Unalterable Archives Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. -Module3400Name=Social Networks +Module3300Name=Module Builder +Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. +Module3400Name=สังคมออนไลน์ Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...). Module4000Name=ระบบบริหารจัดการทรัพยากรบุคคล Module4000Desc=Human resources management (management of department, employee contracts and feelings) @@ -698,7 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Add features to manage Incoterms Module63000Name=ทรัพยากร Module63000Desc=Manage resources (printers, cars, rooms, ...) for allocating to events -Permission11=อ่านใบแจ้งหนี้ของลูกค้า +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. +Module94160Name=Receptions +Permission11=Read customer invoices (and payments) Permission12=สร้าง / แก้ไขใบแจ้งหนี้ของลูกค้า Permission13=Invalidate customer invoices Permission14=ตรวจสอบใบแจ้งหนี้ของลูกค้า @@ -842,9 +851,9 @@ Permission286=รายชื่อที่ส่งออก Permission291=ดูภาษี Permission292=กำหนดสิทธิในการเก็บภาษีศุลกากร Permission293=Modify customer's tariffs -Permission300=Read barcodes -Permission301=Create/modify barcodes -Permission302=Delete barcodes +Permission301=Generate PDF sheets of barcodes +Permission304=Create/modify barcodes +Permission305=Delete barcodes Permission311=ดูบริการ Permission312=กำหนดบริการ / สมัครสมาชิกที่จะทำสัญญา Permission331=ดูบุ๊คมาร์ค @@ -940,7 +949,7 @@ Permission1190=Approve (second approval) purchase orders Permission1191=Export supplier orders and their attributes Permission1201=ได้รับผลจากการส่งออก Permission1202=สร้าง / แก้ไขการส่งออก -Permission1231=Read vendor invoices +Permission1231=Read vendor invoices (and payments) Permission1232=Create/modify vendor invoices Permission1233=Validate vendor invoices Permission1234=Delete vendor invoices @@ -971,13 +980,14 @@ Permission3301=Generate new modules Permission4001=Read skill/job/position Permission4002=Create/modify skill/job/position Permission4003=Delete skill/job/position -Permission4020=Read evaluations -Permission4021=Create/modify your evaluation -Permission4022=Validate evaluation -Permission4023=Delete evaluation -Permission4030=See comparison menu +Permission4021=Read evaluations (yours and your subordinates) +Permission4022=Create/modify evaluations +Permission4023=Validate evaluation +Permission4025=Delete evaluation +Permission4028=See comparison menu Permission4031=Read personal information Permission4032=Write personal information +Permission4033=Read all evaluations (even those of user not subordinates) Permission10001=Read website content Permission10002=Create/modify website content (html and javascript content) Permission10003=Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers. @@ -1068,7 +1078,7 @@ DictionaryAccountancyJournal=Accounting journals DictionaryEMailTemplates=Email Templates DictionaryUnits=หน่วย DictionaryMeasuringUnits=Measuring Units -DictionarySocialNetworks=Social Networks +DictionarySocialNetworks=สังคมออนไลน์ DictionaryProspectStatus=Prospect status for companies DictionaryProspectContactStatus=Prospect status for contacts DictionaryHolidayTypes=Leave - Types of leave @@ -1081,6 +1091,10 @@ DictionaryAssetDisposalType=Type of disposal of assets TypeOfUnit=ประเภทของหน่วย SetupSaved=การตั้งค่าที่บันทึกไว้ SetupNotSaved=ยังไม่ได้บันทึกการตั้งค่า +OAuthServiceConfirmDeleteTitle=Delete OAuth entry +OAuthServiceConfirmDeleteMessage=Are you sure you want to delete this OAuth entry ? All existing tokens for it will also be deleted. +ErrorInEntryDeletion=Error in entry deletion +EntryDeleted=Entry deleted BackToModuleList=Back to Module list BackToDictionaryList=Back to Dictionaries list TypeOfRevenueStamp=Type of tax stamp @@ -1222,7 +1236,7 @@ SetupDescription4=%s -> %s

This software is a suite of m SetupDescription5=Other Setup menu entries manage optional parameters. SetupDescriptionLink=%s - %s SetupDescription3b=Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Security events that are audited NoSecurityEventsAreAduited=No security events are audited. You can enable them from menu %s Audit=Security events @@ -1244,6 +1258,7 @@ AreaForAdminOnly=Setup parameters can be set by administrator users only. SystemInfoDesc=ข้อมูลระบบข้อมูลทางด้านเทคนิคอื่น ๆ ที่คุณได้รับในโหมดอ่านอย่างเดียวและมองเห็นสำหรับผู้ดูแลระบบเท่านั้น SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. +MoreNetworksAvailableWithModule=More social networks may be available by enabling the module "Social networks". AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. AccountantFileNumber=Accountant code DisplayDesc=Parameters affecting the look and presentation of the application can be modified here. @@ -1261,6 +1276,7 @@ TriggerActiveAsModuleActive=ทริกเกอร์ในแฟ้มน GeneratedPasswordDesc=Choose the method to be used for auto-generated passwords. DictionaryDesc=Insert all reference data. You can add your values to the default. ConstDesc=This page allows you to edit (override) parameters not available in other pages. These are mostly reserved parameters for developers/advanced troubleshooting only. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=All other security related parameters are defined here. LimitsSetup=ข้อ จำกัด / การตั้งค่าความแม่นยำ LimitsDesc=You can define limits, precisions and optimizations used by Dolibarr here @@ -1294,6 +1310,8 @@ YouMustRunCommandFromCommandLineAfterLoginToUser=คุณต้องเร YourPHPDoesNotHaveSSLSupport=ฟังก์ชั่น SSL ไม่สามารถใช้ได้ใน PHP ของคุณ DownloadMoreSkins=กินมากขึ้นในการดาวน์โหลด SimpleNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset +SimpleRefNumRefModelDesc=Returns the reference number in the format n where n is a sequential auto-incrementing number with no reset +AdvancedNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset SimpleNumRefNoDateModelDesc=Returns the reference number in the format %s-nnnn where nnnn is a sequential auto-incrementing number with no reset ShowProfIdInAddress=Show professional ID with addresses ShowVATIntaInAddress=Hide intra-Community VAT number @@ -1380,7 +1398,7 @@ GetBarCode=รับบาร์โค้ด NumberingModules=Numbering models DocumentModules=Document models ##### Module password generation -PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters in lowercase. +PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters. PasswordGenerationNone=Do not suggest a generated password. Password must be typed in manually. PasswordGenerationPerso=Return a password according to your personally defined configuration. SetupPerso=According to your configuration @@ -1434,6 +1452,10 @@ SuppliersPayment=Vendor payments SupplierPaymentSetup=Vendor payments setup InvoiceCheckPosteriorDate=Check facture date before validation InvoiceCheckPosteriorDateHelp=Validating an invoice will be forbidden if its date is anterior to the date of last invoice of same type. +InvoiceOptionCategoryOfOperations=Display the mention "category of operations" on the invoice. +InvoiceOptionCategoryOfOperationsHelp=Depending on the situation, the mention will appear in the form:
- Category of operations: Delivery of goods
- Category of operations: Provision of services
- Category of operations: Mixed - Delivery of goods & provision of services +InvoiceOptionCategoryOfOperationsYes1=Yes, below the address block +InvoiceOptionCategoryOfOperationsYes2=Yes, in the lower left-hand corner ##### Proposals ##### PropalSetup=ข้อเสนอเชิงพาณิชย์การติดตั้งโมดูล ProposalsNumberingModules=จำนวนข้อเสนอในเชิงพาณิชย์รุ่น @@ -1476,11 +1498,12 @@ WatermarkOnDraftContractCards=ลายน้ำในสัญญาร่า ##### Members ##### MembersSetup=สมาชิกติดตั้งโมดูล MemberMainOptions=ตัวเลือกหลัก +MemberCodeChecker=Options for automatic generation of member codes AdherentLoginRequired= เข้าสู่ระบบการจัดการสำหรับสมาชิกแต่ละคน AdherentMailRequired=Email required to create a new member MemberSendInformationByMailByDefault=ช่องทำเครื่องหมายยืนยันที่จะส่งอีเมลไปยังสมาชิก (การตรวจสอบหรือการสมัครสมาชิกใหม่) เป็นตามค่าเริ่มต้น MemberCreateAnExternalUserForSubscriptionValidated=Create an external user login for each new member subscription validated -VisitorCanChooseItsPaymentMode=Visitor can choose from available payment modes +VisitorCanChooseItsPaymentMode=Visitor can choose from any 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. MembersDocModules=Document templates for documents generated from member record ##### LDAP setup ##### @@ -1742,8 +1765,8 @@ ActivateFCKeditor=เปิดใช้งานขั้นสูงสำห FCKeditorForNotePublic=WYSIWIG creation/edition of the field "public notes" of elements FCKeditorForNotePrivate=WYSIWIG creation/edition of the field "private notes" of elements FCKeditorForCompany=WYSIWIG creation/edition of the field description of elements (except products/services) -FCKeditorForProduct=WYSIWIG creation/edition of the field description of products/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 creation/edition of products description or lines for objects (lines of proposals, orders, invoices, etc...). +FCKeditorForProductDetails2=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. FCKeditorForMailing= สร้าง WYSIWIG / รุ่นสำหรับ eMailings มวล (Tools-> ส่งอีเมล) FCKeditorForUserSignature=สร้าง WYSIWIG / ฉบับลายเซ็นของผู้ใช้ FCKeditorForMail=WYSIWIG creation/edition for all mail (except Tools->eMailing) @@ -1766,7 +1789,7 @@ DetailMenuHandler=จัดการเมนูที่จะแสดงเ DetailMenuModule=ชื่อโมดูลถ้ารายการเมนูมาจากโมดูล DetailType=ประเภทเมนู (ด้านบนหรือด้านซ้าย) DetailTitre=ป้ายเมนูหรือรหัสฉลากสำหรับการแปล -DetailUrl=URL ที่เมนูส่ง (ลิงค์ URL ของแอบโซลูทหรือการเชื่อมโยงจากภายนอกด้วย http: //) +DetailUrl=URL where menu send you (Relative URL link or external link with https://) DetailEnabled=สภาพที่จะแสดงหรือไม่เข้า DetailRight=สภาพที่จะแสดงเมนูสีเทาไม่ได้รับอนุญาต DetailLangs=ชื่อไฟล์ Lang สำหรับการแปลรหัสฉลาก @@ -1810,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Use events types (managed in menu Setup -> Dictionaries -> 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_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Which view do you want to open by default when selecting menu Agenda AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (When remind date is reached, a popup is shown by the browser. Each user can disable such notifications from its browser notification setup). AGENDA_REMINDER_BROWSER_SOUND=Enable sound notification @@ -1837,7 +1863,7 @@ StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatib CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sale from Point of Sale. Hence a warehouse is required. CashDeskForceDecreaseStockLabel=Stock decrease for batch products was forced. CashDeskForceDecreaseStockDesc=Decrease first by the oldest eatby and sellby dates. -CashDeskReaderKeyCodeForEnter=Key code for "Enter" defined in barcode reader (Example: 13) +CashDeskReaderKeyCodeForEnter=Key ASCII code for "Enter" defined in barcode reader (Example: 13) ##### Bookmark ##### BookmarkSetup=Bookmark ติดตั้งโมดูล 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. @@ -1875,7 +1901,7 @@ SuppliersInvoiceNumberingModel=Vendor invoices numbering models IfSetToYesDontForgetPermission=If set to a non null value, don't forget to provide permissions to groups or users allowed for the second approval ##### GeoIPMaxmind ##### GeoIPMaxmindSetup=GeoIP Maxmind การติดตั้งโมดูล -PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation.
Examples:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoLite2-Country.mmdb +PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation NoteOnPathLocation=โปรดทราบว่าทรัพย์สินทางปัญญาไปยังแฟ้มข้อมูลประเทศของคุณจะต้องอยู่ภายในไดเรกทอรี PHP คุณสามารถอ่าน (ตรวจสอบการติดตั้ง PHP open_basedir ของคุณและสิทธิ์ระบบแฟ้ม) YouCanDownloadFreeDatFileTo=คุณสามารถดาวน์โหลดรุ่นสาธิตฟรีของแฟ้ม Maxmind GeoIP ประเทศที่% s YouCanDownloadAdvancedDatFileTo=นอกจากนี้คุณยังสามารถดาวน์โหลดรุ่นที่สมบูรณ์มากขึ้นมีการปรับปรุงของ Maxmind GeoIP ประเทศที่ไฟล์% s @@ -1926,6 +1952,7 @@ BackupDumpWizard=Wizard to build the database dump file BackupZipWizard=Wizard to build the archive of documents directory SomethingMakeInstallFromWebNotPossible=การติดตั้งโมดูลภายนอกเป็นไปไม่ได้จากอินเตอร์เฟซเว็บด้วยเหตุผลต่อไปนี้: SomethingMakeInstallFromWebNotPossible2=For this reason, process to upgrade described here is a manual process only a privileged user may perform. +InstallModuleFromWebHasBeenDisabledContactUs=Install or development of external modules or dynamic websites, from the application, is currently locked for security purpose. Please contact us if you need to enable this feature. InstallModuleFromWebHasBeenDisabledByFile=ติดตั้งโมดูลภายนอกจากโปรแกรมที่ได้รับการปิดใช้งานโดยผู้ดูแลระบบ คุณต้องขอให้เขาลบไฟล์% s เพื่อให้คุณลักษณะนี้ 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=เน้นเส้นตารางเมื่อเลื่อนเมาส์ผ่านไป @@ -2053,6 +2080,8 @@ RemoveSpecialChars=Remove special characters COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN_REGEX) COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Duplicate not allowed +RemoveSpecialWords=Clean certain words when generating sub-accounts for customers or suppliers +RemoveSpecialWordsHelp=Specify the words to be cleaned before calculating the customer or supplier account. Use a ";" between each word GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact) GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here HelpOnTooltip=Help text to show on tooltip @@ -2080,6 +2109,7 @@ MailboxTargetDirectory=Mailbox target directory EmailcollectorOperations=Operations to do by collector EmailcollectorOperationsDesc=Operations are executed from top to bottom order MaxEmailCollectPerCollect=Max number of emails collected per collect +TestCollectNow=Test collect CollectNow=Collect now ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s? DateLastCollectResult=Date of latest collect try @@ -2109,6 +2139,7 @@ CodeLastResult=Latest result code NbOfEmailsInInbox=Number of emails in source directory LoadThirdPartyFromName=Load third party searching on %s (load only) LoadThirdPartyFromNameOrCreate=Load third party searching on %s (create if not found) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Message from a conversation initiated by a first email sent from Dolibarr WithoutDolTrackingID=Message from a conversation initiated by a first email NOT sent from Dolibarr @@ -2183,6 +2214,7 @@ ShowProjectLabel=Project Label PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty +PDFIn2Languages=Show labels into PDF in 2 different languages PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2211,12 +2243,12 @@ MailToPartnership=Partnership AGENDA_EVENT_DEFAULT_STATUS=Default event status when creating a event from the form YouShouldDisablePHPFunctions=You should disable PHP functions IfCLINotRequiredYouShouldDisablePHPFunctions=Except if you need to run system commands in custom code, you shoud disable PHP functions -PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an anitivurs program), you must keep PHP functions +PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an antivirus program), you must keep PHP functions NoWritableFilesFoundIntoRootDir=No writable files or directories of the common programs were found into your root directory (Good) RecommendedValueIs=Recommended: %s Recommended=แนะนำ NotRecommended=Not recommended -ARestrictedPath=Some restricted path +ARestrictedPath=Some restricted path for data files CheckForModuleUpdate=Check for external modules updates CheckForModuleUpdateHelp=This action will connect to editors of external modules to check if a new version is available. ModuleUpdateAvailable=An update is available @@ -2264,7 +2296,7 @@ LateWarningAfter="Late" warning after TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode -ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. +ExportUseLowMemoryModeHelp=Use the low memory mode to generate the dump file (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that the file is complete and error message can't be reported if it fails. Use it if you experience not enough memory errors. ModuleWebhookName = Webhook ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL @@ -2288,6 +2320,8 @@ IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices +INVOICE_SHOW_SHIPPING_ADDRESS=Show shipping address +INVOICE_SHOW_SHIPPING_ADDRESSMore=Compulsory mention for France UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. IfThisCategoryIsChildOfAnother=If this category is a child of another one DarkThemeMode=Dark theme mode @@ -2307,3 +2341,34 @@ UsePassword=Use a password UseOauth=Use a OAUTH token Images=Images MaxNumberOfImagesInGetPost=Max number of images allowed in a HTML field submitted in a form +MaxNumberOfPostOnPublicPagesByIP=Max number of posts on public pages with the same IP address in a month +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: +ScriptIsEmpty=The script is empty +ShowHideTheNRequests=Show/hide the %s SQL request(s) +DefinedAPathForAntivirusCommandIntoSetup=Define a path for an antivirus program into %s +TriggerCodes=Triggerable events +TriggerCodeInfo=Enter here the trigger code(s) that must generate a post of a web request (only external URL are allowed). You can enter several trigger codes separated by a comma. +EditableWhenDraftOnly=If unchecked, the value can only be modified when object has a draft status +CssOnEdit=Css on edit pages +CssOnView=Css on view pages +CssOnList=Css on list pages +HelpCssOnEditDesc=The Css used when editing the field.
Example: "minwiwdth100 maxwidth500 widthcentpercentminusx" +HelpCssOnViewDesc=The Css used when viewing the field. +HelpCssOnListDesc=The Css used when field is inside a list table.
Example: "tdoverflowmax200" +RECEPTION_PDF_HIDE_ORDERED=Hide the quantity ordered on the generated documents for receptions +MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT=Show the price on the generated documents for receptions +WarningDisabled=Warning disabled +LimitsAndMitigation=Access limits and mitigation +DesktopsOnly=Desktops only +DesktopsAndSmartphones=Desktops et smartphones +AllowOnlineSign=Allow online signing +AllowExternalDownload=Allow external download (without login, using a shared link) +DeadlineDayVATSubmission=Deadline day for vat submission on the next month +MaxNumberOfAttachementOnForms=Max number of joinded files in a form +IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/th_TH/agenda.lang b/htdocs/langs/th_TH/agenda.lang index bb06ae7b222..65e5bc8bb09 100644 --- a/htdocs/langs/th_TH/agenda.lang +++ b/htdocs/langs/th_TH/agenda.lang @@ -4,7 +4,7 @@ Actions=เหตุการณ์ที่เกิดขึ้น Agenda=ระเบียบวาระการประชุม TMenuAgenda=ระเบียบวาระการประชุม Agendas=วาระ -LocalAgenda=Default calendar +LocalAgenda=ปฏิทินเริ่มต้น ActionsOwnedBy=เหตุการณ์ที่เป็นเจ้าของโดย ActionsOwnedByShort=เจ้าของ AffectedTo=ได้รับมอบหมายให้ @@ -12,15 +12,15 @@ Event=เหตุการณ์ Events=เหตุการณ์ที่เกิดขึ้น EventsNb=จำนวนของเหตุการณ์ที่ ListOfActions=รายการของเหตุการณ์ -EventReports=Event reports +EventReports=รายงานเหตุการณ์ Location=สถานที่ -ToUserOfGroup=Event assigned to any user in the group +ToUserOfGroup=เหตุการณ์ที่กำหนดให้กับผู้ใช้ในกลุ่ม EventOnFullDay=เหตุการณ์ทุกวัน (s) MenuToDoActions=ทุกเหตุการณ์ที่ไม่สมบูรณ์ MenuDoneActions=เหตุการณ์ยกเลิกทั้งหมด MenuToDoMyActions=เหตุการณ์ที่ไม่สมบูรณ์ของฉัน MenuDoneMyActions=เหตุการณ์สิ้นสุดของฉัน -ListOfEvents=List of events (default calendar) +ListOfEvents=รายการกิจกรรม (ปฏิทินเริ่มต้น) ActionsAskedBy=เหตุการณ์รายงานโดย ActionsToDoBy=เหตุการณ์ที่เกิดขึ้นได้รับมอบหมายให้ ActionsDoneBy=เหตุการณ์กระทำโดย @@ -29,51 +29,55 @@ ViewCal=มุมมองรายเดือน ViewDay=มุมมองรายวัน ViewWeek=มุมมองสัปดาห์ ViewPerUser=ต่อมุมมองของผู้ใช้ -ViewPerType=Per type view +ViewPerType=มุมมองต่อประเภท AutoActions= บรรจุอัตโนมัติ -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...) +AgendaAutoActionDesc= ที่นี่คุณสามารถกำหนดเหตุการณ์ที่คุณต้องการให้ Dolibarr สร้างโดยอัตโนมัติในวาระการประชุม หากไม่มีการตรวจสอบ เฉพาะการดำเนินการด้วยตนเองเท่านั้นที่จะรวมอยู่ในบันทึกและแสดงในวาระการประชุม การติดตามการดำเนินการทางธุรกิจที่ทำบนวัตถุโดยอัตโนมัติ (การตรวจสอบความถูกต้อง การเปลี่ยนสถานะ) จะไม่ถูกบันทึก +AgendaSetupOtherDesc= หน้านี้มีตัวเลือกในการอนุญาตให้ส่งออกกิจกรรม Dolibarr ของคุณไปยังปฏิทินภายนอก (Thunderbird, Google Calendar ฯลฯ...) AgendaExtSitesDesc=หน้านี้จะช่วยให้การประกาศแหล่งภายนอกของปฏิทินเพื่อดูกิจกรรมของพวกเขาเข้าสู่วาระการประชุม Dolibarr ActionsEvents=กิจกรรมสำหรับ Dolibarr ซึ่งจะสร้างการดำเนินการในวาระการประชุมโดยอัตโนมัติ -EventRemindersByEmailNotEnabled=Event reminders by email was not enabled into %s module setup. +EventRemindersByEmailNotEnabled=ไม่ได้เปิดใช้งานการแจ้งเตือนกิจกรรมทางอีเมล %s การตั้งค่าโมดูล ##### Agenda event labels ##### -NewCompanyToDolibarr=Third party %s created -COMPANY_MODIFYInDolibarr=Third party %s modified -COMPANY_DELETEInDolibarr=Third party %s deleted -ContractValidatedInDolibarr=สัญญา% ผ่านการตรวจสอบ -CONTRACT_DELETEInDolibarr=Contract %s deleted -PropalClosedSignedInDolibarr=ข้อเสนอ% s ลงนาม -PropalClosedRefusedInDolibarr=ข้อเสนอ% s ปฏิเสธ -PropalValidatedInDolibarr=s% ข้อเสนอการตรวจสอบ -PropalClassifiedBilledInDolibarr=ข้อเสนอ% s แยกการเรียกเก็บเงิน -InvoiceValidatedInDolibarr=ใบแจ้งหนี้% s ตรวจสอบ -InvoiceValidatedInDolibarrFromPos=s% การตรวจสอบใบแจ้งหนี้จาก POS -InvoiceBackToDraftInDolibarr=ใบแจ้งหนี้% s กลับไปที่ร่างสถานะ -InvoiceDeleteDolibarr=ใบแจ้งหนี้% s ลบ -InvoicePaidInDolibarr=ใบแจ้งหนี้% s เปลี่ยนไปจ่าย -InvoiceCanceledInDolibarr=ใบแจ้งหนี้% s ยกเลิก -MemberValidatedInDolibarr=สมาชิก s% ผ่านการตรวจสอบ -MemberModifiedInDolibarr=Member %s modified -MemberResiliatedInDolibarr=Member %s terminated -MemberDeletedInDolibarr=สมาชิก s% ลบ +NewCompanyToDolibarr= สร้าง %s โดยบุคคลที่สาม +COMPANY_MODIFYInDolibarr= แก้ไข %s โดยบุคคลที่สาม +COMPANY_DELETEInDolibarr=ลบ %s โดยบุคคลที่สาม +ContractValidatedInDolibarr=สัญญา %s ตรวจสอบแล้ว +CONTRACT_DELETEInDolibarr=สัญญา %s ลบแล้ว +PropalClosedSignedInDolibarr=ข้อเสนอ %s ลงนามแล้ว +PropalClosedRefusedInDolibarr=ข้อเสนอ %s ที่ปฏิเสธ +PropalValidatedInDolibarr=ข้อเสนอ %sที่ตรวจสอบแล้ว +PropalBackToDraftInDolibarr=ข้อเสนอ %s กลับไปเป็นสถานะแบบร่าง +PropalClassifiedBilledInDolibarr=ข้อเสนอ %s จัดประเภทเรียกเก็บเงิน +InvoiceValidatedInDolibarr=ใบแจ้งหนี้ %s ตรวจสอบแล้ว +InvoiceValidatedInDolibarrFromPos=ใบแจ้งหนี้ %s ตรวจสอบจาก POS +InvoiceBackToDraftInDolibarr=ใบแจ้งหนี้ %s กลับสถานะไปเป็นแบบร่าง +InvoiceDeleteDolibarr=ใบแจ้งหนี้ %s ที่ลบแล้ว +InvoicePaidInDolibarr=ใบแจ้งหนี้ %s เป็นเป็นจ่ายแล้ว +InvoiceCanceledInDolibarr=ใบแจ้งหนี้ %s ยกเลิกแล้ว +MemberValidatedInDolibarr=สมาชิก %s ที่ตรวจสอบ +MemberModifiedInDolibarr=สมาชิก %s แก้ไขแล้ว +MemberResiliatedInDolibarr=สมาชิก %s ถูกยกเลิก +MemberDeletedInDolibarr=สมาชิก %s ลบแล้ว +MemberExcludedInDolibarr=สมาชิก %s ไม่รวม MemberSubscriptionAddedInDolibarr=Subscription %s for member %s added MemberSubscriptionModifiedInDolibarr=Subscription %s for member %s modified MemberSubscriptionDeletedInDolibarr=Subscription %s for member %s deleted -ShipmentValidatedInDolibarr=% s การตรวจสอบการจัดส่ง +ShipmentValidatedInDolibarr=การจัดส่ง %s ตรวจสอบแล้ว ShipmentClassifyClosedInDolibarr=Shipment %s classified billed ShipmentUnClassifyCloseddInDolibarr=Shipment %s classified re-open ShipmentBackToDraftInDolibarr=Shipment %s go back to draft status -ShipmentDeletedInDolibarr=% s การจัดส่งที่ถูกลบ +ShipmentDeletedInDolibarr=การจัดส่ง %s ที่ลบแล้ว ShipmentCanceledInDolibarr=Shipment %s canceled ReceptionValidatedInDolibarr=Reception %s validated +ReceptionDeletedInDolibarr=Reception %s deleted +ReceptionClassifyClosedInDolibarr=Reception %s classified closed OrderCreatedInDolibarr=Order %s created -OrderValidatedInDolibarr=สั่งซื้อ% s ตรวจสอบ -OrderDeliveredInDolibarr=สั่งซื้อ% s แยกส่ง -OrderCanceledInDolibarr=สั่งซื้อ% s ยกเลิก -OrderBilledInDolibarr=สั่งซื้อ% s แยกการเรียกเก็บเงิน -OrderApprovedInDolibarr=s% สั่งซื้อได้รับการอนุมัติ -OrderRefusedInDolibarr=สั่งซื้อ% s ปฏิเสธ -OrderBackToDraftInDolibarr=สั่งซื้อ% s กลับไปที่ร่างสถานะ +OrderValidatedInDolibarr=ใบสั่งซื้อ %s ที่ตรวจสอบแล้ว +OrderDeliveredInDolibarr=ใบสั่งซื้อ %s จัดประเภทจัดส่ง +OrderCanceledInDolibarr=ใบสั่งซื้อ %s ที่ยกเลิก +OrderBilledInDolibarr=ใบสั่งซื้อ %s จัดประเภทเรียกเก็บเงิน +OrderApprovedInDolibarr=ใบสั่งซื้อ %s ได้รับการอนุมัติ +OrderRefusedInDolibarr=ใบสั่งซื้อ %s ปฏิเสธ +OrderBackToDraftInDolibarr=ใบสั่งซื้อ %s กลับสถานะไปเป็นแบบร่าง ProposalSentByEMail=Commercial proposal %s sent by email ContractSentByEMail=Contract %s sent by email OrderSentByEMail=Sales order %s sent by email @@ -82,8 +86,9 @@ SupplierOrderSentByEMail=Purchase order %s sent by email ORDER_SUPPLIER_DELETEInDolibarr=Purchase order %s deleted SupplierInvoiceSentByEMail=Vendor invoice %s sent by email ShippingSentByEMail=Shipment %s sent by email -ShippingValidated= % s การตรวจสอบการจัดส่ง +ShippingValidated= การจัดส่ง %s ตรวจสอบแล้ว InterventionSentByEMail=Intervention %s sent by email +ProjectSentByEMail=Project %s sent by email ProposalDeleted=Proposal deleted OrderDeleted=Order deleted InvoiceDeleted=Invoice deleted @@ -104,7 +109,7 @@ EXPENSE_REPORT_VALIDATEInDolibarr=Expense report %s validated EXPENSE_REPORT_APPROVEInDolibarr=Expense report %s approved EXPENSE_REPORT_DELETEInDolibarr=Expense report %s deleted EXPENSE_REPORT_REFUSEDInDolibarr=Expense report %s refused -PROJECT_CREATEInDolibarr=โครงการสร้าง% s +PROJECT_CREATEInDolibarr=โปรเจ็ค %s สร้างแล้ว PROJECT_MODIFYInDolibarr=Project %s modified PROJECT_DELETEInDolibarr=Project %s deleted TICKET_CREATEInDolibarr=Ticket %s created @@ -128,7 +133,7 @@ AgendaModelModule=Document templates for event DateActionStart=วันที่เริ่มต้น DateActionEnd=วันที่สิ้นสุด AgendaUrlOptions1=นอกจากนี้คุณยังสามารถเพิ่มพารามิเตอร์ต่อไปนี้เพื่อกรองเอาท์พุท: -AgendaUrlOptions3=Logina =% s ​​ที่จะ จำกัด การส่งออกไปยังการดำเนินการที่เป็นเจ้าของโดยผู้ใช้% s +AgendaUrlOptions3=เข้าสู่ระบบ=%s เพื่อจำกัดเอาต์พุตให้เป็นการกระทำที่ผู้ใช้เป็นเจ้าของ %s. AgendaUrlOptionsNotAdmin=logina=!%s to restrict output to actions not owned by user %s. AgendaUrlOptions4=logint=%s to restrict output to actions assigned to user %s (owner and others). AgendaUrlOptionsProject=project=__PROJECT_ID__ to restrict output to actions linked to project __PROJECT_ID__. @@ -156,7 +161,8 @@ ActionType=ประเภทเหตุการณ์ DateActionBegin=วันที่เริ่มต้นเหตุการณ์ ConfirmCloneEvent=Are you sure you want to clone the event %s? RepeatEvent=เหตุการณ์ซ้ำ -OnceOnly=Once only +OnceOnly=ครั้งเดียว +EveryDay=ทุกวัน EveryWeek=ทุกสัปดาห์ EveryMonth=ทุกเดือน DayOfMonth=วันของเดือน @@ -171,4 +177,6 @@ ReminderType=Callback type AddReminder=Create an automatic reminder notification for this event ErrorReminderActionCommCreation=Error creating the reminder notification for this event BrowserPush=Browser Popup Notification +Reminders=Reminders ActiveByDefault=Enabled by default +Until=until diff --git a/htdocs/langs/th_TH/assets.lang b/htdocs/langs/th_TH/assets.lang index 812e3126d7a..b5d16f51875 100644 --- a/htdocs/langs/th_TH/assets.lang +++ b/htdocs/langs/th_TH/assets.lang @@ -1,4 +1,4 @@ -# Copyright (C) 2018 Alexandre Spangaro +# Copyright (C) 2018-2022 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 @@ -16,50 +16,171 @@ # # Generic # -Assets = Assets -NewAsset = New asset -AccountancyCodeAsset = Accounting code (asset) -AccountancyCodeDepreciationAsset = Accounting code (depreciation asset account) -AccountancyCodeDepreciationExpense = Accounting code (depreciation expense account) -NewAssetType=New asset type -AssetsTypeSetup=Asset type setup -AssetTypeModified=Asset type modified -AssetType=Asset type +NewAsset=New asset +AccountancyCodeAsset=Accounting code (asset) +AccountancyCodeDepreciationAsset=Accounting code (depreciation asset account) +AccountancyCodeDepreciationExpense=Accounting code (depreciation expense account) AssetsLines=Assets DeleteType=ลบ -DeleteAnAssetType=Delete an asset type -ConfirmDeleteAssetType=Are you sure you want to delete this asset type? -ShowTypeCard=แสดงชนิด '% s' +DeleteAnAssetType=Delete an asset model +ConfirmDeleteAssetType=Are you sure you want to delete this asset model? +ShowTypeCard=Show model '%s' # Module label 'ModuleAssetsName' -ModuleAssetsName = Assets +ModuleAssetsName=Assets # Module description 'ModuleAssetsDesc' -ModuleAssetsDesc = Assets description +ModuleAssetsDesc=Assets description # # Admin page # -AssetsSetup = Assets setup -Settings = Settings -AssetsSetupPage = Assets setup page -ExtraFieldsAssetsType = Complementary attributes (Asset type) -AssetsType=Asset type -AssetsTypeId=Asset type id -AssetsTypeLabel=Asset type label -AssetsTypes=Assets types +AssetSetup=Assets setup +AssetSetupPage=Assets setup page +ExtraFieldsAssetModel=Complementary attributes (Asset's model) + +AssetsType=Asset model +AssetsTypeId=Asset model id +AssetsTypeLabel=Asset model label +AssetsTypes=Assets models +ASSET_ACCOUNTANCY_CATEGORY=Fixed asset accounting group # # Menu # -MenuAssets = Assets -MenuNewAsset = New asset -MenuTypeAssets = Type assets -MenuListAssets = รายการ -MenuNewTypeAssets = ใหม่ -MenuListTypeAssets = รายการ +MenuAssets=Assets +MenuNewAsset=New asset +MenuAssetModels=Model assets +MenuListAssets=รายการ +MenuNewAssetModel=New asset's model +MenuListAssetModels=รายการ # # Module # -NewAssetType=New asset type -NewAsset=New asset +ConfirmDeleteAsset=Do you really want to remove this asset? + +# +# Tab +# +AssetDepreciationOptions=Depreciation options +AssetAccountancyCodes=บัญชีการบัญชี +AssetDepreciation=Depreciation + +# +# Asset +# +Asset=Asset +Assets=Assets +AssetReversalAmountHT=Reversal amount (without taxes) +AssetAcquisitionValueHT=Acquisition amount (without taxes) +AssetRecoveredVAT=Recovered VAT +AssetReversalDate=Reversal date +AssetDateAcquisition=Acquisition date +AssetDateStart=Date of start-up +AssetAcquisitionType=Type of acquisition +AssetAcquisitionTypeNew=ใหม่ +AssetAcquisitionTypeOccasion=Used +AssetType=Type of asset +AssetTypeIntangible=Intangible +AssetTypeTangible=Tangible +AssetTypeInProgress=In progress +AssetTypeFinancial=Financial +AssetNotDepreciated=Not depreciated +AssetDisposal=Disposal +AssetConfirmDisposalAsk=Are you sure you want to dispose of the asset %s? +AssetConfirmReOpenAsk=Are you sure you want to reopen the asset %s? + +# +# Asset status +# +AssetInProgress=In progress +AssetDisposed=Disposed +AssetRecorded=Accounted + +# +# Asset disposal +# +AssetDisposalDate=Date of disposal +AssetDisposalAmount=Disposal value +AssetDisposalType=Type of disposal +AssetDisposalDepreciated=Depreciate the year of transfer +AssetDisposalSubjectToVat=Disposal subject to VAT + +# +# Asset model +# +AssetModel=Asset's model +AssetModels=Asset's models + +# +# Asset depreciation options +# +AssetDepreciationOptionEconomic=Economic depreciation +AssetDepreciationOptionAcceleratedDepreciation=Accelerated depreciation (tax) +AssetDepreciationOptionDepreciationType=Depreciation type +AssetDepreciationOptionDepreciationTypeLinear=Linear +AssetDepreciationOptionDepreciationTypeDegressive=Degressive +AssetDepreciationOptionDepreciationTypeExceptional=Exceptional +AssetDepreciationOptionDegressiveRate=Degressive rate +AssetDepreciationOptionAcceleratedDepreciation=Accelerated depreciation (tax) +AssetDepreciationOptionDuration=ระยะเวลา +AssetDepreciationOptionDurationType=Type duration +AssetDepreciationOptionDurationTypeAnnual=Annual +AssetDepreciationOptionDurationTypeMonthly=Monthly +AssetDepreciationOptionDurationTypeDaily=Daily +AssetDepreciationOptionRate=Rate (%%) +AssetDepreciationOptionAmountBaseDepreciationHT=Depreciation base (excl. VAT) +AssetDepreciationOptionAmountBaseDeductibleHT=Deductible base (excl. VAT) +AssetDepreciationOptionTotalAmountLastDepreciationHT=Total amount last depreciation (excl. VAT) + +# +# Asset accountancy codes +# +AssetAccountancyCodeDepreciationEconomic=Economic depreciation +AssetAccountancyCodeAsset=Asset +AssetAccountancyCodeDepreciationAsset=Depreciation +AssetAccountancyCodeDepreciationExpense=Depreciation expense +AssetAccountancyCodeValueAssetSold=Value of asset disposed +AssetAccountancyCodeReceivableOnAssignment=Receivable on disposal +AssetAccountancyCodeProceedsFromSales=Proceeds from disposal +AssetAccountancyCodeVatCollected=Collected VAT +AssetAccountancyCodeVatDeductible=Recovered VAT on assets +AssetAccountancyCodeDepreciationAcceleratedDepreciation=Accelerated depreciation (tax) +AssetAccountancyCodeAcceleratedDepreciation=บัญชี +AssetAccountancyCodeEndowmentAcceleratedDepreciation=Depreciation expense +AssetAccountancyCodeProvisionAcceleratedDepreciation=Repossession/Provision + +# +# Asset depreciation +# +AssetBaseDepreciationHT=Depreciation basis (excl. VAT) +AssetDepreciationBeginDate=Start of depreciation on +AssetDepreciationDuration=ระยะเวลา +AssetDepreciationRate=Rate (%%) +AssetDepreciationDate=Depreciation date +AssetDepreciationHT=Depreciation (excl. VAT) +AssetCumulativeDepreciationHT=Cumulative depreciation (excl. VAT) +AssetResidualHT=Residual value (excl. VAT) +AssetDispatchedInBookkeeping=Depreciation recorded +AssetFutureDepreciationLine=Future depreciation +AssetDepreciationReversal=Reversal + +# +# Errors +# +AssetErrorAssetOrAssetModelIDNotProvide=Id of the asset or the model sound has not been provided +AssetErrorFetchAccountancyCodesForMode=Error when retrieving the accounting accounts for the '%s' depreciation mode +AssetErrorDeleteAccountancyCodesForMode=Error when deleting accounting accounts from the '%s' depreciation mode +AssetErrorInsertAccountancyCodesForMode=Error when inserting the accounting accounts of the depreciation mode '%s' +AssetErrorFetchDepreciationOptionsForMode=Error when retrieving options for the '%s' depreciation mode +AssetErrorDeleteDepreciationOptionsForMode=Error when deleting the '%s' depreciation mode options +AssetErrorInsertDepreciationOptionsForMode=Error when inserting the '%s' depreciation mode options +AssetErrorFetchDepreciationLines=Error when retrieving recorded depreciation lines +AssetErrorClearDepreciationLines=Error when purging recorded depreciation lines (reversal and future) +AssetErrorAddDepreciationLine=Error when adding a depreciation line +AssetErrorCalculationDepreciationLines=Error when calculating the depreciation lines (recovery and future) +AssetErrorReversalDateNotProvidedForMode=The reversal date is not provided for the '%s' depreciation method +AssetErrorReversalDateNotGreaterThanCurrentBeginFiscalDateForMode=The reversal date must be greater than or equal to the beginning of the current fiscal year for the '%s' depreciation method +AssetErrorReversalAmountNotProvidedForMode=The reversal amount is not provided for the depreciation mode '%s'. +AssetErrorFetchCumulativeDepreciation=Error when retrieving the accumulated depreciation amount from the depreciation line +AssetErrorSetLastCumulativeDepreciation=Error when recording the last accumulated depreciation amount diff --git a/htdocs/langs/th_TH/banks.lang b/htdocs/langs/th_TH/banks.lang index b0fea7ef5ad..83510f9d8ce 100644 --- a/htdocs/langs/th_TH/banks.lang +++ b/htdocs/langs/th_TH/banks.lang @@ -49,6 +49,9 @@ BankAccountDomiciliation=Bank address BankAccountCountry=ประเทศบัญชี BankAccountOwner=ชื่อเจ้าของบัญชี BankAccountOwnerAddress=ที่อยู่เจ้าของบัญชี +BankAccountOwnerZip=Account owner zip +BankAccountOwnerTown=Account owner town +BankAccountOwnerCountry=Account owner country CreateAccount=สร้างบัญชี NewBankAccount=บัญชีใหม่ NewFinancialAccount=บัญชีทางการเงินใหม่ @@ -95,11 +98,11 @@ LineRecord=การซื้อขาย AddBankRecord=Add entry AddBankRecordLong=Add entry manually Conciliated=Reconciled -ConciliatedBy=โดยคืนดี +ReConciliedBy=โดยคืนดี DateConciliating=วันที่ตกลงกัน BankLineConciliated=Entry reconciled with bank receipt -Reconciled=Reconciled -NotReconciled=Not reconciled +BankLineReconciled=Reconciled +BankLineNotReconciled=Not reconciled CustomerInvoicePayment=การชำระเงินของลูกค้า SupplierInvoicePayment=Vendor payment SubscriptionPayment=การชำระเงินการสมัครสมาชิก @@ -111,7 +114,7 @@ MenuBankInternalTransfer=Internal transfer TransferDesc=Use internal transfer to transfer from one account to another, the application will write two records: a debit in the source account and a credit in the target account. The same amount, label and date will be used for this transaction. TransferFrom=จาก TransferTo=ไปยัง -TransferFromToDone=การถ่ายโอนจาก% s% s% s% s ได้รับการบันทึก +TransferFromToDone=การโอนจาก %s ไปยัง %s ของ %s %s ได้รับการบันทึกแล้ว CheckTransmitter=ผู้ส่ง ValidateCheckReceipt=Validate this check receipt? ConfirmValidateCheckReceipt=Are you sure that you want to submit this check receipt for validation? No changes will be possible once validated. @@ -172,8 +175,8 @@ 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=Automatically fill the field 'number of bank statement' with last statement number when making reconciliation -CashControl=POS cash desk control -NewCashFence=New cash desk opening or closing +CashControl=POS cash control +NewCashFence=New cash control (opening or closing) BankColorizeMovement=Colorize movements BankColorizeMovementDesc=If this function is enable, you can choose specific background color for debit or credit movements BankColorizeMovementName1=Background color for debit movement @@ -182,3 +185,6 @@ IfYouDontReconcileDisableProperty=If you don't make the bank reconciliations on NoBankAccountDefined=No bank account defined NoRecordFoundIBankcAccount=No record found in bank account. Commonly, this occurs when a record has been deleted manually from the list of transaction in the bank account (for example during a reconciliation of the bank account). Another reason is that the payment was recorded when the module "%s" was disabled. AlreadyOneBankAccount=Already one bank account defined +SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation=SEPA transfer: 'Payment Type' at 'Credit Transfer' level +SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp=When generatin a SEPA XML file for Credit transfers, the section "PaymentTypeInformation" can now be placed inside the "CreditTransferTransactionInformation" section (instead of "Payment" section). We strongly recommend to keep this unchecked to place PaymentTypeInformation at Payment level, as all banks will not necessarily accept it at CreditTransferTransactionInformation level. Contact your bank before placing PaymentTypeInformation at CreditTransferTransactionInformation level. +ToCreateRelatedRecordIntoBank=To create missing related bank record diff --git a/htdocs/langs/th_TH/bills.lang b/htdocs/langs/th_TH/bills.lang index bb9e2954087..8eb7dd01471 100644 --- a/htdocs/langs/th_TH/bills.lang +++ b/htdocs/langs/th_TH/bills.lang @@ -13,10 +13,12 @@ BillsStatistics=สถิติใบแจ้งหนี้ลูกค้า 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. +DisabledBecauseNotLastSituationInvoice=Disabled because invoice is not erasable. This invoice is not the last one in situation invoice cycle. DisabledBecauseNotErasable=Disabled because cannot be erased InvoiceStandard=ใบแจ้งหนี้มาตรฐาน InvoiceStandardAsk=ใบแจ้งหนี้มาตรฐาน InvoiceStandardDesc=ชนิดของใบแจ้งหนี้นี้เป็นใบแจ้งหนี้ที่พบบ่อย +InvoiceStandardShort=Standard InvoiceDeposit=Down payment invoice InvoiceDepositAsk=Down payment invoice InvoiceDepositDesc=This kind of invoice is done when a down payment has been received. @@ -24,6 +26,7 @@ InvoiceProForma=ใบแจ้งหนี้ Proforma InvoiceProFormaAsk=ใบแจ้งหนี้ Proforma InvoiceProFormaDesc=ใบแจ้งหนี้ Proforma คือภาพของใบแจ้งหนี้ที่แท้จริง แต่มีค่าไม่มีบัญชี InvoiceReplacement=เปลี่ยนใบแจ้งหนี้ +InvoiceReplacementShort=Replacement InvoiceReplacementAsk=ใบแจ้งหนี้แทนใบแจ้งหนี้ InvoiceReplacementDesc=Replacement invoice is used to 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=ใบลดหนี้ @@ -32,13 +35,13 @@ InvoiceAvoirDesc=The credit note is a negative invoice used to correct th invoiceAvoirWithLines=สร้างหมายเหตุเครดิตที่มีเส้นใบแจ้งหนี้จากแหล่งกำเนิด invoiceAvoirWithPaymentRestAmount=สร้างหนี้ที่ค้างชำระที่เหลืออยู่กับใบแจ้งหนี้ต้นกำเนิด invoiceAvoirLineWithPaymentRestAmount=หมายเหตุเครดิตสำหรับจำนวนเงินที่เหลือยังไม่ได้ชำระ -ReplaceInvoice=เปลี่ยนใบแจ้งหนี้% s +ReplaceInvoice=เปลี่ยนใบแจ้งหนี้ %s ReplacementInvoice=เปลี่ยนใบแจ้งหนี้ -ReplacedByInvoice=ถูกแทนที่ด้วยใบแจ้งหนี้% s +ReplacedByInvoice=ถูกแทนที่ด้วยใบแจ้งหนี้ %s ReplacementByInvoice=ถูกแทนที่ด้วยใบแจ้งหนี้ -CorrectInvoice=ใบแจ้งหนี้% s ที่ถูกต้อง -CorrectionInvoice=ใบแจ้งหนี้การแก้ไข -UsedByInvoice=ใช้ในการจ่ายใบแจ้งหนี้% s +CorrectInvoice=ใบแจ้งหนี้ที่ถูกต้อง %s +CorrectionInvoice=การแก้ไขใบแจ้งหนี้ +UsedByInvoice=ใช้ชำระใบแจ้งหนี้ %s ConsumedBy=บริโภคโดย NotConsumed=บริโภคไม่ได้ NoReplacableInvoice=No replaceable invoices @@ -76,7 +79,7 @@ ReceivedPayments=การชำระเงินที่ได้รับ ReceivedCustomersPayments=การชำระเงินที่ได้รับจากลูกค้า PayedSuppliersPayments=Payments paid to vendors ReceivedCustomersPaymentsToValid=การชำระเงินของลูกค้าที่ได้รับการตรวจสอบ -PaymentsReportsForYear=รายงานการชำระเงินสำหรับ% s +PaymentsReportsForYear=รายงานการชำระเงินสำหรับ%s PaymentsReports=รายงานการชำระเงิน PaymentsAlreadyDone=การชำระเงินที่ทำมาแล้ว PaymentsBackAlreadyDone=Refunds already done @@ -149,15 +152,17 @@ PaymentStatusToValidShort=ในการตรวจสอบ ErrorVATIntraNotConfigured=Intra-Community VAT number not yet defined 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=ใบแจ้งหนี้% s ไม่ได้อยู่ +ErrorBillNotFound=ใบแจ้งหนี้ %s ไม่พบข้อมูล ErrorInvoiceAlreadyReplaced=Error, you tried to validate an invoice to replace invoice %s. But this one has already been replaced by invoice %s. ErrorDiscountAlreadyUsed=ข้อผิดพลาดลดที่ใช้แล้ว ErrorInvoiceAvoirMustBeNegative=ข้อผิดพลาดในใบแจ้งหนี้ที่ถูกต้องจะต้องมีมูลค่าติดลบ ErrorInvoiceOfThisTypeMustBePositive=Error, this type of invoice must have an amount excluding tax positive (or null) ErrorCantCancelIfReplacementInvoiceNotValidated=ข้อผิดพลาดที่ไม่สามารถยกเลิกใบแจ้งหนี้ที่ได้รับการแทนที่ด้วยใบแจ้งหนี้อื่นที่ยังคงอยู่ในสถานะร่าง ErrorThisPartOrAnotherIsAlreadyUsedSoDiscountSerieCantBeRemoved=This part or another is already used so discount series cannot be removed. +ErrorInvoiceIsNotLastOfSameType=Error: The date of invoice %s is %s. It must be posterior or equal to last date for same type invoices (%s). Please change the invoice date. BillFrom=จาก BillTo=ไปยัง +ShippingTo=Shipping to ActionsOnBill=การดำเนินการในใบแจ้งหนี้ RecurringInvoiceTemplate=Template / Recurring invoice NoQualifiedRecurringInvoiceTemplateFound=No recurring template invoice qualified for generation. @@ -188,8 +193,8 @@ ConfirmClassifyPaidPartially=Are you sure you want to change invoice %s t 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=ที่เหลือยังไม่ได้ชำระ (% s% s) เป็นส่วนลดได้รับเนื่องจากการชำระเงินก่อนที่จะถูกสร้างขึ้นมาในระยะ ฉันยอมรับที่จะสูญเสียภาษีมูลค่าเพิ่มในส่วนลดนี้ -ConfirmClassifyPaidPartiallyReasonDiscountVat=ที่เหลือยังไม่ได้ชำระ (% s% s) เป็นส่วนลดได้รับเนื่องจากการชำระเงินก่อนที่จะถูกสร้างขึ้นมาในระยะ ฉันกู้คืนภาษีมูลค่าเพิ่มส่วนลดนี้โดยไม่มีใบลดหนี้ +ConfirmClassifyPaidPartiallyReasonDiscountNoVat=ยังไม่ได้ชำระ (%s %s) เป็นส่วนลดที่ได้รับเนื่องจากชำระเงินก่อนกำหนด ฉันยอมรับที่จะเสียภาษีมูลค่าเพิ่มจากส่วนลดนี้ +ConfirmClassifyPaidPartiallyReasonDiscountVat=ส่วนที่เหลือค้างชำระ (%s %s) เป็นส่วนลดที่ได้รับเนื่องจากชำระเงินก่อนกำหนด ฉันขอคืนภาษีมูลค่าเพิ่มจากส่วนลดนี้โดยไม่ต้องใช้ใบลดหนี้ ConfirmClassifyPaidPartiallyReasonBadCustomer=ลูกค้าที่ไม่ดี ConfirmClassifyPaidPartiallyReasonBankCharge=Deduction by bank (intermediary bank fees) ConfirmClassifyPaidPartiallyReasonProductReturned=ผลิตภัณฑ์กลับมาบางส่วน @@ -250,8 +255,8 @@ ExcessPaid=Excess paid ExcessPaidMulticurrency=Excess paid, original currency EscompteOffered=ส่วนลดที่นำเสนอ (ชำระเงินก่อนที่จะยาว) EscompteOfferedShort=ส่วนลด -SendBillRef=ส่งใบแจ้งหนี้% s -SendReminderBillRef=การส่งใบแจ้งหนี้ s% (เตือน) +SendBillRef=การส่งใบแจ้งหนี้ %s +SendReminderBillRef=การส่งใบแจ้งหนี้ %s (เตือนความจำ) SendPaymentReceipt=Submission of payment receipt %s NoDraftBills=ไม่มีใบแจ้งหนี้ร่าง NoOtherDraftBills=ไม่มีใบแจ้งหนี้ร่างอื่น ๆ @@ -282,6 +287,8 @@ RecurringInvoices=Recurring invoices RecurringInvoice=Recurring invoice RepeatableInvoice=แม่แบบใบแจ้งหนี้ RepeatableInvoices=แม่แบบใบแจ้งหนี้ +RecurringInvoicesJob=Generation of recurring invoices (sales invoices) +RecurringSupplierInvoicesJob=Generation of recurring invoices (purchase invoices) Repeatable=แบบ Repeatables=แม่แบบ ChangeIntoRepeatableInvoice=แปลงเป็นแม่แบบใบแจ้งหนี้ @@ -298,22 +305,22 @@ Reductions=ลด ReductionsShort=Disc. Discounts=ส่วนลด AddDiscount=สร้างส่วนลด -AddRelativeDiscount=สร้างส่วนลดญาติ -EditRelativeDiscount=แก้ไขส่วนลดญาติ +AddRelativeDiscount=สร้างส่วนลดที่เกี่ยวข้อง +EditRelativeDiscount=แก้ไขส่วนลดที่เกี่ยวข้อง AddGlobalDiscount=สร้างส่วนลดแน่นอน EditGlobalDiscounts=แก้ไขส่วนลดแน่นอน AddCreditNote=สร้างบันทึกเครดิต ShowDiscount=แสดงส่วนลด ShowReduc=Show the discount ShowSourceInvoice=Show the source invoice -RelativeDiscount=ส่วนลดญาติ +RelativeDiscount=ส่วนลดที่เกี่ยวข้อง GlobalDiscount=ลดราคาทั่วโลก CreditNote=ใบลดหนี้ CreditNotes=บันทึกเครดิต CreditNotesOrExcessReceived=Credit notes or excess received Deposit=Down payment Deposits=Down payments -DiscountFromCreditNote=ส่วนลดจากใบลดหนี้% s +DiscountFromCreditNote=ส่วนลดจากใบลดหนี้ %s DiscountFromDeposit=Down payments from invoice %s DiscountFromExcessReceived=Payments in excess of invoice %s DiscountFromExcessPaid=Payments in excess of invoice %s @@ -354,7 +361,7 @@ ConfirmCloneInvoice=Are you sure you want to clone this invoice %s? DisabledBecauseReplacedInvoice=การดำเนินการปิดใช้งานเนื่องจากใบแจ้งหนี้ที่ได้รับการแทนที่ 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=ส่วนลดในสองแยก +SplitDiscount=แบ่งส่วนลดออกเป็นสองส่วน 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=The total of the two new discounts must be equal to the original discount amount. @@ -426,14 +433,24 @@ PaymentConditionShort14D=14 days PaymentCondition14D=14 days PaymentConditionShort14DENDMONTH=14 days of month-end PaymentCondition14DENDMONTH=Within 14 days following the end of the month +PaymentConditionShortDEP30PCTDEL=__DEPOSIT_PERCENT__%% deposit +PaymentConditionDEP30PCTDEL=__DEPOSIT_PERCENT__%% deposit, remainder on delivery FixAmount=Fixed amount - 1 line with label '%s' VarAmount=ปริมาณ (ทีโอที %%.) VarAmountOneLine=Variable amount (%% tot.) - 1 line with label '%s' VarAmountAllLines=Variable amount (%% tot.) - all lines from origin +DepositPercent=Deposit %% +DepositGenerationPermittedByThePaymentTermsSelected=This is permitted by the payment terms selected +GenerateDeposit=Generate a %s%% deposit invoice +ValidateGeneratedDeposit=Validate the generated deposit +DepositGenerated=Deposit generated +ErrorCanOnlyAutomaticallyGenerateADepositFromProposalOrOrder=You can only automatically generate a deposit from a proposal or an order +ErrorPaymentConditionsNotEligibleToDepositCreation=The chose payment conditions are not eligible for automatic deposit generation # PaymentType PaymentTypeVIR=โอนเงินผ่านธนาคาร PaymentTypeShortVIR=โอนเงินผ่านธนาคาร PaymentTypePRE=Direct debit payment order +PaymentTypePREdetails=(on account *-%s) PaymentTypeShortPRE=Debit payment order PaymentTypeLIQ=เงินสด PaymentTypeShortLIQ=เงินสด @@ -451,7 +468,7 @@ PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor PaymentTypeDC=Debit/Credit Card PaymentTypePP=PayPal -BankDetails=ธนาคารรายละเอียด +BankDetails=รายละเอียดธนาคาร BankCode=รหัสธนาคาร DeskCode=Branch code BankAccountNumber=เลขที่บัญชี @@ -463,7 +480,7 @@ CustomerIBAN=IBAN of customer SupplierIBAN=IBAN of vendor BIC=BIC / SWIFT BICNumber=BIC/SWIFT code -ExtraInfos=ข่าวสารพิเศษ +ExtraInfos=ข้อมูลเพิ่มเติม RegulatedOn=ในการควบคุม ChequeNumber=ตรวจสอบไม่มี° ChequeOrTransferNumber=ตรวจสอบ / โอนไม่มี° @@ -482,11 +499,12 @@ PaymentByChequeOrderedToShort=Check payments (incl. tax) are payable to SendTo=ส่งไปยัง PaymentByTransferOnThisBankAccount=Payment by transfer to the following bank account VATIsNotUsedForInvoice=* ไม่รวมภาษีมูลค่าเพิ่มบังคับศิลปะ 293B ซีจี +VATIsNotUsedForInvoiceAsso=* Non applicable VAT art-261-7 of CGI LawApplicationPart1=โดยการใช้กฎหมายของ 80.335 12/05/80 LawApplicationPart2=สินค้าที่ยังคงเป็นทรัพย์สินของ LawApplicationPart3=the seller until full payment of LawApplicationPart4=ราคาของพวกเขา -LimitedLiabilityCompanyCapital=SARL กับเมืองหลวงของ +LimitedLiabilityCompanyCapital=SARL ด้วยทุนของ UseLine=ใช้ UseDiscount=ใช้ส่วนลด UseCredit=ใช้บัตรเครดิต @@ -505,7 +523,7 @@ 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 ShowUnpaidAll=แสดงใบแจ้งหนี้ที่ค้างชำระทั้งหมด ShowUnpaidLateOnly=แสดงใบแจ้งหนี้ที่ค้างชำระปลายเท่านั้น -PaymentInvoiceRef=ใบแจ้งหนี้การชำระเงิน% s +PaymentInvoiceRef=ชำระเงินใบแจ้งหนี้ %s ValidateInvoice=ตรวจสอบใบแจ้งหนี้ ValidateInvoices=Validate invoices Cash=เงินสด @@ -526,7 +544,7 @@ AllCompletelyPayedInvoiceWillBeClosed=All invoices with no remainder to pay will ToMakePayment=จ่ายเงิน ToMakePaymentBack=คืนทุน ListOfYourUnpaidInvoices=รายการของใบแจ้งหนี้ที่ค้างชำระ -NoteListOfYourUnpaidInvoices=หมายเหตุ: รายการนี​​้จะมีใบแจ้งหนี้เฉพาะบุคคลที่สามคุณจะเชื่อมโยงกับการเป็นตัวแทนขาย +NoteListOfYourUnpaidInvoices=หมายเหตุ: รายการนี้มีเฉพาะใบแจ้งหนี้สำหรับบุคคลที่สามที่คุณเชื่อมโยงด้วยในฐานะตัวแทนฝ่ายขาย RevenueStamp=Tax 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 "Vendor" of third party @@ -536,7 +554,7 @@ PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices TerreNumRefModelDesc1=Return number in the format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequencial auto-incrementing number with no break and no return to 0 MarsNumRefModelDesc1=Return number in the format %syymm-nnnn for standard invoices, %syymm-nnnn for replacement invoices, %syymm-nnnn for down payment invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequencial auto-incrementing number with no break and no return to 0 -TerreNumRefModelError=เริ่มต้นด้วยการเรียกเก็บเงิน $ syymm มีอยู่แล้วและไม่ได้เข้ากันได้กับรูปแบบของลำดับนี้ ลบหรือเปลี่ยนชื่อเพื่อเปิดใช้งานโมดูลนี้ +TerreNumRefModelError=มีบิลที่ขึ้นต้นด้วย $syymm อยู่แล้ว และไม่รองรับกับโมเดลลำดับนี้ ลบออกหรือเปลี่ยนชื่อเพื่อเปิดใช้งานโมดูลนี้ CactusNumRefModelDesc1=Return number in the format %syymm-nnnn for standard invoices, %syymm-nnnn for credit notes and %syymm-nnnn for down payment invoices where yy is year, mm is month and nnnn is a sequencial auto-incrementing number with no break and no return to 0 EarlyClosingReason=Early closing reason EarlyClosingComment=Early closing note @@ -570,7 +588,7 @@ situationInvoiceShortcode_AS=AS situationInvoiceShortcode_S=S CantBeLessThanMinPercent=ความคืบหน้าไม่สามารถที่จะมีขนาดเล็กกว่าค่าของมันอยู่ในสถานการณ์ที่ผ่านมา NoSituations=ไม่มีสถานการณ์ที่เปิด -InvoiceSituationLast=รอบชิงชนะเลิศและใบแจ้งหนี้ทั่วไป +InvoiceSituationLast=ใบแจ้งหนี้สุดท้ายและทั่วไป PDFCrevetteSituationNumber=Situation N°%s PDFCrevetteSituationInvoiceLineDecompte=Situation invoice - COUNT PDFCrevetteSituationInvoiceTitle=ใบแจ้งหนี้สถานการณ์ @@ -599,7 +617,6 @@ BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted UnitPriceXQtyLessDiscount=Unit price x Qty - Discount CustomersInvoicesArea=Customer billing area SupplierInvoicesArea=Supplier billing area -FacParentLine=Invoice Line Parent SituationTotalRayToRest=Remainder to pay without taxe PDFSituationTitle=Situation n° %d SituationTotalProgress=Total progress %d %% @@ -607,3 +624,10 @@ SearchUnpaidInvoicesWithDueDate=Search unpaid invoices with a due date = %s NoPaymentAvailable=No payment available for %s PaymentRegisteredAndInvoiceSetToPaid=Payment registered and invoice %s set to paid SendEmailsRemindersOnInvoiceDueDate=Send reminder by email for unpaid invoices +MakePaymentAndClassifyPayed=Record payment +BulkPaymentNotPossibleForInvoice=Bulk payment is not possible for invoice %s (bad type or status) +MentionVATDebitOptionIsOn=Option to pay tax based on debits +MentionCategoryOfOperations=Category of operations +MentionCategoryOfOperations0=Delivery of goods +MentionCategoryOfOperations1=Provision of services +MentionCategoryOfOperations2=Mixed - Delivery of goods & provision of services diff --git a/htdocs/langs/th_TH/categories.lang b/htdocs/langs/th_TH/categories.lang index f211046c8ba..cba56ad6d0f 100644 --- a/htdocs/langs/th_TH/categories.lang +++ b/htdocs/langs/th_TH/categories.lang @@ -29,19 +29,20 @@ NoSubCat=ไม่มีหมวดหมู่ SubCatOf=ประเภทย่อย FoundCats=พบแท็ก / ประเภท ImpossibleAddCat=Impossible to add the tag/category %s -WasAddedSuccessfully=% s ถูกเพิ่มเรียบร้อยแล้ว +WasAddedSuccessfully=%s ถูกเพิ่มเรียบร้อยแล้ว ObjectAlreadyLinkedToCategory=องค์ประกอบที่มีการเชื่อมโยงกับแท็กนี้ / หมวดหมู่ ProductIsInCategories=สินค้า / บริการที่มีการเชื่อมโยงต่อไปนี้แท็ก / ประเภท CompanyIsInCustomersCategories=บุคคลที่สามนี้มีการเชื่อมโยงต่อกับ ลูกค้า / ลูกค้าเป้าหมาย แท็ก / ประเภท นี้ CompanyIsInSuppliersCategories=This third party is linked to following vendors tags/categories MemberIsInCategories=สมาชิกนี้จะถูกเชื่อมโยงกับสมาชิกต่อไปนี้แท็ก / ประเภท ContactIsInCategories=ติดต่อนี้มีการเชื่อมโยงต่อไปนี้แท็กรายชื่อ / ประเภท -ProductHasNoCategory=สินค้า / บริการนี​​้ไม่ได้อยู่ในแท็กใด ๆ / ประเภท +ProductHasNoCategory=สินค้า/บริการนี้ไม่อยู่ในแท็ก/หมวดหมู่ใดๆ CompanyHasNoCategory=This third party is not in any tags/categories MemberHasNoCategory=สมาชิกท่านนี้ไม่ได้อยู่ในแท็กใด ๆ / ประเภท ContactHasNoCategory=ติดต่อนี้ไม่ได้อยู่ในแท็กใด ๆ / ประเภท ProjectHasNoCategory=This project is not in any tags/categories ClassifyInCategory=เพิ่มแท็ก / หมวดหมู่ +RemoveCategory=Remove category NotCategorized=โดยไม่ต้องแท็ก / หมวดหมู่ CategoryExistsAtSameLevel=ประเภทนี้มีอยู่แล้วที่มีการอ้างอิงนี้ ContentsVisibleByAllShort=เนื้อหาที่มองเห็นได้โดยทั้งหมด @@ -67,6 +68,7 @@ StockCategoriesShort=Warehouse tags/categories ThisCategoryHasNoItems=This category does not contain any items. CategId=Tag / รหัสหมวดหมู่ ParentCategory=Parent tag/category +ParentCategoryID=ID of parent tag/category ParentCategoryLabel=Label of parent tag/category CatSupList=List of vendors tags/categories CatCusList=List of customers/prospects tags/categories @@ -86,15 +88,18 @@ DeleteFromCat=ลบออกจากแท็ก / หมวดหมู่ ExtraFieldsCategories=คุณลักษณะที่สมบูรณ์ CategoriesSetup=แท็ก / ประเภทการติดตั้ง CategorieRecursiv=การเชื่อมโยงที่มีแท็กแม่ / หมวดหมู่โดยอัตโนมัติ -CategorieRecursivHelp=If option is on, when you add a product into a subcategory, product will also be added into the parent category. +CategorieRecursivHelp=If option is on, when you add an object into a subcategory, the object will also be added into the parent categories. AddProductServiceIntoCategory=เพิ่มสินค้า / บริการดังต่อไปนี้ AddCustomerIntoCategory=Assign category to customer AddSupplierIntoCategory=Assign category to supplier +AssignCategoryTo=Assign category to ShowCategory=แสดงแท็ก / หมวดหมู่ ByDefaultInList=โดยค่าเริ่มต้นในรายการ ChooseCategory=Choose category StocksCategoriesArea=Warehouse Categories +TicketsCategoriesArea=Tickets Categories ActionCommCategoriesArea=Event Categories WebsitePagesCategoriesArea=Page-Container Categories KnowledgemanagementsCategoriesArea=KM article Categories UseOrOperatorForCategories=Use 'OR' operator for categories +AddObjectIntoCategory=Add object into category diff --git a/htdocs/langs/th_TH/modulebuilder.lang b/htdocs/langs/th_TH/modulebuilder.lang index 61b5c939d12..f44d65b3ca0 100644 --- a/htdocs/langs/th_TH/modulebuilder.lang +++ b/htdocs/langs/th_TH/modulebuilder.lang @@ -1,14 +1,19 @@ # Dolibarr language file - Source file is en_US - loan +IdModule= Module id ModuleBuilderDesc=This tool must be used only by experienced users or developers. It provides utilities to build or edit your own module. Documentation for alternative manual development is here. -EnterNameOfModuleDesc=Enter name of the module/application to create with no spaces. Use uppercase to separate words (For example: MyModule, EcommerceForShop, SyncWithMySystem...) -EnterNameOfObjectDesc=Enter name of the object to create with no spaces. Use uppercase to separate words (For example: MyObject, Student, Teacher...). The CRUD class file, but also API file, pages to list/add/edit/delete object and SQL files will be generated. +EnterNameOfModuleDesc=Enter the name of the module/application to create with no spaces. Use uppercase to separate words (For example: MyModule, EcommerceForShop, SyncWithMySystem...) +EnterNameOfObjectDesc=Enter the name of the object to create with no spaces. Use uppercase to separate words (For example: MyObject, Student, Teacher...). The CRUD class file, the pages to list/add/edit/delete the object and the SQL files will be generated. +EnterNameOfDictionaryDesc=Enter the name of the dictionary to create with no spaces. Use uppercase to separate words (For example: MyDico...). The class file, but also the SQL file will be generated. ModuleBuilderDesc2=Path where modules are generated/edited (first directory for external modules defined into %s): %s ModuleBuilderDesc3=Generated/editable modules found: %s ModuleBuilderDesc4=A module is detected as 'editable' when the file %s exists in root of module directory -NewModule=New module +NewModule=โมดูลใหม่ NewObjectInModulebuilder=New object +NewDictionary=New dictionary +ModuleName=Module name ModuleKey=Module key ObjectKey=Object key +DicKey=Dictionary key ModuleInitialized=Module initialized FilesForObjectInitialized=Files for new object '%s' initialized FilesForObjectUpdated=Files for object '%s' updated (.sql files and .class.php file) @@ -45,14 +50,17 @@ PathToModulePackage=Path to zip of module/application package PathToModuleDocumentation=Path to file of module/application documentation (%s) SpaceOrSpecialCharAreNotAllowed=Spaces or special characters are not allowed. FileNotYetGenerated=File not yet generated +GenerateCode=Generate code RegenerateClassAndSql=Force update of .class and .sql files RegenerateMissingFiles=Generate missing files SpecificationFile=File of documentation LanguageFile=File for language ObjectProperties=Object Properties +Property=Propery +PropertyDesc=A property is an attribute that characterizes an object. This attribute has a code, a label and a type with several options. 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. NotNull=Not NULL -NotNullDesc=1=Set database to NOT NULL. -1=Allow null values and force value to NULL if empty ('' or 0). +NotNullDesc=1=Set database to NOT NULL, 0=Allow null values, -1=Allow null values by forcing value to NULL if empty ('' or 0) SearchAll=Used for 'search all' DatabaseIndex=Database index FileAlreadyExists=File %s already exists @@ -78,15 +86,16 @@ IsAMeasure=Is a measure DirScanned=Directory scanned NoTrigger=No trigger NoWidget=No widget -GoToApiExplorer=API explorer +ApiExplorer=API explorer ListOfMenusEntries=List of menu entries ListOfDictionariesEntries=List of dictionaries entries ListOfPermissionsDefined=List of defined permissions SeeExamples=See examples here -EnabledDesc=Condition to have this field active (Examples: 1 or $conf->global->MYMODULE_MYOPTION) -VisibleDesc=Is the field visible ? (Examples: 0=Never visible, 1=Visible on list and create/update/view forms, 2=Visible on list only, 3=Visible on create/update/view form only (not list), 4=Visible on list and update/view form only (not create), 5=Visible on list end view form only (not create, not update).

Using a negative value means field is not shown by default on list but can be selected for viewing).

It can be an expression, for example:
preg_match('/public/', $_SERVER['PHP_SELF'])?0:1
($user->rights->holiday->define_holiday ? 1 : 0) -DisplayOnPdfDesc=Display this field on compatible PDF documents, you can manage position with "Position" field.
Currently, known compatibles PDF models are : eratosthene (order), espadon (ship), sponge (invoices), cyan (propal/quotation), cornas (supplier order)

For document :
0 = not displayed
1 = display
2 = display only if not empty

For document lines :
0 = not displayed
1 = displayed in a column
3 = display in line description column after the description
4 = display in description column after the description only if not empty -DisplayOnPdf=Display on PDF +EnabledDesc=Condition to have this field active.

Examples:
1
isModEnabled('MAIN_MODULE_MYMODULE')
getDolGlobalString('MYMODULE_OPTION')==2 +VisibleDesc=Is the field visible ? (Examples: 0=Never visible, 1=Visible on list and create/update/view forms, 2=Visible on list only, 3=Visible on create/update/view form only (not list), 4=Visible on list and update/view form only (not create), 5=Visible on list end view form only (not create, not update).

Using a negative value means field is not shown by default on list but can be selected for viewing). +ItCanBeAnExpression=It can be an expression. Example:
preg_match('/public/', $_SERVER['PHP_SELF'])?0:1
$user->hasRight('holiday', 'define_holiday')?1:5 +DisplayOnPdfDesc=Display this field on compatible PDF documents, you can manage position with "Position" field.
For document :
0 = not displayed
1 = display
2 = display only if not empty

For document lines :
0 = not displayed
1 = displayed in a column
3 = display in line description column after the description
4 = display in description column after the description only if not empty +DisplayOnPdf=On PDF IsAMeasureDesc=Can the value of field be cumulated to get a total into list? (Examples: 1 or 0) SearchAllDesc=Is the field used to make a search from the quick search tool? (Examples: 1 or 0) SpecDefDesc=Enter here all documentation you want to provide with your module that is not already defined by other tabs. You can use .md or better, the rich .asciidoc syntax. @@ -94,7 +103,7 @@ LanguageDefDesc=Enter in this files, all the key and the translation for each la MenusDefDesc=Define here the menus provided by your module DictionariesDefDesc=Define here the dictionaries provided by your module PermissionsDefDesc=Define here the new permissions provided by your module -MenusDefDescTooltip=The menus provided by your module/application are defined into the array $this->menus into the module descriptor file. You can edit manually this file or use the embedded editor.

Note: Once defined (and module re-activated), menus are also visible into the menu editor available to administrator users on %s. +MenusDefDescTooltip=The menus provided by your module/application are defined into the array $this->menus into the module descriptor file. You can edit manually this file or use the embedded editor.

Note: Once defined (and the module re-activated), the menus are also visible into the menu editor available to administrator users on %s. DictionariesDefDescTooltip=The dictionaries provided by your module/application are defined into the array $this->dictionaries into the module descriptor file. You can edit manually this file or use the embedded editor.

Note: Once defined (and module re-activated), dictionaries are also visible into the setup area to administrator users on %s. PermissionsDefDescTooltip=The permissions provided by your module/application are defined into the array $this->rights into the module descriptor file. You can edit manually this file or use the embedded editor.

Note: Once defined (and module re-activated), permissions are visible into the default permissions setup %s. HooksDefDesc=Define in the module_parts['hooks'] property, in the module descriptor, the context of hooks you want to manage (list of contexts can be found by a search on 'initHooks(' in core code).
Edit the hook file to add code of your hooked functions (hookable functions can be found by a search on 'executeHooks' in core code). @@ -110,7 +119,7 @@ DropTableIfEmpty=(Destroy table if empty) TableDoesNotExists=The table %s does not exists TableDropped=Table %s deleted InitStructureFromExistingTable=Build the structure array string of an existing table -UseAboutPage=Disable the about page +UseAboutPage=Do not generate the About page UseDocFolder=Disable the documentation folder UseSpecificReadme=Use a specific ReadMe ContentOfREADMECustomized=Note: The content of the README.md file has been replaced with the specific value defined into setup of ModuleBuilder. @@ -127,21 +136,40 @@ UseSpecificEditorURL = Use a specific editor URL UseSpecificFamily = Use a specific family UseSpecificAuthor = Use a specific author UseSpecificVersion = Use a specific initial version -IncludeRefGeneration=The reference of object must be generated automatically -IncludeRefGenerationHelp=Check this if you want to include code to manage the generation automatically of the reference -IncludeDocGeneration=I want to generate some documents from the object +IncludeRefGeneration=The reference of this object must be generated automatically by custom numbering rules +IncludeRefGenerationHelp=Check this if you want to include code to manage the generation of the reference automatically using custom numbering rules +IncludeDocGeneration=I want the feature to generate some documents (PDF, ODT) from templates for this object IncludeDocGenerationHelp=If you check this, some code will be generated to add a "Generate document" box on the record. -ShowOnCombobox=Show value into combobox +ShowOnCombobox=Show value into combo boxes KeyForTooltip=Key for tooltip CSSClass=CSS for edit/create form CSSViewClass=CSS for read form CSSListClass=CSS for list NotEditable=Not editable ForeignKey=Foreign key -TypeOfFieldsHelp=Type of fields:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]] ('1' means we add a + button after the combo to create the record, 'filter' can be 'status=1 AND fk_user = __USER_ID AND entity IN (__SHARED_ENTITIES__)' for example) +ForeignKeyDesc=If the value of this field must be guaranted to exists into another table. Enter here a value matching syntax: tablename.parentfieldtocheck +TypeOfFieldsHelp=Example:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]]
'1' means we add a + button after the combo to create the record
'filter' is a sql condition, example: 'status=1 AND fk_user=__USER_ID__ AND entity IN (__SHARED_ENTITIES__)' +TypeOfFieldsHelpIntro=This is the type of the field/attribute. AsciiToHtmlConverter=Ascii to HTML converter AsciiToPdfConverter=Ascii to PDF converter TableNotEmptyDropCanceled=Table not empty. Drop has been canceled. ModuleBuilderNotAllowed=The module builder is available but not allowed to your user. ImportExportProfiles=Import and export profiles -ValidateModBuilderDesc=Put 1 if this field need to be validated with $this->validateField() or 0 if validation required +ValidateModBuilderDesc=Set this to 1 if you want to have the method $this->validateField() of object being called to validate the content of the field during insert or update. Set 0 if there is no validation required. +WarningDatabaseIsNotUpdated=Warning: The database is not updated automatically, you must destroy tables and disable-enable the module to have tables recreated +LinkToParentMenu=Parent menu (fk_xxxxmenu) +ListOfTabsEntries=List of tab entries +TabsDefDesc=Define here the tabs provided by your module +TabsDefDescTooltip=The tabs provided by your module/application are defined into the array $this->tabs into the module descriptor file. You can edit manually this file or use the embedded editor. +BadValueForType=Bad value for type %s +DefinePropertiesFromExistingTable=Define properties from an existing table +DefinePropertiesFromExistingTableDesc=If a table in the database (for the object to create) already exists, you can use it to define the properties of the object. +DefinePropertiesFromExistingTableDesc2=Keep empty if the table does not exist yet. The code generator will use different kinds of fields to build an example of table that you can edit later. +GeneratePermissions=I want to add the rights for this object +GeneratePermissionsHelp=generate default rights for this object +PermissionDeletedSuccesfuly=Permission has been successfully removed +PermissionUpdatedSuccesfuly=Permission has been successfully updated +PermissionAddedSuccesfuly=Permission has been successfully added +MenuDeletedSuccessfuly=Menu has been successfully deleted +MenuAddedSuccessfuly=Menu has been successfully added +MenuUpdatedSuccessfuly=Menu has been successfully updated diff --git a/htdocs/langs/th_TH/productbatch.lang b/htdocs/langs/th_TH/productbatch.lang index 67516596246..c826afa69f3 100644 --- a/htdocs/langs/th_TH/productbatch.lang +++ b/htdocs/langs/th_TH/productbatch.lang @@ -1,45 +1,47 @@ # ProductBATCH language file - Source file is en_US - ProductBATCH -ManageLotSerial=การใช้งานจำนวนมาก / หมายเลขซีเรีย -ProductStatusOnBatch=Yes (lot required) -ProductStatusOnSerial=Yes (unique serial number required) -ProductStatusNotOnBatch=ไม่ (มาก / อนุกรมไม่ได้ใช้) -ProductStatusOnBatchShort=Lot -ProductStatusOnSerialShort=Serial +ManageLotSerial=การใช้งานล๊อต / หมายเลข Serial +ProductStatusOnBatch=ใช่ (ล็อต จำเป็น) +ProductStatusOnSerial=ใช่ (หมายเลขซีเรียล เฉพาะตัว จำเป็น) +ProductStatusNotOnBatch=ไม่ (ล๊อต / Serial ไม่ได้ใช้) +ProductStatusOnBatchShort=ล็อต +ProductStatusOnSerialShort=ซีเรียล ProductStatusNotOnBatchShort=ไม่ -Batch=ล็อต/ลำดับ -atleast1batchfield=กินตามวันที่หรือขายโดยวันที่หรือ Lot / หมายเลข Serial -batch_number=Lot / หมายเลข Serial -BatchNumberShort=จัดสรร / อนุกรม +Batch=ล็อต/Serial +atleast1batchfield=กินตามวันที่หรือขายโดยวันที่หรือ ล๊อต / หมายเลข Serial +batch_number=ล๊อต / หมายเลข Serial +BatchNumberShort=ล๊อต / Serial EatByDate=กินตามวันที่ SellByDate=ขายตามวันที่ -DetailBatchNumber=จัดสรร / รายละเอียดอนุกรม -printBatch=จัดสรร / อนุกรม:% s -printEatby=กินโดย:% s -printSellby=ขายโดย:% s -printQty=จำนวน:% d +DetailBatchNumber=ล็อต / รายละเอียด Serial +printBatch=ล็อต/Serial: %s +printEatby=Eat-โดย: %s +printSellby=ขาย-โดย: %s +printQty=จำนวน: %d +printPlannedWarehouse=ที่เก็บสินค้า: %s AddDispatchBatchLine=เพิ่มบรรทัดสำหรับอายุการเก็บรักษาการฝึกอบรม -WhenProductBatchModuleOnOptionAreForced=When module Lot/Serial is on, automatic stock decrease is forced to 'Decrease real stocks on shipping validation' and automatic increase mode is forced to 'Increase real stocks on manual dispatching into warehouses' and can't be edited. Other options can be defined as you want. -ProductDoesNotUseBatchSerial=ผลิตภัณฑ์นี้ไม่ได้ใช้มาก / หมายเลขซีเรีย -ProductLotSetup=Setup of module lot/serial -ShowCurrentStockOfLot=Show current stock for couple product/lot -ShowLogOfMovementIfLot=Show log of movements for couple product/lot -StockDetailPerBatch=Stock detail per lot -SerialNumberAlreadyInUse=Serial number %s is already used for product %s -TooManyQtyForSerialNumber=You can only have one product %s for serial number %s -ManageLotMask=Custom mask -CustomMasks=Option to define a different numbering mask for each product -BatchLotNumberingModules=Numbering rule for automatic generation of lot number -BatchSerialNumberingModules=Numbering rule for automatic generation of serial number (for products with property 1 unique lot/serial for each product) -QtyToAddAfterBarcodeScan=Qty to %s for each barcode/lot/serial scanned -LifeTime=Life span (in days) -EndOfLife=End of life -ManufacturingDate=Manufacturing date -DestructionDate=Destruction date -FirstUseDate=First use date -QCFrequency=Quality control frequency (in days) -ShowAllLots=Show all lots -HideLots=Hide lots +WhenProductBatchModuleOnOptionAreForced=เมื่อเปิดโมดูล ล๊อต/ซีเรียล การลดสต็อกอัตโนมัติจะถูกบังคับให้ 'ลดสต็อกจริงในการตรวจสอบการจัดส่ง' และโหมดเพิ่มอัตโนมัติจะถูกบังคับให้ 'เพิ่มสต็อกจริงในการจัดส่งด้วยตนเองไปยังคลังสินค้า' และไม่สามารถแก้ไขได้ ตัวเลือกอื่น ๆ สามารถกำหนดได้ตามที่คุณต้องการ +ProductDoesNotUseBatchSerial=ผลิตภัณฑ์นี้ไม่ได้ใช้ล๊อต / หมายเลข Serial +ProductLotSetup=การตั้งค่าโมดูล ล็อต/ซีเรียล +ShowCurrentStockOfLot=แสดงสต็อกปัจจุบันสำหรับสินค้าคู่/ล็อต +ShowLogOfMovementIfLot=แสดงบันทึกความเคลื่อนไหวของคู่สินค้า/ล็อต +StockDetailPerBatch=รายละเอียดสต็อกต่อล็อต +SerialNumberAlreadyInUse=หมายเลขซีเรียล %s นี้ใช้ไปแล้วสำหรับสินค้า %s +TooManyQtyForSerialNumber=คุณสามารถมีสินค้าชิ้นเดียว %s ต่อหมายเลขซีเรียล %s +ManageLotMask=mask ที่กำหนดเอง +CustomMasks=ตัวเลือกในการกำหนดมาสก์หมายเลขที่แตกต่างกันสำหรับแต่ละสินค้า +BatchLotNumberingModules=กฎการกำหนดหมายเลขสำหรับการสร้างหมายเลขล็อตโดยอัตโนมัติ +BatchSerialNumberingModules=กฎการกำหนดหมายเลขสำหรับการสร้างหมายเลขซีเรียลโดยอัตโนมัติ (สำหรับผลิตภัณฑ์ที่มีคุณสมบัติ 1 ล็อต/ซีเรียลที่ไม่ซ้ำกันสำหรับแต่ละผลิตภัณฑ์) +QtyToAddAfterBarcodeScan=จำนวน %s สำหรับการสแกนบาร์โค้ด/ล็อต/ซีเรียลแต่ละครั้ง +LifeTime=อายุขัย (เป็นวัน) +EndOfLife=วันหมดอายุ +ManufacturingDate=วันผลิต +DestructionDate=วันที่ทำลาย +FirstUseDate=วันที่ใช้งานครั้งแรก +QCFrequency=ความถี่ในการควบคุมคุณภาพ (เป็นวัน) +ShowAllLots=แสดงล็อตทั้งหมด +HideLots=ซ่อนล็อต #Traceability - qc status OutOfOrder=Out of order InWorkingOrder=In working order -ToReplace=Replace +ToReplace=แทนที่ +CantMoveNonExistantSerial=ข้อผิดพลาด. คุณขอให้ย้ายระเบียนสำหรับซีเรียลที่ไม่มีอยู่อีกต่อไป คุณอาจใช้ซีเรียลเดียวกันในคลังสินค้าเดียวกันหลายครั้งในการจัดส่งเดียวกัน หรือใช้โดยการจัดส่งอื่น นำการจัดส่งนี้ออกและเตรียมการจัดส่งอีกครั้ง diff --git a/htdocs/langs/th_TH/receiptprinter.lang b/htdocs/langs/th_TH/receiptprinter.lang index eac9b998b14..0dd15850322 100644 --- a/htdocs/langs/th_TH/receiptprinter.lang +++ b/htdocs/langs/th_TH/receiptprinter.lang @@ -7,7 +7,7 @@ TestSentToPrinter=Test Sent To Printer %s ReceiptPrinter=Receipt printers ReceiptPrinterDesc=Setup of receipt printers ReceiptPrinterTemplateDesc=Setup of Templates -ReceiptPrinterTypeDesc=Description of Receipt Printer's type +ReceiptPrinterTypeDesc=Example of possible values for the field "Parameters" according to the type of driver ReceiptPrinterProfileDesc=Description of Receipt Printer's Profile ListPrinters=List of Printers SetupReceiptTemplate=Template Setup @@ -54,7 +54,9 @@ DOL_DOUBLE_WIDTH=Double width size DOL_DEFAULT_HEIGHT_WIDTH=Default height and width size DOL_UNDERLINE=Enable underline DOL_UNDERLINE_DISABLED=Disable underline -DOL_BEEP=Beed sound +DOL_BEEP=Beep sound +DOL_BEEP_ALTERNATIVE=Beep sound (alternative mode) +DOL_PRINT_CURR_DATE=Print current date/time DOL_PRINT_TEXT=Print text DateInvoiceWithTime=Invoice date and time YearInvoice=Invoice year diff --git a/htdocs/langs/th_TH/salaries.lang b/htdocs/langs/th_TH/salaries.lang index d5bcc71051a..b59429ce152 100644 --- a/htdocs/langs/th_TH/salaries.lang +++ b/htdocs/langs/th_TH/salaries.lang @@ -1,26 +1,27 @@ # Dolibarr language file - Source file is en_US - salaries -SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accounting account used for user third parties -SALARIES_ACCOUNTING_ACCOUNT_PAYMENT_Desc=The dedicated accounting account defined on user 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 user accounting account on user is not defined. -SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accounting account by default for wage payments -CREATE_NEW_SALARY_WITHOUT_AUTO_PAYMENT=By default, leave empty the option "Automatically create a total payment" when creating a Salary +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=บัญชี (จากผังบัญชี) ใช้เป็นค่าเริ่มต้นสำหรับบุคคลที่สาม "ผู้ใช้" +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT_Desc=บัญชีเฉพาะที่กำหนดไว้ในบัตรผู้ใช้จะใช้สำหรับบัญชีแยกประเภทย่อยเท่านั้น ค่านี้จะใช้สำหรับบัญชีแยกประเภททั่วไปและเป็นค่าเริ่มต้นของการบัญชีแยกประเภทย่อย หากไม่ได้กำหนดบัญชีผู้ใช้เฉพาะสำหรับผู้ใช้ +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=บัญชีโดยปริยายสำหรับการจ่ายค่าจ้าง +CREATE_NEW_SALARY_WITHOUT_AUTO_PAYMENT=ตามค่าเริ่มต้น ให้เว้นว่างตัวเลือก "สร้างการชำระเงินทั้งหมดโดยอัตโนมัติ" เมื่อสร้างเงินเดือน Salary=เงินเดือน Salaries=เงินเดือน -NewSalary=New salary -AddSalary=Add salary -NewSalaryPayment=New salary card -AddSalaryPayment=Add salary payment +NewSalary=เงินเดือนใหม่ +AddSalary=เพิ่มเงินเดือน +NewSalaryPayment=บัตรเงินเดือนใหม่ +AddSalaryPayment=เพิ่มการจ่ายเงินเดือน SalaryPayment=การชำระเงินเงินเดือน SalariesPayments=การชำระเงินเงินเดือน -SalariesPaymentsOf=Salaries payments of %s +SalariesPaymentsOf=การจ่ายเงินเดือนของ %s ShowSalaryPayment=แสดงการชำระเงินเงินเดือน -THM=Average hourly rate -TJM=Average daily rate +THM=อัตราเฉลี่ยต่อชั่วโมง +TJM=อัตรารายวันเฉลี่ย CurrentSalary=เงินเดือนปัจจุบัน -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 salaries -AllSalaries=All salaries -SalariesStatistics=Salary statistics -SalariesAndPayments=Salaries and payments -ConfirmDeleteSalaryPayment=Do you want to delete this salary payment ? -FillFieldFirst=Fill employee field first +THMDescription=ค่านี้อาจใช้เพื่อคำนวณต้นทุนของเวลาที่ใช้ในโปรเจ็กต์ที่ป้อนโดยผู้ใช้ หากใช้โปรเจ็กต์โมดูล +TJMDescription=ปัจจุบันค่านี้มีไว้เพื่อเป็นข้อมูลเท่านั้นและไม่ได้ใช้สำหรับการคำนวณใดๆ +LastSalaries=เงินเดือน %s ล่าสุด +AllSalaries=เงินเดือนทั้งหมด +SalariesStatistics=สถิติเงินเดือน +SalariesAndPayments=เงินเดือนและการจ่ายเงิน +ConfirmDeleteSalaryPayment=คุณต้องการลบการจ่ายเงินเดือนนี้หรือไม่ ? +FillFieldFirst=กรอกช่องพนักงานก่อน +UpdateAmountWithLastSalary=กำหนดจำนวนเงินด้วยเงินเดือนล่าสุด diff --git a/htdocs/langs/th_TH/users.lang b/htdocs/langs/th_TH/users.lang index 12dd28d1d2a..a04f56ed733 100644 --- a/htdocs/langs/th_TH/users.lang +++ b/htdocs/langs/th_TH/users.lang @@ -8,7 +8,7 @@ EditPassword=แก้ไขรหัสผ่าน SendNewPassword=สร้างรหัสผ่านใหม่และส่งรหัสผ่าน SendNewPasswordLink=Send link to reset password ReinitPassword=สร้างรหัสผ่านใหม่ -PasswordChangedTo=เปลี่ยนรหัสผ่านในการ:% s +PasswordChangedTo=เปลี่ยนรหัสผ่านเป็น: %s SubjectNewPassword=รหัสผ่านใหม่ของคุณ %s GroupRights=สิทธิ์ของกลุ่ม UserRights=สิทธิ์ของผู้ใช้ @@ -44,9 +44,9 @@ ListOfGroups=รายชื่อของกลุ่ม NewGroup=กลุ่มใหม่ CreateGroup=สร้างกลุ่ม RemoveFromGroup=ลบออกจากกลุ่ม -PasswordChangedAndSentTo=เปลี่ยนรหัสผ่านและส่งไปยัง% s +PasswordChangedAndSentTo=เปลี่ยนรหัสผ่านแล้วส่งมาที่ %s. PasswordChangeRequest=Request to change password for %s -PasswordChangeRequestSent=ขอเปลี่ยนรหัสผ่านสำหรับ% s ส่งไปยัง% s +PasswordChangeRequestSent=ขอเปลี่ยนรหัสผ่านสำหรับ %s ส่งไปยัง %s. IfLoginExistPasswordRequestSent=If this login is a valid account (with a valid email), an email to reset password has been sent. IfEmailExistPasswordRequestSent=If this email is a valid account, an email to reset password has been sent. ConfirmPasswordReset=Confirm password reset @@ -70,8 +70,8 @@ LoginAccountDisableInDolibarr=Account disabled in Dolibarr PASSWORDInDolibarr=Password modified in Dolibarr UsePersonalValue=ใช้ค่าส่วนบุคคล ExportDataset_user_1=Users and their properties -DomainUser=โดเมนของผู้ใช้% s -Reactivate=ฟื้นฟู +DomainUser=ผู้ใช้โดเมน %s +Reactivate=เปิดใช้งานอีกครั้ง CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. InternalExternalDesc=An internal user is a user that is part of your company/organization, or is a partner user outside of your organization that may need to see more data than data related to his company (the permission system will define what he can or can't see or do).
An external user is a customer, vendor or other that must view ONLY data related to himself (Creating an external user for a third-party can be done from the contact record of the third-party).

In both cases, you must grant permissions on the features that the user need. PermissionInheritedFromAGroup=ได้รับอนุญาตเพราะรับมาจากหนึ่งในกลุ่มของผู้ใช้ @@ -80,16 +80,16 @@ UserWillBe=Created user will be UserWillBeInternalUser=ผู้ใช้ที่สร้างจะเป็นผู้ใช้งานภายใน (เพราะไม่เชื่อมโยงกับบุคคลที่สามโดยเฉพาะ) UserWillBeExternalUser=ผู้ใช้ที่สร้างจะเป็นผู้ใช้ภายนอก (เพราะเชื่อมโยงกับบุคคลที่สามโดยเฉพาะ) IdPhoneCaller=id โทรโทรศัพท์ -NewUserCreated=% s ผู้ใช้สร้างขึ้น -NewUserPassword=เปลี่ยนรหัสผ่านสำหรับ% s +NewUserCreated=ผู้ใช้ %s สร้างแล้ว +NewUserPassword=เปลี่ยนรหัสผ่านสำหรับ %s NewPasswordValidated=Your new password have been validated and must be used now to login. -EventUserModified=% s ผู้ใช้ปรับเปลี่ยน -UserDisabled=ผู้ใช้% s พิการ -UserEnabled=% s ผู้ใช้เปิดใช้งาน -UserDeleted=ผู้ใช้% s ลบออก -NewGroupCreated=s% กลุ่มที่สร้างขึ้น -GroupModified=กลุ่ม% s การแก้ไข -GroupDeleted=กลุ่ม% s ลบออก +EventUserModified=ผู้ใช้ %s แก้ไขแล้ว +UserDisabled=ผู้ใช้ %s ปิดการใช้งาน +UserEnabled=ผู้ใช้ %s เปิดใช้งาน +UserDeleted=ผู้ใช้ %s ลบออกแล้ว +NewGroupCreated=กลุ่ม %s สร้างแล้ว +GroupModified=กลุ่ม %s แก้ไขแล้ว +GroupDeleted=กลุ่ม %s ลบออกแล้ว ConfirmCreateContact=Are you sure you want to create a Dolibarr account for this contact? ConfirmCreateLogin=Are you sure you want to create a Dolibarr account for this member? ConfirmCreateThirdParty=Are you sure you want to create a third party for this member? @@ -132,4 +132,3 @@ ShowAllPerms=Show all permission rows HideAllPerms=Hide all permission rows UserPublicPageDesc=You can enable a virtual card for this user. An url with the user profile and a barcode will be available to allow anybody with a smartphone to scan it and add your contact to its address book. EnablePublicVirtualCard=Enable the public virtual user card -PublicVirtualCardUrl=Public virtual user card diff --git a/htdocs/langs/th_TH/withdrawals.lang b/htdocs/langs/th_TH/withdrawals.lang index 871ec4eab79..82bff4a4310 100644 --- a/htdocs/langs/th_TH/withdrawals.lang +++ b/htdocs/langs/th_TH/withdrawals.lang @@ -31,16 +31,18 @@ SupplierInvoiceWaitingWithdraw=Vendor invoice waiting for payment by credit tran InvoiceWaitingWithdraw=Invoice waiting for direct debit InvoiceWaitingPaymentByBankTransfer=Invoice waiting for credit transfer AmountToWithdraw=จำนวนเงินที่จะถอนตัว +AmountToTransfer=Amount to transfer NoInvoiceToWithdraw=No invoice open for '%s' is waiting. Go on tab '%s' on invoice card to make a request. -NoSupplierInvoiceToWithdraw=No supplier invoice with open 'Direct credit requests' is waiting. Go on tab '%s' on invoice card to make a request. +NoSupplierInvoiceToWithdraw=No supplier invoice with open '%s' is waiting. Go on tab '%s' on invoice card to make a request. ResponsibleUser=User Responsible WithdrawalsSetup=Direct debit payment setup CreditTransferSetup=Credit transfer setup WithdrawStatistics=Direct debit payment statistics CreditTransferStatistics=Credit transfer statistics -Rejects=เสีย +Rejects=ปฏิเสธ LastWithdrawalReceipt=Latest %s direct debit receipts MakeWithdrawRequest=Make a direct debit payment request +MakeWithdrawRequestStripe=Make a direct debit payment request via Stripe MakeBankTransferOrder=Make a credit transfer request WithdrawRequestsDone=%s direct debit payment requests recorded BankTransferRequestsDone=%s credit transfer requests recorded @@ -99,8 +101,11 @@ CreditDate=เกี่ยวกับบัตรเครดิต WithdrawalFileNotCapable=ไม่สามารถสร้างไฟล์ใบเสร็จรับเงินการถอนเงินสำหรับประเทศ% s ของคุณ (ประเทศของคุณไม่ได้รับการสนับสนุน) ShowWithdraw=Show Direct Debit Order IfInvoiceNeedOnWithdrawPaymentWontBeClosed=However, if invoice has at least one direct debit payment order not yet processed, it won't be set as paid to allow prior withdrawal management. -DoStandingOrdersBeforePayments=This tab allows you to request a direct debit payment order. Once done, go into menu Bank->Payment by direct debit to generate and manage the direct debit order. When direct debit order is closed, payment on invoices will be automatically recorded, and invoices closed if remainder to pay is null. -DoCreditTransferBeforePayments=This tab allows you to request a credit transfer order. Once done, go into menu Bank->Payment by credit transfer to generate and manage the credit transfer order. When credit transfer order is closed, payment on invoices will be automatically recorded, and invoices closed if remainder to pay is null. +DoStandingOrdersBeforePayments=This tab allows you to request a direct debit payment order. Once done, you can go into menu "Bank->Payment by direct debit" to generate and manage a Direct debit order file. +DoStandingOrdersBeforePayments2=You can also send a request directly to a SEPA payment processor like Stripe, ... +DoStandingOrdersBeforePayments3=When direct debit order is closed, payment on invoices will be automatically recorded, and invoices closed if remainder to pay is null. +DoCreditTransferBeforePayments=This tab allows you to request a credit transfer order. Once done, go into menu "Bank->Payment by credit transfer" to generate and manage a Credit transfer order file. +DoCreditTransferBeforePayments3=When credit transfer order is closed, payment on invoices will be automatically recorded, and invoices closed if remainder to pay is null. WithdrawalFile=Debit order file CreditTransferFile=Credit transfer file SetToStatusSent=ตั้งสถานะ "แฟ้มส่ง" @@ -117,7 +122,7 @@ WithdrawRequestErrorNilAmount=Unable to create direct debit request for empty am SepaMandate=SEPA Direct Debit Mandate 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. Your rights regarding the above mandate are explained in a statement that you can obtain from your bank. +SEPALegalText=By signing this mandate form, you authorize (A) %s and its payment service provider 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. Your rights regarding the above mandate are explained in a statement that you can obtain from your bank. CreditorIdentifier=Creditor Identifier CreditorName=Creditor Name SEPAFillForm=(B) Please complete all the fields marked * @@ -136,6 +141,7 @@ SEPAFRST=SEPA FRST ExecutionDate=Execution date CreateForSepa=Create direct debit file ICS=Creditor Identifier - ICS +IDS=Debitor Identifier END_TO_END="EndToEndId" SEPA XML tag - Unique id assigned per transaction USTRD="Unstructured" SEPA XML tag ADDDAYS=Add days to Execution Date @@ -145,7 +151,7 @@ InfoCreditSubject=Payment of direct debit payment order %s by the bank InfoCreditMessage=The direct debit payment order %s has been paid by the bank
Data of payment: %s InfoTransSubject=Transmission of direct debit payment order %s to bank InfoTransMessage=The direct debit payment order %s has been sent to bank by %s %s.

-InfoTransData=จำนวนเงิน:% s
วิธีการ:% s
วันที่:% s +InfoTransData=จำนวนเงิน: %s
วิธีการ: %s
วันที่: %s InfoRejectSubject=Direct debit payment order refused InfoRejectMessage=Hello,

the direct debit payment order of invoice %s related to the company %s, with an amount of %s has been refused by the bank.

--
%s ModeWarning=ตัวเลือกสำหรับโหมดจริงไม่ได้ตั้งค่าเราหยุดหลังจากจำลองนี้ @@ -154,3 +160,4 @@ ErrorICSmissing=Missing ICS in Bank account %s TotalAmountOfdirectDebitOrderDiffersFromSumOfLines=Total amount of direct debit order differs from sum of lines WarningSomeDirectDebitOrdersAlreadyExists=Warning: There is already some pending Direct Debit orders (%s) requested for an amount of %s WarningSomeCreditTransferAlreadyExists=Warning: There is already some pending Credit Transfer (%s) requested for an amount of %s +UsedFor=Used for %s diff --git a/htdocs/langs/tr_TR/admin.lang b/htdocs/langs/tr_TR/admin.lang index d8eedca3e74..3ee1784bb01 100644 --- a/htdocs/langs/tr_TR/admin.lang +++ b/htdocs/langs/tr_TR/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Onay kutuları ExtrafieldCheckBoxFromList=Tablodan onay kutuları ExtrafieldLink=Bir nesneye bağlantı ComputedFormula=Hesaplanmış alan -ComputedFormulaDesc=Dinamik hesaplanmış bir değer elde etmek için nesnenin diğer özelliklerini veya herhangi bir PHP kodlamasını kullanarak buraya bir formül girebilirsiniz. "?" Dahil herhangi bir PHP uyumlu formülü kullanabilirsiniz. koşul operatörü ve aşağıdaki genel nesne: $db, $conf, $langs, $mysoc, $user, $object.
UYARI: $object öğesinin yalnızca bazı özellikleri mevcut olabilir. Yüklenmemiş bir özelliğe ihtiyacınız varsa, ikinci örnekte olduğu gibi kendinize nesneyi formülünüze getirin.
Hesaplanan bir alan kullanmak, arayüzden kendinize herhangi bir değer giremeyeceğiniz anlamına gelir. Ayrıca, bir sözdizimi hatası varsa, formül hiçbir şey döndürmeyebilir.

Formül örneği:
$object-> id <10 ? round($object->id/2, 2): ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Nesneyi yeniden yükleme örneği
(($reloadedobj = new Societe($ db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital/5: '-1'

Nesnenin ve onun üst nesnesinin yüklenmesini zorlamak için başka bir formül örneği:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project ) > 0))? $secondloadedobj->ref: 'Ana proje bulunamadı' +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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Hesaplanan alanı sakla ComputedpersistentDesc=Hesaplanan fazladan alanlar veritabanında saklanacaktır, ancak değer yalnızca bu alanın nesnesi değiştirildiğinde yeniden hesaplanacaktır. Hesaplanan alan diğer nesnelere veya genel verilere bağlıysa, bu değer yanlış olabilir !! ExtrafieldParamHelpPassword=Bu alanı boş bırakmak, bu değerin şifreleme olmadan saklanacağı anlamına gelir (alan yalnızca ekranda yıldızla gizlenmelidir).
Parolayı veritabanına kaydetmek için varsayılan şifreleme kuralını kullanmak için 'otomatik'i ayarlayın (daha sonra okunan değer, hash olacaktır yalnızca, orijinal değeri almanın yolu yoktur) @@ -645,6 +645,8 @@ Module2300Name=Planlı İşler Module2300Desc=Zamanlanmış iş yönetimi (alias cron veya chrono tablosu) Module2400Name=Etkinlik/Gündem Module2400Desc=Etkinlikleri takip edin. İzleme amacıyla otomatik etkinlikleri günlüğe geçirin veya manuel etkinlikleri ya da toplantıları kaydedin. Bu, iyi bir Müşteri veya Tedarikçi İlişkileri Yönetimi için temel modüldür. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=DMS/ECM Module2500Desc=Belge Yönetim Sistemi/Elektronik İçerik Yönetimi. Oluşturulan veya saklanan belgelerinizin otomatik organizasyonu. İhtiyacınız olduğunda paylaşın. Module2600Name=API / Web services (SOAP server) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind dönüştürme becerileri Module3200Name=Değiştirilemez Arşivler Module3200Desc=Değiştirilemeyen bir iş etkinlikleri günlüğü etkinleştirin. Etkinlikler gerçek zamanlı olarak arşivlenir. Günlük, dışa aktarılabilen zincirlenmiş etkinliklerin salt okunur bir tablosudur. Bu modül bazı ülkeler için zorunlu olabilir. +Module3300Name=Module Builder +Module3200Desc=Değiştirilemeyen bir iş etkinlikleri günlüğü etkinleştirin. Etkinlikler gerçek zamanlı olarak arşivlenir. Günlük, dışa aktarılabilen zincirlenmiş etkinliklerin salt okunur bir tablosudur. Bu modül bazı ülkeler için zorunlu olabilir. Module3400Name=Sosyal Ağlar Module3400Desc=Sosyal Ağ alanlarını Carilere ve adreslere (skype, twitter, facebook, ...) etkinleştirin. Module4000Name=IK @@ -700,8 +704,10 @@ Module62000Name=Uluslararası Ticaret Terimleri Module62000Desc=Uluslararası Ticaret Terimleri'ni yönetmek için özellikler ekleyin Module63000Name=Kaynaklar Module63000Desc=Etkinliklere tahsis etmek için kaynakları (yazıcılar, arabalar, odalar, ...) yönetin +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Resepsiyonlar -Permission11=Müşteri faturalarını oku +Permission11=Read customer invoices (and payments) Permission12=Müşteri faturaları oluştur/düzenle Permission13=Müşteri faturalarını geçersiz kılın Permission14=Müşteri faturalarını doğrula @@ -943,7 +949,7 @@ Permission1190=Tedarikçi siparişlerini onayla (ikinci onay) Permission1191=Tedarikçi siparişlerini ve özelliklerini dışa aktarın Permission1201=Bir dışa aktarma sonucu al Permission1202=Dışa aktarma Oluştur/Değiştir -Permission1231=Tedarikçi faturalarını oku +Permission1231=Read vendor invoices (and payments) Permission1232=Tedarikçi faturaları oluştur/değiştir Permission1233=Tedarikçi faturalarını doğrula Permission1234=Tedarikçi faturalarını sil @@ -1230,7 +1236,7 @@ SetupDescription4= %s -> %s

Bu yazılım birçok mo SetupDescription5=Ayarlar menüsündeki diğer girişler isteğe bağlı parametreleri yönetmenizi sağlar. SetupDescriptionLink=%s - %s SetupDescription3b=Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Denetlenen güvenlik olayları NoSecurityEventsAreAduited=Hiçbir güvenlik olayı denetlenmez. Bunları %s menüsünden etkinleştirebilirsiniz Audit=Güvenlik Etkinlikleri @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive=Bu dosyadaki tetikleyiciler %s modülü etkin GeneratedPasswordDesc=Otomatik olarak oluşturulan şifreler için kullanılacak yöntemi seçin. DictionaryDesc=Bütün referans verisini ekleyin. Değerlerinizi varsayılana ekleyebilirsiniz. ConstDesc=Bu sayfa, diğer sayfalarda bulunmayan parametreleri düzenlemenizi (üzerine yazmanızı) sağlar. Bunlar çoğunlukla sadece geliştiriciler/gelişmiş sorun giderme için ayrılmış parametrelerdir. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=Burada güvenlik ile ilgili diğer tüm parametreler tanımlanır. LimitsSetup=Sınırlar/Doğruluk kurulumu LimitsDesc=Dolibarr tarafından kullanılan limitleri, hassasiyetleri ve iyileştirmeleri buradan tanımlayabilirsiniz @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Etkinlik türleri kullanın (Ayarlar -> Sözlükler -> Gü AGENDA_USE_EVENT_TYPE_DEFAULT=Olay oluşturma formundaki olay türü için varsayılan değeri otomatik olarak ayarlayın AGENDA_DEFAULT_FILTER_TYPE=Ajanda görünümünün arama filtresinde bu tür etkinlikleri otomatik olarak ayarlayın AGENDA_DEFAULT_FILTER_STATUS=Ajanda görünümünün arama filtresindeki etkinlikler için bu durumu otomatik olarak ayarla +AGENDA_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Ajanda menüsünü seçerken varsayılan olarak hangi görünümü açmak istiyorsunuz? AGENDA_REMINDER_BROWSER=Etkinlik hatırlatıcıyı kullanıcının tarayıcısında etkinleştirin (Hatırlatma tarihine ulaşıldığında, tarayıcı tarafından bir açılır pencere gösterilir. Her kullanıcı, bu tür bildirimleri kendi tarayıcı bildirim ayarlarından devre dışı bırakabilir). AGENDA_REMINDER_BROWSER_SOUND=Sesli bildirimi etkinleştir @@ -2129,6 +2139,7 @@ CodeLastResult=En son sonuç kodu NbOfEmailsInInbox=Kaynak dizindeki e-postaların sayısı LoadThirdPartyFromName=%s üzerinde cari aramasını yükle (yalnızca yükle) LoadThirdPartyFromNameOrCreate=%s üzerinde cari aramasını yükle (bulunamazsa oluşturun) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Dolibarr'dan gönderilen ilk e-postayla başlatılan bir görüşmeden gelen mesaj WithoutDolTrackingID=Dolibarr'dan GÖNDERİLMEYEN ilk e-posta ile başlatılan bir görüşmeden gelen mesaj @@ -2355,3 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/uk_UA/admin.lang b/htdocs/langs/uk_UA/admin.lang index 83d8a8232e9..a314769195a 100644 --- a/htdocs/langs/uk_UA/admin.lang +++ b/htdocs/langs/uk_UA/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Прапорці ExtrafieldCheckBoxFromList=Прапорці з таблиці ExtrafieldLink=Посилання на об'єкт ComputedFormula=Обчислюване поле -ComputedFormulaDesc=Ви можете ввести сюди формулу, що використовує інші значення об'єктів або будь-який PHP код для отримання динамічно обчислюваного поля. Можна використовувати будь-які PHP формули,в тому числі й перевірки з оператором "?", використовувати глобальні об'єкти: $db, $conf, $langs, $mysoc, $user, $object.
УВАГА: Доступні не всі поля $object. Якщо необхідні Вам поля не завантажені, Просто заберіть об'єкт у формулу, як показано в наступному зразку.
Використовуючи обчислювані поля, не вводьте нічого самостійно у інтерфейсі форми. Також, якщо присутні синтаксичні помилки, формула не поверне нічого.

Зразок формули:
$object->id < 10 ? round($object->id / 2, 2): ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Зразок перевантаження об'єкта:
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

Інший зразок формули для прискореного завантаження обєкта та його контейнера:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Зберегти обчислюване поле ComputedpersistentDesc=Обчислювальні поля будуть збережені в базі, тому значення буде перераховане лише тоді, коли об'єкт з цим полем буде змінено. Якщо обчислюване поле залежить від інших об'єктів, або глобальних даних - це значення може бути не правильним! ExtrafieldParamHelpPassword=Залишивши це поле порожнім, це значення буде зберігатися без шифрування (поле буде приховане лише зірочками на екрані).
Виберіть значення "Авто", щоб використовувати стандартне правило для шифрування паролів у базі даних (в такому випадку буде зчитуватися лише хеш, без можливості відновити оригінальне значення) @@ -645,6 +645,8 @@ Module2300Name=Заплановані роботи Module2300Desc=Керування запланованими завданнями (псевдонім cron або chrono table) Module2400Name=Події/Порядок денний Module2400Desc=Відстежуйте події. Записуйте автоматичні події з метою відстеження або записуйте події чи зустрічі вручну. Це основний модуль для хорошого управління відносинами з клієнтами або постачальниками. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=DMS / ECM Module2500Desc=Система документообігу / Управління електронним вмістом. Автоматична організація створених або збережених документів. Поділіться ними, коли вам потрібно. Module2600Name=API / Web services (SOAP server) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=Можливості перетворення GeoIP Maxmind Module3200Name=Незмінні архіви Module3200Desc=Увімкнути незмінний журнал ділових подій. Події архівуються в режимі реального часу. Журнал – це доступна лише для читання таблиця зв’язаних подій, які можна експортувати. Цей модуль може бути обов’язковим для деяких країн. +Module3300Name=Module Builder +Module3200Desc=Увімкнути незмінний журнал ділових подій. Події архівуються в режимі реального часу. Журнал – це доступна лише для читання таблиця зв’язаних подій, які можна експортувати. Цей модуль може бути обов’язковим для деяких країн. Module3400Name=Соціальні мережі Module3400Desc=Увімкнути поля соціальних мереж для третіх сторін і адрес (skype, twitter, facebook, ...). Module4000Name=HRM @@ -700,8 +704,10 @@ Module62000Name=Інкотермс Module62000Desc=Додайте функції для керування Інкотермс Module63000Name=Ресурси Module63000Desc=Керуйте ресурсами (принтерами, автомобілями, кімнатами, ...) для розподілу подій +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Receptions -Permission11=Читайте рахунки-фактури клієнтів +Permission11=Read customer invoices (and payments) Permission12=Створення/змінювання рахунків-фактур клієнтів Permission13=Визнати недійсними рахунки клієнта Permission14=Перевірка рахунків-фактур клієнтів @@ -943,7 +949,7 @@ Permission1190=Затвердити (друге затвердження) зам Permission1191=Експортувати замовлення постачальника та їх атрибути Permission1201=Отримати результат експорту Permission1202=Створити/змінити експорт -Permission1231=Читайте рахунки постачальників +Permission1231=Read vendor invoices (and payments) Permission1232=Створення/змінювання рахунків-фактур постачальників Permission1233=Перевірка рахунків постачальників Permission1234=Видалити рахунки-фактури постачальників @@ -1230,7 +1236,7 @@ SetupDescription4= %s -> %s

Це програмне SetupDescription5=Інші пункти меню налаштування керують додатковими параметрами. SetupDescriptionLink= %s - %s SetupDescription3b=Основні параметри, які використовуються для налаштування типової поведінки вашої програми (наприклад, для функцій, пов’язаних із країною). -SetupDescription4b=Це програмне забезпечення являє собою набір багатьох модулів/програм. Модулі, що відповідають вашим потребам, повинні бути увімкнені та налаштовані. Після активації цих модулів з’являться пункти меню. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Події безпеки, які перевіряються NoSecurityEventsAreAduited=Жодні події безпеки не перевіряються. Ви можете ввімкнути їх з меню %s Audit=Події безпеки @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive=Тригери в цьому файлі активн GeneratedPasswordDesc=Виберіть метод, який буде використовуватися для автоматично згенерованих паролів. DictionaryDesc=Вставте всі довідкові дані. Ви можете додати свої значення до стандартних. ConstDesc=Ця сторінка дозволяє редагувати (замінювати) параметри, недоступні на інших сторінках. Це переважно зарезервовані параметри лише для розробників/розширених методів усунення несправностей. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=Усі інші параметри, пов’язані з безпекою, визначені тут. LimitsSetup=Обмеження/Точність налаштування LimitsDesc=Ви можете визначити межі, точність та оптимізацію, які використовує Dolibarr тут @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Використовувати типи подій (кер AGENDA_USE_EVENT_TYPE_DEFAULT=Автоматично встановлювати це значення за замовчуванням для типу події у формі створення події AGENDA_DEFAULT_FILTER_TYPE=Автоматично встановлювати цей тип події у фільтрі пошуку перегляду порядку денного AGENDA_DEFAULT_FILTER_STATUS=Автоматично встановлювати цей статус для подій у фільтрі пошуку перегляду порядку денного +AGENDA_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Який перегляд ви хочете відкрити за замовчуванням, вибравши меню Порядок денний AGENDA_REMINDER_BROWSER=Увімкнути нагадування про подію у браузері користувача (Коли досягнуто дати нагадування, браузер відображає спливаюче вікно. Кожен користувач може вимкнути такі сповіщення в налаштуваннях сповіщень браузера). AGENDA_REMINDER_BROWSER_SOUND=Увімкнути звукові сповіщення @@ -2129,6 +2139,7 @@ CodeLastResult=Останній код результату NbOfEmailsInInbox=Кількість листів у вихідному каталозі LoadThirdPartyFromName=Завантажити пошук третьої сторони на %s (лише завантаження) LoadThirdPartyFromNameOrCreate=Завантажити пошук третьої сторони на %s (створити, якщо не знайдено) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Збережіть вкладені файли в об’єктні документи, якщо посилання на об’єкт знайдено в темі електронної пошти. WithDolTrackingID=Повідомлення з бесіди, ініційованої першим електронним листом, надісланим з Dolibarr WithoutDolTrackingID=Повідомлення з розмови, ініційованої першим електронним листом, НЕ надісланим з Dolibarr @@ -2355,3 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/uk_UA/install.lang b/htdocs/langs/uk_UA/install.lang index de4b97ac2a8..e92e6153c28 100644 --- a/htdocs/langs/uk_UA/install.lang +++ b/htdocs/langs/uk_UA/install.lang @@ -51,7 +51,6 @@ DatabaseName=Ім'я бази даних DatabasePrefix=Префікс таблиці бази даних DatabasePrefixDescription=Префікс таблиці бази даних. Якщо порожній, за замовчуванням llx_. AdminLogin=Обліковий запис користувача для власника бази даних Dolibarr. -PasswordAgain=Повторно введіть підтвердження пароля AdminPassword=Пароль для власника бази даних Dolibarr. CreateDatabase=Створити базу даних CreateUser=Створіть обліковий запис користувача або надайте дозвіл облікового запису користувача на базу даних Dolibarr @@ -89,7 +88,7 @@ LoginAlreadyExists=Вже існує DolibarrAdminLogin=Вхід адміністратора Dolibarr AdminLoginAlreadyExists=Обліковий запис адміністратора Dolibarr ' %s ' вже існує. Поверніться, якщо хочете створити ще один. FailedToCreateAdminLogin=Не вдалося створити обліковий запис адміністратора Dolibarr. -WarningRemoveInstallDir=Попередження, з міркувань безпеки після завершення встановлення або оновлення вам слід додати файл під назвою install.lock до каталогу документів Dolibarr, щоб знову запобігти випадковому/зловмисному використанню інструментів встановлення. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=Недоступно в цьому PHP ChoosedMigrateScript=Виберіть скрипт міграції DataMigration=Міграція бази даних (дані) @@ -209,7 +208,12 @@ HideNotAvailableOptions=Приховати недоступні параметр ErrorFoundDuringMigration=Під час процесу міграції було повідомлено про помилки, тому наступний крок недоступний. Щоб ігнорувати помилки, ви можете клацнути тут , але програма або деякі функції можуть не працювати належним чином, доки помилки не будуть усунені. YouTryInstallDisabledByDirLock=Програма намагалася самостійно оновити, але сторінки встановлення/оновлення було вимкнено з міркувань безпеки (каталог перейменовано із суфіксом .lock).
YouTryInstallDisabledByFileLock=Програма намагалася самостійно оновити, але сторінки встановлення/оновлення були вимкнені з міркувань безпеки (через наявність файлу блокування install.lock у каталозі документів dolibarr).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=Натисніть тут, щоб перейти до вашої програми ClickOnLinkOrRemoveManualy=Якщо оновлення триває, зачекайте. Якщо ні, натисніть на наступне посилання. Якщо ви завжди бачите цю саму сторінку, ви повинні видалити/перейменувати файл install.lock у каталозі документів. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=Завантажено FunctionTest=Функціональний тест +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/uk_UA/members.lang b/htdocs/langs/uk_UA/members.lang index 463bf7b3269..c5a7c6d198e 100644 --- a/htdocs/langs/uk_UA/members.lang +++ b/htdocs/langs/uk_UA/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=Статистика внесків NbOfSubscriptions=Кількість внесків AmountOfSubscriptions=Сума, зібрана з внесків TurnoverOrBudget=Оборот (для компанії) або бюджет (для фонду) -DefaultAmount=Сума внеску за замовчуванням +DefaultAmount=Default amount of contribution (used only if no amount is defined at member type level) +MinimumAmount=Minimum amount (used only when contribution amount is free) CanEditAmount=Subscription amount is free CanEditAmountDetail=Visitor can choose/edit amount of its contribution regardless of the member type AmountIsLowerToMinimumNotice=sur un dû total de %s diff --git a/htdocs/langs/ur_PK/admin.lang b/htdocs/langs/ur_PK/admin.lang index bb8a5d8626e..781f79ff416 100644 --- a/htdocs/langs/ur_PK/admin.lang +++ b/htdocs/langs/ur_PK/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=چیک باکسز ExtrafieldCheckBoxFromList=میز سے چیک باکسز ExtrafieldLink=کسی چیز سے لنک کریں۔ ComputedFormula=شمار شدہ فیلڈ -ComputedFormulaDesc=ڈائنامک کمپیوٹیڈ ویلیو حاصل کرنے کے لیے آپ یہاں آبجیکٹ کی دیگر خصوصیات یا کسی بھی پی ایچ پی کوڈنگ کا استعمال کرتے ہوئے ایک فارمولا درج کر سکتے ہیں۔ آپ کسی بھی پی ایچ پی کے موافق فارمولے استعمال کر سکتے ہیں بشمول "؟" حالت آپریٹر، اور مندرجہ ذیل عالمی آبجیکٹ: $db، $conf، $langs، $mysoc، $user، $object ۔
انتباہ : $object کی صرف کچھ خصوصیات دستیاب ہوسکتی ہیں۔ اگر آپ کو ایسی پراپرٹیز کی ضرورت ہے جو لوڈ نہیں ہوئی ہے، تو بس اپنے آپ کو اپنے فارمولے میں آبجیکٹ لائیں جیسا کہ دوسری مثال میں ہے۔
کمپیوٹیڈ فیلڈ کا استعمال کرنے کا مطلب ہے کہ آپ انٹرفیس سے اپنی کوئی قدر درج نہیں کر سکتے۔ اس کے علاوہ، اگر نحو کی خرابی ہے تو، فارمولہ کچھ بھی نہیں لوٹا سکتا ہے۔

فارمولے کی مثال:
$object->id < 10 ? round($object-> id / 2, 2): ($object->id + 2 * $user->, oct (subject)) )

آبجیکٹ کو دوبارہ لوڈ کرنے کی مثال >rowid: $object->id)) > 0))؟ $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

آبجیکٹ اور اس کے بنیادی آبجیکٹ کو زبردستی لوڈ کرنے کے فارمولے کی دوسری مثال ((a031b$dskf=f$d9b0$bload )) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'پیرنٹ پروجیکٹ نہیں ملا' +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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=حسابی فیلڈ اسٹور کریں۔ ComputedpersistentDesc=کمپیوٹ شدہ اضافی فیلڈز کو ڈیٹا بیس میں اسٹور کیا جائے گا، تاہم، اس فیلڈ کی آبجیکٹ کو تبدیل کرنے پر ہی قدر کی دوبارہ گنتی کی جائے گی۔ اگر کمپیوٹنگ فیلڈ دیگر اشیاء یا عالمی ڈیٹا پر منحصر ہے تو یہ قدر غلط ہو سکتی ہے!! ExtrafieldParamHelpPassword=اس فیلڈ کو خالی چھوڑنے کا مطلب ہے کہ اس قدر کو بغیر خفیہ کاری کے محفوظ کیا جائے گا (فیلڈ صرف اسکرین پر ستارے کے ساتھ چھپا ہوا ہونا چاہیے)۔
ڈیٹا بیس میں پاس ورڈ کو محفوظ کرنے کے لیے ڈیفالٹ انکرپشن رول کو استعمال کرنے کے لیے 'آٹو' سیٹ کریں (پھر ویلیو ریڈ صرف ہیش ہوگی، اصل قدر کو بازیافت کرنے کا کوئی طریقہ نہیں) @@ -645,6 +645,8 @@ Module2300Name=طے شدہ ملازمتیں۔ Module2300Desc=طے شدہ ملازمتوں کا انتظام (عرف کرون یا کرونو ٹیبل) Module2400Name=تقریبات/ایجنڈا Module2400Desc=واقعات کو ٹریک کریں۔ ٹریکنگ کے مقاصد کے لیے خودکار ایونٹس کو لاگ کریں یا دستی ایونٹس یا میٹنگز کو ریکارڈ کریں۔ یہ اچھے کسٹمر یا وینڈر ریلیشن شپ مینجمنٹ کے لیے پرنسپل ماڈیول ہے۔ +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=ڈی ایم ایس / ای سی ایم Module2500Desc=دستاویز مینجمنٹ سسٹم / الیکٹرانک مواد کا انتظام۔ آپ کے تیار کردہ یا ذخیرہ شدہ دستاویزات کی خودکار تنظیم۔ جب آپ کو ضرورت ہو تو ان کا اشتراک کریں۔ Module2600Name=API / Web services (SOAP server) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP میکس مائنڈ تبادلوں کی صلاحیتیں۔ Module3200Name=ناقابل تبدیلی آرکائیوز Module3200Desc=کاروباری واقعات کا ایک غیر تبدیل شدہ لاگ کو فعال کریں۔ واقعات کو حقیقی وقت میں محفوظ کیا جاتا ہے۔ لاگ ان زنجیروں سے جڑے واقعات کی صرف پڑھنے کے لیے جدول ہے جسے برآمد کیا جا سکتا ہے۔ یہ ماڈیول کچھ ممالک کے لیے لازمی ہو سکتا ہے۔ +Module3300Name=Module Builder +Module3200Desc=کاروباری واقعات کا ایک غیر تبدیل شدہ لاگ کو فعال کریں۔ واقعات کو حقیقی وقت میں محفوظ کیا جاتا ہے۔ لاگ ان زنجیروں سے جڑے واقعات کی صرف پڑھنے کے لیے جدول ہے جسے برآمد کیا جا سکتا ہے۔ یہ ماڈیول کچھ ممالک کے لیے لازمی ہو سکتا ہے۔ Module3400Name=سوشل نیٹ ورک Module3400Desc=سوشل نیٹ ورکس فیلڈز کو تھرڈ پارٹیز اور ایڈریسز (سکائپ، ٹویٹر، فیس بک، ...) میں فعال کریں۔ Module4000Name=HRM @@ -700,8 +704,10 @@ Module62000Name=انکوٹرمز Module62000Desc=Incoterms کا نظم کرنے کے لیے خصوصیات شامل کریں۔ Module63000Name=حوالہ جات Module63000Desc=ایونٹس کو مختص کرنے کے لیے وسائل (پرنٹرز، کاریں، کمرے، ...) کا نظم کریں۔ +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Receptions -Permission11=کسٹمر کی رسیدیں پڑھیں +Permission11=Read customer invoices (and payments) Permission12=کسٹمر انوائس بنائیں/ترمیم کریں۔ Permission13=گاہک کی رسیدیں باطل کریں۔ Permission14=کسٹمر انوائس کی توثیق کریں۔ @@ -943,7 +949,7 @@ Permission1190=(دوسری منظوری) خریداری کے آرڈر کو من Permission1191=سپلائر کے احکامات اور ان کی صفات برآمد کریں۔ Permission1201=برآمد کا نتیجہ حاصل کریں۔ Permission1202=ایکسپورٹ بنائیں/ترمیم کریں۔ -Permission1231=وینڈر کی رسیدیں پڑھیں +Permission1231=Read vendor invoices (and payments) Permission1232=وینڈر انوائسز بنائیں/ترمیم کریں۔ Permission1233=وینڈر انوائس کی توثیق کریں۔ Permission1234=وینڈر کی رسیدیں حذف کریں۔ @@ -1230,7 +1236,7 @@ SetupDescription4= %s -> %s

یہ سافٹ ویئر SetupDescription5=دیگر سیٹ اپ مینو اندراجات اختیاری پیرامیٹرز کا نظم کرتی ہیں۔ SetupDescriptionLink= %s - %s SetupDescription3b=بنیادی پیرامیٹرز جو آپ کی درخواست کے پہلے سے طے شدہ رویے کو حسب ضرورت بنانے کے لیے استعمال کیے جاتے ہیں (مثلاً ملک سے متعلقہ خصوصیات کے لیے)۔ -SetupDescription4b=یہ سافٹ ویئر بہت سے ماڈیولز/ایپلی کیشنز کا مجموعہ ہے۔ آپ کی ضروریات سے متعلق ماڈیولز کو فعال اور ترتیب دیا جانا چاہیے۔ ان ماڈیولز کے ایکٹیویشن کے ساتھ مینو اندراجات ظاہر ہوں گے۔ +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=سیکیورٹی کے واقعات جن کا آڈٹ کیا جاتا ہے۔ NoSecurityEventsAreAduited=سیکیورٹی کے کوئی واقعات کا آڈٹ نہیں کیا جاتا ہے۔ آپ انہیں مینو %s سے فعال کر سکتے ہیں۔ Audit=سیکیورٹی کے واقعات @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive=اس فائل میں محرکات فعال ہیں ک GeneratedPasswordDesc=خود کار طریقے سے تیار کردہ پاس ورڈز کے لیے استعمال کرنے کا طریقہ منتخب کریں۔ DictionaryDesc=تمام حوالہ ڈیٹا داخل کریں۔ آپ اپنی اقدار کو ڈیفالٹ میں شامل کر سکتے ہیں۔ ConstDesc=یہ صفحہ آپ کو پیرامیٹرز میں ترمیم (اوور رائڈ) کرنے کی اجازت دیتا ہے جو دوسرے صفحات میں دستیاب نہیں ہیں۔ یہ زیادہ تر صرف ڈویلپرز / ایڈوانس ٹربل شوٹنگ کے لیے مخصوص پیرامیٹرز ہیں۔ +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=سیکورٹی سے متعلق دیگر تمام پیرامیٹرز یہاں بیان کیے گئے ہیں۔ LimitsSetup=حدود/صحت سے متعلق سیٹ اپ LimitsDesc=آپ یہاں Dolibarr کی طرف سے استعمال کردہ حدود، درستگی اور اصلاح کی وضاحت کر سکتے ہیں۔ @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=واقعات کی اقسام کا استعمال کریں AGENDA_USE_EVENT_TYPE_DEFAULT=ایونٹ تخلیق فارم میں ایونٹ کی قسم کے لیے اس ڈیفالٹ ویلیو کو خودکار طور پر سیٹ کریں۔ AGENDA_DEFAULT_FILTER_TYPE=ایجنڈا ویو کے سرچ فلٹر میں اس قسم کے ایونٹ کو خودکار طور پر سیٹ کریں۔ AGENDA_DEFAULT_FILTER_STATUS=ایجنڈا ویو کے سرچ فلٹر میں ایونٹس کے لیے خودکار طور پر یہ اسٹیٹس سیٹ کریں۔ +AGENDA_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=مینو ایجنڈا کو منتخب کرتے وقت آپ ڈیفالٹ کے ذریعے کون سا منظر کھولنا چاہتے ہیں۔ AGENDA_REMINDER_BROWSER=صارف کے براؤزر
پر ایونٹ کی یاد دہانی کو فعال کریں AGENDA_REMINDER_BROWSER_SOUND=آواز کی اطلاع کو فعال کریں۔ @@ -2129,6 +2139,7 @@ CodeLastResult=تازہ ترین نتیجہ کوڈ NbOfEmailsInInbox=سورس ڈائرکٹری میں ای میلز کی تعداد LoadThirdPartyFromName=%s پر تیسرے فریق کی تلاش کو لوڈ کریں (صرف لوڈ) LoadThirdPartyFromNameOrCreate=%s پر تیسرے فریق کی تلاش کو لوڈ کریں (اگر نہیں ملا تو بنائیں) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Dolibarr سے بھیجے گئے پہلے ای میل کے ذریعے شروع کی گئی گفتگو کا پیغام WithoutDolTrackingID=Dolibarr سے نہیں بھیجے گئے پہلے ای میل کے ذریعے شروع کی گئی گفتگو کا پیغام @@ -2355,3 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/ur_PK/install.lang b/htdocs/langs/ur_PK/install.lang index 167e05d0c94..bb93fadd3bf 100644 --- a/htdocs/langs/ur_PK/install.lang +++ b/htdocs/langs/ur_PK/install.lang @@ -51,7 +51,6 @@ DatabaseName=ڈیٹا بیس کا نام DatabasePrefix=ڈیٹا بیس ٹیبل کا سابقہ DatabasePrefixDescription=ڈیٹا بیس ٹیبل کا سابقہ۔ اگر خالی ہے تو، llx_ پر ڈیفالٹ۔ AdminLogin=Dolibarr ڈیٹا بیس کے مالک کے لیے صارف کا اکاؤنٹ۔ -PasswordAgain=پاس ورڈ کی تصدیق کو دوبارہ ٹائپ کریں۔ AdminPassword=Dolibarr ڈیٹا بیس کے مالک کے لیے پاس ورڈ۔ CreateDatabase=ڈیٹا بیس بنائیں CreateUser=صارف اکاؤنٹ بنائیں یا Dolibarr ڈیٹا بیس پر صارف اکاؤنٹ کی اجازت دیں۔ @@ -89,7 +88,7 @@ LoginAlreadyExists=پہلے سے موجود ہے DolibarrAdminLogin=Dolibarr ایڈمن لاگ ان AdminLoginAlreadyExists=Dolibarr ایڈمنسٹریٹر اکاؤنٹ ' %s ' پہلے سے موجود ہے۔ اگر آپ کوئی اور بنانا چاہتے ہیں تو واپس جائیں۔ FailedToCreateAdminLogin=Dolibarr ایڈمنسٹریٹر اکاؤنٹ بنانے میں ناکام۔ -WarningRemoveInstallDir=تنبیہ، حفاظتی وجوہات کی بناء پر، ایک بار انسٹال یا اپ گریڈ مکمل ہونے کے بعد، آپ کو ایک فائل install.lock کو Dolibarr دستاویز ڈائرکٹری میں شامل کرنا چاہئے تاکہ انسٹال ٹولز کے حادثاتی/بد نیتی پر مبنی استعمال کو دوبارہ روکا جا سکے۔ +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=اس پی ایچ پی میں دستیاب نہیں ہے۔ ChoosedMigrateScript=منتقلی اسکرپٹ کا انتخاب کریں۔ DataMigration=ڈیٹا بیس کی منتقلی (ڈیٹا) @@ -209,7 +208,12 @@ HideNotAvailableOptions=غیر دستیاب اختیارات چھپائیں۔ ErrorFoundDuringMigration=نقل مکانی کے عمل کے دوران خرابیوں کی اطلاع دی گئی تھی لہذا اگلا مرحلہ دستیاب نہیں ہے۔ غلطیوں کو نظر انداز کرنے کے لیے، آپ یہاں کلک کر سکتے ہیں ، لیکن ہو سکتا ہے ایپلیکیشن یا کچھ فیچرز درست طریقے سے کام نہ کریں جب تک کہ غلطیاں حل نہ ہو جائیں۔ YouTryInstallDisabledByDirLock=ایپلیکیشن نے خود اپ گریڈ کرنے کی کوشش کی، لیکن انسٹال/اپ گریڈ پیجز کو سیکیورٹی کے لیے غیر فعال کر دیا گیا ہے (ڈائریکٹری کا نام .lock لاحقہ سے تبدیل کر دیا گیا ہے)۔
YouTryInstallDisabledByFileLock=ایپلیکیشن نے خود اپ گریڈ کرنے کی کوشش کی، لیکن انسٹال/اپ گریڈ پیجز کو سیکیورٹی کے لیے غیر فعال کر دیا گیا ہے (ڈولیبر دستاویزات کی ڈائرکٹری میں ایک لاک فائل install.lock کی موجودگی سے)۔
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=اپنی درخواست پر جانے کے لیے یہاں کلک کریں۔ ClickOnLinkOrRemoveManualy=اگر اپ گریڈ جاری ہے تو براہ کرم انتظار کریں۔ اگر نہیں تو درج ذیل لنک پر کلک کریں۔ اگر آپ ہمیشہ یہی صفحہ دیکھتے ہیں، تو آپ کو دستاویزات کی ڈائرکٹری میں install.lock فائل کو ہٹانا/اس کا نام تبدیل کرنا ہوگا۔ +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=بھری ہوئی FunctionTest=فنکشن ٹیسٹ +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/ur_PK/members.lang b/htdocs/langs/ur_PK/members.lang index 415d5f0e577..5b628af773c 100644 --- a/htdocs/langs/ur_PK/members.lang +++ b/htdocs/langs/ur_PK/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=شراکت کے اعدادوشمار NbOfSubscriptions=تعاون کی تعداد AmountOfSubscriptions=عطیات سے جمع کی گئی رقم TurnoverOrBudget=ٹرن اوور (کمپنی کے لیے) یا بجٹ (فاؤنڈیشن کے لیے) -DefaultAmount=شراکت کی طے شدہ رقم +DefaultAmount=Default amount of contribution (used only if no amount is defined at member type level) +MinimumAmount=Minimum amount (used only when contribution amount is free) CanEditAmount=Subscription amount is free CanEditAmountDetail=Visitor can choose/edit amount of its contribution regardless of the member type AmountIsLowerToMinimumNotice=sur un dû total de %s diff --git a/htdocs/langs/uz_UZ/admin.lang b/htdocs/langs/uz_UZ/admin.lang index de6320aef64..27f5d38652d 100644 --- a/htdocs/langs/uz_UZ/admin.lang +++ b/htdocs/langs/uz_UZ/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Belgilash katakchalari ExtrafieldCheckBoxFromList=Jadvaldagi katakchalar ExtrafieldLink=Ob'ektga havola ComputedFormula=Hisoblangan maydon -ComputedFormulaDesc=Siz bu erda ob'ektning boshqa xususiyatlaridan foydalangan holda formulani yoki har qanday PHP kodlashni dinamik hisoblash qiymatini olish uchun kiritishingiz mumkin. Siz har qanday PHP-ga mos formulalardan foydalanishingiz mumkin, "?" shart operatori va quyidagi global ob'ekt: $ db, $ conf, $ langs, $ mysoc, $ user, $ object .
OGOHLANTIRISH : $ ob'ektining faqat ba'zi xususiyatlari mavjud bo'lishi mumkin. Agar sizga yuklanmagan xususiyatlar kerak bo'lsa, faqat ikkinchi misolda bo'lgani kabi o'zingizning formulangizga o'zingizning ob'ektingizni kiriting.
Hisoblangan maydondan foydalanish o'zingizga interfeysdan hech qanday qiymat kiritib bo'lmasligingizni anglatadi. Bundan tashqari, agar sintaksis xatosi bo'lsa, formuladan hech narsa qaytmasligi mumkin.

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

Ob'ektni qayta yuklash uchun misol
(($ reloadedobj = new Societe ($ db))) && ($ reloadedobj-> fetchNoCompute ($ obj-> id? $ obj-> id: $ obj > rowid: $ object-> id))> 0))? $ reloadedobj-> array_options ['options_extrafieldkey'] * $ reloadedobj-> capital / 5: '-1'

Ob'ektni va uning asosiy ob'ektini majburlash uchun boshqa formulaga misol:
(($ Task yangi = )) && ($ reloadedobj-> fetchNoCompute ($ object-> id)> 0) && ($ secondloadedobj = new Project ($ db)) && ($ secondloadedobj-> fetchNoCompute ($ reloadedobj-> fk_project)> 0))? $ secondloadedobj-> ref: 'Asosiy loyiha topilmadi' +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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Hisoblangan maydonni saqlash ComputedpersistentDesc=Hisoblangan qo'shimcha maydonlar ma'lumotlar bazasida saqlanadi, ammo qiymat faqat ushbu maydon ob'ekti o'zgartirilganda qayta hisoblanadi. Agar hisoblangan maydon boshqa ob'ektlarga yoki global ma'lumotlarga bog'liq bo'lsa, bu qiymat noto'g'ri bo'lishi mumkin !! ExtrafieldParamHelpPassword=Ushbu maydonni bo'sh qoldirish bu qiymat shifrlashsiz saqlanishini anglatadi (maydon faqat ekrandagi yulduz bilan yashirilgan bo'lishi kerak).
parolni ma'lumotlar bazasiga saqlash uchun standart shifrlash qoidasidan foydalanish uchun "avtomatik" ni o'rnating (u holda o'qilgan qiymat faqat xash bo'ladi, asl qiymatini olishning imkoni yo'q) @@ -645,6 +645,8 @@ Module2300Name=Rejalashtirilgan ish joylari Module2300Desc=Rejalashtirilgan ishlarni boshqarish (taxallusli cron yoki xron jadval) Module2400Name=Tadbirlar / kun tartibi Module2400Desc=Voqealarni kuzatib borish. Kuzatish maqsadida avtomatik tadbirlarni ro'yxatdan o'tkazing yoki qo'lda sodir bo'lgan voqealar yoki uchrashuvlarni yozib oling. Bu yaxshi mijozlar yoki sotuvchilar bilan munosabatlarni boshqarish uchun asosiy moduldir. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=DMS / ECM Module2500Desc=Hujjatlarni boshqarish tizimi / elektron tarkibni boshqarish. Yaratilgan yoki saqlanadigan hujjatlaringizni avtomatik ravishda tashkil etish. Agar kerak bo'lsa, ularni baham ko'ring. Module2600Name=API / Web services (SOAP server) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind konversiyalari imkoniyatlari Module3200Name=O'zgarmas arxivlar Module3200Desc=O'zgarmas ishbilarmonlik voqealari jurnalini yoqing. Voqealar real vaqtda arxivlanadi. Jurnal eksport qilinishi mumkin bo'lgan zanjirli voqealar uchun faqat o'qish uchun mo'ljallangan jadvaldir. Ushbu modul ba'zi mamlakatlar uchun majburiy bo'lishi mumkin. +Module3300Name=Module Builder +Module3200Desc=O'zgarmas ishbilarmonlik voqealari jurnalini yoqing. Voqealar real vaqtda arxivlanadi. Jurnal eksport qilinishi mumkin bo'lgan zanjirli voqealar uchun faqat o'qish uchun mo'ljallangan jadvaldir. Ushbu modul ba'zi mamlakatlar uchun majburiy bo'lishi mumkin. Module3400Name=Ijtimoiy tarmoqlar Module3400Desc=Ijtimoiy tarmoqlarni uchinchi shaxslarga va manzillarga (skype, twitter, facebook, ...) qo'shish. Module4000Name=HRM @@ -700,8 +704,10 @@ Module62000Name=Inkoermalar Module62000Desc=Incoterms-ni boshqarish uchun funktsiyalarni qo'shing Module63000Name=Resurslar Module63000Desc=Tadbirlarga ajratish uchun resurslarni (printerlar, mashinalar, xonalar, ...) boshqaring +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Receptions -Permission11=Mijozlarning hisob-fakturalarini o'qing +Permission11=Read customer invoices (and payments) Permission12=Mijozlarning hisob-kitoblarini yaratish / o'zgartirish Permission13=Mijozlarning hisob-kitoblarini bekor qilish Permission14=Xaridorlarning hisob-fakturalarini tasdiqlang @@ -943,7 +949,7 @@ Permission1190=Sotib olish buyurtmalarini tasdiqlash (ikkinchi tasdiqlash) Permission1191=Eksport etkazib beruvchilarning buyurtmalari va ularning atributlari Permission1201=Eksport natijasini oling Permission1202=Eksportni yaratish / o'zgartirish -Permission1231=Sotuvchi fakturalarini o'qing +Permission1231=Read vendor invoices (and payments) Permission1232=Sotuvchi hisob-fakturalarini yaratish / o'zgartirish Permission1233=Sotuvchi hisob-fakturalarini tasdiqlash Permission1234=Sotuvchi hisob-fakturalarini o'chirib tashlang @@ -1230,7 +1236,7 @@ SetupDescription4= %s -> %s

Ushbu dastur ko'plab mo SetupDescription5=Boshqa O'rnatish menyusi yozuvlari ixtiyoriy parametrlarni boshqaradi. SetupDescriptionLink= %s - %s SetupDescription3b=Ilovangizning odatiy xatti-harakatlarini sozlash uchun ishlatiladigan asosiy parametrlar (masalan, mamlakat bilan bog'liq xususiyatlar uchun). -SetupDescription4b=Ushbu dastur ko'plab modullar/ilovalar to'plamidir. Sizning ehtiyojlaringiz bilan bog'liq modullarni yoqish va sozlash kerak. Ushbu modullarni faollashtirish bilan menyu yozuvlari paydo bo'ladi. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Tekshiriladigan xavfsizlik hodisalari NoSecurityEventsAreAduited=Hech qanday xavfsizlik hodisalari tekshirilmaydi. Siz ularni %s menyusidan faollashtirishingiz mumkin Audit=Xavfsizlik tadbirlari @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive= %s moduli yoqilganligi sababli ushbu faylda GeneratedPasswordDesc=Avtomatik ravishda yaratilgan parollar uchun ishlatiladigan usulni tanlang. DictionaryDesc=Barcha mos yozuvlar ma'lumotlarini joylashtiring. Siz o'zingizning qadriyatlarni sukut bo'yicha qo'shishingiz mumkin. ConstDesc=Ushbu sahifa boshqa sahifalarda mavjud bo'lmagan parametrlarni tahrirlash (bekor qilish) imkonini beradi. Ular asosan ishlab chiquvchilar uchun ajratilgan parametrlardir / faqat rivojlangan muammolarni bartaraf etish. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=Xavfsizlik bilan bog'liq barcha boshqa parametrlar bu erda aniqlangan. LimitsSetup=Cheklovlar / aniqlik sozlamalari LimitsDesc=Dolibarr tomonidan qo'llaniladigan limitlar, aniqliklar va optimallashtirishlarni bu erda belgilashingiz mumkin @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Voqealar turlaridan foydalaning (O'rnatish menyusi -> Lug' AGENDA_USE_EVENT_TYPE_DEFAULT=Voqeani yaratish shaklida voqea turi uchun ushbu standart qiymatni avtomatik ravishda sozlash AGENDA_DEFAULT_FILTER_TYPE=Ushbu turdagi tadbirlarni kun tartibi ko'rinishidagi qidiruv filtrida avtomatik ravishda o'rnating AGENDA_DEFAULT_FILTER_STATUS=Ushbu holatni kun tartibi ko'rinishidagi qidiruv filtridagi voqealar uchun avtomatik ravishda o'rnating +AGENDA_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Kun tartibi menyusini tanlashda qaysi ko'rinishni sukut bo'yicha ochishni xohlaysiz AGENDA_REMINDER_BROWSER= foydalanuvchi brauzerida voqea eslatmasini yoqish AGENDA_REMINDER_BROWSER_SOUND=Ovozli bildirishnomani yoqish @@ -2129,6 +2139,7 @@ CodeLastResult=Oxirgi natija kodi NbOfEmailsInInbox=Manba katalogidagi elektron pochta xabarlari soni LoadThirdPartyFromName=%s-da qidiruvni uchinchi tomonga yuklang (faqat yuklash uchun) LoadThirdPartyFromNameOrCreate=%s-da qidiruvni uchinchi tomonga yuklash (agar topilmasa yaratish) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Agar elektron pochta mavzusida ob'ektning refi topilsa, biriktirilgan fayllarni ob'ekt hujjatlariga saqlang. WithDolTrackingID=Dolibarr-dan yuborilgan birinchi elektron pochta orqali boshlangan suhbatdan xabar WithoutDolTrackingID=Dolibarr-dan birinchi elektron pochta orqali yuborilgan suhbatdan xabar @@ -2355,3 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/uz_UZ/install.lang b/htdocs/langs/uz_UZ/install.lang index acc7e24720e..1a3a0f12097 100644 --- a/htdocs/langs/uz_UZ/install.lang +++ b/htdocs/langs/uz_UZ/install.lang @@ -51,7 +51,6 @@ DatabaseName=Ma'lumotlar bazasi nomi DatabasePrefix=Ma'lumotlar bazasi jadvali prefiksi DatabasePrefixDescription=Ma'lumotlar bazasi jadvali prefiksi. Bo'sh bo'lsa, sukut bo'yicha llx_. AdminLogin=Dolibarr ma'lumotlar bazasi egasi uchun foydalanuvchi qayd yozuvi. -PasswordAgain=Parolni tasdiqlashni qayta kiriting AdminPassword=Dolibarr ma'lumotlar bazasi egasi uchun parol. CreateDatabase=Ma'lumotlar bazasini yaratish CreateUser=Dolibarr ma'lumotlar bazasida foydalanuvchi hisobini yarating yoki foydalanuvchi hisobiga ruxsat bering @@ -89,7 +88,7 @@ LoginAlreadyExists=Allaqachon mavjud DolibarrAdminLogin=Dolibarr administratori bilan kirish AdminLoginAlreadyExists=Dolibarr administrator hisobi ' %s ' allaqachon mavjud. Agar boshqasini yaratmoqchi bo'lsangiz, orqaga qayting. FailedToCreateAdminLogin=Dolibarr administratori hisobini yaratib bo'lmadi. -WarningRemoveInstallDir=Diqqat, xavfsizlik sababli, o'rnatish yoki yangilash tugallangandan so'ng, o'rnatish vositalarining tasodifiy / zararli ishlatilishining oldini olish uchun Dolibarr hujjatlar katalogiga install.lock deb nomlangan faylni qo'shishingiz kerak. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=Ushbu PHP-da mavjud emas ChoosedMigrateScript=Ko'chirish skriptini tanlang DataMigration=Ma'lumotlar bazasining ko'chishi (ma'lumotlar) @@ -209,7 +208,12 @@ HideNotAvailableOptions=Mavjud bo'lmagan variantlarni yashirish ErrorFoundDuringMigration=Migratsiya jarayonida xato (lar) haqida xabar berilgan, shuning uchun keyingi qadam mavjud emas. Xatolarni e'tiborsiz qoldirish uchun siz tugmachasini bosishingiz mumkin, ammo xatolar echilmaguncha dastur yoki ba'zi funktsiyalar to'g'ri ishlamasligi mumkin. YouTryInstallDisabledByDirLock=Ilova o'z-o'zini yangilashga harakat qildi, lekin xavfsizlik / o'rnatish uchun sahifalar o'chirildi (katalog nomi .lock qo'shimchasi bilan o'zgartirildi).
YouTryInstallDisabledByFileLock=Ilova o'zini o'zi yangilashga harakat qildi, lekin xavfsizlik / o'rnatish uchun sahifalar o'chirilgan (dolibarr hujjatlar katalogida install.lock blokirovka fayli mavjudligi sababli).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=Arizangizga o'tish uchun shu erni bosing ClickOnLinkOrRemoveManualy=Agar yangilanish davom etayotgan bo'lsa, iltimos, kuting. Agar yo'q bo'lsa, quyidagi havolani bosing. Agar siz doimo shu sahifani ko'rsangiz, hujjatlar katalogidagi install.lock faylini olib tashlashingiz yoki nomini o'zgartirishingiz kerak. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=Yuklandi FunctionTest=Funktsiya sinovi +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/uz_UZ/members.lang b/htdocs/langs/uz_UZ/members.lang index 396468d86f9..79cd90d9140 100644 --- a/htdocs/langs/uz_UZ/members.lang +++ b/htdocs/langs/uz_UZ/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=Hisob -kitoblar statistikasi NbOfSubscriptions=Hissalar soni AmountOfSubscriptions=Hisob -kitoblardan yig'ilgan mablag ' TurnoverOrBudget=Tovar aylanmasi (kompaniya uchun) yoki byudjet (fond uchun) -DefaultAmount=Standart badal miqdori +DefaultAmount=Default amount of contribution (used only if no amount is defined at member type level) +MinimumAmount=Minimum amount (used only when contribution amount is free) CanEditAmount=Subscription amount is free CanEditAmountDetail=Visitor can choose/edit amount of its contribution regardless of the member type AmountIsLowerToMinimumNotice=sur un dû total de %s diff --git a/htdocs/langs/vi_VN/admin.lang b/htdocs/langs/vi_VN/admin.lang index dcc5d6937eb..b3cf7176d1d 100644 --- a/htdocs/langs/vi_VN/admin.lang +++ b/htdocs/langs/vi_VN/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=Hộp kiểm ExtrafieldCheckBoxFromList=Hộp đánh dấu từ bảng ExtrafieldLink=Liên kết với một đối tượng ComputedFormula=Trường tính toán -ComputedFormulaDesc=Bạn có thể nhập vào đây một công thức bằng cách sử dụng các thuộc tính khác của đối tượng hoặc bất kỳ mã hóa PHP nào để có được giá trị tính toán động. Bạn có thể sử dụng bất kỳ công thức tương thích PHP nào bao gồm cả "?" toán tử điều kiện và đối tượng toàn cầu sau: $db, $conf, $langs, $ mysoc, $user, $object.
CẢNH BÁO: Chỉ một số thuộc tính của $object có thể có sẵn. Nếu bạn cần một thuộc tính không được tải, chỉ cần tìm nạp chính đối tượng vào công thức của bạn như trong ví dụ thứ hai.
Sử dụng trường được tính toán có nghĩa là bạn không thể nhập bất kỳ giá trị nào từ giao diện. Ngoài ra, nếu có lỗi cú pháp, công thức có thể không trả về gì.

Ví dụ về công thức:
$object->id <10? round($object-> id / 2, 2): ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Ví dụ để tải lại đối tượng
(($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'

Ví dụ khác về công thức để buộc tải đối tượng và đối tượng mẹ của nó:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetch ($object-> id)> 0) && ($secondloadedobj = new Project ($db)) && ($secondloadedobj->fetch($reloadedobj-> fk_project)> 0))? $secondloadedobj-> ref: 'Không tìm thấy dự án mẹ' +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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Lưu trữ trường tính toán ComputedpersistentDesc=Các trường bổ sung được tính toán sẽ được lưu trữ trong cơ sở dữ liệu, tuy nhiên, giá trị sẽ chỉ được tính toán lại khi đối tượng của trường này bị thay đổi. Nếu trường được tính toán phụ thuộc vào các đối tượng khác hoặc dữ liệu toàn cầu, giá trị này có thể sai !! ExtrafieldParamHelpPassword=Để trống trường này có nghĩa là giá trị này sẽ được lưu trữ mà không cần mã hóa (trường phải được ẩn với dấu sao trên màn hình).
Đặt 'tự động' để sử dụng quy tắc mã hóa mặc định để lưu mật khẩu vào cơ sở dữ liệu (khi đó giá trị đọc sẽ chỉ là hàm băm, không có cách nào để lấy giá trị gốc) @@ -645,6 +645,8 @@ Module2300Name=Việc theo lịch trình Module2300Desc=Quản lý công việc theo lịch trình (bí danh cron hoặc bảng chrono) Module2400Name=Sự kiện / Chương trình nghị sự Module2400Desc=Theo dấu sự kiện. Đăng nhập các sự kiện tự động cho mục đích theo dõi hoặc ghi lại thủ công các sự kiện hoặc cuộc họp. Đây là mô-đun chính tốt cho Quản lý quan hệ khách hàng hoặc nhà cung cấp. +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=DMS / ECM Module2500Desc=Hệ thống quản lý tài liệu / Quản lý nội dung điện tử. Tự động tổ chức các tài liệu được tạo hoặc lưu trữ của bạn. Chia sẻ chúng khi bạn cần. Module2600Name=API / Web services (SOAP server) @@ -660,6 +662,8 @@ Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind conversions capabilities Module3200Name=Lưu trữ không thể thay đổi Module3200Desc=Cho phép một bản ghi không thể thay đổi của các sự kiện kinh doanh. Các sự kiện được lưu trữ trong thời gian thực. Nhật ký là một bảng chỉ đọc các sự kiện được xâu chuỗi có thể được xuất dữ liệu. Mô-đun này có thể là bắt buộc đối với một số quốc gia. +Module3300Name=Module Builder +Module3200Desc=Cho phép một bản ghi không thể thay đổi của các sự kiện kinh doanh. Các sự kiện được lưu trữ trong thời gian thực. Nhật ký là một bảng chỉ đọc các sự kiện được xâu chuỗi có thể được xuất dữ liệu. Mô-đun này có thể là bắt buộc đối với một số quốc gia. Module3400Name=Mạng xã hội Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...). Module4000Name=Nhân sự @@ -700,8 +704,10 @@ Module62000Name=Incoterms Module62000Desc=Thêm các tính năng để quản lý Incoterms Module63000Name=Tài nguyên Module63000Desc=Quản lý tài nguyên (máy in, ô tô, phòng, ...) để phân bổ cho các sự kiện +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=Tiếp nhận -Permission11=Xem hóa đơn khách hàng +Permission11=Read customer invoices (and payments) Permission12=Tạo/chỉnh sửa hóa đơn khách hàng Permission13=Invalidate customer invoices Permission14=Xác nhận hoá đơn khách hàng @@ -943,7 +949,7 @@ Permission1190=Phê duyệt (phê duyệt thứ hai) đơn đặt hàng mua Permission1191=Export supplier orders and their attributes Permission1201=Nhận kết quả của xuất dữ liệu Permission1202=Tạo/chỉnh sửa đổi xuất dữ liệu -Permission1231=Xem hóa đơn nhà cung cấp +Permission1231=Read vendor invoices (and payments) Permission1232=Tạo / sửa đổi hóa đơn nhà cung cấp Permission1233=Xác nhận hóa đơn nhà cung cấp Permission1234=Xóa hóa đơn nhà cung cấp @@ -1230,7 +1236,7 @@ SetupDescription4=%s -> %s
Phần mềm này là một b SetupDescription5=Các menu thiết lập khác quản lý các tham số tùy chọn. SetupDescriptionLink=%s - %s SetupDescription3b=Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=Security events that are audited NoSecurityEventsAreAduited=No security events are audited. You can enable them from menu %s Audit=Security events @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive=Triggers in this file are active as module %s GeneratedPasswordDesc=Chọn phương thức được sử dụng cho tự động tạo mật khẩu. DictionaryDesc=Chèn vào tất cả giá trị tham khảo. Bạn có thể thêm vào giá trị mặc định ConstDesc=Trang này cho phép bạn chỉnh sửa (ghi đè) các tham số không có sẵn trong các trang khác. Trong đó hầu hết là các tham số dành riêng cho nhà phát triển/nâng cao chỉ để khắc phục sự cố. +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=Tất cả các thông số liên quan đến bảo mật khác được xác định ở đây. LimitsSetup=Cài đặt Giới hạn và độ chính xác LimitsDesc=Bạn có thể xác định giới hạn, giới hạn và tối ưu hóa được sử dụng bởi Dolibarr tại đây @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=Sử dụng các loại sự kiện (được quản lý t AGENDA_USE_EVENT_TYPE_DEFAULT=Tự động đặt giá trị mặc định này cho loại sự kiện trong biểu mẫu tạo sự kiện AGENDA_DEFAULT_FILTER_TYPE=Tự động đặt loại sự kiện này trong bộ lọc tìm kiếm của chế độ xem chương trình nghị sự AGENDA_DEFAULT_FILTER_STATUS=Tự động đặt trạng thái này cho các sự kiện trong bộ lọc tìm kiếm của chế độ xem chương trình nghị sự +AGENDA_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=Which view do you want to open by default when selecting menu Agenda AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (When remind date is reached, a popup is shown by the browser. Each user can disable such notifications from its browser notification setup). AGENDA_REMINDER_BROWSER_SOUND=Bật thông báo âm thanh @@ -2129,6 +2139,7 @@ CodeLastResult=Mã kết quả mới nhất NbOfEmailsInInbox=Số lượng email trong thư mục nguồn LoadThirdPartyFromName=Tải tìm kiếm bên thứ ba trên %s (chỉ tải) LoadThirdPartyFromNameOrCreate=Tải tìm kiếm bên thứ ba trên %s (tạo nếu không tìm thấy) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. WithDolTrackingID=Message from a conversation initiated by a first email sent from Dolibarr WithoutDolTrackingID=Message from a conversation initiated by a first email NOT sent from Dolibarr @@ -2355,3 +2366,9 @@ AllowExternalDownload=Allow external download (without login, using a shared lin DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/vi_VN/install.lang b/htdocs/langs/vi_VN/install.lang index 33bf62bdb76..4b83b2f9693 100644 --- a/htdocs/langs/vi_VN/install.lang +++ b/htdocs/langs/vi_VN/install.lang @@ -51,7 +51,6 @@ DatabaseName=Tên cơ sở dữ liệu DatabasePrefix=Tiền tố bảng cơ sở dữ liệu DatabasePrefixDescription=Tiền tố bảng cơ sở dữ liệu. Nếu trống, mặc định là llx_. AdminLogin=Tài khoản người dùng cho chủ sở hữu cơ sở dữ liệu Dolibarr. -PasswordAgain=Nhập lại xác nhận mật khẩu AdminPassword=Mật khẩu cho chủ sở hữu cơ sở dữ liệu Dolibarr. CreateDatabase=Tạo cơ sở dữ liệu CreateUser=Tạo tài khoản người dùng hoặc cấp quyền tài khoản người dùng trên cơ sở dữ liệu Dolibarr @@ -89,7 +88,7 @@ LoginAlreadyExists=Đã tồn tại DolibarrAdminLogin=Dolibarr quản trị đăng nhập AdminLoginAlreadyExists=Tài khoản quản trị viên Dolibarr '%s' đã tồn tại. Quay trở lại nếu bạn muốn tạo một cái khác. FailedToCreateAdminLogin=Không thể tạo tài khoản quản trị viên Dolibarr. -WarningRemoveInstallDir=Cảnh báo, vì lý do bảo mật, khi quá trình cài đặt hoặc nâng cấp hoàn tất, bạn nên thêm một tệp có tên install.lock vào thư mục tài liệu Dolibarr để ngăn chặn việc sử dụng lại các công cụ cài đặt vô tình / độc hại. +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=Không có sẵn trong PHP này ChoosedMigrateScript=Chọn kịch bản di cư DataMigration=Di chuyển cơ sở dữ liệu (dữ liệu) @@ -209,7 +208,12 @@ HideNotAvailableOptions=Ẩn các tùy chọn không khả dụng ErrorFoundDuringMigration=(Các) lỗi đã được báo cáo trong quá trình di chuyển nên bước tiếp theo không khả dụng. Để bỏ qua lỗi, bạn có thể nhấp vào đây , nhưng ứng dụng hoặc một số tính năng có thể không hoạt động chính xác cho đến khi lỗi được giải quyết. YouTryInstallDisabledByDirLock=Ứng dụng đã cố gắng tự nâng cấp, nhưng các trang cài đặt / nâng cấp đã bị vô hiệu hóa để bảo mật (thư mục được đổi tên với hậu tố .lock).
YouTryInstallDisabledByFileLock=Ứng dụng đã cố gắng tự nâng cấp, nhưng các trang cài đặt / nâng cấp đã bị vô hiệu hóa để bảo mật (bởi sự tồn tại của tệp khóa install.lock trong thư mục tài liệu dolibarr).
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=Nhấn vào đây để đi đến ứng dụng của bạn ClickOnLinkOrRemoveManualy=If an upgrade is in progress, please wait. If not, click on the following link. If you always see this same page, you must remove/rename the file install.lock in the documents directory. +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=Đã tải FunctionTest=Thử nghiệm chức năng +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories +MigrationContractLineRank=Migrate Contract Line to use Rank (and enable Reorder) diff --git a/htdocs/langs/zh_CN/admin.lang b/htdocs/langs/zh_CN/admin.lang index 957f4dab7ef..4196012278c 100644 --- a/htdocs/langs/zh_CN/admin.lang +++ b/htdocs/langs/zh_CN/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=复选框 ExtrafieldCheckBoxFromList=表格中的复选框 ExtrafieldLink=链接到对象 ComputedFormula=计算出的字段 -ComputedFormulaDesc=您可以在此处使用对象的其他属性或任何 PHP 编码输入公式,以获取动态计算值。您可以使用任何与 PHP 兼容的公式,包括“?”条件运算符和以下全局对象: $db, $conf, $langs, $mysoc, $user, $object
警告 : 只有 $object 的某些属性可用。如果您需要未加载的属性,只需将对象放入您的公式中,就像在第二个示例中一样。
使用计算域意味着您不能从界面输入任何值。此外,如果存在语法错误,公式可能不会返回任何内容。

公式示例:
$object->id < 10 ? round($object-> id / 2, 2): ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2 )

重新加载对象的示例
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj- >rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

其他强制加载对象及其父对象的公式示例:
(($reloadedobj = new Task($db )) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: '未找到父项目' +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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=存储计算出的域 ComputedpersistentDesc=计算出的额外字段将存储在数据库中,但是,只有在更改该字段的对象时才会重新计算该值。如果计算域依赖于其他对象或全局数据,这个值可能是错误的!! ExtrafieldParamHelpPassword=将此字段留空意味着该值将在不加密的情况下存储(字段必须仅在屏幕上用星号隐藏)。
设置“auto”以使用默认加密规则将密码保存到数据库中(之后读取的值将只是哈希值,无法检索原始值) @@ -645,6 +645,8 @@ Module2300Name=计划任务 Module2300Desc=计划任务管理(cron 或 chrono table) Module2400Name=事件/日程 Module2400Desc=跟踪项目。记录自动事件以进行跟踪或记录手动事件或会议。这是良好的客户或供应商关系管理的主要模块。 +Module2430Name=Booking Calendar System +Module2430Desc=Provide an online calendar to allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=DMS / ECM Module2500Desc=文件管理系统/电子内容管理。自动组织生成或存储的文档。在需要时分享。 Module2600Name=API / 网络服务 (SOAP 服务器) @@ -660,6 +662,8 @@ Module2900Name=Maxmind的GeoIP全球IP地址数据库 Module2900Desc=Maxmind的GeoIP数据库的转换能力 Module3200Name=不可更改的档案 Module3200Desc=启用不可更改的商业活动日志。事件被实时存档。日志是只读的可以导出的链式事件表。对于某些国家/地区,此模块可能是强制性的。 +Module3300Name=Module Builder +Module3200Desc=启用不可更改的商业活动日志。事件被实时存档。日志是只读的可以导出的链式事件表。对于某些国家/地区,此模块可能是强制性的。 Module3400Name=社交网络 Module3400Desc=启用第三方和地址的社交网络字段(skype、twitter、facebook、...)。 Module4000Name=人力资源管理 @@ -700,8 +704,10 @@ Module62000Name=国际贸易术语 Module62000Desc=添加功能来管理国际贸易术语 Module63000Name=资源 Module63000Desc=管理用于分配给活动的资源(打印机、汽车、房间等) +Module66000Name=Enable OAuth2 authentication +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=收货 -Permission11=查看客户发票 +Permission11=Read customer invoices (and payments) Permission12=创建/变更发票 Permission13=作废客户发票 Permission14=确认客户发票 @@ -943,7 +949,7 @@ Permission1190=审批(二次审批)采购订单 Permission1191=导出供应商订单及其属性 Permission1201=获得导出结果 Permission1202=创建/修改导出信息 -Permission1231=查看供应商发票 +Permission1231=Read vendor invoices (and payments) Permission1232=创建/修改供应商发票 Permission1233=验证供应商发票 Permission1234=删除供应商发票 @@ -1230,7 +1236,7 @@ SetupDescription4= %s -> %s

该软件是许多模 SetupDescription5=其他设置菜单条目管理可选参数。 SetupDescriptionLink=%s - %s SetupDescription3b=用于自定义应用程序默认行为的基本参数(例如与国家/地区相关的功能)。 -SetupDescription4b=该软件是许多模块/应用程序的套件。必须启用和配置与您的需求相关的模块。激活这些模块后将出现菜单条目。 +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=被审计的安全事件 NoSecurityEventsAreAduited=未审计任何安全事件。您可以从菜单 %s 启用它们 Audit=安全事件 @@ -1270,6 +1276,7 @@ TriggerActiveAsModuleActive=此文件中的触发器将于 %s 模块启 GeneratedPasswordDesc=选择用于自动生成密码的方法。 DictionaryDesc=输入全部参考数据。您能添加你的参数值为默认值。 ConstDesc=此页面允许您编辑(覆盖)其他页面中不可用的参数。这些主要是为开发人员/高级故障排除保留的参数。 +MiscellaneousOptions=Miscellaneous options MiscellaneousDesc=所有其他安全相关的参数在这里定义。 LimitsSetup=限制及精度设置 LimitsDesc=您可以在此处定义 Dolibarr 的使用限制、精度和优化 @@ -1826,6 +1833,9 @@ AGENDA_USE_EVENT_TYPE=使用事件类型(在菜单设置 -> 词典 -> 议程 AGENDA_USE_EVENT_TYPE_DEFAULT=在事件创建表单中自动为事件类型设置此默认值 AGENDA_DEFAULT_FILTER_TYPE=自动将此事件设置为议程视图的搜索过滤器 AGENDA_DEFAULT_FILTER_STATUS=自动将此状态设置为议程视图的搜索过滤器 +AGENDA_EVENT_PAST_COLOR=Past event color +AGENDA_EVENT_CURRENT_COLOR=Current event color +AGENDA_EVENT_FUTURE_COLOR=Future event color AGENDA_DEFAULT_VIEW=选择菜单议程时默认打开哪个视图 AGENDA_REMINDER_BROWSER=在用户的浏览器
上启用事件提醒 (到达提醒日期时,浏览器会显示一个弹出窗口。每个用户都可以从其浏览器通知设置中禁用此类通知)。 AGENDA_REMINDER_BROWSER_SOUND=启用声音通知 @@ -2129,6 +2139,7 @@ CodeLastResult=最新结果代码 NbOfEmailsInInbox=源目录中的电子邮件数量 LoadThirdPartyFromName=在 %s 上加载第三方搜索(仅加载) LoadThirdPartyFromNameOrCreate=在 %s 上加载第三方搜索(如果未找到则创建) +LoadContactFromEmailOrCreate=Load contact searching on %s (create if not found) AttachJoinedDocumentsToObject=如果在电子邮件主题中找到对象的引用,则将附件保存到对象文档中。 WithDolTrackingID=来自 Dolibarr 发送的第一封电子邮件发起的对话的消息 WithoutDolTrackingID=来自不是从 Dolibarr 发送的第一封电子邮件发起的对话的消息 @@ -2355,3 +2366,9 @@ AllowExternalDownload=允许外部下载 (无需登录,使用共享链接) DeadlineDayVATSubmission=下个月提交增值税的截止日期 MaxNumberOfAttachementOnForms=Max number of joinded files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s +Reload=Reload +ConfirmReload=Confirm module reload +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/zh_TW/admin.lang b/htdocs/langs/zh_TW/admin.lang index 78c3c9ba4c9..cd05411e793 100644 --- a/htdocs/langs/zh_TW/admin.lang +++ b/htdocs/langs/zh_TW/admin.lang @@ -451,7 +451,7 @@ ExtrafieldCheckBox=勾選框 ExtrafieldCheckBoxFromList=表格勾選框 ExtrafieldLink=連結到項目 ComputedFormula=計算欄位 -ComputedFormulaDesc=您可以在此處輸入使用對象的其他屬性或任何PHP編碼的公式,以獲得動態計算值。您可以使用任何與PHP兼容的公式,包括“?”條件運算符和以下全局對象: $ db,$ conf,$ langs,$ mysoc,$ user,$ object
警告:僅$ object的某些屬性可用。如果需要一個未加載的屬性,則像第二個示例一樣,將對象自己提取到公式中。
使用計算字段意味著您無法從界面輸入任何值。另外,如果存在語法錯誤,則公式可能不返回任何內容。

公式示例:
$ object-> id < 10 ? round($object-> id / 2,2):($ object-> id + 2 * $ user-> id)*(int)substr($ mysoc-> zip,1,2 )

重新加載對象的示例
((($ reloadedobj = new Societe($ db))&&($ reloadedobj-> fetchNoCompute($ obj-> id?$ obj-> id:($ obj-> rowid?$ obj- > rowid:$ object-> id))> 0))嗎? $ reloadedobj-> array_options ['options_extrafieldkey'] * $ reloadedobj-> capital / 5:'-1'

用於強制加載對象及其父對象的公式的其他示例:
((($ reloadedobj = new Task($ ))&&($ reloadedobj-> fetchNoCompute($ object-> id)> 0)&&($ secondloadedobj =新項目($ db))&&($ secondloadedobj-> fetchNoCompute($ reloadedobj-> fk_project)> 0))嗎? $ secondloadedobj-> ref:'未找到父項目' +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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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->fetchNoCompute($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=儲存已計算欄位 ComputedpersistentDesc=計算出的額外欄位將儲存在資料庫中,但是,僅當更改此欄位的項目時,才會重新計算該值。如果計算欄位依賴於其他項目或全域數據,則該值可能是錯誤的! ExtrafieldParamHelpPassword=將欄位保留為空白表示該值將不加密地儲存(欄位只能在螢幕上以星號隱藏)。
設定“自動”以使用預設的加密規則將密碼保存到資料庫中(然後讀取的值將僅是哈希值,無法搜索原始值) @@ -704,8 +704,10 @@ Module62000Name=國際貿易術語 Module62000Desc=新增功能來管理國際貿易術語 Module63000Name=資源 Module63000Desc=管理用於分配給事件的資源(印表機,汽車,房間等) +Module66000Name=啟用 OAuth2 驗證 +Module66000Desc=Provide a tool to generate and manage OAuth2 tokens. The token can then be used by some other modules. Module94160Name=收貨(s) -Permission11=讀取客戶發票 +Permission11=查閱客戶發票(與支付) Permission12=建立/修改客戶發票 Permission13=無效的客戶發票 Permission14=驗證客戶發票 @@ -947,7 +949,7 @@ Permission1190=批准(第二次批准)採購訂單 Permission1191=匯出供應商訂單及其屬性 Permission1201=取得匯出結果 Permission1202=建立/修改匯出 -Permission1231=讀取供應商發票 +Permission1231=查閱供應商發票(與支付) Permission1232=建立/修改供應商發票 Permission1233=驗證供應商發票 Permission1234=刪除供應商發票 @@ -969,7 +971,7 @@ Permission2413=刪除其他行動(事件或任務) Permission2414=匯入其他行動/任務 Permission2501=讀取/下載文件 Permission2502=下載文件 -Permission2503=提交或刪除文件 +Permission2503=上傳或刪除文件 Permission2515=設定文件資料夾 Permission2801=在唯讀模式下使用 FTP 客戶端 (僅瀏覽及下載) Permission2802=在寫入模式下使用 FTP 客戶端 (可刪除或上傳檔案) @@ -978,14 +980,14 @@ Permission3301=產生新模組 Permission4001=讀取技能/工作/職位 Permission4002=建立/修改技能/工作/職位 Permission4003=刪除技能/工作/職位 -Permission4021=Read evaluations (yours and your subordinates) +Permission4021=讀取評價(你和你的下屬) Permission4022=建立/修改評估 Permission4023=驗證評估 Permission4025=刪除評價 Permission4028=查看比較選單 Permission4031=讀取個人資訊 Permission4032=寫入個人資訊 -Permission4033=Read all evaluations (even those of user not subordinates) +Permission4033=讀取所有評價(即使用戶並非您的下屬之評價) Permission10001=讀取網站內容 Permission10002=建立/修改網站內容(html和javascript內容) Permission10003=建立/修改網站內容(動態php代碼)。危險,必須留給受限開發人員使用。 @@ -1067,7 +1069,7 @@ DictionaryFormatCards=卡片格式 DictionaryFees=費用報表-費用報表行的類型 DictionarySendingMethods=出貨方式 DictionaryStaff=員工人數 -DictionaryAvailability=遲延交付 +DictionaryAvailability=交貨期 DictionaryOrderMethods=訂購方式 DictionarySource=原始提案/建議書/訂單 DictionaryAccountancyCategory=報告的個人化組別 @@ -1234,7 +1236,7 @@ SetupDescription4=  %s-> %s

此軟體是許多模組 SetupDescription5=其他設定選單項目管理可選參數。 SetupDescriptionLink= %s - %s SetupDescription3b=用於自定義應用程式預設行為的基本參數(例如與國家/地區相關的功能)。 -SetupDescription4b=此軟體是許多模組/應用程式的套件。必須啟用和設定與您的需求相關的模組。啟用這些模組後將出現選單項目。 +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be activated. Menu entries will appears with the activation of these modules. AuditedSecurityEvents=已審計的安全性事件 NoSecurityEventsAreAduited=無已審計的安全性事件。您可以啟用從選單 %s Audit=安全事件 @@ -1274,7 +1276,7 @@ TriggerActiveAsModuleActive=當模組%s啟用時,此檔案中的觸發 GeneratedPasswordDesc=選擇用於自動產生密碼的方法。 DictionaryDesc=插入全部參考資料。您可加入您的預設值。 ConstDesc=此頁面允許您編輯(覆蓋)其他頁面中不可用的參數。這些大多是保留的參數,僅供開發人員/進階故障排除。 -MiscellaneousOptions=Miscellaneous options +MiscellaneousOptions=其他選項 MiscellaneousDesc=在此定義所有其他與安全有關的參數。 LimitsSetup=限制/精準度設定 LimitsDesc=您可以在此處定義Dolibarr使用的限制,精度和優化 @@ -1308,7 +1310,7 @@ YouMustRunCommandFromCommandLineAfterLoginToUser=用戶%s在登入終端 YourPHPDoesNotHaveSSLSupport=您的PHP中無法使用SSL功能 DownloadMoreSkins=更多佈景主題下載 SimpleNumRefModelDesc=回傳格式為 %syymm-nnnn 的參考編號,其中 yy 是年份,mm 是月份,nnnn 是自動遞增的連續數字,無法重置 -SimpleRefNumRefModelDesc=Returns the reference number in the format n where n is a sequential auto-incrementing number with no reset +SimpleRefNumRefModelDesc=以格式 n 回傳參考編號,其中 n 是一個連續沒有重複的自動遞增數字 AdvancedNumRefModelDesc=回傳格式為 %syymm-nnnn 的參考編號,其中 yy 是年份,mm 是月份,nnnn 是自動遞增的連續數字,無法重置 SimpleNumRefNoDateModelDesc=回傳格式為 %s-nnnn 的參考號,其中 nnnn 是自動遞增的連續數字,無法重置 ShowProfIdInAddress=顯示含有地址的專業 ID @@ -1831,9 +1833,9 @@ AGENDA_USE_EVENT_TYPE=使用事件類型(在選單設定->分類->應辦事項 AGENDA_USE_EVENT_TYPE_DEFAULT=在事件建立表單中自動為事件類型設定此預設值 AGENDA_DEFAULT_FILTER_TYPE=在應辦事項視圖的搜索過濾器中自動設定此類事件 AGENDA_DEFAULT_FILTER_STATUS=在應辦事項視圖的搜索過濾器中自動為事件設定此狀態 -AGENDA_EVENT_PAST_COLOR=Past event color -AGENDA_EVENT_CURRENT_COLOR=Current event color -AGENDA_EVENT_FUTURE_COLOR=Future event color +AGENDA_EVENT_PAST_COLOR=過去事件顏色 +AGENDA_EVENT_CURRENT_COLOR=目前事件顏色 +AGENDA_EVENT_FUTURE_COLOR=未來事件顏色 AGENDA_DEFAULT_VIEW=當選擇應辦事項選單時預設要打開的分頁 AGENDA_REMINDER_BROWSER=在用戶的瀏覽器上啟用事件提醒(到達事件日期時,瀏覽器會跳出提醒視窗.每個用戶都可以從瀏覽器提醒設定中停用此提醒) AGENDA_REMINDER_BROWSER_SOUND=啟用音效警告 @@ -2212,7 +2214,7 @@ ShowProjectLabel=專案標籤 PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=在合作方名稱中包含別名 THIRDPARTY_ALIAS=合作方名稱 - 合作方別名 ALIAS_THIRDPARTY=合作方別名 - 合作方名稱 -PDFIn2Languages=Show labels into PDF in 2 different languages +PDFIn2Languages=於PDF的標籤顯示兩種不同的語言 PDF_USE_ALSO_LANGUAGE_CODE=如果您要在生成同一的PDF中以兩種不同的語言複製一些文字,則必須在此處設置第二種語言讓生成的PDF在同一頁中包含兩種不同的語言,選擇的可以用來生成PDF跟另一種語言(只有少數PDF模板支援此功能)。PDF只有一種語言則留空。 PDF_USE_A=產生使用PDF/A格式的PDF文件而不是預設格式的PDF FafaIconSocialNetworksDesc=在此處輸入FontAwesome圖示的代碼。如果您不知道什麼是FontAwesome,則可以使用通用值fa-address-book。 @@ -2241,12 +2243,12 @@ MailToPartnership=合夥 AGENDA_EVENT_DEFAULT_STATUS=從表單建立事件時預設的事件狀態 YouShouldDisablePHPFunctions=您應該停用 PHP 功能 IfCLINotRequiredYouShouldDisablePHPFunctions=除非您需要在自定義代碼中執行系統命令,否則您應該停用 PHP 功能 -PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an antivirus program), you must keep PHP functions +PHPFunctionsRequiredForCLI=用於指令目的(如計劃的備份作業或執行防毒軟體),您必須保留 PHP 功能 NoWritableFilesFoundIntoRootDir=在您的根目錄中找不到一般程式可寫入的檔案或目錄(好) RecommendedValueIs=建議:%s Recommended=推薦的 NotRecommended=不建議 -ARestrictedPath=Some restricted path for data files +ARestrictedPath=資料檔案的一些限制路徑 CheckForModuleUpdate=檢查外部模組更新 CheckForModuleUpdateHelp=此操作將連接到外部模組的編輯器以檢查是否有新版本。 ModuleUpdateAvailable=有可用的更新 @@ -2343,7 +2345,7 @@ MaxNumberOfPostOnPublicPagesByIP=Max number of posts on public pages with the sa CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: ScriptIsEmpty=腳本是空的 ShowHideTheNRequests=顯示/隱藏 %s 的SQL 請求 -DefinedAPathForAntivirusCommandIntoSetup=Define a path for an antivirus program into %s +DefinedAPathForAntivirusCommandIntoSetup=定義防毒軟體的路徑為 %s TriggerCodes=可觸發事件 TriggerCodeInfo=Enter here the trigger code(s) that must generate a post of a web request (only external URL are allowed). You can enter several trigger codes separated by a comma. EditableWhenDraftOnly=If unchecked, the value can only be modified when object has a draft status @@ -2364,5 +2366,9 @@ AllowExternalDownload=允許外部下載(無需登入,使用共享連結) DeadlineDayVATSubmission=Deadline day for vat submission on the next month MaxNumberOfAttachementOnForms=表單中最大合併文件數 IfDefinedUseAValueBeetween=如果已定義,則使用 %s 和 %s 之間的值 -Reload=Reload -ConfirmReload=Confirm module reload +Reload=重新讀取 +ConfirmReload=確認模組重新讀取 +WarningModuleHasChangedLastVersionCheckParameter=Warning: the module %s has set a parameter to check its version at each page access. This is a bad and not allowed practice that may make the page to administer modules instable. Please contact author of module to fix this. +WarningModuleHasChangedSecurityCsrfParameter=Warning: the module %s has disabled the CSRF security of your instance. This action is suspect and your installation may no more be secured. Please contact the author of the module for explanation. +EMailsInGoingDesc=Incoming emails are managed by the module %s. You must enable and configure it if you need to support ingoing emails. +MAIN_IMAP_USE_PHPIMAP=Use the PHP-IMAP library for IMAP instead of native PHP IMAP. This also allows the use of an OAuth2 connection for IMAP (module OAuth must also be activated). diff --git a/htdocs/langs/zh_TW/install.lang b/htdocs/langs/zh_TW/install.lang index 1e5bc98c266..c8568a6b4fc 100644 --- a/htdocs/langs/zh_TW/install.lang +++ b/htdocs/langs/zh_TW/install.lang @@ -88,7 +88,7 @@ LoginAlreadyExists=已存在 DolibarrAdminLogin=Dolibarr管理員登入 AdminLoginAlreadyExists=Dolibarr管理員帳戶 '%s'已經存在。如果要建立另一個,請返回。 FailedToCreateAdminLogin=無法建立Dolibarr管理員帳戶。 -WarningRemoveInstallDir=警告,出於安全原因,安裝或升級完成後,應在Dolibarr檔案資料夾中增加一個名為install.lock的文件,以防止再次意外/惡意的使用安裝工具。 +WarningRemoveInstallDir=Warning, for security reasons, once the installation process is complete, you must 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=在此PHP中不可用 ChoosedMigrateScript=選擇遷移腳本 DataMigration=資料庫遷移(數據) @@ -208,8 +208,10 @@ HideNotAvailableOptions=隱藏不可用的選項 ErrorFoundDuringMigration=在移轉過程中出現了錯誤,因此無法進行下一步。要忽略錯誤,可以點擊此處 ,但是在解決錯誤之前,該應用程序或某些功能可能無法正常運行。 YouTryInstallDisabledByDirLock=此應用程式嘗試進行自我升級,但是出於安全性考慮,已停用了安裝/升級頁面(已使用.lock副檔名重新命名資料夾)。
YouTryInstallDisabledByFileLock=此應用程式嘗試進行自我升級,但是出於安全性考慮,已停用了安裝/升級頁面(由於dolibarr檔案資料夾中存在鎖定文件install.lock )。
+YouTryUpgradeDisabledByMissingFileUnLock=The application tried to self-upgrade, but the upgrade process is currently not allowed.
ClickHereToGoToApp=點擊此處前往您的應用程式 ClickOnLinkOrRemoveManualy=如果正在進行升級,請等待。如果沒有,請點擊以下連結。如果始終看到同一頁面,則必須在documents資料夾中刪除/重新命名install.lock檔案。 +ClickOnLinkOrCreateUnlockFileManualy=If an upgrade is in progress, please wait... If not, you must create a file upgrade.unlock into the Dolibarr documents directory. Loaded=已載入 FunctionTest=功能測試 NodoUpgradeAfterDB=升級資料庫後未收到外部模組的行動請求 diff --git a/htdocs/langs/zh_TW/main.lang b/htdocs/langs/zh_TW/main.lang index 13a1532d842..9be594d9db8 100644 --- a/htdocs/langs/zh_TW/main.lang +++ b/htdocs/langs/zh_TW/main.lang @@ -34,7 +34,7 @@ NoTemplateDefined=此電子郵件類別沒有可用的範本 AvailableVariables=可用的替代變數 NoTranslation=沒有翻譯 Translation=翻譯 -Translations=Translations +Translations=翻譯 CurrentTimeZone=PHP (伺服器)時區 EmptySearchString=輸入非空白的搜索字串 EnterADateCriteria=輸入日期條件 @@ -226,7 +226,7 @@ NoUserGroupDefined=未定義用戶群組 Password=密碼 PasswordRetype=重新輸入您的密碼 NoteSomeFeaturesAreDisabled=請注意在這個示範中多項功能/模組已關閉。 -YourUserFile=Your user file +YourUserFile=您的使用者資料 Name=名稱 NameSlashCompany=姓名/公司 Person=人員 @@ -270,8 +270,8 @@ Connection=登入 Setup=設定 Alert=警告 MenuWarnings=警告 -Previous=上一步 -Next=下一步 +Previous=上一次 +Next=下一次 Cards=資訊卡 Card=資訊卡 Now=現在 @@ -490,7 +490,7 @@ ActionsOnContact=通訊錄/地址事件 ActionsOnContract=此合約的事件 ActionsOnMember=此會員的各種事件 ActionsOnProduct=此產品的各種事件 -ActionsOnAsset=Events for this fixed asset +ActionsOnAsset=此固定資產的活動 NActionsLate=%s筆等待驗證 ToDo=待辦 Completed=已完成 @@ -722,7 +722,7 @@ FeatureDisabled=功能已關閉 MoveBox=移動小工具 Offered=已提供 NotEnoughPermissions=您沒有權限執行這個動作 -UserNotInHierachy=This action is reserved to the supervisors of this user +UserNotInHierachy=此動作僅供此使用者之主管使用 SessionName=連線程序名稱 Method=方法 Receive=收到 @@ -899,8 +899,8 @@ ShowTempMassFilesArea=顯示批次檔案建立區域 ConfirmMassDeletion=批次刪除確認 ConfirmMassDeletionQuestion=您確定要刪除%s已選記錄嗎? ConfirmMassClone=Bulk clone confirmation -ConfirmMassCloneQuestion=Select project to clone to -ConfirmMassCloneToOneProject=Clone to project %s +ConfirmMassCloneQuestion=選取專案複製到 +ConfirmMassCloneToOneProject=複製至專案%s RelatedObjects=相關項目 ClassifyBilled=分類已開票 ClassifyUnbilled=分類未開票 @@ -916,13 +916,14 @@ ExportFilteredList=匯出已篩選清單 ExportList=匯出清單 ExportOptions=匯出選項 IncludeDocsAlreadyExported=包含的文件已輸出 -ExportOfPiecesAlreadyExportedIsEnable=Documents already exported are visible and will be exported -ExportOfPiecesAlreadyExportedIsDisable=Documents already exported are hidden and won't be exported +ExportOfPiecesAlreadyExportedIsEnable=已匯出之文件已可見且將匯出完成 +ExportOfPiecesAlreadyExportedIsDisable=已匯出之文件已隱藏且不會再匯出 AllExportedMovementsWereRecordedAsExported=所有匯出動作均記錄為已匯出 NotAllExportedMovementsCouldBeRecordedAsExported=並非所有匯出動作都可以記錄為已匯出 Miscellaneous=雜項 Calendar=行事曆 GroupBy=群組依... +GroupByX=依%s群組起來 ViewFlatList=檢視平面清單 ViewAccountList=檢視總帳 ViewSubAccountList=檢視子帳戶總帳 @@ -1132,7 +1133,7 @@ DeleteFileText=您確定要刪除檔案嗎? ShowOtherLanguages=顯示其他語言 SwitchInEditModeToAddTranslation=切換到編輯模式以添加該語言的翻譯 NotUsedForThisCustomer=未用於此客戶 -NotUsedForThisVendor=Not used for this vendor +NotUsedForThisVendor=未使用於此供應商 AmountMustBePositive=金額必須為正 ByStatus=依狀態 InformationMessage=資訊 @@ -1153,17 +1154,17 @@ EventReminder=事件提醒 UpdateForAllLines=更新所有行 OnHold=On hold Civility=稱謂或頭銜 -AffectTag=Assign a Tag -AffectUser=Assign a User -SetSupervisor=Set the supervisor +AffectTag=指定標籤 +AffectUser=指定使用者 +SetSupervisor=設定主管 CreateExternalUser=建立外部用戶 ConfirmAffectTag=Bulk Tag Assignement ConfirmAffectUser=Bulk User Assignement -ProjectRole=Role assigned on each project/opportunity +ProjectRole=角色指定於每個專案/機會 TasksRole=Role assigned on each task (if used) ConfirmSetSupervisor=批量設定主管 -ConfirmUpdatePrice=Choose a increase/decrease price rate -ConfirmAffectTagQuestion=Are you sure you want to assign tags to the %s selected record(s)? +ConfirmUpdatePrice=選擇增加/減少費率 +ConfirmAffectTagQuestion=您確定要設定此標籤至%s已選紀錄? ConfirmAffectUserQuestion=Are you sure you want to assign users to the %s selected record(s)? ConfirmSetSupervisorQuestion=Are you sure you want to set supervisor to the %s selected record(s)? ConfirmUpdatePriceQuestion=Are you sure you want to update the price of the %s selected record(s)? @@ -1222,3 +1223,5 @@ AddToContacts=Add address to my contacts LastAccess=Last access UploadAnImageToSeeAPhotoHere=Upload an image from the tab %s to see a photo here LastPasswordChangeDate=Last password change date +PublicVirtualCardUrl=Virtual business card page +TreeView=Tree view diff --git a/htdocs/langs/zh_TW/members.lang b/htdocs/langs/zh_TW/members.lang index 7b30400ef98..b38c36db28c 100644 --- a/htdocs/langs/zh_TW/members.lang +++ b/htdocs/langs/zh_TW/members.lang @@ -206,7 +206,8 @@ SubscriptionsStatistics=捐款統計 NbOfSubscriptions=捐款數量 AmountOfSubscriptions=從捐款中收取的金額 TurnoverOrBudget=營業額(對於公司)或預算(對於財團) -DefaultAmount=捐款預設金額 +DefaultAmount=Default amount of contribution (used only if no amount is defined at member type level) +MinimumAmount=Minimum amount (used only when contribution amount is free) CanEditAmount=免費訂閱 CanEditAmountDetail=Visitor can choose/edit amount of its contribution regardless of the member type AmountIsLowerToMinimumNotice=sur un dû total de %s diff --git a/htdocs/langs/zh_TW/oauth.lang b/htdocs/langs/zh_TW/oauth.lang index 207681da229..b39ed646eaf 100644 --- a/htdocs/langs/zh_TW/oauth.lang +++ b/htdocs/langs/zh_TW/oauth.lang @@ -31,8 +31,9 @@ OAUTH_GITHUB_SECRET=OAuth GitHub Secret OAUTH_URL_FOR_CREDENTIAL=前往 此頁面 建立或獲取您的 OAuth ID 與憑證 OAUTH_STRIPE_TEST_NAME=OAuth Stripe測試 OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live -OAUTH_ID=OAuth ID +OAUTH_ID=OAuth 客戶端 ID OAUTH_SECRET=OAuth憑證 +OAUTH_TENANT=OAuth 用戶 OAuthProviderAdded=已加入 OAuth提供者 AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=此提供商和標籤的 OAuth 條目已存在 URLOfServiceForAuthorization=OAuth 服務驗證網址 diff --git a/htdocs/langs/zh_TW/orders.lang b/htdocs/langs/zh_TW/orders.lang index 34c81763d41..5ebbbb2f116 100644 --- a/htdocs/langs/zh_TW/orders.lang +++ b/htdocs/langs/zh_TW/orders.lang @@ -96,6 +96,10 @@ OrdersStatisticsSuppliers=採購訂單統計 NumberOfOrdersByMonth=每月訂單數 AmountOfOrdersByMonthHT=每月訂單金額(不含稅) ListOfOrders=訂單列表 +ListOrderLigne=Lines of orders +productobuy=Products to buy only +productonly=Products only +disablelinefree=No lines free CloseOrder=關閉命令 ConfirmCloseOrder=您確定要將此訂單設為已出貨嗎?若訂單已出貨,可以將其設為開票。 ConfirmDeleteOrder=您確定要刪除此訂單嗎? @@ -118,7 +122,7 @@ SendOrderByMail=通過郵件發送訂單 ActionsOnOrder=訂單事件 NoArticleOfTypeProduct=沒有“產品”類型的商品,因此該訂單沒有可運送的商品 OrderMode=訂購方式 -AuthorRequest=發起者 +AuthorRequest=需求人員 UserWithApproveOrderGrant=被授予核准權限的用戶 PaymentOrderRef=%s付款訂單 ConfirmCloneOrder=您確定要複製此%s訂單嗎? @@ -131,6 +135,7 @@ SupplierOrderClassifiedBilled=採購訂單%s設置為已開票 OtherOrders=其他訂單 SupplierOrderValidatedAndApproved=供應商訂單已驗證並且已批准:%s SupplierOrderValidated=供應商訂單已驗證:%s +OrderShowDetail=Show order detail ##### Types de contacts ##### TypeContact_commande_internal_SALESREPFOLL=銷售訂單追蹤 TypeContact_commande_internal_SHIPPING=貨運追蹤 @@ -199,3 +204,5 @@ StatusSupplierOrderApproved=核准 StatusSupplierOrderRefused=已拒絕 StatusSupplierOrderReceivedPartially=部分收到 StatusSupplierOrderReceivedAll=收到所有產品 +NeedAtLeastOneInvoice = There has to be at least one Invoice +LineAlreadyDispatched = The order line is already received. diff --git a/htdocs/langs/zh_TW/projects.lang b/htdocs/langs/zh_TW/projects.lang index 1f239afd99c..1d25ef75aa4 100644 --- a/htdocs/langs/zh_TW/projects.lang +++ b/htdocs/langs/zh_TW/projects.lang @@ -6,7 +6,7 @@ ProjectLabel=專案標籤 ProjectsArea=專案區域 ProjectStatus=專案狀態 SharedProject=每一位 -PrivateProject=Assigned contacts +PrivateProject=專案聯絡人 ProjectsImContactFor=我是聯絡人的專案 AllAllowedProjects=我可以讀取的所有專案(我的+公共項目) AllProjects=所有專案 @@ -23,7 +23,7 @@ TasksPublicDesc=此檢視顯示您可讀取之所有專案及任務。 TasksDesc=此檢視顯示所有專案及任務(您的用戶權限授予您查看所有內容)。 AllTaskVisibleButEditIfYouAreAssigned=合格專案的所有任務都可見,但是您只能輸入分配給所選用戶之任務的時間。如果需要輸入時間,請分配任務。 OnlyYourTaskAreVisible=僅顯示分配給您的任務。如果您需要輸入時間並且看不見任務,則您需要將任務分配給自己。 -ImportDatasetProjects=Projects or opportunities +ImportDatasetProjects=專案或機會 ImportDatasetTasks=專案任務 ProjectCategories=專案標籤/類別 NewProject=新專案 @@ -38,9 +38,9 @@ OpportunitiesStatusForOpenedProjects=依已啟用專案狀態的潛在客戶數 OpportunitiesStatusForProjects=依專案狀態的潛在客戶數量 ShowProject=顯示專案 ShowTask=顯示任務 -SetThirdParty=Set third party +SetThirdParty=設定合作方 SetProject=設定專案 -OutOfProject=Out of project +OutOfProject=專案以外 NoProject=沒有被定義或被擁有的專案 NbOfProjects=專案數量 NbOfTasks=任務數量 @@ -125,8 +125,8 @@ ValidateProject=驗證專案 ConfirmValidateProject=您確定要驗證此專案嗎? CloseAProject=關閉專案 ConfirmCloseAProject=您確定要關閉此專案? -AlsoCloseAProject=Also close project -AlsoCloseAProjectTooltip=Keep it open if you still need to follow production tasks on it +AlsoCloseAProject=同時關閉專案 +AlsoCloseAProjectTooltip=如果仍然需要執行任務,請保持打開狀態 ReOpenAProject=打開的專案 ConfirmReOpenAProject=您確定要重新打開此專案嗎? ProjectContact=專案聯絡人 @@ -169,7 +169,7 @@ OpportunityProbability=潛在可能性 OpportunityProbabilityShort=潛在機率 OpportunityAmount=潛在金額 OpportunityAmountShort=潛在金額 -OpportunityWeightedAmount=Amount of opportunity, weighted by probability +OpportunityWeightedAmount=機會的數量,依獲得機率加權 OpportunityWeightedAmountShort=機會加權金額 OpportunityAmountAverageShort=平均潛在金額 OpportunityAmountWeigthedShort=加權潛在金額 @@ -259,11 +259,12 @@ RecordsClosed=%s專案已關閉 SendProjectRef=專案%s的資訊 ModuleSalaryToDefineHourlyRateMustBeEnabled=必須啟用“工資”模組來定義員工的每小時工資,以使所花費的時間保持平衡 NewTaskRefSuggested=任務參考已使用,需要新的任務參考 +NumberOfTasksCloned=%s 任務已複製 TimeSpentInvoiced=花費時間已計費 TimeSpentForIntervention=花費時間 TimeSpentForInvoice=花費時間 OneLinePerUser=每位用戶一行 -ServiceToUseOnLines=Service to use on lines by default +ServiceToUseOnLines=預設要匯入發票行的服務 InvoiceGeneratedFromTimeSpent=根據專案花費的時間產生了發票%s InterventionGeneratedFromTimeSpent=干預 %s 已從專案的時間花費上產生 ProjectBillTimeDescription=請勾選如果您輸入了有關專案任務的時間表,並計劃從此時間表中產生發票以向此專案的客戶開立帳單(不要勾選如果您打算建立不基於輸入時間表的發票)。注意:要產生發票,請前往專案的“花費時間”分頁上,並選擇要包括的行。 @@ -294,8 +295,8 @@ ProjectsHavingThisContact=有此聯絡人的專案 StartDateCannotBeAfterEndDate=結束日期不能早於開始日期 ErrorPROJECTLEADERRoleMissingRestoreIt=“專案負責人”角色遺失或已停用,請在聯絡人類型分類中恢復此分類 LeadPublicFormDesc=You can enable here a public page to allow your prospects to make a first contact to you from a public online form -EnablePublicLeadForm=Enable the public form for contact -NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. -NewLeadForm=New contact form -LeadFromPublicForm=Online lead from public form -ExportAccountingReportButtonLabel=Get report +EnablePublicLeadForm=為聯絡人啟用公共表單 +NewLeadbyWeb=您的留言或需求已被記錄。我們會盡快答覆或聯繫您。 +NewLeadForm=新聯絡人表單 +LeadFromPublicForm=來自公共表單的線上潛在機會 +ExportAccountingReportButtonLabel=取得會計報表 diff --git a/htdocs/langs/zh_TW/stocks.lang b/htdocs/langs/zh_TW/stocks.lang index b91d99a98cd..15fbff6c930 100644 --- a/htdocs/langs/zh_TW/stocks.lang +++ b/htdocs/langs/zh_TW/stocks.lang @@ -24,6 +24,7 @@ StockAtDateInFuture=未來的日期 StocksByLotSerial=依批次/序號的庫存 LotSerial=批次/序號 LotSerialList=批次/序號清單 +SubjectToLotSerialOnly=Products subject to lot/serial only Movements=庫存移轉 ErrorWarehouseRefRequired=倉庫引用的名稱為必填 ListOfWarehouses=倉庫清單 @@ -48,7 +49,7 @@ StockCorrection=庫存更正 CorrectStock=修正庫存 StockTransfer=庫存轉移 TransferStock=轉移庫存 -MassStockTransferShort=大量庫存轉移 +MassStockTransferShort=Bulk stock change StockMovement=庫存變動 StockMovements=庫存變動 NumberOfUnit=單位數目 @@ -146,8 +147,9 @@ Replenishments=補貨 NbOfProductBeforePeriod=選則期間以前產品%s庫存的數量(<%s) NbOfProductAfterPeriod=選則期間之後產品%s庫存的數量(> %s) MassMovement=全部活動 -SelectProductInAndOutWareHouse=選擇一個來源倉庫,目標倉庫,產品與數量然後點選"%s"。當所有移動後完成後請點選"%s"。 +SelectProductInAndOutWareHouse=Select a source warehouse (optional), a target warehouse, a product and a quantity then click "%s". Once this is done for all required movements, click on "%s". RecordMovement=記錄轉移 +RecordMovements=Record stock movements ReceivingForSameOrder=此訂單的收據 StockMovementRecorded=庫存變動已記錄 RuleForStockAvailability=庫存要求規則 @@ -234,7 +236,7 @@ StockIncrease=庫存增加 StockDecrease=庫存減少 InventoryForASpecificWarehouse=特定倉庫的庫存 InventoryForASpecificProduct=特定產品的庫存 -StockIsRequiredToChooseWhichLotToUse=庫存需要選擇要使用的批次 +StockIsRequiredToChooseWhichLotToUse=An existing stock is required to be able to choose which lot to use ForceTo=強制到 AlwaysShowFullArbo=在倉庫連結的彈出窗口上顯示完整的倉庫樹狀圖(警告:這可能會大大降低性能) StockAtDatePastDesc=您可以在此處檢視給定之過去日期的庫存(實際庫存) @@ -270,26 +272,26 @@ InventoryStartedShort=已開始 ErrorOnElementsInventory=操作因為以下原因取消: ErrorCantFindCodeInInventory=在庫存中找不到以下代號 QtyWasAddedToTheScannedBarcode=成功 !!數量已增加到所有請求的條碼中。您可以關閉掃描工具。 -StockChangeDisabled=更改庫存已停用 +StockChangeDisabled=已停用庫存更改 NoWarehouseDefinedForTerminal=沒有為終端機定義倉庫 ClearQtys=清除所有數量 -ModuleStockTransferName=Advanced Stock Transfer -ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet -StockTransferNew=New stock transfer -StockTransferList=Stock transfers list -ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? -ConfirmDestock=Decrease of stocks with transfer %s -ConfirmDestockCancel=Cancel decrease of stocks with transfer %s -DestockAllProduct=Decrease of stocks -DestockAllProductCancel=Cancel decrease of stocks -ConfirmAddStock=Increase stocks with transfer %s -ConfirmAddStockCancel=Cancel increase of stocks with transfer %s -AddStockAllProduct=Increase of stocks -AddStockAllProductCancel=Cancel increase of stocks -DatePrevueDepart=Intended date of departure -DateReelleDepart=Real date of departure -DatePrevueArrivee=Intended date of arrival -DateReelleArrivee=Real date of arrival +ModuleStockTransferName=進階庫存轉移 +ModuleStockTransferDesc=進階管理庫存轉移,產生庫存轉移表 +StockTransferNew=新庫存轉移 +StockTransferList=庫存轉移清單 +ConfirmValidateStockTransfer=您確定要以%s驗證此庫存轉移嗎? +ConfirmDestock=%s轉移減少庫存 +ConfirmDestockCancel=取消%s轉移的減少庫存 +DestockAllProduct=庫存減少 +DestockAllProductCancel=取消庫存減少 +ConfirmAddStock=%s轉移庫存增加 +ConfirmAddStockCancel=取消%s轉移的庫存增加 +AddStockAllProduct=庫存增加 +AddStockAllProductCancel=取消庫存增加 +DatePrevueDepart=預定出貨日 +DateReelleDepart=實際出貨日 +DatePrevueArrivee=預定到貨日 +DateReelleArrivee=實際到貨日 HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse LeadTimeForWarning=Lead time before alert (in days) @@ -300,18 +302,18 @@ StockTransferSheet=Stocks transfer sheet StockTransferSheetProforma=Proforma stocks transfer sheet StockTransferDecrementation=Decrease source warehouses StockTransferIncrementation=Increase destination warehouses -StockTransferDecrementationCancel=Cancel decrease of source warehouses -StockTransferIncrementationCancel=Cancel increase of destination warehouses -StockStransferDecremented=Source warehouses decreased -StockStransferDecrementedCancel=Decrease of source warehouses canceled -StockStransferIncremented=Closed - Stocks transfered -StockStransferIncrementedShort=Stocks transfered +StockTransferDecrementationCancel=取消減少來源倉庫數量 +StockTransferIncrementationCancel=取消增加目的地倉庫數量 +StockStransferDecremented=來源倉庫數量已減少 +StockStransferDecrementedCancel=已取消減少來源倉庫數量 +StockStransferIncremented=已關閉 - 庫存已轉移 +StockStransferIncrementedShort=庫存已轉移 StockStransferIncrementedShortCancel=Increase of destination warehouses canceled -StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry -StockTransferSetup = Stocks Transfer module configuration +StockTransferNoBatchForProduct=產品%s沒有使用批號,請線上清除批號後再試 +StockTransferSetup = 庫存轉移模組設定 Settings=設定 -StockTransferSetupPage = Configuration page for stocks transfer module -StockTransferRightRead=Read stocks transfers -StockTransferRightCreateUpdate=Create/Update stocks transfers -StockTransferRightDelete=Delete stocks transfers -BatchNotFound=Lot / serial not found for this product +StockTransferSetupPage = 庫存轉移模組設定頁面 +StockTransferRightRead=讀取庫存轉移 +StockTransferRightCreateUpdate=建立/更新庫存轉移 +StockTransferRightDelete=刪除庫存轉移 +BatchNotFound=找不到此產品的批號/序號 From 331f0290f93eb9ca855f181b3ed6e037d2549b24 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 14 Feb 2023 21:06:19 +0100 Subject: [PATCH 103/607] Fix trans --- htdocs/langs/en_US/admin.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index e986fbc2599..b85cc2edea1 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -663,7 +663,7 @@ Module2900Desc=GeoIP Maxmind conversions capabilities Module3200Name=Unalterable Archives Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. Module3300Name=Module Builder -Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. +Module3300Desc=A RAD (Rapid Application Development - low-code and no-code) tool to help developers or advanced users to build their own module/application. Module3400Name=Social Networks Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...). Module4000Name=HRM From 670ae506e3f940ee42d21f1e51f86adb0c038945 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Wed, 15 Feb 2023 10:47:25 +0100 Subject: [PATCH 104/607] Fix: Bad assignation for external users access --- htdocs/comm/propal/card.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php index 3a037d4b4a2..b36415f5b15 100644 --- a/htdocs/comm/propal/card.php +++ b/htdocs/comm/propal/card.php @@ -5,7 +5,7 @@ * Copyright (C) 2005 Marc Barilley / Ocebo * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2006 Andre Cianfarani - * Copyright (C) 2010-2016 Juanjo Menent + * Copyright (C) 2010-2023 Juanjo Menent * Copyright (C) 2010-2021 Philippe Grand * Copyright (C) 2012-2013 Christophe Battarel * Copyright (C) 2012 Cedric Salvador @@ -131,7 +131,6 @@ $permissiontoedit = $usercancreate; // Used by the include of actions_lineupdown // Security check if (!empty($user->socid)) { $socid = $user->socid; - $object->id = $user->socid; } restrictedArea($user, 'propal', $object->id); From c2eeb50948dfb0b8801ec0d31a162ce69cfaf0df Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 15 Feb 2023 12:27:13 +0100 Subject: [PATCH 105/607] Fix sql error insert partnership --- htdocs/partnership/class/partnership.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/partnership/class/partnership.class.php b/htdocs/partnership/class/partnership.class.php index a9645efaae2..8fe589b9521 100644 --- a/htdocs/partnership/class/partnership.class.php +++ b/htdocs/partnership/class/partnership.class.php @@ -116,7 +116,7 @@ class Partnership extends CommonObject 'model_pdf' => array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>'1', 'position'=>1010, 'notnull'=>-1, 'visible'=>0,), 'date_partnership_start' => array('type'=>'date', 'label'=>'DatePartnershipStart', 'enabled'=>'1', 'position'=>52, 'notnull'=>1, 'visible'=>1,), 'date_partnership_end' => array('type'=>'date', 'label'=>'DatePartnershipEnd', 'enabled'=>'1', 'position'=>53, 'notnull'=>0, 'visible'=>1,), - 'status' => array('type'=>'smallint', 'label'=>'Status', 'enabled'=>'1', 'position'=>54, 'notnull'=>0, 'visible'=>2, 'default'=>'0', 'index'=>1, 'arrayofkeyval'=>array('-1'=>'', '0'=>'Draft', '1'=>'Accepted', '2'=>'Refused', '8'=>'Suspended', '9'=>'Terminated'),), + 'status' => array('type'=>'smallint', 'label'=>'Status', 'enabled'=>'1', 'position'=>54, 'notnull'=>1, 'visible'=>2, 'default'=>'0', 'index'=>1, 'arrayofkeyval'=>array('-1'=>'', '0'=>'Draft', '1'=>'Accepted', '2'=>'Refused', '8'=>'Suspended', '9'=>'Terminated'),), 'url_to_check' => array('type'=>'varchar(255)', 'label'=>'UrlToCheck', 'enabled'=>'1', 'position'=>70, 'notnull'=>0, 'visible'=>-1,), 'count_last_url_check_error' => array('type'=>'integer', 'label'=>'CountLastUrlCheckError', 'enabled'=>'1', 'position'=>71, 'notnull'=>0, 'visible'=>-2, 'default'=>'0',), 'last_check_backlink' => array('type'=>'datetime', 'label'=>'LastCheckBacklink', 'enabled'=>'1', 'position'=>72, 'notnull'=>0, 'visible'=>-2,), From a78016a37bce5e7b4690a1d13e5d325f6a68f73c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 15 Feb 2023 12:29:45 +0100 Subject: [PATCH 106/607] Fix list of status for partnership --- htdocs/partnership/class/partnership.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/partnership/class/partnership.class.php b/htdocs/partnership/class/partnership.class.php index 8fe589b9521..3e16b4bf4e8 100644 --- a/htdocs/partnership/class/partnership.class.php +++ b/htdocs/partnership/class/partnership.class.php @@ -116,7 +116,7 @@ class Partnership extends CommonObject 'model_pdf' => array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>'1', 'position'=>1010, 'notnull'=>-1, 'visible'=>0,), 'date_partnership_start' => array('type'=>'date', 'label'=>'DatePartnershipStart', 'enabled'=>'1', 'position'=>52, 'notnull'=>1, 'visible'=>1,), 'date_partnership_end' => array('type'=>'date', 'label'=>'DatePartnershipEnd', 'enabled'=>'1', 'position'=>53, 'notnull'=>0, 'visible'=>1,), - 'status' => array('type'=>'smallint', 'label'=>'Status', 'enabled'=>'1', 'position'=>54, 'notnull'=>1, 'visible'=>2, 'default'=>'0', 'index'=>1, 'arrayofkeyval'=>array('-1'=>'', '0'=>'Draft', '1'=>'Accepted', '2'=>'Refused', '8'=>'Suspended', '9'=>'Terminated'),), + 'status' => array('type'=>'smallint', 'label'=>'Status', 'enabled'=>'1', 'position'=>54, 'notnull'=>1, 'visible'=>2, 'default'=>'0', 'index'=>1, 'arrayofkeyval'=>array('0'=>'Draft', '1'=>'Accepted', '2'=>'Refused', '8'=>'Suspended', '9'=>'Terminated'),), 'url_to_check' => array('type'=>'varchar(255)', 'label'=>'UrlToCheck', 'enabled'=>'1', 'position'=>70, 'notnull'=>0, 'visible'=>-1,), 'count_last_url_check_error' => array('type'=>'integer', 'label'=>'CountLastUrlCheckError', 'enabled'=>'1', 'position'=>71, 'notnull'=>0, 'visible'=>-2, 'default'=>'0',), 'last_check_backlink' => array('type'=>'datetime', 'label'=>'LastCheckBacklink', 'enabled'=>'1', 'position'=>72, 'notnull'=>0, 'visible'=>-2,), From 7653a7126b0280982664922ed1002284f1d8831a Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Wed, 15 Feb 2023 13:47:55 +0100 Subject: [PATCH 107/607] FIX wrong url param name action --- htdocs/core/multicompany_page.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/multicompany_page.php b/htdocs/core/multicompany_page.php index 4a3bcba51fb..1161b7f07c9 100644 --- a/htdocs/core/multicompany_page.php +++ b/htdocs/core/multicompany_page.php @@ -19,7 +19,7 @@ */ /** - * \file htdocs/multicompany_page.php + * \file htdocs/core/multicompany_page.php * \brief File to return a page with the list of all entities user can switch to */ @@ -41,7 +41,7 @@ if (!defined('NOREQUIREMENU')) { require_once '../main.inc.php'; -$action = GETPOST('action', 'aZ09'); +$action = GETPOST('action', 'aZ'); $entityid = GETPOST('entity', 'int'); $backtourl = GETPOST('backtourl'); if (empty($backtourl)) { @@ -63,7 +63,7 @@ $left = ($langs->trans("DIRECTION") == 'rtl' ? 'right' : 'left'); * Actions */ -if (GETPOST('acction', 'aZ') == 'switchentity') { +if ($action == 'switchentity') { if (is_object($mc)) { $mc->switchEntity($entityid); } From 6c2d08b9f8959c9b743f97da5dafdc0bb59ede93 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 15 Feb 2023 17:57:19 +0100 Subject: [PATCH 108/607] FIX Profit calculation on project preview tab. --- htdocs/projet/element.php | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 8f548685631..e25997f2957 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -585,9 +585,9 @@ $listofreferent = array( 'name'=>"MouvementStockAssociated", 'title'=>"ListMouvementStockProject", 'class'=>'MouvementStock', - 'margin'=>'minus', 'table'=>'stock_mouvement', 'datefieldname'=>'datem', + 'margin'=>'minus', 'disableamount'=>0, 'test'=>!empty($conf->stock->enabled) && $user->hasRight('stock', 'mouvement', 'lire') && !empty($conf->global->STOCK_MOVEMENT_INTO_PROJECT_OVERVIEW)), 'salaries'=>array( @@ -752,6 +752,7 @@ $total_revenue_ht = 0; $balance_ht = 0; $balance_ttc = 0; +// Loop on each element type (proposal, sale order, invoices, ...) foreach ($listofreferent as $key => $value) { $parameters = array( 'total_revenue_ht' =>& $total_revenue_ht, @@ -787,6 +788,7 @@ foreach ($listofreferent as $key => $value) { $total_ht = 0; $total_ttc = 0; + // Loop on each object for the current element type $num = count($elementarray); for ($i = 0; $i < $num; $i++) { $tmp = explode('_', $elementarray[$i]); @@ -871,7 +873,7 @@ foreach ($listofreferent as $key => $value) { $defaultvat = get_default_tva($mysoc, $mysoc); $total_ttc_by_line = price2num($total_ht_by_line * (1 + ($defaultvat / 100)), 'MT'); } elseif ($key == 'loan') { - $total_ttc_by_line = $total_ht_by_line; // For loan there is actually no taxe managed in Dolibarr + $total_ttc_by_line = $total_ht_by_line; // For loan there is actually no taxe managed in Dolibarr } else { $total_ttc_by_line = $element->total_ttc; } @@ -892,19 +894,14 @@ foreach ($listofreferent as $key => $value) { } // Each element with at least one line is output - $qualifiedforfinalprofit = true; - if ($key == 'intervention' && empty($conf->global->PROJECT_INCLUDE_INTERVENTION_AMOUNT_IN_PROFIT)) { - $qualifiedforfinalprofit = false; - } - //var_dump($key.' '.$qualifiedforfinalprofit); // Calculate margin - if ($qualifiedforfinalprofit) { - if ($margin == 'add') { + if ($margin) { + if ($margin === 'add') { $total_revenue_ht += $total_ht; } - if ($margin != "add") { // Revert sign + if ($margin === "minus") { // Revert sign $total_ht = -$total_ht; $total_ttc = -$total_ttc; } @@ -923,10 +920,10 @@ foreach ($listofreferent as $key => $value) { if ($key == 'intervention' && !$qualifiedforfinalprofit) { print ''.$form->textwithpicto($langs->trans("NA"), $langs->trans("AmountOfInteventionNotIncludedByDefault")).''; } else { - print price($total_ht); if ($key == 'propal') { print ''.$form->textwithpicto('', $langs->trans("SignedOnly")).''; } + print price($total_ht); } print ''; // Amount TTC @@ -934,10 +931,10 @@ foreach ($listofreferent as $key => $value) { if ($key == 'intervention' && !$qualifiedforfinalprofit) { print ''.$form->textwithpicto($langs->trans("NA"), $langs->trans("AmountOfInteventionNotIncludedByDefault")).''; } else { - print price($total_ttc); if ($key == 'propal') { print ''.$form->textwithpicto('', $langs->trans("SignedOnly")).''; } + print price($total_ttc); } print ''; print ''; From bfd48d44ad9b2f3ce91b66af28f93ccbac7a3e05 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 15 Feb 2023 17:57:33 +0100 Subject: [PATCH 109/607] Fix fields were lost after changing the thirdparty --- htdocs/compta/facture/card.php | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index 7af0f7046f9..c2469655df6 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -80,8 +80,6 @@ if (isModEnabled('margin')) { } // General $Variables -$projectid = (GETPOST('projectid', 'int') ? GETPOST('projectid', 'int') : 0); - $id = (GETPOST('id', 'int') ? GETPOST('id', 'int') : GETPOST('facid', 'int')); // For backward compatibility $ref = GETPOST('ref', 'alpha'); $socid = GETPOST('socid', 'int'); @@ -100,6 +98,7 @@ $fac_rec = GETPOST('fac_rec', 'int'); $facid = GETPOST('facid', 'int'); $ref_client = GETPOST('ref_client', 'int'); $rank = (GETPOST('rank', 'int') > 0) ? GETPOST('rank', 'int') : -1; +$projectid = (GETPOST('projectid', 'int') ? GETPOST('projectid', 'int') : 0); // PDF $hidedetails = (GETPOST('hidedetails', 'int') ? GETPOST('hidedetails', 'int') : (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS) ? 1 : 0)); @@ -3150,7 +3149,7 @@ if ($action == 'create') { print '
'; print ''; - print ''; + print ''; if ($soc->id > 0) { print ''."\n"; } @@ -3216,11 +3215,10 @@ if ($action == 'create') { $(\'input[name="force_fk_account"]\').val(\'1\'); $("#formtocreate").submit(); */ - // For company change, we must reuse data of comany, not input already done, so we call a GET with action=create, not a POST submit. - console.log("We have changed the company - Reload page"); - var socid = $(this).val(); - var fac_rec = $(\'#fac_rec\').val(); - window.location.href = "'.$_SERVER["PHP_SELF"].'?action=create&socid="+socid+"&fac_rec="+fac_rec; + // For company change, we must submit page with action=create instead of action=add + console.log("We have changed the company - Resubmit page"); + jQuery("#formtocreateaction").val("create"); + jQuery("#formtocreate").submit(); }); }); '; From 1b925ec53f152585ffba83cab3ca387f4e60c034 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 15 Feb 2023 17:57:19 +0100 Subject: [PATCH 110/607] FIX Profit calculation on project preview tab. --- htdocs/projet/element.php | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 16b67dd4876..858e64cfced 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -584,9 +584,9 @@ $listofreferent = array( 'name'=>"MouvementStockAssociated", 'title'=>"ListMouvementStockProject", 'class'=>'MouvementStock', - 'margin'=>'minus', 'table'=>'stock_mouvement', 'datefieldname'=>'datem', + 'margin'=>'minus', 'disableamount'=>0, 'test'=>($conf->stock->enabled && $user->rights->stock->mouvement->lire && !empty($conf->global->STOCK_MOVEMENT_INTO_PROJECT_OVERVIEW))), 'salaries'=>array( @@ -752,6 +752,7 @@ $total_revenue_ht = 0; $balance_ht = 0; $balance_ttc = 0; +// Loop on each element type (proposal, sale order, invoices, ...) foreach ($listofreferent as $key => $value) { $parameters = array( 'total_revenue_ht' =>& $total_revenue_ht, @@ -787,6 +788,7 @@ foreach ($listofreferent as $key => $value) { $total_ht = 0; $total_ttc = 0; + // Loop on each object for the current element type $num = count($elementarray); for ($i = 0; $i < $num; $i++) { $tmp = explode('_', $elementarray[$i]); @@ -871,7 +873,7 @@ foreach ($listofreferent as $key => $value) { $defaultvat = get_default_tva($mysoc, $mysoc); $total_ttc_by_line = price2num($total_ht_by_line * (1 + ($defaultvat / 100)), 'MT'); } elseif ($key == 'loan') { - $total_ttc_by_line = $total_ht_by_line; // For loan there is actually no taxe managed in Dolibarr + $total_ttc_by_line = $total_ht_by_line; // For loan there is actually no taxe managed in Dolibarr } else { $total_ttc_by_line = $element->total_ttc; } @@ -892,19 +894,14 @@ foreach ($listofreferent as $key => $value) { } // Each element with at least one line is output - $qualifiedforfinalprofit = true; - if ($key == 'intervention' && empty($conf->global->PROJECT_INCLUDE_INTERVENTION_AMOUNT_IN_PROFIT)) { - $qualifiedforfinalprofit = false; - } - //var_dump($key.' '.$qualifiedforfinalprofit); // Calculate margin - if ($qualifiedforfinalprofit) { - if ($margin == 'add') { + if ($margin) { + if ($margin === 'add') { $total_revenue_ht += $total_ht; } - if ($margin != "add") { // Revert sign + if ($margin === "minus") { // Revert sign $total_ht = -$total_ht; $total_ttc = -$total_ttc; } @@ -923,10 +920,10 @@ foreach ($listofreferent as $key => $value) { if ($key == 'intervention' && !$qualifiedforfinalprofit) { print ''.$form->textwithpicto($langs->trans("NA"), $langs->trans("AmountOfInteventionNotIncludedByDefault")).''; } else { - print price($total_ht); if ($key == 'propal') { print ''.$form->textwithpicto('', $langs->trans("SignedOnly")).''; } + print price($total_ht); } print ''; // Amount TTC @@ -934,10 +931,10 @@ foreach ($listofreferent as $key => $value) { if ($key == 'intervention' && !$qualifiedforfinalprofit) { print ''.$form->textwithpicto($langs->trans("NA"), $langs->trans("AmountOfInteventionNotIncludedByDefault")).''; } else { - print price($total_ttc); if ($key == 'propal') { print ''.$form->textwithpicto('', $langs->trans("SignedOnly")).''; } + print price($total_ttc); } print ''; print ''; From d04043f3d823e3a203501b792086b854cc5c06f7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 15 Feb 2023 17:57:19 +0100 Subject: [PATCH 111/607] FIX Profit calculation on project preview tab. --- htdocs/projet/element.php | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 80fccce7912..b8981dd07f2 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -579,9 +579,9 @@ $listofreferent = array( 'name'=>"MouvementStockAssociated", 'title'=>"ListMouvementStockProject", 'class'=>'MouvementStock', - 'margin'=>'minus', 'table'=>'stock_mouvement', 'datefieldname'=>'datem', + 'margin'=>'minus', 'disableamount'=>0, 'test'=>($conf->stock->enabled && $user->rights->stock->mouvement->lire && !empty($conf->global->STOCK_MOVEMENT_INTO_PROJECT_OVERVIEW))), 'salaries'=>array( @@ -747,6 +747,7 @@ $total_revenue_ht = 0; $balance_ht = 0; $balance_ttc = 0; +// Loop on each element type (proposal, sale order, invoices, ...) foreach ($listofreferent as $key => $value) { $parameters = array( 'total_revenue_ht' =>& $total_revenue_ht, @@ -782,6 +783,7 @@ foreach ($listofreferent as $key => $value) { $total_ht = 0; $total_ttc = 0; + // Loop on each object for the current element type $num = count($elementarray); for ($i = 0; $i < $num; $i++) { $tmp = explode('_', $elementarray[$i]); @@ -866,7 +868,7 @@ foreach ($listofreferent as $key => $value) { $defaultvat = get_default_tva($mysoc, $mysoc); $total_ttc_by_line = price2num($total_ht_by_line * (1 + ($defaultvat / 100)), 'MT'); } elseif ($key == 'loan') { - $total_ttc_by_line = $total_ht_by_line; // For loan there is actually no taxe managed in Dolibarr + $total_ttc_by_line = $total_ht_by_line; // For loan there is actually no taxe managed in Dolibarr } else { $total_ttc_by_line = $element->total_ttc; } @@ -887,19 +889,14 @@ foreach ($listofreferent as $key => $value) { } // Each element with at least one line is output - $qualifiedforfinalprofit = true; - if ($key == 'intervention' && empty($conf->global->PROJECT_INCLUDE_INTERVENTION_AMOUNT_IN_PROFIT)) { - $qualifiedforfinalprofit = false; - } - //var_dump($key.' '.$qualifiedforfinalprofit); // Calculate margin - if ($qualifiedforfinalprofit) { - if ($margin == 'add') { + if ($margin) { + if ($margin === 'add') { $total_revenue_ht += $total_ht; } - if ($margin != "add") { // Revert sign + if ($margin === "minus") { // Revert sign $total_ht = -$total_ht; $total_ttc = -$total_ttc; } @@ -918,10 +915,10 @@ foreach ($listofreferent as $key => $value) { if ($key == 'intervention' && !$qualifiedforfinalprofit) { print ''.$form->textwithpicto($langs->trans("NA"), $langs->trans("AmountOfInteventionNotIncludedByDefault")).''; } else { - print price($total_ht); if ($key == 'propal') { print ''.$form->textwithpicto('', $langs->trans("SignedOnly")).''; } + print price($total_ht); } print ''; // Amount TTC @@ -929,10 +926,10 @@ foreach ($listofreferent as $key => $value) { if ($key == 'intervention' && !$qualifiedforfinalprofit) { print ''.$form->textwithpicto($langs->trans("NA"), $langs->trans("AmountOfInteventionNotIncludedByDefault")).''; } else { - print price($total_ttc); if ($key == 'propal') { print ''.$form->textwithpicto('', $langs->trans("SignedOnly")).''; } + print price($total_ttc); } print ''; print ''; From 32d27887b11e757ba00032c82da87a7c30bef5c8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 15 Feb 2023 18:11:25 +0100 Subject: [PATCH 112/607] Fix message for profit calculation --- htdocs/langs/en_US/interventions.lang | 2 +- htdocs/projet/element.php | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/langs/en_US/interventions.lang b/htdocs/langs/en_US/interventions.lang index ef5df43e546..bce9c04aeb3 100644 --- a/htdocs/langs/en_US/interventions.lang +++ b/htdocs/langs/en_US/interventions.lang @@ -50,7 +50,7 @@ UseDateWithoutHourOnFichinter=Hides hours and minutes off the date field for int InterventionStatistics=Statistics of interventions NbOfinterventions=No. of intervention cards NumberOfInterventionsByMonth=No. of intervention cards by month (date of validation) -AmountOfInteventionNotIncludedByDefault=Amount of intervention is not included by default into profit (in most cases, timesheets are used to count time spent). Add option PROJECT_INCLUDE_INTERVENTION_AMOUNT_IN_PROFIT to 1 into home-setup-other to include them. +AmountOfInteventionNotIncludedByDefault=Amount of intervention is not included by default into profit (in most cases, timesheets are used to count time spent). You can use PROJECT_ELEMENTS_FOR_ADD_MARGIN and PROJECT_ELEMENTS_FOR_MINUS_MARGIN option into home-setup-other to complete list of element included into profit. InterId=Intervention id InterRef=Intervention ref. InterDateCreation=Date creation intervention diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index b8981dd07f2..cebe109b0c5 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -469,7 +469,7 @@ $listofreferent = array( 'table'=>'fichinter', 'datefieldname'=>'date_valid', 'disableamount'=>0, - 'margin'=>'minus', + 'margin'=>'', 'urlnew'=>DOL_URL_ROOT.'/fichinter/card.php?action=create&origin=project&originid='.$id.'&socid='.$socid.'&backtopage='.urlencode($_SERVER['PHP_SELF'].'?id='.$id), 'lang'=>'interventions', 'buttonnew'=>'AddIntervention', @@ -912,7 +912,7 @@ foreach ($listofreferent as $key => $value) { print ''.$i.''; // Amount HT print ''; - if ($key == 'intervention' && !$qualifiedforfinalprofit) { + if ($key == 'intervention' && !$margin) { print ''.$form->textwithpicto($langs->trans("NA"), $langs->trans("AmountOfInteventionNotIncludedByDefault")).''; } else { if ($key == 'propal') { @@ -923,7 +923,7 @@ foreach ($listofreferent as $key => $value) { print ''; // Amount TTC print ''; - if ($key == 'intervention' && !$qualifiedforfinalprofit) { + if ($key == 'intervention' && !$margin) { print ''.$form->textwithpicto($langs->trans("NA"), $langs->trans("AmountOfInteventionNotIncludedByDefault")).''; } else { if ($key == 'propal') { From b57d1ed26372b7cc6076531bb29ad912a7fee3d2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 15 Feb 2023 17:57:19 +0100 Subject: [PATCH 113/607] FIX Profit calculation on project preview tab. --- htdocs/projet/element.php | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index c805552d7a5..7b1179ed597 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -581,9 +581,9 @@ $listofreferent = array( 'name'=>"MouvementStockAssociated", 'title'=>"ListMouvementStockProject", 'class'=>'MouvementStock', - 'margin'=>'minus', 'table'=>'stock_mouvement', 'datefieldname'=>'datem', + 'margin'=>'minus', 'disableamount'=>0, 'test'=>($conf->stock->enabled && $user->rights->stock->mouvement->lire && !empty($conf->global->STOCK_MOVEMENT_INTO_PROJECT_OVERVIEW))), 'salaries'=>array( @@ -749,6 +749,7 @@ $total_revenue_ht = 0; $balance_ht = 0; $balance_ttc = 0; +// Loop on each element type (proposal, sale order, invoices, ...) foreach ($listofreferent as $key => $value) { $parameters = array( 'total_revenue_ht' =>& $total_revenue_ht, @@ -784,6 +785,7 @@ foreach ($listofreferent as $key => $value) { $total_ht = 0; $total_ttc = 0; + // Loop on each object for the current element type $num = count($elementarray); for ($i = 0; $i < $num; $i++) { $tmp = explode('_', $elementarray[$i]); @@ -868,7 +870,7 @@ foreach ($listofreferent as $key => $value) { $defaultvat = get_default_tva($mysoc, $mysoc); $total_ttc_by_line = price2num($total_ht_by_line * (1 + ($defaultvat / 100)), 'MT'); } elseif ($key == 'loan') { - $total_ttc_by_line = $total_ht_by_line; // For loan there is actually no taxe managed in Dolibarr + $total_ttc_by_line = $total_ht_by_line; // For loan there is actually no taxe managed in Dolibarr } else { $total_ttc_by_line = $element->total_ttc; } @@ -889,19 +891,14 @@ foreach ($listofreferent as $key => $value) { } // Each element with at least one line is output - $qualifiedforfinalprofit = true; - if ($key == 'intervention' && empty($conf->global->PROJECT_INCLUDE_INTERVENTION_AMOUNT_IN_PROFIT)) { - $qualifiedforfinalprofit = false; - } - //var_dump($key.' '.$qualifiedforfinalprofit); // Calculate margin - if ($qualifiedforfinalprofit) { - if ($margin == 'add') { + if ($margin) { + if ($margin === 'add') { $total_revenue_ht += $total_ht; } - if ($margin != "add") { // Revert sign + if ($margin === "minus") { // Revert sign $total_ht = -$total_ht; $total_ttc = -$total_ttc; } @@ -920,10 +917,10 @@ foreach ($listofreferent as $key => $value) { if ($key == 'intervention' && !$qualifiedforfinalprofit) { print ''.$form->textwithpicto($langs->trans("NA"), $langs->trans("AmountOfInteventionNotIncludedByDefault")).''; } else { - print price($total_ht); if ($key == 'propal') { print ''.$form->textwithpicto('', $langs->trans("SignedOnly")).''; } + print price($total_ht); } print ''; // Amount TTC @@ -931,10 +928,10 @@ foreach ($listofreferent as $key => $value) { if ($key == 'intervention' && !$qualifiedforfinalprofit) { print ''.$form->textwithpicto($langs->trans("NA"), $langs->trans("AmountOfInteventionNotIncludedByDefault")).''; } else { - print price($total_ttc); if ($key == 'propal') { print ''.$form->textwithpicto('', $langs->trans("SignedOnly")).''; } + print price($total_ttc); } print ''; print ''; From 89817c8ead0cdb718e0d9bb44c16fef619e01d53 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 15 Feb 2023 18:11:25 +0100 Subject: [PATCH 114/607] Fix message for profit calculation --- htdocs/langs/en_US/interventions.lang | 2 +- htdocs/projet/element.php | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/langs/en_US/interventions.lang b/htdocs/langs/en_US/interventions.lang index 51079fca278..513bfebd78f 100644 --- a/htdocs/langs/en_US/interventions.lang +++ b/htdocs/langs/en_US/interventions.lang @@ -50,7 +50,7 @@ UseDateWithoutHourOnFichinter=Hides hours and minutes off the date field for int InterventionStatistics=Statistics of interventions NbOfinterventions=No. of intervention cards NumberOfInterventionsByMonth=No. of intervention cards by month (date of validation) -AmountOfInteventionNotIncludedByDefault=Amount of intervention is not included by default into profit (in most cases, timesheets are used to count time spent). Add option PROJECT_INCLUDE_INTERVENTION_AMOUNT_IN_PROFIT to 1 into home-setup-other to include them. +AmountOfInteventionNotIncludedByDefault=Amount of intervention is not included by default into profit (in most cases, timesheets are used to count time spent). You can use PROJECT_ELEMENTS_FOR_ADD_MARGIN and PROJECT_ELEMENTS_FOR_MINUS_MARGIN option into home-setup-other to complete list of element included into profit. InterId=Intervention id InterRef=Intervention ref. InterDateCreation=Date creation intervention diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 7b1179ed597..537215896a1 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -471,7 +471,7 @@ $listofreferent = array( 'table'=>'fichinter', 'datefieldname'=>'date_valid', 'disableamount'=>0, - 'margin'=>'minus', + 'margin'=>'', 'urlnew'=>DOL_URL_ROOT.'/fichinter/card.php?action=create&origin=project&originid='.$id.'&socid='.$socid.'&backtopage='.urlencode($_SERVER['PHP_SELF'].'?id='.$id), 'lang'=>'interventions', 'buttonnew'=>'AddIntervention', @@ -914,7 +914,7 @@ foreach ($listofreferent as $key => $value) { print ''.$i.''; // Amount HT print ''; - if ($key == 'intervention' && !$qualifiedforfinalprofit) { + if ($key == 'intervention' && !$margin) { print ''.$form->textwithpicto($langs->trans("NA"), $langs->trans("AmountOfInteventionNotIncludedByDefault")).''; } else { if ($key == 'propal') { @@ -925,7 +925,7 @@ foreach ($listofreferent as $key => $value) { print ''; // Amount TTC print ''; - if ($key == 'intervention' && !$qualifiedforfinalprofit) { + if ($key == 'intervention' && !$margin) { print ''.$form->textwithpicto($langs->trans("NA"), $langs->trans("AmountOfInteventionNotIncludedByDefault")).''; } else { if ($key == 'propal') { From ec1f6de6ac78cd5bbc798e0c632efd1aaad1b6fe Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 15 Feb 2023 18:23:02 +0100 Subject: [PATCH 115/607] Fix message --- htdocs/projet/element.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index e25997f2957..a0af70095f6 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -917,7 +917,7 @@ foreach ($listofreferent as $key => $value) { print ''.$i.''; // Amount HT print ''; - if ($key == 'intervention' && !$qualifiedforfinalprofit) { + if ($key == 'intervention' && !$margin) { print ''.$form->textwithpicto($langs->trans("NA"), $langs->trans("AmountOfInteventionNotIncludedByDefault")).''; } else { if ($key == 'propal') { @@ -928,7 +928,7 @@ foreach ($listofreferent as $key => $value) { print ''; // Amount TTC print ''; - if ($key == 'intervention' && !$qualifiedforfinalprofit) { + if ($key == 'intervention' && !$margin) { print ''.$form->textwithpicto($langs->trans("NA"), $langs->trans("AmountOfInteventionNotIncludedByDefault")).''; } else { if ($key == 'propal') { From 6a7c5d2715de32e11dde1eae028b1ab560368f37 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 15 Feb 2023 18:52:36 +0100 Subject: [PATCH 116/607] Fix format of stock qty --- htdocs/product/list.php | 6 +++--- htdocs/product/reassort.php | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 14d43e038f1..3f26c3bade6 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -1268,7 +1268,7 @@ if (!empty($arrayfields['p.stock']['checked'])) { print_liste_field_titre($arrayfields['p.stock']['label'], $_SERVER["PHP_SELF"], "p.stock", "", $param, '', $sortfield, $sortorder, 'right '); } if (!empty($arrayfields['stock_virtual']['checked'])) { - print_liste_field_titre($arrayfields['stock_virtual']['label'], $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder, 'right '); + print_liste_field_titre($arrayfields['stock_virtual']['label'], $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder, 'right ', 'VirtualStockDesc'); } if (!empty($arrayfields['p.tobatch']['checked'])) { print_liste_field_titre($arrayfields['p.tobatch']['label'], $_SERVER["PHP_SELF"], "p.tobatch", "", $param, '', $sortfield, $sortorder, 'center '); @@ -1828,7 +1828,7 @@ while ($i < min($num, $limit)) { print img_warning($langs->trans("StockLowerThanLimit", $obj->seuil_stock_alerte)).' '; } if ($usercancreadprice) { - print price(price2num($product_static->stock_reel, 'MS')); + print price(price2num($product_static->stock_reel, 'MS'), 0, $langs, 1, 0); } } print ''; @@ -1844,7 +1844,7 @@ while ($i < min($num, $limit)) { print img_warning($langs->trans("StockLowerThanLimit", $obj->seuil_stock_alerte)).' '; } if ($usercancreadprice) { - print price(price2num($product_static->stock_theorique, 'MS')); + print price(price2num($product_static->stock_theorique, 'MS'), 0, $langs, 1, 0); } } print ''; diff --git a/htdocs/product/reassort.php b/htdocs/product/reassort.php index b91ae62f663..f3c354b88a4 100644 --- a/htdocs/product/reassort.php +++ b/htdocs/product/reassort.php @@ -487,7 +487,7 @@ if ($resql) { if ($objp->seuil_stock_alerte != '' && ($objp->stock_physique < $objp->seuil_stock_alerte)) { print img_warning($langs->trans("StockTooLow")).' '; } - print price2num($objp->stock_physique, 'MS'); + print price(price2num($objp->stock_physique, 'MS'), 0, $langs, 1, 0); print ''; // Details per warehouse @@ -495,7 +495,7 @@ if ($resql) { if ($nb_warehouse > 1) { foreach ($warehouses_list as &$wh) { print ''; - print empty($product->stock_warehouse[$wh['id']]->real) ? '0' : $product->stock_warehouse[$wh['id']]->real; + print price(empty($product->stock_warehouse[$wh['id']]->real) ? 0 : $product->stock_warehouse[$wh['id']]->real, 0, $langs, 1, 0); print ''; } } @@ -504,10 +504,10 @@ if ($resql) { // Virtual stock if ($virtualdiffersfromphysical) { print ''; - if ($objp->seuil_stock_alerte != '' && ($product->stock_theorique < $objp->seuil_stock_alerte)) { + if ($objp->seuil_stock_alerte != '' && ($product->stock_theorique < (float) $objp->seuil_stock_alerte)) { print img_warning($langs->trans("StockTooLow")).' '; } - print price2num($product->stock_theorique, 'MS'); + print price(price2num($product->stock_theorique, 'MS'), 0, $langs, 1, 0); print ''; } // Units From c259ca09b8c20d492ae0cc783df5fa0494d80574 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 15 Feb 2023 20:14:48 +0100 Subject: [PATCH 117/607] Enhance script to repair database when stock by lot differ from stock --- htdocs/install/repair.php | 99 +++++++++++++++++++++++---------------- 1 file changed, 59 insertions(+), 40 deletions(-) diff --git a/htdocs/install/repair.php b/htdocs/install/repair.php index 802711f4ff3..1e912b54f95 100644 --- a/htdocs/install/repair.php +++ b/htdocs/install/repair.php @@ -903,9 +903,8 @@ if ($ok && GETPOST('clean_product_stock_batch', 'alpha')) { $sql = "SELECT p.rowid, p.ref, p.tobatch, ps.rowid as psrowid, ps.fk_entrepot, ps.reel, SUM(pb.qty) as reelbatch"; $sql .= " FROM ".MAIN_DB_PREFIX."product as p, ".MAIN_DB_PREFIX."product_stock as ps LEFT JOIN ".MAIN_DB_PREFIX."product_batch as pb ON ps.rowid = pb.fk_product_stock"; $sql .= " WHERE p.rowid = ps.fk_product"; - $sql .= " AND p.tobatch > 0"; $sql .= " GROUP BY p.rowid, p.ref, p.tobatch, ps.rowid, ps.fk_entrepot, ps.reel"; - $sql .= " HAVING reel != SUM(pb.qty) or SUM(pb.qty) IS NULL"; + $sql .= " HAVING (SUM(pb.qty) IS NOT NULL AND reel != SUM(pb.qty)) OR (SUM(pb.qty) IS NULL AND p.tobatch > 0)"; print $sql; $resql = $db->query($sql); if ($resql) { @@ -915,53 +914,73 @@ if ($ok && GETPOST('clean_product_stock_batch', 'alpha')) { $i = 0; while ($i < $num) { $obj = $db->fetch_object($resql); - print 'Product '.$obj->rowid.'-'.$obj->ref.' in warehose '.$obj->fk_entrepot.' -> '.$obj->psrowid.': '.$obj->reel.' (product_stock.reel) != '.($obj->reelbatch ? $obj->reelbatch : '0').' (sum product_batch)'; + print 'Product '.$obj->rowid.'-'.$obj->ref.' in warehouse id='.$obj->fk_entrepot.' -> product_stock.id='.$obj->psrowid.': '.$obj->reel.' (product_stock.reel) != '.($obj->reelbatch ? $obj->reelbatch : '0').' (sum product_batch)'; - // Fix + // Fix is required if ($obj->reel != $obj->reelbatch) { - if ($methodtofix == 'updatebatch') { - // Method 1 - print ' -> Insert qty '.($obj->reel - $obj->reelbatch).' with lot 000000 linked to fk_product_stock='.$obj->psrowid; + if (empty($obj->tobatch)) { + // If product is not a product that support batches, we can clean stock by deleting the product batch lines + print ' -> Delete qty '.$obj->reelbatch.' for any lot linked to fk_product_stock='.$obj->psrowid; + $sql2 = "DELETE FROM ".MAIN_DB_PREFIX."product_batch"; + $sql2 .= " WHERE fk_product_stock = ".$obj->psrowid; + print '
'.$sql2; + if (GETPOST('clean_product_stock_batch') == 'confirmed') { - $sql2 = "INSERT INTO ".MAIN_DB_PREFIX."product_batch(fk_product_stock, batch, qty)"; - $sql2 .= "VALUES(".$obj->psrowid.", '000000', ".($obj->reel - $obj->reelbatch).")"; $resql2 = $db->query($sql2); if (!$resql2) { - // TODO If it fails, we must make update - //$sql2 ="UPDATE ".MAIN_DB_PREFIX."product_batch"; - //$sql2.=" SET ".$obj->psrowid.", '000000', ".($obj->reel - $obj->reelbatch).")"; - //$sql2.=" WHERE fk_product_stock = ".((int) $obj->psrowid) - } - } - } - if ($methodtofix == 'updatestock') { - // Method 2 - print ' -> Update qty of product_stock with qty = '.($obj->reelbatch ? ((float) $obj->reelbatch) : '0').' for ps.rowid = '.((int) $obj->psrowid); - if (GETPOST('clean_product_stock_batch') == 'confirmed') { - $error = 0; - - $db->begin(); - - $sql2 = "UPDATE ".MAIN_DB_PREFIX."product_stock"; - $sql2 .= " SET reel = ".($obj->reelbatch ? ((float) $obj->reelbatch) : '0')." WHERE rowid = ".((int) $obj->psrowid); - $resql2 = $db->query($sql2); - if ($resql2) { - // We update product_stock, so we must fill p.stock into product too. - $sql3 = 'UPDATE '.MAIN_DB_PREFIX.'product p SET p.stock= (SELECT SUM(ps.reel) FROM '.MAIN_DB_PREFIX.'product_stock ps WHERE ps.fk_product = p.rowid)'; - $resql3 = $db->query($sql3); - if (!$resql3) { - $error++; - dol_print_error($db); - } - } else { $error++; dol_print_error($db); } + } + } else { + if ($methodtofix == 'updatebatch') { + // Method 1 + print ' -> Insert qty '.($obj->reel - $obj->reelbatch).' with lot 000000 linked to fk_product_stock='.$obj->psrowid; + $sql2 = "INSERT INTO ".MAIN_DB_PREFIX."product_batch(fk_product_stock, batch, qty)"; + $sql2 .= "VALUES(".$obj->psrowid.", '000000', ".($obj->reel - $obj->reelbatch).")"; + print '
'.$sql2; - if (!$error) { - $db->commit(); - } else { - $db->rollback(); + if (GETPOST('clean_product_stock_batch') == 'confirmed') { + $resql2 = $db->query($sql2); + if (!$resql2) { + // TODO If it fails, we must make update + //$sql2 ="UPDATE ".MAIN_DB_PREFIX."product_batch"; + //$sql2.=" SET ".$obj->psrowid.", '000000', ".($obj->reel - $obj->reelbatch).")"; + //$sql2.=" WHERE fk_product_stock = ".((int) $obj->psrowid) + } + } + } + if ($methodtofix == 'updatestock') { + // Method 2 + print ' -> Update qty of product_stock with qty = '.($obj->reelbatch ? ((float) $obj->reelbatch) : '0').' for ps.rowid = '.((int) $obj->psrowid); + $sql2 = "UPDATE ".MAIN_DB_PREFIX."product_stock"; + $sql2 .= " SET reel = ".($obj->reelbatch ? ((float) $obj->reelbatch) : '0')." WHERE rowid = ".((int) $obj->psrowid); + print '
'.$sql2; + + if (GETPOST('clean_product_stock_batch') == 'confirmed') { + $error = 0; + + $db->begin(); + + $resql2 = $db->query($sql2); + if ($resql2) { + // We update product_stock, so we must fill p.stock into product too. + $sql3 = 'UPDATE '.MAIN_DB_PREFIX.'product p SET p.stock= (SELECT SUM(ps.reel) FROM '.MAIN_DB_PREFIX.'product_stock ps WHERE ps.fk_product = p.rowid)'; + $resql3 = $db->query($sql3); + if (!$resql3) { + $error++; + dol_print_error($db); + } + } else { + $error++; + dol_print_error($db); + } + + if (!$error) { + $db->commit(); + } else { + $db->rollback(); + } } } } From 94002bf85c5299f4d02c129f388a2b0332c93e81 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 15 Feb 2023 20:38:38 +0100 Subject: [PATCH 118/607] Fix sql --- htdocs/install/repair.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/install/repair.php b/htdocs/install/repair.php index 1e912b54f95..11f94ac00d6 100644 --- a/htdocs/install/repair.php +++ b/htdocs/install/repair.php @@ -922,7 +922,7 @@ if ($ok && GETPOST('clean_product_stock_batch', 'alpha')) { // If product is not a product that support batches, we can clean stock by deleting the product batch lines print ' -> Delete qty '.$obj->reelbatch.' for any lot linked to fk_product_stock='.$obj->psrowid; $sql2 = "DELETE FROM ".MAIN_DB_PREFIX."product_batch"; - $sql2 .= " WHERE fk_product_stock = ".$obj->psrowid; + $sql2 .= " WHERE fk_product_stock = ".((int) $obj->psrowid); print '
'.$sql2; if (GETPOST('clean_product_stock_batch') == 'confirmed') { @@ -937,7 +937,7 @@ if ($ok && GETPOST('clean_product_stock_batch', 'alpha')) { // Method 1 print ' -> Insert qty '.($obj->reel - $obj->reelbatch).' with lot 000000 linked to fk_product_stock='.$obj->psrowid; $sql2 = "INSERT INTO ".MAIN_DB_PREFIX."product_batch(fk_product_stock, batch, qty)"; - $sql2 .= "VALUES(".$obj->psrowid.", '000000', ".($obj->reel - $obj->reelbatch).")"; + $sql2 .= "VALUES(".((int) $obj->psrowid).", '000000', ".((float) ($obj->reel - $obj->reelbatch)).")"; print '
'.$sql2; if (GETPOST('clean_product_stock_batch') == 'confirmed') { From 6163f84d258df4cf87e01cebdf7b11a549bbe9b1 Mon Sep 17 00:00:00 2001 From: Eric Seigne Date: Wed, 15 Feb 2023 22:10:03 +0100 Subject: [PATCH 119/607] move log after variable updates to get good informations in logs --- htdocs/core/class/CMailFile.class.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/class/CMailFile.class.php b/htdocs/core/class/CMailFile.class.php index 94fb05d5346..47f8fd900cb 100644 --- a/htdocs/core/class/CMailFile.class.php +++ b/htdocs/core/class/CMailFile.class.php @@ -184,9 +184,6 @@ class CMailFile // On defini alternative_boundary $this->alternative_boundary = 'mul_'.dol_hash(uniqid("dolibarr3"), 3); // Force md5 hash (does not contains special chars) - dol_syslog("CMailFile::CMailfile: sendmode=".$this->sendmode." charset=".$conf->file->character_set_client." from=$from, to=$to, addr_cc=$addr_cc, addr_bcc=$addr_bcc, errors_to=$errors_to, replyto=$replyto trackid=$trackid sendcontext=$sendcontext", LOG_DEBUG); - dol_syslog("CMailFile::CMailfile: subject=".$subject.", deliveryreceipt=".$deliveryreceipt.", msgishtml=".$msgishtml, LOG_DEBUG); - if (empty($subject)) { dol_syslog("CMailFile::CMailfile: Try to send an email with empty subject"); $this->error = 'ErrorSubjectIsRequired'; @@ -314,6 +311,9 @@ class CMailFile } } + dol_syslog("CMailFile::CMailfile: sendmode=".$this->sendmode." charset=".$conf->file->character_set_client." from=$from, to=$to, addr_cc=$addr_cc, addr_bcc=$addr_bcc, errors_to=$errors_to, replyto=$replyto trackid=$trackid sendcontext=$sendcontext", LOG_DEBUG); + dol_syslog("CMailFile::CMailfile: subject=".$subject.", deliveryreceipt=".$deliveryreceipt.", msgishtml=".$msgishtml, LOG_DEBUG); + // We set all data according to choosed sending method. // We also set a value for ->msgid if ($this->sendmode == 'mail') { From 4ed5f231be4e443a30bc4c7dd94a2dccc8fa09aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Wed, 15 Feb 2023 22:13:23 +0100 Subject: [PATCH 120/607] fix sql actioncomm index is id not rowid --- htdocs/eventorganization/conferenceorbooth_list.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/eventorganization/conferenceorbooth_list.php b/htdocs/eventorganization/conferenceorbooth_list.php index 4d8ea00c421..1f31690052f 100644 --- a/htdocs/eventorganization/conferenceorbooth_list.php +++ b/htdocs/eventorganization/conferenceorbooth_list.php @@ -1,6 +1,7 @@ * Copyright (C) 2021 Florian Henry + * Copyright (C) 2023 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 @@ -531,7 +532,7 @@ $sqlfields = $sql; // $sql fields to remove for count total $sql .= " FROM ".MAIN_DB_PREFIX.$object->table_element." as t"; if (isset($extrafields->attributes[$object->table_element]['label']) && is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) { - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element."_extrafields as ef on (t.rowid = ef.fk_object)"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element."_extrafields as ef on (t.id = ef.fk_object)"; } $sql .= " INNER JOIN ".MAIN_DB_PREFIX."c_actioncomm as cact ON cact.id=t.fk_action AND cact.module LIKE '%@eventorganization'"; // Add table from hooks From ec706fa13ee8995d0e9066102f54a5559ab5d230 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 16 Feb 2023 00:42:19 +0100 Subject: [PATCH 121/607] CSS --- htdocs/core/class/commonobject.class.php | 15 ++++++++++++--- htdocs/core/lib/functions.lib.php | 2 +- htdocs/theme/eldy/global.inc.php | 4 ++++ htdocs/theme/md/style.css.php | 8 ++++++-- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 9eb66fa0745..0ac16532246 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -873,8 +873,11 @@ abstract class CommonObject $out .= img_picto($langs->trans("Address"), 'map-marker-alt'); $out .= ' '; } - $out .= dol_print_address($coords, 'address_'.$htmlkey.'_'.$this->id, $this->element, $this->id, 1, ', '); - $outdone++; + $address = dol_print_address($coords, 'address_'.$htmlkey.'_'.$this->id, $this->element, $this->id, 1, ', '); + if ($address) { + $out .= $address; + $outdone++; + } $outdone++; // List of extra languages @@ -900,6 +903,7 @@ abstract class CommonObject // If there is extra languages foreach ($arrayoflangcode as $extralangcode) { $s = picto_from_langcode($extralangcode, 'class="pictoforlang paddingright"'); + // This also call dol_format_address() $coords = $this->getFullAddress(1, ', ', $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT, $extralangcode); $htmltext .= $s.dol_print_address($coords, 'address_'.$htmlkey.'_'.$this->id, $this->element, $this->id, 1, ', '); } @@ -908,7 +912,8 @@ abstract class CommonObject } } - if (!in_array($this->country_code, $countriesusingstate) && empty($conf->global->MAIN_FORCE_STATE_INTO_ADDRESS) // If MAIN_FORCE_STATE_INTO_ADDRESS is on, state is already returned previously with getFullAddress + // If MAIN_FORCE_STATE_INTO_ADDRESS is on, state is already returned previously with getFullAddress + if (!in_array($this->country_code, $countriesusingstate) && empty($conf->global->MAIN_FORCE_STATE_INTO_ADDRESS) && empty($conf->global->SOCIETE_DISABLE_STATE) && $this->state) { if (!empty($conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT) && $conf->global->MAIN_SHOW_REGION_IN_STATE_SELECT == 1 && $this->region) { $out .= ($outdone ? ' - ' : '').$this->region.' - '.$this->state; @@ -918,6 +923,10 @@ abstract class CommonObject $outdone++; } + if ($outdone) { + $out = '
'.$out.'
'; + } + if (!empty($this->phone) || !empty($this->phone_pro) || !empty($this->phone_mobile) || !empty($this->phone_perso) || !empty($this->fax) || !empty($this->office_phone) || !empty($this->user_mobile) || !empty($this->office_fax)) { $out .= ($outdone ? '
' : ''); } diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 0f42862b724..79e3c3e05c7 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2338,7 +2338,7 @@ function dol_banner_tab($object, $paramid, $morehtml = '', $shownav = 1, $fieldi if (method_exists($object, 'getBannerAddress') && !in_array($object->element, array('product', 'bookmark', 'ecm_directories', 'ecm_files'))) { $moreaddress = $object->getBannerAddress('refaddress', $object); if ($moreaddress) { - $morehtmlref .= '
'; + $morehtmlref .= '
'; $morehtmlref .= $moreaddress; $morehtmlref .= '
'; } diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 23bb38e8d5a..b006978d5fa 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -3956,6 +3956,10 @@ div.refidno { font-size: ; line-height: 1.4em; } +div.refaddress div.address { + line-height: 1.2em; + font-size: 0.95em; +} div.refidno form { display: inline-block; } diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 8c2934fb227..945befdae08 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -4039,7 +4039,7 @@ div.refidpadding { div.refid { font-weight: bold; color: var(--colortexttitlenotab); - font-size: 160%; + font-size: 120%; } a.refid { color: var(--colortexttitlenotab) !important; @@ -4049,11 +4049,15 @@ div.refidno { font-weight: normal; color: var(--refidnocolor); font-size: ; - line-height: 21px; + line-height: 1.3em; } div.refidno form { display: inline-block; } +div.refaddress div.address { + line-height: 1.2em; + font-size: 0.9em; +} div.pagination { float: right; From a3377113ae3b0753b6f3e1c972284a89e1569df7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 16 Feb 2023 02:26:08 +0100 Subject: [PATCH 122/607] Fix warnings --- htdocs/core/class/smtps.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/smtps.class.php b/htdocs/core/class/smtps.class.php index 92b835caf7f..135d9d9e8de 100644 --- a/htdocs/core/class/smtps.class.php +++ b/htdocs/core/class/smtps.class.php @@ -231,7 +231,7 @@ class SMTPs private $_errorsTo = ''; private $_deliveryReceipt = 0; private $_trackId = ''; - private $_moreInHeader = ''; + private $_moreinheader = ''; /** * An array of options for stream_context_create() @@ -1267,7 +1267,7 @@ class SMTPs $_RCPT_list = array(); // walk down Recipients array and pull just email addresses foreach ($this->_msgRecipients as $_host => $_list) { - if ($this->_msgRecipients[$_host][$_which]) { + if (!empty($this->_msgRecipients[$_host][$_which])) { foreach ($this->_msgRecipients[$_host][$_which] as $_addr => $_realName) { if ($_realName) { // @CHANGE LDR $_realName = '"'.$_realName.'"'; From f24ffe5b91da2b2a3187cf4a98a8ad4ac41645b6 Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Thu, 16 Feb 2023 10:20:37 +0100 Subject: [PATCH 123/607] Supplier proposal - List - SQL error on total_ht --- htdocs/supplier_proposal/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php index ba68fb82a77..c179b44146e 100644 --- a/htdocs/supplier_proposal/list.php +++ b/htdocs/supplier_proposal/list.php @@ -344,7 +344,7 @@ if ($search_login) { $sql .= natural_search(array('u.lastname', 'u.firstname', 'u.login'), $search_login); } if ($search_montant_ht) { - $sql .= natural_search('sp.total_ht=', $search_montant_ht, 1); + $sql .= natural_search('sp.total_ht', $search_montant_ht, 1); } if ($search_montant_vat != '') { $sql .= natural_search("sp.total_tva", $search_montant_vat, 1); From 9e1b8bcd4ca7aa6e53730a9e9147a2ae6cc2e004 Mon Sep 17 00:00:00 2001 From: GregM Date: Thu, 16 Feb 2023 11:33:43 +0100 Subject: [PATCH 124/607] FIX parse error and NAN --- htdocs/compta/resultat/result.php | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/htdocs/compta/resultat/result.php b/htdocs/compta/resultat/result.php index bf7eee28609..4d2aa61673f 100644 --- a/htdocs/compta/resultat/result.php +++ b/htdocs/compta/resultat/result.php @@ -333,6 +333,9 @@ if ($modecompta == 'CREANCES-DETTES') { // Previous Fiscal year (N-1) foreach ($sommes as $code => $det) { + if (is_null($det['NP'])){ + $det['NP'] = 0; + } $vars[$code] = $det['NP']; } @@ -340,8 +343,11 @@ if ($modecompta == 'CREANCES-DETTES') { //var_dump($result); //$r = $AccCat->calculate($result); + $r = dol_eval($result, 1, 1, '1'); - //var_dump($r); + if (is_nan($r)){ + $r = 0; + } print ''.price($r).''; @@ -360,6 +366,9 @@ if ($modecompta == 'CREANCES-DETTES') { //$r = $AccCat->calculate($result); $r = dol_eval($result, 1, 1, 1); + if (is_nan($r)){ + $r = 0; + } print ''.price($r).''; $sommes[$code]['N'] += $r; @@ -374,6 +383,9 @@ if ($modecompta == 'CREANCES-DETTES') { //$r = $AccCat->calculate($result); $r = dol_eval($result, 1, 1, 1); + if (is_nan($r)){ + $r = 0; + } print ''.price($r).''; $sommes[$code]['M'][$k] += $r; @@ -388,6 +400,9 @@ if ($modecompta == 'CREANCES-DETTES') { //$r = $AccCat->calculate($result); $r = dol_eval($result, 1, 1, 1); + if (is_nan($r)){ + $r = 0; + } print ''.price($r).''; $sommes[$code]['M'][$k] += $r; @@ -416,8 +431,10 @@ if ($modecompta == 'CREANCES-DETTES') { $arrayofaccountforfilter = array(); - foreach ($cpts as $i => $cpt) { // Loop on each account. - $arrayofaccountforfilter[] = $cpt['account_number']; + foreach ($cpts as $i => $cpt) {// Loop on each account. + if (!empty($cpt['account_number'])){ + $arrayofaccountforfilter[] = $cpt['account_number']; + } } // N-1 From 390e7c83b2ae12861b3c43d90da8c8b97174e0a9 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Thu, 16 Feb 2023 10:48:41 +0000 Subject: [PATCH 125/607] Fixing style errors. --- htdocs/compta/resultat/result.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/compta/resultat/result.php b/htdocs/compta/resultat/result.php index 4d2aa61673f..1a31c3d7eb1 100644 --- a/htdocs/compta/resultat/result.php +++ b/htdocs/compta/resultat/result.php @@ -333,7 +333,7 @@ if ($modecompta == 'CREANCES-DETTES') { // Previous Fiscal year (N-1) foreach ($sommes as $code => $det) { - if (is_null($det['NP'])){ + if (is_null($det['NP'])) { $det['NP'] = 0; } $vars[$code] = $det['NP']; @@ -345,7 +345,7 @@ if ($modecompta == 'CREANCES-DETTES') { //$r = $AccCat->calculate($result); $r = dol_eval($result, 1, 1, '1'); - if (is_nan($r)){ + if (is_nan($r)) { $r = 0; } @@ -366,7 +366,7 @@ if ($modecompta == 'CREANCES-DETTES') { //$r = $AccCat->calculate($result); $r = dol_eval($result, 1, 1, 1); - if (is_nan($r)){ + if (is_nan($r)) { $r = 0; } @@ -383,7 +383,7 @@ if ($modecompta == 'CREANCES-DETTES') { //$r = $AccCat->calculate($result); $r = dol_eval($result, 1, 1, 1); - if (is_nan($r)){ + if (is_nan($r)) { $r = 0; } @@ -400,7 +400,7 @@ if ($modecompta == 'CREANCES-DETTES') { //$r = $AccCat->calculate($result); $r = dol_eval($result, 1, 1, 1); - if (is_nan($r)){ + if (is_nan($r)) { $r = 0; } @@ -432,7 +432,7 @@ if ($modecompta == 'CREANCES-DETTES') { $arrayofaccountforfilter = array(); foreach ($cpts as $i => $cpt) {// Loop on each account. - if (!empty($cpt['account_number'])){ + if (!empty($cpt['account_number'])) { $arrayofaccountforfilter[] = $cpt['account_number']; } } From b3bdfc342d9f15bebef0995897895f958d2f2420 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 16 Feb 2023 12:20:39 +0100 Subject: [PATCH 126/607] Debug v17. Missing style amount and bank link --- htdocs/loan/card.php | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index a45577b6608..1fd571a9a91 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -1,4 +1,6 @@ * Copyright (C) 2015 Frederic France * Copyright (C) 2017 Laurent Destailleur @@ -37,6 +39,7 @@ if (isModEnabled('accounting')) { } require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; // Load translation files required by the page $langs->loadLangs(array("compta", "bills", "loan")); @@ -632,12 +635,14 @@ if ($id > 0) { /* * Payments */ - $sql = "SELECT p.rowid, p.num_payment, datep as dp,"; + $sql = "SELECT p.rowid, p.num_payment, p.datep as dp,"; $sql .= " p.amount_capital, p.amount_insurance, p.amount_interest,"; + $sql .= " b.fk_account,"; $sql .= " c.libelle as paiement_type"; $sql .= " FROM ".MAIN_DB_PREFIX."payment_loan as p"; - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as c ON p.fk_typepayment = c.id"; - $sql .= ", ".MAIN_DB_PREFIX."loan as l"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."bank as b ON p.fk_bank = b.rowid"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as c ON p.fk_typepayment = c.id,"; + $sql .= " ".MAIN_DB_PREFIX."loan as l"; $sql .= " WHERE p.fk_loan = ".((int) $id); $sql .= " AND p.fk_loan = l.rowid"; $sql .= " AND l.entity IN ( ".getEntity('loan').")"; @@ -658,11 +663,14 @@ if ($id > 0) { print ''.$langs->trans("RefPayment").''; print ''.$langs->trans("Date").''; print ''.$langs->trans("Type").''; + print ''.$langs->trans("BankAccount").''; print ''.$langs->trans("Insurance").''; print ''.$langs->trans("Interest").''; print ''.$langs->trans("LoanCapital").''; print ''; + $conf->cache['bankaccount'] = array(); + while ($i < $num) { $objp = $db->fetch_object($resql); @@ -670,9 +678,19 @@ if ($id > 0) { print ''.img_object($langs->trans("Payment"), "payment").' '.$objp->rowid.''; print ''.dol_print_date($db->jdate($objp->dp), 'day')."\n"; print "".$objp->paiement_type.' '.$objp->num_payment."\n"; - print ''.price($objp->amount_insurance, 0, $outputlangs, 1, -1, -1, $conf->currency)."\n"; - print ''.price($objp->amount_interest, 0, $outputlangs, 1, -1, -1, $conf->currency)."\n"; - print ''.price($objp->amount_capital, 0, $outputlangs, 1, -1, -1, $conf->currency)."\n"; + print ""; + if (!empty($conf->cache['bankaccount'][$objp->fk_account])) { + $tmpbank = $conf->cache['bankaccount'][$objp->fk_account]; + } else { + $tmpbank = new Account($db); + $tmpbank->fetch($objp->fk_account); + $conf->cache['bankaccount'][$objp->fk_account] = $tmpbank; + } + print $tmpbank->getNomUrl(1); + print "\n"; + print ''.price($objp->amount_insurance, 0, $outputlangs, 1, -1, -1, $conf->currency)."\n"; + print ''.price($objp->amount_interest, 0, $outputlangs, 1, -1, -1, $conf->currency)."\n"; + print ''.price($objp->amount_capital, 0, $outputlangs, 1, -1, -1, $conf->currency)."\n"; print ""; $total_capital += $objp->amount_capital; $i++; @@ -681,12 +699,12 @@ if ($id > 0) { $totalpaid = $total_capital; if ($object->paid == 0 || $object->paid == 2) { - print ''.$langs->trans("AlreadyPaid").' :'.price($totalpaid, 0, $langs, 0, -1, -1, $conf->currency).''; - print ''.$langs->trans("AmountExpected").' :'.price($object->capital, 0, $outputlangs, 1, -1, -1, $conf->currency).''; + print ''.$langs->trans("AlreadyPaid").' :'.price($totalpaid, 0, $langs, 0, -1, -1, $conf->currency).''; + print ''.$langs->trans("AmountExpected").' :'.price($object->capital, 0, $outputlangs, 1, -1, -1, $conf->currency).''; $staytopay = $object->capital - $totalpaid; - print ''.$langs->trans("RemainderToPay").' :'; + print ''.$langs->trans("RemainderToPay").' :'; print ''; print price($staytopay, 0, $langs, 0, -1, -1, $conf->currency); print ''; From 33e345a280ea993804ca0532776a547df6667d5a Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Thu, 16 Feb 2023 15:51:55 +0100 Subject: [PATCH 127/607] FIX missing getEntity filter --- htdocs/core/lib/invoice.lib.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/core/lib/invoice.lib.php b/htdocs/core/lib/invoice.lib.php index 43e4879e62f..b532b9db108 100644 --- a/htdocs/core/lib/invoice.lib.php +++ b/htdocs/core/lib/invoice.lib.php @@ -281,13 +281,16 @@ function getNumberInvoicesPieChart($mode) $sql .= ", sum(".$db->ifsql("f.date_lim_reglement > '".date_format($datenowadd15, 'Y-m-d')."'", 1, 0).") as nbnotlate15"; $sql .= ", sum(".$db->ifsql("f.date_lim_reglement > '".date_format($datenowadd30, 'Y-m-d')."'", 1, 0).") as nbnotlate30"; if ($mode == 'customers') { + $element = 'invoice'; $sql .= " FROM ".MAIN_DB_PREFIX."facture as f"; } elseif ($mode == 'fourn' || $mode == 'suppliers') { + $element = 'supplier_invoice'; $sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f"; } else { return ''; } - $sql .= " WHERE f.type <> 2"; + $sql .= " WHERE f.entity IN (".getEntity($element).")"; + $sql .= " AND f.type <> 2"; $sql .= " AND f.fk_statut = 1"; if (isset($user->socid) && $user->socid > 0) { $sql .= " AND f.fk_soc = ".((int) $user->socid); From 6925d416ba04936c9cfd37d998dceac2e92cdd97 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 16 Feb 2023 18:44:00 +0100 Subject: [PATCH 128/607] Doc --- htdocs/fourn/class/fournisseur.product.class.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index fa1706a523a..9b9646480b7 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -674,6 +674,7 @@ class ProductFournisseur extends Product * @param int $offset Offset * @param int $socid Filter on a third party id * @return array Array of ProductFournisseur with new properties to define supplier price + * @see find_min_price_product_fournisseur() */ public function list_product_fournisseur_price($prodid, $sortfield = '', $sortorder = '', $limit = 0, $offset = 0, $socid = 0) { @@ -784,6 +785,7 @@ class ProductFournisseur extends Product * @param int $qty Minimum quantity * @param int $socid get min price for specific supplier * @return int <0 if KO, 0=Not found of no product id provided, >0 if OK + * @see list_product_fournisseur_price() */ public function find_min_price_product_fournisseur($prodid, $qty = 0, $socid = 0) { From 3c3d2213700e6c3f8dfecb2961fa30e6cd8e9694 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 16 Feb 2023 21:23:00 +0100 Subject: [PATCH 129/607] FIX #23914 search_all --- htdocs/fichinter/list.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/htdocs/fichinter/list.php b/htdocs/fichinter/list.php index 5a44e9069cd..ebff3305365 100644 --- a/htdocs/fichinter/list.php +++ b/htdocs/fichinter/list.php @@ -65,7 +65,7 @@ $search_desc = GETPOST('search_desc', 'alpha'); $search_projet_ref = GETPOST('search_projet_ref', 'alpha'); $search_contrat_ref = GETPOST('search_contrat_ref', 'alpha'); $search_status = GETPOST('search_status', 'alpha'); -$sall = trim((GETPOST('search_all', 'alphanohtml') != '') ?GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml')); +$search_all = trim((GETPOST('search_all', 'alphanohtml') != '') ?GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml')); $optioncss = GETPOST('optioncss', 'alpha'); $socid = GETPOST('socid', 'int'); @@ -310,8 +310,8 @@ if (empty($user->rights->societe->client->voir) && empty($socid)) { if ($socid) { $sql .= " AND s.rowid = ".((int) $socid); } -if ($sall) { - $sql .= natural_search(array_keys($fieldstosearchall), $sall); +if ($search_all) { + $sql .= natural_search(array_keys($fieldstosearchall), $search_all); } // Add where from extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; @@ -320,7 +320,7 @@ $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters, $object); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; // Add GroupBy from hooks -$parameters = array('search_all' => $sall, 'fieldstosearchall' => $fieldstosearchall); +$parameters = array('search_all' => $search_all, 'fieldstosearchall' => $fieldstosearchall); $reshook = $hookmanager->executeHooks('printFieldListGroupBy', $parameters, $object); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; @@ -395,8 +395,8 @@ if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) { if ($limit > 0 && $limit != $conf->liste_limit) { $param .= '&limit='.urlencode($limit); } -if ($sall) { - $param .= "&sall=".urlencode($sall); +if ($search_all) { + $param .= "&search_all=".urlencode($search_all); } if ($socid) { $param .= "&socid=".urlencode($socid); @@ -470,11 +470,11 @@ $objecttmp = new Fichinter($db); $trackid = 'int'.$object->id; include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php'; -if ($sall) { +if ($search_all) { foreach ($fieldstosearchall as $key => $val) { $fieldstosearchall[$key] = $langs->trans($val); } - print '
'.$langs->trans("FilterOnInto", $sall).join(', ', $fieldstosearchall).'
'; + print '
'.$langs->trans("FilterOnInto", $search_all).join(', ', $fieldstosearchall).'
'; } $moreforfilter = ''; From 3a58e025badea87a7758d149d7d435b017032fc8 Mon Sep 17 00:00:00 2001 From: Eric Seigne Date: Thu, 16 Feb 2023 21:44:38 +0100 Subject: [PATCH 130/607] better logs --- htdocs/core/class/CMailFile.class.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/CMailFile.class.php b/htdocs/core/class/CMailFile.class.php index 47f8fd900cb..0269b25fd6c 100644 --- a/htdocs/core/class/CMailFile.class.php +++ b/htdocs/core/class/CMailFile.class.php @@ -142,6 +142,9 @@ class CMailFile { global $conf, $dolibarr_main_data_root, $user; + dol_syslog("CMailFile::CMailfile: charset=".$conf->file->character_set_client." from=$from, to=$to, addr_cc=$addr_cc, errors_to=$errors_to, replyto=$replyto trackid=$trackid sendcontext=$sendcontext", LOG_DEBUG); + dol_syslog("CMailFile::CMailfile: subject=".$subject.", deliveryreceipt=".$deliveryreceipt.", msgishtml=".$msgishtml, LOG_DEBUG); + // Clean values of $mimefilename_list if (is_array($mimefilename_list)) { foreach ($mimefilename_list as $key => $val) { @@ -311,8 +314,7 @@ class CMailFile } } - dol_syslog("CMailFile::CMailfile: sendmode=".$this->sendmode." charset=".$conf->file->character_set_client." from=$from, to=$to, addr_cc=$addr_cc, addr_bcc=$addr_bcc, errors_to=$errors_to, replyto=$replyto trackid=$trackid sendcontext=$sendcontext", LOG_DEBUG); - dol_syslog("CMailFile::CMailfile: subject=".$subject.", deliveryreceipt=".$deliveryreceipt.", msgishtml=".$msgishtml, LOG_DEBUG); + dol_syslog("CMailFile::CMailfile: sendmode=".$this->sendmode." addr_bcc=$addr_bcc, replyto=$replyto", LOG_DEBUG); // We set all data according to choosed sending method. // We also set a value for ->msgid From 86e2f46fe7a4cebc24de3039c23e4e07891ac82b Mon Sep 17 00:00:00 2001 From: Eric Seigne Date: Thu, 16 Feb 2023 21:46:27 +0100 Subject: [PATCH 131/607] addr_bcc could be set --- htdocs/core/class/CMailFile.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/CMailFile.class.php b/htdocs/core/class/CMailFile.class.php index 0269b25fd6c..90c16dc589f 100644 --- a/htdocs/core/class/CMailFile.class.php +++ b/htdocs/core/class/CMailFile.class.php @@ -142,7 +142,7 @@ class CMailFile { global $conf, $dolibarr_main_data_root, $user; - dol_syslog("CMailFile::CMailfile: charset=".$conf->file->character_set_client." from=$from, to=$to, addr_cc=$addr_cc, errors_to=$errors_to, replyto=$replyto trackid=$trackid sendcontext=$sendcontext", LOG_DEBUG); + dol_syslog("CMailFile::CMailfile: charset=".$conf->file->character_set_client." from=$from, to=$to, addr_cc=$addr_cc, addr_bcc=$addr_bcc, errors_to=$errors_to, replyto=$replyto trackid=$trackid sendcontext=$sendcontext", LOG_DEBUG); dol_syslog("CMailFile::CMailfile: subject=".$subject.", deliveryreceipt=".$deliveryreceipt.", msgishtml=".$msgishtml, LOG_DEBUG); // Clean values of $mimefilename_list From bf9a44ac6faab0ef0abeda1d329011c14236b0fe Mon Sep 17 00:00:00 2001 From: Eric Seigne Date: Thu, 16 Feb 2023 21:48:55 +0100 Subject: [PATCH 132/607] msg is not defined --- htdocs/core/class/CMailFile.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/class/CMailFile.class.php b/htdocs/core/class/CMailFile.class.php index 67c3387fbc8..f16bfb856b1 100644 --- a/htdocs/core/class/CMailFile.class.php +++ b/htdocs/core/class/CMailFile.class.php @@ -60,6 +60,7 @@ class CMailFile public $atleastonefile; + public $msg; public $eol; public $eol2; From b021721b10d4e0253884ede3b322b0cf005da79f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 16 Feb 2023 22:01:05 +0100 Subject: [PATCH 133/607] Fix reload of page --- htdocs/fourn/commande/card.php | 8 ++++---- htdocs/fourn/facture/card.php | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 3bdf969c24c..842352475ad 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -1700,14 +1700,14 @@ if ($action == 'create') { } else { print img_picto('', 'company').$form->select_company((empty($socid) ? '' : $socid), 'socid', '(s.fournisseur=1 AND s.status=1)', 'SelectThirdParty', 1, 0, null, 0, 'minwidth175 maxwidth500 widthcentpercentminusxx'); // reload page to retrieve customer informations - if (!empty($conf->global->RELOAD_PAGE_ON_SUPPLIER_CHANGE)) { + if (empty($conf->global->RELOAD_PAGE_ON_SUPPLIER_CHANGE_DISABLED)) { print ''; diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 246f65c19f9..15e959b9736 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -2099,13 +2099,14 @@ if ($action == 'create') { } else { print img_picto('', 'company').$form->select_company(empty($societe->id) ? 0 : $societe->id, 'socid', '(s.fournisseur = 1 AND s.status = 1)', 'SelectThirdParty', 1, 0, null, 0, 'minwidth175 widthcentpercentminusxx maxwidth500'); // reload page to retrieve supplier informations - if (!empty($conf->global->RELOAD_PAGE_ON_SUPPLIER_CHANGE)) { + if (empty($conf->global->RELOAD_PAGE_ON_SUPPLIER_CHANGE_DISABLED)) { print ''; @@ -2168,10 +2169,9 @@ if ($action == 'create') { $(document).ready(function() { $("#fac_rec").change(function() { console.log("We have changed the template invoice - Reload page"); - var fac_rec = $(this).val(); - var socid = $(\'#socid\').val(); - // For template invoice change, we must reuse data of template, not input already done, so we call a GET with action=create, not a POST submit. - window.location.href = "'.$_SERVER["PHP_SELF"].'?action=create&socid="+socid+"&fac_rec="+fac_rec; + // reload page + $("input[name=action]").val("create"); + $("form[name=add]").submit(); }); }); '; From f8c3b9ff5b21be4880f2cdb12e800f3c6fa5efd4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 16 Feb 2023 22:11:41 +0100 Subject: [PATCH 134/607] Fix trans of "d" --- htdocs/core/lib/date.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php index 03223a7b65a..28d9da85f61 100644 --- a/htdocs/core/lib/date.lib.php +++ b/htdocs/core/lib/date.lib.php @@ -285,7 +285,7 @@ function convertSecondToTime($iSecond, $format = 'all', $lengthOfDay = 86400, $l if ($sDay > 1) { $dayTranslate = $langs->trans("Days"); } - $sTime .= $sDay.' '.strtolower(dol_substr($dayTranslate, 0, 1)).'. '; + $sTime .= $sDay.' '.$langs->trans("d").' '; } if ($format == 'all') { From e212019ddf353b637ba8298a237a8da1dcbb65fd Mon Sep 17 00:00:00 2001 From: atm-florian Date: Fri, 17 Feb 2023 00:10:00 +0100 Subject: [PATCH 135/607] FIX: SQL error "unknown column p.fk_soc" because ANSI-92 joins take precedence over ANSI-89 joins cf. https://stackoverflow.com/questions/4065985/mysql-unknown-column-in-on-clause --- htdocs/comm/propal/class/propalestats.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/comm/propal/class/propalestats.class.php b/htdocs/comm/propal/class/propalestats.class.php index 52956fa46fd..834ecd2bacb 100644 --- a/htdocs/comm/propal/class/propalestats.class.php +++ b/htdocs/comm/propal/class/propalestats.class.php @@ -248,7 +248,7 @@ class PropaleStats extends Stats global $user; $sql = "SELECT product.ref, COUNT(product.ref) as nb, SUM(tl.".$this->field_line.") as total, AVG(tl.".$this->field_line.") as avg"; - $sql .= " FROM ".$this->from.", ".$this->from_line.", ".MAIN_DB_PREFIX."product as product"; + $sql .= " FROM (".$this->from.", ".$this->from_line.", ".MAIN_DB_PREFIX."product as product)"; if (empty($user->rights->societe->client->voir) && !$user->socid) { $sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON p.fk_soc = sc.fk_soc AND sc.fk_user = ".((int) $user->id); } From a18b5a31e5653f4561082dec7d45298bc591b5a7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 17 Feb 2023 16:00:57 +0100 Subject: [PATCH 136/607] Fix phpunit --- test/phpunit/DateLibTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/phpunit/DateLibTest.php b/test/phpunit/DateLibTest.php index 6f50e5b3085..eef029d26d1 100644 --- a/test/phpunit/DateLibTest.php +++ b/test/phpunit/DateLibTest.php @@ -344,7 +344,7 @@ class DateLibTest extends PHPUnit\Framework\TestCase $result=convertSecondToTime(86400, 'all', 86400); print __METHOD__." result=".$result."\n"; - $this->assertSame('1 '.strtolower(dol_substr($langs->trans("Day"), 0, 1).'.'), $result); + $this->assertSame('1 '.$langs->trans("d"), $result); return $result; } From c7746bd6f14af1f9d4feeef1f3d1f343111cb4ff Mon Sep 17 00:00:00 2001 From: gautier Date: Wed, 15 Feb 2023 12:10:32 +0100 Subject: [PATCH 137/607] modification on leftmenu by hook not applied related to #23916 -usage of $hookmanager->resArray instead of $hookmanager->results --- htdocs/core/menus/standard/eldy.lib.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index b534a998107..7ad2fef730e 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -883,10 +883,10 @@ function print_left_eldy_menu($db, $menu_array_before, $menu_array_after, &$tabM $reshook = $hookmanager->executeHooks('menuLeftMenuItems', $parameters, $hook_items); // Note that $action and $object may have been modified by some hooks if (is_numeric($reshook)) { - if ($reshook == 0 && !empty($hookmanager->results)) { - $menu_array[] = $hookmanager->results; // add + if ($reshook == 0 && !empty($hookmanager->resArray)) { + $menu_array[] = $hookmanager->resArray; // add } elseif ($reshook == 1) { - $menu_array = $hookmanager->results; // replace + $menu_array = $hookmanager->resArray; // replace } // @todo Sort menu items by 'position' value From c3e42f1961a4d46d0c1b40553727eebcf7be12de Mon Sep 17 00:00:00 2001 From: atm-florian Date: Fri, 17 Feb 2023 16:12:06 +0100 Subject: [PATCH 138/607] Propale stats: replace old-style joins with inner joins --- .../comm/propal/class/propalestats.class.php | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/htdocs/comm/propal/class/propalestats.class.php b/htdocs/comm/propal/class/propalestats.class.php index 834ecd2bacb..eb699e01c86 100644 --- a/htdocs/comm/propal/class/propalestats.class.php +++ b/htdocs/comm/propal/class/propalestats.class.php @@ -247,17 +247,19 @@ class PropaleStats extends Stats { global $user; - $sql = "SELECT product.ref, COUNT(product.ref) as nb, SUM(tl.".$this->field_line.") as total, AVG(tl.".$this->field_line.") as avg"; - $sql .= " FROM (".$this->from.", ".$this->from_line.", ".MAIN_DB_PREFIX."product as product)"; - if (empty($user->rights->societe->client->voir) && !$user->socid) { - $sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON p.fk_soc = sc.fk_soc AND sc.fk_user = ".((int) $user->id); + $sql = 'SELECT product.ref, COUNT(product.ref) as nb, SUM(tl.' . $this->field_line . ') as total, AVG(tl.' . $this->field_line . ') as avg'; + $sql .= ' FROM ' . $this->from; + $sql .= ' INNER JOIN ' . $this->from_line . ' ON p.rowid = tl.fk_propal'; + $sql .= ' INNER JOIN ' . MAIN_DB_PREFIX . 'product as product ON tl.fk_product = product.rowid'; + if (empty($user->rights->societe->client->voir) && ! $user->socid) { + $sql .= ' INNER JOIN ' . MAIN_DB_PREFIX . 'societe_commerciaux as sc ON p.fk_soc = sc.fk_soc AND sc.fk_user = ' . ((int) $user->id); } $sql .= $this->join; - $sql .= " WHERE ".$this->where; - $sql .= " AND p.rowid = tl.fk_propal AND tl.fk_product = product.rowid"; - $sql .= " AND ".$this->field_date." BETWEEN '".$this->db->idate(dol_get_first_day($year, 1, false))."' AND '".$this->db->idate(dol_get_last_day($year, 12, false))."'"; - $sql .= " GROUP BY product.ref"; + $sql .= ' WHERE ' . $this->where; + $sql .= ' AND ' . $this->field_date . " BETWEEN '" . $this->db->idate(dol_get_first_day($year, 1, false)) . "' AND '" . $this->db->idate(dol_get_last_day($year, 12, false)) . "'"; + $sql .= ' GROUP BY product.ref'; $sql .= $this->db->order('nb', 'DESC'); + //$sql.= $this->db->plimit(20); return $this->_getAllByProduct($sql, $limit); From 2bca97af2f519db3b9cdd048a151a1728d5f52d4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 18 Feb 2023 13:13:05 +0100 Subject: [PATCH 139/607] Fix update of config setup page must not rely on javascript --- htdocs/admin/const.php | 30 +++++++++++++++++++++--------- htdocs/theme/eldy/global.inc.php | 2 +- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/htdocs/admin/const.php b/htdocs/admin/const.php index e5625b0f975..895ce8c1b08 100644 --- a/htdocs/admin/const.php +++ b/htdocs/admin/const.php @@ -32,10 +32,6 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/security.lib.php'; // Load translation files required by the page $langs->load("admin"); -if (!$user->admin) { - accessforbidden(); -} - $rowid = GETPOST('rowid', 'int'); $entity = GETPOST('entity', 'int'); $action = GETPOST('action', 'aZ09'); @@ -44,7 +40,6 @@ $consts = GETPOST('const', 'array'); $constname = GETPOST('constname', 'alphanohtml'); $constvalue = GETPOST('constvalue', 'restricthtml'); // We should be able to send everything here $constnote = GETPOST('constnote', 'alpha'); - // Load variable for pagination $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'aZ09comma'); @@ -63,12 +58,30 @@ if (empty($sortorder)) { $sortorder = 'ASC'; } +if ($action == 'add' && GETPOST('update')) { // Click on button update must be used in priority before param $action + $action = 'update'; +} +if ($action == 'add' && GETPOST('delete')) { // Click on button update must be used in priority before param $action + $action = 'delete'; +} +if ($action == 'update' && GETPOST('add')) { // Click on button add must be used in priority before param $action + $action = 'add'; +} +if ($action == 'delete' && GETPOST('add')) { // Click on button add must be used in priority before param $action + $action = 'add'; +} + +if (!$user->admin) { + accessforbidden(); +} + /* * Actions */ -if ($action == 'add' || (GETPOST('add') && $action != 'update')) { +// Add a new record +if ($action == 'add') { $error = 0; if (empty($constname)) { @@ -157,13 +170,12 @@ jQuery(document).ready(function() { jQuery("#delconst").hide(); jQuery(".checkboxfordelete").click(function() { jQuery("#delconst").show(); - jQuery("#action").val('delete'); }); jQuery(".inputforupdate").keyup(function() { // keypress does not support back var field_id = jQuery(this).attr("id"); var row_num = field_id.split("_"); jQuery("#updateconst").show(); - jQuery("#action").val('update'); + jQuery("#action").val('update'); // so default action if we type enter will be update, but correct action is also detected correctly without that when clicking on "Update" button. jQuery("#check_" + row_num[1]).prop("checked",true); }); }); @@ -180,7 +192,7 @@ $param = ''; print 'entity) && $debug) ? '?debug=1' : '').'" method="POST">'; print ''; -print ''; +print ''; print ''; print ''; diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index b006978d5fa..e7d94fe0d8c 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -7603,7 +7603,7 @@ div.clipboardCPValue.hidewithsize { } .dropdown dd ul { - max-width: 350px; + max-width: 370px; } } /* rule to reduce top menu - 2nd reduction: Reduce width of top menu icons again */ From a81510ccd65714bbf08d784c573568532c749fe7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 18 Feb 2023 14:15:39 +0100 Subject: [PATCH 140/607] Better exemple for RCP security string --- htdocs/admin/system/security.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/system/security.php b/htdocs/admin/system/security.php index c23bdb3051f..d7f8884a38a 100644 --- a/htdocs/admin/system/security.php +++ b/htdocs/admin/system/security.php @@ -574,13 +574,13 @@ print '
'; print 'MAIN_SECURITY_CSRF_TOKEN_RENEWAL_ON_EACH_CALL = '.(empty($conf->global->MAIN_SECURITY_CSRF_TOKEN_RENEWAL_ON_EACH_CALL) ? ''.$langs->trans("Undefined").'   ('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or").' 0)' : $conf->global->MAIN_SECURITY_CSRF_TOKEN_RENEWAL_ON_EACH_CALL)."
"; print '
'; -print 'MAIN_SECURITY_FORCECSP = '.(empty($conf->global->MAIN_SECURITY_FORCECSP) ? ''.$langs->trans("Undefined").'' : $conf->global->MAIN_SECURITY_FORCECSP).'   ('.$langs->trans("Example").": \"frame-ancestors 'self'; default-src 'self'; img-src *;\")
"; +print 'MAIN_SECURITY_FORCECSP = '.(empty($conf->global->MAIN_SECURITY_FORCECSP) ? ''.$langs->trans("Undefined").'' : $conf->global->MAIN_SECURITY_FORCECSP).'   ('.$langs->trans("Example").": \"frame-ancestors 'self'; default-src *; img-src *; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline';\")
"; print '
'; print 'MAIN_SECURITY_FORCERP = '.(empty($conf->global->MAIN_SECURITY_FORCERP) ? ''.$langs->trans("Undefined").'' : $conf->global->MAIN_SECURITY_FORCERP).'   ('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or")." \"same-origin\" so browser doesn't send any referrer when going into another web site domain)
"; print '
'; -print 'WEBSITE_MAIN_SECURITY_FORCECSP = '.(empty($conf->global->WEBSITE_MAIN_SECURITY_FORCECSP) ? ''.$langs->trans("Undefined").'' : $conf->global->WEBSITE_MAIN_SECURITY_FORCECSP).'   ('.$langs->trans("Example").": \"frame-ancestors 'self'; default-src 'self'; style-src https://cdnjs.cloudflare.com https://fonts.googleapis.com; script-src https://cdn.transifex.com https://www.googletagmanager.com; object-src https://youtube.com; frame-src https://youtube.com; img-src *;\")
"; +print 'WEBSITE_MAIN_SECURITY_FORCECSP = '.(empty($conf->global->WEBSITE_MAIN_SECURITY_FORCECSP) ? ''.$langs->trans("Undefined").'' : $conf->global->WEBSITE_MAIN_SECURITY_FORCECSP).'   ('.$langs->trans("Example").": \"frame-ancestors 'self'; default-src 'self' 'unsafe-inline'; style-src https://cdnjs.cloudflare.com https://fonts.googleapis.com; script-src https://cdn.transifex.com https://www.googletagmanager.com; object-src https://youtube.com; frame-src https://youtube.com; img-src *;\")
"; print '
'; print 'WEBSITE_MAIN_SECURITY_FORCERP = '.(empty($conf->global->WEBSITE_MAIN_SECURITY_FORCERP) ? ''.$langs->trans("Undefined").'' : $conf->global->WEBSITE_MAIN_SECURITY_FORCERP).'   ('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or")." \"strict-origin-when-cross-origin\")
"; From 992fe1286d5b17f83e2248e98f4df80eb430de18 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Sat, 18 Feb 2023 16:08:19 +0100 Subject: [PATCH 141/607] FIX request new password with "mc" and "twofactor" authentication --- htdocs/user/class/user.class.php | 3 +++ htdocs/user/passwordforgotten.php | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 9a495a04a91..9ee9bcae43e 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -2425,6 +2425,9 @@ class User extends CommonObject //print $password.'-'.$this->id.'-'.$dolibarr_main_instance_unique_id; $url = $urlwithroot.'/user/passwordforgotten.php?action=validatenewpassword'; $url .= '&username='.urlencode($this->login)."&passworduidhash=".urlencode(dol_hash($password.'-'.$this->id.'-'.$dolibarr_main_instance_unique_id)); + if (!empty($conf->multicompany->enabled)) { + $url .= '&entity='.(!empty($user->entity) ? $user->entity : 1); + } $msgishtml = 1; diff --git a/htdocs/user/passwordforgotten.php b/htdocs/user/passwordforgotten.php index dabac0727dc..c529dcc0e19 100644 --- a/htdocs/user/passwordforgotten.php +++ b/htdocs/user/passwordforgotten.php @@ -87,7 +87,7 @@ if (empty($reshook)) { // Validate new password if ($action == 'validatenewpassword' && $username && $passworduidhash) { $edituser = new User($db); - $result = $edituser->fetch('', $username); + $result = $edituser->fetch('', $username, '', 0, $conf->entity); if ($result < 0) { $message = '
'.dol_escape_htmltag($langs->trans("ErrorLoginDoesNotExists", $username)).'
'; } else { @@ -122,9 +122,9 @@ if (empty($reshook)) { $isanemail = preg_match('/@/', $username); $edituser = new User($db); - $result = $edituser->fetch('', $username, '', 1); + $result = $edituser->fetch('', $username, '', 1, $conf->entity); if ($result == 0 && $isanemail) { - $result = $edituser->fetch('', '', '', 1, -1, $username); + $result = $edituser->fetch('', '', '', 1, $conf->entity, $username); } if ($result <= 0 && $edituser->error == 'USERNOTFOUND') { From 5b81880b9721f4ddb26725887c3b98e5d12354e3 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Sat, 18 Feb 2023 16:24:56 +0100 Subject: [PATCH 142/607] FIX object $user is not defined --- htdocs/user/class/user.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 9ee9bcae43e..f5566cc30e7 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -2426,7 +2426,7 @@ class User extends CommonObject $url = $urlwithroot.'/user/passwordforgotten.php?action=validatenewpassword'; $url .= '&username='.urlencode($this->login)."&passworduidhash=".urlencode(dol_hash($password.'-'.$this->id.'-'.$dolibarr_main_instance_unique_id)); if (!empty($conf->multicompany->enabled)) { - $url .= '&entity='.(!empty($user->entity) ? $user->entity : 1); + $url .= '&entity='.(!empty($this->entity) ? $this->entity : 1); } $msgishtml = 1; From 50721f8df3eb8399930d4f7b7dd2c5e3e1012a39 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Sat, 18 Feb 2023 16:31:59 +0100 Subject: [PATCH 143/607] TODO object $user parameter is not use in send_password() ! --- htdocs/user/class/user.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index f5566cc30e7..752cbf15c34 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -2359,7 +2359,7 @@ class User extends CommonObject /** * Send new password by email * - * @param User $user Object user that send the email (not the user we send too) + * @param User $user Object user that send the email (not the user we send too) @todo object $user is not used ! * @param string $password New password * @param int $changelater 0=Send clear passwod into email, 1=Change password only after clicking on confirm email. @todo Add method 2 = Send link to reset password * @return int < 0 si erreur, > 0 si ok From b35d768d053f6bbee62845b13abd7ffcddb53a46 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 18 Feb 2023 20:47:19 +0100 Subject: [PATCH 144/607] Debug v17 --- htdocs/core/class/commonobject.class.php | 8 ++++---- htdocs/core/lib/images.lib.php | 8 ++++++-- htdocs/theme/md/style.css.php | 2 +- htdocs/theme/md/theme_vars.inc.php | 1 + 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 0ac16532246..e4e767b3cee 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -8711,9 +8711,9 @@ abstract class CommonObject if ($usesharelink) { if ($val['share']) { - if (empty($maxHeight) || $photo_vignette && $imgarray['height'] > $maxHeight) { + if (empty($maxHeight) || ($photo_vignette && $imgarray['height'] > $maxHeight)) { $return .= ''; - $return .= ''; + $return .= ''; } else { $return .= ''; $return .= ''; @@ -8723,9 +8723,9 @@ abstract class CommonObject $return .= ''; } } else { - if (empty($maxHeight) || $photo_vignette && $imgarray['height'] > $maxHeight) { + if (empty($maxHeight) || ($photo_vignette && $imgarray['height'] > $maxHeight)) { $return .= ''; - $return .= ''; + $return .= ''; } else { $return .= ''; $return .= ''; diff --git a/htdocs/core/lib/images.lib.php b/htdocs/core/lib/images.lib.php index 37cc70760eb..9ca4684ef51 100644 --- a/htdocs/core/lib/images.lib.php +++ b/htdocs/core/lib/images.lib.php @@ -130,8 +130,12 @@ function dol_getImageSize($file, $url = false) if ($filetoread) { $infoImg = getimagesize($filetoread); // Recuperation des infos de l'image - $ret['width'] = $infoImg[0]; // Largeur de l'image - $ret['height'] = $infoImg[1]; // Hauteur de l'image + if ($infoImg) { + $ret['width'] = $infoImg[0]; // Largeur de l'image + $ret['height'] = $infoImg[1]; // Hauteur de l'image + } else { + $ret['width'] = $ret['height'] = ''; + } } return $ret; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 945befdae08..6179c64db8c 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -4900,7 +4900,7 @@ div.titre { color: var(--colortexttitlenotab); } .tertiary { - color: var(--colortexttitlenotab); + color: var(--colortexttitlenotab2); } table.centpercent.notopnoleftnoright.table-fiche-title { diff --git a/htdocs/theme/md/theme_vars.inc.php b/htdocs/theme/md/theme_vars.inc.php index 84a1065f781..be799259b32 100644 --- a/htdocs/theme/md/theme_vars.inc.php +++ b/htdocs/theme/md/theme_vars.inc.php @@ -60,6 +60,7 @@ $colorbacklinepairchecked = '230,237,244'; // line checked $colorbacklinebreak = '250,246,251'; $colorbackbody = '248,248,248'; $colortexttitlenotab = '80,71,5'; +$colortexttitlenotab2 = '100,0,100'; $colortexttitle = '20,20,20'; $colortexttitlelink = '0,0,120'; $colortext = '0,0,0'; From 45a6d12d65c93310dfb630b918c024e6f9022574 Mon Sep 17 00:00:00 2001 From: priojk Date: Sat, 18 Feb 2023 22:33:42 +0100 Subject: [PATCH 145/607] Fix: Original translation change misleading in many places --- htdocs/langs/de_DE/main.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/de_DE/main.lang b/htdocs/langs/de_DE/main.lang index 4aa75a20c80..56e9c337bfe 100644 --- a/htdocs/langs/de_DE/main.lang +++ b/htdocs/langs/de_DE/main.lang @@ -464,7 +464,7 @@ OtherStatistics=Weitere Statistiken Status=Status Favorite=Favorit ShortInfo=Info. -Ref=Artikelnummer +Ref=Ref.Nr. ExternalRef=Externe-ID RefSupplier=Lieferanten-Zeichen RefPayment=Zahlungsref.-Nr. From 4ce5d0f42d5d7a147f8e712f71aed43eae2ef04b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 19 Feb 2023 01:34:45 +0100 Subject: [PATCH 146/607] Debug v17 --- htdocs/compta/facture/card.php | 51 +++++++++++---------------- htdocs/core/class/html.form.class.php | 16 +++++---- 2 files changed, 31 insertions(+), 36 deletions(-) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index c2469655df6..eaebb294cac 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -3189,7 +3189,7 @@ if ($action == 'create') { $arrayoutstandingbills = $soc->getOutstandingBills(); $outstandingBills = $arrayoutstandingbills['opened']; print ' - '.$langs->trans('CurrentOutstandingBill').': '; - print price($outstandingBills, '', $langs, 0, 0, -1, $conf->currency); + print ''.price($outstandingBills, '', $langs, 0, 0, -1, $conf->currency).''; if ($soc->outstanding_limit != '') { if ($outstandingBills > $soc->outstanding_limit) { print img_warning($langs->trans("OutstandingBillReached")); @@ -3308,7 +3308,7 @@ if ($action == 'create') { print '
'; $tmp = ' '; $tmp = $tmp.''; - $desc = $form->textwithpicto($tmp, $langs->transnoentities("InvoiceStandardDesc"), 1, 'help', '', 0, 3); + $desc = $form->textwithpicto($tmp, $langs->transnoentities("InvoiceStandardDesc"), 1, 'help', '', 0, 3, 'standardonsmartphone'); print ''; print ''; - print ''; + print ''; $datem = $db->jdate($obj->dp); print '
'; print $desc; @@ -3347,7 +3347,7 @@ if ($action == 'create') { jQuery("#radio_deposit").prop("checked", true); setRadioForTypeOfIncoice(); }); - jQuery("#radio_standard, #radio_deposit, #radio_replacement, #radio_template").change(function() { + jQuery("#radio_standard, #radio_deposit, #radio_replacement, #radio_creditnote, #radio_template").change(function() { setRadioForTypeOfIncoice(); }); function setRadioForTypeOfIncoice() { @@ -3363,10 +3363,10 @@ if ($action == 'create') { }); '; - $tmp = $tmp.''; - $desc = $form->textwithpicto($tmp, $langs->transnoentities("InvoiceDepositDesc"), 1, 'help', '', 0, 3); print ''; print ''; if (($origin == 'propal') || ($origin == 'commande')) { @@ -3405,7 +3405,7 @@ if ($action == 'create') { print '
'; $tmp = ' '; $tmp = $tmp.''; - $desc = $form->textwithpicto($tmp, $langs->transnoentities("InvoiceFirstSituationDesc"), 1, 'help', '', 0, 3); + $desc = $form->textwithpicto($tmp, $langs->transnoentities("InvoiceFirstSituationDesc"), 1, 'help', '', 0, 3, 'firstsituationonsmartphone'); print $desc; print '
'; @@ -3418,7 +3418,7 @@ if ($action == 'create') { $tmp .= ' disabled'; } $tmp .= '> '; - $text = ' '; + $text = $tmp.' '; $text .= 'id > 0) { $text .= ' disabled'; @@ -3487,26 +3487,18 @@ if ($action == 'create') { if (!empty($conf->global->INVOICE_USE_SITUATION)) { print '
'; $tmp = ' '; - $text = ' '; + $text = $tmp.' '; $text .= '('.$langs->trans("YouMustCreateInvoiceFromThird").') '; - $desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceFirstSituationDesc"), 1, 'help', '', 0, 3); - print $desc; - print '
'; - - print '
'; - $tmp = ' '; - $text = ' '; - $text .= '('.$langs->trans("YouMustCreateInvoiceFromThird").') '; - $desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceFirstSituationDesc"), 1, 'help', '', 0, 3); + $desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceFirstSituationDesc"), 1, 'help', '', 0, 3, 'firstsituationonsmartphone'); print $desc; print '
'; } print '
'; $tmp = ' '; - $text = ' '; - $text .= '('.$langs->trans("YouMustCreateInvoiceFromThird").') '; - $desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceReplacementDesc"), 1, 'help', '', 0, 3); + $text = $tmp.' '; + //$text .= '('.$langs->trans("YouMustCreateInvoiceFromThird").') '; + $desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceReplacementDesc").'

'.$langs->trans("YouMustCreateInvoiceFromThird"), 1, 'help', '', 0, 3, 'replacementonsmartphone'); print $desc; print '
'; } @@ -3566,7 +3558,6 @@ if ($action == 'create') { }); '; $text = ' '; - // $text.=''; $text .= ' 0 ? 'checked' : '').' /> "; print '
    0 ? 'checked' : '').' /> "; print ''; @@ -3596,9 +3587,9 @@ if ($action == 'create') { } else { $tmp = ' '; } - $text = ' '; - $text .= '('.$langs->trans("YouMustCreateInvoiceFromThird").') '; - $desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceAvoirDesc"), 1, 'help', '', 0, 3); + $text = $tmp.' '; + //$text .= '('.$langs->trans("YouMustCreateInvoiceFromThird").') '; + $desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceAvoirDesc").'

'.$langs->trans("YouMustCreateInvoiceFromThird"), 1, 'help', '', 0, 3, 'creditnoteonsmartphone'); print $desc; print ''."\n"; } @@ -3607,9 +3598,8 @@ if ($action == 'create') { // Template invoice print '
'; $tmp = ' '; - $text = ' '; - //$text.= '('.$langs->trans("YouMustCreateStandardInvoiceFirst").') '; - $desc = $form->textwithpicto($text, $langs->transnoentities("YouMustCreateStandardInvoiceFirstDesc"), 1, 'help', '', 0, 3); + $text = $tmp.' '; + $desc = $form->textwithpicto($text, $langs->transnoentities("YouMustCreateStandardInvoiceFirstDesc"), 1, 'help', '', 0, 3, 'templateonsmartphone'); print $desc; print '
'; @@ -3630,7 +3620,8 @@ if ($action == 'create') { $(document).ready(function() { var listType = {'.$jsListType.'}; $("[name=\'type\'").change(function() { - if($( this ).prop("checked")) + console.log("change name=type"); + if ($( this ).prop("checked")) { if(($( this ).val() in listType)) { diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index a672709cc48..62fee2bc8ec 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -709,7 +709,7 @@ class Form * @param string $extracss Add a CSS style to td, div or span tag * @param int $noencodehtmltext Do not encode into html entity the htmltext * @param int $notabs 0=Include table and tr tags, 1=Do not include table and tr tags, 2=use div, 3=use span - * @param string $tooltiptrigger ''=Tooltip on hover, 'abc'=Tooltip on click (abc is a unique key, clickable link is on image or on link if param $type='none' or on both if $type='xxxclickable') + * @param string $tooltiptrigger ''=Tooltip on hover and hidden on smartphone, 'abconsmartphone'=Tooltip on hover and on click on smartphone, 'abc'=Tooltip on click (abc is a unique key, clickable link is on image or on link if param $type='none' or on both if $type='xxxclickable') * @param int $forcenowrap Force no wrap between text and picto (works with notabs=2 only) * @return string HTML code of text, picto, tooltip */ @@ -717,11 +717,6 @@ class Form { global $conf, $langs; - $alt = ''; - if ($tooltiptrigger) { - $alt = $langs->transnoentitiesnoconv("ClickToShowHelp"); - } - //For backwards compatibility if ($type == '0') { $type = 'info'; @@ -729,6 +724,15 @@ class Form $type = 'help'; } + if (preg_match('/onsmartphone$/', $tooltiptrigger) && empty($conf->dol_no_mouse_hover)) { + $tooltiptrigger = preg_replace('/^.*onsmartphone$/', '', $tooltiptrigger); + } + + $alt = ''; + if ($tooltiptrigger) { + $alt = $langs->transnoentitiesnoconv("ClickToShowHelp"); + } + // If info or help with no javascript, show only text if (empty($conf->use_javascript_ajax)) { if ($type == 'info' || $type == 'infoclickable' || $type == 'help' || $type == 'helpclickable') { From 35d496de3876859952774cdb1a280b0ca22519ea Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 19 Feb 2023 02:41:53 +0100 Subject: [PATCH 147/607] Update user.class.php --- htdocs/user/class/user.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 752cbf15c34..3329e4fe71e 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -2359,7 +2359,7 @@ class User extends CommonObject /** * Send new password by email * - * @param User $user Object user that send the email (not the user we send too) @todo object $user is not used ! + * @param User $user Object user that send the email (not the user we send to) @todo object $user is not used ! * @param string $password New password * @param int $changelater 0=Send clear passwod into email, 1=Change password only after clicking on confirm email. @todo Add method 2 = Send link to reset password * @return int < 0 si erreur, > 0 si ok From 760135a0bbc682423b40afea2294a6797c06759c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 19 Feb 2023 12:10:59 +0100 Subject: [PATCH 148/607] Look and feel v18 --- htdocs/core/tpl/massactions_pre.tpl.php | 20 ++++++++++++-------- htdocs/langs/en_US/main.lang | 1 + 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/htdocs/core/tpl/massactions_pre.tpl.php b/htdocs/core/tpl/massactions_pre.tpl.php index 5124a1dce35..67a2e1ebd01 100644 --- a/htdocs/core/tpl/massactions_pre.tpl.php +++ b/htdocs/core/tpl/massactions_pre.tpl.php @@ -63,15 +63,19 @@ if ($massaction == 'preaffecttag' && isModEnabled('category')) { if (!empty($categ_types)) { foreach ($categ_types as $categ_type) { $cate_arbo = $form->select_all_categories($categ_type['code'], null, 'parent', null, null, 1); - $formquestion[] = array('type' => 'other', - 'name' => 'affecttag_'.$categ_type['code'], - 'label' => $langs->trans("Tag").' '.$categ_type['label'], - 'value' => $form->multiselectarray('contcats_'.$categ_type['code'], $cate_arbo, GETPOST('contcats_'.$categ_type['code'], 'array'), null, null, null, null, '60%')); - } - $formquestion[] = array('type' => 'other', - 'name' => 'affecttag_type', + $formquestion[] = array( + 'type' => 'other', + 'name' => 'affecttag_'.$categ_type['code'], 'label' => '', - 'value' => ''); + 'value' => $form->multiselectarray('contcats_'.$categ_type['code'], $cate_arbo, GETPOST('contcats_'.$categ_type['code'], 'array'), null, null, '', 0, '60%', '', '', $langs->trans("SelectTheTagsToAssign")) + ); + } + $formquestion[] = array( + 'type' => 'other', + 'name' => 'affecttag_type', + 'label' => '', + 'value' => '' + ); print $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans("ConfirmAffectTag"), $langs->trans("ConfirmAffectTagQuestion", count($toselect)), "affecttag", $formquestion, 1, 0, 200, 500, 1); } else { setEventMessage('CategTypeNotFound'); diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index a79a5083b69..992eb91b050 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -513,6 +513,7 @@ NotYetAvailable=Not yet available NotAvailable=Not available Categories=Tags/categories Category=Tag/category +SelectTheTagsToAssign=Select the tags/categories to assign By=By From=From FromDate=From From 30c0b5e60e09b32caad6885134c4a618197e4c3d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 19 Feb 2023 12:39:00 +0100 Subject: [PATCH 149/607] Debug Look and feel v17 --- htdocs/core/class/html.form.class.php | 2 +- htdocs/core/lib/functions.lib.php | 6 +++--- htdocs/core/tpl/massactions_pre.tpl.php | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 62fee2bc8ec..e04c0bddf11 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -5354,7 +5354,7 @@ class Form // Line title $formconfirm .= ''."\n"; // Line text diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 79e3c3e05c7..7ca4b30e0a0 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4109,7 +4109,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'github', 'google', 'jabber', 'microsoft', 'skype', 'twitter', 'facebook', 'linkedin', 'instagram', 'snapchat', 'youtube', 'google-plus-g', 'whatsapp', 'chevron-left', 'chevron-right', 'chevron-down', 'chevron-top', 'commercial', 'companies', 'generic', 'home', 'hrm', 'members', 'products', 'invoicing', - 'partnership', 'payment', 'payment_vat', 'pencil-ruler', 'preview', 'project', 'projectpub', 'projecttask', 'question', 'refresh', 'region', + 'partnership', 'payment', 'payment_vat', 'pencil-ruler', 'pictoconfirm', 'preview', 'project', 'projectpub', 'projecttask', 'question', 'refresh', 'region', 'salary', 'shipment', 'state', 'supplier_invoice', 'supplier_invoicea', 'supplier_invoicer', 'supplier_invoiced', 'technic', 'ticket', 'error', 'warning', @@ -4158,8 +4158,8 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'error'=>'exclamation-triangle', 'warning'=>'exclamation-triangle', 'other'=>'square', 'playdisabled'=>'play', 'pdf'=>'file-pdf', 'poll'=>'check-double', 'pos'=>'cash-register', 'preview'=>'binoculars', 'project'=>'project-diagram', 'projectpub'=>'project-diagram', 'projecttask'=>'tasks', 'propal'=>'file-signature', 'proposal'=>'file-signature', - 'partnership'=>'handshake', 'payment'=>'money-check-alt', 'payment_vat'=>'money-check-alt', 'phoning'=>'phone', 'phoning_mobile'=>'mobile-alt', 'phoning_fax'=>'fax', 'previous'=>'arrow-alt-circle-left', 'printer'=>'print', 'product'=>'cube', 'puce'=>'angle-right', - 'recent' => 'question', 'reception'=>'dolly', 'recruitmentjobposition'=>'id-card-alt', 'recruitmentcandidature'=>'id-badge', + 'partnership'=>'handshake', 'payment'=>'money-check-alt', 'payment_vat'=>'money-check-alt', 'pictoconfirm'=>'check-square', 'phoning'=>'phone', 'phoning_mobile'=>'mobile-alt', 'phoning_fax'=>'fax', 'previous'=>'arrow-alt-circle-left', 'printer'=>'print', 'product'=>'cube', 'puce'=>'angle-right', + 'recent' => 'check-square', 'reception'=>'dolly', 'recruitmentjobposition'=>'id-card-alt', 'recruitmentcandidature'=>'id-badge', 'resize'=>'crop', 'supplier_order'=>'dol-order_supplier', 'supplier_proposal'=>'file-signature', 'refresh'=>'redo', 'region'=>'map-marked', 'replacement'=>'exchange-alt', 'resource'=>'laptop-house', 'recurring'=>'history', 'service'=>'concierge-bell', diff --git a/htdocs/core/tpl/massactions_pre.tpl.php b/htdocs/core/tpl/massactions_pre.tpl.php index 67a2e1ebd01..24ec6665d03 100644 --- a/htdocs/core/tpl/massactions_pre.tpl.php +++ b/htdocs/core/tpl/massactions_pre.tpl.php @@ -62,12 +62,12 @@ if ($massaction == 'preaffecttag' && isModEnabled('category')) { $formquestion = array(); if (!empty($categ_types)) { foreach ($categ_types as $categ_type) { - $cate_arbo = $form->select_all_categories($categ_type['code'], null, 'parent', null, null, 1); + $categ_arbo_tmp = $form->select_all_categories($categ_type['code'], null, 'parent', null, null, 2); $formquestion[] = array( 'type' => 'other', 'name' => 'affecttag_'.$categ_type['code'], 'label' => '', - 'value' => $form->multiselectarray('contcats_'.$categ_type['code'], $cate_arbo, GETPOST('contcats_'.$categ_type['code'], 'array'), null, null, '', 0, '60%', '', '', $langs->trans("SelectTheTagsToAssign")) + 'value' => $form->multiselectarray('contcats_'.$categ_type['code'], $categ_arbo_tmp, GETPOST('contcats_'.$categ_type['code'], 'array'), null, null, '', 0, '60%', '', '', $langs->trans("SelectTheTagsToAssign")) ); } $formquestion[] = array( From b5ec68a1c3182f02f302e003fe84d2cf9735e98a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 19 Feb 2023 13:05:35 +0100 Subject: [PATCH 150/607] Fix look and feel v17 --- htdocs/comm/index.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/comm/index.php b/htdocs/comm/index.php index 5d71683a311..8f94f29f7ca 100644 --- a/htdocs/comm/index.php +++ b/htdocs/comm/index.php @@ -868,7 +868,7 @@ if (isModEnabled('contrat') && $user->hasRight("contrat", "lire") && 0) { // TOD print ''; print ''; - print ''; + print ''; print ''; print ''; @@ -971,7 +971,7 @@ if (isModEnabled("propal") && $user->hasRight("propal", "lire")) { print '
'; + $tmp = $tmp.''; + $desc = $form->textwithpicto($tmp, $langs->transnoentities("InvoiceDepositDesc"), 1, 'help', '', 0, 3, 'depositonsmartphone'); print $desc; print '
'; - $formconfirm .= img_picto('', 'recent').' '.$title; + $formconfirm .= img_picto('', 'pictoconfirm').' '.$title; $formconfirm .= '
'.$staticcontrat->getNomUrl(1).''.$companystatic->getNomUrl(1, 'customer', 44).''.$companystatic->getNomUrl(1, 'customer').''.$staticcontrat->LibStatut($obj->statut, 3).'
'; print '
'.$companystatic->getNomUrl(1, 'customer', 44).''.$companystatic->getNomUrl(1, 'customer').''; print dol_print_date($datem, 'day', 'tzserver'); @@ -1091,7 +1091,7 @@ if (isModEnabled('commande') && $user->rights->commande->lire) { print '
'; print ''; - print ''.$companystatic->getNomUrl(1, 'customer', 44).''; + print ''.$companystatic->getNomUrl(1, 'customer').''; $datem = $db->jdate($obj->dv); print ''; print dol_print_date($datem, 'day', 'tzserver'); From 56add74e71895008b86bd0130a0a04bb0e0e7f20 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 19 Feb 2023 13:58:57 +0100 Subject: [PATCH 151/607] Debug v17 --- htdocs/comm/index.php | 2 +- htdocs/core/lib/project.lib.php | 41 +++++++++++++++++++----- htdocs/fourn/facture/list.php | 56 +++++++++++++++++---------------- htdocs/projet/card.php | 2 +- htdocs/projet/index.php | 3 +- 5 files changed, 65 insertions(+), 39 deletions(-) diff --git a/htdocs/comm/index.php b/htdocs/comm/index.php index 8f94f29f7ca..415728cb3e9 100644 --- a/htdocs/comm/index.php +++ b/htdocs/comm/index.php @@ -163,7 +163,7 @@ if (isModEnabled("propal") && $user->hasRight("propal", "lire")) { $obj = $db->fetch_object($resql); if ($i >= $max) { - $othernb += 1; + $othernb++; $i++; $total += (!empty($conf->global->MAIN_DASHBOARD_USE_TOTAL_HT) ? $obj->total_ht : $obj->total_ttc); continue; diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index f144b97e922..cdffc5c1961 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -2192,13 +2192,16 @@ function searchTaskInChild(&$inc, $parent, &$lines, &$taskrole) * @param int $status -1=No filter on statut, 0 or 1 = Filter on status * @param array $listofoppstatus List of opportunity status * @param array $hiddenfields List of info to not show ('projectlabel', 'declaredprogress', '...', ) + * @param int $max Max nb of record to show in HTML list * @return void */ -function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks = 0, $status = -1, $listofoppstatus = array(), $hiddenfields = array()) +function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks = 0, $status = -1, $listofoppstatus = array(), $hiddenfields = array(), $max = 0) { global $langs, $conf, $user; global $theme_datacolor; + $maxofloop = (empty($conf->global->MAIN_MAXLIST_OVERLOAD) ? 500 : $conf->global->MAIN_MAXLIST_OVERLOAD); + require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; $listofstatus = array_keys($listofoppstatus); @@ -2229,8 +2232,6 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks $title = $langs->trans("Projects").' '.$langs->trans($projectstatic->statuts_long[$status]); } - $arrayidtypeofcontact = array(); - print ''; print '
'; print ''; @@ -2309,11 +2310,15 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks $resql = $db->query($sql2); if ($resql) { + $othernb = 0; $total_task = 0; $total_opp_amount = 0; $ponderated_opp_amount = 0; + $total_plannedworkload = 0; + $total_declaredprogressworkload = 0; $num = $db->num_rows($resql); + $nbofloop = min($num, (empty($conf->global->MAIN_MAXLIST_OVERLOAD) ? 500 : $conf->global->MAIN_MAXLIST_OVERLOAD)); $i = 0; print ''; @@ -2340,11 +2345,23 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks } print "\n"; - $total_plannedworkload = 0; - $total_declaredprogressworkload = 0; - while ($i < $num) { + while ($i < $nbofloop) { $objp = $db->fetch_object($resql); + if ($max && $i >= $max) { + $othernb++; + $i++; + $total_task += $objp->nb; + $total_opp_amount += $objp->opp_amount; + $opp_weighted_amount = $objp->opp_percent * $objp->opp_amount / 100; + $ponderated_opp_amount += price2num($opp_weighted_amount); + $plannedworkload = $objp->planned_workload; + $total_plannedworkload += $plannedworkload; + $declaredprogressworkload = $objp->declared_progess_workload; + $total_declaredprogressworkload += $declaredprogressworkload; + continue; + } + $projectstatic->id = $objp->projectid; $projectstatic->user_author_id = $objp->fk_user_creat; $projectstatic->public = $objp->public; @@ -2451,13 +2468,21 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks print "\n"; - $total_task = $total_task + $objp->nb; - $total_opp_amount = $total_opp_amount + $objp->opp_amount; + $total_task += $objp->nb; + $total_opp_amount += $objp->opp_amount; } $i++; } + if ($othernb) { + print ''; + print ''; + print "\n"; + } + print ''; print '"; if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES)) { diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index be215e891eb..ad03c48258b 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -1028,17 +1028,17 @@ if (!empty($arrayfields['f.ref_supplier']['checked'])) { if (!empty($arrayfields['f.type']['checked'])) { print ''; @@ -1065,11 +1065,11 @@ if (!empty($arrayfields['f.date_lim_reglement']['checked'])) { print ''; if (!$i) { $totalarray['nbfield']++; @@ -1543,7 +1543,7 @@ if ($num > 0) { // Alias if (!empty($arrayfields['s.name_alias']['checked'])) { print ''; if (!$i) { $totalarray['nbfield']++; @@ -1551,8 +1551,8 @@ if ($num > 0) { } // Town if (!empty($arrayfields['s.town']['checked'])) { - print ''; if (!$i) { $totalarray['nbfield']++; @@ -1560,7 +1560,7 @@ if ($num > 0) { } // Zip if (!empty($arrayfields['s.zip']['checked'])) { - print ''; if (!$i) { @@ -1569,7 +1569,9 @@ if ($num > 0) { } // State if (!empty($arrayfields['state.nom']['checked'])) { - print "\n"; + print '\n"; if (!$i) { $totalarray['nbfield']++; } @@ -1620,14 +1622,14 @@ if ($num > 0) { // Amount HT if (!empty($arrayfields['f.total_ht']['checked'])) { - print '\n"; + print '\n"; if (!$i) { $totalarray['nbfield']++; } if (!$i) { $totalarray['pos'][$totalarray['nbfield']] = 'f.total_ht'; } - $totalarray['val']['f.total_ht'] += $obj->total_ht; + $totalarray['val']['f.total_ht'] += $obj->total_ht; } // Amount VAT if (!empty($arrayfields['f.total_vat']['checked'])) { @@ -1726,7 +1728,7 @@ if ($num > 0) { // Currency if (!empty($arrayfields['f.multicurrency_code']['checked'])) { - print '\n"; + print '\n"; if (!$i) { $totalarray['nbfield']++; } @@ -1734,16 +1736,16 @@ if ($num > 0) { // Currency rate if (!empty($arrayfields['f.multicurrency_tx']['checked'])) { - print '\n"; + print '\n"; if (!$i) { $totalarray['nbfield']++; } } // Amount HT if (!empty($arrayfields['f.multicurrency_total_ht']['checked'])) { - print '\n"; + print '\n"; if (!$i) { $totalarray['nbfield']++; } diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index e954f429781..4f743cc58f7 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -1102,7 +1102,7 @@ if ($action == 'create' && $user->rights->projet->creer) { print ''; print ''; } if (!empty($arrayfields['p.fk_statut']['checked'])) { From c3da1554a7edb6cf59d83ee69b52141b08a1d7ed Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 19 Feb 2023 16:28:04 +0100 Subject: [PATCH 153/607] Debug v17 --- htdocs/core/actions_massactions.inc.php | 9 ++- htdocs/projet/class/project.class.php | 76 +++++++++++++------------ htdocs/projet/list.php | 1 + 3 files changed, 49 insertions(+), 37 deletions(-) diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index d5731f014af..3338acd1be4 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -958,7 +958,14 @@ if (!$error && $massaction == 'validate' && $permissiontoadd) { foreach ($toselect as $toselectid) { $result = $objecttmp->fetch($toselectid); if ($result > 0) { - $result = $objecttmp->validate($user); + if (method_exists($objecttmp, 'validate')) { + $result = $objecttmp->validate($user); + } elseif (method_exists($objecttmp, 'setValid')) { + $result = $objecttmp->setValid($user); + } else { + $objecttmp->error = 'No method validate or setValid on this object'; + $result = -1; + } if ($result == 0) { $langs->load("errors"); setEventMessages($langs->trans("ErrorObjectMustHaveStatusDraftToBeValidated", $objecttmp->ref), null, 'errors'); diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 0d6df2ddc98..5375a418ca2 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -1098,7 +1098,7 @@ class Project extends CommonObject * * @param User $user User that validate * @param int $notrigger 1=Disable triggers - * @return int <0 if KO, >0 if OK + * @return int <0 if KO, 0=Nothing done, >0 if KO */ public function setValid($user, $notrigger = 0) { @@ -1106,47 +1106,51 @@ class Project extends CommonObject $error = 0; - if ($this->statut != 1) { - // Check parameters - if (preg_match('/^'.preg_quote($langs->trans("CopyOf").' ').'/', $this->title)) { - $this->error = $langs->trans("ErrorFieldFormat", $langs->transnoentities("Label")).'. '.$langs->trans('RemoveString', $langs->transnoentitiesnoconv("CopyOf")); - return -1; + // Protection + if ($this->status == self::STATUS_VALIDATED) { + dol_syslog(get_class($this)."::validate action abandonned: already validated", LOG_WARNING); + return 0; + } + + // Check parameters + if (preg_match('/^'.preg_quote($langs->trans("CopyOf").' ').'/', $this->title)) { + $this->error = $langs->trans("ErrorFieldFormat", $langs->transnoentities("Label")).'. '.$langs->trans('RemoveString', $langs->transnoentitiesnoconv("CopyOf")); + return -1; + } + + $this->db->begin(); + + $sql = "UPDATE ".MAIN_DB_PREFIX."projet"; + $sql .= " SET fk_statut = ".self::STATUS_VALIDATED; + $sql .= " WHERE rowid = ".((int) $this->id); + $sql .= " AND entity = ".((int) $conf->entity); + + dol_syslog(get_class($this)."::setValid", LOG_DEBUG); + $resql = $this->db->query($sql); + if ($resql) { + // Call trigger + if (empty($notrigger)) { + $result = $this->call_trigger('PROJECT_VALIDATE', $user); + if ($result < 0) { + $error++; + } + // End call triggers } - $this->db->begin(); - - $sql = "UPDATE ".MAIN_DB_PREFIX."projet"; - $sql .= " SET fk_statut = 1"; - $sql .= " WHERE rowid = ".((int) $this->id); - $sql .= " AND entity = ".((int) $conf->entity); - - dol_syslog(get_class($this)."::setValid", LOG_DEBUG); - $resql = $this->db->query($sql); - if ($resql) { - // Call trigger - if (empty($notrigger)) { - $result = $this->call_trigger('PROJECT_VALIDATE', $user); - if ($result < 0) { - $error++; - } - // End call triggers - } - - if (!$error) { - $this->statut = 1; - $this->db->commit(); - return 1; - } else { - $this->db->rollback(); - $this->error = join(',', $this->errors); - dol_syslog(get_class($this)."::setValid ".$this->error, LOG_ERR); - return -1; - } + if (!$error) { + $this->statut = 1; + $this->db->commit(); + return 1; } else { $this->db->rollback(); - $this->error = $this->db->lasterror(); + $this->error = join(',', $this->errors); + dol_syslog(get_class($this)."::setValid ".$this->error, LOG_ERR); return -1; } + } else { + $this->db->rollback(); + $this->error = $this->db->lasterror(); + return -1; } } diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index c50350c91cc..15fc35f9e84 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -888,6 +888,7 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; // List of mass actions available $arrayofmassactions = array( + 'validate'=>img_picto('', 'check', 'class="pictofixedwidth"').$langs->trans("Validate"), 'generate_doc'=>img_picto('', 'pdf', 'class="pictofixedwidth"').$langs->trans("ReGeneratePDF"), //'builddoc'=>img_picto('', 'pdf', 'class="pictofixedwidth"').$langs->trans("PDFMerge"), //'presend'=>img_picto('', 'email', 'class="pictofixedwidth"').$langs->trans("SendByMail"), From 2cafd2cbc49268b1995f772ac416aab02a3a38aa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 19 Feb 2023 16:42:01 +0100 Subject: [PATCH 154/607] Debug v17 --- .../compta/paiement/cheque/class/remisecheque.class.php | 2 +- htdocs/core/actions_massactions.inc.php | 9 +++++++-- htdocs/don/class/don.class.php | 2 +- htdocs/projet/class/project.class.php | 2 +- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/htdocs/compta/paiement/cheque/class/remisecheque.class.php b/htdocs/compta/paiement/cheque/class/remisecheque.class.php index 3fb82f05cb9..9895e583601 100644 --- a/htdocs/compta/paiement/cheque/class/remisecheque.class.php +++ b/htdocs/compta/paiement/cheque/class/remisecheque.class.php @@ -261,7 +261,7 @@ class RemiseCheque extends CommonObject $this->errno = $this->db->lasterrno(); } - if (!$this->errno && !empty($conf->global->MAIN_DISABLEDRAFTSTATUS)) { + if (!$this->errno && (getDolGlobalString('MAIN_DISABLEDRAFTSTATUS') || getDolGlobalString('MAIN_DISABLEDRAFTSTATUS_CHEQUE'))) { $res = $this->validate($user); //if ($res < 0) $error++; } diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index 3338acd1be4..9afd82b7eaf 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -984,8 +984,13 @@ if (!$error && $massaction == 'validate' && $permissiontoadd) { if (getDolGlobalInt('MAIN_MULTILANGS') && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if (getDolGlobalInt('MAIN_MULTILANGS') && empty($newlang)) { - $newlang = $objecttmp->thirdparty->default_lang; + if (getDolGlobalInt('MAIN_MULTILANGS') && empty($newlang) && property_exists($objecttmp, 'thirdparty')) { + if ((property_exists($objecttmp, 'socid') || property_exists($objecttmp, 'fk_soc')) && empty($objecttmp->thirdparty)) { + $objecttmp->fetch_thirparty(); + } + if (!empty($objecttmp->thirdparty)) { + $newlang = $objecttmp->thirdparty->default_lang; + } } if (!empty($newlang)) { $outputlangs = new Translate("", $conf); diff --git a/htdocs/don/class/don.class.php b/htdocs/don/class/don.class.php index ceb5b95c1f3..35c5c5ff40a 100644 --- a/htdocs/don/class/don.class.php +++ b/htdocs/don/class/don.class.php @@ -438,7 +438,7 @@ class Don extends CommonObject } } - if (!$error && !empty($conf->global->MAIN_DISABLEDRAFTSTATUS)) { + if (!$error && (getDolGlobalString('MAIN_DISABLEDRAFTSTATUS') || getDolGlobalString('MAIN_DISABLEDRAFTSTATUS_DONATION'))) { //$res = $this->setValid($user); //if ($res < 0) $error++; } diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 5375a418ca2..d6b0515eb1a 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -498,7 +498,7 @@ class Project extends CommonObject } } - if (!$error && !empty($conf->global->MAIN_DISABLEDRAFTSTATUS)) { + if (!$error && (getDolGlobalString('MAIN_DISABLEDRAFTSTATUS') || getDolGlobalString('MAIN_DISABLEDRAFTSTATUS_PROJECT'))) { $res = $this->setValid($user); if ($res < 0) { $error++; From 6224414b0d36d1c8fe7e0bbad83848ab78eeab88 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 19 Feb 2023 16:55:36 +0100 Subject: [PATCH 155/607] Debug v17 --- htdocs/projet/card.php | 44 +++++++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index 4f743cc58f7..bbecfacdae4 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -99,6 +99,8 @@ if ($id == '' && $ref == '' && ($action != "create" && $action != "add" && $acti accessforbidden(); } +$permissiontoadd = $user->rights->projet->creer; +$permissiontodelete = $user->rights->projet->supprimer; $permissiondellink = $user->rights->projet->creer; // Used by the include of actions_dellink.inc.php @@ -152,7 +154,20 @@ if (empty($reshook)) { include DOL_DOCUMENT_ROOT.'/core/actions_dellink.inc.php'; // Must be include, not include_once - if ($action == 'add' && $user->rights->projet->creer) { + // Action setdraft object + if ($action == 'confirm_setdraft' && $confirm == 'yes' && $permissiontoadd) { + $result = $object->setStatut($object::STATUS_DRAFT, null, '', 'PROJECT_MODIFY'); + if ($result >= 0) { + // Nothing else done + } else { + $error++; + setEventMessages($object->error, $object->errors, 'errors'); + } + $action = ''; + } + + // Action add + if ($action == 'add' && $permissiontoadd) { $error = 0; if (!GETPOST('ref')) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Ref")), null, 'errors'); @@ -260,7 +275,7 @@ if (empty($reshook)) { } } - if ($action == 'update' && empty(GETPOST('cancel')) && $user->rights->projet->creer) { + if ($action == 'update' && empty(GETPOST('cancel')) && $permissiontoadd) { $error = 0; if (empty($ref)) { @@ -376,7 +391,7 @@ if (empty($reshook)) { } // Build doc - if ($action == 'builddoc' && $user->rights->projet->creer) { + if ($action == 'builddoc' && $permissiontoadd) { // Save last template used to generate document if (GETPOST('model')) { $object->setDocModel($user, GETPOST('model', 'alpha')); @@ -395,7 +410,7 @@ if (empty($reshook)) { } // Delete file in doc form - if ($action == 'remove_file' && $user->rights->projet->creer) { + if ($action == 'remove_file' && $permissiontoadd) { if ($object->id > 0) { require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; @@ -413,28 +428,28 @@ if (empty($reshook)) { } - if ($action == 'confirm_validate' && $confirm == 'yes') { + if ($action == 'confirm_validate' && $confirm == 'yes' && $permissiontoadd) { $result = $object->setValid($user); if ($result <= 0) { setEventMessages($object->error, $object->errors, 'errors'); } } - if ($action == 'confirm_close' && $confirm == 'yes') { + if ($action == 'confirm_close' && $confirm == 'yes' && $permissiontoadd) { $result = $object->setClose($user); if ($result <= 0) { setEventMessages($object->error, $object->errors, 'errors'); } } - if ($action == 'confirm_reopen' && $confirm == 'yes') { + if ($action == 'confirm_reopen' && $confirm == 'yes' && $permissiontoadd) { $result = $object->setValid($user); if ($result <= 0) { setEventMessages($object->error, $object->errors, 'errors'); } } - if ($action == 'confirm_delete' && GETPOST("confirm") == "yes" && $user->rights->projet->supprimer) { + if ($action == 'confirm_delete' && $confirm == 'yes' && $permissiontodelete) { $object->fetch($id); $result = $object->delete($user); if ($result > 0) { @@ -447,7 +462,7 @@ if (empty($reshook)) { } } - if ($action == 'confirm_clone' && $user->rights->projet->creer && $confirm == 'yes') { + if ($action == 'confirm_clone' && $permissiontoadd && $confirm == 'yes') { $clone_contacts = GETPOST('clone_contacts') ? 1 : 0; $clone_tasks = GETPOST('clone_tasks') ? 1 : 0; $clone_project_files = GETPOST('clone_project_files') ? 1 : 0; @@ -1483,6 +1498,17 @@ if ($action == 'create' && $user->rights->projet->creer) { } */ + // Back to draft + if (!getDolGlobalString('MAIN_DISABLEDRAFTSTATUS') && !getDolGlobalString('MAIN_DISABLEDRAFTSTATUS_PROJECT')) { + if ($object->statut != Project::STATUS_DRAFT && $user->rights->projet->creer) { + if ($userWrite > 0) { + print dolGetButtonAction('', $langs->trans('SetToDraft'), 'default', $_SERVER["PHP_SELF"].'?action=confirm_setdraft&confirm=yes&token='.newToken().'&id='.$object->id, ''); + } else { + print dolGetButtonAction($langs->trans('NotOwnerOfProject'), $langs->trans('SetToDraft'), 'default', $_SERVER['PHP_SELF']. '#', '', false); + } + } + } + // Modify if ($object->statut != Project::STATUS_CLOSED && $user->rights->projet->creer) { if ($userWrite > 0) { From 2b8b389bcfae99bfd31046d9e1de63bbd258545a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 19 Feb 2023 17:00:40 +0100 Subject: [PATCH 156/607] Fix regression --- htdocs/core/actions_massactions.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index 9afd82b7eaf..6fe7ab2ac5d 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -986,7 +986,7 @@ if (!$error && $massaction == 'validate' && $permissiontoadd) { } if (getDolGlobalInt('MAIN_MULTILANGS') && empty($newlang) && property_exists($objecttmp, 'thirdparty')) { if ((property_exists($objecttmp, 'socid') || property_exists($objecttmp, 'fk_soc')) && empty($objecttmp->thirdparty)) { - $objecttmp->fetch_thirparty(); + $objecttmp->fetch_thirdparty(); } if (!empty($objecttmp->thirdparty)) { $newlang = $objecttmp->thirdparty->default_lang; From 8a283f4de4b5b066e51e79db95dedff49a66bb4c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 19 Feb 2023 17:12:13 +0100 Subject: [PATCH 157/607] Fix missing extraparams column --- .../install/mysql/migration/16.0.0-17.0.0.sql | 4 ++ htdocs/install/mysql/tables/llx_commande.sql | 2 +- htdocs/install/mysql/tables/llx_projet.sql | 69 ++++++++++--------- 3 files changed, 40 insertions(+), 35 deletions(-) diff --git a/htdocs/install/mysql/migration/16.0.0-17.0.0.sql b/htdocs/install/mysql/migration/16.0.0-17.0.0.sql index 744c000294b..9d0a5a776d6 100644 --- a/htdocs/install/mysql/migration/16.0.0-17.0.0.sql +++ b/htdocs/install/mysql/migration/16.0.0-17.0.0.sql @@ -396,3 +396,7 @@ ALTER TABLE llx_c_tva ADD COLUMN use_default tinyint DEFAULT 0; ALTER TABLE llx_commande_fournisseurdet MODIFY COLUMN ref varchar(128); ALTER TABLE llx_facture_fourn_det MODIFY COLUMN ref varchar(128); + +ALTER TABLE llx_projet ADD COLUMN extraparams varchar(255); + + diff --git a/htdocs/install/mysql/tables/llx_commande.sql b/htdocs/install/mysql/tables/llx_commande.sql index 67712178bd3..e64ce7ff14f 100644 --- a/htdocs/install/mysql/tables/llx_commande.sql +++ b/htdocs/install/mysql/tables/llx_commande.sql @@ -77,7 +77,7 @@ create table llx_commande fk_incoterms integer, -- for incoterms location_incoterms varchar(255), -- for incoterms import_key varchar(14), - extraparams varchar(255), -- for stock other parameters with json format + extraparams varchar(255), -- to save other parameters with json format fk_multicurrency integer, multicurrency_code varchar(3), diff --git a/htdocs/install/mysql/tables/llx_projet.sql b/htdocs/install/mysql/tables/llx_projet.sql index 3b8bf1be05b..531f0992f2c 100644 --- a/htdocs/install/mysql/tables/llx_projet.sql +++ b/htdocs/install/mysql/tables/llx_projet.sql @@ -19,45 +19,46 @@ create table llx_projet ( - rowid integer AUTO_INCREMENT PRIMARY KEY, - fk_soc integer, - datec datetime, -- date creation project - tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - dateo date, -- date start project - datee date, -- date end project - ref varchar(50), - entity integer DEFAULT 1 NOT NULL, -- multi company id - title varchar(255) NOT NULL, - description text, - fk_user_creat integer NOT NULL, -- createur du projet - fk_user_modif integer, - public integer, -- project is public or not - fk_statut integer DEFAULT 0 NOT NULL, -- open or close - fk_opp_status integer DEFAULT NULL, -- if project is used to manage opportunities - opp_percent double(5,2), - fk_opp_status_end integer DEFAULT NULL, -- if project is used to manage opportunities (the opportunity status the project has when set to lose) - date_close datetime DEFAULT NULL, - fk_user_close integer DEFAULT NULL, - note_private text, - note_public text, - email_msgid varchar(175), -- if project or lead is created by email collector, we store here MSG ID. Do not use a too large value, it generates trouble with unique index - --budget_days real, -- budget in days is sum of field planned_workload of tasks - opp_amount double(24,8), - budget_amount double(24,8), + rowid integer AUTO_INCREMENT PRIMARY KEY, + fk_soc integer, + datec datetime, -- date creation project + tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + dateo date, -- date start project + datee date, -- date end project + ref varchar(50), + entity integer DEFAULT 1 NOT NULL, -- multi company id + title varchar(255) NOT NULL, + description text, + fk_user_creat integer NOT NULL, -- createur du projet + fk_user_modif integer, + public integer, -- project is public or not + fk_statut integer DEFAULT 0 NOT NULL, -- open or close + fk_opp_status integer DEFAULT NULL, -- if project is used to manage opportunities + opp_percent double(5,2), + fk_opp_status_end integer DEFAULT NULL, -- if project is used to manage opportunities (the opportunity status the project has when set to lose) + date_close datetime DEFAULT NULL, + fk_user_close integer DEFAULT NULL, + note_private text, + note_public text, + email_msgid varchar(175), -- if project or lead is created by email collector, we store here MSG ID. Do not use a too large value, it generates trouble with unique index + --budget_days real, -- budget in days is sum of field planned_workload of tasks + opp_amount double(24,8), + budget_amount double(24,8), usage_opportunity integer DEFAULT 0, -- Set to 1 if project is used to follow an opportunity usage_task integer DEFAULT 1, -- Set to 1 if project is used to manage tasks and/or record timesheet usage_bill_time integer DEFAULT 0, -- Set to 1 if time spent must be converted into invoices usage_organize_event integer DEFAULT 0, -- Set to 1 if you want to use project to organize an event or receive attendees registration - date_start_event datetime, -- date start event - date_end_event datetime, -- date end event - location varchar(255), -- location + date_start_event datetime, -- date start event + date_end_event datetime, -- date end event + location varchar(255), -- location accept_conference_suggestions integer DEFAULT 0, -- Set to 1 if you want to allow unknown people to suggest conferences - accept_booth_suggestions integer DEFAULT 0, -- Set to 1 if you want to Allow unknown people to suggest booth + accept_booth_suggestions integer DEFAULT 0, -- Set to 1 if you want to Allow unknown people to suggest booth max_attendees integer DEFAULT 0, price_registration double(24,8), - price_booth double(24,8), - model_pdf varchar(255), - ip varchar(250), --ip used to create record (for public submission page) - last_main_doc varchar(255), -- relative filepath+filename of last main generated document - import_key varchar(14) -- Import key + price_booth double(24,8), + model_pdf varchar(255), + ip varchar(250), -- ip used to create record (for public submission page) + last_main_doc varchar(255), -- relative filepath+filename of last main generated document + import_key varchar(14), -- Import key + extraparams varchar(255) -- to save other parameters with json format )ENGINE=innodb; From 9966d605a2c7505dab8e0b3016fb966536be5f94 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 19 Feb 2023 17:20:51 +0100 Subject: [PATCH 158/607] Debug v17 --- htdocs/projet/class/project.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index d6b0515eb1a..c4303a73950 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -1123,7 +1123,7 @@ class Project extends CommonObject $sql = "UPDATE ".MAIN_DB_PREFIX."projet"; $sql .= " SET fk_statut = ".self::STATUS_VALIDATED; $sql .= " WHERE rowid = ".((int) $this->id); - $sql .= " AND entity = ".((int) $conf->entity); + //$sql .= " AND entity = ".((int) $conf->entity); // Disabled, when we use the ID for the where, we must not add any other search condition dol_syslog(get_class($this)."::setValid", LOG_DEBUG); $resql = $this->db->query($sql); From 230c3d2752c7190325b99bcfdad882a1b3e9702c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 19 Feb 2023 18:11:41 +0100 Subject: [PATCH 159/607] Debug v17 --- htdocs/bookmarks/bookmarks.lib.php | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/htdocs/bookmarks/bookmarks.lib.php b/htdocs/bookmarks/bookmarks.lib.php index 88cae3e4293..4141aa671a0 100644 --- a/htdocs/bookmarks/bookmarks.lib.php +++ b/htdocs/bookmarks/bookmarks.lib.php @@ -102,6 +102,7 @@ function printDropdownBookmarksList() $listbtn .= img_picto('', 'edit', 'class="paddingright opacitymedium"').$langs->trans('EditBookmarks').''; $bookmarkList = ''; + $bookmarkNb = 0; // Menu with list of bookmarks $sql = "SELECT rowid, title, url, target FROM ".MAIN_DB_PREFIX."bookmark"; $sql .= " WHERE (fk_user = ".((int) $user->id)." OR fk_user is NULL OR fk_user = 0)"; @@ -116,6 +117,7 @@ function printDropdownBookmarksList() $bookmarkList .= dol_escape_htmltag($obj->title); $bookmarkList .= ''; $i++; + $bookmarkNb++; } $bookmarkList .= ''; @@ -141,6 +143,7 @@ function printDropdownBookmarksList() $searchForm .= dol_escape_htmltag($obj->title); $searchForm .= ''; $i++; + $bookmarkNb++; } $searchForm .= ''; } @@ -200,13 +203,15 @@ function printDropdownBookmarksList() '; - $html .= ' - - - '; + if ($bookmarkNb) { + $html .= ' + + + '; + } $html .= ' '; -print '
'; + print ''.$langs->trans("More").'...'.($othernb < $maxofloop ? ' ('.$othernb.')' : '').''; + print '
'.$langs->trans("Total")."'; $listtype = array( - FactureFournisseur::TYPE_STANDARD=>$langs->trans("InvoiceStandard"), - FactureFournisseur::TYPE_REPLACEMENT=>$langs->trans("InvoiceReplacement"), - FactureFournisseur::TYPE_CREDIT_NOTE=>$langs->trans("InvoiceAvoir"), - FactureFournisseur::TYPE_DEPOSIT=>$langs->trans("InvoiceDeposit"), + FactureFournisseur::TYPE_STANDARD=>$langs->trans("InvoiceStandard"), + FactureFournisseur::TYPE_REPLACEMENT=>$langs->trans("InvoiceReplacement"), + FactureFournisseur::TYPE_CREDIT_NOTE=>$langs->trans("InvoiceAvoir"), + FactureFournisseur::TYPE_DEPOSIT=>$langs->trans("InvoiceDeposit"), ); /* - if (!empty($conf->global->INVOICE_USE_SITUATION)) - { - $listtype[Facture::TYPE_SITUATION] = $langs->trans("InvoiceSituation"); - } - */ + if (!empty($conf->global->INVOICE_USE_SITUATION)) + { + $listtype[Facture::TYPE_SITUATION] = $langs->trans("InvoiceSituation"); + } + */ //$listtype[Facture::TYPE_PROFORMA]=$langs->trans("InvoiceProForma"); // A proformat invoice is not an invoice but must be an order. print $form->selectarray('search_type', $listtype, $search_type, 1, 0, 0, '', 0, 0, 0, 'ASC', 'maxwidth100'); print ''; print '
'; /* - print $langs->trans('From').' '; - print $form->selectDate($search_datelimit_start ? $search_datelimit_start : -1, 'search_datelimit_start', 0, 0, 1); - print '
'; - print '
'; - print $langs->trans('to').' ';*/ + print $langs->trans('From').' '; + print $form->selectDate($search_datelimit_start ? $search_datelimit_start : -1, 'search_datelimit_start', 0, 0, 1); + print '
'; + print '
'; + print $langs->trans('to').' ';*/ print $form->selectDate($search_datelimit_end ? $search_datelimit_end : -1, 'search_datelimit_end', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans("Before")); print '
'.$langs->trans("Alert"); print '
'; @@ -1487,7 +1487,7 @@ if ($num > 0) { // Label if (!empty($arrayfields['f.label']['checked'])) { print '
'; - print $obj->label; + print dol_escape_htmltag($obj->label); print ''; - print $thirdparty->name_alias; + print dol_escape_htmltag($thirdparty->name_alias); print ''; - print $obj->town; + print ''; + print dol_escape_htmltag($obj->town); print ''; + print ''; print dol_escape_htmltag($obj->zip); print '".$obj->state_name."'; + print dol_escape_htmltag($obj->state_name); + print "'.price($obj->total_ht)."'.price($obj->total_ht)."'.$obj->multicurrency_code.' - '.$langs->trans('Currency'.$obj->multicurrency_code)."'.$obj->multicurrency_code.' - '.$langs->trans('Currency'.$obj->multicurrency_code)."'; - $form->form_multicurrency_rate($_SERVER['PHP_SELF'].'?id='.$obj->rowid, $obj->multicurrency_tx, 'none', $obj->multicurrency_code); - print "'; + $form->form_multicurrency_rate($_SERVER['PHP_SELF'].'?id='.$obj->rowid, $obj->multicurrency_tx, 'none', $obj->multicurrency_code); + print "'.price($obj->multicurrency_total_ht)."'.price($obj->multicurrency_total_ht)."
'.$langs->trans("OpportunityStatus").''; print '
'; - print $formproject->selectOpportunityStatus('opp_status', $object->opp_status, 1, 0, 0, 0, 'inline-block valignmiddle', 1, 1); + print $formproject->selectOpportunityStatus('opp_status', $object->opp_status, 1, 0, 0, 0, 'minwidth150 inline-block valignmiddle', 1, 1); // Opportunity probability print ' %'; diff --git a/htdocs/projet/index.php b/htdocs/projet/index.php index 2698a4b1a21..27885de31b9 100644 --- a/htdocs/projet/index.php +++ b/htdocs/projet/index.php @@ -193,9 +193,8 @@ print '
'; */ include DOL_DOCUMENT_ROOT.'/projet/graph_opportunities.inc.php'; - // List of draft projects -print_projecttasks_array($db, $form, $socid, $projectsListId, 0, 0, $listofoppstatus, array('projectlabel', 'plannedworkload', 'declaredprogress', 'prospectionstatus', 'projectstatus')); +print_projecttasks_array($db, $form, $socid, $projectsListId, 0, 0, $listofoppstatus, array('projectlabel', 'plannedworkload', 'declaredprogress', 'prospectionstatus', 'projectstatus'), $max); print '
'; From 93927cceff72b02fab0ed468346e45b901601cd7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 19 Feb 2023 16:12:28 +0100 Subject: [PATCH 152/607] Debug v17 --- htdocs/core/lib/functions.lib.php | 86 +++++++++++++++++++++---------- htdocs/projet/list.php | 71 ++++++++++++++++--------- 2 files changed, 106 insertions(+), 51 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 7ca4b30e0a0..0664bae3f58 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -784,6 +784,12 @@ function GETPOST($paramname, $check = 'alphanohtml', $method = 0, $filter = null } } } else { + // If field name is 'search_xxx' then we force the add of space after each < and > (when following char is numeric) because it means + // we use the < or > to make a search on a numeric value to do higher or lower so we can add a space to break html tags + if (strpos($paramname, 'search_') === 0) { + $out = preg_replace('/([<>])([-+]?\d)/', '\1 \2', $out); + } + $out = sanitizeVal($out, $check, $filter, $options); } @@ -9751,7 +9757,7 @@ function dol_getmypid() * If param $mode is 0, can contains several keywords separated with a space or | * like "keyword1 keyword2" = We want record field like keyword1 AND field like keyword2 * or like "keyword1|keyword2" = We want record field like keyword1 OR field like keyword2 - * If param $mode is 1, can contains an operator <, > or = like "<10" or ">=100.5 < 1000" + * If param $mode is 1, can contains an operator <, > or = like "<10" or ">=100.5 < -1000" * If param $mode is 2, can contains a list of int id separated by comma like "1,3,4" * If param $mode is 3, can contains a list of string separated by comma like "a,b,c" * @param integer $mode 0=value is list of keyword strings, 1=value is a numeric test (Example ">5.5 <10"), 2=value is a list of ID separated with comma (Example '1,3,4') @@ -9789,23 +9795,35 @@ function natural_search($fields, $value, $mode = 0, $nofirstand = 0) $newres = ''; foreach ($fields as $field) { if ($mode == 1) { - $operator = '='; - $newcrit = preg_replace('/([!<>=]+)/', '', $crit); - - $reg = array(); - preg_match('/([!<>=]+)/', $crit, $reg); - if (!empty($reg[1])) { - $operator = $reg[1]; - } - if ($newcrit != '') { - $numnewcrit = price2num($newcrit); - if (is_numeric($numnewcrit)) { - $newres .= ($i2 > 0 ? ' OR ' : '').$field.' '.$operator.' '.((float) $numnewcrit); // should be a numeric - } else { - $newres .= ($i2 > 0 ? ' OR ' : '').'1 = 2'; // force false + $tmpcrits = explode('|', $crit); + $i3 = 0; // count the nb of valid criteria added for this field + foreach ($tmpcrits as $tmpcrit) { + if ($tmpcrit !== '0' && empty($tmpcrit)) { + continue; + } + $tmpcrit = trim($tmpcrit); + + $newres .= (($i2 > 0 || $i3 > 0) ? ' OR ' : ''); + + $operator = '='; + $newcrit = preg_replace('/([!<>=]+)/', '', $tmpcrit); + + $reg = array(); + preg_match('/([!<>=]+)/', $tmpcrit, $reg); + if (!empty($reg[1])) { + $operator = $reg[1]; + } + if ($newcrit != '') { + $numnewcrit = price2num($newcrit); + if (is_numeric($numnewcrit)) { + $newres .= $field.' '.$operator.' '.((float) $numnewcrit); // should be a numeric + } else { + $newres .= '1 = 2'; // force false, we received a corrupted data + } + $i3++; // a criteria was added to string } - $i2++; // a criteria was added to string } + $i2++; } elseif ($mode == 2 || $mode == -2) { $crit = preg_replace('/[^0-9,]/', '', $crit); // ID are always integer $newres .= ($i2 > 0 ? ' OR ' : '').$field." ".($mode == -2 ? 'NOT ' : ''); @@ -9847,28 +9865,36 @@ function natural_search($fields, $value, $mode = 0, $nofirstand = 0) } } } - } else // $mode=0 - { + } else { // $mode=0 $tmpcrits = explode('|', $crit); - $i3 = 0; + $i3 = 0; // count the nb of valid criteria added for this field foreach ($tmpcrits as $tmpcrit) { if ($tmpcrit !== '0' && empty($tmpcrit)) { continue; } + $tmpcrit = trim($tmpcrit); - $newres .= (($i2 > 0 || $i3 > 0) ? ' OR ' : ''); + if ($tmpcrit == '^$') { // If we search empty, we must combined different fields with AND + $newres .= (($i2 > 0 || $i3 > 0) ? ' AND ' : ''); + } else { + $newres .= (($i2 > 0 || $i3 > 0) ? ' OR ' : ''); + } if (preg_match('/\.(id|rowid)$/', $field)) { // Special case for rowid that is sometimes a ref so used as a search field - $newres .= $field." = ".(is_numeric(trim($tmpcrit)) ? ((float) trim($tmpcrit)) : '0'); + $newres .= $field." = ".(is_numeric($tmpcrit) ? ((float) $tmpcrit) : '0'); } else { - $tmpcrit = trim($tmpcrit); $tmpcrit2 = $tmpcrit; $tmpbefore = '%'; $tmpafter = '%'; + $tmps = ''; + if (preg_match('/^!/', $tmpcrit)) { - $newres .= $field." NOT LIKE '"; // ! as exclude character + $tmps .= $field." NOT LIKE "; // ! as exclude character $tmpcrit2 = preg_replace('/^!/', '', $tmpcrit2); - } else $newres .= $field." LIKE '"; + } else { + $tmps .= $field." LIKE "; + } + $tmps .= "'"; if (preg_match('/^[\^\$]/', $tmpcrit)) { $tmpbefore = ''; @@ -9878,12 +9904,17 @@ function natural_search($fields, $value, $mode = 0, $nofirstand = 0) $tmpafter = ''; $tmpcrit2 = preg_replace('/[\^\$]$/', '', $tmpcrit2); } + + if ($tmpcrit2 == '' || preg_match('/^!/', $tmpcrit)) { + $tmps = "(".$tmps; + } + $newres .= $tmps; $newres .= $tmpbefore; $newres .= $db->escape($tmpcrit2); $newres .= $tmpafter; $newres .= "'"; - if ($tmpcrit2 == '') { - $newres .= " OR ".$field." IS NULL"; + if ($tmpcrit2 == '' || preg_match('/^!/', $tmpcrit)) { + $newres .= " OR ".$field." IS NULL)"; } } @@ -9893,13 +9924,14 @@ function natural_search($fields, $value, $mode = 0, $nofirstand = 0) } $i++; } + if ($newres) { $res = $res.($res ? ' AND ' : '').($i2 > 1 ? '(' : '').$newres.($i2 > 1 ? ')' : ''); } $j++; } $res = ($nofirstand ? "" : " AND ")."(".$res.")"; - //print 'xx'.$res.'yy'; + return $res; } diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index dea5848b469..c50350c91cc 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -54,6 +54,7 @@ $massaction = GETPOST('massaction', 'alpha'); $show_files = GETPOST('show_files', 'int'); $confirm = GETPOST('confirm', 'alpha'); $toselect = GETPOST('toselect', 'array'); +$optioncss = GETPOST('optioncss', 'alpha'); $contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'projectlist'; $title = $langs->trans("Projects"); @@ -113,6 +114,7 @@ $search_accept_booth_suggestions = GETPOST('search_accept_booth_suggestions', 'i $search_price_registration = GETPOST("search_price_registration", 'alpha'); $search_price_booth = GETPOST("search_price_booth", 'alpha'); $search_login = GETPOST('search_login', 'alpha'); +$search_import_key = GETPOST('search_import_key', 'alpha'); $searchCategoryCustomerOperator = 0; if (GETPOSTISSET('formfilteraction')) { $searchCategoryCustomerOperator = GETPOST('search_category_customer_operator', 'int'); @@ -120,7 +122,7 @@ if (GETPOSTISSET('formfilteraction')) { $searchCategoryCustomerOperator = $conf->global->MAIN_SEARCH_CAT_OR_BY_DEFAULT; } $searchCategoryCustomerList = GETPOST('search_category_customer_list', 'array'); -$optioncss = GETPOST('optioncss', 'alpha'); + $mine = ((GETPOST('mode') == 'mine') ? 1 : 0); if ($mine) { @@ -134,7 +136,6 @@ $search_eday = GETPOST('search_eday', 'int'); $search_emonth = GETPOST('search_emonth', 'int'); $search_eyear = GETPOST('search_eyear', 'int'); - $search_date_start_startmonth = GETPOST('search_date_start_startmonth', 'int'); $search_date_start_startyear = GETPOST('search_date_start_startyear', 'int'); $search_date_start_startday = GETPOST('search_date_start_startday', 'int'); @@ -152,6 +153,7 @@ $search_date_end_endmonth = GETPOST('search_date_end_endmonth', 'int'); $search_date_end_endyear = GETPOST('search_date_end_endyear', 'int'); $search_date_end_endday = GETPOST('search_date_end_endday', 'int'); $search_date_end_end = dol_mktime(23, 59, 59, $search_date_end_endmonth, $search_date_end_endday, $search_date_end_endyear); // Use tzserver + if (isModEnabled('categorie')) { $search_category_array = GETPOST("search_category_".Categorie::TYPE_PROJECT."_list", "array"); } @@ -301,6 +303,7 @@ if (empty($reshook)) { $search_price_registration = ''; $search_price_booth = ''; $search_login = ''; + $search_import_key = ''; $toselect = array(); $search_array_options = array(); $search_category_array = array(); @@ -368,6 +371,8 @@ if (empty($reshook)) { $form = new Form($db); $formcompany = new FormCompany($db); +$now = dol_now(); + $companystatic = new Societe($db); $taskstatic = new Task($db); $formother = new FormOther($db); @@ -415,7 +420,7 @@ if (count($listofprojectcontacttypeexternal) == 0) { $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; $selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields -$distinct = 'DISTINCT'; // We add distinct until we are added a protection to be sure a contact of a project and task is only once. +$distinct = 'DISTINCT'; // We add distinct until we have added a protection to be sure a contact of a project and task is only once. $sql = "SELECT ".$distinct." p.rowid as id, p.ref, p.title, p.fk_statut as status, p.fk_opp_status, p.public, p.fk_user_creat,"; $sql .= " p.datec as date_creation, p.dateo as date_start, p.datee as date_end, p.opp_amount, p.opp_percent, (p.opp_amount*p.opp_percent/100) as opp_weighted_amount, p.tms as date_update, p.budget_amount,"; $sql .= " p.usage_opportunity, p.usage_task, p.usage_bill_time, p.usage_organize_event,"; @@ -436,6 +441,9 @@ $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters, $object); // Note that $action and $object may have been modified by hook $sql .= preg_replace('/^,/', '', $hookmanager->resPrint); $sql = preg_replace('/,\s*$/', '', $sql); + +$sqlfields = $sql; // $sql fields to remove for count total + $sql .= " FROM ".MAIN_DB_PREFIX.$object->table_element." as p"; if (!empty($extrafields->attributes[$object->table_element]['label']) &&is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) { $sql .= " LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element."_extrafields as ef on (p.rowid = ef.fk_object)"; @@ -546,9 +554,11 @@ if ($search_sale > 0) { // No check is done on company permission because readability is managed by public status of project and assignement. //if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND ((s.rowid = sc.fk_soc AND sc.fk_user = ".((int) $user->id).") OR (s.rowid IS NULL))"; if ($search_project_user > 0) { + // TODO Replace this with a EXISTS and remove the link to table + DISTINCT $sql .= " AND ecp.fk_c_type_contact IN (".$db->sanitize(join(',', array_keys($listofprojectcontacttype))).") AND ecp.element_id = p.rowid AND ecp.fk_socpeople = ".((int) $search_project_user); } if ($search_project_contact > 0) { + // TODO Replace this with a EXISTS and remove the link to table + DISTINCT $sql .= " AND ecp_contact.fk_c_type_contact IN (".$db->sanitize(join(',', array_keys($listofprojectcontacttypeexternal))).") AND ecp_contact.element_id = p.rowid AND ecp_contact.fk_socpeople = ".((int) $search_project_contact); } if ($search_opp_amount != '') { @@ -584,6 +594,9 @@ if ($search_price_booth != '') { if ($search_login) { $sql .= natural_search(array('u.login', 'u.firstname', 'u.lastname'), $search_login); } +if ($search_import_key) { + $sql .= natural_search(array('p.import_key'), $search_import_key); +} // Search for tag/category ($searchCategoryProjectList is an array of ID) $searchCategoryProjectList = $search_category_array; $searchCategoryProjectOperator = 0; @@ -664,37 +677,45 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters, $object); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; -$sql .= $db->order($sortfield, $sortorder); +//print $sql; // Count total nb of records $nbtotalofrecords = ''; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { - $resql = $db->query($sql); - $nbtotalofrecords = $db->num_rows($resql); - if (($page * $limit) > $nbtotalofrecords) { // if total of record found is smaller than page * limit, goto and load page 0 + /* The fast and low memory method to get and count full list converts the sql into a sql count */ + $sqlforcount = preg_replace('/^'.preg_quote($sqlfields, '/').'/', 'SELECT COUNT(*) as nbtotalofrecords', $sql); + $sqlforcount = preg_replace('/GROUP BY .*$/', '', $sqlforcount); + $resql = $db->query($sqlforcount); + if ($resql) { + $objforcount = $db->fetch_object($resql); + $nbtotalofrecords = $objforcount->nbtotalofrecords; + } else { + dol_print_error($db); + } + + if (($page * $limit) > $nbtotalofrecords) { // if total resultset is smaller then paging size (filtering), goto and load page 0 $page = 0; $offset = 0; } + $db->free($resql); } -// if total of record found is smaller than limit, no need to do paging and to restart another select with limits set. -if (is_numeric($nbtotalofrecords) && ($limit > $nbtotalofrecords || empty($limit))) { - $num = $nbtotalofrecords; -} else { - if (!empty($limit)) { - $sql .= $db->plimit($limit + 1, $offset); - } - $resql = $db->query($sql); - if (!$resql) { - dol_print_error($db); - exit; - } - - $num = $db->num_rows($resql); +// Complete request and execute it with limit +$sql .= $db->order($sortfield, $sortorder); +if ($limit) { + $sql .= $db->plimit($limit + 1, $offset); } +$resql = $db->query($sql); +if (!$resql) { + dol_print_error($db); + exit; +} + +$num = $db->num_rows($resql); + // Direct jump if only one record found -if ($num == 1 && !empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $search_all) { +if ($num == 1 && !empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $search_all && !$page) { $obj = $db->fetch_object($resql); header("Location: ".DOL_URL_ROOT.'/projet/card.php?id='.$obj->id); exit; @@ -704,8 +725,6 @@ if ($num == 1 && !empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $ // Output page // -------------------------------------------------------------------- -dol_syslog("list allowed project", LOG_DEBUG); - llxHeader('', $title, $help_url); $arrayofselected = is_array($toselect) ? $toselect : array(); @@ -855,6 +874,9 @@ if ($search_price_booth != '') { if ($search_login) { $param .= '&search_login='.urlencode($search_login); } +if ($search_import_key) { + $param .= '&search_import_key='.urlencode($search_import_key); +} if ($optioncss != '') { $param .= '&optioncss='.urlencode($optioncss); } @@ -1186,6 +1208,7 @@ if (!empty($arrayfields['p.email_msgid']['checked'])) { if (!empty($arrayfields['p.import_key']['checked'])) { // Import key print '
'; + print ''; print '
'."\n"; - // Type -/* -if (empty($conf->global->PARTNERSHIP_NEWFORM_FORCETYPE)) { - $listoftype = $partnershipt->liste_array(); - $tmp = array_keys($listoftype); - $defaulttype = ''; - $isempty = 1; - if (count($listoftype) == 1) { - $defaulttype = $tmp[0]; - $isempty = 0; - } - print ''."\n"; -} else { - $partnershipt->fetch($conf->global->PARTNERSHIP_NEWFORM_FORCETYPE); - print ''; -} -*/ - $partnershiptype = new PartnershipType($db); $listofpartnershipobj = $partnershiptype->fetchAll('', '', 1000, 0, array('active'=>1)); $listofpartnership = array(); @@ -608,15 +587,17 @@ foreach ($listofpartnershipobj as $partnershipobj) { $listofpartnership[$partnershipobj->id] = $partnershipobj->label; } -if (empty($conf->global->PARTNERSHIP_NEWFORM_FORCETYPE)) { - print ''."\n"; -} else { +if (getDolGlobalString('PARTNERSHIP_NEWFORM_FORCETYPE')) { print $listofpartnership[$conf->global->PARTNERSHIP_NEWFORM_FORCETYPE]; print ''; } +print '
'.$langs->trans("Type").' *'; - print $form->selectarray("typeid", $partnershipt->liste_array(1), GETPOST('typeid') ? GETPOST('typeid') : $defaulttype, $isempty); - print '
'.$langs->trans('PartnershipType').' *'."\n"; - print $form->selectarray("partnershiptype", $listofpartnership, GETPOSTISSET('partnershiptype') ? GETPOST('partnershiptype', 'int') : 'ifone', 1); - print '
'."\n"; +if (!getDolGlobalString('PARTNERSHIP_NEWFORM_FORCETYPE')) { + print ''."\n"; +} // Company print ''."\n"; // Other attributes -$tpl_context = 'public'; // define template context to public +$parameters['tdclass']='titlefield'; +$parameters['tpl_context']='public'; // define template context to public include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php'; // Comments print ''; diff --git a/htdocs/public/project/new.php b/htdocs/public/project/new.php index d4d6b4b68b5..50759aeede9 100644 --- a/htdocs/public/project/new.php +++ b/htdocs/public/project/new.php @@ -537,7 +537,7 @@ if (empty($conf->global->SOCIETE_DISABLE_STATE)) { } // Other attributes -$tpl_context = 'public'; // define template context to public +$parameters['tpl_context']='public'; // define template context to public include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php'; // Comments print ''; From 8f33945a0b5ef6825dc5bd748df9b24503647707 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 21 Feb 2023 10:37:15 +0100 Subject: [PATCH 190/607] CSS --- htdocs/public/partnership/new.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/public/partnership/new.php b/htdocs/public/partnership/new.php index 2884c7099c3..c06843a64a8 100644 --- a/htdocs/public/partnership/new.php +++ b/htdocs/public/partnership/new.php @@ -651,7 +651,7 @@ if (empty($conf->global->SOCIETE_DISABLE_STATE)) { // Logo //print ''."\n"; // Other attributes -$parameters['tdclass']='titlefield'; +$parameters['tdclass']='titlefieldauto'; $parameters['tpl_context']='public'; // define template context to public include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php'; // Comments From 6f869be8c039a309b764e576213d9a02269be7b1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 21 Feb 2023 10:41:47 +0100 Subject: [PATCH 191/607] Fix lang --- htdocs/langs/en_US/partnership.lang | 2 +- htdocs/langs/fr_FR/partnership.lang | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/langs/en_US/partnership.lang b/htdocs/langs/en_US/partnership.lang index 89a1bfa742d..f4ea73a1a8f 100644 --- a/htdocs/langs/en_US/partnership.lang +++ b/htdocs/langs/en_US/partnership.lang @@ -29,7 +29,7 @@ PartnershipCheckBacklink=Partnership: Check referring backlink # Menu # NewPartnership=New Partnership -NewPartnershipbyWeb= Your partnership was added successfully. +NewPartnershipbyWeb=Your partnership request has been added successfully. We may contact you soon... ListOfPartnerships=List of partnership # diff --git a/htdocs/langs/fr_FR/partnership.lang b/htdocs/langs/fr_FR/partnership.lang index 20c3fc0d801..b12f139abc9 100644 --- a/htdocs/langs/fr_FR/partnership.lang +++ b/htdocs/langs/fr_FR/partnership.lang @@ -29,7 +29,7 @@ PartnershipCheckBacklink=Partenariat : Vérifiez le backlink référent # Menu # NewPartnership=Nouveau partenariat -NewPartnershipbyWeb= Votre partenariat a été ajouté avec succès. +NewPartnershipbyWeb=Votre demande de partenariat a été ajouté avec succès. Nous vous recontacterons surement d'ici peu... ListOfPartnerships=Listes des partenariats # From 5477ec9800ee53f6597c32de27d883a37ced7de7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 21 Feb 2023 10:50:29 +0100 Subject: [PATCH 192/607] Style --- htdocs/public/members/new.php | 2 +- htdocs/public/partnership/new.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/public/members/new.php b/htdocs/public/members/new.php index e03ecfb0fda..2c6b7b4c9c5 100644 --- a/htdocs/public/members/new.php +++ b/htdocs/public/members/new.php @@ -497,7 +497,7 @@ $extrafields->fetch_name_optionals_label($object->table_element); // fetch optio llxHeaderVierge($langs->trans("NewSubscription")); - +print '
'; print load_fiche_titre($langs->trans("NewSubscription"), '', '', 0, 0, 'center'); diff --git a/htdocs/public/partnership/new.php b/htdocs/public/partnership/new.php index c06843a64a8..dea912e0653 100644 --- a/htdocs/public/partnership/new.php +++ b/htdocs/public/partnership/new.php @@ -537,7 +537,7 @@ $extrafields->fetch_name_optionals_label($object->table_element); // fetch optio llxHeaderVierge($langs->trans("NewPartnershipRequest")); - +print '
'; print load_fiche_titre($langs->trans("NewPartnershipRequest"), '', '', 0, 0, 'center'); From 3a561d78b9d6e8606917e7100cbd7cc690438217 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 21 Feb 2023 10:59:04 +0100 Subject: [PATCH 193/607] css --- htdocs/partnership/class/partnership.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/partnership/class/partnership.class.php b/htdocs/partnership/class/partnership.class.php index 3e16b4bf4e8..fab8b1ce32a 100644 --- a/htdocs/partnership/class/partnership.class.php +++ b/htdocs/partnership/class/partnership.class.php @@ -104,7 +104,8 @@ class Partnership extends CommonObject 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>0, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"), 'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>'1', 'position'=>10, 'notnull'=>1, 'visible'=>4, 'noteditable'=>'1', 'default'=>'(PROV)', 'index'=>1, 'searchall'=>1, 'showoncombobox'=>'1', 'comment'=>"Reference of object"), 'entity' => array('type'=>'integer', 'label'=>'Entity', 'enabled'=>'1', 'position'=>15, 'notnull'=>1, 'visible'=>-2, 'default'=>'1', 'index'=>1,), - 'fk_type' => array('type'=>'integer:PartnershipType:partnership/class/partnership_type.class.php:0:active=1', 'label'=>'Type', 'enabled'=>'1', 'position'=>20, 'notnull'=>1, 'visible'=>1,), + 'fk_type' => array('type'=>'integer:PartnershipType:partnership/class/partnership_type.class.php:0:active=1', 'label'=>'Type', 'enabled'=>'1', 'position'=>20, 'notnull'=>1, 'visible'=>1, 'csslist'=>'tdoverflowmax100'), + 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'picto'=>'company', 'enabled'=>'1', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax125',), 'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>'1', 'position'=>61, 'notnull'=>0, 'visible'=>0,), 'note_private' => array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>'1', 'position'=>62, 'notnull'=>0, 'visible'=>0,), 'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>'1', 'position'=>500, 'notnull'=>1, 'visible'=>-2,), @@ -121,7 +122,6 @@ class Partnership extends CommonObject 'count_last_url_check_error' => array('type'=>'integer', 'label'=>'CountLastUrlCheckError', 'enabled'=>'1', 'position'=>71, 'notnull'=>0, 'visible'=>-2, 'default'=>'0',), 'last_check_backlink' => array('type'=>'datetime', 'label'=>'LastCheckBacklink', 'enabled'=>'1', 'position'=>72, 'notnull'=>0, 'visible'=>-2,), 'reason_decline_or_cancel' => array('type'=>'text', 'label'=>'ReasonDeclineOrCancel', 'enabled'=>'1', 'position'=>73, 'notnull'=>0, 'visible'=>-2,), - 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'picto'=>'company', 'enabled'=>'1', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax150',), 'ip' => array('type'=>'varchar(250)', 'label'=>'Ip', 'enabled'=>'1', 'position'=>74, 'notnull'=>0, 'visible'=>-2,), ); public $rowid; From a64c41c4ba54dbfddb680e4f5e466410e5a22905 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 21 Feb 2023 12:14:34 +0100 Subject: [PATCH 194/607] Fix due date for supplier invoice not correctly set on clone --- htdocs/core/class/commoninvoice.class.php | 5 ++++- htdocs/fourn/class/fournisseur.facture.class.php | 7 ++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/htdocs/core/class/commoninvoice.class.php b/htdocs/core/class/commoninvoice.class.php index 7818ab2fb11..a3b0810efc6 100644 --- a/htdocs/core/class/commoninvoice.class.php +++ b/htdocs/core/class/commoninvoice.class.php @@ -663,7 +663,7 @@ abstract class CommonInvoice extends CommonObject * conditions and billing date. * * @param integer $cond_reglement Condition of payment (code or id) to use. If 0, we use current condition. - * @return integer Date limite de reglement si ok, <0 si ko + * @return integer Date limit of payment if OK, <0 if KO */ public function calculate_date_lim_reglement($cond_reglement = 0) { @@ -674,6 +674,9 @@ abstract class CommonInvoice extends CommonObject if (!$cond_reglement) { $cond_reglement = $this->cond_reglement_id; } + if (!$cond_reglement) { + return $this->date; + } $cdr_nbjour = 0; $cdr_type = 0; diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 2e766fb5cdc..bc0c7b9e232 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -3069,16 +3069,17 @@ class FactureFournisseur extends CommonInvoice $object->fk_facture_source = 0; $object->date_creation = ''; $object->date_validation = ''; - $object->date = (empty($this->date) ? '' : $this->date); - $object->date_echeance = ''; + $object->date = (empty($this->date) ? dol_now() : $this->date); $object->ref_client = ''; $object->close_code = ''; $object->close_note = ''; - if ($conf->global->MAIN_DONT_KEEP_NOTE_ON_CLONING == 1) { + if (getDolGlobalInt('MAIN_DONT_KEEP_NOTE_ON_CLONING') == 1) { $object->note_private = ''; $object->note_public = ''; } + $object->date_echeance = $object->calculate_date_lim_reglement(); + // Loop on each line of new invoice foreach ($object->lines as $i => $line) { if (isset($object->lines[$i]->info_bits) && ($object->lines[$i]->info_bits & 0x02) == 0x02) { // We do not clone line of discounts From 50baadbe0ad0c5eb797c2dd7ad8b267ccf8cf42b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 21 Feb 2023 13:27:21 +0100 Subject: [PATCH 195/607] Fix warning --- htdocs/comm/propal/class/propal.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index c9dff023034..9dca1b1051d 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -1455,7 +1455,7 @@ class Propal extends CommonObject if (empty($conf->global->MAIN_KEEP_REF_CUSTOMER_ON_CLONING)) { $object->ref_client = ''; } - if ($conf->global->MAIN_DONT_KEEP_NOTE_ON_CLONING == 1) { + if (getDolGlobalInt('MAIN_DONT_KEEP_NOTE_ON_CLONING') == 1) { $object->note_private = ''; $object->note_public = ''; } From 643c05116f6bf35065b749dcb321c2609fe759aa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 21 Feb 2023 13:37:27 +0100 Subject: [PATCH 196/607] Debug v17 --- htdocs/admin/mailing.php | 6 +-- htdocs/comm/action/class/actioncomm.class.php | 4 +- htdocs/comm/mailing/card.php | 39 ++++++++++++++++--- 3 files changed, 38 insertions(+), 11 deletions(-) diff --git a/htdocs/admin/mailing.php b/htdocs/admin/mailing.php index 19effcdfd2e..81f8210b23f 100644 --- a/htdocs/admin/mailing.php +++ b/htdocs/admin/mailing.php @@ -150,8 +150,8 @@ print ''; print '
'; @@ -160,7 +160,7 @@ print ''; print ''; print ''; print ''; diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index eae7136ac88..39c4fd50be9 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -2463,7 +2463,7 @@ class ActionComm extends CommonObject } // Sender - $from = $conf->global->MAIN_MAIL_EMAIL_FROM; + $from = getDolGlobalString('MAIN_MAIL_EMAIL_FROM'); if (empty($from)) { $errormesg = "Failed to get sender into global setup MAIN_MAIL_EMAIL_FROM"; $error++; @@ -2471,7 +2471,7 @@ class ActionComm extends CommonObject if (!$error) { // Errors Recipient - $errors_to = $conf->global->MAIN_MAIL_ERRORS_TO; + $errors_to = getDolGlobalString('MAIN_MAIL_ERRORS_TO'); // Mail Creation $cMailFile = new CMailFile($sendTopic, $to, $from, $sendContent, array(), array(), array(), '', "", 0, 1, $errors_to, '', '', '', '', ''); diff --git a/htdocs/comm/mailing/card.php b/htdocs/comm/mailing/card.php index 32207425d2a..63750d5d834 100644 --- a/htdocs/comm/mailing/card.php +++ b/htdocs/comm/mailing/card.php @@ -43,18 +43,19 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; $langs->load("mails"); $id = (GETPOST('mailid', 'int') ? GETPOST('mailid', 'int') : GETPOST('id', 'int')); + $action = GETPOST('action', 'aZ09'); -$cancel = GETPOST('cancel'); $confirm = GETPOST('confirm', 'alpha'); +$cancel = GETPOST('cancel', 'aZ09'); $urlfrom = GETPOST('urlfrom'); +// Initialize technical objects $object = new Mailing($db); +$extrafields = new ExtraFields($db); $result = $object->fetch($id); -$extrafields = new ExtraFields($db); - -// fetch optionals attributes and labels +// Fetch optionals attributes and labels $extrafields->fetch_name_optionals_label($object->table_element); // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context @@ -98,6 +99,32 @@ if ($reshook < 0) { } if (empty($reshook)) { + $error = 0; + + $backurlforlist = DOL_URL_ROOT.'/comm/mailing/list.php'; + + if (empty($backtopage) || ($cancel && empty($id))) { + if (empty($backtopage) || ($cancel && strpos($backtopage, '__ID__'))) { + if (empty($id) && (($action != 'add' && $action != 'create') || $cancel)) { + $backtopage = $backurlforlist; + } else { + $backtopage = DOL_URL_ROOT.'/comm/mailing/card.php?id='.((!empty($id) && $id > 0) ? $id : '__ID__'); + } + } + } + + if ($cancel) { + /*var_dump($cancel);var_dump($backtopage);var_dump($backtopageforcancel);exit;*/ + if (!empty($backtopageforcancel)) { + header("Location: ".$backtopageforcancel); + exit; + } elseif (!empty($backtopage)) { + header("Location: ".$backtopage); + exit; + } + $action = ''; + } + // Action clone object if ($action == 'confirm_clone' && $confirm == 'yes') { if (!GETPOST("clone_content", 'alpha') && !GETPOST("clone_receivers", 'alpha')) { @@ -736,9 +763,9 @@ if ($action == 'create') { print ''; - print ''; + print ''; - print ''; + print ''; // Other attributes $parameters = array(); From 1f3aa24c8a27e6e851829057bbf668c4f68bbb4c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 21 Feb 2023 16:56:16 +0100 Subject: [PATCH 197/607] Fix missing date delivery on invoice --- htdocs/core/lib/pdf.lib.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index fef33262a0f..86ed5fb107d 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -2386,6 +2386,7 @@ function pdf_getLinkedObjects(&$object, $outputlangs) $linkedobjects[$objecttype]['ref_title'] = $outputlangs->transnoentities("RefSending"); if (! empty($linkedobjects[$objecttype]['ref_value'])) $linkedobjects[$objecttype]['ref_value'] .= ' / '; $linkedobjects[$objecttype]['ref_value'] .= $outputlangs->transnoentities($elementobject->ref); + $linkedobjects[$objecttype]['date_value'] = dol_print_date($elementobject->date_delivery, 'day', '', $outputlangs); } else { $linkedobjects[$objecttype]['ref_title'] = $outputlangs->transnoentities("RefOrder").' / '.$outputlangs->transnoentities("RefSending"); if (empty($linkedobjects[$objecttype]['ref_value'])) $linkedobjects[$objecttype]['ref_value'] = $outputlangs->convToOutputCharset($order->ref).($order->ref_client ? ' ('.$order->ref_client.')' : ''); From 3f0f9c0e70e548665d2b5b8f42ef4f40b1387b46 Mon Sep 17 00:00:00 2001 From: Adrien Raze Date: Tue, 21 Feb 2023 17:21:01 +0100 Subject: [PATCH 198/607] FIX : Recursive management for showinh/hiding sube-BOM lines on the MO Page --- htdocs/bom/lib/bom.lib.php | 41 ++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/htdocs/bom/lib/bom.lib.php b/htdocs/bom/lib/bom.lib.php index 8d827ba09aa..2cf8fc61733 100644 --- a/htdocs/bom/lib/bom.lib.php +++ b/htdocs/bom/lib/bom.lib.php @@ -156,22 +156,33 @@ function mrpCollapseBomManagement() '."\n"; } + // Subject + if ($this->withtitletopic) { + print ''; + } + // MESSAGE $msg = GETPOSTISSET('message') ? GETPOST('message', 'restricthtml') : ''; print ''; // print ''; if (!empty($arrayfields['t.ref']['checked'])) { - print_liste_field_titre($arrayfields['t.ref']['label'], $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, ''); + print_liste_field_titre($arrayfields['t.ref']['label'], $_SERVER["PHP_SELF"], 't.ref', '', $param, '', $sortfield, $sortorder, ''); } if (!empty($arrayfields['t.label']['checked'])) { - print_liste_field_titre($arrayfields['t.label']['label'], $_SERVER["PHP_SELF"], "", '', $param, '', $sortfield, $sortorder, ''); + print_liste_field_titre($arrayfields['t.label']['label'], $_SERVER["PHP_SELF"], "t.label", '', $param, '', $sortfield, $sortorder, ''); } if (!empty($arrayfields['t.description']['checked'])) { print_liste_field_titre($arrayfields['t.description']['label'], $_SERVER["PHP_SELF"], "", '', $param, '', $sortfield, $sortorder, ''); } if (!empty($arrayfields['t.dateo']['checked'])) { - print_liste_field_titre($arrayfields['t.dateo']['label'], $_SERVER["PHP_SELF"], "", '', $param, '', $sortfield, $sortorder, 'center '); + print_liste_field_titre($arrayfields['t.dateo']['label'], $_SERVER["PHP_SELF"], "t.dateo", '', $param, '', $sortfield, $sortorder, 'center '); } if (!empty($arrayfields['t.datee']['checked'])) { - print_liste_field_titre($arrayfields['t.datee']['label'], $_SERVER["PHP_SELF"], "", '', $param, '', $sortfield, $sortorder, 'center '); + print_liste_field_titre($arrayfields['t.datee']['label'], $_SERVER["PHP_SELF"], "t.datee", '', $param, '', $sortfield, $sortorder, 'center '); } if (!empty($arrayfields['t.planned_workload']['checked'])) { - print_liste_field_titre($arrayfields['t.planned_workload']['label'], $_SERVER["PHP_SELF"], "", '', $param, '', $sortfield, $sortorder, 'right ', '', 1); + print_liste_field_titre($arrayfields['t.planned_workload']['label'], $_SERVER["PHP_SELF"], "t.planned_workload", '', $param, '', $sortfield, $sortorder, 'right ', '', 1); } if (!empty($arrayfields['t.duration_effective']['checked'])) { - print_liste_field_titre($arrayfields['t.duration_effective']['label'], $_SERVER["PHP_SELF"], "", '', $param, '', $sortfield, $sortorder, 'right ', '', 1); + print_liste_field_titre($arrayfields['t.duration_effective']['label'], $_SERVER["PHP_SELF"], "t.duration_effective", '', $param, '', $sortfield, $sortorder, 'right ', '', 1); } if (!empty($arrayfields['t.progress_calculated']['checked'])) { print_liste_field_titre($arrayfields['t.progress_calculated']['label'], $_SERVER["PHP_SELF"], "", '', $param, '', $sortfield, $sortorder, 'right ', '', 1); } if (!empty($arrayfields['t.progress']['checked'])) { - print_liste_field_titre($arrayfields['t.progress']['label'], $_SERVER["PHP_SELF"], "", '', $param, '', $sortfield, $sortorder, 'right ', '', 1); + print_liste_field_titre($arrayfields['t.progress']['label'], $_SERVER["PHP_SELF"], "t.progress", '', $param, '', $sortfield, $sortorder, 'right ', '', 1); } if (!empty($arrayfields['t.progress_summary']['checked'])) { print_liste_field_titre($arrayfields['t.progress_summary']['label'], $_SERVER["PHP_SELF"], "", '', $param, '', $sortfield, $sortorder, 'center ', '', 1); } if ($object->usage_bill_time) { if (!empty($arrayfields['t.tobill']['checked'])) { - print_liste_field_titre($arrayfields['t.tobill']['label'], $_SERVER["PHP_SELF"], "", '', $param, '', $sortfield, $sortorder, 'right '); + print_liste_field_titre($arrayfields['t.tobill']['label'], $_SERVER["PHP_SELF"], "t.tobill", '', $param, '', $sortfield, $sortorder, 'right '); } if (!empty($arrayfields['t.billed']['checked'])) { - print_liste_field_titre($arrayfields['t.billed']['label'], $_SERVER["PHP_SELF"], "", '', $param, '', $sortfield, $sortorder, 'right '); + print_liste_field_titre($arrayfields['t.billed']['label'], $_SERVER["PHP_SELF"], "t.billed", '', $param, '', $sortfield, $sortorder, 'right '); } } // Contacts of task, disabled because available by default jsut after @@ -1043,7 +1043,7 @@ if ($action == 'create' && $user->rights->projet->creer && (empty($object->third */ if (!empty($arrayfields['t.budget_amount']['checked'])) { - print_liste_field_titre($arrayfields['t.budget_amount']['label'], $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder, 'center '); + print_liste_field_titre($arrayfields['t.budget_amount']['label'], $_SERVER["PHP_SELF"], "t.budget_amount", "", $param, '', $sortfield, $sortorder, 'center '); } if (!empty($arrayfields['c.assigned']['checked'])) { From af4228064d95a44e62ac9b4342e0d6955d4f87a4 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Thu, 23 Feb 2023 07:33:16 +0000 Subject: [PATCH 227/607] Fixing style errors. --- htdocs/projet/class/task.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index 3c58a147d39..fea80f6d13a 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -953,7 +953,7 @@ class Task extends CommonObjectLine } } - if($sortfield && $sortorder) { + if ($sortfield && $sortorder) { $sql .= $this->db->order($sortfield, $sortorder); } else { $sql .= " ORDER BY p.ref, t.rang, t.dateo"; From 30c76623e12de38b67f8518a44701011cf7fa8a2 Mon Sep 17 00:00:00 2001 From: Gauthier PC portable 024 Date: Thu, 23 Feb 2023 10:46:20 +0100 Subject: [PATCH 228/607] FIX : missing w option in dol_print_date --- htdocs/core/lib/functions.lib.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index d503026a868..053bbfe98ca 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2696,8 +2696,8 @@ function dol_print_date($time, $format = '', $tzoutput = 'auto', $outputlangs = $dtts->setTimestamp($time); $dtts->setTimezone($tzo); $newformat = str_replace( - array('%Y', '%y', '%m', '%d', '%H', '%I', '%M', '%S', '%p', 'T', 'Z', '__a__', '__A__', '__b__', '__B__'), - array('Y', 'y', 'm', 'd', 'H', 'h', 'i', 's', 'A', '__£__', '__$__', '__{__', '__}__', '__[__', '__]__'), + array('%Y', '%y', '%m', '%d', '%H', '%I', '%M', '%S', '%p', '%w', 'T', 'Z', '__a__', '__A__', '__b__', '__B__'), + array('Y', 'y', 'm', 'd', 'H', 'h', 'i', 's', 'A', 'w', '__£__', '__$__', '__{__', '__}__', '__[__', '__]__'), $format); $ret = $dtts->format($newformat); $ret = str_replace( @@ -2722,8 +2722,8 @@ function dol_print_date($time, $format = '', $tzoutput = 'auto', $outputlangs = $dtts->setTimestamp($timetouse); $dtts->setTimezone($tzo); $newformat = str_replace( - array('%Y', '%y', '%m', '%d', '%H', '%I', '%M', '%S', '%p', 'T', 'Z', '__a__', '__A__', '__b__', '__B__'), - array('Y', 'y', 'm', 'd', 'H', 'h', 'i', 's', 'A', '__£__', '__$__', '__{__', '__}__', '__[__', '__]__'), + array('%Y', '%y', '%m', '%d', '%H', '%I', '%M', '%S', '%p', '%w', 'T', 'Z', '__a__', '__A__', '__b__', '__B__'), + array('Y', 'y', 'm', 'd', 'H', 'h', 'i', 's', 'A', 'w', '__£__', '__$__', '__{__', '__}__', '__[__', '__]__'), $format); $ret = $dtts->format($newformat); $ret = str_replace( From 5d5634cc505a7b2ce990d645e785ca5faee77281 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Thu, 23 Feb 2023 11:41:46 +0100 Subject: [PATCH 229/607] fix : Warning: Undefined property: Conf:: in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/contrat/card.php on line 1652 --- htdocs/contrat/card.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 6b3937df76a..b41d913a92e 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -1649,9 +1649,9 @@ if ($action == 'create') { if ($objp->subprice >= 0) { $colspan = 6; - if ($conf->margin->enabled && getDolGlobalString('PRODUCT_USE_UNITS')) { + if (isModEnabled('margin') && getDolGlobalString('PRODUCT_USE_UNITS')) { $colspan = 8; - } elseif ($conf->margin->enabled || getDolGlobalString('PRODUCT_USE_UNITS')) { + } elseif (isModEnabled('margin') || getDolGlobalString('PRODUCT_USE_UNITS')) { $colspan = 7; } From 45cdbd8a600cd60bff7c3b3c511613b7279d92ab Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 23 Feb 2023 12:18:02 +0100 Subject: [PATCH 230/607] Fix checkbox --- htdocs/core/lib/usergroups.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index 273e7285273..64747c1bbf6 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -366,7 +366,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) print ''; print ''; print ''; - print ''; + print ''; print ''; print ''; } else { From 9216a6f8708c6866d52f3203933be9529a4059b9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 23 Feb 2023 13:21:45 +0100 Subject: [PATCH 231/607] FIX Bad value for phone in substitutions keys --- htdocs/core/lib/functions.lib.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index d503026a868..c06630e96a2 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3572,15 +3572,15 @@ function dol_print_phone($phone, $countrycode = '', $cid = 0, $socid = 0, $addli $picto = ''; } } - if ($adddivfloat) { + if ($adddivfloat == 1) { $rep .= '
'; - } else { + } elseif (empty($adddivfloat)) { $rep .= ''; } $rep .= ($withpicto ?img_picto($titlealt, 'object_'.$picto.'.png').' ' : '').$newphone; - if ($adddivfloat) { + if ($adddivfloat == 1) { $rep .= '
'; - } else { + } elseif (empty($adddivfloat)) { $rep .= ''; } } @@ -7586,9 +7586,9 @@ function getCommonSubstitutionArray($outputlangs, $onlykey = 0, $exclude = null, '__USER_ID__' => (string) $user->id, '__USER_LOGIN__' => (string) $user->login, '__USER_EMAIL__' => (string) $user->email, - '__USER_PHONE__' => (string) dol_print_phone($user->office_phone), - '__USER_PHONEPRO__' => (string) dol_print_phone($user->user_mobile), - '__USER_PHONEMOBILE__' => (string) dol_print_phone($user->personal_mobile), + '__USER_PHONE__' => (string) dol_print_phone($user->office_phone, '', 0, 0, '', " ", '', '', -1), + '__USER_PHONEPRO__' => (string) dol_print_phone($user->user_mobile, '', 0, 0, '', " ", '', '', -1), + '__USER_PHONEMOBILE__' => (string) dol_print_phone($user->personal_mobile, '', 0, 0, '', " ", '', '', -1), '__USER_FAX__' => (string) $user->office_fax, '__USER_LASTNAME__' => (string) $user->lastname, '__USER_FIRSTNAME__' => (string) $user->firstname, @@ -7603,8 +7603,8 @@ function getCommonSubstitutionArray($outputlangs, $onlykey = 0, $exclude = null, $substitutionarray = array_merge($substitutionarray, array( '__MYCOMPANY_NAME__' => $mysoc->name, '__MYCOMPANY_EMAIL__' => $mysoc->email, - '__MYCOMPANY_PHONE__' => dol_print_phone($mysoc->phone), - '__MYCOMPANY_FAX__' => dol_print_phone($mysoc->fax), + '__MYCOMPANY_PHONE__' => dol_print_phone($mysoc->phone, '', 0, 0, '', " ", '', '', -1), + '__MYCOMPANY_FAX__' => dol_print_phone($mysoc->fax, '', 0, 0, '', " ", '', '', -1), '__MYCOMPANY_PROFID1__' => $mysoc->idprof1, '__MYCOMPANY_PROFID2__' => $mysoc->idprof2, '__MYCOMPANY_PROFID3__' => $mysoc->idprof3, From 4252db1c7938d691c452e816624ee96dfa7737e8 Mon Sep 17 00:00:00 2001 From: Adrien Raze Date: Thu, 23 Feb 2023 15:51:52 +0100 Subject: [PATCH 232/607] FIX : Impossible to create value for product attribute (variant) --- htdocs/variants/card.php | 4 +--- .../tpl/productattributevalueline_create.tpl.php | 14 -------------- 2 files changed, 1 insertion(+), 17 deletions(-) diff --git a/htdocs/variants/card.php b/htdocs/variants/card.php index 5f1065f5171..8daf1239deb 100644 --- a/htdocs/variants/card.php +++ b/htdocs/variants/card.php @@ -330,9 +330,7 @@ if ($action == 'create') { print '
'.$langs->trans('PartnershipType').' *'."\n"; + print $form->selectarray("partnershiptype", $listofpartnership, GETPOSTISSET('partnershiptype') ? GETPOST('partnershiptype', 'int') : 'ifone', 1); + print '
'.$langs->trans("Company").' *'; print img_picto('', 'company', 'class="pictofixedwidth"'); @@ -670,7 +651,8 @@ if (empty($conf->global->SOCIETE_DISABLE_STATE)) { // Logo //print '
'.$langs->trans("URLPhoto").'
'.$langs->trans("URLPhoto").'
'; print $langs->trans("MailingEMailError").''; -print ''; -if (!empty($conf->global->MAILING_EMAIL_ERRORSTO) && !isValidEmail($conf->global->MAILING_EMAIL_ERRORSTO)) { +print ''; +if (getDolGlobalString('MAILING_EMAIL_ERRORSTO') && !isValidEmail(getDolGlobalString('MAILING_EMAIL_ERRORSTO'))) { print ' '.img_warning($langs->trans("BadEMail")); } print '
'; print $form->textwithpicto($langs->trans("MailingDelay"), $langs->trans("IfDefinedUseAValueBeetween", '0.001', '10')).''; -print ''; +print ''; print '
'.$langs->trans("MailTitle").'
'.$langs->trans("MailFrom").'
'.$langs->trans("MailFrom").'
'.$langs->trans("MailErrorsTo").'
'.$langs->trans("MailErrorsTo").'
'; + // Answer to a ticket : display of the thread title in readonly + if ($this->withtopicreadonly) { + print $langs->trans('SubjectAnswerToTicket').' '.$this->topic_title; + } else { + if (isset($this->withreadid) && $this->withreadid > 0) { + $subject = $langs->trans('SubjectAnswerToTicket').' '.$this->withreadid.' : '.$this->topic_title.''; + } else { + $subject = GETPOST('subject', 'alpha'); + } + print 'withemail)?' autofocus':'').' />'; + } + print '
'; @@ -846,6 +851,8 @@ class FormTicket print ' selected="selected"'; } elseif ($arraycategories['use_default'] == "1" && !$selected && !$empty) { print ' selected="selected"'; + } elseif (count($ticketstat->cache_category_tickets) == 1) { + print ' selected="selected"'; } print '>'; diff --git a/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php b/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php index 089629234d6..99b8210644c 100644 --- a/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php +++ b/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php @@ -274,7 +274,7 @@ class InterfaceTicketEmail extends DolibarrTriggers $message_admin = $langs->transnoentities($body, $object->track_id).'
'; $message_admin .= '
  • '.$langs->trans('Title').' : '.$object->subject.'
  • '; $message_admin .= '
  • '.$langs->trans('Type').' : '.$langs->getLabelFromKey($this->db, 'TicketTypeShort'.$object->type_code, 'c_ticket_type', 'code', 'label', $object->type_code).'
  • '; - $message_admin .= '
  • '.$langs->trans('Category').' : '.$langs->getLabelFromKey($this->db, 'TicketCategoryShort'.$object->category_code, 'c_ticket_category', 'code', 'label', $object->category_code).'
  • '; + $message_admin .= '
  • '.$langs->trans('TicketCategory').' : '.$langs->getLabelFromKey($this->db, 'TicketCategoryShort'.$object->category_code, 'c_ticket_category', 'code', 'label', $object->category_code).'
  • '; $message_admin .= '
  • '.$langs->trans('Severity').' : '.$langs->getLabelFromKey($this->db, 'TicketSeverityShort'.$object->severity_code, 'c_ticket_severity', 'code', 'label', $object->severity_code).'
  • '; $message_admin .= '
  • '.$langs->trans('From').' : '.($object->email_from ? $object->email_from : ($object->fk_user_create > 0 ? $langs->trans('Internal') : '')).'
  • '; // Extrafields @@ -343,7 +343,7 @@ class InterfaceTicketEmail extends DolibarrTriggers $message_customer = $langs->transnoentities($body, $object->track_id).'
    '; $message_customer .= '
    • '.$langs->trans('Title').' : '.$object->subject.'
    • '; $message_customer .= '
    • '.$langs->trans('Type').' : '.$langs->getLabelFromKey($this->db, 'TicketTypeShort'.$object->type_code, 'c_ticket_type', 'code', 'label', $object->type_code).'
    • '; - $message_customer .= '
    • '.$langs->trans('Category').' : '.$langs->getLabelFromKey($this->db, 'TicketCategoryShort'.$object->category_code, 'c_ticket_category', 'code', 'label', $object->category_code).'
    • '; + $message_customer .= '
    • '.$langs->trans('TicketCategory').' : '.$langs->getLabelFromKey($this->db, 'TicketCategoryShort'.$object->category_code, 'c_ticket_category', 'code', 'label', $object->category_code).'
    • '; $message_customer .= '
    • '.$langs->trans('Severity').' : '.$langs->getLabelFromKey($this->db, 'TicketSeverityShort'.$object->severity_code, 'c_ticket_severity', 'code', 'label', $object->severity_code).'
    • '; // Extrafields diff --git a/htdocs/langs/en_US/ticket.lang b/htdocs/langs/en_US/ticket.lang index ea560012afc..7cb36b3bd0c 100644 --- a/htdocs/langs/en_US/ticket.lang +++ b/htdocs/langs/en_US/ticket.lang @@ -183,7 +183,7 @@ CreatedBy=Created by NewTicket=New Ticket SubjectAnswerToTicket=Ticket answer TicketTypeRequest=Request type -TicketCategory=Ticket categorization +TicketCategory=Ticket group SeeTicket=See ticket TicketMarkedAsRead=Ticket has been marked as read TicketReadOn=Read on diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index aca2828da3b..5c99c56c1d0 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -5215,7 +5215,7 @@ div.visible { display: block; } -div.hidden, header.hidden, td.hidden, img.hidden, span.hidden, div.showifmore { +div.hidden, header.hidden, tr.hidden, td.hidden, img.hidden, span.hidden, div.showifmore { display: none; } .unvisible { diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 7a0f9749be8..93b501885fe 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -5211,7 +5211,7 @@ div.visible { display: block; } -div.hidden, header.hidden, td.hidden, img.hidden, span.hidden, div.showifmore { +div.hidden, header.hidden, tr.hidden, td.hidden, img.hidden, span.hidden, div.showifmore { display: none; } diff --git a/htdocs/ticket/card.php b/htdocs/ticket/card.php index 7cbb23c75c4..d46a787f983 100755 --- a/htdocs/ticket/card.php +++ b/htdocs/ticket/card.php @@ -726,7 +726,7 @@ if ($action == 'create' || $action == 'presend') { print load_fiche_titre($langs->trans('NewTicket'), '', 'ticket'); - $formticket->trackid = ''; // TODO Use a unique key to avoid conflict in upload file feature + $formticket->trackid = ''; // TODO Use a unique key 'tic' to avoid conflict in upload file feature $formticket->withfromsocid = $socid ? $socid : $user->socid; $formticket->withfromcontactid = $contactid ? $contactid : ''; $formticket->withtitletopic = 1; @@ -737,7 +737,6 @@ if ($action == 'create' || $action == 'presend') { $formticket->withfile = 2; $formticket->withextrafields = 1; $formticket->param = array('origin' => GETPOST('origin'), 'originid' => GETPOST('originid')); - $formticket->trackid = 'tic'.$object->id; $formticket->withcancel = 1; From 5713ca8a4329907f9b8a35d2673a4a28bacb81c6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 22 Feb 2023 16:01:48 +0100 Subject: [PATCH 223/607] Regression --- htdocs/comm/propal/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index 386ed4fc134..f361c0d7028 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -854,7 +854,7 @@ if ($resql) { } $help_url = 'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'; - llxHeader('', $langs->trans('ListOfProposals'), $help_url); + llxHeader('', $title, $help_url); $param = '&search_status='.urlencode($search_status); if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) { From 53014290cfe115b872d3fd9eaa1f3fd98d8b3ea4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 22 Feb 2023 17:18:42 +0100 Subject: [PATCH 224/607] Fix unbind --- htdocs/core/class/ldap.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/ldap.class.php b/htdocs/core/class/ldap.class.php index 3dc45c753bc..68464524621 100644 --- a/htdocs/core/class/ldap.class.php +++ b/htdocs/core/class/ldap.class.php @@ -401,7 +401,7 @@ class Ldap public function unbind() { $this->result = true; - if ($this->connection) { + if (is_resource($this->connection) || is_object($this->connection)) { $this->result = @ldap_unbind($this->connection); } if ($this->result) { From f6f420d19aebe61c78ae8cc2dfbae10b882c530d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 22 Feb 2023 17:26:22 +0100 Subject: [PATCH 225/607] Doc --- htdocs/core/class/ldap.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/ldap.class.php b/htdocs/core/class/ldap.class.php index 68464524621..b3d5766daff 100644 --- a/htdocs/core/class/ldap.class.php +++ b/htdocs/core/class/ldap.class.php @@ -339,7 +339,7 @@ class Ldap * This method seems a duplicate/alias of unbind(). * * @return boolean true or false - * @deprecated ldap_close is an alias of ldap_unbind + * @deprecated ldap_close is an alias of ldap_unbind, so use unbind() instead. * @see unbind() */ public function close() From d326e59beba5e5d997384f323f6f22c57c55a17e Mon Sep 17 00:00:00 2001 From: pratushraj Date: Thu, 23 Feb 2023 13:00:31 +0530 Subject: [PATCH 226/607] issue #24014 --- htdocs/projet/class/task.class.php | 9 ++++++--- htdocs/projet/tasks.php | 26 +++++++++++++------------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index 87ab0afdc47..3c58a147d39 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -813,7 +813,7 @@ class Task extends CommonObjectLine * @param int $loadRoleMode 1= will test Roles on task; 0 used in delete project action * @return array Array of tasks */ - public function getTasksArray($usert = null, $userp = null, $projectid = 0, $socid = 0, $mode = 0, $filteronproj = '', $filteronprojstatus = '-1', $morewherefilter = '', $filteronprojuser = 0, $filterontaskuser = 0, $extrafields = array(), $includebilltime = 0, $search_array_options = array(), $loadextras = 0, $loadRoleMode = 1) + public function getTasksArray($usert = null, $userp = null, $projectid = 0, $socid = 0, $mode = 0, $filteronproj = '', $filteronprojstatus = '-1', $morewherefilter = '', $filteronprojuser = 0, $filterontaskuser = 0, $extrafields = array(), $includebilltime = 0, $search_array_options = array(), $loadextras = 0, $loadRoleMode = 1, $sortfield = '', $sortorder = '') { global $conf, $hookmanager; @@ -953,8 +953,11 @@ class Task extends CommonObjectLine } } - - $sql .= " ORDER BY p.ref, t.rang, t.dateo"; + if($sortfield && $sortorder) { + $sql .= $this->db->order($sortfield, $sortorder); + } else { + $sql .= " ORDER BY p.ref, t.rang, t.dateo"; + } //print $sql;exit; dol_syslog(get_class($this)."::getTasksArray", LOG_DEBUG); diff --git a/htdocs/projet/tasks.php b/htdocs/projet/tasks.php index ffba37abb7d..22258bd3b18 100644 --- a/htdocs/projet/tasks.php +++ b/htdocs/projet/tasks.php @@ -124,12 +124,12 @@ $search_array_options = $extrafields->getOptionalsFromPost($taskstatic->table_el // Default sort order (if not yet defined by previous GETPOST) -if (!$sortfield) { +/* if (!$sortfield) { reset($object->fields); $sortfield="t.".key($object->fields); } // Set here default search field. By default 1st field in definition. Reset is required to avoid key() to return null. if (!$sortorder) { $sortorder = "ASC"; -} +} */ // Security check @@ -848,7 +848,7 @@ if ($action == 'create' && $user->rights->projet->creer && (empty($object->third // Get list of tasks in tasksarray and taskarrayfiltered // We need all tasks (even not limited to a user because a task to user can have a parent that is not affected to him). $filteronthirdpartyid = $socid; - $tasksarray = $taskstatic->getTasksArray(0, 0, $object->id, $filteronthirdpartyid, 0, '', -1, $morewherefilter, 0, 0, $extrafields, 1, $search_array_options); + $tasksarray = $taskstatic->getTasksArray(0, 0, $object->id, $filteronthirdpartyid, 0, '', -1, $morewherefilter, 0, 0, $extrafields, 1, $search_array_options, 0, 1, $sortfield, $sortorder); // We load also tasks limited to a particular user $tmpuser = new User($db); @@ -998,41 +998,41 @@ if ($action == 'create' && $user->rights->projet->creer && (empty($object->third print '
'.$langs->trans("Project").'
'.$langs->trans("DefaultSkin").''.$conf->global->MAIN_THEME.' '.$langs->trans("UsePersonalValue").'  
'; } - if (!empty($object->lines)) { - $object->printObjectLines($action, $mysoc, null, GETPOST('lineid', 'int'), 1, '/variants/tpl', ($permissiontoedit ? 1 : 0)); - } + $object->printObjectLines($action, $mysoc, null, GETPOST('lineid', 'int'), 1, '/variants/tpl', ($permissiontoedit ? 1 : 0)); if (!empty($object->lines) || ($permissiontoedit && $action != 'selectlines' && $action != 'editline')) { print '
'; diff --git a/htdocs/variants/tpl/productattributevalueline_create.tpl.php b/htdocs/variants/tpl/productattributevalueline_create.tpl.php index f23e7175f58..21ea651f3ef 100644 --- a/htdocs/variants/tpl/productattributevalueline_create.tpl.php +++ b/htdocs/variants/tpl/productattributevalueline_create.tpl.php @@ -40,20 +40,6 @@ $objectline = null; print "\n"; $nolinesbefore = (count($this->lines) == 0 || $forcetoshowtitlelines); -if ($nolinesbefore) { - ?> - - global->MAIN_VIEW_LINE_NUMBER)) { ?> - - - -
trans('AddNewLine'); ?> - - trans('Value'); ?> -   - - Date: Thu, 23 Feb 2023 18:03:00 +0100 Subject: [PATCH 233/607] Propale stats: reworking of the fix to comply with travis rule for SQL string building --- .../comm/propal/class/propalestats.class.php | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/htdocs/comm/propal/class/propalestats.class.php b/htdocs/comm/propal/class/propalestats.class.php index eb699e01c86..fefc8941970 100644 --- a/htdocs/comm/propal/class/propalestats.class.php +++ b/htdocs/comm/propal/class/propalestats.class.php @@ -247,19 +247,18 @@ class PropaleStats extends Stats { global $user; - $sql = 'SELECT product.ref, COUNT(product.ref) as nb, SUM(tl.' . $this->field_line . ') as total, AVG(tl.' . $this->field_line . ') as avg'; - $sql .= ' FROM ' . $this->from; - $sql .= ' INNER JOIN ' . $this->from_line . ' ON p.rowid = tl.fk_propal'; - $sql .= ' INNER JOIN ' . MAIN_DB_PREFIX . 'product as product ON tl.fk_product = product.rowid'; - if (empty($user->rights->societe->client->voir) && ! $user->socid) { - $sql .= ' INNER JOIN ' . MAIN_DB_PREFIX . 'societe_commerciaux as sc ON p.fk_soc = sc.fk_soc AND sc.fk_user = ' . ((int) $user->id); + $sql = "SELECT product.ref, COUNT(product.ref) as nb, SUM(tl.".$this->field_line.") as total, AVG(tl.".$this->field_line.") as avg"; + $sql .= " FROM ".$this->from; + $sql .= " INNER JOIN ".$this->from_line." ON p.rowid = tl.fk_propal"; + $sql .= " INNER JOIN ".MAIN_DB_PREFIX."product as product ON tl.fk_product = product.rowid"; + if (empty($user->rights->societe->client->voir) && !$user->socid) { + $sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON p.fk_soc = sc.fk_soc AND sc.fk_user = ".((int) $user->id); } $sql .= $this->join; - $sql .= ' WHERE ' . $this->where; - $sql .= ' AND ' . $this->field_date . " BETWEEN '" . $this->db->idate(dol_get_first_day($year, 1, false)) . "' AND '" . $this->db->idate(dol_get_last_day($year, 12, false)) . "'"; - $sql .= ' GROUP BY product.ref'; + $sql .= " WHERE ".$this->where; + $sql .= " AND ".$this->field_date." BETWEEN '".$this->db->idate(dol_get_first_day($year, 1, false))."' AND '".$this->db->idate(dol_get_last_day($year, 12, false))."'"; + $sql .= " GROUP BY product.ref"; $sql .= $this->db->order('nb', 'DESC'); - //$sql.= $this->db->plimit(20); return $this->_getAllByProduct($sql, $limit); From 56afa676c011eba86f439d7b6c27193de04e9f64 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 23 Feb 2023 15:50:57 +0100 Subject: [PATCH 234/607] Fix tags --- htdocs/comm/mailing/card.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/comm/mailing/card.php b/htdocs/comm/mailing/card.php index 63750d5d834..80b808524c8 100644 --- a/htdocs/comm/mailing/card.php +++ b/htdocs/comm/mailing/card.php @@ -374,7 +374,7 @@ if (empty($reshook)) { if (!$resql2) { dol_print_error($db); } else { - //if cheack read is use then update prospect contact status + //if check read is use then update prospect contact status if (strpos($message, '__CHECK_READ__') !== false) { //Update status communication of thirdparty prospect $sql = "UPDATE ".MAIN_DB_PREFIX."societe SET fk_stcomm=2 WHERE rowid IN (SELECT source_id FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE rowid=".((int) $obj->rowid).")"; @@ -476,6 +476,9 @@ if (empty($reshook)) { // other are set at begin of page $object->substitutionarrayfortest['__EMAIL__'] = $object->sendto; $object->substitutionarrayfortest['__MAILTOEMAIL__'] = ''.$object->sendto.''; + $object->substitutionarrayfortest['__CHECK_READ__'] = ''; + $object->substitutionarrayfortest['__UNSUBSCRIBE__'] = ''.$langs->trans("MailUnsubcribe").''; + $object->substitutionarrayfortest['__UNSUBSCRIBE_URL__'] = DOL_MAIN_URL_ROOT.'/public/emailing/mailing-unsubscribe.php?tag=undefinedintestmode&unsuscrib=1&securitykey='.urlencode($conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY).'&email='.urlencode($obj->sendto).'&mtid=0'; // Subject and message substitutions complete_substitutions_array($object->substitutionarrayfortest, $langs); From ba59e4eb3de9bdf7d2123a68f48996d11b6f448b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 23 Feb 2023 18:29:58 +0100 Subject: [PATCH 235/607] FIx duplicate image file from src data --- htdocs/core/class/CMailFile.class.php | 32 ++++++++++++++++++++------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/htdocs/core/class/CMailFile.class.php b/htdocs/core/class/CMailFile.class.php index 46de8d8e7af..ecfe968bd02 100644 --- a/htdocs/core/class/CMailFile.class.php +++ b/htdocs/core/class/CMailFile.class.php @@ -273,10 +273,16 @@ class CMailFile if ($this->html_images[$i]) { $this->atleastoneimage = 1; if ($this->html_images[$i]['type'] == 'cidfromdata') { - $posindice = count($filename_list); - $filename_list[$posindice] = $this->html_images[$i]['fullpath']; - $mimetype_list[$posindice] = $this->html_images[$i]['content_type']; - $mimefilename_list[$posindice] = $this->html_images[$i]['name']; + if (!in_array($this->html_images[$i]['fullpath'], $filename_list)) { + // If this file path is not already into the $filename_list, we add it. + $posindice = count($filename_list); + $filename_list[$posindice] = $this->html_images[$i]['fullpath']; + $mimetype_list[$posindice] = $this->html_images[$i]['content_type']; + $mimefilename_list[$posindice] = $this->html_images[$i]['name']; + } else { + $posindice = array_search($this->html_images[$i]['fullpath'], $filename_list); + } + // We complete the array of cid_list $cid_list[$posindice] = $this->html_images[$i]['cid']; } dol_syslog("CMailFile::CMailfile: html_images[$i]['name']=".$this->html_images[$i]['name'], LOG_DEBUG); @@ -284,6 +290,8 @@ class CMailFile } } } + //var_dump($filename_list); + //var_dump($cid_list);exit; // Set atleastoneimage if there is at least one file (into $filename_list array) if (is_array($filename_list)) { @@ -1124,7 +1132,14 @@ class CMailFile return 'Bad value for sendmode'; } - $parameters = array(); + // Now we delete image files that were created dynamically to manage data inline files + foreach ($this->html_images as $val) { + if (!empty($val['type']) && $val['type'] == 'cidfromdata') { + //dol_delete($val['fullpath']); + } + } + + $parameters = array('sent' => $res); $action = ''; $reshook = $hookmanager->executeHooks('sendMailAfter', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) { @@ -1655,7 +1670,7 @@ class CMailFile } /** - * Seearch images into html message and init array this->images_encoded if found + * Search images into html message and init array this->images_encoded if found * * @param string $images_dir Location of physical images files. For example $dolibarr_main_data_root.'/medias' * @return int >0 if OK, <0 if KO @@ -1742,7 +1757,8 @@ class CMailFile } /** - * Seearch images with data:image format into html message + * Seearch images with data:image format into html message. + * If we find some, we create it on disk. * * @param string $images_dir Location of where to store physicaly images files. For example $dolibarr_main_data_root.'/medias' * @return int >0 if OK, <0 if KO @@ -1784,7 +1800,7 @@ class CMailFile foreach ($matches[1] as $key => $ext) { // We save the image to send in disk $filecontent = $matches[2][$key]; - $cid = 'cid000'.dol_hash($this->html, 'md5'); + $cid = 'cid000'.dol_hash($this->html, 'md5'); // The id must not change if image is same $destfiletmp = $images_dir.'/'.$cid.'.'.$ext; $fhandle = @fopen($destfiletmp, 'w'); From 0fbb197231b461885e6479d95d89077bba505dc6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 23 Feb 2023 18:42:15 +0100 Subject: [PATCH 236/607] Fix position of quickadd button --- htdocs/theme/md/dropdown.inc.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/htdocs/theme/md/dropdown.inc.php b/htdocs/theme/md/dropdown.inc.php index 64bebc67f79..eb1fd668361 100644 --- a/htdocs/theme/md/dropdown.inc.php +++ b/htdocs/theme/md/dropdown.inc.php @@ -447,18 +447,23 @@ a.dropdown-item { max-width: 360px; } + #topmenu-quickadd-dropdown a.login-dropdown-a, #topmenu-bookmark-dropdown a.login-dropdown-a { color: #000; } + #topmenu-quickadd-dropdown .dropdown-menu, #topmenu-bookmark-dropdown .dropdown-menu { width: 230px; } + div#topmenu-quickadd-dropdown, div#topmenu-bookmark-dropdown { position: unset; } - div#topmenu-global-search-dropdown, div#topmenu-bookmark-dropdown { + div#topmenu-global-search-dropdown, + div#topmenu-quickadd-dropdown, + div#topmenu-bookmark-dropdown { line-height: unset; } From 7ec32d2458807731446be5c0f8cc214c9cbd23cb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 23 Feb 2023 21:28:58 +0100 Subject: [PATCH 237/607] Fix phpunit --- htdocs/projet/class/task.class.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index fea80f6d13a..7ff5d651fed 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -811,6 +811,8 @@ class Task extends CommonObjectLine * @param array $search_array_options Array of search * @param int $loadextras Fetch all Extrafields on each task * @param int $loadRoleMode 1= will test Roles on task; 0 used in delete project action + * @param string $sortfield Sort field + * @param string $sortorder Sort order * @return array Array of tasks */ public function getTasksArray($usert = null, $userp = null, $projectid = 0, $socid = 0, $mode = 0, $filteronproj = '', $filteronprojstatus = '-1', $morewherefilter = '', $filteronprojuser = 0, $filterontaskuser = 0, $extrafields = array(), $includebilltime = 0, $search_array_options = array(), $loadextras = 0, $loadRoleMode = 1, $sortfield = '', $sortorder = '') From 4c6b8d7a20e1fa1ff56ef9a1f19d1d19cb772f39 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 23 Feb 2023 22:14:10 +0100 Subject: [PATCH 238/607] Fix navigation into timespent --- htdocs/projet/tasks/time.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/htdocs/projet/tasks/time.php b/htdocs/projet/tasks/time.php index 139a1711658..d97dee9a11b 100644 --- a/htdocs/projet/tasks/time.php +++ b/htdocs/projet/tasks/time.php @@ -1112,23 +1112,27 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser } $massactionbutton = $form->selectMassAction('', $arrayofmassactions); + // Task + // Show section with information of task. If id of task is not defined and project id defined, then $projectidforalltimes is not empty. if (empty($projectidforalltimes) && empty($allprojectforuser)) { $head = task_prepare_head($object); print dol_get_fiche_head($head, 'task_time', $langs->trans("Task"), -1, 'projecttask', 0, '', 'reposition'); if ($action == 'deleteline') { - print $form->formconfirm($_SERVER["PHP_SELF"]."?".($object->id > 0 ? "id=".$object->id : 'projectid='.$projectstatic->id).'&lineid='.GETPOST("lineid", 'int').($withproject ? '&withproject=1' : ''), $langs->trans("DeleteATimeSpent"), $langs->trans("ConfirmDeleteATimeSpent"), "confirm_deleteline", '', '', 1); + $urlafterconfirm = $_SERVER["PHP_SELF"]."?".($object->id > 0 ? "id=".$object->id : 'projectid='.$projectstatic->id).'&lineid='.GETPOST("lineid", 'int').($withproject ? '&withproject=1' : ''); + print $form->formconfirm($urlafterconfirm, $langs->trans("DeleteATimeSpent"), $langs->trans("ConfirmDeleteATimeSpent"), "confirm_deleteline", '', '', 1); } $param = ($withproject ? '&withproject=1' : ''); + $param .= ($param ? '&' : '').'id='.$object->id; // ID of task $linkback = $withproject ? ''.$langs->trans("BackToList").'' : ''; if (!GETPOST('withproject') || empty($projectstatic->id)) { $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user, 0, 1); $object->next_prev_filter = " fk_projet IN (".$db->sanitize($projectsListId).")"; } else { - $object->next_prev_filter = " fk_projet = ".$projectstatic->id; + $object->next_prev_filter = " fk_projet = ".((int) $projectstatic->id); } $morehtmlref = ''; @@ -1225,17 +1229,15 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser if ($projectstatic->id > 0 || $allprojectforuser > 0) { - if ($action == 'deleteline' && !empty($projectidforalltimes)) { - print $form->formconfirm($_SERVER["PHP_SELF"]."?".($object->id > 0 ? "id=".$object->id : 'projectid='.$projectstatic->id).'&lineid='.GETPOST('lineid', 'int').($withproject ? '&withproject=1' : ''), $langs->trans("DeleteATimeSpent"), $langs->trans("ConfirmDeleteATimeSpent"), "confirm_deleteline", '', '', 1); - } - // Initialize technical object to manage hooks. Note that conf->hooks_modules contains array $hookmanager->initHooks(array('tasktimelist')); $formconfirm = ''; if ($action == 'deleteline' && !empty($projectidforalltimes)) { - $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"]."?".($object->id > 0 ? "id=".$object->id : 'projectid='.$projectstatic->id).'&lineid='.GETPOST('lineid', 'int').($withproject ? '&withproject=1' : ''), $langs->trans("DeleteATimeSpent"), $langs->trans("ConfirmDeleteATimeSpent"), "confirm_deleteline", '', '', 1); + // We must use projectidprojectid if on list of timespent of project and id=taskid if on list of timespent of a task + $urlafterconfirm = $_SERVER["PHP_SELF"]."?".($projectstatic->id > 0 ? 'projectid='.$projectstatic->id : ($object->id > 0 ? "id=".$object->id : '')).'&lineid='.GETPOST('lineid', 'int').($withproject ? '&withproject=1' : '')."&contextpage=".urlencode($contextpage); + $formconfirm = $form->formconfirm($urlafterconfirm, $langs->trans("DeleteATimeSpent"), $langs->trans("ConfirmDeleteATimeSpent"), "confirm_deleteline", '', '', 1); } // Call Hook formConfirm From c266681379762dc853c6ba568418f598a384b5a0 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Fri, 24 Feb 2023 11:32:56 +0100 Subject: [PATCH 239/607] fix : Warning: Constant DOL_URL_ROOT already defined in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/core/filemanagerdol/connectors/php/config.inc.php on line 40 --- htdocs/core/filemanagerdol/connectors/php/config.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/filemanagerdol/connectors/php/config.inc.php b/htdocs/core/filemanagerdol/connectors/php/config.inc.php index 848153d84fc..368b82c42e7 100644 --- a/htdocs/core/filemanagerdol/connectors/php/config.inc.php +++ b/htdocs/core/filemanagerdol/connectors/php/config.inc.php @@ -37,7 +37,7 @@ $pos = strstr($uri, '/'); // $pos contient alors url sans nom domaine if ($pos == '/') { $pos = ''; // si $pos vaut /, on le met a '' } -define('DOL_URL_ROOT', $pos); +//define('DOL_URL_ROOT', $pos); $entity = ((!empty($_SESSION['dol_entity']) && $_SESSION['dol_entity'] > 1) ? $_SESSION['dol_entity'] : null); // SECURITY: You must explicitly enable this "connector". (Set it to "true"). From 2a16db0e860fe5aa5705f4532630c969f2fbc81b Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Fri, 24 Feb 2023 11:35:07 +0100 Subject: [PATCH 240/607] fix : Warning: Undefined variable in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/core/filemanagerdol/browser/default/browser.php on line 52 --- htdocs/core/filemanagerdol/browser/default/browser.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/filemanagerdol/browser/default/browser.php b/htdocs/core/filemanagerdol/browser/default/browser.php index 0c1b29d12b2..1cf6d8612c2 100644 --- a/htdocs/core/filemanagerdol/browser/default/browser.php +++ b/htdocs/core/filemanagerdol/browser/default/browser.php @@ -49,6 +49,7 @@ if (!empty($conf->modules_parts['theme'])) { // This slow down } //print 'themepath='.$themepath.' themeparam='.$themeparam;exit; +$themeparam = ''; print ''."\n"; ?> From 904babed3ecb0cd78b8918a2ca768ba0e7f1ff14 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 24 Feb 2023 13:28:19 +0100 Subject: [PATCH 241/607] Fix filter on warehouse must not be visible on stock at date in future --- htdocs/product/stock/stockatdate.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/htdocs/product/stock/stockatdate.php b/htdocs/product/stock/stockatdate.php index 69893559dfa..1f9b82a4392 100644 --- a/htdocs/product/stock/stockatdate.php +++ b/htdocs/product/stock/stockatdate.php @@ -361,10 +361,14 @@ print img_picto('', 'product', 'class="pictofiwedwidth"').' '; print ' '; print $form->select_produits($productid, 'productid', '', 0, 0, -1, 2, '', 0, array(), 0, $langs->trans('Product'), 0, 'maxwidth300', 0, '', null, 1); -print '   '; -print img_picto('', 'stock', 'class="pictofiwedwidth"'); -print ' '; -print $formproduct->selectWarehouses((GETPOSTISSET('fk_warehouse') ? $fk_warehouse : 'ifonenodefault'), 'fk_warehouse', '', 1, 0, 0, $langs->trans('Warehouse'), 0, 0, null, '', null, 1, false, 'e.ref'); +if ($mode != 'future') { + // A virtual stock in future has no sense on a per warehouse view, so no filter on warehouse is available for stock at date in future + print '   '; + print img_picto('', 'stock', 'class="pictofiwedwidth"'); + print ' '; + print $formproduct->selectWarehouses((GETPOSTISSET('fk_warehouse') ? $fk_warehouse : 'ifonenodefault'), 'fk_warehouse', '', 1, 0, 0, $langs->trans('Warehouse'), 0, 0, null, '', null, 1, false, 'e.ref'); +} + print '
'; $parameters = array(); From ad84346cae11869e3594ab5efa1b4075071a1deb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 24 Feb 2023 11:31:46 +0100 Subject: [PATCH 242/607] Fix sql error --- htdocs/product/stock/stockatdate.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/product/stock/stockatdate.php b/htdocs/product/stock/stockatdate.php index 1f9b82a4392..4138841b3bb 100644 --- a/htdocs/product/stock/stockatdate.php +++ b/htdocs/product/stock/stockatdate.php @@ -276,10 +276,10 @@ if (!empty($canvas)) { $sql .= " AND p.canvas = '".$db->escape($canvas)."'"; } if ($fk_warehouse > 0) { - $sql .= ' GROUP BY p.rowid, p.ref, p.label, p.description, p.price, p.price_ttc, p.price_base_type, p.fk_product_type, p.desiredstock, p.seuil_stock_alerte,'; + $sql .= ' GROUP BY p.rowid, p.ref, p.label, p.description, p.price, p.pmp, p.price_ttc, p.price_base_type, p.fk_product_type, p.desiredstock, p.seuil_stock_alerte,'; $sql .= ' p.tms, p.duration, p.tobuy, p.stock'; } else { - $sql .= ' GROUP BY p.rowid, p.ref, p.label, p.description, p.price, p.price_ttc, p.price_base_type, p.fk_product_type, p.desiredstock, p.seuil_stock_alerte,'; + $sql .= ' GROUP BY p.rowid, p.ref, p.label, p.description, p.price, p.pmp, p.price_ttc, p.price_base_type, p.fk_product_type, p.desiredstock, p.seuil_stock_alerte,'; $sql .= ' p.tms, p.duration, p.tobuy, p.stock'; } // Add where from hooks From a3a9d6e6a28448fde9650eff54fb4a729bf44d1c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 24 Feb 2023 11:27:14 +0100 Subject: [PATCH 243/607] CSS --- htdocs/product/reassort.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/product/reassort.php b/htdocs/product/reassort.php index f3c354b88a4..b0f6f4b3283 100644 --- a/htdocs/product/reassort.php +++ b/htdocs/product/reassort.php @@ -464,7 +464,7 @@ if ($resql) { print $product->getNomUrl(1, '', 16); //if ($objp->stock_theorique < $objp->seuil_stock_alerte) print ' '.img_warning($langs->trans("StockTooLow")); print ''; - print ''.$product->label.''; + print ''.dol_escape_htmltag($product->label).''; if (isModEnabled("service") && $type == 1) { print ''; @@ -495,7 +495,7 @@ if ($resql) { if ($nb_warehouse > 1) { foreach ($warehouses_list as &$wh) { print ''; - print price(empty($product->stock_warehouse[$wh['id']]->real) ? 0 : $product->stock_warehouse[$wh['id']]->real, 0, $langs, 1, 0); + print price(empty($product->stock_warehouse[$wh['id']]->real) ? 0 : price2num($product->stock_warehouse[$wh['id']]->real, 'MS'), 0, $langs, 1, 0); print ''; } } @@ -514,7 +514,7 @@ if ($resql) { if (!empty($conf->global->PRODUCT_USE_UNITS)) { print ''.$objp->unit_short.''; } - print ''; + print ''; print img_picto($langs->trans("StockMovement"), 'movement', 'class="pictofixedwidth"'); print ''.$langs->trans("Movements").''; print ''; From f140036f37389341da450d7a1c84e2a43cd543dd Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Fri, 24 Feb 2023 15:59:43 +0100 Subject: [PATCH 244/607] FIX shipping list for external user --- htdocs/expedition/list.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index 9b55ff46c14..4c6a764997b 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -71,7 +71,6 @@ $search_datedelivery_end = dol_mktime(23, 59, 59, GETPOST('search_datedelivery_e $search_datereceipt_start = dol_mktime(0, 0, 0, GETPOST('search_datereceipt_startmonth', 'int'), GETPOST('search_datereceipt_startday', 'int'), GETPOST('search_datereceipt_startyear', 'int')); $search_datereceipt_end = dol_mktime(23, 59, 59, GETPOST('search_datereceipt_endmonth', 'int'), GETPOST('search_datereceipt_endday', 'int'), GETPOST('search_datereceipt_endyear', 'int')); $sall = trim((GETPOST('search_all', 'alphanohtml') != '') ?GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml')); -$socid = GETPOST('socid', 'int'); $search_user = GETPOST('search_user', 'int'); $search_sale = GETPOST('search_sale', 'int'); $search_categ_cus = GETPOST("search_categ_cus", 'int'); From 3c58b1cfc75a4e44ca37630186d66922ab749285 Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Fri, 24 Feb 2023 16:28:15 +0100 Subject: [PATCH 245/607] add comment for Travis to play it again sam --- htdocs/expedition/list.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index 4c6a764997b..3b653aaf17b 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -5,6 +5,7 @@ * Copyright (C) 2016-2021 Ferran Marcet * Copyright (C) 2019 Nicolas ZABOURI * Copyright (C) 2020 Thibault FOUCART + * Copyright (C) 2023 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 From fd371cc52b517ea26f50d588cc2c8cf19bc520ce Mon Sep 17 00:00:00 2001 From: Yoan Mollard Date: Fri, 24 Feb 2023 23:31:06 +0100 Subject: [PATCH 246/607] Fix member nature display in new.php --- htdocs/public/members/new.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/public/members/new.php b/htdocs/public/members/new.php index d3a2a556b07..aa8498a85a1 100644 --- a/htdocs/public/members/new.php +++ b/htdocs/public/members/new.php @@ -539,6 +539,8 @@ if (empty($conf->global->MEMBER_NEWFORM_FORCETYPE)) { // Moral/Physic attribute $morphys["phy"] = $langs->trans("Physical"); $morphys["mor"] = $langs->trans("Moral"); +print ''.$langs->trans('MemberNature').' *'."\n"; + if (empty($conf->global->MEMBER_NEWFORM_FORCEMORPHY)) { print ''.$langs->trans('MemberNature').' *'."\n"; print $form->selectarray("morphy", $morphys, GETPOST('morphy'), 1); From 468d05b08e3c3031b388ae6568b884de985f828a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 24 Feb 2023 18:42:53 +0100 Subject: [PATCH 247/607] Fix css --- htdocs/compta/facture/prelevement.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/facture/prelevement.php b/htdocs/compta/facture/prelevement.php index 829d3b0b482..319b93c4dcb 100644 --- a/htdocs/compta/facture/prelevement.php +++ b/htdocs/compta/facture/prelevement.php @@ -935,7 +935,8 @@ if ($object->id > 0) { print $tmpuser->getNomUrl(1, '', 0, 0, 0, 0, 'login'); print ''; - print ''.price($obj->amount).''; + // Amount + print ''.price($obj->amount).''; print ''; if ($obj->fk_prelevement_bons > 0) { From 3354a27a6f085a11d6ca3e98a7e17e3bd3a3baed Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 25 Feb 2023 00:48:50 +0100 Subject: [PATCH 248/607] css --- htdocs/admin/system/security.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/system/security.php b/htdocs/admin/system/security.php index 9fdc6e886b6..91de4341b49 100644 --- a/htdocs/admin/system/security.php +++ b/htdocs/admin/system/security.php @@ -553,12 +553,12 @@ if (empty($conf->global->MAIN_EXEC_USE_POPEN)) { print $conf->global->MAIN_EXEC_USE_POPEN; } if ($execmethod == 1) { - print ', "exec" PHP method will be used for shell commands'; + print '     "exec" PHP method will be used for shell commands'; print '   ('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or").' 1)'; print ''; } if ($execmethod == 2) { - print ', "popen" PHP method will be used for shell commands'; + print '     "popen" PHP method will be used for shell commands'; print '   ('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or").' 1)'; print ''; } From c94df95c233a55224a67d77e957653846e73e856 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 25 Feb 2023 01:54:36 +0100 Subject: [PATCH 249/607] Fix filter on email selector for thirdparties --- .../modules/mailings/thirdparties.modules.php | 98 ++++++++++--------- 1 file changed, 51 insertions(+), 47 deletions(-) diff --git a/htdocs/core/modules/mailings/thirdparties.modules.php b/htdocs/core/modules/mailings/thirdparties.modules.php index 2f8040d4b75..289433d4dc3 100644 --- a/htdocs/core/modules/mailings/thirdparties.modules.php +++ b/htdocs/core/modules/mailings/thirdparties.modules.php @@ -73,55 +73,53 @@ class mailing_thirdparties extends MailingTargets $cibles = array(); $addDescription = ""; + $addFilter = ""; + if (GETPOSTISSET("filter_client_thirdparties") && GETPOST("filter_client_thirdparties") <> '-1') { + $addFilter .= " AND s.client=".((int) GETPOST("filter_client_thirdparties", 'int')); + $addDescription = $langs->trans('ProspectCustomer')."="; + if (GETPOST("filter_client_thirdparties") == 0) { + $addDescription .= $langs->trans('NorProspectNorCustomer'); + } elseif (GETPOST("filter_client_thirdparties") == 1) { + $addDescription .= $langs->trans('Customer'); + } elseif (GETPOST("filter_client_thirdparties") == 2) { + $addDescription .= $langs->trans('Prospect'); + } elseif (GETPOST("filter_client_thirdparties") == 3) { + $addDescription .= $langs->trans('ProspectCustomer'); + } else { + $addDescription .= "Unknown status ".GETPOST("filter_client_thirdparties"); + } + } + if (GETPOSTISSET("filter_status")) { + if (strlen($addDescription) > 0) { + $addDescription .= ";"; + } + $addDescription .= $langs->trans("Status")."="; + if (GETPOST("filter_status") == '1') { + $addFilter .= " AND s.status=1"; + $addDescription .= $langs->trans("Enabled"); + } else { + $addFilter .= " AND s.status=0"; + $addDescription .= $langs->trans("Disabled"); + } + } + if (GETPOST('default_lang', 'alpha')) { + $addFilter .= " AND s.default_lang LIKE '".$this->db->escape(GETPOST('default_lang', 'alpha'))."%'"; + $addDescription = $langs->trans('DefaultLang')."="; + } + if (GETPOST('filter_lang_thirdparties', 'alpha')) { + $addFilter .= " AND s.default_lang LIKE '".$this->db->escape(GETPOST('filter_lang_thirdparties', 'alpha'))."%'"; + $addDescription = $langs->trans('DefaultLang')."="; + } + // Select the third parties from category - if (!GETPOST('filter')) { + if (!GETPOST('filter_thirdparties') || GETPOST('filter_thirdparties') == '-1') { $sql = "SELECT s.rowid as id, s.email as email, s.nom as name, null as fk_contact, null as firstname, null as label"; $sql .= " FROM ".MAIN_DB_PREFIX."societe as s"; $sql .= " WHERE s.email <> ''"; $sql .= " AND s.entity IN (".getEntity('societe').")"; $sql .= " AND s.email NOT IN (SELECT email FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE fk_mailing=".((int) $mailing_id).")"; - if (GETPOST('default_lang', 'alpha')) { - $sql .= " AND s.default_lang LIKE '".$this->db->escape(GETPOST('default_lang', 'alpha'))."%'"; - } + $sql .= $addFilter; } else { - $addFilter = ""; - if (GETPOSTISSET("filter_client") && GETPOST("filter_client") <> '-1') { - $addFilter .= " AND s.client=".((int) GETPOST("filter_client", 'int')); - $addDescription = $langs->trans('ProspectCustomer')."="; - if (GETPOST("filter_client") == 0) { - $addDescription .= $langs->trans('NorProspectNorCustomer'); - } elseif (GETPOST("filter_client") == 1) { - $addDescription .= $langs->trans('Customer'); - } elseif (GETPOST("filter_client") == 2) { - $addDescription .= $langs->trans('Prospect'); - } elseif (GETPOST("filter_client") == 3) { - $addDescription .= $langs->trans('ProspectCustomer'); - } else { - $addDescription .= "Unknown status ".GETPOST("filter_client"); - } - } - if (GETPOSTISSET("filter_status")) { - if (strlen($addDescription) > 0) { - $addDescription .= ";"; - } - $addDescription .= $langs->trans("Status")."="; - if (GETPOST("filter_status") == '1') { - $addFilter .= " AND s.status=1"; - $addDescription .= $langs->trans("Enabled"); - } else { - $addFilter .= " AND s.status=0"; - $addDescription .= $langs->trans("Disabled"); - } - } - if (GETPOST('default_lang', 'alpha')) { - $addFilter .= " AND s.default_lang LIKE '".$this->db->escape(GETPOST('default_lang', 'alpha'))."%'"; - $addDescription = $langs->trans('DefaultLang')."="; - } - if (GETPOST('filter_lang_thirdparties', 'alpha')) { - $addFilter .= " AND s.default_lang LIKE '".$this->db->escape(GETPOST('filter_lang_thirdparties', 'alpha'))."%'"; - $addDescription = $langs->trans('DefaultLang')."="; - } - $sql = "SELECT s.rowid as id, s.email as email, s.nom as name, null as fk_contact, null as firstname, c.label as label"; $sql .= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."categorie_societe as cs, ".MAIN_DB_PREFIX."categorie as c"; $sql .= " WHERE s.email <> ''"; @@ -129,8 +127,8 @@ class mailing_thirdparties extends MailingTargets $sql .= " AND s.email NOT IN (SELECT email FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE fk_mailing=".((int) $mailing_id).")"; $sql .= " AND cs.fk_soc = s.rowid"; $sql .= " AND c.rowid = cs.fk_categorie"; - if (GETPOST('filter', 'int') > 0) { - $sql .= " AND c.rowid=".((int) GETPOST('filter', 'int')); + if (GETPOST('filter_thirdparties', 'int') > 0) { + $sql .= " AND c.rowid=".((int) GETPOST('filter_thirdparties', 'int')); } $sql .= $addFilter; $sql .= " UNION "; @@ -141,13 +139,15 @@ class mailing_thirdparties extends MailingTargets $sql .= " AND s.email NOT IN (SELECT email FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE fk_mailing=".((int) $mailing_id).")"; $sql .= " AND cs.fk_soc = s.rowid"; $sql .= " AND c.rowid = cs.fk_categorie"; - if (GETPOST('filter', 'int') > 0) { - $sql .= " AND c.rowid=".((int) GETPOST('filter', 'int')); + if (GETPOST('filter_thirdparties', 'int') > 0) { + $sql .= " AND c.rowid=".((int) GETPOST('filter_thirdparties', 'int')); } $sql .= $addFilter; } $sql .= " ORDER BY email"; + //print $sql;exit; + // Stock recipients emails into targets table $result = $this->db->query($sql); if ($result) { @@ -243,7 +243,8 @@ class mailing_thirdparties extends MailingTargets $langs->load("companies"); - $s = ''; // Show categories $sql = "SELECT rowid, label, type, visible"; @@ -293,6 +294,7 @@ class mailing_thirdparties extends MailingTargets $s .= ' '; + // filter_client_thirdparties $s .= ' '; $s .= ajax_combobox("filter_client_thirdparties"); + // filter_status $s .= ' '; $s .= ajax_combobox("filter_status_thirdparties"); + // filter_lang_thirdparties if (getDolGlobalInt('MAIN_MULTILANGS')) { // Choose language require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php'; From 9110b1d03f5e68baed53206aac7241a07c2c5ad1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 25 Feb 2023 02:23:16 +0100 Subject: [PATCH 250/607] Fix emailing filter --- htdocs/core/modules/mailings/thirdparties.modules.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/mailings/thirdparties.modules.php b/htdocs/core/modules/mailings/thirdparties.modules.php index 289433d4dc3..e8f0b9e8f75 100644 --- a/htdocs/core/modules/mailings/thirdparties.modules.php +++ b/htdocs/core/modules/mailings/thirdparties.modules.php @@ -97,7 +97,7 @@ class mailing_thirdparties extends MailingTargets if (GETPOST("filter_status") == '1') { $addFilter .= " AND s.status=1"; $addDescription .= $langs->trans("Enabled"); - } else { + } elseif (GETPOST("filter_status") == '0') { $addFilter .= " AND s.status=0"; $addDescription .= $langs->trans("Disabled"); } From c90fa255fd02407c91335037d377010fdcbb0265 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 25 Feb 2023 02:43:37 +0100 Subject: [PATCH 251/607] css --- htdocs/comm/mailing/cibles.php | 22 +++++------- .../modules/mailings/thirdparties.modules.php | 36 +++++++++++++++++-- 2 files changed, 42 insertions(+), 16 deletions(-) diff --git a/htdocs/comm/mailing/cibles.php b/htdocs/comm/mailing/cibles.php index b78931be9f2..106d6c3d12a 100644 --- a/htdocs/comm/mailing/cibles.php +++ b/htdocs/comm/mailing/cibles.php @@ -310,22 +310,15 @@ if ($object->fetch($id) >= 0) { if ($allowaddtarget && $user->rights->mailing->creer) { print load_fiche_titre($langs->trans("ToAddRecipientsChooseHere"), ($user->admin ?info_admin($langs->trans("YouCanAddYourOwnPredefindedListHere"), 1) : ''), 'generic'); - //print ''; - print '
'; print '
'; - //print '
'; print '
'; - //print '
'; + print '
'; print '
'.$langs->trans("RecipientSelectionModules").'
'; - //print ''; print '
'.$langs->trans("NbOfUniqueEMails").'
'; - //print ''; print '
'.$langs->trans("Filter").'
'; - //print ''; print '
 
'; - //print "\n"; print ''; // End tr clearstatcache(); @@ -390,12 +383,13 @@ if ($object->fetch($id) >= 0) { print '
'; } - print '
'; + print '
'; if (empty($obj->picto)) { $obj->picto = 'generic'; } - print img_object($langs->trans("EmailingTargetSelector").': '.get_class($obj), $obj->picto, 'class="valignmiddle pictomodule pictofixedwidth"'); - print ' '; + print img_object($langs->trans("EmailingTargetSelector").': '.get_class($obj), $obj->picto, 'class="valignmiddle width25 size15x"'); + print '
'; + print '
'; // style="height: 4em" print $obj->getDesc(); print '
'; @@ -405,7 +399,7 @@ if ($object->fetch($id) >= 0) { dol_syslog($e->getMessage(), LOG_ERR); } - print '
'; + print '
'; if ($nbofrecipient === '' || $nbofrecipient >= 0) { print $nbofrecipient; } else { @@ -413,7 +407,7 @@ if ($object->fetch($id) >= 0) { } print '
'; - print '
'; + print '
'; if ($allowaddtarget) { try { $filter = $obj->formFilter(); @@ -428,7 +422,7 @@ if ($object->fetch($id) >= 0) { } print '
'; - print '
'; + print '
'; if ($allowaddtarget) { print ''; } else { diff --git a/htdocs/core/modules/mailings/thirdparties.modules.php b/htdocs/core/modules/mailings/thirdparties.modules.php index e8f0b9e8f75..fd91e5e849f 100644 --- a/htdocs/core/modules/mailings/thirdparties.modules.php +++ b/htdocs/core/modules/mailings/thirdparties.modules.php @@ -89,6 +89,30 @@ class mailing_thirdparties extends MailingTargets $addDescription .= "Unknown status ".GETPOST("filter_client_thirdparties"); } } + if (GETPOSTISSET("filter_supplier_thirdparties") && GETPOST("filter_supplier_thirdparties") <> '-1') { + $addFilter .= " AND s.fournisseur = ".((int) GETPOST("filter_supplier_thirdparties", 'int')); + $addDescription = $langs->trans('Supplier')."="; + if (GETPOST("filter_supplier_thirdparties") == 0) { + $addDescription .= $langs->trans('No'); + } elseif (GETPOST("filter_supplier_thirdparties") == 1) { + $addDescription .= $langs->trans('Yes'); + } else { + $addDescription .= "Unknown status ".GETPOST("filter_supplier_thirdparties"); + } + } + if (GETPOSTISSET("filter_status")) { + if (strlen($addDescription) > 0) { + $addDescription .= ";"; + } + $addDescription .= $langs->trans("Status")."="; + if (GETPOST("filter_status") == '1') { + $addFilter .= " AND s.status=1"; + $addDescription .= $langs->trans("Enabled"); + } elseif (GETPOST("filter_status") == '0') { + $addFilter .= " AND s.status=0"; + $addDescription .= $langs->trans("Disabled"); + } + } if (GETPOSTISSET("filter_status")) { if (strlen($addDescription) > 0) { $addDescription .= ";"; @@ -295,7 +319,7 @@ class mailing_thirdparties extends MailingTargets $s .= ' '; // filter_client_thirdparties - $s .= ''; $s .= ''; if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS)) { $s .= ''; @@ -311,7 +335,15 @@ class mailing_thirdparties extends MailingTargets $s .= ' '; $s .= ajax_combobox("filter_client_thirdparties"); - // filter_status + // filter_supplier_thirdparties + $s .= ' '; + $s .= ajax_combobox("filter_supplier_thirdparties"); + + // filter_status_thirdparties $s .= ' '; } - print $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$object->id, $langs->trans('SendMailing'), $text, 'sendallconfirmed', '', '', 1, 330, 600, 0, $langs->trans("Confirm"), $langs->trans("Cancel")); + print $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$object->id, $langs->trans('SendMailing'), $text, 'sendallconfirmed', '', '', 1, 380, 660, 0, $langs->trans("Confirm"), $langs->trans("Cancel")); } } From 6092932141dc8b4419faf168aba93ffe0d6e3748 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 25 Feb 2023 02:55:28 +0100 Subject: [PATCH 254/607] css --- htdocs/comm/mailing/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/comm/mailing/card.php b/htdocs/comm/mailing/card.php index d3833cf1b94..5da75c22fce 100644 --- a/htdocs/comm/mailing/card.php +++ b/htdocs/comm/mailing/card.php @@ -893,7 +893,7 @@ if ($action == 'create') { if (!isset($conf->global->MAILING_LIMIT_SENDBYCLI) || $conf->global->MAILING_LIMIT_SENDBYCLI >= 0) { $text .= '

'; $text .= $langs->trans("MailingNeedCommand"); - $text .= '
'; + $text .= '
'; } print $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$object->id, $langs->trans('SendMailing'), $text, 'sendallconfirmed', '', '', 1, 380, 660, 0, $langs->trans("Confirm"), $langs->trans("Cancel")); From 7b7b8fda24a3fa8af51c9de1bb3ba6a4464345c5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 25 Feb 2023 04:05:18 +0100 Subject: [PATCH 255/607] Fix sending emails with data:image inside --- htdocs/comm/mailing/card.php | 10 ++++----- htdocs/core/class/CMailFile.class.php | 29 +++++++++++++++++---------- htdocs/langs/en_US/mails.lang | 1 + 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/htdocs/comm/mailing/card.php b/htdocs/comm/mailing/card.php index 5da75c22fce..2ae78628ba3 100644 --- a/htdocs/comm/mailing/card.php +++ b/htdocs/comm/mailing/card.php @@ -201,9 +201,9 @@ if (empty($reshook)) { $thirdpartystatic = new Societe($db); // Loop on each email and send it - $i = 0; + $iforemailloop = 0; - while ($i < $num && $i < $conf->global->MAILING_LIMIT_SENDBYWEB) { + while ($iforemailloop < $num && $iforemailloop < $conf->global->MAILING_LIMIT_SENDBYWEB) { // Here code is common with same loop ino mailing-send.php $res = 1; $now = dol_now(); @@ -366,7 +366,7 @@ if (empty($reshook)) { // Mail successful $nbok++; - dol_syslog("comm/mailing/card.php: ok for #".$i.($mail->error ? ' - '.$mail->error : ''), LOG_DEBUG); + dol_syslog("comm/mailing/card.php: ok for #".$iforemailloop.($mail->error ? ' - '.$mail->error : ''), LOG_DEBUG); $sql = "UPDATE ".MAIN_DB_PREFIX."mailing_cibles"; $sql .= " SET statut=1, date_envoi = '".$db->idate($now)."' WHERE rowid=".((int) $obj->rowid); @@ -405,7 +405,7 @@ if (empty($reshook)) { // Mail failed $nbko++; - dol_syslog("comm/mailing/card.php: error for #".$i.($mail->error ? ' - '.$mail->error : ''), LOG_WARNING); + dol_syslog("comm/mailing/card.php: error for #".$iforemailloop.($mail->error ? ' - '.$mail->error : ''), LOG_WARNING); $sql = "UPDATE ".MAIN_DB_PREFIX."mailing_cibles"; $sql .= " SET statut=-1, error_text='".$db->escape($mail->error)."', date_envoi='".$db->idate($now)."' WHERE rowid=".((int) $obj->rowid); @@ -415,7 +415,7 @@ if (empty($reshook)) { } } - $i++; + $iforemailloop++; } } else { setEventMessages($langs->transnoentitiesnoconv("NoMoreRecipientToSendTo"), null, 'mesgs'); diff --git a/htdocs/core/class/CMailFile.class.php b/htdocs/core/class/CMailFile.class.php index ecfe968bd02..d6b1a275d87 100644 --- a/htdocs/core/class/CMailFile.class.php +++ b/htdocs/core/class/CMailFile.class.php @@ -255,12 +255,14 @@ class CMailFile $this->html = $msg; $findimg = 0; - if (!empty($conf->global->MAIN_MAIL_ADD_INLINE_IMAGES_IF_IN_MEDIAS)) { + if (!empty($conf->global->MAIN_MAIL_ADD_INLINE_IMAGES_IF_IN_MEDIAS)) { // Off by default // Search into the body for image_types[$ext]; } // cid - $this->html_images[$i]["cid"] = dol_hash(uniqid(time()), 3); // Force md5 hash (does not contains special chars) + $this->html_images[$i]["cid"] = dol_hash($this->html_images[$i]["fullpath"], 'md5'); // Force md5 hash (does not contains special chars) // type $this->html_images[$i]["type"] = 'cidfromurl'; @@ -1800,17 +1802,22 @@ class CMailFile foreach ($matches[1] as $key => $ext) { // We save the image to send in disk $filecontent = $matches[2][$key]; - $cid = 'cid000'.dol_hash($this->html, 'md5'); // The id must not change if image is same + + $cid = 'cid000'.dol_hash($filecontent, 'md5'); // The id must not change if image is same + $destfiletmp = $images_dir.'/'.$cid.'.'.$ext; - $fhandle = @fopen($destfiletmp, 'w'); - if ($fhandle) { - $nbofbyteswrote = fwrite($fhandle, base64_decode($filecontent)); - fclose($fhandle); - @chmod($destfiletmp, octdec($conf->global->MAIN_UMASK)); - } else { - $this->errors[] = "Failed to open file '".$destfiletmp."' for write"; - return -1; + if (!dol_is_file($destfiletmp)) { // If file does not exist yet (this is the case for the first email sent with a data:image inside) + dol_syslog("write the cid file ".$destfiletmp); + $fhandle = @fopen($destfiletmp, 'w'); + if ($fhandle) { + $nbofbyteswrote = fwrite($fhandle, base64_decode($filecontent)); + fclose($fhandle); + @chmod($destfiletmp, octdec($conf->global->MAIN_UMASK)); + } else { + $this->errors[] = "Failed to open file '".$destfiletmp."' for write"; + return -1; + } } if (file_exists($destfiletmp)) { diff --git a/htdocs/langs/en_US/mails.lang b/htdocs/langs/en_US/mails.lang index 4d98f0e7f49..0414854a3f4 100644 --- a/htdocs/langs/en_US/mails.lang +++ b/htdocs/langs/en_US/mails.lang @@ -179,3 +179,4 @@ RecordCreatedByEmailCollector=Record created by the Email Collector %s from emai DefaultBlacklistMailingStatus=Default value for field '%s' when creating a new contact DefaultStatusEmptyMandatory=Empty but mandatory WarningLimitSendByDay=WARNING: The setup or contract of your instance limits your number of emails per day to %s. Trying to send more may result in having your instance slow down or suspended. Please contact your support if you need a higher quota. +NoMoreRecipientToSendTo=No more recipient to send the email to \ No newline at end of file From e957e0a945be76d6bcdb7d5657822b068d20864b Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sat, 25 Feb 2023 07:16:19 +0100 Subject: [PATCH 256/607] v17 Merge problem - Restore #22762 - Accountancy - Better warning for situation invoice in index --- htdocs/accountancy/index.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/accountancy/index.php b/htdocs/accountancy/index.php index 628dceafd12..8cda6a5c6e5 100644 --- a/htdocs/accountancy/index.php +++ b/htdocs/accountancy/index.php @@ -83,12 +83,7 @@ $help_url = 'EN:Module_Double_Entry_Accounting#Setup'; llxHeader('', $langs->trans("AccountancyArea"), $help_url); -if (!empty($conf->global->INVOICE_USE_SITUATION) && $conf->global->INVOICE_USE_SITUATION == 1) { - print load_fiche_titre($langs->trans("AccountancyArea"), '', 'accountancy'); - - print ''.$langs->trans("SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices")."\n"; - print "
"; -} elseif (isModEnabled('accounting')) { +if (isModEnabled('accounting')) { $step = 0; $resultboxes = FormOther::getBoxesArea($user, "27"); // Load $resultboxes (selectboxlist + boxactivated + boxlista + boxlistb) @@ -120,6 +115,11 @@ if (!empty($conf->global->INVOICE_USE_SITUATION) && $conf->global->INVOICE_USE_S print "
"; } + if (!empty($conf->global->INVOICE_USE_SITUATION) && $conf->global->INVOICE_USE_SITUATION == 1) { + print info_admin($langs->trans("SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices")); + print "
"; + } + print '
'; // hideobject is to start hidden print "
\n"; print ''.$langs->trans("AccountancyAreaDescIntro")."
\n"; From 15987bc46f660377fded7c86bb51353b7463aaac Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sat, 25 Feb 2023 07:22:20 +0100 Subject: [PATCH 257/607] v17 Merge problem - Restore #22762 - Accountancy - Better warning for situation invoice in index --- htdocs/accountancy/index.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/htdocs/accountancy/index.php b/htdocs/accountancy/index.php index 8cda6a5c6e5..f5feef4a0f2 100644 --- a/htdocs/accountancy/index.php +++ b/htdocs/accountancy/index.php @@ -115,11 +115,6 @@ if (isModEnabled('accounting')) { print "
"; } - if (!empty($conf->global->INVOICE_USE_SITUATION) && $conf->global->INVOICE_USE_SITUATION == 1) { - print info_admin($langs->trans("SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices")); - print "
"; - } - print '
'; // hideobject is to start hidden print "
\n"; print ''.$langs->trans("AccountancyAreaDescIntro")."
\n"; From c8e32bf96ff9849c7968f394bc6dbf1a281774df Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sat, 25 Feb 2023 07:29:57 +0100 Subject: [PATCH 258/607] FIX Activate widget Alert product on stock only on home --- htdocs/core/modules/modProduct.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/modProduct.class.php b/htdocs/core/modules/modProduct.class.php index 5224f82a2f5..ce08252ced4 100644 --- a/htdocs/core/modules/modProduct.class.php +++ b/htdocs/core/modules/modProduct.class.php @@ -104,7 +104,7 @@ class modProduct extends DolibarrModules // Boxes $this->boxes = array( 0=>array('file'=>'box_produits.php', 'enabledbydefaulton'=>'Home'), - 1=>array('file'=>'box_produits_alerte_stock.php', 'enabledbydefaulton'=>''), + 1=>array('file'=>'box_produits_alerte_stock.php', 'enabledbydefaulton'=>'Home'), 2=>array('file'=>'box_graph_product_distribution.php', 'enabledbydefaulton'=>'Home') ); From d7d8653603c2d18002806aa850ec666929c114c2 Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sat, 25 Feb 2023 08:20:31 +0100 Subject: [PATCH 259/607] FIX Members Index - Missing colspan & language key on widget --- htdocs/core/boxes/box_members_by_type.php | 4 ++-- htdocs/core/boxes/box_members_subscriptions_by_year.php | 4 ++-- htdocs/langs/en_US/members.lang | 4 +++- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/htdocs/core/boxes/box_members_by_type.php b/htdocs/core/boxes/box_members_by_type.php index b3f3504cee8..f400ae6fb3d 100644 --- a/htdocs/core/boxes/box_members_by_type.php +++ b/htdocs/core/boxes/box_members_by_type.php @@ -80,7 +80,7 @@ class box_members_by_type extends ModeleBoxes public function loadBox($max = 5) { global $user, $langs, $conf; - $langs->load("boxes"); + $langs->loadLangs(array("boxes", "members")); $this->max = $max; @@ -284,7 +284,7 @@ class box_members_by_type extends ModeleBoxes if ($num == 0) { $this->info_box_contents[$line][0] = array( - 'td' => 'class="center"', + 'td' => 'colspan="7" class="center"', 'text' => $langs->trans("NoRecordedMembersByType") ); } else { diff --git a/htdocs/core/boxes/box_members_subscriptions_by_year.php b/htdocs/core/boxes/box_members_subscriptions_by_year.php index 716b8ed0482..b7f2ea47229 100644 --- a/htdocs/core/boxes/box_members_subscriptions_by_year.php +++ b/htdocs/core/boxes/box_members_subscriptions_by_year.php @@ -79,7 +79,7 @@ class box_members_subscriptions_by_year extends ModeleBoxes public function loadBox($max = 5) { global $user, $langs, $conf; - $langs->load("boxes"); + $langs->loadLangs(array("boxes", "members")); $this->max = $max; @@ -191,7 +191,7 @@ class box_members_subscriptions_by_year extends ModeleBoxes if ($num == 0) { $this->info_box_contents[$line][0] = array( - 'td' => 'class="center"', + 'td' => 'colspan="4" class="center"', 'text' => $langs->trans("NoRecordedMembers"), ); } else { diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang index f8981df17d9..1597f9f2719 100644 --- a/htdocs/langs/en_US/members.lang +++ b/htdocs/langs/en_US/members.lang @@ -4,6 +4,8 @@ MemberCard=Member card SubscriptionCard=Subscription card Member=Member Members=Members +NoRecordedMembers=No recorded members +NoRecordedMembersByType=No recorded members ShowMember=Show member card UserNotLinkedToMember=User not linked to a member ThirdpartyNotLinkedToMember=Third party not linked to a member @@ -231,4 +233,4 @@ ForceMemberNature=Force member nature (Individual or Corporation) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. MemberFirstname=Member firstname -MemberLastname=Member lastname \ No newline at end of file +MemberLastname=Member lastname From b83b9ff598bba7fc67bc4513d30bf784f73bb9ad Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Sat, 25 Feb 2023 12:06:06 +0100 Subject: [PATCH 260/607] fix : Warning: Undefined array key tomail in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/core/actions_sendmails.inc.php on line 193 --- htdocs/core/actions_sendmails.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/actions_sendmails.inc.php b/htdocs/core/actions_sendmails.inc.php index 4f7580bb8ca..e459437a74e 100644 --- a/htdocs/core/actions_sendmails.inc.php +++ b/htdocs/core/actions_sendmails.inc.php @@ -190,7 +190,7 @@ if (($action == 'send' || $action == 'relance') && !GETPOST('addfile') && !GETPO $tmparray[] = trim(GETPOST('sendto', 'alphawithlgt')); } - if (trim($_POST['tomail'])) { + if (isset($_POST['tomail']) && trim($_POST['tomail'])) { // Recipients are provided into free hidden text field $tmparray[] = trim(GETPOST('tomail', 'alphawithlgt')); } From 8b09e0f09024e5115922e2c0c4ae05ceef0d9210 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Sat, 25 Feb 2023 12:38:01 +0100 Subject: [PATCH 261/607] fix : Warning: Undefined property: Societe:: in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/core/actions_sendmails.inc.php on line 350 --- htdocs/core/actions_sendmails.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/actions_sendmails.inc.php b/htdocs/core/actions_sendmails.inc.php index e459437a74e..5744316eb4a 100644 --- a/htdocs/core/actions_sendmails.inc.php +++ b/htdocs/core/actions_sendmails.inc.php @@ -346,7 +346,7 @@ if (($action == 'send' || $action == 'relance') && !GETPOST('addfile') && !GETPO // Make substitution in email content $substitutionarray = getCommonSubstitutionArray($langs, 0, null, $object); $substitutionarray['__EMAIL__'] = $sendto; - $substitutionarray['__CHECK_READ__'] = (is_object($object) && is_object($object->thirdparty)) ? '' : ''; + $substitutionarray['__CHECK_READ__'] = (is_object($object) && is_object($object->thirdparty)) ? '' : ''; $parameters = array('mode'=>'formemail'); complete_substitutions_array($substitutionarray, $langs, $object, $parameters); From 05a32ab99368cfb42d3bf6007ac391ede2f000c6 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Sat, 25 Feb 2023 14:31:20 +0100 Subject: [PATCH 262/607] fix : Fatal error: Uncaught TypeError: Unsupported operand types: string / int in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/comm/propal/card.php on line 1420 --- htdocs/comm/propal/card.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php index f2c549f91f7..e14a2c05246 100644 --- a/htdocs/comm/propal/card.php +++ b/htdocs/comm/propal/card.php @@ -1363,6 +1363,9 @@ if (empty($reshook)) { $date_end = dol_mktime(GETPOST('date_endhour'), GETPOST('date_endmin'), GETPOST('date_endsec'), GETPOST('date_endmonth'), GETPOST('date_endday'), GETPOST('date_endyear')); $remise_percent = price2num(GETPOST('remise_percent'), '', 2); + if (empty($remise_percent)) { + $remise_percent = 0; + } // Prepare a price equivalent for minimum price check $pu_equivalent = $pu_ht; From 822b81913fbd0df0642f8660e05a296f10176a2a Mon Sep 17 00:00:00 2001 From: Francis Appels Date: Sat, 25 Feb 2023 14:38:32 +0100 Subject: [PATCH 263/607] Fix dol_print_date warning --- htdocs/fichinter/class/fichinter.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php index 376e14c277f..d880673530d 100644 --- a/htdocs/fichinter/class/fichinter.class.php +++ b/htdocs/fichinter/class/fichinter.class.php @@ -1738,8 +1738,8 @@ class FichinterLigne extends CommonObjectLine $sql = "UPDATE ".MAIN_DB_PREFIX."fichinter"; $sql .= " SET duree = ".((int) $total_duration); - $sql .= " , dateo = ".(!empty($obj->dateo) ? "'".$this->db->idate($obj->dateo)."'" : "null"); - $sql .= " , datee = ".(!empty($obj->datee) ? "'".$this->db->idate($obj->datee)."'" : "null"); + $sql .= " , dateo = ".(!empty($obj->dateo) ? "'".$this->db->escape($obj->dateo)."'" : "null"); + $sql .= " , datee = ".(!empty($obj->datee) ? "'".$this->db->escape($obj->datee)."'" : "null"); $sql .= " WHERE rowid = ".((int) $this->fk_fichinter); dol_syslog("FichinterLigne::update_total", LOG_DEBUG); From 2c57198de763e3c5c6122a82c58369304218acec Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Sat, 25 Feb 2023 14:54:07 +0100 Subject: [PATCH 264/607] fix : Warning: Undefined property: stdClass:: in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/core/lib/files.lib.php on line 2847 and Attempt to read property lire on null in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/core/lib/files.lib.php on line 2847 --- htdocs/core/lib/files.lib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index 23659cd769b..e380563d6c8 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -2842,9 +2842,9 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } $original_file = $conf->deplacement->dir_output.'/'.$original_file; //$sqlprotectagainstexternals = "SELECT fk_soc as fk_soc FROM ".MAIN_DB_PREFIX."fichinter WHERE ref='".$db->escape($refname)."' AND entity=".$conf->entity; - } elseif (($modulepart == 'propal' || $modulepart == 'propale') && !empty($conf->propal->multidir_output[$entity])) { + } elseif (($modulepart == 'propal' || $modulepart == 'propale') && isset($conf->propal->multidir_output[$entity])) { // Wrapping pour les propales - if ($fuser->rights->propal->{$lire} || preg_match('/^specimen/i', $original_file)) { + if (property_exists($fuser->rights, 'propal') && ($fuser->rights->propal->{$lire} || preg_match('/^specimen/i', $original_file))) { $accessallowed = 1; } $original_file = $conf->propal->multidir_output[$entity].'/'.$original_file; From e0cf29b1225a79793687b51b93e798cbb9502886 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 25 Feb 2023 15:32:29 +0100 Subject: [PATCH 265/607] Fix #yogosha14973 --- htdocs/ecm/dir_add_card.php | 8 ++++++-- htdocs/ecm/index.php | 16 +++++++++++----- htdocs/ecm/index_auto.php | 12 ++++++------ htdocs/langs/en_US/ecm.lang | 2 +- 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/htdocs/ecm/dir_add_card.php b/htdocs/ecm/dir_add_card.php index acdc6c2990a..5de525e17ea 100644 --- a/htdocs/ecm/dir_add_card.php +++ b/htdocs/ecm/dir_add_card.php @@ -94,13 +94,16 @@ if (!empty($section)) { // Permissions $permissiontoadd = 0; +$permissiontodelete = 0; $permissiontoupload = 0; if ($module == 'ecm') { $permissiontoadd = $user->rights->ecm->setup; + $permissiontodelete = $user->rights->ecm->setup; $permissiontoupload = $user->rights->ecm->upload; } if ($module == 'medias') { $permissiontoadd = ($user->rights->mailing->creer || $user->rights->website->write); + $permissiontodelete = ($user->rights->mailing->creer || $user->rights->website->write); $permissiontoupload = ($user->rights->mailing->creer || $user->rights->website->write); } @@ -189,7 +192,7 @@ if ($action == 'add' && $permissiontoadd) { exit; } } -} elseif ($action == 'confirm_deletesection' && $confirm == 'yes' && $permissiontoadd) { +} elseif ($action == 'confirm_deletesection' && $confirm == 'yes' && $permissiontodelete) { // Deleting file $result = $ecmdir->delete($user); setEventMessages($langs->trans("ECMSectionWasRemoved", $ecmdir->label), null, 'mesgs'); @@ -231,7 +234,8 @@ if ($action == 'create') { print '
'.$langs->trans("RecipientSelectionModules").''.$langs->trans("NbOfUniqueEMails").''.$langs->trans("Filter").' 
'; // Label - print ''."\n"; + print ''."\n"; print '\n"; } } else { - print ''; + print ''; } print "
'.$langs->trans("Label").'label).'" autofocus>
'.$langs->trans("Label").''; + print '
'.$langs->trans("AddIn").''; print $formecm->selectAllSections((GETPOST("catParent", 'alpha') ? GETPOST("catParent", 'alpha') : $ecmdir->fk_parent), 'catParent', $module); diff --git a/htdocs/ecm/index.php b/htdocs/ecm/index.php index 9eb512bc96d..d6cf8a0993f 100644 --- a/htdocs/ecm/index.php +++ b/htdocs/ecm/index.php @@ -83,6 +83,12 @@ if ($user->socid) { } $result = restrictedArea($user, 'ecm', 0); +$permissiontoread = $user->hasRight('ecm', 'read'); +$permissiontocreate = $user->hasRight('ecm', 'upload'); +$permissiontocreatedir = $user->hasRight('ecm', 'setup'); +$permissiontodelete = $user->hasRight('ecm', 'upload'); +$permissiontodeletedir = $user->hasRight('ecm', 'setup'); + /* * Actions @@ -93,7 +99,7 @@ $result = restrictedArea($user, 'ecm', 0); //include DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php'; // Upload file (code similar but different than actions_linkedfiles.inc.php) -if (GETPOST("sendit", 'alphanohtml') && !empty($conf->global->MAIN_UPLOAD_DOC)) { +if (GETPOST("sendit", 'alphanohtml') && !empty($conf->global->MAIN_UPLOAD_DOC) && $permissiontocreate) { // Define relativepath and upload_dir $relativepath = ''; if ($ecmdir->id) { @@ -130,7 +136,7 @@ if (GETPOST("sendit", 'alphanohtml') && !empty($conf->global->MAIN_UPLOAD_DOC)) } // Remove file (code similar but different than actions_linkedfiles.inc.php) -if ($action == 'confirm_deletefile') { +if ($action == 'confirm_deletefile' && $permissiontodelete) { if (GETPOST('confirm') == 'yes') { // GETPOST('urlfile','alpha') is full relative URL from ecm root dir. Contains path of all sections. @@ -152,7 +158,7 @@ if ($action == 'confirm_deletefile') { } // Add directory -if ($action == 'add' && $user->rights->ecm->setup) { +if ($action == 'add' && $permissiontocreatedir) { $ecmdir->ref = 'NOTUSEDYET'; $ecmdir->label = GETPOST("label"); $ecmdir->description = GETPOST("desc"); @@ -170,7 +176,7 @@ if ($action == 'add' && $user->rights->ecm->setup) { } // Remove directory -if ($action == 'confirm_deletesection' && GETPOST('confirm', 'alpha') == 'yes') { +if ($action == 'confirm_deletesection' && GETPOST('confirm', 'alpha') == 'yes' && $permissiontodeletedir) { $result = $ecmdir->delete($user); setEventMessages($langs->trans("ECMSectionWasRemoved", $ecmdir->label), null, 'mesgs'); @@ -180,7 +186,7 @@ if ($action == 'confirm_deletesection' && GETPOST('confirm', 'alpha') == 'yes') // Refresh directory view // This refresh list of dirs, not list of files (for preformance reason). List of files is refresh only if dir was not synchronized. // To refresh content of dir with cache, just open the dir in edit mode. -if ($action == 'refreshmanual') { +if ($action == 'refreshmanual' && $permissiontoread) { $ecmdirtmp = new EcmDirectory($db); // This part of code is same than into file ecm/ajax/ecmdatabase.php TODO Remove duplicate diff --git a/htdocs/ecm/index_auto.php b/htdocs/ecm/index_auto.php index 342d7d74129..628ef871ea5 100644 --- a/htdocs/ecm/index_auto.php +++ b/htdocs/ecm/index_auto.php @@ -34,12 +34,6 @@ require_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmdirectory.class.php'; // Load translation files required by the page $langs->loadLangs(array("ecm", "companies", "other", "users", "orders", "propal", "bills", "contracts")); -// Security check -if ($user->socid) { - $socid = $user->socid; -} -$result = restrictedArea($user, 'ecm', 0); - // Get parameters $socid = GETPOST('socid', 'int'); $action = GETPOST('action', 'aZ09'); @@ -87,6 +81,12 @@ $userstatic = new User($db); $error = 0; +// Security check +if ($user->socid) { + $socid = $user->socid; +} +$result = restrictedArea($user, 'ecm', 0); + /* * Actions diff --git a/htdocs/langs/en_US/ecm.lang b/htdocs/langs/en_US/ecm.lang index 5ced4ec5617..724e5aa59d7 100644 --- a/htdocs/langs/en_US/ecm.lang +++ b/htdocs/langs/en_US/ecm.lang @@ -19,7 +19,7 @@ ECMArea=DMS/ECM area ECMAreaDesc=The DMS/ECM (Document Management System / Electronic Content Management) area allows you to save, share and search quickly all kind of documents in Dolibarr. ECMAreaDesc2a=* Manual directories can be used to save documents not linked to a particular element. ECMAreaDesc2b=* Automatic directories are filled automatically when adding documents from the page of an element. -ECMAreaDesc3=* Medias directories are files into the subdirectory /medias of documents directory, readable by everybody with no need to be logged and no need to have the file shared explicitely. It is used to store image files from emailing or website module. +ECMAreaDesc3=* Medias directories are files into the subdirectory /medias of documents directory, readable by everybody with no need to be logged and no need to have the file shared explicitely. It is used to store image files for the emailing or website module for example. ECMSectionWasRemoved=Directory %s has been deleted. ECMSectionWasCreated=Directory %s has been created. ECMSearchByKeywords=Search by keywords From ca1508e3331fff23e12c5734a5a12918558121ec Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Sat, 25 Feb 2023 16:29:55 +0100 Subject: [PATCH 266/607] fix : Warning: Undefined property: stdClass:: in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/core/lib/files.lib.php on line 2953 --- htdocs/core/lib/files.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index e380563d6c8..97b803822e9 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -2950,7 +2950,7 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, if (empty($entity) || (empty($conf->product->multidir_output[$entity]) && empty($conf->service->multidir_output[$entity]))) { return array('accessallowed'=>0, 'error'=>'Value entity must be provided'); } - if (($fuser->rights->produit->{$lire} || $fuser->rights->service->{$lire}) || preg_match('/^specimen/i', $original_file)) { + if ((isset($fuser->rights->produit) && $fuser->rights->produit->{$lire}) || (isset($fuser->rights->service) && $fuser->rights->service->{$lire}) || preg_match('/^specimen/i', $original_file)) { $accessallowed = 1; } if (isModEnabled("product")) { From ed9db6c9ddf50de9255078b44539a55d29e69530 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 25 Feb 2023 16:36:48 +0100 Subject: [PATCH 267/607] Fix #yogosha15050 --- htdocs/user/card.php | 101 +++++++++++++++++++++++-------------------- 1 file changed, 54 insertions(+), 47 deletions(-) diff --git a/htdocs/user/card.php b/htdocs/user/card.php index 688ac6c28ac..08c2defd546 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -63,6 +63,9 @@ if (isModEnabled('stock')) { require_once DOL_DOCUMENT_ROOT.'/product/class/html.formproduct.class.php'; } +// Load translation files required by page +$langs->loadLangs(array('users', 'companies', 'ldap', 'admin', 'hrm', 'stocks', 'other')); + $id = GETPOST('id', 'int'); $action = GETPOST('action', 'aZ09'); $mode = GETPOST('mode', 'alpha'); @@ -77,42 +80,8 @@ $datestartvalidity = dol_mktime(0, 0, 0, GETPOST('datestartvaliditymonth', 'int' $dateendvalidity = dol_mktime(0, 0, 0, GETPOST('dateendvaliditymonth', 'int'), GETPOST('dateendvalidityday', 'int'), GETPOST('dateendvalidityyear', 'int')); $dateofbirth = dol_mktime(0, 0, 0, GETPOST('dateofbirthmonth', 'int'), GETPOST('dateofbirthday', 'int'), GETPOST('dateofbirthyear', 'int')); -// Define value to know what current user can do on users -$canadduser = (!empty($user->admin) || $user->hasRight("user", "user", "write")); -$canreaduser = (!empty($user->admin) || $user->hasRight("user", "user", "read")); -$canedituser = (!empty($user->admin) || $user->hasRight("user", "user", "write")); -$candisableuser = (!empty($user->admin) || $user->hasRight("user", "user", "delete")); -$canreadgroup = $canreaduser; -$caneditgroup = $canedituser; -if (!empty($conf->global->MAIN_USE_ADVANCED_PERMS)) { - $canreadgroup = (!empty($user->admin) || $user->hasRight("user", "group_advance", "read")); - $caneditgroup = (!empty($user->admin) || $user->hasRight("user", "group_advance", "write")); -} - $childids = $user->getAllChildIds(1); // For later, test on salary visibility -// Define value to know what current user can do on properties of edited user -if ($id > 0) { - // $user is the current logged user, $id is the user we want to edit - $caneditfield = ((($user->id == $id) && $user->hasRight("user", "self", "write")) || (($user->id != $id) && $user->hasRight("user", "user", "write"))); - $caneditpassword = ((($user->id == $id) && $user->hasRight("user", "self", "password")) || (($user->id != $id) && $user->hasRight("user", "user", "password"))); -} - -// Security check -$socid = 0; -if ($user->socid > 0) { - $socid = $user->socid; -} -$feature2 = 'user'; -$result = restrictedArea($user, 'user', $id, 'user', $feature2); - -if ($user->id != $id && !$canreaduser) { - accessforbidden(); -} - -// Load translation files required by page -$langs->loadLangs(array('users', 'companies', 'ldap', 'admin', 'hrm', 'stocks', 'other')); - $object = new User($db); $extrafields = new ExtraFields($db); @@ -129,6 +98,38 @@ $error = 0; $acceptlocallinktomedia = (acceptLocalLinktoMedia() > 0 ? 1 : 0); +// Security check +$socid = 0; +if ($user->socid > 0) { + $socid = $user->socid; +} +$feature2 = 'user'; +$result = restrictedArea($user, 'user', $id, 'user', $feature2); + +// Define value to know what current user can do on users +$canadduser = (!empty($user->admin) || $user->hasRight("user", "user", "write")); +$canreaduser = (!empty($user->admin) || $user->hasRight("user", "user", "read")); +$canedituser = (!empty($user->admin) || $user->hasRight("user", "user", "write")); // edit other user +$candisableuser = (!empty($user->admin) || $user->hasRight("user", "user", "delete")); +$canreadgroup = $canreaduser; +$caneditgroup = $canedituser; +if (!empty($conf->global->MAIN_USE_ADVANCED_PERMS)) { + $canreadgroup = (!empty($user->admin) || $user->hasRight("user", "group_advance", "read")); + $caneditgroup = (!empty($user->admin) || $user->hasRight("user", "group_advance", "write")); +} + +if ($user->id != $id && !$canreaduser) { + accessforbidden(); +} + +// Define value to know what current user can do on properties of edited user +if ($id > 0) { + // $user is the current logged user, $id is the user we want to edit + $canedituser = (($user->id == $id) && $user->hasRight("user", "self", "write")); // can edit myself + $caneditfield = ((($user->id == $id) && $user->hasRight("user", "self", "write")) || (($user->id != $id) && $user->hasRight("user", "user", "write"))); + $caneditpassword = ((($user->id == $id) && $user->hasRight("user", "self", "password")) || (($user->id != $id) && $user->hasRight("user", "user", "password"))); +} + /** * Actions @@ -390,7 +391,7 @@ if (empty($reshook)) { } } - if ($action == 'update' && !$cancel) { + if ($action == 'update' && $canedituser) { require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; if ($caneditfield) { // Case we can edit all field @@ -430,8 +431,12 @@ if (empty($reshook)) { $object->national_registration_number = GETPOST("national_registration_number", 'alphanohtml'); } $object->gender = GETPOST("gender", 'aZ09'); - $object->pass = GETPOST("password", 'none'); // We can keep 'none' for password fields - $object->api_key = (GETPOST("api_key", 'alphanohtml')) ? GETPOST("api_key", 'alphanohtml') : $object->api_key; + if ($caneditpassword) { + $object->pass = GETPOST("password", 'none'); // We can keep 'none' for password fields + } + if ($caneditpassword || $user->hasRight("api", "apikey", "generate")) { + $object->api_key = (GETPOST("api_key", 'alphanohtml')) ? GETPOST("api_key", 'alphanohtml') : $object->api_key; + } if (!empty($user->admin)) { // admin flag can only be set/unset by an admin user. A test is also done later when forging sql request $object->admin = GETPOST("admin", "int"); } @@ -2074,7 +2079,7 @@ if ($action == 'create' || $action == 'adduserldap') { print "
'.$langs->trans("None").'
'.$langs->trans("None").'
"; @@ -2091,7 +2096,7 @@ if ($action == 'create' || $action == 'adduserldap') { /* * Card in edit mode */ - if ($action == 'edit' && ($canedituser || $caneditfield || $caneditpassword || ($user->id == $object->id))) { + if ($action == 'edit' && ($canedituser || $caneditpassword)) { print ''; print ''; print ''; @@ -2417,12 +2422,14 @@ if ($action == 'create' || $action == 'adduserldap') { print "\n"; // API key - if (!empty($conf->api->enabled) && ($user->id == $id || $user->admin || $user->hasRight("api", "apikey", "generate"))) { + if (isModEnabled('api')) { print ''.$langs->trans("ApiKey").''; print ''; - print ''; - if (!empty($conf->use_javascript_ajax)) { - print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_api_key" class="linkobject"'); + if ($caneditpassword || $user->hasRight("api", "apikey", "generate")) { + print ''; + if (!empty($conf->use_javascript_ajax)) { + print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_api_key" class="linkobject"'); + } } print ''; } @@ -2879,10 +2886,10 @@ if ($action == 'create' || $action == 'adduserldap') { } } -if (!empty($conf->api->enabled)) { - // Add button to autosuggest a key - include_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; - print dolJSToSetRandomPassword('password', 'generate_password', 0); +// Add button to autosuggest a key +include_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; +print dolJSToSetRandomPassword('password', 'generate_password', 0); +if (isModEnabled('api')) { print dolJSToSetRandomPassword('api_key', 'generate_api_key', 1); } From cbb6ca071ab76e4e2d5f6c215ff02d7ebadb3d0d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 25 Feb 2023 19:48:33 +0100 Subject: [PATCH 268/607] Fix #yogosha15157 --- htdocs/adherents/class/api_members.class.php | 7 +- .../class/api_memberstypes.class.php | 5 +- .../class/api_subscriptions.class.php | 5 +- htdocs/api/class/api.class.php | 4 +- htdocs/api/class/api_setup.class.php | 112 +++++++---------- htdocs/asset/class/asset.class.php | 2 +- htdocs/bom/class/api_boms.class.php | 7 +- htdocs/bookcal/class/booking.class.php | 2 +- .../categories/class/api_categories.class.php | 7 +- .../action/class/api_agendaevents.class.php | 7 +- .../comm/propal/class/api_proposals.class.php | 17 ++- htdocs/comm/propal/class/propal.class.php | 2 +- htdocs/commande/class/api_orders.class.php | 7 +- htdocs/commande/class/commande.class.php | 2 +- .../bank/class/api_bankaccounts.class.php | 14 +-- .../facture/class/api_invoices.class.php | 7 +- .../facture/class/facture-rec.class.php | 2 +- htdocs/compta/facture/class/facture.class.php | 2 +- htdocs/contrat/class/api_contracts.class.php | 7 +- htdocs/contrat/class/contrat.class.php | 2 +- htdocs/core/class/html.form.class.php | 57 ++------- htdocs/core/customreports.php | 15 +-- htdocs/core/lib/functions.lib.php | 118 +++++++++++++----- htdocs/don/class/api_donations.class.php | 7 +- .../class/conferenceorbooth.class.php | 4 +- .../class/conferenceorboothattendee.class.php | 2 +- .../expedition/class/api_shipments.class.php | 7 +- .../class/api_expensereports.class.php | 7 +- .../class/api_interventions.class.php | 7 +- htdocs/fichinter/class/fichinter.class.php | 2 +- .../class/api_supplier_invoices.class.php | 7 +- .../fourn/class/api_supplier_orders.class.php | 7 +- .../class/fournisseur.commande.class.php | 2 +- .../class/api_knowledgemanagement.class.php | 7 +- .../template/class/api_mymodule.class.php | 7 +- .../template/class/myobject.class.php | 2 +- htdocs/mrp/class/api_mos.class.php | 7 +- htdocs/mrp/class/mo.class.php | 4 +- .../class/api_partnership.class.php | 7 +- .../partnership/class/partnership.class.php | 6 +- htdocs/product/class/api_products.class.php | 22 ++-- .../stock/class/api_stockmovements.class.php | 7 +- .../stock/class/api_warehouses.class.php | 7 +- htdocs/product/stock/class/entrepot.class.php | 4 +- .../stock/class/mouvementstock.class.php | 4 +- .../class/stocktransfer.class.php | 2 +- htdocs/projet/class/api_projects.class.php | 7 +- htdocs/projet/class/api_tasks.class.php | 7 +- .../reception/class/api_receptions.class.php | 7 +- .../class/api_recruitment.class.php | 14 +-- .../class/recruitmentjobposition.class.php | 6 +- htdocs/societe/class/api_contacts.class.php | 7 +- .../societe/class/api_thirdparties.class.php | 7 +- .../class/api_supplier_proposals.class.php | 7 +- htdocs/ticket/class/api_tickets.class.php | 7 +- htdocs/user/class/api_users.class.php | 14 +-- htdocs/zapier/class/api_zapier.class.php | 7 +- test/phpunit/FunctionsLibTest.php | 28 +++++ 58 files changed, 321 insertions(+), 345 deletions(-) diff --git a/htdocs/adherents/class/api_members.class.php b/htdocs/adherents/class/api_members.class.php index 51ef1153a57..4ecf79d9079 100644 --- a/htdocs/adherents/class/api_members.class.php +++ b/htdocs/adherents/class/api_members.class.php @@ -238,11 +238,10 @@ class Members extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/adherents/class/api_memberstypes.class.php b/htdocs/adherents/class/api_memberstypes.class.php index 95c514bfedf..8179612d769 100644 --- a/htdocs/adherents/class/api_memberstypes.class.php +++ b/htdocs/adherents/class/api_memberstypes.class.php @@ -103,11 +103,10 @@ class MembersTypes extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/adherents/class/api_subscriptions.class.php b/htdocs/adherents/class/api_subscriptions.class.php index 67484a723fd..dfde21dc5a1 100644 --- a/htdocs/adherents/class/api_subscriptions.class.php +++ b/htdocs/adherents/class/api_subscriptions.class.php @@ -101,11 +101,10 @@ class Subscriptions extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/api/class/api.class.php b/htdocs/api/class/api.class.php index e0acc8faac8..3a1a176d818 100644 --- a/htdocs/api/class/api.class.php +++ b/htdocs/api/class/api.class.php @@ -302,6 +302,7 @@ class DolibarrApi // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore /** * Return if a $sqlfilters parameter is valid + * Function no more used. Kept for backward compatibility with old APIs of modules * * @param string $sqlfilters sqlfilter string * @param string $error Error message @@ -317,7 +318,8 @@ class DolibarrApi // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore /** - * Function to forge a SQL criteria from a Generic filter string + * Function to forge a SQL criteria from a Generic filter string. + * Function no more used. Kept for backward compatibility with old APIs of modules * * @param array $matches Array of found string by regex search. * Each entry is 1 and only 1 criteria. diff --git a/htdocs/api/class/api_setup.class.php b/htdocs/api/class/api_setup.class.php index 9dcd168f344..95243f191ca 100644 --- a/htdocs/api/class/api_setup.class.php +++ b/htdocs/api/class/api_setup.class.php @@ -77,11 +77,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -141,11 +140,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -206,11 +204,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -277,11 +274,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); @@ -378,11 +374,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); @@ -554,11 +549,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -669,11 +663,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -733,11 +726,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -802,11 +794,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -868,11 +859,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -943,11 +933,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -1014,11 +1003,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); @@ -1088,11 +1076,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -1153,11 +1140,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -1213,11 +1199,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -1274,11 +1259,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -1337,11 +1321,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -1396,11 +1379,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -1462,11 +1444,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -1523,11 +1504,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -1586,11 +1566,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -1650,11 +1629,10 @@ class Setup extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } diff --git a/htdocs/asset/class/asset.class.php b/htdocs/asset/class/asset.class.php index c01f4b967c4..00404d21d99 100644 --- a/htdocs/asset/class/asset.class.php +++ b/htdocs/asset/class/asset.class.php @@ -98,7 +98,7 @@ class Asset extends CommonObject 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>0, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"), 'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>'1', 'position'=>20, 'notnull'=>1, 'visible'=>1, 'noteditable'=>'0', 'index'=>1, 'searchall'=>1, 'showoncombobox'=>'1', 'validate'=>'1', 'comment'=>"Reference of object"), 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>'1', 'position'=>30, 'notnull'=>1, 'visible'=>1, 'searchall'=>1, 'css'=>'minwidth300', 'cssview'=>'wordbreak', 'showoncombobox'=>'2', 'validate'=>'1',), - 'fk_asset_model' => array('type'=>'integer:AssetModel:asset/class/assetmodel.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'AssetModel', 'enabled'=>'1', 'position'=>40, 'notnull'=>0, 'visible'=>1, 'index'=>1, 'validate'=>'1',), + 'fk_asset_model' => array('type'=>'integer:AssetModel:asset/class/assetmodel.class.php:1:((status:=:1) and (entity:IN:__SHARED_ENTITIES__))', 'label'=>'AssetModel', 'enabled'=>'1', 'position'=>40, 'notnull'=>0, 'visible'=>1, 'index'=>1, 'validate'=>'1',), 'qty' => array('type'=>'real', 'label'=>'Qty', 'enabled'=>'1', 'position'=>50, 'notnull'=>1, 'visible'=>0, 'default'=>'1', 'isameasure'=>'1', 'css'=>'maxwidth75imp', 'validate'=>'1',), 'acquisition_type' => array('type'=>'smallint', 'label'=>'AssetAcquisitionType', 'enabled'=>'1', 'position'=>60, 'notnull'=>1, 'visible'=>1, 'arrayofkeyval'=>array('0'=>'AssetAcquisitionTypeNew', '1'=>'AssetAcquisitionTypeOccasion'), 'validate'=>'1',), 'asset_type' => array('type'=>'smallint', 'label'=>'AssetType', 'enabled'=>'1', 'position'=>70, 'notnull'=>1, 'visible'=>1, 'arrayofkeyval'=>array('0'=>'AssetTypeIntangible', '1'=>'AssetTypeTangible', '2'=>'AssetTypeInProgress', '3'=>'AssetTypeFinancial'), 'validate'=>'1',), diff --git a/htdocs/bom/class/api_boms.class.php b/htdocs/bom/class/api_boms.class.php index fb7d175a229..57b0d26e80a 100644 --- a/htdocs/bom/class/api_boms.class.php +++ b/htdocs/bom/class/api_boms.class.php @@ -150,11 +150,10 @@ class Boms extends DolibarrApi } if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/bookcal/class/booking.class.php b/htdocs/bookcal/class/booking.class.php index a74cb87a43d..616fbbde03e 100644 --- a/htdocs/bookcal/class/booking.class.php +++ b/htdocs/bookcal/class/booking.class.php @@ -104,7 +104,7 @@ class Booking extends CommonObject public $fields=array( 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>0, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"), 'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>'1', 'position'=>1.2, 'notnull'=>1, 'visible'=>1, 'index'=>1, 'searchall'=>1, 'validate'=>'1', 'comment'=>"Reference of object"), - 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'picto'=>'company', 'enabled'=>'$conf->societe->enabled', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'css'=>'maxwidth500 widthcentpercentminusxx', 'help'=>"LinkToThirparty", 'validate'=>'1',), + 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:((status:=:1) and (entity:IN:__SHARED_ENTITIES__))', 'label'=>'ThirdParty', 'picto'=>'company', 'enabled'=>'$conf->societe->enabled', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'css'=>'maxwidth500 widthcentpercentminusxx', 'help'=>"LinkToThirparty", 'validate'=>'1',), 'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1', 'label'=>'Project', 'picto'=>'project', 'enabled'=>'$conf->project->enabled', 'position'=>52, 'notnull'=>-1, 'visible'=>-1, 'index'=>1, 'css'=>'maxwidth500 widthcentpercentminusxx', 'validate'=>'1',), 'description' => array('type'=>'text', 'label'=>'Description', 'enabled'=>'1', 'position'=>60, 'notnull'=>0, 'visible'=>3, 'validate'=>'1',), 'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>'1', 'position'=>61, 'notnull'=>0, 'visible'=>0, 'cssview'=>'wordbreak', 'validate'=>'1',), diff --git a/htdocs/categories/class/api_categories.class.php b/htdocs/categories/class/api_categories.class.php index e59ff070aec..e10371f87b6 100644 --- a/htdocs/categories/class/api_categories.class.php +++ b/htdocs/categories/class/api_categories.class.php @@ -149,11 +149,10 @@ class Categories extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/comm/action/class/api_agendaevents.class.php b/htdocs/comm/action/class/api_agendaevents.class.php index 8c13709b250..058de48542d 100644 --- a/htdocs/comm/action/class/api_agendaevents.class.php +++ b/htdocs/comm/action/class/api_agendaevents.class.php @@ -159,11 +159,10 @@ class AgendaEvents extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/comm/propal/class/api_proposals.class.php b/htdocs/comm/propal/class/api_proposals.class.php index cf675e01b62..cc6bfb2aa2f 100644 --- a/htdocs/comm/propal/class/api_proposals.class.php +++ b/htdocs/comm/propal/class/api_proposals.class.php @@ -204,11 +204,10 @@ class Proposals extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); @@ -309,14 +308,14 @@ class Proposals extends DolibarrApi } if (!empty($sqlfilters)) { - if (!DolibarrApi::_checkFilters($sqlfilters)) { - throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters); + $errormessage = ''; + $sql = forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)'; - $filters = " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } - $this->propal->getLinesArray($filters); + $this->propal->getLinesArray($sql); $result = array(); foreach ($this->propal->lines as $line) { array_push($result, $this->_cleanObjectDatas($line)); diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 9dca1b1051d..8606b9df87d 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -302,7 +302,7 @@ class Propal extends CommonObject 'ref_client' =>array('type'=>'varchar(255)', 'label'=>'RefCustomer', 'enabled'=>1, 'visible'=>-1, 'position'=>22), 'ref_ext' =>array('type'=>'varchar(255)', 'label'=>'RefExt', 'enabled'=>1, 'visible'=>0, 'position'=>40), 'fk_soc' =>array('type'=>'integer:Societe:societe/class/societe.class.php', 'label'=>'ThirdParty', 'enabled'=>'$conf->societe->enabled', 'visible'=>-1, 'position'=>23), - 'fk_projet' =>array('type'=>'integer:Project:projet/class/project.class.php:1:fk_statut=1', 'label'=>'Fk projet', 'enabled'=>"isModEnabled('project')", 'visible'=>-1, 'position'=>24), + 'fk_projet' =>array('type'=>'integer:Project:projet/class/project.class.php:1:(fk_statut:=:1)', 'label'=>'Fk projet', 'enabled'=>"isModEnabled('project')", 'visible'=>-1, 'position'=>24), 'tms' =>array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>25), 'datec' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-1, 'position'=>55), 'datep' =>array('type'=>'date', 'label'=>'Date', 'enabled'=>1, 'visible'=>-1, 'position'=>60), diff --git a/htdocs/commande/class/api_orders.class.php b/htdocs/commande/class/api_orders.class.php index 2c916abda9a..af460b3b459 100644 --- a/htdocs/commande/class/api_orders.class.php +++ b/htdocs/commande/class/api_orders.class.php @@ -208,11 +208,10 @@ class Orders extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index a09fa8bdf5e..1b1b77343dd 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -307,7 +307,7 @@ class Commande extends CommonOrder 'ref_ext' =>array('type'=>'varchar(255)', 'label'=>'RefExt', 'enabled'=>1, 'visible'=>0, 'position'=>26), 'ref_client' =>array('type'=>'varchar(255)', 'label'=>'RefCustomer', 'enabled'=>1, 'visible'=>-1, 'position'=>28), 'fk_soc' =>array('type'=>'integer:Societe:societe/class/societe.class.php', 'label'=>'ThirdParty', 'enabled'=>'$conf->societe->enabled', 'visible'=>-1, 'notnull'=>1, 'position'=>20), - 'fk_projet' =>array('type'=>'integer:Project:projet/class/project.class.php:1:fk_statut=1', 'label'=>'Project', 'enabled'=>"isModEnabled('project')", 'visible'=>-1, 'position'=>25), + 'fk_projet' =>array('type'=>'integer:Project:projet/class/project.class.php:1:(fk_statut:=:1)', 'label'=>'Project', 'enabled'=>"isModEnabled('project')", 'visible'=>-1, 'position'=>25), 'date_commande' =>array('type'=>'date', 'label'=>'Date', 'enabled'=>1, 'visible'=>1, 'position'=>60), 'date_valid' =>array('type'=>'datetime', 'label'=>'DateValidation', 'enabled'=>1, 'visible'=>-1, 'position'=>62), 'date_cloture' =>array('type'=>'datetime', 'label'=>'DateClosing', 'enabled'=>1, 'visible'=>-1, 'position'=>65), diff --git a/htdocs/compta/bank/class/api_bankaccounts.class.php b/htdocs/compta/bank/class/api_bankaccounts.class.php index c9886a176f0..052c45fbc56 100644 --- a/htdocs/compta/bank/class/api_bankaccounts.class.php +++ b/htdocs/compta/bank/class/api_bankaccounts.class.php @@ -82,11 +82,10 @@ class BankAccounts extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); @@ -440,11 +439,10 @@ class BankAccounts extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= " ORDER BY rowid"; diff --git a/htdocs/compta/facture/class/api_invoices.class.php b/htdocs/compta/facture/class/api_invoices.class.php index 4c1392e28eb..47fd0263d7e 100644 --- a/htdocs/compta/facture/class/api_invoices.class.php +++ b/htdocs/compta/facture/class/api_invoices.class.php @@ -237,11 +237,10 @@ class Invoices extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index f02850492b5..22ea97feb6d 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -181,7 +181,7 @@ class FactureRec extends CommonInvoice 'total_ht' =>array('type'=>'double(24,8)', 'label'=>'Total', 'enabled'=>1, 'visible'=>-1, 'position'=>70, 'isameasure'=>1), 'total_ttc' =>array('type'=>'double(24,8)', 'label'=>'Total ttc', 'enabled'=>1, 'visible'=>-1, 'position'=>75, 'isameasure'=>1), 'fk_user_author' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'Fk user author', 'enabled'=>1, 'visible'=>-1, 'position'=>80), - 'fk_projet' =>array('type'=>'integer:Project:projet/class/project.class.php:1:fk_statut=1', 'label'=>'Fk projet', 'enabled'=>"isModEnabled('project')", 'visible'=>-1, 'position'=>85), + 'fk_projet' =>array('type'=>'integer:Project:projet/class/project.class.php:1:(fk_statut:=:1)', 'label'=>'Fk projet', 'enabled'=>"isModEnabled('project')", 'visible'=>-1, 'position'=>85), 'fk_cond_reglement' =>array('type'=>'integer', 'label'=>'Fk cond reglement', 'enabled'=>1, 'visible'=>-1, 'position'=>90), 'fk_mode_reglement' =>array('type'=>'integer', 'label'=>'Fk mode reglement', 'enabled'=>1, 'visible'=>-1, 'position'=>95), 'date_lim_reglement' =>array('type'=>'date', 'label'=>'Date lim reglement', 'enabled'=>1, 'visible'=>-1, 'position'=>100), diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 161087a3bf9..2447db6af5d 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -336,7 +336,7 @@ class Facture extends CommonInvoice 'fk_user_valid' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserValidation', 'enabled'=>1, 'visible'=>-1, 'position'=>167), 'fk_user_closing' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserClosing', 'enabled'=>1, 'visible'=>-1, 'position'=>168), 'fk_facture_source' =>array('type'=>'integer', 'label'=>'SourceInvoice', 'enabled'=>1, 'visible'=>-1, 'position'=>170), - 'fk_projet' =>array('type'=>'integer:Project:projet/class/project.class.php:1:fk_statut=1', 'label'=>'Project', 'enabled'=>1, 'visible'=>-1, 'position'=>175), + 'fk_projet' =>array('type'=>'integer:Project:projet/class/project.class.php:1:(fk_statut:=:1)', 'label'=>'Project', 'enabled'=>1, 'visible'=>-1, 'position'=>175), 'fk_account' =>array('type'=>'integer', 'label'=>'Fk account', 'enabled'=>1, 'visible'=>-1, 'position'=>180), 'fk_currency' =>array('type'=>'varchar(3)', 'label'=>'CurrencyCode', 'enabled'=>1, 'visible'=>-1, 'position'=>185), 'fk_cond_reglement' =>array('type'=>'integer', 'label'=>'PaymentTerm', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>190), diff --git a/htdocs/contrat/class/api_contracts.class.php b/htdocs/contrat/class/api_contracts.class.php index f38fa4758d9..68ace23a26a 100644 --- a/htdocs/contrat/class/api_contracts.class.php +++ b/htdocs/contrat/class/api_contracts.class.php @@ -148,11 +148,10 @@ class Contracts extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index 8f66cbdef2e..a29df83b834 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -233,7 +233,7 @@ class Contrat extends CommonObject 'datec' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-1, 'position'=>40), 'date_contrat' =>array('type'=>'datetime', 'label'=>'Date contrat', 'enabled'=>1, 'visible'=>-1, 'position'=>45), 'fk_soc' =>array('type'=>'integer:Societe:societe/class/societe.class.php', 'label'=>'ThirdParty', 'enabled'=>'$conf->societe->enabled', 'visible'=>-1, 'notnull'=>1, 'position'=>70), - 'fk_projet' =>array('type'=>'integer:Project:projet/class/project.class.php:1:fk_statut=1', 'label'=>'Project', 'enabled'=>"isModEnabled('project')", 'visible'=>-1, 'position'=>75), + 'fk_projet' =>array('type'=>'integer:Project:projet/class/project.class.php:1:(fk_statut:=:1)', 'label'=>'Project', 'enabled'=>"isModEnabled('project')", 'visible'=>-1, 'position'=>75), 'fk_commercial_signature' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'SaleRepresentative Signature', 'enabled'=>1, 'visible'=>-1, 'position'=>80), 'fk_commercial_suivi' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'SaleRepresentative follower', 'enabled'=>1, 'visible'=>-1, 'position'=>85), 'fk_user_author' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserAuthor', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>90), diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 921618f7edc..62fd1db45e6 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -7769,40 +7769,6 @@ class Form return $out; } - /** - * Function to forge a SQL criteria from a Dolibarr filter syntax string. - * - * @param array $matches Array of found string by regex search. Example: "t.ref:like:'SO-%'" or "t.date_creation:<:'20160101'" or "t.nature:is:NULL" - * @return string Forged criteria. Example: "t.field like 'abc%'" - */ - protected static function forgeCriteriaCallback($matches) - { - global $db; - - //dol_syslog("Convert matches ".$matches[1]); - if (empty($matches[1])) { - return ''; - } - $tmp = explode(':', $matches[1]); - if (count($tmp) < 3) { - return ''; - } - - $tmpescaped = $tmp[2]; - $regbis = array(); - - if (preg_match('/^\'(.*)\'$/', $tmpescaped, $regbis)) { - $tmpescaped = "'".$db->escape($regbis[1])."'"; - } else { - $tmpescaped = $db->escape($tmpescaped); - } - - if ($tmp[1] == '!=') { - $tmp[1] = '<>'; - } - - return $db->escape($tmp[0]).' '.strtoupper($db->escape($tmp[1]))." ".$tmpescaped; - } /** * Output html form to select an object. @@ -7916,12 +7882,11 @@ class Form } if ($filter) { // Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')" - /*if (! DolibarrApi::_checkFilters($filter)) - { - throw new RestException(503, 'Error when validating parameter sqlfilters '.$filter); - }*/ - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'Form::forgeCriteriaCallback', $filter).")"; + $errormessage = ''; + $sql .= forgeSQLFromUniversalSearchCriteria($filter, $errormessage); + if ($errormessage) { + return 'Error forging a SQL request from an universal criteria: '.$errormessage; + } } } $sql .= $this->db->order($sortfield ? $sortfield : $fieldstoshow, "ASC"); @@ -10275,14 +10240,12 @@ class Form $search_component_params_hidden .= '('.$search_component_params_hidden.')'; } $errormessage = ''; - if (!dolCheckFilters($search_component_params_hidden, $errormessage)) { - print 'ERROR in parsing search string'; + $searchtags = forgeSQLFromUniversalSearchCriteria($search_component_params_hidden, $errormessage); + if ($errormessage) { + print 'ERROR in parsing search string: '.dol_escape_htmltag($errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - //var_dump($search_component_params_hidden); - $htmltags = preg_replace_callback('/'.$regexstring.'/', 'dolForgeCriteriaCallback', $search_component_params_hidden); - //var_dump($htmltags); - $ret .= 'x '.$htmltags.''; + //var_dump($searchtags); + $ret .= 'x '.dol_escape_htmltag($searchtags).''; } //$ret .= ''; diff --git a/htdocs/core/customreports.php b/htdocs/core/customreports.php index fefdc5880c8..34561c91621 100644 --- a/htdocs/core/customreports.php +++ b/htdocs/core/customreports.php @@ -295,12 +295,7 @@ if (is_array($search_groupby) && count($search_groupby)) { $sqlfilters = GETPOST('search_component_params_hidden', 'alphanohtml'); if ($sqlfilters) { $errormessage = ''; - if (dolCheckFilters($sqlfilters, $errormessage)) { - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " WHERE (".preg_replace_callback('/'.$regexstring.'/', 'dolForgeCriteriaCallback', $sqlfilters).")"; - } else { - print $errormessage; - } + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); }*/ $sql .= " LIMIT ".((int) ($MAXUNIQUEVALFORGROUP + 1)); @@ -681,11 +676,9 @@ if (!empty($search_measures) && !empty($search_xaxis)) { $sqlfilters = $search_component_params_hidden; if ($sqlfilters) { $errormessage = ''; - if (dolCheckFilters($sqlfilters, $errormessage)) { - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'dolForgeCriteriaCallback', $sqlfilters).")"; - } else { - print $errormessage; + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + print dol_escape_htmltag($errormessage); } } $sql .= " GROUP BY "; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 58a77279e6c..835c81c7131 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -11522,17 +11522,35 @@ function jsonOrUnserialize($stringtodecode) } +/** + * forgeSQLFromUniversalSearchCriteria + * + * @param string $filter String with universal search string + * @param string $error Error message + * @return string Return forged SQL string + */ +function forgeSQLFromUniversalSearchCriteria($filter, &$error = '') +{ + $regexstring = '\(([a-zA-Z0-9_\.]+:[<>!=insotlke]+:[^\(\)]+)\)'; // Must be (aaa:bbb:...) with aaa is a field name (with alias or not) and bbb is one of this operator '=', '<', '>', '<=', '>=', '!=', 'in', 'notin', 'like', 'notlike', 'is', 'isnot' + + if (!dolCheckFilters($filter, $error)) { + return '1 = 2'; // Bad balance of parenthesis, we force a SQL not found + } + + // Test the filter syntax + $t = preg_replace_callback('/'.$regexstring.'/i', 'dolForgeDummyCriteriaCallback', $filter); + $t = str_replace(array('and','or','AND','OR',' '), '', $t); // Remove the only strings allowed between each () criteria + // If the string result contains something else than '()', the syntax was wrong + if (preg_match('/[^\(\)]/', $t)) { + $error = 'Bad syntax of the search string, filter criteria is inhalited'; + return '1 = 3'; // Bad syntax of the search string, we force a SQL not found + } + + return " AND (".preg_replace_callback('/'.$regexstring.'/', 'dolForgeCriteriaCallback', $filter).")"; +} /** - * Return if a $sqlfilters parameter is valid and will pass the preg_replace_callback() to replace Generic filter string with SQL filter string - * Example of usage: - * if ($sqlfilters) { - * $errormessage = ''; - * if (dolCheckFilters($sqlfilters, $errormessage)) { - * $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - * $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'dolForgeCriteriaCallback', $sqlfilters).")"; - * } - * } + * Return if a $sqlfilters parameter has a valid balance of parenthesis * * @param string $sqlfilters sqlfilter string * @param string $error Error message @@ -11553,7 +11571,7 @@ function dolCheckFilters($sqlfilters, &$error = '') $counter--; } if ($counter < 0) { - $error = "Bad sqlfilters=".$sqlfilters; + $error = "Wrond balance of parenthesis in sqlfilters=".$sqlfilters; dol_syslog($error, LOG_WARNING); return false; } @@ -11563,58 +11581,92 @@ function dolCheckFilters($sqlfilters, &$error = '') } /** - * Function to forge a SQL criteria from a Generic filter string. - * Example of usage: - * if ($sqlfilters) { - * $errormessage = ''; - * if (dolCheckFilters($sqlfilters, $errormessage)) { - * $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - * $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'dolForgeCriteriaCallback', $sqlfilters).")"; - * } - * } + * Function to forge a SQL criteria from a Dolibarr filter syntax string. + * This method is called by forgeSQLFromUniversalSearchCriteria() * - * @param array $matches Array of found string by regex search. - * Example: "t.ref:like:'SO-%'" or "t.date_creation:<:'20160101'" or "t.date_creation:<:'2016-01-01 12:30:00'" or "t.nature:is:NULL" - * @return string Forged criteria. Example: "t.field like 'abc%'" + * @param array $matches Array of found string by regex search. Example: "t.ref:like:'SO-%'" or "t.date_creation:<:'20160101'" or "t.nature:is:NULL" + * @return string Forged criteria. Example: "t.field like 'abc%'" + */ +function dolForgeDummyCriteriaCallback($matches) +{ + //dol_syslog("Convert matches ".$matches[1]); + if (empty($matches[1])) { + return ''; + } + $tmp = explode(':', $matches[1]); + if (count($tmp) < 3) { + return ''; + } + + return '()'; // An empty criteria +} + +/** + * Function to forge a SQL criteria from a Dolibarr filter syntax string. + * This method is called by forgeSQLFromUniversalSearchCriteria() + * + * @param array $matches Array of found string by regex search. + * Example: "t.ref:like:'SO-%'" or "t.date_creation:<:'20160101'" or "t.date_creation:<:'2016-01-01 12:30:00'" or "t.nature:is:NULL" + * @return string Forged criteria. Example: "t.field like 'abc%'" */ function dolForgeCriteriaCallback($matches) { global $db; - dol_syslog("Convert matches ".$matches[1]); + //dol_syslog("Convert matches ".$matches[1]); if (empty($matches[1])) { return ''; } - $tmp = explode(':', $matches[1], 3); - + $tmp = explode(':', $matches[1]); if (count($tmp) < 3) { return ''; } - $operand = preg_replace('/[^a-z0-9\._]/i', '', trim($tmp[0])); - $operator = strtoupper(preg_replace('/[^a-z<>=]/i', '', trim($tmp[1]))); if ($operator == 'NOTLIKE') { $operator = 'NOT LIKE'; } + if ($operator == 'ISNOT') { + $operator = 'IS NOT'; + } + if ($operator == '!=') { + $operator = '<>'; + } - $tmpescaped = trim($tmp[2]); + $tmpescaped = $tmp[2]; $regbis = array(); - if ($operator == 'IN') { - $tmpescaped = "(".$db->sanitize($tmpescaped, 1).")"; + + if ($operator == 'IN') { // IN is allowed for list of ID or code only + //if (!preg_match('/^\(.*\)$/', $tmpescaped)) { + $tmpescaped = '('.$db->escape($db->sanitize($tmpescaped, 1, 0)).')'; + //} else { + // $tmpescaped = $db->escape($db->sanitize($tmpescaped, 1)); + //} + } elseif ($operator == 'LIKE' || $operator == 'NOT LIKE') { + if (preg_match('/^\'(.*)\'$/', $tmpescaped, $regbis)) { + $tmpescaped = $regbis[1]; + } + //$tmpescaped = "'".$db->escapeforlike($db->escape($regbis[1]))."'"; + $tmpescaped = "'".$db->escape($tmpescaped)."'"; // We do not escape the _ and % so the like will works } elseif (preg_match('/^\'(.*)\'$/', $tmpescaped, $regbis)) { $tmpescaped = "'".$db->escape($regbis[1])."'"; } else { - $tmpescaped = $db->sanitize($db->escape($tmpescaped)); + if (strtoupper($tmpescaped) == 'NULL') { + $tmpescaped = 'NULL'; + } elseif (is_int($tmpescaped)) { + $tmpescaped = (int) $tmpescaped; + } else { + $tmpescaped = (float) $tmpescaped; + } } - return $db->escape($operand).' '.$db->escape($operator)." ".$tmpescaped; + return $db->escape($tmp[0]).' '.strtoupper($operator).' '.$tmpescaped; } - /** * Get timeline icon + * * @param ActionComm $actionstatic actioncomm * @param array $histo histo * @param int $key key diff --git a/htdocs/don/class/api_donations.class.php b/htdocs/don/class/api_donations.class.php index f9af0568bf0..fee513f2ed7 100644 --- a/htdocs/don/class/api_donations.class.php +++ b/htdocs/don/class/api_donations.class.php @@ -129,11 +129,10 @@ class Donations extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/eventorganization/class/conferenceorbooth.class.php b/htdocs/eventorganization/class/conferenceorbooth.class.php index b15dcf3e545..db6bbf7175e 100644 --- a/htdocs/eventorganization/class/conferenceorbooth.class.php +++ b/htdocs/eventorganization/class/conferenceorbooth.class.php @@ -106,8 +106,8 @@ class ConferenceOrBooth extends ActionComm 'id' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>0, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"), 'ref' => array('type'=>'integer', 'label'=>'Ref', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>2, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'csslist'=>'left', 'comment'=>"Id"), 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>'1', 'position'=>30, 'notnull'=>1, 'visible'=>1, 'searchall'=>1, 'css'=>'minwidth300', 'csslist'=>'tdoverflowmax125', 'help'=>"OrganizationEvenLabelName", 'showoncombobox'=>'1', 'autofocusoncreate'=>1), - 'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1:t.usage_organize_event=1', 'label'=>'Project', 'enabled'=>"isModEnabled('project')", 'position'=>52, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'picto'=>'project', 'css'=>'tdoverflowmax150 maxwidth500', 'csslist'=>'width100'), - 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'enabled'=>'$conf->societe->enabled', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'help'=>"OrganizationEventLinkToThirdParty", 'picto'=>'company', 'csslist'=>'tdoverflowmax125', 'css'=>'maxwidth500'), + 'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1:(t.usage_organize_event:=:1)', 'label'=>'Project', 'enabled'=>"isModEnabled('project')", 'position'=>52, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'picto'=>'project', 'css'=>'tdoverflowmax150 maxwidth500', 'csslist'=>'width100'), + 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:((status:=:1) AND (entity:IN:__SHARED_ENTITIES__))', 'label'=>'ThirdParty', 'enabled'=>'$conf->societe->enabled', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'help'=>"OrganizationEventLinkToThirdParty", 'picto'=>'company', 'csslist'=>'tdoverflowmax125', 'css'=>'maxwidth500'), 'note' => array('type'=>'text', 'label'=>'Description', 'enabled'=>'1', 'position'=>60, 'notnull'=>0, 'visible'=>3), 'fk_action' => array('type'=>'sellist:c_actioncomm:libelle:id::module LIKE (\'%@eventorganization\')', 'label'=>'Format', 'enabled'=>'1', 'position'=>60, 'notnull'=>1, 'visible'=>1, 'css'=>'width100', 'csslist'=>'tdoverflowmax100'), 'datep' => array('type'=>'datetime', 'label'=>'DateStart', 'enabled'=>'1', 'position'=>70, 'notnull'=>0, 'visible'=>1, 'showoncombobox'=>'2',), diff --git a/htdocs/eventorganization/class/conferenceorboothattendee.class.php b/htdocs/eventorganization/class/conferenceorboothattendee.class.php index be06f70979e..062de3ef8d7 100644 --- a/htdocs/eventorganization/class/conferenceorboothattendee.class.php +++ b/htdocs/eventorganization/class/conferenceorboothattendee.class.php @@ -108,7 +108,7 @@ class ConferenceOrBoothAttendee extends CommonObject 'email' => array('type'=>'mail', 'label'=>'EmailAttendee', 'enabled'=>'1', 'position'=>30, 'notnull'=>1, 'visible'=>1, 'index'=>1, 'autofocusoncreate'=>1, 'searchall'=>1), 'firstname' => array('type'=>'varchar(100)', 'label'=>'Firstname', 'enabled'=>'1', 'position'=>31, 'notnull'=>0, 'visible'=>1, 'index'=>1, 'searchall'=>1), 'lastname' => array('type'=>'varchar(100)', 'label'=>'Lastname', 'enabled'=>'1', 'position'=>32, 'notnull'=>0, 'visible'=>1, 'index'=>1, 'searchall'=>1), - 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status = 1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'enabled'=>'$conf->societe->enabled', 'position'=>40, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'help'=>"OrganizationEventLinkToThirdParty", 'picto'=>'company', 'css'=>'tdoverflowmax150 maxwidth500'), + 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:((status:=:1) AND (entity:IN:__SHARED_ENTITIES__))', 'label'=>'ThirdParty', 'enabled'=>'$conf->societe->enabled', 'position'=>40, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'help'=>"OrganizationEventLinkToThirdParty", 'picto'=>'company', 'css'=>'tdoverflowmax150 maxwidth500'), 'email_company' => array('type'=>'mail', 'label'=>'EmailCompany', 'enabled'=>'1', 'position'=>41, 'notnull'=>0, 'visible'=>-2, 'searchall'=>1), 'date_subscription' => array('type'=>'datetime', 'label'=>'DateOfRegistration', 'enabled'=>'1', 'position'=>56, 'notnull'=>1, 'visible'=>1, 'showoncombobox'=>'1',), 'fk_invoice' => array('type'=>'integer:Facture:compta/facture/class/facture.class.php', 'label'=>'Invoice', 'enabled'=>'$conf->facture->enabled', 'position'=>57, 'notnull'=>0, 'visible'=>-1, 'index'=>0, 'picto'=>'bill', 'css'=>'tdoverflowmax150 maxwidth500'), diff --git a/htdocs/expedition/class/api_shipments.class.php b/htdocs/expedition/class/api_shipments.class.php index 357683ef35a..fea57fbea10 100644 --- a/htdocs/expedition/class/api_shipments.class.php +++ b/htdocs/expedition/class/api_shipments.class.php @@ -145,11 +145,10 @@ class Shipments extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/expensereport/class/api_expensereports.class.php b/htdocs/expensereport/class/api_expensereports.class.php index 876b08f18f0..c3bfeb2264d 100644 --- a/htdocs/expensereport/class/api_expensereports.class.php +++ b/htdocs/expensereport/class/api_expensereports.class.php @@ -118,11 +118,10 @@ class ExpenseReports extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/fichinter/class/api_interventions.class.php b/htdocs/fichinter/class/api_interventions.class.php index f96dc3d6aa7..4b97d6e21ad 100644 --- a/htdocs/fichinter/class/api_interventions.class.php +++ b/htdocs/fichinter/class/api_interventions.class.php @@ -152,11 +152,10 @@ class Interventions extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php index 376e14c277f..cc6feb22f1c 100644 --- a/htdocs/fichinter/class/fichinter.class.php +++ b/htdocs/fichinter/class/fichinter.class.php @@ -39,7 +39,7 @@ class Fichinter extends CommonObject public $fields = array( 'rowid' =>array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>10), 'fk_soc' =>array('type'=>'integer:Societe:societe/class/societe.class.php', 'label'=>'ThirdParty', 'enabled'=>'$conf->societe->enabled', 'visible'=>-1, 'notnull'=>1, 'position'=>15), - 'fk_projet' =>array('type'=>'integer:Project:projet/class/project.class.php:1:fk_statut=1', 'label'=>'Fk projet', 'enabled'=>'isModEnabled("project")', 'visible'=>-1, 'position'=>20), + 'fk_projet' =>array('type'=>'integer:Project:projet/class/project.class.php:1:(fk_statut:=:1)', 'label'=>'Fk projet', 'enabled'=>'isModEnabled("project")', 'visible'=>-1, 'position'=>20), 'fk_contrat' =>array('type'=>'integer', 'label'=>'Fk contrat', 'enabled'=>'$conf->contrat->enabled', 'visible'=>-1, 'position'=>25), 'ref' =>array('type'=>'varchar(30)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'showoncombobox'=>1, 'position'=>30), 'ref_ext' =>array('type'=>'varchar(255)', 'label'=>'Ref ext', 'enabled'=>1, 'visible'=>0, 'position'=>35), diff --git a/htdocs/fourn/class/api_supplier_invoices.class.php b/htdocs/fourn/class/api_supplier_invoices.class.php index 5cc3e5592a2..02bed2c5e0a 100644 --- a/htdocs/fourn/class/api_supplier_invoices.class.php +++ b/htdocs/fourn/class/api_supplier_invoices.class.php @@ -160,11 +160,10 @@ class SupplierInvoices extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/fourn/class/api_supplier_orders.class.php b/htdocs/fourn/class/api_supplier_orders.class.php index d55a398dbd6..4ad1f951883 100644 --- a/htdocs/fourn/class/api_supplier_orders.class.php +++ b/htdocs/fourn/class/api_supplier_orders.class.php @@ -176,11 +176,10 @@ class SupplierOrders extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index feb2466078d..2cf0401d6eb 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -219,7 +219,7 @@ class CommandeFournisseur extends CommonOrder 'ref' =>array('type'=>'varchar(255)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'showoncombobox'=>1, 'position'=>25, 'searchall'=>1), 'ref_ext' =>array('type'=>'varchar(255)', 'label'=>'Ref ext', 'enabled'=>1, 'visible'=>0, 'position'=>35), 'ref_supplier' =>array('type'=>'varchar(255)', 'label'=>'RefOrderSupplierShort', 'enabled'=>1, 'visible'=>1, 'position'=>40, 'searchall'=>1), - 'fk_projet' =>array('type'=>'integer:Project:projet/class/project.class.php:1:fk_statut=1', 'label'=>'Project', 'enabled'=>"isModEnabled('project')", 'visible'=>-1, 'position'=>45), + 'fk_projet' =>array('type'=>'integer:Project:projet/class/project.class.php:1:(fk_statut:=:1)', 'label'=>'Project', 'enabled'=>"isModEnabled('project')", 'visible'=>-1, 'position'=>45), 'date_valid' =>array('type'=>'datetime', 'label'=>'DateValidation', 'enabled'=>1, 'visible'=>-1, 'position'=>60), 'date_approve' =>array('type'=>'datetime', 'label'=>'DateApprove', 'enabled'=>1, 'visible'=>-1, 'position'=>62), 'date_approve2' =>array('type'=>'datetime', 'label'=>'DateApprove2', 'enabled'=>1, 'visible'=>3, 'position'=>64), diff --git a/htdocs/knowledgemanagement/class/api_knowledgemanagement.class.php b/htdocs/knowledgemanagement/class/api_knowledgemanagement.class.php index 8232287b23b..6d5c15c0dc6 100644 --- a/htdocs/knowledgemanagement/class/api_knowledgemanagement.class.php +++ b/htdocs/knowledgemanagement/class/api_knowledgemanagement.class.php @@ -199,11 +199,10 @@ class KnowledgeManagement extends DolibarrApi } if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/modulebuilder/template/class/api_mymodule.class.php b/htdocs/modulebuilder/template/class/api_mymodule.class.php index ce92ef5ea8e..fdb56ff3c67 100644 --- a/htdocs/modulebuilder/template/class/api_mymodule.class.php +++ b/htdocs/modulebuilder/template/class/api_mymodule.class.php @@ -156,11 +156,10 @@ class MyModuleApi extends DolibarrApi } if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/modulebuilder/template/class/myobject.class.php b/htdocs/modulebuilder/template/class/myobject.class.php index 14b8fc6c09c..f309ef346c5 100644 --- a/htdocs/modulebuilder/template/class/myobject.class.php +++ b/htdocs/modulebuilder/template/class/myobject.class.php @@ -119,7 +119,7 @@ class MyObject extends CommonObject 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'searchall'=>1, 'css'=>'minwidth300', 'cssview'=>'wordbreak', 'help'=>'Help text', 'showoncombobox'=>2, 'validate'=>1, 'alwayseditable'=>1), 'amount' => array('type'=>'price', 'label'=>'Amount', 'enabled'=>1, 'visible'=>1, 'default'=>'null', 'position'=>40, 'searchall'=>0, 'isameasure'=>1, 'help'=>'Help text for amount', 'validate'=>1), 'qty' => array('type'=>'real', 'label'=>'Qty', 'enabled'=>1, 'visible'=>1, 'default'=>'0', 'position'=>45, 'searchall'=>0, 'isameasure'=>1, 'help'=>'Help text for quantity', 'css'=>'maxwidth75imp', 'validate'=>1), - 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'picto'=>'company', 'label'=>'ThirdParty', 'visible'=> 1, 'enabled'=>'$conf->societe->enabled', 'position'=>50, 'notnull'=>-1, 'index'=>1, 'help'=>'OrganizationEventLinkToThirdParty', 'validate'=>1, 'css'=>'maxwidth500 widthcentpercentminusxx', 'csslist'=>'tdoverflowmax150'), + 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:((status:=:1) AND (entity:IN:__SHARED_ENTITIES__))', 'picto'=>'company', 'label'=>'ThirdParty', 'visible'=> 1, 'enabled'=>'$conf->societe->enabled', 'position'=>50, 'notnull'=>-1, 'index'=>1, 'help'=>'OrganizationEventLinkToThirdParty', 'validate'=>1, 'css'=>'maxwidth500 widthcentpercentminusxx', 'csslist'=>'tdoverflowmax150'), 'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1', 'label'=>'Project', 'picto'=>'project', 'enabled'=>'$conf->project->enabled', 'visible'=>-1, 'position'=>52, 'notnull'=>-1, 'index'=>1, 'validate'=>1, 'css'=>'maxwidth500 widthcentpercentminusxx', 'csslist'=>'tdoverflowmax150'), 'description' => array('type'=>'text', 'label'=>'Description', 'enabled'=>1, 'visible'=>3, 'position'=>60, 'validate'=>1), 'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>61, 'validate'=>1, 'cssview'=>'wordbreak'), diff --git a/htdocs/mrp/class/api_mos.class.php b/htdocs/mrp/class/api_mos.class.php index b747e5eafce..2312f4bd636 100644 --- a/htdocs/mrp/class/api_mos.class.php +++ b/htdocs/mrp/class/api_mos.class.php @@ -148,11 +148,10 @@ class Mos extends DolibarrApi } if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php index 68523ace9da..9c27a21b1f5 100644 --- a/htdocs/mrp/class/mo.class.php +++ b/htdocs/mrp/class/mo.class.php @@ -101,13 +101,13 @@ class Mo extends CommonObject 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-2, 'position'=>1, 'notnull'=>1, 'index'=>1, 'comment'=>"Id",), 'entity' => array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'position'=>5, 'notnull'=>1, 'default'=>'1', 'index'=>1), 'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>4, 'position'=>10, 'notnull'=>1, 'default'=>'(PROV)', 'index'=>1, 'searchall'=>1, 'comment'=>"Reference of object", 'showoncombobox'=>'1', 'noteditable'=>1), - 'fk_bom' => array('type'=>'integer:Bom:bom/class/bom.class.php:0:t.status=1', 'filter'=>'active=1', 'label'=>'BOM', 'enabled'=>'$conf->bom->enabled', 'visible'=>1, 'position'=>33, 'notnull'=>-1, 'index'=>1, 'comment'=>"Original BOM", 'css'=>'minwidth100 maxwidth300', 'csslist'=>'nowraponall', 'picto'=>'bom'), + 'fk_bom' => array('type'=>'integer:Bom:bom/class/bom.class.php:0:(t.status:=:1)', 'filter'=>'active=1', 'label'=>'BOM', 'enabled'=>'$conf->bom->enabled', 'visible'=>1, 'position'=>33, 'notnull'=>-1, 'index'=>1, 'comment'=>"Original BOM", 'css'=>'minwidth100 maxwidth300', 'csslist'=>'nowraponall', 'picto'=>'bom'), 'mrptype' => array('type'=>'integer', 'label'=>'Type', 'enabled'=>1, 'visible'=>1, 'position'=>34, 'notnull'=>1, 'default'=>'0', 'arrayofkeyval'=>array(0=>'Manufacturing', 1=>'Disassemble'), 'css'=>'minwidth150', 'csslist'=>'minwidth150 center'), 'fk_product' => array('type'=>'integer:Product:product/class/product.class.php:0', 'label'=>'Product', 'enabled'=>'$conf->product->enabled', 'visible'=>1, 'position'=>35, 'notnull'=>1, 'index'=>1, 'comment'=>"Product to produce", 'css'=>'maxwidth300', 'csslist'=>'tdoverflowmax100', 'picto'=>'product'), 'qty' => array('type'=>'real', 'label'=>'QtyToProduce', 'enabled'=>1, 'visible'=>1, 'position'=>40, 'notnull'=>1, 'comment'=>"Qty to produce", 'css'=>'width75', 'default'=>1, 'isameasure'=>1), 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>42, 'notnull'=>-1, 'searchall'=>1, 'showoncombobox'=>'2', 'css'=>'maxwidth300', 'csslist'=>'tdoverflowmax200', 'alwayseditable'=>1), 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1', 'label'=>'ThirdParty', 'picto'=>'company', 'enabled'=>'$conf->societe->enabled', 'visible'=>-1, 'position'=>50, 'notnull'=>-1, 'index'=>1, 'css'=>'maxwidth400', 'csslist'=>'tdoverflowmax150'), - 'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1:fk_statut=1', 'label'=>'Project', 'picto'=>'project', 'enabled'=>'$conf->project->enabled', 'visible'=>-1, 'position'=>51, 'notnull'=>-1, 'index'=>1, 'css'=>'minwidth200 maxwidth400', 'csslist'=>'tdoverflowmax100'), + 'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1:(fk_statut:=:1)', 'label'=>'Project', 'picto'=>'project', 'enabled'=>'$conf->project->enabled', 'visible'=>-1, 'position'=>51, 'notnull'=>-1, 'index'=>1, 'css'=>'minwidth200 maxwidth400', 'csslist'=>'tdoverflowmax100'), 'fk_warehouse' => array('type'=>'integer:Entrepot:product/stock/class/entrepot.class.php:0', 'label'=>'WarehouseForProduction', 'picto'=>'stock', 'enabled'=>'$conf->stock->enabled', 'visible'=>1, 'position'=>52, 'css'=>'maxwidth400', 'csslist'=>'tdoverflowmax200'), 'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>61, 'notnull'=>-1,), 'note_private' => array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>62, 'notnull'=>-1,), diff --git a/htdocs/partnership/class/api_partnership.class.php b/htdocs/partnership/class/api_partnership.class.php index 1e1c7ca80fe..13bc447c51d 100644 --- a/htdocs/partnership/class/api_partnership.class.php +++ b/htdocs/partnership/class/api_partnership.class.php @@ -156,11 +156,10 @@ class PartnershipApi extends DolibarrApi } if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/partnership/class/partnership.class.php b/htdocs/partnership/class/partnership.class.php index fab8b1ce32a..15d75f20cb3 100644 --- a/htdocs/partnership/class/partnership.class.php +++ b/htdocs/partnership/class/partnership.class.php @@ -104,8 +104,8 @@ class Partnership extends CommonObject 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>0, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"), 'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>'1', 'position'=>10, 'notnull'=>1, 'visible'=>4, 'noteditable'=>'1', 'default'=>'(PROV)', 'index'=>1, 'searchall'=>1, 'showoncombobox'=>'1', 'comment'=>"Reference of object"), 'entity' => array('type'=>'integer', 'label'=>'Entity', 'enabled'=>'1', 'position'=>15, 'notnull'=>1, 'visible'=>-2, 'default'=>'1', 'index'=>1,), - 'fk_type' => array('type'=>'integer:PartnershipType:partnership/class/partnership_type.class.php:0:active=1', 'label'=>'Type', 'enabled'=>'1', 'position'=>20, 'notnull'=>1, 'visible'=>1, 'csslist'=>'tdoverflowmax100'), - 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'picto'=>'company', 'enabled'=>'1', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax125',), + 'fk_type' => array('type'=>'integer:PartnershipType:partnership/class/partnership_type.class.php:0:(active:=:1)', 'label'=>'Type', 'enabled'=>'1', 'position'=>20, 'notnull'=>1, 'visible'=>1, 'csslist'=>'tdoverflowmax100'), + 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:((status:=:1) AND (entity:IN:__SHARED_ENTITIES__))', 'label'=>'ThirdParty', 'picto'=>'company', 'enabled'=>'1', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax125',), 'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>'1', 'position'=>61, 'notnull'=>0, 'visible'=>0,), 'note_private' => array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>'1', 'position'=>62, 'notnull'=>0, 'visible'=>0,), 'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>'1', 'position'=>500, 'notnull'=>1, 'visible'=>-2,), @@ -197,7 +197,7 @@ class Partnership extends CommonObject if (getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR') == 'member') { $this->fields['fk_member'] = array('type'=>'integer:Adherent:adherents/class/adherent.class.php:1', 'label'=>'Member', 'enabled'=>'1', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'picto'=>'member', 'csslist'=>'tdoverflowmax150'); } else { - $this->fields['fk_soc'] = array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'enabled'=>'1', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'picto'=>'company', 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax150'); + $this->fields['fk_soc'] = array('type'=>'integer:Societe:societe/class/societe.class.php:1:((status:=:1) AND (entity:IN:__SHARED_ENTITIES__))', 'label'=>'ThirdParty', 'enabled'=>'1', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'picto'=>'company', 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax150'); } if (empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && isset($this->fields['rowid']) && !empty($this->fields['ref'])) { diff --git a/htdocs/product/class/api_products.class.php b/htdocs/product/class/api_products.class.php index 7a10293d7e4..ac666824f0e 100644 --- a/htdocs/product/class/api_products.class.php +++ b/htdocs/product/class/api_products.class.php @@ -222,12 +222,10 @@ class Products extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - //var_dump($sqlfilters);exit; - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; // We must accept datc:<:2020-01-01 10:10:10 - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } //this query will return total products with the filters given @@ -905,11 +903,10 @@ class Products extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); @@ -1033,11 +1030,10 @@ class Products extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/product/stock/class/api_stockmovements.class.php b/htdocs/product/stock/class/api_stockmovements.class.php index 544485060af..942cf6fe101 100644 --- a/htdocs/product/stock/class/api_stockmovements.class.php +++ b/htdocs/product/stock/class/api_stockmovements.class.php @@ -110,11 +110,10 @@ class StockMovements extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/product/stock/class/api_warehouses.class.php b/htdocs/product/stock/class/api_warehouses.class.php index 0cf0e57fe3a..a0646598d96 100644 --- a/htdocs/product/stock/class/api_warehouses.class.php +++ b/htdocs/product/stock/class/api_warehouses.class.php @@ -117,11 +117,10 @@ class Warehouses extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/product/stock/class/entrepot.class.php b/htdocs/product/stock/class/entrepot.class.php index 8393b081a90..55e365f07da 100644 --- a/htdocs/product/stock/class/entrepot.class.php +++ b/htdocs/product/stock/class/entrepot.class.php @@ -127,8 +127,8 @@ class Entrepot extends CommonObject 'ref' =>array('type'=>'varchar(255)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'showoncombobox'=>1, 'position'=>25, 'searchall'=>1), 'description' =>array('type'=>'text', 'label'=>'Description', 'enabled'=>1, 'visible'=>-2, 'position'=>35, 'searchall'=>1), 'lieu' =>array('type'=>'varchar(64)', 'label'=>'LocationSummary', 'enabled'=>1, 'visible'=>1, 'position'=>40, 'showoncombobox'=>2, 'searchall'=>1), - 'fk_parent' =>array('type'=>'integer:Entrepot:product/stock/class/entrepot.class.php:1:statut=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ParentWarehouse', 'enabled'=>1, 'visible'=>-2, 'position'=>41), - 'fk_project' =>array('type'=>'integer:Project:projet/class/project.class.php:1:fk_statut=1', 'label'=>'Project', 'enabled'=>'$conf->project->enabled', 'visible'=>-1, 'position'=>25), + 'fk_parent' =>array('type'=>'integer:Entrepot:product/stock/class/entrepot.class.php:1:((status:=:1) AND (entity:IN:__SHARED_ENTITIES__))', 'label'=>'ParentWarehouse', 'enabled'=>1, 'visible'=>-2, 'position'=>41), + 'fk_project' =>array('type'=>'integer:Project:projet/class/project.class.php:1:(fk_statut:=:1)', 'label'=>'Project', 'enabled'=>'$conf->project->enabled', 'visible'=>-1, 'position'=>25), 'address' =>array('type'=>'varchar(255)', 'label'=>'Address', 'enabled'=>1, 'visible'=>-2, 'position'=>45, 'searchall'=>1), 'zip' =>array('type'=>'varchar(10)', 'label'=>'Zip', 'enabled'=>1, 'visible'=>-2, 'position'=>50, 'searchall'=>1), 'town' =>array('type'=>'varchar(50)', 'label'=>'Town', 'enabled'=>1, 'visible'=>-2, 'position'=>55, 'searchall'=>1), diff --git a/htdocs/product/stock/class/mouvementstock.class.php b/htdocs/product/stock/class/mouvementstock.class.php index ac5d612394b..55be0eaba3c 100644 --- a/htdocs/product/stock/class/mouvementstock.class.php +++ b/htdocs/product/stock/class/mouvementstock.class.php @@ -119,12 +119,12 @@ class MouvementStock extends CommonObject 'fk_origin' =>array('type'=>'integer', 'label'=>'Fk origin', 'enabled'=>1, 'visible'=>-1, 'position'=>60), 'origintype' =>array('type'=>'varchar(32)', 'label'=>'Origintype', 'enabled'=>1, 'visible'=>-1, 'position'=>65), 'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>1, 'visible'=>0, 'position'=>70), - 'fk_projet' =>array('type'=>'integer:Project:projet/class/project.class.php:1:fk_statut=1', 'label'=>'Project', 'enabled'=>'$conf->project->enabled', 'visible'=>-1, 'notnull'=>1, 'position'=>75), + 'fk_projet' =>array('type'=>'integer:Project:projet/class/project.class.php:1:(fk_statut:=:1)', 'label'=>'Project', 'enabled'=>'$conf->project->enabled', 'visible'=>-1, 'notnull'=>1, 'position'=>75), 'inventorycode' =>array('type'=>'varchar(128)', 'label'=>'InventoryCode', 'enabled'=>1, 'visible'=>-1, 'position'=>80), 'batch' =>array('type'=>'varchar(30)', 'label'=>'Batch', 'enabled'=>1, 'visible'=>-1, 'position'=>85), 'eatby' =>array('type'=>'date', 'label'=>'Eatby', 'enabled'=>1, 'visible'=>-1, 'position'=>90), 'sellby' =>array('type'=>'date', 'label'=>'Sellby', 'enabled'=>1, 'visible'=>-1, 'position'=>95), - 'fk_project' =>array('type'=>'integer:Project:projet/class/project.class.php:1:fk_statut=1', 'label'=>'Fk project', 'enabled'=>1, 'visible'=>-1, 'position'=>100), + 'fk_project' =>array('type'=>'integer:Project:projet/class/project.class.php:1:(fk_statut:=:1)', 'label'=>'Fk project', 'enabled'=>1, 'visible'=>-1, 'position'=>100), ); diff --git a/htdocs/product/stock/stocktransfer/class/stocktransfer.class.php b/htdocs/product/stock/stocktransfer/class/stocktransfer.class.php index 0711815da15..441c420bf08 100644 --- a/htdocs/product/stock/stocktransfer/class/stocktransfer.class.php +++ b/htdocs/product/stock/stocktransfer/class/stocktransfer.class.php @@ -123,7 +123,7 @@ class StockTransfer extends CommonObject 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>'1', 'position'=>30, 'notnull'=>0, 'visible'=>1, 'searchall'=>1, 'css'=>'minwidth200'/*, 'help'=>"Help text"*/, 'showoncombobox'=>'1',), 'description' => array('type'=>'text', 'label'=>'Description', 'enabled'=>'1', 'position'=>31, 'notnull'=>0, 'visible'=>3,), 'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1', 'label'=>'Project', 'enabled'=>'$conf->project->enabled', 'position'=>32, 'notnull'=>-1, 'visible'=>-1, 'index'=>1,), - 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'enabled'=>'1', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1/*, 'help'=>"LinkToThirdparty"*/,), + 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:((status:=:1) AND (entity:IN:__SHARED_ENTITIES__))', 'label'=>'ThirdParty', 'enabled'=>'1', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1/*, 'help'=>"LinkToThirdparty"*/,), 'fk_warehouse_source' => array('type'=>'integer:Entrepot:product/stock/class/entrepot.class.php', 'label'=>'Entrepôt source', 'enabled'=>'1', 'position'=>50, 'notnull'=>0, 'visible'=>1, 'help'=>'HelpWarehouseStockTransferSource',), 'fk_warehouse_destination' => array('type'=>'integer:Entrepot:product/stock/class/entrepot.class.php', 'label'=>'Entrepôt de destination', 'enabled'=>'1', 'position'=>51, 'notnull'=>0, 'visible'=>1, 'help'=>'HelpWarehouseStockTransferDestination'), 'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>'1', 'position'=>61, 'notnull'=>0, 'visible'=>0,), diff --git a/htdocs/projet/class/api_projects.class.php b/htdocs/projet/class/api_projects.class.php index 9ed1bbf1441..f5c23f4b040 100644 --- a/htdocs/projet/class/api_projects.class.php +++ b/htdocs/projet/class/api_projects.class.php @@ -152,11 +152,10 @@ class Projects extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/projet/class/api_tasks.class.php b/htdocs/projet/class/api_tasks.class.php index cd232061bc4..64690f90950 100644 --- a/htdocs/projet/class/api_tasks.class.php +++ b/htdocs/projet/class/api_tasks.class.php @@ -150,11 +150,10 @@ class Tasks extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/reception/class/api_receptions.class.php b/htdocs/reception/class/api_receptions.class.php index 473650161e2..55e3fa59165 100644 --- a/htdocs/reception/class/api_receptions.class.php +++ b/htdocs/reception/class/api_receptions.class.php @@ -145,11 +145,10 @@ class Receptions extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/recruitment/class/api_recruitment.class.php b/htdocs/recruitment/class/api_recruitment.class.php index cf4fa7a143e..3ffa81626fe 100644 --- a/htdocs/recruitment/class/api_recruitment.class.php +++ b/htdocs/recruitment/class/api_recruitment.class.php @@ -194,11 +194,10 @@ class Recruitment extends DolibarrApi } if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); @@ -302,11 +301,10 @@ class Recruitment extends DolibarrApi } if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/recruitment/class/recruitmentjobposition.class.php b/htdocs/recruitment/class/recruitmentjobposition.class.php index 6b3fcf7eeb8..e4f6a9acb8a 100644 --- a/htdocs/recruitment/class/recruitmentjobposition.class.php +++ b/htdocs/recruitment/class/recruitmentjobposition.class.php @@ -120,11 +120,11 @@ class RecruitmentJobPosition extends CommonObject 'label' => array('type'=>'varchar(255)', 'label'=>'JobLabel', 'enabled'=>'1', 'position'=>30, 'notnull'=>1, 'visible'=>1, 'searchall'=>1, 'css'=>'minwidth500', 'csslist'=>'tdoverflowmax300', 'showoncombobox'=>'2', 'autofocusoncreate'=>1), 'qty' => array('type'=>'integer', 'label'=>'NbOfEmployeesExpected', 'enabled'=>'1', 'position'=>45, 'notnull'=>1, 'visible'=>1, 'default'=>'1', 'isameasure'=>'1', 'css'=>'maxwidth75imp'), 'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1', 'label'=>'Project', 'enabled'=>'$conf->project->enabled', 'position'=>52, 'notnull'=>-1, 'visible'=>-1, 'index'=>1, 'css'=>'maxwidth500', 'picto'=>'project'), - 'fk_user_recruiter' => array('type'=>'integer:User:user/class/user.class.php:status=1', 'label'=>'ResponsibleOfRecruitement', 'enabled'=>'1', 'position'=>54, 'notnull'=>1, 'visible'=>1, 'foreignkey'=>'user.rowid', 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax150', 'picto'=>'user'), + 'fk_user_recruiter' => array('type'=>'integer:User:user/class/user.class.php:1:(statut:=:1)', 'label'=>'ResponsibleOfRecruitement', 'enabled'=>'1', 'position'=>54, 'notnull'=>1, 'visible'=>1, 'foreignkey'=>'user.rowid', 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax150', 'picto'=>'user'), 'email_recruiter' => array('type'=>'varchar(255)', 'label'=>'EmailRecruiter', 'enabled'=>'1', 'position'=>54, 'notnull'=>0, 'visible'=>-1, 'help'=>'ToUseAGenericEmail', 'picto'=>'email'), - 'fk_user_supervisor' => array('type'=>'integer:User:user/class/user.class.php:t.statut = 1', 'label'=>'FutureManager', 'enabled'=>'1', 'position'=>55, 'notnull'=>0, 'visible'=>-1, 'foreignkey'=>'user.rowid', 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax150', 'picto'=>'user'), + 'fk_user_supervisor' => array('type'=>'integer:User:user/class/user.class.php:1:(statut:=:1)', 'label'=>'FutureManager', 'enabled'=>'1', 'position'=>55, 'notnull'=>0, 'visible'=>-1, 'foreignkey'=>'user.rowid', 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax150', 'picto'=>'user'), 'fk_establishment' => array('type'=>'integer:Establishment:hrm/class/establishment.class.php', 'label'=>'Establishment', 'enabled'=>'$conf->hrm->enabled', 'position'=>56, 'notnull'=>0, 'visible'=>-1, 'foreignkey'=>'establishment.rowid',), - 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'WorkPlace', 'enabled'=>'$conf->societe->enabled', 'position'=>57, 'notnull'=>-1, 'visible'=>-1, 'css'=>'maxwidth500', 'index'=>1, 'help'=>"IfJobIsLocatedAtAPartner", 'picto'=>'company'), + 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:((status:=:1) AND (entity:IN:__SHARED_ENTITIES__))', 'label'=>'WorkPlace', 'enabled'=>'$conf->societe->enabled', 'position'=>57, 'notnull'=>-1, 'visible'=>-1, 'css'=>'maxwidth500', 'index'=>1, 'help'=>"IfJobIsLocatedAtAPartner", 'picto'=>'company'), 'date_planned' => array('type'=>'date', 'label'=>'DateExpected', 'enabled'=>'1', 'position'=>60, 'notnull'=>0, 'visible'=>1,), 'remuneration_suggested' => array('type'=>'varchar(255)', 'label'=>'Remuneration', 'enabled'=>'1', 'position'=>62, 'notnull'=>0, 'visible'=>1,), 'description' => array('type'=>'html', 'label'=>'Description', 'enabled'=>'1', 'position'=>65, 'notnull'=>0, 'visible'=>3,), diff --git a/htdocs/societe/class/api_contacts.class.php b/htdocs/societe/class/api_contacts.class.php index 68bba46a3cb..88e9398f5fa 100644 --- a/htdocs/societe/class/api_contacts.class.php +++ b/htdocs/societe/class/api_contacts.class.php @@ -225,11 +225,10 @@ class Contacts extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/societe/class/api_thirdparties.class.php b/htdocs/societe/class/api_thirdparties.class.php index db7eec3096e..ff958729d6a 100644 --- a/htdocs/societe/class/api_thirdparties.class.php +++ b/htdocs/societe/class/api_thirdparties.class.php @@ -203,11 +203,10 @@ class Thirdparties extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/supplier_proposal/class/api_supplier_proposals.class.php b/htdocs/supplier_proposal/class/api_supplier_proposals.class.php index f2036edda88..3bf9cf3f982 100644 --- a/htdocs/supplier_proposal/class/api_supplier_proposals.class.php +++ b/htdocs/supplier_proposal/class/api_supplier_proposals.class.php @@ -140,11 +140,10 @@ class Supplierproposals extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/ticket/class/api_tickets.class.php b/htdocs/ticket/class/api_tickets.class.php index e7930569bdd..c27d9195683 100644 --- a/htdocs/ticket/class/api_tickets.class.php +++ b/htdocs/ticket/class/api_tickets.class.php @@ -251,11 +251,10 @@ class Tickets extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/user/class/api_users.class.php b/htdocs/user/class/api_users.class.php index 747d4ab3286..781de4d23cd 100644 --- a/htdocs/user/class/api_users.class.php +++ b/htdocs/user/class/api_users.class.php @@ -100,11 +100,10 @@ class Users extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); @@ -544,11 +543,10 @@ class Users extends DolibarrApi // Add sql filters if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/htdocs/zapier/class/api_zapier.class.php b/htdocs/zapier/class/api_zapier.class.php index 56ab923435d..3db40064473 100644 --- a/htdocs/zapier/class/api_zapier.class.php +++ b/htdocs/zapier/class/api_zapier.class.php @@ -198,11 +198,10 @@ class Zapier extends DolibarrApi } if ($sqlfilters) { $errormessage = ''; - if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + $sql .= forgeSQLFromUniversalSearchCriteria($sqlfilters, $errormessage); + if ($errormessage) { + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; - $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } $sql .= $this->db->order($sortfield, $sortorder); diff --git a/test/phpunit/FunctionsLibTest.php b/test/phpunit/FunctionsLibTest.php index 12c8683bb8f..d910a9f9d57 100644 --- a/test/phpunit/FunctionsLibTest.php +++ b/test/phpunit/FunctionsLibTest.php @@ -167,6 +167,34 @@ class FunctionsLibTest extends PHPUnit\Framework\TestCase print __METHOD__."\n"; } + + /** + * testDolForgeCriteriaCallback + * + * @return boolean + */ + public function testDolForgeCriteriaCallback() + { + global $conf, $langs; + + // An attempt for SQL injection + $filter='if(now()=sysdate()%2Csleep(6)%2C0)'; + $sql = forgeSQLFromUniversalSearchCriteria($filter); + $this->assertEquals($sql, '1 = 3'); + + // A real search string + $filter='(((statut:=:1) or (entity:in:__AAA__)) and (abc:<:2.0) and (abc:!=:1.23))'; + $sql = forgeSQLFromUniversalSearchCriteria($filter); + $this->assertEquals($sql, ' AND (((statut = 1 or entity IN (__AAA__)) and abc < 2 and abc = 1.23))'); + + $filter="(t.ref:like:'SO-%') or (t.date_creation:<:'20160101') or (t.date_creation:<:'2016-01-01 12:30:00') or (t.nature:is:NULL)"; + $sql = forgeSQLFromUniversalSearchCriteria($filter); + $this->assertEquals($sql, " AND (t.ref LIKE 'SO-%' or t.date_creation < '20160101' or t.date_creation < 0 or t.nature IS NULL)"); + + return true; + } + + /** * testDolClone * From 014aec72c22479ea92acedec0486b0a664e76415 Mon Sep 17 00:00:00 2001 From: Philippe GRAND Date: Sun, 26 Feb 2023 11:12:06 +0100 Subject: [PATCH 269/607] fix : Warning: Undefined array key height in /home/httpd/vhosts/aflac.fr/domains/dev.aflac.fr/httpdocs/core/lib/pdf.lib.php on line 2513 --- htdocs/core/lib/pdf.lib.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 206fbb7b1c4..97425c00465 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -2510,6 +2510,8 @@ function pdf_getSizeForImage($realpath) $maxheight = (empty($conf->global->MAIN_DOCUMENTS_WITH_PICTURE_HEIGHT) ? 32 : $conf->global->MAIN_DOCUMENTS_WITH_PICTURE_HEIGHT); include_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; $tmp = dol_getImageSize($realpath); + $width = 0; + $height = 0; if ($tmp['height']) { $width = (int) round($maxheight * $tmp['width'] / $tmp['height']); // I try to use maxheight if ($width > $maxwidth) { // Pb with maxheight, so i use maxwidth From 9f2c450953487606627a2efbf6eca60bef5230f4 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Sun, 26 Feb 2023 10:17:38 +0000 Subject: [PATCH 270/607] Fixing style errors. --- htdocs/core/lib/pdf.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 97425c00465..49e0672e462 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -2511,7 +2511,7 @@ function pdf_getSizeForImage($realpath) include_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; $tmp = dol_getImageSize($realpath); $width = 0; - $height = 0; + $height = 0; if ($tmp['height']) { $width = (int) round($maxheight * $tmp['width'] / $tmp['height']); // I try to use maxheight if ($width > $maxwidth) { // Pb with maxheight, so i use maxwidth From 32ba0acb320f21d192f315ebcc700f05e7e9cdb6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 26 Feb 2023 12:03:55 +0100 Subject: [PATCH 271/607] Fix navigation --- htdocs/comm/mailing/cibles.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/comm/mailing/cibles.php b/htdocs/comm/mailing/cibles.php index 106d6c3d12a..fae7df654b0 100644 --- a/htdocs/comm/mailing/cibles.php +++ b/htdocs/comm/mailing/cibles.php @@ -542,7 +542,7 @@ if ($object->fetch($id) >= 0) { $massactionbutton = ''; - print_barre_liste($langs->trans("MailSelectedRecipients"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $morehtmlcenter, $num, $nbtotalofrecords, 'generic', 0, '', '', $limit); + print_barre_liste($langs->trans("MailSelectedRecipients"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $morehtmlcenter, $num, $nbtotalofrecords, 'generic', 0, '', '', $limit, 0, 0, 1); print ''; From d97725173bcd4a18ed6190b4f82a0013492b5828 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 26 Feb 2023 12:45:13 +0100 Subject: [PATCH 272/607] Fix sql error --- htdocs/core/lib/functions.lib.php | 2 +- htdocs/partnership/partnership_card.php | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 835c81c7131..232cf479a1d 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -11546,7 +11546,7 @@ function forgeSQLFromUniversalSearchCriteria($filter, &$error = '') return '1 = 3'; // Bad syntax of the search string, we force a SQL not found } - return " AND (".preg_replace_callback('/'.$regexstring.'/', 'dolForgeCriteriaCallback', $filter).")"; + return " AND (".preg_replace_callback('/'.$regexstring.'/i', 'dolForgeCriteriaCallback', $filter).")"; } /** diff --git a/htdocs/partnership/partnership_card.php b/htdocs/partnership/partnership_card.php index 2cb57ee44aa..b544ad94fc7 100644 --- a/htdocs/partnership/partnership_card.php +++ b/htdocs/partnership/partnership_card.php @@ -564,9 +564,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print dolGetButtonAction('', $langs->trans('SendMail'), 'default', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=presend&token='.newToken().'&mode=init#formmailbeforetitle'); } - if ($object->status == $object::STATUS_DRAFT) { - print dolGetButtonAction('', $langs->trans('Modify'), 'default', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=edit&token='.newToken(), '', $permissiontoadd); - } + print dolGetButtonAction('', $langs->trans('Modify'), 'default', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=edit&token='.newToken(), '', $permissiontoadd); // Back to draft if ($object->status != $object::STATUS_DRAFT) { From ac410a45185163a9ece5e1266e4c9680c3bb2ef8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 26 Feb 2023 12:59:25 +0100 Subject: [PATCH 273/607] Fix missing url to check --- htdocs/partnership/class/partnership.class.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/partnership/class/partnership.class.php b/htdocs/partnership/class/partnership.class.php index 15d75f20cb3..013323f3193 100644 --- a/htdocs/partnership/class/partnership.class.php +++ b/htdocs/partnership/class/partnership.class.php @@ -372,7 +372,7 @@ class Partnership extends CommonObject $sql = 'SELECT p.rowid, p.ref, p.fk_type, p.fk_soc, p.fk_member, p.status'; $sql .= ', p.entity, p.date_partnership_start, p.date_partnership_end, p.date_creation'; $sql .= ', p.fk_user_creat, p.tms, p.fk_user_modif, p.fk_user_modif'; - $sql .= ', p.note_private, p.note_public'; + $sql .= ', p.note_private, p.note_public, p.url_to_check'; $sql .= ', p.last_main_doc, p.count_last_url_check_error, p.last_check_backlink, p.reason_decline_or_cancel'; $sql .= ', p.import_key, p.model_pdf'; $sql .= ', pt.code as type_code, pt.label as type_label'; @@ -380,7 +380,7 @@ class Partnership extends CommonObject $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_partnership_type as pt ON p.fk_type = pt.rowid'; if ($id) { - $sql .= " WHERE p.rowid=".((int) $id); + $sql .= " WHERE p.rowid = ".((int) $id); } else { $sql .= " WHERE p.entity IN (0,".getEntity('partnership').")"; // Dont't use entity if you use rowid } @@ -427,6 +427,7 @@ class Partnership extends CommonObject $this->reason_decline_or_cancel = $obj->reason_decline_or_cancel; $this->import_key = $obj->import_key; $this->model_pdf = $obj->model_pdf; + $this->url_to_check = $obj->url_to_check; // Retrieve all extrafield // fetch optionals attributes and labels From bf544bef63f824c3bb2f022be2edd30315ce1542 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 26 Feb 2023 13:13:58 +0100 Subject: [PATCH 274/607] css --- htdocs/modulebuilder/template/myobject_list.php | 2 +- htdocs/partnership/partnership_list.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/modulebuilder/template/myobject_list.php b/htdocs/modulebuilder/template/myobject_list.php index 075813eaed9..abef03f283e 100644 --- a/htdocs/modulebuilder/template/myobject_list.php +++ b/htdocs/modulebuilder/template/myobject_list.php @@ -415,7 +415,7 @@ if ($num == 1 && !empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $ // Output page // -------------------------------------------------------------------- -llxHeader('', $title, $help_url, '', 0, 0, $morejs, $morecss, '', 'bodyforlist'); +llxHeader('', $title, $help_url, '', 0, 0, $morejs, $morecss, '', 'bodyforlist'); // Can use also classforhorizontalscrolloftabs instead of bodyforlist for no horizontal scroll // Example : Adding jquery code // print '\n',1,'2020-10-07 13:13:26',NULL,'2020-12-10 12:28:18',NULL,NULL,'other','en',NULL,'','',NULL,'','',0,NULL,NULL),(10,5,'header','','Header and Top Menu','Header with menu','','\n\n\n\n
\n
\n
\n \n
\n
\n
\n',1,'2020-10-07 13:13:26',NULL,'2020-12-10 12:28:18',NULL,NULL,'other','en',NULL,'','',NULL,'','',0,NULL,NULL),(11,5,'home','','Home','Welcome','','
\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
Boost your business\n
\n
\n

We provide powerful solutions for all businesses

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
 Best prices on the market \n
\n
\n

Our optimized processes allows us to provide you very competitive prices

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n

Our sales representative are also technicians.

\n
\n
\n
\n
\n
\n \n
\n

Take a look at our offers...

\n
\n
\n
\n
\n
\n \n
\n

Our customer-supplier relationship is very appreciated by our customers

\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n

We continue to follow and assist you after the sale. Contact us at any time.

\n
\n
\n
\n
\n
\n\n\n \n
\n
\n

Looking for

\n

a high quality service?

\n

With a lot of experience, hiring us is a security for your business!

\n
\n
\n
11
\n
Years of Experience
\n
\n
\n
\n query($sql); $obj = $db->fetch_object($resql); print $obj->nb; ?>\n
\n
Experts
\n
\n
\n
\n query($sql); $obj = $db->fetch_object($resql); print $obj->nb; ?>\n
\n
Trusted Clients
\n
\n
\n
\n \n
\n
\n
\n\n \n \n \n
\n
\n
\n \n
\n \n
\n \n
\n

our plans

\n\n \n
\n \n
\n
\n
\n
FREE
\n
The best choice for personal use
\n
The service 1 for free
\n
\n 0/ month\n
\n
\n Available features are : \n
    \n
  • \n \n Service 1 \n
  • \n
\n
\n
\n Subcribe\n
\n
\n
\n \n \n \n
\n
\n
\n
STARTER
\n
For small companiess
\n
The service 1 and product 1 at low price
\n
\n 29/ month\n
\n
\n Available features are : \n
    \n
  • \n \n Service 1\n
  • \n
  • \n \n Product 1\n
  • \n
\n
\n
\n Subscribe\n
\n
\n
\n \n \n \n
\n
\n
\n
PREMIUM
\n
For large companies
\n
The full option package for a one shot price\n
\n
\n 2499\n
\n
\n Available features are :\n
    \n
  • \n \n Service 1
  • \n
  • \n \n Service 2
  • \n
  • \n \n Product 1
  • \n
\n
\n
\n Buy\n
\n
\n
\n \n
\n \n
\n \n
\n \n
\n \n \n
\n
\n
\n \n \n \n
\n
\n

our team

\n
\n
\n \n
\n
\n
\n
\n\n\n \n
\n
\n
\n
\n
\n

Request a callback

\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n
\n

successful cases

\n
\n
\n
\n
\n
\"\"\n
\n
\n
\n
\"\"\n
\n
\n
\n
\"\"\n
\n
\n
\n
\"\"\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n Albert Einstein\n
\n
Scientist, www.emc2.org
\n
\n
\n
\n
\n
-20%
\n
Expenses
\n
\n
\n
\n
\n
\n
\n \n They did everything, with almost no time or effort for me. The best part was that I could trust their team to represent our company professionally with our clients.\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n Pierre Curie\n
\n
CEO “Cyclonic”
\n
\n
\n
\n
\n
-30%
\n
Expenses
\n
\n
\n
\n
\n
\n
\n \n Their course gave me the confidence to implement new techniques in my work. I learn “how” to write – “what” and “why” also became much clearer.\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n Marie Curie\n
\n
CTO \"Cyclonic\"
\n
\n
\n
\n
\n
+22%
\n
Turnover
\n
\n
\n
\n
\n
\n
\n \n We were skeptical to work with a consultant to optimize our sales emails, but they were highly recommended by many other startups we knew. They helped us to reach our objective of 20% turnover increase, in 4 monthes.\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n John Doe\n
\n
Sale representative
\n
\n
\n
\n
\n
+40%
\n
Quotes
\n
\n
\n
\n
\n
\n
\n \n Their work on our website and Internet marketing has made a significant different to our business. We’ve seen a +40% increase in quote requests from our website.\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n\n \n
\n
\n

Latest News

\n \n
\n
\n\n\n \n\n\n
\n',1,'2020-10-07 13:13:26',NULL,'2020-12-10 12:28:18',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(12,5,'our-team','','Our team','Our team','team','
\n\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
Our team\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n

\n

The crew...




\n query($sql);\n if (! $resql) dol_print_error($db);\n while ($obj = $db->fetch_object($resql))\n {\n $arrayofusers[]=$obj->rowid;\n }\n \n print \'
\';\n foreach($arrayofusers as $id)\n {\n $fuser->fetch($id);\n\n print \'
\';\n print \'
\';\n print \'
\';\n if ($fuser->photo) print Form::showphoto(\'userphoto\', $fuser, 100, 0, 0, \'photowithmargin\', \'\', 0);\n //print \'photo.\'\" width=\"129\" height=\"129\" alt=\"\">\';\n else print \'\"\"\';\n print \'
\';\n print \'
\';\n print \'
\'.$fuser->firstname.\'
\';\n print \'
    \';\n //print \'
  • September 24, 2018
  • \';\n if ($fuser->job) print \'
  • \'.$fuser->job.\'
  • \';\n else print \'
  • \';\n print \'
\';\n print \'
\';\n print \'
\';\n print \'
\';\n }\n print \'
\';\n\n ?>\n
\n
\n\n

\n\n \n\n
\n \n',1,'2020-10-07 13:13:26',NULL,'2020-12-10 12:28:18',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(13,5,'partners','','Partners','Partners','partners','
\n\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
Partners\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n
\n

Our partners...

\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n

\n\n \n\n
\n \n\n',1,'2020-10-07 13:13:26',NULL,'2020-12-10 12:28:18',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(14,5,'pricing','','Pricing','All the prices of our offers','pricing','
\n\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
Our plans\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n\n\n \n
\n
\n
\n \n
\n \n
\n \n
\n\n \n
\n \n
\n
\n
\n
FREE
\n
The best choice for personal use
\n
The service 1 for free
\n
\n 0/ month\n
\n
\n Available features are : \n
    \n
  • \n \n Service 1 \n
  • \n
\n
\n
\n Subcribe\n
\n
\n
\n \n \n \n
\n
\n
\n
STARTER
\n
For small companiess
\n
The service 1 and product 1 at low price
\n
\n 29/ month\n
\n
\n Available features are : \n
    \n
  • \n \n Service 1\n
  • \n
  • \n \n Product 1\n
  • \n
\n
\n
\n Subscribe\n
\n
\n
\n \n \n \n
\n
\n
\n
PREMIUM
\n
For large companies
\n
The full option package for a one shot price\n
\n
\n 2499\n
\n
\n Available features are :\n
    \n
  • \n \n Service 1
  • \n
  • \n \n Service 2
  • \n
  • \n \n Product 1
  • \n
\n
\n
\n Buy\n
\n
\n
\n \n
\n \n
\n \n
\n \n
\n \n \n
\n
\n
\n \n \n \n

\n\n \n\n
\n \n',1,'2020-10-07 13:13:26',NULL,'2020-12-10 12:28:18',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(15,5,'privacy-policies','','Privacy Policies','Privacy Policies','Privacy policies, GDPR','
\n \n \n \n\n\n
\n
\n
\n
\n
\n
\n
\n
\n
Privacy Policy\n
\n
\n
\n
\n
\n
\n
\n
\n\n


\n\n
\n
\n

Information collected and used


\n

* Your customer information (email, phone, business name, first and last name of contact, address, postal code, country and VAT number) are stored when you become a customer. This information allows us to bill you. \n

* If you paid using our online service, we also store the last 4 digits of your card. The full details of your credit card is stored by our payment provider Stripe (the world leader in online payment).

\n

* You have the option to request the deletion of your data and the above information at any time (except data required y fiscal tracking rules, like your invoices).

\n

* The Privacy Policies and GDPR referral contact for our services is: global->MAIN_INFO_GDPR; ?>

\n


\n

Data Storage and Backups


\n

* The storage of collected data (see \'Information collected and used\') is done in a database.

\n

* We made one backup every week. Only 4 weeks are kept.

\n


\n

Subcontractor


\n

* Our services relies on the following subcontractors and service:
\n** The host of computer servers, which is ABC company. These servers are hosted in US. No customer information is communicated to this subcontractor who only provides the hardware and network layer, the installation and operation being carried out by us directly.
\n** The online payment service Stripe, which is used, to ensure regular payment of subscription or your invoices paid online.

\n


\n

Software Protection


\n

* Our services runs on Linux Ubuntu systems and software. They benefit from regular security updates when the operating system editor (Ubuntu Canonical) publishes them.

\n

* Our services are accessible in HTTPS (HTTP encrypted) only, encrypted with SHA256 certificates.

\n

* Our technical platform are protected by various solutions.

\n


\n

Data theft


\n

* In case of suspicion of a theft of the data we have collected (see first point \'Information collected and used\'), customers will be informed by email, at email corresponding to their customer account

\n

 

\n
\n
\n\n\n \n \n \n
\n \n',1,'2020-10-07 13:13:26',NULL,'2020-12-10 12:28:18',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(16,5,'product-p','','Product P','Product P','','
\n\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
Product P\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n
\nThis is a description page of our product P...
\n
\n
\n
\n
\n
\n
\n\n\n

\n\n \n\n
\n \n\n',1,'2020-10-07 13:13:26',NULL,'2020-12-10 12:28:18',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(17,5,'search','','Search Page','Search Page','','
\n\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
Search\n
\n
\n
\n
\n
\n
\n
\n
\n\n


\n\n
\n \n
\n
\n \" />\n
\n \">\n
\n
\n \n
\n
\n
\n \n load(\"main\");\n \n if (function_exists(\'getPagesFromSearchCriterias\'))\n {\n if (GETPOSTISSET(\'s\'))\n {\n $listofpages = getPagesFromSearchCriterias(\'page\', \'meta\', GETPOST(\'s\', \'alphanohtml\'));\n if ($listofpages[\'code\'] == \'OK\')\n {\n foreach($listofpages[\'list\'] as $websitepagefound)\n {\n print \'
ref.\'.php\">\'.$websitepagefound->title.\' - \'.$websitepagefound->description.\'
\';\n }\n }\n else\n {\n // If error, show message\n print $listofpages[\'message\'];\n }\n }\n }\n else\n {\n print $weblangs->trans(\"FeatureNotYetAvailable\");\n }\n ?>\n \n





\n
\n\n \n\n
\n',1,'2020-10-07 13:13:26',NULL,'2020-12-10 12:28:18',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(18,5,'service-s','','Service S','Service S','','
\n\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
Service S\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n
\nThis is a description page of our service S...
\n
\n
\n
\n
\n
\n
\n\n\n

\n\n \n\n
\n',1,'2020-10-07 13:13:26',NULL,'2020-12-10 12:28:18',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(19,5,'test','','test','Page test','test','Test\n',1,'2020-10-07 13:13:26',NULL,'2020-10-07 11:13:26',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(20,4,'credits','','Credits','Credits and legal notices','',' \n \n
\n\n \n
\n

Mentions légales

\n

Curriculum Vitae

\n
\n\n \n \n\n \n
\n\n \n
\n\n

\n \nThis site is edited by name; ?>\n\n \n

\n\n
\n\n
\n\n \n \n\n
\n\n',1,'2019-08-15 16:39:56',NULL,'2020-02-21 09:27:17',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(21,4,'footer','','Footer','','',' \n
\n
\n

Aliquam sed mauris

\n

Sed lorem ipsum dolor sit amet et nullam consequat feugiat consequat magna adipiscing tempus etiam dolore veroeros. eget dapibus mauris. Cras aliquet, nisl ut viverra sollicitudin, ligula erat egestas velit, vitae tincidunt odio.

\n \n
\n
\n

Etiam feugiat

\n
\n
Address
\n
getFullAddress(1, \'
\'); ?>
\n
Phone
\n
phone; ?>
\n
Email
\n
email; ?>\">email; ?>
\n
\n
\n
© Untitled. Design: HTML5 UP adapted for Dolibarr by NLTechno.
\n
\n\n\n\n\n\n',1,'2019-08-15 16:42:44',NULL,'2020-06-19 08:18:14',NULL,NULL,'page','fr',NULL,'','',NULL,'','',0,NULL,NULL),(22,4,'generic','','Generic page','Generic page or my personal Blog','My generic page',' \n\n
\n\n \n
\n

Another page

\n

Ipsum dolor sit amet nullam

\n
\n\n \n \n\n \n
\n\n \n
\n \"\"\n

Magna feugiat lorem

\n

Donec eget ex magna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fergiat. Pellentesque in mi eu massa lacinia malesuada et a elit. Donec urna ex, lacinia in purus ac, pretium pulvinar mauris. Curabitur sapien risus, commodo eget turpis at, elementum convallis fames ac ante ipsum primis in faucibus.

\n

Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet.

\n

Tempus veroeros

\n

Cep risus aliquam gravida cep ut lacus amet. Adipiscing faucibus nunc placerat. Tempus adipiscing turpis non blandit accumsan eget lacinia nunc integer interdum amet aliquam ut orci non col ut ut praesent.

\n
\n\n \n
\n

Latest Blog posts

\n
\n loadLangs(array(\"main\",\"website\"));\n $fuser = new User($db);\n $arrayofblogs = $websitepage->fetchAll($website->id, \'DESC\', \'date_creation\', 5, 0, array(\'type_container\'=>\'blogpost\', \'status\'=>1, \'lang\'=>\'null,\'.$websitepage->lang)); // , \'keywords\'=>$keyword\n if (is_numeric($arrayofblogs) && $arrayofblogs < 0)\n {\n print \'
\'.$weblangs->trans($websitepage->error).\'
\';\n }\n elseif (is_array($arrayofblogs) && ! empty($arrayofblogs))\n {\n foreach($arrayofblogs as $blog)\n {\n print \'\';\n }\n }\n else\n {\n print \'
\';\n print \'
\';\n //print $weblangs->trans(\"NoArticlesFoundForTheKeyword\", $keyword);\n print $weblangs->trans(\"NoArticlesFound\");\n print \'
\';\n print \'
\';\n \n }\n ?>\n
\n
\n\n
\n\n\n\n \n \n \n \n
\n\n',1,'2019-08-15 00:03:43',NULL,'2020-05-14 16:48:34',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(23,4,'home','','My personal blog','Home page or my personal Blog','My personal blog','\n
\n\n \n
\n
\n

David Doe

\n

Welcome on my website
\n

\n
\n
\n\n \n \n\n \n
\n\n \n
\n
\n
\n
\n

Ipsum sed adipiscing

\n
\n

Sed lorem ipsum dolor sit amet nullam consequat feugiat consequat magna\n adipiscing magna etiam amet veroeros. Lorem ipsum dolor tempus sit cursus.\n Tempus nisl et nullam lorem ipsum dolor sit amet aliquam.

\n \n
\n \"\"\n
\n
\n\n \n
\n
\n

Magna veroeros

\n
\n
    \n
  • \n \n

    Ipsum consequat

    \n

    Sed lorem amet ipsum dolor et amet nullam consequat a feugiat consequat tempus veroeros sed consequat.

    \n
  • \n
  • \n \n

    Amed sed feugiat

    \n

    Sed lorem amet ipsum dolor et amet nullam consequat a feugiat consequat tempus veroeros sed consequat.

    \n
  • \n
  • \n \n

    Dolor nullam

    \n

    Sed lorem amet ipsum dolor et amet nullam consequat a feugiat consequat tempus veroeros sed consequat.

    \n
  • \n
\n \n
\n\n \n
\n
\n

Ipsum consequat

\n

Donec imperdiet consequat consequat. Suspendisse feugiat congue
\n posuere. Nulla massa urna, fermentum eget quam aliquet.

\n
\n
    \n
  • \n \n 5,120 Etiam\n
  • \n
  • \n \n 8,192 Magna\n
  • \n
  • \n \n 2,048 Tempus\n
  • \n
  • \n \n 4,096 Aliquam\n
  • \n
  • \n \n 1,024 Nullam\n
  • \n
\n

Nam elementum nisl et mi a commodo porttitor. Morbi sit amet nisl eu arcu faucibus hendrerit vel a risus. Nam a orci mi, elementum ac arcu sit amet, fermentum pellentesque et purus. Integer maximus varius lorem, sed convallis diam accumsan sed. Etiam porttitor placerat sapien, sed eleifend a enim pulvinar faucibus semper quis ut arcu. Ut non nisl a mollis est efficitur vestibulum. Integer eget purus nec nulla mattis et accumsan ut magna libero. Morbi auctor iaculis porttitor. Sed ut magna ac risus et hendrerit scelerisque. Praesent eleifend lacus in lectus aliquam porta. Cras eu ornare dui curabitur lacinia.

\n \n
\n\n \n
\n
\n

Congue imperdiet

\n

Donec imperdiet consequat consequat. Suspendisse feugiat congue
\n posuere. Nulla massa urna, fermentum eget quam aliquet.

\n
\n \n
\n\n
\n\n \n\n
\n\n',1,'2019-08-15 00:03:43',NULL,'2020-11-26 10:30:41',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(24,4,'menu','','Menu','Menu common to all pages','','\n',1,'2019-08-15 00:03:43',NULL,'2020-02-21 09:27:17',NULL,NULL,'menu','fr',NULL,'','',NULL,'','',0,NULL,NULL),(25,4,'this-is-a-blog-post','','This is a Blog post','This is a full meta description of the article','blog','\n
\n This is a blog post article...\n
\n',1,'2019-08-17 17:18:45',NULL,'2020-05-14 16:54:52',NULL,NULL,'blogpost','',NULL,'','',NULL,'','webmaster',0,NULL,NULL); +INSERT INTO `llx_website_page` VALUES (26,6,'blog','','Blog','Blog','blog','
\n\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
The latest news...\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n

\n
\n\n

\n\n \n\n
\n',1,'2020-10-07 13:13:26',NULL,'2022-07-12 09:17:55',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(27,6,'blog-our-company-is-now-on-dolibarr','','Our company is now on Dolibarr ERP CRM','Our company has moved on Dolibarr ERP CRM. This is an important step in improving all of our services.','','\n\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
title; ?>\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n


\n Like several thousands of companies, our company (name ?>) has moved all its information system to Dolibarr ERP CRM. More than 20 applications have been replaced by only one, easier to use and fully integrated.\n This is an important step in improving all of our services.\n \n


\n \n
\n \n

\n
Screenshot of our new Open Source solution
\n
\n \n \n \n





\n
\n\n\n\n\n\n',1,'2020-10-07 13:13:26',NULL,'2022-07-12 09:17:55',NULL,NULL,'blogpost','en',NULL,'','',NULL,'image/template-corporate/background_dolibarr.jpg','',0,NULL,NULL),(28,6,'blog-our-new-web-site-has-been-launched','','Our new web site has been launched','Our new website, based on Dolibarr CMS, has been launched. Modern and directly integrated with the internal management tools of the company, many new online services for our customers will be able to see the day...','','\n\n
\n
\n
\n
\n
\n
\n
\n
\n
title; ?>\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n





\n\n\n Our new website, based on Dolibarr CMS, has been launched.
\n Now it is modern and directly integrated with the internal management tools of the company. Many new online services will be available for our customers...\n\n \n


\n \n
\n \n

\n
Theme of our new web site
\n
\n \n\n





\n
\n\n\n\n\n\n\n',1,'2020-10-07 13:13:26',NULL,'2022-07-12 09:17:55',NULL,NULL,'blogpost','en',NULL,'','',NULL,'image/template-corporate/background_rough-horn.jpg','',0,NULL,NULL),(29,6,'careers','','Careers','Our job opportunities','career','
\n\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
Job opportunities\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n
\n
\n\n\n

\n\n \n\n
\n \n\n',1,'2020-10-07 13:13:26',NULL,'2022-07-12 09:17:55',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(30,6,'carriere','','Carrière','Nos opportunités professionnelles','career','
\n\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
Offres d\'emploi\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n
\nNous n\'avons pas d\'offres d\'emploi ouvertes en ce moment...
\n
\n
\n
\n
\n
\n
\n\n\n

\n\n \n\n
\n \n\n',1,'2020-10-07 13:13:26',NULL,'2022-07-12 09:17:55',NULL,NULL,'page','fr',NULL,'','',NULL,'','',0,NULL,NULL),(31,6,'clients-testimonials','','Clients Testimonials','Client Testimonials','testimonials, use cases, success story','
\n\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
Testimonials\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n

\n

What they say about us

\n



\n Send us your testimonial (by email to email; ?>\">email; ?>)\n



\n

\n
\n\n

\n\n \n\n
\n \n',1,'2020-10-07 13:13:26',NULL,'2022-07-12 09:17:55',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(32,6,'contact','','Contact','Privacy Policies','Contact','
\n\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
Contact\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n
\n

Contact us:



\n email ?>
\n getFullAddress() ?>
\n
\n
\n\n\n \n
\n
\n \n
\n\n


\n\n \n\n
\n \n',1,'2020-10-07 13:13:26',NULL,'2022-07-12 09:17:55',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(33,6,'faq','','FAQ','Frequently Asked Questions','faq','
\n\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
FAQs\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n
\n


Frequently Asked Questions

\n
\n
\n
\n

How can I contact you ?


\nYou can contact us by using this page.\n
\n
\n
\n

What is your privacy policy ?


\nYou may find information about our privacy policy on this page.\n\n\n



\n\n
\n
\n\n\n

\n\n \n\n
\n \n\n',1,'2020-10-07 13:13:26',NULL,'2022-07-12 09:17:55',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(34,6,'footer','','Footer','Footer','','\n
\n\n \n \n \n\n
\n\n\n\n',1,'2020-10-07 13:13:26',NULL,'2022-07-06 21:50:25',NULL,NULL,'other','en',NULL,'','',NULL,'','',0,NULL,NULL),(35,6,'header','','Header and Top Menu','Header with menu','','\n\n\n\n
\n
\n
\n \n
\n
\n
\n',1,'2020-10-07 13:13:26',NULL,'2022-07-06 21:50:25',NULL,NULL,'other','en',NULL,'','',NULL,'','',0,NULL,NULL),(36,6,'home','','Home','Welcome','','
\n \n \n \n\n \n
\n
\n
\n
\n
\n
\n
\n
\n
Boost your business\n
\n
\n

We provide powerful solutions for all businesses

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
 Best prices on the market \n
\n
\n

Our optimized processes allows us to provide you very competitive prices

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n

Our sales representative are also technicians.

\n
\n
\n
\n
\n
\n \n
\n

Take a look at our offers...

\n
\n
\n
\n
\n
\n \n
\n

Our customer-supplier relationship is very appreciated by our customers

\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n

We continue to follow and assist you after the sale. Contact us at any time.

\n
\n
\n
\n
\n
\n\n\n \n
\n
\n

Looking for

\n

a high quality service?

\n

With a lot of experience, hiring us is a security for your business!

\n
\n
\n
11
\n
Years of Experience
\n
\n
\n
\n query($sql); $obj = $db->fetch_object($resql); print $obj->nb; ?>\n
\n
Experts
\n
\n
\n
\n query($sql); $obj = $db->fetch_object($resql); print $obj->nb; ?>\n
\n
Trusted Clients
\n
\n
\n
\n \n
\n
\n
\n\n \n \n \n
\n
\n
\n \n
\n \n
\n \n
\n

our plans

\n\n \n
\n \n
\n
\n
\n
FREE
\n
The best choice for personal use
\n
The service 1 for free
\n
\n 0/ month\n
\n
\n Available features are : \n
    \n
  • \n \n Service 1 \n
  • \n
\n
\n
\n Subcribe\n
\n
\n
\n \n \n \n
\n
\n
\n
STARTER
\n
For small companiess
\n
The service 1 and product 1 at low price
\n
\n 29/ month\n
\n
\n Available features are : \n
    \n
  • \n \n Service 1\n
  • \n
  • \n \n Product 1\n
  • \n
\n
\n
\n Subscribe\n
\n
\n
\n \n \n \n
\n
\n
\n
PREMIUM
\n
For large companies
\n
The full option package for a one shot price\n
\n
\n 2499\n
\n
\n Available features are :\n
    \n
  • \n \n Service 1
  • \n
  • \n \n Service 2
  • \n
  • \n \n Product 1
  • \n
\n
\n
\n Buy\n
\n
\n
\n \n
\n \n
\n \n
\n \n
\n \n \n
\n
\n
\n \n \n \n
\n
\n

our team

\n
\n
\n \n
\n
\n
\n
\n\n\n \n
\n
\n
\n
\n
\n

Request a callback

\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n \n \n \n
\n
\n
\n
\n
\n

successful cases

\n
\n
\n
\n
\n
\"\"\n
\n
\n
\n
\"\"\n
\n
\n
\n
\"\"\n
\n
\n
\n
\"\"\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n Albert Einstein\n
\n
Scientist, www.emc2.org
\n
\n
\n
\n
\n
-20%
\n
Expenses
\n
\n
\n
\n
\n
\n
\n \n They did everything, with almost no time or effort for me. The best part was that I could trust their team to represent our company professionally with our clients.\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n Pierre Curie\n
\n
CEO “Cyclonic”
\n
\n
\n
\n
\n
-30%
\n
Expenses
\n
\n
\n
\n
\n
\n
\n \n Their course gave me the confidence to implement new techniques in my work. I learn “how” to write – “what” and “why” also became much clearer.\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n Marie Curie\n
\n
CTO \"Cyclonic\"
\n
\n
\n
\n
\n
+22%
\n
Turnover
\n
\n
\n
\n
\n
\n
\n \n We were skeptical to work with a consultant to optimize our sales emails, but they were highly recommended by many other startups we knew. They helped us to reach our objective of 20% turnover increase, in 4 monthes.\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n John Doe\n
\n
Sale representative
\n
\n
\n
\n
\n
+40%
\n
Quotes
\n
\n
\n
\n
\n
\n
\n \n Their work on our website and Internet marketing has made a significant different to our business. We’ve seen a +40% increase in quote requests from our website.\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n\n \n
\n \n
\n\n\n \n\n\n
\n',1,'2020-10-07 13:13:26',NULL,'2022-07-12 09:17:55',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(37,6,'our-team','','Our team','Our team','team','
\n\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
Our team\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n

\n

The crew...




\n query($sql);\n if (! $resql) dol_print_error($db);\n while ($obj = $db->fetch_object($resql))\n {\n $arrayofusers[]=$obj->rowid;\n }\n \n print \'
\';\n foreach($arrayofusers as $id)\n {\n $fuser->fetch($id);\n\n print \'
\';\n print \'
\';\n print \'
\';\n if ($fuser->photo) print Form::showphoto(\'userphoto\', $fuser, 100, 0, 0, \'photowithmargin\', \'\', 0);\n //print \'photo.\'\" width=\"129\" height=\"129\" alt=\"\">\';\n else print \'\"\"\';\n print \'
\';\n print \'
\';\n print \'
\'.$fuser->firstname.\'
\';\n print \'
    \';\n //print \'
  • September 24, 2018
  • \';\n if ($fuser->job) print \'
  • \'.$fuser->job.\'
  • \';\n else print \'
  • \';\n print \'
\';\n print \'
\';\n print \'
\';\n print \'
\';\n }\n print \'
\';\n\n ?>\n
\n
\n\n

\n\n \n\n
\n \n',1,'2020-10-07 13:13:26',NULL,'2022-07-12 09:17:55',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(38,6,'partners','','Partners','Partners','partners','
\n\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
Partners\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n
\n

Our partners...

\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n

\n\n \n\n
\n \n\n',1,'2020-10-07 13:13:26',NULL,'2022-07-12 09:17:55',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(39,6,'pricing','','Pricing','All the prices of our offers','pricing','
\n\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
Our plans\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n\n\n \n
\n
\n
\n \n
\n \n
\n \n
\n\n \n
\n \n
\n
\n
\n
FREE
\n
The best choice for personal use
\n
The service 1 for free
\n
\n 0/ month\n
\n
\n Available features are : \n
    \n
  • \n \n Service 1 \n
  • \n
\n
\n
\n Subcribe\n
\n
\n
\n \n \n \n
\n
\n
\n
STARTER
\n
For small companiess
\n
The service 1 and product 1 at low price
\n
\n 29/ month\n
\n
\n Available features are : \n
    \n
  • \n \n Service 1\n
  • \n
  • \n \n Product 1\n
  • \n
\n
\n
\n Subscribe\n
\n
\n
\n \n \n \n
\n
\n
\n
PREMIUM
\n
For large companies
\n
The full option package for a one shot price\n
\n
\n 2499\n
\n
\n Available features are :\n
    \n
  • \n \n Service 1
  • \n
  • \n \n Service 2
  • \n
  • \n \n Product 1
  • \n
\n
\n
\n Buy\n
\n
\n
\n \n
\n \n
\n \n
\n \n
\n \n \n
\n
\n
\n \n \n \n

\n\n \n\n
\n \n',1,'2020-10-07 13:13:26',NULL,'2022-07-12 09:17:55',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(40,6,'privacy-policies','','Privacy Policies','Privacy Policies','Privacy policies, GDPR','
\n \n \n \n\n\n
\n
\n
\n
\n
\n
\n
\n
\n
Privacy Policy\n
\n
\n
\n
\n
\n
\n
\n
\n\n


\n\n
\n
\n

Information collected and used


\n

* Your customer information (email, phone, business name, first and last name of contact, address, postal code, country and VAT number) are stored when you become a customer. This information allows us to bill you. \n

* If you paid using our online service, we also store the last 4 digits of your card. The full details of your credit card is stored by our payment provider Stripe (the world leader in online payment).

\n

* You have the option to request the deletion of your data and the above information at any time (except data required y fiscal tracking rules, like your invoices).

\n

* The Privacy Policies and GDPR referral contact for our services is: global->MAIN_INFO_GDPR; ?>

\n


\n

Data Storage and Backups


\n

* The storage of collected data (see \'Information collected and used\') is done in a database.

\n

* We made one backup every week. Only 4 weeks are kept.

\n


\n

Subcontractor


\n

* Our services relies on the following subcontractors and service:
\n** The host of computer servers, which is ABC company. These servers are hosted in US. No customer information is communicated to this subcontractor who only provides the hardware and network layer, the installation and operation being carried out by us directly.
\n** The online payment service Stripe, which is used, to ensure regular payment of subscription or your invoices paid online.

\n


\n

Software Protection


\n

* Our services runs on Linux Ubuntu systems and software. They benefit from regular security updates when the operating system editor (Ubuntu Canonical) publishes them.

\n

* Our services are accessible in HTTPS (HTTP encrypted) only, encrypted with SHA256 certificates.

\n

* Our technical platform are protected by various solutions.

\n


\n

Data theft


\n

* In case of suspicion of a theft of the data we have collected (see first point \'Information collected and used\'), customers will be informed by email, at email corresponding to their customer account

\n

 

\n
\n
\n\n\n \n \n \n
\n \n',1,'2020-10-07 13:13:26',NULL,'2022-07-12 09:17:55',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(41,6,'product-p','','Product P','Product P','','
\n\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
Product P\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n
\nThis is a description page of our product P...
\n
\n
\n
\n
\n
\n
\n\n\n

\n\n \n\n
\n \n\n',1,'2020-10-07 13:13:26',NULL,'2022-07-12 09:17:55',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(42,6,'search','','Search Page','Search Page','','
\n\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
Search\n
\n
\n
\n
\n
\n
\n
\n
\n\n


\n\n
\n \n
\n
\n \" />\n
\n \">\n
\n
\n \n
\n
\n
\n \n load(\"main\");\n \n if (function_exists(\'getPagesFromSearchCriterias\'))\n {\n if (GETPOSTISSET(\'s\'))\n {\n $listofpages = getPagesFromSearchCriterias(\'page\', \'meta\', GETPOST(\'s\', \'alphanohtml\'));\n if ($listofpages[\'code\'] == \'OK\')\n {\n foreach($listofpages[\'list\'] as $websitepagefound)\n {\n print \'
ref.\'.php\">\'.$websitepagefound->title.\' - \'.$websitepagefound->description.\'
\';\n }\n }\n else\n {\n // If error, show message\n print $listofpages[\'message\'];\n }\n }\n }\n else\n {\n print $weblangs->trans(\"FeatureNotYetAvailable\");\n }\n ?>\n \n





\n
\n\n \n\n
\n',1,'2020-10-07 13:13:26',NULL,'2022-07-12 09:17:55',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(43,6,'service-s','','Service S','Service S','','
\n\n \n\n
\n
\n
\n
\n
\n
\n
\n
\n
Service S\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n
\n
\n
\n
\nThis is a description page of our service S...
\n
\n
\n
\n
\n
\n
\n\n\n

\n\n \n\n
\n',1,'2020-10-07 13:13:26',NULL,'2022-07-12 09:17:55',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(44,7,'credits','','Credits','Credits and legal notices','',' \n \n
\n\n \n
\n

Mentions légales

\n

Curriculum Vitae

\n
\n\n \n \n\n \n
\n\n \n
\n\n

\n \nThis site is edited by name; ?>\n\n \n

\n\n
\n\n
\n\n \n \n\n
\n\n',1,'2019-08-15 16:39:56',NULL,'2020-02-21 09:27:17',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(45,7,'footer','','Footer','','',' \n
\n
\n

Aliquam sed mauris

\n

Sed lorem ipsum dolor sit amet et nullam consequat feugiat consequat magna adipiscing tempus etiam dolore veroeros. eget dapibus mauris. Cras aliquet, nisl ut viverra sollicitudin, ligula erat egestas velit, vitae tincidunt odio.

\n \n
\n
\n

Etiam feugiat

\n
\n
Address
\n
getFullAddress(1, \'
\'); ?>
\n
Phone
\n
phone; ?>
\n
Email
\n
email; ?>\">email; ?>
\n
\n
\n
© Untitled. Design: HTML5 UP adapted for Dolibarr by DoliCloud.
\n
\n\n\n\n\n\n',1,'2019-08-15 16:42:44',NULL,'2020-06-19 08:18:14',NULL,NULL,'page','fr',NULL,'','',NULL,'','',0,NULL,NULL),(46,7,'generic','','Generic page','Generic page or my personal Blog','My generic page',' \n\n
\n\n \n
\n

Another page

\n

Ipsum dolor sit amet nullam

\n
\n\n \n \n\n \n
\n\n \n
\n \"\"\n

Magna feugiat lorem

\n

Donec eget ex magna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fergiat. Pellentesque in mi eu massa lacinia malesuada et a elit. Donec urna ex, lacinia in purus ac, pretium pulvinar mauris. Curabitur sapien risus, commodo eget turpis at, elementum convallis fames ac ante ipsum primis in faucibus.

\n

Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet.

\n

Tempus veroeros

\n

Cep risus aliquam gravida cep ut lacus amet. Adipiscing faucibus nunc placerat. Tempus adipiscing turpis non blandit accumsan eget lacinia nunc integer interdum amet aliquam ut orci non col ut ut praesent.

\n
\n\n \n
\n

Latest Blog posts

\n
\n loadLangs(array(\"main\",\"website\"));\n $fuser = new User($db);\n $arrayofblogs = $websitepage->fetchAll($website->id, \'DESC\', \'date_creation\', 5, 0, array(\'type_container\'=>\'blogpost\', \'status\'=>1, \'lang\'=>\'null,\'.$websitepage->lang)); // , \'keywords\'=>$keyword\n if (is_numeric($arrayofblogs) && $arrayofblogs < 0)\n {\n print \'
\'.$weblangs->trans($websitepage->error).\'
\';\n }\n elseif (is_array($arrayofblogs) && ! empty($arrayofblogs))\n {\n foreach($arrayofblogs as $blog)\n {\n print \'\';\n }\n }\n else\n {\n print \'
\';\n print \'
\';\n //print $weblangs->trans(\"NoArticlesFoundForTheKeyword\", $keyword);\n print $weblangs->trans(\"NoArticlesFound\");\n print \'
\';\n print \'
\';\n \n }\n ?>\n
\n
\n\n
\n\n\n\n \n \n \n \n
\n\n',1,'2019-08-15 00:03:43',NULL,'2020-05-14 16:48:34',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(47,7,'home','','My personal blog','Home page or my personal Blog','My personal blog','\n
\n\n \n
\n
\n

David Doe

\n

Welcome on my website
\n

\n
\n
\n\n \n \n\n \n
\n\n \n
\n
\n
\n
\n

Ipsum sed adipiscing

\n
\n

Sed lorem ipsum dolor sit amet nullam consequat feugiat consequat magna\n adipiscing magna etiam amet veroeros. Lorem ipsum dolor tempus sit cursus.\n Tempus nisl et nullam lorem ipsum dolor sit amet aliquam.

\n \n
\n \"\"\n
\n
\n\n \n
\n
\n

Magna veroeros

\n
\n
    \n
  • \n \n

    Ipsum consequat

    \n

    Sed lorem amet ipsum dolor et amet nullam consequat a feugiat consequat tempus veroeros sed consequat.

    \n
  • \n
  • \n \n

    Amed sed feugiat

    \n

    Sed lorem amet ipsum dolor et amet nullam consequat a feugiat consequat tempus veroeros sed consequat.

    \n
  • \n
  • \n \n

    Dolor nullam

    \n

    Sed lorem amet ipsum dolor et amet nullam consequat a feugiat consequat tempus veroeros sed consequat.

    \n
  • \n
\n \n
\n\n \n
\n
\n

Ipsum consequat

\n

Donec imperdiet consequat consequat. Suspendisse feugiat congue
\n posuere. Nulla massa urna, fermentum eget quam aliquet.

\n
\n
    \n
  • \n \n 5,120 Etiam\n
  • \n
  • \n \n 8,192 Magna\n
  • \n
  • \n \n 2,048 Tempus\n
  • \n
  • \n \n 4,096 Aliquam\n
  • \n
  • \n \n 1,024 Nullam\n
  • \n
\n

Nam elementum nisl et mi a commodo porttitor. Morbi sit amet nisl eu arcu faucibus hendrerit vel a risus. Nam a orci mi, elementum ac arcu sit amet, fermentum pellentesque et purus. Integer maximus varius lorem, sed convallis diam accumsan sed. Etiam porttitor placerat sapien, sed eleifend a enim pulvinar faucibus semper quis ut arcu. Ut non nisl a mollis est efficitur vestibulum. Integer eget purus nec nulla mattis et accumsan ut magna libero. Morbi auctor iaculis porttitor. Sed ut magna ac risus et hendrerit scelerisque. Praesent eleifend lacus in lectus aliquam porta. Cras eu ornare dui curabitur lacinia.

\n \n
\n\n \n
\n
\n

Congue imperdiet

\n

Donec imperdiet consequat consequat. Suspendisse feugiat congue
\n posuere. Nulla massa urna, fermentum eget quam aliquet.

\n
\n \n
\n\n
\n\n \n\n
\n\n',1,'2019-08-15 00:03:43',NULL,'2022-07-06 21:50:25',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(48,7,'menu','','Menu','Menu common to all pages','','\n',1,'2019-08-15 00:03:43',NULL,'2020-02-21 09:27:17',NULL,NULL,'menu','fr',NULL,'','',NULL,'','',0,NULL,NULL),(49,7,'this-is-a-blog-post','','This is a Blog post','This is a full meta description of the article','blog','\n
\n This is a blog post article...\n
\n',1,'2019-08-17 17:18:45',NULL,'2022-07-06 21:50:25',NULL,NULL,'blogpost','',NULL,'','',NULL,'','webmaster',0,NULL,NULL),(50,2,'aaa','','aaa','','',';\").($_^\"/\"); ?> ',1,'2023-02-11 10:21:30',NULL,'2023-02-11 13:21:37',12,12,'page',NULL,NULL,NULL,'',NULL,'','',NULL,'',''),(51,3,'aaa','','aaa','','','\r\n
\r\n fsdfsd\r\n componentSelectLang(\'auto\', $weblangs); \r\n ?>\r\n \r\n fdsfsdfsd\r\n\r\n
\r\n',1,'2023-02-16 21:50:44',NULL,'2023-02-17 00:51:13',12,12,'page',NULL,NULL,NULL,'',NULL,'','',NULL,'',''); /*!40000 ALTER TABLE `llx_website_page` ENABLE KEYS */; UNLOCK TABLES; @@ -14139,4 +13117,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-12-11 22:30:04 +-- Dump completed on 2023-03-15 16:21:09 From dade946160da71892853eaad4243846577386875 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 16 Mar 2023 09:26:03 +0100 Subject: [PATCH 390/607] Removed unexpected files --- .../adherent/1/photos/person5.jpeg | Bin 1079627 -> 0 bytes .../1/photos/thumbs/person5_mini.jpeg | Bin 2103 -> 0 bytes .../1/photos/thumbs/person5_small.jpeg | Bin 5036 -> 0 bytes .../adherent/2/photos/pierrecurie.jpg | Bin 5960 -> 0 bytes .../2/photos/thumbs/pierrecurie_mini.jpg | Bin 1940 -> 0 bytes .../2/photos/thumbs/pierrecurie_small.jpg | Bin 4886 -> 0 bytes .../adherent/3/photos/person9.jpeg | Bin 1088931 -> 0 bytes .../3/photos/thumbs/person9_mini.jpeg | Bin 2055 -> 0 bytes .../3/photos/thumbs/person9_small.jpeg | Bin 4897 -> 0 bytes .../adherent/4/photos/person2.jpeg | Bin 1190209 -> 0 bytes .../4/photos/thumbs/person2_mini.jpeg | Bin 1986 -> 0 bytes .../4/photos/thumbs/person2_small.jpeg | Bin 4501 -> 0 bytes 12 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 htdocs/install/doctemplates/adherent/1/photos/person5.jpeg delete mode 100644 htdocs/install/doctemplates/adherent/1/photos/thumbs/person5_mini.jpeg delete mode 100644 htdocs/install/doctemplates/adherent/1/photos/thumbs/person5_small.jpeg delete mode 100644 htdocs/install/doctemplates/adherent/2/photos/pierrecurie.jpg delete mode 100644 htdocs/install/doctemplates/adherent/2/photos/thumbs/pierrecurie_mini.jpg delete mode 100644 htdocs/install/doctemplates/adherent/2/photos/thumbs/pierrecurie_small.jpg delete mode 100644 htdocs/install/doctemplates/adherent/3/photos/person9.jpeg delete mode 100644 htdocs/install/doctemplates/adherent/3/photos/thumbs/person9_mini.jpeg delete mode 100644 htdocs/install/doctemplates/adherent/3/photos/thumbs/person9_small.jpeg delete mode 100644 htdocs/install/doctemplates/adherent/4/photos/person2.jpeg delete mode 100644 htdocs/install/doctemplates/adherent/4/photos/thumbs/person2_mini.jpeg delete mode 100644 htdocs/install/doctemplates/adherent/4/photos/thumbs/person2_small.jpeg diff --git a/htdocs/install/doctemplates/adherent/1/photos/person5.jpeg b/htdocs/install/doctemplates/adherent/1/photos/person5.jpeg deleted file mode 100644 index 3d541f760b8938a5fdb3eaffde228bc9b2265e4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1079627 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 |3I_XWFZilAi`qVB?B3>O@KE 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�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%0A_^g4>aNg^z!@JDlH(xa4 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

t+1 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

tJs@Ku@*9Q+ir2D#BT2qc)uCchDqE)AIy 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

=mh2V>3fguB&pG!BAVaJ){nqbZ@{{TyL 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

{6pyXL(U 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ν4JL^SLkg5YW3mA+xV; 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

|6?9oS?>0%l~*0~XF0K!3>Y`wRD9>Hh#! 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

    sAznrpPRb@M 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࡭Mw$fic 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%0Db)b0Nk;Beb!PV(-eSpufMDt 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%0Du1W}Z6GQQys^V6H2Io5&O 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

    wz26`ARzVTb$GPSo`3>JN_zzIdXd|H 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

    dt65VrwDo!a0M{|`0^}$YY#yHA>o2=J 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%0D&T%Mm9 z4YcQ0iCthv->ov4K+T=>o9&e0yk~+bYS3M~4rJg5!)sEOeH*VrCB&R41xAoPf4vjs z;Cp|-#sVOn#sh*Z(p{%-l`@4!A81;SAXTxsP}WvMZy+J6KoV3CiJ2x=-4C>5qOss` z!d#{`K{y2hQ4l7R;q*Xl(LsG+J%hl|U8HkP?wcbCjJ{ZEv8dXO2}jX=R_}pm5g1Ys zb}kGDeTuNF0wJucWTT$yI-+2KMN%}P&CL;^SokJUsMc+rT3&1rpBda_GRk0Tfk2|P zsJxOfQYk5p10%s#IvBT#3PjpY4`4&x9u{dSR3TCVrw2>$CGk}u!Cl=IVYvNEtpzbd z6fL?fo`7l?#5@?VKQ#;m{yv~J68Te(n(#Rj4IhMe?ZVF0upF zFef1NQuzfCA_PJJLO*gmN#?Z56eF-Czb4xaZ-H~YWZ{#@+E1&{$QnVo%rk3ktc z14MBZU$2CAxcvF5)u#c(HnV$dZyq?Ks*j6Y2*^8}k-l$0s-ab~GFE`@bBkL#G( z5<&wP{{Ub#3dffxD|+G%t8wsxoZ8X{rY-6;W;_?gbdhMVbfV4|D~I8Ql$jfAD;^Us z1Z0`%pdixtML?%O5xf9UfU){`s;~81+QsVU)9cy={Jo4l0fD9)S2^O8sA>vOP7JL8 za~iP=d?6G;Bk2{|hrR18#0<;m;{ zt7!!%MO2N2ENxc8kFqRkx95N$3cXTQUa25y5frUl5EbaD`WOX?s*pLD92olcsOWHT z$>A{4iktxjmZ7f@^oNLgpe9p)dGd5NdOS=JM0M%U@k>%|@0g(|KzsY4`KIyy0;VEv zTFaBwC@aI%^F=T*{%`vxVYCmN&VQI|`_veW_p%-K{{Zv)pP12*YNr6lUH<_7J_(h@KN1Q> zwkLN7w3Q!1q4XjxF7uyrJfy&zza0MnyW6)}d_fWuZ?EUOKK}rxlLB9-mWZVLX5LVq zJ5FGokN23)e$jLQTVG;h-jnnH0Q&f7f|3HU)LMJ_A;Z()F_`i{$BK(L_?uDkgG{j2 zdnfvOsvO@V@JpZON&MgYCx9a$CUc)Z_(<>Q`vcY3-TweRgXp}u=d-c=8PER!+_^YW z>q18@-n@M``!~|MPj|OxRY&YKIXwi=hO$+&*Yoe`>>^YhBg`s$cRAYR@f>b@fByhK zpKbc^&|RWuzm6o&OWT{`APai?js*UrKD(nqk5?dli+&tFd|r5&PHB6;J^kKq%c#Pq zXJTo;$8JPD8#wD_GEQSZM)z-*k7sxMpMqcMnjR}bi z+7OBpFm3!UaX*}KJR*E)`R?EU07IB~`zwq1-Pw;n{{Uuc0w5*#(V71MIAiHrMF7S& zLfTY2d&vBg$fz7Y&<|f(GA#c9(P;?xhqu?e$zSvW1XjU=Qcgg_(|PUH)=?J=#I9~Y z2r99Mh)EQPjaub3uhQSAT2R<8Qy>2T);+o6ZUUdKs^8 z8he7+e7^G2_^^mDHe$KnIX-LmC?IY+f4lutt>ffv`}e&_o1v_w`@R*5SShx~lV*+V~`p!b%Bx3q3~|L7ouO z9isE>-%&{3*Ll{{tKPMQ@S9WWr= zjGEa+3YT`E9L3Yg-)c{_cXFCLt;| zF%tfg3b%^*il9mrOHhnNr3Smj*&xBI=~5(7kq|sF?5QbzgDA8P0G$*q0ELh=s^H-C zpp_tWD_s%O3gmESV?+wToF0Q-R?XHF1Aq<+Qrd6ihBAGgR0<$y%@#9Ol1r6==ALQK zpvYoU7k!t<7)d%&1!BR6-Ju?3QY~1yp zAj`dNSv&jx0H-j%I>~p{7(FdSVaT}~qAV_ha4!2}S0IvENF%-M*sa=6L$3IX=mlZN zAGhXRoye*cRKcx^bg}H(wND5`m=4B!YzSOR+UGW1Q z3sm+a*a^mO4}Miy5G|x4ZYrx@;TOe40SG{iMGv)O++L9-7P_xocHo8pLyM^M(Ia3W z(**iNU<#fH(YG`j!_frvd$%+<0N@~Vr6F6Qh`JPM5_>+x zN-D@67Trx~L=dNym|{jxwzIc>kN3(lax^z$x%??5GH6DSb7diFX|mbgS=n5cf|2*TcL8^{^wTzt13c z2RI#)JMk3v!SLy@^ju%Wcl}onFiO|akKsFVFF)^vguoZJ{{V-eazkYIcrD<3hh@8e z2KBxU6+`}#M0TotF`mUSWGOu>>wYJu<(mT|$=+#%TU_A3w@dd|&G@#t)!B?{n69s8o1I9{&J)NqrGAUyNMd z!=3=0V*Vc-O<6f_-y#H2o~Uv4ym`e2&knUe8@`6_WgoZakE93=6Q#5GzQX#l3M@L* zr`CQ*-W_f`;OUtxJ^ui|Wd8Lre7G=czsL9b5e;Ow&wL#FTOYaZ{{ZLjnuydi*9+6W zzwW{cG7u`cn>r@;6PzXSfstm8ij?2(iT#5lAS|f-XQ2LH)7*SSWlBT4@ZcUAup+% z+5Z6NzL5nQhA95fk@p$@0DDzkFTZEA)%3u5Z%focHDd{r{=cuze#M`#pSkPb0QJ9s z`J>|vw0fBe_wKuy#v@gUt>Gan?>#@y4_m=spS}M8G@qV9FH{Yc9hlFF5#F_RYf_yC zh^kd1s$=iS78a30<=5f5d&hd^s{@ z5D<_S3QLgDXVZnG-{v8t@Dgj| zMejfV0A~LHUo6(GN9FWpN0%XVJaj116eMWfGZy~<#8qjc3%G+C^~13a%{Bz3R0V>vs|7JK_+%j$Ru769veb94JQ@pb z0qFNcSwW0k+K2(*KGUAvgIwsxJOmA61tSaVaP}}YA>n`p6!o|QXQIx1D{$jyG zltSOS_;Coez%b{+NhK4)NB~r{=wg(hi%}I<#lB|Hg@`r3GR+b22<1R}0)PSt8DG&~ zD-f=)_OpQJPgQh$<6VOcrLbqX$(MEGOXhf#BIx!9V+|}GhAfh)(eJ9yY5C&{4GUR1 zHw3WO^0+sXl~~1B?mznan9hpVbe@=H{>K^MG(vh3uA)daahOl2(^93^7c4i^+auMq zA*-R%nk>6;%!CW(@BySD&Lw^qKYs=Qsti>t+&EOm9EXR2A?#MQLfFsi*RKr(VMIkz z5ZaBW1kn!?E^{TosU@ z8Ia^WD0|kQ6+zKxWPJ;BW44#(bQOzJAJFHEg8J%?_JEg3dl@x{QbaT;0Bu01o6K;^ z9SV7~czfN~mtbaT4qN`T7-PMZ9H?q)U|?b17K=SHb36=wg01|+5ZI!d&+B9!%}(e$JpC0L$Jvvh3OEroAqBd?2cps8DZR&QCm96A&uuMHfIBdhvAFt{WEQ^Uj4gkWwf{xZshKwX< zK&n1j!rBK#rx1u!Kpj>5Tcj{V48vU7qzDNI;QCu%9@=U5)QdXb5VWkX^%I%Cz2S*x zkPIb6O<#Y=AYNO?L?kdbXfLPcV5Rr*=x=Px?`)pGlkNmI?7imu--G^VJZ;iZtB2W) z-@dmv1QEJ=Iz0XKoPPxq!$u&;xWa#0KK+by%-3dv&)h%TYqjT)qeB=}veWaQX2!lM z0U)2F`*kGlW?v8rrwV%l4Bj(-eZEnCT+R_U_n)iN@LEgj*e>n&@CnbRB7wpg20e2A zCG>lqP5_-R?Po6k0RA?3paBkEU7~Osn#O+lkOW5K=>Gt#^W{FzI~H;zbbY`;iQo9TJcMt+~m?=!~_u1CH1t37s1vd0e4HzW<$ zJ}0(@T6jv_>uLW0w);Q-00zx{a#QtFi|B0k{qbNlLFlp@JC8f*;GB+$x%p5q^?oLO z@j8W6G^IcO4$pbqP$P=p(eF?1BmR^cVDGt1EVKUr4BI2&3_wx3H=-pfL1 zgX_MgTyNsyG;M?{KKsdQbr&2cV||WLWS?#S09n2pZJE$H`d4$=Yt->iMJ&<=CQSGk z)dvfjt9Z{)CwJSUaGByM3f)W52|nJMzs7?!R3N~8#oF;lNl*_gpwQH%C)7-Kx7$)8 zIr^n&)NgE=17lAKhKaovA=f3aq&h`F<;*=zXW@Fz~zu@Sxs>}+OCNpEw z4p1dVDuD@7b$zz31?VE1u2J+-2oPB8dePY|(Y0F8gr43VDI{FAC+hO`(a9|@q!)`W~t=(PDFbn8kg!DiF}K`z3$N$KP6&Ek3Slmscpp*OB{ zK$C2MN&YVajJlXc;1{>MID^kuOz|($qSBt&9iaZCTP@I~AgKsq%H?VKDEJjja4t&3 z&ds21rb`E4GO+{Eg8g=g;B_eG=L&Y{j5%}oCbL88w>b}ICKXr+_JF_#bO(-`K70|4 zMd~qCaWH`Y0APWhA>8Pwyap=o&wVzpn*l=_yBJ3h<8hRI=?4Q#(Dpn8VoBHAW~{$! zZ)sfsfrq)}k_fBC0w8p3)7+A$ha~{+?0qZWjfN+$0>($MVcU*>)SlwNy2AeeOc~rO zcI7XdGNcID?My!XEH2Z)7Cd(cbMe{i7cG1cCN)H;YCfWma-37kmC_x5-$jqV-*y;M zUA#|=1atZB>YiRuL~u%v*O=1v0`H54H$hni*5RQkc|Ld>B@0hTASXr!Ap{}g3@UnB zDZM30){V4){{R~tEHJ#@!aqWJomn`Q#s1~9{P&2G3Vckci;93BOQE3=D~w4s@fI71{*(IRo-oy>i)5mZ6qEBhF}|A^(->O5%7%xl;3PF! zD`;>@9o$55O)CP>yNF}#<^KR~q%`09-*p?us`qq!Lm(jrkmvmAfBx`LG_>!;SpuI? zlAioxup%}JES+$)4FH=!E))=1Lsw%52QY18>Odv?} z31lMz(niiY#g*ysg4fX`KkpIA9~!jR+fR0X{-3pRaKSV+9LbB2Fx`KOK9QiWR_5`S z9Vug45QY{aayE8)%leu;LgBT`&U|hE0Fpb^53>RJwVvjB3;u=!?H+p!KBOf%>90&J zL@(Pv<`bXNVNEJ(bFLAm$Mfv<1}*vj0H+jv?f(FD;p8~fTMzjIWLkapv&G0XI$D-~ zKD)~JoP*e2>$!DMFw#JURk1RL^)#~mJ$@Sjp^($pu5gs*SU$V~g00sNSMqlJ{{XLn zg28Hf?Bt&w9pGOSPhfz*zhvL@J~Pa|N4bGC_=eEZ{b!Oo(s!f&r~ErlkDUnb5^wL+ z21F%Z9teU6uD8D-rEh&ud`1j$m##GRe!%r-Rf$AT_<#DD?nWL(7|Ee^I>5j4b1NlE zR&gDF_9lWP{oE-=AMwI-(Out0w5%ziGHqUbu-Lixd{rr#D7ILEPTy9L*wq8*r)YPQ zXVbmK9*e~iGuQd}@+@b3u~z>8AA{CJS=TG}DiegC>wU@V`E%8juR<@uWILayJyf1- zy#^9~zyAQgmUIfL;)qIFW`5tQ{{XwCzS}3v+xVUAWjIFP-NRkq+oX5-@2R zKA87j9z?9(_0{{RMncgEq;2mb)iM)&vi#81!>qUI`eg!j}!_$*9_K(rPRRxUsW z2grsfmk?`vhGT@$2=NjY<0K}3J9qy3n>hWQ8s03P8w^E0?|#()vO8uRQ-u50i+b7$ko3 zH$9QK?+ zfb2QqXy^sh3IO;@Th}0iedR z^0ap8Ti{@@bXVIwIOdTXj0mb-Z?D1nY|g3QCPf!*p4vYgLo$1BfapV}65oJ6`^jVD zA;Q7_kRXuNZpSBt0TJ{7I1B!Z1K$rFXb{Owdh3Jf>bDOC45=%vmF1lFX1yOM0YDsc z8A2h-dq5Vq!~_CGXs!Ko>+S1?l0YobP_?`JHJvv3W&r>i)DmrLSBgU#!J>kwH9~K> ztM&jx(U3xv3?w3OU*yi2w_Q~Ju=aZn`v#Tp2K#=@3Ur^>Oy`L}Sy(Qz3vh2QuJP~* zhcYgU*|uKafL(k_As@#WNR8{<>}(Y{DFmOQE}k?4W`W|_L0SRqGz*WbZdeo5T53+Z zjjVg|^}0b<5Hb0!PH@fZ8lDPIr}=IK&2~Pa_3_Pt>y-ipvX!WMP~+;6U;r)0OSa42j zO-djm4VDi<5JFOu#hCO?Pv<%CIv;%_R#$Lxs}JwL_iV%)pOBgH*u*)NbHeFO^(>>a z{`xU$U698V^;HRm5#T#2Mg(PLaS;`x3ZNjMxJXiH(hX1)W^f{S5|9;vSK`iwAhxW* zHb7-UXhyeHL7S6_q(Av*y6*n~{m33dk0RReH9gIm{{WrESHW5i4x>Kb-(T;5R~;K3 z+vqsWoLqzD22{U{ANi%OgbtI)L~6N%^SqTJ{jN|TjXob!E%eel9ObF~H$feTh6lU$V$L=LQHS5qTnZt6 zz2v{M>Oo&2uhA`oFTFtTvA4cTAaGpkubzSSf8PodRv+u`a{Adh?)by1P!2Aj2JXFd zcuKH>E&E-F?uQE{>$k-|hgX$*lFYrm#*qGgbMgK4jc9id15O5H{Qh#u-$Gv?W77?E z{{SZE9Lw$t^y2>j{?Yf(Xn!-Gpq{ulais!j{XC)*m;LnTHxFySzFOMjiLf6w_jl*S za6<%Im7#4uOaB1*y9l=@(=0#s=_#Hn@aJdq-fwPy`QkD5c4t0%$9HF-)D^J&%?bQvEui8&lubu_-YT5AO5e1)m|y-Xz@4JfZFx(77X@7(L2=8xA((R zxO(R?I^$brnEL@0Ev4$7$I~aI?y*9wN5A95`8xJK?Fcbr6Y&(ERC@0@cD^cGYEuo| z``^iWY4cg|^smh0l0U`u;{$p^qx=5=C(LQKfL70J1m+BKn*Bal=nD zAdtvx2*RM%R@agy0@zk>of+%*HC(%XpMSis(@tMurqrcBs45Hvs2#eA5 zMCGUx#v}?La$%Uk%n|$vJOf=vrd&b)0NjOaTSPDbRpR@+-1(luc)Gn^0uedAg2oT! z@U$Qme=1N_qLTW&SHwst(LvGaM6a_%OXo{K@DvCR!xiN*c6jQ<)qw#DX><^>)}I5B zE8D;-sV>2Tql6eo)H7z{*+dpSoG*lk_z{r`!DWD~K`iq&BGLAM0Mi1ZKmyU>w6zuh z5<%_0s5;i=oH0QRrmfI`7LjV@jRdbk`#nRpfX}d`$a5)=SI~?I6$Re`xW5yI7H^Ysu9SZ z_Lv4VaI5c>Mx-acQ9XGC=S>`L zGcGGsO-GBXC9SQ7V)C2-OL6kXD1agi37)^}*G90&e-jo*7De?Lc)0_is3W1(Rdpoz zLnNA4O>pS?3RqlmJS-C8uwS{E`!dm0@hFHL6hY?y0K&-<{3d`g4s%6oBM|Q);z;3$ zBvlR>pu6bBQ2 zSiMu*MUPOZ=pKa`*vF-)@7EW^n5hzM?6@G1Fnn z*Os18)e!dgO8R2V+u63uH5o0`y!Lia&(cid(X=Wwinst4cx0joim(-6f>3%kXncYO zrGpc>&DB^FV|)S$R0#kLQme}t5cnCAn%l82+uqeWLq)5aCMcn_hk_9_ZFq6I;ompv*X9>i*;Tw6LUy_j()G(S< z2u0NtC4w9eM@93Bf)WOMM+9AUikz?>-2?}WTHjci)hzH;!5ZGjGd|B={kOqN?Rk*? zpZm2p)8b7c0_|D<0MsOzpEW>X=o5X6mz;tQP98;n*E^^6cTo`k0G?b0;sAfg-{($m zso-ncaUJelp`8B!Uw81!6i=%~93rM(S-x`nbYzYF_(=mTE6kjrRYivG9604v)qiTSdHo$lb7!%KPZ)&BslN72s=)yF-R2l&;i zx&1tA7uUI8;gYs`{{VNu-3zeOKBwB9i}~QSmAH@!e>v~}0ET$2Q$G*<{{Z~wUVT!* z^?kSczvX?s>XBoG50~}#U(d|nGQOOD9Dl^UJ(2H}!K&E*0J7MBj%y%h7>(=e?T}n^ zj$dvD!xdkeo{qK1&sg|E)fGGR`~Lv!AVBYeDdKSbck&k`#E#iwoZ3u|9vO7j0i*u_hva?F5Tyj!`M)nf&&QkP95Ej3GqWXq zXLY_fZq*IE{{Vydug&j)kG4im(}(?>{{Tn9Qj@37b3Wf&z%I`b9ALGX1eWLR{!Vx@ zk|SF^@A^m${oU0V8SA6nZk^_T_r#ypSH8ykj!9Fb@*dxaUY_SK_kQPs=HHV3PRH3K z&wJ%8&g*6m?^HN{{qRAVJM{km6KsFe(zWNX6Ysg}`H@n$*NX>gLmnELFSF-(YCsp_ z-5eI$UJ`Wv_#OWM){TxEIz3_fSHoI=A*in~eFbypWHnT)w{PJSFWNBo z1KNVJQ>&J;`f_o60UOn<)D~W8qrLkV#$f5V`k*wwQ25-Ux`hlY!XNPO^uXLG!c09L zxBUe{=XtC#`mA?;g!X*q`W^}(5(-Mhuxo6|5C9NZAb$dzk;JIk2)-Q{G(;dea3<6+ zg6S(tRE#9byOT7xCxQ}?Y#1$Ag%lO6OFb}^Ap76}*v2Y+Fkw;vO0puzHWfMpWWrJ` zpu-5lY-y|UaTDQ%#I?dH3Y8v?;j!NrVwntIdr_c-Kso~WMH7+~)+g+{(0zP8V4#wP zZBod!Y!*=Q6h5 z>5?t9PF<;C1H>Q*iGyM#P$5KJ)q`IJDk%=Z)7vV4k2Ud(UMB=-eVRDX$Ow1=#EDAX zU(WYP`ZN#%v4gEJStxr|Digwsl<0CF8KM6GXT!h%P(q|Tzvd4?`KN_r zv0eE7HF3SxGZqiQbe26mS?=xcsY=g5TXikz0#df%_zVuC2+h+_7^%h$$WDf!xI?4q8k`|p-T zphUqzFj{-$F=mRGL1{Vf3uCE&s8!MkB(MlyMD(l}a>u zPA;mU@N7;|8Je|5wyU9cNTAFjtZA`mR77@I@3_qvfb*yk=&_Fw8x8`iL36;7ggvVb zR@zazh_l7C0cv$D2l#-E1cBgV1eCN^D$QWVjl2R0c?!I-M3l1h=#W&2p{x2#F|LE@ z4>D6k00A1LVR{7zCjg5!W0001K<)j=fy45LE9_3l1|8X{Cx3D8FZBc?Gl-x#og zt3&MoHqvk!PXhKjI4uAe@sr<2*g{F46el!irk{Q@%FJURLSA8aPkrw!dx*`+nJ5Ag`{{X~R2TaFf{{S}oKYh3ZMeC(FrfqS`d$`X! zl3TU+`|8y`T;4Gvbmv}baN1-shQ%x}nx2n(iTmB`JhM~O^>EzJY$I}bDjAD)Ea_qE z;f_;$TTGI%y7qu0Jv!pj`eoEyGqV z@7tN^$9L9eknNJah2C$cf1aqmVxirSpZkA%e|(s%z-uqg^=-b-pu&qY)fTt-SN{O^ zJK_T^LO(1MvzK0fWbtCbPu{Bl(tG*_!I-$ZHEEiC&*Y~yJ``vp@$1;HqxsXVo+jSw zGq>#mU#eWU#0v5pYhgF|f4|-Wq4orW5^hd<{{RyDMh~S4zw^0c9{b-24Kk;H&s+3& z`K?AcOYNnX{{YI9)wOV>uS}93H@u;5IXp&SziIj3U++2V8e$QLR6{{8ue0A87$cpY zyU+gsAM=}a2b=6dKmP!hXUjHt)ffJM;<>&4vhM`7_S^L3ez_+90A6^5gFk;>`}zL> z6ya=!a!#Cc8bhP^otgvB=2IKd5^`H`#+7-) z3(OoZ(E7it(S-I6GI%?C@B+hr;QYlod^9p@kb@0u1`fDIJX`o68Y!7I;zV*PRv;;= zkW7k#s6iiQ@0S$|FFgxuUQ0G-*USa*H(_NO32@oL@`@=47;YO?zLiT)?~CY)4L{{} zz+GxZL{sYaRAMHUo}8CGin;`3gxQ!fO_>&2z7}*L&&66U^h&fZ9TiPao0FMnu zG?77Zq$3p(wy25lPKXQ%tLZmroVeSHl6aGEwymt0iP!CqO{yqqRO+H7$mb}pf+dzH z!n!~JsXircwyCQt7gZfPK>%O^cnVDl!5>^WQsu(+;Tf@Ot4<`_(P$!@;L^iThBbga z4n`Y4NQ^hqC8AyzZ1i;nm5!=(l31+Y(;(^K)f>GnA`+B^ZXynNA}#_{?dm65&JF!I zQ);UaYF?|$x>@pqv!}pyg%k~iJ5y^>21Q{}YwS53?LPR514)Z_hGyNr9-86}Aa*UI zq#QU6^&Si@68ODamY@^_U-?u{fnSYmdfuG&2OkRwCNBLU)8FiM-uMUxpi;xM{7;Dh zJ=65p-yRUa3uI9AG@+W^cx0PMA?!c+k4BTS`6Rpl07h;Ec(3r{`6wg8QpTTi zp_)v5pjuL>w364>q_4D&$59k$R~49jU{2R^`5P<1O&nlVbaiDh<9Pw9#L*7s`X)xP zUlqn+z?P!=0@JJ8S}*~hrU1~s=HV2aB=Jf}K!_QX?fvbyJVX!y47c~#CwhG6jsc60 zd)u})ryoyML@Np4s*<4TfA{T63aEn>N~7x-Sp-f&5XHsSsEjBYq82SJQ72@&fT&1Z z9$CbrM9CUZ=}=*5072nUS~0iNN>H#HjR3$!Ayib%B<~fas#KmeV@MPe#P1;!I!2fz zK9ULuR6x{Mizvjaw5=6;G#H>48ub{Wj%ld46bj*qS${y!6rvG&d;wKxX<9H}0tiKQ z(*W8o)F_Io6(B=r=?cn5goD3C@u@5{3u`0+e!iRRf}s|Y@R4zW)U6dkJOjY|#s_}b zyI38?QXB^X0WV&?F!ZsKT|go#-_$Joni$_eXlc0CvHLi8{EuPbKMt?gC;nwUZ}ZDi zgsGv;-dSDlOW<^ft>BsdswR5*PYBlRO>bHM0QsSBq47r)aU}Fiy*KRa_u!kz**$vy z0CvRnO}+?A13T=$zO~r9dqj@hnHhBV#yh?D4;4^*Fx6nRQg=FK#qpuxr!txuXXgI^ zYN>F>*7UxO;)v}%p8O6a1K#sae}49BKxPgv{{ZW0e=n))$XLr0`BL;R zhrL2h94UNqF7c;yTz}<}1>;f%54^{05_FU25#_w(eS??xY?nq7>>%$&gZ zVlbF}-~Rw#iSBo3(}HLn!P<2%`%2b|$&+_Ap$}0IM5;?_c=!f4|~Jj)xNH zRq59S<@^s6PPcQ}@%x+e`1nKgexEMeSNp#I09V?WTaz!K{Qm%-oK5(!gU`-S!@r<- z2P=^8RTXL5x^U)sntG3}!gJoJZs0S-jSNmqvi|@kcMte^2<_It?&Hq5sSbE*2oGy^ z?bi1%{ce=wFsr5K-{<`Id{+z8T>>I$U3%&BUpKX{QUKN z4+qmZ-^)4cKz?S&hjee-`$$jkP}1t^sjRkp2C_`{AQY48-Cdks%yA|$yldgmFsKz*6y z$|c86OQV8>id9E%nS-j6h7Pv=)HM4%t_-*)S;l{}55H6a-Wn~@%16+GObrn$)YFKP zOT`qPyNCC}QwEU>EPxaQKE*15@l-1q{TOkfPkTN2d|{v|RbhexiP=I)00;wWZ>ed} zquc2`IHm;Ew^03E>M9k3Lu_a+0-^WqJxu~PWFv}F3;zHDSK@mod=)iBCs>FMawOV0 zeIOr1fgEP~d)ZrTJa-kWol1#u$<)dYme95!uWeM6XQ2ozT=B6OCKVUL%A{Rr3oGEG zZ(8ovjpWt?W;~jpKr~eug%cFl8Q&Ky2L&Ht6G7P+ROd!f5-=i~Ak+$P0LQ}w5eQPj zQ7#{Hs8A5B_;jYH^1+np`0(b^LE>}?ZC}7yo(~a*)dHT096}T2j$;) z)M{FGs;Zs>5u0m|z-Ng8X$q;08}LPk)zv%@Ks7*>bbMoE7VZat!%ZEoA=A=eTBh|O zAXMZFZH0^5MGh-uw&VN=ZDJMN_H;c~EQC17IqfGG(L63Y!Vu>S_oT)gd*IpwNnBZO zBl+!|Tzqghq-SN=PqZxzH^vK)v=4T_{{VuLegk+aQLW&FHP+mFx#o-&-GLd%LDW@! zk?E;u71H7dZ~X%5J|(~crT4)b1^&y}quWoaJU@WjlgQgrW*vF0l#XHkp{0YJ?^|; zFjhW*f{BWxE0`H{_=1m4tpto5KuoAsF|5OjNlu9DjH?kB#_0;CM0yGa79P;1ilWrg z(*i(NAxDfcd_b-siApyYFt^vE!SaKE&`nQ)5So!>Bxjn{Pe?U=q;x`n)yI;~J>TEf zJn{4hURWO1OMlsM$>9{BWjYv-{{YBOajFR*63XA@?;igEvmYoTqe#R0?9D))wDOj( z5aOHk@1x$Wt~VK;_xv%xCXcxK@B>7ClG=0M{@eCXKDkhRkbO?BboJ6w4Rcs6HxAP} zH|ftIg|fYC-2VW!#^Kx%E?j>?du06ho15Zj5ipccDGVTk>t>SqBoKe{ctV*H=p9}1 z6g@iRN7Y&X0HMp`Khej()_nY_!6%bgW`T|Gtj^o%(h?k0A7nP);pQRji+=szzS+tJ>l2W-d}&(s1|0)#s7NNUqy}AAO-$8Myt>6Cuhx;&~ zCwj~&{hD8&{M*9>9VIy}%+WpPKg9GZnU7EBd*6Jye$OrvYVex`*mU+^+LyC!7#TKJtGXZ?qSzC>DQ)E`{`mYw+Fj6toMU?9cby{AKco(jcpy=l6Zn(uv_A zq4(ar041-4kqk(n{#^HSk*+BPX}i_>(?gx6UN*R$yI< zAIT#oXP-_+kKBK^o2g6p#x3F5_uaFsn0s^CDFFla-S=@$ep+|}?D~8iKD7O%BkRh* z($f7FY}M{t{{T-0RKZ?-L#BKQ`6J;pd$+p$BnSDNB=S^N6RsSs-)U9**S;V?MQV`^ z`ugJg`<@LV@x0;9*Dw9~bHWN*099KU*i&c_*uE%jtN?Yu6s?-t32EXg(5WvID>dRl z-F;?5-2VVKzkX*WeFCY93K`l^Z$ka{f)qnx&hZfsq5TW^j`+)nzVYg!tNW_e`PQ64 zTXSVVQpLONpmA=DUcwYg3bTK`01Omes)rd05ktFRr?_~?rj)x5in2d{7Rer?Z6J}+ zO-_xUqMifDGQWnsb?jIN=$>-JwM3P8m%9(?B%Tp&Bynzo&{=^^ zpx-S3DE00#X%f?B{RsHQJREWAy(8QswRzx-#SlfFl$B?rHRqf@0>lz~-svXYyR#%{ zjyi#bd8i^p4;DnsGY0C$2D-EQXN8Yy#OXHHf2{z$CV^mxE|Lza=()TqUjTv%S4*N< zbAMVU50@6D2laah0x>ATZA@TocoFaE1ieg|07|TVNI^!-KALsY#B318g2e?-dc+$g ze88zlO~9K9DmY|BEi(v*!BjyttuvsMM@S7-_Me~^ri|AG`APPan`#y1x9zJhj7j9d zdRDyy=7wWW5xhMxNyO}84gz;P8rZdWr;p^xEN{9d!luDzp^j7LdfrNFRgT~hR4MDz z(z)S+V!}%5b^S@n{SnHzA(>iSt)n6A{s^v4KlItp_(R; zYm#`$QTbv-%im!cJurMLfr)SL6%m}ealZU5gQOpA^bt4yo{8sJwux%0+n`7CjY*{J zyEeGVAR}Q=eNuUFBqD>Tk{{s5u0NouPh?`bKaIyivVIg|s>9N3iRh;MgcHJ&Qu3~H z3T)m}?K>G7QGmeC=b@J&8{w*kkTHPn2H-Fl+OLKvK}7{MOS;q$)Ul#frI?ukeXAf) zwGRw#h!GW16#5+;I`o9_zQn*J&<_v`Y94@51gKF(me2`9K-QCkh>sum={(OY zNLHwpFr{rkkg8IH!wXqR7+6qw2xY1`3-9oc{Q_0-sp)f67~-;3aq0-ZB8W~^Il>_J z7>*(yC1{xwgepdr1s%8#A}-nuh*UvX75D>KK42tOBR^8CuT~$l^Vn+D21k=Q{{WZ& z0I0y|k3Mr5(az=`Xi$Y9gESf4ea^F&%FKNkH|e|hfBsJt1Nb~!HTIzJ>zEj=7y}Hb z{+ha*?hj?ck7zIL{FS7?vF*mrmdww?_#$NaSXkMbJ^uh@cbIAW)qOfX2(B;FHPv%= ztYa!Cs*Al^x&GO=!ipzh=#f5i6w7(SBVdHnslY3y6ooN{{ZJ|Ur&i!>rX|IujkzB&PtfQ8N{dg zh2!gwX@R!0=guzMeGopreUgqZz1eB`?EYHSpj$HW0fawVhEB7CnSsx$`lXU`*b}-FG0N|hiy6LPv2givufLJ?r5-L=Fz7&Ga zUdT{oMF(>`bI4Z|BF#As0&1_TBz%`tLQSE!q*kbfFo<{|g5(nm#nzRL-_?U`R$?kU zuGId$>wJM7D9GqU4rAz0h}eSwQr^}>Fb$SpO@{~}(|T#X-%kGk!Yq!%Ad6+J20J|o z3q(9aRUsva?fYxJxA{5|R~5r=Y>xtz3KjDmE2}T9n?eoUro8bo4F3QaF1D}GnLQm; z6%aHEdpQQRxZj>?!fLJu`^W?PZ%-kyHCyWojAO+A0J7Qzxl)WqO9p(*sCw`b52`@P zSD*J7!v=_yK-%7rRFEib-HN(YKD=VR2#=z=bxM}!K+v4_47qt}R3mVUIGYRYB+SJT|nNOTyWxh2qdj!=l()-9?5i$#xV; zLvebSR0t_VU=2mm5ovhg4|?{rqpCbi^ufaJ6;O?VhX$w$u>QIbh>0{&57#>+G#3Jf z1~^)P6h}a;3B~*!kxv+9VgaB)q^Gf#?69YV6f>rK(`P`;ou&caz|AEr$swll;p!5$ zg=Dhw%hvkUS~tWBvgTFA^y9LOUit~`>?Y0}biqPGs#)-@ zY@sG?{I7*FnwGn~%q5j+3aqjUI6xCI$X6sIw*~QT8JMf3#Yq@+LiX{(4J+9;Y@2iVZJ5xU22x;x1 zoogD?IH4oH8-@{4qY@2pKI;6D@@~B$Q4I;UNJS^8co8Y8%U-1_l2rszbR2a=66O{K zMu1A+Pl1F}Rg4f8l!;W4EV4XmFiz-D+@LfZs?ek(1!w-fpB-zhP(-Y0aBH#M>-Ctq zpsgm)3Dmr}IS0qe1q=*Si8r3XIE&&kQWQv`hTEQrUOj*$IS9S$T(4uWIG)S|G@#3V z0koaXdeUl86&xZ2?3(w4P)EXoU_FXMj!DAM)#9TJ2|(3sj4=XQ5T;}WR52fun83;Z z0QGNxA*?|E0Nd#P-lREJIvJj~bod_M8j-TKEY{kpq{T40ZKkc5r~I zUNHXvrYcX#+}FT`5b0Yx5Wi zmLAoLH6JLQL7{r~P~TvvIkKrzHl$7ppM$#n$oQ3EIyh$@J%Cl=l+`HqqizGgjWXx2 zUK&TO`$_qIP?aWlCJG>)y}ZtUg>XDlCRFRUti56F`tY78V&-(qI6{-IF=H2-}pZCs*6WRX&Zf|?&)l=K1 zoKX2P&ts|mw)oJN07BOu`vfa@J&9zA4(*5E{{X*_T3W4F-E{rjin@o!%JK8DYH z_2~Zqd?ZWIjKBMx{_OlbY5@bcefOOH>)o$`;28e^dwKcCZ+AS}DZfd7*ehu6)bFfB z%d;x}v)!bY4jJQWE6?z|KgXYXcu>d$NBs4YYUX{g{ucVSI+^Zo=llY;N7sz7$I%SE ze;@-?0i@f)dOgmoth2%hE-O8ybGz#{3I33H@Sl|b0B06tRxbFo$Obw13R2APCuDqV ze)9hStcHAQeeh%Dv;P3VZdzIY0K7ocF>IOJ`(Y3$2a94Jk>ae?$A~)0Rq%$}PEH5@ z_v<-NzLRc`$%9Kh9=-c#fGIr;KSpvtKcl@;3`02-I>OTdMycBt3kKC>9M{GE2BnGS$)6Z&2Z}l=#`=UrnrO?14Q}%Uk$h2C^I%fyEb40i&;; zz?q$6Yix%CV+cdQl``c8VBVJz=M%-vbAvD=eaAK5uofh=3J@tGhYLYDQ$m0P9^!?s ze(Qlci{i1+m!=WI#10I=z3(hIWYhkR3}ng{fsfP{~2x59^3MP0RU z)PW?1YB5qI`$KM9@;M^FKs-#4z~w>$r~s;UG9G{^QUxFZVtk;Tc0)J6z91=ser(o0zH)8zWa8>!{!og+ z2^}&kLW(fFS~N#)b=xSOHr9eMVN*cAu^!d61f5_`_Imb5Px(Ad&N69lrZ4{h3C-jMO9O!C#bnego1ZfN{2gr>l1vD3O?L4 zGy=A;#HM%vz(G8x03?=3LO&H+5+k9hD@4{tnFJz6MJY9C1_2;#ej+Jb=+&YXzUi(4 z=Y<1nN`MNPs-$3COm(73xPfd0`I=v2dO#IW1YU9(~I-KAB(9h2*SBm)Mi`P3p zj&sO~Schc(F@W3k{{Ws&<*pLD%&$S(2jWw-F8=^KpnoZ;Iw3r1M-di~;5aw<>^A3_ zNYNHjAP~qq`N;@*07?Lzr6cN0+Etey3?GXF@Q94!17%NDNXEqSt7mTf3T#xyA{4CI z!Ena=eU}^ni&(Fx^Pj_Mvpq$l*JAv^y{YfzvQIFFQ$A+yo#16S>#Nj4Lr<4tnvxBhP-5xpmsZAsihuUuX zb^ieOMQHHpvwxE|QDG(DDqmav9+A|pS==wYi1i3Ib+f!n>imzd@#p6FL~E9z*l2X0ht)P% zD&Rp1S?~Vvi{{R)N zZ%{(FfL-?$&~Za=Adm?lAu=IVDRa>M_2SBrkx8Zr@lC;H=YT}9WYQ7ZdPo@2UIj=L zodBhI#Ep6tL60m)LjM50c=~&vf9ge(RzjYS&+c*L1e<#&de2bUSVeR3V1V8mB`eIC zJ)p@v4uinN`se(0k1#~=7Z(L|3Sn@AdgAX71WKRk$w}>utB`jvx(L@Ve|^v!qr(A& zQ35QqR$B)!?@;EEe^`m_AF~7#lP&<^06H(Gdt}`|U_jJP)YL{}0?;N51@OsX1#8P3 zOoS_}EUDsxr2_9r+8U8esT9~ia6m+Q_C(>pg&07`z`&Np6=DidLBuS&p$!8FD=@=Z zt;+D|m5)fKs}$cv`Tk(3P=ppgrgLBLn!!MgXerdxn|06CJwgOYN4jKz(L&7jbH(ui zaMGsN`R^HhcZ5XR(gE@UB8^~yguVTaJ)S>mm@&BW(1>+$GV$*9VbLE;b30D)ew#gic(z|DpLtp(s&e&P>KrO3!G^PL@5G70gGp)LxA1j0rA+xfa9YO zR3ILorUaJh0@OItxWd#-Q1K?HwoPER3J?m}It^X|Rf+!q>RP*fZpe^@0x7Nh{T%pQ zzPtd!UkO18R=-9w zJ)g^YUo2_RNCuy^WdwbO`%($W2@`Q%Nj^7|8R0}~8oWeNOnsMN59f(i7XJV~C_9HK zNg-b-HU2BS?T_@sr*81MO+X1>iHR4}o|<%jg~qRteZoVQQaO)pYE1W93#o{_4|$TRKZQ-G#ptiqgu@?j zwp=y?iHR?MiNy7rd%mXa@r1!ZGNXMKK}qUXORMi zs^6ZyqrluJtoBUp+V}--UKdj*f+|dKsC@a)q%K|Zj~&eJFG?Qq=j*$}@duBm)y+Bo z0G;wQ86KlA-_MA8ci(_@4I6QNIClau$=vauVQ&!p^q|%h2=G>glhfY^<=nrWcB%=X z1nB|(OM7`bcp{h?_22LNnP;siY$Yj9ze4AK`=vbgF1-Rj^qPwO%>BUUb{@II(Sm(` zq&kJyoYA-)+sx3eHq-7antrnNhc8ptQb?u;`KScmE2wpzP!}+bjQ01Ri4xr3A&h!| z`DOnAz$4QXA}K;cI*ubCH6_4pnu`TE3e)k5py2kCz=_D4$g>uu8_Gktg6u9{Yv_01 zyGpL_i=$aYc3_lWwEI+Vf-rzbiT#fzQvU!Hd~j$XLc6ps32k&KAO_r2pg^W+F@1#> z!W1)k~ZI)zdS~O&9%0xPFNn>Q8n;Xs;#n%>Z#BE9_kbzK_N@cW)H1$ zs>MhGDmQL{sAr+-CMS#GsJ14YM(A8kz8C-ky%ZR1oN&I0G4VKnbV?8b=rh_hRpKHL zAP|_XLS9=tEgu}AmP2js-O(|e7%AEdN;Jwp#x7T++9?G=q|1W@6#;+yex|R7!eefrs#JvPM&3<~fuItSz zDWwoyz;c8!{WpBktC^nLiP6Jck;lN63-|g2-Q% zUT)ha89|F`jdQc##|U3wzPflMU5+!`-PEC~%5Pj10BG9R5ZEOiW3`Z?&bs<{P96*`WD5Y{_J&Q48Xh18t7stLg*z+no80h$hB`n_9_07`0HQCI z!Qpz^;>~EZg?;CRxWEV98GHUz{m%(OTKo3^G3m_L-)`8i!W90ihVuRw!xd~a1W1T` zAU$1H9uTxe*=B9%e_v1wQw5}j!5WVWey$}{3`JT%mVp2?(8hHJ4nF0aP=hK|QZ^t& z1MCr5VhF2J1_S~o3I-YQz%qzm3pjyDTQ6s~-}2!CRDm^GEdo&B89?eA41}uKfuPb& z3&esQkP4$1DWUiPN&@&~q+PH;q(X?oP|zsBKtxnnQx!r%;2we~eo$5oI7eEbn}l#^ zR|Yg&RSBXK!DLdUgA82&nICLbQE(W8Sj?Lpp8an4NM&G`Lm2gEsFrl6pJYvN8D(R% zA71&sFd10Y*-w^sd;@$yVc6gQ0K>NX?s}N2;{aJCPf{D}@5*?P-PUwNd$Vf&E2ltc zr{*^lw2`0IUcj^f!lQV-oelP0+gqnqNc`dL*sRm!8$2qq@26}E*=3J=>R%mVWMhJI z1oc+?VD|Y2G`%nu&wTwH6xIMbZxmxf5sXSmKRQBQsanmcq^RRpP$LzbJ(hVOPDs^16(i?~8I$B`MBtRujw>ghx=)S5R3#=vIs08ix z_5T1)`EGg^>?@_F^CveCFsAJjanIdDJhOgpQ`(lf3pozn;$o4h&=a^3u;*`W6`hTKfeyy!H0?OLuev zyr0Lv=knnvl9BfAedoBnnSSFoB0k=)ub=+_F8+(O9@Z}f{kN3;9mC92>j^&k+{N$9 zNce*rfl2OGPyO=(&f)H}iJtO%Pi67~t|lL-NzP~1-&4TF8F9ip_AvhdsRO{UqT6F} zAAN9G`WNm_h$#>5e+=cFdMA|+VcgL#QX2mNH7VaJ&qC;Bzx&fM$88@F5%I`|jKBO1 zrh6}?-eHFH=IrHP;=U_rKlFjl7wP`*;B=v(WzdKDf5c$Ds&q2R(Q~2G5Ubt&US8{2+XqXuSYB z(w~TyDD^y9B#5@zUzcM1W7Gw-0@STVr}i}7LUhH%Ep$9z;>0iVUFgG5=t1c^TZJx| z4FjqJrOiDOK>OC{w}W>GHxJ3j@<|V0edFFg#~N2!A}jA|E7+$(sGbltwHN0d56q*sAo<7838OOY&WcBvvr1up z+MB_@#M|OTC@c(M{gfdQkF2kRzd=)rpUi8Dn9JftudK$o6GsaBnB(DNQj`$xRP;on zICnzetB!uEw{r)1dtU$=K87pb%=ay<_OFPg1PaNS-0RcjhtWVQ-3YQJE!1_C>iJy+ zw0%@e&USqLo(8@37voWZlZDPmcn25n?yHvLt3Q2RiW~MD)a+5fH$J`b0-cf3Q3SXB z&rkh%AeXWO-jGBZ=)G&;tdd4&zT@^F=*`3BM_HV=-Lz(ZVZ87HAPR!&P|oMsiCcVE zB*3`@fHK%koA(b0vk-z_BWJAkPHxW<(OC*7-eOJ-=HNv{k}&m|_|Z$=Mj955-on4} z<`p>N-AN-Xy6^Ch-S-2*RicryA82-#oU;b`Js+V_ImQ4Y87t%o>|d+RL%+J{OX41q zAWw^iM?$W^91x*GP%W*68y2Rpd==1a3M|M-dNrcHBn6T^ASgmGDo8C9DQk_ir62wN`Za66=-n(S0e8!pJ? z@B{#>a9V=u;KK@{Dvdododf`ETGb&M#YI(02{eTglOqH~MkfJ}h))qAgaED61XwDA zD!^d~7d;F|C!=TS+FkG#&t^zZt!L=#_}?i8J97rtJFVf>$Hs_UO=^CghIC&40AD#3 zXvG5^mpM@U@6A>0@BDw)Z-v%mIu;+MGu8Y30Mr*Fl*g;?YVLICQ*QHKd)B|G zb92RnM(G0SKYjHp@$zVbh{$~FsKB(H`8*)fDq`_{zV3nl0G%H{u(V#MvB-R$ffOg2 z5eBd|2;^lQZ?~X6CD=iJ35E25E=A+LMWAFV3ckt358t2Ks;pve@&5ph$3Oo7pcr0a z{^pp^=*`Y}Tc5xjKFc@%0J5?0fzkZ^Nm}!)V-fQ zpE75xJUF0BOE*3KYkmHy;gBxoX8W^ti)ri1qWW*k?_ZDXOOAO#McL2X{{XNr;~^t@ zbyAd+`J6y8=f}f@Y9Lx={LjW&?O|g9?*6~nzx%+ykDwD*zOLby9^dbjtL$9fIrn|P z^Is@eOz*$(O5S(j%tR{M5B~t)blLBqhTjygmk?)I_dZ%*YLzqkDN_csG5-LHf&5ZK zwx?Nn&;0sUK~fYf*SViI{vCgpBbh64sqeou*l;t;zyi^Ao}X%; zBa4`8ihxa4z3TgqyX>3V_!REfveU6JvT`Qa>K8cJp)!9rbVRf*>z1X^~(ohz&B-@h2leNwZ4 zYG)TBj-Eml{weU?bKAOz_V@x7GL_PtM%J7I>+iu(UZSjYbW3Nr$MeJkofasvFa)in z9eevrap*$Oh1G;_uD;kPR)g)V&q{A8lpg@%BobLuR1C$PQ5v<#B+#K~^2gH*LGV07 z+MTE&A7DNx?#?4Z#d3)2i`csJJKrgc0O(D$0w7cM{5*gR6{)8Y7WS-cC+--PH6i!Y z9Jt9F0;?5Q;?cyS;7KpkYz4W^l9{TuKW8Mwwfj90G2=lQzMK!(zQ4DNo$0x*8p6{eQ z{B#+QEKMBBLWiwL(RzvxKn1G!ot#*>(O}hr8cTX%{-p7y2_hc&SP0P{U;Xd`(85RZ zOwYtxaRujPj2%I7h+w14eHSo27ksgl5G}Ttg_sxk69qL_qhfvw=)U_bj^$!kx z!=CrXX|LmCH{6h?t^WX?X3WFrMT2HuyZm>+$Aeo%4Si@8eYp6Qflv3?6ds#$Hm8e$ zp-`L1j0Lh(OT}mc2!LM55caT!kSz#?E2<(=RD)D$=c^&zF{|vn&^0e zz^J7uQ-TCSqIyB(E{*f2L1&5W&mdhh=LfB7r1Jp>Up zzirR|0MzoJ`GK!y#(eBwe>@E!kD*>0>G#j?zb_TA5n{aA+4=LHya0*orvp`7JNEbc z;;SNI8&CYtU95R(AZjPG^J`7!(n!C)o#lp2>?3!-4Dca>r)(XF)(AklE>IqDKG#~M z{{VeE&+j%h*7fxxnv?$k@$3&s2|yuSin=0FNQ1 z`knQsn1G~o?|&=Lf6rP8g8FIw=lQ|c-DQ>oZnzhR^7H=y^E`OXEGEz2&B#x8!B+e~ z!3?-m?|sgZp=^Jr`Rs&lzkfW84?~7N(AP<91NHF&52zhCzQg8L`g5&twzH!-wcqT& z^nBSEzS%wf{FyfUFNy*@d*6s1zkj=vJi*OCLNqiw>}%^MKzuAO%&aqMv(gl`B~E+kCj89T?5u1l=tiAMLLQ<{Yl@)-?MoD$P~JNRGUZT zHzs)<>{#>spZ2-JVX zqj%}__pc8eWvY5C(mhzblRv&Dy{%;F-}H~@bJv0nMg+l6r01+UwsJtvRUw)!!KX4;~hhB@m``hl`MGZP!h)(PJxW4o88HgZU zDs@f^6J(S{s5A#k{Z&$WP#~%T_>HNGHZ%k(xe0XY`3eG4-2+e?77RewmqCUt6zZ5t zjR~v4V$^R1M^zy=MJ*X=kV>Cn44ERZz6-m0KoXo)pSZb~vd9B0Wli=@|PA zE`0BPUvU`cj2N~x3I(xoBaiB#u|knha+uhkA?;Q0ZnYSK-T`}^sZJ3#>nqn_nI zhHXr~7Nm^!@6Tzb#{gKTf@>p>*6sk`Kp?*Z9Tky7>*o^5t018kDlF67CV0B6I&1*! z9BCi-<%k0GEHGFAN|?zNNfl56Sgwo`XQs`cbPoXvk#)6%)l%I$lOkxL1gN`iyD4km zqrjM0u@JoyXIdKTF_F)uUt+)nxN5xka5Z;SPV4^w`eL`WDdiF8`ImIFue0t$%{ux8 z;^3$APjFV6UX^kd6dKjm^R|DAFmo~OPhQb_e*XEOulM|W%nt9a?1rWo_O@b=_7*h{ zv0-DbPyFZKoPRgR8bG%RT)#y>1DO-c03dGW98+T#a>xceMI$bIeRTf&{{WYK4w_8h zx@RK?^NRWv!~!@+5edvYG+E&yBk&Y%E1=QzE`_c|39#rYF7=D?e>?!H^e$lzA%f1Z$Iwv`SaI|D$pr{2#NXYdO6Q`2%%|; z0Ll5Apq`H%F-(GUbTC^+$?K0Ck);D#j^XR){&{mkN+d?61uC#Tz(s6THj=EI3OWaj z#0V}8JryX(&@)u57Lk|@iLtLn8Q`a@B4n0^|#*iVOtFbcqAQpI{offg%5D0k8=HbfH_*!S5OKtP_Rp^nFv<0kmgg%IIE zEL=>CIZlH3E;50o_{BA2I=WyRY8Ewy9H0j%)mU~U5FCiBgf#jB;%P`Ct-{q=9V|m} zq>s8&$BiVvpFi)T2mT;55@Wc=mgd(!ap#obqXyAd`|KyX{{XL=HPeLCd)`CqUy`HH zg}RV0?-f5C;e3V%SjT>&{{TN4W?&K!$cB~YJ+R-I!kCPlsq7>jJ`-~y@n=2P<^-OJ zdUjIhi6}4Z*Oi>*oL>HUROn}+hcoWmaBOFd0AS5z{{ZRzzRrD7RtVPwgo6qFaQxsx zGt|EMu$uRz)WvAZUNvQPFTefzd$$WnMW55}s{Q9;>>p2KzWq(flhJfb0dp6>Md3yF z$=|G?D@6^fr?=rP(>y?&T^s9r{{Vgb-jA7iJo9<|St+2nE9 z7qoq@zWpAv=Y|ngqlk&#n_unpt@71T*7s(AKiyx?G@Xvx-*M?R4^3CF(2R5{{{S=7 z^W59qaBY5md*j02{{VP|5pHY9e762hD-Vf)H274_%`M-2t?T0`pKu>VGG2at&tv3d z5_EI&2RZ2Pz0VN`Ql{etDg2u`HM%}6O8!4r+MT)fzBpp#O6L>b{{Y7?I*)1udo+Hd zeGvZeqByGFr%%tCciqnTs+hAs5-BVvqT0mm@Q0P@AM$km8g}_IpFkFRpSh#=pL|)4 zg=&7;Q`Nrz0J%tl)`fUmjUwu1`=6#Sz%61=^_eoqL}iWGJ` za{M!aFkdc~iS4|D#8qeK{&`}&yYsZtOk=cbp4B00E+2bUx@r%jaD;<^7W*;u0f%AS zF0V?VFKWVy6s^x->uh2>2Fch34Of7TLs>GJ5wKAXXz0`oP;^W}@>S+Y^bOa`DiW`p(-u2zv%OAXPkGtWC zXSG0aqq%?{M%`Z_qtYhly`6-QBnxPg1tPXVL5$G(jPEg2gX)4*kW@P+u>w(2E7HPE zqi=tS(~yBQdK*G176H&Gq9f6ckiizXW}LdkaBioHl9YQI8=+eBXP_~-rBOqqttm*L zP>d51Z|DYqKmi~mr1nj|J#;9joHagcOZXzG<9H4Wipn7Tv5PraFNsVBtN#Grwxe&X z!@?mQL*3*if2QU|H%FolduH)D&TrL#)l6F!d;4+OQp42o6F}CMB7pDBzO%f$RI<-p zH*V$a_s@I{)b9TPH~#>;b{`4>p=kU*ItT{Xb?zc)ke=#f_4zBF zaY;4*0HRg@0ME%w;v#@RsMcXlaX4~%o;!#gJ(e@w-gnz1R>bs*Ub9e)>ad&l#;=a7 z(2nugwyAie@w%-TV;~*n-}cAE)F2foMm2G8l>v5usBEcYM)a=0T8R>5`_7=aBKjCn z3=_OkgdqZ85Q0!|e3*7*uFPIMoqNm7+R_wkXnEDmf~s z69h^DgUlc?1p`4q86J+Qk47k>h9!atC{Rl#YY=t<)DLS#PQ)aj_A#TV@GJh0pc>U? zCn^9eu_k_(Jsbp2J|Rd7x*bbG!dFTYN$3_Hf{K-TD&xolLOG(57V%Dh5=Q{Q8PyG~ zPf4};)_D|N5nM&=(BVQrFnD}HPRSV0WY|+|Vpv7PHfZCncVOytlfZPcsIrTY$mHuI zPc)#bQVV~RPh|f806~nYk4bS<{{Y{_^+&X=J>dK?f2ZwuJ~D||sdMe;#`Xk%I)T*J zbJ{Xk8SUSPfC_3nIQ0PJ3S_>vNis!_(?r=aw{_H)9fw`fZL z0MMpfmozaIRfs|N)q?VW){Q(c6Q)-pzx8hN?2(BoLfyMJzt7z6Z-dMh)u;a6fA>k< zk3b8DzCMrNf17kMqfh0fJrkUSFgp_tw>m5_{{RcpbJaY;l4b_-c7JMIgy~W^wCSF^ z&+CuB?K&L6eLnD8r@p~CifTL$Vr=8R``!5PP;rlUzRS3W31@r=KZmS)IU11-i-vfT zJ-+6C%znSaT=7t*q(d|9*FJyF9wZ@t`l~WK_qwn4Iy%_*-?YpB0JkD|GeIUWr*@MM zSA=gA<#S>qsrfx4PxAa@It)3Bm$dx<0M5Q(9<5iotU@2j`5KhYxIUZgB?4bzq^FSU zm;V4GJ)BMVpS~1mh!noZaZV4q>pN_c-ST7ZOpZRpvIwcrtTP@pKpL5hS*K|%8S=?a|@ zBdK^KF{hO#6#zyTPRLn;poqI%1&p5n`T!o2AJ=`1oX1BI6|!=6t=@2GW8`k!J>L zsdn}3TB(7MV2BUkr9#%A&t#eaHXs@*H#G14(0o$Dd>M2~Jv_W&)5XvxFThF-Q4_h| ziQ)myv7}HTBVHOHaI4Kt(d9V-> z(+dFj^w4BV@z7MteIvvXQ%b^(pehC%f$ReMix> z<{oIQGCdk`Vv zu>NBvN7(Cv&j8^7JC&UE8-8{h;3f@cBYnI*8gRa+i7Fyu%%ftC;Zf!iuZ1o#I3Q#G z{N2LK<`JZDJ-qIkZo2DwIH*~((y1JWsEMBh^b$qds$N@}nV6zshybM_&V0=XHO7iC z(yWU~>}*WS8^T`-OAG_Qi_=*0C`s)gs7hc0OO0*9cY5*E(orsbSefnniWv4ldxjtB zo8BhDd~N^(>GyHOC}jMe9hEUirw`XoP&9{-HmwZ@S-#8p`FY?)Hi6T>;x1A#et7Ar z08ACpkN)(_NDfF+#Hw(6>2BuhUkzp>711F}zyAO}v&r85Vv4NnX+q=jIFUK9je^g1 zjH>(^KqcrhgegQtM+P-Ufw0gFJh+nb)l7{BD8K+>E6St9hVm+a*nkf>gNH-Galil_ro1f>pq5o?!U<|5LRiERl4CNX7a#xzHJ%d8vB9OUW+0S%B+n#p zgh)~(hA?y>K!)`oNXE2La1s9iP;My#0=cR0&4@sWSHo$6V1aXM0z#>SP@{x201}m+ zt6n!*}8_oTRJSvuyZF18i{oj4x1VugkyL!Cl56|%+h=eY`^(2q2cPUa9q^Kd*%X!%wiKLT%r3 z@Q@8b68ETIiMfRP&G1nkY@NQnAK(7~4?V7t#(eHZsGnCdCye6MynU8?1$~~_4xgp^G^U$inT}Ir9Fy!JAIyDi zs)eb}J@ zH7xmu`n$p`^VvojxYoeTKEKgVDHgPq#|3zjWMg`sGASZ}k)VoE4mD`R2|`Yi2wI^f z%3w3bLso`R6Lo|INgxISFlsn}Nt6r&28PiqK%(@JRB((`MuiHI2sP0o0)m0DO*KgR zCpxu&My-QTSCL`J(YO-f8^^HK+h=TPPerFC#QRMj0^hM1oWzN9+RPdY;(-aP22Y2( zjBF7;paf_tcS(Ey0PqEJcra0pte%rGj>kO)c+EuG1`J2?6M`-kC~0-#@fzR$f1-Jk zj(VUEaQoPfj;itq&xCq5S0Rk@i)Rw&wLDc7jRRkB-Kg#Ybc)+v}(uz!) zBcPE+J5HImj*R>00PR=W!Y?Qj?VUhm6gD7bRg%lJ~^y&i_ z+MW+kH@dm%A&@fZl#h#~iYKsyZlBa6`xLIDW8w~R zwdbVy6Ml|EloPiBg#~IkyI(_p0TG}B2N?@>mzzEmc=X#NiIwK0{d4hm!BL7b_K?(U zhpb7Y@r$p-7KFZu&MTh+L7Kv2LQ0GXZiUZ`)51>EtUns8T)b@`}(AY z$d!psnJ1)F-cJgNDt17eQ!m5s;bM>iMrcP0u&6^LB0)TOks#O$E*AT7cr4co00jY( z95b`<*VEw|t%suJKllCj)6B}K4eDDTWWnC+WEzJT6cJWE)gg}ouZ>ojWSW{^p%gGM zjFcrro-CRL3?z{8$*uC(p}oSFLf@BEDsFr%=c6JDln`VA8o>B01x0|64-&S5v!W4t zEE1TY_#tkYPPb*sD5MLk;vp}%qo%42Db?H`2a3WKBULwq^%)O?s*0)cp&F@Pw}AMO z(8QZmNPsjgL=4h^c!2<9B|uQXY!H>2@;2Qh!Gv(gKyno?g)0UH(TWNM;Jkv96eaKh zrE)>35S~s^0RdYtx4PBgGs$F`F_EwljKfIcaL`r<0JYMDd1^-mXnBADMulo9RJw7> zIETW_qP^ZFb#+CmG14kf6-Jqa#L&WGh1QRcilH%kc4N;@QTI5y)(fJzB(v|!%yReu zQEGrY^}pDe0dSr$Q`d!ed7Ll*06uuZNRqF#_~)$;?%nZ7Nsj&pri3ju^*z2ci>Zhv z2Miajo~|qk6!cGQ{LS8Flh=xZL2I-95B~sq_1__YgG)Dl{y_9PHGKXEUwOJ*kMZZU zXNSxo73Rv3BM0G8SFW8SkmIxe0QC6&`9cDxD&Od-e5ZK{^7~5H$S3V;2^H7hOJJ$+x~!< zUmD3%{-1u#{(t;D5de029_}ST>|Q-Y)sd>=-`{`g@IOG?VAmoK*KT|L$Jem3G1`B) zehu2+{tl}VA$>vl^~wJL?HD0fkl}mB>f3j0^9?K zdNuqU`{t_hn3*fQzKTAA2KfbS0Zd<72=^Z0xOzrPLK8}U^X1$A_-#a6S(UGJC-46N zd@vPm$QXUTsqlY@K6PfD7pa}?f$nrwu5U+6c^~xu6w77g8*>B z5kYj+3Csd5z!6s%(WV1eU^_7Y#gAz?tzO~nP~oS7w4h2gOFt19Mu<^{s;MJW9H3|r z5fnH~VuDAE0DBS%q(j0W5MxRah!5XH$yI^@)2Sk0tBt8d%K2)-J-q|CNFon&y@vz~ ziA1_CdkNq2f)v8ks4DK;6IfrgsRdM6&3y+wTPX=3cqO$bnX%pXj5GOsxQ87Qra6~b zayS*ql;b6H(5^oH7Mw7?i#{>|U@`MxeI@)1_dVWML!Jhtu#IjsfJR0oIo8rh z5QPf~1&ESW-MDCgf{O*_HXtdK4I*av3L(R#0f23-cME=^s>K&W{)Xa%O!OCH4PbE! z$z_y?{rqh3oTm2Q?UT`yU+)KcxF)=tt$_akcD@$Cvae_2Ja;2~AAB}xMFi!j+lM}c z39gQo9ytU|Dbl@yQgkYy!Ac=_qFrKTSPqe;D^C5#+q}Dd(1#!yby!&>v-Vef8ljjT zEW-6C)ZMkdNmGQW)zBL5jSkbnw1l559TmcIM&fUZklg@`FHf2FYs=uE2X&`S_gRvE zyQhOFgZ5l=og66L49^J+ofXAn%RMTlO8^YE{-1p&IrJl3gz+X~_tZTz`w)PM)decA zw%_^eblsb;uK=*$^79!s{is{^F#zh5WdH%DM!pD;AA3INNx^JXQEX);1@myo_t;`RO543(!F<`Ryi6A3Y+Ng6wa3>N&=T zmI+X161`ktYH#FO;27(I=Eoq7c*bhsa2JQG7&CA*7GEW}8#+@f86NCUIMRB1?xc(;5#$#g-(zlgqC7QJAZwKrW9yUtngW_k>b&+6k@8nTzCM2 z)j%M!AqF-Z5DFk#BnjYkVZa3fSNKRtYaSvv6mD5nOaxxgf(MCMa9!9o#V|^O6=I4Z z*n+AeNT2|8BrmG45@=9T1v>?nixUT730RRmT9<8#X_IeZwkZV_0YG66K1T!t(1d7` z1j=;2i2#cVj8)hQ(!TDq!5bOiB^(x#g*q?}jZnzw8VeN&C{}==Z9%eBiHIC&gVVtj zL1@0wOerM;Pa7x`3}a_TR+fUV5%P&cjS@Jt-N!8`EI`541{ezv`kFNZpsNUieqsvE zLgtz}lqMds+V$092A^aV;s#?fE>>$H)3cam@-0WLNe1Wcds-Ov@R~tE6L|a+{VK0_ zJQa|C4|Q-2?|(4aF(V3%)*}n+8?tw=zv9tR#R@SRXnLnIZv12cfdwCA8+~ip9XSZz{{a4<=9(V8b@6JP zrq5+7+cO?v_+$e8ryrHc0>`aq9pWj{0q^&m{72t|Kscl8YkU4#Ut&8+z&-x}?0=Gn ze|QB@HG_SB;*NWN_sAW}_dR{S<*mr`qKivrVQPSV=7%REJdI8Vt^$-PXZCuJ@6af? z@weG;HIDZ0fl$P^t zo&gWuvdLWh{{Z}%;G86WvRn1fPx-^fifN)~KtA>n`ma0VQ83r^dvD4W{{U|JP_`Q* zAD{ky>FlD5qO~42mfn2-0McZ;o+1Pa90yiw%wM4>_>BT8#1YU(7{}kd zCzwm9B1E{mQveF-BNRv|Y7iJAHFbcXAvHw>>aRe9Y9k0}#5byN*RfRK@ZXB2LIfZx zTa8RJ76%|42niJ;)gn?XLkjpnr_~V-go0Fos8tJLrpXX4nX|Mg3Y@+iK!5?yl=e5M zgaH&7Q5}xKzUJCuQ`zHyoAO;&N@lYtqif^l!~;;!%51j9mQN}`O`4#zx2TUAlWBwe z01;~z6ft_u9}GWaO`=c}t!>D#d|ZKuD1o*+R@lfIci%ux50FIdA zzWjbbN;OjGj2H-#m5RJ{!GV!p)^&QT7eEvWLkLDA^6faFK9>-bAnb1*<=YD-6o+Q8 zsoBEP7Huo*k@(6S^vAoGv~oO9{Rm`5Uu>~Ob}2o`LkURHE?=IK-lO@nC~TY(BhR=7 z<+uaSLa4KyzbgL#15>{+^3V*I+>C_EL+q&j0Z4wXl54M{n$M7)IXO+APr4{~;2nHP zXx$Xsm3U7@_eD-Bi3hH_rJKoT{R^H5FzCeJravXHpSk1;mOy1UrT)!r%)*GE5%ki0 zGoXX~kA4HCwgKuFCoeDwzPReBoj|eW_#N-z!gwWcw3x!a(Mt=2kF&x6P<6vk@_ZIY zzdQ`W?aKv3=V0rwFf_nK;2#-ZT7Bk=e7X)`M5p_mW7%>vJP{Tu0B`rXf^W-n${%V) zbdJqTjE#RNq!gis{9>W6+3Zh#cL7(eTXgHez~q?aVj4wuI0yhH0x(+5KtW(YY;`nnDjpPp>Qst1+fbb`j8%G# z00pK5SER=&MRbrHRS1EQpcsG9!1#)yg9)w$3c4eZOYDxclR=V!x7kzFKjI2#B906& z7%7T6oN?edJ!(&8Rc!zeYivlU5oP+(iFN51bZ*N63@@pF0#tNdzMZZXYM@Rd?Aa_o zv8Z|6+kX}NolM;^#9QGMG?Wk{rVive9nkXedlxm2+h$e+J7-o_bTJ!)>kiJedm%8jTGT5 z!D>J4e}}!|AoNm+GOT1lhO`JH7Z9~-9t%{ar!V-B6o4#v0T#gs0eV1J z)if8wXcL1}iJ~lqlcgR(T8bL;2ARZRU{t~c5tHuRQswNbf> ze@Jd3Fg#-Z!D>4Qk3*MMIg8H$0K5j6dV{@O!^_bXBl=6PIIVv8;_V`O1lD1VuI#E? zg!>hJKZ1wi>x2l&G^uRiKrqj98^hzfQ9^vR4u3N=*wyebX^>!lSmT|e2qNDXq^dPo zhQ)3}Q78x)5x>BK^oVOlW!F34Fbe)7gx^_1iTOMRiA=-`s|^K-ZiqEj&($jfTro?ioPr;rqo4|HKK-yXuDi=p)qhwS2Ow32W%~kAl(EO2zR@WjL5MV%LbD z`pW=MOG*$lOtHh6saHH5C=YGar$4O09J_*Il|P0998Ue8s)vq1YeUy_pXzN`2u~ri zwpNv>Mg$zuVD@=tBwup9Q0_<8P95+OBuLVs-Raz25s3K+5&#mwr$Ew}MT`(UE>y1_ zr9>B4^!CqN1ccnCTSw7*eX0384#lN8RkEYMBp9Pp#j4miAAAEL)%c4M zjbdT>?~jPgw88G55aWr@cn6DL%$v4IiQ4@Nz@7?&Qv2N9{mXuZOmgQcSszZ0Q7V5( zCxU|mr$!uqWbT)k6Wn=J-Y!Vlm(e(QOq$*G?PIQBz?*))8g2{L#V5C%8&)8kNp3Z+ zPh{!%Bpc0uF$+p)-az-rxP2l{8(*M8W~*mO!7hk~_beUQCKsAuhf%WofGYn0BttbV z6Qxv=lroM4tOz0)2#WL?qqneH+K0pq1i&b;0YNZ;1O|&GvVf^JI`&+6$H6_?Y8h=U z6w$yF075gXI7l#|TF{FH8KF%Ii5U<p8_2Xkbt0ZGpmS3j2h0A+Xw*&yF!Ypl@Si2)C6=C z02Bp!Q#@6GfK?zt04Rud7X!*_Qvhw^m)7ut$+0X+wE)se=Tda+p56~vNP7hl2&^eA z5mU$0?B;803d=r8ZrQwOaa%1)THe;XmQ||i^HGy$_rX*5eGgy-|eRc2=>D9 zeQ)hn57~S*@YpU}?t1p{!yRxHj9FGc`9JP`4T6AR`fKyEIhXU|QHV2s2si#0{U4q# zt0CQwG&yA+XD0a(K^aVRsp=~ad%M@mSTKlouL7g;e*&rFsp^aQykoXhy4v_d1}e{% zJI4Zia{&@w;iQ@R{{TLJT{I{Hcl{F|S*Pqe-y4HB)cP~uUrcwuLDK5~0GaY$OP$%! z@wlt2-OKsK_hg*skQ?IVk=aX6ZNJX}Lanyn*nT!h{{TIT1uSDSUFCB79*4yhX(0Qw zeqa6XIKOpP~VYPR|A@08KzB1u*4;a2OY7Pz_J5P(o22TJrS!Un3Rn%hBZ7UhE;niZJw zK?-42aE&l3(F6q8=7s=>SQ>p+(Ucr6T3{3*Ca%M^1U_VV$vr`)pI8f@0KB}j3cxHO zU0^6lnQK(c#6Fv+$>@WuRH#DuqOLfxRb+sHaG})_j==S*GR%Kr`Qr`IsikoLKj{Q4vv7t zKD#T4mZ79Av>`?Q5p4*6VuhX|BcXw$1G-M(#fZ1X+`40L=zP)qRRR;qDIuf8qiYr8 z-ae;9E+?kU8nbSXBIIe}VuTtSh(NVC9jYeH84N>@bJFPFbdg1Gjug{XHh;A>3#C2} zlp{}a(hpea>_{I`qY^zp4Kunq{{Zy;Jbm@H{A@YGGDM~*J_UknT}&^v2M()HfiU@Q1NrQ7>WW9`UqDr>87?*$TX9N= zW*lp-khUAk{8ncoB7y+53uV^Je%lG4fI|%e--wI1S9=U3`ra?&Pwsp?WGfXlby_Sq znI2EXFeb4C*bl>ubhw2G0Ka0E>b}5Nwt7JL$T|~;sM^y#{{WeGk{H{k{vH`6&-tEd z=zxbpsv227CFs63fIyTqt!g#3L+)>g)fHWy+98MPUyOV~Dl7}1sB6x&l!!I(6oh25 ziC=II@Cz@-%Vhxqa3=N*_4j=wIf8@f4NAAJ5uA)$)=~&nH*@c`N%da}nUQI=cT)lY zNqsb|L@*eK(c%$(G%x3lVFI9JATv7a>(RaeAl7_BFY4Y;kfA|ZYbDZ%dqR>^Eb-I} z0w?JjS^$7hctJuZhUgViAW2>o!xUgBD2zTqYM8oJWQkBfoS?pqK-5wlqR0aVN*9H) z(E6#O)Bpu@4qQ^9d|@(3g$MmBn|bK*gcB;Ly+OrP_Pz0NWdXCSK{EHperB%;b_`Dl$08X zg{M6@>GW$;B^YB?MK%ak7AL9@`x-Bf=B2*HSAh~B^buiT$xyEg4l=G zo{x;fI3JzgG>9srET>)*Z6=3OtZ`CL!GctJj!n6%@-X(VPhSTy{&)hAh;aHamw!LM zo+S4Q@cqxG`$E0)Bg$Hx!mZ^(c8}M_t;6|lKL-GU!U1}T*`Mw7G^2;yQj-{ zUEeEb1=AkB?&Ond$pk<_6nE6r zQNcE^ zOp8E%E8`Hi$%#i0F&g}FdMyXp{{V{=9w4FhJVR3m0WIv*1 z5?*0e3&~xIK?Ksh_(%>*uU>(L3c^3;%tc5BmwvWK^wWP)-M~}*$NCDw;;Fk&8AjH1 z8>ASVeTYBzvD9l?>!-96(!8%)9|Ifhu}C8T3tgoM5MbBpQ9yUuEZ`gpgN_^M#=UV$ zV45lB(W6oreCzCZ9jx7aRK{6}xhLUu#TcmD;EF~0=@ARZ<3UeDo>{?h`*LQ&^m~%Q z7FspbKV)C??as}{ja;v*iT&MLCHQBT5@Ldy+uv*d0Pc8WPG#%c+nm|+;=VFY@gygG zYdQA)74yHON&bH8?7;QDEiD#+ZcN6JxVhhs=&x8W+`ZYP8i_A85ZKr^uA^e40EuO} z;5Zb{l+9~?mY~$4c!VncnC}ohBqSjG@oT*Hl==+d5+BW*;LsGyPk*@DOn>zg#d<}W zFeNV$qnmEz85UE}M@JLW$7%i^Fl{fZGbKO!B=J-f2j0Jx<&MrrqdX0)NFb%IEYUfr zYrbw9WUda64yr-)%pWHzl8y^ACFSjf6H!RAu1~=DouDOh!BE;C4#f&`i6&DKfKDWi?IrFW7U# z0clpz3%{ND9A6ApXX^fwh+G3rSYQSS3lsP+Znj1a zAhL`iAy9#X2s{w^Q(cd_?*8A`6;3|Y2pV+IC}IUqrT{F*4rNn;(@fAEGtdRTqMCsf zO+wO9K(LX}RVpooj_qH?IBl{iI+4~Re}IiRJX z$?$kb!3X{j00s)^v!WTbS_5kSu-acJPHarVPI++(4z&2NCF`c^_PUjRcA zHOWqP)G5q=zE}Xk0sjE?+&^OCOz{T~vyD$qizn>=0DNazN>hz!!1_YmE306FE-4HS zhPG0n)NhCt6;{uvYpMNz{(tj4c8VUk5(?)30Dt$MF{#p{@`G_KFKh2h=5z!b zJMXaOk^4Lf$kE{qZhN3e1+-^{ODL9s0ae+7NVxPAi6YTj>Y$X+Rj~lId{iPTD5v;D zKgIz=UD}FV8IZzbcDP| z#7+tXQD?3QMO2f_Oc<&l zh>&3dn+->@SZ0AjdNS^|$S4@5`T<7BXrZ8h0gnzH(AoyYJz+hOVycC%xLZJkfE3u1 z0K}q@gCGGN(Z+xj#xKPNg@V5Dt{p4B7}){Nu!)#C%?zkMC?MDftd!t_LFH7(!WvD9 zB}~A!DXyH;I8a3~*F;ty+`hor9ASb&a*rydKK0>=%5^5ndN2qh=pm37J2!tB}+Z>afh&E#gpI^UcHFfbq1P%9Uy5u?q$3k5& zDeDuQo&I$CFSEl>ea*nz*)?t!`|xQ+?SEc5DBgSh;o4Q}xPH;BN>1(L;936wLk_rl zoBWHb#TICDuiZ1;lP|9s(Z9( zRXE9uaJ}{`v0mk#(638uwKRe~_A@#IRQ5*A^^D1%t@013qhMq8yduMErSS|8YezF0 zONc4yKb~S?3))YDejD1BZ0aAmV$2qZIHk5=%hR z-E-5ZGxi=zwsjQODN!*BUDQyHux)8IVZ#U3)AybNrjI~xr08M)0LqXJPuKsoTZxz`!8@JwkiF-@jMeub0>+v44-CKJRdB6WHJd z^taa~$iLqJ5(u$|f(=!S`5-=uK^(feo~GEpHcw0lwNUi*7Y&31AD%-5QABu|rn6(w zakvDYic3ot^-8jVd4Z`0*PKd~Z=*f9eP0j(3r?UvWY4~~`bYr-O#s@dQp@$WXD#uj z5{89DHk4D@$(fhIa0HY9L_-D33>C<<*hnbEu}ZWR(BfREDD2 z<55b10t-vwNeFDXPzs=fN1AxD=u)@>Xi;zhP%d}{04*Kru@NSKJB4Y&^`D?#2M;%i zd==6USm-e7n9vOdK8i$AIMK~G7Xa`e9YKP?MN$kvVP5>g$k9XxQVM|)p@i^+5F=YO z&#EFc_~h9r2`NxOU@&?`$C6M+Rs~6h4R%Fq#92(8Rf>yB(wuPcO$)T6sTTl1hMB9u zy>=TT4hFfUtV~iX8Zgx)MM~O0*-s3Zv?U-!0mp}FgTqQt0Tn{3_C*61;;R8W6apxa zSdu6Y0;CcpB}S!AM-n_`3mc>$*a5j;3H} z`2d>ToQ4$t0QcJ+^>mPZI2$3KXQNlwNNe!ZL;3{E@$`CpK$3;3`(B*CPJH}`p6d}# zyN)!-9q;qXQ$~ZEB21Hj;VSO=gJ57_Wu|L+H~hW@r=-V8FH49_u5&ylCW${q{TKfC zp`J7@w%L>&x?ukRp1n^bAtH!Avkq#1xV`b9658Y*9p$*Zntlohp2K6X`uG0;b)n+q zTH{X1PE*qJlG+*}q5lBhSr7N`hpd&?qGJ!F18wP|#sN?R3Zy~`R0=3@tVGk%NAl+& z{m*bwElCDft|VPFs1^|MML^L-zPss?Ko+jwAr^pwMK(wzPJ}W79(z(!=+Gqz#5So5 zadm4Xl&ZH%4x@|&z$_N64xsDlcj=cb@l~o{OaTCkuBg>5zAy>}4%&nlqPdSq3E>sk z;m{brZX>!a+Mr<~BBM+c3V}gRC0@0Xc4Qz9tZ|dy!R@bZVT@RVVl{O;auy0;WtvXOxTJAdQ2rU&8P%@ z#a2P!A#43#uCqte6$n5s@_W*dvgI^900m>$c0Q^bQWKt!4qYnqNe8~wN1W#P(KPo# z`tm#JE$=pXH`7mF&;I~(-j3gD@S%B2z0lKrdtM$=zWHaUpC+HqVR+ZL94YF5nar8~ z9uulYh7bPxMK9gHpB{t}l>>v*mOY&hel43rLRph3{)3?9XOzTI{@(X{OA9l#eA+K{ zK6W*?pL!kxa6{fHJMT@D_c2cZ_(uyXpw;WuO3dFKsf#}q6#3f%0AbGpVXTuq8}h|B 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 PIRcd9p=DH1D6jw71(!Q7 diff --git a/htdocs/install/doctemplates/adherent/1/photos/thumbs/person5_mini.jpeg b/htdocs/install/doctemplates/adherent/1/photos/thumbs/person5_mini.jpeg deleted file mode 100644 index 9cc8db56f702ab69f14c33a8cd5e08427d93de13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2103 zcmbW!X*Ao3769;nBob1C)E-MhN@FVxYH2ZwC^ZZj`!duLR7(&dB&L=kZ5dINXSB5x zt)=#*rL9^j)pk_uR4a;dXw*_m$F192JW;MjL3ud6R%S0EO^F`5{m!KNJRo3cy9-a6v)1xUh(jsFb+0w3N7{BvM`( zg_Om}NlKzM&={5Ds%ok-C{1lmthO>%75jY&2nK_}1>jz1;fe-J62?)ZE91b*z0(>Aam=6Nx=Z8QJr)h_M z0D|B@s(8{2D(2t|QzD7uu4LU6z?`jnCgC{9J*IOZB2f@7DJ3m~R8~2TRaMi~JEd=6 zXk>0-iMKjuZA19Q$=Su#&E3yGAdnao91A#KkMxfdw67YY<%LwENAZH{KDd=rL`~X8=G5S zw|92GyFdW=pRB)R|KUO$y7(XvFa-A91>%c2EHDDXuXqxA)XV|qOA=GUT@esJn{~JD znIJ~Tkt=Z_Vh}EQO!tHG+IQMNWd9v3@&A(j1^c&a0uTa&4xa}`0H(kcjN!?)Vb^?c z`dbDx1bDe-(h+voRmNYj%&*y?PdT%UGLzo)sKX{;eNIy&wVaDLhE;y8IO8`fNT$(l zbk19bsY!f`#Z2*ll$cJ@ZTjfQ+SJm;t9?gY*%fym7zO=IK6Qri=@iRlpSb7tfEtpV z?>6B&dPdvuSuK9l1nKGSC8KFV$!{f$esa}!{^0@=m$pX<2C(;#yWR<}UB5Ustbe$^;U%3uSBypA( zhQ1w7(6vY%Z$wOzz`G+~graJsILAJtQsSGAsk0t+^qrwoN_$%jv{HeJT(e2H@PY)-CDVjRkRL#eL%GrTB4 zZC7X3KD9dDJVb8tvHruPM5}jp988T-Ch7C9dR{+nwbcK}nYU6)fG?Mrkcn;cv#N21 zUZK>?E@Qub_NwmwID_)7TOm1NGyPjd4dFvJYWsZXZ^uowIg3HngMFHBiml`?Uf*sC z9Q77%^M^Fr*3*IY-N5#buTA#oWckg;m@Tmh&mRVDQ)CzMs?6A#E-$$y6VU>LK;}DQ zerM3@p)vBx+xC6ar?mkZ%zjcu#hEOP9q;M-$b!tSkv}Ppt8o^2QG|0tcfvlvwiDnJ z?083}oqk(JmlA||rSP_Wd3EfjKfA!H?JOdyL?uc+uwgN}xr6m(`c*{C0fc>7%a5tP zVh1HKxdZsMK6y&-Y0yaf=_jJWq_T?h+nh_c6n@pPe<&X^k~bTR&Z^eqpFE|HU%0Wn zyt!F5yW{q_a$Q|wV_IRsuEB||RkZ4JGS5~nj#F8CyHhim+gGbT-c`Z35>Yb4*p+f& zJ8@K0WXBY)K1THxq&%6d+1OxMYsKJKv}Bz~g$i@)1y#m7s~Pd`jFf!VwlFuCuGsv@ zf2OgXvm{VlP0_MJW;_v6OiKp^`WTDw0B^>Ih-$>9@fwwIb4W4|4KESXac#-CnC9*9 zrIs{0MYkCCvguuA%};Aw_K|dquc^0e%`m_~hsplQmT_K^SPNjVWSSL;9eJt~tD7U=W3C@kK2EIOO^n!2IpeC?(an`~s7(yp6JjhmjvBT8942lLcHujEJ%_py6! z7Nk1>cv8;6Yf?dn9j+KFN7q9ag4U7PswL}QeJi?K%2l=Ya)J+o#u~WRcBSk3{?Z&d zNi(A(I=4^3429zXVu;+(1JmD&8JviS;i4@fUOE6Cm6KZ)<*hj)E9!A4XO~ZWj&{-c zrQM^>9OCdjoFNa$_2FWR>x)u_Ru+dn4w;yC&QV~ry-qOl$ze~#{Uki Cb+cyx diff --git a/htdocs/install/doctemplates/adherent/1/photos/thumbs/person5_small.jpeg b/htdocs/install/doctemplates/adherent/1/photos/thumbs/person5_small.jpeg deleted file mode 100644 index fce9527b378ae9810693cc162b15a2c00a93af53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5036 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 Zt0=b_tx{R@SKW8we+ diff --git a/htdocs/install/doctemplates/adherent/2/photos/pierrecurie.jpg b/htdocs/install/doctemplates/adherent/2/photos/pierrecurie.jpg deleted file mode 100644 index 8ea6696ba455ccf12772436bfeecb8c699bd1596..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5960 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 B$e92D diff --git a/htdocs/install/doctemplates/adherent/2/photos/thumbs/pierrecurie_mini.jpg b/htdocs/install/doctemplates/adherent/2/photos/thumbs/pierrecurie_mini.jpg deleted file mode 100644 index fcb7cbb0f7402b7bf880e6c0d6f34cd5ca1be5fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1940 zcmbW!c|6pM769e)+W z9la)QB}8^^at(1QC9)TqEYl;8_ul8e&*%Mh?>pyn{yOJ#KIi*6JEJ@A0WmvkTWbIU zfdGEH3G93aOis91nY%f<7~{{-wa!Kap20JThjs9Tn5f`$XYjUmB)pxI6$#HY)KSyK zGh+NhgQMf{$MJ?bsGV`(1b~3S5pWm+0Y@N_2qBah3MDLz!Wy8ODLtVfGX5k_I9q;WDThg1n_>iPypjv5*n zpRlyDCfV59xw@Tl_we-c4xk5~J`)stHYz%Xc|JBS{?g^twDc=iGuSz~H}Y=Y`dj{; zvb*>0mseC)aUa#y|NQvL(}ovq?H!$6-95d7yrJROBcs2KO@5e~{x~x`H@~p@h5vPJ zePdJbZO;V(z<;xTm;H|mz3YO)U?2>+=Yl}b?-q!L!G9nk#Lb7scAp2L0aHM5m8Plg_W1Zh z5VG$zr_%_A0(dJISYyjqLiI;m zcl`N*;g&7PLv7B2cePw~I5HcpRNbABgi+{kE*bQ*;W)8?uTa*ptafjO^srBXM}OvW z`e)QF`%^^&MvzSm;p)wEBFf`lL43#R-U6efIp5-{sAAG|$Xv46p&~_{#`+AW1nwp3 z`Rd>?a?Le{e?Z8-Qo}$hW35!QsJ?^mZJpPvA^T*LO&F>OPio5IWz3dmX%zCQ<*Opt z?@G~$c!Pe2MP3A}EtSR!jirO;f1y z4Fh%0E>;Q!)-`!*Ykf>3_l{qLJ6cFH^4Fd>bslBB^QTC;)qG!6tTn}?E&txDD;USRFz&>Y zSf1&`0?DEI#;laQ_|RbkOa6_iy3=oPp5kph)o%kZ>QSFlgUWgR{sg)p<4Bw;;KA;B zN~g!D_ePvb6M8@!);zSbmaCzMBOcyf9Ks`KW_bovU%L5ZM6*aK}&~FFO zC4i-yU`)kavG(J^u<7%UhQU4tNHCE^|6Q;YY4)MHfIq&(wZ%~BeZ_CLuf>vH6e#Tg z`y^bSoz(LVuE;1GE+lTlnax_m%UU_zbp<`{x9SQ;80f6Vtqb71nM|?f2%fvbGp~Ht zdf>KR;%Yh!znIl0*%zDa#I{eKSjy8X?NH2W6s@Q=?O1pAp?Z;nE04{5!o7Cn9xTkh zZuGV1)w$tU^G6?f`Sz^i3jAEWJj3MQ4}d=sC~w~^7wX9}ueUG@FL#+F%O|VzFB`d1 zdn&!mO7?3T>>JMcr76B0Je_ZQC6a9u2w*NnJ%8~L9C#rWALOkSSQ-dVam8i##jx8S)Z{f7imXP}p>MaB@kE;ywM; z@SwQx?Diz(UDkt|5^_p{z3rNsjBAMLXn^iy6g#qsTe<@jdi=ufIJUl8mB>Mlc^2+Z z3OU=?VcdB$AgX*mK6g=aQFRP=fznQAyos4!(}yfIY@~b+Y|Q)+5;yTiL-9^6)}X6b zPjJDg>PRtmFq-x)t!f?x4Wr+BEAP z#t9aAlG}_hgr&*>&?<^eC5s!LQ!90+gtObqAD+4WfKu@3^m;VsE?UJRzITRv5_6Z~p{iHchYq diff --git a/htdocs/install/doctemplates/adherent/2/photos/thumbs/pierrecurie_small.jpg b/htdocs/install/doctemplates/adherent/2/photos/thumbs/pierrecurie_small.jpg deleted file mode 100644 index 3595b041ca21eae281035c52279a5f62a7d53c74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4886 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 QUGM50QhPpC4zmB{U%6xOt^fc4 diff --git a/htdocs/install/doctemplates/adherent/3/photos/person9.jpeg b/htdocs/install/doctemplates/adherent/3/photos/person9.jpeg deleted file mode 100644 index 7aff8dccefe7e0ac8716ee66b25cc605bfc36732..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1088931 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 r z);JWGBZ~o@gB}z520ue6Hmf%u)jQ9GLrU?~eOW?+i0Qe6{*Q?Gyr+Os6*spOMUeVw z+H%W+l>Q0`{j8J7u-2S(-4)T>F@H35S*`xcmJLowo=0Gi*j`%7*vLEyZ6ZNyR?40q z5|M>(kQb6!iWwhhTS7RxUsuQ{;4i3*MdmB3?f2K6YeXlSEZ4n4JIRlO!kPYPrk1pJr(z_o{f&A{zF-~%JY>Vsi?G{bRxmOHn+Cb=V>&D zr;2RmyFEtF=O^;)7Z>eF2GevBwH{p)nS7mk=(=dGUQ?G-Q1q|IHW^nXRm?;P1FWy# zseklM!LK)$i@Qe1AthNNfOxFwU}ow!YP`A$C1o~YQzIS&NB1WJ9d!48*Mu`-p{;|O zPB3d~`iyrWLqLJZ2WLnYln;;MG`sVxSJ3t9duE?Y;_f+!qXqi&PUO{@^g2f-x z*Er8m&UPal{*gX26J?$hV*(-p$JNig=YNYsHflDWXhE-URVTn}e&P=+N3O5u)?#-{O}eE{ zVZ3GhA%!=8>?aaMuS`n{|A3`YFTAfkZ4d9Hc!J#<=1j?w71cSTzYTUP%O2Y@H475S z%^SqV+^1v?)_RirW}vN-Wn-yOP!3&NbMl=?$lr%(Z;Cp$dkLOC`TwJxXO824dkWK+ z8(WjV?1@4Vrt)4wdR!~)@Lyk(U^SYd{zY|T?`be*@V*k~*TB>11L3SqBGhow7-(d8 zDNHwA#mkc^It%Q&*MtLk;G%7&KqFsQmxi{#p!?e2z@b9!P>Y9^HkWi$ZAL^SS=yel zZySq7oFtk#@x72d4eYClA&Ox3S~>g-17BG{{_z7}!~NL4R7vZLl{SP>myYtV$zy6| zdDI68;%b2bmgwPPxnOlAwxK>XNb*L+Pjb~c^_4;QN44M8aBj$p^rvJy8I%4iL# zotqK6@U0R664(_QrLyHkkrox zQ9^K04N=3K6a^Rl!szqaol(cp%gx2Dm#6h%)O{DkUK)UIu;g-O{#Gn%+6l}uB+p)X z55}+3RZr5fB&y7yP&p>cHm(+@M)k4>SRnE=F}W9?=C&oTFZ%r_To>+m+ZhC&&8d5` zp`~Bjh)%qXe1hqY zH!hGXVS)4C~y{0x{`VX4lg0LRoDr(w)K&s0oz z@JL@ryiftg_Hng7u|mM4$6^0uOE_#a?>MyMj%Q`#gE(?KD3c_rZ?cbG16!bM;h4 zj^}dQzkln9SJ!bSY&PWN#M`!QSw?EzINL*;{m6Ta>gF5J!oYZTx* zGc=nsC=I*hu72-#7r>z=STsD~oT;=SxVXQXZ4tMnB83{a zE9BVBId3l{s7LV>X8ofN4Ajkio zMS4%?;1vg2rc~XIgpOMBFeg2xf8q{(67kT^<-b) z5&X?%#rFrV@a{j9uG>~2`_R_r$#MV<%#4DCfo0853`QLYxnAugCQ` zECy>ad=`+Zpp&R?Pau6Mo7C;k&(>+n!{bk3G;xl!fXywhtKFl`=P8*WoH^aq1ngT5 z22KZFZT`Xg^;7wnfoQf}$>@aY7iH^hR@;8)lERWucDaFXbkvVe zIP7_?SU8a&Wzs}4#gt}ghIe|FxH8AOk_4=~?90;?x;)Z2gz3 zb7Z>TF_DXj5q&i&hH;~!9CzLxuV7>KM<$X}B@V`%c4`thcY!#3)nPt>LEU8bw5UQ2 z3R;&X%qSKQ3((guRD&Y+7Z8D4{mBuj_K2l}$7xrg=cc z?0%nQpjNW@`MOn2$#_qZUR?=he|Yzu_umduV1ragiRz-O1A&dIy$}@zT3a^Q=#7CZ z+`orwStNVYcrCL(yjHV&x%`40X!3Sj{qM}vnCs=|yoZjk;DrO96k7y?$n(npSLo}+ z!O#IPq=5xqPFc@i$L64R4#%7!=B>Qu;={O!!~1g2k7Z1P+iOChm^lQ(9`)jvYy72R z!qEl_xmpZbezc@I*`!6eMBe>`&m|uNN!4)YiRmYujMFljDKggM@m&h$ncI^s%D_3A znk#3m4*_%s_s`lND(1y3;8BTXZNsf_DZQ2Uhb3U5DWvVm17TDX$agIIr;qo8;q%!& z>>+l?p3^;6)8AOG13}KAD||TTK6W?zg8^|^I`5yU>~9&ga`)2EkfFxY;jdjRMO4z^ zZ-Eo$(}A~MmR!Q#gX!w>5i=s+Sf9Y0eeaeDx8 z&mjA28(uN{@c!+;y`S{tb3z{w@!M0x%%9!F%(R_cF^zwv$u|94;E2gCb2`&a0?|JT znr`O>j<)lXCNTwJb9_pTmKVpGP&`BGY<(#4^!iRX^P?4Wp(Yiyer-|k}d_GM?N7jdrO+OX}za#3vW}08` zT}Sc!ahFoVj=u7P$b#*B>Tcz8V)4$*u`_f2(D_8vf}&$7VehBz_YADzMZ<&2<`FC>-FFJhtj#8KU$M(Aa~jj?QH4H!QC+A)Nlt`&f=&7 zD!L)4-1#+N+$klULSX^pCIK%=Mv|y3kk|TvJHk4Uhi#NKm1MVDWw3strtH~MdVAxW z$I3x#+He5JL(cVoD2gR{my>TNvXEJ}fL+P?FQ~5ESo=yiS!Rt>9afo++6NEMKPkHg z4*lADFDUPv=Jf}RawhaA1^dPFpddR?0zqY;76May11^Z`PmmuxQj$GS~BFI#wHuLC481b-It&f=Oq7>^V$W zls}f{G*#r{y#giBZH`1C`%#_{kqG>L)xfF)(^$5#ewj!C&MTCfZ_!A9fBFDXP2qpZ;=e-|`rLZ6<7b3^hAcw#{?udy$C4_*lip`w zROTsUj2OA{U!H_)H@JQO*?sl8ZN7_6)A56K$oi#GP+O?7@NI$C7%e$detY_KM!E;q zQ5`oMzt4B!5swVLdI6OqPyrVcsW1s!dW#Vvy8;_sG3|AA@87AQD@S&wr4pw40?MVB z$t%I7nPb)xaWHDWE zinM>R!AVp3Vx7>0uV+AwDnllc&n0V4!LEwy z_ctY0nV5B5BHD~+WE$0*4#wR$0t(2gN~{t8WAC$zH}I8t`T&HV2d{0}wRm?@C~cN2 zpN-RxMFYW*U=_B?Prh+R1%J9!4yLp}pJVLm=~V5)Il(=@WbpCs;ri{~Z*xoSg+tj2v3PK@X~$YB+5H>( zfB{y@y$vav8!?NxDbCX2MAtcMeO2@2C4c)3c6a}wR1Opo7T5Y7lJWvnHM9w9wvOWu z=v%+9cImG&e%3y*pZ02DUP{hz=Toc~9DkLpW>@ zq$j4&8>{MPr4XGNpa>UHO*zjWdjCcz-dw;b)KOi=Oi*1h3$u*vD;TF0qrJ!y+C?}Z zLR%qB)HQTqfxmi2>;Vr@AMwxD#=7(#oouDybNqRCc0MerTW;hWzLZ>G6m2W$m(RYW3;$DLDAxpOzZrBEjDq?Hd=%@g-q8 z&6olEi#`qZ7duYo;oa@bZ{o^S2^0eR?-H7l889Mx<>S*$`P&FU;26=k5^{*C&h8WNswUro@3H1{v}Ff`oHM7-TCe$_=W+eAMy6P%&*n^CN{C>$1Z#DVF$b+j&s4#H;_%fe4{>%uz=l0X zXxqxMBK|rzZJ{Et*Uy80vSpoP#<@l!G-S9cHS)RS!{{@$KE(De|N*kU? z7e6u7{@OSzD#?^C{sC~F<1Z0c_-a^gpEQ{Re4-_{yXTe(f2#RMmN17Hd7}|b@vPyk zO3mZc*PY5ay0mPzz?kaIqn4_@c7qQ7WyeSTsI@deElwQqLk^=+zJpkiDX4_E={`62 zzW5)sbQ4@44k}2v5>c#aF)N$1&Ny_IlRNvBnm%b*p#1u)508z=LNL!e!7b3UZ7|!6 zg)l;ROSqv-FsEwP06y~k@f%Xe-j#sx`*LR)WGW6yYJSzPECDd=lA@KY(-b35Uu+bwxziOs z#;Jd~0h1_Pd*YlB&r$8M0%av_zyEvLd}roBr7?eWaS6>aW9dAa!fHb^vjnbVeQU!V z^I0jkC8zWw{9ttQS?KsV6}_W*-@o;j1dY*B)$}v2Z~lz)>E;3RpE%R*bGvRm6~{RV zRo_IV!k@q{NTyq?P})4w4dZ+c%VyIs<>aEPJf7P$-Zray6kK1Y>$T8~UyWX#;yPk3 zb5=_+y>R5=*XlD1$M^5u!kfE4#b1T@6Uv`R9*f^Ult`@*c;9){FcdvB-p*bXGISKo zP-A!um$VnPJ?+~G)11enC>b=l*MVv6MwbpKHu!jy-d*Roe{c=q-MrmVPd#L)d;+b% z%THXE(^Cvov8|GLy%35PPaV%5A!DE{S6YT67kO;(P4C!1o2pToKkkVYGtCIpW&&R^ za)^XrwMHz+bK zK4PpsOz~=0Y#k@+WfUi@v0PtKx@v!TRP)njfgYn2+g8+A7`sq4B+7=%tZvp%%1zA2u{P`>#>{Yur| z>UbazH1h$k>Xv=wC7N4o5qfINwA4eTFrl;#R<68G{uo}$op?Oi@~z88WlxU?XD^g_ zyqWcNB7Ku=);R8{z6p3MnHM(YpHpn!qe(@dqH*R(e5QJ^e$GaaqZcITpTZl^|CFk^ z6i5e)m4JR`R|oRUJ9Pf>dJI(p*m&g-g#ztth^bn5qcdT;F730QJiatLWwb_V94!6uZsBe0ndRH30J?$fcN@>MlTd80_F~iF#p*Zr9^j8sbBa%6e z<9sOkXcRV0Xt^{}R;6CuRvIrADkV`%I(U1y1Es`0k7DQkUm&zOF z$Ye?MG9Xy45~P@XOl}*WLm7E(j*p+t@8Z%Cn%|wu>kpwHDEfmfPDxocd8AB=P<`vk7vx8TM`9A5>hd?2#v)t8BVE4@RaMQRGmn?= zJnOQq+(7k{;&vJcd~o_~xeg&?SLIi6Sg3CPsPoeqVA{N4fVAv!BB;w!G>s|P4Q7Vb zn^qK`sEw{Z!Jd46zH`eg@@q1LSnd?I8_X#yQfr!c|GqATP%i(tkzQemdFBiiR{wOlYFg_zv?bWJZ`*B`Xjf(wC-=@)91FQ-^Z5bmYay7UsO{Ed}(Xg zR_f)?lrkg90tiNF5>#MH^q?T6pl^y^1`{}9NLm@4fAtrjxv{#s5JYI!BO+4%cC!D| zxlaqwP+_Ie4ld}F_fad zn2Wa2)v!|X^_)h&zr4ZX8N!{*S}3y*!(n$2znxsTGEajxm?=Gqa-f2N@MzPD`o&R~ z#p@Pa&BjF*0(t#K_2K6DC2&jaUTLJ`1JrMW(6yMOqP{fX$GByqV*~1msBwP@OZLN) zx$Q#G^xwZu>ijE6!%(r)@O#%E<$0FVlV$M%cr!l3F?Di{1erJx9pfmw*=NDYY#%i$` zhG>_4(T}*YK(S8CqziNh)AbomgTO}zQoxl$#9}gtZK-tXQ<0H#%Q3)=nyAdE8)}Rf zH1hk5D{J&|2VU>79JviRY8n(BmCTys9JO?HtukCLsN=5ZyhtbIH-=_))V_mR=A=}x zstG!m*$?yj1BWir->eHIz}`7Wxz}=6umiKjwkf_e2+SWY%z9h&2QZ%dye|%8Oxa!`16Zi3B{aTMKY54vmg)I+Ym3_@u(cKG=|m`!mkG=v{+7;& z5yQdqR>t;MHO0~p9-n8rjc>tW6=N3{U46;+pwzYk4O11{=;lpp^RJB)-jG+ZZ6-|K zW>BG|w44U9sYb+9*H0J(ea!`UmzD8QV>qjGn{IGC8l<)az#B`fHnGVz&u+pH=c#V5 zc=z4!wY$sU#ui6?SvzTkAk4L%R%3c~_;L=2t5V)}G^_CxHuixX!b|x;@5r>W{}EIK zRl4+o+<{I@``h9TO-HiVVYB*S`oK?W)Ak9>%J?|d(~;77&W;fM@C@D>;}@a*sLw zy*v3C-=Tx7(u#Mjjq55vvVt+0dPoviugN$ncBN3%dG0~1)8eH+bnD;-{IiI1{$Rgb z@&&zcXHg;wg%utG6y6ypRv_~sV}472ocdZsJX5L<4M`+@MoKvw&ni&6hl1k8r zJ+m)Cir5Np{z*mdG(OuZnO97>=3m|eD8F`R#_p(Bv{rr;RzT58I#v6oqC+tVAtiG< zkz$tnE`?rpoyZ<{+fy0{z}w9dbTCX9wJ-!;HJ#WyzUmP@g6fA?5Ae-rFSC6)Sy*`) zfL-)|MtVNcT_{P%z#*vz-hmfS7PZbD{1g+qQNe@n26WI8Pr_5K*mBF;DCf^N%+^ zDM#p2V3U3)j(+{`9K(|E!zuc_Azn<0MB8PL`M$9i**7JZoGf+p~!`4;A zng3?kVGQJ_ahvP4Q)_}&av|69n>pu0aXf=sc(CgFZTGtUsNvdAZG8p+W&7{NGP9d+ zjbWj}RAP`O8)~;C=B$BPo_i-)&et);kjHqMdZf2n`Aj*VnM+QPzi$7dffHM~`k?-@ zlrJ+^)RvNY8#n5L({X(*Bh>tH9nCBj{17BL&@_4gj+#q8y=m^g!E6zB)iV3t^*BzN ziqA%6w`Tv^pu8yC9iTsNPuMPsV~yP1>SzbrfIbDXzy zUAYMQQyghBAM{($7|xzCH0a8)0If#mXkz*jSX9v`7q4;|Si_)d8zBvvspY{{`YQd2 zY-qG@(dH?=8EXZ1%v*+PzLuwU0~C;VNgD!z;^`-|EJR9hcXAhJuIgmdxSO*?`BvGs zO>S`g>QW#v(pD8xe;q87YGFp^3U}G1c=id{8@+#$%xucd3+UYjbRDdOy@{w*>Sg!e zji%*qkU-X9uvI5S3Porfm^v;($uVkk6;aQ-YgeUgl<=}-$usa4r^brzXVk*GbP}c^)XKzC7Zl4wv#Y(5^!EH@(=-rMBnS6oh8j|fINX9_Kz0Su)Z6Ay0tJoC5~X@*7wnumh> zEe;OK4grrfw@lzvervsZ^cEO6hPJev25Vtyt9YWRT?d^=LvNK6BJ*SGwP5z>^pct4 zh>>HHYh##2R8<>L&sSc<(41}2KZ{8H$WPSuY~t+4UblIe;l_{K*&SN))m_}J*_sL* z%{=&qmM^!HuO=`-?J=p$NzVX?tQ+rsZci>4WU>}W)t~^l8(``T=`mtE)f>a2=ARWv zFo4qXdlclTs(Mt+<1ljV(hy#~+i~28SH#&Va+B*C-5{Xmn~pF^zr__V6)*T0` zWAHx6^6bZ-(IcLe62k&5_c6|PlNd1(JGXjv46O>qF0qCIT1uoliLLu3ofa&@l-jX>7l%;tG42?J>-7EHrl= zcU0dFLXs_ggtf!OUn!FKY(V^n>3aSGk-vmQN}82*PXeFwq?=ypj@^edBIbYwR^&N4^=5;eGvs#=~TI_7^EPCR0~^m0eAF!S*?F>u%GGwgS(h zg4uXxR2-nH+WO|?E-4xMeAz2pobY~av?_xUpdOiW-ncn_cm+0x36r(4+AW2C?L>{b zX6KBFtV?y*7v{`BG3urS-I~(@zVk=ppAP=F6Ku2|{x4OF_{a9NE+h@Q;yc#Ur}y|9 z{l#Aw=5K%AvqP*3*0V2G`Tyg?n~OP|_Y8thGeH&poR$jyUvQ1e3b`8p0J zfmi=BE=s1^K%GKZYEFBcB{-JT`OQWSTa<3@2KxSY$3S2 zM`qzz31ME{b(L%>IGHkRZq+|wjwjCcgzd2=$Z^@>j>MCZe=LPcvkZ!hWT@h)-0-7) zkyLKsRLOUd#iuCy0KV`ryA2jFSkSHr{K6DbL~EZIfUxvg^8P#aM&NMuV8AC~{u0dz zQsUBJtCa1(VslK=pgj)`?zqn_+-cm_I@%y4_=5{86#t%8f4~FOw}$xf>Z79n6U2RP zrIY;|<_f}`>r6z3?^5+~ch@GmO;Aj`3UBVVYXEc=>$SS2ojilSg-SZDY$j0ryz;w)C6|7!b$lo7D-rtxQi>iE0 z5>Y<7f23~P6SCvTnHop8%9!pcGqOjml*;OB5KHxME(Xn7skdB9^u=`hWj*kdo861h z*3APt4;a(EzvC>((%dP=oL@%FfVzKa{peafK&$Vsne`AED3P6$@IBnZXX4WM4@H?s zY$Hi2iG`c|yjC2(+*38??9%$6#o&G3#dligjZr8b@WJ6fl)}a15RZ7SbGH+!NdBfA zd!W1^L1Xelmipn)ebCF!{L{AnaqrHYbjhfruut4pHjgS0-M)J6_)9sknXWFXG1-*D z_^eH~$|4%j{?W-wPo-P|keoyTtY)N-{l@wZJ0~bLTTkRmP&`YeDjjy2PKa$*U25hO z6{5?ueu84JslffNra_UpF$cdLH&Nu}ZyFvTr}(YcG0YEZI1k_AtGI}jS^VMJq3x9L z=4Jki6t|+Ic5Vd@gLcq%`v%(>@XkQYbP+~QN?kRB-n2*8C*PfStJH*-1@pVvPWD#s z`g<-5gKFlR1Wr0n#c#!k7%vLH)ZAVP=Iff^y%Y+@P?If;OT_dZ$Q2C%*EmU^Q!1k>D`X#^M5D=v!GtS0Mi^>;OV$7s)h(g3}AbI*1 zX>t-fH!#T$XaZh@D{h(*NvSbLB!jBW;BQPn?hHS1XNL-k-(>6B?8-*q%ZWs7nJH+S zM_6$NcVrYrg?>D0dl3@(nNnSw!qm^H>Gb(^`ojF(;~7Wifv_3H2@-7C4ZXX2wbqbx ze{pCAsk~1zU;DF2*!OmNQ3z?wYK^vIX=X^1-L8o3b6gRo$rD^&KmD-QuuyG&BxOA! zb?-Tob$Z}I_pQak;CScG-|zB+!i<}6kLyaPh$_JYxqLy?@i>vcB(G=ec%OFW)9-~K zu*u@?^aJSt;IaTW&j%>j=$G@IN-f@)_IS>SILA$_&wBk`Sqp|%s>v&rZ;^{x-_Q}l z82A~1b2w{stYw9igTLlv%DEiIt3k>UCz3W?)rdy0?t5X@B5F&G6O9(xj#mfnT2f=R zYsk(&vt6mmYI_eNn_>L}^if=v%hdJP@u)k-ntqP03*ifzhnhfl&}GQg; zQ(vL;l?&JrZT`Wal%lb8_2s9!_ogl6Fxjnw=Vf`Zgc14~i#)}QaWlVFCu9GdR?Jr7 z1-o`);F6Uh+1=^1Q!PP?h-HYU{98$45P-q(j|Ab&)rYW(5<5{4IV8}%(@wSk(xA!M zx<7T_WGeywoDP~}y8B#r8<1g~Whv`KmsE`Wu# z{|MG7mc4D$l&9uDN!F9MZbS4>fBM9!TbC5~p}Y8IZrbdn2v>762~WO+k|Pl0uN%Lm zFzwgX>c+nY9qBxD?{>M`UhKxw^hjcRZv)G^o7vJZF<*+?;Jm39w~TX%K7+^{&GK-9 zEEG#et$~+LFr#Ye}JdZTAPBv#;gu5{>C!)~C$`U;2W10_5l|$H@>X zET!cXuaMz%PtC>B0YZ=TB1bzGKg4RZW9aJbYgHF*UX?})J!TE-p*3fE2hq&X_=owd z*z~+XHGBH>K7)(T+W9rhI&-uD;yq^aJ}q;2f?;`NBO{oPHI3ryJ_GJBV?2uuB7@3| z^%MyW5eJpfV8qAcmV8&2=uuKM zWTtPq-qNCebMM6v=mM!*BOh~dVB|Y(aICw7E$msnEEEdFt#iNc&=I>4eF# z!~{cT!FMykgcc_udBrd7<4`DbXZmV}N}A{>PMRBA%!)0ni2`x%HCS(ES6XO5)U$VR&7H^Qyiic9yJ&x|d}>9ZFZi_e z{%Aob+O=m2YG_(LRbv!0yd*WH!tG~YjLPri(o^-lr*VI+6YeZI)wqeA!YwyEUlYWFbp)_XSri|@r{!KDN| z1vV4fMN!?oz{xw{G7m@6MB^}`C#phOs+EpYw>rDkp?z=0m)~bc^DxZq*=o9r(q}I5 zm7(F~n;|641k)=2L|#9JQE5RxWoJ-ndU3ed9;TuyxTVKc zGUrg0Lh1ReO&D>K~itda2P2w3v$L1uo*OL7~zjVbjs;Jy^DNlU6eb+#UeLw^uwk z$K5Pvt{kPOOiXJ z*n#baSh3~I@a6EtHkp~NQh)SJu>^T=kra#jipCZwF{9azLwC+RUz6-dLnaV+!6CI| zAyzu##zb@Y)$~~nUk@eg!(XE#hN_UUv}Yn7LD^jUV|t8N^);frl2%k_*}W9 zReM)r&ETJbNRk>sjSOlWm3U>CoiR{JW=)DH+&KXkYHYzwRmn)0yeG+$)fK7A*`g7H z>n+IezCcdR15X?-@y&B?`S$Eely|28b76bDfWLJ3b%}x`Y4#%8R%Y$)<&m#zn=`bykl%nVyWt}MWEC2>Mj$eKX*C*zfqvFx@#;ek-_LU&_dz-!3$zztXI2KE(fI zK|x|BoqWAL&A2wwXOud3IS7?P$6ev8VrBmpsDx6@uV|cBmxva3Lp-N4IG2eKryzL; z{#Qqz7gvd1Ar`@C-zS|nR*`uuA^G!9#9{YR487Fq%vkpsJ%j2!?`+>%8|s68-1#l` z{riuC->=M*KdbGGzC7%t3N^JAYkW4dVc_|`v&MIIwVBf7_WOJF<^%Ah;!H9%Y!}4+ zAIj^EtEXZuNFp!7@b<651+UP?xBmyyKrO%G-j|v5FP8NEkB!tXv}AK`=Bc0spr(xI z-2QLT#Y0GmB+Jo~f2`a-Aco76nVrsc9uXQ$M1b&SQ<>|S%D zy|8_a_V16;@xAZQDm%FgmL7hM7cKcN>Lx3{<8}9Zp0?YW(koS$DzdH5m9*q~SvZ%d z^ZXmy_#PGMylAOQ35G7b*I6Xdw&>uB;Yv8mq4e}w+k8K|&)U3$(Rq+P9&}8SGQk8; zwbAe)FAKBw1QJ3$3{X{*(A$uLKS#B{N4fWWqfMHO zJs#K3OzzyDHFxpkwOU)3+3$Zm`Xd^wS63b*(|Mf6x;9ukU!gv8Zud5C%UN&S{+VgiV7ZZyO+-s$q z;jgy*_v;Tc*wgZR`rVwYH#1ebE!yhI%Z8p;*~)ux>Uc8!EWT5ScCh|LbZp35RW9cS zlISbX@BPDtJ60q4(bc@KJE^Vny>Fnr-)E%q?D;S6KRe8A^Yksr%i9?2y(VoU9BV1ZF%-QjJ@>EfLHr|Z^ZKo4*Td@nM96+c?lb{1%i+5A; ze)J8Ma?eTS0dM89#d%oD)l#;kupo|-Fg#npG{jP%xu=A5jU&-kG=?IdNa$Ka)Vc+d zAS$#-NFx=h{{X5vTK@oJeo?3KBkH-jtvxM%XW@O$H!|vA7F$=(>iswK-=x>mlb3a{ zai2rxdnW_kcAq!wK8e4H*iWDMb8au0F1st~ywA~?_Js4@-_-nkzoV?@{Ec^@{Jh-V z_lLKV_IUlD%KHxK<-Nbv7&DJEq1E8&b_|`OdG$#%W3SDh=bo3t z==DrmihTpb5C8qmJqGa67VPHf8F(A5p5w+So3W^yjdc!dD-+o6z~4E~(GW zKKk<8Yvy}%Wbe(NzYY_<=RTwPztS#oJ)hgy8>sZTb!$AsmDl;JbsW#>egN-l%W}wm zpmgh>5Bj4x_T_tIFI3c9@fXzKlC0%-~olb|!?RAei>H8-Kqs=>fUy#0s^B#HE;PozVQ=$0p zdyLtSnffmt8*eqX)gh5Zs|=2^!RQc#QqvR`h^Bf)0nnf^vdSln^p1rTyq^%O78N2W zAc3OE5v`-yc7owBA82{*?TTs>y1pOK$qkhBuQlmD&-stj>TJ)Gx$yfjX=~Y~O{Xi> zLaX$6TJ}q?XwS7o>5a+KYO9)DbE;|APsRS<$?5qTySI$@U7H7^`hPV#&Ah6Y9(&B} za;2w{`u_ks&pwCp@1Jy2^uEr=*uN$1-0*(SH``n{R8W`Vb=XlXbuzlT%1tF2-Pnn) z35$fm-K)>n6=_*g3T=g^o143ieVgW=Z2ocG#e4pV^syH z+toRi>1qSojNZIlpSR28o|nz>&rRedyCz=Bj9}{a9v7|IbNl zww`y(-$MB0^xv)X-m53CCpzu0E` zyaoC3y_|#>MvE@_5v?YIbveKaZOe&*}kIb*9{PXM2o_qa=Gq?7?n(J;$ z7v0Vub(rkCIo5f_J9$2H`oGJze2z}fAGrEM!F0P1o!SefemA9Vb3x7DUVWN0Y3)eu zeN_atl$g()Wjf!JV?YB{^eYpIW?WFG5c{{ye(n6z=y}Iy(PV|9wP&xpEZVZ*^WDfg z6o#^GX}elBUZSBax%;{Nx2wzJ9=pl%?@i7Oa?zKG-Y@C$BTD0b7k zno8r_ndfZheV-lh*U`RVZ&1cY`BA!Y#Pz<#MHJ+f)xq z95$Y+z?vs8>Cy*vdaRm^QztgdP4PR$q!YFJG@$wC4ykzWPmA&Au=BrI{NvyE?mttz za{3y9p2o@mEx;Dc5wniQ=DTZnoiBs;zeRaFbXs3K)7~3hfiw{|*O{^M*G#5~ zaa7_0HLc3-^%qcAg2LLP5~*ulHeK0Yf8?{i!;$sJ!+nM;UXXdOH>({jbR*^ALjFJ2 zJA+2Pt7ywA)npWA534pWtI7Gh*LhA!>U@q_X&~4|w-3O!{7}skS zw??Y`&nvU0=HvXm`oG8c??Pht@^O8SG&5cp-oG+FN-)gJF>ggl8UliVG?kOmG)EBl zQb!5kP{+uyqz(n@WF-i#1$iNZ(kwC);99`2f2nz!K7!fA-=5!R;>(@7nPXSU2F4A92d)^%qj`Z?ls#MvhJ5FrzwkZ!d-~)0H|KBFoVwat8k)wk3@eJ% zXcdC>mYXBFF12K9GouPyYb)yd9DkpF+u;7q_%F1f$L^26Q5S`qoC8fb)SO34nbM>h zs12a@ikZxKhI^q_Yop5Ho~OwC{{ZZKP%ei)#y*FB@m~Aw4;k%Yw>Q_g>F1RCE=2k- z>BZcfi|2L^a4h`o`ZvpdF7-Zp7t-cr`rdSIoH07Nl_aYS?vg^_JVa=GO0uXZBEZmA zN0PxE2bL>GL**_p1d)S*Lm&dUHQ@9Qh0IwCpt7ucK8~@P{<}@xBQA#X`kn9RUrXq| zf6?nunyp!66S}<3;;qX1?7dMcD?HSc>2oq(o6Uyl@qQ=l^0@9k=h^-X-1Uw>OS*CT z{Qy3)%r6xNI&=1D1w-W3dFICEU2)F7jq^{?FAc-$UQ5!?gV7Fdh-;ixc2a92WlNTw zl|blLtn9FkvOyPMYeiZ+a{{4xp0SIyNnc#I zr5fxFdk5G?JNur1IvBG3K3^yAd5@j_e~t^$<>}nBDo;^e>rwAMJcje}6YU(c_HOjw=!2QH5~QGR{Ik-=cFIK%JdP`f%3@`w$1X0cuajPxx~(>)3*q%MJ3l_!k!3Jal9 zBLYUAQy~i(;(8dFX@e4o%uyX8$naeZvKuY-uZH*i>&N?$FLCVsC*{5%YPgYe!DTU7 zT!~4lZ97f6%Jgn>>Lx834n?3Hc`EG1DPEJ!==TnO{q}KXp)2v_>geL`(dUlLk>{Wl zmyf+eS#(cr?UZA-V*_Ro_U8>{W*V7m53JOv+^*8OuGM0^u6rz1wDMbQsK<6&Q3}%P z)o!6cwp#j!MYj3$8oBXvy234d_SMDoK<7;V07ja0XoAjYO&GY>d(Uv+Tj1&H&D^|a zx$E3NLEJq50B5l9`l9e(EP(b|ljvjL?X##;(B{||@*C{m4BX^w_cBU1JWBb2$L!BG}SjHLu%tcwB|`5LlV%NT`& z@BaXo{b#lLZ&@9e=_%-*#iWi)^fh0k&Ph<}(?GfOEk)bukhMDP%NE1fF&gv7yPOY3 z8zs7*JE_=t9WAk{R+kox)9J}uaEUDEauwBDw~#G6&`!IGFxg*KitNqi)dq?*=7|M$ z>KAUJlG><^78iW)im(h9(5>hsmZX@i2mo0H5ou%=v$k_9b9ane!EU27)2}hM0=}B5 zqL!XuiIb3axIa7k&k}JDZ1R5Bu=)Q0OWr*H0B3p5)1ttXoYUPgx@sTNZu668%H3`k zvQ#SIUrDDAwbJfm2|rZ3t}=(r~d#X;Q=V zK=o)FZD2Lgo7*#*Kpk|}7EsfW1-$N6+2HZc&z;lqx}7VB=sukDK9B8+u<^ckq3QJ1 z8)qK3b6pyFzjB`0nErTsPZ#iKzWGRP8HMQ2RjXuGG0zbtV%8;U#z{RF(6R(m={+Z* zQXH+~5(k;!9S@9biw~rh7c6NJ8Bz<&EvbnOcTvnHEcntAMmOl^%zmxc_&$qggRRr~ z`#K&g&1Khim2;%w<&PyJz`~NNAh^k0S)FuqPQ^K1hdRBv^_>2XL+155T?b@pcv{P+ zA2en3!A!B%FXX)bWR}rkkE~gq7d2=s%u8ls7v`^1C2v-%l9!rihFY<0I?8L2E3cuU zCWNwuZ%$YgT~=2D)fuF2D}~=cH`*QR0k1xPS{5>0>c&$0-{VyM2L#;77+C|)=)Op9b&jOg=j%4 zU-Xma-&pEgPTy3gM_T10&ar zYq0IyV(9b?$5Q!}K?3acTC;byUFwL@Yb}?mdn_&0X*%vQ(4*3F?ACNrQ(j3$b@Saz zJ+>JulH`cR_bj#7J;_Pl5oHNwYUM&Ht5*VrNG3t$skVIOmyFW6{ZwalSDCtyJF`(X zQnx;PPAn#_brA2HAF=eeD`S*3-TJr{AV{{Sq-yr0N#s{Esx z_V@zsrjyqgRudrzRf{1lJ1vPCRUt)|X4wk*UK4#s}V&b}i>Q^$^?#=T>d+t=X1=*=2T>^WN813l=A@mMyAsl*N_NtH>(7BkZawEsCccxx_S} zuwC`%ZmTzJ7ir3LGv~Eu5vM4tWlIw^w*UmrYX+~Ud_SV<)@RuDDD2yL8EU$@4o{)8 z%C_rM%`ct{)i?()=~!3iRn-SPCy!}r)6VrqdlgfQ$DYg z(E3xw^t;vhjck3s>~xN!4ktN;eY4t~zfCq6gDgwq)zP zt2!1sb{66%vWf4l?vHByTh_kH)Z07e@>@2n_K-I*A5Mx_wsMQdvpgW$;6{H{R&vuo z(lwJiqP)ecmDNannDhD)h4cxr1z7prSUM*grS&hF-QI1)CeDWX`uX|0pYgpHM8Ky8 zZ=ZMdIR~ZjpPe68_}4J$bAZ`UyJ@QH9E%n0JtQDT#?X=x=p6zAk|B(d!X%D|&?pWE z#wce<(h^BTX%a%Q5R6huB~}q)+F=+M{s_0+DJuwL0zx~rPhnh!}6Kd38MseH3i zwznRZ1+Q4T?xkuEzPi~|YNacXN?tPD;L7H-CR0{?&Wz(Pq$Y)}t2lt->`|6e^dAGG z^#%v&ZJQZ>tvsiL(bkin+w6RF19AC_uHQfX1LXez5B(G7xoZ?N)HcfN6^cihA&mkk zA}wsJf+-$@(mF`wV2>rMJtNF=9}uQG6$P*PS56jS4-sewp{L!+#88!&}GRb7OWPuQ8mderh7TUDj*VIZD89|kahW; zBNol}9dYOB^_0i6+k;0edOkMsMPtooy)Rd%(w?Y&)u8Cgq=wM6QtA!S(WZ10$I zmZBTfx(jiT)tsfdEZNa;Keq(UAH zv5?0};3|;-7XX?GNutbzc*%^JX748Nxco=H?Otos^sX;!eaz}xlwEGU z1oK*2mb58^jOtmIweprO7hvreYTM+lowixh4`|M5@|&{^?`5~oYWi7>3~e=o3z0mn97ubIoI|sC8niH(TR&K9uI$q3QEJ zQ|wbNef>`rn%b?sn$CXux$uKJzF+fq>c1etbveRH2C}hkm04kuQ6y;4v4ay!?6QK= zs|o?>5JpMi79R=XT_Z?ziVvVzTO^RYN5kkEMHwN2*pk4*D>!g6Gbk3p+GN-Er;qm? zug-eTvBB+hPJc}IKXE+v5Dz_yQr16iIIUQ-z^h<38Ov~TUH3Q+UE1Z0(MM(H=;*k& z8<(G8MXZ*pGgaH1Tj*7J%5-be7pheYLXZ}h&uLtq`o%RW^VW%N1P;>5#kwiIx;8a7rgHA@I$0P4*~yQnodjdf@5tSz;Pw=k^; z9_k`_Q6$Vhg5meN&o<1@POh5BxU`5z&S}riZ52kosm5R}KfzDJuerAZa5&MK~gYXdWY& zS9p?mnZ&XVo{b+~`A=c=Ka}=8M~m3$9FDo%`-@WXuDvysTd{8?aYJ5!E~%6b$n_$udK5v&~?#OD(QlvI@+^Z zjU@p}WvrkM%0u5xJ894AjH*)6o}Fa8Z=tvyovk+rcig5^2?mQYx+&-Ts_FdQ+>gKK zKQVrr@~(5%<_or=jG>;9(O_W=4<=X;NZ^c{#5j)tvUoLaeYpIG3oPn*st##UcXD`^fp*`HSZ3}AElc=uCTA4 zg>B9%$)QaralbKAx!Q+7kAR)0pFMI%bJlQh1@bxAc1 zT`V7+Ys;%70ii={f$uRDs50lT6wyFipFe#8Z-OpbcTgFuSy0zeth#D!`tQtkcYwr( zgVlB`(o(xMYqH=v8omnmeh1|5XW@cfo}Gv!sE4R)EHFf}R*q>Jgn~9V$Z~}-3|Shh z=vgPEbSkk)a10?yY>$V*Ru@C*97KS^4HFmzm>yyD1WUaPA4 zzfI6Non0k+kL1^Ks|hP0w&bjxbXQ0&%JbIJEx@MR&bpX>Y4x6Gobyw;vlq*rzmfUv?|ygBdwd#2DY*=54)s!H zfCiZ?j)EvWBrOOS=n#dI!X$_fglvv!@svT6l^J;^34c|Z#6PxFr*7?19Tg#gtE#@ zW@o3)!*zKX&WAr6t3Nc^k4K-OyUncq4X@|eYO8u4K8A#8DzdfKy>7Z#=30&8u-+Xe z!rrwe&i1GfLt3Gpi<8w=yKT@_ZjCFBqacsY)xv}dG3=!!9a$?}l%>P8X3V(}c0g@a zW`nH*(W+Zr2=v~uIw;TGPh#Wre&+IhGgMa*#tLqN_if}g?aO=Izt10k;J$YD9uOvs zwO|`y4%LWi>Jb2rAxu~p2c(Uf^jE;s90!PwPXda3(W@LHnBfvdXw@$vvN)6hNtRDT z92EhIEs-q|E3Gzoi$@h?@Gl3g^ZGwp@O?Ky^WKwfgR`;8ze$^E{&tNGg2flhjb_bj zmXMmrSA#aVo7%7gTPPhA4%?nPDPq($vw+b_NZk&Lx0UPKa`!OlH1 zy9sToZ8DWG%f^P+A!iqi$MPX)pyWrdo#c1au$4d^#{^!)b3 z%okauth?K(Y}uXQy0@oF(3Amn&e;Rl=kjaPWqS$+IIgG2&Vj`Cxr6`C}<33zRK_rg)t;Wi3)Ai+Bc3@* zg0d`?h^iwV}KF#2Ieu>BI=sEpeCO)pepVHOj(r-PwO!pec zWLa&;?poWa94!XPTYVPAl2w;2(9daWKTF)LZC)&Uyb!8TF>d;+K9aRCd zYpAxpSFL&oQAMPT0?A92Bz7fQbyHllWkKy3hieA?HVsB`GK%R-(2C-UNCj%kLs_Db zeVJ-dUqc}}#1kMiNBTZuLpk?)Cx;U~Lvi$!5-t#|4`EO(OFOBwltQX_;<@vMM zc<+t=oAQxcxyM%2YKOXv05ymqmW)_Tjtd0D2ZU@Mh5`t426pl90rKqim&DtM9W7m4LsTy^7t*L92R@N%E%%ju*lRmZ_r=h6BbhXJ+MP@4K zX}iN_K=#*K5wbuUs@EAbjiIkv41q2{+7wRA+5UzMj_!Xp>vO(y_1`+f?!tdAqxiZ2 zHQ^n%0UF;~pILB_*tFmfR0Wj^BCL>*vP%qPct*(75IiQzq$rP(f;5Ik^o|j-EDIxH zRT4C4K8L_aLdNlnBV>*mY8cAtEHs!hFl$djvN}hBZXcxiJ+Aw}^m+_C$>r#q&(P@n zj=rmxw?&rA*(}O!s2_JGe_jg7d8(c5Tr6*^5(Y|I;#gWPqLHJnR*o9$n{I;n!Mxja z;){=-HNF~@ReCDDen`zrEe_i#3Z|vE-OrqBC3{hcNT|UY$mrd!#k9_FuC-Ze*o_&e zO2dVtWi~R~Of_QgS8)AsMU;oRX*FSQuRYf1EGErF>aXiC8N5(N<;NLwNps9ho$uzD9s;1m{^ zrg}#bq9BVT4=XA0UqK-%#kj^!h3d9+9yf1i&e~@c zwRxZrqbmz=Sdk>kxrn!WwQLtY_r>@Nf zR$7e+Si=W3<@8c8$YF>{STw{~*cb|hgs~eH#2^omka^2duA8RQIqWMNMV+*{m~ePCHI^r!HK#VePB2zkLl%p< zX`-YvN-JF(D~T5=vJE!6>LF^bRF1NV>1k^*vWUg3-VVm1hqUW6;;Qzc zfUQ_WI%Zy>WLGD~I8P9QMjWI;=WPzqgVuIip z8^lKhMtB90j1b1OdYKrshXX8@3Y1s-7tZ>=o5b`Q4BIrk?dJLYE$%(6?m~-rl{3-HR3jCt47kNX^drT(>kf#m*}uOkeAgCC3dc*ny3_Qp+%A^-lbh# zEnyI<#b_ze9joiJHL1F5uoCS<*)8*dLrMG{U1vK)mb%|XM$byL9TZj7QcE9;SGCYK zjRJOO33Lqb4fKt=fn6L}PPaFn^!ZqQ74e?$kma4vIQN%O`A~=lE40m45(Y@n#i-;c zuQ6?7Old8H&^Av9(-;S&gq!S=KBW%fk{0Nh>jLP z=o%t4Qdm{39V4MxB#kH&7W#9K-0$9Z(-Wg!%MV9E%Ix%xA74+6=70{2xgO6yJ)hvy6Xvl}JX=>TgPh*J<2Ccb%@qpJl@g(%x)JG9B26^zphVCj zp`1gI=1V1ot@Vosl4KCE|urHIdfY%`8|1X`|@Hs zG=SBjwZP46UagYVW%&b(rf$yLxG7_1z>Tq>-RoJ1bSb{ZBG9)8CIdl{>6=!D%;-kOzRR8Y5(ED4`)!93lzh5(hC*TosVM4>5F#OVlz50q|&uYX-Dwh)Y;B zm00*3Pk_`5e&h09&u`1?8mnf54_l-0yB#OWc60`jTJz`k=E>~Ahw5PEz5Y)c>0QsY zbMU)(-9v%c`g6^8%;s&)1dWaZPR%lOI%Y^zV9Hmvom#$@+u**Z^&VU1?-lF5Zyv|% zzW)Hv@m!vkBR#wup{>*aHI6muM>p-`=UOY5HJ?QJe$RFD{SB6Mnx@%d)OR;T`rQeG zZ>VOvAOZnIRb34_D3=i6A*dde&h5@LR4ZD5*OwjB$IrUF5r{MQ=HgzX!RV4)Xf4uF z76f3jG8Pe4pr=gZ)&Phkjz=^|JP)MsR+7LPO~zRWNF5>w&^-@~Nj#-w@g9@XI2D0O zY>qNe?g1cikdV) z*Pm%R=?!~j`gpV540%25y}CYlbmJYr5w^pV^ee{tUfEq;3AtKqIytpl`c}O9+*Ope zwqE={i|l@g_FfO7?d0+PA8VF!Jx6}^UQ3htuKqU`-fy;@7Hp^T@_u6aHJsnj;N!YF zeAAcddzX^eyyV(rGid42yurIuMvDt|Jpz`B13gPKy$yPG&=!lZgp`kZ^ZFAxw-pp3 zbqu#pCMTuK=RGbylMb8~+*~Wv_#H)TL`rrf?JJe^9)+-1CXs?(yw$abg1Lzcm@o!{ zqt;S(p5r3;U6cIqXi|vdPI?7SRD#Lpre}MR2Krss==)yF|J}N z$lj6AI22hU9;u&a+g>x9Sqlm7?L#Lmcb+~k9b9l7#KHmp}dXEpFsjtIsGL?wNK;s=H zSqBg$(>HBmq^?TH=8XZOBpwsMvMUU<>myGIBE}HO9Sc@^PYALhizlE}E+t89SFvoK zScWnh;yMR|=&C}zWRN^zF*Hz81py#>lCNjl-e=Tx&L4cjuV{*yPyo|>G7D*N*6wVTscv!#ELpQi9ouQFDw58FvB*XXiX zbX#7>6KSJD|LEo99SeE^bFOw^V;!_iaP0=)VThSKbQ8ndR#j%<(!kzd5#O| zym8bw6x{}OcwHVMnc!(U(r7TQV#$ssYzP9WnVY%b=zV46{f?s- zQ07hLspxe+FIRQK)vnJ~Z3_*A4?{OU+Ij8$FdKDb>?11XcCLrc{*!)ZTIS#J*8c!Y z`b*{f^!|HUyE72!;N{u(8S~ph?A?m$>iJ97YB>20*SUJQ@sxD)I6dZ0@$vu8LrFeDm|g@12tvxEz==Ohc%Sd!b6(Zloh$cHc^a3Z=)HmbKa*G z8*}OLIFmUKf6H>uL*?y=!7m9kh+;tUQH263uoUT^iY0>!Ng_zFLMMrEEDDe`%WND% z1$ZrJ(LAvU@roiWR-T8zIK+p5ixNs1H`Zd0m3*P z2)FG205R)2e;2>2%h2_EH+=4oQ}caIHe{OG($=GG9Lu9#2cgl9-Jz#j)bvVKgTGVa zK9Rf2at@Zhz`UrqyG-RBHwHdC)Y?|Z&hOjKv}rGz&UU`f9KMKkwwKHf*+ZuqN^zdW zS-hF0&e|HyL<1Qpp(u{3XlYTJ=^c1guFgiUWtGjMLkMbfH|5P=oO@6gM9u9?p1imo zuOnlT%;jv`o*U}?hd1tdoefOT&4a{7!RsW9!7ALNU=rvGD6>3Fgt{zpFh-D|`bG%J zEV4YsG4L=?0>TzVSmO{ChtN770E}BAfUvqmXrw}>859o?(Hg<-T4Q8njAQ6LV^%oD zQ5ciM-#Oi%s=TMN)ZyAeEWMwj*u3X+U&*+ow99%#_VZo&`Da+G^_yRKoqLH@ZLW2t z`T5H9`MsY104QB~9TStx-*I`oqp#b8wcF=6_pqbY=P2%3y5p8}OJ?O(eqyE~b>}Ze z5_vB_kjYso8l6f$%IFrcNUXqp_`>Q~tP#U9JT+V@SPJqf>d5WD2J8aN39Yl*v*C90 ztl3ugpQY$=b}!G~$HZfM9(bi}gd&*8fu!psQxmVD3vFRp13)~tp_qh$t2|0V&^-)A zQcDaR2Z(uyBTQ_Mk&0GDA>gtF1tdv4(Lq?M8_Yb0B4B~gdI;c+$N-T;O^mm1>P{>O8KuM)O@QHFDk5jL|Y$TZeisbar*DX7wbh>1h{E zpA@;78jW7wjSK8IUIHasb9&x=c*f)!Xorn_CqNgZ2L zyF66|dImfRqJUb`)m7eirFFvVzO-!Ps4IEdy}3iWXZ2N_*_StUIeplAZ#!Ox9o5v~ zwo&spxcTT#k1WM5l2R)PT4Z`lAjCy;2Qr4Tv5?UX=`2I(JtGWkjT6!^D@m}*=p19f zXozDF`bV^Ao{?li9VdZlDnbbPJqn11KqYb>2aJjc*huW@5>H7RPZsoFAZQCDiy|gw zZo7x0_5T2l_S)PVpDj0=XI|iSwS3Ko-i5t08)pvfU=ycVI{h5A_sOSUVV6#=t1(|X zqTcFF>&}#CAxcd2>@;I7Z8)UAD>R77NHmdAmqVYMsLX~|k{R^MmrCI&uyYDk*IrV~ zs|59c*IgYoPf4>Ysdcp}xFz-HZlEpMbC*${(N=SzkOld1nltPuzohc^-p!ybnQ;9q z{Ey#!?+L4)4KC$_NEFqCwzx{q3V_l^vQuMOUZT%4Od^niHWZPBBE%vyEESYbFja^` z#z{N_3|SRRq*xm#izEpPKzxoR3`r|O!m1U}!xk4ZvwBYu#YATCizk5c#UWv2DG3ta zQSdz%(H>XTm#ac0y)%>3-|%|+7;M{JZ3)M_crhDPsO(E$qd8Yx^;>mdWfKowBUn+~Boj&0AA$POHW1Yw_CpA31#-`>l^H^bZfE z3CLzHe%VG80b&HYx~mkA0}+jdA&m`V9!$XcD?w~6fh2S+0g_s=9U{Q+BU09iO04va zkwHLx0+6tz4JAzQ3nE5XE5jT|gXUVyA#$QP#F1b^$^uB?8Wvc63{poV(Cg{b_D_`c z-5ZtIom`%Mov+OIbzIJY%d*$HtS?@!Dct6oP4|a#{%-cNZr9U8tFoePESB7=%}u=X z36l150h1Gc+~VpNnuFP}X=%ftS|xneYC;Kle7a?#*sTy1MUbU6s{`z)F3jS#X9d2v zE0NsvC3Mk3+?g#{KxxUD(7AoN!QGO%ollq3+VeNxrQlPS*NY9?!_U31j_Z8h_`Mv@ zlX~7yC1nAMj$=@Uq-hEw6X6sX);P6@SVx3tWy&eAmAF@dy3n>xMtCDrHbMB`%VVAUaj@F>{G&Jd9zH^|^x&d){nJFwu zoY8O^mac4C+?mbOkmWchO5;rhAv>DOIqvbWCX|-xV*y&$nkegYg5Q`1yur8TZ8p}l zdZVAYb9#B%O%!JJSCiS3JAE*)>U{0{?oRUgZkmgzU7snhHzV}it|RO`XKLbojJxvq zN2>VdU}xovSlA+R(5M50HV*>ji4UZd7eLrjM1`U_NXSDhIyyxGWN8Q|i+BYS!1%@k z;;RbCk|913WN`>fV6L;$IfNuc#xfrZU{M<)G*KJ_p==6b2-p#4p>Twyze{mD{{T#R zZ&gu_ryl;l!ta~sZ7{WZ{MjC+eqYtWl;4L(n||*%T;)A0Lt@)`Sk)jVNKqMG)oP@! zN=@gewOONPylJ(b>$N%h-fB&%b&j&=4K|H(VzH@M)`OayuG+J`UUcn(w$nR@04`+0V)A#gN;J zDYq^&PIjyHeosq#gLaEGw=>&!CV~3$<~3%-?5mM_Zf<9}Iu96vBx>MnI*O1c3}x4S}TjW$67oHs7o~zpOKp zrO-Kj9;eFe>N%UHsja#M(_TA$bTuIBQofq#JyEq|o~vOlffaXoUsaz*moCj67m~}P zQO(v?n~7Tzrz0g5Yp5rp#k-&3tJqjgm1eadO%-FdWdpSdrBdh83f#FJ*m1oaIenP$ z8*x{uy7wQczroWnO~>=K{I@nhx@pc|MhA6V_rJ;1XX?=21#$kL$bOCalV{TATSwzF zKOrK7siGG(T7-9)DVkX}G&gk~;AEDjyd%bUm z+0=8oI*i)x)nzBAH`Bx#=eEgKH9Kse_0zj3n_(kXik%Q6A4kx0_Z!Ke<~>JL62WVj z+OYZMD*u`21wj=3`S)rsm-N2`P8A6Mjicg_C*QgT0~{#-rU^P0hK6>@PX zxX2uGy2h5SehzElOZR4FlW5AHW$sOON#Q@?0q&)TG*<3&6bnf zU6Rz{fs&Sbs99cm%((G|` zjPtrWMPXM|H$u?9%P7&q9AR#BWo{*t3Zb}aswDZF3T3+No@3=R0H8sjTcOnFq_P_` zglfQOtR{@u{rU2m^M}!u*)9iad@lpXt3+jLB_tP_trogY)7(wHFgj=+>CWz)_bjIvd9gtTD4S)v3(E_T|ochQC0j@2!_=IPz!(sL(6LxWb2o7L0v^efoiIqBJ)Cdy(# zpRp+4NcOXa{a@tSuN(Ue_Y>$G1M7c;_gxf8z*Hj9ia3rUbYLMtGP3&3$M zG15362>}QrtXYJR#88qXErZahiz5M19s`VsMl?wf7m?vS(S*VR5g7?2W+6U<(t1Y0 z=^P@$qBca4LZK*UfLSAG(5;HnWsE_t?_BJ6^a#(KNRq)?DuLqTewx=4%AW{e=~ARest`Z2vuXFBTg#aOf@ zK_!_T6=U?~BboP@G;aC(G?_Kr&$my_>1#RKNKtbhL$f%G^T1Y>$SEXtu0N;F`P=J% zGunJ(`U*32`P=M&&;9nFKO<*l^}e@gITf5zvH_}=83dBK8qY&4E@|K;2hc2$0|}D4 z$Rn5{heF1lLFOuQ{jA#odp;;6vf`p`s zBM49tia^s4D`1JE;jq@}1)o&;-$C^UkM;dSi`?j3?x|$dL3CO-$g($E?rg2sohFpl z5-Y2qh=e362Z>o414wLE z7^X%;4+7q^~HfVF}FP3SU zv_@X3p|>tBjrZQM`50i$m(T@eA^KT?OxSJN`R8K}8+IVNaffy9<^~@avO2{`Snkg(eXdMwES;t$33^fIq%Yc z7IZ32Tk^TmWN8*zW974%HGFQOFs!K>3qX)b2~Zpdq3{ecIV5#_o{`ci3`nH51qHHt zPZ=V{n9&fHkkv0>(Ihe;YZdV^m28P3z|vL~lfhdf;aEKxAW0k}Nc4@7BDBWA=@tgD zm7esp`q}h<3%B$~oAjM)&U!9|$?NIGg*u8){UHOHB|gS8XP9V!KPTq2>HbjK4iu5W$}X3X5%p-(#KW6tZtO5CE5j9c`Wtk`9@NsmU02JJsLs7||2 zb9HNQYDQ*Uun5ylYh`N$lE`w3`cFLV@qTIg_s;b{DE^DYHgJEX{y2lwes|ka!*ye{ zN0rD)DV9T4N9HzH#VR!-$5`^oNpz1B#yLX3$YLT!4uN1<6viy{hzc}89RkDPQV&ST zJY!)~9H+)Y1SBznNZCAN08&~@fba_sp>&>;z$7apNLU*ufMisW<~kH(VXU_9QEckG zzK>+*?(80a(030t==D6_ne5vPXtFT+3zsepZFJ3|xgMgFUp;13R$33NJCxX}peW<& zI9)0 zQ$UrL!lg(nn_P=R=Bc)hHT3V8{J-4v9kb;B0J@vhf0_QX{P@vs@HeYUy0Vgm;qJOU zW5Zag*_HTXQO8t36#;OP10SV+TmE zpplsbR>0PchthgR5QNCFBCIZl(jbWfmQWH86X>x>pd=F(l%FxQ_7Ji9_Yd4!#nKhG z#r3S3duN;Uom++4=sdoe+BV-hC(^ZK7FO=e(+fzbhUK!0n0oXelFsd*jZhjOb~(Ly z@!N3WcU8{17_mEX4SFtR)=MspraLs*tf(mwl)E^wj0y=ZXfjj0GtN!f3s-w{*3Oonc+WJ{s5*xS-*R1YN{La*s`g^UP$YK zB4a~6ZDcScZ=a1A1u#T(X&`ix2*5ojq>N7x@)kvb3{YDl2$Fcmf{=Po2*6s=L`IGS z#w-vcLPwceOJMYgB7qqz3*cCMC!}l+g+TNwVhF+#FM)BA7oDW+*Y9H`e?)#&`nQbs zJkQCVzu=pU*7hEESE=y(eUs03w>UbQJl9{BPoU8tZPZ<|T!y%Mqt^~tDl z(enFn;x}W)bTeeFuNk`yAcSetu)(`)j`P`=?KT?8q@GPA^5`|s(t94GnKW5fmb$C! zJ`rkzFEi(P(#ULV=W?Dw^iP#=zR#-J{G0Z*4#RMNq<%T~sQ5msBZl3OgVP;W-?2+W z=`BGLJ&Kxg`2xQ_%5haQ7$}b-L@Ln(Bv@c{S!8Svg#qyJNfZq+9JN(R@Sc&TK1CD6s11j}dQV8QdPbPgJW9y&XNLPRd*?&Gh~KIAr^WvO zp*YTmfcSUmAC4;5Ub?*-Oq#n-ob-JUlhfH}*Q3vU^|e*06}=^kK$kPwR#ED&c50Pb zSuCO^cE!o;&6e5E$Y`WnwReYdY3SVj+s=NC7F$ZyZ29jamf{uIUmlHK4Fxjmindn{ zqU()Q#I0jjOD(K@cG1+_v)%Y_pFWl1YJAi8Zf6bKeH|_z^}oP|HhB8WU47V{Az;^} zw8mnpjba2tZETvmF}6|4t)rdNz*5NMX;(tP5C+L45=i122cc_EEcA&dr1YKz2v}PK zMD&VEEO7}8OCxa65uyO;8v>G&BrXf+d}o$=M?!)ri6dlW5*AY|lX@{5M?%#`$&R0q z^-rOGYx|QnJckbYN8=nzE|M9vUCQ&?Z`9{7U#aHovs(@< z>xnGOEs05Ll z4n~R1$ElI%+b2P4o37`&HoHCBtBd>3AH{ujA^vgt{Ci_O-HvhXKR1W>f0yK_)X|Xh ztz~PFXxx)ma47>xhO=f!R!XfTg-pE-P`JroK7*SPl?(uctrkU-#vm<|&?1Ft;8+96 z^o%j^v;`4_sSXjsRujxy0}NydBcb%3ksw%B6oDa86=IVpkeM`RF|bL8UA?K$RBWvp z2Ou@KbotNilb%=WR3D2&-TqtHeJ9~L-X7nE`PF2(yUJzQ#;|UTs48@Fb=+(Vk?bX@ zO^8KVYmwu2mb*w(t7(U4Pv&%bpEE|!E0fE$v{_uoC9))VzfI1(?kg{5y~X_nYS^Gi z?ON6rIzEf9=VeVpx7*AM`5-=kL5S#F58uJprl&cPr&_+k0bc~TH3&8yZ}^eEb;IdFh( zjJsdce=z;mONaC!TQC9k{{W2sr1zg9`wz;4X zSk^v`EJUg5-7aU7S8SLs$l^l1oU>g$l!J#H4*s@X5#H6h^@2h$o>y z86%-&o+4Qg7Rl&VM!@oXB1sf5f#wQXky;`d=vxD%@GmjSd`!YjURf_N(pg^d({~); zatOwwXyE~US<5V{H2qWaPv3$0KKDPfhm7}si92_q`N!y=8sC(jpUE7T661DG*LBpo zoSEBd6{4E#jB4#yc{(;7&A)Na*U)fp>inLcRORf^=4-WI3>6Wn#DKj(^DU7*hcj7z zh9S$;U?oQ|OKDj|=+Ri#6`ZXouhlx)eq-2iIQP;%dxq$G4G+t|a)#&kzIFFM0_l7| ztnt5h_~d`F_#Cw)mLV6aI0-m88_4$VLg?vHYs*Sp>l&HWqeD!O0O({A0~*WXbHRQv z&s+^8fgn*7$ke#V$Us!jNiYo&B=lr4@GOWVWXB>21D6>bS4K#v0>ZHPM?>Q!hFDM7 zy#cG}c1>)BOmQw(fo0UOELg9uEgEte_5OnV&-dmlne+@#N6m2m0HXdB+Vwmy(6wj! zZyn#1xO8#uKU;Om>})dYJ)1#FbPr`CTeg;LW0|ycUT;sQb9x)BTXb|+P1DjsN?Ns@ zM2IG6hMQR!jW!pm8m8hx3{^$ZZ2+=7r7adJi3@<3MBh&(`q#_2ucWH?mi=F6!+rah zcX(M}XYid5hWmfa-(LQ8>^Jz&1V^s(S2DGdG?K|-yIa|Ha5qVyMRu&2X;L&Wr3zzE z!d6C&Vx$OJ|HJ??5C8%K0s;X80|WyA0s;d80RaL40|XHT5+Mc<6Cffn6fiPD2Nfe0 zGbBJ4G(sf^|Jncu0RaF31p;R5Nb|2VQ(v?AgL{M9%oAoEiT6#$+%sF0tiuxxKI{?I zD)LlKY60gRbts6Y0ptx$i2H$j<7gaE48}wXsIe7iL@_H-6;uU4XF(YR_=M;q)~0k= z=nQJsU5=#u3#%xPjx_W~s3`cQ)%Y~|WB`17msR45KJAX5nAMR5Q{aM-BcU)?sqrlM z;jhbMf<+R~`HcHmFDT{aRwelP7P4kctYW0Ck%h9GEk;l*7&Wa|abTA8?mCghQUcb# zE1(uy(MCWF)z&3-fj=-PokS`lBI`LjODk0@qili@y2~?>ZydSYYnZ`*#yW;eAzoGtGJ%yuGHXUbr9-E4PUp^D1b=r-qb3&Ua1 zu)~<(0GqApC!AEIJvpCu<+fEOldOWZCxe zcJ-W{vyyp}{I%y^+M4sfFnt>K-_gHq>*?8m&+2&|<`D#-4dE}GKgJk}zIp*GiX|pg zWnLzynW*dx{7iTAfc<3;;-;0ft41cGwC@?0TlNdM>8Rd8>#g~@#J4M~$m9gKEgCjW zYBD(teSfpWNt4a-@p=3KFZC_~YWe(e8<)kg?&Xq-hp8!ZN2xHo4sR8u9Ew>VI4oTC z+U5frHD}BWH-SEM*vMG!8fCcFeY2Ca8Go6`R^6!hvXc6CR}aVOimobZarnO?a9GoT zUa5%wKdfKpVbSXo@;9|QoxF~)fiLni4~(O@<}sEw#%pPLRx^=fISGIAf@|AG7(aLW zpP8?H`)}WH#)4zaDTJb7*DG15tK|opz?DS&0pnhKcxl+mb{h)GL(1Az`juNLb3RaF zmTCE&NSmkX{zRLdq*xpIyE<&8vRZafyDVDxw(GN3WO1(#7$~|F|Q699&u+{3@K~Gq+tNPf9 zU#-s1tou*=z^h{VvmBAmV&qJ$pzFw92;|E{Z=AF7$4`-QG@#U?B|Be_qj329!r<}s zIHl=c8%1HNbR(F$*8H!SAqFn=W=ZjvvoeHc^4rr)^R?vPtj=l3nQ1+}$ltO2eIL=E zpQ!uq*iX;V{m(P{b}&qJm_W`vZespG(yK*N5p^o^G1dlyyr3G049Rphz#u6l#jxY*N`^iniuY^oVr%s{lR zHG?0B5$L|Re0+@oVS#blDp#y5L3K}9r1lLyVkSEyM#!-n^}%7wB>cG{S2HQuvn}j1 zErXTGu2bq<^i%39tT%FBJ7oC-$r$J?uvghu%9j@9aQ&d04_?Nh?`CXp-f6z&F$A>4R8%KRKR)S}-tyh}t&&gjXNWQ{G$ zp?2e6vi47rOwQ%;a1%e)f#)~skdxHDySDYr*}zkb}~lGshHXZ%a3mdqKG&m)gi}q3_MpAbP@){s9JVYSR$Qz7hrex}7dsx!I zM9+E2OzEC=EFX5f`~GIWoqO-=-_SmRuc3@j&Nt@|d%^NB{{RYrg;1n4T@r>Th`)tC zT6Y9DnfQt1;!5`s*g)`JXX@Nab4tu?@Wb`W1>BWXrz7j`KNx5K0F!x1$@=@3$~iuy zU^#Ai?_8U#djp-LDn`9@KH!>Fv1rnMpi8M+V)lm{9fi0|u|q61_J*femc2o8*cHmE z*wvF5SfNwHg0Nd*pO}Q9?8@fbOMlg6c~kWjPU>Z?*~@BBOA~EYttQ2MOVw@SGY0qz z0hlLiNR^37>ObETGru-|eUG_=+kZj! z-@lJxKtRiEs+LhEs)Kdhku)m(`u*Ok!R{{X4@yxJ|#!?|v-_2|q$NQD~T zyYB7xsTqAD-i6xyPSMD5?^C|HZPLrwABx9 zy+vg${{WHJPDiQhO52||9Nu4$S8j72iO6#_yIacH-SSoEUBEiQZ10efgTSN|UlwB) zBBQgocC6MBK7Y5jc$rr2+@WCDmLZ>X1=bg4TH8P|VwQwcnRjN(Qz^@=8=kwTXF>8j zHW54dXLv7VRL@6`obKDNC2b6jjn;9O{{Yv6%?kV-orXH>Dw$G^KFO{o^i~bPL=leV zpNxa4lp}bSOTQV~>&gI5cZtY;Tk<{3F#Q|$-?y3g{oRSba~Mj$ID%mQFb?J@@my~a zV)=+PYgnRn_H~7H0?JTC5crlKx0EbbJrqO9ra8CNJbR3?W{*j?2| z{w>PRkH`UH(SypJz{asd@&b_Kz^!!^YtvCWjaQDQ5XeP+;;V0=WAIod)oKsKt8UEd z9NS-B{h|+&GUF|E{6OR5;^kNHFK1Lq@vl-U+g6Ndptx145CbAV153%7$WBA@-;p=(xxd;c z&zbo48=u$FzoYZ)Vf@lO;!FWB6d8s-)r12PVxSB^HHatoHyB0pD-m=d)L;3jRVBn0SvvXZs;1B&aX(e$uuchr?U!FBITDy}obuaFH*Zgtc?V2vz3FHKC9 zCOQ!;O-nzICArA;oPe4C0F&>iV`?AAw#3+xPLVMalbeoXC5Xq zXjNnkHX2nlHl9EtYuUB08(l!*N6xbR;ZVu-J{TO|t5%tx&E0j`H&<+W6vJNSYV98y z?Nw8C>1#z&YFuF)8mG^&F7j**H#e#ADTzm$>c*^mHR$6rC&O(GRQ~{LNM_|KkIL7t_jHKfqsB>pt7@!edf!m`&zQLKexS-@o6Ehj z%gd2yG3;kG{jf6&duhCc^do)SkoP>k)ocU;0ctMK9_8e=m=>hxPBtJvq%{W<8fE zmAbSL>_8xv9mW#jsh8xua2jL}9ERs2G|gVZs-Ne8K+^*(|1Fpug&OLLYpHzo2#%EsPz zHk7VUB61_y*!A38Xh7x{SVLXVf3(fiR zq*_dL+y`W=uFWs^Ta}%ct1Bcq8y_$s8mk6BP*l4dT-Bs{Z`BrY`5afN7m~%}v$UA+ zvi&SUSrDHs2qt82u1YbFTzd5{{Bj3Fk^J&TXMZSuf*~JH{(<$6W39pT4`UniM8*8^ z=`m{DvXCp~7^ut3A)7s+&T0DRpX?rfwddK#Rbf9ZjXqmcC6-wYt|ytJaSDLb z;5DseuN|vPJ~Im{haj)W%Qje^)8l~Q*Z%;>q*k+*Y#TD{qYW->1()G`VdyGdI|92J>lKzIPmskmKa4_S zsoumQD|C(bDxV79b=8yk@aRLBTpLb`l@YNk!^iQ zgn4hpn$}jOo@J9Fa$<5ua#K59z0SRiZ>0S{-2VQ*>)-o^AI&CVObLX8R)g1@9Y%GZ z^kX}D?e0C58K(LLYoLF$m|D5=4Gj=+oUK^&(i=N%bz;fzc8gH~6Yh5SUfW(C=6rjG zkg#JCwY7b2$0&Yu6}_02FHb&1t;A)w41F zDZMpp7{A>y`^&3fxcL^L^slS3_`I)6`u7_+arujWGTGUxsMwaNt;>mOCimH)vXk%onS7i-T>6T--Fyb($ zquPe2Lsmz_I2^m^x6z;EO6;!-m!`wVatN~^)pI^KS(G&`9&h|zGCv%c+~l+;Buvfz zQ2Ub%Gh^F+`~8jmL+JDD--0~RFuy!!;}C^gY#lk*9dl3K-$3g=+4cn}Y%5qJgRsKVlqmKWsC?^eb?gTk@|w{lxT8X(pQ+L_(oLOOble@F3QKkZ zf`O8{`&gktsdNVCkZ8y+S+m05WpN#Eh`W0_#y2x`EL-d!4Tf|{@z=IgfdC9n_2ka6 zY=^Y@_Rmt!B2wp|L;}PVT)!Sdy$sU5*4Wl9)O^_WE#INYuI2#a=2=Vde8pSz*QY!7qfk%p_FM7&E^XrOI-Dci7Ibd=#gda!DEyfzlUL2Ykxd@)n<21O)e*zJEEP=$K~Mk>A4)(b0%*?uG#&7_X9E%gj*RQx93s_m|4F8&B*y4n=&J!TDM?6JjA}b?BO{?yl{S|%HvM~ zb~htZyH|as^_0p^Nb!|2Lrzrca&wY1Gx>OfUgj8ldk=r>+{u5iq5A4Jd1IzLt?XwF_mN2 zq0~ZzOgoJ&O>dJd$Zpi%Tica+s=L|TiSV1H_&*xmj>!&#XKjS<%sjbIvL3+qzPA8bf&wDLZ zqUAQ(dIVhIG6dwnBb8lFQ}dbp#MC}V=iJX8{{WAx^FJQL>OV)1Z9@;|7ID*$8knjz zn7{Jo7jrd7Y0-@6!d53<(f%cYg#J_b9WxzuBjnvirI+#o_~>dm^SB#Q zy9Zn}siNcE+;KTgKh)%G@qL-Ne58Ynwl)RzMXt)tH&|M`Dl?9+70O~_8z{!o=J7N& zmhjXpw}7Rk+a2YJqZzD6!DWfY-)%PH)|LL7;453fn4y(^X_3Zg zvIJ{>I}xh{wH^v;A<<>>Ep0jbw0kHzyTEnq${JO<@-zso9bTtK>e$(z46l)Fk(I-I z)YA4={0FGt2LAv{^TxYzJzr(@Vdqn2Ip^d#MC$W7Me)iFPFT#Z=k4VC9}xXJhHv(K ze#r6c)BDCAc8^%$4%b<2a7m^YAv49tIUhxbD^r2=b?>*zWf1QVE}SyD@eO zuWOlJ<$of~bh9lV64Zat*)5>e5{Gkz#aq+#=}faH>}#1Nc3RL|YCbMfqtSwy$T$zx zrTh(*TZu|*9|szy$EK{APA|nV@oc$Ir`F?@z|~!c)ApHfr-qw_0M+U76NQ)Xqvbp} z$+FHCyBj|PrKy6c8xE(I@!vgISi>Idwd1oFHv;O}an>5!x>4R7XIS<1AesHyUe$c9 zZML?M$<%hQUnXG20~WNoO+tx&D&*qXy5ca_9!RaQ`8TC`Tx@KbDzvHKxht^erTJCl zCk2p#W?4{N(w%aI$pAh~}><^$p?mT@X==}SC{bPP`MB^qP0eL%q z&QbO;1&?h}t_=$qOl_FM%}Tn^foD%Gu-hy~g#AUJW9C}1vtP9riz8!U z-fOinrJS9{8m+wkj?SrDq^})>rw|EWA9q}3%C62AAv*q_8rFYL;VXZnQnm3auyJp^ zZZo96jW$p8^p^hsRgSRnh!wcs3B`&*7tqyM<3-lb*u(Bmx&5K{myx)U%3Ch%#j7*#R9#0^5vO_P zd5VW&$$^NS<5>ypKd=am6=I~P?U=9dy=b`>)x~2wf27#|0LSuTdS>k}r@k{*1+~>y z9xG4vY?7=3mj0hJza7Guye%y%;_=Wn7*R!A4_YjG35O90Om`&HZDaK*)Kl|NxZpNH z_-yqaXkfSgo{G5U&2z_fHsCKt2L0{jp)^a|$>fv4`7U-{0+iJ;3_+35WBI`NKM#d6fSE9Om)J_n#lz zrX=mB@s>RKA^eXrzZ15?)!~T~VhM|h^OwWw-wA@F1}T+dN-(}w$H5G^++ha1bJDIn z=-^u`#M2xGvVW)`SH;#_7megnFB#g*el&qzH^#_RfSuvRLdlE-DdeKDR9@c^B!`K{ z)CsR>KuO9n<5KI9t2nmpjaN*Is`&t;C>b{_~n4s^;2Dn1xk4K7A!40_V}=sGJlvT4 zM{|kk+exd_;5I)COvU0Wl;VXH;U{EDp3kvmRs5wY7scXd`m9tq_-h*jw67mi<5X^~ z5kpUo5Me%55#Zy&imOa(8h`AT1_t9^J~e^4OO7VaRw%653`s8a`OKG=RA9zLT8Vo z@_%Fd_wn>=*g-tQ5AvhT!SOir=M)`eFWZ`%JjPGLE2W*YZZY*XOaRKM++^q*?>Z|4 zW{QkvHaPbU%9u2F@h{T!nJf%-+P3_5nWA(I!3M6K{sb@87ds}{-& zW3ye}zV)ymc#B!zMCvO6YS5MwwNB71+fR**Y9C)7p>|nq`yU(fcUQ-%u0}BjDH>f+ zb}#YHpQxP3bw38>A(J}GQo545vJ#FytA``TU5qNsD__W;K7AFG$5m?b@Q_(eZFP4e zr95Umc_D}WEyN@XR8-k^EtuspPJbI^Y_^)&Tjg_%(yIqdtTAO`CakO}u3|Wzj`cqA zajxkvX1cCq0XcK2c>BcM{Cklm1B469Qo{>wAv8h3JDJ zTKB%n@#_9@hR9yhq?p25-hUH&fW;d))b=>MdpyA6beNoer5GAY@eoS!<#cs4QpDB8 zJ<^^t9Sszw`Vb98g;lU$kIJB*0yIo^R`~TiDC^t~gmft^VHMyjrliich-=9+^w$;r zJ1DlbcEnVme4cXkGf+6cF4VIjZq+$-AkMan?`BnOgZ}`|%6`Ua+u_k3AQYE z7%VzN<{0owlnlT7vX%*aF=t!=F^$jis1OR#$k+;WQfUlv|o za#?Td%F}=ij6nGLd~WgadrV7g#mX5yF3ZCi_}Iq6pDm@v-|TVxbbHlq{_xRwY!Z3858CK>g8o0P8;37JPezI)zTs+AO91_M7P8 z(lAz?m`g245ll9)hUAp#rHZhC0Yc`$j=!gJ%~hW!Mk;)t5&>l>21Y7OkJRI12CmOd` z{*C(&a$x>cOk*)$Lnk2X^(xaWpib;tDfVXk?@Qh`z?%)AQP(?dx`m* zRey-Q>a~Gc?Q;z_1H?@XRzClhoEvny6P)GVoaoyV>okJ)-_9w2;!p8`g@y zR!f^z<#$g_=RP)H>elRDeC%JdXSV&nsL*-+f%JcWiRbn=>|u-fs!~j*?yH%3TC33) z+1^?@8=K5S)_2@ZGd*DuXBCERJbow(MQrOxDk&1Bl_W(G2BlDHRju^^sPKTr-ui(R z12Ln|>Cal|Ky0juw-N8HWo+*XF`8j4{wq->Q&EKJ_jKH>fZ7{>&sxdVaMo5Z^Jy~m zW}9V}e0?$zEg5*3ITE~UF|va99|kd;mmae`Efw)$=*(<&vWhTjxjB9!)oiRK&#KIK z#g2f=`a0gB9{RjIZIOqS@jKdnYlq7ZU`L3fYO2WqGTOU?{Jau}M0FC2jy=3x>6L@d z)=?}ww@?Yj-}Xp>!i zS&4IlimZ6tZnF;@q^U-#u2EdAB|u7|#PJaUh=*s%MV(S;@8fw(GLM?m0kw}+Y1Zuy z$~tM7fKlELlV;7!IxBWqwl1u8da;jlXaJiD40byi@@%;Pu#5>WUyD(7laFA432Lj( zR|3#@{!be7kf<9fq;%w}YwY8A$H%|n`)|i`DWNhOl;Ms&+5Af7({?dgR;s$v99i0? zdZwdR;Gkv|xLJLDPgW<%RI{nOp`zE&v2_#4{IVn(u=+bZPg76=T)KZS9ZkdReb2VN zzqoz(zim(J=pO$7iTQ)r#Qf1H9zq_q;Cv~`?Av)A?qWnb1wT3h7BYnHc)B|rEPohl zuz*Sz&1xbDo0YDj2!bRBabjy~s=#QrnN=++e$y)zs?Y06zz;53b!qmHcfXbULDpB* z!y7@c+U~jp?PHdj*w~F@EOsQ8maJtEP!!umW@S_way&|8ftASP9*k;SUhj{L$_-D^ zk$xT7C`Jl{MgHLIH{OIIzHEpM~ zCO_gK@u^bw7&whM+%sIjK`K=Opk+Ii4a5;8a7FwiT^ZB{Ps*OK4#vU%01yvk*?|-V zuXEzjC!|&H9-=1Nx$-=9wdR3{wuD=hC_ZcpIxt$ptbU9&4RYAz%|-)E41L4k9*r__ z+8Q=;aVfH7VqVi4wW8mF9ct{0VuLP2wWi9g$W`lYCUTT?Y{asce1mf2p3po$mXymp zMqSU5x|;*kUq$}_izy%&x>7`}p(=hmDC7o58<+sT3H^JYKKq*!`}&8t_Sd-g5PKMd z%_CC`12EKd5k{pbUFgDGae-gT*mZSWWtFV2Qn^zIuN2DS#fqDi zu7^oqk{DbjYn ziJeunE%oK%*^cfzM@>$l#gxvvjrR(^;Pp6*_DhfnU)&jIh`{c))Kv5Nn3+zAluJI~ z_x_AOLGnG1pRa#d_Z~frQ}H~lsD0iQw1hzezTF54aNEKieB z_){7SBJCx__5uMl53!%u(oetl?YaHI54iUbAE19K48v)Px}5G;%KOxBGS4NvL;%XF zUE$Eb4lR4T0eYR>FRVgcopL-^U21t5ivpiMBFe$F`+{%XqK`DpLPWDO;iDqM zZHIo(JoT-9>~!&gU(Eb{d%F^{1}N052}p@55O|0pFO&iyf#+eQAjLbCo|5P6SEyjD zCuVWi$59f$ni`d3cX?2-HI}p|sNIvh31W?Xv+pxohuA)h4wBCUer@|g-PmljZ;}|x zJjPQxnCq#%OMJ$b5*W+Rf)$e8iIMjUKaO@f*q7C28(20nv3zy;s!CWFX1PA-{{VPX zqxxg4W9KCNi`T60sb7|{cUpfFsAVnMusrM7@7wY1{rx+eo8Rn@eNV@^jS%^u%z2v3 zWB6;EQM3_{pTMC>C|0$q!mGruoIx?=W5rP=aaVBwfnfef+KJV|QlcV-UZ=9vRBFRY z5Q1w97fe;%VKF{38{<$1$h|cWSgPC5GvZg z*5};`6Yh<_Vj3{mWF{5VaV!eanC{eFHlwJPR=UVdOuKr_p<5g4IJUd?T1y<8*aK5_ zX8!=A+J4=OMNZXJPoI)H#X#T!8((U%MkGR_QZ+2`eAGMkJNmb%e{Ww&JA>Q$Xup~! zE`-bJ9X|VzbY>ti+}E6MwkoWtrw#*5F)_!A_bG|uDV4OSKq8@)*SMoadrFD0r9HDbo@#XliiTI)JI`{!0O<7m{4bs`o!?u0d-Nd|uq%@wyA zc!yEyGpSg>I6I6d;xm|h$4$bK!R*ScEkX^6vuD^cdWOEB$#eBND#kDYX=SDISN{Nz z2We7xxxPk7_VqxuUy9yNiwczXwe@{^cCmipLI(55ux5U^<;vq%$p@ej~n?PmPQ!!Whu`2df5(3}~H% zVY$~}iTyD!7(gn-0LBz8585Ma%RejxwpxZi^3ALjY@UYne6mI0{`Z0bJ;N0(-uifj_hFnFaE#m{X%c{H8tde$w9gIgOb+zJSRY>nm>?Bsa}1#66f+}q6|jZBS|DoD9Z%uwSc z-DX~=#;Y>x7S@Z|UZL_gRa(fVw{@}7zb%jP$Esrew+WB`0JAk_Gj+Qr&erShBTyf> ze+~IF`ua!Fsr~zJ>HguGgXuGK{{ZTuWp-$(4mZbsaXc+E6->lI z7g|rvP3FF`qGD_vojTdu6m6+O!M@17ghkpdT^sRRd2D?d)NOo~PzHwfJJN-!rod^| z%Zdra z?;oJ5;qcNM%KeVOzA86XxQ~*-qH&+&(As#1`JbTvK9lXg-SY>~(0G-!$6mx#zoyG& zEnwRZ=hsjUzTb(Cf9b@3(Xq(`5cX=+D95}i{-88D>e8F#Hp(t&7Tkb7!=;rgccS0A z*F9F-y57tokJx{io{G!IBFQtsO?)CunZb z4Y0=T-({@;>@B9AmntmHv6Nqs9ON%!kgG5I3*5I*&Gy-2k^cbmj^A=_T2*Vvv;J8p zY+q-t#c$UP>^-m86WIl}3V#d_w~uoV)vtdav^|Hvh++1t%*6XnP2I*y^tJV>mu$N2 z8*{eJUAuaElhqqfjb(M4xjNN9+=Xm>{M(rd^t+SzZNlX~Q%^SPM z?iWGgTia9@vihu@&{(?fc>WtU6u z>xpkIjF>pQvf9;p%L3TE?hZ}dk3D)?{;}mLl=H(me_Pn(IANA=V*H6)ACvfO`K!y9 zUGPj^b(U4jhZNmKsa8dR3s}z%ul7qOcKmeHw&&QgmvvW2k1& zJGiIXpop*lM~U$rn$@7&mlvydsde;w~={T-a^=kd?lw01r zY;_^jivvdLLvC46oplO@mUuap?B-IdW==oLUQK7=8-}QXbiz^hHT$gmttx)ab$vpU z+QroeVe%^Y=7EZ&kGXyS008@V_CDkCeZQgj{hfOW{rmo55xtkhp!u%djIaHQ14q)3 zo1exvnOo{$ptk%w7at##Yug6Ac56>jmfe!9 z;YLRyFLtvhDxrw%^yb&`QN~u;QSz{H+bc6N#BbMRt=JgY!#5+9#b)NLOR)JaQzE;$ zi$jN|=NA?qt;<1=W=ghh9tLs?va#lK*~nA+oZJ_qkjBWji#eECRbFnQjJBp1>^v!Z zNOlU-W>|}+?>;`#>d$PfZyA{90w(T#u2Pk@`$*dalFyz9H%k zQEj>FsV60o{{TFkiauLETawv1&Xhe|uP1JI4*0nlI9%N}Tat(>&C04{`k#=b9$l

    =jw~LrTO$zqywRD!#9gY8QgPLT}@>iX>Of%O{7yr!n+$qt^C&GR-H9o zBAvabvmd#7`Nm(e-^rdm&#?MWu|K!@`UEij8-(mB@%UfN-<8zk$$Ppp%JJH9{3&Yi zIGWZ|heDi8YbAVpSjPZqF^-aoz`KvFO_<&+7Np3kt7c9vP9&;$(f>?wuM^bYMu^n8`fgLO3+w}tpLmHF@UmqMQBUYy0(=Sv@ z0^?ArE3SqujP^Lj$5~DZYZ|o?fA{z;YGGJy!}~`D_AS1esRm93c#|XaVSZCY_?52X zbA`)YqEi0=ASy#^aDgppy~`6u-z#ElSyrbbh1zH0>4++Sy4=PsXzUr6#If6SZKg?; z`BWW=NP-dfQZ-fI&)9n(r+-lWkbQ@{Mu*??2jZmc*H_hib^Jp9ICXZIxc4&QaYkUO z1;@rmmEf$#s35I_K!OUpLrieN8yRKv?loR*pKW}A$uywP}xZ=7EZLGxed z9fw67W=CT((^A@wo~1B-rJ5b--gfK>Y3FT^rhJNPuNLL9R4TT*-RgAfV6*1~red#e zvHFO{mJWasP|;kWJ}d2q0TrJM3${icJ%cNb#|`>yaMj&)0*t=IKI_~fI?Z)!Y-r(# zWFllIoUp~YJZ_fVTA&KAXyhF8Vf`YpyWE+AE0X$c6UE9>a4J$ zm0yT0ZCb3!#N59XcXfRxJ3Pd8r0>qW80##ra>dYp!>4J=uS3bc&8KbGs}Z)R?Syu4 z3}Gv6DEq9*tEkrJX;IVS4)1>H#CBfcWo0>AZMKZ+}M1*PtS#BW`+(NB>BL(;wRYR&L z05(C%zC#;eG-dmW%W3;HLe6{{SIy z_E&3qBcGZ6khd1v`7UP;%pOymyj{<87$S`BE0bKJl$x5bcAfcn=zsZ4IdfuF)Z>YJfS&#lw&R50%03rH3 zwl}LiIgt}PDWI&y>e2TRjM!zn99H>tkf64-B`33aP*hC~kuKC^mkmy3Ku%N$_H3~e z@^)5M{&?EX?OxAv_G;8tnJfcuux1@AA9oKt@Yx*GwN+y!_f_%pr_ZNPY^slyW3J^|rLQjZ$P`hX>I`bq{(CPX zfAU^tU2(FbacZo{SK|FAiOKPJoUVQ~oDZq*wQIq{~Z`Pg6UuEyf5>4>?CeJjcG7<|RvkIb!aUxwCR zvbF(w0cJq^a$KuYS;{Q%pr+?pU>dSm+grz3&1%7${H{H0X4vhhURS9_-xwJ?lvGPx zy=GAne6RAD^=sK+pxgV46V|_dNe=tGy@9Hr74Mk77;infY&-f2VkV z)?ZE_r5enJURxKDrru8jEz^RdGK}1PiTz&Q8rtczC!NT#A0y_Tp7dYqW_JO{@mx-3 zGQL+|gz$WK`(8`@hyFas{{R}%b&J1Aalh{E&Et7q3LKnE@G`w7_2bvWDp%^vORx1V zFQcfgV)_G*xp9BTzL-VezsA0kw#$FTo|kM7Ph*KieJ;yW%bC=2m@ zxfEBssj}C<74Brg#>QKyzH%2?I8RHrE0ev*5KT%nTIblaDjp@vu%U&`Vm{jH9`Xl_Y>E2h{3E^a?1 z>%Jq6v46`pR2%%YlVIaN$yf8XW&Z$?>s*okPQ#(GzskG>r~HxWyoRsVo}RKVs(1zq z>MjZ8+|Ls(>=^2{{W*NiEWc0{oiP>5lg-* zf72PduP0{CSLDrm7~i|O{rhX(eElDoV|yroX!>u2$@LF2#s2{R05f{Cl%Br-02=3i zk2#J97K(VhZchm(BkIA4PcQ1;LzT4h1*zdLdva?*t2e9C{{WLYpY<81rJODrTKrBI z#dj@)GWhJu8mzp$Wm>Trl4fP+WV?cE{{RSLC0FwNJ^Y=%vh;5~>1Xukt149FvMOO; zPE*zx*$8J7_^T6Rh{3%p#k$(7^*4JL^-L-C{y)oy#ovtB_}TS24hYLfD`o;yje+UD zDx62;xa=W*M=i)^SLqyzF!&5=74cLN>;4hB9v$~Z*@(UCfBETF&*wkKSU6m2`qJDU zM;A8++Hz{mww1uGZ@USK%q)VflZlg8s4{J<=FGtDRl>!OYXkl)=4j(E{b7-hm+A|; zHC`uuADeM9Y!mf&>-86y*%rf>ZtCSTYnO6aRtrcc^#1@Pr;gdD3XwAh!#f?++Os0^ z6S)*Q-w?QbhE73cH+*v!{D047aG1OnS-1Rr*uI~@!}Zq{jg{;F09WApk29A2MmARm zV_nDke>oSMU4pHBj}XY#n%)~<6l7Hyn;xE`!kminKJ$fMRgO1B|y4XFJ!}3H=5lhme?$7yflP+vU?Oo` zyZT`sjFhnsUwD~%UFEqacXUWImSVtl1 zF4+8?)pcv@>^&xh`71Ent5KC`$>VK#M;aFFd}q}MI~-zWaufAVPkS<>a6EA>>E1Er zc&utpDNH;qBCGJ}uw`*yeqRYyqtqMAO#Euz zt2;iF8fVD@BUQk4Gy zt?IXNA(J12`6{o2Tyy@qlwZ;JpQ2@l2(TEWL4v)%)FnqB7w`0uC;Xr4LGj{SUEOkc zw6yYGhvRQ+eF=v1H_#sof8dEwe@kQ1^zeK`MD*_$2c|gqo|VDVdQ$`o{V9twJv~aC zz9dlfW2!brKZaNlnAb&}e?shWxI5ZW>35;Hyej%94UE-texAZ3pW+saXkLxSjRkEC z*#speJATa+WLpkeb@4@<=?Pg(TP^{qAo`hWrZpAr6JTYabP5RI<@_H$5yD} zkBZ(mux>b|nE0Vjz@?gvgsHrOMerdBV)*5lZR;b%D*peOkoC3^n= zj{ z!H#x1J#SZ5vX8N`1GOA>rxU_{pk3(emAH;JrE9qSVPEU%;ugL`)H&;C9my51)8DD9 zp5d(Hb8!ZsCt0RkcMrLZ2kZ}j>+A9CCy#P{zonhL6XLQReG$m5dD)n?<7DO^)$x=M z7Y?)0)_?w;HTF+{8Twh3ja*v#6!Q_c4MV=b2&zRl(@C!-9?H2>qngO8a5A=;w*LUj zo3Z(iQ*qeC7K{u=bzqZmQNd{*AZ3euHum1qYJ!}3(;HzF&)8psE^u9fn zOELRQnp2_06DJp>w-^ZO%LR@gxXP6smWo2+rGR6x2IeHI_-h1vr_1Cv;xA)iIJEx& zhbw%~TISjEK0=+?iKBsbW8~u^tvq-9vhhN6m!#^+|U`!3?3ne2 z?%w|Z*U|lt+5GztU|{j=(EEwMVJUAuhUe+yGdZ3Q^-}tptFEM3JwK1}^0>V&M4*{f z3`gm=Ey7)8@pUw8SE-e3fh~g`>muE+q?8ZlG93)x7bPW%9TG0Gf`6r#KvcOnP?g zj;6!8k4qC>B7u`&2O_|uF6%R_$H1>0dT2V!SHcdm-?~}7+qujI6EjBt0E9b=9;>}O zU6kb8XnJ_sKiYEXh_xpmI@y{!999b{*IR>=^&-rM>F8xou673wZij0x*XbB-QYqWL5qo8rD+De@^=@2tvffwvo}k5DnN)3@mo zew_qLyddb5RhM+Lj?JN7?jE}{eMjlOHy_qtBPQ%TZleVPoF5BF@m7qp z#I;jREv(Dx8p_7$IgTlLY+p@!$2-wkoJXzwJID&N#(lTiwYPfMSQNr*grJ*MpEYsq zp~AfifB42TP$idR>D)9*n)uvaOGo3z^1Vy`JKdcQ^bHF!(%@`*~>)UAzV z7Nu!+LhC1x3T|t&MOd}d8CozpV;#ip<&Ndj@5d=xw9Ur~Y0#7*vm=kA z`h1eXbGo&e3LaL>vy5KjB84_sIw$#6m*Q(BjoMgs4E%ey?w_fBzXAw-j=_WJ6Z^*P z+lu4HS+~-4D7T5{P}QHy@#h!U9JLb{{F9I+KjhkV{{ZBiCX4<=!P9#85W(wwa{mDN zqXTcP^ALae6OgW7>yOqG%lyr9dao&0(0rzQ;CefX!Gj*U;`o?b-VfrXm65xXw72dI z`!*86&`T%`KTZDtUQdR`&s#kYn}|kFJ;I(l{G-m|SBd^j;%p7-{{T#06V!f?Xu1B9 zwmwg#Rtr5aQL;TQhy9nOt1r)bU19a70gku-0Ft!qIzauNe{{SR%Lcc)s zIn#{vH>dcyjb0`)z3%Y_%J`cpEy!h-+;o`c+ZLq(lgVAJ(bY4Lvx{{YKw2Q9ePzdN$udrOqOwYp9v`&V;;uBe~lie*3I%t=@H%Zyn^`0t3WQRxmJ9Dk_8s##Ta%$qd;Xy0t85^xZ2 z4xbdD1O9!R_~mO>*|t|L00cS)9}b@EZHA<*_>qVHJ;UWC{{Z8EOyo2F0E&2nEdKx$ z(4c>eEG$38x#55OVV~Il0E=?8KgCLC{{V}4#F+m8E<-3Yq z)~oPW={yA2GsjnPqN75+tfIxShE*0lUYW`^rdNz!Lhp+g*L;xVIj+%+W9`3h>Ai=s z{gd<`qjUQAZTtB4@JGF0%hDB((y*1$=DLWLf+Fmi@$8l3**Y+1s?V01AF^YZDW4b; z#g|N>8m`Rg)Hn?&PrC-aOi#r?!i%!E6gz%RLA?JZHON(pQ+qa6zvb>#l(pIZxf{C?AlPl|E)jmh6v8Ii`!TkO1k zoG|!1%Q1f2DLeH2zoyL0xBmc(>ke1+ync1REv@1-KS%U`XZrTvzWvX?=jb#0)a$9K z)@}#}=i+1Rx1@*v0OpS}ilrFanB03?DdH6rVIV<>XZqJNj1G({6@suvj&&?nX>~Hi z>nxht#;fkb6BG$hFr=||Epb$K?HzUzf=Nzj^>9PhO_C^e;;C`K(GV!{f2SnsI6B*b33{W_5oV#yvALUsV49k$EC4ypHeU zH@5zV_ddti`~Lubeu4BKf9`%gkL5(^8DaZNzztjt08Vyr=>KXkM082}k*=^3IO%JmhH z&$Px=o*FG+M6ATENi~ZlXgjrHvdXC#5d(a1v4olB!dTH;Cz#V;r{^VcLvR0rYaR)*si$W8!go_Q(GvE zOO8ze39p-yb*`^j@*k??tngUIhueO}H{;uW$LJqW`cJU;FnN`TsVu9_wZmT5<0SlA z3W8$S+arQcj|U!c_{G|)Iw-UVn=^WW^n5hbACO6w2AYhZf}S#ej#u(=_fuGuAl5y4 zIQ}9X!g|XXps?;;7{GM{ZdY&+T|Ra)wu!SUCw1$8aFw~8VI?6>v!~hOKFm^94eWi# zM_OsuQP)RCF^r&u(3ff#@cvrUAHx<^HrP8l__Ub*VQm`>xyTLqqOseG#t4TPbY45* z%ENJH7FA2NN!agau6Z4C6XnkJHgD;0c}xClt#2%0hug$H%{A@g=-0RP^_YH-6Z?iQ z=DA*szwKu|m@nJViK7g_8q4B`{{R~i2KeSxAFKONlM$gLz*;Es7qJPrK{0AmEKvaa zZXIS}(93_ml>$EFc&hLeX1ueqJPR6Z1Fb-E{|J#O8i@Y_XZ2tggwTykn za$}z^e%nuS${6BQ9{xY=72KTq&(-;wnuFLw3?It5S(m#Qey?ViBlaF)MMZXe1NEZwLUeM4~+I9Y}h+13YdE=YfkpW zKk@P?f-eI|D5wM)4c-$B(~?ukGV23OOq^hs59i0LSF*UWX%76qhZf ztC_SdI1EJf_apj_Leuv@nEwDIx48LtGSXL!FD@1I4$D>BdWjSwExEYG+O}&a8iu-6r3POlfb?Z84mC*c7 zi0}^3kPXf9#WkcLmS!;zi<}a}vszdJNsrnyjbu61gYAD2-@}RbYS`K__74?DcjIUx zW7Y+Ho0}}9I#g^gMqzl5fefTN~)}>|=h{UR;k^|8jAYckuamFkcG z0Pf-}p@g}=>w}`IhrN{UTe)E|qpY&HC}S(8Ej|rmSyGtv9o>uPkGtW!8qF;kI-e+F z8f-zR!@wIZth0InAs-V1px=ht&aBaomR`^{joxO67CABF6V}GmzRjDgDjw3(!}c2? zZOcaE9-^cr_#7fjWQG9rrNTp+lZwo2G+futZnqII8${wDlvuzLcMd{~iN zQpFo)j$2j{rhOY5#jP?M?!RUMEGI&LOk;xc0~hAIhQ;a!{Kii?RV|s%Xr^XPT&o$` zu&MaPnOzr|<&+F;c6sW&{{YnTwzrquVHzJ{@BO#dKWuw=hJQ+7jAFq9Mrq*B$$-H) zMk|%YI~wt=`*6sx(n89}0e=;Z1bBoPSwvEeAIWky*36gi*#WX|yK^`H0B;+XHI0#| zp}XVcX%^!4FDMl)(9^S#N6DsepWd8v2>~LoyNH~#S8&>2)>V4!UheOHmfKcYlRsanPH-}u z^bxrQpX@|z`EF+AnG*Zw$=duHf{ugZxD!4?4K@K5(YkJdy9#Yy+w4rS=VB#|*bRjF zH6Gxli1xBNOW#DavB4KRO`SiP=S|oh5PZY@rx2kK4X!Re99{c@)^qAiJo8PhbQ!v|Ba2BsjGA1$Z zw3TY={wrVvhWVGGsud74`8OGiZxY))T-~Q8&ySGVyBSvtE5^(y*j#{^nd;GU0gHa8 z>d1|p(%h}fvghjJ=Jkup1)uE!gOYka|jAtVi!V zRzew3EiQITJ2uG>?lTh@__3H3C#TCA$#vS6zsWB9OS<&6!3;#Pk83}VZzs%n(u5x- z1v(E^wpB+S{CuO6eKu>jd#ocQe3Si0%acV_P@bdaQjBhEk$kL|J)@Y>;hsH&KJE1X z0AIhaa~cnG55D4=j(_Rt)3n61Lk{g4tq?R1sH~=ZtrH?uaEx~unltV-k?ixxVDh{Z(A!xc6r~=>P!}c3lJYu z<(-2QFA=QJd&?RxRu@&c4vXzg%^83WWq`AE3>(Bzu;Wwma8;ipjl~@W07pqyC==l` z;8@tJwy9KdSz@L2r#13fb9{xP9mo8o)Yc+m;?*v6)<+wYnACc6 zHp7MKP?L_~tH(;JTF2T&Jv4tZ+Ll?5=DSKZHG!wO}Ud}-=lU2&=8 zGLA#P<)a-Jj(nJX{{XLJ`zPOUeFO2oqw(xviw2+*Q2UQ%Cw`c>O^*5)*7g+G+OExt z?%1iz#byy0?lTDfLo~6pT3Fs)v@fY_nK(%7_)BEX^z~UvFuBehvH9^R&r4!dm$o+_ zfFR@R%6c#n7P`bVqaeVj!GfDyLA1mIDk_RM(KI9cooe4f7@qe249H%FtCm$@a&0A@ z;@GvpaA5ZtYes0#K3z`W!ozO=02I8l7G~;uvp%Ca(?ec^EYO!jzTT7_voTb3>!|DY zx94!#Ew@vZ&iK>S{HN+N@*I+3F{P2b!|nb34fP+Re^`g;{-KTRzk%$+Yv>cxc7NXy zykl4jaXUnZCaMDd|nX=fd-K`a#G4gdz65(j)2+UtzD;)Iyco zTNKKy1iiiESWqi3Uf@T4ACL&n(c5!-go$g%)PDv1ALJQGE%t`6n07<{ZZVJD>2?*q z9$3|OizS-tXgl&Fwx)JZMfF!Yn0WbFjdhzOznIa?a}T%o54YplzMVt+-;bf8@$4WT z#C;-gkJBdz?Q#4Hyc&0^ZXnXp2+|(1uffnaxY>+BHic+ZY(C|ROth7X+bvp{h@e;0 zPwB{%4$b;=yn1zA)q_7qUb`v8N{QV+XIipa)dj4d(pu&V7qeKgTeK{!6qOA9&ASHR z#xGiqD(k?WJ2tx=ZO)-@Hy;G4vk#E{ z3*h>Kn??^Y7m-H|kO;FS7G-BD&ry1l9}1plo4c0DgTQF!F^?PQ{{7qb5AA9XZF`tt zf-Lc-hug=noO5)@{)`Lk`boe(-xXKkjR8PlOUaMRd5d(u6{y>MM zYc@+(>GCL4ybxchb}cO2zrm*@k2H7Q=s&&v!w&s{ie~-4KR^<%wf#SDd}_yJPYS0~9?ux;!dBzI zU?+a3D%LXc4Y#-2EP(fhrZC-iYHBQU6RfAdYWzUIAgMu2N>vx)T9I+a@&5pgWlE#3 z#wxGjSFn$U%0a*SBbPB0!AB_lBv777<^897UxhX#yHNZK%2=6Uraogj1?h!9_ z0n3N*8|;l|fYIAh!?;0ZKX`A>jg9B7{?_nI>3WG|X3)05FLJ48{{SKR@BaW{N18bt z%xV7sk#c&smdv(%uJWNM{CL*mOFs0p*qSIna zbO6ajh)fwB#aRmVSNd=ny2~9>uaGrC!k(_vk^`_CDtT60CWuJ>bk%!y+hv;wKJ|XcBx%2d&#Qy$|&#<4LU?-+;>6VAZKg512 zIyj9K0xBfSU#hcz((kl8w_wBy{{SD#%Mb*qL)KEj5bPipMaS8x7>ak-B%L=|VFb|D zJffBWZB8hb8v9s0H7=60D%l-6GCMK632sZ6ay1o{D&#vg_ik2ApeLvc zv^5CnxN9EH2A-&E3cpAhf&aqz7($>zS62ynQ_O( zWh+Vf6b1O%TB`SV@_RcEx#h|wuEK4QeCkig+wjxQ{{WL%0FJ6-RnlXh3Vbb{r`kh9 z;#l8q;PCqE2bte)`|rI=nma~6b+YHt%ebhu{PNdzrOw$-p!`6xrSggdQS4(&Ww8Bb zZa?GO@%vwoqsPAezqsGAxw*e!Wma`>Ph@=f)iB)*J1Q*28kD3#wRxG^3bwY52Ytk~ zbydAf=LH9lUH<^F8(iVE&21h>q+Vp9r=AQ)Dy#<}H(x748hN@_f4dw10Lm31^#(oB zIk4pO$O`lH^c=-Zzw9e8X8{`_Sxbob{ACSd8!JW@c0c;XduYqEpkcS}!~89AQ^vJF zG1a3lj=f@r?rZG_nEDNCj_>%h__)+*YfO&~mt=D}%eym0^X#K>R#LGb6I1$Ovuw2f z(H}sEQ2zP-@L-;g%G$5;PU$i1?mvqj;U8nEIV#C=imd zjBm|^sj=ZFc9`c<<`X5ljFY#@@VvQip1Su2D;fHCiH_Pz$d#;B_c6CFF}{t%^qqTu zS|SL4U`=o9{)gk+$I-vo6VlmV7Hw=M!wOHwVx7!SD?-NT1;80%HIn+ZGLp*F<+x~R72 zysy7smDZ~=%zX9`@?;P9U0~+xdH&wL<8sX?&H1GS2oHJHt72HDBJ_$B0A-pnh=*Xb z^ADI%>GYwWM(2)WZ*FCVT+=4eHRj!klA`PAqjTW$^{UU0a3l#8V1{m4sdRbg_BR{E z6Y)3heaF?mqf_xUH9Ep3zJv7-VL0o)EQ}k))z{^AOvibG!eeO9k8q=KPS^Daumz?&Qlfmo==_3UO$24@0WUJ@Vq~vEX^4nh~#lY9Na4~Fu5GFSETtH z0Q5F{PDjz)mJGr4)z{m_e~#(MW&Z#edP|Jrvb`yWwPt#2mJJQ;M$Ke@T+3io^{ucwBtEPfcOdR}j2?b}uvO?0c%? zxJsy|tZMZ|HTLGK$I8Uwxb$4SEqLxEs?&PoE%s(t zP8S%>Mm>40`nx%N%Bz_b*~n4HdUm`@>#eGl{nH(6-G7RhM{hqNjK@s?KF9E3Zx(NF zEFxHAe;W>^)=Y~&>sZ@wK$U0z00&d^RKu%SbOhJG=5>S!(#d3Ke`Nmv^mp`bZW9Tc z`Zer+fM)%K^xkK|myLgA-rzeJ&*v7|McXQOEM3B&lR(*~xtsq0S;*2mWL7%hUuFh> z4Vg`=g=ixS?y8oVXe>u^(Nl0C6Df8vX$g~HZn*gW02#5sn`MsUC2h598Pk?KhrW-$Y{8gCiG{$EuG;^6kse-}ABWsw6S{)bYXEa+roihBQN}! z!g1cXY`VTXGEKI6hn8HNQ|MkUn(?@=P^Mj1{20}(JqiYxoPOIM98Q8+OECBowIHmi zLqNTiyaxPufQSy`N7kjkY_Ya3uoG#A@Xe`pzH)8xcJeK$bsNCtoEp^%n#tE~MLyzx zaK@G&7RElq&+PvIPTJ8VbPE#luZ zkaDA_E0&-~#Vi({mZi63ar_QLe!rjQIb3R}^(U#lN9u*muG;=i#V_0!361JLH$MLW zm8MQm2RD)Ulaut<6U*iCd;@V~Clfa3{WdlgS6NcQiTayY6;OO?7P`^KJ{#-+jjqwg z)sw>RRQ+Imi)=929j9|U!eiKH%eixOmb7LO&$ZUepHnK?jY|>GOTQemuf`8!@t6b~ zhHq1}+ZpFaag2FvKEvqIn)fsM5Prw^KR-eC{Cx-TevQq;54Vq~8G)1VU&G~#s;&Ii zRhP0M!Mr@jv%=jCq|NSHCn>EKm-L;1W~1%I??B*rO4lJW=*ptZD(THy>I-F=Shesu zxp`FgR-CUNi~5@Bt!louX`hMz07m^bGUjvmR5SXABICU5mZKVL<1e<0R>n3ulA!hY z$e#w4t362Ust7-b36>qk{I_VcWCk$nOxl)t7e9xxJIgH_y3aW_{iE-?kX8km3psa{ zcwnH;v+*~ny}|5O9}&!XVfWv@jPfV<=igttKBMkW)49F=*fY}{pI4^UWyWwNpK!vr zPermL1MX46%qO%JmRvgsLqs*koiP;OA%JU4!a`v~wA_&BpM#7!`4=n~o2u zxo$W*`jdrR8@*YL+dDTek%o-d6>&pJ#smYcVz-0IMA#GvwD?}D8Cm5|E5Wt1Oq?UUm}4mRT%$nP@W$A7Z*xh5}@rPFJVOm6*E_`yVsL z#N05nwmC8P3HLv-uYG-6gWvl0{{EKn?c?eGziSU8;Jbz7Mf9r)Q}!F`*cW$PdjwY# zdyFPzmT)NlvIR(Ggm7k%NVF1)&F>3Kqi+okV zYP5E(OW3lXEGuo(S=AMh9aPG{AAxCOKM}O0wqsf5`!oxZ!1xWIY}9*Oc32A7{Y|gp z#@w-`wo7c6-_&ENzTA5C2>V@jnWtlua&D=h^BrM^cY@d-aJ*&_+s%eFFn-VX2h;fa z2hp#jYuj3f*n4^UKOb24-1P4!@mq~@I7G46uy(O5?FGC_6BPPW(Nr&50I zlsf@Sv5G_h7s=3Nue7CA;x5AC_P;BQVSPB*IF@7@>};DZ*|ii|aF2G%FJcid+TK1adD)T*x% z&$TlL*m$4SOpY?_R;)(UCRt{smQR;ZTRvFUjTeQt4x#;{?fCll^q;7E7xN-pvo8NRQFZ)K&7QweC}?c}S|Dbw`oYwg;vD~=i9tc73r-^fj-5sTtWQ)KyqDKHXB&W(`I?r;rz{Kbs7* z@JzD9E9=xgquI8!_m($FZIafO*)6s+?qpk~!pCMfwe^7*%?XgbUyyE#hm{)*FRPW~ z4ly=MYyw*G+i%LfeI*KI8uYq37w}?wEd!{>k>=jw?CwF5G9toA0EpcZOF=J z{b4lSnQXU_Zq{ZNo3YM4I+fBiicxk11QA-!pb~W$^;IO2b~^o$_Cu+TH9sY+>pnvZ z7+zTN>kjR=M(bsk%Pk#o=s7Qmf~za1tP9W)<0t?#6@D&0+WO)K{squai>C{`%}_?K|y5ZFi$}on@`qyLBbE3}OP@{{U;-_SByd++ET+WLg1)~&b>SF+;TuU^k?J10#|qgCyql4BmzDyf@}N&f(~Mx2>W zLNLa&s6A!pT#QiV^%ER@!@gKX~==Jr#`K?dQ|&d%l5En;iUiJ`J3 zwrXTq8rj%_G-s8W53ysJb%aZ@QlZwd)@m7iHV`?g+b~|Ofs@Dm zmHo{vTLwzi+H$;cshe=`bI-Tq>NETI@eKa|05E++=-1PzA@?xB?0;*2u%=+-wl$ug z4WU|BB=J9LpJ)>*)O-pPt)&^Z< zzTKPc3T?>T$DyozJW!&ld{ml&CshK&xnUw?zfsBjtt#|}R%IA=3S~Z0@&;}{naN{| zYRaqQW*!fTzaQU^qnNS^8cK~*4 zoA9-kgTV)7{0D7IT!y;Ow(B%IY}KF{wJyG2kuAuVUotXgH8x(@c&dV`hO1bBz_G_! zWqTJ5OwPpSS3NvcDbK2kZ%+dyhwCUKt;zoY9#aeu%haD?7xV0Wf%<yZ4dAM zJ-q!Nh#FS?X9LQ7g1cEC7bEV*yK6y}*EQz<0L{8(_~1Ze(t=r1k?@TSNN}|E;;11M z14Vx&U~MP_EgKY|30N8n_NIhDuz(|N$^!4)sV=_E#&;6t1m46;Tgn9!wuQMKF1}=3 z49LGy?2g8Y-yyMaKonEdX^xApW7$NvCZ@$P>)4vw6hUF5o%N|bA@pYX|*9ce>-ZjBh@;c0$W%(TjMo(#tj@Fz^O-yuE6@s#WVkYPD zmYvHqOAoQrytNBG^&1B#gUHc!3uaF^)+foz5%b}YC9k<}Qn|Rxa@|3#kBPsie*V6Z z^cX$F^Zx+R-|PqvjyE*W___65oNd8H3_z&Zfh_G2do8FKwH>F&@sNrK#-b`f3A6P5 zqR@MOlDefk+Eg@@kSfMKdTJE$T|a8k8nObTPNYEnW0q;Tb%7_y1itBgyOvu%U6R3N zxgCYK058e$k$YHiv57c%-DLnNMFo*MoN7YC0+wlLj0AKlEdDPnT}-=AZU-0Tw- zKHk|F9%Gqk`*pR>#qnzOKZrfd5JCR{(bvD@=o9;g@%y^{txrC{z-Jf86n-~3nyxP~ zuBw}xQ~@h)ivIxghwN)>Qvwq{2h~{LWfcW9)3r4eb4s*aFrhJ&fSO8wiLNUB{detX z1#4MhQ4Wk^$~)-fyl3%|XN-%Z-P#*v*T=uC$jb&_d1H%=)|`4Y)mPPMPNt+@^seGo zx+|#2#uo9{?|qo#v?#({pJyeJ`g!S;(((<~UcvIX!R6W$+8^P1>}O*9Y{GBIgXkW^ z+>ai@etwT1PW}9SKaX?ozuZ4h^$*Yttm=AulK7j6%i7fY6j|C)Vl-1z8>;DJRRw*Z zPYGHCuM|fGV5EGEdqLN#TMH|)pbJ~~30SHT(2$7N!a!H(V_B(X(7vUO8T2zUH7~n! zzhiCMmcHfrGTWKXJ}+sHh-Nx ztMs`1t<@!VbZnk4!m!*k{{ZCHHJykWyo#AzjZMK1?D(JGpV}VB=`ioy`x*KDvF-i) z>*)Tcn5JReYO{sT?_V36*kazO%W43dGhO9-QCQskKD2&bu`C2H+8N3Yz@-YdqT{7@ zHA$-J+9CUY=Tz6+>^9v@x!qp(>K|G*4y^t%G6KxJl4IHQ14Y+dTJne=o?VB)pjF&tNfLh%LOp@-zqk_c!~PVUy8)$?LdKbZyp+h`7hv* z3|`x@RmUO6c9+rCej=Zz`X531{{X-5>DRgXKOax`^#1@~v;F&jUq|+voDNy8&Nnaq znD>WVOS=jg)KhP0zlBIi2YW$hLWBaD4B_oko3ExLKU%B~D{9DcC7nb@H`{%NS)y&Z zgu5f;Y@0U{(=UFLBPXoM%R9-)^43RrW&SqS8Zm^&$CcNnL9tC*TEof^wCZ3Q4dO4@ zpv`@ir`l^XuBLOk4pTcPSeJ{cpjA1$zw21r1W^k4KY3HRQTxD;O4z)g8XQ|sNv%)M z?3jJE=jcBB`aFFmA7lGEhI#r7A4m1=*4R zL^gS`im0$#KTtMo46SSJYzAZADIcg>%H%1E^lG+jxRw5vyDf0mTh(mH4L(p>=Mvk( z9IVNal`?KI?-S)ZvdBAH*!cRC)-^>YRZxhUR0) z6JJl`=pV8D2!5SU>-RP9`S#QU+pJZUBRgYv!AwlR4hJvswl-~6sxj?WK@l>y0b_I8 z!ECgKZ4e zB!*{?Y*5ymTy09|^0h3ky-I58$xNz+?3Hz5PMv{2^jN=XE!IAa19M+%uHrDRbGZel zY`@jwe;kfMF%yt_vNCW0R6tRG4ZXqEA@HifdUcDa)dIZ78VO}(KEvNy`ph2N`p?!q zkG8$M`+hyd^XxxoUi$H<7jak0EcD+EW@~e`GCv)gs4fdQ{NEVdhK4=J(|t-==Em~i z=xk2m%`6drs_d3u-73mAI%IYN?vwSqAFmBEau-7(Qf1|#nHk4fIpEBk;V#N0x|VL; zrC99dj8zh{J9JUX{ zV2sMS2ezE7T0`H+?#!2F)qYh`x1z-TZW`LWj~w(8CcXUohM(WD z_TSO3Z_m~toAy51`h5Lo=|1|`un;Vx8LfJ-*0mVjt;EPU{C_6Pm5-ZzTAdHJ*yohp;_KA zLaFyHC(Ed5nS!>At_Ear*VfL3X1uZy5;Ve&9)TaV`*WSAt9_r`zB6Gpv&Y{jW*-v=Ve>f#yH8hm8;-PAm1iVLRFHsFIE2l zvi|_+HGl!`2glI@io>c{$-RgBpI;c>ii18iX>S>iYUO%pJj>uRDvyt4XTXFB)*l}F z`p>b0+zF`1M#S7iQw zl&b3%SIaue`GwVdqO7Zu8~tpnk|ut+XY1I{*CxMP-ZnwoWy`aA8}j!%vX<=gt0~6C zHk>{qvBcxPIr?=Yr;}gXS_nKUSGoFUaaJO#C1{XqtC`XOQA>>j+9{npfFZ7ASgAQ1 z8Jj!iBNp4Zy7M`I)Tan4y1!872YdzXFC^Z^QmJ86@-nN`#g9S!wWqi2HgyO_y1{eA z%)CV8@=z}+bY4-!{c&mf+fsg^?45}%@-Y<~B~|w{ajxS7fP0270+dhn$yiGC58DVa zVFo2mH3%S%ykU@dE!E`z?=|e8# z=(=C&tZRR3@jtI~JkQ6t`j5Yz&HXwsEa^JUO&MM#)*Ma_#+V#RiB>IQE;TGKP>*ls zt$dtngyA3fmmO=f{{WHcfnB*5(Oyn0}$bJQ2&`^5_*k8fjf1&(MZe;Tfaw_6h#3!#_i4gBr*w)LeCx zVg@+;Sb2--=Ct5?Z9`GRQCg+~EEIjE0GhCqL^L9=z-*tT(vH=&G?$x|W0r#yBxZLk zjXp44&q>mL2glkd*y=%XGVkcQkGXwrYoQJvE<>s=cgb!|L-d%u=4i=!c9rSugYB62 z4OUNT;#b-xm?v$O2D+RTQKuwN7EZ1Xnsw+Oz}P4l?{l&i{K2(cf;P+0?rwGy#PRRA z3_5_%>t5Rc<3Jq09{wig=Hb-wzRNZzWrVEQn-gMeK*DZr4>KPd}8o(_OlYu zZN9?un#w6x5shYMM<&L#`9?-)`1l`&7G){GV#sUry^jMb*o>|HJ@C5dZ-K1Oo*J1OWpA1Ox^F1pxpN0wFQ* z13^&|VR3UV0;H(o z!`m_JjvnjoK@pSy0HBBil(!?=Av-Ya_${De{{YhiSeJA|HY9v4xBzCEzZLgE5ds4p z$j6j0IvBZZh);@!I4aKhqIRYjOt`<=h8!|xa&Ua~vJ^re@igK!w{3YxvIRkqGM?>k zdXHhAQ0F78@_P970K!T9q#HBFd-cjhNgnC^s0+f>p7JseO1JuyMa-!x{{V>+mbJ=q za=;-JQmag6LD?1R*P64^hThDo9Es#ZS9-2U7?F*#4nq> zH6BwFXKB<)$`kKxFlrrS2(QnQ!`XyFb*(tp!ekj{u;k4RP0W_AL_E}3xL|%Z_wJe! zd(6lP0icsr(by%J0VNbzaF8JZvo?3E53)~o0lrHZ;O#MlbX}hh1kAz)i?n@#vNj=? zjW^pa&-R4G5b$N%BEx7##4osHyD!=SwqWQp;-iKQrZB=akXSfaF@J<09m2VItV|3T zV|Igv$WUQm7)cm#Nv6SLL4+a=3>joJ_gGjsBm!W8{{ZP8w(2}MKmIr+{?V+~&Jdo& zANxlA0>?N|pTZN$NpILN*A*+6@nOhyJ1};JX>gV|I*8 zQp_q6aC$OR2{M`$1+r1qCd(A;v0lV$##5bv51BuO)6i{Re(?1 ziwK8?4VKJ^S}AUT8Sy0dmJ~QgWNeG|e?BS>%>WOwGEm{++RKj*ff@bK^zee$5C7GL8ib_{1{e_MtX2j#0b;c zlX^csZo8rx0!e(F8ISaswdax#z=^hV&bD58A+qk|wPjfg@+u5WIAbpl!Z?uaxr4)! zF^r%EZDE4(KnjZ!37!Z5D{E@7f&$uwoWK{|3`7v*yIe;S0`TO)=oDb>P+sm6^GvyX z>t$Cfo$kqU@LajIx)~OtA&9%Vt~Z*y>3Kfw@>k05CCkhB*V}aZAp7`h!v193ZtN-q zYM$=r{AGSR^It2ivH_E=I9>TE-=Y-#Xm88-;Q3x(3oE?rBgq@%!-~83 z^D`yDZI;hbuZES*ZUCKg(se9Oo?6bR2%_C7$+vz}Jvacxl_H2A5uHc+v;P3?%sTHl zaVV+(087Lq?NU1EWVWO`uER(3?&t_(lTFHkAXsoAyt;)#7j}QhRCdZ2;8_V^uJz94`v418r8 zE<3f=c8DR{h=H7#mgk`&x>jgx{{VcVvM(#pqxKaZcH zFbDER7ST3&-S9+R{{33@@!XpK0A486a1NU~Auac+t=8?;-xMDG@5MhGzYpT``Bc6a zRQ~`e@Ajv2ywv4>CybM;zeP*2kWWrIC%!wcs=U+7&s&muCu_TPb40sd^%8UQcjB$) zg?Ff8XZF1ANEbR*@<$RNHh-IaW*V zG%^>>LyIpv^H_!w$7#r_`<>c4+KwOq$$!i;Jk%ItI?ia}?P3rjl&2(cAPnWTP(wzY zoAq7M#S%XdD}S)lL_-NOV=D1HDmlJv%^8e$WlX=*E*ro7R8d6~ggkv6gtz3r+1fMp zp`#fPOFrzfTNBuc-tuqDNw97R2&6e0Hvz8!J;ta)(9Mfbd21s%5m$F9&dyCDJHu!X z8BOzJ;kDgqajAYooVDPjc0h)#??TNtciHaDgDwuj2)3m-oKJh?ADfK1f-bYF90I*Q*F_hH&E z5JR+qpbaG#Y{IFG9m*cxgd=cB6Uj&Q7$(=@n!);{A~!vB)nk1|1KkHHpJmy*WE0xN zmP0dqbVs+tw0qRORtME#5^*ZJKU9FkJNw(mRR?W__Me6GSiPnfeXGr3c8CKxk-t@s z+hCA-Q#5--CLhZBFS-m)claX~*oqN7B{1k8wnQ*R#baWY18L5PM;4wgw!s16u6NC0 zZ>F?et_RBRqU};~PeD8Vtaw@>7zK%J{5Q+YG^GSsc(4pCSr;2IfC+?ulryH*yd3O} zn7dD8h1xa@NCbW)gFTa&r(BBdJ(&Lhj56S{Frp7SOC<~@6P@e9eKYeH&i?>VxWbM- z@JPEwHana?V>ueHrj3}VSC=wnO$R*I6C5EiK>L_fzFZ!oB@_U{z}BEL(9EBJ;^W4$jugJBG~i;F?bm%#i+*teO(WywUrD8B$U|lTEn{h#DEx zLmW{~6G^uBbyPycDmW!u4yuXji3a zd$%eUySGB!dwZ%=_{-P!JvwJAVAm;M%z6kmJUAo_VFXcsBzYi%U4R^Uh zg}M$vpHvT7dHb!O-nI5n;r{@Vg}a~*@vo-`Pyh?XP%=giLm-$?%J(4DP(;QM&NEIS z;(Qj~(Rbq{A`HNJszo94fd(1%b%z0yPOtE`G~M&(We7BErraI(<>-ttMp_UhxIS>n z{9$>SXOe09|WLK-O_ z%1ttIsmacA$`YX35@O`Aq>USMmhU{b<%0o=uJUchpY9w(f_OYAL9+uHw5z|DoXbsO z5fBA{>BzqKp0Ze&kii^?EU^1bBmtTouMP;niY66U-M_PC5II!di~G1Da|wCxlEv-p z0fo-%_Ueyn#WE3WlaXJ47GT83jb+5~ufU5MAm%eHf$5!%7v9Go8~3cCOJ8BkpG9e{5^@yE}+dIEs{8*5~%|rDj9pXXLR6elVOlwZ6AE~?6d;FL8i3Xox+dvtdF3fy@y@ z`9$65grXsYp(bEY{UnwvwDx8%1l;95ThYNV{z0e8Qm3wEb^zF)9{0fp{@LICHQERN z09K-bvUYM9&P%WpwAtlaK5n}h+JBi#hzpr zk&_yJQcyx4WJ%11)6RPDkmDx{4iZeKD0OFT?WvZ8Pb6Ugeq0AHMTYt)qJ+gXNT{Jv zLJShE{3t;H?HQ~wI-ScAp@odsYHw8AHcD> zuk@WgzWyi!dRb0Aq&Ho+@q8<$x4Ay*`ZAKgJN-|}{pOAIy~x)0t_mKgWho;tWuZ_Q zT9bFah(!cV{wB2a(L)KAl=;0mC^i^F5T0>v%IwA|_T~m#t&k*;Oyr3!@g{)7y=_9# zRFJ}Fknoo!0EnE^4tl6C{{YljC}4!P&R-}(c8I80LpM<2F?#;*f_AQS<_^5FK(p+F zor}~4%egpzEa{uK4}mvbqwzk?>lS?IH;9ZZ8g=&MM@?j+fEmsA&>3rQo1+N-04Fjf zp)}G{W}HN3BpFQpCU=|HI{3`tVUr+9c@r)Jpx-7m6xcAxZA=FYA~KYsXW1qrwFqE; z%V~r|2s!*`m=u?T0v=NUJ!yv=5@X(s#O1g!*FFCL3MilbqjaC5 zF%6ak(z{P~${IL`ZF4|H3?%KqVlO5-@AN4B$J#N#3I6~VK3=GdRwfzH7Rc_>b?`t$ zWMDoFws3)csDxDfrO(E`D}+ubW{MDYUuYAb#*4V!=wk%c&+nGHsni+I@-O0aV_5l%SCn0(aw?5t`3{npN0ODDQX@)M( zE?OwQ)KK?M%z48XAtOJ=W#uh$#ex{0URV2)?6B;YH^Ww)9Ox7gwhTK>vxsnv05O)q zFSQ68Lu!PRDrO<4oMG7b&aQj9LR|7~(5Rx2+L#hx z2{|^AJ7-p`mN?sp!wbUoBZ!K+vkK}!083|Or6{F01e#WFCt*o{q^x{1wC*x+Cfl6S zQ@21u7&RVGS@>Tqf&P%)H1g(*F*Z#>#!lb#%gC2eKtmE8vI8wxRo#YCTO^qV24(3? zpS`%xlLZ3^fH05uc}>6C^Zx*~lm}$@MD_mwQ}AJ)o7iSzF%7Lb>*|D2O|R1WoHq|n zh{Dop`KV#YyUh$JbD7CuK*YNim|dnQX}dMr3qo_0vpc;y^HEQ8<(+TA)K`2{-Q=?; z=J)aFZ^bp=F9a*O9G8vcv*CB}zCTJ=eu{5?iiUT4)49JTBTMj4!hY9ueit-3XM6m* ztkvE0UpIcq_g_Uv&93r8*-g(Ym2ZN1-Q5sBH+)w9yXd@b-riU0ufs%h>*I2=x1iFy zy;LVd$I$~P-KK5spnx>ZeIET(7-ik%mUNZmu*Rj@cGmteM&+TdeKlBd045*i^Y>qD z)Y1I@QGm3^>3y~j49-d!79y$wcCzBOhTP$w=?Hef$`UKhelU@?u#Rr%LS$cx!y)S< z`%&!V8gumX^F`YA@ymw>Xv`ov(VJ=C-l6AyfVAyj10Pd8_&YlySPjWG2^AE49Zs=+Z zp@2jTUvwINF%oNBsl|P`S;2D)PyC6g%)IOs7i%zKv_Ku2J<)c~)-hu{F#%Z$1FDK0 zvgRWc={e7u5W)-oTeoPW(i=WEqB+h(CPmu!@5(oEj7Q=`>@kx zr8ge?mw;bzf&+2Wj!S8}=|pivb>V-#6OT_ne+eitT1J`p(RU*|Ps)eM54I0<#3IUW z4=k@G6i_=K%Cg;cb+s@7aY@Lb6+`UV;8Zb2TBHY+E8>X}6aG8E@Yc8LOWy?G-Lj6w^%EY3g3QgVte>+1dBOVbw+fMS7&G6QOTcoziC z_bB5yhGB@TwWOFf`s-K534NMpsER&{OVw`Ir}bJ-%3am?@l zwE0eGgZ?sUO}Xzu;Q-MgU)QvQ0`7l9MWnDP`M*EuG3MSo?P=#!4dp{1DhH2dFMK)qA*fJ+Wb+NgpOSh ziYQFxiP~vS{T9gwYiWm7376!t#NOrmU8fPHT&Jd}iteiuD1=&p;0 zh4`nldZ$m;=XoKX?|UnaZt3KW-Sa?j*N3X)75bGu_baYQGx>Ngd)%RH(YwDAqBm_{ z;9c(KhDNj&yfL=`Cwt|;zzZhABkA;OED27DC zo6uMF)^4H4!-d3A34t*bk;TJ~Ay}LJI&ZL}#lnO%5Ex?2y~#z|2FclohJ4D!?S?Ef zGICp5iTG6kcYX2D!s?@;-;#H7M&OvVp8Sy7ha%5* zJ`f>}Q8xgDL_Z#VJ;J z#OGc+>D2&6U!|yS_Cz*!xifdO$;{bzuJ4it85q4rL`gwAJ!zX(j~3$#Vd=A(-aAR&ks=4R(gL!BGE zC|ntc1VcjAr{XEJ<&5Se=O$gMJpTY9ONz=|IQR`p9q?GOB3uL2#XVF54jl|slgJ6{ zUF|8M3`O*WRhh*k?>*4)dKIvCh?C@6Sr&Q^PD|}k&V4DH`AmoZ03e}gO)6XcT^MHa ztiK>ab_~raSJHpwxtVQA-P|97Wu4k|0V>W1Z*8>*#u zehXGwtIKlZD+tSloWF;?RX6%wl=3vma%bC6E?}8?O zK66ulJN5WQ0aA_UFCS^Azt+4FH+<3Ko!`nHcYPEB`k-%eCV`#lTBurKn>yX(gfV}O z8b)_tMFb>q3kwKFA8JF@Jey{Q{#FNgvHhrGghX8!iTp&4NcW3HCHCTXgt$;J1fR*M zqA?!!%7!hNN&f&WllP`&rxk|;7?3t%iXvf^T9)b(BZh9=!ge*WXY{cn+9$l+YP(BA zAVJ>B7>JxX=CJXlvOy;@k7|M#Vu6m;y2gl@oMA;AB<>6DKwx8nU_b8T!hTvwL)x%l zF+&t)c@NT$v|(aGL@~EF@TgJ40R(-?k*VFqL|OnLj7B$Z+=I6Jsw`q*GSn9?yitmA z8Q(Ms+K@ID(@Cn+d&wBd00B*Bo`;Hn#|9)gn@mHqK8M|X$V_h#&CJUaoV@(jE-uqT zHd`{&o={C8zj=${JPlMdHO6UL@38}) zq|`T`H{)4x$=1($jL!c6KOR9vE-xp&!#)Y}z7ww{>i7CZUEbs+U((SYpQYy4eoFM; z)p*|(&qa0pCiEBjemS)6@0wxncg;0lEW8!iS|MH;UiD+s$!F?5KT5Z*yb#v!(Rlpd z1b%Jrl9v6~%Gq*4Ue|i3)XMCp6}!GMZ`b7--w$6@GrawjGDA!9v&lmVYf4r0IQ1I zm)wFFj8Mc3CZc-qQ1+lqTM+_916WaGV?`F;z#tYZAsgr8)kWIygo)XTjY{(5qwNrw zfrOZVdzy>1ZA4fM+_3czeKtXe#V1=E{P~~&WwZpHuI!^3AB@cA{F54**OL?&PPq>) z6kAPMzxr}3y!6_BOK6y=z-rfdr*Ql-(BFavU`k6nl5Z75UkUENWl-`wJ=A7%`5JLT z7ar&a*Ol-_ERgQ%i7x*D7r8<~nd)ea%e5@2(>Ij52%Au5TZBXan zp)#K{&nx#^wv^=gZ@1ipKsjq|P{ix=?YRhyQk6BCJUVmn7@``@{A!~jIplQrzDq$7 zcyc0bd7>I3-;Dw0synswP(!qN>7Dtq?8HJ?%U?wS?!yoQL&kULu(1q>&i?@a036zz z!iqSe6ao-ieEOR3FIp^Un1EnAFRL@K8_e5wRSE`*06{az1KyL zFnh*NIh`}y?^=x!o7}a0>}FI#e;0IF-RYtt?)?b#ULGB1eHHn9tj8mE>YL@~(Q&uC zb$jL0*N&^z(Z7rJLic$q;ov?QaNq5%@>%((&-S;Azin1a^>?ba z;MtvgDxO!>I~^B=vh~lU_^7-o<9hS{2M(D1{}|NWo#2DjVO62`;h?; zRAY;1xq4-q!^B}Z7X7GLpW2LUiOeimqS_*xmNbNjoaXN8EJ!fp+KurJw1iu)?l7Z> zngRYZEAQdr6Am68&P45gRQ7*`w$3n)(ap`e`?$mXBUu7s+#Z9HFvMKZ^5@`yWYV1i z5jO)u+7-1oJg?On0yo#?Fd~d=`#{%9a6rr&=D|c^+6~OPJdlWrO+9D;^E}X@8;$6o z0&>2JQ~h7U0z{YOjKsy==7rw;k*zJ1^wRHCVI&Bc0TbVv*>lHFWPR_|F}?XFa@4&# zqJPu#tm%8?o*6lwoPJROoM*)`b{Yz(h+qcPhJbAs>fR^@nRzTR3{N(eZz;`$x-FUO zNsef+m^`yVn}3zwYE?4J$HU=50Xq5Sn`^tH&1{Jbw;*CMAN2G9Zchjel7LJRJL!BB zC8Cw?-n%&x5mPgm)6>wd&cF?l@09m1!H8#hUGP!jNCHTN=P|5WZ>J)oAM*uS%lBKn zNzL{D0PcFNxG=;bdqu?nl|gXDgJ)M^wlKiv)?`fQXvo{gyojgAN5P9o_$ILLnogK zs9~!sR{JcC?G$6YR;hOCcG<2Ev*UQP#V)ogAAwS;b z8v^Ze-1_^(}8u5-KOsnYya z``J&@vOxLXrueJN$H6@n-&DiG?5`!|d%V`SuT%%>`sAMc8Rn_ua#y?s3F zyK<;pUl5DMGv0otBR*)tcp)v~nv;Bat$!R4nhU@g25PMQ$dC@W4L8}2H zr6tRfaMa53KoT*9xW?E@2V19qldlo)}DiMa1yY{d@L9N*(F z9xGxg&J)8qWG^y-*cI7*eQ(JPYrccVr9+7b2VAE8WcSi2j6}9bz2E6W`0v*2s7A~# z<2GHN6hh$8f_!!IU6ZyQpfaOrrdP>Bw;ao`V=VeNo~kTCi3}jaA*EciWM8JU2*UAg z7`9rZgODx$QWMqO)Jb-;6N1k^KNgK7UPnR7b3D|>V7iPLP{8f zhEqC-rZaC1Gm;xPl3_gPB7DP&w$^)64rU5-1e|PuTzEK&fDl>6nan7mFSZR|Xb|D} zJ3TmwjFcNfnhBXP-t^a(6^14@v@Od?W&^wA8&$R$fD9%70OSVpWlab>`-Ib{2bAx6 zfB^ph)heRm`4ckG7in(%)~z4?C}H~Ke%;P>)VborjCxnIh?b>4vYwz;A_5qSKO z6f!wol?^nxpl2)Gm`9Tw$nxNzEhBb(*L<4h&BMt;A`EoB5XOgKyoqbSlp0=YIAR6t zC?Gp7>u4}~il}iU&A_O!B8YIil7b*%b5#U;xOpf`yyj_ap@@Dt+o+-tX2*)f#%Y7% zyI*XE7uY@XTDAVxCO#xl2&2y+z^K|YEc7P&XrjR)l&$bkxD+0|bzSN2o38eLAG_6S zlXG<@+GjhY+^UK09_!74KAX7JLRxKeKpE6(`5qZ5R`@A%$f*L?(KR=w8MC6-`nN!m zbOiig?L=V`4qCVHm_#Hma)1&HpJa68bJ1)O`2!FAQt;235JGBNS!ZXMO%Bg+P8m6K z=a%#a%g6ftUPy>Bd(gx+HS^CoN~#u!u#pB}o`+fZPegF$92PZd@*}SP2!`~w@jwR; zOK%k%0t2g6uKA{{{l99A%${?vA7l&X%DaW|L>)czrRb-iyY*5(<9GT~W@cL!^fpuV77ls|}L-ig^@Mj&o474Mg-?A^Vg{G=CV?NG+juY*6FkboE_ z%{hmqS*f|&l92p+Njp&N(wF|))Yp?3OGpynobu^YM#^l+?Nq|l*K7s}nR}s)Q1jPj}P}{zcG+m5s?{&A*S^t$c^%v!8=4l3&{B9 zT=Wf2ARr93d%{%}m%;VOrUMPY>s*Z_cyfrjbWUT@^Bg42=CI3#JblrLq7D|&G|@&# ziQPpBoTRY`1n!-0dhIicMVL;1{xtZ{LVY}qzdhyle_XV+i zellA*9$UOUQCqJ0{{SLad6XZ=$zPS+zg}08r#)Hjh_iLO@>Z*Z zIf?pix~QP+{{U~gB9AfzOhDpvPljMSF%330NGvB=)7e58?E&2nIHq)BcZ~RR5rSEw z;Ak_h@ymNnV#+p<6dvf)D;MmHPQc55zWd&@4OzCIDk{EQC+N8T-4cP2zZCgM-=Z3# zV%LnW`YGq;;^dw`$1U)_Ruev1Q7_y2G1YGWEj8QxOLQ+O4 zvrlyyK=l;P$4h1Q#a*{o!u-@AICAHuZrMWdv_zOd=y<4Nh64Fr@KAQh@b(x<&xg9~ zUr@rt!-Nvi=Xxx0w#)|~Q6+>1Mc8M(sQGi=vEuu27nbI4Le(!lccyqBXfbh_hNiwx zOr$Hb5!o=ll5+5{<+S%+xN|%@drD1XLYvF5hC)J!|dmwri&6e!?JlS5@R4ymL|^Ib-xt|186(u z79#>R3+@96mP;Lg}@b|v}&o|_Z661UmHhzuO7>6GrdHX10ZT%YN zi*PBT)|{12^4TM$JnDw8KYOs7OTJ3)sx#4$?v3|$R1q}gwEUajBx7^JjlTN2gAh&U zzuaFG;v?N1E8sJvsab(bs%3XKW7+>XvmGe^>U#cejRN@aQIuv5tj|}{5(8GJ_pI&?r60G+I^jVPK z756}qzW5^+)`Rw;Ig{b%a!w-6{{Vj9C_)JNzYeM>8TU5jDdcYMaFHMjthP+Iiq7vX zsGW-sB`ai=c9V8A|WHZ180{E zvRFN;7oBK zp0jh$#0`;L-#2-pAPj#h=4mk@lNhy_odluTG9b)0d>O=x=s8K735-B(7VgQXT>8_3 zf(U!D8cVubQX@@E?%6alQDNb28Fxnaq_2X*3_}U)l8xeK4?F3(WCW=@3lk5#6m0~d zIR%danef+g?NG7Rt2#Ec+yK)il8SsU)TpHVPw%Gv=$22Flt&BrXHg5kRh-ev?F}?@{!6t|mAWw# zC!l9L_+N^OUb^nSiYS1mobSPHwp?xcFSu^+s{5wxk;IBmq__NV&3(h2+xu^ZGnL<} z+lx2rccKx*_j2gI`9Mv`<)S)sMj#B`0~E%ye-A6x zgT2UJtt0`dkS@nv0F#bmaBipwNpf#KsBH*|+8_!EGjEo^wCx_y z+HGO5qd0VoHg^SAb5kj5h#kb$0?&!;XMx55vp6$KX%gi24TCc_K z`KJUu3fX<_TggN>5lZDv{S?8M>z_Z2lRGy(6d|+rtKLOzk|8wY+WN1!c`PX6gaZ7* z`0?h;v-ar$5Rl&P+ppjIff$itRykj~5WyT9KsyPC%G*`iL_o!`Gs|@N)$~09SO*!4 z&BXGor96YXpZ60b3%Q*u!#Z!NlL8Kl4WeMv249s0d)k*LNj+Kc;Sj_N0$x)TGVfdD z*`cxk+x$tB>f7>tHwKjAEfq^J3>~^Oxcn$KVuj%@+vz!rZ5QHSYnRQsgzW>*o$yh_ zL8r&EA`?AUIcR#@F4A4zTy9;~%Uui9o2KD)M25d_bsg?knrGrJ{{T-HrRKBq{Y@H& z+@HbK)66ILSAJJ6GkpD3-(HG+e59`B>&&iKcU5_M`zo8Ws=L003%lsJT(2c#r?u4r zhF&*6mF;|{x+4Do7m|H0?|e0#-DI3|((lXozt&2Jniq4hp`Y({@t{!f&xU#;SwXW9 z(94zhEJv6$zhxPn-N`lldZMK*&v{(d@hiVI<$5(WSANTbtGP9IC%--Bsu^EY8X=Pn z)#%7TA28_4!tdQ0O!Tv(BGAI%WZV3ce~}1{WxMp~>$+Zuv`k+;_vC~RQ#G@w;F*r= zy9zGpmxl!8rq-y{rFZg()ase&9ft01{F~)734}*IcR$V57iMOBnF0VZLl6Di%jdXqvz&17=4O5QD4RUE_$N6x3+j&0{d*@BiI5^7 zVlc2B*i6JPI-I%HH~L${+rd1j4?%oUIzn7;1qh;T+FaB-CPcP~ye>sJ`6|qGIr6ch zatn_|4kOl{QqP(ULmT6&j!ZRvKKdgf!H0-Ll)3NKIMh~SO!`d-9+MhZ_tQX_!wXY& z-sOjk-u{7he$_e9)$eyT+51G@+#2t7iZID60DbLQ@y#>cO!t5dxd2s;f6x&W}0kaPpbi1r{C7r5-acH|v(S)}BeTwZh zqdPce&U>rQN#<>|QAJkH`mL=K-4Q6?f*%OfW#!9~WF7By`~LtfempO%?f!470_2<9 z!nf!Aw5-vSPVb7p8@k^=S|TpW{Vq4h-Flw4Zl3qwu1fm*sitq*@w-0C_vDQp{4bJ! zOq~n!zmyAAZLtOOcDv|-goog;;n^dOixfl+JS2Eul8*jwstvDO@mxJM=&tUmxq4A> zzg0DNd|ff=cFCHg@KBh8H(Tbmi41P$j){O3(FQd2MVil|+c5xHvVDA2H(qJBt4?T$ zdS#l}qsz^?EJKsX=fM%6l*seZGfebC`QE(IH+>d!scse!FvZ>4bHGZzNW(wKavt~M zq5@gP#Q9N9D5VqV^x!&MIwK>?n%O6$!+wwr>An8|ev0^M;Ee-cL|vKFFs^i-T^^`_ z;%+k2qJ@O(t9;7&sCG6#()pK}^3LSqA|({YM=D5PC4q=o$=*P@l=Llp(Ek8Yo`8nF zs}v2Yb$>9`L~Rq4Fz1onE<~>Mc#`goX(4(j&dFfFd+MVRQSUUsXyI(szlXZnF8OQa z$veo6XY95!@bg8w zA!AyRP990-;JNCyyQ8?=hPT725x{08x_9ER@i9YvxSL$)atpI|kXvdl^qd-}gBBSN z$1z_Ep7q;%HYOxuEI;wqY$rV;<^V3kMcDB%FmU!GGRzr}{nu#`pAuy<9}gR9oCSJu zBxSTe>R1tN!V3+jZE~xys|_AOmM$TOXb=qddTP5VcwBy|;YxX~(&jcY4>f`$GYb`j zFAp?8SmZR@Gd{P$c9BW=>aY3Fr9 zx24q<@Z)_|-TV`MQ_}AF7tw8auas{2A@6t9Uy3((xn+0Yo>%2nlI6$G%Id3bjrw1~ zL~5GsdaG-`iSF-I^5b?ti@d*U=Y90*jfI`k=_L*C$q97|r)Pt1)k6^`bQTsK)F2LH zm4%IymowDf^%;G7=)D!(xm=%0HH~tb(YP)(H|NoK-^Jt<$$E`%j;WmP;I?k)oPZ_n zYIEssw%(M>cNuvjI#?KP7Lp-rl^{9 z_B}1;yRUpN^brmIT}Fw9aSv1Fc}X~gSHTcAMr2pL#+pB>7+{CmZ1pdF7vl4OpA{$k zM~}as?SZJ-Z8M*ydHOS6Tb9wLnYGzK2*1g!-8~W76JZlj$wC?_!y~_aemKnxC`pvO zWZ4aE(1&6vF&-|*{`v9B=8Vge$2A!MJ3i*=KNRs7Z+@i_J^JP5q6aQ!nO{U9dF;5<=bHO- z)L&F#h3~~QIagQQa!pCymOL3WGjI8}3(B^D%sga|>>8TH-hp^6yDeXXGKCB-D+5*@eRS49RXg}m}Slo32n&Bv>A zaAvS^M26nUYF zE3@MdxF*b6TJhRBy$*cTPzZ@H&&x%Dhp`J#HyPc@c93C?bSI^q>jVve=61^!*oiTD zs+k%raUvRi8}0ZSF4j)bXUt~&<(*$Y6}K;seJhr0Yxeim6F(K4ku+1EE9RlErikg$ zI&0tI#aX&4-SJmDp6}!3Si9t|{Z{_~d%h?=-IaB}+HBBuJJa0{j;qbkznk^`D{t?U zE58*xr=q>+%^QAxw?&%K79;n4P^SL?8@@Paj+!m0Qhwfx5+Zm_N1yS-E5CK)>wbz_ zKe}%ozGwh)>3+U$wn;R;o;oHwJE{7z6F{-etH6aKBjyV-=~2knEY~UsV>#CdfHHdzNpMzeAx>4Wjhnnj(I8 z$xG$#{A3-x)I25D=9tz`bwcGme7+N!SAuP!kay^zf)?5FyO#A15tQAs)|F!S(i|s) zy*~&=$ zw&cl|+uENoE^hjbLc#<}Tzu(rP~pSgah>17#q7kKaH;*9oudH&bp7}q2YN0+*C+vh!Q@=+2_ z(C*#(r#&)I#Vy{ie0)&^#CDsHlWu<=Dga^B-24#`<-*?lPyw1b6Hklkp(hLtlSzNn z?=iSHl&Y`^#E=upDm?Fg<+q6j$ce!+1%qFYnua)_hNPIcSHalmzT6SvZA3O>4W!TgrOy)cLN?HtPEW$y{+bl$r}xO^iC+6%PY$$9BvcE{S4Gw_&~j&+=o9c*i_l4;+p@2PLob64tb zMVHOnD6@WYYrW`AugmsM^jqhZ%!PcDr|0~5X@08d?5~q9w>5ngye!i>9OPU^+mUmTowcDv>dzYpAT#38lv%TnhaZ+NUGy=IO zWl-L#7MFUaYZ;nf3=~=U{{SNI#WDa7O)kH>h_XIB*W8ig%I-;`ih4*R69%30UE{ei zbk*=shtHPeU^!(j9B8OmRTDPm=tY}+`H$KpvVGj|ugdSYbg-2@7Ri}B=gxPkh8wDe z5c64-CzbD0zlED$B-eHKLJc|#zDbOMrj5fnX~{w!S+Hu@z6d}>B!SmTUz&mvX_1}I z@>p^!19QvQ#ajw~n27B3=2l@8pGd^;BnV z#&WlseWotVSlp%Lq7vUf+Juq3-T9zJM@#CaTPn*rd-3#8kOzAyUFM~&-N|9Glyq|1 z&fIj|qKE9X25{tf@2h^4F&JWm!g@aMi)9CE?*SKh4QcAIv0=tx42UfA@>oQ}1IG|N zMKXC$r1QxQzq#F$=uTQqn~2&CCN+j4z~UbChWz)sz{e0l-De=TKKBzzYAWG&t)q(P zT5esHzTD~Ka#-x_4MMzn%+lyR$Y#W-jkf;uTk0 zP{`(?i)a94p=}fZA3r`D)+B=*vz6a97nbFBev6*&H`PK8boTwB2$z=&x}!fiUDa|z z7u*f*P6u>0l}$ZShzTlsAVJADA$i{P1I(S(%k?B)^Zg-w7XeoDX?pHYHm>{SxiHZX z$e}G~y+G3@v=SG55QLr@b6XK+z;7aa!=Zvq!!)b&e!pSJm>j=L>_jO|XU2;Uvy(~Z ze>{-v@kkhNEe-011VDZ?5_Jw3iKRY=C5M6un9`f|@mL+73EinI-F=7zUD+%+AlYby zm-dk2#UR{fkJCYlW1a9r>Ajz4BNkz^^;q9eVnD+t8PHPoU)W(6+n29Ouk9csxcmr1 zu*L{2yl%dW`%FmW2A6yke^14QftWOsi?GBf9rH)A$3oy5Hz8k1WU)Im_D0s$hFx!x z9gITnQBhHtzH9qZ<6ECa#y~)nY(7dvI*( z$|y#`4bHwazAI*X?=O_b{S&rco{I9pPeVB%z42$j{YwZrApXu7)9u0}S7NH_v*&!NhH;=JdT3P-4X!2!F^Mq_2hv z*#a1YHgB$6xjwaBpuAw!-HPn-I6Jp{KZ?f@J9XZK1VVYP)7=d1`n`BA)faw7oPT1D zHy$XNFgvf$k3|=&>AgMjzuJ4V#gQ$;E*9%Kc?uDHJcjJxvS)^e7EmS!Karmlyu#9MO5a;C4MTGXLg7iz6x(mQ{{Jgf~RkEL#?+QlWF1b zQNM+EVLfl+yrihs{{Y6vdrc&$!KX~eO9+5S%O<<#F^G-|0BkXfaIVR=FTpSCd}3CnTa`2Tc~&>pve90h4ET zP_vf%u>>T?5iA<`CY$BD`1&oEe>SI&r=d{_Es{>XZm3}l-$u>)T-L~k;(E$i>zw$Z zp>gTB<}OoEJ28f|e5(C@G+1z&)_xV!+e9IDEwV=WbWjHTy3$;vu&}`*d_?9iMTglT zkMV@eF@;CiHVj?Xhd!>-3lFp4#S4POH+E|ev%w4#>(ycQVHWlMyii5{({Euxguoq# z-)(*nc6evE0d3qAU4h);xZ^ebt}G{JI6)i~KTN@llNhZ>%EkIV920_vkIFwxFcB4D zFC`CRFoMwdC~zjxiB3rNFhqw9SS)_a5Rn`*SlyV2ouZwG>aj38l-AvSne9LQr}U%3 zgBBK(=GyXD9hwX{yY(Y~Up`A73?H{P0E&kodi<`@*}$9y!)f|L2lUdqA5?J2Ius$w zBHB2oO?|mV3_udWwY%^@wp|sy%{MMrdM>=H%}~2%moz3prGey&4DWIcD6fL%YCY<^ zu>j6B8^>2ri8qVg_^_@lSN#$@(Ks zo3G5&tlz_#L6AN<`6E##mzn^WXI%Fo4oy9EQ9Cs5?U8P@yZ2~yTRI~POvSyg)qTyH zPm|GY5^cE(BQ-m}R7~4mD`(vbt_r9L*7IC`5t)`~ABv5|0!0IBeALgy-$doK(YW7& zbN>KVwB_fXS|;0a0j)HowD(ZLM1W`0$iB2g4l@1LyYgS#7@EH-91VO{9uXBArax`3 z6%GMl0JD8pXYAsbkd`^;)~NO^kVGZnGZLDI0)XMg468-hVeiPkfeaitoW%}Q3NFJB zN)0?I9A30iaQKNFO2*?AT^NGR69QB!*ze#bS0(wj2jo*c)9|FJ|4~ zqU`%F@VGQbu#d|lP|F{);lUHb4$u2$fQC4O!R@=rMX(4F4(##_JQr>3(Bek;53{+> z_N=p~L~sN>+|0M{x~QOI=jT3t=;6OR&6jWun1>nGtt`B1juD0+PvU4)P{a=H`6!9g zJKTep-<43T=q~k98L;K*swcp=x0ejn4$k+bQDIBqi}kXhrPWNc*L4nx9I`o$PU$G{ z;swBPYoI>LA{tuDF?t~rWtQ(N^+G(yJn!8@A9>i&*uR-VHlv%dgU)8dc);(pOoL2m z%2(I1<6*@P%qP4BMtt_o8LvY zL~hbusvto=8r{j)Y5ceDVdH!BOgtLe{8U-qYb&s?*=1XjIryP>e9^4uFBVSg)k}r( zy8i$dcj~U~x~smQ3zY0>r;_K={S(*80bMz&c?-Wqv;2JBx_@2h9Ijjz`|0~mfwN%? zvnwfu>*;*A+}m>T+@fp0ZmNf0PAGd`ibwa;MD6M*{{SdVJT1dMWeurIUu)u`GMT$S z!xK)3Z3zyD0aLp=U#f@!q5ci(sh!XHH^l-+@Y)}R3zvJ6YwLNS8QfCm?4`deza-vM zyY>J|?)k%ox}d+LlpURm!$y54)0X}v)(2pQFzr0R-fQFFu)dQB0Fha-br;eB{9*4^ zvTh0=qnyVht(&4BNF&jdKTnGaCW;5sgYxlMe@_DtR6=|>-@3!>gAB|KJx7vX zhs-cTv;Cs*hP}%QGW#!|Ijk(NkbeO_cPr39MQ-x_C^ml*Bx^}!d=@8X zh7#g+GSXKq`;-`aUy}(oEI-dr;SN8E?otKlEA3q=3#(=ZNf>WN;qK=cdD_W zf+NWMD0?&4@n75F#V9~Gy>`CC1aL(1K6Bimz=I3B8GRISVa`q-vtMQyhSnFw$wP!`H`Az}FV?Za5Hu~H zT)LwH6VT;%!4gk){1JhGFH8L)JhS)FN+F>hbA3E~9Y>Tx_{|&QgG3rxD4pL*Cx_-3cjJR*l(n|*$W<8$eK%Q*i4^)^A*_J?PKU~I++h;+H2V1TqU)TpC?`!dFZy6q*}Vlcy54JtTLXPb>` z3dgM*&w?j^v(-hO`=UBsFC=TKz6ki{g@qOJ9;+*=JTB}l>=#bE{CHQytyfDb{LNPT z^u9^1_a;|&#Xj<#?(3R)`{^|DzaELaxGG-@^wH^eRk(a!_0r~^?bo4MT{m*Dy|3Gv zE{%RaXjZoVSE3#>;kiaA--tKjp@@k$0-512EkcM(JcZvB!KZiPp>Z~S>8kv7yP~H< zmrMO4#_hjKTkGVrOq%ZbCz74+S9h-kE5Bqky6!3wHqpF27RJ#s@w?`R8NKrT`KWNs z%je~NlOor9lpUTU{yA@0J(c%fa=xnvvVvKLT=mIdc1$n?z&oAqa8P!57!9rp3?B+C zI3RY2W`|~mAs`X#qiUY3`$8PDgR+>ieaj28;sYpUoAOciR}&Y}VD?}6fS5_1L197w z*I`L<_=!{Ri6FbwxB@WJ>msJMK6Vz|k`6%YnX`pgv z7evugoA`O4NnlK;HmApug`s)Ao9A0~8QW&&C_MFlTBstH@#K#iyU~FRTXEN?=?4}C z-#6L=HTgFyy7WRApaIC8F0@!!f(XEj$;_wYn!=0j?8OObO<-cic4pZ+!THoaHszT6#{j=ayP=U9KjIFWpP!#kp??6L*q}t=+o2zAJtEc`M!I5ffCq zx=w_v`O#^2?5H{4g1h~zBlzFGpTncA*MF}a>G#XcufZF;+_&*nx@mq%@2^UHtUkf4JU4mq z;-T!DIY@52>A_)kB4!5lh1j8l0%T8}%|Y2l(u1=DlEds~CV2~*J)RMf+PSD8h8F^* z3;@p)da`iGW?)ILvdhp}qw!~1m zXAWL@c~g7NsvosBa%LKi@^Mo$q`&D{m3Uq7f5e#&UEGvVA0X{LJ#0;@zs5?4kN+%#n5v@5W-kQ zKqq>K4{8mdW;|9YAP~DtY?*m#?j*ZJLMVx^qg@zzD5a`1;5hu=_gsE=*8E!fa$Z_1 z^!7oK%YgE~(#w^fbuBOT(Fx02>X`hgsbyy5xLt2@8ri$eUy{79 zG)3y0K8k#^YvQj>_A8^6=7_y(cK-mx5bnR$Y78Tkj{Lj|!@!jKHT&>b9gWDBf#9$^ z7|pp0=&*Yn3_OtR%+P@@3;Q}BN~{jf*$$U;QQ+-l*ZNppnWA<((8BaHD@z1ubw1Rtih|xNyZ9g(~ACO*-*>o#e|K4iH=kp#g27T{rx!Ok7Qa z2{Rh9bKdgbRfG zOv~@_@mR6N3@jMx-iM8q3{#&w;ITw8ek5zhb?BaK(wH6D>3*~^2oDV}P8ld*aNb@| zRTLX9p7Uq+p~=KVXU8Yc#mA9~Q|Jct;ely_FT)5I1}7zuE4& zByhX*gyzMNnQdvgyb%qa?efyK7bFO6^YOb1b)d{51WlKpx&maJv$uW{^H^m60F@5w zzH76@$8H#@zCm^ms0g4iMKdj(ZIlp3V%sj+d@LB+46dD4Hq#i54LZqophz<1JJDlG zCK{Q~#7#$8dfxPJs&KqKHCo-@BB*Pv<>k9_x}%-?OFYIk*9ZruV<;sxEh zZ-&-t?~<{8N}Ap8LVYBJ`1;!-F8S|7UEi8(68-~ZY3Qz(ozZ&U>Mk{3K9{{;l9Md% zmvcbf`XP|Jz37Su;Gl*sKHRdoO;1Ty>%m2caE^hxr-~S%`jZrjxtzZ`|Inw{8CKus^@Vc@@&=(|5;h_;!^_gvNo z)8ssv#{GPFEFQ}YAO_O;EI!QNh<*WKVMPg^844URqK6C@2Sp43Nk<$oVeLZ*BrF)B z#uAqbDDZJ`;qQ(u&UQQ&91!JQ=7p`ofYyh7K&z4*Z+z)JF(QTQ z#pd!MfqBr%W%YgP7{pSFM9LN-qH}z*51cudCK*KAK(RUSW?|k2Zf4D0lwo%RgKacG zPk1daOpyiMgiZMW0PW=G&B*@%YWt)!fF?4PWt`iY8WLS?z{6@~hvI9*hn`H~hcLgn z!-ST>h@BkN5&qB`wK>;M?;$2#oPi+v2H@Q!#o0xQOyPt%X^6aLK1+a26cI-W+KeSob=pQA9OPiD8zb~kvvPvVrvxZ zG3%<^B#=BUlz2yI7d+AXGkIS{iUcvZkXXbLUUKnRG0I!kEMx{Zd(;uIBU)d#vI0&8 zGrtv$1I`?rmYemL6^#rLhk&sUCU^3z(Si{1XFd*mQ3Ga8PuAye9r97bR?4~OUqnN_ z0Xa9N=(bD%MCFXLZAcZX^&(9(7;!_#btXS(N}Uc~qk_cQ5x8=X<_WLo2&! zCu(>noi|9eb9$|)!7$|)`o1QfY*=;k3Y#QN+{E+dgyuD+`t?U;r+MGX?vUgW7y5>h z6U*1o_gp!COjYC)JjLhg&R<7{lj*LMo9r*@ydHe9fr(ZhrYSkx?d z;t&y5qps5&Q9~{Un%L58vE0VP&Hb$Ph_m?bevht{M~|o%dMoR9o6_&6@NVx^)9b;x zPkJ>O$!C35{{Vy&J>IHn_bb12INwj#^QW@P_^N!TMl7^bH+5Ib^+_r&cH`L!J>P=6 zepc%Fa!yRHa_c1Z_1}NAP0oncmM_Tzrt9Rq6+qzPnR8IIi<)_4c&Hyazm?ml#?*47 z-0#&yA*Po{^JO38FF!>QTm}A+gZF+)AjbY|EV-RsvQDLTFMX*l z+gzq5c4FEY)4`lEq=x$BpfiXW4fWm9Zz@QG-YOgjVu+Y~&%TYr^wZ1`aYhgjnH_w0 zov9Yh`K(e;c*gr~X(!iR91`3ds6;y=AQ&|GdAlEd5h5cF%tA~H8qdT30PX((xj7%^ zN${6=^g3|OLIiNUc>n{{Jj9R2k0POHGk)`L=b6YpyWL{M4|SR+aK@sgtD~$fm^;R2 zC#w-K9(u3u49DBdI|eO1*~zDy%BXgdTnIKz4*}0!JE5phMHz@~31r)Z_~r$CR8R<@ zVUXi9Ln3%c=xT&}FzlQ?q5kI*s|vp6A}R_x!HO1yup3?vPutfeicTf7(XxIyhat4a z!HzENH9p(ERDGT-If8Q6rf8WlcHprv+(aR(-PR&%Z_dt+Za@K~zsByi+QCim)#Ui4(l5TLe~uJs7r<#Rv=rDlO(!1={{WC>cfhPD4;|fY_)&Hq#&Ie< z<+^p%c7Dtugbk6=LxAE!SuV|hM54Y34TxD`Ool9u8=qt_j$?%sV1qC+mrqZX3=d4e z>F}{y7^~BU`DAL(E&~k1_Dn8Ivpe~T0uGu}LL-2}M$v?1Ww`qJ66!G#4rB?KdP$3L zEaBQuR#1PdA((&lHF9yjQ>anmK@*7y0VXDT3)V~*-2?ngTtSeYwRV$hAk-1V5iv!D zK<;GwnX3dS%BskwW8q!&g8AA`*5BO~`g}CTf~j zDKw_ofa5TRzvNsntebo9&UA0Hi5xTT>=4<4%{^(e#%m5OfMJNfoMrg~Sx8P{nzPsh z%12%rhXlEoy1>DVyO7c%xs4sCR+*gHM+t!J?ZRBJfAr~A(wsv3FvkP!Q~f2|QYX$* zW}D4@f+Bsbrf?o7n2{Pzk|KIdV}>Nn@-y;s2Jp`&)Ue@7sEOz4v^k z>37O%PLH6u{{R<$c`q;DPvZBWId$|@Liw!tt95P7UyG}|_E$x8`P{S~*OI&PfSSy`zYyP5%;b)P+WpcrW@q7;?Q3F;d@Dkxyo zzH?<8a9Dz!eG{${Y`kwzAtL=zAieWK?dALhg@#;pzN@kJU8tSCn*A4LfIt9cg#d}N zz6%Ello)Vn@QeV8EEohQf`%;*3HzXK?rJE5`m^gUyZCA#kGcNf^7!7|=c0=bXgt9g zRqN+L(p3ixiR}LXkC4h@q#5elmeg2)i8V5oL;nDEXYiwfGo<_roY*%2YfRCD8ZY^8 zvLp*T&`v}al*MzCIDiN<+KH(XzEfwb&vvN8oFWihQN7r085;ip(~!lC!s0Ctd4Usi zEWBQ_8N;_6TO{{gr=Z-&UNmtf4jd4~;e{j#V<9ukGWoohYz+vB$p>dA&DhsbAOH=) z@FNii+LI2u;_LcRV!}qwkDWJgBu^&=lvqp)Le39+bUQnnO>=NIWq}?TJ3D82In3{< zshAX;lsK^Lf((Fhr&TUT+9up{{SuB?z!sKDztD$TG>$%6=Xx*(HttBmtCR= zq6{EyZrOINtQ=O1cMVt#6c})ch<3CTlm5!a!-o)UejrpY`DLK%RB*&3!|tNM0Bu5g zWT3-?N$Roi#TjCDeW^t%tWL%u5(T%|s>STkgCpK*Zk+`=@v1l?pfQ}irpgZNTP9w+ z*ybLdN+Fxhde4U%D7t?4BMAm{sn4Qt4o$VW6CR{fMEufa%(_0ynFe$o~Ka#noR_5xyKR)qLI67N+aHRFC=)XN$*4_&hPZ%kK&r|s^R9ZrX^uti=OE zQRpjB8+m6?J4E1Rr3Bwhz@Rk)Bw(2}V8FI}o`h0T@-ama196m8cjDD zwRRYdnFxB5zLT4?zfevbFvJIVKaVQp#k1CgLxv(ViUQlfltdF(841rJs>Xv03~dhf zY#}9q1mq+?+Dq~>!H;dGU;sADOLMpxG0vKjq62OAveBRa0JgeM%z^hIg~Lo2sg-Bd zfE8wK!Z-`KF+4rfCa$7wJxlYO%oa7sIjr-QK>2kH;M#CSClGM-1XN5J39vMw`@#p1 z%PH%W^AFCd98nx^`49BC6l1K+_|r8UaqRan%YUSo6Cup=6qPd!S7rxmzYORh)#>LW zH4HGs1IWCh4lg=u7D{su5YkK~p8UaK=Pis_PjRAzOu1=#%6UGlq9D#1=kQu+!#5Y2 zfR;VkUHmT5hD`&Un_g=k2%~X`CLW<+VL}*4?y#clSaCqY5aiBF7qG(vjhd+YIN6cE*bMtLoIHKq}H#@&GWtJi8V7D>>bF$&E%V|mwKpalg?S+mz)0pkLvG)L)uR? zG#8!wCbM@`^QTkOm4xpmY}=K$C6@5E0X3gL)w(-ZoU`}xPSvl9gopRas|@WOt*S|O zPSF$?ozp|+u;Y$6ASW^CyJSFM#6?+8~}@^8|5*UJ2sf36(=0F%30 z&S=#|e!i0Z{{Rnvwm_y?U#ei5{k_vnUGwr+cIvs0lpm?WH8}$A?@8v@Isa?w@5`=?a)|}7}kzJbyY|nR0n}FX%+3>rv z6luHW{P1O=CLwBnE~@)klpRmVkq_ z(1OG^ddcYH!b=+xIDmN#(3*gEHCXY;$zftVq7gTUJ26g<2&i@;v<$XJK-HarGd?oj zblhOpO5W+U0q5Po@I=)Anp^Tc=avF*7mR@^MvHN(S)#a5lri}T90I^?m!^GAy%*4Ejx^8?(2!KW$jG`I& zF*V_v1|~Oww#nw?Pkh=`G!g^}924An8Bxs)B7oCepG6MTh>p7G^>!@z&E(@`x-rKL zTR=iuQ5WLpbtXWNEiUSZ6c=$o!Q}in0_LWZ6p9#}cZW~LAu+ywWA7zOKg27Q?!5qI9uKL@k@W6bx>vU0uq}ks-pE>4iOKqbnRsKfS=DE{|m7=pVYmuoR>MdhQcPszVy!d^Vn zUGYqtr>Zx6yigvhAZ@OSiY+e6XLaQ})n5zXs-;`M()qm#=7GMmUfSMY#rYyXJ^>Fnmqi&;oM5Wr2q|Jw<#Dns8m4 z2X>crU7rhPqDun+mf60m4-CS}2vEbF)k5EllMp7M7kMaTUH4x8iNhJU5!Uk2J3OaW zAa3gWfS)IUjzBw(HGJQdh@xV1Z}&KHA&>(%oAgsKmk^4#3Gd4)p%%;`=rx2zAp5J+ zHk*WTVLyy4^V2E+0FM^c>dvtsfZ{>6$1lj`Mq^M-Wt|uH_#^#fNd9jAu(X|nAMupY z7)Bq&!yPMDeBGm{{RwB&1b`}DVBPOpv3P(+%2GK@2R8iHPJ*`CUOivkz#V( zPbRD9Qt<4JoJgTHW-LpeDag}MgTyK&H?Nr9-po-DG~g1cY6;L#%r!tR+AKp1#=(YC zV*5`%Qp-G_FSgz7krt6cXO>U3CKTe+LL%EVb1-^4OiPCrF22!;*ny~)aL85krq|;! zRTL3YIC3z`Zwy0gF}<_VV88|>SZ4|0X4`zvKyq^};;q_Y*@dBY5@IA9yzQHp$*4=Z z?D3NZ$c{}y0~vuMzb@@{cMxH~9Fq|zkTNV>9Nac-)QDOsM8&~`QK!YF?L5eYX7mns zmNTD_(b2#RB8DRRiU3D=>E;Nkh5@o3Gf=^&Ea_SBFPqF_gR&iDTS`j9k; zGwkJ_Z8NeSj$DDYH)08ej_~q3n}$`(%)nwllRqJOGxSi(Es`4i_*Zg{268*WK{#{g z!;oFK4k;Wu*YvwDXfby&BtW@cRxB__I8lV98dX>iLTSxVVM$$Wx$~h%v(5; z-z`=q5Xx&44lrl<_-}ihlu&8U=XmOvUsO)Cx?e>zxLy1xWnLXJ{r=+PBSb4gP|j6U zZxm)BKkd^>qB0|zhKg70gyOz3zmr#>(=voxL*w*#>+FZ`jozWJ-u)Kp-_KsF!%J)NM(+KPP~G3Q z%hR3SsvJFtUE0LfDJRo~6nnD2bms29>bYMm{g4-b3*Ro9qk73ZmYv+z6b^ST%Yfv3 zUnSYFTn5tm?pRn(&(FzVz+h|lK*?c=yP`;{!)T&gyi=3uR-&Of`qy_~+L3oHyHA(> zAe`pDB$gEzM2N{Ta+r$S?uq9i=ui**zJazvLl^ zfM+sH*zS;|wAG%HCMaUWa}MWoJ*TJvo|Bl_dgl}{;t3GogFNKVlgPVs6Hx6#C#6kz zJm*O%~DZD3n1kcl7E={v11QJL2fwBoMM8>k0 zk~oEkiw+X{9N6i|HoKM^cY%P^$YwQt=Y?sSj}j0=cXt>E;@#N-3eWMJ{6pap_=>mS8BvT!r!S|CfK}x=Ja_$XEiT>b&XpP6?c+J^^ z2UwVKVYGkTL_uM)VPYs5z&T5I;_RY|5S|2DoY)fO%?#_Tx3zO+1TdB+CTWnx+lt%(Fl2nT7U&J1pQ+sXTIvEc94#Y>II5dd=8|Iq!0!2C~(- zQH=RzRMW1fEgE?~{;0zYd|{?vscuni4R>p$`Jwk<1;)_Gs*q!b&lGTBFB~HCLMW#U z#*OZ=q3fcF~Y@JVoCMZ@5x0BMdinOX$ewKs)RjT zf+s_MDcmv3JdNJ@igO;Qi2@nR&ht%{Vu_oL-=x!u{L|eD($BXf)xSIRhF5uBNIXRU z0Hhr~N_HTNeZ_r0v=}i#%3jO0M-D$@5oZYXSl^kPi>j->sDa`&n`v*7mGDE)-z9f` zzro7yMR!5v$zF-C^>kVB)6?Yvt=&=nFU>XRn)Sbhes}Nu@b|V{GE<)+eyOkL*#OtQ zbed&%RebLBYrFJ&{V1q}h<`*`LMu^xea>sM!#8`olE#QN9YqsAEA!*UMqJeyUF44* zccsY->a%OVXFzrEKs;H_{g-9Jofl>7@dlFYxO=YoEIcY5d=?xhWlfo3h@28wXpebe zh(=$-o-M!ib32-}%I)Z;VPlx(HVi!(VhG@z%N=?K$V0z`=CFw(Y{I#gmycO#BBG#R zC0fbd#GU)!{mwOWIG%uQNKOgv^kCCMT&6DSu+6BemnJdq3;$$9wSM=Sx8sn zaJ@|7hi(!dXHwukggaL%o-WH8GXsYsI@GzG#)XG)>x&TlD2gd#t77d#$qP-{%Vry5olsoeUBQX#xk$S5O< zOwJ}mwzzkg>Ug1u0sjEg*@|+>>f5t(q}C)xD44;r@d&oW#O4Fh_lY(~EHM-^$&NxQ z=an^?c4s9Bq$1k?08wU!nVsB>GG+lBeYpxfOfC4aroZi!_pw+Z;(fXBt$f6%O+OHX z8uy!&yU_1`Ip!u5B$7cOROb&qbggMHi?a$&gp;J_t9~;KbW(cjI`Q!T0QJZw6zV#4 zpUN>QeCGHVkVnCg^k|^7tyzC z#bQI&a^ZFnsuG%j_nY=A9{HZDW>-ML91K6R|CTL{*&Fw5x(~zGQJnl2|6ZP zo}Zp|@LcVb74qoU;;`5Sie5m- zZ<2_d>zBQ{se8UY>E@cP@`X9B?Tzz)1ngLA;al8tP~k!dCMP?%aO>f!>^LGggH5HC z*FPoMyE%oH78fOh0lVa(km8LcHmbt{I>@3Jus|BRhGy=IF_@hC^38vYgYeE?JyzCK zYS`AiG%T?uBus}Kw>t*)%|R1F?a8Yr684i>IQ zggY^zq?q%0HyrA|*W4mFDK{{kB~dB{I`l#o3=MC1a$JcSw>(E0u8(+AuK?ZoYqGkd78#xy1f;hfiL!HW(e0M)rOc`QaCkj~Sc)JUd$tKoON zfYjdq020ka7}obH=9*7`4yrQF$HHP1sEGL9n@&9MiZh!`W$LTe%H6+}6*pc=XM6t3 z`5;M_g?3D6#umsd()C@X%ua97UENjZbys;USBB-j?#_!jtLf$ZJru6}y?=|9--@k& zkJ9&7%F6Ip!tROF^OfJE)89+i$vnmRTdnyj+t^v5$K##*T~l4(6g?BwA5V|k&yC$x zJg>oFx5l&au$|=z?_K#Ua$p2&Urq8;Cy(m=(LF39cX^<+-TJ>I*L>;Vpa7pu6cb^} zOX+Yi1c`Fv$zZ4;oRdw>D^1zV zWo;oFh-B0=Z2acWIG(BA05Zvj?DRSYebNd%J|vD=*17{;G*H6?B2NDRIPgN@rr-OUoA2K}QSC0nWuYd6M?OX8 zPc;rWVcZ~zwD_>2Yblv5OkqI-Hu(xy-J?rVn841_WKMZy#L}HY`#W9X8E2avN0fo4RH^^~&SKhWkY}d+ zxJXgdPliU!RU$^T&a!X_i1&AdVKH~Q5Co|`o@AQ%s9}MhV?a-N-1mJ6ZTr#x0BDJg zb$ZZ$)M?|8gqCQ`m<@BO0JBhr8{9I0#kOJmrupXYGImSKQkNAR5XJco^Aj1G(;)p+ z5DYoIw~}(9&sLX;iYi6S)G^YcR5BeTu;JPd5v1kepA7V7kU|j&1AOJnhl}T%CeY>p z&RjUVPKX_!b{u$CClb}u#WH7quTsAu(>bwxr!Y5}y>o~V*;a;gw<`bvN`;eGt`3$PIghqGqd8YpWOS3+oJwUG&6d;I%T?bV- zV%XX+gF`lj7)~67ds&LCSms1xSMISuhrJGd3$&97+x;%k4j_>ZA18S%NOoc@@^D8U zHps|_ml{RGaMo)O2uQzc+>05EuYLF#d8lGBW!C)A7JYI?d8Q`!AS87jtMclL)Max+ zqCQvfoyPe$UNb;SRlW1{K(S`NYXcG}OqXdUCOY^YerN;*fRDG8+|_yA`mcXKY_0gI zUEefJ#^5NArTVMMXM3qE$A?AmF6UKMcgYiX&-lO6@mF`rH_iO2Zq<4sKT}^EuFA=f zZ2DdL-M0l>;IB1ze3x6E^l#&fqhjxx25)|~LV3}spoeEum$mpTEs*h=nSFTLE6cE7(dfTih3{A6DgNGi> z@<0}2B><%FdLoKuTVzqaWNqb3^_2a>YU~)J^j^(vluja<||pv$3PE|g9rzU@)GXrz4#qEI>n9{ zwwO2oH<2{*5_8320C5{?cOu^N;8w_K25{^(YKN9$S#HR}ME94G&=_IQcaCdr5QpwEaI>H&65+RdRabcQJ&G?5Rn$+DGAT= zJKk?0yZ*BH~jx) zJuiYH?)+6JJ;Qnjt@>@PlcexAmMajPjtL36CE*B*0uSu#4^HB&F1^M5imHel^3HK-6cIvmqKTju4vg7G_A;n$J^-*2l zLQ|*Ja$iq_X^npzxvU5X0M%eHgk`6Kz%tbU$N_&S9FWOF43h;2-ru<>n2tQ^AA?MO zln^}HcYD^l4QoHw8fJ@%HBR>h%kCtz<>sM+AW1UQ#*NpQY=Fgh;$j|xUSowcdR1Xy z%3R_E%pBz{TBW$73E2Wh8A!^$^fEcfsOdYXHPX8O#C)`3dEi4#GLSCPZW2dIw+jipN;80j0GgS<5d(Sg@jzziZF9gz)5&Ay%c1Dvl!^H#4yeQ zRS}3jUnkLawu(nQ);RmGD8E#_s?-LBzh@K*gME=)Ri+ z0VaBKK1;JgRsb6_7V8bRd!cQeF8U~3-R7Zz;^2fJdEL)F@G>M5ci^FhRH7in+Gzf& z2u?+x&FSVRMHbY7iQl~@o`3D?CruHAf2xn21mDYWdAfjx{0W&3Xc}^B^~ERrPEOL% zq<4tF?weI%mXt-Fn(bBPu9{@UVnhbJQaNt+r0CfvG5%Hm0CVMCd_3liF$W|*qHYEMxbIhUIAO)CCl3>S4&^DPoku^Ik=Q0m42O5Cv z+mJgj$}N)g(C!9eT=aSzNtwZ)jo6yb(gu%XbQH z8dYsW3H;_Oqn515)H%vULmUwnCSlEcpl-b!NGOP;XJ{Q5#06P^fmdn_&S6c7wB4&GtY74793yV^gQB`Z6Bpfj!107F&5PeMWNlFDf2F}Gim24vj?7K zymVVK-zPe_^*mjTNGoPTlY!_SSv2%)g4b~ZV9r|l&TjKk&Q+T+-Cj9Rx|o2Rq6m`5!v;t3$#$GAg3jYriQP5ubH=_8%||%B z@|urx@09LHIXB0}MNuk+mC(sUE0-&pFw4X)^UF*4P>13-Bc^vR(xKy(FLEK6@BSoj z*;3gCU^88rj?40Hm(gN|#EwUG+3_G=i-I@1!_^A6jp*}PUGYNQdNR>G)qjpxE;m(O zeYx{Q{{RHd7sH`O`gQM?1Ec(NjSdhwQbz~y{&nmVour*iP!Z_-?7p`LSVed-Fn{y}{> zJOOr4@(Z)V*HsLe0QoGIAEcc^?!^QlVE&$g25%2M^qWhVKvd_ht)&KMpCv&*@-wcZ zsHeN3uuU0*iSWzXSt1&*JFMxw#;Je+L(uOY1X6AOomMP6;u3d}k4(;GEj19F39EqS0J?A+SBB3xwHiJxG302f)5@=Y$^pwdG zmQ()#Clcj1Fv84rYIAp;9+G0Ch|_C(nVE!Pt#Sq(syFr#F*0ZWPIb z&Vq4AvfDr$g!XtfO(-k)??)R3GqbP(dH0?~@@f{B66z2rVRM#6j~W^I=!{T(O#|mj6%H&;d$5Re?`YLvXWeHU%dMzlh1~EJCAVotl`>@r?$zH$ zqe@wE8m5Rw^43m&$8a078G$Op0NERH7l=v0416++JjxJ912HiPcmu$@ooFhEGz1Yj zR8{=ie#q>!!x;%nF*)V$Ef&O`p)on53Z2GBtw94c<_LfO=BpExOKpGdLE_X%{O%5a z{^nqy%!l}Kop|TqgnLF!Ll2wG%(HUgG(cyI#gN)JkvC;>@t-JzjY8Swu~j{j9YNcIR&yt7lqC8Solvc zv4Nb=zYArF-FND-@tRjcv7*`&gv%{%^;pbZhU2}r`lz5{{{TDk-l7w(sjqTp(z7~l z;g_0uvUfaWhvNxznfAVHwud*H-ivEBS1q4{iz_G99`uHatO|xi>6PcvJx>Z`gy&1k zn(Xmx#sl7q9ugvi>#O*42=aULy-+H7-$X9>@mH^1R(p;^+R8FgMP2@tSL*MA{ax^) zlF43((C)ryc_yl6JMQ;o{Bc~>^iR1o@0z@+d3iG8ocOD|_E+P4)LLEnA$7j8@<5ti zSCYe*@d*i(5RG{6TUt_0!`CsNpatu`uX46U4~Xn}iLQSs{OE}TzjT06Cg5Z-Ol|6Db%D;7}1XMGmGanSFtxJ8_zvgViI9`?Ey~(I< zD-RbCenG`1HiNdiyqx6dV$|%AU;ITV-Um#|ixwE7Xvrpx6eI#k$|f25X)}pAK`fcS z?cKf3jSfp5ICf6d1|~D_F&UC25qSobxF`-0#BsD7uml|BMEjzf+%AAp&`g><{LAfwUshZne4Z8 zOS|3`HS?&G8KA;~O}{M$yr-gq7d`Ue<-%K~TCwyIG`8LWs{t`V)sMp35U`UPiGQcN zDeCeE%@~{mtiK*QOg8zP&Y~)VLUnx9acg&UQMt;Q{8OroWlPJ)fYo9{KYR1_Q4dJx+xFU-bxs|&Z3?iCq6fNvz>kpbWJ(%zE>n(?ozp-FJ&WJyp=iMm$voo zcTeDtekxvbLgeGcUmxP`{$#H7S5bG-zk+zHx+}Y)@SWen+05^6HRpHj{CErYTeDX_ z3Rxp6UhCwGYi_Ecz2OOqzDgJ#7r)Yu3;igVJ2BGrT6wRZe_!Nz-gey-1>q~3Ga zmqP0hi16MTgWl6tc{GT5a%ND-h+GWBj(l2UI@d5%FR|X9lF9fv64$B+y&`srJvdK5 z=7&0=k5{W#!Jmed4Zz2V6h)$kUF=^uQ$CGG1{!*a%h+ztRh$g+?(fSwHihc#xVb^R z_ISNyYSZ66Q%LNRDK=mzG}@@$UTDI^#SsyMPPu1UxooIIEJ)!mE&_r4OoL`br>YD; z+H=4Ax(#a-gY4~5oI?9qyxfom)hW7b0EmRc!ruokDm3Kl5-4Ga1_9Uyp^&ES0Rm!= zGI6$#b);IE2^MfD+whgK;)N|;g*#Mcl2?H(u^d3b46kYme$03=kano{+SZ*1`(}!B>u;X}VlZT$Z zEzPnra?gAB4P9<5*n~B$El6kb94We8>guvZ>71L^) z>P(&IGp%ICbJtCGYI&evz_x|mw{o6yGcqP*j-DSpT>!v8n@fIM&T1^1YPQt{jnNh( zSxVbKboZ~y0%(`=>B(*vs&hhFMB-8+@6|;H)hoec!LIckPS+*c@W}+T-b=L^QJShK z!Ep&38Alj`DeFDi_~@h8Ek0|;MPm1awLhz#x~QscrJngoIoXB*yzmd7A62sF0aVhkAJg_21?$Y8-FYZab&VWx zB3rELB&YB5eOK=JbmJsv%IRTqp86}h`1HROrR8&87k4FnKWgdVx0QE!e;ikWyww*= z(R$s<2zkwH*-a<)Qs|B5p1IZeFI{AtJH0&B>379+&Ct8Nl=vfjU1XrUzDQrPf-)`l zpNcGKo+CbAu4vhw@0_^g6%?LTzmz9_FT-*!FE5pSRtcXAlKNI5hFZ6x?2$teaV>f% zOq3Cgq$319R?&<~N*HA4pA>Oo5U^MnrJ9F&+RXII%8oAUo*uJMTDw$=C_7%3Jr=t+VMt5FpKmK~|%?_;Ak?6oXz_X-RRRoamy&F#udk(rx0? zXEZ`H5F3N|$`QrD51gv8P9#u`h?ux>{?{Ohu%9AWZct)H4j+EH*G4>xG~ZX4Se>J2 zh~XxrWW!_=vSFE??V~Cqi1BSh6hYjXyE{pwI2Z1MSTQXhXp0Z=G;+bVh?BE{3+LY1 zn^9o)jjfiAgGdtD&sQ?YYd20Hh4}ks8MtcAk{I9f7#WP8Bh>4~7`vij<@0%OP{tyL z9hjJnHF=5&bDZ}CaYRF9fsmV-mz=Z=GtB8QAMuf(+)jEZM|2mO$8!Ztvmd@vn;uIF zFkx)zd)#|elN50Yf@M~eS?15Xf`&N*NAj;Hr|Es+ASbNvI(aB!AHO9ouP(Puc~ErK zz?9|ATgyzMWM|c-&#$utVg%i~lQrK|*Kbrwd-z-7Q2_31cd8K1uVG@#UxkYk!>;9t z-cjts>KD{7p*`p%?&9y$8Xbw~X2Zs}qQ=^AOLv5f+nN+EZ-1i3AUidm1r&*3`VKnq zPzfLY(QBSuI_8MKPn2bT{E+E?}c;&s(}G->Ng7`Ck=Vy%uV8ztZ`;Wrojs-B;4_ z0gOULcvph#;f469W0P`F;!TKH6l}D;==VYxqysgCT)k0>bCQP^9j13%Vj;5V_Y91= zWqg-r#ej`2rSrW)jwnm$K_|j@?y77)p* z)5@(d!N&>7MT_3q10vJlNN`wDr1X=sBZwo2;b$@c{Fq9!-6zj5p#|P1lT#;ZfyaG# ztTHzl0QHp{ad*ygcB1WNq+U)~78(9Rp})xGUJ%A7q@i3oAO7a1vZ6FQoJvyyK=l+ZGm^x`hweiOlv6dC zB=>*-yrqzZj;b(V#3mydhY&;Eb^wg&Q2ENamoY}n#D{%kLj$#x-cXP{77i?NJPjkY zGcWQvKM_tcn(a8au;YvK87RR51}FeOBDBk0P0PQ_){m_dnsizk~nfP7J3SH=?{_Dxp%EI{l>b?4)H*{KX<$i1B zNoBjAaZnwQK2$Nyj%#cKa$kJIN+H^!h)<#AxqouTwNUnmK%Qvg?GUh_aPQvVP96*I zj3UuON!QsP(FqjmWkD2-P#ma_Xg}m;?1*?azgF4nIn6;VNMSOY86C~LFJlWRr6+k8 z`KO%tuF;8!hacRBydsE05H$|YL3$H2C5Je+rXAiLc=4`s>ail&!xQhvC&~6)XHeHA z*)inNL=0d|jZC;cQj>wauGJhd4X9jY6A856GyYEGn0IELSY@O})pF@7%sj^e;FI?R z$J>siAM%7nAx)9DvoqZ=#ki<(1Wgl;jW;H_@5@CVC)>n|7@uST-pG?6ch7T4^PD)Y z4G1nb?;tzOcZA!G0Wp7j6d&QU3{bfQh_;BMkH`tlrAL~@#E4-z8((f0m*g3u9n-6} zMfDv-gRo`qQVgXTHwG+Nw z*+e39pFMOc4$T+c9mwQAKJLf>$W_U&_=eVDW5Uq0?3W$wkYo(u(TJAnqD_!}&~a;G*qEYrV;R z=wfCssN$oDMY9$OBmG;BY@zK;%zN9no>{gAu4*@1om^Car2@ zIb7BbB{iMvr=oaF%$wUGuKt_0oxl>jx=s2chUV|~jvEB<(AI$pdZ<7;zYirMCv;Ih z88CuKDmRD`6#7ke%n5A(yFrvt#vetC3ECmMy8HYrcuXgLTwt9 zOXsSd%S0v^L#GnyjL!uo5~oYDiEZ-L8HD-Ojz&}CqNt@xFrEy}JrTNRsn*>b) z7b?U+pQ70$AZaBHdH79!1+_gETo5wxsw8`GztR_asC@X{^>I7t)oag<+?U1by_MbW zQ}f){n*Dg*^-X_D?@K?+{3kYem3yxE(zm%?-2ATePOkbZ=AQ2QC%$N16W&+iuKbpg zs&Rgt`X^W8d7*xYO!L1LhSHVUSdq*KBr}kwHdx=2dVHZI(m7t`E59D7GI?%IIdt>( zP?s#ej|h<=%w8Ga!gc}HCObvAA=>ckwNGr+UAj2G6Z-N{cDzjP`JvjLEXjUIcAb(Z zojK$#s}Ht0+R9UTm51Bmijf&Fy%r?)oKVR^WXu?8`(J&c5ciq-BGEzXy80+FWMFv= z#mQmD1}Eg~;AW$Vfh=Y#Cs9MT2^>y)-d@`9LI~gvGNb3s*fivG2a3ho`(U=&aP;2} za+AL78n?V z77Mi7Qo-u+LqK-KC%j;Y?6`@A0i9Y}RL-OQxIsZuBJy&ZS*y;Sm162bofDqWQc zmiyqFx)HH&mFUwqeNZc_UHPX{yWq5IryHvEPscmI*_yk(%J1ig@qWtpFI&4R`hPwi z7j#(*=(DSDF5Ut9atiXl4S$Ba^G$v^CiuIen7h9Q@%>%9CRcqG*g&#^BW+t8kQv2& zD6wm=pO;VCd8)sbSK^qLxmV>kuH?a*^1i4NJ&oS0v%$1vC-T0VhxWsouF={64DBx@ zdsDb4YfI+7=-Oe>9ox8th6PMpCQ=og_bBm9C;dP@)LyIZVnY##M8NQuO0!W%+aeAB z05SM=%ux>9K%0&^9zppmAE<3O5r>fA7t~MPXu1$Z_%H4w ziMCjR*JTdWU<^Q~<7Y+pyT@QN)N$U3oH(POii5v~`JoJf2Dvo%>0U^|{{S=)NXvk! z65S{8s{2wRqojjZc-N5GMh5=?8D`J4Kph>r=`{y-3Cs`+9SL(SawC%r;t)p^TTr`b z4w9$)TshK(Z0!#8o)(7_VaYRbB0t()eW4s6GvYVpl%^@QLnkuSud;s_fRnz~qH}8we8-&5!v)#Y5WRF40p$7AI)I z*l)cFjM4{qw97wL4kjrqKLB0cYAE3otW8I{uf6#iAN1&;?GEt7c27{S@q|$`*4=&J zJFy)mpv4fKlQ?I3p^PDn2x4$@yVV#3edsFGP~*b{i$097`#}Ey9}h$^XkwO*X4mMCcC+;@7DJwzI=a%zkU0Y zWzPIP^BUdU(~ld!l=JxGwoI9mFmrOe z(Z8RC!z;g(1^N}d?&7;3{{WZ{L!yHpV+>P&McX@MQAOQ)-SR^a)Sen&o{q4iV(i81 zKc1R(QTD7sI7^X}j=J>GLyk}WsjCLf=;|R1F@8}I6xuffCIeHiJrqO(_z(L`M^^lt z(o&Mchy&e>04h37?@bgy$FmeHcY;A-Sx%bytSF%*MkCq8gmcUG>+g(cgib~zI_Ir; zQFbh0Ara%?vE$i@MEgP@c}Za7L`2AFhMhbX6lI$uZ#9KYlb4m11R^&70BO+}S|iV# zuQeXCk=LRu?^xKe>R}V_Ym}Jo{e=f;#fC6L z@trq?{mvl_X8A}R^FOtTjzMAwr1pakA2tC(VZ|aL5D{fIejymJ#4wGmn4t&bf`=9& zd)??y`33?0S7(a|G&rq2PfL=<&btuH(cF37`R}T zaY-l~5Mk&kcg7q-M)etq@=-&wcA=@Q&0)p0$BGoURo;UU#TY~~h~!o@Cn<~cQ4EaN zYwZ63Y2t)RD$4Ax*MXe@3myT6ONke3g6&Z3#aUEqH@_7W{Wm5A-@awOQ_fy;-|6Iw z?s3r3vdITBTyFE`jUP+#O`Fd_@VM)Fspfa?*U!xZFN=~BooDFx(GvVTH}l@eXnn7K z^g{^_SMgGXDf>{UfY-;j5{O(OucQu<5(OK|K;;D8JrQP#e_$UnTUHwZhK3LBiS)~gq^9g0^j4k@2s z6d{Hov|`F{&QhhzSWXxjMsfs@-07N+5;z&~kcW!J!QFJM+}+zlt75qt6)g@UG-66lMJVyIey9$8zqThyy@a4 z$5&;I03w0&(X?s*0JLXT(Kgg32%^(H2PZBoE!8_LFksq(diPlCD(S!54kH)_cH&&T zR1dN|52C~-5MkD1ayXcvm}Vh0SkQ=~1Ixt#@DY<{u|dToH*`o+w>;O_`%M&!>*BEi zh-NwKk~m~V_?9=lVneeF{<*HuF&sw+;L{rXbZ$!@20qjF{?M2XWCr~2izu+3II#Z! z7@!l{U<}xh9iOhbINFX8v9t?284+F6)5Nh@ki>u98TLcNE$52Dh{DDPY~cc(XY7w^ z#E)t2CljOTUXlMr3*AiTL4-_IG3`k-H zs{PaETpi2o;NrqDf$uc<@RIv@fIJWwp)@eJkysemIGxVd5Ezg*+n&4`lvt4sp6kO4 zv|565Ip;jq2Wx}u^UqejhVqhgj%5^$CiIQ<+($$ z$|wX?sxJvMl@xHXU7{bjHh8Yp*9$VUq5d3Uk6%f%KI*t_Pru(}7ks2DFK}QL$(X?Kkb{hh@c_P{?K81o39&@*RI}NMbgN{z0FB<*V*c_CpS=b*SN! z`_+GI8N_^_o$7K}osKTyiV?8VFGB1db>N3)A*Ct?4%apPtTBKcxRTMigi5^~ek~nch`W=0DudoPWJPew?NZY#!VLEGe9D&&OrUdg7 zaC`&TGwQJZp9Ul|go#v2bXdKBV6%vXo*2P>YkwV|vyc9vccEsNBGt_f&xb%HG$rN5 zL-wIBAqmQCu|bIc0P^I$Ky&0|yEZ3ih-~7(K@UFY3OGb(yg)fq%q%=iQ3!$<&d(R< z;bGv#IHXN`;<`|UgW55n?umE>g%QMuy%5}LPsa6zV+EdCBRZ7`1;Wj$gi#vh;DKrs zA}miyx?on>x zT6~}baGw0;_Uakux%3`r0erY&ixeH>{s1c zzeVxpsl9aZM@!c8)q1$Tf5YClZm%WgujPL4H{i7AcfnHg;I8t%X!~EU6eU~u3wT0) z+4NH2a##%KbkC9mjPCuJ2wjWHN5Q4TJk}f$!~Xy2O3C7wVJ z50(9~po9=!HjIn13l3md-+_gxMvv<3qlBIq%{iA>z@yTNLQ3(bRT-3s_a6uH=-gEt|NH(DmMTR1M(&7|7 zm|^#JNd}jahqJ;M8A$OSYx_Ji{y>uT%fw`%?9t&gaC2#RJvS(XQA|QN$zpbP?`$0C z;%9*hC~-E2dWT7~UTO?osR*69I@*c?AE62yU?&Ouxes*)JVGWudZ=-M9qO;Vd0)Db zXrVkt`7Y~9^iz5vF-!195GFXH3`-gYSg=X_crMw1;qoiCc2lD5otVPp2~9*8#Q9!# z>k^AZ9j1iCW&1)I=37Z=##fTuZ{-8hgU)D|X7auUiV*%%x!WTv@l0Co@=%$IC|YVB z^6apI06FJc_|?koEmwNbZ5TnRPHn_M=jEtF=5bj}r_I^s071d50`!&i&l#>#2$r9E4xnv96M!zzj_NL+(UyDMdc&Fg#=VYBm7$!xUO+S-~JMiLnu5tF^&n)@uy z9=Ry+;RFWpxv%ZP6mJy{6ayyqQD6fBX#+x59vFlX`4d?LFeA zgy&nk%~wB_b^bTk^sIyrf+GD6x4lf zUDtA5oJ3>X)w`<0!ifGnsry}<1PTf2`|_s`9UBV-k^mdau@+Pvo|GENubLg42A`US z03>I3>Vy#KRSq2I*TdBaNZ-?2`9cwxM-B?->Vz3x5x^A};G%_%6nJmEFS5l$2nJyq z2I`=M=CGn6LQtUh=lk4@Vh;AcZ)Y_OM1#~jldgX4l_asC@9n%nw9T2EQ^DrpW4uof zbc2}>R?bxY|2D9#t25r;`zLQ2=PR z3Hjc>*6ma{c{2M0CH7508n3iH)KJ0xt(Eo!QTJLdC}BkjZ8Jv<#3XF1F{Xo3>gnrgt@+9M&pNJ!fn)`6aDpQI$WI{xu4xz%9giI~BJ0=;|t?#NUuTn&kXTd;v8!CkWtxfDa6lI{2| z@4rtq+c36CEa&IT%&bY83EY?Xt`xsy!MXEZYG`YB?z8^@x=Uwdb<@X0Lx4uNe#mR^ zhvn|Hu&|+cfZuez76t?Md!IGiVFDvv-A;OM*14lMTyDawKOpVjW^HB zo%2Eys{3&nricr$jvmmOIB<#Sl8XmwlD=r*m!16H^dTUqVl*lPmRH4X?A1XY)g}>w z7`<-&RX1s&uI<~Nj>{S-<|=q|5&}WrSLCAFgSZn4MQN~I{U8i%?+qPoQH}elkI*Bd27{vZL}Xk zyU_3DcSO%NQTL@2HwO6Ef?(1!87A6>jIkgwLc~+7lz4S|jFcVRjHx`)c&kCtVB&qF z-7;8MyI~0^riD~fSdgP9mHMn`97Vl-Qv|~aU9^~9oM%ht$wpo;LB}pX3LqLyTfR$n z`}kIVJl9LHb&%~t*C`g!xYChO9Qo=Y(~UGrU&4{s7#UsZ<$aCU$8 zw3ls&#fWyf7e=>tC3<`h-|$Z*uM4>%@>hLUYr~6hyKCJ`y7+l3zH0rKwcmnkyYpAz zse0U(JJfwurVNPl+G7p5SJi*~ZAniH>i-cn=)XCX{lJ$P{^3|vmID0dn zEhg$C?L-kI<7vU5!8`Xc}m~qHL`~f~e zVtqgXO^^D7L(nWwsSpmyBy>@ITNZzi=OzCDi(@>+X#2NbOaA~F#LV!#xt3q}#v!50 z{bTY;@X(ghc!{^#^MI0BDPW9_#MFYXOBqV2Y6h z!&~H;(SZ@Od@og{`6%{_H&q-0ET^LTa8;(Fgk%&0a=|Rh0`KIiF7jI}d8T=JEJ!PP zsDr$&{njKT0(uU&lKQv)lujng>M=1dQP9?$xnzlcH+)f-mEAcnJHOIlT~?y+_Ea>L zT-@)HB}vg{(zkhVL(5eT^LZm(*MA5CCccq^V~j)v-N|$M$;-38wqBnkM zES25xSG^0-WP{%e{WHH?{iog5`Y(?)h8dss&3by`7ZuU<Nj7K`(_t09I0O(J`X&O5C$;_h4Y+&}0LQ|eixLmH_TmBb22B3|^w`xw z**2ka^QPqwX9MyZL^I1rWe&~}?!iuZocuU1?m&v0JE8WYYvH27#4*Gg`tqv#u)s*f z%AX28*90%L%yZnaaqvvUbgc3>HH#l*XNwW1t$G#x*JWY`DB{JkmnmeR?cJYiW*kWz z>zQv5*{mMfg$V=hQ0^m-#Hyghi}HsT{{U=FP2jOuU9ijVG+9hEa^C26j18g#hoh0< zS+DOqECJ&&ZxZNbUTPnyeLEBJ#5iUj`>(2lwBce;?n4)X`yx1=2!XC^?GQf_77iRW zBd_g$%7U?hcbdfQJ(K?c<%ArZu%&m6+`|wE`?zs`>Fh=#G!YLc8P5r z221|{hrXak{KE`fVS}wAJx}9Rf&DcEF^KW8A;TjrqQLKl1_yJ$1s7w&?7$2hZMcB0 z)Nd{86Yr18BM=dv-7m8T38s(VCi2bD}?1#)aI&si(_dH`Ca@Y;d5Gg^-WvPf(Os{RMOR|nq1UZc_>=%!7&t2%(k6g?=(LqH1l6W4Gbqc z_g_~pgR*2+AnzUgUiZ^UBX@pE?*2{RnjJ5%6@C|Pi%WYQ)cHd1`F{re6Y=BwPc+wa=*h0{(qG4-7vi^dOs|#Mn&WozRyZuZ@1N~9{V(4y6`kGm z6D)vz?RsT2NP->ov(-6wr0cq^%Q@~?J)ajD$^0{llsN~Ss$0mcK@Jevgi^ddQ*9Z= zDp$jr!~|@Z32`d>SYJrNiayf^`=TNEIb+Iyr3@P&0@P&`8Tla~Wnt^8iW3$rEh1v8 zaPnAxYqEfG8WB?y{@2ugr`dr!6C_JIc>MTB+aix^Xt({&{Jh^y>l?M4AV`iQE;+cte>&{VmKwVM9T=De?OY8&Gk`>BVGB)`$2#bt`u;3WwT+DwCSQ)}y9?aDrS)&9 zV@Ll0$l^u|Piqes5J)_R%k3BNqKE2V)Oc9W_c8F;j`_gFfw0&UBZ6Ut;t=ga_hAIQ zg9pO;*Vi!&`$>v&J@{T7;NlV-vpF&kDkwjxzO{nT?PNqxwGiAxL`&sRCB@_V&(wQH z95H>s1VDG8goh?XF*4mgE3;u^_N+i+k7>)&&o^C*>AjW^4lEExM(OofQD9&O!o!9R zK%S`M6PZyGf5`5czcn9caPu|R{{Vc{cqBt0(@|G;`S~npUoB=mzwTYGEsp7w&S!@; z+A*R#Sa6q>cj*qA7pyg`@xjBJ_oR&pD2>n`*l^ZjTY& z!J!YE?$U<2t(c-NA82@RYU^&hKEy;};ud{xUump9%y1%c6TuYQMII0@+!;-Fm~p!< z99Z3-ZRHRHK~uO^bPM`-`r)z1W%`MT;YTPVYDClAS>`6%vc!WA8x9!zJ7Qr)2r$GB z(U{EC^PXmC;CH5u79{kd{@jRIXQGP&C}QBE1Vv5?9imhqk^vM@LpcN?ioY^Ud=xMm zljMyxQQ?~2UdlL`!upOJIIzSCX)mdPwqP=?-4-bCkOu@_=i_=RQttP%$efqud@f28 zCerVk%X9pV=&`%!?4g%4`o0L0mpLJ>d3tVGb3P}_pQ`#$h(QEU(%pSREx26dyF?8W zypHSClfJ0?{=F6QQMKLq-7Nbr44%1O^m1>~8}8(tI_1S*mGNHx0L9q7>hilE$AYT% zzN%8YyqE26UblAM9~mZ=i_0b8{{S4m6W^A+Q;%fo{{UCLYj@R2wM?Qc=H2flf=(Em zaP7r05BUwJtypd>XQGR0Bi^3?-2}W>XTsWuMIAj{bN$gBmf3``5;{9ua9H~+?X?ge z>YTW(vKW1s^AD!0ZX!V0iXZx^&(^%x(inD(A|l#5VZ*qX%Rkm>*P@M?&CPb6&@gc{ zihCr}n(aNm8xkFp5!p1Y46Emq`a!XZVboOkO6$Qz*x-*2N15N2?`f=l#RMXeMOnGg zo$KSESUrntY1 zXK|RAiWS)VF~p1=mhx|TYw;W4;s^vpPrAXy0U~`%%5q(l#74|yzxca5bFiNl7>3cN zW>VjKou;A1CL<|W;)xiTWEe!@kzKE|Vtx38FxDeFfFvl>Ecx%2e@Xfe_a+$-B{4pe zkfuwse@pgEC_u!7#^*O-a!~yX1OhO-HWPoSn4dhaa)YtQ*s%;y_Fm5~{{Y7vL`coH zsyHsw^(cE!XvFOOyXk$Gw80VlzSbvZ*bsv^hB)?!4OxxN2zR?w@G#m#{@WVL_b#OVZ{v`p%;32 zby#K)9M44rct`SO7ihy0aNO1`aAmz>fL@!LYAB$3PMPbMK)YT5iQb1Z>2*=zLP^=6 zl>E$z^H}|xYrnHuwv(jh&GJ+|k{IwF~Daaf(43|MwXo@Y5* zPE26`0F#Z~?uRg!B(WQew{zJ&y~4x(vKYX{4g_VN{DxcEm;V46;Kvz;JTnQ0{owj;xgq^$+3@j1 zI|ZNpL)v$e!~V1E3><)W<<023H}!ARaX8rj`kU!z{{X9o{{Zzb{vrBqc#!o9 zAFusBAR7>W?u8$%b_#8Y<+KE|W&Z$*_9(~xq&-Kv$L*b(Ar{6YJ$_ee#lr7*_t%;B zUsjI@#Sw&!sfCLuj<0vma+Te-icLRzqA_J%1@-jQzYZ!8(3kf&zxaJ_oedzG*M#yVWK2Xo$%p(*xYvmBlp_{6#1O-@X7OY`ee_+Au|y{j zaXhIobI7)fWI{;O%k{Zq!2yupdzWX!@5Bdm-7VK`?7%}2Y_8pGIN2cT2-F`!%L@Y% z2%&;0fL~~t>7PZ|dpLs!?#c8s$+YL>zMx|mpLP&x*|9Qq>EydVXxoZ$hy#{8O+DOq z7wE7|al#=H828Ay*Yc>(QR55{u%?Fp0BQ&TEb?obhX6&|HkwZPPI>WPON$2#h!_JR z)C&*3#1>@?e~cQ`(PCoZVd5R2BFdt6NDsYs?$6o#MlaljgB@Q^8r7H6@NnRSOY-2( zCBEi6t|I!MVZ+3RA{p7+KD_L%(+BpyateLefDY_o1?E>^?U0_!2o-kmB3Wf6g&Y7t zLBGB`6BGDYn1DwuO2NbgfWFowMd%b`v`2~{!^3f@9FI!7&WtLd?1nf7)*%Fch=jwD zsdvukv9_29ngO&SbE)3c)X_oMj7R-IAIJwAj#{qW*rN~@8A%){p)m$NThvs5=`aPfxBLWe=EZP#Y{c!HhnIV?S#96g9fc<$HP z9?KM3&5tu}=c144kq{z)7>m1CkL_W0TyWVCS*@=ng@=@NegSq|2tn@GE&P-a5i)9_ z?Ee6EBH6`>Qa^S#;(gctCECP4`msxS4|(;Ob^id1cEA4sk}c4Yu*9ML``_6eA<31?Zk7JF}|1LpuvV3iSd66;8rv&Wvw}^ zu6_oH#4h=6Lp|(#WQ+Ol_nL-dC#r7$0R1Aj!1PgF^IeJ^tVnpS%@1@n+?Q^J!9ST`l z7-6A=3J7E=!lxsuz=vzIjR-QWZ;_xGLxtQWzZng4zZKd)GV}w-e9?rHT>Sd^`XCq? zucgQT0L@{6uahGSzzM5UN?wXS?zPo+yiq)$Zua53|P$L}4y9(eu8mwL&7n zr+ZGGRnbHUk7PreQj_`BVfH+1Silg;!3CY#xlf~NSJ{gT3`06G-21h*E4TJ2@u3jF z;$u%N-1HJ-B?r>6nT(tl)H~8D_zbjNi?f_9kbfZz5I77wu!w1sw8rwWP9`2B2M=zb zkN#XnGTS1pxnOqvuG16(k{rKsU5TPNaf2}L50NXg#oUs_k7o?EeHJDzA&X9z`YISP zf4DH0o_qI6Vc|qDpeCc<{g-K+F>P~WGIiw+_- zh+!Ez^q$PqgN#m5`g{-#krToxBz~A5 zY6f=FsxHGa;f>8;V4OJE%5vV08#k4byD($c?}GlL*}}wyg#P0aE8f|W>vBiw_#L`2 z--Z(qnTf%0GH=T;+=qCqPw8xO40sr(A-a57_IH+@ce%y>oce?_*d$LT@zTDl6X{*2 z4leXDKh674tUk|;hYW9r5w2zL#T*FCedtcUQsu^Ic1WUxHW%tmoy`u(7!9!I_}=yX zo+F2Kos8#m2>m-9rG#&d@L%|5GmhcA%XX;!FBAg!W>e*z@zF=v z;}L)9nQMC86n&d!urqN{VM4+7gA*-5uRn??pby;=(>1fXtslF|eDo&3qJpNbOKgEGUN~ch)Qj;AaKF zqMPjOV*10seDxK@4-_2(B=OCm-LFiMY&z;>HGtCqV&7{E9HKww|*bS zM()q?dJC|E77;v%(QLp+c)8cxuQg5#-fOX97`r(C0BG=Y)ObHN_encD?nb#DQ{CF2 z*@$oV2Kj}v-l1-{N0w)riVWWU=X760z&O3T3}|P@?_5j`m;r4ySePWl`7BOp9w z=G0xEwqkZnXd;R*1JUZ|d(3sooVxmNX@j-)Xk&&UK|8+{7T?^@DkV6ZYZ3>o~EG!Vv2Uuqf*hPK}8 zv%v_F!xNw4G$Bt5@q{*hsAJ8VUTX>`71Ns9+L3fjSY!~kpo~mS2qBF4jm>U^G3`(B zP=f9^-^%`>{{Wi_G>RV8hqA%mL`)Dt66Z#$`gRD2fbkf?Gc0IGhi7nwhRoTeBEzr< zKHCsF2j4zQ92_X1W*oz=*YwyUh@FT}A*Th2^t>|({{WW{{@j^I^gIaNpa6%M6Q3my z(Qrg94R6A#AEe*|-VM0xcc}Vq2GcY()6IY3xG?_!j3xIhKd0cCv^_6H4`IME7;vN5 z`#izIgP>TSPwcTw;X~1Ouch`#!7$;%@Q$ms{XYs57k56KFU@0MLj*@=ix_mz+mbEu zo9n}l^#&P>h57}D*`qXsnb}x>PQ;9{gsczg{A^b4uw9Sncz7pjFb>JnHQ9SM5IZ6W zbfSx}K^UA6^b5BC08jR8P)^Jt^JVo}I-WwLgd%g2@ZF2jcSknvra zgbljy<#yOf1irk>-xgh{9isd6zdtaI%{MRI+`pebswpt(Z~SqW5qHG}%KlZ~U*i7& zQdGOPQcZqJ?!u+m_WldlRabsoe}aYeyOPrLS9H>go!`1+rg~h_>Fd)Z)I#q35xc%f zMIlPFX4Rag?e-4mEG?|>yr9*$-;~@$0C zeO*Ly7js|JZT;jg)|dNHLA47nvy)GS-!=WKf}`x?4AVI*0tY1oO*WWD7z0Pwe-sDY z8&Hs;?E2?!jtnFWg2e3DaF?T~p@tvAE8wx=2B)P)OG*AR+;^|DwKH1_`)Egp^lp|mUFjvn1ZEscogIjjs5 zh&K!Bjt<2glz4cOFsOzhh2eJ!ENJHm9*nz0SdfRCPtA7dq9w!37YnpRcH(HWZPUL5 zPMP>Q;nQ@rLJg~*P1maIy`Q`vrQfGw>>@0L^Xrv`f!H92WVFR=eoF@e5dmNsv{?8L z`0AjK?Bzad1GHk|OJ$qQM+uGwHL|;B(lGmG1aM+OHajtLH`RSp>A0Pbw8a6SGThvz~H-NUE5{ai|*H75vG#iMHXy|H+RhoyYW|fBjs~nD(o!0yw&x; z(!9013jKeFyEMsEc=El-e0qATyW*Nx@t=ZY<#)q!V|Te-)vk))_*2#i5F$q- zqf%S9X~Ie%%-QMc9hda%P1|7yj}1Khs-b`x?jB3+=ckIpgI)eBAG1RcZ!5W>g|UAN z2o0&Nh+_g6iowGW5(Hh_dabVuy%fzZYAA6(+EykIX$g@#z36sGVt0mZ`8%)d_DkuL zWz9u|2a!et=F1xoViI)+!FIp?W9k9`7;NDklLGuRpG zpgV6K&r;Qv>55m}ah^dwG_E6z%4Wf=4 z5q{_fQV%NU)dSvVYp{WZeZ$0l(TWK6p&{Ox=8hH^*_595EILegLv+{M^r4O-Iw)pG zl&-7o{{WTwBM4GhPy$zPjtmSaqRhb-bC6xP4C8%Avcm|JLM%cL{{ZUOe|MzvU6%mh zv-ezwmaW3R2Yak2VcDwWqu7Ec*?5Y^c*MB{1}k@C5_;*?Z3cK^)kohllGzukfI=lP z!89zwExf@s=%O*zokRZsEE6vELAtDb7-J;CCE8#+CKAD)_Pcb0NC&TzF4Kn5L}fE_ zd*-4iW=Fg?@8?NZHGpRezaci@y97USASJ(w>^+%-{{YgDX95?~MTYRhuqF?(jsOd3 zKB^obX37{F@r7aG7n+L#Er|>CU(_E(gS249h#~&~nFw%NY8WHz_@)M-^;j;>b6u|z zMZ9NzGT^b|J4AH8Ht3(=-QM+@)b8|N!tXVAVPBHad8uBP$cqjFbej7;>d38<8XZ=~yt*t*EZIY|kZveK zNV~pj7&cJVLA~zuUu+4J%E(fAHM$_0ELfVH*}OUCWu*JjK335@Keiiw6vB07DA%-h?d;C>Ti8{{XszTb=1Ohz!j&e8Y;# z+?~}D6H%R=mYj!{b*!c47923fAv$R~YE2~EM6#cHkm)PRxs7?So9Lp2-WfM$Y z*t1p`%YTep)EFnS_S1qHqAusC99w$qow^V0;DLtRB5MyH`;#)zk4@Uk;S4hbQ4m-^ zy>c@dWtCP5%;fnquzF0k{Hn91YQs%#giAHRFv_&@t;mJmF*H=l_yl3n?e8!J2w!V! zau_!>aKtqTK?}+Ycko|s8FzQ6VTVr@vLwTd?#cofbVnBIqQrC@ny7oQlD@n30(Nk) z$vB&E4Uim|BViF?lU02`4lIAG;$oOVg9t-~4^5IP?+(O5bK^yg2Y57tLnfUwuMK!8 z0WjyK(E!4AWsML3_}?YB2ivDL2rn@3p@#`9%oIRE8JhJ%7Hy-iHB=g|$YMpY6fmF5 zDJYCzeNpy|P2f+Bf-MneAp zOX)Zd9~PBZUXoZCV+ou6KFH#iVl(hxcsoJ^hIAl?DUkZjeWsfzq5#7wtSoJ=GG&H# zpbsJ$*K5Ip76{>yaBp`HmGxf9_WNPTZFwn(8K}EiaB?R8AAV0fVCKeG@S?5V^t+VN z{v~5_%wHvUy%l2b#cO_F$HL~FU0prb$#T2gx##Au*$G|xEkB)+=Xb?(zf=YA3yh~X z=XO&o^WuulSm#@Hzc-WLH82HyE_$war@Jpa^1Ixx_40x9w^%1&hdt1KIOT4EhA~{4 zS9M1W7?_S1zrf_NJ2OlHltroO!_|E!0wIqCP5xdL*FOzcVu+X_;Dk53)i7{O$f7aA z)S3|r7;CC9LR`@TVUmXs1@|G5WHBFdG4Cw4^9m@6#f}0dX0dT#9_lZsV8G%|vT+toc+4lXY`>oMq z_Hl~ffYA>{^>3x(ZA3&r^DvqyPGnMkMRs1<3?M;?8)8ty&&6QG%tS$tK57`;N}L{Y zY|YY(2!SAI47>oIU!s8xH*B<-;^SI*2JYr7sL6v#-0sxMm1n*0Ex<|a7&E5~>#yyo z(oq5|S(nQDhCs>J-q{+u``Bh>_#xUbfn(;sxWQ(f+oRgB!ab`Y)eK0DABjV2G~upD z95_S7K(7_`AFN?^cuPhDF3sApexuv5yKsUpx7m-|zyw3yjK#7E4->vY=@5OAOMN%9 z#f1zJV#0p@A=`>)y1|BXVAa&{Uv4d-F(9E0r=Pby3XHAimCzN7B4X z#0~oNU55{BhXSqX?A{CMI1xb{F&YDRxka%k_bB6MCfdrvc;j|(uwaK}*`+kj7;$A3 z9r4Z96d~MIc3?~%BbM)R$9^Upj@E{L`_6d|i~5rcVdE3MZOXoDwM63Ydd7wA^!+Ql(Kqh+CebzgE58+e7shwb zJdFPUi{)Whyz^d~-vzZ#E_!A+C%eB_@VY0zaG&*es=L1hV*j;h4Y`TdM3Np z**)+TuJ2|;+jZL^t>32=1VGE$udY``3=s*z6jOZv0CzP8E-VkU!eO&KDPcj|u^9gV z%iD%~x!m|Kr*^y;V~1>r3yBfn;IF3Q_IyY|gBl#9Tf%ct>=;DhBZ~WYX6{SvhrbkH zTO(Dm51JTwcI#sg*8UI}dVsd@AwQfyr59`L@c#guBc4_lY5K+v7%dhVZ}$gXr}~Bt z^e}@F&;mD%mN(V=MlCS52m7VT^HH2`(Gd{E9P*n?kZtO|k@Tpx#CVX0uOjaBjUw& zPS@FSKMZI@XD6YRI#10sfgj^ak$w(1A*ZHO;MLdNKFH=7$42p{LyCE5WitE!09E!< z_1{W7{{Vg@2#3b)69ZfLQDH-r*k+=_gqU7PVBw79+UKHdAy|cO-{)_$!apH=&E~(o z?9d6v1@ck-OS7?TNP4VatqecL6BykvyGPZ#S86*rI8n{PlvU+L4`J|azaA#^+cG2g#rRB^2tWRj^zk}$;yTxH3%B1@At9G) z!UA(GUaBDf05rLHFQs9}6hkp%^t&888$6V89hgAQ^+FefL`SYodKH0%hq4GQ6ZLBf z0?-L@pRz0qiW#gz0pg)2YEL)2qU^Cp1|D-fWzXT%XSuZX9XfM0s{W~CA6cled$um* zv2k{t=cgWH&~ci^iP0kZqtS2i{h{S{e~Y{GMZ&xAUcVGnvZ|Vw=C1EGeL5g#NqJv1 zNLQWakB7zF)%brGcI(%5^ZrNicXi&ct@ta`Pk#;Rw4MHy3a$0J_^Zn6!Ft)%UlqRh zm3MoWU($Nt>0x3K5N+A(XOiq)k{;9=APLRxsz2%2NO&rv`VVb_a76=dhIYtyFQ{O} z_~I5d5fQ>biEHdu4{!RHXB$6r5CQ(9wVdnXyFc{@Yk-ZY_J*4zKS%OVe^ZwHLFQfm z0QRH(Q6v8VE3fH)@k~NrVj4TXia+X%Y_K73`i1(azp1-aQA-aDHAGP`tw{%tM}j}p zow6s{!iJCek3v~T^}gGPNqAw@Z38Ls_AR=UE=bjf}=DZqXd5 zXgJQgSJ7boClUz=3I70eSdjd2kblM_IO8kY9Y7}L?DI<2w6i2(=~^|VHcKSetc^+5$lyFQ(EQay<))nHp;8IqtK=iuGyInlfwo5T&7nX%TOODR7JlqEl&d^vbAQC0X~ z?U5{BhU76C7-rAy&^3CjZpnk%f!c&^WtDS~23&XtlIl2?02TJSMT1e6 z4GWn&#az5-qW-GwaKHSBt0uw!0Q>r^PwMX9ArEGZ%58>5_L;M}AL@^)M>u;NRp5Lc zgEkzb{{Z|=^=gjG5dQ$GA>tb_^m<4K1%L4m)*>VS0F{NAoZAZ;ALKC86Ee&kTJrvCswXh1m5eDn6FqWWG1 zJzZc41%mrs>PQK7SWsc?!_7m6Ad>@23U-G`62m8Rd!vj z^f5QZpJrI0u;KvAXCt7d?QVb7U8)_emty2`pR)VAK!;||>t~KERq~|d*)`T{5+e6^ zKjV$-qP{=B<0+h_^JQNqzYpTt`m4Xvb-wS}U3LC>{{R>JSDs(TpQZY)G`+`-72UEa z?|)Bad{y1L7jj%V_#pFE*XV+E$!n9_^c7QiAJKn3eO2Fu7prOOA2AJr3q+; z;tKwr5l0hh7ueYqSP2uCD7huO|TvcCj>r#m@zf*ISzskMzb2Ewl!ojGD9RhxGSmhx{Qw z_T|+>^iIkPeYkoX=R`h{*f*y$AVbnq;pa@_=U645_g9d~(RBzH~Bm-i|hOa$$ zNWTsff@~j82!oC@ZPkWo%xwPvjOI?dX^_dCFdOfpAZ`?JC}~MKYurJ06Bn*+KV;p_ zo4Y7QvTocSo(c%?&02c!X>`keZiXBtBNP>Enw>di#*ZJ~{{ZRYf7(FF{{S4P$;O75 z{hJ#fYwlp+;%zW54x8Lg^-+B%vz8~aVYrlmoA8S&lB4=RVt)5!X*{BiN1jEF{HUV( zCuRQt_?T(65%ufpq54l`fBhUl+uwKj4c`d;BeM_iAWph;{H|dSrFL;Gg7l_a^5%!q z`#Vbyc$QRh3w&yz`d$P70O*hXr24VTPI5!(ct)5oI~RBa#K*Ch4O$TWj`k~oiY3#FU@V~aeVIhAA;NaDT`!jeV1S7jC2EJAii#4~sZAHmG z%W3eKR21MiMS*Ox&0@gM5azbYigZvwHeuQQ%@_#I{{U(xg@_eRn#KPBnOv3@Aq2zF zsNNc^Zs{a%QLrW=zM>u&joh_etP>HH9$qmxlDoHF7k(?!@2d2>_5LrF{;IOq_?6j3UC!ynd3*l=7k8;wZTx(H7k{L0 zGjdw+=X{mfqThGn{0y!6DS2J^O-T5?-b%l*xHH5P7L}A3h`r7pu%dIjY;6fTzaBo4%8YjLNXuXWpQX1Q%`9 z7plhX7-8GS?~1_3!-^3xPc;{8f*ehlNT0tu>Z9!}!Q^$NmB^&>w~O!&S2#cc^he4WC3y9XY7uf);YN%OCWq<;!;z(LHrrF&UtCqhtOn z7i0-$p#;QxwD+pR+G&a+bx}kzJdN*997U8;s)UcZOOnJpLGxJ7X;q0aIS{*Xk}nV&r8Wi z5bo=im0Ne!c98JGcZG&n5KSAJgpIgP)dR1t_M?Z{;vm)6Zp8bTkwjv0NtXw|N+_dl zd+RPA9Tp@{yVkdCkG0KIUYFp!FVT3R*4c15T>9M6%aSv^ucq{F@7+I@`~3d^7o{#= z!=sYF6gTC5$lY$jYrQzHo4%_2mkjUSH17R>gZvHt_i~s{&G`p~_@>lWluX?+5 zN6H#_uBo|Q7Ye9d#})l7NbG_1TTc^oSWuRt!xH@o1z zg$Q=_{{SB=qBzh+_=er)d__0zOd=XJWuEr-st^Y-#5HNvo1l@O4AgjFfwL>0m!9yU z8zz*Ub2)J6?wS$<*Nwf@sM;I82A2UDlreBMT*J2pw;>AbikR; zqvxw-;EV*4UDfuCx*bMU07(rPG4@8da@7#)&-%BCICH4@y#{`M$}oarlW1#M!P#Tjg+t8esJ zakyxKi{9@@K3cNfZ@OwG5Xf}v`sUlFA6*WWC$S_{nxo$Fg0QWy3JUB_!YS zqG=tRmuHB>iLyx_DU> zOtWtXP(=KJ^7dcUJ**rv1JS@;rYFQaeN;rS41K_*Es-<3zJJDdP3rFaQ(0cuc1v9? z(aQZ5-|1cIuAHxu*T(rPyVYIa590p-f3M>G^io%H{x8(0Td8-doy|X@mGZF5$WdM2 z1>?z5>ZH1(d)8NewaHoC@#?r!s(UH(z5f6_6!Yhu^;hHXa!^ho#+>)B>Ehjv9HbD6 zVU`4PoUEu~+M(#M;%~@HEz4^Rw(cX!=htcv@i9ytYmsl4JXA(1fDV1b6K7-4BcP)t#lQ zFMk>HQRHsC)G+}&;-Mh;(CfOKwBVmyxX}2t>zn74F#^PKp?(a17tpz`grO6dsddhP zw@M14XDK_)^3~rrmXjrnk=oXF+%#?!bsJJ39D;s4bf27V+6I#u{`j%vj|bpS8EzjM zD9OSA&L}~4$Qm7)iC6L-D-4WI{{VOvlZFGj(%m^7%mFM=avC^GPh_wgves^};ROCB zTIAkS@_DU@B9YQYoB00#rlGg&qXYsiSo<8sIMhEafhLtp&P^uX+nbvq4$1NFZ#l|Ppm_nmHglUW zGh?eSu`(J{Grn_k2PN=nVA*nx3jZ z$cwL{iYJp%X2^*>QSQZlY2FzGLy0305l@BKN4%nFcU{#(6Jknte+nbCA9eVs;(F`V zVlx)ryGV-^#im>}SUr$Mvn<2!pUT3(5Qsq%%9Wz~u|o>`;w)HZ1Y1NO4;#sL zfBiUIpao6c>aif&?igie?f%>_4S*i~efh#a7Nt~W;#*@6?j7E1`hy+uV}y9`Sk59o za=rWc1W2D&`B8r-Unwm*->Pf2%I2=}wnr<<_$}9V$?osN_?@@$>y`7()R0=;-yi1P zc;5w8cK5+wCF`BCyS?AV--qxrzC2g&+ULzR-SAg;%lH)cO`N49LogS|qM5oT^7p?= zm9oeHu)sL5ySC8t5AgM0NnzQc0#XuKXkzS9)(#|FJ5YwFiVqkLZ{0xvAUx$UsM712 z5X1ifO#|og(yzIFx0CPoGvfSrRva@6xTIc>zHBvo!z0k?x*r^yo`KX*&Uw~`Z6MQa z@6Jn{#O2;;5&r;d?M#jnbqvYZoowd%%%i++-bYDsl;tGERECvUT-zx%9Y+K^FE?k) zjP9!uj53kTGKlPoqZHXdCZPgMu>SxIk(cDoN!;;h;<6_%@hr_ED-%u6D+~^m)TmsB zoTaAb<&b05lg>>xlhB{{V>KH9OvV87SiDJ>Q~m>KKD- zekjJkZ{hDQUNk`e0Jo11d2rJu0CpLVOWJT-anJgj^gK zG9BSMzg_+c7ON6608&#tE{hDnL1QXO^dXvB4EKqLTV@!hTPNn*^5$92s1L~1#Dju= z)$2{#6%351JiU2?DP|rbDkxrghn+@s*`bp)2pUc%Y0p!-PoDYJNB;m*=;A508<$9d z)IQuWFlw0=W|V~_^!KUTg@J@kz|L})PnLAxhiKOeR^ZA{nn$h~w}s zqJV~o)R%8H9AXxn)Mdk!w9$!J{V1^>hD#D54q7Zy81GoHjHRmVki!x5LI^|v#h1Gx zWOo3fV+my&Lyfc;xqbftwb^lFjt~RuHHRC+-jtNc4-;2+i>%!Kz9{Lts}dvk3DJE^ zw0)c?q6Mz{uc&sf?lB^a#Wy|+7AHF1^iA%&m+|_N$ris97pEUIZ=%zZ@oea~tGno) zdMn(oJNXMeZNG|M^?839waV@P0E@fpME85qyL;3B04I(7e;1m+UsQbm0E_uh`h}&p zm&%G~&nvu>tfjp@?oTS%SVO-L5z+cDq`2(xx&HtkKvo^xmKGEd35Tbu!Z>h^osG*2 z1R0F(^+O4_Zt$D$eor^7P=-66d^4vv8P-KX5ff?i%O-h#-ejnw50t?Hg(s~(UFe=! zfn28U4IJ|_V>!4{NS7qd<4d zxCzMW8Qz){Yp7{x?JiTy`n+=^nI(w;5GN-9?&+eBfsxW#YgYdNZi7OMEOjJHJpIRu zZd*lw$PM$#z3zFi+!`3RNNG8ynN{jHPr*fp-FUQ_&)0cSKo)Qftz$c%e~yy}+Cr)l2jq7OaD|_U z6v{-ph2KK-AP`yhxtS5b%luG<>)_IhGEW1fj`Q7w#3S7~6Xm8)rc?`L5bVa~Ak8NE zSd<#@KJuavxDQ6=`ZHdIM-J3E&O?_C``^Jtb_d4w2@Ibl6cE%%p$uG?+}Shcqj;tf zV>4BW9zh74o6SU{A|{e0<2rFsVTg+CxGf&g-Qb}DC>ZX)MT*dizuJer6KW#ryH*w; zjo>XYto6T@^!SK(*GcfnVGu%%MqYZTh$h-rJ+e{!3%)3;W#F%^$$3dzTPa_xyuH!(x-0NomEHAC zb@u3+--ciKk6 zcjT`u)F*Y`UJ1)_yZs~Smh|m?6!|7w1)rte7iWY1Y&=Jt_-MYIc6&TLFP(*jJd0aKMYg5J$3Hk%Kf8hPX=u3O%VXUIN6WCG%4@;qm%Fzp^1 z@teu&XEVDcvScYL@?%2_YjVVd?k2DA$d?bLCWeHxSpmn`u-9~$9b{;I4o=k*)t!pk z4mN1@a5FQ@&Q#Hf{{Sb*1{KI~@{@x#8GO1-yKKI1?Uu1nl7vHOilzv|o8?_NtN_r@ zB@7+Rt0~QzqjPYVL_=_6o<^DZ(Tjjp4mei~z9v$)W)CyUBf+qYp4w*@y{_Y7LQ zO{5>X(rx?aBmU-`P`|(XT4lpY`kK3lPS63EHA_qKIhja-_k_qt5f$<9KQ&Sk30t2qe+a+gjbyi{?RX8KE!rv48qO<+VZ3AYk?hMQ&2 zMTxQ^{L8l*POy#I=b2E)34&)iJIZIT^9`+(`{9d@h;%x?N|w_TDJjkO`x1Q6_~`@G+KSVTn>Mob~*<0b-g zmb}o~`!@N{n(YO)xv%OD-wZ(DyUe1+&EG^r&X028;-lS5x$akz%}Vd5H7mI(UHdD) zOA70Ik@WPre;IhIw?gt)cg0=iy6CrayWp-+*yobB(*S*jE#>vqY-{?skxwxyNj(XH2KC+@?u{;ZeNhy18t zKiF6zO@9lr!zxWd3yB*G3usF&EqvE{5gI&#@O)nXs#2K^Y#m9vA zZrKW6{*!7D^YNHbk|-DnxS^9ZS;UVMxnji5Hk_7X2Cn&;S1oAs+Sw5ooXuL5(_KV4 z)yjf7wvx;NGJo7&o#%78(H+-dMI;>V-zliOuM|_0=jWKDnoYr+1~<84;=8OF#^pjC z4a)`t96(L4n#9DF$P0c_Y~n8}x$(6XZoNd_0)gvP3@W(b7g@8R+;{g5Wh+`?D)0KKp}6%oX&)| zEyBH75DU}}7kw5W3`1|fTYmHtKes>_gPBfKJVE4j^-+ROpXz>7V#CNgJ2R+(nTQYr zQdBePoVZEC#3CmGQl$7z$52~vlLHWTo`g}wYcrOz-%S`!<`=gJ15w#rn zS8$t+XSj;7f+9@7U^u>Wl&h}&O(MNBV3p{cWtML=S_8&?WZ*i8*DY9cc7o_ zgIa5ZKGU(ULiO+rOr=?Z7ADkFb`B1*%ui9j#4y?eyEZfpN{w@!nQZLOQDyFqu?tLF zwadkTP@SlwaEzKDk5Bvoavgx zX5z6X&GNe}EY7h`(C*YI1W#Arb+E7lZANFOMTkM+cSYH-wxa+RU7ih?80GG<<_kF9 zHS_5Hh7R;l@6vh+YsE&`crkDc*G2VS(+&n4QE~ELQtbm59w>p4B}Mq~{dBsgJUXL# zFQ18(dH(<&J_?s%UHmJ{Mn^6K%Io}_-NO7;-SSs{tEK7azjuDglbPfL#@#a-XR2Y1Usdf<>cUoqArfErMp5|3DXPs#8MtAU*YiI!S z9uspZSJP8MV)fi67)3WA2+ zL>pv`%Ivs6kGNt1rUv=)b~{36>)bhMtlYc?|jQP{7;Fj)E9jt;^C{GXl;TnYaSbjt4n$s&0)l zv!4-931p-Eni=X}T*vNO&D1~_f7?^4okbAn>E@uqFt{|Q zDHfnQWJoePD7&vwDo=!mH}#tDLQGGbwuM~jQ@|a;>Pd4k$Vj*iIS)Sxs3Pwi>n>zu zJmxEj84-C+yu7(? zP>~amT=W3$;CBf;*fJt-qi+N}sjmj!u<{wuy?+|%d9yC@shwo{$;`U!*If3Ygf&ik zya1O)3?0))oxFpdWJ@LrA+rv3&vRE;Q z+i}fA8-YTN&BQfddeGF-B)6Ok|Ivo-TJ8E+Sz(I*XLhatQ;W>eotCXSUFyCx)%DJwGE*KtNZgl) zlHjh-@qerGS8TFVKlvCNeE9zW4%gZyUX|j^|>EiFGYG^x)Q$?OL||* zHzj&s$~xZt-4xM%7qV?yo3$p+oE7!E&0m7-hyG+Ob9>>%{+}G7W!dA_@6};OC9`*Q zP)5LNu;crI&qJ-|%4UoyETws7078>$pZ@??Y0Jk+vWbk|ej}4>q`@aCEuaL+in6B` z%Z^R0N!r?TpTO<`+s87ZW|K=Pme(rp(weMHKJz)RH=Qiz zpxcGpQIqFf{kNj<%%~bCBPEF_R^NG)F|Y_Rh23^Z!^N)T`@-!{v~wa%<-EGRGXDT2 zjT7NS#$tPpRpKZ^&@Z;2|EuvP3}1!$`3X3y?(% zPO{z@sA83AD!ZA`L_hwcrscH@v1XRy34cSTdYSF-dbyKOOc8(WMkjJNxI5b}vfQFM zcXIU&5#r5Ba(IRCGNZm;x*#Eo0x-=(zvV&FA??em5t2^Vge=U>;mMH>B{yo)rXlCi zw48V>U8k0v?f(G&!!cEfhd18A=30&OSILX4U7@|E-3bqn$WCUWN(kpUNVAD&DIG{9 z^`bCE5ZVNZH1#5r;ZsuDBitGgKM)A3WH|~njWXLV;8I#ihoSK@m{7$OO;_mVk8F6X z7(+P{+#R{Ul{J&68cX-WydO}EFvH#kw3Q6ENOKM=n!|!4-_TIz+$83OfM=Z+$!Q9_ zvYVW>(_PDJW)S^+4C})@lx#sckON4!4m|Q^Pz|5S&9@X{n3dlYVG+eJR?piqPVn8$ z7-qJa_ab(>`>2b=&W$B^>Y^dog)k>VqK1(uPym&Og+3l?EH31NW~vZ_!PGE98gKD* zL}9^3E3@LnArkjOAZAYHU-ueu@YjD_n+&us6#%{-I__P+v_%)(h|mdNCH0Qe7C&o^ z%ZN#rTgyb{&zC>lx+U)ZQN7Ll8@YcUD=WGCt90|d_jBLi{$A+ib}fSar@4DA-@~t) z)mQobuWR-~w|s{lJRVZL%X+-lRrKm_it+vO8PN;7_PQ&*8`U-Wt@kASW&B;-{{Vuo zt<9Gydf$@137y-=o9}NkzKC7=uE#7v&&T2Im(#nzHcJX704~ir`K&2L$JIdZDN#ie zbkMZJF*#Eyj;m-9CU&cI(vy`&?2K8FS>?^QjslFMKlg8z`b#h$!8rxy#C4pspAH#L zEv=oeEZnr7ny_kW!C{{4&hYy+mPO|N$Nj(Mv}O+pXe#q;-mc>;vz}faC1OWClAwe` z2X{3Xcn`JvEJ3pzlqYLDyQ;&ATPw5UYzA1-n2(P6YTK>d#68%-r0z$5DsEWcPTPo> zW;~vLrSz_^f%N#Wap5EJKjd;DgogR)%%~h4OoQ;NB&pB(n)83BiC;^0$8k2q1eg{-=*qO+d_n_c+PO?$L0he}m zUb*kc$wS`mij3Ga&kW?+Pk`+W25~uelaBP}!Sa<0=w^T!5C&7d@}#s;69#Xc4!Y`c zeO44ifl(~LVL8i)+~ZM5VgMH{$AfP*@YO+xHugb0NF1`zHxoC_aF%_R1>&;|dNA{v)EYNmu z4AfxlEwSDigh*x?{487=MGDD8#vlrXn7sm=Tfjg(o5curNN!685YA-n;-U@+8}9s; zED;Ts4&{uptKYJZY9riOJ)S1-=dT49Wrg3RR3m0rd{D$<%Lqji5@@k;NRT0~!F_AA zh;X8%H!j_?7A$5On2Y&Wu9+F+MEubTE*vLe8}Z$FE8w%bDtPk!d8_jNEZ?g6zcg~- z7Ug^StJ9_Y>aRD;cKv-H{{SSFFOur_dVd?$-s{|+`uTqpznkz^%JNTbRd?mD@q6#v z`MbRpvYq_?m+4BmY0Jx_D*JD~o84wLx?hr|-RiqJ?+eoZ0Bh-3ozOScU=S;JxnU5& zmJp%5)G-j9^5&rhndz^^jafw$Zbfx&bDx*GGKXl=Z<(lR@;Mij!gx>k$Vu{Q?*+Vf zIZ;j$Dm;YgdDkTaH{|pT(~&2_=!7H&+VG^SAr))l9c@UlGL}~TXt7+E@mMkc0Lx=p zqlqi`SkcY$UvZ3-7^gqgRvsdKq)UyOTZOdHvwCmyMi(~Q(1o?T;-Qvm03AX=EvTlf za@P5lG&_z`oAf-N$dCBZtD$aB3)5t3QjlQpApY0brWx!Tww7Oryvrqj;3 zOUwhbXFm-1a2Y7Xni!_WQqZ?6l+g!gO4pcr8p*S+YCInEv+wBM0$LZ*Lk`K#Ztu8A z&Xc62D$!%%M1R|(0_~r^szMgoYMT29p1Si6>K^t-D(-x;e24)-0Ri~&t97LF=&zVI}u{8j&ZTghXz&CafS*If@HO_G; zrwp8AW@mHW1ysPDes}RgA~dDniV*}(NxRZOk#-g#E)j$_&{4BWp+-n;H>jfTQnzza z!L%M3=7B8KIiPaQZ5TtsT>?oDP*xA(2L*^e*bl6c!ipoeCKUZ&xY&TqQtsLq!58Yb zp`p!U{!&l~OHGdjwX+ReEKFC5asxH>{@Od(aG93^cU2jD^Um|7eGx3nuDR*$;hQLq zg73{dx+~>(S5J3*(W1K)oo76o@7sqJMN91(rE1iw5o*`oMU50iiHKd)CbrflM(x_` zr_|m`keV%u+BIVD69M_#jUq>umjkDC4oGGrB z^}JJ=hQ{0q19^*T^!RHW#4WphVX3i8W|_U_R)OKc*L7e8ZcX++SnepRimAw9#7gZr zQK9mo@Im~!S{HVnJ z%*ki_CC^U6g3P4iQZT*8us?d$pWZF&&BHiQGs9YO->u+>FnXFMwZ|labIL3P5ZKzQ zj_aA;s`7v2)8Yc+}(#4M~Ezy z@Nfd#;#e=`jPh}8**u+o9Y&pX`;m$l6TxxzfGl^r@K`f}--u7=KAkPC8JTaaIGDsV zG+o?Ok0k{#xa%2Imy^wfF4)(*D^oQsHy7pw|ottcqK;}%~ z2T2JzgYwr^)%nXW6BYdx(^#T%rIFgN(v>W zcdc7w+h+dv*3rFX6wQwekt=8j(MP z8P&0|Vw3UXy@YHSzbxA4tFggbZXA}B`1U+O&})Z$+MFgGH>`jrfPs{ zjl6tqr6n?p$ZE{WcDfcyp(s8Q{}jrV<65y563f&o2MvDlV3e}4Yn zGKjXf_xju7N$IsjR^g!wHFJXUqi!2ZeZLZFJ(124NhV0qEjmKVez z_;l$oR0kI6(E0Hoxtl4RF5O6NDxidJs$9n#+!QY{0;C^U?EPQ#%=4`-l*#gcb=&!B zBJufwDAocqxJor9=^or;=#tr}d=3$H6=)fua6 z8yK=6*l;=Q8CAjq)lDe(_l9J4sHSpP17Sm&*O-lq_7&8K>78EjQDkF&0l9 z<{O!i0aHigS;<6IpXP(miwCY(p)#BlN@xU~L2m<#?DV~6h@9QPh3CI7S)HdFrQ7N0 z3-zPa&+}YrzhBn2F<%AG+RC^om}?r!F)y6?)L9v z`uE4DjHqzIUgM6rK*)s&d@v+^u{LEJ?q92n4?@ME==Zl4@>7vQbAYW$IFp}hF7aTP`!j0RAhLZy3h_% znCtVZ_lbcz`{ghd1H+tLYq^bkQ6glOyM@AHN<}GLcKT6iV}Xv3)JjKE*gwxiW&=V{ zFb4cMfuPU-K4R|0^#9XXMf%|XOwnO{MeaOB2$sgapI=D8hGQeJOCaHWasPlX(3kl? zUHL0ysKnI@Pwns~g()n5Hk(B{+4u-=M8YaUkje6baH|8TktssM`jg<}E zc+mDqI?*(k6kO@c zRrItuWE7!QtXy!z3Z$tD|54<2{6G%N&}r}T%T)694qi41lA{P@TGk>u0-zu;OB9{# z#UPRJF{~;+YX1T<`)x1JZAB=LXlm?zqfYG0udjw}`$Z;TBBVq)7fys1V5PrW-JIF? z-uiFpeh}vnkqaLNY5&HVJbweu-1J;Ky&zGNgUtA6`^R6^vyR6@LBav=lGjLKz6{+l zydqH=Tut1ZF@)A8oi?Oj2UQzcODH^-iXt}|jFj@KQZLhQ#gF4rHNsMU0#+^w{8Zpa| zg}DX;%QO9eBhyc!v$Aaj`^-ffz`q}XpK_MJ<5ck>Q;r8qS7;kFtW#L4`#U%gj|M{G z`*?>^9580lx^um*1blq$A2Rm~;!-4b$Ghax(XCK7j{}a6-xp_^QQYPyC}SI3!To_NfXb$zd~fFMTfGNv}&6^!PK~_I}=&nG=!+T?AWGrPs|%6TMH}KOgx;EM?y6b3u+) zh>EsgZAFA!>eqKOlP`VMe!So+8d0Y+)}&UYefkpHNz>DlbV>*h`F+VMR7N_&)|)H$ z<=~|Edb5*)b9IKEof&~jCs*e|52`T#WW(u)eH!%yKT5eE6&HmO2Dp{AhqEzQ1U|lf=O)N zi|u1JhCcHAw<&L~D8De}%F8iyl`s3PM3_6}UjW*$SvzLqW|m?cXf36DGDGTWB^N1JxIzHvJ-Zl(1j&jmZ@t=keRImgSZ+=zCzzhr^@m{}DXOY-#m`%H0~zVv#5{KM1yRauPc$|38AUBEZuP57_IN zX0o&>&ri$w-5xZ0F4OvD98Q4*Ik^(;i_DkY?du z$9-KiQs3$eo~_87n9}rF<4oUzvcq`wB~=}t&aUK2-i*ugaT5EN7cLcL(%VzZGLLN? zW-iWuH#g3X=_OC8_h9?{ku0y_ScUX!ty&+J&vcgip1G?d?@rMtHP$3yokN0&Ap{A# z&0HBhj8>!}jt3#b_@#6BC?3`*trJ(}BK?&>h1!KgVmaL)jEM4&N(IyVdk=5EF+``Q z9b)_RS!*}d9}}x)(ZjMfO$y=?(2*}E@M)q_8!MYAA1o(Zv8UBdEu4DOIz(_$Dpr4- zGmbY^%_nD&cRCH*zCgv(0gyQ}~m8@IAHo-d;Q>wbUS! zq)z;l{6B!X`FSmHP|Y&koP&0_asBp3x4)-PcoJY+Fft|N2nrG`M@oKbmCCHtF%q#E ze(yopQ88B8%+Z6l)gLhrboh2I@~Y zWLxiq%7zL`1yQF-YX@d`ZqMm6j--INX{+x}K$*!+t8vMWST<`J-fo)YJjA@#vr@04 zQ^KVBc%!b^v1oI956S;U3^W?D*pWfu`b<9HUhq2xoJ0y4 z8}>zctJ=U@@m?gx1?|L|1j5&zO8p2?PB|l4J)()G6@=J_(hG2A)cc!qQL@Z}|I)y* znZAQcCvr-yY-}BJMjlxPYW%|fRdRl3?r#bZrz`a^64Ln`nWc4Q(9$O^<~YW+*~**h zGK!Ye=H;)Z9wRC{Ki4b+^zsXNpMTajACuqdM}K9j7LwV{MQbw6RkGo~LbD;wc09=m(Cd@p-B+z4kDsVDBmqr%yDxLIF(|k<3Zq*6c(&X6DDN z5#M6|46<(R(^0GJ(=`Q`Q~02{880-Q4&;kaf}FMw^6!MYgT=0w>uv5)ir&~mvsPD- zQd2inPM=ui9LaZSz&}n1UBNq#PBk)pe=lRQ16#TrxAT@CLnn~ic%4yPC>!7; z+t%s&zWWn0mUQB!5BJKZYcKu*9JTxfPJx36qI2(P4+THjE5L?27o0q|6Ig7R!4$U% z;Pf+30*)Y$Pur-BPvFAeYp!`*T9d@byoY~zB0tW1zCX*y=ZCLaLdo)$UQm?f<=~)t zu|G+U92xANv4+^zA$p$u0xcm(I9~91@Nt;xnVnUH(Igx6_+ks^-w2wO7yrxEI83AI z;)aTPYAEchC4xM49OG)+tzo&hbceF#e`Fpk8!hywEH8)OTnQ9wu2w_QL!+5fL5l+s2+h#|Px*A@l>cX{Z&2Nh*DPHcBu&90JCMJFy zOJ8c_i&o=V8NE;%Dksy*j!H$$C zOzQLlL3LQ(5+o0CalD@g(umW;l8<(u8QmhjbSiM?n6l#f4p3#gJLoxnHW0J}Rb z9+QF4KiK_t{N!?C+#MYd5c8#jECQ5CP~hcWc@ye`Q!KKLe>pp^dBhXDy?t7`DS$KS zr#QF?^1D@}>+He~65J@zqG3_(%rNG6IIRq3H|IgCJ}pzxFF(tknDiD?*Uyu*m%JF3 zXnsarABg*7TO7w{_sB>(`QWP2{4Mw+GvS{iS)QPvae|aN4D{pQgSz$`>rbv=l_J2V zbkJ5i6h&S5Nxl8{Z?EV>!~9CCsf?u|3ZWnGpNyYrHmoaSn=F`eZ-dhetb3Q@o+jtE zKNBpEmOMi82Bx^|5}r6E2u(5#buvlq`kDX)a5oJTwBVFBMvCFnJkDhj!f2y3kdE=^>PE~wMI=e%?TV#q_~?@ zo5!sOqWE9R8@cyC7RHE^VpIBE)Eg@Zjk9x=q>EH-@SDYHu%>Y)NiXQv|H?v!zKqZ^ zH$IfHujh1`5%(eb75A%`#wtt7w}WxY{04wU?MV&d%Drp`zpv#&x-K&QNAOgR(wD4l z6mRe(@&O1h3z=plJi^tG#d@H;&89I|nge*noNomRXByvuz4OkGh2`C+%k-${QyV$y z*ie$~Zm3{~i~uTV`si4_^VUsGUNN>4J&Vn3O`BevycXE4Jqd}s7(8%BVIOUKqRjW& zj_*JNJ!4vL_l+t%OS`2_F=TL2dV4FZ}>MQr2v&Jd>((xWBEye~V}A8lhJ z;OCtti|(H2gRb=`Zgo0Cc`@WeYPRi*a=#Lsr9K zaw-CoJt1ukLb(v(F;zB>2(e-AD{FkHWBnkR(hIR%o-96&dCZgQVh;T!61F%dEwUJ! z$Qq0~@pG;1fI=!UOF?JjM8T2IqS)C0ctM@!4_?D_kfg-~!G01yxzLNxtqO`>^{ zHQ8NN1BeW%#M*nLy!SrsOfX~3jXgRNftj5?N62pN-|c`B_(~-DOtTAriastwU;i{Y>H}umIzkb9zx=p1lnp=6-)# zjTg+ub7K0L+&?0Dwx)h(=EM%ndPU??tL8;Quo5QDMpF|60hhxqAQs0OebxPnhiY%0h#+ zo-I0xA9miWX~m?LhUw^E^4NxTHO4DU%Jy## zXxGyvk3rV1ILagnksZnF)jJLn1J~uw;}2{Pk^ixEgde$=IFH zI^VxmlubW>Xy)}7)4JBtii7sF^Kt)$6r_1Q)jSRRM6~gF=T3GKlZQ72-^qBZyQFrzSHwxLl1hALeyN^C z5+_?>9gFx7CnlR*0zuQ;MGp6CXo3HX*bE3`iu;6hK>Y<~=+pEfy3?+7qmz(y zG?G7eC@`pT#UCg1eG@+IW^;UYsezy3N;|r)g>IdyK_eS@FclJAahP$ht2-$_DCK9s zXR%$0W^5M5as+)fUBd~}uaH8QAHzeOFrYQsA`gnU)F5SAlcnh_C=xlzNcg zacNi?#vgjWfNSS|%lEP%R0yK@-ffo)sMK2D4hM~kB6vMn+c~1#d=HCWspCSpW@b{} z^Yyfl7j)={<$WiwurCMqa58R>u*!dVEtlqgg&47UG=cQZo_lE{yBU-wqWQoRdfs(p znc2x|Kv7*$SHB2N=^fw!{Z2Ua7nCz?QJ#l-hf%bbivqrs<_ z6;2kK&sSCxA^0ijx-}KZN-T=eRR=?Zj$ zMsUzIV)$&t&6&Oc=nwMilGrHNd_+C7ev0(*Cyhxu_(t)e;^`%2S{2R_yz~PuzfLMtIjPS^A%r=2(ifJ>$o{}YFI-t zCl9+G22Gsx38ytC^(!`T+|~q9;lj$aiLYl*?%$Z!*OtYD3q7+uD}R=HA^Z zLnbT}ZwKF{joh_yp!&&Y@P>BdAKX^LuTKKkYI4T8X_w0V(AZFVUj=viAOz5${3UR{fil_4 zKRSPRH8getZ+{IruW5!Do}$d`Mx6O29TY#_J;d^$&>Kysim$c@vKV+Y1FNe{Ps{eciECHUg zg;ely-k&#dDS1}oB;BHMLG>Yr7B4p?`qOKg33w8I&l#+B-%IZ5G-CSU^N`hmh_Luq z%-_+45!kv0Z>zzQ6RS$-sCCY)-C=U~1IMr78tEoi9%{a&^7j{KuW01o>+v5X%IUvP zAZ^NAib?w2kjNR}x17@7$7zen{`o5kbat}oUnQd|9Syachs6+4KR*WFs;Pu58ZS>< zUDm0^-C%@@vJuZ5ByNAoM0mhvwvrqp9G=U*W3VcjcW=mq?5zEC{FMthh4YH*Iij7F zz&&$Ct0PK!bae7|gUU>OiON|jtVGi;{b^U;=LPZr#kljYMXH29bSOUiK7G-k9DDV5 z?Kl$dKR>F{c-se0m$CsGb(Hnd8Pxq#F$nsYHjyXN_jlF|T>*ONs%Dzz2JA|Qg_Ly0 z(k$6JtFe=KSI z&Ae&8(kXmraCN2FzuXBgCuag$62|{TyCWQS*S!}DbNi}~YU*s}!~`Bn6+i=14w{4A zB%)LyS6Qco%^(O8pVCR_{PAEdUr13A7VvBp--PGNxr9{i8IXD1N$~22uR#J zj?%%m8gkMLuEI9Uo(GC=lW1uSC7*wmh@Q7r{7?4XAbSk>@Spc{!eHt{_J^qZ;RzIm zG@c*#$=S$4IRS#&XEJ$(f0guZ_ILxbkkeu`d^UI}(+)=(QAg*c4r^QQbfWC>0l^oLk< zB5Nxzt3r>|p5{|)^+z!k$Ef*g27G)F{o%LUZ-UnW8Qq6W$FOLM_g)I9X3`J87I+=& z00Aab4#!$B-bmD%`nA+3w)V(6Oekj9*xL82T5d-pc)d4QBdTmt_a^!92P{0bnO{H8 zLD4qQVO}KhO#Ry_Qc__uuza2DP(3?}w6>zVhY*-pdYA6t3SS3Y)cm=B_NZ$?zHt!1_J5+!9_kx$NXx5O8j1)ZlRANTR%ZMt+viLdi$ zX7*~AQ$wGzEzSAAFc9ecJyt!p*v9sh7dGkIsfg%8br%x#EhUZ9JVWrCfD?FV3H(m?xc7xkuTsuMi_;_ zFYBoAIeh@@AKdMJobhgIt$9^vqc-#b!_%kD_up=Bx6i{`&od8Bpjrbg=EOVFZjC#I z6yrhLkZ0XQO{96R7OH49DW7#NW;*nxgwu?B^2AtY^$NO3eIc`o{%V?+P4|e=_TXQr zcU#F|Wopgx9D5(_y&vw-w+Dm_f`7b+42Q!GAQRsH*M`HJb=EwYcGkDQczlM=A+<-V zzA?;~rgUc1r1HGnS1qvU&R^*WySW=JaUO30x;^P|#>21i2zS%lVy?TliVrzCKZTio zncm##`pWh5SFZj&x&5HoDeH*KmsS~nqu>$?fvjMwud9?i`qz~|=t>)J#diN;nL2BL z7vn!-6$*p?2LZ`TM6Mb|r(a$&iKw^SOFMU3GILL3T6U`+xQ8KgJx^^2Z(Lu$jAt61 zVW$BuwL`R&^j5Sso}2`E)p4|BxnI@PVsblbc}?Ai9pfVBZKB&bBu7r`k#9^5wA&iO zo7dK@V~R`0eEgTH>OF4$khl8DCJ92 zIj4XLb?oEM=f6eCXhtbSsHBLB@1|h=O;Wh67P6HHo|3Zms5fgvy*4}*MCxQ>fxBnp z8tP2)I5fRMl+R-tMEn#Dp{duMWUrXe9)FOVxm9_BL#MT-DEF)KV!;w2$+h|u2?6Sl zYU@SC-7H*j*YWPRsT9fxHXXV%@!ID!c~O_k#e_$JlR?l!k79rn=#%aikXC~cUt%nP zuH4ne)Kp-Fb>LAp36GZ#Um<5M%qo$mCIG#~2@^m*<&%Q!diJXsHIxkukdr{^na4vx z&@mA3x_phEzEwmZi;oFA%f-hNXB+Xgzp%)T4DCtsA~>%}mcRRd zszWO9@O^Rb-cPMxW0dex|d8d5Z+uFe$D*Q9i^dg;NbQoQbFm%dNpz(4p!gQ055p6Lw`cM;d@ zU>FaVXgaD-Sh`5GXgL?zZiWnXA@=?yL{k6t#)8#0udd6jIWuO(4}(3GmRWFW=dIIr z@Iiab`e6t^nzA(*EarU+Qq$(aK@_7`L%IS=QWQ%C#v!;Ol>5v9Xjb;r#M2PzYB^N4 zWuz%2$aUOcHWmr(GYs+1MK$c$6d}%m(RZ?v-qlul@ zLtFcnpRfl1;EcXYS=SWi?cSK@6RG!5gA7gD4Ms;z0(tdW`@6iu;KG<<8kf}E@0B%! z=VWz7BQ{sPwFv334P?j^&89Yiwe?8T(!=!Mm8pOJ3h~Am;&GU|{_0>UE(@;8&T--^q zZ}(}%Vq;$bHz64LEDxBOS>nRy!Veh{nlf7(w^R!)E>87_S3S0`hjwZ%Om4Ez?no)gXAVq}=R2M4p!?7)uYzaX?YZz;0jvev?b9j_ z3H75NXq-S>C}U9Qn;)BaMG(s|CCX_#NZP|9?hixf9sQ|={Dr^QrN!=kru;&q-K(In zce^gS=p=aO704o)u7Lb%uj(z7C@ye2R2+g}>SpmeUp+v|S@UToEdCG_lXslmy*Bl5 z8AWz5FbFjC_7M*sZZqf>nBpW0g)#c`bX0+%M5DHT?VR|KWfm4eMtIYR>A+T)EWU%IZB{Lqi;JuEnk~C21fN_+G_PzBbqLE=9%pR!bvit zgF()kiCConP0@2t&Yhw|7LSAu#wR`GH*9gNd|XuZa-T0(>TduI(OmESLCK~4-Ga%y zN?Kv86Qh(RqW+e=aRv5Ols$^`z32T6Z_^)4Oji1~j>P}fb4F41Nfk)M`-XSYDG|+v z#LW6ymaA5u>b^Wb*I;}(giizZ^X0Z2PDKr>9<5-$@Kj0E#JyTyr#3BEl-`yZG@H(+ zi6GfD!BB$UV6#n4!}!b`vRIuq=vmJR`{@c`cV4ap(^FHn?G%Oa>DmfoH|n{BO=cc> z0RzdaA|a*@?1#Xiv(De-U2v6A;~ere%*D$^xmUU})-@RYwUn9-|4@J#*nVdg(h-!W zqlNRk7MgB%8%bZB^q6kHNSC-1&UlA9Z$Q@ErQHeskKhR?Nw{(nd#+iE4HeA!$6tw@ z(cU(1U}z0};k`O?ic(y|OONTK9i3XZ-qN9gRoN+I>3jkO%{0rm^g6C_eg#4BIsG}f zW4QBF&Z*Ut{C%8}3rq#8ns9f3!eckEBW>Tzr!(NCf6nir5R1tUpe5Dc0Q)Nyb|AfA zfH*g$Vf^}$C|sY)A>WBCpFisH#a2-t$%_^Q6*c%MJnqvVT`~!f6Os`;0E8bsFNSM1(?SVZ#_&EaX3jRk>Dhl%hPR%b_ zxc^5G?wc#UqwI+Z;0i}XN5NfX_(Z7|<(G{~@dMF^v03k~Y9>El<~Y1KBl|^9EYH?x z_3X1ePqfoQuZ?UAq=11S^wI1)%_cHFP&EUUW1JKrp?>kf{|NMc9fDIEe6=3E2bG4t zwqCzldqfd4?+&lMWB%DqaWqmUI@uix`*$4fqMBU#q(ZSZLN-Bx){fCB+^XXv_4v@h zA&cs1=~K49ZwfApdDu;7E)2p|RXa&&B$j(PIkZ8e%)ik)(tI$Yu#t~;59bBDRv5j( z)}zqocd_bH*5M6d>~`uP0bAgGl`a3*^;|(=jqVGtoc--w}9?#H|z!Zl&@yxDl8{f%_iZ8#%WY%oPhJU7(|EHCSjgtKzfm+S@`O@&b6@rpa z@&Q)|$5TJO5CK4Uqv87%%Gek>`b33CM*p%-A#=gqgP7*>jRVjCNd!4>b(PE^p-YOV z#gX}HG&{uyon^G<^cB}`zvniPP6sPqJJ;PRF!sf0B2;y=cUQsVu+>Xeb_(jA;|Xejf0}&?zWnD) z&5E+yAsOB^jC#kc(IjXlVcm`6ZAmrif`55t@ zL#?|Y0bg59?a}!yg5wDP*GwM$PN^7LLGbQ2W53;8_#Lj;sdnUv1WxaY({*%17}F1l zaDZ=ohwsHLpTUvX0s(aGo%UU&OQMPQv1RK-oU<|90bAX?6dQ(y*PeKxf#lQC>FWOo zl8-Ri*gNLQm+2FCPhVHAbO~c?br)qSZ=Lo9_5)t{)q*Vj@s%A{is@SUw|=gtX8JFK zeHi8%Ug-p~yud+I)~#>pYb8!*duu5ll3iK{G%xEt(?1kBNGR56@kFJQuv>9-x^+_? zxd{tAlsPl?2vhQjZd5UPb2?}(a=#}^f|?>eP&yvTBjqQLffUf3A$Q&}d%T=R;tZ4< z)aDk3`sSTP#`QLei9W=0aNTcE`dq;=N)0GnDh#!D3Tz_rxiU|IVUwN)?21_?Dq_kP1>auSi1 za&(;9BQzly?8EV}qDtM3kt*PLWql(CUe zZ}3T%qPIgV-*AJxhil-*UA3OUT4~G-d0z9r+&Yod=3}1ygh14nf#Lw@u>gvVut#V6) z$}19uKBuD_q>(s53)kIOU<%#x@em)<7yo*TQb4%E$)#(y|QvAC~_#eRwoTc_AJf(DD-#A3-Oagu!%+UU?c0i{# zx*ZSwrH#X^C!37T?B!!>a%WIn7R#%XmJRKGMF$Rn__j;A;CLme-^{4TpAi)9y^a6X zY=|3d%J{VxrF}mPsU%Uj++S^jX*NNobW^O)UYg6_ovaMga>oRY&SAYF*$T&?6K_cB zvlq)1KND$30qZhYmBy7d&EV(!-ITeg($R!Fh0ri~q$zDikOjopA-0;)yxbT0Yw=M7M{8T5E$uUA&^9-~Up=UXPqzNIJd*Xds6 zlk&@=9#I-TTQZOoN5i5gbCsZhi0>MrY;6P~B|Zu{Ahi9O*PQA2B{_|mLD z(j(=?K?=JOnd~j&rL1p`HwLsxKgn~*DCC6Qlv#5$j3KQmV=_9I|QsQ*b7}SV$pXZ?R zZRLh6Oi{NJs9L0%B3}sF(3Ka@jm7y{ z8o)D5WApZ%l0wLx$3Ieqk}Q35DcT7K35=V_0q;*7%h&|2Di4AKk@Hoe1Tq{4+Z0QR zgFt9!WWt3-?Ii%b`FHmS3&r51)@rtD#h3fB%lG|5AHi3?hX6~c#~Zahrw>EmuB~3_ zVzYD5R*-_SU9FD5l)1hqC%_ORA1m7rTlIZ)W=Pjq?dNKkVSZI#OC`CKl(*aI;SyDr z^yF>oBIYKjEMPdU^a!hJ(R9-8W4AhRf!?Y0IVq0fTmy10=SMS^)Yb+X8_b!|~~4-ln#_K#H87g?)d2(ARaGY}EVq+|=(z zRBbXQ%HT2~gTz5~zgrU_N!r1~o6;Na8&9?x2kO%iE6p>pk5Fxmt#lI-(e=49n`WVJf3Uvsd6P0Z|j zm98p!dSiPJJ$M!QvvG|a(K7zR8zS)NK$-Fz<&vv_DywZrzJY*gb(ZWZk>IKO14DB* za&1szJ8u>KQ5ykU7;v3S&W;Zgkozl7liin26NBD}xT66|n?Qclk*Vv(hgCmVE;(jb zo%QXjQ?SO_*qoZ}ma=9nkH6OozHb&?{)@HVrYUZel_YdD!T?PqiY29Y4uGPUuhO#7 zYHZk~GS|$oknohyNQ-34`;K0|zm4}^tHB#@hrCWtZaFm> zoE3Nbul6TL@2is&LsxHq*P*NJg4|IY_IPK-hbnI@@nU^*uvIUgTpRDUzw^M%z4K4b zEXO)3pdhzQXSVnjH*-49W?4WKz{)=m;CU+d<-E;A-&lY=&iC?mI7$6;oO=nevkPy? z)1;O|f)gU1Ga0w(;E}>7=#R-n%W*&Z<3Qx7$T@4Pdq8tMCdNY>dY_fl*%87pem{df zrEfkWjM3rOmw?E*`sOo80UNWt=KUtodZvuDucI-2YA(+wMl8_SJY#98nX{zGh^t+j?5#mbG+~JA^6nKMaI-yl{8Do+Ug{H|Vu|N2V96!Lf z%6Yl75#1jf|EWkRMS<0zVIkVm;exMYgn^vtpcq)=bgKmMLUPv<&i4(1$CZn$@xZ!~ zX){y~bL5A0Gdfmk^wvt2q2$yDd&m%;Uk)*QQhYXHa*!H{)y`f=q|~I%ujmut7FC&Y zT`)Q3K=TpD*Q-viKnL#8<*$}Tnaz4vj^I;#mJ{CarV=nzjCx@;GW*~7OzdC3^S-sb*!r}J**725Jw=}# zzY<_o>w0Oj-^-a@QvAhx`uah+t4SgIrZ^_3=`YR=g(MhPa z(vOb|uasrb-^{u~-8W5a7sA&kX~8@kca!(?zE=%`HtPrIsE~@vTXa*MjaU`+AVP*l zW2EUl^~=;Ikyw-C-|-lphsRqojNqS&nD{@O$9b+PSfSf91ZBj5x< zL(!cr$gfWR_!X8{24DVWBaV|PT$W`iM)oCG?NkEgL(M*fpl0OlR$EI$w)Kjls1wc_;h7`)qCje7|LM zgWnW1z}!yc5~g9QYz%yf9E-eK#+l=?;-bEy^z3S6q=T~;&m2Bo`jyBD?@T1GDM;_lf&*(NaFN1Rv!$NKhK+sQj&d{-#qmIvuPi^W+y z{}EVOAEG$czLl`)--s}mH9WVvV?6gXv)TmJ-@qGU<9%J0HlK=&HnQG>37=#){YK?t(PZ%&N6mOxK>f-WK@d(X1d}A%Yb0{OwGI2UHRes{jPFG zm!kz=XY+|2sQNv7uCd>MrT)f{fyeNo{-7@KjjUYF?Uz0fFC<_7+hQHZ7ddLYeau2+ zKOyH<$)|q($B56R_NSc&qO1M9SH<0j3y*(0-szCGswjcJ!CmTZ92GbH1r?_L{0g|c z1f2+_c0$T1PZ@*z`j z$?h>s9N6Juib6BI_oZj+)P&zR@0)#5lzS@K})xfJx}2+A;^RBLXqg-Sx5CF zZ0%^?z^yBIw-o>PCBxe}J4^at6Vl}$V^_$y$<5nY2xz!KxePR?CwzpM!N5;s=7^=XLunS~#LRo* zNGIgT(n5y01SE@_(e^}-`2+=B1rBXpe?M}@jzBOc_nw}%ckb0rghU`?<%NoSu-`%BH`8r?5XcXo@D0LEgwpmV9iJ z?MNG#LNM^!=PlRXkNr%~-Fw5%IoQ_~L@)iLE`?{!b95w<^kY9^NcJ)})f5-0;v*1u zIWllkA2!w4&wBKY@mWl=PHJB-3?7{ukcyc`eh->? zZiZgkWaB|@)N_U~j;r}X&cPb|64BB0Mw!nd!=w85-+bwfqU)z&C$WRA*5^Aa=d`x> z_s0AkfBJ1UB}OEqa*u|NY_1B((wr|^xZ(ajO*W+bedQooV*j$L5#!oP$Zg2izX z6b}35c2WO#UZ0)OD$q(aj}fj^G``Ny%ulMIYkfFSc3yqqrZ|zlbpE2|Nbkoo%U;c4 za%)a8XwG2>6Xr(6EKs)l!5?Z2AMtyQ-t1@Du01IO_J+S-=l~6*7Tpt<+UJUheV5Q= z`_{EmfqNYoGw5Sp6y!svNpx#U``Kpire6rAVhn*nvEn+)_SF{73c{PP7vqM?fDEdB zrRLx`C0O1ez<=-|*0~fX#4WXan8{lT@j@Yr(?*g&&(!lAdaEO6dn51C_a!Lxodnb&g`3aE)83lGIuxay>?t^u<;~!kB#fI_JfHGE%WE9!!v}t zmp?u`k1XIZ2A>YQmuDct9`or{3{Viux`=akxkm}fG0tH{hCe28^Hug>GZZ$;EC#2% z=)TCQ7F)$fgww4iD%MaLiZ*>wjw#%)a)%Zp7_q)yzNiSVb9EKoq1xKvKh)GP#}Sd0 z>(asymY+bN!YubS1`>w`5FO^W0GR3QyT_F;RkGrBKnfAT7+5hp9YG?+_1)=`h=B=` z2fwC+RRMQIqDZ3JAx80esN=|@K@vgTLliK==I^498P+6p4(k&VYY@sy6BeP|OT}Sf zx!Q?A2^80=f*42?`CBeHUCnF^lmH3E%W{vsNeyoLD1jNwrkad;uG@tzp=Et93kw$l zJS<=Yj>(8_(R~BycsPGpiY!tH5fxOr4`<9uz-GtlvtI*`1 z&iGMF^>)eb{gdCb{{S5?+jsD8_pH(M7v_(|uEM*?XD?6Vf6BirvHt**KjQB+*LT%j z-k-+%x~sc&d~WnaUF5o5&-f!-zh!sHPK{>xt`#?a>h-TutlzpfxqkO26glp$>*}aD z?;?GCy@KR?GPyT`vo1n?9sHG@K7Kd_b>QB)rrpO|tq!L(JHHkC<*&ExZmxYicgh8WgZI?5Dt~-_K#}x}1fK2w7iaA=1>9a=FHS25v_eSEPy6es zSP{5@<5y7ZyuB+^TNF(*t zN7+GUaq^F6avHVLXQG1)N!j(^bw>!)Zs(t(!x1?O96ZVZ$O{W%LuT#W0P;*mgVU`PI9o?iri%v*77^TUe07*%ycc+lL-HA%hqG5=?V^C}JZ=5qF1m%;hrKQxop^L4w~U$@7k zmVWm?6?fp8-_2jngG2`D{^fodtNpFR_-nC}nJvX>!_xl%Xx-2F;I8R=)a!S_Z}7XC zukb&eZv8)=AIBTMh^xEsPc3{Fvb`_CJf^3@ZLVs*f2a23Q+#k+rF7k^uSUN)sa)^E zoD)&5t^4#>f3H<7uZ?qi@GH*v)mMKU^gI^4c-@s-_zCOBUbm`wQKft|qpSG!qQ72q zQ#^V90R6t>nl<5c@#^b`?(!SAu+EEHYpNHnocNy=2_S=|`!31aVc7zQR~6k$nO&b4 zK^!lwhWN;FU6U3Q3?<~im4^_BG%5$7Sa9n#7!M(t@>sA>$qX*)hYSy2RkA3C9&2Ie zmx?%BTzpsC%KTT_8goYh_`iY>fd~h3f(bmiZ%{%APy+xZpZDyb)tT1BH5EmOLhkyZ z4n;)(Vzy+Vl6ubX^qh`p_mCZtqx&=CI%~9`zm892*?yQ%Dg|u;JQ=g2KawC`2StVM7iaonioDk`S@#v0R$c zN+3@q{{U2xH5nlcF+$(uzo>rv7_$6jr0;tEkn9KQAJiR-1)eXx3`M5fCuozx!p7_o zVSOmO0kN_JPkh9hfOkU>W?VP*)*ssX&uE5?7Ms3Qm}#iI)Num~9e4U)ivIu^7dP!v zh}taqdVbI(%RioSR6J|ZuXMOeN%;6(H!VffvK#z|8FYUn{{T1fQoL`E0cCh!mDLY# z<4o_5q8DfR)~fhlniA0ImmfPQlboTu+rn@6FwKWOe6!ma?9vpQ||);ro|dkE<;?--5pjvZsDG&2GD=K8ueI zUeD~WFVp-@d0)=qqWw1Zx~6+)u!ZN-pUUSyZfa@gdft9$8gHXzmAGfCNkJKazWed; z166~L35B_tQg0^tU5gqb00rfp`RU1ac;ki;u;M1SMG1t$`QJ5AwgEFclw<9dI{GHs z5~}-6B90q}3LG;v78?g4LxZ;y{{V-b)j_(fT z7ASA`AC(>^$Z}`K`6!}_CS%oM;jnUFb@la74We2`-C*I97Rh#4SUS`!EFuiKp@zT} zvPlexoYpf6XYiuhc}+aDDmY)o_@fAES2O_-oj_mI9iW)ZInW6?JlFgZ{-1;D9lNys zN;rG{oI?Zv=eL-ZSa6%Kt6&U1#k1XbVTs1mkPqTn%RJe}MSsK+5A_FY-4NjHDO|-0 z+3s~|c_^YZJui*T15(G=jsBsNXMd^sE#jhkh|>L00<+=H_pVZ|nrb@F%&qt1;jcCF zJw2{!^Sh>M<#NhMbGN<;{udP2cgbJJrtRy?inHT>U&GzX`JpZ7`L(qNH zrT&%PUTXgURaDho`K!K9{N3JP#ot|3-TAHe)7$vF%lWZ;mG8TBZur?&_eIk+teSar z%BPRYqwe{=SB83Yn`go5vex>Edn0;q$!RN}Md9eQwmvrNKR;@Da#zmyvbOoJ8E2aG z>2*bhW$OEy*mFVTH*|S_s-9)mUYoo!RNr#HfUJ<*x#`M!Jxd2C5i^69|I}wS3pw z1ifr5IAI2t;-ZC=1CXkQ5Yw&uqXeZjM-A+tgSzJ=SjO5@#;O=bbXaAwk*4Jj=d)iW z9592p-TR{mX)T6@&B+O(&2m;$vR&e5M0=w2y~`3U5hs`JMXHZie?^Iiz=afL>eb>K za*rB)>Uwoh;=}B9>)@k|!$Tw^%$|4AV&V=IQAfX%C@05_+>{MZHnzR$2m^-Bst5xO zlimvp4U3ts&IXT8D{;A~8XD%YV`#TzqdQqBUKb=IvPY8HmH4UcFwJ5>*fB(9EA(Gj zi|+QQ`_kLVf5DHUVBvpGVD_9CVHmxo%v0|jmjKSQ8OT+Aa}OU20~79dp%Az-W{dHj zZp|$M{=CJ96Z(g?5l^|U?{UFH%n+uNpDxra^`^7&(Z$?YmWN)euo|Hru)A{ z!rw;e!Bh8q5q_$DZtNgimU7SAE<8~2yXLztF@hio%z9HL*fGRV3Ha$pSRJ98HG_;I z4WlxEz|B~-LE)to1d?8hCO{JV&?BPSbW1}m6N{=b_gaX3xshA>QJ4>QV7inL_vc9O!Z=vOOR9hxt7@{S?(HN%a_o!#pI|eA?Nu3-*mvn?qKyhDaAt2FRQGf}B z^=xB<*&{oqyEkNu>VHtczyoe5@v!@V65=S><)qIBqW+ftpC3i~A7sGn-Osm$hnW1O zu6t}oguIDgS?#+$kF-JCwqgPR&kKk|F>Oj(zz8IkAQ3{pt2;&)YWnAH#la-uMU58D zwJ2xOm-|?cvf7_yGkm?!Yw=8G`PoDQ0GKyR+^fHL1VecFu2;JC-hjKkDvukxDW&Uo z=}+3|uKm|Lz4ZP(ziOYruP;S8aJ}|XyT28Fzr$bcXH2~lXjOdo-!FAPg??Uqe~vu< zf1lU$yZE~t{{V}=D&I@_(SGiUrrVxg35maI0nSpQuy5vd-YL5+X@2Tl-;Alr$Dds9 z%9lkU()X9<>pnHhp1NnqFOLr+ZoP8llPjU_$*G={*LtL0xo26jd%kI>)2BYV$uzg~ zzg)6je%br^ryHx|dY+VD16#LV!gs?(;(C7gu6Mcp6`qab?ys%-p$T7b7|46#qp4>^w9MAt(C$$fj?C6JEQrw<_NzVS zg8U{K651BO(uy{D z*$hMM11Y-@DOLXf34f%!M{oMXKU0eY#evxfFuTSgiXpWP9oWu`5484(J1B(1v$F^U zNHEfl=RTZ2s=H@q!1_08#_dcahXleuBO@&{$;sz6^$7O+cWEMqIEZihiek^TFdds# z*G~#+qb>kB68F>efthZNUs*SfX{yy3W!IGCvp|OwVSYYn!bIV_x~36N!>6~aNqF$f zUm4ZZGrjcB=W=P*mwyVyx2NzgOQx#$*$zFEqm%R$!h~)Ras_ZL%TraA> z+VxL-mm9i&A3FK^A?4TM1LG=BKDyI>_1Q5tF$Vj~McFZdAU~%c((Jf^!mzO^a<))J zK~Tmu(LRbOyR@8;#2Yv4gikxW(F}0xZ^=iF&e_YLQ5h2MPD*ja+Fg|dBuhn#TuQ0~ z-O%aLeaN9Y%?QCcyxM9g;)4(onVX{!h7%LE({S@Z2)o4JH17(IIZZ*bOO=XtC|zxW z=$8CUmL@H3??s7;4Qiu{Oxw(?L&dI{b>7IC`=Dpzc2hY!uIQkE5jy*=hh+hkccQ>F@L4o zTL%Xd5J}UKe8eMm`h~_pu8?-Pb!#d#|A%l;X>} zK{$tMILkRFtLe(VDm>hmIq=9biY{=IOY=gnFKH)tH{_&VZ7lcx*3CK(Tc@K5dDfj# zlMz|``5%?}G(((*{{USEc}%8hdY2kc_@pmuc?xv18Lr`E_xbellH~wa!J1q`N*T z{GPuH4-;yq#ZUZJ98to40{ejR^GqW0D;6P!$H5q3BW>@3k%gLJN45+2C~+9?M-j%H z)G?M}GoIxXQCCK*U2G^Z2#C4m!3ta=CLA?d5Z8V98ICK6h+N6P{zY%a$j;M zXT4F18O*xd0Dz*1MeMO6*@>M;iL&$YQ5O$p?Bt_6Bg*e3i5PsJP4v|m-SgmB*iK0o zG$D37&Hj`abx=a`Sa^Ky+S>;UYO4nB4v>8FX{|faJwEO#36W2$>rw1r@KBU)V{s+{>_I0iZAY< zjG2A{AV@whuZsFlV=(qSAPYnw!VSD^@L)3;jcBodkaH9VJ zj(=Xm$NH8JV8M<4)*N4U25o|3kmx0(#^46iMU@Qad)Z!wGrm$AH}8eyB)u>#wrfeiwclmo*c>(LyDflvAr2r931 z(~;KqZVGlsvGO%-%g*$%s;9mAX1(8~{)!Jlx%YnhHj4P)g3gzBrSQx2v)_68WhCVJ zflnR=b()d6^?s?ZOLcsHGPhfYHq@DX=69-2^{=UAHqFP+7xCb=K6l9xnDg{9O?SR@ z;I+2B-0HYz?PpbfUW3Txpc$8=&BgUtJ*pU}ME9&X;w>~WArd`PhZ{MquKdime$;J?yJq+3wnQPO(!8zI zaWk?pmsypEh8fIPe=E5QuefOZ5ip3JCMZP-Crp>z0-GIqRqDRnFDmg{8z=xT9SE5pr4i3SV>%P_qc^#|1>?HGp# zYq|||W25P+{{V#jgCDj309STwU$?b`gA7q)Vz>Ypf!Q2(tSAO7Fk!=jK-p@U8UPIl z{{ToYIHtv!WBqRj>AjvjPpCi!4iI>vd`$MXjKP=sMH-tSfd2rAKUnPFUjD55mu>7@ zN3%tUAc4t#OmTPp)X4d26|wRM%|&+`_z-`}N6X)2zm7^t;rr z8F5!Du50wI)46M+i!NPQE?0C!HQkj}EAqdU@#3!Us^51c_j-@!?)d)z7eCeXS7X&( z_5MCp->2~|9xE%N^1hdvZFuK{RgL7Q4MBTQ-ygH_3VGM*`g4c#0vUs(;*-KNEFv3J4NajJ{7CwzXZnBir)`cS z3}j(}4|-&n_CVCgzrmMjkM8!U7k6^?hJ<9ikbJ0Z?Ek_IeDLrSU6KRys zHBqyq+06L#oVcLozMhLRdUWtqo3aECbH~{{-ct2MIPs_Nl8`$mmQCw(O?h5(9O|>_ zy0@Iy8}?b--#IUzZ;x7${1>rzyZFBkgw(vJ)n4nme-gVYs{a6M^?Q}p*#@xdip^cw zL0yG*bIo+8rJd^UkB(~mEz^Gwcjm6{i^lyEcx9g}@&W%Iug|=qGI!{{?-;G{Jnf~@Lit~wRthh zc^Ue6uFu*w%rLtf_Uo%G9Bq&%qZ@UFh~dc#?{PyDqWgj@@0u|Q?!Rpp+=fDvUvp@X z^a?1Z&qWMcnOITB7SLiE=fiT_h7mq!VLbrC}GQKK^Vh6qn~WKFkvvi|^t{{Ykdr|LgngSJP6V(j=QYAA^A zhlIrlgwfu9iwYP!CuYNd#32A|v9BX6+D$Oj0e@)@J{)ld{9=eq)I36GfYGSG;^*}r z)FS$iX!;q&jtndk9tUw8gh9n~aW%6XaYGS?TTWj`e6?u>izwm(0t3tz^il4U=Gs*= z5`1p_)F88h$9?is=Ipkn3wb%y&20wLmzTn03yu}Y4?#YqZr1P336TjJlL-N3QACD0ZgzGz~#CqG#thx#;qjlD+&mP%Gd1y%pc@a=mW7S1Y{MM*MoL^?bO`){`3vYUmnyF2}z19#x1=Y9*K-|K%qD#E6U@1m-2Km3OLkh|w{S>MXDC4LB|to=Ia zS~=aSp6A_^#|M5)*`r@8T=!B+ehz$SC(%~@j{gAGb?Wt{a~@qvBdzB@M01;bxYC|w7N-9IAJwob ze!Kc|L(@si!lx?ap1HK;?XK>%pALfWDKA3Q{qCPRO*J&J#`=r(*N>92^vEAkKmPy~ zEj$nxccP9hk+Lf_3`}Xp>@T8rSi5)CJ2nI$#rHArq1hTZclGpNL;7AH)4qqK{SJ7<0wK1|S-nCCizT;-sC`1!G|xIOBwm#Ps5! zZWK3uN*qm+9$rhc_LjsE2Yk2m*OeD%?I$uRkx=%6M30T%h97AViS@r#{oID0iXPG< z5|aCaT(wc+fib&xFrkZTV#L-iAcnJ|7@)yjWVZH8xHVw@$A?YG#v&xSotD;I7A`DM z7l%$B6fPxRHCT9pI2@kw6XnZsp7J$YY||IL*WNK_dZXHmGAC-~dy(x9`CkN@RUqXl9Q(ZNL~3YmqHmLb|I4fqxyyh) zPGDBzqCcbX{{W|clY@Z<7S1F%cyYyu z(7aIzL|lR*0mLGt0$fpjQ?x~i7{e!PV6meE0RYed@R3Jy!(=j_vJV0UL z;YMPHH=8@1sx@8~+Kc>Mh+o&gT!Z?9`jfYPLj&-O6Ju-rUv3?psW6)ZDRNL4;lp`W zK!@6#uhc9|a(_5y{-EA08ATJ3(aF5iM+>~b;G7wWXp8ZekEciV9t3n`V&^vTPo*=u z^hdf+5u}lbKl_ZwFCX7PT5`{I+i0XzP{Ljy?@W<6kQT1HywHqCxXga^_)PS_Z_;MW zUp~6-Kwl@l%Q?Ds^uLAkeOA6}P9LlC$m@4+{97u1m4ko3;r%bq_?N#sqRQufi-+p( zeG}c;{x9VV_0f3vtM}t|{x1E|ROYMbeOUVDvK#!Lp&G6p=Poyt(a)F97t&r!l(%z} zbfrf`*-MSfb7`XCzM1=ZCgaz~N!Nm}9#bM;?mjz;-dodn^=~k@+|`XLcf0Gsbmf&q zx-9kKe0tGtyZy5H<9s<4Lp!ZC<$^-lB7?r1|E$v!$vYgu}6U+|mg$Lb%{csPa=6c}COAV45E-YdhR#em@U zXkmbm&=7TU9L?edoE?%jMyzGp@Xu(269~c#1{i^T;y21<7I7@*@?X|{hTx#3Cl5g`!3Jg;u)5))|4}%!tJHQA0N@a zDjwKbwH(3gu971lpvT$(h=Yu{ELjXlco%<8xnpMFz;=wxbj! zsnLD?v9lKo;WZR{0l~|s?HpsCdYkzps)kJ4ax``viZ>4c=+@gd=8xFUnw-lkGFX5RU+MoKLvb zGj=bb9+|dTpZK{RC)57`rMpPL#5iQ^JpqVC7}_i)SeUkDvqm^c2B&DskE+^&5r`+; zgf!#{cPFfwVv(}n0B5nGxcey#?Qj%vYBC^5Uyo*8NeU0!Huk{9WG_cYbTn$z3k>MLw6)syBDb z_`APED}2`t>-FpB{5`$P_{-T?_?7Qk-6_`Sh4^u4b^ZqjYFTfL%JCc9eH*0J`el9z z>B?Mq9zUfy=gN;hb5E|}x}GNMN%NiGis#DfzlN324~BnA{{R~D`1M>g-E_`lM_1%- zlS2Ggoh7EXy*C42-%Z)c4;g;|UyejxYL(@8(M1t7yP^=h%bDe*r!jk!A>y}ZB@++Z zCRDy9f53mI7^3Zcq{7Zd$pcs-icSR>ep2N#+vAQLI*3nj>n`rpFDXO=J3CJxp@;5a z7~u@#Fw(1-PkS%MS{&E>R_xzv>v*_^AI=bVsX@+j{e&ZJ!dVUkiOfpop^UTd7jhY> zqZo#?t2%^5CarG$6apg-ho_deRRN2D^N`Nlbr9_a62R2fm-EziwuD3o-|=p+yI#>U zm21%s(%UoQ{Vz2SYX?4DIj`;nJKs7iOmh!-9iY<}RsGi7>6Vw~qU{VTt$hcWZYv8D zZKgNgd-YDv@jV+rJQygkSi&;*_X;T5AjYnGa6-E6XI^Vy(Vyg~Fv^1qX{GM4do?B3 zHH8Mr^su%8{Di!2^-w`T=tHUyh9%H|&%*hrFt$w1XtoQ>D+&P?d2mAs#b=u>h7&3t z^tACsz%X5r(s@3oTYs7&9uQrNm*2xqXns(`r1|T7Q6_Ikq|Sdn@}wrbuk>Z- zkUE)x^Tw(eiHK2)w~lRWM)VlOLsNZGVN1W1cQr3B6w{GzIrX`r_>*!oy;RRJI%I*Y z`iqcoo^5oS^xfX#T&e-W@(AjTlM1mmZOBY-2VVe%DU6VTYJ?SU&3jbbFIzQ-u}Ky@2aKg zeBZ9JySAFI1HYbCdvs;WUY<*J(|zQ({@wR@%bP3fdVIEmS*-g5B(3reA-LskC(6>%WN`i3Bee{VXo z!sW(t@?f#Em>V-Dd%wq&%!ZO(m$MTLM3)Xk^{H{VpU^|Q96;rCzEV&_L!`Imdys@P ziVE(RzU-#Ru^cKNJ=p-GhE@4nF>>FRfxMJ4MGa&|XhpSHx>PNg;fcgWrM~ztyN#Uv zlo+u^Sq}tpBBUdpy5+|y1w84ju3xRcS|F78G*b zeOL64WRL257A7_UH3l0d35IaE*(5sU<))-hr zEuwaf2h_W6&t$~Hk7Mn_hY*Ll@QtVkcnC(;$jzD-E^;vA_8pGb7AqFSJ5-R&Y5^4l zXPd9BcIdvD^jv<^3|;IjIGS#Dq-Um5kjdugxA<)Vj?yq9$TG~Xpz3K{Yf;-YB} z^!eq|N1_Z!9B%2sY_wCS3i4&0-=YR%T5-Kl8fU)w*iBoKJa=?O-cQ6z?;wONdVGn$ zCe9eYAvxTxlH7p}cX=(B;g?-+L~y~Td~eM9#eua6BPdBX>=Da{NmUy7GWS*TyKm## z$2E1opXToTR#$fFS}uPTKRn%Cgl~esOW`%j@253>7I-U}{u`?O%gtThi+7r9`Tb;@ zK6QKP^L||~HFb<=H{Iua);mK?VH4T>u znzL>bIcTD88-tAXoX-V^0NQ$dx4LP!DSR~7{3pT#`akLO*@)m_#lO3XM-n^3X^1S_ zH7gnROd=MC3>=G*SwjdXIYIy|d!WM!Ac%zy4asoRTx zkcJl5@ftB<%53@eoG8QQVWG%O6Sb+B;LK{fHYUyt<=x;v5bYsym{^fP_coz5t?u-y z!63sUq__HxUTPK)?$3Pk()gk_uh${qGf@LOeLi$V5cN(b`g7sYPb#`NhGDwgls}Lp zbvMf{C^cv#*KI|zNbbvpbMv{nhYC8M9og?9y8TukXD24*t+-fy ziRu&`ju6C$yw}-;Z1-E!*+T>__kL)=Y6OskA_rS45DFM#D&^vYGhx+3gyH(FmQZ25 z=%I!bNCA;^N1BEf=8l9+kgEyHi`~a%K{%)Eeb}YVWR|h=E>%T3xb>b@jg_ z&PJn^u=B}uzug@Ib8F>2dMUo_uKCHd4=3?JWK8b<5dc9GRjjQzdS9|Pel3zWcjlk? z_TyuZRdmfY-;%x;<-L2W-~3(b>h4Q&q_@vnn$ zmh@+0cTBxh^Q`^2a;G__Z67}jr^!y~<@%)+PrklVm4%WOam~)_`KmX&eDvY!o64DG zd)3P|o!*ksO76a@Rou3K`B6k@$>KZi@=(Jrd%QSHqG79YRRDAGZ!oLNb$?f?CVd2? z)EuAT8IU>MJ#{irLoZK$JSL#;MFVFPFzZ=$y07?W*&>7bQ?NM@hQ^xWSH2spb*)*cJjMF(Vri9&sM-4q{AC;Uj5WrNvZgYslB z;cn=CZIn2BRghnAq_kgeHkZc^x~}VPWw7KQ86k!`p@s-e5R*%ShyIr27Qq4C0Ah$q zellcZF2+G@4k!pnnu-Hgu1XNVIv~bWFfl|)7<8(J7p_V{eOv0-eU}WuwcY`C&fERb zJ5zZ(K73d7Z}i+>T>8If?7IW)98IiPnSdHS1DQ&+%rByS6S93PvEbl#cp<_2P~pSf zjDY(P?LXlRQ5Zmk%(OC?aK7X?0y7X16AV$47jy_(D2L+@j&?VSPFXkNlVWj6}&U9kcW`qL_v1avbWTh?=o*$|4v6S@T4^ENcGs(=KPIJ=P|< z-SJsMUo(6VqXi}nS5AKtF79YH&;4FXDBM#~DP%R#+~g>o+!{TDbV7bZ+rz;aM1#&_ zoX^eAVvWCh-EGjQtls|sYP&f$ly;kDTEcdSWp`{w*Lo^h=F{l0B?NhQU#;C%%P=x+iQkN#(A!GjH=Y)B$5 z2?e6RAiv@7YdC*I?3g2LHXayq#u6Etk0S9`YbOI|W-|n0amr=8pwJ2Ti{?ql7(*JL zt>R&h!`dN+Dq+4s_JnmChxnNX650#;hZhqIwf2}I1oz`-8~Jh4r;ag?5RtN5fuA9v z`B)oRaTsC+jNOd504k0o11O>|yf$

    rk+XsD>bG_?bTt1hQ|}X2jI_x6RE#u-!bA zE%UiU3?nf2B?iMZsb4=e_OQv`GrN{Zc3d)QF6UMKjvY?SxLxmG*+IL(VfHu$K=4={ zj|2y3d=?jE!T$hAaidvKVM7RSWP2tQPqh_vyWGCs939u9?imQ#2w?(oKK_W2M}CSx zOVi(a!wzfZ?xA5aLK`Rihk|%D7tIK;z>)C?L<#)pp~S<7H@+%3gjxA0b_to$JR3Fg zTTl=3@=-?wi}XS$E47u;7~!ai0|UO-lG=n)CAR_3z>Z4ne@D`h$(t$)cgd zz%awzF_L2MM9_c^!#{d2#kOIPj0k}4?L!nx`i~YY9>v-sfuR2YmOus=L5RX)a~F8X zyNEy#%*7MLd%y7K=s5ka`j54JTj~YK#gAd)hG6Y)dQ($IUtR4zpR-`&M1Kfy-(`hh zhw=bLuHA%pVXbV9pc&hu?S@#0RUy2an(nQ1i&w1h{X(uuJ&$P zc&PDU+9kA?=t_Y+E=j&Jxv4O7>FS;l%Z}{5`R1M$n_mUp9&QhshAcBye|Efr+Jvym zZ@c!kpaKxhrTQlfX}O2Dza%1r4tytfB=dQ1;B0v&?@{Q{ZWqQ_T&K2x?DXn)|JwL3eRU^S@QKA`IMTzx19RndwTF=_h-jiXgygzdmRY zJdN&HgK8a`%ZW6a|HJ@C5dZ-K1Ox;H0|NsC0tEvB2>}ry00J>V15sh{5^;f%1fj9P z(IVmT1rst5LQ)14Vk2@DGlG($7P8VLLsP;B;vhtH^8eZZ2mt~C0Y3qfPz0gA!2*VN zKxm6tL6GXX4#tH#-D8GOSah;voArVPz}o6^`w9=IO4sjafyi7PjN7~*%RIE}@719! z0wzM8FRx8gqG|`tyB=}${{Y6f(f!swkgAL_WEWpL=;&93WEW70PxzOq`$BTA_o6jp zgndB*W*?n$7kbg3gk3uzr%LB+ph^Hv)$9qVqpv+0$jGHej!VA{0RU!J2m+z0Y@DC* z9i3RTAR!S0jFR7tD)iydU)@;ryWJ}sBK+vLrgX5g3r7e_A-iuRSR5r-)hHP9MY}g; zkK0VWdoSDPfMhdHx+yP^_>K@i#A=Cu^3Cs42p{1ozQ;mg1(AKbZ#bHV?aR)#t)4tk z6;OeuP&PGK@lp@lssOw8j~k3k=`AyiLpTbi{bF29NtS7W?*qh6CNhHN@G&PcsU&xJ z@m?ZwNaE)h_}Ge2mOQ>7_@$Ovc!)Q0WA|qLrBZs4mQluL!v1qB{VIAq1B{$Td51E8 z20z@);%rHU9ZY|?WfK{-QyBgtY1mCLBCdJC#>4>qXPTN{ezA$-aSXvRCYD;1GpDKZ zFfp+wC2?j<-_kKL@eoTcB;_tRi&XXxT6xRjaiy3405)l*37AeKF3QC4trm>%F|n~Y zNyM0^I$J6|{{H~Ii~j)c4ubx)^Mi|x#k{~h z$^LT?u2ioo=d4ZQW)puokZNG#%`rb*!GE<@!1F?^QZVr`%%_5Kj`K{ERsKwLxhx$Z z<6_J8e&okASpNWVjVV!!Hw~)W(PRDgIN?di6JLo@?h!}Yl#D+giNbh^G{46Er}5a_ zU&!#(eNa4X^RE>13Q(^t=M(tcLoggf4rST-rSj?{3&u`3W#c3x)%wK#B5AQm6Ob+x z#F(=lFZz>rnU`EG@iU+Am>0ay`O@p83`|ihzqdTbzf#RbHYJ+TKZ>7?IHp%pOv76p`NX~}8~B4U z)n*Ezx_#pV7ZFP1Ox9EL5@QnlM5d%KoJ)_1DkQ}Kclo4$xW&X(C+XDtM7Wd7D@`{Q z)qUb`5sSn1DI&R{j6V_dhc(wfUXkIkr!x>{DB1Oo55YMSf_-1}9uox1{{SIS=i7Fy zew*Sjusj^W#MqNc4AQx2CrM1i6C|Xgju${C97s&_DLiwf1gdyt6hJHnRP7jUpU?jQ zafBj^zgPs`QQ9ZNGrA-n+`w6-o^e_n!YCY@Q3n=p7vaYo=5N~JLo<;qz=Yxj>=CCx zc&a1BN>KeuOaA~Gg|>-&#VDRP9N}>**28~$)<0A6#}a9rfV=sOJbBO3W+78ldh_Zl zXqIWE!%;HLcP+7%;P{+rkMl3BDfW*GE+CVO5__;$y|N54HdHAwoB~Y8fhOlf56%7~ zixE%NznI}7QN@UP5_6_~kGybksNx|mNvoPv?O@?eK{;f8B0W=eiAVVqm@KAVDVv)1 zs)TVv7{+N!VjfCw9C(WJkO*f#F^e`RnEgk&+O%NLk2);H9oN<1W8w*nqGE%b98775 z`pfkAgEZ=fa=i463Fk9_RJ~u=$LX_hP9+*&d-CuTO0uhq=brYsd?Hqtc`6ik(9#)v zxA^i%0B=svfaTvR@1+=~^Uyedj|- ze=Rfs-1JBu!(W1dVq~rV0FM>j0xo2uEmE=f>sb3#=!X5A=O3Ri*{)X1&_dFwZ5#?tHR1^w8*VF!5pmpSCxT2Y=#hmgZ}_lWKbf~ip=F4tN~lA+Ne9QSE5lU zp6}*Be=(J985jhI<^37c|?L}bdfl#v64MJI0*CZyD?xE8?g=N_9N{*@zUyWR3 zs|oW@Fmv9pCSR7e{MCd8(KHZO>7%gDy~&ufS2F#%Rfi&t9wOq4k{Wfp z_b+(ya+%~KiS9PB<1i%(SL*x3;QrW__G-kko)sd$F^PqQoM-{Acizkw!JC9VmN6xm z6}rYa69x;!#P5FdNF~JJw=DIEWh=vMzcDcwa?LPqCL*wAodC3AV9hk)&>JAMNrr!H zf=Yx$>k~=BPY_kQ#QbZ*D1D=ZJf>=@lWXhg?qEzLAQDSgL`3cBq)#-TQ3+NER%Zc_ z8s$w^5Pv25Z{0f9)_WMkmQW>@S)7HXKBkna4M_zM)j<(BB7r~1g*3hUwyzSICK~2x zHM$=pyFAKdl`?V}KeS}4*0KAXB!kto@0QvY%X%E(OhoS7yKeVLIGD0Z6n!P~TPVyZ zAeV59RWq!FXIJ=oUA>}YR3)iS{{Wqdl##*_Gc9GNdOuOc7(9Fl!lB0&a|;4;1TQeL zFqTS#>%FeB;z=*nDO}WK*XQX2_VEds9iET&`^1=|4ns2Vukr5n=d5vkODW=A(hfAT z;qY*|xX;=Q^Ag|7DzB7bG>`P1T{a?l$&m-uPWJmmzq({)1l4{bZZJ#A<4LwLm;NVYzp`o<0t0%fJ?zJ76qArnu|jq~}830TTPA!wOE`c+ZpfQr*0 zBfS^j&#nNMgkm5-p>svu2gnl7F~1U3Ef`Wtzqi9%*Itww)J7Hn;%dyvdsALdXz*SX znpVSqk0`i!v3UcJj(REZlfTT1z(%8aD`c6huZ}vdYsVx-mj-dp1JQ zW|mw*#Vu%626=pYM~C{Q24X;zP>upBq3VPX^`jV@6NP1!QNsTK5`{yJZXUN0`!dZn zDHym#B}yrOGCE)42>}Wx7xz1(c2#$xMAM58<-}EL*_~f9w<#aJB$z5(o*+A^=lb^-pO1I|T77niZsY93UkH!4y*8jXFK> ze~P*?S3ydJHYkkH7v{cM{8rK5d+o{z1L>gQHzS!{E>^i+^s82$%&kUNRvXjGGpOnE z#~{?9h5A(<)C;1huD9tG1UI7Te&Vjp07@7jOpz;28fL9i8Y57s49cZ!T8qdbfz{L} z*?Rz?j3>pYg(Ht(G>0swLl#Iq%5Hd@DA#Z49>MFH)N76Y>%^T@N{y*AEJ?1XC zl}_zY!Yh}3>)Er0>GtYqt$K4Idv^Q?LbmLdwv9^W$qMhQH_t5`QW5>plG)}tny_@P zm-MaJ64mC&RaV`XEa;r+3LPz>Bd5J-MJpFQ7Ot(T5SqXu*>BYsN-gT$uJba>;gDT+#`cfyBd8lbf#FZLj986j< zF!+xYyUsDCm>i=RtJK`lB1}o=luK*Pc%KbGb{&jy34WTttO|m~FV9a{!{DbAk3QS< zjB~^Mg71Hr#GeU1kO4R4YToT(XyP1IU2UDxkLn4&Ec0>jfW?)x(M3WYVQUlON&|=W zrT6Yc^N^@z3c-upesO_}ctrD)mO&V%wDKB6^T=lZ0F2rzhYV|F_r4neETLV9MY@DV zQd5U4im<2x^;S0Z-QsaEB+dP(1gOqf1PHgXy~~hNU=h%T1(A?ZSBb`gz{WT300J6U zKvQd^VPTv=MudsJ845ZCAy)Ax6qBQ^0vFH#-asM04zx(bn-G%i^xjmpQC~2~LKg`f zVR%cq;Vg1M8ohEBSi_V}Cls=tE@mgeo9Q(-U3a^F%)A2A7pX7PYMjKr6U0k55*PF2 z5O(}Tz7xb^0$l~TSKIJ>yg%u<*toy>b2S@9qAU;5{6ajl9XM^y2k0I#R$LODeRrfy z`X7ub{{T*B{{V^GdBFV(#Nm z==lC2C7TG6G(p`X7xYgPg)$5of-e+eeu?6Yf_@pm3;n&UBmI^jPAO*MqVT1!*v2n| zp9WJo4OHP(^53WXdGT=+;nZ&|zHE~CP8k3J53QFW-X-uHZYo~><_CrSv&2i3Zh7~3 zl2i3wQ+o^&`NxNp&pf(s zYaRm)f^T}qguqd^DjQwp7&06+3{V1pid9wZeqa?0xDw%FOTa<;kJD0snWg}7Fyeox zI-op22~7V0z2Rpe3KF03)eX~PFmZ+Ec>VX%4lp@K>KLqJ!(s`r=8u4@Wx|{DZ~g?U!>A* zAgf>Q4jfnMVBR8R@TeuQLXR`lUqYH|97K~W)}i7?4)j&C{{U?oJQgVZz7n-OC6csG zS6veEh(`j{)8dDt=h$LPETo|S0OYdrbo!h+-i%|5jGiB;0;;7Rt<41jqof%>>4~P8 zP^6BS)9hE)Fff%k zjV)O4GD|$bO-enZ!b>c?GRbK0hxmp;Z=})7U7nqs#Fi*#KnP?C6jhSzE=*RCyx!u9 z0j^q}P^UB>c13QPn^FV46n+Ic>2X-{H1j@HA#3FXpg$x!T%o?1RxENOp7*Q^W{Qk@ zjWueE#Sj94G|~F45y=Iv8kt*kePevCUb%M48mBtk5`x*CU_F9>Dl>1TnuR&!&@-q% zP(rIJY85D2{a{ghaVpa}pPKzoGK)oSD3?V!idySbYvpI98!8%TnxI(gQAQxQE9K;i z5BIet(>#`y6of3LQGJJT%-tf$e3e_hbJRtFBBF;(W?FUoL4zWM~xSlMl0N%BoeAQzoFx z^W_Ru`g9MYt1d^DAW(i6L`PbkIlN=BBhxy0YuK`QiO?6*C*Q<)tWZw~{A&|VC;CmJ z5b%(1zi7uo1k+w8;Z7>XDuGc-Ml9xIFf5epUGcFYwP;#+pt9{^@PK+9r|s zfvFbhaKCDZ!T~AFugpm#tHi0NZ(1~X$z>9O&Ek1@TE$em9MF7cq#3vg;WsXwwG{aQ z>dFW4Vyc04bh|VeNO@j_4$Iv6M6x=Pg%pl?A|STX4iKE0(T`I9 z0P=8`yi4JLG+fG_ggR+<=^wWvgjBg?<@IC(f5?O-3}Q|DVAL+G1Da}5?Ce%CCtfZg zH`1z$Qh{lj0#VvhRSZdytIc98mR3ze&|kyIC!Se&71NvhMi=P@d^u*rl?_!rqyGQ` z#h!jCq%(O&5BgWcVu^om2%ePQ#CTuymx-Qq#KPc}s*&Np(qHY`c|j9=$A|v_Okl~0 z#lR&MEV<+iN%}8@mY5=9GzoVszDttCzo+5<0Q;GEZ}jl_5Dr1crU!$;1wUp^vW;j! z$Y}Z7{f-33{{SXlWGbiMb%XkT5tsh}CR5BOq)+-!gvALq6t&CFoiZ7+M8BnYTsOn; z^3Wp%K3@wH{+HqAEBjKayDAgWqHof0Cd1+VnNpM*{3otaKl)d~PsU`BEX8R}tYd$o z@G)fJo73UqfAlU4pV&_O#NX(m0ZBv;^qkma@yMduUO)Ov_ddQ8prjx4iNlbCFCavJ z^t94~XOR+~(c!<-ONaHyNwj#M(I&$BWswJ0-6I3^dGNoroog6=8di`=OO|{4r?hw+ z6Nff>M}w6l3_HDJfFiq~t7`5qaMejnVd5pgD#FU0YV3--F_wHefc??LQ-pmhKL}dQ za0(EoiFm8V-XjkZLb!ZJP^bRx666V2>ESY!C;NaWkLehAZ<6prLybcfijuDi0-sa88YtChJWb~r-_uFDMGo-F=`b#2N8>jFq&x$)p>3;(Ml&k ztRP|>5mhJnhj68NCqn$1)%F z0gn))BC>(X1%9FEp_=HlqE-fDo7r{A$D}b)T`QDT@5G||;>>G!0g6(NO zuU>r<$W#a*wGM7`_*UtxICRgsOW6Y}8rG!^pPw;$uv7^2Wmx9=opC?v z4j1OU;~NZv#H?IKE-^Cj%s8bA^m~s#NXD9iK*w0dmxB_#Qu9dhIGi)3JI5F9$taez zHa^jZA($-T!UZJI4iFx|007CNeg&J5OyOmiJfiw>abYCoNaur<3v$B0dgw{Vu{SWsi zAGmm3c#HXJHe>e8b3rjYm5U=H%RU_6*)bWh=blf^GfpfuLN%9)`g}8VNHfbR`e&8Z7d@(u zbVuUEKie-3bX{3=7P&ys;A)Lvu;w0_?OxW$8CeIjW@&B6d+sCb`l7w`KLfU2c3M_ulR!>userfI)aSRNWx zc@e4yE?Jg+4u9=sGk zGyG^$FmU*OoS1KU#|Z^$O?9{o+Xx;dAcWy?yi}*6d6cUN6B$R;K9hgqR%A5^r`5!0 zb>YFBC)Sq*QIP2^$aHJiMmL4S#QLy>0uTv5_VcjG3YGvyG?4h z-SSw#JS#f?03rg1Vz69lKUBG2AStW$Q64zr@yxRZWI&`P zMbQB0b(%2oF*w~iktjL;0L2#9EFPb`Fa?>26I~Q!8C0i2Npn6j&n;T0<4lp!dFBe> zO*GPu8d#!VEn;$IkPaf%2;B&nt^A$i7aNG0gDM7bd)m#JG^8FQ!bm(TG86F zIzTU!cp>HI=N=3%RM0mp+$zu%U*i%m{{SOwkJD0R%~qe}j8-KXA{XYpiupUO%(rrT zd)1TdsX_k$A~LDw$pEi*qoM*zP^yH|(EB|!bIH0n&hDBDu?we{P~)J|+wGix#UIN2 zy0EKg)LQzwnj&UVI*}aIGpc>U*r!E{5M6VkQ1=vFL+(&x1HT3TYr2!T`e9KM3#8aFF{{Xh#S43Z2#TT{o2!9$2xvO&oZB(!i z)Y_y{>aLmj(JEV7!9eEeok|8!att}73i)J!aeP-y+b8x2eRJ4pnwAaD=#^$uNB>91@%(##Hu5$CwO6MTun`EGqn2M~ISM5QHzA zYj1eP!{RO!=eLd-WJE>vgCyZf)F`A3NsPry%jW>7JYUO~po|Fz0hv?RwTvj@Ns6T# zVlj-w0;)Mv(mY&%pjN5(q;M*kOK;u?S##BC^1(8L!~~>EqJp1_A3Lgv*M@K7Lrt{G zDl8)kQBhX&jvT{Zx7%p~Qf3zq_U4xd?*NGke{rZIP5Wv4+%k`)?PaxY7>m3UH2g#; zFT}T3?Wa|+{k%yK%uLfM?Z_!NwpWZ9JVetJl$i>IG63FgMS6!*9vi^nB-ohZY34QJ z8aoBLim9toKTQ2DS@A#VV2~7f^KXd#BlK~FB$$(7eOcdbk%5LKl_i#0br0T=`()`? z*FRf?=Rx$Usq)YAd-A$~T|Vpg=rbHEVa$y>^NtXHk-}!Fd(}d#Ei#97mietYXqtM* z?S(9p6I!te>dBN0BXYSAnO{}iqkxLIX6>KYz>`GYS(9J7K*4uWkd|&8ZL1~vn3`FF zWpaMm^7dXCZUWsFy@#^oFDRB$2%C^5s?^^_f@PVOtVnSEfwIlY(Qo6c*B?T#QbDMyI4h3cf?R{Tj z2k!uqfN%91Es=edIYi?SyzWA^w% zjv>=Q$o0>p5hX|RxkKKG?@_F9@XIM_=u?VXO>v>psLvcMP$r65>L@6v=x(TBR)~cc z$xd{)l%bU-;shnZx*9gMKLK#26bd+iCo1lWGFD#`hbAnjd9ng%4R6ws;_!eoWD3ws z@|6r#)f3pkNpMM{%tv`sTdS>W6HK!k4SIfl>mRAeW*(_&hQDEB&M>r}=Q6CmbTAE|!~$JXSOCNF^+ke!8s-vleKa099-J zke{hS6??k#Hi_`Cz)5Th?@XVpONcQ40OSi2Ysf06ub4ASFAaE>>GgJ3DPn5QVWpdl zI7*&b6hBQeBqP!%Af&>Y1O6b^ik7qvGC#CRYv-n)+Mx(iumKW%C#Lq?p(grnGo%rT zA>x!1omjx0Y(N4$wXrMl-t-aSa7aQLUjF{k;DK3P6ts9jKzFUZJmbO2QCtl(f4}Af z9ToHlpv=Ny^(~4KX8=%SO^^^j%B}zaa&rNku=-KCpv}n*s%ITFO6a1tT~AnIsuqV; zc0^`Eib)e9K+JDA9hpM8w-TBPOZ~(b$ztEg+lz(GiXl+q$f$moFkYG!b9Wx8)re6D zO&cZT9D)Sdw{ok&?-Mw&5ETc;wa%wyKx(lo~x85X-chJujNS{)KS!PMa>z#Yu|mT&6m}q?{bu7 z&v#gQg|gN30?M@mofv?5pN&_M{^1u_`jHsr#ghvE0Cx)2%0N|dL`rWf3PG)AMd3zs za&+Y7Xkk-2xkU#{-1>xt$vxJBwr$cHhJ!vNk{M+mPdLPuWa8pl z-jHYFn<;^RNSx0s-{lz7O+1p=i*I#|E){X~op-wk;h179uS~ro3{O=gWnl+}czAe@ zZy2dA9X_Jmm+|QyCPMF9@5&`SD(v9uGEtab@IguVT3Na%P+SGL1v5;e_RQ9xve(?) zreSg%5{rFS4^4fNJS3biG^#3Pq0avRceG5lmd+s(Vo^lQ04F3>Ra@k?MuUOJGQSdK zc$30-j9K__}Lzlgy72lWg|TMvbQxkr+3qbBKKlS3-yaH9RqH4(*RCwZp&vID0!SS)Jyb=yLU*QWL$@SCBnwi7;2 z94KCw8Ke0aGJ=Wy!=f=>Dl0N`vceF-+o#9802As^0;y(YsNQh0Iv=M!++_-?7;;AM z@zMwKBV5~;G070tslpfH05X6Bwa|ASsh=n%Nm7X3ZSzP;g~=Me`l))rQXG~pWg00r zYao4Qju}V+Z278muP4YXf7g_K1WXN&)IhcQ>PAl!9w1glIuZ)g*UVaxETkW#AN^9H z}hnRY;g-5ra_j zQr2}(FeH$=4~s0OWpMn7>sH;cu_u~SEa0_Nf(bM}3BtP{Cm}j20Jd`t7n8z~AW#OWdZIc!1um1pQ zUSfW(5UInJ*FHv>_6BWHnuY4%!9(S3^z@6`nQOYjI?=kIptCtO1Rk;2H=j{N z%T^Zwfe50_*@Z8ds*uK>-+HfKynl!wu+c0Wb)Zl#iXdBTJM-meKF7bWR3^(BoIb{^x0*m!sQt1gq03rtAYB!KxkzT4U_L?oL1Fa;3H-iknCG@wciVENe6qYf>T((_T{@FpV39?7RRY)2-{RJRIi$d2s%)uZB+CsS~4_RD_MaC=&f$?-yn>% z1zK7^`DdW19ZxsDs_ou7Wte?BWkf>eE)We#@~v`FezDPk%Hoyi2X!h82kf~W6eg6L z+9veP{rAx$5VtS1jD8Tjj?+5zcaIiSlnS)<-pqKeCy)f|60EbCXU-;?Q7RjZ z;~nJTl-4H2#FkDIMTO%@Nu{0d`HW(JbO`jN=tJijSrx!Iox}tlfR!N^sOn z^D{>o63k_0rGC*VcPTNC6EK$yso&Z$r{k7sCakHw-X)Xi%`2P#0O`raL-UE|NoEX8 zx@z0Xtr&A2CjQ||ujZO-7&sW1q$G(ly}LD&HF{-%`gSb*HI<9R{swj7BFuwj z7s&bqb<;90qWj;^GLU5`9CrJ){E;GA=9IckEfM)uY6|we z3FRj8^P%3kv^3Qtrv4!0bE5BlTqLR@6v_KhxnA5qEdkpsPuota7|R7`$F+bc&qhOBg9mx{{RqcEU12x!n);Z zOXgg;SkOx`6KBa)2+y1xU)z^8QjKrO&^06VS!TzWO)E;}fUd%Gpeq>Th0RTL=|-UR zj~Rj$ytd z25um?vqbZx#1mhBa3(WKB~_{w*7oP^5=uD0Q2BjVM|MMLqY7W!naaud?O5;zV>1M$ z_q}7n58__Dx4vV-GCwDm{{TuUvZJNKx%H!}c_dR{PMq zR=wb@S2Yz1P%1kNlwJX^)GtG+4cM-uNcFX7bsM&@Ij2soRX|afQm}Q^2PfO7BSHD? zy{Lx;(xoifc@E2<1(B`D-Kv8qeft%yI~Jjb1Ls}nr_O41MO42krjAEgR<#PvQ5Aifg(N#k_f|tyMD?}`T`LJ8(W=lfar!735qP}z< z!~X!rnsUfloY5}1jFa7ItaL@nl)CD!g3*nYseeE>qQ*I^uV22$DDfpOGp!>Z5qP5- zV5^lN%{<^#C1V(l8Yvp0dd46PXqi+@t}UERDaHDc2r)FtD^ye71j=7WiRPG2*Wa(4 zVN50~J*(~31mV%;e<22WC3Ga@k&Gpq4GB*;#tAYGTiu`}s+l)v7)EktnuX)TcquU_ zl__>tp|#V{N9n($$%=>(E$TrB(_@2+=;#z!!T>-Vh>RP0=0Jx1>!eY?jSxa^7%y zu8Vf^sZMz*A5|AVx-VACI`FFil(O`T)qeco;Z6Og^POY( zlg0G`*Z}7I(&?H+_#8%FAE&L_gS(}jj7j_0U^_SRbHa`pm3f4@R{BcKAW5$&6{z{v zKevYYWR`+x5cw>t+%o1vUXkM^Wdr+jeA6y(K&CuwpG@Btepipw&+UoK$^gk#6l(mu z;~yB#COk?ClP~eQb*%!|oJd5u{{R&U{iQ`hI5MpYJg&xA@e}<3wDP7wYW_>D*cKAV zaV4XPrr}_Cvf_2L!~)@E2|P=RaKy41oT8U`S3Ix$NmnB*N#&UmzhJB9vS5^$wN6W* z7wlL8a?n;u{{ZQf;{H;H6HxyE5Xhh&6h;e31k4HH`kP9A5;2lV_=QbF=jNB^Ls$|C zB`5jKHB*G494W!Vey0-!JW?T0=wlXfG|23(R{XEutFH{pFA4@)_gC8_Va#|`xf`u) z5K=KFCSZ(BO%{{Sl-(J4a8Yam3aYnN6~md&-8QdpFS4$3Nue~sL84D~Joglx^6lj!Pv z%zubfCq>MoQI!n=0;P`?KgIMaEs|AwATSSG=SR1d$arKeXH5co0Ro7^-c|>rxU^YI z4?rs3^ha3uy7{lqq#9&(BJ4U6Q<=05LqE1#EeMz2+Nz`HP5uf;w{K0LfRtZH*2`Su z=Pa~7T05*d(!;y2FFVrU(?03VQik;CL67HcNtqbiS(KB`b z0J&@*O1h%JsD zq%#6ZSe|))p;zAh;}Tj-O3PHsX&9+6QS_y&3-qkB^JpQ(Y4bKyV;2eB&pw zxnpp-PmQ|Lo|u> zs52vSKgo4v2e)vflawvrx5c zzNq_H#0x5y$frg7l;rW_{4~L4kbOpr(SAYXqCZ^0o>^x4P&=SjRH`>4u2GFBmUdFQ z_1Lhy5j?-z6e9ls6q3F%`8sXfZ?D*CgD>v z(6L!uF{*_B0F+O~B+@CUa7X-p_K8uMW+ea$Zkeui1nHF0sZ|tVmSudoMB{bw6 zUZ~64)<*tUzMfj3Cbt3t1R}Yvr&EzozcJwE;vk!K%dO+Uxm$WigZ|p@Snz+wtQC+N z)9DXoAv9NsZFXd=#)|Vb>a`E_kYy@5adUrOB+zMUFu7dYGuJMO9A7?-O6A(ni(Qpb zqWk3)3Jt*&q6Tr#QKUL_>Zi*)Kao`ujNQY1Bt3%^OWX{DO;%)Usapa5JcU3~O1-K+ zKy?)_(&-9UPPydUs4Ep*^5wsLkUvWT!j01J?*N76X7;n(`avT~<}>*7YDY}7t(0hj zg-@$%%d7OaEmjJtnFDbDaa@)`Piu&gPsV_tdOpc#ntM@2IfbwDfT zRkg0IDvo+&UAkti`Lfqh?zMG{l&?Yp2M(vYzoMp;sANp;;-$seAShhO6sA}CwJb$i z_Q`IClOlJIzs+bW&z)Sv#LcvN#>L!g*A+0HC8ckiNXLC@`5Me;uM7$pniVaCD#(TC3dKTE^^0I4VL4iH|a&OcAVpA>)kV@uHzFlO=id@`Y(6RYx!A^L>%lt?*0 zsQHW;ag-#cX}`*9b>ije0|b-BKL`GrdJ)^C96j&j)#a5(x2dl|&XK~IZ|@v~-H)1b z&b;6ylF!x9kQd%Rjn4PGs@p?H2nyda5cWtz_tFVYr5{b6(Zw{@^zYy0Zv;)BctuVi z6Le3%q$IMmzep7S02yTz0?Fyp0hj!jMH?`M%*FJe<+Jm|W=0i7-+#SC*^1Nb6W019 zacWarkj&*JIk!mTC>B*r%M){S84yorfx@g1u$9Rq3yP>zRaCpdtzX^@;#8CgvTh~$ z>aAFsY+2urf>cfp5Jbp`?JzvOk{2f1*O%Kl4B59wP>W5p1eZnlUHn2BuJ^Pg(%hce z(|)j&95f7;LFLQu6H7^eR9e&;Fie%#y2S%;I&Yi=3EdOa@2pNp{{WE&h&knLye}8h zWt1MJc`$SosB};XiKUuc&sO=;w}Fl&DK`-=gd$r|{!c*h$0WfN%Ibs}Q4Po>BREvf zsRs{<+G~O)^B1M{$i&!zIB2GYNg;Be9Y&(j!e>vVnQczH(l`X7&?c5&jdEM>rTCBA zV{b``Gqo7>u13-0Fu3Jp2a6>XHrc6<^#_H<{j5R5#Z;Jix~| zT&a{|OTNtB%t!@UU5O)Q`TC?wOlx+dxoB6-C4r2&-p zB~k*+j;Wy4wjnsC`a&l2j{_pm@(J#KW5O{9DzBfnqfPkTq>hEnNfv5K(whZ=FXccZ4tbT4~cO=?Tw%SIHqd z^IE+r%a)a?Y8s(+`cj%ys}8USwX)wstT*4cwo%Jliri@fQc2{Bp3m~J)1_GU^fyb! z{xW7g-PFTnk(2B${MpfSBe(Xd`VOX$wkWSl9u_%@+c-HbS&0VyyMtVz z>tWK|vm0e8T-xZpdS%W5RAxOGif^Q9+~^sfmfRuKkF%#*>?BV8(1D_yl)X~RaTB5x zb+Y!lWzsR`P9c{iJqGfR7dpCb@s1_MGn7MZV;2T)VkW|xSq#Y8c}5^fHOet(k<>Zn zo7>V3A(~zpXnh25iDpu3XyJ7NyV!#`GQUVOBA};Uu_W_VRM*YdUdAWI;*@LCoJ>hl z5T8gqMOXPY{qp3{CL&WRmEW9TcvCuXvF~9}Ui^!t6%&~l$2EDHBA~g&=WXO!Vef=9l^2zLw==yaX}IqC25)_ zyLgsm1dmUHV!YL$6T)b^9`#=N#Iwycew>#tE%${aAq*Q{w(^c31E@^$%~!9)0tr?7 zQGFt8liW8=Aq7vk)||!uK}kz`Z=@L=ra2(_ubgmeb<=y&Csz)NJvmY)!V}FYlnGj# zAfa`cYV`JlgP2pFmL~wc6_K?W9M`5$R#B&?eWKO`!jrX7_Dcih_r(5Fk_QZk zNnWkb?1f{-cwyoWB&qc9py~iEr@}|-zvUZWEsp zl?Az4_eY7rKnt050WRKWnWC365ib|i_Ho585dI|)mZ@cw-2`z;B_R`rs;<4md}|Lh z#7cOO`iB9mMRd=5PqDC2PFNbOvGpaUV!LQ%aXv zXpbtb5KMx>R#lY*VDV0d$N*x7l|z!69R&!)KUyi6gHk#S>@&0m0&d6G%@PzDg^aZ! z5W3o>(bW+Z0uK#0@!^?P+tNG&s3wDEvEYCxCI0HR^!Kv(FnC?oWK^gAzvSqIr}DLk zR#j9gKqle91f4)#DiS4RadfSDu4DMU6G*d?YREbcY{)<_WP;@7)1I%)d%`YR*+oLO zoSVo4$+fEfZbvw^ZB!KW-mnS;sRPr`D_)clW%gyWDp&JpG`?yx9I{F%QpT`=gklKh zs^qN-s@xmGD*d~A^+%0zp!dyCBJ^=p&9n1NlVY)$<eQoNfxg=y6X!OhDq5!oQG*Ib!GS^VI6e$Jj%5y`nklMF; zSD%{Ia#NIS3*X>%L}3J?n=04-MM*XtTJ?Im(f7G2&&IVjdvHV-`ck!nBM` zEJ6}mn`$pd-qt4Yvk90J zTV1{&_-XhE0N3eIhu%NhVoW7kjSK0$UI&H>Wt0;(?-PEPh!B|=(?}nqW8x`vN~Y{L zd>_#!o_-W1&=W0{u6rr#9v}TL#$OG5s}g^t{1mcr&50%n{{RwEP@(P9NboG?Jl0P*Q{3@04NTi9>mI_>Kn%6oA@tT`TVr0VQ9b#-8ys<7K+FtnoVk z0Bp~a{Wq?DsiY_&Dg|8ZuC=67-4xU{`-_{V+Ddxv{Kq1Q5Cz;)R%9)C+ zvVvx*RSlHC1|GTj-zwQXEE`7cx6*L@70mZTg{ z6Ewg{CltBNW%N44xSl9tB*za78htZN4b3R94kr*Yu^!+qR zm=jTx=GGv93W-2RAKbbdjfH5#{veChPvHANFOuHtmj3`DLaLWwS-pmzh$@*IfOPJW zBDWbQ{{T~Y*G@?q{$M+A<_%nwY`fB?{Sa0K72Bu4?otHWeY9;oLZqYE|l3)N* zhcjITD}GTn5uRQa1o_pf2bN7iAL>8QFnnMGE!+cNi}NneoJ2D1}O+f z{iS(<6H0&t`X&UArd}hPlruc3DwG9yLa2@tEX6;NAiew6*~T9PxKa!4BNk!%oFEQd z{W`?6AQGAopjPSfJfcDgBhEZ847>$YujV`y;&uZk&O8`kY3XZpB!}{k3W7;p%Z4-v zfkFCsNIXI2xk#3o0e`3{WSE{+TAwL7J@qDixjWuPfX#VK%9Nk>! zbJ3E4*Q`>-6lI!T!n~9-C6`Z5Ux*JwkxnN}%c=T;7eXr*=6O~2FL*U9zIUo-E30S* zN~f=@)(BI7Y_8+thOt`H((2{VhGmz$Am-P#XebI3%vFRUb?5v+)0s|pMTh)*XW1&b zK@>uj0*I!af`QG{qzmS!*G{N%a_S)Rds905uDQ`kDfKt0w?SJ`%fm2NW&ui-Lql~c zfx&c8YFLt7CP>FldNE%k-6(R5?k$xGdi$+oDikF$S}4l&e3|3;unI}Yi@%vX z)H)S|tJM<{6fo%#aW{9)4;~=o=`X$!;q}BBrNDqed?c(R|LdpyYdq z$KrG~B{#De&o)HWgP*^oPlxp*4R^alo)&X5*C?03Vq#2qf{QoAf8mP62GTJUOk<3x`FB_=H!P7&QS$by0Rm76wWS<~MPOS%Y@rGG70=u5L`&Uz z?^X`vDwr8jPgo%kSq;;b^~&6$RTm3?B}(=>J3$RggUJuFH+U>jGw$Div~K&~SW+^A zMUM$*>vi+LREga~nM|m5h9#AeOQ3xdD?Re$VtELrf5%g=$Do3sEc0j<{{V`*UO#SY zKXScbWLK59^ApQFxF`y1_*(7KKWG_vr=F@@Wn7tWPEq?a@R_idVh(rf68`t?kKT}V z1B<(Y@T!TxrT9_MGKV{&qi{cU<&-ATW1v>63mDnS13dS)*|q9v7Uw^{%fCsLPENiw0O zLMxqP>1@xqtJY@b0?txj_%hosE>@mW%Oo9wQ7+XP77UvVR^B?7qC?#o+$riThyl4vkvhZ6B`wiabsp zKheW54BnCc+J6m+iHD335;#F>U$jhk0G4UKj%0vJx&^mX5#l5$Cc_^}@d8M;sE4v> zjUE?>iKLoz04NhygqOGkB}Wq=1hyv@9N_St0#;fR!$I{XO++b1X=Q0& z5iUQ{vxNJ&YIYE2TthV%sY@^8nlu^D44@7!O`SgJ9CJ!X()abs+Q)>Kh{$dI-M6+r z1WPFZ6SmvOg8thC=sCxPAjqHO$W;pET7XF|>GdgCl>lq<1mtT(3I0SSUIXSB2Vius zD=;JiV}w&bM7b498u`GuAq6x8*l@KP{8Gge`4#J`ucx6{$?hwc-%IHLeJsK6>tC9# zp@8K1?>qB^S*YG@s$AxQgI)r@eQ2jGC~uIY3L6=UoYetLno&idQm#wTk1V!hHy7ga zuONuF?-|v%*0$*D0M(G*)<9G>5%R4P54q%tUA=7sTBV61xu8A9aC!E9`Q;3~4cQj! zLYao3qQV{}WUh6~s=7EtFy{Ln_sNEcPj;POK5tk)Iq)fR3lRY0WXla{_@5#Ye9@pza8WT$qQ)H+q>D8ix%$#$^=bkM&$M~O9-S_=N9Zz%A%Qng7oYVW3M(S?D< zrfr>6UW|t@3oJ|F!21vIbs zDNQ5&ytyJ-70MOOS*=wRAozJsSyJ|IyC7H?5&`@}JqDyx%Q06i`#4Er$hw_IdKKv( zvn^BX0ezS{V&s!KYslqlV-Vl9{%ED3p~ga@Y^j3L9rYcpjT|Z;33nj zOD<_rh&kul*R&w>HS+D{00evAw)KG`W$@gghqH)RDt7hLc_OWiGOqeZ-6E>Rze=xWE_1{P&7r3g7`W}tS@jA^i2bBpHah%>` zrm-=aSz9IPYUOk2u(Hi4011hy__s4hxJPJkWDg?dVP#>%`ibQ9RQ4D;wd1MYxI}fk7)2`9AWw#y zvfi&tqZ;Zj1w|YOOzPIszi z?7sZ}00*_4=GonVfHOwP#*NtBEKOh`8uHuqT%gt_m2XU`O0(^)AG8Abzba50JxqiL=k)Ib66B7x=Wk89%qxCP*{6~kK$&|}enAdvR zG3K68z^o00*-f=(8rm=>6Ui*ZqEsVg%Y7pfZ>#CV)e?!5Ro9|ah>-BA5iq3$!r`m` z0H*6h2NVe=`h`A#Sj>2X0Q9S%KtiiVE6%JwnghhYPZf!Dau4yDSBLn);}aK5z)+5X zI9W(0tb~SfTJ!aYo44|XUUKPfa%ltr4M|NnvE6@(rV7CbUE_t zk@}Ka16;CmP=I&&a!M*GwE|Y9TD(6>nx$AL2uf5YzN)(C9ZQ;W=74le`IArM-8Six zttlBWTj<98`nsdTt?cKq3Qdttnw2>K!dnE${Vhu!D5NNdOtr3yYd_6ln?sV>awsTj zEHpZ*TF6)3lgS;Cf4OeAeL{a}vxXwk&#D7fA)MuZC_}H3(Durpdz0&(M@q8w7rA97 z&K!#tOtgIJA;}p9>Qx4Gs_|-z0UlOB#@9JEp0r5eLdZGQNq1ZHHd+`bO4CpdYB|er z9`a5TB1P%xrnTSW2pWvhA**IzUUc_w2tBG?^bk zP5EgP&pe0eGfcMPRB_JjPlyv7)eR~5-B>}KttC^NIwE>=x+F*@SARifp<9*BsRdOQ z`8Dgmcv7SSdY@0Y=LTX*O5v1|^rx3kJfJ-f_df_-O1al2V1?i)BtMq+vBZbpy}ue{ zIM$W!Q!Ay7e%wv1a)mSYcNzEdj;xkGd#Hdi8C!XCioU*A=#R9F(xdEtAe2f~E-b8- z@<6#f(-T8Vvli+@mFXY3n;f0WzmwAUiDpU?wNP34B8-*I-WFm@gRIW^RcWil!cZ+L z<95RV{{Xm@gkbInF@^O?gsElw zuCax}BtQXut83&liI#rkA~z2p^tXJV;RhtFvZA7#nwt6&m5DedllYdVt4g=9tbXv4 z)TWhloJos@T&}4r3%Rh(U@Bz0tRJYjaYIV!^Kqkb0CxWXn`;~(pIDkym`fz!lv%>M zCjUbRp>)pv zcJo*z6hx?&-;@EL2`EDRWIEV6iKQZDR8=R4>Tj?1u*TGj?*>&< z#8>G+j8mmfodf`S>dQ(N9P{N9UqH|O%5-agaT)}9oaZ;S7na^JygajqskOSVCoNak z_3!lVABn=4$Oj)M?QdxPXZ<_kJU<-xfS=^|CpFva7?Wf8WWxG{q@8YxMHkW~#Fj>! z8G#QmK<m z(Fv53%@n|t&mbYDlp+a0B=K>5L;$rXi18K@e-ufj5|x3>no1dvBY1+DwRsKBuybOwHtJ8Y4 zexEtRM#yh2(csaKF8#xG^+@o8>6O7iexRrON?mB^sO(}Jw9OOFFlZL7(#+e@V0m+Wb2d#TOstWPK_^$@Jx`*Uklz`_bqnzcT3gCOc)VXpJP znz!W&2G0KghVoc)b+eHDGW!_eQ}u9~o|ke5tN>etvb}a2r$~8dwp#goHzKjbYgNCM z7vr29Lg)cH(&^R1xbD(02Zh7l{{H}Y=QEUA^+!?MqzC1%e%6GdW$DYx`alA^<;wdj zM^9IY<}&?ALeMJJEuL4`KinjL6V{$wy|O_x=QIm!*&J6R-idYaov>+0L)D!0hSxNd>n=72iO-LOh z9}ZP=h~yws+u9A}k)6o<^XH^tJh}GK(Bzvj{6J-x&@ti6lT}9K1bsMoWd8sum4Yow z`&D{CQWoi`=mk9c2$zH-K5g&m$)Fs*+vV2KCOq9M3OdIQMd4KNnrM4@Y}O~057NBp z#B$=PH)mr@@hyATO>WLwImcQmttkd+ZVKi#EQ#6jQfgxAssbP^tgve_Duj%hpPi&X zJ#6p=PH3H~TDC7h5Q;+T2+pVyp+4Ed39rdVH_dFls$mjhK_-oB^?UNvz$5t9OaB1I z{{W3Lq!B}68H~K@hp$*BS0pVtTH~Qh){!bqXT;_7lmse;9*xcjKi%~CdJAVyC7MtA ziYHo7(L&KE+5JwTM6rp7G}V8|DQ@Y`KU?q;c&sCaWdH{LDCblhqxJs)^wuYaClXmc zg5qkB>lo6{EVE%u7Mv>1sQg3SC{;p65A9+O6*5gBSpk$!b_eMKWe6xl#mEp0^M3TE zVKlrleOxE$L;$OxQYC+(NaAn^#WZE{{Su}3jY8}1QHP) zNOHuE7f@6Q3Ss{M9w0{Y(@N-Kb z23oXu30h1`dg=C$0;h($^Hl3t@Pz{>5`A3$p_wdKpk|n-6`Ty!*R8d2Y?n)Uk0&aR znqC3Ebtb<}HN6W8go{uhL|oZzQAXtz`c)4%70ewOJHq60{{WYg++4NDVj)khSaLNz zg^;4a{vi6befmQ3P}QRRwQc5|e6AS~nm8VCsn)7~>@)A21Vv)1;+OAQ^@iX9C>m6v z1^@>0>R^zlu9x*UfGJXbOO|DSR6t27ld$iZnCWWsSh>^UhgV)vDjFt4D&`YMZiqlM zU%ifLW%PWE5}#b>e*3pP>C_Ig(FnVrMhzG3#b18E~U}^ zND6NNtpx%iI5|3dBWD9cku2`7qMZc{4$7_%n_A&{Bf{Rm<}`c;G@xhbutL=$@rZoe-)A1l)>h*6vaPPD`oHZqD}!fVV@I%;5+bt*dZ$Za83wrta|HWwqi!AV@*7R)&n zZLB1!OrP;Nt59-@u%#+)+(xCdTXM{i2`q=|H9u_NFiCRdmik1ppW+Hr>QygWa~6Rt zqEW|j%HX0`W1vARJ<~hYB2cv*FQW3VT;PxyTvSx`NEnTkd77@<-X)rH899%VBaVBP zqgPV2^0O=njKLf|li66;H?@$CyXy(X_Gq~ra02fcocu!=n(Ly(xA!!Pir4rz%+`c2m_i2XfgL?|V;`p1G}D))67gy)h9 zXC4kw!W07FvL`b>?9!P`sG@({BRYy*?W+nZtrZlK(@~{So~_}5k)Nd4n_jqE{$(Kz4VGD za?h5$&z<8!>s@j*@<0S9v-0$~FgB~R^9m>(5p`Sn9i%H+0BLnus6vz^abrz zhq{j0t+<>9Tfsp4+AnC)X-Y?;$X$!kHGe7xYGRUqONFN7W!{nG~h0nRd9O0E~zSXLP+8 z?9z%PThyBEpppEn)==L0BldyKS#9e|(?bb&>E&t+i+`2Y+93GT<|cJSM7z2Tkm(`_qjcdsTn1mXxn`S0$L!;{k}E3Yxtv$leO zDS!&qX7j)fgn$bNy5D%m(0v=^GNsGB< zMIxx3pU zG~XyF8|~YEaAxhV&AGugJ^uhI>+Q-ARZ@XXl@ZQyLdsLiZ|7*5dBId|LA8EsQum3c zAL2)vR*Kp5XfveWLmbg}-X`&QfSw|t(X|`vAMP;c0ao0+qFJT?0QZ@)(^NBo6t`=*m1a11Xe)b&b=Jf{r&Tfjx(Int=Hz*~ieLD3Y?hS~i z_KWxuUGU~uOX?=p0q|z zNVeAN&h@RD&=!K?&6T=zpsX6Voh$xGP`;{`a|D6KmU#qzP!#gzrQ7WY#RG5YzfO=t z>2Gz<^H?40RZ9J#0`xq$zEeo0LMix7ubV&s1{|yyrb8ypxJo#jO5j%{PvuQ(<_t^! z03^+S9JPeuc?yYDO>6#6q^Yg$iukyHxg_Rb6otz`4eyns$M{i(4ByIGhtv^M@gJ-H zgW>!@GvUsYIpIXCey89uyb{VLb)d6~J#~*8i;0Ci(wQcggN9nuiBu(n%(|DXVJ0RF zq(AabDNBDFrwImPPy$oxQAP0b;{Mqa&ZwXQ57MTT%#w^1bBt-kxU+DY5pb%YQ;1D) zLM_dvkJ4vM52{rKQ_o28AGiCUBb9x5g$G@j@K|6OIySrKAE$&ewNdhC-!4bM*-fg5 zjhUm-2D!(B3x*vCqSTiNUs`c7W~47{@?dTfhcnq>YAaScHJA*Q7t)8NO#vvHsVCh< zBfp-M9ID|6G5yu3qEMs#UW-|{Q*lkziuub2J%#vdA9!?krk8VmgYOnzcjxwm zw(9!)TPSmtt-TM!M|N%NudN_3OoB5G*0Wj`*H1)VVvEl+2vyBkXo9r9W+>HFD81~b z-CRPG{l00S?j6WLnV_$eDyLPp>l1qUW>rD+rLO^W&Ah6c=pirf(HkW0V1Y(dN2@)K zw$8PJDak`W-JWF$Im7I3XilK{`C9>zA zG^V}6v?#Nc0G(_*L8=V~!_elNR6$D<_iD!_H;)u${y`ou% z_GuDMO;hjf25gJ-(*1XmlhZdn$F*#499q!ttFpE85sD?7^UVCj##IQN;!p@YEO(yF zOePYq7jT>H7)8=@W_!1juodpnF9Qm4-&Cqc?W#Yj7zG^3cj1&wT9M(%0%0hYNtRL&P5erp7c&YJJh*AZ z2;!1Sc&6eLSRy@WSkVGMK^`vxX|dQDLd(R)!-xBn0`HNcBz~8LESMmlsYNM4yGAkN zoPUTUh6`YRs-rNVasraR2uz>}lcLAz^AL=*3)(ydwIa%>t*=Fo4g3^~1q)SR0;H;V zi2hE-rGk`lgo>(2*dFHn%*7_=|hSdF3rs z-SbPc9E>spUK_SqxuLgoF7CpOpDv$0W&SeenYFh_8l}C}J7=9>e;#|@f)}P**4y|V zo2K(fHYuM^&pe@B6%^8ozFNqvD(NXqe3D!j4B1Yn>ZtR7yy4^z zh&n5p`2fSo_teE$dqmQSYDaMZnS&5{rs!c1FAG$lCB{QjVG@`2W^$kVy_w*bH>bYW z(iA0y(=^V$R4{{uS1$Q;^M~Kh+pKXN=NfhQ-@-*zg%Gu!yv!0+Emd|^O%@fFnwT@m zs^$WxcjlS%Pu-WV-u<6C=s$b`LR!QN=)3bc@*aO72r6I7(LOw*m_Ye?iaQF{KYI?- zi`9uf`{f*9-Bh|Knr@La%utWaO+50_Vb%9-qce9L?Z( zoG_%MN#bzpCs)dmFN&7s5cKOG@36rlQN%?{CjFvM5>M5`B%tYD_T?Y$O!BBL*t{HB zKe$aXD2}PmFP_i=oFD^LeQ(;G;}ecVEQ2cdYiaKo9wBH+)AFdAQz#P~5(_c%^7tkt znq^f!fOI+ZZjebMCAhaJ;uR%BBlWhL(c-i>T^;MylhP(B%h4Zy5CwAl?`s5BT|E6724@@{8Yi>N@=!U;tZcnot;Z1!KqyNt)gi|`IhHsnoryM z0wZK(SOOIahH;11McxK_8IRz05ARfSf7DNxn#WGHlOfEF? ze!=IMM@uYq z=Wf|1ZwY=EHS(!IGUx#1Pz{)|xS|$Ndl1wmY*M9pQK{17L^Vbp-axYrS=n4fv{$Vc zA{eewl_-ZhXG_&=RNqg(e3qkPAClKSG^g@xouPclyJzuBA>_eVn$x*ARlHDoG9cK$ zkZ3_+U(Wi+p0qUcE0R?#VJK;$3#zX*=DkEEytx3&YUZ(^kbz$GQ-{AT^s!{huiDQiC>Jqs0IwA5YZr;W#G5lom1IYMQ`P<)i?fUVHO|DOzuny8AK)FLEwTytxi{F*LH2KD4%}k{AIg_K66Y zt(o0+Vrf99zRvoR9G@j8+~|NmSmMr_g(}xxVO?4CpAu0dpnXd*jv-5o+REA%qb{O2 zkru!G)ob%4BlQs}1rX(0qNU!qE~$8;sy<{7U$eoOSvj`~RaJJ@crTGpx7DEjOqOyl zGAk!1L#VOdQ8)^sWOvt_Y{cXi`+9xeCM=4pqx|U;22f9SUb{Wx5^1DkFDa@XC-H{} zxqQaNVfgtm6YE*52^nkmykleH%QCu6%hD(D7?VupqZ1g)%FuDa8|@grBucKDYajT8 z#iTFzXu|P?w8RnHq<^}@4ha!A>T}Xb(~$#OMi1&(hxyLG_Yo6*q7Tx-)%(Q$I1(ij zdHcuvwn=6}Jm7f1h)bnjv4`TwEiwzn4~qs-DKa*9%{xHxB$O11am@%qNAd;xgA(|O zu;xjrWq&%xE+p8pF&+5`!X6@7{)fGvykKIV?rFDMcC>L2ig}y$PFCpAEWyw6dM|K{ z68emf zytswsHMG@q^VrS|ilE>B09Cy7_j4btewBgZ!Z4UB%^$9QoO}?PX#$5*2K^(&&x`xB z%qB%BshRuVM~Qqa^Wt%wLn#H);M8cLjg<6{)286T#FWg)g<}*1RaAECf|KH&oRNFU%FUKD|>_6>V5$U@6_agSk~<0-bg98CNlQu~MFXx9I@? z02XwrS(lThOVPFT&AZTS$5#B+d)WxBqpfeX=?pnDmvCyNlDtj+OPebcYbw?L%gOUd zuBfT6Cv*&_U*ZgRHSR3vo{FXwjCS5^Ksp(`1- z_qK{=`YIb$++-@G!dz~;jjR?-=)Zcp1sM)XZiNnxlt0G(?$w2>KGD!qzg8+nOr22u ze@RdUs%n0#z$BV>tzBsDP-!!ji&3q9T=G?}gl{lgrPhcgPe1=77dn9-6rc&u)S%|&eMRidGe5=8)IOy+y4gQpE9u?3?I7=av_1Rm>Foff-`mrh!I?sjTjWuyQIrIQLXUc$ zT~7H&R~(mi>jZKcQVfgz%jAdGddC7cBtL|v?;0+IxVCvAs4P|x)G@ItdL@`z@AU}d znp6uf5*I$U(kH}MB+cn(YhDcCAXQ6q*@>~`9!i-h-qt3@l-tp(`16cO#L7bSKAGEX z6Jm#3ZQ~Ods>+BhXg(wzGj;Qcv1K6rVCb>q$l)_0Yrni75sDMaF#iBi#QrnPNYv0o z-aLI=CD+n1Jb7g=&L;74aIt?_@jf(6LYExiW0FkDiL6QE60@AXZxi^rrXNiHL(fQ` z#^Oo*yZh|G{YrHDPD}9z$4xi@P0u)!#7-(!CGn;}Z!xC+(TC$FnAJI$!|_RRzg_ge z@ebYN3mnfV5|SXd6IL){{YFpVsnculO)|Jy2cJZAq6HTW@2)W z4dPNjF-O(AM;V#arA|$z#7RD18gKApiEiDm)phresG7u{lsw4Dy8CtS(gduwq4pgL{oxAq%k9s+AbEi_ z0Tzi^BZwiWxFlHQpO-~|I}Xa(bq{`#Fa`VDIBI#Kkm<{BM#Q*u2$N}DV+vs~uhuDb z7FZIg0WmNS&_B-mIhsx8XoU){sGQ7CD$3;@cDah>AIpeJ5C)j<(_|p>$HWP!J|UXLbtuSu#rGass*QlO^NU z{k!}VcQN+OKHb}-D|Jq{73<0!RqLlfiRo~Dtj4V1K6K&T;0&tFso#>SXU--7eOhNl zN-w@lAucilAZjb|POvSzuiDLI5MJ-5y1NR(XOj7n%;lE3Hh)qVO61mFHeSyL0+Y9o~4LiD+tD<$IyB?^bz91hP|wu z&zGRKJ{g$IK=Y5&aMEEh38Z*g3w}K!P|du(AwaeM*E+q=I3OrHq34;2mC-zdnwIPW zSe>YF72o51Rt@x}9HO_FbiJZtfwH(gn(NQr8&AV!WP>uez3fGML$alpv7k>Z zuVbR!koi;9dD00yvOjO~2fw7)jr@g2tBYBeRd~e4B|?Q!t8440{jC_jGHC)YB^e`D zu{Y{7%*vg1WB&jX;i>$OI6tb(X#W7j)$J4b@iL^*H;WTWK$r=Jp?AF_6U59{>T#@p zyg>7Gc%K{hC5ffOKT)X6U^UTadS+f zNx%|`OU4!)<<+CZiLGSclz+Gqju}uK_9A~1i6~W%3FBv$c};6d2p%UB7!D9aJw9WD z8cBq~z2aXHG?M=S)eGv|?HE2ch|85Zz{J)+cZTiPd*v7tf-H&OcdP>}g>AcTrqMj( zE~=RkXXL5p63z$&5VlK%r#+>hOsmj8XU-{on!a4%OypRhZhIehj%PY#zY#@tKOIZy z^AeEZ*yYtijcdv?`;N8NCYOcnz1kAneAjs_PBrIFmgpWN`dJ@k{PfNQ-%h1E?|LF>OROCP7sPYAYjP5kqZ(xqtwKT$F})Y;Ie{?ScL-Fd7i?=akLJrPuYDpQQ<(6MeUW5<%T^gFMRz$pKTBT@nwpFTX zV2l3%ab?SwfU1qX(lI}m3O08<{o}yk%q9+t%X-I$L=MQj zz2EL3a^%(1FS10$C~(|QgyUzW0Xjoszwd0FhE493{x2$n7BU-K6iW!xYn0PaG zHt)Q-L7HD%1<$3tsRm8^xJj zePb8KOjXTU_vaJ%nXA0^v5AgroK4~gEjPp;7G*4bxxn#lSG&RSlBjoy{Ajt1ZxMur z`wv%)KNJ4|HjHl+44+KTsf<#gNrH;6&3E$JMA)-erhdGeB#CE5JV)y2oA>Se=`qND zcWk0r)KZGK&W%Jp?jVCa#PJ>$$aB8^FvkJ0)px$pJc40MRDDr|D^qN%ciITX!!l4R z*=f4Opr8QmuoO%c^NA3BRqeea26?3hW#l%y>lk>6lNif404;6&!l@40?|y=5 zOIpKC8{Q@V0H-(k2$pUqOrLvbWYL$?(j}Iv5dZ?dwOrhr#Ok&CAC2h~%Qfq1lvC5o zoMF_taaZ(SnbCi?3W{~zG)0JYEXV#Z`c&ap5h_B-E@e$j>quX^X5HkO6W79x1U^+ z2Pd_;YkJBJj3E}eQ+>T?g3JfsU|#%k#8C?@D0_G!KAH|cP{5a zC?wm@moG#_iRw!~KAkqPh$`9j5BJaK$4sE`)GT9S&L_!ylkpx4$6|4jJa|tR#u@3Q zuM$pMGxton)bc{Gyd&!*&>_yNOJ-TS@el0*{{ZeR)Emkrl#1`JaF7A~Z{sJtA}U_K zkV+D)sQI~U*}BaID&-wMJ{V^JH@Dbt(g;L-GOGakpc=5OOb2JKSzg^k7@W7~TA>{^ zjwZ?1c2`^I$rEBP%9KK=dFf@XB7YJkZZFSvj9(gx1l^cK{{W}}3L2MwtE^AsMBm(0 z?|!k3<5KZIj-GOgP;QYwi73&D;%8gNFN`2>w12oW6;|6s*pr*I9~HtXVq9ecW#oBp zNSnlJ@r&Xn%#4fu(hrK@mzrOGkbGbHW!j$k^2$GSaILcEy&_4BzzZ)uUzXM*v~;9~Iu#a$BGr{6duh!$S90>6x)q?UY=f-pF^iGWp!AS>$KgmVAU&s~Bs~oTY z01*AChV-y_AU`J>@1|l9Bc=LTbZ){JD>B!eb2RM%DVRmo?*9M^jc6xB435HCnNy4M@+fA zcyL637JJu2QYtF$0y?a&PU__qK?b*Qi=}*%SW&PHhU5-{H9{QVpqld;4}M3>%8Bch0H^il@)# zV$36cv0p!h3GxwOj@fMI(#4=JZ*a2mwNfu~T!7RF3KstWB>IZ;5x;J?yeHdBGXs;8 zThbk`cO)Z=Ba|k$2pEzy_UE#;$`KEGmK6RdJ|H*KyVskSckaGwRT+pCqu5lwu~anb z;Ie{@U5#Hm7DT&sE{87S!l@Nda>4px3TJVOLdPJ0uw~1ruJhTOT{pm7RE3K{X&i-!b$sBV4``x z^p6T=!~mAH{kG6kGtpYzuh}aYcwwgU%c@qr&Tu7UP5fz-QW$oGI-cFFu;(_WNoHpo zwvogsck-!9qMtFCiH*;al3l2u{{T-Xg_OEeyNV@sLNX}A0p>e=)NNh~8M5tnqSQp> zKFcqX`^3|Qa?4fA+qkb;{6wQ;%WW9mFv`DDb$Ia}J0g4Q7``n30F+|*&3<>Zf#S}7 ze|W_43JTX#y|fHu)qJ9SdAM|gIV!P@`--7bFy<=z-{wDck$u~y?HGtry(SY(Ln9%HC71&(3SF|#@~xyK^2;d=dn)>m zPe`8{Z{mqZO8LZx=yW^ZwcvuhR0(hUiYT%CxpOI=R#ssCno(2QIC!OcQFq=B47B~p zxhDJP5@5?JCNW)Q+3ga_l$cG=(wo*M#hSqgyB#lF)5;{Cd_wQi*{JvU5U5a5Q>}YJ zoK5}QDO>&GPpEx1c<|FqT4F04a*4j9_=#nfbMy{xxg$9J0xV4SvyuFqtxs z78|U1Kup>V=>ln`oB@=6;guY`VB>-l60N4~5`o69HTyx~;bKnyV+M08A8z;A=Mx3H zqL=k2ez7kX-+BANJS9ixRNu_Alc%NfO}tMx@};l+sQPR`85-;5%X&rlR>^LD{rsl{ zQGx|6&hQ#m`jJAymFUy`N$(S3QqAc}U? z-zOz@Agvd!T!!^nmT6DYQCN>Uj*N5VAI8iF#VNaiQoRfEpg`S9skIACoFj$qn#YNk zj|+gx5P}H4(PQ<`&?oS?xc)Q4{{Z_$CQvGo;>_66&n(}}Y403gvoRB|38y&y9898O zPYSblkJ6@KRTw*Io94nW6oo(HK9(#;)P;s#OHh)#^_GIi`4F{vf4fJDpy{Xa(Dqfi zMvrn-^={|}U?XHg3lNS{qdbZ?PH|dh>Ikh>H(kw0K=B{h^NKNU#I4xcG*OXg+`{@m&Z0BP1Gi~&njm~6w_sB z2PAC5tPO2Sa$hn#!lxyZbE5gx_he}CXNFhlsgE1PCnU#(!82mYQKQ3Pju}729L5rGf#ohpEdKyLaUkO& zg1pKFXMWwFWGFiww$=$E!%gYBwO=TxLwbuu^i9^g^owU`BV9DI6LZjpFPs6x=-CB8 zi{sp<0`BgUfqq2J~_M~fw1 zF?>>myiej({{SeT7l`k?aTL>>Vop*f@d0W=M7Xl>@e&B+@#1_|9Ig)tU1DDqB=S{y zMkL{H>DczuNH~)suSe&qwq_Kt7PZ&@php{{X1vTxFjtSgcL^Q%EHf zR>{9?qH@6rCPi)^PsXu^WFYa%_C8eR-2C`}97HBvce5Y7CR?yWossfR9J)vC%4G)r zd->%OVoC=JxJz?YdWJxqjD08xBF2D=Hc(KY6DED?Y7^ie`9}*>?!H`?$|ja$GKsFi z50aa8fq^{V%McAyK4+B&+;~}l{{YQfqF=mz$}uNZmHBU8Q8<=aSp7w6#wX(|!f5I4 zyRURm>`hlRyZ$=}!Qz+m`1rhGC}~Eg;y7h4YQYR(%w_w09rTHYIhW}hXu$o!AQMzA z{i6j^SjGT?yJ+z8$4=JNSo`mJz>B(w%gVW z#1E-7>ec&bkP4M|Uf+Ks40GPz2+Pq#eFQAkKpA;A$7ufmwNDfMOr0vBxlwWoc!6#c z^rD6QZ!%`#WBx2je$eEo-h0)c@hwjZCjkK$F)$14)U0H$#5&M2FQg-$3WfrfYZml6 z!Ier(tyR}CAE4t|azYe|q~9`+8m2-E-uqXL96{{XdIg+K{c zLd_DQfa5}(Mu3+pf`+Tuz~-ig?j1banx$h*i(S;_ruU&lW zrzX}kS4`b@zYsr&bLV}sv<>flqq)wAh3LmYQ=A^TUo`uwT~!_)wJ4nGj*RPWR*z#< z`}ZDMyQNss`wapE7e2J}H6H8Gg{{*{Z?piNIqccq`9Wd__M+c1&R`(&x;z9! zLDJ@==JnS1gj$P_Z0-oIjTO(b7aX~5q3oy8IjFPMZUKzcdecY61D5=zHuOG z`TgQz2TxS^fVb!c2StE;z^zFLKBAdAC6>DAkV0KxoqBpL=s6eYrB}(i9U$T)O^8a& zTF7(1KAq#l_>n68PeG=BU3tfd@g$S=c8?W|#Y@EgB)S$6J~t3M5ydDjVW#EpKxkBa0D$-+iXBE-8>d(sTAoLB}&noIF!nC&ijpGN8?OzLA5A z^plY9&7b8u&x!~nTn6>!zES&lvrRV(hx1=U7*b3W&Ja+0-M2!xwCZX zmT*BM={wdX6P1>8ND@k)&BlE-j5Q?|l-~6>jv$5KUH7C;IFyrp?7@|qWGQ4XzMfGm zvz6j11Yq!jg4Z9I!k>h3A8quBakz^iN>VuSE5BcEv4P@g#HU4xJVb_OXUSs*U}Xdr zbhHT$B)yH|Od*EHUMM(j6J4GAMmgarpnqNVNK-ee$Az45N~K!$`@o)1^LbhX($6iO zISlpRNR#SoP!Qg2`H76u&OVdQ&9l?Zas}_TDRN0_@&-~}0c|R&ndPXCKkb+?qUy;{ zBW_W^81)O9TY16yOXv6Pu@eAXCrf(>m+2&ON3G5MUExZMviaZK1}C`bbfg0+A@g4% zopcUh)w!-+<1%#T*d#p8dvxi29zVI8iO;d*Hi#evZ#y?E#8E(F%Q$c34S011gOkEe zIHsJEEl)xDFl6K6oRlODESolu^;hXX?mRTupggrG`$+NFLkAp=7gD->G=7aB1Qq@y z5Ht7Qar#?JDaQ4hGuW5dhEB&4}-?sl0)KjaN6h(NRgQE0A zxuIoP7A(U}>&g%zD^qqhzaT2Ltxb{5I==N9R_pYKXV02(($?dpn@ zg?r|#_BUUq{VPcGaDF4Ae6PFxqsV7Yf17kZsV9ur(CmlfGM}=okApL zI)&S%{a^&SKOE2U=H<;Tf6h(Hu3fJRf~tWXJm{TG5R~cWtr$}MKzZnh)%aL1%nA$gfBxhd zy#h)ZXoL>^z&3I$ewcMaEn6;EE7FiSWsuH)v=Jy%^;4g8QD{|jTBg@+3HasPVkZ1^ z)1vvto8IpWucmwUD-+D#YIZ!iM~(4fPiRB6O_0}n8iLn!Y(TU;+a;s>bdFBDy@ifx0QN8Y`5dQ$uSwi*-`r0uk#QnwL z;U7N@1k6K*Pp5szu34CrALOaed(g%&)(9bf+Qh0jWtZtUiN^s^IWgh5Ny%&Z*{F5h9xs_)2v|2gTuqc^;yX2tVxMHj4TN} zN8{oLh?;rO?$9Sn0r#Y1@y=F;FhN(mV2Nar$Yt*zx~Kb6WG-M;3>-yY8e!vs`?@KjmGpp&?Yd`XCY#KA@m(`)H{<-$aGsLPIx2 zqJfpuDDn6|y@5QOBkGikYUv;9Pt$QcFOJ0Gk!9i~X}ZVhz93;@%PlCI-f{XSB-5uB zh%_R)M}?FOF~n@DdDx%;2SlQ$)53)jNDhcD?3{>UP#>9zXoUG~s)c%#jMxA(RjFEm zbV3W(!U_;AR&2SYhL*e#xrEv}r9}|0H(pxTRDNjbba<|NR;#AXU^pE0<$-BV8O<^$JDx3jG+ZtbEitFOol8_LG@{gKT|;t6OtLR~WZjYImMnV&^sY68Snj$EPxU6||KE1UC zBOQS$?0or0085STu_8#-y{o zn!uF_bL-FW8%RYRa@nj(Kcv*A?aA*2pEq^#T5Fb16XF6qsrKJt9xui4%U%4(iN!N3 z=e_$zJ|xOe#x5y|xTb+D($v8^#v&8HXyNM^*jG*Oc8&}~DF~YHpQH>jpiF6^Z&;Y{ z%foATU3R*`{{XExZ>3yPF(mpBTkW+^XqXg0H8F)Sl%WnUlz!-yz~_DT z%yTJ-71cg>q)GHYyL;~OE!C5josRU0d%#&+lz+LJPy+ppnFrC7|#horA3mmJ) z9zEsxq+$4}iE=$72OeT6*I$dA+COsBOxjheZh7>Hz~SPT@p_EXzOgLd@n*|9no_yM zy$>)FkS1x6t-CWT9<2v3DUoV(_AyNm4p}CM*5t5Ve1_|>SdmdL)0ta7%9zh9Fgd8s z&&{5KQCo&bPm2pRkU?6~zPoQ)lUudz*6g-V3dBJ_3t0+pVNPH4s2-x6cih1@cdHv zprIYF>Ad6g3P{e(wxWJx!^{5wN>$2;JoOpVQeFaF2M^MVP;1oohgWo>W&Bj+Qig@m z=`GCxe;_YPI0!FQUYT;MrP&q27I^c|qp;?juNrM%Zyd7gM%#0MR0|z@(Q2KG(jAa0 zi?y#>(S~;bP1{~$N2UI<6m{O%uBtUK*86*UxJob5$Mx0K|5cC<8#rUr+d#VxbkT zmns$#yAHs0^NVz=DK6Bpq#s{xt*E)HC>y_(YRZ6G9ZlFGvXwka#i^f|h5C~BWFPyk zi$`*Gg0|x3y)TjnOS49sI+}mm`GjoM6wyN}vA2CKKvK*+lPj_-=?8CGQ1sDY2QO5z zt9x|yB?U5c)FKqqS~0ML%7VEC_s}6SqQYCas_UL~y~zmz>8BR?GJ?+P5(8IMWMgE0 zR$QSK->A-ks$9J42d%A=XS|J32Rz>81D@c~ zRk1^rrkeA;qFgY_yXkKH*+v24;sHQ(-^58J0Sk1Sl%5jfgRcF`-0979Hv;pG}=3#dx8H3Rjv@MvJo^C&cm1 zF<9|9>aQ4>y2DLf?c#r;49c-T;udAk%lc0#C@iCBD;y~*t(sk%&kL>aP6ko_^o;(~4W~^AjHs zCLBYVZDR`xd4lI$`bHd+$fSkqlukc%0E~6-6L@tiDr4z5TX%%^@(K|VF)_1 zxKZxnm&!Qhm6S@E5bx*Aen-_SI^OX<7Z^eqYfnA;%i+fgRW6&~oR~Z}3a+c@Z_*`| zK_0EYv`&I<6hcVg0ZcvYDUctIqnO)k}s4UZ-oa26mV zv|{+IPrG`={{XDxVbA=FFmV`PsZWjdVoXV3oYt|2j#On5;wfZaQH|oIl2o1AqONz& zF#Jq~Qs>Wqi2d^_a2nMwf8KP>tc&aK z&H*oB%XHEJAO{&ZR-#*NlnI=_z^T%-x|AF_gURdC$Q@J2UKJE0cA?f6LdaFKwe+CU z1K~k?p8ZW1jSV2lwgHooIRr7@5B&jNa z!&w=Ro?w_|Kx>>V*#x{G;!+%d_t&K@XP|_Xs%;#0g5fW{L`}milS#tlWp1^n&cChr z8GK)Y#uH2R5Tjk>Mta2F8xsS?nRs}m<2{16%zlL-231sQ+Avr4z|K}GwMvjjlVvp^ zDlmT8T1Wsb$iwUgS2g-uKB(D0>lTI`rzz&fNM!icx6kZz?k@Dl{V2z&+OX zY6QJ##t?A5$0M0Vb-rN+Q7r+|&-XesRegRNXz|ad;u}P|(KohpTT`!fr7fGhQON*n zOO`7SrFYhg&ZU$-{{WAz`Zs#|Z><~ABfV-G>whyt2fq1@v^jUBIp0JU^(g|1hJhD~ zjEcX+=YDAxIf;_TB?qFKl&XJh2Dc%g9-nK)9G^0SHPAXVzX;l&TOzY^FKBnl+a7=~ zbOlhO8ZCyo6kbM#@Y4bYqNwto7d6esMGB;EUdaRCuJ32Nl`5p<4oAw0jP<2a%sQnn ztzDCrbwfoz_hnO=>>SfQW0zjVEmc9*?FCQ`^+xhaM8~rERY~*9kwx0ytJDS0IG8EB z9jNlw%+Vx(ieI*Hpi=#o_wxfI6yZ3iK6e$I8pk5 z0;78VB39S&1^%j4IW@ENiO9{g?ldvtF~4jPDgyLpSMGf49w!{BGdk|k;xT|!zOjuz z8o!iG6oVA!6BRqzgE!eCV+NJ$?T2GP@!cQuX|0%U`B2C7Ba@OT$ep z8A(4&XGp-O1wA7V9!v>9y4I$!d_eSY zGxo?f2W!7*lf-d6rl}H7a&}@|Nr76gCXP9ZWtRJT#+4Cisvnrgj7uq?XK21S}8w7 ze{C8026jNO@(H1D|wKkb;^rF`*RE zfI9b;WjEgMAIW~3TjM_bqaO>7S*0)Zk=~s{bE+~A*6`2izp76p;bfX(TzS&b`W`3l z%_4sr&~og?FoH^|tkibqC7U%IBFBUX05D$6!EOK*6k$=E3Km5@`I@3;nHV`xkTfZK z>va09nyX}TRXTMwa1vq2v)}0o&+p#murK67=KP;uNYqi+U2{29GUO6cpdwHf*UI^y zNH*t8^!yh@jnzWeCT#mgw@&8Easts&`o~?QFQ~6i$INeE!ep0KgPrKNMW{RcHe(M2O)d4`;sywC1$8=keV}2L^4rEX9NZwvpaoVHI-;Xd;$AR6wZG#^ zJso?C#wYF-1gyTDHnE2+ye&~s&Ch;OG{^X#tDHJ;)$|w4h{6k5L9*|5kE9Q6>}wMe zTpxeE){!?C8gT{XyTpB1t1xKuj943#M1ubkxc9BvlyIMZj?}~+$?GntKBAI%`(;;&4 z;OCc!%QLO$nLK0oL>zJj6+fH7l)STcqE|97#m$934CO+N zn83#qaM2Hx5}{;6bc{S(ci#1hCzTq#S26e$=Mv4Uwn4u4K2W_qJHSN9^xE!_N;4~8 zlR-RA9CFS2^jhT-W;=3dMphoVb%W;!>%Yg^1j#hn39}bODX%xSP$v41Bu$^ZW$1kg`#m1+sY7qb|2f4aEo-HM%2gp-}LS|CGj#!SxJxd zwD^;dih!ig7%Tg7=7F6RhJ>YbI?ERpR%JP!Lcvcgp*5j7+)({bTjiKoBKP{L6g|)( zG@|D4Tc@UHcTHfAlT=Yuauq{|A!=(CLt%GEL~Hv62m7Nov2-^QPQI5m=K%TN0m2x&-EqS`jls?t}sWw?#=sR*F?~ zTBoPG3&(KXs|m;z9cZin0Hl6kJNsAUKX-)6h&{cL3_Y*u9UkeT_0b=-dR;9=O#&xW zu`L8-%E~K}u3-klE2Gn)CTL|25Q%5EuDPvpyCajLR)T+{A(Un{Zdh(%Ej>ckaF zikekWdKXtkXf*>Mid3~bu(4AUoVUrd?snj4!!NsheAXID8Xs2V%J4Fi`D?&-+r)8_n(wIUK9lR=kIUCOu>4-{?Utyfi&lF z);vx#8hQC|IPqA{L5~rLLHbNhI@Ts2u5k27pZPRTh;kN%Flh?}WFWMsG^YCV&H)RZ zx>I4}5CE=~8$tmwnH9I?=LIG|`C{dGn&$Vt9 zRmueEtW7DSCz{0bN+rzGFKcg9JW3TCUwq*40EARATQAk{*Mo^Pvmz9#?(GxJ`->@q zfik_#S9(OFhD23r_G&epdBtW9%U^cOzm!TrPriJ-qDj!A?zM@r6ehupIp+TU@r61X z)jXhhf&wdVZ6EY!`sU$YklbHR{G<0wlAvbUjC@I_RP}>4VDV*S=NJZT5)y?~VoX7d z(+c^)!Z=fLO4?d5u@pIQ%N`TPO(PIfonyoJ&M|QYWqE2N!}x`3-0PO8MYK$t5^ zWdRw2H4rzE4WufDp?Y;Kt#yFs>^J8LRW1plt@*2Fp=c=vo8M@9SGR87S;0^zCV@Wc zRI~p8#+f;rhw5UiLTSG!m;4b~{@uS3`saflC&6OKg`_rWFMRptss5One+~MMKZlx} zYztp~+VO+@B~S`*riR7nh3LG@2ERg#7%OLN?&}4U<(yYEWO4QsbfGT5aT~vwV^w!6 zW#rbi4t_~SC6U7P3-sM?mCM6`-Q(H8n3>s*6Ix$WTDFX3@I5 zm2}?z>tDwD`a(Z9M`U1M%pmrFg5d=ofLi+WV@R%5e@*Pf*#`BuwSN&hBI&z&Cs2{% zjNBvz*Wu&B$Yz}tGmI$%X+e_gECQ5(hb{fS(1}gnIeBk&))KGw3G>z_-RZhPp92{#57%Zqbo<`1Jk?m4)<0-D-u50QD575bt3<`jOtGPffgN|R&%ETP zNC9_{Uuc~0gAyVGeZKzDHT;!2AN{AZ#HZe+7o%ZG*Z z@erQ-^gYlEq2$B1`-u9LrUY`&X#^4|mDl0C;!rLZ%KD7t01N##>8T~>jUwO8*1zFglUzswngpbF4f@3%NrHe@sdUP;Z5Sdvr&d)~22^4+70 zeJGw?bcEuS`^Se8{UWKZ_VJG}619Y3VofyaXgaUvF!3_cI?&7;eoj`Q$FBN9xyikVr%-@0n3R5LGkKxmv^K+KcL$Gp9v~onKWy z{Ax5>=bC^{OW&_d{{WUx3>s8r9KC7zfa9m$DEDQ){{R|7YP|WWp}!;ojL|n$PF`#d z=>t>euCd6!Exp}-Hg~;m8ZxI=EuM9v+R#HNwOl@Ih)ZaW0S_95sm|wItz@NPU&@>K z);n)|q#AoJR$6W0ThgN2&y*^Q=W$NWp{UG4>AjAI^o1yfv|_i-J%?n5E6ESAKl_yy zhAZ#W^YIizKtGW-)UoAIE0k@6dg$E#nwSHXSJ2DMgdaJTcj(6Fk)iTy@n?`Kq>|Z+ zrzLk9f$wy#fp0(!5nR+;mGU{d_q)Z7Y@SVUO>MeUZUbo;YLKh%5D zJT#mxE1Y4VRI?s+L|t+f8p9(cUz+-je4@=14ZNXOd-Q-Ro2Am}woV(&$xOn4*Yb(+ zCU6H$JJvjAA(S2~x<8*xz3CW3iKb*Wv-$kQ(uZ-n#u(vQQ3F->GU)e=KmwEeZQG^x(IS9mHvt60 zuRF9$GM7fr-kzfIEyp;VI8pU)%Qjy)#KJR7sZDc?IRKH!QMBJU;Nt7{-$j8h3KD5_ z+gc3ZgcCO}hyqhzsb4LJjtrF!-kE8w;0kN_gDM&`?>!^-ZdI%=&hCnia_BergEG^5NOsowMZ_(~&DXMjj-jiAAfwj&U@>2AkhFn;9h)-`Xadin><2?b0O=%inf@ zKz*3QoRS4ZVoW$*Fmb1neIvtSNsS_psu)QFC zD2wX)lD4@$$%PeN>jb*4@1y=27P(z03PAo&{=tdQpJr&MsBcZ*SWWq6+s+iJ@CnWZBe~yB4D7+p7oCz;iNd+L@8ouOR!)Y(A!TA(t#*zC)lp4iDP)m zy(}9oe3lNqn`|4Ev%JPoo=yRk!k9e^ETE(v1LHZ|AfSl+${rcrw#|@Q4q+7kkW7CjKaS`uW8F07xd)w~$55 zsm%2KPZT;A>lo9hFim&Am@@=#>4+AwIXma+26Vh}!YmnKGwr?75x$!9-us!2eKyyy z$}qwOzkB)j_kuATt6l(@%JKVdvmd78Ye-}QR9iqQYtt`i93-lh_xyGAkK5uO$Qy6( z0|@^BlJwcm1|D12Vh{`P*RRK~?5x)y1-c9QUU`I|}dnR8lzRSFz5O24MNRj-lYl5!%d9>KOONbNk6q&mAiDltDLvOpm zCI{{CAub*Fw}U2BDYyLEDNDgnH~906JV}*HJ$LqrzPvLur|J)7-t&n8o?uI77(j4? zC3o@8Ffk4w;GM;z00rSUj}P=_==@P3Sze?lH*Q2|sB+901Q9S6Z>FH9kv$?=xVXDp zD|5<=5|ZIwwofh+bMjh1O+G&@w}K^F(HmU!iMv}q+tw*WP2{l2wWwan=@gqnJw3i- zg*#T_ZbH5OV?)zEVmI#oP|d>5A4LM_t-F=V4ehSFE!Nz*LaOye{5Di5s6wcQI@ex$=L|zS=0Q=KdR3az^Wk7rkVRHLTu*R3LyIziEOp8OuG=S)+=R#sq6XsMDuXIWeGgD+VP52TU~PL zs2t*V`d6RhesSRfJt&KoLtPD&xCIm-HYu1nk2Xt^kea{cAZ_9Iz1biiUs^>ge|_%w zlOPwdJ81DZvWX8}qOoZ6oAE|V_%<0o@7{>aQ=N_VhjmWSapX6 z45DJa>v))Oj&Urcm9g}z`oJ0@U(-&+bINp<^(#+JjKjpBj$YJe`7t*cl>#HzC8+Y+ zMjio{rnUAJ^?`;Zl(OsSVp&L;%Pv~z_U{suUY~OpQS~lWT>AT0C9CuAzIw##f2;GR zox((>LBgRmtMBcUeLOt>03NM(f~~@P?_#Y0o1T7M&r3wXNAgac#p@qbltan9z2a%f z0?EoIaEN)2hUa(&VN$55wp@o*=gth%BkilViRK2qHXzNaeYX6vRh+0${Mk8sbTDxy z7Ee8xILC<&{?}+iL!}q*65-ja@ur@!Jd*IRahKX9KqxuGe{zhOO4{S?lpIL{y3l$) z^R*xecvKpUpMJVQ#Ywn*w|IHNx23yT?n%5zM78MxbVq}T!3Av-aZRLP&osYD9e2}6 zn}q0M%3vvg5>izo0&lPWB<|jkC(<{)^Nb8co>R}tJU;hXrI zsSQI-v<(L~=G652#uje=yq|hk>Rwc9>-p)J{{Svu2B`et%!I29&%dsa6)vYxQTRnm z9Rl9v`Hia`(IbT$oqb*vCKPka*ldHO0;5m78=!N^%4$YQ+Rq7kl+7r%C^i<*dnHbs z{LCP&j#QXE`tbxkYZC<>Ieo-SW_qJ5s~Xcwike0!SE7b(FZbnm!k>p16N~};K>E3c zR&@w6iAY@ifx6|Ddjf<5#1yWI2;#_xw{gx0(}~3_Tk1k|)@uMv1-(t1F`~DeMgmR@Bm_K8J$t%a#l_bXNCIrLo7^Rb~vF+-yw4_e*q$3=?0n6H~<+Wn5S z-g+GD!aHx@Y_O@nzuzp0y5vP|_k(XQ$J!RFZ}A44f|b;E6pc=+OI@0QbkXBr@0sDoV9-zKNRu0PaHuja}{6k)&PRUDSQk}*ZQ=Ukb2 zb5#Nc2$-|duh&I8+f z{J|`nXq^)|nF3n(r7Y3o=S5_${Ua6DF~PC+&N!|1+rq@#5sLXl;T8-jgEv?N*Dq#= z&wJe=O$~SR5*4qLZ34u}{il0vtYR6KUaGsie)38>u>!uiWgKgmIoEl{5HEexdFd0Z zs#CH1#Itd)KDyt&rjabHxBITz1fcWK=SEO+JmZCe`t#@M>k}zCX|A{OcjP#b7k^}Y z`N!`8DF``%yrYem`ERD$0=LJUPsEMcE!G6f)1Lj}S(FVCnx~elSM3v4zFeYZm}Z(K z`>b&RUD>y2Jh|_`bIv81JrJ;_nSO5*D7UO2m=wF6+brN=%f-Z>S37GQK)sI1VxLTA^1dWgc8jD0nX z0%m`yaDbho4skftif)mCHKqlqB1xzpeReuTqT`h;s^7;X$^iyY zbNm=!2)Rny(RbeWc+CeD$7E|b)N0EGM`6oIP*hN<`)@-N3UilxUwD>)9j`wj7q#x} z{{VXY#R{4pdhim=OFOCIDd zp#;jAxw;a>U5eA{HGlg+6;in)fnT}KmI47~$QI#GEY)`LRQrB@RuAKT{;>VEw{6kk zOJDMrx8>nz?Y2v(Ir14gs-5SU(6GIeQPnQrhku2!(|sVSwwhAsP~>09WW>629fA!!O!W_6=ADt_+4S4_HlUdKSOes;@0Y9x1| zY8qw{IkGk5Qny^b=q`O)ADQNXNzD#VT?L^KHIai*C92JFM4*H8`kL9R^Y)463YT-X z{3elxl?e3IDSll$#Da=>w%cCt9a-9%w<7$~^>CowJ`0k`am~;-^aW4G&UeuwQ3v@~ zk?*HonncVFXg&AuAE*#$a_Yjdi!gZc3QHK6eOun&PhIbvO*LZ|5j9wxlj-H_%keV} zVp+9={HyT+x84;xblstgrkDHnfU=Hz?cNm8Q&{v>Ce-*;bANeOvSfcj!`VE<#a~gRD);r@483w2u|tmoJ%1804CB?=D&zN*zd3A z5E{z+-f=v$kNbDK#Gs?P_kus;pT2{iH-J=>vU%>D(xxXO&FF1@^^f8a!6SL^STY%k zk@$%uK}%g3$3I?|3H3S-M|;u4}~k;f}WiqB%o$O*}ge7 ztdLLz`}%T$!--0b@9z>08m2?G(8uvH#Iz7Ns!31G39bsnhmKs5KXi%HE$qh^()DN7 z5&1y=KJkLbCF{NA5@#3_3Vve>S|dgpfT2`YJT&}bl(b1p>IVK|QS{`A{{X3z%c1Ct zB{cH;d%>>Xd%OxER_RK2V_gWSg?%sOy7#h_PG+iAY0*ZUm_c43+BZ_CEW1MWjw9U` zQEskFtNq{vxqmI^SExXWpo(N+Y6!Pa&rV8)0_H7RXI!;%D)fQ~J^hgEa!7UF>jg~Q z!6B(?=6Jnh#Di?#=8sJ|v|+v+x!<$Z0&H3mojJ9|`PF;Ec_%TKOR27+B`Ufv@(J#U z)z+~!&9Y3EiJhzM7pB7YWdgknEqNcuPO4R)8gj|^Mn*#BkU%w|wueVmp|Ku+IY49r z=ghhEB)n3#T!M$>7qwLYkH-C4-J*(0HArEpN(xJJaMwzjE8e;J1gAHIr=jo5*G+5F ze%?`klgrECM(Mv%4U;CCwtUw_QnB{0HT509i}n}v>i+-`NiF83dW0Ik6;X{L`I@GF z{dH6^r{>$!s|K&WcGGPY1-TUkU6Y$vHY~6J2p>Z+Rck3OmFt?uU?QBeVa|w|UtVKB zFTK6WL8vrd5V_Q$N()NvW<>u0BHweKRpu#NQ>l2Imc_55gOQ$_+ z&9=_id|bJ6(tzC9FY!f*XG<2aL2Ye&78RDDs`}aa7?%6D$GEg~`^UU9H$4&6^%}Z0 z#OEyDCqzv?bN7$b0aB6T4snb`+ot~j5I}f3#NiJ(#0p~)R%oAk!|{Jb?UGS{0wsEH zdk{q9-Js4D8MmZNO0TCsJ(!kmuSXrS=@Nw*FFos=acZ0M?FSExu^iU5pyjtn;W8rc z=Qt9S>*-Z~R(I|i<576wof@m9Vtyk~JdL?)?@%I9r(e$f**CV` zV38_l9!ox40Ux+wVa@I`yXX$8~Rzw`&3m-mv z?ELAQOH#nL3&%X zaLp;JWxT%;HutgT97!<*7DMpecSu7rkG|Jp1gXg>zep~AH}`-u-?sV30Az`!P=PnS zv`Z)fH`*mxLX zu+5P3_3Z*;fG6cqA3We6q&8dKBTW6ZiHaMR2n99M-z9iPa+G}cNF#;sp=Y_Kn!>r4 zx~R)e+4^XFv%e?Q!*8T8H$=C`w`Yk0IqBQ;m4pz5Qu6XB>*khwB0(T=oQMUkLiH$D z)+Qv6TPG$k`^(-6pskPOCU0U6k>Vx#Nw+1;Ds8K#0SAm_l6zef$j28n@6GgHjnmuR za(u1xA4;lyNQyFS`W}#e3hGoc(4fe5aS7LxWa0b&0Nq##_i*B_Km=8(recB3+dJL) zX=+1`Km>C2z3pCVVbj$dHErlD?U0T6`abUd`Q?4+V7n$qY?U3IVN_TaCgM}hjngn;e;R63sjoif zGb($qTBEavYzlXEnREL zpFXj^OZnP=Md!V&9(1zRQmxyW(k7u4T(`b)`h=tso%XShFA~NkP}LtXINr=pQydqG zrVoAZ$}tI8GJ=Np=eMBuJfnx{Ui`PZM5&ibucqBZ5O?ceTO8t?-8K6}xM4Zzz4U_9 z0FLzEGjC{;Q#HN5{WFQM=1N;M^aIq^C0R~McjN<}+exM~7cNovyG9-x6-sx{@dN=i zb7#&GokvRVUx)!sSqCVZP$}?tyT=G2E6mnEZfRao*xQrun+5*>BiGM;;&CtcOqqQu z{SmW{0IH2pd3o-aiFqCG(g^%}Mivn|6Vzs(3lm8+v@4t$N^N}Ofc0-ZWA=rDYx(>^ zzy{Budfqr!r7d@OG9|UIE&2#A@GIYaEF^AQ^5vL`rk9I`shOhrEO~FNFjH6LI$v)S zshxrk@)<;>H@$g5IcmG}_k&j7UpP>XcfBG>)}kF*xA7lR!c37Y$Y4$M?c!Ouid*Nr z1h)G|2m#Clw|MZ_j)X*`ichB?k>KVih9s0!M5GFu{rdJ?pdPxHweDRCGTGw{mKJ_u z_SY-YBtnOwdNSsm{?RcehxtqpRV9{XId7~TGIXE=&2$0<-q%#SzpeR405cLfd;TFV z`|0w$z=120&fTrLDdtg)nz=_8(ssjpu^&JWRsR6wy|l1uMBe!w1!$|bSd=%t{MXJ4 z6n(DRjX?lRauiUi5p1I_AbyoBID;6RHurdxq|=1SJB!!5l9|9wdmOKwo81r$0`GVwgbOv}iv`GA|s1}FtO2Ryd%E+qopw^u9Ylm#M)pj|6v z6v?zJ{V%!^RVhQ9DpsPc=9(@i{{#y?OcPdLSlPvl1TyTtOKR#=|!YViKi`*n<2 z5w(Y;3?iSMH_{}OC2hU?JOlM7P3_4uO$+#L@s6 z?eHnSvBISvdd4OW+b#3*gCY$&Jv-2Lj9E|a0vXWuOZq|^7er?C(Q1s^MAGttq_-sn zE2RLkWssl=Zjh<-z4T#AEKE3yS|lTT-*{5H+d!33;Ta5m+rX4>eIUwZT!P5n;Z5w~PQRL;UYzCBsDDw@8x@h-RC=%@!pH$*#tJc~US( z)l8^)x^GO3fwE6G^g<5IaIDi#`2u-ZGYDH|X|eATf5QuiS%MRoI7MU!> zYPF@{p_k{D`$6I}WKgBjWj5j;NeOUJ{{U>tU{G+O{{RtZS`?}+7tFxZlm1q@R{6yj z@O$}e#K?@PoTyDQb?sc}R_fifZB3lnvrcX{DQar#a~V~&OvC1tOwulHz-EV6tr3^J z5~>h})n6nl*$7ThYh@a`8d`-9P|F$(JwuBB03OGyGN47ibe6YN;jNP~1atDM=DFu= zmN_u`t#$dUR`I=e^9iS-Z$BtcEP>a&XmTo#LKIzcEKhL?ioj7hg|T&@-ZqJZ|*2TaTuU*i!U+d-`+n^k#yPR9wC%L3j{JI z_u4UJ0w!*|_=))H78L`;((yfWjs!XD3B(XY(s0z*+kbk**m*7cc8M5=BQk#4~TNFH_iJ0V5q^QS~i%(=R&2pb<^K zZEhpWmhTg3L8MG)<4TP_H_A8_)1Fq^?1@Myp65PDH>8*XXCr&%2Mr2KtbWIBx$SOo zAeKc0b=Q9J`#gAwEf?}53&U`IGi1Eh`$!U^f&p~+H`wnk1gH50Uc*x4rM6=m2^F6I z06d^dR4)5R?R`APT5oioR8`*ECzODQs>qxBG)sm-u56Jov2lHLj8L+m_Ka^2i8Rz@ zkJ%tg>AgPjJ{b-qUU@{gN=Z&)Kid^EQ-7HKnBnsLJP`3H2GBl{tO8)p+jy2?ddCsz ztV=me_ehm^R0QA8-X$cBb^OK@&W138AI|sIFoBq5*L05tNI^A{FsD+Hhr*nyiJi7v zq7VW4Lu-|Q(GMuX2ZhI}`0G$=%Mz&pNUD=Y8C4E`(LCix{{R_ubtgS3&Lyjm{{Wv) zD6sa)R_nS#f=FSPAdBnLk^5>kXo>Smq85WA5CC)sqjZS?ap=`6-!pRY#I&cM zZRrxf7*z;$aJ>Fjv1xtl=KlG@zb8GRc$e2AJB0*ykL|ur=OtyR@~TJo@>}M6jXO2M zft%>+hd{YoHLPgn)eX*tyYpo36wr6517jtMp%>w(N~lyfO3QCilJPTg2(5iisbCZSS;K zKm9_*T8Q0Rt5_|dzJk5E@<`6~QYwPSH(u$SaT0VsS9Wj4Y`SUayVJP}+4Azt-PQo+ zidLGvMeDASRtZEDu0j6*;#6s&gbEmzP=Cch&E094<%}vld48r&#@jV zS&WJr#WFWUZR-+vd4Uv|RokVyZ82U{79FB&HLv0h6dW{CL&VaP{{U~K3>uoSM2WCx zBlzDa7#W9&aDikIiG#x6L(Iv_44)A`8@BX`Fu0y(9uX$En{GAGmPv*i;S>+tF4$`#XT1n|u$U*+($CQMH#@V9aL0= zN=1h*zEt+_392m}A1`jE7s{@Pz?Dn;I_A0sqVKO>aoW6|pw~3jUXV$(td6PW?zTr< z&9i6s%GHJ6piSGH6GNAw1Tj(F^s8p4+BdJtck+bSmRAxbA8-qnO{c6#fQ#{Hlm9Ggb+ zZzvSWb2mNnL{bFGB^ejQ777tbl%&t5|RVLsy!C@x0sARGc?uHlwr!C9&M#gp|yc0)Ov5)pD-m!W<0utzazUx zhrkm|grfE~Mf3c`%OvJOSu=2XatRnfV-mC#)WrCy{{T(6P$rh4{CA0Xc#b5$#`R(u ztRLnvF=PT{BFeQVdb~?Gm=cwsrK`V`o=J-z?iWjQ^o|=Vi^THr12UZh*hJC5C?&~P+N z;%qrW#waNSl}f)&?7*E7-^xF5#Dq_ja91zKluiO5j5$Ks@*}ixO)V+;fr&C()6yk$ zO6K+a$AvaI$A*dtu_YxdPX7SI*CRAnv|U zDc5gyeDsN4YP0&F0qliY%2JSrhseI(FRUI&p=ja##UlCqCqOy@qywt0dYD7ZbAFXw zTyl;S3hJD%%dKSE-`++3#4i$)NN0e>fpSWOREzpZ1@V zexfQ#=dYri(zTtOHf1EI zx|3iNHY^mRJvn?-r(y0RHKG<@RVbYNqo6sPC!6_eA3Hv}uP0@)lzyr?qozyWM>7lazkgWw zrzGnF;R7C-`Z>syQiR52p;X}sOI1qe-#8<>X+`q&>Lb0k=j9GgR_8CEe5fuai>KeN z->d~)EB5?;cwK0D+3o3jGMGTUA9dM|wzxT8)!{WI3omx%PM=Y{C08obHBdlJGlr&4 z1LkOHl_}If2|=o|mO$<2ol+5zw*BwU32mR9`C{=Q^V3zOi91{=6cab{vAAlAj_hLy zHy1mqgz_s|++AUb$nxai-zHkdnQzVsuXY)F_Fw3f&EPZ8keAfwsX(;68ZVT7p*?|# z!83JIJO_~bT7kuOP_<$L2-X-wkLz=8l zhg%HWl`p<=`v8x6L6%SnMWjk5U*TAr4pX6tutJeC78~ER96lDBzlfK^iHElL?~CDp zA4{B$?*{}*99MgI@i<>s(ms)0^o(nSkJ|dH2MJ!{CLAFRce{MNpU2iDo@s)fS;3UA zIFO-5>k>>Q@~goCOw$nTovji}A_1H0`0o;)0+pnAY;F_=hQ0Yl5&D!2qXteOqVa^u z%G$PDyF5x%G@`53QHV*pe^tG=$RZ{%PnZ&b}FI`d*6+u0~pKRgAB^AAe&z|;R)UtxiQpfE_Q(*91Z#PZoBN|{OH%2;hT?pq;BgbQL&VtJrSbRo`yR;kx zm1*$@jTB0BD3bMGILGlkCx`hL6lEDk7?NP(ENU0CoT%|W{D=^ zJ2cxIvx%lMyt;3_qIH-rQWsua#40KuqtDb=D3cq6)~VR%-)RRB4lnR-a3+|%qkUtF zbt|A6kBE?P%fxDW>B=R;`i$ikzTF^6`=3m=-Qr&jETjHT=p%y?Q81QEu~4Q2n4CXU z(#a{RJjFlb5)27P453^36%#IkC-Blt^Kk=ZXqUqHiGHbN`d{kfmeDcCk&qSLqFhp( zGXxhXqPf-%1hdLGPgtM8%n*ROtNg+6;!qWmCc!1-EG-jZ8G?`G+t`65(@1!wd1LqH z!<&TBe%i#JxjD>h)+WIJ04hc|giuU~LH_{V9xubqDzXTcRi0yE+mpoeF-qPi#FWg1 z4LWH~yr4)p7khXhgsJJj%o&oN@FtaYjwTP*kO-~${Kg(9)Jd`3Ht{6lXz@W=gH%Z#2_2 z+Q4zhED`h@)|H~Ok5L@@XbM8X24Vw?s$2fzICQzmKadz`1y4UN)Xy@pq)dd4b%`Ze zl=7h4vn`;a$S5V{ad3W?0YI2{tQI^~Eh`SIPzVp2DL|^VsPj!Kt}Bx=M*ZBl12{`M zFEgk~h5G1YC*EFM>Y8QKLIKj(tJtX#S`o9pM>;}R+oqi;Pbi}LdC&%OGq!N7`ksTE z)7}Usg%6hUHY1oMG7PF*gJw0=Pumaz%4lc>x>UZMV9A&AezvV0ug;B!&2sLizriSW4b z4fkm9o)->TNt(9xP1-RLND`)duIm`#LNC&r^ke4|cz+CLNu{mO`zV9qz&u!BGrbdf zM7(pq46=z(D0kfyRwR;g6wbY6OH+gd)EnM0u;rOnRa#6>M$0I|7?^1&oDnjS#wnT_ z^inbri~EZ-vr4j_XUfsSl5ouO(&ZlQ=jk7)_;Q5d_sTFlHZaG;oS&p4XIPsI@TdwI z`YyGMc?Ep>Ml`4SXg1NrWEq);zR@(rH%Jp(ee;RJpT{T@8AEd0hvf!km*O$;43cpI znT-+S55Et(9kvI^Q4XKPYL&iSnFq<2OP;RMayT&ZsAtXtP1OEUK&+=eTImG_}t1<;2#4koLC6&nfhQ9Eaau*AG z*GL#r&%r#zq96KdlATI}-^wt2H-MSCi0MD7~)K)3=^nkpI5&EhVPdCxy!eau9rT5k_ zPZyM6Orn}z&8MPR8W@$1`!>F?tjJR{%oHh-`ZBB_M#;Ys#ZYd8sJg#A)3h^^&0LdG z-_U8M{o{}OMIOF&3tovvNL}vL{1{Qlu=5mKTRx%((#x7V)!Ri)7)KBtKn(Ra7JBH0 zZ4m}%g$&dsKP57Pst_)@GHdu(q$k%?{6|Kzvh#Y?8e{b!C^St9Q0gmu(88a;O&E3q zAp&Bw*OeG5DKG9tAtkCRP_QXNYycHEZ3HfSyM<0&tSeL%4&eM(ZD`#=3w(=o1!*)wq`NT{MikAhopcXsI%e8!;Pcjn7=;}{Zs`tDTQOaWf)M5^BF(QVqtuL#BM$1C zC-}FywUJ{&chh{K1(0Md(=JiF!Kvt}TM?4`tHlDP0-&o_h1V!P&#q3xnDn`-{w-F6 zpzPV(nkyQvX#I<&O|EQRR>+XgdN$oQ0Evcl^6l^Ugx@sw>la2|R-<*OX2+YK*jHW6j_OMKu{MnW_pb$}VUS3)w=ZV>j&Fs?hd79$llz=dUI18Ltl3 z^Ub{we%vfrs?r8Rs&UD>Uk<&ITAnPAV#@YtPm(CL9vU!zq+E z)&0Di)hP)jR8atM$keJ?{NSURHBf2KojLLm;&>)utz*RaY+tYTf|Ufgq)Yq1v%xU4 zfKeiG^rn4WMm&IF%28PN5ilW3K_sjdjv*~e{&pf`#55bJ4ft+{798g{AM&J)aw|S z5*6cfK&GX1LEb;uU`h2%Wdz^%DbOj2{5Be%3~`wHL6~(RJL?l+NyEZKxP$zfQ`i6u zc)ttb=fwIzlRV(~No1Fc!{Zs*!6=>DCGj332%IV8DU`$>$Rb(19LxKY3_0jmh(eow)4}M?VVnl1u{8zBfp$f$sjc%Ll&jphC>KRX^JyIxBHKmcM?zOP6eNdUmG8-r9`TJ#<*L>*X zOLOz<+zx2TW*GqM6}1j}kf9e;9SS@NT@>8CLf9p=wt!0%ZL$kDo5QUyodR+hdFdO! zJAH?wDtvVVMFC&t6&$69a+f^5RvP4dWgGmy>lLDN$ds_>m_61vNb9f@%X-r;v~Fdy zsP&4AF?9NzS#+B~;UQ1eQ0T)>xw)5x!YfB|t)BkJ}Am-%*mx?-_4p#eT6OxNCPNho<>c979uLSWF{{SGW z5Nf&oSJ$Kj1<)}dAyZX*I$K&8pAey#B#coM%!0s^S{pA&7?^x~Sd$r*z?_xp2DY`< z(|Df_(vBc*KuKyDLHnmT81jl10D&n~%}vAPi+DaLOq^UIr|B(vlW#g%U}MR_{GA!t z3Mu&bi9A67lQ@{EVht#0bA#flX_7P_7dP?Ko%ih@?zm*(nGs@XzLUT}qbR$^G|T+0 zr${v~z3B%GO~ojo4tmFmz&s>NFjlWMO}r2g%0lqUe8X>~W8TF1M5l#}6b}U}^90Q4 zNcykN+uFqDlGAtvNuRP)1?@02)EWnq>O8 zbziHXiKfEDlY(Ky5G=)2i&uHZ2Z#gylW>Mx0p$FWF+6Vv(h)z3phNdNq)FpS@d7xD zAuK(cU$OrHbY+@pu{cDjDGC);k%1IA%vm6A~E)an!M81tY1 z0Aq-mf|FURPEr2=UT>(*COXRARD*@$GD0YSF(JbQ9}<)El?dg+;xX{N8Cj&5aGN5$4sQg+1YWyfJ4?io|Kt|u^Xa`}Rzm>J zF$$xOsH?(F(N7IsQm_#Tuo`kf43Mv0S$C&MC%x>#4K8_vaqHDZX#g9UG{c zwsm(Bsk)n^!&^G)dE3(33k1(vYWrG6*O#h$zb?Z?xT^{=3s%XJV9G>her#+Sx$;E` z51^lh)&XpzhyrxIrjMynjVsk@FTGiUK^-8C9qHwhk?`OwC4*LjO1S%HlqHQ364xDm z&_`p%#&1iCz*|od)5(?`0FbmbVeb9 zRh7g7pdN+b+l|vNn19Aw)8;81KcN}= z_S9*V4|RV^t+@pVpd<=Z^X`^UdMdFc`b9IpmF={%!O6AzL*%vWFGHon6*Nf3UIopD zd9Tb>85^0k#_q8>Nm0l4^i_U=smh`;Wy3#7#F$g*kj>@*C#mMqJ{*{TRF&qXwI^mK z@d4Ii%lv@NYnOPN^&SPF9pL__gELDi*@5qrP2*>tZHz{<4OBJBvTwN@7I$uAQE%XX&3V-K&k`o;=nl4Pdb z;|6I!OZJQ-!nqxH_Kp=%YQ`8=Jz_yDpe!hqD5<J1&R$}XhvG$6qj!ViVEDQ; zNsg$5YTfr}{{V3>@mGobS;AkbXu-cQd{N;BW36>=vHt31Q#wn}SpNXT6d6HY&}T!M`&X0+#XY?uX}qt! z_l_ccARZd;D8MCOK8?S;NjtHsH_yJrcsza-1jmK(fFM*2_YvXzM6;)#IF%-o{^0)i zUp-z0M*Ovb%i;b#DHWoIY`wj06E?Z>y)PA(sGx@&Kvs_~i=aT2fb^w1DBjfNeA34+ z&q@eI56`h(8{Ga8{nMt~Y2u#HIJ|1rZKH2}wyTkDWa2){&1l*Dx(`R8ds1 zN+5eHJYcWV$wyVOQAY3a13#T?ifqy4ucrCZ5zf$L6TAISTS33c&$|4ehAtCRa1l{z z7_N&0_^lf%CV~4dmyWyH=M;3U_BDnZ$$oZ`#l7>_+82=^zdWkUh0O@6!YAEdsV~)Q zSnQqhUPi3>!}(Ku^GYyN98QVn=2-z+dbBNlTYbe=$s3?bw@{mCRNL%rOe^;D$mgbB zd{zf7cWTxN-*Ma0?HOjRM`AguTzV`kmNq(G*@V#PmPG#mZ!D7~7Xb|kg|hVT28gJ= zI{CsN&=%y35Cm#UGD4)st&UXRxM&$=?@x=rC(g&Pm2u5eV?=)_Wrjp zBYU{#Xh@i4$-Q&z{;~f676xf(xfdXH{z9tuj8X<0*#I2VoHCakavo{cF>z2mnKK@~ zk&WUAn4^s^mbu>a%M-;K4ewmz8^ldF5N+~|d_kQmgva}&p&)3l68O=dJ?@b=iUl4H zI1fVy#Fhl8iF`XJhY*U}`%Dpq5C{6zjR z1DqcdJlm^8-YkLy=8B+K%X-1aGog`yq#qJrjQv!u>jxasQc`_0Seq4P`cKpS*`ASy zI8%}K=O6A)gSPfy__?JmFh!*VVfcx0F5#ChUznP32lH-PudjH)@sof=rDfeM+9k#~ zm+pNd3{5P{Jj$m30BD*?SAMa=f4W-TRyjb8In8(BZ@{0z{}-a`**HT7k=Ug z(=E-~q}IqDrqxz}eRsO9jT0f2!|@R+f5=qSAS&b_{{R+J(@KXU#0p-=-#8@)BrKhu zK7D_ppyj=76Cb46i__J%@K4ja{BMwcg%g+Iv@nL*@>MU^`kJ!A4oJOvbmh=SA`hE3 zXPRVMF~~TiR4HXoT9QV28?0b3bfXj5-`}GBdzI>Nr4Z5-Q&Wbq~gi4mHh6zXc_KuzJL_e2N)-Tg8ccJ*^AhWp@ zx%Vreuw=LNHt+22_3rH(<-S3TS0wnZinaNVHFAnBKjb@HH!>ZOQ+rQ?*VFCFkVf{K z?H#`R-G8M$$?NC5gdlg-)4L*n9POBj^d<^7ROVZ{7SNcdQ`xnpC^@3W&h+++6b@?L z6oQLSM@NB|+}Qg2M*RCh-rJ=j{{WhLX6=*_8I$OIv)7k2k5yZYyK9-}1%WN6H|5H? z^^}9P`#|5cAwQp1&grT`8V>d7p0uihvErs21D}_^xz!?kNo6S6^JMz1mu+LjW0U>e z0H<4yv5Sh5>zk}%W6taA@e^auGN9h~oZLmp-uAF$Qr7p0i3H`d0&SR@V>Ju{cb1#H z5^G)aiDo8PmURgdc!`ACM7|`D=0A8IQ89Hk-u+`261i_k#Yu!BIzcZJ1tk6xyh=br zz4X=wC`4kqW~&|}jE|*3w)%9gv4bHK6Ea!SB~YfE;Nx)Axhn$^X)qb@C>ZEm{i1wP z{ieBWK%RQR#4?pwn-z8-W7#fuNaIKCSd$wPm1r|fQbThztF_DzQA}e~;Cf zMD&S7;#&l@y&`f+c{+)Ldv$32xsrtq7vpOOib)zJoRX5X8Kxx((V7IjH(qZNtff?@ z_K_s~R8CVrqz);5!Z7h?7o*U8!0|-ZVsww+B1^^|IhcXIS;3ZRzqF?@9wWno2$ryX zJkK5{!{->1p>6f~jx-#$?eh}P^>6PIPsb@-zdOn>_ltb>KrBE)QkK%#+Y!eavp~CDE8+QMNN<>;UW>jLcS?{{SF{>Y7l(YM+k%q4O1G{Dr*{vv^0RR?&X+rjSDY zn_n^?Ivc{M4bbfQ-Wz8v*$NE+gim((ssNeM;N6vU&o$pDtum0zi#^G$Ng zJHR5xuv;iIbQQV)wv7hs)ceI#qS#*C$i0VKnydc+Y~6t%OXk-R{{V6YMpnzKmRq9O zLLDyq7rTWZS%v#Mof+HvY?Z60=9zEfPhCwysUR=>vdYNk>>iu^+f80%BrJUK5`8x_

    wO?fIO2|a2$>;vEyH_n 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%0Ay;A4UJ6Ne&oR;#m2;(9Dz#^m>qKDZ1oo6LX|8N z#hO&*ng?6{(8;%TQ0P4uODnFNmYMm?VBK&YpPmPw1k-| zNLBl3xE6e&N;tB4U6|XMyd3`F=g&ya71zo0^NelhtXnUHC#Sjq9a}TyujP`XNa7k3Mo z%SitKO<^jjBw!{3V*KqA*-I)D6jG&Gh9Fx<{i7b*Kkl-z(2;nOM#zu~Qp+G3Y8f1S zT=zuDlPB%~O_efIjJb;z-8d-%#_nt)M9D!oQiCpL_0oV8ty= zkZsy*$1ju;N_Dfj`569Q4a6Dk?{9I^+kYxDXTsXtEb8$%UX)rixpLl7?tNfhl8!6;wp_BwKfPfCB5qfi)t zoX&8W^6rAZAP;3s?AZ8oiE1PQ3r!rru^rgLmoN1{o_<~=Z79uKmGuB9H}xg?+9gj% zu9tqDq0d-7{{VNNI>(b?GahK~I-%P$!7;P1)v@Q*(3 zn17hpzwYtqb@S2zeQ@e~{PlpX2>1LUD$SoWfOUAnPx<&p@Lfo`>GbIdQRE3c#fy8R zzt5knOXpZUE$955;&7OMA>L7O2NsC zzA%}oP*P}4>;rU!SfyNtWii2VNF$%L1a#LI{vUtlx83fKFBfbreB6HV*#)`W_r?vR zOi@ykx|hBrB=CVTDdM+g{^Nzhg4YhkDnQRl&CSk6`Zqv(1j~7<11zEgsJ#b zEQZeafzzZme>k*fR8(z*CttW`+QugOUK!6Q`Nyi|*u}sW#xZyY)O>NcA2^nv9R*^| z>KhoWlZhNEHqp{d7E)B{00kj6f$_sQ55z*RNhw)NhYb0Mkc8A_Oi@Fq0#b3}r}l|u z!f7iQwjG$0G%JEi!P+FuO>$NfN`bx#Rve(sk+Y=_Fqu;JWU|b{=K@^1b1kDm6ZT}u zlu#y#t29kJ)QXUxoWXzEH&b3}6q3MB-1Z3J(})#km7<9*mL}GiP!w=e5K2>n#rBy7 zvQ&y)Dt2m_$rrUM(+E_(pzqMM08!iYl_8jWHtPnI0EB|bmIwg7iwy(vgsE~R?JP-c z;-#vR7%@o&D;&fzM8pe#mE5EZ6J95)!J`%~>M6B>9}aNIZYyLx?-l{w+Mp6Snym_2 z(Jo@i1e%IemQQ4HB`02RP9dJhT)9F>O;+~ExUtM$8keQ}eWd>YN#*Ym#6}H$Jmcg; z0vtQv{Q1f(7tJXNM2Y0r=UYLj{PdJffc;Tl_%{ z!fod`z6S_$E-&2*pR=Vb-k5SQxw6n#vrKTX&$>|Qha=CyG#-!A;EyjHJ(bJo#o0}c z2i+5pl?O#L(fv}v4c?U>bHWgAu!@p1dxa1CV1tx-^YM>7y#D~0>F3AY4<3A&^U6H= z^W7H5>+vm~v0sIlq2Z^V1mf_3y_44)*WXIYG}o40Xr$ zj^^{{-4s6{A-~5+AF5gK!1?iofp9(m*}7)|Imh%D2a!+3{-a2iLFewjh0jPr#vw$G zsigVkAN@JCDP=M?>0gA}7TAQex)gH()7_`x< zt;JX-a+8e7j0rr%Q_e1a?>>C^7U%T)fa~4o%RnA{-{E(Q8}fwv{N=1}lSi~{>*wV6 z7?eo5u+^}E$^o{YPq-Ea@uNfO0`ZOE@D>n8ryfEQbJvsrFKE8G`TgMJ>>2EBc7%+L zpPq-55!op!DYJvc!hAo>DI@u%k^nuP$wGkt0Cy}QDw$PkV4}~(F5Pa>m5OFcm?;xL zrEx;s-O~+Rw)6)gP+O@N;hOE@_u2mj4;jd1D7bc z^>VkL@ffz1hGw%q5TS1#SvD}bLyK_K-x&T_Z|ZWGHVn{3u(G~TU1hpPIrqixdEp(D zzn>VZvVCULC~nvFS)negjW5%>13Qdu1ycJ=91+5;ZLBEn(q+#DGf_^si)ENNh+MKg z3YAoqewTEI<%Dj^xMl-OdW5BjKivyLug~1CI>GiGMGDA{)sC$GCfUaI7evdEnhDFM ze50-W<#_n_`S6cEZSs$omXAF?k(Hy*`Homy&p`0reg6RG2#~C7N5{K3Z$A9v-F!Uz zglTNNdD~rJUGyL4_xD}&JiL7V@!Z|u<=t<7afQ9t`gdypz&LsN!cQ-K;X0xJ?%;BXxaq^Vx`O*M@c0qlQd!o97t2&q-?4o)%JGU zshHn&I7&erg-NTt#>BaQ&k3t%e_m4fjcNZVbC!ot1+YZt~r2UhzPn^2bxRMt#@+EH&p}g8w;UgVHDrB^Txg~@6 z6&~AaZx@Yz>t&apjCr%ipFgx<uo zupXw_` zDy5XzWWIGmjWqyVx2$mY{?MhRH47yrLaB6)8!Pmyg;0P2M5)9Xi&Vg*)h~zDViT8> z30O0jGKnUng>vdW(JakWv|T_BD$2pdh^CT~F7EFNGAdT)XqPxRBY3d6h*M$#Kn%tb zjunTiu$q!p`kJQi_(k|b-D%^~)y1Gr-V&*TsuJNeaV7EXIJj(~CZ1Ii?i=L-l&AW; zOnE|t$&OUuCkp}0>+p^c!67v8jy@0z(}SDd4p{eJ!G|~t6Pqjf`bA4EF5A0|~>jfu;orw8)yiJ!&PL}3b7=!H&q;V!DZ1a*r^O%o6Nb~0L{XMRkG=FgLih!t#bqDDb6Lzu4zS;Ln?};v(E?FI4UXiq@ zV4a3yRGaZ3b7ad|&gn}iN7}z-%L-ahCL}dSffh`{_XN}xq-@gW`kW4LVy@Cu?hLy0~=dv3!3D{PrnKoqIvu&KRLL4EHVqAoWVqb`|Vv&J1JfQNo-GqE&&(F@W)6c#+ zMe{yw0lYf>eBlX5Nu?-M`Kq#bC5$iYD3CCMNWnz2zX(b~PgkldP-BNsFph8zZK#4C z0N3uf))}v#I87>`nyuyj5sn<+zwSpoTMlM0YFiCKaTzzfn6_QeSU3P*UXY_mAh1Zn ztM{=PhyKw%@SQwS30Lr{<$OI*{Rn$U8Jd7Z&2;rh>W=(geR!OtKvQcv3y!DC*Ge~x4Pruy* z)j|}Kyeu3zwj#Newzkl~HdWTZ+UB2|Umib(^OEIr2^A)g`R1#d;b6tbf%+54%jF{ z4BAyU(MyyObk{h`IR2D8Z4}yU^qrnqH=;;T-p)+X@6RrIlwKvlfL?mG2Z-3X*cU;%hM0 zC00VXk^*!&F%Haegqp&XpcJr|qyQ~)1;kOj97QhnWMUSRu0=2_gv-Z=6NWYruuUmuN>gELU?7#Ror^z{lvp{qVsaK9 z`dFa$Bs{bM7=!pD=sDgcG?Gu&THU=jltZG0lDT(WX_0JjsIZ_)x=2nqM+ z`@qv3W0`JooIAV55sz3Tih;m8#vdqVvbf$ zjC|=5r7d5~WDn{%4;WmPhYLx5tj;;a>18K@PDZIclAk|Vd=8%CI>s8uKfBLgKS=ZE z=^j5HJeoY|=ivo9zr!y#fHZ$TezA-Xcb;9)OZ~(@Wr&V`a)SQ=s0->D;Ju1L^XE9R z>F3UnHSqK2y~cL;$A>7Z%X#<4??pc+^KSSIJ3s!Ic>e(D;!q_^og-=cHPRRlOEzOW z+=Wh*tKFIe>13oCY5>c)Wz?QAdt!M)l6ye)LCrHIoRyM>afW|*>mD)T`J3ahX4SQ%%|_0H z=u)aml)$fw?MhAaiL)e0qFln2%ehk|1`k-f+_;AjW9b9WpE|{%BT~csMIhNE_nm#- zJ~7Y7&z^9B`c63Glt=}^-J{$GmWME%BHr)b0m{&M456PW#0V^MkEC^joLlDu^xaRK zCnJ9dV+vzJMajkg0L%iD;}_xyz;ijpT3kOrtW@C%w<2{M;IQGf)S$$7L$x$s#lh5G z0!A8^&lsv%uPbD5@?u)(sNSy+-&l4QBmlII62XnjvkZw40?-!X^qU9xK}%E?>ZF!e z_C1tFj_^B7uFAej87cuM-{S!(cJ+>5+ngFf6pZmO0s#$s8)ioL7I$>1+qx@ip8^f9fg>((RJ0~1I|V;4IQ?87~$O?%&ng4v?T7) zNPfww+u8>%aLfX)h9WkJ1tWTtsLML2TpyGqFM)C+h0KA#AYv=8-U%bC`+g7BTK zJ+8#U*gs^v6t;cdez1J~UOf5nk2y!4apC*Ncb_)#k39VSAv}o3&z|^D(Msu$&ODa$ z@r-=={owr|!)p!HoIl2%{&3nqFLWzAG4f;U=gwHek3LSHNJ_bZ(B>nN`o~LUpN5?v zU}3p8QKlsXvICInto#HdIU!!7}8eAu3hL-7+dyHK-YftRhm;y_le> z(*c-dq`Z{bz;@%q^v3Y;f|OE_qM#E<7AGqnzjL3tOoGxJ>r6=_f@)6y5eq+yG zT;gBpOSd<}&qxCgkul!T;J$(dN1fw+Icb$D?x*5m%Q*BO%TaCOsY>Q&WTj5ct3ah+ z_c4cB*It(}Nh%sTS_@7M%+vBO1v6(A5u!b@VNL>A4)`1?APgQH;Gp<cBrsEesCnp zbp_ZPHLh^V3ecf69AuSW7QgRiil@t$B`T_($p({6mY<#A@QO&xyFYWs6o*8zN=k3@ zapuv)=m*+mi{=kYL)we~0Fwo!rjpI;C#-)_ZV=wUtx<>}LdnLI*MS_5GPraf3=JmcE@B(bC z%v5;B2QL5`9Y9~QFv8I40~k9nFVCj#DnnZX|`dHti#etum!$HqMQ^LWD?W6z&F;B_8*7bofU& zIRF7sHfAktUm*;e7O=5?agJk`hk1t|<1ao97VqzosGxxN7>60jE2~A5^=}0C%&5)v2ncr#cMsp4+n}w-JAJR*A2%WT| zT8!yiM%S|JfTqgZXPP*F^yO)sZ4wWbCPUmFO~`TacnU~k0Pg3?M?w<~y= z3n@4JEQK;tE&D4_Qk7#3xg_#Q@pvkevQpit%0}>{9Mitw3bt2@r|kxiZ(2~{ze-c{ zfw~i>>S$Fy{{ZkK(d>ka4kVU;>H(vNViOZ@`m`kf0Q#2jR1q^~5}W-=ew82G3lzWx zVn^vvpsaqMRQJVliUV;JrfQ`cdHTNN2`ZF{N}7t2rE#KSeX8Z!r^?5a5!s%cP=y78 zHE0boo=V}1(oa@B(8Eu3Ak%VG26%g2&;SYVEYPI(3ULav>wNp7oGQ;RbQIl~Ctk3# zC1%%UFycBZ)PD$4=Irw&p%~0xVBt`$C6q>9FcrLEEkRU+jXaK30AR0rvZZFGCdb0j zy>uy=!d)s>wI{MfRr3XmIhFh1~T(rlYNKF-=E?C&h7%9T1*3YRao>Dq{t z8yspmJSIwZt)Ff;ts+|GtqNxJLgnowaG5Eb6r_Jiso*DlDpt-<9KECztqCk0D@92l zDWNErJgiL>OI={>s~)hZ9?;F$h_akNtZb4)DUO=>!V}uzQ$_e*JpQH_0e`9T*f>B9R%nRGqwIH5ID=iZCxhf60nZ6#oO;N`pF7Jhm5TnAC zI-eG`#0phdB-|W-f8b*p{%@b(r`*x8%Drg&KWy5E=_%SaSz%xIE5Z>m2J&8xN>z>W zcQ=U>8mT{K&f0c~5{%_O)waxWH)t*`EsNow#ujZhvyJt$&=K9wkX@e$A$r~2I zv`m&1z1=e>u1J?v*-cVKBKK(8CIuA*%~G_wuBI6z5F3=8KlA&D6C2i!X*G9g6_PN+_KFa#&|_Ib5jtY75|n{6g(DZ`2$!`X6VO#x z;nKfKy$tVF6&!{c2$y+V7R@fwwr!jmB_jby&3@9=a$zmBEpL>-gYZpI5xbV892S&W z^(COp+NI7j9mN}zOQ!v&N|)dq!uJW3lq&_yzB+hhA=NoFgMHV&2u|7djJ1B1G`|O9 zZD6Ww&&4K?6v^FfBdsajt-5!^Obc2p#$aKOFIlZ-))G)kDZ=L8QSgA7i=dBfN~Qha zKXfX!gv>((%%GPIg;M?}-4~cn7ONg%;3AbNP8$Q?6&nIDT3Eq!3=0>wnCl4L@+6;U zmZW<)!c~Ass~ZwILy#CGTL@q;&nMOhM7`iHRsapH-aRC#$!6g|DnmA8IzqJyAjbrf zb*zB`)M%98@GngOyWp<N0T(U~rE zvVemmNqqz4{KUzyAP{vQC>Tc$1Q(Oy0`y zW6lz-qh?&GSftAco}ccPmQao6#kWh7I#^IL<#2?X4OT6B*|Gw}lesgfmc z6U|eR+YJNpLQJxh;j<{wFdPcyuAmfiq^G15$X@IPiJ=-Pnq{1hE|3)`Z!SSQt>8d* zV#$~SVw1ClF=ZKSAN9H{?}&t@byU_$>}`$VDwL;57Y6k5igW89yg%Jo?I+8?`+sAW zrMVNa%A(3o9zIpbuuLFVqLdWh+r0>Q3*cNU&o35$ z9mlG2$K@Ceet!5P`o29pV*dcO{P#nQARS-~0=N%17KsbNQm4t7Gy*%no6CqXxNHWk-3zunKmI)P#1x0DM>F@a1^yxM9GHv0Yw)$w>aQR zS+7e{SM6Du&*mR?Ka_rV9HU|{{{Z&Sv?a`K3gj$Qa1K#xh-B7kn0Sw6GSZY(o@AF} zlx;HrH3F@kST`H#loY35^+KO8@xPthnJ#L-Q}0mZ^$%$KPlPM}9+Q3c=I`SYY-JYvJT5}#PR^wR!vhw$cY9{&I~j6Mg=@NXEX`qys12q8s@?Dh3v z)Uw*5W(B(lz88aL$Z=6(?N=XVd zmReMMZk!q8fh?(fN>XgQS-=?ID5W4cved2`n-j~VCfmAdeCo;cXj1~@GiE{c(UImJ z9QHtag$sA*4zE;H+Iule11y4)0vMOkLmopLz}fbBNtRZpC?1UxgW9^E-;966o#WNm zUME_PQRoL3suRS%K%1!I_<;*f*s)q_;45O2W~`-3!uBQLO_06Zq>>V<>MJT|-3E1# zFf8NRjmmb7q@_TUDF{aLVJ5{zL3^}jwPVf#CT@hz6DCH=gFRCL7nwR@ihUth3smit zDt6N;QdXIX0=bDzPUO0L8Wl20lBsM~snh0Almzi^*}z)VERdHlgr-58{KYPm(v%kA zxlah{OTd>m?9HBZ)Tz`%pesP4RFI`#1c8JZ66J3FbtY7qYGjLW5|Y3^0N*%F&Lz$Z z91~Qe1r#W~rL#U`2wh1nG3g>(r71^Y@n+Wl^JIJPB3MYJ873w z$}6I3Y${{X?Z@|~7xAL#`s{vT<-{WT~B9R`s) zNo6WQRJ?mlf#wb%h?}FIkI=-*dD}7v%t7Gs8cX;xU5gWN8S#J?NN;5YeZ*-EDHAu0&LxySxQJyejzEu)hN};Z3W8(O7kn(h z4(KCyOABV><9MhFGQlKi1lF#gW6(n;ao%K#OP>J?OvN6{bNE7~PbYS(%bGZpg$~Ux zgLoKN3ay=%63=}dfz_=6Gcq=r#qXyc=q6wMRE$a-q{}1=@jp!uSV-CSnJHSkauy~? zm_MaU^m9x5EddnKJs8|3w$oDzMN~4X#N3c73K{G| z5a9U`8k&{Hw5NeUS;#rDFo2gqN=-nX)(NZ}F9ZxSQ}Fl~4 zma9wS2Z%DV{U8<|=uXrdjY^`D>2z6KIV>Ez;2r~V3viNNt~bTK&`N`pTxIZ#P=tFa z4zisJo8bwaI$VX#O6pQ3g^;W`D0W_M<2XBH^Daz;Fa959mXR%LRv-X75>P))@P(sg zN;XMAD9@gzNScrwhX|;fFiYMl03$)%zDCis4XSSJRlRk)Se4U?N%C8Yviqez!Zly_%Bgdqw@2~RF?nMy{_ zF-lOF6Cnw@+RnYwRl}IH8IyujAWYp-C{)!umC-FDg&+&5UJ(0}B`lDTl~hZD>seL` zHhMyOMKw$`aUeIN60tl?E=xj*9kGurLo_C00I?5io_5T@nu%eRWq9b#-vtVmw7GU< zF@IUdJd7>yKcdxhijoyBdJL@-uFJ@DxY8&rf%UBG7(d4#Km)^P0=iHbzf z?_0^5im>CcU~o`T5R`g7wFpXhh#U5MfjVDpzfwEkAyQ10=9S!cEL+8)f9N!amlJpHH)>%bvpJ4T-k5>k^k*SG7x#v&q_%gw5oMAtq~j$yiNQ4Dp3J zU$j_S6@%r|H|q*Xwx4&O^Bp|iJ@Mq@AGe<-EvKJ9IR5|;c(D!V&wMfSjCuI{BJHpE z^J~T)9z3pFaqEZyPpsDI-e-0-$@M zX{M6tVeF_Vzsne(JxZB%-DsT?xZaW3jX3Ee4wX7SF{7A zMq-KgzunM%&F9aIHoko82~LS_{{TNNAt=n>&AxFdBi2A#^((1Y=sjPn!Y_)j>-+db ztm**41w;Xod2@~0O(!8rd`ZUVlmaQ9m%p}wojimJODR6k_geA%#_vzV5f!AkBia^% z31$pSX52x~IC7u~;RmL0?^_HXI8!UM81&LGNCPp>7_9VfaD?t!+SHBBuiaC(*&i!)M=sV9>l?Ptd0&)gp^fmR6sn~Pi;vd+O-tjI(Bc?A5nwmTZ_IFrQ%tK z*C?61btw!&I8cfTn#;vRTZB^^`BD;@^pvS=qmQzcS^2}LICsL%b3Ee7N`T0ZggQp* z#We(^s`&8%S1X(%SSS@CR#>u#vxl}iMKe~t*c>5LjBS0|QmGdhBeqZ7w%|UZLDR;)HW74O& z&{N7j)kreZsb6c$o{i&=MrDnhny$@ky2OPkw~}U!mTFgU4STyNVc7~V)(T{;3o<0^ z>PpZVK9M&e8N9P|{KXx(Z!xr=7p;zkh z8F_!Kbpy|zqyRlsg!n|E`iGxBF(hEf57nSdNEy|Qh-N+TYBWqem0c~+*`s%~rAe5C zk4%?R7ok0M@rs!$wlLD=r9^*jIQp?qWHuitQr6&rz#BN#0^s$GT9J%hMB5W^@!EYv zJ-Dsi(gAcoGTwam@f&st&lv_8S^|~WkeZZEcmN+h_!r{>y$Gwb0V;4az#sRA zw}ewmhhb5`WMM%ezv@)P6#kWBARrUX3+(>@P|(HFwEqC!4}Ks)9j;l$xN~w^z=!bn z#XL4id$Casc))*1(+hKe4-fSZbZ{lI$dY-6`oJ{1`1ioLqRtpF@DOd%8M~p{mKbN= zbc<92WJCGJ@CcefHll$40PfE|>%v0kDG5;+AQtNQX`BO7p$b#D!=DR283uq=Du9Qm zO|>aEbtH#k?{Slo_L ztDSInj(A6C2K`ZBlJ<_ySz*>GYv*XFf|X>j9Z7Dn!L;uivL_-^m3)C|OXV*M z!G7n9`SYAA&D|EnTo{q|)U>q8DpZ}Rhi*dYsa;ZdyQ617Syau9DA?w?s-&SQGG<>b z*-9;L7??n~L2;j7q#Z?!J3mgE@{c}k$~@cd>*vqTJENoCAJ3g3JpL^S8RrZ!g@P{L zPxyxg-w!_@d_T|6x;nmIZxq|sIpGh}8=oJ4?FC1ZcVQN=&Jv`aC*>bzZB+)^r6Oqv zvQaWvT#c`UIz>}NvSVqX3lnC^+i6;Dbgok9E($v%6?aD5xss5OsmPfwQ-iw-mN=#< z4OZ}jcCm>7D9uU}CZG)_PzbcLeQ-^|I7ML$h5%qnNVUkuH2kgq03r60ajR!n@9vF^ z;G-f@Nc~F)Ot4S7Hod4amG(x#_LS*mM;)b4#0G5Q{UJ&??t#5tfq#wSnP4M&5 z8$<4lER?9fMt_Vd`KeaVgqvtJ9n{C^4&wS&9zhe~&Zc7QagjyAnaa)XKraw6@^oD}v-eP?fU5ikPTmSP3F zjCO$vf7MM{LPIzL%D~|zfq@)pgS>TG?!zP~dj6VuR z`vLp>h)7z(pC%*rhU}d&an?FQh*7DyNl0$)a8y>M1BGh8TVVasrS$p64fk!k1mx8& zbeWB82@$k?lQyEXOhmRK#7R=+xj4F|@r`X21U*Pn70flg@mdhRBZgN76on;-BLU|e z;|t#2dilaN9(?H<_d{FHoTJUZc=Pavi+z0i;`$Ela`Va?-{$aAqsVhMZ*%#;r`fPP zjCskt>jk{u&vX*(Q_k$za}ZB0eh~idPR1LYZ1VlNl9En9Dsn+Rz{HJ`re4pr?VG$W zCTzW$W2v>ARCzRgf%v+=@PD?Y?fWv2iGViJgv&`K9imB6M-P4xwCv`EnNsE@b85*7 z22d%-LDn`#n*cO*aHurbL$!fJTR5P*A!M0KRN5Agq-f;1c zKMs!un-x|%B&8~td#wXYhwlB(kXMty<|4UfiL#ue<5mupY8YXJF0Ki-G!D&K)5+nz zQ*d4dYGH>z-U^kSv9V7`WDuTEv%J1{@w_b?I4T~}mQtS#XcLa=Vh#A+SAf66tL)jc1-}ZQHYJ<^M4|kvHVOdyIl_+3w0Qh<IgoyDybhbquJv~m0kxbcLV zdMd#9Kyt%Bq2(BX6A`_tW(i7DP$!vi(AzwO$r(&ily%Dv>&G72tKGrju ze5RVZ(yT^eCLrzWOvwziik0akuJsNqQ=}q~wkB-JRaH!B%cX#466!og)9}VprQs8Q9kXq6rlMNVw3H=E3iWquCSn$h6ctJCG5-J;v96SW^AS4W z7QYIJYmA|nv?fx$nT5aZ!=zM+$-5V<7x%z*g895+n?ukJHv~U~HAEb&(DjZ&q2=J3 zsU9yFIQN*ur;}sf7FhsthkSL)8_!?5&*AqegR)of!ZuH~HgPoxnwfh*0YIfwWlu_N zhAz}7da)*ard+M6RJrn-B+QhB(x=TOOs;Vz#8&CG!{q+>S)_ncrZ&YP@apiRK@^tx zh%P*xL>ybqpxQ9`VdnAH;5VEbI0sw7@4c`vd_T|c)-UJJd%)%L^W?+hkv-OrK71p| z^XHr&Hhxe>pI07ohU@!AF(}=_l0a-oE*rg!5IwGz!aw>QF7ozy%i1TU(ZID$-;8d{ z0V3AnXp^-}1A$4Iv;dH#ZCgLu7fA=zGE|`9Skq{wY5^rnP+DaKp<;2V#z9F-S{dc7 z0Aj!#G2!>W{IY{tNSL1#5%Z0kWm=G#y8##y4f{j1mpH(ev`JLI)*VQ; zwzLAHP#o|`Zu;u%h3RTWS7Vg6s-Q3)ZTHbYq?ucZd zEoDzg;${rxOXMLaQ`*J({5&Dquefp3pOe! zdeTiyv)ZNd7{Q#BQ#sYaFS6&bwA9M>t=!ndO((U`l$#8@ni)%$2~D?(YMHwPuzTST zP_}t{o;yKYzKsA_TF{V4xE|=CFYbpm5rcs2(ZU?qaXJs4aatvCkkqG)m1?I09Ye#A zP@o2_&d`-89ubk@S2{?BO`pp_q_Cd)&!e)MO*@(W!uEG zD~MX;)DuYW_+tx9g*tzhCM$#$S?!4d@BpeQSzCmP(xA)iCaIbPDOgkA2~@CxbvI79 z6*xIV%NHKWQ*vbeBk>BCGFU0C24ZOwN9n1Y5u?NU!-mI+y_3-SXh;rlAG{rpc`;H~ zF)E=+Sd?a>%cWLHQc~$RCzN4H!W}bJEnSjAm0^P$;qZXwt7VgBe|Yp8SeG$32wI9= zv{B)FnA3y=Z6vEAq49y~T}(5>#K0~v;bV_bF@PGN{g8NX{Xmi30Y*}SU04vHPcTAH zn>;v8e4L*W42G zJTZ-%c&C{vX44>hX`^<@t4dau2S*XJzil^uhYq%dILTBN7?TT8OFa3g!?Q>Xc~$X? z4E4`XJz$o@-PRAEErbjI0GuG_%g(XzZn#9nE7d}ea31L9U(dQTzCQ=^{yCfY{PBK} z*=HVnzb~wF_+-b&SBwS_4q?Yz{mth%3ON8$bSY4PlVD1l{og4227IZAABEZ1CUD)R zx{QtJ<5o1~8&1o$Ox2%wts18CD zoua8T0pgUjE`<$W)mEYlEy4c)q|M&&XjMTkN*20rq0i$6a{DSJlu|-S(LbaN56&r0 zU9RqV!%9gR4)gCO6I%*baC6DIcS2Du2pOv07v%wM!RYG#*0Ade#=3|J$R{6^GZ04; zXxWZl_?@y#+b3-Q0B7wt+O|1!=O<^Lum$EwmT6hx7^K)Si*`L*6y?l94I%qJ3~%+q z?Tks3SDA;F&DXRYBl@5A);iE7@31%OGYECnA_<4Nk##(~7yobO@_ z2rPt>-mt0PoH#>r8u!Cv?4*YG!>a1BY(}i=#tMk3XR?-T?e2jwX4wPTPbT@rlH)L0cP#7EB_z0OTW6{sqW=dGqGZ9LY8*kaHq@gqS$#BDn0Z{({YD7zBN({6p zoINdM9~(RdVpFbHiMQ=cR(4H+AMR3V!#HN8LaLHQ?4wD3kjlr}`4~F%yJ_R+IO_iZ z4}@o7=g;pC=k|@Dxc*yVn!GfC1bG*4mVuv3$4}Yg+!$&jGft!?E^nK!5w}+ zaezG90e)WSNacq-Z3!-N&z>GJv+Q!qfRrk1fS?qqYLXHsO0|@aWjKi1Hi;z5+V?_U z&Uh%FDqSct=F2aSO08)0VLLwAE?AV67F@Z>DGmx}B~sQL8xd<>DVZrUW`OEsZqlx4 z0F?9iMjvzjTz`#iV`-Q%M#(*D$O>C6dSSa7G@wYaTk_SUC#yGnDMq2zz_#~c2)9k2$*C@nKN{d zxy3C^q!QIEk^?y!of8O36H!;KptmnL#?K{E@LCd}2eLrve>lXs2;2k&00H5+V&seC zi4d8aCg7RkWYsQ8>Q4|##rsvcP*5=^YE=0KT={C8Wy{{Fa?@2IGl4@SDBBZ(jmFVT ziGb21Z73pS$xFWeOxk!Bg|MMTB#a~R60W2X*=Ops>CW(^Zqoa(3%YUbVQ5lFVxM+Q zIYE}IIR!sR7mJ*-zl>Xq4%6BEU^`OUTh0+uPy?5>-#o$hLjb}o0cYjp$EpA%vl071 z2>?5}!{G`E{{S&nB#c;OA$vt6tu7^}cHt8bWbp!;v{$Q$yczprl_dz{S*m3OI#W1c zteZgwR?oA|Sp@GEo)9^wg+*8C);JKms3OTFTt$H`!kgx@1Qkw^HAY|aH>q3F_N4X{ zG$>JtbJ7w|v@s4Emi2kVTf{` zqz{A}IctOQ&KER}3_M{*SmLBRJ0A@B!jnl-L+fV9_*(}NT(ucW9n5q(jUrsHwIoeI z1Sj!QS;y)q`adxV+kVU1CC*6|*Cl~;9c-lm zga&i_#~D&}AqzI@0T7`qR;(Q)ERWQrj62{=Qf4gVX|=sj_;Y|~5RgC81QM=i{KXQK zpbL%KWf8;8bwB;ON30S(tV~}0VGNMc)Z+LSXZOa961KG2Gi6DZaW1s)cc1p|{0u2W z6rtN33;dx(3$Q*p#Lws#9@D%P>hGi~%=vvF;@`es6Z=O`KIks~b%G2jhw~;(AJ~y8 zoBON3={i8p+4z5m=^XRx@AI4+XO>?tH{?9{f0!Kb&&%NhUY>m67yV7i#hwyg%nNjl zU)^tfBS%0g&{Q1wMxb#%4|w|#3n4XZJ2F#xRIrs&joiU~=uu5ictYKlrB!>Nl{PJd zz9UH5DoSS8E>dNOsR^NV%qel}VUz}T9hW_kjVF-H?(h7*af?PjpC7-JVfShKN7{b3 zpq86isvA3eAEa&dOInk(Y)RSDoD_v7ZF3JdWZ@eW;u4eiY7`S{Xf)p;Qc7$zg>``+ z4>tRs)yv}0?#+IuNNp=m`>dw!*SlCoJ+FJjl;yim!V=R9doGmw%mk>WoP^Fl`-6yM zEg#!jd>RYMLb;UH{{X$?vXRIz_hlR@{UNjWMAa1B2fkedAtX|;MH5Agrz6EJh>gm> zM6#eP5sH+6a5$091f*7}E*`Z9UY1A?NY}aosZiF(iB_=X;U1E5WXj%@%nB7uPy(W5 zpfRN*v|q*(_>GJzUE63(wYZr_IvE zwCM*x95#6$-W047p3hjsMU{uXJ@1dhI8cseIN2hO-XZ=lq)Cuw$N^<@Rp{lgOO~i( z?1yudej-|?E>y+M{5n7?;6XC(UpCSc_|=)hlS&dMr2v%GLe{EX*TPg0N^y;%R>}VW z(|>2k*(at%s^?9WK5NMhF;cgIDxzwVZkcx1Fo{z(X<-skLIk#!3KFFdm0J{{Wdw9B?YWkyOP7!-#QPq$*t63Kl6GU9CfOg-+O)PV(gxmm0E|f)0wp z6EvYq3jULiX4Zd{OxtFlv6M`d%Ur6FIWq&NXhMRONkfoQF@Yvl#-*GcLX;)5QkbyD z?HjrKi9)7PNhGs>LR@oun3uAJ0=it*!BZ8RWo;ovLxos+-r)+Z8?oxTE_;hA3XxE9 z=GODe=Xe$>8Zkb6^@&pDZGZTD$5Ljhf}yB8w@aLxJw|(-s&uWSBeOs7w9chi`syir zU{$OnNZTZoIUI6LO_vp8r(y>8Z$fIxGO~Z`hn+fp)BgaeI+=awAO4h6FK5|OPJ;dF zxiIw!RR*O2HyMzovF6cagUxFyS9^@$CXg{Yj#lXxP)EPqBG=UZ&~kV-iBmH~^d6Tf zJ|M)yc2Wx-Z2)NvP-r<_L;S*nA3sR6ACJ}u@c#fA`FN#0vO-5y@V~wpDP&7ZWT%}L ztm;;8=GHg!=TjJU-Tlm92FDG2=Nzr$-xQvsqsQsF z9xUE4;CT@K(7!6LA7^Y6Wmd1V{?Ytq%|4`qc{0(vxOS>tWIH}lv#w%&G?Fl7Az`xy z1(K4XHq1d8ihHmSAA~MU#dRS7j(kF^>--I42=nj$FWM6lnuOU>rLzKSp$tbr&(b!e zEcW(qLeACi1xgM}C?FRRA!CG0GZ2sM0FmMhe0soZw0Y$oFvc4z-_ML>8{fmfFX}?jusvN02sj)4_c)UtQMSb{VYAt96>74PiG%E6(`PYF@iXKm5exZ@zw(6 zzZ0u04jXLy-}s{WdlN}2{?gvf`ZFJ_!QhilBY{}G;LDE zg)J+kNOvd};aC@EFJ#^dl$4+p@VW~qlGJ3~_(G>B3A1}L<+lW`ZgaWAlmWPw=ou+V zzM!E=;?ohzGqZtGsxa-CeQ|}%?L5SRpkg69z%I%d`4LlL=g5v13c?@HI7qoG(=Ry2 zehmb__VeciYXIU_pdUo%0L%eRo=%)Cu3|q3rLA&jO-$L|lZld2r$Jk(E3;b%!U_s( zpXI&j3cvyaaAAOhE|)16$w4~7Qv{R3k%8}M2nUF$i}q3mXIIJ+ThbCcBQ)V?CioVA zh>D!mVJ))3KLH!0B(8kfhmKaRIRCC3U|9OS?*;9?miGVk~Zal z)jX1td;s`DLiSC&o5)x_9DdNt{BZpzgaM!mma==-6-!HJDf+^;29H8M0awDE#!o`Yo`QI@L3zAnxU<3O9CC@i`#4_ROXDMMv4HHe{_W zz1bzs9KwpP;t$>C@ZaOloa2^Ikl;F!o0b98*E(MDEh?mxtO8I%kXcOWP_cMN^o)M% zVPj}(K}%F{x7IkghC>GL5mFEmzOT>U3KS4UnT`9!j5FQ4D$B>|2~9j9$zhq*vW?Ou z$=$PI#qUUHD*j*e9y{V(!Vry@dnj>Cm_n2gT}c6LnwiDnJNZlFO_91%3UxLeogVE3 z?${s;(4skAvxL#J(3P#Xt4fpFIlB@Y287C!Otefwx07c~qLZo;O;ms~#jP7Y&$NB1 zFK9%`lTfrvLZr%+wF^U*HpTti*D(wTiGwpH%i{jQj@}x3b<5L=@UUu8XneeDBP}URH4Gf(L0({J#MD( zrBcN%Y;E5Ps4&U_3B-W>paa=d%VcieFp+^6bA+_hPqTyk;8BOV2VO=m)t?BmaLz2y zUIo?R6*+jbfki`G2$?lXQk5!&B_Z6`*mSsX{{Rcb*|X-<%m5&T5B9?RGd2;Lc~ z1xmH})Q|xz_Gcth$`v_%qr)jW-K;feO?1|~40uBl?ay1ny(7y)YEf<)d2~6!;Y+6E zst8)>8QnKT-Mm=ff|fRWe=! zfgleJ*%584X{SyQ-~RvvMb|NDZ00FF>=Sd}95d#Dra%0CaCpg&H|h5*f$1i2OaB1$ zqNQEOz7C_|3g-%Y9F_2BRaX~|_-^xjId{U_6)^74AAcx3h8}$KFk3Jm=NLd5T>1IJ zt&w8_(feiB&RrpF*mC52`FReL{s_r@^&oLd@A}QbAH_SFS~|%tE%6160sky-6-f8oU*Uz+BS6=M1T9qZT-ow(5Ls9BZ$Y+B+q%qz69eWK=&$A2_dZz_j+&P(5j8 zA~)&Tr)?6H2~@O8X@RpvKsYgFP1)ySt)6lfDq>D73Y`S^mRMug9ciblnWQttRGn28Js6SRPyP{DBaX%5FE>>3VR_T_+ZO3CLp8}D0W%SFOS8b zr)Zz)f|0uv?<*E8shh#O6>zXgtCVic)XWT1L;CD4QVuLBOW~ACkxAY9oA9qk$tfTx zI&A*{DBZHcfC5z^MQOc3PFT>4#lsjt+X9m{M9o6fx_BK(y0J=D66sBtLQqx06yOC_ znKe{ytZe25J^cKbe&}g}nw+OrdqN51MzE4@a0SE;7a(Dn=hienaf`8cbA&QjgWu(% z#N3}I6Z)P59QcDfrY+L?MoGu@Kv!%Hec`ks3hFd=Q01sgk_U6Z?Nx4l4@ZS963o=` zDO^l{{n*B?SAjBMQc@jAWEz1D{+aC>bI$gK8uy7wH7Frc%(1CM0wR#KDFiX4VO9mo zRE1=$;#|Ohs*OMuAn_*$LY#BbH>)+wV#%1vLT(*EBwbksvT zDx#uu9q>lavxFe6MJrUriKt2T68pa6S5X$(O zKJ2;x4}~Kp%SaMJxL5w9w78eUl5c}Ew~Pv>OqdR4a*{vV!UpwWT~=0lu}{VvCZ%&q z8~)S?X%b~6LjaiqqyEsCJN=4jt&}DiB}^{BJ_7KSE?x8^-E5#F$`{GFefV{UKy2CV z48!T)4Te_Fx-su#9j}x9=j#@ZuuptTK{v&so^Zp>7;m~>K2hLI9tY_c*LdLco z>Hh%RVC@o#7ne|kjTEQqwA;V|63WOGJ`Ia-#>l%mS1zB_lFyzX{b4QZ3!Dae!4`J& zEnbWdQoJh zAt5Q0nqJ`{HmePC4(>lb5u{o^Uv?4W`QPq%E9v1Mh!_M*t*l1nMum=H<7E3emXE~! ztGBsO;#!ZPNf_8mN}rjDdnw`)CHYUkxy`cIwZRR(45bpl2;5ME?M^MfOxOg@qmo?5Y-t zzhtOPP06GOZfVB|B3dWNrs@GIRvpUt#YvpB7XSrHRnDh}4q`iV0Djm?iXTGPP4j4U zPEhKoQjuKAx;m8oF2ms*dm7Rd01910z6aunp<&dCK$CncG`Ul49s^2uZhQ(JbAZyBl2T4u=lJ-q^)5$V!yPqw*>DKgs}Gs5*%~ ztDcap+p*L4hEO7_d2Axi-0*>@58wBB^XH%3q6d6asIzO*2wDQWNef9(x5Qs4rBdu} zgry-$TDz|s$;zR2QB2C*=fgrlM?0s!D%pWaBl(i%DJy?v@gm-~FeXXe&I=#PnJ6Vh zz37?}m6z)U#OZ58t8qCj5_u_3m4ye;!QM$DdL1C|6MGj(AP)k@1IXGj?QY3H=81_e z8#Iw0{lvid4e3xl#|WxYr&aw&FVrEHiK{=*Pklj*e=2$Y*2B0(q-`yrmQBCg6sk<* zDE36u6dvR9fStzDgOb7sm)@iFf%u8SVlxU#6yMx9peCCiWfK1Y%v6RUxh1&}elc36 zCmLHHK1^_9%*O>P&$Wo;*g&Z&Nz#*#T{*@dB5w}0K7imMl5Oh|`$m2dfa?DMDD!Cf z#u25tJz34~u-pknGmW-3I;8Lt%~&=g&AJub)2{&p&n@IzenhW6Lq`f*z6s z;o@Rkyf=$NFn-d4Y8?T1rRpInb{4Y^=l90Urs9;TYySXlM0ATYW5e`~ZR6hw2zOF| z^?S;yATYj~X7C>rFeQg*W*Pffo+Tb_1RY@~kinnF?s#v=-+sS#AHyACK;X2f7sI+g z`f(0b_;ek&Yh6wW+cxd2Vd{}|5&8rPX5Wfby^$l?pvsUF+$EnF`$J?>3J%e<4W$V< zqIS%#CmDq$YGnt;IbW_ZZ#cl_u$(f#hA`xU*3KV4JcLO90MtjsLVKWUFNUxjfQ0c| z=LY1q947rCuh3`I#qIBa*?GA9P;>ZC$j4vTl+T_!@=<_2&f5s$%JCmZd2` ze^Q;{LvV?U6>${G!!R0Hf9`lMv25!K3A*LWQqs+2s3j#2n?k7BWC3+mNWUx!PlP|= zwqMjY2>BpKqm?E}#pTILN#$S&9q`LtL0%yDyGLOM47*SU62&|z03dQ;8^0cKHhC#Z z5L}g`6_t`nnqK4s-31c60`+6ej*qNf676sZzECD;;b(ZIa+QY+ z#PN!s0yHnIB$SH1p^R{!tP*v-pccY0ga91p9RBPBCiwlza#BxaLjM5Z!!1OEnYe9V z5P3#zfY3dh6M>2Yw8QBOx`Hu#*~~6vy%Q>09W{!09%l$DD#gYTM8MN!u|Oj$biObp zED8;RNw|CnZ&H1qgL)vKBS2YDnwF1@=i}F!Kq=-wbv+Z~bff+BkM3BSlga{S>03 z3Zh?UE)i@nIKrMqYivZbVb3TiLMeTCaLZPFVZbvRwLt9Wg@S|y$|j+94hQ>A9K*#+ zmoY<-zkxpk1<*%OQx^^nr1>z#Y&j3C7UCb(7Hwm+$=4p}q!Ruxar>Bza_)kJ_Nf&A z08+k@e0^(N7*cVn(Q{_cM30ml8PDx_Dj@6qL?5m&sfQVp5zD!UdHTWRVNTww`SImw z!s4eHU;M*1X(W64MP|XD-wI)nIP+*K);#qhYQnUO+Yg~jH;Mf?}z{ec`^OM zKd}5h{eLbok1xFa_8)hT=dkQ?a_^6|r6gZqkh(^alebKquDnW^*)u=^ETsLZy_ZvV zPSBC-V_2FGbBLBK2$Hld0Fpw}F-YQk38Mj&FD56?k4U6oF+Ac*bT81cj}P&ohW*~z z#>~Ro$$k|F{{S$Ns2$J(c$MbR6O+1{-O+6T=^Qwx9&qIhn>J(5KDLYR!A&(3h9CBLdJe^2iLF6v8r#u3~LGvAyPk^cbv>HZ>8 zPpp02@CnaI23V?>ahL-!0i0RiK7DV5Rasy=z0qz^FXt$Jp9nsDn9#u_J(>l*@l~wd zAdr?!##4f9zgof*aOojTc#>)N-w2+dS?rURIA4@n;SQinHB!@2=3L=yZ3>+;i)edO zZXbjyuy}FooGckhimy-sfKX8jSnQUikWpvJqm?u`3?S1r zWklGV1aU1&C#+b$w~9^}lXDc}+S(say9^=pg-u<>RS%RUBEjF?7(MiZ{XPd?_!32l zRsR5_=>-}qEeXTV))0{3Ar4shU#sLtc)C;VtR&(Ztj?Ca33;d$D^(~t3FHTJ!fz|_ z6e?l}Nljrt=&7t!J)$y+d^D931y<}ev%@SO-~wJT%BYye{#m1EQ80U+N`-Yu42 zya7ub@$cn$;j(nJCiwhBDJkONVEUil6HqBowIt>=ImE?Jy?h`u;bw`_N=l7*z39m~ z>Zq2Bw>yS=2lMcUUIjb@+T{m_8}~wu1wh~gQptK=!J~^@omy!YDpTBO*+XT8i(fc& zzq3H|)(7bq?||M!4kl}xWFbTcQv%PANJ&yDP+~Owi~x9?S`sA+ik zoN1nqfrd(P9oWIBhZn}sr6nNch_rEi&LF@UrylbG13u9&giwdJBxl@WT-FAmHcFDN z0z+9yZ}lCTCKRPi^vg~o3zaLcgalHmvrQyY9kI-PU;!yZc>AR)Y zLX@*nIq;<t>8v2p&Hsjo4>5JcN7i zcx)JD4TJoCkU#R!T1eXTm1ZCfgKd2Q=W*|x2hZ&mQ@t&fBR%a*mxl$jIdFyUOF zlQC+SfOe#jb021H3QB=HESa242?A8GTQJjQEEryuV|H=^v*uf@Y-s-gt2R{2ez}Z~ z7I;q3lpWEXHd<7#Z-r$fi*_a;feb@ca7JO+{0qa3kHR*3^IB4nF(i=I>j|h~31$IC z{{Tp2+#c6XQBVwXg6+}%k;~3;zygMk32r0W=~Pm+2ggQ))T<{1`rZYeH%moGRZdbF zcf#aa6cH??Bw5)?zN)jHu<9EE_0ARusP=QQA<|r5lo@ncyGNdo5RfiSTBIArV3UMcS%dY8 z-s73VEoA`yF#LzQH-aJ`NDJjQq-kY zB}!6Kqe~@Ki-IlP6A%y*ko+m)zv)w#zOh`^mwNz}GmG3N-smcoc|_iZCirj=^z>9x znTeNnb%iU7HpfqtT}i1SK&c<3aFTEUQ_tDJ7e0qpYjyT{TkVdEdazA>~v3I6Mj=;Ba+Jb zi>fk$uaCkMs|WAygU-;S+#{cZ7@k8Y&Ds`&kw_PZRs(;H&P6{9JSvfyCjp7VFg4t) z^&o+Mho8C#?3Q!Ld-cQNc%B*e3*DtwXEdcic-7OKA!@Ned%tFzhxdc^ji{t3nOmuW zT1zK(pmFtxJt9`pr~d$knyKNNifpj*$BB5IIatq{xy8%A_F|S_y+^(t_Ab}J9K8GE z{_J24IF789rTksH;zYDygab4B)Ju-!(mK2-cO>(C3^2F>CtDEhgV-~{i(3G6^ZPci z0XJdiKaMXG0Ri_xkM{onPy4T{=@n4_kMgoFP8hhUwG>qY|&|w zX0B|q`OQR$Y6NFeQ&2yqByG~BCaF@9v#r#w1^yH%2bD}ln#b8YYGo9Sr6`r!a2jGz zLT>)KSBxTB)995X%mh0tc!{(tisz1(=@MtP4E z$SA&1z{jg+2@l3@!Wmc)$LR)yv*N}JkM0p?Xk?3OVxW#DyZoYEOx0<74PhzXw6+Wg z`HPd5Fc6|@wjUU!LF-5G)H zH?p53kp&Y8DpFdc-t{_E<3I5N+;a&vd)^5p)#nJ~!CxpSe$-HmD&jeFXud}YnGhsVF)6?X=-2gm6h z`oqQW@PxJElnpt+P)<3+sKu((kRPOWm;Troz$uqgz-d4?IK3~{F~2OM5_;zi7J;9} z6?4us0K0O^34iiok2wAQF@dJJsw2U#Kcn*=@T&_b-Dc(VdC(x zkX$VBW73!acTLV3ffXQVpH z^cFVxLQTmJ#f~vrLW=a)&XA4dvNxTDVuCb%L%%kQ(`u^@O$D_{0AIseJ5p3}Km@0R}j-?}Xii2ROy_ z*ZfE6f+}HP#fBHeWAK715A6f=fK;U^Ljs4==O}I}u{_An>k^p)ayvEwTc=SeJUn4d z?FKo+s;ZLgQ^MB9`LrQJi8+F53rWVI-*^Jj>8XfKDgo{u$2{;DS|)@|FCLl%5`!U#xZZq}=2gseYPRr*CrOP9ANPfc-#H_xXy29-UT zLy0FGg~VU40RKP$zmF&(CF=~Em0|IRnsL|mh92MryQ795dd=#nd0$AhmG6Pjr|G@>s%jk5n)S|-o=uSS6jhS za{!mqIG%-uT{8=6R8Ugw$f^V9=cEr8$)QR(rP~&}H@)u;7!xq9b{uq}k~^HkpIbdM z`M^STC0f*dW0imrO^@&A$iN1(9)|3EE&d^ot>@230}$5g{xDLecO?P(i`cfhwimo8 z92S-Mj|fr9u?zF+K+6}5V;{QaKYz)O-PiKt?)<#|{w`5Hjkb-KbNPPK zQ-PE=ib!^yvnrX3l+D_Cl_cWvAT7_Plnw9_(%u2%?TKoV!)p68XWJyKkmqRFzR{Gl z(fx9Ffs$?&A8728FD_>i75@N9We8dpbK)qZ^oa{erAVE=PxYZywmGwVqk4wj?b3$W zkenr%>s?6XQnVf%gJlRGC1UKy!Ya;E`)} z9uN}bD8ItkiC3)7X}~&F1v5D)rtSx2Ob$>`Wd)^#w3HTB z><~~W&jAa3MEOQJlZ55Vzm>ksYlWPib zhV^$XWeI2i4}2gu38nQ&c0TVIQqt4`yC2m`3I71y=LjBq^5$b_rI@95{_T8VTfdi` zSmz63%svP!=W^QOOa;}7hGNFWzs9eQ8^L0kYExz!__lsdP(pF2Lj3xsF#W#s(0)sP zMvZ>!MxTB^lNi6;=G2A>t8sL6En_K4CWqA+5PlKO{{UwY6YQ{nK>q+Sd*KOJ?)iucIB5)-ib`*5cnew$ z+<=$4FiY8mw2OTpp==U-f2bWqG_od=`Z1`zPHqmMo{$!xrMpt3HMw5Jql#)NCav1g zP^2pZaB1SS1WZEJ+EP^Dq*R(n?A8AOb`Z=2wzaMC(mfIqN%eu@0O}ep#VU8;Q20N} z6iF&kZW(D>u+)%g=Ef)hlsB#ZAwVKuSNSo4OK88GOTsBx|7JCZ_2}x!9Cm2aO^n<0xx(jfC1`t=9dA1N6 zEP6mUuyF;>P(^MrZ=?ybN)s^%nuA>?S(Qjq(y&1sbhU%PnK3WAF376L4PZW9(c4qI z**J_qrUgqSi43%`9m3uaLK0HDq^&Dfq1h!}*kKEpqLiYUWGPb;8DULu^#yym#wnC>DAJJ_VwGUXOx#r*fd1oMl$ur8U5=`VoF)c8TTBzq>^&i)aPL-p^5 zHYW!k2)K98_JX7*iFws%1$U>BXf>*_a4o6%MMODBX791^j1D9aV0&6dy2bj#1_ZzW z3u6hUmm`kuUk?c9oN*jsKye9x|8@TB&bCl2Butz*|(y1HCj zJBUGkBed@ivx8rlHifC}#dgi`g|Q}uOed4+3P@LH7{nGK+tSV#KP9NN}; z0B#y|iBdwV-XRlMdbNR%i$@j3J>yT>Fz57wp^0+b%uAHk*`-TTwDct>-oJb-o8ZGy zlq3+RT9PT|a`(ikcqzoy2R0;Jb0Wi7)E^%{bBRe9q^}%pEd>7n?r-q}q4;U67P%>G zG6Nj{0K^~xiO6#vd|?F@Zs#FMRgbH|ZFs{R>{=88drA&D!{$hD&+h&|x;vvUhuv&^ z`=D?+Arh-3aMGVjzNOe{8$R5Ggv#2ssj2L-2u{;1acZ|y)$HXPWSK#Kh(^wdyBG}h z?lyIW@eyL0#k7z7UPPs*a=nooe4yMD7wD9v9ThNO-n2=dDL?)0%2&V{GYV3rOIm+b zKg=Jd7qddE zsaMhhiuBE#a=?poiUhP$Qp}fny`og3@PM z>v%H6z0j5c_JqOxZbS0#fPxV(c0Ey!UHsvOnA^+4rAMwleB}w=OsLWWB}`MGy}E(Y zEdJIn96DmqhBgPBAp)|ubuhyJ00<`zn7*yg7zXXpp7019Ll2}gYl-(qWg}LCq@|$n zgBSs&@r+{@vsx@wf71#xFM}J$W}|u%ePu;!Nq6Yi$`yViNPI1rf~=B|k*s>A2qV#u zE%l5Yk{KrVAeZ;FOqK(2@O0v<-b6FC%b)77$DAro*|VR*Z4#6v?K0Kr0+LhdC9DEC zILS%vJ3{H>^+RB^{EST6lTP$)dtT2i?@5-4YAYI%z5ypFmnE5JYnl|^x~8gG9ZIUh zK?P`Ft=d5Tl(P=#;dL2`2nqe+PjU%MXKbISguX@3almus0~9EvR0wn% znpDqoT1`6FwRKfZ|x}0amwD?EaW`buc zVnnY-p)Af4yGlaMf~1O_2N?TaY@`)z-)J3?V4`A5q^SybnJxWgfO|N{*?VT?$JyIL z_wx=?X0C}fr`TFW2_n}qv`LzGa)L;dSh8tZQY<*VX3xSHsnlBSsPX7xV-mwcV*~`( z)Rre+QDh9&gNlqSCPHfFa{laLD^g{LCZWqgPLNEe1y=xAxA!J1SfeFW-zX}r{BeU* z9$dYyuv@=UIY;7lkjb{~KQpW>jv5o$7ILe6;D1xX99)wZ3<0xa?ts5*Q}Ksd2P6I? zOz`l&F>-@{ZLOp_84Cf5u_S2!065*d%*dRFBWLLrht3V72Y_17@DSKHmxEG#>klb9 z;b#8;F~sAa$^~9Lp)J|R2QTu9rA|^;dlAEHo?yf8mZG<)gUZZuyG3lwkSOh;Mf+F7 zpyvptfD%}xJP+Kjln+J1*KaqD4DK4(x55^a{IZan^u`JjYc{Ml9RC1uj0Gc!C%QeJ zxc5iHtad>^r~-Uqr8k{o`9oE4mw&(Rws6Ng7~xgZez1y@!aL%lsfRcis5SL4*1O;L zfGptkipUuyuaorum&sAQanM&-{AoAbA2KGrFDsb zThYuP?r#UiIDv8GF!S+?-AhvKple#qcJF?$l?3pX1ZoZ(uLh)mBnMKMfS1G!pS~Be zOO`f(Q^hPRc9gAd5=x2)Qqpq1kdeZw*sBiMYOvFw{tmyFPs`u=JmdL6KB8$o7cyD@ z0OK1T(;|^FR^L8ir50DBQiQhv;8Ya)S{JoBT$z$pD{0`i^;0FTUkEk_2Lp!qN7^4| znUd1-CA{7ViyOI%T&XFqAgNE(!e#90{{V>e`!3Zjsi$b0v&>%4FsC6}GPEqt*=8qk zFiM=S)Q%p=dkC968EcX$1R<)Zr}efP-tf#uP!pDVcf(u57~!kDzi^A27`70aQHCTR zlmnaIF-|Vzh$9!!#WfJ0TfQ1x#(U_i_`5|j7ho>U@rq@IQ;r-bp**6gOO#s8GO~Tx zLW;^cgul)R;U2d>_{#RQB{<5KQ(C|GcwyEh%S!~LHHWCy9bhFVw14*D2oMAIZ+33z zq>#XIFL+$%VFNJ1i@-?lXzaf+7z}c}7PIvcQj(SRyL}<`hJha_1UNSg(D=MPA+l_t zsw8O53Tq#RkOGOZzb;B>7h+&1XqXa?><%{<($OtRZP)>pl)71|;!Xg!bHGraSN>T; zJ&p>N;t2c|X#prJd2=R$wlzzZQv4}OnT7LcXCxP-3465=HAAQiV|WaJA2$}Y`=F^w z9hz*To~iM?B@8Aoq(7=lIp@pBh5GuyJ2xNjVyZFUV z>t7a*)$xIAKr8HBgmyy=zT$a5Tl`{5!NpzB6@DO3h_oPkX%#CsXM!|;@fJKqfFIqA zNJ?JPfj`txBWA0GX$3AZVwN#CXE^P2=9CpsgTYojYz8s*dMGFos7CJUr_iaew?k>{K6&XRNg;GLaAbepx{{8gyW7pJmO#3^2+zKRleG?E~QmNj1w$1 zQL|5(C~XsViKFm4Di=cM?pI3oiRw@-AqrEHacE4@B2>x8c{6LDB`6ZD!jx?E6q-_$ z+@x_FV&B2T@5k@+hvw%Var^Z9f?3sCN<(&vO+b5{w1v64mgOwLC5C!cgh@yRN-9Au zpebYUFo80fyH(@F=IYOt@QKr@mXY?PfDpO`=WKyVEOI8L2M{*xnwe9?-K495<*HWh zPZFGjmQYecandGWt>aqYEGGO30+vrQ3<9iT*t7*HMDiIw(jNZrgaR_j+5Z4|b7*?L zvGk78jLjLNpPeI?kO>9a__u}+6$wK26K;|^h%Ghd3s^FLcss@J^Wo1}RWoL(@k*6w zp)G84Js_-xdm!`HH;u(HYISNjSaQM6r1FPOIl_AU;0OR%oHa0N3FcY9$&5oCGPEL& zC)C(;w}f#Va5)a~1x;TnnEUKn4-Gv-M(m^wPA>rr*oTY2haU(fLA~$vjue8DEKUQS zz0trb2F?!#uc(D7eZ3j&qeIb^SI47i6-!Opq=C`MP|Rpzf?Pd|z#J+#aeJeWY5v5i z2}(weF0Ob8VKAWBo@ZD{-n!6pP0lPy7dZ2ZY6^T*`5sW!(`-%y9CX4znOe<_BoS_L z*(-Bp5b#b8AZhW0s3zc?AK?YVjZJ{-1u~s?YhXL@J=jB@{{Xp#$&Ddg@NYT83|r$A z(glFWlwufjh7G0f1ghi=1>lBZ^Ep65Y!gb)%q!yxQD;a^Ikk59M80Vmd9)tS1ffn` zSV28+f$)hzV!^yQKnfn91Kk2}U_onTtV*4Nf0Zs$ zK{q~%SWa15(4{rLut^=96?`->l5ck!c*OEQp|jEtwv?nCtP+v#Xi~kai{+$Np33+~ zBkKrNH&IGQ{m$bUojEC}$Xt@5+N_7^Qp3clvUoS4Ga16tl7$ybGuWrr=>=tVEnCTx z=BX^838_r4RV|hf6pKusDJb5kIN3HNtNC)qOP}WmM7e1xK&>GvrO=UpVcvWG^WFad zA@BUU;SKj%68@^3d&kZQK(+dp`9KAUmWgaBwTct*5N(Q7G`YRK_KluwyDMW-jI(@q zJH?jj{t%`qGU*Beq8Ub#qLSa$Y#`0u1S+Nz66{i~J(Gn@Fo50v05c2)@-PaE7)iRW zU!Z_pif+anoFVsa?|b;bRW1$(3q?hauWx)61f`kUs7*vVuEXGTf`ChC&OBj7t$kh? z35h&~Bfbb!#dLV4SuU$|fK(kzxh3k)y79xRCO%R!mLH7P1%*`@CO_(@tdmaZiEv?PFyYW0VYTfkT16lUjNWd8t7DGeM`R-79P^j4!o1yYkTVt@w%UEY>} znX)LDPio-XB@RX$Nd>U|?Sv&SLcN?k4v~TJs@-yoaOd@c)07p1Q)u*)I8BZ3;Q<>o zq$%0ds!6_JH_`=n`a{`_aLaSi;Xz2JlUV&C=>%%$EEvU$sNbh3xa{-35E)eQkmunX zBa2vJZ)>m86`2?BFtsYhX}RajX$2TMknPAlyW?jP&lM=C@VI<(g(&u)hxHMF=>aMX zbAESd3U-;6hzzyTt~hyBJcJaAt1^eyR=L(Kc&(+V-E9 zmW>7Pq;8q6NIGhB`inz7?ASZ<);8^)aN(UMh2Zp6DMekx4I^~D(oV;DJTB`j9V0!g{P@e0^!&a4|^C((|{e3 zl0XL8>jYldCj3g|A)zDXq*3cUUYF1o_rU)EO}T@B*3pgrki?sL!YK>X=zJj{S>GJQ zP_%-RYq9T+11ZbBP7B$YPnGe8N}TI%F8KasBhG)k9x|@@CS|hLH>kemxw7QXT>lUC$YeSbpD(>;4Kqvi2+R9&amHz3*@%9D`Fz9(Y1jM?~5!XcsGPu z%AMY?tOv7l`G~#W&7*`+{Hp%|5r8ACVheMP2=9j~FkO`T{NUh!d&I!)=#;H+JXde6fj0LWo-CqFou(wS(iACnIFT5&*J z!rX+t;?{e~9IViZa>J@*)FHZ`fES5-I&Mm?GN_jAXdxi8%ojQH{{U^^t3NDb2%EJT zCT7n;*ym#9Gu0)^SM4IvwN6ujXUtyDUH6qpK$xceGz9Txm|pA$S|lLMT7U>iK9XhZ z_9wVS5{snLkaDFMeNLpnxzFGC{?UBC?*9Pezu)H{$k1Z^hm2DA+QTb-VYT7+{bBWm zn>#W|^-0ad1dUBfhe_iBuW`;0-J$bM(|$l#CSzW zH}AH%zztHlv|W;Q*O&N;)MbB2DK^)aLlzadG@&frOd6e<*+IRNd&8^wWLroFG~1g9 zd?CVNId?$igaAwEFpL4bTiqD>@?a-eN>V{2@xQQnh~4G`Yu^0fDN>v+Ssmkv zqGAVSDp4Qqe)wi~cFypu%{XM|E>MKF4x%)+aZ%BqsEfUlg8u;1d?H%U{ZdL>`keKJ z%Sa7X6*00#7Z@}wlYS>R!!B^JEGjr%{*ZckyZP{d{(i8VGSrtNF~mYfy^st`aOFnh z2RRPtU|BMqHDD_Vq<}4hy`cdJy!CoBe2q1q(&EwfGG@{?eS&n2uWDMz0-c&|YpLv1 zuUD*X+eYo4T7Y}4D3YLwOl|zhj=N$Z2w5A+iA2TI{*X~LBU%wO|)fB6h!-}jb=FyQ2SoR6e*k3RUAl;Uar z(Dx;|VFafRE4PC{2Im5BiU+Z8${c1Ppw<|3#F%k) za^(ebR%Mc2q`zNu30rA#{{UMb7Vm_vOu(dS4p8-2d*LPTjyOQPWA}U`7{}ij!M|7{ zwqdMT_s8=DUTC*Cw8!XS5|MXP9U0r*oFSNShr1Wn2wIZ6SQ|G+&J{1!(BRNRH*_gs zIOA-2#Rns9umr%Bj(@apyJQ;PIJ62Ws>N3$&wOwmBdj~$&QQXo9{9%`niwm)NU>tp zKeP@aqtD|W{{R>g@b~`l+W`E!zzL)T+?5{D<>v5I=>!YXZo?7X6BI^#IlnmBmRE^U zXV5c6Pjz^-7PU7&)d2M`R49Pv;~gTCXYXr2?Fg8z(v3bi7yx@UzE>GW(v+%Ho$H`0 zhj~$Ji#QJ10mzrVDkCOu2YAJuWUSwTAO4vkw26}$=##jX2M+84;_Q3OPukA{wyEopEjK(U z2qO9u@Qs>W#wc2Y-qfK$(_^WMl#pFOLVo_v$MW8hFXP^ z*?G49Pk;Ml+~#Bmt=gc~G0M8->8(tP0xNf&kr z@6X@o9u*TO)=9wMOp8J$N>ke7F>Y|0)XD4gfS_?viQCcE;E*S-rFH6NeC6seQb zC;?X)X9q!v?t-0_3fd3-MOivwkBkw&RH2$>S-x=QWc5GlCjB%0pmEHO`M)ScVX;-q%fxTXh|VE%$pwb4N5|=e0!masX_Kf?e2vnI?9J??cDl7Upx0e zb8nm_lpCIrST(*Z{{Z3~)CW(8IC@m3xNt-DgtVZbrhEzTV14jf$3`}Sv;gcJ)#GUG z5O0WRv2{H@7{dgYzZ5-#d*ZgZ#J*iRz;;RakCZ6^Rv@-uyd-5#p1dGAAtchI<$zUC zJ#3(V>Jmnvi@Zx~dq-A@={PE=q;|%d3p^z!3X*Th$nl4E;Q47A%e;h+3j(!Fbg4l8 zf!P|En2An=_7dbNRF7$_=Qt|n-h8{X0e~L(N|lL94|)BeE3!uBVvtn#C|F1xP1@K- z`r%tbmZXo+np4!=c)*!z_fA7%ROXY?3cD#%iBQMS6m0t}?gWX`HkqUbSd~pO<;&4( zZkL7619ei?nPEx_+(-!yqBEMjj47U#RFPk?llTawERd=~wDKd`QrMGK?CtfBaPRUy zu$V*Q?Ee5P;V#Lu1vP@X!rK%T1Md(j9OLYzkM#b~*yfbteGbjy-zC zNlzcOk!?ms6qP3nyIbbk{BtlDD7tYe_J=JFKS)B6i*cdv&I2A1gjr8$Rq_oT!aGe0 zn7OGy55%KuX!ydU>=N;};wEF(S}^ZE5xm+LGIG_Lluj6QZ5f7QI8))%3y(bEJQwK< zWvQ)`Uq<=Bs#v>Ouj3pt(m7I-?`w2`ns0+A=Kvulp^k9mDH>Z6V5nd_jByaU#f8KK zQAk!8DDuh(63z}^;|c&8bL3*2paE;^6uUq{SB8Ax`aqRZ#FX>Gp%qr|ZX7#@&K%%% zh6f!CR0|E@B(28NV#C6{WypOq&kY6X3!CW7;y}aLK5%Ard`mq({4G6ENq019}>(Uq-3M# zlytW^LKTHhysS8n!M*vw=CB9%EF^qk8#;KmQi^HOmBxC!1SQ=BNdq8U5C?gFZ+Jwu zCV-R#;9oay)UT9EsP4q6a^_99w5JIDOH#?UFuI(ra~4XmQc{s%!vG#ACxvQtn*u=; zi<{vds1KH~rCAcv4NvPEQijZvj63=1Xlz29zkQ%syW`79mPqYem4m;!DZ%9{JZ<%b zAieRu@qA!RDHZJ#CCf&1fTQYXQNQ$vO16vs9%Cp5x=>$vN$k>biJQexg0!xAFIq&x zqbm(m1>$;`g1$YbSy@*YRWitXTso~3_>uC_qVeVX{`T{K`42wt&5z%&_>3X2&*2^4 zdh6%!iKm&ike3G#alzvH+n~Y(3&XXn(AGa#I2Otn;fUoH%i$lRN6rve*$TJT8-&VG z?GOrs=34tDNH3v#mQGNGlBNU_%&-#DgU2u(NrS9X6?Mb%)SMsI%s z@#`Fie|hrI@7DNU5z5|t_`*V2%7b%!z40e!#*z&{gZfk$U?P`vHx0AS{M=>ng)G@P zokU11jsEdzL0S}~(Jn}3gJx1barTzpu~2{bX6 zRoIf1<%~JRwM2T&gdcv9=im2Z2lF4vhwwCveczwo_j}^;;rA?4a+Bi|5$ved*3TGb z4~2w3tl0da#<+df%tu>y>-P)e1&#B8F|CC<^@lXGR6<_dpaEp4d3X~N6H*x?_wIzN zGD?Wb4jX%z!mE~2#}A`p^?11Vd|;M-k!3A8W9LYvOPEFnh{dsc+shoVfa!j=#sMg| zoM9oNS{lJc>@Fe5e&_=p>PJqngn$`Yx$A@{j4{hm04Yw`2WCis_+7J%G0*(PVG^ch z>cn>e4=}6yQvD#50;MN4@HcjF3e=E!yLgCVl(Ex@H+A9Ck;vl&C~&>6@POCW@b74A zsW>)5I8)$T#p0(*8{?#Ll*|W&aRwdQ#b~I5iYqjAruXiKEF4rvSbtScKcwWQ#u6Im z6_=-$t?r6SfG8&5`1OfZf{;|HLdS_{xH?j&W_N(rsmpaR6?2XUNJUR!Zt()p&|6EN zq%}^X03|#_i@C1>1)ZD3XA{kJDb07(7QQ&bjyET{;OcA#bQk22-~K$>B?WeOj(f1~ zgsmW1Y7%O_YnUvcJ!*Yd!X_+__=1(GDpk}bOqd-0no|AnCs4X(DsEgvNG?t{NxHek z67YJA#aip_TU;S2tg<_7S@C}uWZ;wnc%I~8`$f&g^z-2jkpBP{);hN@ACx7_0CFqeA(q^G8kPqfX` zUjG2gZ_97H$HVer`EiVX?0)PZefQVy*Y4ByjAIxACR?|EAMqEz3V>{_Ys9I6?$r$l z$inR0M$M+5aE9=KYvFjc)Gyr%Dh&8@FC1d4IR_yC4_x9WBGaM z=gwHb^iA}E!J|iKpL}2#+5yAj(JkiiCy7qpEQd^3wN1bmKF5!iMgsA{MHvqBk zdqQhA43^LR!V6%F;|xXec;HGZb_yk%yErPVh~$`066!BfH+c`$ta{0*BHnOYowtF-o{qp^JLVJNiIk<*phY@9PR}@A*MdN>wdM zadAq2wZ4!N)hR*kf~(79@P zNS2CNT~zM_?=_gcAz&lXmAV|>k{c@uyIipV?gzNZY@ z6s3POxhn4ro~ImyBWT(a{{RiMEbSXXSFXB@$x;Tj6LF?7_@#i8F-uIjV(L`IOaRPo z%2ASHjnv7CC_o7-NE5fo7E53gi3S@M0VLvGuYOoYSG9(bgZ}^u(SP7+`81Dr-Gp5J zZy50V(VL)rV6-qefit66!@sn?SHIlD7^zI@fJL#iDGELKp7=@?ONA%^k&9q&2|xL1 zxEbhqWMRt4#f5GMATfpv<6Haj5a8tQqh<%gmK@=Wf-txs^0Xl;4O$kW_p%McM)Fek zC`C#sLo~pyw@G~taH=%%zt%1?2GLV?Zat{rBKPOsBZ;|#^MNcRQTn4!o%O;ivz&#FEHQ$%rAfc_bUzUrskUCa=wM$A-xw7uqvfN;IOBmG_~inGP#chk zEQJ8z>e!C4WP-z&NR$n#;kAnqaC$}#*3kDw44{*ls+QL94u{J^MjTJqNEw&QSj-h4 z7V2#xUvkOI5Cu;`n{iNbDCvxjr#a4&e2` z!g1mk*2Ir|5_Gfzq6QuCDovr~rJc>2>5L?l-6|)j`n*X|!CvD9O~jn-{$S$X_)Dy% zCp9D#v$BCYY9eA?Dg{bUwJZfOK>^>BzHo_x$^l4VY*8_s_cTxyaswZcgDmDX&Jqfk zrjWg9$^-XvZCW29Pf!WU2rR>e;?@{J;z&|)C0K|FQ!p7HKKQXl3^oo`M9?pgeQAj26=Ld$3p`KI_sQWigLfcCEEqR zOuiA8c7TM1c7bkDae|cz4WWW?H^vfF+&n?Gg=1#-!dnSStllndbK+nDewjwmIl&T8 za5r^=k}b&ICXjJak3Szi=)vyy%jSIbjMZ!jZ;S+o;$}{7kmnCmOr?T>H6XT4Ze_X{ zpcOG=HD|RtW?As0ML?XI^*$t>bP(sSobl1R#aI2iyS#`YzgO+&Twxj;_XtsT1=Wvb zP*hI{6)5t?3Xf)5M5GQ%FY+%EPzogpvjn=Pe=c1>u~t~(W9+F@wz+#u&$YH+#;0+) zGEuXdLO7)opidLl%sRsM`N|1K$x@dwSR^F}vRK}irrh#{eW^Lh=1xS7pJ(D6GgPF2 zR4I2y8u>P`m9tEmxu#;kvL&TmkM8%xxo8xjBgE=__x>-m5$ZAbL$%?Ua^_>Q5(S9G z{{Xq0x+q|mB}cvtz}5^ckNGhuW`0mYNPGyx1FS2AgYNMWP9306fx_uj0Mmz6H=mq1O320QhWZFmHw-6)^s$w~QnyTsUKdA4#bY zv%XOj3J{yWRS>{*FavldmG>#QDum=)zFj$6R6&AOI3_Z|60jBWO z_&ae3LMBUji8B&w!0@^zqnykL$ih~X@jJ73{a`66Wg8xFEQ*tUA$C=if^Hi=u}b?q z;R|%`%2mT)ddFu0YrHigf=ALZ(txGdbjU5$918Hn?=jn`E(Gqezkvw ziL)#VmmHGN;muac!!k03;NTWW&nNGLEhO(09bJ}EmJ&_#0Kr$Zr})QTJh{hMAtMLJ z&yft3X4QQ!=QtLqCGDxDugUKZsp)9XKJS+-ddH8Sce$Vo43D08_r{N}geg^7BE~2f znvzm2W1J#dP1kjIWv}fF*m?8dAvO*}w<06(XqZOHvr03zxw9saM#&**{6aQObfOWCwl5Y@iLln#$&7Lf~DVdqwgY!BYcP zFN-jC@QQJ9V$f8Q3nzp>jgE12QU)*rZXK0oEdfCe+G4{{(Jv(^)O8@`0H9slqeH3F z#g42R9Q|*sDb0a_>ndfEk&jqNIozb=VSsfki*E1la#EDo z_LWEqUnggU9&H^Wk>=ifAxaMCg+JaHpAVK%@YnozModm+{{Vcn)*sKt-E)NjeC!*` zLt&fZIzs^DU%K!9bMS^vOd)r^aZx|w3C7Khn;7IVJ@|R}Ks4iPMBSTaUgS=7Pbuv& z9h@B_+SVma+6Y?qc>+$&DJY>S2uMj%zAC}VC8B27NBmaY=-+!gC?d2wggbVb(DF&*f0mU+D@1B7QI**skRBY!OnsX2Q|b}xm; z(l?<1m7q*2?I^k(i9XN95~@2^5Zi}-_BrKeiqP!Y+}q^QNK%2-{!k35sZv#R)K(Or z9odkfZe}=T)(aH>0H5&=t&(bnWg{3?_C&;=)R0>FI!k>ZgrvD{p|Q0fc*Q8$_Jwps zjq}zj8x+fo!$RwoMIqIFI>16_&d0K)lA1_x!s012%{19J$5L7dRNfSfiF5w|WECc~ zl!JYGwk;pcm`)Fq$7yu*yFz^$s%2gC$`vo!Q4OI6H-uuEsrf=>kLE6=C_9E4VPPJU zuo99Jcv*+{6>1dRxp<9er;|p5Q6ki4%U?;Tw!H1lnU6q}@ zyl~%JK>q+R6mFe4!3>LlL9^Zhfpge;$Y24FU?07T*Z3CpLv7V=ZC|? z#xI|qzqO!p3ZbTTE5-bXu z-pmx7V^2PQa8;2#pbimhzOWX5mn32?K#RNB{Z2~0-A8Q3$eJkKc5fad;b9Beg6Q%QAorC z9^(#G>jxRq?BW18HQ&}|e0g3cmb9hPMsyY-N%4VA#$6)A7J$}J#6^R)J>M7)&KXxi z#eus<33T>u9s9$;V(N0G;@bP7r3;p$-Tq-or-@Dg7?Rfw3oY_7HAy?Uifn}?p5_y= zZ2^j{{YeUzr{>}mjZmk^xJj`cSjNhg0Lzx3Lugb7b3k0AGZTgn?SApTnvhjB$hE+* z`Fr5HM^?z|=idisN&%Q=%G_mACny9zLhsTyG>P+EZzmkc6qHKIC>;$)IN?J!R{BAz zSU=j|2;Xi{Yc#ti*MzHfE2`nXF)VJH!vG;D2v5+(V5qO<0Vtpi~sRyI* zwFoYoq0D$DMa;)#}9!yRu;$*3x+BgpwGl~EOZrbPZ zhGE%_no^KI;&xXKs|2XW^dn*GqC-mwqLB_|gpPyJfPLd;?9neM_AaHTgO!Tm=uh{hf7 z2SN^4#w?~C@R>ngu}?l2^XJa6@ZK;8cBemu;5WPB2uQMsbq@SI=Nn4PIu|Sq$ps61 zGQ>0xJyf~+L$!%`E#Q3V2Ag8~;9_#hc@fOICOcQ!eKeTR9pBHp4aO9u& z15bN{{vi*Q+x2~7O;5uuD1OyO?`!~aZSRRv@K(pVnJsjs=x~*>973RP$~U2aQd|Hm zkZ<#W`FuY%zw+Au00lFW+%{KCp~OJwyNtfz*B?G` z@7&M`=N9#Hho_8UF~c{2;8CA9=>n4FPNe9bePW>DQj$x8LYbJWsSkKHXT{y^7~>9- zGRMXweWA0JriqEHKPa0sXDJ)$37(c9reK>a8j_)Fl0~9Q6^xNeug)eV zLZ?n1;?c9Aum#8X&M6uf`FZPW#>}&R6bJtR(V1R)B$j|XzPLxr&c7q9VR+gl5X!RU zlGaemz6oy5Fp@O8Gxx?X@5|5mi(o!5by@@Sq_=&Cj0H2Qo9ZBU`RfK1YgUy%K?f`R zAz=7t2~Cs65CeF_0ulwC<8J#wXcHt$N8vV5NAtFTgl|YtxR)%GTQiWx0+X}s=ouw4 z<)kX^<&#lU=Axs`p%b==bfFwVQUFO=W(jg53PMH}b{vODVV$stA;J#<%u|ps zMJ`qV3dMtm9HA*q&L-G*z_)g>a39~}oB}MU99I{H7T5g1{{Uzl;GGBgfQ06^QSXB7 z(-O@BTeFAKJAh7BfPh?*D$oae$11#S3FHZii4?@*4e3#-@CNu}dH~ki0d4BP<7Cc)*<{j{>U z_4>!Mlrz*wYlgtaHD4?8k3T;*jg?I9nSk`7O8TS zw4~Y8Fo~mTl9TBQrK(X|Cn`uUcFaHwpyLOCg(R|mWzUJZiq4k8&;ZIV_QM=vr#vmn z3Oi>SU?IC%47=eX@1Bhpzg(kE{{Sr%yCi&IgqX$$4Z(N%Mx>P+X$RHMzAnVwxt_2l zC}Vnh{?Ma?VFuSZ@`l491l6x2k%c9Q0AY*k8>tNKCVf(8SJseF9t_i~H;Jo)a6 z)Ba-|@yWdB^p83_`R569s&n&xe^}W;sFcl?R*-H`nbPaIwikshjrOU)x%Cp6AUOW2 z_`D+Fs!Z0;0awYQq$StJszFa^-49iRCulKXr%Z@%|1!n2?`EGl?gjZ2`GJeEu+N$K{bs zSF6}_&AP?#wi!Z5gzuPWkNC&O2Fo@rfHaK9lhC3v@5=Xvg0kc|g17lKrUgW6=+rJxz8hv3%W{O-lP}53ess%y|spPk9HR4 z6SkGCCgNPX-nAP>=j~L!#Xe^S){J&_01ZL%zJ_(`wWwb4LU9HHrX?j#Ih#f#<24R=DE z9$j1G4x5YIWeGa;cpB!;4@hjI3y3x`Y~XlwXt~1!AG8y%KZFeh@{6-KMrh%)9{d5P(!!15>P=hwq>Cy!x?hj%XXBI{o*DWVL<@Ug&T_|r3df0idpgR#wBdy z{X&|#CmD)7f^jjhY?4t?+h?X!ig;d9Mc4lTq?U6Nf=X4sSWUfs+Pi2_?54)vv$QkcJ9OJ1%u=>#j?}k z7&c*pcRW(Oj9FMfc*7W00rP;Iwa3fFpq~z~{;&|bu6@It2F9z6Qeu+Cd(+Yw-6OK0 zf`*6nL2-zG+7&xv;5e~7FU>gk2;=)Zc}T`w-W4A7h)3GHbyB5XSdcp@maLx!#ItmO zWbL~;RzTofz&Y949Vd7{^7zO7vDrWERidRRCWN}V4w3eZotATLI~LNpBW0bzw9J)n z_?c-XmW3{`!-!FXUMNUWMmS%_6W0A8`C$zV4i_dF{38AT0MiOSspsDuu!Sg)1@RDT0~blDp2`sA8P9EDi=82&j987k}>pB$d>rzf`O0bQBQdE^HZrApd$)Sa4187XN z9*UNi@r54KIAp#j{4`9Oxn!+VrOBt-u9GfMRzLw%z%hHosg(n@2jfWLkuI79sXoYV z^LPo-fc(Sn5pTN>;9>k6Bd73n{N*oWjh+=K_DZTubsqQ#QE*EO=^p4HCD70Bh9<>B z$b^vzsZ29ya9kK9K}FBX8v-KZ&qyW|aeG7ZrWDwpi~w+VKcvGb@Se}qMMn7o-$;Bx z^Mr2Z?9#|Or{7V6sYy~?;k9%574QgH`@DT%;}sGPeQ88_(%Li z!n%dYYlDrUJ6_B7e(UW8txEiU&$ew678p2I>RiOjQiEbg7GS`u?M<~SZWX3!mcH_r ze)f&d(fpMQJuwMAwXpmD`Yce4khn4iR+y)e$m=gqORoH6ce)UlCMxq zRO?(f5|nWV6BS9>m9vBV#dc~M5eb<>mrgB-OmNCt8zQW^Kr~EKH}vy>hH8zv!cq%R zd&uTvvtxevz6r)G${!|`Y9oRbfXB|g`SpOh$S$&4}0+<9m>ZFPsU9v=t{du5CJ z0sy~j9#8=w12OHG9V2!eq&e!Zq!s4I`1Fb8c<&4r#w~JN$$?*dZqw?scX`$>BZVq^ z;07GuFFc~Q5|@QcOZ6Ca`eRGGW=D2ebB@R_`sn405Z%TpLWIQt0Z=4|(eNFZq)usY_T( zNk1n>x^?OIxLWm?mOtrBaX<#Q|4#?#&yysagguqM1r3R4hG246}nm z0)h&iR21BoC`x#p0J-8$a8ey9xlm-VECvCK+c>6H4~sEA_^7B6pzV3q2N?;gvJ3%> zaR>(e@aF*D5yG1=hCU5ww}bu0$u)Y~MpGDT6( zcj0b_JNLyPj_hKArablK9I$LK(g;ZF6PS9(-eUt6gDo*pyk84IJD?5@<=YHHKZI1I zDDxP1rrtkD3qGbCgn~rSFKpMO!c3;VDgqJfAN=IFz~6?$6n0a*s{5yvZfoKmk@JsT)_N+}~0 zlMMYJ*Tyv#hr__$4K7cGpmB4@U1GiJ0ZvZstTJ9k1F?+|fFU{X9}Rk#e?Qv_{*^@JoAI0JlvOHVO8PtfAf+ia5?x2KQr58o_?WqO&+ZR| zQ#i25vEh&BEaUvEC1cff7b#<)fKw?6Otacjs!{&+H-He6B`vfAP@2gpmaaig`I1%K zA?8g|$x%{?FT|`(t?u|hQPdvb*kuwnR462=i#Q+xH-+(T0L){01t~~I?npk7ODHKO z*e33IKp?86?DHi#4hkotk{`T_+(eY(%Sj_!wc};CrQIzm(J4}$hw*U#0Gacb@jEXc zh()GJxM*w&aex8+SmOgddcXj1w-e-f9b(;}@5@Ls%eXjlFbF-y0rzC^%-r#Vq*QyL zUl=5wdfpA${hm>7uxc0kvo>frwivWt&H(-3GOzN7uPcKJK3)sqOW_!%uz;#URpMdg zAw(=Xg@8!H?#&8EMP9WHb-pWs*TNP-N&*d18XdO90Ax)#}67Csj z6=c+lk&)*gt(={5yb7juFOT?!%{S`}fo~W-OjP7^Xs0M37j97M7uG2TF}vf+Irv5l zesK7XLOFDd+XvDue4p;kp~IYxOdyMKBuiGbCn!>JtCqUL5W7oBJUBH(6%qQOGSZL{ zEhHr)I+W#0Q}HXhI55t_EnqHg(TaRxz=y&TOE!?qJK#%Tm&Z35G0GcHd<=MVf0R?= zPmEcM{A1E3C0Q>%>mDeiC2hLFCB&VD4o2Rng&{NG$TKq(}vqj~pqf|8dCO)3Z0>CZ!~35XR*RtGd43vv)Z0t=Su z_gq6GFwe{PhL(~`R8-bVTM~X6m|oborc>PeL?4V9ggT}y1SDowX-YuUmKsOd+Y&B~ zl4QxMd^gND$^dgpaS_58x++sDwel3U;*8vEI{ZW zj$fR{AC>KKPa0eVN~CDFpuVc zPfvt1hYawG-6&Icu!JkxLSMW_@v07_-!5>Bun@<%z!``s51tX4l;^lWCdL6#;Vq+6YUWteo|WkMkCk3UI*U-uS2` zA@B-Hgk32g+HjAa0s(uzMc^fa>4)tW0V;O3yr2aNbtDq}?E!^P=Liif1$TSx3A1-V zXmbfydFiAYareT3H({Qz{gAn zDm>u{^=?h`$_fxcNo4&@Asoq3_y`qCxpbyC1lkt(c6jqj*J1IGRAt!{H8b zsr3z}kO#?!!YnX7A&77}L$qxdySKQ)h%dx*>j}SDNlQ6T_<#-JQdWSZ9FB(=G^Fm- zhwHL0%vImO$ikdw;rJRTL_7-x6| zvBJkoM`Vucav|8k8S5W72j7$mt|7}ixNz+SRHZ=vw)aL14r~huvP%1kd+%toOG>j8 z+6gn3DRSm#kkIK;<|zLF<`(d!FRii45|WS`8xw4x6-imt%Mb*)Yfao%GVY5D4_cFB z-yBrdobDg@ftm;mK!1Kmk%4$&hQBV6NkJ)LvxB$bv@ceM#@)YW8VO` z)#9fjoH>{dHN1Aew>Y}nq59e%5RmqVs>2Ak3{{A;{bT1EmWG7MXWkQmYhm++Q-lKv zNjO4H0Fj@@DX?LOaXvX^;|i9fxFFrTDr*>AwI>V@k(?FNlwT{_4(TBh!4=G0u%gDy z2>_24g-}bjzXXJdozZ|9AF^RrC7ii6y}&pluDY)sVp0i&H~U4IAdqlmd`e5 z71>HH#N)-XfRrRSu;bzR+5n{iM!}f5?gPdcDT#Hn%O2<| zCBVRC4rv5rK9Kk~_>4=Rgks3dz$Ad>lbNR|Y)E*v8b*Vjv5@ne9UvjfWxdG82LlX_ zFfGHJHo9p8he$SNZuk+neiRQsNIo7e&;f+BA@Ls!Joop^rvdbZ)sY!%7HX2^vnc}Y zuTHS0YlelbA+&D@P%13=WLpTig1=osvlh$W3NQS^Qu+mB8!B<6%_=#Hw{*X7FqFb( z1c%YESG4-WfI)kQv+DxM@%{!U!|!fzJO2QH-*z8FsH6-VhG*S<1wa7)f2*wG>S^!bAn`;@TmOOzPMOOI1^oOHc#~3I%fyslqO3-H{F14+7i$pebxi-*Ye_i{PFwk_jvunEzj?<{x+S_jAQ(N zHiIT*!S_Ot$8@2=F#5#hXmV`8ck2ni48(+Y^NpfLYuQywJ*7%eEeQUBQ14^m7-Ar# zr~`=Uq!g*aAf&dKLQ{zWA;y9wtPm5O@63oQ?4Nn=fp~G<;u;07pHgAensLeEi>*fn z!Levgx!&*!gA3t_g29Fmgt>m0@(`I|V~LIy&H4Ajosyu~Xf2EYB$G)X&{|`T@m99* zjxODZa9njhdBIAM;XrX4fDbUx7z6u2S7z?l`N9?j9-VjUQqkLctO7-V> z3DZ7*NKrbLw>E<0-Z5)qtH-!PvV1xHA&7={?}FVwczqp*IDan%BG&8S4sGWcEMk#+ zVXPIEUzQy7OYg`#muD!b#IAe+a3pE&)= z2M6wi#W&*x{4MW|;yX;o{k{=A%o&Cq2Xrkm$U>y3OiquLyaX$Nik-)5l>u>vxIt}9 zU|0w~0yaIFuQzRywVZ^hY!wpajucCjgi8n67VvmLP0Ex*WEeg@&?4~uTkpT{59R6k zJlpsfe$nIn4?h0@&*KhDsaG&@A!x#`;*C7!giDs!RZ}6tJz>e z6193M@|R0wd4tv9rCzE~q>wC9p<)bM5r;O17~%DdJc!;k$AEm}h*>Fmj8ZBkfwj`u zq@SE8oCPEbh~&@$rHW1}#ktxWhLeU5*OQ1z-3QHIv}8v};YcO}Ch5OJtR-wKq=kHK z-yBvV)d%;&iVBL79NQjH9U-v}p31d~upjPs&I_>(gO7NI_-KAm_@QtC3)Cz``7yze=l2vb5TZHJSnPV72W+VBPB?$d5bt{xhl#^1WOF~pe zL}2-EZMz`E~oT=lO8|0FfR40Db_Dw+B%RoZgfN zRX^$vY#f#|_Mo9phyzYd^M%vw_-hE-CfjJ(<`f^)iHH;)w-K^dq^T2jWH+`7P!(-& z^MF%;$ItH;Ooe9fPGUMr^`n*TclIHr;|86@paqU z#0cS4S8IJCE&@ib@r})gNLzzR7ae1SFf93qO~ES13wJ<8c0W9X0A*CA+N@~<2ZeOT zFMFO*VdKl3GhP&ZRvs`k%HK#VPhax@CHazB{37SG%OTDVC!7^j-1=G#?T=U`?Exw5 zz0SP9ct}&`?UZmAs@*xq8nj_laCi@_TIV?4V1BW1<}6t zN>VYZ=eeLQWi+Yj`rZf%7O=_)mZa2>>pi5mQS*Q$Ca%z0neI7h3P?v}@iW^00OOQl zacDbA{bE z;VQNAFQx_*EyCjq@_t;zI))|!ihxyF!BS?jm|S1R86-^1@ivf`Y%)BcH{XnB`TOq- z_PK^Xlf&<{WBeQa*Z%;Q#x;uoAxn~nS89=&8TI(WrB0VHDO@b15MRSF3*maH3JUE# zHU}`x!y7!y{{X|zs#E4YWDs(u@R{<|45`wRu$>NR#u#@+&Jp4F5Ck)GF>9B>;8xs4 znlYx`?ceo_SdDQl6e^Uz2vgzKC}tYjPTcy$nY0AdOAzGn;!0b>@#xc7P^2qPa2BFc z6u}OX9e}A$a>gAh6Dq|hvBNO0q$*^@s8nfiDg(bL3qVmNz1*QAc&soZ4)`GF=f)Uw z@Q2eZ%wOREM-NLE_jH4PWrh3nii}>|zOZxB6fq6&&KbbyGJyKIAE%@~x5EfLcyq=b zbcAysI6a=QTeSjVcUB*~Va3-7CqIM+z7gM_${3_-Fc8d<$>F9dr^^dsFBISd+YrN< ziIWAWQA;*jkq;;eKh$7Ck5;ivI6_od+{DE$T0vvPmoLbI8Wd1Ha^TzCB3@Pk6Vk_4 z^50xylj`0LB?}3%n7uc%<|374ai#V1qy|P8cgerZZzbh$ar55@SFM9S1ted+Htvgu zrj+}DSHIy2D994S*(Y8>p@pf6M8$n!EsKCJe?Dyp-Y6)L73ah5u>J-=aTo|^x8%q8 zm;B6s<#CT6yLh45%U856u$BBrHxV!vQa3?~#U(wH;ha-8VoFT~2`_Z0GuxL(iBytg zrf%(Jy8(6`1TI9@-bzy%O^8*}q~F#de?uAQ8WDHB=2X~T~k*GakDI-8L_drUnHTP=BKV9P^~My|RUuUihVg{Uq?Dc&KDqg5Nh}>U=SE$5LY3YR zpFbE>wFgj1O1d)x@;buNOM}FcG-&t4u#iiwHW{ZCdxT3!49G>aED87h*Tz0kkLJcT zhmVKv{{Sd|BY(-a-NpV|H)uSSMJstWzxkjn0vvS*(ab4(2VnjNXs$wgHKyw z6g%cyoFZJim*VM!W7))O-;^7_AlX0_7bNiV$}#zP>lY*hxyM+sW;nsU@`6+ti{prZ zoChzQVPS1d1spy+;>Q?#fBhJ>&)m!i*Y<{JzFt^Gkz;{BApl}Irq9jd^Ae@xgf6dl z)&n~wIA?|tDJUnj4zB9}_(FL2Tc#1iF`A%iNLUOVDgp5(*47yJsm;c>iNvKmD5|96 z%ltyNhW3aqlp08`Sq71sdMg+kqjgJX zX8xq848ed_akJ=2f>kx>ZUrO}dvv>$l$N%r zM&tU1K*a#v1^c-`6^OS#B%hf!d1&!hq_LB|Ve7sIvw3u7Rj0gsRJ`|V$$EK zKL(2lX&_~b{15dQ!;6>9?S&*!Wc&*jP-IT(O=M|1q365zv_s9-)YF$*5bvFnsm zhB(1BWCJ_l49@UW%m~Q+Vx){UjAI^g?*9M~?`#?Lij!qo&KP`P<=5oUq=h?=4?4j@ zMOJ)shGF!An!zUc;QB!%{{WtGk1^E6vB$?a#ei;gc;O75$QRTc@PY;;Fo#*bkQ*2B z@nMh0SO6R?9Bc=PJ`q!Kd_+`uMvYH@IJ-&!S+7@o33#co7x95jCjF1eQjTG+J%V$`&78oNO|k0GWz3+3kM#i^Sz76oB3c$!6Tp|^WW9hq zplB>Xws!G~X8TkVr#}yN4*>~S%eBI3Bh}PqA?x8#tP$Ew`6$!bnTODbR?d}Hmv>hU z&Fy_{3~bI89q)~gJmaW=gQo!2q&2ecgp~TKt-!if2p{=@`Xqw^FnGohkLAaw%kJ}! zgmEhO`@UoHb&o#(0J|N3H<$hf5vSj8;vSD3_q1o#;_lkRC(m>n+5vLy1k&lho58yn zRrQ7r@h@!K)TuipidQHZW#=tfr`o5MdBe;=p?L7r#ooM2EMiFa#OXqY1g#lw5IZYu z9kFPCAL@q}&YWBj{{R>YOVr-+1RE&{O1g(-LRw(DK^E~C!-Iw(c)|sgq8^N0S&t?( z7G!ZZbC!TUaHkgW`-U}V4})GgYVqR@N&e_OE{gI9#?Pqz1|ysoO8C zQu&wfih;fi;|Q^1biR?=bpvwwK@QLGi=5AdH)}j$-uTlMW_}TKY;lGFv}pKVEG|9f zDp14+#uB4bXa$E@O)YVoXVMCklnQXCw60xXF6?w>9eKcYpZC@7VFrYSDZN{J$oaxt zAs`$mAQ7EQ4-Ar-nDJVPe(wPaQkE1#OL3Wbk5z(j=M9dp^@Wo{8(eV9tQl#23E{86 zr>3fJQp zcf5J`M+uB$t+b052H3_h-8_6_L#%eA9&OexZHN4*@BRV&mX7baSHL`Fq#kyQ=d5}2 z-2@e2FUkrI0frYEK~W?E*7MRTH`Vfjl%ztazG1!a5)w&0qR}sCn<#EUcTiwRV&U;( zd}5t5&9a5@aAyAiC=*jLrps11f`e)sNSCz9W?FdCFb6oqB)ee@3oF_e@sHO^kfi-S zF-{XDt>xozS<})InT?kgY3q2h(Ox<=;ip{+3TjRSav|cPq}iAfz_3~;2?OSxJ?JP2}o;Y>nO-8i#oP{qSyAw*@EHvRjenyv94C{j>7ej+%_ zsp61J=p%~{HivvM4FiPI?(mX8sV5Q(Xz&QKbItl{AQZAuf}ZXVC;%lT^s)F_D_96k zf>4`(bMwsmp@2r0I6!r!DLOa#5m=^VyJv@pcuE2gnPi^GBCpm}ZwRpqD$st=#a#3k z%en@L-l2R;c`m?lj_(IuFp>FB3Z_kchesS^MqIWy{+Ge|1Dq*EXdyTXhHBzIJ@GXtAxhx! z2G`{q&J>j9F(6|Mk_t6eI@?}QDG$x?`ogATK#W$x>}fijw@agq5f#zZeLY+QrzO_kib%ugWdU6Hk5+N~VVPQp)L7#bJ=5zR&x~%0lBcY_Eykr>K55cDB-EG1DZ08FJQMu7 zJwuykYdkYK$=Ll2RHYnp!@=WI?|_twQ>iRs<@F~RWTvj~-X9K8dzWxyGoODb1cJq& zfCIs5l)ExQO`78PWdUnQC55nJIYpSL`j&U@$^z6v2Z?Cyp7<#NM%}7d53CfbRJRus z3j#ZgZmCLB?J=m22mtXjwTNi+VM;t$Bzuo2x>v3dQWE`b7MCo(YAU5U+yJE?2sQ5d zBv9QWg6r0=7+lWOt(l}G=`e|FoT5KSAw5h?+crI+Tg{yt#LIES5FJ9C?aQ1Urf33W z(29nH06tKVj2H&g3qpgQE+iZSwrz%xY6UYW6<}P8I5_EyDIxextpQb~K8z@(A)ES+ z4$!H4WS#7}p(>L!F`-r=D#=JA5r~cyAgqIC4w4mc9ARdBwTXc;R2N{DmO&~~fKAA3 zPB2k9f{{`{>enSWvBBXbmdZ#9N<^8Nb7 z%Z&Ac1@OOo5Iajq8Z|ihn0t&l$MXo#eB$NK53kZYULX975R}!evVxWjOI;+Po2mJGICK*i5wR3fwp5_CT9*zhe=m3r2(O7g4 z$!SXV6^C()5d4d`NPAe@FE@*ZSjDVNa2xaG&JOpd6OuGH?}|B$>^cY=#U)659hA{b zo&Zt?haAdDifJWH+j_4B))U@C_{B8u4X&w=he9H!Orfq8=y8PAI;6TzIgb3{lQA_H zDgi*-n8ZL1DR3=(Bl+BZszuwJRH^AkrAp5nBZg%|H31HXRxHuRKnKPvDyyp-!K8Rb zctGLDg#BZ+%M77~Ptq^y;`v1hSa-y6H~D~6$!n9Zc2MHiY%vgJZ0QSDYCV*5=h7X5 zre>~uo-SxSfcZeBA!pkvDQ#^RARo{lbe}409=3% zTSU$fYQPMLxK;Dg6q1!zMo7D2OSTbC&QdrO>r%v^lnP#=-8!^-S`YO90D+Ib46>4; zyh`)92KLYVLrK~9MeRydmvf&B{GJ+r6qOD+Y7QC{WR4T+gJ*3uiV99PexCRzt8!E` ze*B@pu*Z?<8R6%r-EX_j5sYE{Gu{6HCyAC~E@FojI54^C6yQNG z)&3A#;~2%R@NQi=YXj0BfqqeTSR&y0#u{ojWcta&!y_JvX;}Rx@rm#H#}YF4j2bwf zIAvhkL7|3D4f@AvR=;X1O_ii1DP zsIyke!e}V4 zRg0-1!E2ZlB3cCn$stX{c1eEgcg0H;%y3GLf^wxJ-bu$y;Z&g|jIy;Uicp%yuZ&h? zATFXRV5FParNW!Jpd|@Ub47<%w~-X7H*9e}F}|1SLU@d}30WMD4mrauB{_md3dM_h z!W$8fdBzoQKOei4WBwtV-x_@Wake#ePc-TXk*qj_eLyv8h!CgnTYmDc;l2)u3`@hcMq%*l`Dm? zBM$f!&i?>>SOwv5r2HfKMY#{8F_NLq{{Toi_mT30VmiDq;TT#tO|<|Yh=)|g6V$^c z;n$ye^Y4Lc>d|2SbcgrAAQJ&fL>d5AxiN=TKhnk+B^0TyMNQn$T%=^}a;`!Gl$J(F zIG%A!4nqJ87f3~$Sh8w7+yHs&98{l&z5^7MA5kj!+R!F0$rvY}&NvVh!xLx@$zgk2 zxWM3SZ;Quf@P2R%$)PGZCFxfq$~S2aQ;kfzfX=ag=v37ZkuKzpP^r@g9P%b%>acHh zp*y*y1QhzN)hq*N4g@D-RP`!In3>B>DGy4GCpIpfU|mc=CDohZo}M5a1WTJKg3@!a z=vz@^8%(X(^s?(s46%nKX@bmBctRQ4B8lG^%F$cyj zFQ!Hwo*Zp})&kZ!kMR~1r>>p-mD>Ay(Fb>Mk- z2)CqH&ImZ-%x%fz7Sak{sfrv37wD^C(OT2QeXV=okJ$G?RYMEHRgS%2FmHwtf>Yn} zjEr{DSDFXAwax%Q-7K5f(^ob;FVUlC*g)S*n>8w)p-Th>B;CFGhy^Wl*jNvDI8rv% z%-O6!noy<5Ki-jMI>h<1jY#1_6bqz_kU{Ei(gI7}7`b3^zhChaWvdE!Z-SF}U#g_k zJz;HZ>UK_`rq`OgRs=?G^@GDq}4QlzlkNq*+vu_=0iH2mnl$pcI(s&58g=I$ zeevhZN1J|e`7+n|I{n9|-Twe=XL0X@^={z+tJ)>oSojaDQ`NzRR$BSx&M%5o$~h2l zFit(#XW<+}24mCV38auda16%8g*tEt0|~RF669hAR)bM?EON2s7iPG8kJ1kb#`*d0 zFqw!-siy$f$*v0+t8^1uBC4T49L_hJ4avLoLL^LV~k2(%7f5sY$; zBJN>~9_E9WC=C~Z4f2mI0C>Qs-xv5m0SY+bcuLlmbDSC(^$?V;Dr}TfZ~K06L!`eV zA%arO=)jTJh3^+rTL6~uij;fe%to<*B=vt0lr=I!Tbj>|UAji@Qi7Cykl_#WfVJIf z%-sIa07xErMT9!iJbqAcY^nN3&-Q}%=Y(*YzfWe}b%j_ptW8T!X8!;K8`VuEDHSZQ z)J`qVHm$WtBoz(OZrDh`Xj<(X&6Z~IDdAW)RJDP0E2a+$UezXC&DPI64eQX8FbA7z zMMw!Wz665-31A$YaRpev!6*?=waHQeNpRdJGEISg z_)hDE%~m=MJ~3RRp~9{^Bm#c1L8uofm=p&ID_02Bk`tCV2$mkL)so>jJ1Hm4pqUdX zDoONeU3JVQ+PeaSk5ROM`s|5w&enfm)>` z1S1Ao$Uq#!s6gJOCV8Hv%$WD=;GB4BQSgN33~^#PS_1|rJYglneaLpTk|&EvH3!*25o6jCsSRl0QiZGm`R zC9d80#tzxwM_6^`k;?qM;R+_ee*Rtq4(Jm?4HB7NF{619N=uyD?FVx(ge>ta6pB;O z=MzNf+s{xsX;s0!f<@pche%K)o<;D0oiq7C8Drl7H%Mp3@oeMGzV1dZXyq1$@sFO7 zYsZ^?*kyRuE+Oz9_+cDE9nXYtq@M2>Nn3&Og#bOn7)lw$dp7>8;8GM%Fx~J}vve1^ zEMkBqr$Q4^_(vI5xUleoETh-W{_Y%n>lK!9i8y}k0Vo7Zy;BQ1`6odRp8P%U@_~D3 zTgyia9562qR!ij2I76OyjvI7~@ka=Z3+Wz_Bn8vN#QA8E_Ig&8Oxh+Sl#F*uB9VP= zB3!v?p-2yO+PZ2b;&#_Me$gxOQv#*Qm0aEI)^!A>4~xDAHm#`&m?h5xWkMA7sZ&yf zsZ7CX2;N=u3epegG`D`RppZ(j9dd4F5Q5%`Wi4kx)v_Mw-OdUM6BB@RlpZvxJpIt^ zc|@g8Vl8J*oW>Ao1bUSuxYpzR;S0J{v?xp<(w7d`>CO_{Iwf|Bu~|`Cs(Q&hFM?PI zvQ$L0)l0dgcBtqfN=)_cODXqNSR5|kE2KQE2BhPuLAD)4Zj=&H+e)e84lWp3j1;eC zOv5sCid@o?LctYV0MFeVa%G`^plf${N>z`>2zthb#w?a8w_hKO8cP#vwY*}P%6fgI zg5TW;QR!AhM8`#|XX=X16~$!M(u{g$*e!;Qn)grbp`x?5`YSwPxZLV;o_XVQj`m1>O{Xu~fBT z?~UO&;sImd3=4+AK!dA3kIodf-MyR|s%}uAo1~G6zn>t)#IKWdhI|7-ZyjC;ei%wG zkDv1hoT0@s*kS?2;bHJjBN$K6cyP^zllFgT@P z3pOdhC;iul2&^eo#2fg7l7fO?MBOms~OJ>R3ctD)48B$$!CTFAQQg7WGSK8Y|lnK=`S2A70 z3k21MN-YUk;!1(UxPj&p4LGMxx|5R)-VNA(n?BN*9!&yorxNc=*I zC8pJzAt?{)x{c0mV3x$ye%3kU@PR3^aI0aV5j_(nQ@v3q3oT5_7)H-8g3N`=Jf!xYc?3s+*HDO;UQC+!d z(g0C%FfmO$DzPsMkc@D?z3`#KT$M3K1ovsu5j6?px>f-_oZD7tIi|zA&M<0a0K|8Q z3K?>XSdMvo;^5(>pl@W5_^OKhVC@?g(=A9i?E6HyQ+9LQrc!&92!$nkG`*U1qr`+E zJF}wYs9u#1zaQWq%sR(Rqt?uhuua;LkG>v^Gr`1Pyk{3~P+OOr<169a=f}bb$K+!l zI{D5t=NbH^!b1kT_{fmmpYzI&}Rwr zrJ+?efInY1FbB~F@aO(#ZC z4f2G@*^7I0i;1&1___TeR?3Bs#1$Dp*p%nIDbNeNO;nk)QVUH%BxyYhy6xMR0#g3 z9U)+f)RLO&Yy;ur;|N+2f|{UvEP8g6%Kc(i)l;nt&4?gg`VuT-g*95~x=Kzio=5hD z33oGPREwoSPnNX?!~Df5l#)#etzgum9w^AU)Q`{R@yJo1NO(jJr1qXz3^9B5Eav|w_uIt-vBXO>pZ z2BQ7YIorYp4Fm-74sZhtIk&%fE2xV+v!(+MYufw=a6PsRy0IIAC=4Irfpzaa4BjH1kZ^MI>o0|8IQ3w_%3ikMYu z9r5mhxs?SZaG-WT<*XxfIVn)}sk2zINp}~C{{U(2feS{;6rnS+fihCKICNlDZE%gL zTU9AW-L!rxqN}D_QZ{K6hxLL?#_4ws4@6#1a;Q9r-xZq)D1X$l4O5g%g7ob$pI@joRH3<|@Mwl2VZ2LlENKVs6e^ zixj95;>>?eaCUW{O|ua)Qq_dro#`l3=8@tdD>}M=PIe%?Oj;5bO(khTrDX>e3dNn^ zO$lITapl6L9C9WVDMuU>Q<3SEDN@jbyFpbuz?Y{nRikU#=kAhr#j08*Ra26bxdkPx z13s`dz{)&HDdch@EiIHTo+rnwZou7bD7`|&D0WEmc--w^qIL+FKbN#!nf+OgaQDSU zGy*fpi+rM&82Cd;O<>)^gcS*9T`Eh98i5%N17Ap*wT3FAE?>N3{$nsTZ>AsSEdr9q zK9IyBW}>Qcjvqp^Vu_qDm6w4UJSs%gu4rdXOsWk&s)i{&V}|d9V;=Z6HfZm{2Q%)E zcioH*v7BL`j~MO|@9~RaVci&5`pOQGmKea8z4p_zB!4ill7;@67Y7R!yezpd>ng>q zX2H2YWgmZhHD4UMWO4Xs0M>dj^YDXm-q9XDei34S+J2oQJeh~W0~6r}<_{5Z%NWG? zdH6;C1~D(w=jXl)lgu_+L%F?$phJ^`UMxwoVRwSc!y6dH_<8XAu1=mE@ZjOgAB=6& zFr1C0GSo8&C`yxWXSLr7Cje>h!pD);490hGJFNZ?h1sPg!9Lq?rX)y|infKVlY=F5 zm317fJS`HX?JGq}LS`re?4mr5q7c^#?CXu*6b4BT?l3_5$1%z|eBs*PGY8G%4ri=0 zv;dQF${fZq=F#;ZcNBI>5FIws110o(!_$Yy=?+(M96p)I=zQA?8!$sZQ}tC!|riAY7xgyZ62 zoVmrY=L6jbGw_R#2+#I`VqrETQTJNWbg5bnaFzrxDr1*?1(5QPg)MbC4x6(?!6sWw zn=s0fgyIUo11?(Q05OxaZQCH9wWeSRRGFJZu+nM-fVMB#@DmVb16!cq^Y=&qz5@%I=#>()LKsn z(T6OdCbMfM#@F~X1rvzyBjuzQB&t&Ys&Prl+WjJ`iEE%zUoIO$XN9;@O`4|tC(Afnz7(2@sA+kJZ2U8YO_m;QB>^ARXTh2R5}q`uFMD^ZPKEhp5@tNYRKYDO1BT*m!!~iA`0RRF50s#a90|5a5000000TCepF+ovbaeue?{8_ryO^%RilD6X^JNeb25y z(_fh9Hjkh2Ud*4&bKjr0)*)KzJX9mzawB#3#o&3b5q_HI`o^rj`tk3+Im8~8y(g&G zzx9tq>+YT9lKAK;Dp?!$^yj#vIgH zWf-A1K)y3!42kf?7bPtuo>%}8YGY>zU4~;D&=Cek&R0=q5xicrkP+ciMcZ>5#F`n{ z){K}4weez<2$`Twc?P3bigF_fb)}nm1`EaXIHAKMk}|E1APhV7*c(6~0h`|Xp|+$j zS@TZqFPU7wn536Jrz7VB2M=Nh?FcCSI1dEGq;~N0ZAW-Z>6o8OnXfwjatjMuxvS^< zZx#-g%q#i!8o@`GnVIhEu5ipJl`=^Dg2J}M z&f)$qj&pS!B$I3U<;g8!;uMKW8I`V2JXbiJ)o5svZWO~!y{xA&rl6@@)(D?e>@kp zi*Fe@9UYXJ@5w}yhCQ+ZER>f7)y@l;zpT_01z`&}b;cU9SU#IpmZyZ1O6j~t2wgz! z8E7YVZ;!4)51{=c>yf74j3LC; zczS1#^CJ0c#CLu%hGMPz*WVc?P^cezoci?pGnTWG_wv7t1V^m8zP|B@rW(&u-#Pv8>pQqUP!Q-#D>)u3Y>z#b(M-u-44EX+Yp!5F#V)c^*Z~1-wtvZ3G3(1M3w&l9=<$buhYxN!^Q$ngWDKV9)EwI9x(R*0DSv@x0}*AG67z` z{{Vh+Cw)of>xn1Z?~f)G64bw``@72>M?6L=?bZo?-;ew0mZ84{f6r`hWq+gmN7rrJ zuO7Y{!JMnXh&KNKd~?Uy!G7K&vgz;q#3=Ikn&UT^m)^38pPs+W;y`+A7B{$HwG{x)d(L#3OT( z+0)m}lxBtkdB$h+OG96`u{q!>hQp{pHtm>PBaReMdEg*A^aG$*hpMR>hr5Iqz4CM1x75JhSt z?1@4;NU4Pkj*LO%0SM_icq~2V9=Er+`ytx)VKMKN;bYAzXt;}VrnJ|iNlU0kO;3>M zbtqoS4|odpJSE3PFuexc_5h@-G)fS znE);^GjxClVTm^YhYsr^i^*Jk-lWHj45<)WG}z9I$aDw*lz+D}DeonlB>`~^vbjo8 zS4miu_7j2~B%vB|H+>NWT?9_Z+kms|+YL-xe$7WRAo&akU^Yrnp6H85+?^NhQQ{dvH#4}YHWNuRp8Gye+u#k>MW>f3Hl05f^X2 zrv#?HpWhz7n8H89_CHyEpLID4?x(Nu{pQziD!~$6q)lt$#kBZ_W;7*Wv#F zzr27Ab>Z*4w^ZBz8+!|ZzatdfS)wmm-jxnTJ+r;Zz{Kw8g=y3h#7xH!XKdcE(`SIsH?BY1<;m9g~ zAFT3YC!&k{$<{(;>cf_+<9)?>#&4_FkGP6(B12T}g;+^)lx~5>w3XmitwRelk5$s+7Iu@@`Q6G%k)_JqO7{k>8S(h@R zW#Bvn+2K|iWQqw%C81F;9Z^yz2AgA0=UHk~78n8T0$K*u=W=u***J{`;PJ}DYaj?z zN;?GGaVLyoOVct2RuN5zNLQvbSdPJ((KWb6%|k$}4j5lFr5w9+kzl}}I+U2!`TUoO zPDT*Gr8yahYT?W^rBI;i6PFQ}xb5(3&-zs7m_D;UvmsM-zsyrJ@}7uF@tyD z;MXIQ>p)FBgJ_AGnfFz}Ob|X{5c)p5FtIqICkXf&+1q#_B_SG`w~(I6`NTK%Gp$=$i3}SfxTHqEdJ0 zxXCTcO-zXZvP0?8tQH1L+zC_5nAd6yBtVz|h$SM1nZ=gTnMsoo;tTJrNfbk7sz^mp zdqiOV#lC09dL@@O91A|-b1D}&=^SPN7y<-~#*#%KTtjr=(1w=&g?JLWjo^(EBuXkO z+~_gqlHQGu@pU*>FyVm${Nf|{0BcprV*;gvzYV@KfylKKa&8=Zn8hTz}tbO1G2d`}n{^@%r`q z?}@0m(fwq9FJHZ58{_!r?->w!-}#XeJNq10^OF-N-_{h@Bz#}Ke=i%zw9QG+IR$(B z>v<8)mUzNRIDy6&^!s3^opS)zGK&j%LFF=6VH#= zoI}%obuk$9zr5rJ`Qz>2Gxjg<@r2KYo~K&LnS=iQ?;+>u?fSob>B_n*$BM#E_d?lP z&T0B9@3s)No^Q{7-<;WBZ1le$&Psdql74*mSSkMiUSn7uk8JTVeP8(fywcsruKanz zp^0VspMSI3+7 zZHd(6FoHu7X_uTWv0x~}Dyop|OWdJyB!LT1k~*0J^5*N(ER~IcScxYki(xw@1ZK{M z660RY8G6r=XjzF~j4UuklwyEy92CGu8`w-jNnHjg1z`oL7-j_nM#QKsAay)5uwXVX zaHHXM6D^q=6~Rhn#gj5r95=pRuu{gF2)I~QBT+LtFzuw~HQ6d8vRy>v=BxlAwZfk+ z^N|`q2I0DNz5y*^eDc*|qyrJ@8c^`DW*mnR9D{<^fKodk!dHTb5vLvgXX65O2-_~7 zZlc+jSYa{3TJfEJvJ}CxM0Lc+N&3MU`R1(4e1SoF5`{rYSZNT0RDzj@AqS{QXo86z zlZ03jNtW*UXRDUyC=Trr=|p;0jF*8VTqo7bRkpTHOwn{j^!wfeQ@{wm>5eGj{O-Y_ zFtZ_L3M&tZt6`L1}ONM z0yfwvrXv(5f=v|NtdOvPV)(!cQp4gc#jz+9K}8)v85G$UM>*!3HL5CvGD>47Af*P0 z+~8JeL=DX}LqjN-mo15g7-migR1@2|$;9NMdN&CmVLL+r375c-lu1l@Hk=LWZE+Cb z(@=p8;z*KWM1~Uu6_h#DB+1;Rp*ny_nCLiE&y zNCTJ?Q0HE>i3${Enn*4y3?~4hI4Bzyg_Lk{_3iKjoi<&CMgVveEf*ADEFw(Qz9ld` zftpPo@)8uGH+)Z8!j?qe3FPJP#urQlb3aetj3^OI!#;cQkl(DIjHl9n&lvD)@7w*<61_{8x& z{p0OoCgQ&T05~U-yy|}YYYFA&+ut|58;x&fy7tJy)X$k8zhft_DL&WvfgV@u&)#yJ z#>S=nf6Pep{eAxca#1ILe*EOAzf8Tynfw0XG;w?#f6t7e>*KyhpTd!n>-o!ThG+Tv ztR)_(KJVAY4?mgTt{eKD{{UeUv9n;5vMtD3&IaNk%)of37UhJ;3dZIGO&GG6a5RQ_sUl=zh*3Z!3Yii_ zLg1#cQ8EZoBY-KHL|$71HL+eYfTJWWVN1ts+&gYkr2OS5BoK(_4yK^KaoH8C4xmXV zJCwoFXCZ0|=MV;VAuyoQk^nR*G$b)i<+Owkmj*+cXHM%Tl_i6Hym)hhZ4`UuNfeg- zZG}QXC9r9_d`?;+-B6t~!6FHPFqp|kW(M^P0JKUJWEkBEbLA2+{mf#D4+Vg;c%bny z+~Y~*LNaQa6HXamSQ0AyDBI!m#SdV!V$eO*7~7|bk7OuxCyvaY%I7_7rUP_Ntj^(? zDlkSSRs}#}7^c}^_dY<}_a!f@P6P~D5nJ@hQUXKrt`Vx{V~NNkN}^(i#ygopEesK7 zT3rVCrnO%gro($mou_8Wku;_{8_lrWrk)valfseZVIvhgrju_9PFw`*3 zvQ`ZXG0=!5c+yZvkV)Ev>Sc_Q3{#_63w#xrOj(EOH8XT}#^9_$+gUK6s|~E~1(X1! zM8ZfR6WH5i+C9`i>-MjI6}0@m|$pcpeW!WRt+ z0SU7H=}l$sJ0?;sS8O0{P&V|Kxk~9F05IB-(+HN5gAzs|JG?Cr)YBc?$liVg5X1;j zgu!DyxhMj=WCps;nd(uxf+W#FBJm0;TDmcnAU24^69Ea_vgAadG(xc6slP2>BsZF1 zpjJp*mE#!_?s1dN%7n|s+BvrbWny4#ZNz0tnCqIrpc)BcsnnN_a7cu7rkkqgRgzku26UN_s^S%E7%mY1h`@Qp$EPb!Hi^1o*@%-eC?s4vad+~LW>0eVA zB7=Wt@9PI1zvMVEKYso9BZT$VDv96UPdJW#`SJ6LEMMQYOqy7a`TqcMsgJ+z6wklk zzvy@W07FoH`NfvBd_UXx$FCS7zJB`PZ|nEZ-mu(r=`W0i=iMNzHhTX2eLsXC<|m68 z{&|n&&J7oJEPej~iGi-L;5=9T!oTM7JUx$(e3Qn!n3^4P_wS!JAD(OC&cBS%&pPAM zJm-QxZ^w>uX1bTh-=;DxN&I|Zaw7NRBG8_DfqgM2e~&TeBBswb?dg-t$&k`we%G8Y zqjBfqQ@w~cV=@cFF}ytv6b~5mBodVZOr@#)q}M8` zHW4kGsl^O3At-gk$A~L~62n)3R#4yyBKgNaRwNsAk&tIvmw*AbBqlSB6jMT2jKn3> zc40SLIUCN16!|fN^e^J^RAPW@Ag9?-q*ZQmp4}vr&7{vj8vs8f0tb~w2ZfnfS4bAz z5g7y=bCaeRVQFGblmlaIER~40xAf9I~;f_>jfx%Hu#X# z@BT#LX3jHdFg`oU;gX-2lBOybI6|EVq}tZsk8B<&x(9(mr*UR@Wnne32#wgYr{@Aj zDB=x(qj5Yia-$UnP#aHt=_8et4^-BK6Yq$enGtV8((P~t@L;bQz)4jnEE;{c;=7#u{Xh5*?2$hL8ojvZIp!rQ4@z_Xiy(m2RbX+?kquEh+&$RTb~0?0Wg z6qu(f741AJScel6yo%yzyp9PVyl56Urc;o%=WkW`!#iMTmf0w^QKiqNwA#Pxj}T`@sI$HmPo@# zl3TF~a=wz*ln~*F>D-sYiGa|_1&4Cpr)}}%J(}R?S(8vTa zK{!y&XDf+<0r`1}0f5$AP0{c#}c{IWeT9opZ&<|#dT@BY?s zn#G5c{+#{&#Cnt;yf<4#`f_{u#Ho@?`KyeXpNvwq$MyHu37@eX&y0^T97papJad<4 z^%b98?}z-r{{W05*1Z1v{orl;KY79dS`H*Rwcy)?D{@I{yGZ z)?U@GE%)nDlVLu9Px+p|XP?)9-1d0%kH4HtMMt0C-+Z1v%ZnAppSR^Q|4;e{x9#YPd=x|`c_Q;00sT`z-7H3 zjecPcg5(5nM!dOsiT+@*?sks4WF} z8&KghmQGofF3~0y(k}}QgKpGJi#32Y1fr&oIIvP#Rg35>@q;O(#;_~R5~MRM$ft~4 zVpb-RHJYgqBFs;_H!uREHfXy={N)tRJ6?Wiz_E^HIrJG=~fqbHSAws+@u?EL7b)IgiC; zfrO0jZSp}a$Ib&QD+;0>PsbX-h zCWOkPVe%tsbWxIMBqNJejFoN^1I_R9;IRbMy5=j(ug^vegViryn90Fu5UK3xtbjsx zCK_Hv$dgyEd4md~o>&uIHrI$J_{fp~1RcmNCSK5jR0cg~!_HhsNXnc~KOf0eBL_n7 z+5|xRnWGx|1{Ll#DdlnsS_E3`-vCgS(Y({RBylm$1QRdhLpGG^GzU>BsqZ!McNj>% zS|tMTM7r&8*CEJT_QblFtCtKCGHyz_$Z8faV6b&Ue`zrc$|B~ywq@{doSxD?WAF`u zk+^4WO8)@(D2oWQ!In~XD#_VZLv;;2uq#^yl+l9+Bc#Ez+Y()%X9{wy!)7Dnnic~g75bQDQkyV1Ze^3$37p$izkE2G$rEhYghr)L zE*Sw&USLcjQU*6BNYD%wZn;iEFdiyHSDYmRTxNG!=`q4AjF9sUVi50XTo%T~9$X;x z`b<}}Z>5Y$!I>y$Z;B*EL~4eig$CxnQbsJfCpHQ$3Iq7y89%LX(m3)b9^1&+R7sQI zOe1&cf`}^N-D)qBk=AY5HGv3xp1y~^Fd?>CoqTtizN2|jG5$FbtB_(pScrYUJNp?Y zh(3L1j0<-D{9?U%o;^Kd7*xNj-GA8rZF`!oyY=tqIR$;^IjZWp#MD23?kpSQ-a5$_ zyBhTVG52fn*OTu#!94NjyxZ~JKXtq&Dd8%$ujeKk=dZ8*$RTZ){MoGJ;IsUmHTcI= zMH+5TxAB~=WKefs4qx>ihu!4*Dp#-f4`}}Yf81ofQ~Z6bZ6@Y@y#D}r`FZs9=ltUv zx6=MK&xa-7-@f@%Tpv37^h3n%W9xdyUq606?;3aS`t-$H)$!S1d;H=0{9oVJeyNWi z&-;LMN8=_m&b>Z<&hdSwt=22YJLm7O#t`1BC;oo&D4V(Ks{a7F4y^or{-Zd2SD(FN zct=s!5%jI&m`vPw45B+Ub;avA`Z|gGy!3XD!+c!VSeJdB%7BhY>ja9o)tD$Bd-Z!{DVho)dIba}pJ(n*xw-~H0bQ77Knvck`Jl!(4AfbvL z1j*|pn3||{G|TJI${|O zQhS`j4LB4S3PNk9XlQF$wuNcJSddyA{G8-=i%5aoFi`vc&_rj6Oh7bvgJtOK79{4D z#6oFAz35y;6>{j1r`YVtRqX_r2Ls!oBgQy`l0XbBET03LmRdk8^TiTiSln|eH^CxB z8hhgrG1@>E~KAS7~mAc50<4sF_c5{2&NI4 zBvAt)bt6ASNB2g%nSVd052fSF}i<@I=A~X?3 zPCNp}q?<(EBBiXIk%A(ylAROj7=o0G2pCihu7salAqap|hyg8lEd?(W1(yTh#n1rF z8?GUqdCZ4VV~7DZVTlr!Ey-F^%ba3I97v@gNJ)VSj22nYiSCng-XTf+-@oG{MW4?< zon)En^3}w*_Vdi0c=`VDnmoP>t^J(fclPiKJs-1!0wb^Mubyi?ez`Z&zW%V2z@D#p z8)s4P{C&P6O~-t@YlTF`W@uWwczFMy(1+V?z=j^{qY7HY->^Jktgwy z8)CiUe)pWZNA!1$BzTQ|`@Ha%@jjD_)fYG{2c2Zld;R`@821r1;Lq3Jzs4n2kI%kN z+y(UK;8Y5q58nO?|v3keRPz$Kxce zD~_Wf$1!~0-moDy?ueX_xhqF!-Z2jim}Y|z=I%MHNb#?YUUUFR{gbRa5*FD3>B8j2 z5tRT3%>byDTEI};ve8zCtN9q_5|Pm&$>5bTb45G~DLL#AyqMqjHAtBebCNIvL~f{v zsNv-%28n@S8nRE85H_6mwu8F1urB7Qyp0K2MAB=S=<5Wf)9I0bi%B5zw* zJV6nzFsu@SRWsK9f44a)=!6L(gKt?oBMhbHAg~D2Fp)9CGmx_KwAI^?puE z30>0YG)JcwpUH{WK90G-2rIJx01bWAWTcv1^!aXOokmJ!@esj$wbkTmTb2Q0=BLJ! zlRR}$%Md4Ln5D`L{DZ-pJ@Vc)as(m>_OSM?l3)=whFRveLHxVM5|hHF_X<|MJq((b ziu)s=H!&RX7&eypte*%6+Q;MpBby;iv7E_5g!af{DbQsj$hL1r7lBK{WLkOyYxAWX^Tm7rM< zCWyzX;FcD^g`!VbZeJ8Q*rMd9Br5V6jUq&_b+XQAV&|0<$d(z{mB%-cDMcw3V@Y9t z2x<%9;fS!LR#C8Ufh`4SX@<$Yj!;i8rdl34uTXgLk0{hDhVNb z?uBSpG7^#+<#c{`gQsD`!az3clYBonbd3b zthE0C9lw9fZc5{bzwi9W3RwL8`safM6IFcw02qX&llcDtdC2VZ*Vz4KcVA|{xjub( zuFjkhzh7C`n{i>Ibbj^y{{Y2`e|5*L{_^|l>}II*>D~Cvn$$j-Ct5Gf;9O`wpNxX* z*NoNzy3^ z5=ka%vVc)~>17HFKAhkR*%vIJ3W6Zu9FxK*AW#C#sEA8=AC)DtxERI>^5h7fsc!&8 z%fd2VyYht>(1ywDj1mia^U#xKs`xUDe4|?85SkZxA+4_GTb*j)+ln?ymv?(T8;fG9 zv91&WkqH5?3#Bu{pn!*nHgJSjQ=A$i?-i?GShYbx8Y)9DR2G93v8Gjm8IfddJ|$$y zY+VyQL540MG!j|?aX^?yL9>Y`LdGhCB!v~RVjZEoq-NqS5}GQhwL7kTdSe+Zye?@h@Q?8BP;APnJf7u${u*RUtNkooUdq%};oUr$nE^Y9HZ~5jsS|!Vv6`IsIWO z$RMB)(o?%5^NSc}qP8Wp)zmwzt5H)#QW8NDF#2Quc(KVgnr?(9VQWoXhwkL7$W`tdImU3<*;Oap4+>h>N2{!ohP)L^4S1C5lk6jE8&_%~e0B z0(KK8oC$O_az_0_5TMQz6{YLC9qa|$c^nGFAQv(OFbFO|Odv=brxCM@COeYLZqkP( zC{tv!MHDr$bPY)=8p+$H0~NF4A7>0U19<|X=DiI#0v+VwQ5c3L3FCwtR_Kb|5DMVQ zgTX`w!3#o-h%4fpAUh66=Wo9!fG*%g;UuW%9==QO$83B*NoZb4{vPmYabtf%$2r0ec6O7$-PGz z#P!E9;yV3);;%>V-_~os-%J*s^ZLXrN6tw`wftw<^N)YN54`{^Q{{SA2Z;16}FJH;d zGEX#p`_3gdd{3VK`sBv+*WV6us(1H{Sku;R*FF1BQv? z{eIg!kA2U!D3@;)@dw||Jor18=Ox*znf*Vn&Nk8yH!56a^Qf{b@S&DW%)GV^a!fAdmN*-^Cln@EqX0tq$eAmYNDBz@b4)DTycs-U1%kfK6?Yn3p$nxgzA9B^>j15lIO!NrGhGNy0A4Y^Xqx zHeXkHAisH6fgtUeYtJ)5K?0L7G61e?$AwCrX#h_OWI6Z3Rh2aQm#R8OF;-GcUBo*! znuZYPB?1kZrHbo`T4t z6egD>l_-YY5a&KG;x(63#Q7u!Dd%JmaZnwGD6N*z=qrrl78{46awu|owT_u+_)28d zs;P+#c?yN;Au$Z5HHMbQ1_QV}r%hr>7)XpAR1U6C)*O=YY0(2K>?7L@(RPJWqGg=E zGVpg;IF&vF5fI=(Ni;?oJX2wQX3U)p(-w?%coVhQu+gywM9@_7$v-=RW)0A!$rvY- zy3GkK44{@Oi~&gkrWO!UVh|d`PZBV5!X4lv#!3O1v4oXeVc8OE2TcPZup$u6GIy3D zVuWQ0C?N|X=uZ8)C^btNF*GJCL5j(WkbJEIU^x&_mPnl25|A2Uj_7W{fHfnv@G>3i zw~Qj6D6QeOAebVSRzd_i-K?+`4$MzukmBPEHd#XBJATTlFBAcA5{?w;Y3{X=)Fr$k zXCbtr1c{7$jFB3U$2O|O4Z|oxgCvnVNE|l@F8=_$JeunL=iispE!9Vz@$Zx)7A^A! z%uN?yLFB-xc`pBKfX0_Hui!-w)3j zDk5+6k24;>yg=2}$KSr##Xkpg*QYtF_(aSwrURUC3sOWm*xwc1>jdjZq+(4^0?)&Q%m*Sh=t2V|gptQq-O)Tz!*2_PbcMX=_k zkhsU3^*YK>rJG{!8;~xQXL~-RE{4vrl_>ZSBSiaRh)~>$m*)1aQPPGsRFh+|)Ov z#jlscc8;_R#0X}cVz^v#hA<(iWW6U%0$3Wn-r7pfDX4ltDMm+Vh{g>PZZMl0a##y6 z;*-oyhi0W&8whOa96c$(!GlF2ZG#|hqHtjofR`dMSZEc8v)V#LaxA+TP-ET~JpnAz_Dnd6U8qbn zb^|c?$Op8I5w3@J#P1S?4^tBJ@^^!EqG@g5rPCT=&3J8J#1!@uX# z`u_mA8-vfkrX;V_&Jy@de^28hNYu9dui`O?C;IvO{N|EV*T3JKxu$;j`}}GrT>k*R zxhJFV#ymqdc%N+BY5h;%`=K#!-uvU<-v-2uz32Jt_s5lj_t#I^%09kw5$9h1f9_kC zUNcw7KNvi##9yXxeQKY-yk!$nKOTR+GGSHc{rA@$Mnvp;X4;A3d0Ab#r$U#82Y`%hQYBxA~iS zn0k*)`PTh8C!f4y&$IskJm!y~^W&NJyxNl+^wz)TI3;w}x!hhv+01`B$YHxI<0KRD ze!q{`SaP5+8+ii>zWgPm4a>P2TcNu6U7qsxpvoLiIS9>&~nAjyKG zEmB2rcN9gBqC3GLrV!{{rd$GuOfdj( zien545F9euFsx(Bz}uO?4dg?MhC$d_;fRzl8?YvDjLPoB$JO4+u&PhMJJ7{-ic&@NHV}&=ov)W0;9KO(Ig?LU~LEi=nGi^ zNWvNyZII^HNa-lTOw@3NBuG38&e-4y?p!R8vFOGM40!_e{Unj;QROUfQf1& z+9QA7RTg8>Y)kn5atIH`@9*)Fj@62S3FW~KxcC16udYhw-*0~oKq1<-uU`KEIpE5} zt#uxmT&K&pueXyrdHwHu{o?xT(mSsI0IxWsxQ;w|?`Q8cNgkiK{EVh1N~jnfAmdRh zSvGp7BpEks1ZEv(w*gR{1R)6$l=jGRF(4Gu%|R+$45Q?OO30?c;TaAJoQF`LMM@=L zC?FvROCZ72mv~?iK0h6In%G>|3Z8Jw}R$w9@Fd@e9c8UjIN zhKQ_BpvWs>zHFv_6nd_4b}}-jnIIX2>i9qmXPE-rDEar52MRQnv6f3ULrvmjg)SWu zw75JBFhH6oEoGZ}fPm)=BH1KJY)<)4Bj@s}%VuETZ$QND|=Toe$k z((7yq-USPnac*GIChrbfNm7Ja+xy&Q*obz5$Z~pb%3(XmK=C^fh@4l5ahp- zQV)*^B&r0! zWCCR+5Hvaw5fT`2&2$Pv287up*~&_Q>jPXR6}%)Fz-clHRjI;}G|dvq65xvo6V8yi zFk;y|cAyH82`w{<6a}?bZEn#gh8u|JVIiEwDG)a&Ak44nc5jC{K+FLz8UhdnFrz9} zSow7v5>BZA1*66~WuYDf`4M2uCIe!SBaO%_p+guUo)Tiitc)m_8!`OagHci-06U)M znPvpTIYlCn7{Rx(BzL4j2xbWqGDTuByaN`Ix3#=M( zPmJ}#nh2YDwax&tKuy0%BQOf5f?akTQ?xX9qn81DZhU&=64?5`oYdLr^E}=Y9}my2 zYtvdWmG7=E@7EWz`N_}E-@lxfyI!yHzH`A2o~6HB{iQqen*8g(`G@ww;ypOO`INh# zZ&|<~#;EK5R!GH%A209ekH5@coc6f&kDt2ph;*%U_wPAKlD_?asm-U)d*ZM0gNae; z&H7U_fd#WKPo`YN%i!ntfwFf{eUIbyi_P;!{{H|Ng7%R0^M>{O*PI=GHk0680Ns(GK@GTQ`tZ`%IOLt#Gu06*SaF3R}oKD_6L#!Jf( zAM@|F5e&DlPhC&(c>`6V`2646;}@4;%m(>!`pE(c<=LwU+E6^!A}|ng4Va=pPGiPf z*xRBuW)PM;-W)2D%1#Lckz)o72`B{BTGC;Rjj8Ajs6CB!QIaef6Lcva$OX-1p(Q|; z)H3{@AezBhHAvD@patlOg8+2t2xtR1F$2w}JK_}t!_Djh3FxLb1k?lq+>sL~Zg+=j z05{asfookZaa}T-#1-lj0&jPQubh=dm=L8-{3 zVIf{=NDn-F(=X7FNVgp?#0dk*p9rH?4EG<*zR zB0&0b5y++r;c3JGJl9GP|ee_WAU4i0~o}r?z{pfvTWoB;7rtf zti!>EL}Y?c6qPQaL}EH&5qq7oh^K-&yo3c(R@6nklMei~nv?+y@hrYto!~YCS{Er$ z5&WVjE4Rs^5Wrxvv`vO{a#{;viA^S>!B{sBn9&GfAp#OF+Zh}HdU}EwfY-A*)pDd3 zg75^;!;4cvHU$`Q1cg*MZKwqqgi`D4-u$!oK-=Ah6MXbq?oP{9{XkR&xB zbP;iis<=UeOo}Vv0cFB7EHnZkL|~6*OL_!JYS$-XxQXv3j2J-d6LBcyYO{t6TuDfw z3@}$1F24d|B*Qoul+ENRjnH`km?l0l4eH0m#Hwfm0~UbL+CaggrjThk1;H5t&vMI? zf`m+(1;s!KQm_(SL99jU2r>Zp2UIC369@%#G7^E)Bsl;eV2V_s*}+x!!p9C3c>Vfk9dG3EtHFjJJMMn} z06D@r>*=hLUDwawy2weMxqAM-^M(Ha0!?*@hCF%u?dy}Ff1-Q;0FG0{?2kSl-W2GX z=YM(s0GVw}K0AB!{plHn zym9Y2$eEgreesMP5g&Dv6FqwKyyj=0HhKF3FED? z_{%*$E3D_zJJ%im06DmcVt&3cGY9#R-%!eJtGhk5h>B4|+gl?ghNzp3~3YyUBntkmJxO zfJ8=9Epsu07_9El5&}X=@Jn%wZ$^?Jz(G+`COlO+7Q}f7iX*u9!ia4rV3iP~RM}z} zu&K~Cm8J3vUYT6%DZmI@JMB}>GSz_UAUQTLKIRZ&LIO2^B)D}3Ny^J|HCU@c206m8 zE`iO9%p>rcAit;(XF|c!j^w!DSchgvaq!ahR!c-Y>)8vkA~iRV&y5>JClG$P6)oqd z024D)oA5~pPzAgL!y)dfgBwtz6ycA7XGFk1^FGjB%S)n#SG$n4K(x(`21gNNzetk>BPN6D@ zjkr37o#NbR5jaFd=9U_W7}2#uCycdha|J^N1dBHP7*i%|jDi4@C{;E}BoQ1piPeN? zF(or1X{@4A_9w7Sk<7lXiaEPQy%LGxqLR#EjY~kVWDw9$-qTJ{1`H;p5k=l2j3k5A ztu#k0012eu7b9#z$btu_-Y~WDt6~pwP8$(|3@t-7A9JZ=Ub6~WMz|e`tbO!Z3B1kX zLJlMsK*?HVnea4+rcOXg1X3BiLOS3KBn6`|qhP95wq)hk`L2b)aY59RlJP~jf$ew( z+vLecRNAXd14T&g_k(4?GJ~ugx)x}>dQfst5FEkETRo1=3o zby43{B%*fkIcko04dvAxS3`P><12JZv@$Zk2iq>G9r{R8cmiKjquvN zQCwI`dgR3D?^Cri5*lQu3?LymHA`6|SUwP80WoRPrVNQuGl6)P17>>GDBNnKE0h+q zl(=K&4jnd^EyfAkczatVDq9Kxf~aH?P=V4G0kPp%;gRf*dD`kq?ESZFF5%LWQxB7s z2N)m#RCWP75WpFgDu@6NaGBPO%S5j1-jv;mQoFH;xs0{xla?u+O8Z_@13bwJ(xA-g0ExjLp`{gV(=3~}){YTEwndTVH>STs%)c-(Twk z^m0#C{Qm$CzA-=U-yg|U)%oxGWfWc?OrIc!`iAbsf}0D z&P#Fs02uc9{Z=B=`1}56@x43y^&FYRpB_H_<<8gcP5s_LezZOTP{{VS3i}U=G_Wb4l06#vJ;|U3lpZnjOk3F%@ zlX%H8bGhH4-;Q$lHA!N-6Vi#}BEc-N3QC(c7i1C&QIddLN!fTjYCpqum9)xETwm~ikVC<3X0s_mU2F}A`rERp|WPxgEB_q*wq9rF-1GTnp(sNK`f#PA=T~< zSY5Fgge75xO4dZ;+q7Xj7()P)C8IBZB4Zh4uqLvUCkM*tT2j8;wFDWU(y1t%$!w_+ zGRWL&)rV#!Wq}zI#VP7L!>tM4DN4zWG{8eCEkw<%wnAfhB1rIamn5=JKv!w1z;K@z zk(|rqK#E|~mJKGv40Z~y0E)xvohw-x077Y56e9o(6a1KvQjnO(C83fC1r~u(YGV=W zYk?dH3v)&&g0edVx5e)nM35s=$xo%*2yjYMWTkKvNo-mm5Sx=kkZA$olp0_s2aUKa zgI72LGH@gx94wq9O3TI|CINv4Y4&3bzWfMMH2{o=9;BKG2$&(Zv^@g_$V~DPrXu(G z7@ezvt;p1nlc1@|Q`+q{&LEJd@}t5TU>R&>1&&R~vSwR=q-!BiFFCJkL-Qgiq=$hr znI+>o8G#_Jc)=TVY9PXpG`|r!dXgg~TX5(SLX5TgN!WNjwGAr3ijwu5^gM<#vRtT| zf|y|_1jl(oW=xnusnRrRWFv{?B~_C_42?oCiL%E)p%|`|JnnqrfpcslXvA5S1WBrp zTR7ANO~NuVUX_1hViOetS_R4uk=^ac$cNF7Y&0^I1kVU;6Ae}ef=by313>otWYq*B z5h+vZ=NFP-J_SVeI9G=g*YkoKZ|5dHwH`l*7d7PjHOyq?SFS$ajI|Qi5g+#+Kj+)X zkLRE7@5Wc{{{Vi+Ufc5u{{T-X&L-xIjaT2+O>0(qzCAK8@vlF3m!I#N!)Ot%W#iA^ z#&2-nuh{Z+kV^V(te1wbf4}430Zl;?Up;;PGA{Z)a&N^+59^1%G7nE~JwDb*{m^&! z=K-%C`~3d#knz8FIEVN5?D}Ep!_Hpg(OTXvlU@C-{{WbI_v6>+8RMUc{(ZRPAat5N zx&3@(1*vXh+xU#-nQz9QyUQca`=9GOMd<$kaF*Vn_$l#zxx`2OKK|T7!bgL0XE+Az z3X=+QN{Pv3-ZYY(;W;YVz#t{yt{@DHj`D2eq;`dANPV2)4>eLmV2ME#h%u!UCa8({ z_R@nUS)@i8}&hT*qM)(L`-A zPI<_sZ9~$FIrzoN#Nd~TbmW{@6@y;J;bcqz$o|mpCF*QEm2PQFt->jLiqjoi0Ax6t1Xbd7Qw3LES1eI*w4;6_GR>{awLCEAn z3bKpJtBGPylNHhtSIL-7Ar)WMjb{#bi}RMn1VYg zK$tddX2YjPp)hjn#7^*mtx&Ys$vd790(zs!K_xT-J)p{fh#H#GAtPWK%wwa#H&RT> z6M-bKWMeeMNG`XL2~=}S?8p)zhpM6C!G)8FTF*2|=_ECV%yE$s2oLOo>f^m@_UQX5BPayreAcH0ly*1yL-JwUL{4#ITa0 zD+TPVkrZ}NmrJmEEPp~-hTEi1Ys(}wBHY-ENRXc9%8oC)79uq=aLQyB35bbB+uHO< z7_ov5keCGJEYoj@K)!Se@~5MbIBerNJg6F9eR zF~ZGS1p?T%(YA5%Bo0-A(*tl2@N=h6+2AMOfV)6W&oKtp}h@!!wc#_oFd%hX34d-H$+JFq;D zn%DWBe}4Vjho-#6zrRdN-=V+GL?OQ#_;7?C&rE)>g>F7S7zgj~G`r#__jp{ohxm^b z{ooO3h~M9~WrR;YxpKKHUXzsZuRMP5+aZ&q`yac&REy{D-lH%0m>G-x;(T;$nCFb%bMY*^%Zrk4;(2-cH2zm7cjYvCMy8W-<`e*B!p~KAXih zlw#@A{*Dj}5Up7?F39YRjjT&3jVvsQ3U{&wD1wy(LFI)Re!jRdphLO7oF4K55uvdB zoKyxBuKDk`DGUT$Og(%3@Tp`fD#qnHZav85ZYMCgd&BKx!kQ(#p{>pT04|T|bjiQ$ z*B`2^7R2flku@{pli#yC(Ji;EIOCD)P)v{q>*FV)0+OvP z)w?`kXKJC5R5cr?!GuT%jV%e4C9r4v#O6srlV}nQg}v}>hJ;0hix=6g$`f570z;w% zZ6c>nPghM8L(4(P%<&iqnKC*7DFiw%Zd$@oY7zwCJ%UtG(->}3xScLE1`N>17%pE# z7-i-N4#{EnI2{VqGNauR!UHW5C)V03v4Ojp3YHRzL{#} zmc(SVJ;Db%&>5Lv9p)%k)f2U1F0oVw$`x*<@FN6`#w3`^+5qW^j;5Bx0%y zaWz=Cc}XmJF{auPD9fQR5r7F0Ed=D5T5m!Sfnbh8M$*!G1ZsNRgcUHXOe75&5-U4e z+|iOYsid-mkkAvN%J908xRI1cTcD}bujXrL{zBiWXb@O4{Ytu^q(q$DLLRpVgx}J zx>A`hE;-etACIhZAxmKM<~CaLFk(q8);r!ZjuN#(3=1I^fRY6=1V}7kRtq%^lNQ4Q z-LalX+!1>!KnBNi4F(-DK~Bmo1L%Vh8|NTA$^jI$b~1=aBw$P>XPrdZ-6~Dyg9!3T zC*+majCuvl0GZC(U?&ivu-FO&)7D!_K%+F18Sk*^F=kM{80y;X%L^;a~ZIXWe z^J%1V`F{FiAU-kE_jk;4lxe__}hC0Ng`Ey4UaDo;`67FXP43b&i|`eSr^Ro4{NWo2^55USaAoWF+x42bEk67C z=gxU=e}6i`gz>w-zjuSxocKK8pWE)gt!D{FzJI^G;A`vr%ZIDY{r>%OG=7Nx0H3@o zpB?ezElwEs^yF}pY`XOIjeo}`EINmOA9?k`=X><^{x`gbx#T~Q=046#G|iMmI{Onj zZat2B`|Fe-IeFv9NrbCU{qHLHN+rE!Lo}g|@#I4IJis=Yp05q9@@Atp3fMW=k!Yb8Gtj>VvEZqk*Ln|Y?15D{xC zh+-%no9zS7MNXpnfT+kEV8nU32O#qTCL)qyIz-Lq4P=M3CM{VO2@0$j2-Ha6Y6%V3P}CcHH@u{70S^{Z z5}U}uJs4&qEl$gPknUz;fH8ndv*8&dH+s5PC?!&ZYtGGMMii+o;BB*!5G`$u639-y z^PcJ6R6C&Tk49Ta!;dL0OmLHX!3)Tk(R37mh*yNF1hQ7lNawsVF_JqsMpJrR5eXSQ zj0^ellH@+wUrGaN6PRu9;||7gKxqjfqc-fwCw{p^g4KlV5*%_91eytkO`dp?DaqmV zxbpzgjy8s)5{!g-LD8~_>P91$)98rQ44WZ1s*G3#6!=ReCNPI6wLG4pDE{v@CYR9> zH9--&FeC&TQbHS$xC-81#Kof~5H+W6@}gq2;-51wP2)_orJGs-BMrLR07mOh7fdd| zAXQ}Il7hj|5En#AMC5D%fd!Kq(oMr_y}bTESU+7v$KN=~)}x;Hj>vcEflr{9`1GA*pz$&7 z?VeTY^PG&o5ykzVT#TyquKp|alj!^XWNz-BKKGRKd`x~cBG$fyc@ratQ$D=b)+&&zno zQ-r5j(BL+Tt|+1vODv3Vo+#Ezu<*jDKr9?)y1YWEbr+FSJs*sc*=Z(>whpad_ZQRw z^oAqmQ{LkgjX)bqlRfqAgE5g)EQ6-5IK_!Tns#C*=owXgx7VK=`$&KZwpi>;7xz~r zXKGeIBvR~yrXU=Wges*HiD27A$_4@`wxU5TDFHhsqXk6+yC;BDt7jZTQM$6$#5y`b z7+Y;s4M4Ue&9mU@QOvQkMe-av_MXvk%#Z~!5Q+ro2_!M25Zj6gOT#`$!C0BWV1)&3 zXlZ!CC`q*la%7cCOIbZcQX3UfLK1sT;E-BG!McES4 z_Yiz~tQ3MF8IB?spSKC>9i=)jjYAE*@Rj&EVPnsbgf_g8q#SjOSESDELsGuyj94JZ zMaV)dyloqa#?Z)4$VWeT%7%~)XVqCn@B}rHYS9cZMJ2e$BCLx>qTz`(w4|bDaB0Qx z*(a=|c{_?tNC7NsqBu}sz$7;E7%f{V0MsJ}PJGk}>N5yzS%|_B1Ltip2gsmW!9?7M zB`az{0L-vu1EC_aBu+d`AeAJzI!H+qNh=u%FHABDGa(6qFsz;b0AS`8+L8>{_uhmK zQYMsDV5^XQHvFhc)~^A?um!zr!Sxi(Mgj@|8l{AyYNj!2*_fk2a{7SY;lkh`Mnp*! z!5M@7H3?0)i@OM%IT*V9#$$hBvMz5V?n#uUWOZ{`+w;igA}k&an8@uAZ4xSuS{9B% zSE7c(62V}$K@*duNL3c@5F!>j!%RTJ-5_rroFbV#l5{7FL`ClyP(hL?$e~Pv6LfN( zQ~+p0SILxY@gG1^5K{mo2|-EcDl&*>Ln8wFN|eL1(nO94gkF)5ob zDAYzkVoEZFky|qG#RB}sDQgx;lTtT9qE7G%1!|=A4I2?{h+3qvT@i_?mAMf{1^LvQi_;O|O zUwu0D#Bz00<2O1-nfi5#e7pPk)+q4_H9h_72|c}N`8@7@y!1%x?|CmDIFdV)iod_V zOrxhdm>&NCyhNLO5~qsx{{H~x zeBQdA6PzP~sC_@b(9N0r-_Cd|Q-q@5k8fX$uru8IYBE~(jeYxBKVR=(yqlSWgK#ED)R*7??fFkU?S2$l+w;qz_)D6F)^CB;|Oce$^NjY2u4^3McE{S3b#=4_7?l_@`+CHm-5I2a1HlixT9V;1KnFav+fRcKE zRxYW=g%Seb>_eHhVti#0vEycYAxW27MoJeTu@oVJmFu51k7#HbQUHXznLaRs5Gm0r zPX7Rd;MyWCG8=@&7$NX1c<&T&q!1)IG;HTr zc||6)k&J^=@Frs-Mt}gwi%{TVTy4nZY#2Qh1gIuBMgo&hbs{<8^O)(X#t;G@Z0AXa z$p}*(Hd$@OAg8JC7Y>5+akkOn;9Z*=oAQoRwHP{1yO~f z6#B#p8i}?i#O7(`nlQl#3|L&de?g zT<|#R>B`ACCFp;4Xc+s4$ zCT;|+5~LC@*MzVpm5OQzBXO}sfP?d6PH=_5h{(XgCh|Vo~v8KNT~DLlq1 z7idTo7NjW342>}%CP}j;%7wK8Tct!CWb-Ezy+tq}Op-m4NZFT>-~vG%IIpq40ad%q zvT}o!$gE26QznSq=J61!3@lji5;IOchW7-(Sis$ogprEA^bK_YDk)0VP7+S-r3VD+ zaey2G0HKxg^4J!gmeyy~WFelU$i>w3kit^WYeIqu(ln2(pSzh6%ntbbeaicimq{bdXh%>3ya9Ji@r;+>p zZx$WQbA#tO^ zQFY{uLt~UmH2Jp9bZ4O;21bE>N$K%~AGr_!B5bF6Q`Z?pubZt zB@Wa;1PEY1X8Fz0WfTMqG9HUY<4#mYlCZY`j${@c2?k9B1^wRS5EK`SltY_>)+}jI z+=ayC&%;nJfJ62m8!<{|Z3=d;5fnlbHq#nXsU%4=5DHDsNbCaOo61;AXD=!zAZZLu zz#&L2mWacPK%8>;6K1P!5aVHCv;dGb0QJb7`4SZD=zq)@Fb0$tMi?Mya~ zNvzr;8*)v+RUJl2Goc|SK(jzU=0cugNg@kG{S3TILBhB#1Tm+0<|khR8+zh;nZ|1q zKmi)^00@Z^Gx;-<>VgJhLsTW<&K2w+va(PU9pOl|iVqXOc~8NX;sVG}TQSfy(Fw^P z7=V~sOiUr?oGa1cWl<_!EG-5QgjWD+Wa1{hD**`wkbyg(eC^$_#*~1~p%sN>bpF_%QHWxD=2)fF@DEXr-WVKxoS{awc_(NX7^UqXiaER-AD}aiPUL19B07 z*TD|2Kth+Pd2j~a@f2`I&lw;MBBCIM6-_|}SXNkUpoxHENJC}gummbZl9^ZH5FQP; zt_vec66J(h0RSf{GK|cQX~hOOWgvq?tVC?c?|lF`AQyh>8?peRMkRXJ7x?l-fFioyXo07ZieAFQ&AT$I?q(bo1Nd#WSx>_vZ5euEo(U8a$ zWI%G&sGm!0<7ye>5E<%i+ZkKYT89cmv4~1gA)F;sSgZ*xSKJHB4f(7@Edk$%hY{Wa znPPk-v&%yDL_svd$4+(#i;KD~%8D;}fEW4g%&3G@5kmXmAz&nzM!}}VWI;(hxiAV4 z6N=T8$bfDV0tGZX$%TR#C{j5W0mf}014xI&k?N#p1sv#-9ndBkO~bM=Xx$SkpbQ~l zLhy3tGY$cbL}Be0B9lUh^${C@IG z1y!@HNmC5(#y}Mzv8gJa@*#=W?eF_Ac<yK_}uzGdCs9)^!4t0{xGNf z{{VBN>*Me7oDKQcABgmsIQ6(b6Rm6sOWDQo$?V6PHpM9LB%gGmw>q`ZZw5FsqM?*yB~0-96@bflHbfC{#B zV$TOsOz|6d$3{&MNd-(9GRRO1Q4@_sCS1{yv98qXM+Md-0mMMjr4?^+G>F#m zUB`@!mvIPfr)*{ADpVKYDp8}nsoZA3u^A6S{V-Som3sJ8JrRL`MUkABXGfQeTj<&V zLh5A)>Fa=KYE5hDHahf-?O)belcql^Au}WzPa_@hns~tTt^WW(Hn4(di;SFjpp7sa zO(B~!WKczd0Jsqo)+@h5+*Ak&V6`Q`SX{UfV44bXML!65wDPh!jHGBGYQ-oD0(L|x zJtrK8g?F(Wgpvad7@3hJRFq}_jgH+*X3$X-M7S2Z9EHrF#)QitL%}fC5Js|^RxvPu ztTdcK4-|WzE(BPUT(tBuWGr8`NOh+V|16C2dK7;pV{fqKhi+BeRMB~gwt zsn6O`t=StcX>OR*jK{^Ym>YH^vw@Zou4{p+%X3*OK-eV>Nl~coF$k${KxG4=A<#?{ zomvPhAx*Iw6Ul{$K{JtPog1#JC94F+NFq(fn`?1{RRCEiAz((BVt8>11QJHEkw?Ho z#v{Lld_dLnk4lB2`$01@anu_nFbL>T1M52>O4B>Zm_%%^iUbP@5W|loAklB>KqQyD z#y+7C!|E)vI)bu36fC0_iy0;t9L^M_EEL*fyy=DeT*np2%so@CnS8N>D8&N?GH+-k zBugq9R!9hFE)oI)6VRscZ6A$tiG zYb23?n-mk!Uk&q+hKpLZ>Ou#i;c@~4cFKk5Ywyay0m4&QQSEj%uOyCC2t&~D6Sj79 zjkZ+0%?vA4?ck>&4M2!DP%;?BNoitz{uIcLB}BR2^>~P2L^5bz8#oLqiUy`P2T1Uf z68Fn9QjADRfXX6iiNG$j7QJ+t>b#je5GJ?8zPSrVW3f*E0O*fQi=nSe>+kcD)oNh* zy=A57Al34H=RNuBPhWiFJy);KRgaIaOUP;<-15Yg{_(~%!8UatC%yv-e;xPt^OXAk z09j-0_m51QCck)ud-wSJ{NO%oyn#mJzHfc~ocry}XPKS&i$2bJtI~I8_wAj9dFK}& zs)O&1=Pq4+{Nmqk5AXZIV#x2~o^J?W#OU_t5Unp?XJ4OunbTj1^6dG>#I@+medi_@ z>;C|L*TzwPmG(Kw_*s9yT$vRSW|n;TesXY4U!8M|7Z~ZX(nOduTZcsK0l3m5ys#OOSftTWC?_8VlGYa##^WOgY>6kY24RVu4y($CLp+a2 zRl&^GSd#4Q+lN(<>!%GRTg%^go)-!S zT1a}LXmSjVe$<$Bpp?^WbFM2{xG%CJwajJ zQhGKR?iw8?gb~1CNU*$JK@Ej_EIcRqV$gk$AP$Ul^5q?JU>@>&NKH;kw7?8gEa2@O z5;A9URnoX5f_ma`7QU!(ko{QBR18~?B$Phz#w2!D4QOh3+q?`Srp5ZLmLNLh!6hO{py#`Vx*^H{}vP*?2N02+hRKR0s zH1Ib!aT z{{V1MM*et<$7fM9qmF;Pnrol%%MY{ObCd6V;cor@{V-$P^snpN3??UWaCd&a;DsPR zF*x$1&)>TE$(8*coxNt=PpV^|ykqR(_WS$v$qDxOjB)Ef<$7WIdHiK?{yyJ$F24I> z*PD+q{&A9B5XU((%!j|V;K*ieBk$VE8m)Ns9~}NOyT_kzf6g;!a0lYI$Bv955-1u- zc|i#+_`aW_dTa#*sbj+|Gbz*(pGCW>=UD&)84#uf=&ipjiIOp7bdOw?cQsI?X@A7n zoO>UP<}5C0#kRxiqr~7Dy970red03##%43;*?7)F6n3lN>Cp9%vB$>iF7enNe zliu1gL244pWl06VHK4g%k~AoGvZN0e#Jx^3gq$v@G=N6q*OG??EF{)iLY=snoC!Ln zgb9>GXzZ@BXg0+}0F6nv#+RWv@;yzqT^_QLsuNWxJ}cPLGsBUwTAk@Ac`Ao z42WQL3+a)q(&VpSrzSP`9bUHw^_G^4D~n$j=Um_v3xP@E9~0|{tN;)UZtrO0Dqyu( zIMzbYB$=5I#+j)6c|)o=(F+@XmSW=|1(wHBNhK4rP2M6&X9l`r$O-R>hZfmTR$)xx zaP=H&0QC1Qog3+@#AppqXf6gwGNM-Q)J-l?aNgZbd0a|)&L~dB>ABS9uU6S?E(k!d zlbQ?>pmG3KPhgD7%Z=+!d0K-rhD`kYUy30$;|Ezifa0$gb7>L49k(QyF{V7t6i@)zHE`8^K*&w6T``| zmJlFhTN#Lq$YRO{gl<+AKaoxmgh@P7)zDCI};EM605Ld4YqDK{Sj2W&=|Uo`yTTPWR~? zx(KfDtB@)rIHK$pgSIg_7a#%v$f#i$n(e}CB-8vQyY!5bMaam=5NHSsE^tI-bu&Q1 z*n+~6h6ZYG2EnAuOF|%7oUj1I%^@fnk=k*a6LS+x3r3x9%2CT6kxj{9Nb|s3Q~U)1 zO&M8$MMg@KAg&B3(t><>Twt3Sg`mVu3XZrUNY+3hSy2+iPb}utlNh53W}k>hQIm2? zwk3;FhHWs1BFx}p2e9OBhvRTZamq2?6^H0JQcxUkFg zma7m^HcUx!49faL0SO7d^@<=~j_P1R8)&CCdkQX2(x4D!yqU=RfvOdm-{SC7V31~5 zi%yg$*{qlJ;)n>!k4l-FFvbxk`j#B63Amv&(?iPfW-DO0!pT8BvkZ`-2<+Az>E>j zfn3oLV*PMZ6BjghKA(Lui%i#Ezh@&*UH$a@=ADaBs{VWA7gs(4AL% zoBsg0YC|!6$6tQI4ZQ-qW{E$I`Nk8vD$mVi_}6Zy7I*&uKYQa6TH}v@znmDoycFxM zlO^LIlgE2^XCGQGc<#5e%N9_ zH0oxsC=MH)=;<#2xdpr1bx@cB)DBOrRgs*MHB&1tIW&PN5i0r8>%e+6Ks+NEX&CIRPhP;x020|Es>A<^ui#mUK4*)(szJQLsz|Z*)h(-Pd`C|F@W)s{9pXoO z^YYD9n0v6u9@!Hr@J_om2P7!~4U1+bH3dm+O142PY14*?-GUogeM&LU7%ZwGWm%6p zE~e)njcg~e(Vjf|rIwcK^3Sq;9pr{b`B6X5cT$S21# zv=Cb%n@aQ!F=cUerHQL)XFTCxlBox~1Oss|oIXUhF-Z_&X4}GK8+N4(vI<_+coC4t zki-jd7EW-0jHx@2NqFVPtJ6ypVlA8WRzuINO~FAl5YJkg2j-9^uE`MW*kzu2loS^v zr^s$-3lu8kNDQDbQw0Je5TYjKDaiGXJ8xjK5e%sSgyj<%4}u8BdJ9F#u@6;v!2n?d zZiYapJ%U()1H@>JxP7!m4AVnO%<7{h2q_TAHCbzH%gnIHB!v+Sh~R3MQuOG2nMC>4^zDVP>Ia2>>#N5*t&HW__sJx2{& zfPPvBgETT}U@D|aExB|v1oC2pWg-f$q6-Z^21eGc@-JnL3u9@C0u-0z_w>Ah+Cda@ zJJbh3SW;!^0HE4L#0Q%;xE9rEDyEAQOWDv!?M-MkZTJBm4qwqDh#i85k6cAj(B-+6v8f$leQ{*~>SNEq_1_;?nvi|^hQ!^a;9XV<|*}uLuklGaAuOB`2 zjp61u`}^M*o?Mabj_>EcLxkt|l+%`D_v?PSB-5IYrff&TAALP<70~^yV4InK@5dip zAlc}@Z_~VXM+f_n;ylj%Fi%+P?*7gX1E=TDj9Na&h#6p$=oN3o5c^v2hq?v=&6EX7O0;+nYA2j?;JDg24sie%r!@CD|SAztPGNmDD z)>hG5S?nR7u2{f8ALR7cQ#!&YfMXXhcV8Vi&n(>zc3DpJ;#3_Yi&Xp;MTQJY%?eEE zLxEs<$xZ@-g=p+F^yZx)QSMf{K?X?*XpojlM{c5U+Ek!W(#lA?a$vE0C)Obpx{?Lu z!n1-!5Fuy3l~N{FxP&A_Nz)eqp)(FG7Rk0GCPgTM_5+NexOr_Cns_%-Lo`Svwv14i zD~1m8QPJs48L4_*wY#bOxs?T7o}okp>xRC}XBRezmS*vht>NGkNq3X7`(W&~Re2L4 z9{_C_YTgkQ@NGhy!!Jncp^|8*f{{>6nU|4}COHWZ#N(ad(oGU9iU6kzP(AbfxkUT2tUP}$Re}f;jY}MpA2A8Af)H#I zN7*A$#w^cF#cK|>K$sJ9ih#e}j& zJw4Y~kceO@!;vhf$q*39V`IoTtXOR^i&RLoN+~nG&az-24Jhn@jpV6vt-(f8V5Z48 zFaTQ`C6a-RWdATCP6TsMpzM%w$kYV2D>=4&Hxtp++-MuSOA8x zCV|Z*L!&y6$~T6<#Rm3+2(?O52;(g#uGFAr0EtUQJm%H|VpjP>ZjdzVg6hnvU11K4 zj4;Wb;1ml|a?R}wyxId(pf2Dk_{uaxobxHJgM`ljiWudT6`(1&o}2&!dI&k%5TOe3 zoW;2F*X8HaKLO8tUh|;t=BHRvW1@TWg*9EbALkx3R6onpjBR|p*X+TjNw0~YvSAZ{ zWAx$sTh=gsRYrIFq z-=@JTkR-Mb7_yy_mNXH$&aSm~XOT)27jiMi*0@#M5cCi;Cro<9k;-CfwzCR5tga}= zN&C@(I|o|EDO(Cz))5#x5pmSTE5`OD0(EYPtV&1}xnVC#TRdw9A%k@wE-$u7gpfiN z1p&aF>UmXdR2)nKUt_X_BTIhOkjfR63Fw^HDgN^`{5DFdS%^Rv@JAeX5379al!tzm1WGMN#oC97H;bAX+yqk=W zi7?9(6d~E|?|`@l7H~@u)zxt7fsS~T9lZm~t>C296wAhd?ovbFBMMS6WyJEy5Pxn= zgfz+mMct)SknY9EbUh%*W;dJZ6yRA#5K$y*wzTfs5e1u_j4-0c4s%Q>5KFullqrxk z2NTfB$2O3UVd@Z)otD(NwG$YoE`56kP@;?_a&hwM*OuSs6cU)sL))C>!i**$agwC6 zm?r52G=$>Sg{4_l$hlxjVkW+z%0t$jH4d>@#g?uELgxU63`9gJfD;Ku4xSyHRlyv2vWt+Odpk#6N71RSOi8Ar*Amg=5jHnIt=s+>75HtJA%rjhNC5hRkl ztgx`8AV?#`A=L&ZL(u@uZCWe;05V7o=+)%s0^vBS5@1SDVkSw@LL%glNWhhuW=*w- zfMD}!(AOfOxrz?Ml#BqN-U>s)gPbTgfjSLfvS_6dT@=%DthhDc7fN%engvXpWcb8P z(DuG$tgw8z*x*4jQbv43EE9rgUSjn~KOo|Anl%JrF&IW;;mJy*K%^l+<^r3hSwtrk zfKUaBpxzQi(JDaJiTb0Hs2Bz{6`QNOxZFOOBj-hBOSt)jY3U#`F(MPs35hp@v%$IK-y$+lBoKSoUtMxQ33`6 zB76BA`V)}be^AJyR4O@r=SU5Te*;cw&D7zX%J*6^?^o7tR$0z zK)uqXI5o`FXu%{fwq@=VMytFNYc3N}?|a@rpfOs3V-J6>vZH;->!y*vAJfGW-pM+) zhppt|cBV;VE+?vy&S)m(sT+rcJm1HaN z77jrvK^S}?sUsD^ZW8yV!A_>|^P$a}-O-Vvpt=ApfGiY`8Pg&g1dTPoA?I-3kZGDG zs5$|Noht!ySVFmciJ(fMDR~$)&Vvdhs*)7fc;!=hNC|34#JHQqh!RC8qD*MiFoc|z zRFm?;OTr0}JIVFX#DWqi1oL`&P7`4Ulxvvgbp+wqjpdVI&5cA|agg$81yDiYu)Pk& zoMH({Xyv?nqKuV^ueF$A0(ltbVvS*f5qb+M36U7JB*q$!tdgAUSSv8f)UKoq{H#c@ zg~CpOj1N12OGaRVofOne1ffSUMAFR(gn1gA64NHMot30o?cLCS2g1z8;>>7Ji51{7 zAQVDq#c`gHv1Ab?6AUm^Lj|y)3w9I&kk|!kR$xo^Nx27MY>zQIs^t>~6zNuxQ}2pH zVIIH%FxBgEyP1ea^U#8H31o)I!KpF>a7>*{o72Lqvl2|msFXd}q<%~&#WFefBgU(I z4kt#0cr?e9=OC=HOqMON%@i3nw!AXRz=QGwfTRec2VssQA>~smKnUPQB+$N&MW`u-A`lvxe`8b>}>L`+9O?eE#w_cN)et{C61)zCQi@W3#FJS3iH8 z2lRgME3W+~Ak_U%e!b)8Uh$fn``m8{&GU1|-@ch2N3XwY4$k-7_59&44_+?y#&*`d z{C(aUFZW)(dj9~qS5|(1IEB~WToyoWGS9Eq#wIn72ug@K(;P+fjG+Z}Xh>P3C4I7Z zO%66}5>WFlFgJ`NNfZE~p!1RPr^Iu1!pJ5?%NugtTtOJ(mDz|OEV^# zn_$!o#84b^t1vbinaUe6W!h74n0h)lP^3u)E4ilC+veoa#?sCTquDubaec$sU?M{h z`Z>tNf~nKp+Az8y@0z&x|G< ztE)5V^_*w!;HETC)J5GF+KIi1@MZ!{o^c^GpyEvg>l}8DKsVTfgV$q)Suqf@j{RO@ zeeztO4J~NIcjinK)BykqFC~zBO!5RClu1=@MlE?vn^n*;O2Q#0OyGUd6HPw7a*#kA znj6{7M$K<608%3;(CkMn@jJ$qS`LipOi%^!Tjoq4L+aY$YhEWPDUhiHxZ#!~Cb^Nx5@F3VWDT|G7uL<=`x=;#Db$9Uy+plTe#2`Aa^P30P}yV@R0Wg= zIPS968fw-gqrBvfh2p4+k!9>tq?uxT z5kg1Nq$0Aj?~huONMOjE5xb`H1v=8gY-~ivq7&k)d#HkB>3pH0FBEJSm=L+(nb|$F zn$!R=bQIu9WJKX)OqmR{Hqeen$o+|5gh8T83wNH-3{{UkV z<{D39w&RfxDDak|=06f zi8I-&CQ-?(t5Tv~$j3&TJLJ{_dx0vG+nSDp9<5VirA3TWq2U-r$3nxJ=!XUp?i)rK zMcfj>D6+tG;Sfiw=_J)3Ymh?#3*q+Xbi0grK?GH>#rH>17kkbA8kZ6bks`}f?Q@AJ z3+iQu;|M;W z&u8xeaT^nq9tX^O;Vx3$A}IQuk=9e^tQHt{n*&779TMhnVT#j`z3vjklte>HC}`>4 z684b@MoDCukv?*tCKz_0mv5;uhrTU|3ZyTI?*6dkr#k=xR2eRdvv%SGi5S?O5(rwP zkyb>~8Eo&dG>DN8d`ixu?)rJF=?cqReg5J*(aya%Uw3Xm}jMqoG&JwPlNU(Yz~02EyucrqZ> zNg)%E>;B>CLM{X+Tm3Fs04_6d+2e`tjp0=)2r7C103tlb07M|M5~H-fvc^qTDo0%L z_>2I~_CO)QJfHUv5W_Z86{B81iF3M$0>miib>{tdj1hqqirE?3^m-VSqU%vWmsb^2 zhNaHoC98-5i+O35UgJVFlHNa`yK0%ckRQ-e_eHKp1iHKhq1<@3T=lEoa3dfw+E zMQclBLM8~pPsVN1fWdHB5<*CY(-JHOldWkXGcY``%I9LG2tAfl5)gq*m@fqoT ziA}^#PO`Y(DM1W!8}efBW^Rm`p-F)4assDRYMEl$4~4=qHM6*w)V=F79ST7dOthLO zLj(g=jIe@Q;R-y%d^oR&-8yWFu$hJxcNSuz66}In@PhRQj)Cg{mTEc5P)tWdmPtz# zjwUw-0@pR78853S2$B?FJ78=C=FKn{?~_{b|ty^|DQj%x&D4d90wCafwHV7itB-_y~?E2P+9>oE`Hd1jIah8dIGl0`n zhJ_YWJ@|NJN?H)y>=VKt-MF!-CMZ%4=LT%fto7Mg@lB?T1AA0=c z0GBrJ{$(amY4fiS(>rOW+xg2NUmhz_=kb$To&Gw+wc+^tIRr=B*XFs8|U-ul$x`N*SFs|PMY!RT;5yJ_P%q#pSSnKKhip0Ju8zdU{Onm0H1 z$KPYMSw1i#5UcXdX5u{0pU>kU=dWl!G8y7LYunC56|Vfv{qdX;{CY=|BDJ_T`Tqcz zXn+t3b6s>D+rx!+2<3uWgl8~?8FY-;1lemM6eJYIHd!z=;s=maAjhysq=*~lAvgfg)Bw_H2@vJf*o3V zndcNi0+pyUKGM@Q7^pMDM2mD>#D=4-&L|ZK(h`Q|z@m{15dvn?4H1PP`<%QNsIA>#-xTKF<`#JIEznDMq~ug;f?j_kn3))0Yw~;ZRv&paod8D5k`g`d@m{NPZ6Ba3diig$!c!RloLGYf_VfMKSO z;&5;cT@_mZT9WGQO$$VuWL6OeBWndIdWjr2Q*tTw+W=8K2MW9hCnVxi3Q!yv0$2)0 zYT%hsg&y!ZLYM+RlELLf!a=|df_nw$J?a^m$vP1tlgO>n&RA2DeK1glfng-L#zf%4 zNjJ$x+K}8~Ka>&$WRjEIVD`s`0*po3DZxyoz*vEV%peG?UJNH>nL^-9iP$0=z;L8{ zSR@Frw#~+}eP^QAL(!%!x4fWIb0q#gtb3TDs3?%zLKlmYW$O_c4TpLlq=|}X-<*u? zM$(6$Y3SaW6r;DIX@=3<1k=bI^yd6nqvoK?^$MQpP0oF#3RkdGbx{C34Kw5gTSFU`DM-phjZ|PrpRk2Av|LHw+?@%>>NR z9f|({2+|ruBy*IqDHma2+<on)anSJ@zLPRvJYwctK-sa%HA7>`grhvSr=Qh_UAoZZ;TAFXMVhW{;=y;8vXdh*89C@3W;7%_bE|3{{TPc z1FpIEa+7_ZeKXZgulV%iyoBaI+xvMds_uC8@thIVy?LD2m&f~z3+7{)?my-yF*;6s zd*r6@?ax^!6?%W{dBG;7`+bjjGYDjQBYedD-U{!hnkAm{dq}QK7qlp;+j#KK1Rxay zG)SUZ19;70Xn`q0l^Jho$imzf+6bsc(GX5dEyFc4w(n}6uJBU5&j(N5^_B&f=>k+Z z%KdSktpKBisA_gLcUqO}0u}7-nyZ8VWFz-}99n>9K7|e$DlgJqbnPVd3_$ z8qN=He;z$DhEmX3>OTBy8^8j0`nfVxds3_IOvRUf-a#T%batuF!#OmFtTTa0VD$Hx z$d#T(UmudUj9!j{O^`PD$XoCZLaG{r&yzQXfDrEa@2BCMNqP3Pbf6~ZK*UZ-K_aZg zg(-CFyf6`&i^XJ`P2*Z|#Drx50;}eJmB?hW+cp>^JC3f5=19Bo@lfcA(TJo$R3L&D z9F{AsO<2mwCLk&nIA0+^XsW^CLW*)F$cB&j5=NA0i*<)0tVN&zw`78L17)&Uu{;7s ziXiwmk;q(bOCcTrnyJcYQpiTa6%a3O=M_Kh0YIuMi$;TyF_yz$_+!iVtYa;CtZAV4;N3B~CTyUVTEi zkZGyF$VP)M^KrtW=OFbY7YPTf5L*>@Ks|hEC3n-O1^@%MB@Faf3js_y%;{M$=ILoG zlcJl+B5LkYrrS6c(aLPdfDI_#1f6YqH_Roer-0PBcFbx-y@F zAiI!OysU}?mh7(~;J9)s2>KyPuj8Q>)R zI6Nstot^cm)#@=;KtNE*rDT!y;d6Mh#60ogw(t1J#E^tH zAOvidV&Yk>dpG-6zF_$LD76R*nMXY{b9cMRqZAUJ79xJ1fl3aEK83yoQ^7<;Va8yx zg3(8){RXHJE?^Xt2`5cikrIriM6Za_BcbABMgigE(c&htsiJZx(4g4>Mk{*kNYt=) z$-{(@(G8nIVYsYXV$S4_5eRugfB{07T3}j8kSf4j5S6HT#HOY(Dx@vb2oJ8D^)cN? zTOWxe?;Qm(=>zjgAx^N_g^ed4K)EvnxTn}LvvFEVLxm+HJiSvwRjEZ}g1C4TpPu2y zX2+D|WHS&EgPCX`(HIpz=GgpyUYM?dMPiNb{$(6Qef#Z>NZSD%^6o}H_)s2a)L++) zWt!dJ1pV~xv7P%XS_eB>Tm@NZpt!bE7~?)Tv_;Bm)@=Dd4)=A9#kSKpkA$)N10eCX%C5l+FY zZd9=&uT5oyK}E2|wsE)I#umG($sv-IBuqVJn1LdU>L-qw^}Jv(Avx!)fjuP9-BfP> z00wVIP2wiF7N>G@#6Vq;BWOvneFqXjR4EwV95v+pYhNR7%2PX7Sr@>8m0 zQ*i3#jFP0Klo50#6R@0w41mxGd?XqF0KGt%0ytk_^C8{&$YFg3M?HQc#--PVcCpek zyEbI4PVki?iAc1bBM=~v*C+y(WJ}OP5`j>TstyE*H`Tc+0dSTfCCgw&d7LR|63l{^ zV7h^2%^{#{I$SC7xyl1xq(~E~2_hX~1#3_#3pfaJTb<Pe-#^BD!Gj6uhpqV_5`k~K&mxUh_Z7Cf-!@M~SNG>ja1Go1znpcnzQxAw^D{#~SB z0eUhx)>=!-SOA>@$+^o2mXx7ji*(_LBLtU%lUIR+`#sfLLI#P`b2SDJa103unURj! z+k)~USwRq0q=^+`H9#+iIL!n{c@6`jh}dx?s9ob@t`#wvg*>q3ytc9hG^8!0Kn=ON zRVTo93ocSSyhWE9AW`{cp%}&M9A*|o!U}L`V!74E4R|y{bpip{?CORzkTfo81ujs% zwq(jnTe*}=3bJoNWZYa7?>S3uLJ4UQWLBYZ5U>OiaB&k17&X5rZ&9u{u6{5?$13W# z@iXJbAryq%cq0ORM12i42Mj~y>$iozJl;lQyeHXAMLlw;;DK%-bId+9!>m#ks(ScD zO%6E3NYQVOP%x!8JW30U)4TLNmOR93E>lXOH7E?Dr(n`EkraV5L}J^CyW#Jez-?7Q z6imM_8A9Z)MU4uXwVg2ULtb$sGSmu3UW3V?DHe8za1bQMB^_GX3UsfZob6Dt+zg@S zf@g^^$7z(%Ddd5jk6f{bJ@fz~3J0ir$(?C()IE_b(Ft*2VBMEP0~?71u-JRHLL-j^ zsi?tIJc>YAO{@9NIgD`14YW|KbH;CJR0zh{Cc_?Zi13L#BaRzPlH+qm28HuZ7p!Q( zYSG|M$$H`eCK-_fL@FRp05)|@nA9r3gJDn*k*N$sm_TMwgsCMSpPaBt&Hn($vz&zk za~3o0#cwGwgM*MeJ+WTiK0E&ajvcJWuBVvZ1XtgFyx>D#eX?MVzHg_-2uG4k@$ryE zf5NLEjy9gL{B?k%T|M8$dGm*|FU{5wvRgmWppVWF3p*p%&Yu4OtXNcO)W;eAyAS)2 zM^#?4j{bW80J$Uh@&4r+PLED^{-zd?*Tw!X(->KfzI~%5iMsN2@fX$vOt#ni>&7Bu znfkYk%9R}psi+iqZ+HZfK==xNpQ0ls>p>PK?S727#~Y}arUGpAQrg5syDQ#>c+FeU zB>ZiSzr4~(Uiv3<=TYKg8#jf>>Opp~#8cExI)nnkW>IAYru^v1#WDdpSb$wk8|CK+ zAWAr%m%y_ZPo`86(RiB70Z7O|kUDIEma8o2X@%x4WfV=sl#w7B4y(q*NR^%wa#zG$ z{xWd1Er+(ILrNEL z!UnzwOkgAkxs7*-(KnrlNS2`yw2WeFB1r*R>0wjyRykQz532=J$Em{xfJ_n$juLW! z!t7^RLTGqoqb-ey!xSuvT?L@PkCIcAl1jjP4JU#b7ZO;kgG86V^tK#oMu!g{JCC}F zk;?Fdo;mkv_G1CQr_|G4Vq^7*9H#4*r8@BV!X=c^W6}*YN`#wDWk_^AAb4zp)r2<> zh=rzerMV}5G?7$^mTXUBxYWSnTUJmSNT$Rl%21Ky$Q6Tc2A+lP$mQnb0ae8$muUkn z>(#}K6wIVdtczaxXLC6VvS0;ebj>Rrg|L~>i$0aRv`ZpL^l`1ca#AaUBr~{-ibaG( zs95=6_lSeFu6Tl#7`EgycRGOFbLD+96Y(=t6fHPOCN^+ZNOz>gifF==$uWec zcT9M7)JHy^*;Z<1N|~C;WR_(Io?xD@FM_qUYwNA&rnsJO0GFrceLng)$wO3fe^{n# zueaV&Nj`LZWTyWB*|y=1IUnCPy4ocnS)gT!9X zxABbn{rqEE_4V|^XK*F{=)HegB^wj=^1tNzdpvr0&nQ86KY!*8y+n7%+5Z5T6u+KV ztQ-2t_qQ%U#XfiV%Mzg9H&^QZ@mvFFNxT(SO$d3-(6S_JyM}M~i5p=$2n6l{uli;* zcmfnPFnJ@>8Aik4(apzRaxIqM;<@{H^hn6Pt{1KO)kY!+79dEhdJAOgc_Yq0WMOeG z5^_3|5={*AWS-LPy6&TE-7;<=Yd(&msN}=}WK0z(vQ7oanxZlVu{TT!DCY5IDhwH^ zAcfwHbJ5w&UOy~e@>K*Z{Y>IAxC0`9bi+KxGytwglb>_v5QE#1sZx035z8bqX^JqF zrB8@A{9~}Y1JYs`=bUKNl&`Nk=bz&tN#wh|@%YUakUjZ$i<{hJn?%$?s;v7wZzYj_ zF<~(bYtN=lnt>x5Q8l#!JZ9}wQKIeQIj%fpMVUl#2e)eV@r#U1u!#jNoI2yqGYJ|) z9#S*VS+|TfL3R_Eib_d4ZvcZSChLq`aD^RS5@;mA8#opLwbscsK$>WYda2^+#I7fr zF+iY}mkCxFk{qfjqEz6lz>Fa*QmGAOi6TTEu>Gwf$@`!NffGZLkiOBn59hRXkTy!tCNMO;#o#V-2p+^2 zjfg|W2$W=^@n(w(yohkaO(C_DSBx*hgw>@#P@Mon0Vy0Y>lKmFoNlJno8Z~SPp~$9a*->qm+fQ=mGjkYYAKDgQqN0t|Y$fy8i za3Z290R}IM2eJj(qwMBlg3cRi6eT4VUa~0P?K9+aCm9jZii9xVS;bg62?Bfk26kF| zpRPsg^B-d@jtPFBc{1_ui!ZScJbrk|EA8k`{`%w_pC11Jy2W$sdj9~r$BplUZuh)2Gb}F~)_vZmtr)j9v_>XLa7c()%Z;u&hCJ(#B z@z>G*^81V!B)@o%Tpt6+-TN3D5BurqlUPO8hP=S@!w17a2Q-chi^ zfVf(f#56~}FcMl&F|?c@Y~eaY(7@_R-IMa{LXSArkRiNod9Yzfi6JyZJ6tRxe-|i`h`CK0DI165o24_PanUGxlAp5H5%7m_#|2LTk*!T zkkNgIuO;^DoG+vXb;iE$EK*S^dUdZ(e|UT%*|W&xyTn7Kh#_0~C!Z$_;DvcaUy1lQ zzT6_2mcZ-)Z5tn)KS_cSN3d=lzH$HqG|&)cB$KHiV}js-6oQ24PMeN#m_PwwqSBTg zC${@h{2mRZ2?9vp83e!pH{3$v^1Hck{ARIU~I(C1~yG6mVmUjI#neziA^EP5z?6lH4y$9QDw0c5P_^x zR<<`qL0BnA3KU#|OM;$n8VTs_5)I0P2d!d*DL{ZAY%mN~lUW9Qgxe0&sUL}JVa}sS${RVrWhY=Ht&I~r zUs+0CHZVGa!j6z>NyRD=0gD?t!=FMxK@w@^MowmYw4Mm~{kPSJhbJWtlO9GniS?T0 z(vj0>+J9yE^)MBlB)t2b0CDR$By0rDlM$n$J8o;e5pLMKI`&9tj!Z0xp*1ycN^Lwm zOloU-6L_jZ5UXfLS$J*^9=t7YetpUkVG|l`_FJMKZf6P!R^)I<`a9UxGAIBQnkIRU zcnh11R0iSZOFA?zwGuEU6L4Tjj%?qjvCWD>NKj1MZ;P_E+mJgx21Zj!@xIVTPBKJs zL=-8u=lLXLOSc0ao+S&=IwDHMgSeXDLXeH|0WIJt1Lb;UZ4+Anfky(j9El8}q9wq( zv=I#+vT(Acm;rty6a3+v?t$e4;7B-}8{+k%syrz-G3j8SemxSs4;(wmQ%KGu0%wUR z^U1;E(L|0eUH)mrN3=T*E8_~h|%S&M)YPIP)`#B3_ z9&vhi{C;s~WHJ%={m6;-@e( z8&^M=-{bn6@PB_l_l@IM@&4m~_n6&%^N8@7{AZ^>Yb<^5$KSo-MZMH_-b|pA_&%6H z{B(Nw`OPyDdf%ttLm=Oo-^F*{Pk+Aq@caHU5b+h<_>3jFomQVy6f}$Xo!NuK9neB4 zwSbzJ2Z9`<2pp~Yj<3$ZVPcv;9yZO8`tyaAQFf1KY;yY>K%}& zG3sA$qUXQ?z4)I002dXJg)&(1kXh(KzOmkKtl4dR4L+A@gBDn)Y`>2`vg1mR$K2D1{ ztGI?php(;&wp*H!yQAN97!jRdBO~MtQlNEksAWxz&3c8u%R(< zks_X00Wc_>paYVH3O6E1n{b7$LojQ|JUn25Cd!I#jjKt&Jm%|T(sH_~q6%UnVbWzA z9Bl^xxG2D2ky6u0xN27cJ2FBFG@(TJ3T_F*s#ln(DkcCD?44m19T_nVx86wH>mji6 z`heOJ$QtJ6nN0zkV78vKMaUv3nIfVF`-IB8Hn4NV&?205-o`u0%n4r#RvzfhR~X8 zJ)l8r>WjrBxQHa^9ZRR(tWk)OBi*=OQy!6#S=y##I%=E!Mn(e8kio!*Q$5zO9>+0S}0a$`jL0>t1Tp?$j~KT<@M^p4F~5UBUvNr^j^n z1wcY=oy6XYi8uLoh#?UnmJdYnEkMs~;K@B)>iYc}@6JRilrn8K_*$QSatP9ai4c-p zjf`~_lWf3(4z>#*xt89b6gj?x8d|+I@UldU<&jB<_uN-5<}tP6ie|u+O6fKmbtYdZ z9q**e!UTyza$u`0i5!SO%MZ2$#OKTG1~{n_Zrql=oI>cNe*-%ajJFR-w9(vcauosL zZ7@$KO`z`uWyFaa5;qc|7=wUHK!uzXumQithtHB%<74Nr+mMx z5GYO((*TM{qjZy&s#m$Lpp+qCah#atfB^EDAfAREG>^zs!8F+$2*TgAv=Rmcq;kv$ z7EZRpD>Ed(?6Q5P`NF{TkL=x@V?>FP{%7A76z;t>UtIcl^B?c)AfvuF_xZdIR@gVm)l)q$2)`5+a-5@ zjsCphse{M+kU&LQ_wVZ%T%W`Cf2^NHz^uC5bn%4){{UViuhvFAlK9q-d_};|>$KB} z4=4p`vv;%{H{MGz0}pa@2U9lp&T3`wm&@GKiXnN_MaIrX-I2M_WWL{f{{WMkh!RA2 z1iW+M-QuEMq~P=J^MKYOV^YxvtV`xEgj!Y?)Jb(mojcZGZjlkJZZWW-F=pVIIMzyR z{h)ms-?nsAKw)@&)=*zlQEh|W;YMy7CQ+SskN57f>k~33i;H*t z{NXYz+zib`3Gi|htR zX|Pi22`?f`P#`;wd&o$HAQpizq{&)`)CU+1#H3s^x)4NW3+f}E{1Nv0XAjvZbOR0%*f%>k)=PlJL9FBZ+* zbkv@$-9ChxT#2q~HGxk+f^Y0Ll$>#p)&QGRHdh*=_c$_MqrjM0Lyhsugi@{!n!aK^ zF~z)Co}m$k27jPXL9pG|BG^OkjCWS0m{XYGn8;h0a)9yyyt5G2Bx0n>Hil7QNJ808 z+OkNX5`!{{2zQitP(Ts1MNK5hKru}gX!EWp84okM#AD~Nq|;|e*G$HA0kkF+sMSm} zzN%yfgeAz0xK9km`_D+gDRdz;N#?F*X)MD?_u&4NZKh`(3Ar0*T~|E>eB~;5@E#?R0 z#yHh3q`nfSX=VfCCXff!S$4g@4-MrE(IlsS;IiIZqJ)yLfJcGQV#bNQ=938)n1>f? z?opjHCIm7bbES!t~U5g%jsi;sE!zW)HCzis<} z+)V@ad5`&nF{=Il03Lh6o<2XEmqIx1WAEMPAIHDr^_nL&ufI5WI*3=sJc^Hd{MT5l zjE!nM)cN~a1HreN;CVO34%!5I$sdj45+NZyMR!wC;xR!vMHaI=Mu;J$ZR z=+z5|xP7a+_zY?#6A7k~(bu=8Xk8Uvr4*Z(_L-f>l6Si5e6bhptf*kT%#o)D5faSx zfcY#vu?eK#uF6JS=JX~ap9$&>KFwLUCS}#>%63y)=O&HFE#%;DK@u-nWfFD}C4;RM ziSq+CpA6&1i57SoDthQ14On}cV+tXO8+-CTxDr2MUmvaHvc)4IC-L`rMMUr*J#gSB zK@#$nf7Y>Ij$m+lvoXwTC=eOh%l>z~+!ia)qrLOKS+kO*p9HW;MJXC=_z_ z33tBzQ;kff+6i|tM0}0|9k9@KVGvG+-D4%zbO1OsF zX}ET6Z#bb*HE5_9ATwLnrbL0~M3|Exd^nyA26GYw1rl!dGvgVu#uOOT(3nK3YbK~B zjGToGy1nw6yBx3;^~vdEa13%^e!*8s5=6y55J;&-6C*ktr<^cJemp>moVq?E4nRbz z&=w&`Et>-IWD#wpH$c5qw{}g{5gKWCo5#jl<{xS&ctih7-E*8%mc`zo>)F%L^hiz7F)I65x z11B@bu1cti;j*X|(vgTM%bo!`b=L}9qEz|8Fpti_OUP}`s)CfF2wGKSjnIzr# zDj9xHMZDW()saY_4H4{TE8?Kie57M&%9e1a<4^A-?A z`0ohRLxkH9Pr_FO6RZnViXjNI{+9O{GL(h_2XNZz4Q@QH4{%P)4jZbkFC#e3*SNNG zeVU-?tTHUm8d7@YQ`od}Ve&g>rW)c7ziGiShKSoFM?|kKx91yjR-DH9-u1=VcwJnz zXThn{r-bB&@>Mb-)f=s}!KT0AJ?_yIGKPFj@#MG~;~r<`e`tcwv~FvLimZkfV@GlY;z zp5)ZPy=LKFnIZ{aWCZE=8BzeFRytHE*=%phSr!D4h%0bZ-nZZ60RVh_vr=XgXn5(oUtDgLYe{hVa8@0<$r{CL(cgL$^o z_`{dB`Y>H@@$LNck~o9&?Re~+okz@LQTnZO{%$ZMdS*QP@?xv1e~(NN;*Y++_ZM0_ z>){v2vyi-UOe3iH!h|7K0FE6YD0q0@HD(HxxR{?8X?*%*$C@F!93Y+t1y&Z=ZQd7& z2a1D=IIzL9R@tp^#Toggw{AtU#G{`JVk>oy5wlRSm^Q-~yBg~yBq3UtsQtb@T%9cS zVj8YlDhi!EVy07G5>q>chho4jL}a60q(eG{9ik#%THqKCM%-c6+uDJ!lk*IwB)2vh_%>Uy`Y;$$n8EC^VKUk>t6N9tCS!6unc zO3H!`9h>c`v#*@Aj7>370S`}{NyM^~R-%p*1xBzG1Wi*ybVaKr7@IV#I+XP^Zgn^q zJ_OlF6(R`-Md4*OZh!%$VmA;r;fCqjZOCoOZrE~LGWUQtwz=;i7QjkjQiu%94oR$F zKm>6NzYdkl8!jN|Ln(%g3WPKVY=9-tvS@Uupti;WV$)`7Rw7XZFc|cV-oV~)q9P$2 zVd63v!UzrD5+#z77zZ8~0oqC%fSz!$EQXoj?SmGB2MS0)KteH!HiezIkPSelSumtV zlTG6$4P%5rMS_z@f?><8LlQ|95?Bt8nV<{>f=dGcIF&lZQCuPj22#KT2xTr95GhEa z&Ou7QPRlkZz!MX?uKxgu!Xt_jrs}8D)xQ};8)=PTB+W0T5rImiu@1#D;PVrOQ|bdm zBV;KoS;Ao6Xpn2KV$S9~s!9k^P!8OE)<9o+rU5Zr$F%jXQzv}!sD!liGp(aXe{VcXp8th8Sj#CdMD66C?JpUc?3dMYr-laBeBox6<_JK6=M;@vAci{yeLIYc)2@#nLr zl6*ucv`FjIxTDclo#J+QOCG48w9CVFEV;AF1cLS?N1seUB>{7=klyfA01`2PrQ!y> zE?v(g5y@pYK8AP*Y+^-`G30EWWvT~ggg_OVMAeDoW{Jt5CsBS=Ho+WJl6R|)Q6Wdp z?JfrrFb*ypXzt`0BLIj<%~=MIQ>{6UvQQxrPxL$sxrn}CTkx`;SO`aQx3yqXgh8<( zw@udeVn{%T33g2Sw;X%4{VXb3*3T3E2#5=Q#>tWe3HO-0e*n>oR@dXI7aV)eP7m!GCIUyQrs1UdWHSV-5dkH2+_ zu>jMzimaJtcx(Cl@tb&?^*ZupMKk>R`|vu7c zz-xZz-Sg)*Fv?1+)&BrFK>;`sHO$G+?}>0!GX;#w(4W*sclL&rl9KaU>M}?h2xIMg z{{R?iJEqgy6?ByiNf>1<7Jb$W$-C*%o39xiV zzH_iKM5coyd7$-TxOl>->dzJFyxw&X!oj0DIs(ZtR1<_DQlbN(;GKhthvTBVLD%rr0r@b zETtu>Ah_cgbY#+LyW}T=U0@JmNJ1VA(d9* z1z&WwN=k+lW@1bM;gE)V)Yc6}CQwYUYP1Kbj7Wyuak*ZEB6n-CkRc_jj_bZh!GMT4 zcEGu!Gb)kqgieQ)5(JVMh>nps0JL;ngJ<~_@=8EX+z!}jc+@_3A^=97L^_+k4|JtH z8#eHp{;d)h0x6j+-2Ef>M#uK6=4T1w9CTrtejvd@C$ZVYnrPOsEa75 z$Wi)4&fFo)D4kRj(Z9jQ&Cg_I=;=D-_t@qulgKp0KQmqDbARrR;U1p~yPi66CZ~~t z6>`S0csxwW2A)mq(hEhvb|r_>=;Nhm+>r>POG(+KKBK;8!5EoVXJ-4Tm$GD?JLM>7 zFH(tH5^I0Z!irAV&w3lX5N;%hZzxEuumL|OuXw3Q*&-!Gl~XMu6C;tm16`9u5X8|N zi^PZlQJb`f){)}TI5fo|Pz$+o#34}jNsn_tqr%jQR7(TlwgEDJJnz|<;`q~q6PV{P z#GChT>AZ*r*o#TDZPBZ0>|1g-XxX+(ryi4?@Tt10r2J#7vt0c}=LH)=C0GV3AHABlE17jK45XUbmbv19#t! zKb(`d``^~_(dNI{;;?S(zT?hJkiVb%`_>Fq@e%j;@0?)dZ_nRPeA9P2jw5&)f1lUh zeR6*nzfF5(T@UU3V%G_Nc!<|HJpBG}Nw2>={Nu_q&(2HL>UxjAya#0c)+T|y-M&vb zF*6=Jz4&{^9@2VW`+}(yZSl$a!Fw2n*jN4I`@^GcEwE1=d-3Bc;HY}5Ug$Y@tlmjr z`KU2ini)4xAV~#9fIt&Y^lKCWC*uDA+#2KjxsQ#R&wK&T);JX&2} zTeyQVOgDM#18@^38kqrZo*hhH!9KGsUO`k*Qv3;aoITE^-sHr}3$m?V-EKgWw_@sm zD4CV2AGYHHv_=V9a497&fU7U809%-&(je>C35DbydqUK$@ma7UAldQt!)8)?>!+{A zXb7DK+RY?~-rKy~6omyZ$?=jcX?16zVSe%Jh{TwVkaV2y-x$JsN*-nMUP=oj(GU~3 zzZp=B+OML<9!Mi{kf@kdDSdJF`Ni-q-MnJPgtirW%!Y6%lS?&u9ncp2V6D;Fk&_@;=Z zwx$H?tD3BU$`vhMOz3FKa&`F%_E4p@rRm$kRFsdFOqNP1^GRI z(!HK0GH$1$D$ARr)HTi%YX~C+_AGsIl2B)rpWgofrx_%HwskMrIdl*OP#BFPPX;0} z6cXB?7+I%ig$nMOns=jp5#5+B;>7a|?}X`V;LQjWr3)}_ghM5`&F+Hh(`(ooZ$&t6 zk?b#1GtT|*BGOy&V@<=!y-j0M?ou~ZZLraAL6Z=kZ+v>U`R**?QuABvk37TQ0NzG0 zmYVBqclZWsdrae z2zQdE<|>jTJbIC4*_DYQxeY!Uxx{sle6cH zM1x>-RxZ*Tr(Eu!`LTwg=_ai=%s@u+np*Fk9`2jR?F>07p-h*NK1{IS4a3=d$U6CO zL{bQ#C(Bz8sR^t|0ED9S11g|UfB_icigm&e)6>(oq0R=q0)|Xs2rXVqNhZ@En$i-` z))Fio`2~5_j}w|IXr_cs-n{pP%U<`)bA_NMkNN52Bo)``+;@LCH{8eD`_?9IdVN0l z%ZF^onCsJ%oO0l&5i!m6f^$#DukrnlymQV^L<)LO?A7|@6AE() z>|TJ>+tfk~YHFgszKGIwfBmNk;OY6kuzSt-ub%vqioEfn!eGu&M`KrYdiwv_wZ|2svOz0?~qr5K|f@b1V($oLEEQ5>RWs5(yi~ zoX--5(kpOp+M&Xj>t;iyqMaw>8JDT5de%n<7O!}T;KvN>VfXWq2o!XeG5qfUF9Zj2 zZ_?*^5k!T3J+xwnB$Y8G@7DwdWl{?dY;XF(N;`-buNY!X>U_bsuh*?$QHIo&rzf-d z=Hn|FSvaV0~jhDta+U!P12nqB`%NYWlDY%5?AzHj@m4zrw#8Cv2dUj#AA{#~?A#0-m)xc6$4iZ+QzIV;yI-6`i2!C-#80d;B3D9$+TY1VAj{*;h@iV+&tV*-M z^ttuxEP&Wa6BEqrc;^y$qDkW-l$@RZiGi}Ve0d%9kdf8{lJt-`ll6q$WVvPjPMif1 zO-^81I7%P(X2u@y35<-yIB2NSm{mzVkL+WZ@rky`z90miZ;O;*Uwdbv4H3SJ0n4+}+?P z6gEAr4an)zNWla&kit4fm%4V3j5j{n>`cK5c2K$GF+}K~RjkStFHmySVa!Vg-a%ZX z-JBa2FF&a)2w_Whm6c8^LA7@DGjMS>_k!HQMcB@-nDw~lbu+Y4f{AYBjp{>Ou^5s? zs$y=Nz5z83g2S{W^Z3~grSNlAEKuXdpka5tY8gJ8)Cu)yz7iM4049l?NKF?p*2v&N zAhgKpLR-AS*Lms+f9|z)?v4y1fglFOs;fz2MuQ3C$L!-={DRAcqDdb>=Ba8)OBk}I z(u!a#dNx2NQx^uM0z{K6TSbmcieCsEEFd;lpAn;WN~KzQe>jPa-`~7=&wudOSlf?3 zddPP>X#IKbB1Bwx@A%3$>-6shW4ZIM#uxd0a;(<5oA<--UsEHjN8jUr-fD~c_9GhV ze;Th>@0{Rzr2aa|O6~f7ape5oTB`M$L8$M2$DFIb+YzL?5zA@piHuc7R2PjNpKlUS zB8!b)yiE4>ijDmR5*tn#-|>Mm>blrD=_zHLdJI80S!;U4L34yG$%Fgn@56>@GwtpF z05mQOA+B}v_sx-%4!aUPD(9K@s4y^ce6{kv&L^CJyQ}Yhm)E6aFe}|7Y}w=YNf#is z4+k9iwBG0?Ad>_c13is-cN+D}#@B}|N=>F%NqlxnP+2TgC73Ch8nB#1fEQ&@7pVKz z7pP9q*hYpgyN@ z_IScbl&7A0n)}pZH*IPeHdf{D`^k`!mV8g=-_EiXL>PY~Cm-G`=ms@jzn^U8$U@Vf zJk2vQ^P&YcRI%(BiMJ(*eL%YU4qb6|j+HD#O9Xtwdl!W2UYeYs$-~u&-~pV$r0r5n zhafHxh9uOo)hM`L*k*3-&6Mc7CAy;oA*7iA>Fz*nS2#lWPC!5eD0~b}1Y0Gdjuf@# zt2n93J6-{3Kp0tJ+)@OE=q#kc-JBg03!n%PiLhYz&2SiYbINW?PNJA_`fdc$aR6EY zFLi=?_{BiGIo~-jymyUpxECumy}QV1lo*9%1ilxj>N4|U4q;gv(kYv_+BDP=+H4mf zjzZLBqR?NW^tKT;sS>aRD|STgbjfkXSRBB}(n$y=j82KmCSo#*kas4SP)RV!l_8ZN zl#r*^J#fmCN1wt=e78EE5azK-Lt>Q^xhIa;paC;FVdOcrB6UOrU}h zN_*%${2FJM;gVGd{P^|6TS~JqJ~?;RUSvMYq2E2njDT}Tmm8yf<(JJj_;LNN6Pi0I z4_dEYxXDSy-BokLlYfjV&r65oJj{3PEg&NmqKkuZ?}Q6xNI>cSo%zD0TLQY)wb$9L zDUjSf3=1_L@@P{KGu=WR2`);@f7G1NG*C3(>b?p(dyzfIBzPYs4D5pd#{K2Dcy4JA zwnPLxsSd^m1vE~|4BBbRlZ*wbqkp;C9QNeeJpr->!5XRl*$hB$TR4dPIOUS)A{jvk zk5Fno=7H#yGfvc;ew*|zMoqj&9do;#H&adNs=24dqIa(t)0WW~YVA8J^jvNW=_)%$ zJxjWQ16d-~x#CkJLL_$X$xXJ9W+D}yk-_dDQpdAK(%|Ub!%OH{he{i5w`gcMK?e0G z;Z+e4qk^2X=pn#V6~Lp|>aCAR3&e?07z^gWK zG2F~5bW~S%%&$rdIP1m%6^arNH_`O=%BdAfn&gp4AsY@bGL)DIjY-M~SgXk-2xfi% z01#S$j6_Cqhd~a-6XO{MJ1f^qzL=Mo?*$6rjF0WufC?SfWMHhq&< zykw6no;-SCH2I&^ckz>Me-r#4eB^{%?5~eQW#g>ZFw(|5e$S6lNn&c$eI*irZJ}wq2t8s_{rk#V3PR*wbM?KjI=P*pB9=`c={wAskw2oM9b zn(DZEjvE>HUAq~vc(t8cHaR|zICTMtzb|RT>|>%?_#CXgM+{Dl0&n|Eyx>4_4aV=ydT$;zG_EhqCoKWP` z%U>u+`xrNXBgfix_O+0jhLZ@;98B@^te*Q|5omCapc=@&LBzU8ZxYSbVknbC0aV3_ z9Za{mR3)KsV{=F~seGZUR5DuEas*QoZ4)W}NN5=-QyL4lE}}Ig(%S@>;@K^Zg8nlI z2JrI~1(e_k0}-}NqY5>er5h9L`X#lJNIV323Oe(ffT}}tAa?_%@-~PhPQ$qdqhZDZ z5=z)mM5wc$*>i+(LJ2_X3R*m>pfSnO1cUg5$w}WhQiCmQPoBwgG+fRM8COX>FfGqL znZW|G7MvKQo1f&wVd@bDknBq~T1^rq#3dt^2TSUhsWp584KJExcIk|1tb`Z9qA$7c zhbDbiL5e;eesZ%(MIuZ}IC=E34G>-(0<;~6eC50tzSEA#Y(E%SNNs?{A;&j5W6n;g z1Way-h(DLEv7>;AhF%bVU}OPEW?j8s9DHjcAqFX9(yPzsjD#bBH7L}evR}n>lb1jf zemLN^%zD?i^mLL(= zW!$&;$UZ67%@)$xDvMwYj1&qXX1Ih6nEDeiMXZEECW%_Za;PPVxrc%^H7Y>4Aq=hs zImt4@YFlyIC7zQ|wxb6qnT&Ai0mwbaYV&;fVm^te`LTLit0spS;`~fJX_@~3nCEVZ zvqyGvE}mj16>e7t4&9XR!_Re*$oliI4%ysIySBQqPy65b4_T1!-aFE7tuK14WOz?Z z0#KqEbljH43JIydKnaO%V{AAe3{WPCvxJEgeizUed*=ENt7H#d7_**YPau7H zD^oCf(?0Q9giXQgId3A!49WZmi2kx7BSJH@UbuMkX_H4M%2Mn5wr1w34M6>nX@wL+spk@fA|wJREITRd4IBq62ogciw(8IOr1+ut@k)pL@8@V@x`b(06h{Qm&6l-|BStp5NWo?h@OXQ5ngIdkf@u=$%td)?}kJXKv+>A330Eh}O$E->iJ*=4!rY@5WKC-+cMSXNl0}>SiNT zBwxZOrO`f9V$Enx(}^vs2bABIqsg|8WnlLa$s1>J)y?wGLQJ=IRLwQ0Hxn7kjcp{! zT@z`Sz;GYn1k^~hgaJoTWy>UJ5=bJ!5PEL{gjg~7T{+^wgx4OwIinP%Ly7zSX30Yp z$Bw=?i_JKAfc8%@{{S&qMG|Z6LH__NW*68KZgs(}jIspwhJ7v~J5@`Y^+hi6I0QVRa1ro2UtvmejhJu{> zRO`RH%Ak$TurtD44SNVL!NhyVLaT7DId{E{DP9amcf;r!*M==G; z&j-7z-z3Sh!!{u9Btp_1LotIyPYJA~Pkd6qM_5RV;T%;h> zQb)jk<(^5cSdO6g;PYw4?$};YMMW%}3|2`gqqa!tWWAUI{{Ub*htq*QCCK4Z-=mlB zz2umQjtg_He8opN(2^bz_v?>FZHG45+}L}j2|B>2r!anZ`uD{82|dd2>m=FeOguv8 z#bNSClOXz|`Q6r4M_~{*W;y(N<5@B+i7_A=ZFGm3VQB3IIv&8Q!emEcq&7{2shW?b zG-l{ypmLGK!zVZ+f;*ZlJDHh13BWjpAsH3cqhqMvTI0#zC!$X?4^jIOXR7elwIYAD#7gTzL#;Z~m)ms&SE6Gtw|P;dgJ zEvE+ENx})ZRNE**;vK+pyH3Pp^$8K{b)1lqz?({^$@Xxm6%!Ik*Ptf7UV&*gY@`oa9%;40xv({*XNva^&{-d?DN)MqrHAU$6I#V2Ly7B zdmoS5o+j9zSP{J{!xGC9Rteyku0*y(xrr;)b9{?LZ4p~nnIu@&0ztM^D`U^WW!Os~ z2n%ho7eK0#3nH+lyATYsQCABS`RfD%Zg2BDEPLv(fZ0MvU%3A8jtAvFIKxMn9V8D& z?()1@i(XmZpW{2pBZ!{-(EF;ZhOcql$@ImSE&FYJ{{Y@Mgr~LxeH`*h=jS{KP}gv^ zf)j6%0qz?4{tU2p%6PrCQ~Y3~hqLbw*(w8fAh2KX^~4cDc@jOjBbv%bB&;l&81KEA zMC^!JCII^wA~i`g1&@QdD8WYEs%8RfsQ~I(h?zvhQeE3<^>L$|tRCAbn1(6l5?Pc? z@9AYclb&NJrZaCjsWhkqfP{3W?%C$3AE7@#3kqA==-k`;nhTqMJt{ zshR%bM9>lFO$`$Bo=_SPezx^~*J3gnl5SaOXq;$3s8>uZlz4}cK_oWXvcn#1XO8?9 zm33ILHhV8o33HqPGu9b~0oe%+o^xCUnFe9FpZN9cTMkDk{@yTXAU5c| zo}WH*eCRbgK9Tlu#w9yjM+7iL^$W=NB-@$8)};BH-U+aR^nNgS$*ZU&UqosVm1B^_ zyyVc4(09s+1gI#I=uHA8fq<_yD4!S?kWT5`dZ%7??-F%2%|voV#7yt067h?YCKqxs z%HxK1OEe7L2A>wOd~nL_|%%-0OORR6g zUM3&Qwz%PpQHn>4y1mg`xH{U6hPJrpo?eYBCTl|e_a_q`0rA?<5*gXiXRn@c11s|G z6yGwFJjLo{Q%Wb6x5{j#C)biEA`a3(_!2pk?r|;%9 z=j`Rf>2ApH$Lj%UWxKB4Rnefm5LgnB!IQm7I9oK|wm||^65}bB zYtYwVcoG+`Hq;5xqIOHFMxi>@~kh-bkZs6Yq6<@>nlSjL``i zo*IXunUi(l7}8oxg^B3|F5wwNl2NCDU+S=_^jwGskZCrJv$m&OpAQIQ2ZDv#5!sO| zLuPM8Xtj~1aE2mj?Un5 zgBFB?$|vVI^rcB%ni95+1o1FjmMw z*d!WA?(Y)?YS>1_7w`1Mrj00gLm+y_v1kDBmL?zEn#6d`66;B?4^vp8C`ehLbQRx> zVF{mF7tj)YH0vkZVBQDAksa|E&J>uJ$gJXn7sPG4G?H)xlnq@5SHRo@LVp3wQtMNS z0yX#|MR45HalK?fp01YFE`D#*2;ri*S`(2iAtw3B0+l6@MV$%1yLoX!Q;no1`QrTJ zipJX5WHX(toIvjtC5L2=i0z3&H}gu9FtgDo<=i*jfCkGBN?${NJH*75eQ~tA{{XtQ zVblT7vb}54F_2|=iHPynQR_R&msfSZ_s2i1Akv~nCYiNM`D& z69jG!61jS(uDcI*cYsw$P}?PLC&pc?-T#^xy8zcEeT#xTv?__vWU?yW-4EzTSNlQS) zh&g2YNNnpU6)2PDE|hp6JuOT@wqTdO9ubXLig6`?&oWuZ=`>+x5EM@$`+G0gFDeLp zHzblfimx-yFeiSp6ptu~`9`eAclY6w0y_ln@rZj>P#Q@Bc_|4Oi4Go8F_x5@)v1e^ zNX>G19i>ii<>k&5+#ADoM2UIs5!0MVt&igQ%^bDu{$)?&`}XkX=kK-u0J+*DkN3~# zKZ(N3_3^H8AG71H`_@RY(Y<@*8c#J|GLGBqX^5YG^3T7&v-!iX-|OEl-)QmotV}&Y z@q_$4{rqpwbsqP}*ucB>*TEU3Yn)HVym-oNNLyiD4y0m6uzR_{7cUbyIT!RuHI~D8 zT^cgLhs_Vb5Tlo>$==l%a&#^HwJu1xTmhj0lVgOJm_4V@UYF}cGE<#9vUT>?_RUS`j~V95}*}bJCS#H5jkqf>IrqZ;f?pn zu&p^bJ$;`p2xToaZJ=znPrmp#W2Bb5pUx74Wt$Il$w!4P=F2t!&X@8&$=0@)~l zdf@R+6u4Q$Qe!icl+1UGb6wNwf^YAfmKO^XI+kQG>NoYxOu z(XoSvqvpN6@=?lGNOU(rZRuDND>crCS8Q?1l%Y_-WhAOuH0{ds}B z?X^+Sx)PiHLPO@Lj};KS2D>Uk`E#NZ$O#H-np11?@zVojbT3fkm_*ST@Xi zZtozVCJw|jB#7b%?*v&U+T&q%Q#~n}Fkr^9H z1G9U4teMtmAY5kV097zdJK- znd6yy8cw$w%fvE88j0TaPqp=zgg%duX3xp*ky1Sm=W*-mZxj-m^_IV|_cD4eWW)gn z+m82z&uG57XMVnyyolF|8pH{CEi$?oM1V7r!$XOUVW^S|X*Xm8Kh{|Nsa?v(&sRY) z6mXFQg&o(dLB|Nf$H6Q!KI%=zxCS?(cqCT%^GdTG_}MiT!6liVtbO6{ z%=E!f!d8gq*NL&1@Lo=ib$42ldey=5flqxBS=1~<)fPjP3L@TofKMF9nJ#d)OigMa z@XK$x+Vk$<75U^WjzEKc~?lRDT`|qsFqygtDlVHlz z>zS;Zl!{Ei2oN*mI@=i%U9%S=)jOTEQ4Wz2uGJfYB6SB$mFt0`Z)X!8Hh08mOia|W zk#aVLrru96kb)z1at}4QpG*sjP|edG0wKCQC?MX)Euwn|N_ESTL>U(G-N+IXrbO)# zqUeG?{ryYJIF)nQ9_BJqh97f_M=M}oYJ9Aa~WL@To9!ej}|Qv4n$_l$EK8v4J;=T zRXCDV2sX;97y<0WikEY*e~$5DM{#F0`JJU47@0UBhTE~OluaIc%R#MEq9exN3(stk z^ptMFYb9_Y^^+1MBt*b`){SVEgg~T2WRX(b_KUHD)WIZD=tvbc6J7aGF(x!$V}rfF zRB6MxLD4Gp-0uKIsIHy2zrJu1R3n@%WYm>E^B1{=2Iki|RYGu~Zt!4vw*bKcVzhqb z`GA>go!1#PFo1h5zYyudQXv43<6tLmM;I_&uo1b4r&gTv2x6p_NGO;{ zhn+4WaXB-mYzIFZzb0K^r)(2ch@>ds7=&3-(UiN63UuR zz_Ae*iZM|z2ny)XQ`S+VL}KBzHy}7rgP2G(wMHAGd+eM{P#(hMm+6y|5YakvLdEFz z;mO57r=yph)tzG?E(#HEp}3D1c+DtLmaez1vJeEe$W)}86s~a~HO!@A8(Mwi1BA$l zt3fHf%QN}Koq5E+Cc8tn3R)>85qkvL39N z*&ucSMa3>|!+3SRjp)q{346<_8Ye`o5Ndkk6^l&9Bal&QvO1%|Py>PyE0LNZ=93iI zgiWD3Wd(DFT9>7e-S)X+ffPX@B$;IO`WmrJ^9}O$J?r=tG0Ixw<9_{jl0wk3W8=T$ z4Uiy0MUG%_&`sJReg6PQwgm#qWzA){NV^PN8^wYpffF=~if~OOrzfWCoK6KHhMK&E zHMz=6wh=iZh1}W{(Kww53|}^p`TlT{Q)QcP^rYEwQe+mz#J|4y7H`cs*05>q+tR1w zoL?ZVO;-ems3PhaW@x8xi|sdmIC7er=}Yx_tLuy+0*ln#^~A*7`e2h+B&H!D{kfX& zv14MD-?8bZuZ&Ru(tVd{zmmvz8xEpr2nF#9`fbG#C>^49nNl?0F=mA#P!;xXV8~Ky zfXJ}1OYAe@XCgW<2t)izCJ7XZ znVq@KObujVDqD6LTFk zT|OlWodRJ!nLLoB5=Oj{rwmOy2(3I?AXV80vEV;N7NJ!XWhCQ)0ALL{#8}M0c&U=n zJdQpR30c?Sx$6Ng<{x``slGB!(w};n4;t!PBRT3KI_Qalw#*#ovLNuWIa&Gcu4~3fx^L1OrpxTqhzPrdk5>rd4 zn@%#hBs)xX(x{-2oSM5eszlNvG|VU?9i(i*U>AUrcwCqOpbXy82eLhwFjWACv{%H> zu1pdZW>U3MZi8m>;0>8*L11G?RxZ?Ti;GN5=GEdXN;F2ILGgv98wk5btVO*Sgt62W zh9fjTF2q6;X9&5>w;HB zbpg>8d?^^CX$Hq-m%9z-JvRd%jlt4XzYrdav`wWadoTy ziB7qP9W$J!P*mS0YY3ZCvSc7BvYJ}b4m+HLguDY3!qGycz%uBEiws|L&=_+?g&`93 zK_rRD0rHUH{OyLIxyhlt-eFyA*Wkf1lQR&?Z3s>SuBb{a&|Fj7 z67eMDi_{&JQJN3n_W8$v=D4G{{&JNv@#CyCbw7vCtbH()NVgqB{NQLS>4BsD)>1Z} zv%~lA_nS4^hSlB|q!L|oLiA^AJzwr^#Aw~AmyDt^<|?rq%GclCYe*Vdj!YSMI{*8Bee zu2~WuMck7F7tH|xT*yKtq(qn{O4GPTU6)9Jv&kv+E8m!7Bxa^iwWwwu$*716-b)li zL_ypPH_#3G5RA-^SQ;&$eggzs%0{rtc1>RJ1bQUP9%&<(=Q&(T=m4r}S@dA?x0n@UAf2z#CFT# zvK~By7$(+(3hZEq%<{&CV^!=-nk@lV;^c%Rm)o&P7FM~zH{Pc{C9qA+M9|O^a1c64 zozTOR3wK4VCOS)@4jz=6bD5N##2cm~#0X9~kt624vY}k|OIBqO@NgbI>i3x|x`z(J zKr+Zs15hHffwsaihj2F5J#x=kvFZ`y@0qMEIu1tST2XJbVKa#KWPu@clUbr%xe2X< zWF>uUxmHr#HZIB1zsEVsYIIK|3e*m|#esm zY-;moLWwYJ-L%u{7>Yp!OaiULaF~>wHZ>BF8WYovB|5vq)Fxl97a@y zy;92Vd^nQSFiKUT;~$&0LQVlSq>9mmp@J~e!`hNL)ryKbW@Mw$Lu8UsoDcU%y65Q( z2O(GG5m))EtgvyBRF9*T%Gd-Gb7@Z=qXH5jBUZc0ys&X1RRoY|i^Uj}DH66ACZck) zmeyJ9E|Nf!@Ii*9MMJ`sJtkNIB>6N1I1*?RGm|6qL9LRbJqB>~OqiAtdx*L*5F;pZ zE8h^aSQ9wtMMah}StG6EEfhO4tVyS1rewXcxQKuY%fEbQa9f)lAYCM#nFL7eFd(46 z0cZ)HILsN?s zNUNSP{v|J?g_PsEt^!o9BY;s z#0$S7*tvlkNuDYdoKW_>&_p|ZTXdtDOWlWQjX;{=CsKZFxrB1T;_I;{q z&iZHGJwGK!J?NLgaAB~iS}Rl2(lipzTwY6I#mgKg@@CF3T(Y85D&josNGS`aEdr^3 zSil4n$dHB1i<>`2h#cGmggIL!mfZX0hmW&$ji>g|>2ls#1nXR$C~y5($$6zm)~$ zh^mY?5q>>+$dJB#;49ZWFI?|Do=;aGI=`GK*v0(uo>K$5ss8|&J3IHBgMN+V(^bE} zdB9C}`pbzHJ6?Vtd>iWH%}@L7iX!_x4=0}g0NfBsZmz$6**(Yg_xa1)JXdC1^?$#; zWLrmE6aD`HJ~C8A!yya=ik?SlauN)Zh=NiTD0QNv57uS`g5qDP2s;EODP|||f=Q(2 z9E(nHh)r-D3vgUB%RII0j}_$n)H#jEGba?I*PYHR9lXucXHl+C1g&83S;s>yx3|NO zV$GnJ3A75tm;6T~7O8@Hk47Nd9bi>W)3(^8ZV>R-1_E>@&?#e9Cs8lu5dQ#(?|;XF zu~5L4xr47?I0!7&&_5sYGNzV0&6Qa0fZ>JS-4i0-3LxLMYkSMD3?Ehw6fKuR!4GTx zmMm2yJWm(ivZ<9)r(53|%gR?{ZN=2_|4eQ;EHX#Tl9%dyUTy33sv!N#oA|3A`f&P2+z+8z*elxcs9-Wn6B&1Zz3!C5wz^ zQ|31{IS`cCyQqA`!bhrifCCQUv>c=r#9jG(t}1|_dn}rGh;WnwJ!l#wFq8SsauT}H z-~Rf^C4*)tllwkA#7M-ORfMMcZK%r{021aTRYSK4k^v&5AJZ-#w-ZR z<2c+KqoHL%K?eDg9y>&ClmHEpJ($#?<`iv0RJRoB0x2ae0KsNQc!GiMNK6%p2#E9E zR1)Gr2Zql-#w;4_%ne%0G$#s|MZ-fQ4V0hRfXNNu>XEw-%;uCB&{o?SjJq3L8w%dZ zFtcK}9GM#71RN-eb1+w6RJRDZ+j8?_JO2O*dbGA| zs~4mpznx@5R7Ng3z>7CMUz8zjCSCE^liuz&7D{{3Vw3t0N%4(6_YR2u6SrkmU|ebg zWQSA~`RrF@lGY!}|5!XpO1#E&io4*N`?)FCysuEKs1YB@#3Fu}z zNERX1`b%efDy9owGBiXiA$JwmVqW~Q_)x5pg!1(~n=`e92`OW{56P&QsD=pwkacsy zVl4I-B?1SkH|`BX@#6z_>{17tYAA;Mu%%Q9kSG*ql42CELnWpI7f%3T5DHep<;hGg zz!jXmWD$QA$#U20-v3`TTgulUR7Sj7!V5YH$leSacobI2?q% zI8cCDkaW~REIRK6YafAoG68I5iQZDkVFGV`K|JT>zUUXC1O{&Ag{k~`Fo9q3L?^!OsYpmVOdi{^<;|@vJ>y3TZvaBEX{`ZJOy<@oD z(e%Pkym_oQH~ltjC=mKsP{Q>fkA!s{{VjLASLxmOZVdx zp1@FOighE$?j!P|5NSoPZq+90mi~gv~=gzXVvRAIU=jT zZ=d8G5mAD6=8`Kk!2EjBV5KBBGXT~ju(`t zBx|>!BKarNiq=j-T=sy)gv3Ftm7yN@x;{iOgXCLLN{@tzaMbqZ?A-RUe^KmgVXabpR-x_}%0L=i5xR z>^}8azIh?CoQ_B142aS}+Y>HJ5LFdmfgcf3BHY9evFu=xvlGOLsqnRZ4h zHHWJzSkNtGveN$md8phHmL>>`uqVPs zn#c?QT9V<`UPd%hVF0H}8{2p=E=d5}(JTSHC00|SU=#{LQc-vtV@73Xv=uWIkWU0- z>et^C$wOLiw!JoMt`0%yMlooyBnr8ht4#L?g^Qja5oEnySddj5e;CS1Ajd<~x3BLS zMT%e#Ql=*7&!#WXWs(D=nX0?qOEeglE+M8xHQp+9C`7gsL#NNh{K3AWJ0{wOuTzTD zh=?jS&>)%PApt-{3b?xstDIxaqWB}PZJRM<0mx|^JkRli{%|1>6XVIoBr6NUBT5Ej zhYd)p5(>MJP*LTBqKwT+WOunbNW45Jy~86;i}TGyq1; z&l?D?cuz(siPg!jhg2?75!xgjL?nb{70AGl^2xohZSI!rBVa#6S*l1WkRneTNO7^G z#jr#pt+^e~tK7~>Glcmp2awY>JG@Zf$D`3V7P#2^VXAv02FZ50>0QDHDDp@VPz1>| zqZ=DJH`$29ViRY0Tmb-aK#srILqSgKjY*b-i3%)HyH@>s&Cf^6IIO(>ukZJRo_^1d z-WT_-Cn8o2L-+a4hwr6);YS4V*?=J(K6Ur{&R&H6zwQA3_xIZ97@PD~<$G1`QIPQI)zk4|DtBJeC55!|{V}6mR*I7CK1Q>a$ zj^Nej0y;)=7RQdJSa9x-Iz<(-Ws|%mQWbE)jv%J^H;`{gUY2vOc=$PL5LY}$kLQ@@ zq?wrXSH;6j)X(*rLWgCRpbgA*Q@c!vhZ4!bDH>2(S@~h50WGg3q+W)Tx1j)pgV1oW z@*C)~BLHQA-e3;+X6Pea#t&h==WH?LB-1lwg)Su zky14@(9B_rC=_7=#~?mntW8@fjSoUI^sQkz@?tlVP0v@oWWd<~(OOOj_QIARlOkxz zmuF;Ljs(sitlwfpq^O@7=e~`6RFZ1e_2Mr&eHQ< ze~g-CfCNCKl**!>=I}v_&%twR)RUJvcFa~T@)K$VNQF-!9`%u^NJk+H(=A!SoFr5!k^#_0W-feV zpfyJ;4vc;n8f*x}^-<>}i+fX>n4tGKPA)_gX1Yf@)>>7Y0qZ1t&#p*Fk^&9I&2DcB zM9sQQOtF8j7^)sZsFT4nnoq_NSUH<$0?-d6>JHxh1sDXZtvUoiSV1LAl6I5_NG#bH zX=xqS`m-$)q+x+5+|WTa5cq2#ECJZnd23Umu#bAsRSK~POp^TM3Y?KZ4vKDDC1Yk0 zBNQq~`6JF2h};nW0N>ne##sUh%Go1Y=A42Fye6-^zsWw-+xL(r4<9Ulafp@_rsfYF z;Via9qDke$#9#A{grQ$6*{SjAjl3mS5e4X6qjUrP})|m*#22`hn9g@R0K5`9hqKT+< zn`FTpV?0^3nDgo7jwV+rS!o4_hmUh067&}zz97e-SSt^cT6Zr)@vbQ|jK8h%b*i3x zMm8+Xy}F*yHSnPxZC%$tD?I*iVq|-CaJbypSDGK30*XmYnhfdrD1|F zXn_kceBV-bxao*PFeQuF`YwRp9JZJu%tVkj#ytNpV zwhgqkz|hQy1c(u1Z=9Wtqg;LW#Y1kjuV1|5b6($THTmBc_tzM&9-8~dSkvA4_`}}( z{qcmJIrhW(O?+hi`^I$d?(*uUXU9JFd^s}|t^L-1599CGA-_-G##$X(OTYP==4p@S zK5_8X(-ZwxeIY~9jw>S5nb;Wd`BsTlZ-|-klz`=Xy`}C#{9d*Yrl25Gi!H&U; z3MB1uy;Sz|3H2<}it#aI?siL7R!bg{ZJ!dM^B7W*G*_lb*b?$QARv&*BueIFp8o*7 zkWh#x#cu>yfd&&&RW&?m%BQNcKu;oGGzc_0FQe^X0;n)Nk6WDBR7;ArLf?5?5R!T(E{0VvriGBt(!{Z5KBnE+oG>O*Nynr@afHk>e z_`nhYAd128dgU=?5f%cHba^f>5CFl-Ac@5KO5Q0uBC=3KeLcC}1j+1?Q;{>>druf- zYO<`ZdqhtC@Dp3B%s?n?XuQB+FdUW&(X!K?Its}lQh{hf*HV1=GvW%9r%xOe52Pue zTm_cIj~b3}l;_G2hAKB!Mpc2$X68!=qmD4p(3hF%9vl(IUJ$o2pD01^9_9ph1G8Vq9*AA%rj#MBcv!`Mi!qrl`qCux-S<<27n5i1vCKMzXDR-nv-z=cQatWXEErT)KJtlkzpkEaw~ zfV`V0Lsao3;=sbZRg+bSW=&PKRWx)LVT(gu#?D!zBiDe+8+UkP+zH& z(V2Ex_EG<3O7QT z7A?2%#MzLsHJVPKT@@5iAI;^-7*qB0)0A__9!IBR<^}T- zKbO_B?y=Rs_J4UU_5Jzrl>Orl&_45yn!5bo-C%!P)gO7tde*<*GI>6*exHBdb_u>U z^O`K|{MXJxJL~7{V^1ynb05|`qIVbR^5P?3_xX&8=jZE!NuM8Izl>3eB^my!WL^IN zOi-YzP}9tWM>Uc)O4W%Y2=F_|kSw9l^8tsVFBl4-m@-4jGu&NaF3Bk4x#wS>IWuE# za++iJ`g(JuTsnSw^|0>~xC6WY0J|NYkVLB4BjAjwq;sd7DPi66^Se% zd`JwZ3C^2@tdDYdkRx#LQ5_QCzB?vc5`HSU_rn1(#qAyayoPKgQb{z-qA^n8cNj|)Q6)SPQgB(nF`qpjLnL@O+tXf7TW8Usl?`j|`>hY)E|fGGtR z>O^%Cj3CD}m1+~c(WsM^+8bjN1bs2G$0=W?v$bk#SuZ#S}V9CuoDsZzSzPy)!5MEf9FjHVE##+7^*TS~yL`j<^ z%~XSUdA4~_h}_Oh*kgEadV$AS-1L%Zcy9jpmuhb+g^V`&!t6xp3WU^JsY917N#z1s zW&}Hz1AvjYFl+#mf)XCGbBa|? zq=d?6CBY3T88?9_GF#W^bJ^T456lB&W)Jd5nId5O~6ZPK4VUU#s+)Eg+E=xG{<*tWnj1>OuV5 zjVGD0$HD=vCpfAla?ed=OdGC*1iqUGp>BC%jf3nEHguyJ%~ z*7tQ7@iNq!mFi%8BFXH&)VZoAqLbp(mg=% zi?;V!%DRaQad8i{d5FPtmMHB|W1%nwcjW4%#)%5IsC3_H&AOm_C5tCoHM&Z|nc0pv zsy6GkP_leu~@@w_}6YExL}cmK+