From b7c0594ab73a51a872806c33b7848fa2a87ecdcf Mon Sep 17 00:00:00 2001 From: Florian Date: Thu, 21 Oct 2021 23:28:58 +0200 Subject: [PATCH 001/225] FIX ISSUE DB_ERROR_SYNTAX-#18921 --- htdocs/ticket/list.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/ticket/list.php b/htdocs/ticket/list.php index 6991516ede8..0d0e97336cd 100644 --- a/htdocs/ticket/list.php +++ b/htdocs/ticket/list.php @@ -391,7 +391,7 @@ foreach ($search as $key => $val) { continue; } $mode_search = (($object->isInt($object->fields[$key]) || $object->isFloat($object->fields[$key])) ? 1 : 0); - if ($search[$key] != '') { + if ($search[$key] != '' && !empty($val)) { $sql .= natural_search($key, $search[$key], $mode_search); } } @@ -609,9 +609,9 @@ if ($limit > 0 && $limit != $conf->liste_limit) { $param .= '&limit='.urlencode($limit); } foreach ($search as $key => $val) { - if (is_array($search[$key]) && count($search[$key])) { - foreach ($search[$key] as $skey) { - $param .= '&search_'.$key.'[]='.urlencode($skey); + if (is_array($val) && count($val)) { + foreach ($val as $skey) { + $param .= (!empty($val)) ? '&search_'.$key.'[]='.urlencode($skey) : ""; } } else { $param .= '&search_'.$key.'='.urlencode($search[$key]); From 763cb29c0c3a845d48ec8fa3b794d5b3926f6ac6 Mon Sep 17 00:00:00 2001 From: Florian Date: Sun, 24 Oct 2021 00:26:28 +0200 Subject: [PATCH 002/225] Check that the value is not an array --- htdocs/ticket/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/ticket/list.php b/htdocs/ticket/list.php index 0d0e97336cd..4caffd173c3 100644 --- a/htdocs/ticket/list.php +++ b/htdocs/ticket/list.php @@ -391,7 +391,7 @@ foreach ($search as $key => $val) { continue; } $mode_search = (($object->isInt($object->fields[$key]) || $object->isFloat($object->fields[$key])) ? 1 : 0); - if ($search[$key] != '' && !empty($val)) { + if ($search[$key] != '' && !is_array($val)) { $sql .= natural_search($key, $search[$key], $mode_search); } } From dc3bfcfb87e90aa6a2f3e1a937ed8bd494e1b62d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Mon, 22 Nov 2021 19:57:26 +0100 Subject: [PATCH 003/225] can modify tooltip by reference --- htdocs/bom/class/bom.class.php | 4 ++-- htdocs/bookmarks/class/bookmark.class.php | 2 +- htdocs/categories/class/categorie.class.php | 12 +++++++++++- htdocs/comm/action/class/actioncomm.class.php | 2 +- htdocs/comm/mailing/class/mailing.class.php | 2 +- htdocs/comm/propal/class/propal.class.php | 12 +++++++++++- htdocs/commande/class/commande.class.php | 12 +++++++++++- htdocs/compta/bank/class/paymentvarious.class.php | 2 +- .../compta/cashcontrol/class/cashcontrol.class.php | 2 +- htdocs/compta/facture/class/facture.class.php | 2 +- .../prelevement/class/bonprelevement.class.php | 2 +- htdocs/contact/class/contact.class.php | 2 +- htdocs/contrat/class/contrat.class.php | 2 +- htdocs/delivery/class/delivery.class.php | 12 +++++++++++- htdocs/don/class/don.class.php | 12 +++++++++++- htdocs/don/class/paymentdonation.class.php | 11 ++++++++++- htdocs/ecm/class/ecmdirectory.class.php | 11 ++++++++++- htdocs/ecm/class/ecmfiles.class.php | 12 +++++++++++- .../emailcollector/class/emailcollector.class.php | 2 +- .../class/emailcollectoraction.class.php | 2 +- .../class/emailcollectorfilter.class.php | 2 +- .../class/conferenceorbooth.class.php | 2 +- .../class/conferenceorboothattendee.class.php | 2 +- htdocs/expedition/class/expedition.class.php | 13 +++++++++++-- htdocs/expensereport/class/expensereport.class.php | 11 ++++++++++- .../class/paymentexpensereport.class.php | 12 ++++++++++-- htdocs/fichinter/class/fichinter.class.php | 2 +- htdocs/fourn/class/fournisseur.commande.class.php | 11 ++++++++++- htdocs/fourn/class/fournisseur.facture.class.php | 11 ++++++++++- htdocs/fourn/class/fournisseur.product.class.php | 11 ++++++++++- htdocs/fourn/class/paiementfourn.class.php | 11 ++++++++++- htdocs/holiday/class/holiday.class.php | 11 ++++++++++- htdocs/hrm/class/establishment.class.php | 2 +- htdocs/hrm/class/evaluation.class.php | 2 +- htdocs/hrm/class/evaluationdet.class.php | 2 +- htdocs/hrm/class/job.class.php | 2 +- htdocs/hrm/class/position.class.php | 2 +- htdocs/hrm/class/skill.class.php | 2 +- htdocs/hrm/class/skilldet.class.php | 2 +- htdocs/hrm/class/skillrank.class.php | 2 +- .../class/knowledgerecord.class.php | 2 +- htdocs/loan/class/loan.class.php | 11 ++++++++++- htdocs/loan/class/paymentloan.class.php | 11 ++++++++++- .../modulebuilder/template/class/myobject.class.php | 2 +- htdocs/mrp/class/mo.class.php | 2 +- htdocs/partnership/class/partnership.class.php | 2 +- htdocs/partnership/class/partnership_type.class.php | 2 +- htdocs/product/class/product.class.php | 2 +- .../product/class/productfournisseurprice.class.php | 2 +- htdocs/product/stock/class/entrepot.class.php | 2 +- htdocs/projet/class/project.class.php | 2 +- htdocs/reception/class/reception.class.php | 12 +++++++++++- .../class/recruitmentcandidature.class.php | 2 +- .../class/recruitmentjobposition.class.php | 2 +- htdocs/resource/class/dolresource.class.php | 11 ++++++++++- htdocs/salaries/class/salary.class.php | 2 +- htdocs/societe/class/societe.class.php | 2 +- .../class/supplier_proposal.class.php | 11 ++++++++++- htdocs/ticket/class/cticketcategory.class.php | 2 +- htdocs/user/class/user.class.php | 2 +- htdocs/user/class/usergroup.class.php | 2 +- htdocs/workstation/class/workstation.class.php | 2 +- htdocs/zapier/class/hook.class.php | 2 +- 63 files changed, 261 insertions(+), 66 deletions(-) diff --git a/htdocs/bom/class/bom.class.php b/htdocs/bom/class/bom.class.php index fd8d4a19a75..3a89c97bd26 100644 --- a/htdocs/bom/class/bom.class.php +++ b/htdocs/bom/class/bom.class.php @@ -838,7 +838,7 @@ class BOM extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('bomdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; @@ -1444,7 +1444,7 @@ class BOMLine extends CommonObjectLine global $action, $hookmanager; $hookmanager->initHooks(array('bomlinedao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/bookmarks/class/bookmark.class.php b/htdocs/bookmarks/class/bookmark.class.php index 9a5b3a53c20..39bb06c2ada 100644 --- a/htdocs/bookmarks/class/bookmark.class.php +++ b/htdocs/bookmarks/class/bookmark.class.php @@ -344,7 +344,7 @@ class Bookmark extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('mybookmarkdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index 9a449d63700..380e7f686c2 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -1612,7 +1612,7 @@ class Categorie extends CommonObject */ public function getNomUrl($withpicto = 0, $option = '', $maxlength = 0, $moreparam = '') { - global $langs; + global $langs, $hookmanager; $result = ''; $label = $langs->trans("ShowCategory").': '.($this->ref ? $this->ref : $this->label); @@ -1640,6 +1640,16 @@ class Categorie extends CommonObject if ($withpicto != 2) { $result .= $link.dol_trunc(($this->ref ? $this->ref : $this->label), $maxlength).$linkend; } + + global $action; + $hookmanager->initHooks(array('categoriedao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index 3e2520f43da..eb8dbef2f6e 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -1662,7 +1662,7 @@ class ActionComm extends CommonObject global $action; $hookmanager->initHooks(array('actiondao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/comm/mailing/class/mailing.class.php b/htdocs/comm/mailing/class/mailing.class.php index cb900f7ac7b..3ec97f09cda 100644 --- a/htdocs/comm/mailing/class/mailing.class.php +++ b/htdocs/comm/mailing/class/mailing.class.php @@ -740,7 +740,7 @@ class Mailing extends CommonObject global $action; $hookmanager->initHooks(array('emailingdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 2f055f54a42..2d82595c2f1 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -3557,7 +3557,7 @@ class Propal extends CommonObject */ public function getNomUrl($withpicto = 0, $option = '', $get_params = '', $notooltip = 0, $save_lastsearch_value = -1, $addlinktonotes = -1) { - global $langs, $conf, $user; + global $langs, $conf, $user, $hookmanager; if (!empty($conf->dol_no_mouse_hover)) { $notooltip = 1; // Force disable tooltips @@ -3678,6 +3678,16 @@ class Propal extends CommonObject } } + global $action; + $hookmanager->initHooks(array('propaldao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } + return $result; } diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 9b315698527..3da5b7c0428 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -3654,7 +3654,7 @@ class Commande extends CommonOrder */ public function getNomUrl($withpicto = 0, $option = '', $max = 0, $short = 0, $notooltip = 0, $save_lastsearch_value = -1, $addlinktonotes = 0) { - global $conf, $langs, $user; + global $conf, $langs, $user, $hookmanager; if (!empty($conf->dol_no_mouse_hover)) { $notooltip = 1; // Force disable tooltips @@ -3755,6 +3755,16 @@ class Commande extends CommonOrder } } + global $action; + $hookmanager->initHooks(array('orderdao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } + return $result; } diff --git a/htdocs/compta/bank/class/paymentvarious.class.php b/htdocs/compta/bank/class/paymentvarious.class.php index d88676563d6..cdcd26490a3 100644 --- a/htdocs/compta/bank/class/paymentvarious.class.php +++ b/htdocs/compta/bank/class/paymentvarious.class.php @@ -721,7 +721,7 @@ class PaymentVarious extends CommonObject global $action; $hookmanager->initHooks(array('variouspayment')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/compta/cashcontrol/class/cashcontrol.class.php b/htdocs/compta/cashcontrol/class/cashcontrol.class.php index 5308c8df1d6..63dae3a3a1c 100644 --- a/htdocs/compta/cashcontrol/class/cashcontrol.class.php +++ b/htdocs/compta/cashcontrol/class/cashcontrol.class.php @@ -466,7 +466,7 @@ class CashControl extends CommonObject global $action; $hookmanager->initHooks(array('cashfencedao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 649b7b0c093..8846d0bcc14 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -1558,7 +1558,7 @@ class Facture extends CommonInvoice global $action, $hookmanager; $hookmanager->initHooks(array('invoicedao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result, 'notooltip' => $notooltip, 'addlinktonotes' => $addlinktonotes, 'save_lastsearch_value'=> $save_lastsearch_value, 'target' => $target); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result, 'notooltip' => $notooltip, 'addlinktonotes' => $addlinktonotes, 'save_lastsearch_value'=> $save_lastsearch_value, 'target' => $target); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/compta/prelevement/class/bonprelevement.class.php b/htdocs/compta/prelevement/class/bonprelevement.class.php index a8836d215b2..a0911f92acb 100644 --- a/htdocs/compta/prelevement/class/bonprelevement.class.php +++ b/htdocs/compta/prelevement/class/bonprelevement.class.php @@ -1329,7 +1329,7 @@ class BonPrelevement extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('banktransferdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index fa1dfb93c7a..908625b2825 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -1487,7 +1487,7 @@ class Contact extends CommonObject global $action; $hookmanager->initHooks(array('contactdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index fe8edd30ea4..10771ec5228 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -2041,7 +2041,7 @@ class Contrat extends CommonObject global $action; $hookmanager->initHooks(array('contractdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/delivery/class/delivery.class.php b/htdocs/delivery/class/delivery.class.php index 6bfe3a33dd7..ccf197c7092 100644 --- a/htdocs/delivery/class/delivery.class.php +++ b/htdocs/delivery/class/delivery.class.php @@ -725,7 +725,7 @@ class Delivery extends CommonObject */ public function getNomUrl($withpicto = 0, $save_lastsearch_value = -1) { - global $langs; + global $langs, $hookmanager; $result = ''; @@ -757,6 +757,16 @@ class Delivery extends CommonObject $result .= ' '; } $result .= $linkstart.$this->ref.$linkend; + + global $action; + $hookmanager->initHooks(array('deliverydao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/don/class/don.class.php b/htdocs/don/class/don.class.php index 7ca70a31aa2..ea8e53da2a0 100644 --- a/htdocs/don/class/don.class.php +++ b/htdocs/don/class/don.class.php @@ -899,7 +899,7 @@ class Don extends CommonObject */ public function getNomUrl($withpicto = 0, $notooltip = 0, $moretitle = '', $save_lastsearch_value = -1) { - global $conf, $langs; + global $conf, $langs, $hookmanager; if (!empty($conf->dol_no_mouse_hover)) { $notooltip = 1; // Force disable tooltips @@ -940,6 +940,16 @@ class Don extends CommonObject } $result .= $linkend; + global $action; + $hookmanager->initHooks(array('dondao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } + return $result; } diff --git a/htdocs/don/class/paymentdonation.class.php b/htdocs/don/class/paymentdonation.class.php index b5775ce18ac..f1028146397 100644 --- a/htdocs/don/class/paymentdonation.class.php +++ b/htdocs/don/class/paymentdonation.class.php @@ -661,7 +661,7 @@ class PaymentDonation extends CommonObject */ public function getNomUrl($withpicto = 0, $maxlen = 0) { - global $langs; + global $langs, $hookmanager; $result = ''; @@ -684,6 +684,15 @@ class PaymentDonation extends CommonObject } } + global $action; + $hookmanager->initHooks(array('paymentdonationdao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } } diff --git a/htdocs/ecm/class/ecmdirectory.class.php b/htdocs/ecm/class/ecmdirectory.class.php index 03413a56eb1..7381beb6fea 100644 --- a/htdocs/ecm/class/ecmdirectory.class.php +++ b/htdocs/ecm/class/ecmdirectory.class.php @@ -474,7 +474,7 @@ class EcmDirectory extends CommonObject */ public function getNomUrl($withpicto = 0, $option = '', $max = 0, $more = '', $notooltip = 0) { - global $langs; + global $langs, $hookmanager; $result = ''; //$newref=str_replace('_',' ',$this->ref); @@ -506,6 +506,15 @@ class EcmDirectory extends CommonObject } $result .= $linkend; + global $action; + $hookmanager->initHooks(array('ecmdirectorydao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/ecm/class/ecmfiles.class.php b/htdocs/ecm/class/ecmfiles.class.php index 6c2b8fc4023..9121ddacd0e 100644 --- a/htdocs/ecm/class/ecmfiles.class.php +++ b/htdocs/ecm/class/ecmfiles.class.php @@ -831,7 +831,7 @@ class EcmFiles extends CommonObject { global $db, $conf, $langs; global $dolibarr_main_authentication, $dolibarr_main_demo; - global $menumanager; + global $menumanager, $hookmanager; if (!empty($conf->dol_no_mouse_hover)) { $notooltip = 1; // Force disable tooltips @@ -868,6 +868,16 @@ class EcmFiles extends CommonObject } } $result .= $linkstart.$this->ref.$linkend; + + global $action; + $hookmanager->initHooks(array('ecmfilesdao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index 729762be327..8874f086b2a 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -563,7 +563,7 @@ class EmailCollector extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('emailcollectordao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/emailcollector/class/emailcollectoraction.class.php b/htdocs/emailcollector/class/emailcollectoraction.class.php index bd044f37d0f..eaa4b0737b9 100644 --- a/htdocs/emailcollector/class/emailcollectoraction.class.php +++ b/htdocs/emailcollector/class/emailcollectoraction.class.php @@ -389,7 +389,7 @@ class EmailCollectorAction extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('emailcollectoractiondao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/emailcollector/class/emailcollectorfilter.class.php b/htdocs/emailcollector/class/emailcollectorfilter.class.php index d926a8bf14f..a99c5198d72 100644 --- a/htdocs/emailcollector/class/emailcollectorfilter.class.php +++ b/htdocs/emailcollector/class/emailcollectorfilter.class.php @@ -363,7 +363,7 @@ class EmailCollectorFilter extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('emailcollectorfilterdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/eventorganization/class/conferenceorbooth.class.php b/htdocs/eventorganization/class/conferenceorbooth.class.php index ac9e465b43b..46c13fd33c5 100644 --- a/htdocs/eventorganization/class/conferenceorbooth.class.php +++ b/htdocs/eventorganization/class/conferenceorbooth.class.php @@ -601,7 +601,7 @@ class ConferenceOrBooth extends ActionComm global $action, $hookmanager; $hookmanager->initHooks(array('conferenceorboothdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/eventorganization/class/conferenceorboothattendee.class.php b/htdocs/eventorganization/class/conferenceorboothattendee.class.php index 96131aa5946..bdd81660a12 100644 --- a/htdocs/eventorganization/class/conferenceorboothattendee.class.php +++ b/htdocs/eventorganization/class/conferenceorboothattendee.class.php @@ -855,7 +855,7 @@ class ConferenceOrBoothAttendee extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('conferenceorboothattendeedao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 8ef7be75f52..0e79ab05428 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -1778,7 +1778,7 @@ class Expedition extends CommonObject */ public function getNomUrl($withpicto = 0, $option = '', $max = 0, $short = 0, $notooltip = 0, $save_lastsearch_value = -1) { - global $langs, $conf; + global $langs, $conf, $hookmanager; $result = ''; $label = ''.$langs->trans("Shipment").''; @@ -1823,8 +1823,17 @@ class Expedition extends CommonObject if ($withpicto != 2) { $result .= $this->ref; } - $result .= $linkend; + $result .= $linkend; + global $action; + $hookmanager->initHooks(array('shippingdao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 877a7c79ade..9a0a6f1949c 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -1639,7 +1639,7 @@ class ExpenseReport extends CommonObject */ public function getNomUrl($withpicto = 0, $option = '', $max = 0, $short = 0, $moretitle = '', $notooltip = 0, $save_lastsearch_value = -1) { - global $langs, $conf; + global $langs, $conf, $hookmanager; $result = ''; @@ -1708,6 +1708,15 @@ class ExpenseReport extends CommonObject } $result .= $linkend; + global $action; + $hookmanager->initHooks(array('expensereportdao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/expensereport/class/paymentexpensereport.class.php b/htdocs/expensereport/class/paymentexpensereport.class.php index 48adeab929d..e21e34de971 100644 --- a/htdocs/expensereport/class/paymentexpensereport.class.php +++ b/htdocs/expensereport/class/paymentexpensereport.class.php @@ -628,7 +628,7 @@ class PaymentExpenseReport extends CommonObject */ public function getNomUrl($withpicto = 0, $maxlen = 0) { - global $langs; + global $langs, $hookmanager; $result = ''; @@ -651,7 +651,15 @@ class PaymentExpenseReport extends CommonObject $result .= $link.($maxlen ?dol_trunc($this->ref, $maxlen) : $this->ref).$linkend; } } - + global $action; + $hookmanager->initHooks(array('paymentexpensereportdao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php index 297e03fa379..22746014c8d 100644 --- a/htdocs/fichinter/class/fichinter.class.php +++ b/htdocs/fichinter/class/fichinter.class.php @@ -816,7 +816,7 @@ class Fichinter extends CommonObject global $action; $hookmanager->initHooks(array('interventiondao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 9b68ef199db..24ae04ea204 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -787,7 +787,7 @@ class CommandeFournisseur extends CommonOrder */ public function getNomUrl($withpicto = 0, $option = '', $notooltip = 0, $save_lastsearch_value = -1, $addlinktonotes = 0) { - global $langs, $conf, $user; + global $langs, $conf, $user, $hookmanager; $result = ''; @@ -869,6 +869,15 @@ class CommandeFournisseur extends CommonOrder } } + global $action; + $hookmanager->initHooks(array('supplierorderdao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index a1db1826684..b70f35674ec 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -2478,7 +2478,7 @@ class FactureFournisseur extends CommonInvoice */ public function getNomUrl($withpicto = 0, $option = '', $max = 0, $short = 0, $moretitle = '', $notooltip = 0, $save_lastsearch_value = -1, $addlinktonotes = 0) { - global $langs, $conf, $user; + global $langs, $conf, $user, $hookmanager; $result = ''; @@ -2597,6 +2597,15 @@ class FactureFournisseur extends CommonInvoice } } + global $action; + $hookmanager->initHooks(array('supplierinvoicedao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index 5b523d8d7e8..3f4f853a4f5 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -1087,7 +1087,7 @@ class ProductFournisseur extends Product */ public function getNomUrl($withpicto = 0, $option = '', $notooltip = 0, $morecss = '', $save_lastsearch_value = -1) { - global $db, $conf, $langs; + global $db, $conf, $langs, $hookmanager; if (!empty($conf->dol_no_mouse_hover)) { $notooltip = 1; // Force disable tooltips @@ -1222,6 +1222,15 @@ class ProductFournisseur extends Product $result .= $linkend; //if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : ''); + global $action; + $hookmanager->initHooks(array('supplierproductdao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/fourn/class/paiementfourn.class.php b/htdocs/fourn/class/paiementfourn.class.php index fa58139b7e7..812f7ff570b 100644 --- a/htdocs/fourn/class/paiementfourn.class.php +++ b/htdocs/fourn/class/paiementfourn.class.php @@ -593,7 +593,7 @@ class PaiementFourn extends Paiement */ public function getNomUrl($withpicto = 0, $option = '', $mode = 'withlistofinvoices', $notooltip = 0, $morecss = '') { - global $langs; + global $langs, $conf, $hookmanager; $result = ''; @@ -638,6 +638,15 @@ class PaiementFourn extends Paiement } $result .= $linkend; + global $action; + $hookmanager->initHooks(array('supplierpaymentdao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/holiday/class/holiday.class.php b/htdocs/holiday/class/holiday.class.php index 89760c4d1ac..1a204ab9155 100644 --- a/htdocs/holiday/class/holiday.class.php +++ b/htdocs/holiday/class/holiday.class.php @@ -1237,7 +1237,7 @@ class Holiday extends CommonObject */ public function getNomUrl($withpicto = 0, $save_lastsearch_value = -1, $notooltip = 0) { - global $langs; + global $langs, $hookmanager; $result = ''; @@ -1273,6 +1273,15 @@ class Holiday extends CommonObject } $result .= $linkend; + global $action; + $hookmanager->initHooks(array('holidaydao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/hrm/class/establishment.class.php b/htdocs/hrm/class/establishment.class.php index 88e93f1398f..2a2c4e4b3dd 100644 --- a/htdocs/hrm/class/establishment.class.php +++ b/htdocs/hrm/class/establishment.class.php @@ -506,7 +506,7 @@ class Establishment extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('establishmentdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/hrm/class/evaluation.class.php b/htdocs/hrm/class/evaluation.class.php index 75dc03cc6f2..02c69bc4e01 100644 --- a/htdocs/hrm/class/evaluation.class.php +++ b/htdocs/hrm/class/evaluation.class.php @@ -808,7 +808,7 @@ class Evaluation extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('evaluationdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/hrm/class/evaluationdet.class.php b/htdocs/hrm/class/evaluationdet.class.php index 115571bb6ba..0ca56d84e60 100644 --- a/htdocs/hrm/class/evaluationdet.class.php +++ b/htdocs/hrm/class/evaluationdet.class.php @@ -780,7 +780,7 @@ class Evaluationline extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('evaluationlinedao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/hrm/class/job.class.php b/htdocs/hrm/class/job.class.php index fc94f4ba6ae..c7f2e1a5f6b 100644 --- a/htdocs/hrm/class/job.class.php +++ b/htdocs/hrm/class/job.class.php @@ -814,7 +814,7 @@ class Job extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('jobdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/hrm/class/position.class.php b/htdocs/hrm/class/position.class.php index 26298c31aa7..aa4b320ba56 100644 --- a/htdocs/hrm/class/position.class.php +++ b/htdocs/hrm/class/position.class.php @@ -788,7 +788,7 @@ class Position extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('positiondao')); - $parameters = array('id' => $this->id, 'getnomurl' => $result); + $parameters = array('id' => $this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/hrm/class/skill.class.php b/htdocs/hrm/class/skill.class.php index 478b267ac1f..84d8143d0e5 100644 --- a/htdocs/hrm/class/skill.class.php +++ b/htdocs/hrm/class/skill.class.php @@ -831,7 +831,7 @@ class Skill extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('jobdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/hrm/class/skilldet.class.php b/htdocs/hrm/class/skilldet.class.php index c3acdd0982e..acda6908002 100644 --- a/htdocs/hrm/class/skilldet.class.php +++ b/htdocs/hrm/class/skilldet.class.php @@ -768,7 +768,7 @@ class Skilldet extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('skilldetdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/hrm/class/skillrank.class.php b/htdocs/hrm/class/skillrank.class.php index a07015ef763..1aac86842b8 100644 --- a/htdocs/hrm/class/skillrank.class.php +++ b/htdocs/hrm/class/skillrank.class.php @@ -807,7 +807,7 @@ class SkillRank extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('skillrankdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/knowledgemanagement/class/knowledgerecord.class.php b/htdocs/knowledgemanagement/class/knowledgerecord.class.php index a152a693343..7e662372fa2 100644 --- a/htdocs/knowledgemanagement/class/knowledgerecord.class.php +++ b/htdocs/knowledgemanagement/class/knowledgerecord.class.php @@ -791,7 +791,7 @@ class KnowledgeRecord extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('knowledgerecorddao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/loan/class/loan.class.php b/htdocs/loan/class/loan.class.php index ec9ce00b7e9..2530ffcecfe 100644 --- a/htdocs/loan/class/loan.class.php +++ b/htdocs/loan/class/loan.class.php @@ -556,7 +556,7 @@ class Loan extends CommonObject */ public function getNomUrl($withpicto = 0, $maxlen = 0, $option = '', $notooltip = 0, $morecss = '', $save_lastsearch_value = -1) { - global $conf, $langs; + global $conf, $langs, $hookmanager; $result = ''; @@ -606,6 +606,15 @@ class Loan extends CommonObject } $result .= $linkend; + global $action; + $hookmanager->initHooks(array('loandao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/loan/class/paymentloan.class.php b/htdocs/loan/class/paymentloan.class.php index 841ffa7b373..f998b3f1077 100644 --- a/htdocs/loan/class/paymentloan.class.php +++ b/htdocs/loan/class/paymentloan.class.php @@ -617,7 +617,7 @@ class PaymentLoan extends CommonObject */ public function getNomUrl($withpicto = 0, $maxlen = 0, $notooltip = 0, $moretitle = '', $save_lastsearch_value = -1) { - global $langs, $conf; + global $langs, $conf, $hookmanager; if (!empty($conf->dol_no_mouse_hover)) { $notooltip = 1; // Force disable tooltips @@ -654,6 +654,15 @@ class PaymentLoan extends CommonObject } $result .= $linkend; + global $action; + $hookmanager->initHooks(array('loanpaymentdao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } } diff --git a/htdocs/modulebuilder/template/class/myobject.class.php b/htdocs/modulebuilder/template/class/myobject.class.php index 6e5d6efcff4..d84fbfad843 100644 --- a/htdocs/modulebuilder/template/class/myobject.class.php +++ b/htdocs/modulebuilder/template/class/myobject.class.php @@ -836,7 +836,7 @@ class MyObject extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('myobjectdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php index cdad4e71968..e5c7d354aa4 100644 --- a/htdocs/mrp/class/mo.class.php +++ b/htdocs/mrp/class/mo.class.php @@ -1072,7 +1072,7 @@ class Mo extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('modao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/partnership/class/partnership.class.php b/htdocs/partnership/class/partnership.class.php index 4981dde2b45..c0656e4fa3c 100644 --- a/htdocs/partnership/class/partnership.class.php +++ b/htdocs/partnership/class/partnership.class.php @@ -1035,7 +1035,7 @@ class Partnership extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('partnershipdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/partnership/class/partnership_type.class.php b/htdocs/partnership/class/partnership_type.class.php index 6916d95e4f3..5b6ed5e5378 100644 --- a/htdocs/partnership/class/partnership_type.class.php +++ b/htdocs/partnership/class/partnership_type.class.php @@ -434,7 +434,7 @@ class PartnershipType extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('myobjectdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 1d4a5926b6e..fc7bfd1444b 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -4930,7 +4930,7 @@ class Product extends CommonObject global $action; $hookmanager->initHooks(array('productdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/product/class/productfournisseurprice.class.php b/htdocs/product/class/productfournisseurprice.class.php index d82d1784938..84262e13c66 100644 --- a/htdocs/product/class/productfournisseurprice.class.php +++ b/htdocs/product/class/productfournisseurprice.class.php @@ -642,7 +642,7 @@ class ProductFournisseurPrice extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('productfournisseurpricedao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) $result = $hookmanager->resPrint; else $result .= $hookmanager->resPrint; diff --git a/htdocs/product/stock/class/entrepot.class.php b/htdocs/product/stock/class/entrepot.class.php index fe36b6364fc..ea80bd3fa46 100644 --- a/htdocs/product/stock/class/entrepot.class.php +++ b/htdocs/product/stock/class/entrepot.class.php @@ -760,7 +760,7 @@ class Entrepot extends CommonObject global $action; $hookmanager->initHooks(array('warehousedao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result, 'withpicto' => $withpicto, 'option' => $option, 'showfullpath' => $showfullpath, 'notooltip'=> $notooltip); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result, 'withpicto' => $withpicto, 'option' => $option, 'showfullpath' => $showfullpath, 'notooltip'=> $notooltip); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 6d8b54d1954..164f289b94e 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -1264,7 +1264,7 @@ class Project extends CommonObject global $action; $hookmanager->initHooks(array('projectdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/reception/class/reception.class.php b/htdocs/reception/class/reception.class.php index 954e7f192cd..13d49111bea 100644 --- a/htdocs/reception/class/reception.class.php +++ b/htdocs/reception/class/reception.class.php @@ -1116,7 +1116,7 @@ class Reception extends CommonObject */ public function getNomUrl($withpicto = 0, $option = 0, $max = 0, $short = 0, $notooltip = 0) { - global $conf, $langs; + global $conf, $langs, $hookmanager; $result = ''; $label = img_picto('', $this->picto).' '.$langs->trans("Reception").''; $label .= '
'.$langs->trans('Ref').': '.$this->ref; @@ -1149,6 +1149,16 @@ class Reception extends CommonObject $result .= ' '; } $result .= $linkstart.$this->ref.$linkend; + + global $action; + $hookmanager->initHooks(array('receptiondao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/recruitment/class/recruitmentcandidature.class.php b/htdocs/recruitment/class/recruitmentcandidature.class.php index f05f1389e75..e93e9af1178 100644 --- a/htdocs/recruitment/class/recruitmentcandidature.class.php +++ b/htdocs/recruitment/class/recruitmentcandidature.class.php @@ -762,7 +762,7 @@ class RecruitmentCandidature extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('recruitmentcandidaturedao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/recruitment/class/recruitmentjobposition.class.php b/htdocs/recruitment/class/recruitmentjobposition.class.php index 3b52e5b4fa6..bc46b40f186 100644 --- a/htdocs/recruitment/class/recruitmentjobposition.class.php +++ b/htdocs/recruitment/class/recruitmentjobposition.class.php @@ -863,7 +863,7 @@ class RecruitmentJobPosition extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('recruitmentjobpositiondao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/resource/class/dolresource.class.php b/htdocs/resource/class/dolresource.class.php index a0f80d7b27c..81c0c04ebce 100644 --- a/htdocs/resource/class/dolresource.class.php +++ b/htdocs/resource/class/dolresource.class.php @@ -933,7 +933,7 @@ class Dolresource extends CommonObject */ public function getNomUrl($withpicto = 0, $option = '', $get_params = '', $notooltip = 0, $morecss = '', $save_lastsearch_value = -1) { - global $conf, $langs; + global $conf, $langs, $hookmanager; $result = ''; $label = img_picto('', $this->picto).' '.$langs->trans("Resource").''; @@ -986,6 +986,15 @@ class Dolresource extends CommonObject } $result .= $linkend; + global $action; + $hookmanager->initHooks(array('dolresourcedao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/salaries/class/salary.class.php b/htdocs/salaries/class/salary.class.php index 454a94bcf1f..fbf13ee6a39 100644 --- a/htdocs/salaries/class/salary.class.php +++ b/htdocs/salaries/class/salary.class.php @@ -550,7 +550,7 @@ class Salary extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('salarypayment')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) $result = $hookmanager->resPrint; else $result .= $hookmanager->resPrint; diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 22276cc7bee..4edecfdbf00 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -2721,7 +2721,7 @@ class Societe extends CommonObject $hookmanager->initHooks(array('thirdpartydao')); $parameters = array( 'id'=>$this->id, - 'getnomurl'=>$result, + 'getnomurl' => &$result, 'withpicto '=> $withpicto, 'option'=> $option, 'maxlen'=> $maxlen, diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index 9c84e2c2e89..b4e85080090 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -2462,7 +2462,7 @@ class SupplierProposal extends CommonObject */ public function getNomUrl($withpicto = 0, $option = '', $get_params = '', $notooltip = 0, $save_lastsearch_value = -1, $addlinktonotes = 0) { - global $langs, $conf, $user; + global $langs, $conf, $user, $hookmanager; if (!empty($conf->dol_no_mouse_hover)) { $notooltip = 1; // Force disable tooltips @@ -2546,6 +2546,15 @@ class SupplierProposal extends CommonObject } } + global $action; + $hookmanager->initHooks(array('supplierpropaldao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/ticket/class/cticketcategory.class.php b/htdocs/ticket/class/cticketcategory.class.php index 37142a0d278..cfaab7f3768 100644 --- a/htdocs/ticket/class/cticketcategory.class.php +++ b/htdocs/ticket/class/cticketcategory.class.php @@ -709,7 +709,7 @@ class CTicketCategory extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('cticketcategorydao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 18cfb950619..f2142df4914 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -2719,7 +2719,7 @@ class User extends CommonObject global $action; $hookmanager->initHooks(array('userdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/user/class/usergroup.class.php b/htdocs/user/class/usergroup.class.php index b1b3175aaa9..b59f437d8c0 100644 --- a/htdocs/user/class/usergroup.class.php +++ b/htdocs/user/class/usergroup.class.php @@ -785,7 +785,7 @@ class UserGroup extends CommonObject global $action; $hookmanager->initHooks(array('groupdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/workstation/class/workstation.class.php b/htdocs/workstation/class/workstation.class.php index f66f2c51f49..529108981b3 100755 --- a/htdocs/workstation/class/workstation.class.php +++ b/htdocs/workstation/class/workstation.class.php @@ -814,7 +814,7 @@ class Workstation extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('workstationdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/zapier/class/hook.class.php b/htdocs/zapier/class/hook.class.php index c3b9147a46d..e27658838bd 100644 --- a/htdocs/zapier/class/hook.class.php +++ b/htdocs/zapier/class/hook.class.php @@ -565,7 +565,7 @@ class Hook extends CommonObject $hookmanager->initHooks(array('hookdao')); $parameters = array( 'id' => $this->id, - 'getnomurl' => $result, + 'getnomurl' => &$result, ); // Note that $action and $object may have been modified by some hooks $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); From c01cc0c2124c681bfb3682660c3aeba2a1278c15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Mon, 22 Nov 2021 20:06:51 +0100 Subject: [PATCH 004/225] can modify tooltip by reference --- htdocs/accountancy/class/accountingaccount.class.php | 11 ++++++++++- htdocs/accountancy/class/accountingjournal.class.php | 11 ++++++++++- htdocs/accountancy/class/bookkeeping.class.php | 11 ++++++++++- htdocs/asset/class/asset.class.php | 11 ++++++++++- 4 files changed, 40 insertions(+), 4 deletions(-) diff --git a/htdocs/accountancy/class/accountingaccount.class.php b/htdocs/accountancy/class/accountingaccount.class.php index 730e52c805a..ad2ab87ae62 100644 --- a/htdocs/accountancy/class/accountingaccount.class.php +++ b/htdocs/accountancy/class/accountingaccount.class.php @@ -464,7 +464,7 @@ class AccountingAccount extends CommonObject */ public function getNomUrl($withpicto = 0, $withlabel = 0, $nourl = 0, $moretitle = '', $notooltip = 0, $save_lastsearch_value = -1, $withcompletelabel = 0, $option = '') { - global $langs, $conf; + global $langs, $conf, $hookmanager; require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php'; if (!empty($conf->dol_no_mouse_hover)) { @@ -549,6 +549,15 @@ class AccountingAccount extends CommonObject if ($withpicto != 2) { $result .= $linkstart . $label_link . $linkend; } + global $action; + $hookmanager->initHooks(array('accountingjournaldao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/accountancy/class/accountingjournal.class.php b/htdocs/accountancy/class/accountingjournal.class.php index 376178b45ba..24e42c367aa 100644 --- a/htdocs/accountancy/class/accountingjournal.class.php +++ b/htdocs/accountancy/class/accountingjournal.class.php @@ -221,7 +221,7 @@ class AccountingJournal extends CommonObject */ public function getNomUrl($withpicto = 0, $withlabel = 0, $nourl = 0, $moretitle = '', $notooltip = 0) { - global $langs, $conf, $user; + global $langs, $conf, $user, $hookmanager; if (!empty($conf->dol_no_mouse_hover)) { $notooltip = 1; // Force disable tooltips @@ -276,6 +276,15 @@ class AccountingJournal extends CommonObject } $result .= $linkend; + global $action; + $hookmanager->initHooks(array('accountingjournaldao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index 9cda04f6155..c6acc50ba3e 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -460,7 +460,7 @@ class BookKeeping extends CommonObject { global $db, $conf, $langs; global $dolibarr_main_authentication, $dolibarr_main_demo; - global $menumanager; + global $menumanager, $hookmanager; if (!empty($conf->dol_no_mouse_hover)) { $notooltip = 1; // Force disable tooltips @@ -512,6 +512,15 @@ class BookKeeping extends CommonObject $result .= $linkend; //if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : ''); + global $action; + $hookmanager->initHooks(array('bookkeepingdao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/asset/class/asset.class.php b/htdocs/asset/class/asset.class.php index e5ec21bfa6d..5772da8c0cf 100644 --- a/htdocs/asset/class/asset.class.php +++ b/htdocs/asset/class/asset.class.php @@ -307,7 +307,7 @@ class Asset extends CommonObject { global $db, $conf, $langs; global $dolibarr_main_authentication, $dolibarr_main_demo; - global $menumanager; + global $menumanager, $hookmanager; if (!empty($conf->dol_no_mouse_hover)) { $notooltip = 1; // Force disable tooltips @@ -361,6 +361,15 @@ class Asset extends CommonObject $result .= $linkend; //if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : ''); + global $action; + $hookmanager->initHooks(array('assetdao')); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } From e562bf5b1cb9c2d98867a69a21f2a3cd25b9c034 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Mon, 22 Nov 2021 20:08:21 +0100 Subject: [PATCH 005/225] can modify tooltip by reference --- htdocs/accountancy/class/accountingaccount.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/accountancy/class/accountingaccount.class.php b/htdocs/accountancy/class/accountingaccount.class.php index ad2ab87ae62..3ee51f5ad32 100644 --- a/htdocs/accountancy/class/accountingaccount.class.php +++ b/htdocs/accountancy/class/accountingaccount.class.php @@ -550,7 +550,7 @@ class AccountingAccount extends CommonObject $result .= $linkstart . $label_link . $linkend; } global $action; - $hookmanager->initHooks(array('accountingjournaldao')); + $hookmanager->initHooks(array('accountingaccountdao')); $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { From 9f7e8fa3ed17006d8aeaea6ff696b8bfbe043024 Mon Sep 17 00:00:00 2001 From: Adrien Raze Date: Wed, 15 Dec 2021 15:19:12 +0100 Subject: [PATCH 006/225] NEW : Creation of the llx_facture_fourn_rec.sql table for recurring supplier invoices --- .../mysql/tables/llx_facture_fourn_rec.sql | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 htdocs/install/mysql/tables/llx_facture_fourn_rec.sql diff --git a/htdocs/install/mysql/tables/llx_facture_fourn_rec.sql b/htdocs/install/mysql/tables/llx_facture_fourn_rec.sql new file mode 100644 index 00000000000..edaa49e0ea1 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_facture_fourn_rec.sql @@ -0,0 +1,77 @@ +-- =========================================================================== +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . +-- +-- =========================================================================== + +create table llx_facture_fourn_rec +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + titre varchar(200) NOT NULL, + ref_supplier varchar(180) NOT NULL, + entity integer DEFAULT 1 NOT NULL, -- multi company id + fk_soc integer NOT NULL, + + datec datetime, -- date de creation + tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- last modification date + + suspended integer DEFAULT 0, -- 1=suspended + + libelle varchar(255), + amount double(24, 8) DEFAULT 0 NOT NULL, + remise real DEFAULT 0, + + vat_src_code varchar(10) DEFAULT '', -- Vat code used as source of vat fields. Not strict foreign key here. + localtax1 double(24,8) DEFAULT 0, + localtax2 double(24,8) DEFAULT 0, + total_ht double(24,8) DEFAULT 0, + total_tva double(24,8) DEFAULT 0, + total_ttc double(24,8) DEFAULT 0, + + fk_user_author integer, -- user creating + fk_user_modif integer, -- user making last change + + fk_projet integer, -- projet auquel est associe la facture + + fk_account integer, -- bank account + fk_cond_reglement integer, -- condition de reglement (30 jours, fin de mois ...) + fk_mode_reglement integer, -- mode de reglement (CHQ, VIR, ...) + date_lim_reglement date, -- date limite de reglement + + note_private text, + note_public text, + modelpdf varchar(255), + + fk_multicurrency integer, + multicurrency_code varchar(3), + multicurrency_tx double(24,8) DEFAULT 1, + multicurrency_total_ht double(24,8) DEFAULT 0, + multicurrency_total_tva double(24,8) DEFAULT 0, + multicurrency_total_ttc double(24,8) DEFAULT 0, + + + -- Fields linked to the recurring behavior + + usenewprice integer DEFAULT 0, -- update invoice with current price of product instead of recorded price + frequency integer, -- frequency (for example: 3 for every 3 month) + unit_frequency varchar(2) DEFAULT 'm', -- 'm' for month (date_when must be a day <= 28), 'y' for year, ... + + date_when datetime DEFAULT NULL, -- date for next gen (when an invoice is generated, this field must be updated with next date) + date_last_gen datetime DEFAULT NULL, -- date for last gen (date with last successfull generation of invoice) + nb_gen_done integer DEFAULT NULL, -- nb of generation done (when an invoice is generated, this field must incremented) + nb_gen_max integer DEFAULT NULL, -- maximum number of generation + auto_validate integer DEFAULT 0, -- 0 to create in draft, 1 to create and validate the new invoice + generate_pdf integer DEFAULT 1 -- 0 disable pdf, 1 to generate pdf + +)ENGINE=innodb; From 6035a374b728b3278777bd5ccca41b6c91594e11 Mon Sep 17 00:00:00 2001 From: atm-greg Date: Wed, 2 Feb 2022 14:44:38 +0100 Subject: [PATCH 007/225] fix bad array index --- htdocs/fourn/facture/card.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 37ef9c813a2..57d0ae6a1a0 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -527,14 +527,13 @@ if (empty($reshook)) { $i = 0; foreach ($object->lines as $line) { if ($line->product_type < 9 && $line->total_ht != 0) { // Remove lines with product_type greater than or equal to 9 and no need to create discount if amount is null - $keyforvatrate = $line->tva_tx.($line->vat_src_code ? ' ('.$line->vat_src_code.')' : ''); $amount_ht[$line->tva_tx] += $line->total_ht; $amount_tva[$line->tva_tx] += $line->total_tva; $amount_ttc[$line->tva_tx] += $line->total_ttc; - $multicurrency_amount_ht[$keyforvatrate] += $line->multicurrency_total_ht; - $multicurrency_amount_tva[$keyforvatrate] += $line->multicurrency_total_tva; - $multicurrency_amount_ttc[$keyforvatrate] += $line->multicurrency_total_ttc; + $multicurrency_amount_ht[$line->tva_tx] += $line->multicurrency_total_ht; + $multicurrency_amount_tva[$line->tva_tx] += $line->multicurrency_total_tva; + $multicurrency_amount_ttc[$line->tva_tx] += $line->multicurrency_total_ttc; $i++; } } From ea83b9c11cce2d1f3b68cffe4a54768d6f8e2a6f Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sun, 6 Feb 2022 13:56:57 +0100 Subject: [PATCH 008/225] FIX Propal - Missing field import_key in import propal line --- .../install/mysql/migration/13.0.0-14.0.0.sql | 2 + htdocs/install/mysql/tables/llx_propaldet.sql | 93 ++++++++++--------- 2 files changed, 50 insertions(+), 45 deletions(-) diff --git a/htdocs/install/mysql/migration/13.0.0-14.0.0.sql b/htdocs/install/mysql/migration/13.0.0-14.0.0.sql index ac032d3541d..d03d6b1f75c 100644 --- a/htdocs/install/mysql/migration/13.0.0-14.0.0.sql +++ b/htdocs/install/mysql/migration/13.0.0-14.0.0.sql @@ -649,3 +649,5 @@ ALTER TABLE llx_facture_fourn CHANGE COLUMN fk_mode_transport fk_transport_mode ALTER TABLE llx_c_socialnetworks DROP INDEX idx_c_socialnetworks_code; ALTER TABLE llx_c_socialnetworks ADD UNIQUE INDEX idx_c_socialnetworks_code_entity (code, entity); + +ALTER TABLE llx_propaldet ADD COLUMN import_key varchar(14); diff --git a/htdocs/install/mysql/tables/llx_propaldet.sql b/htdocs/install/mysql/tables/llx_propaldet.sql index 7156d90af2f..6b4699d3188 100644 --- a/htdocs/install/mysql/tables/llx_propaldet.sql +++ b/htdocs/install/mysql/tables/llx_propaldet.sql @@ -1,8 +1,9 @@ -- =================================================================== --- Copyright (C) 2002-2003 Rodolphe Quiedeville --- Copyright (C) 2005-2012 Regis Houssin --- Copyright (C) 2010 Juanjo Menent --- Copyright (C) 2012 Cédric Salvador +-- Copyright (C) 2002-2003 Rodolphe Quiedeville +-- Copyright (C) 2005-2012 Regis Houssin +-- Copyright (C) 2010 Juanjo Menent +-- Copyright (C) 2012 Cédric Salvador +-- Copyright (C) 2022 OpenDSI -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by @@ -21,47 +22,49 @@ create table llx_propaldet ( - rowid integer AUTO_INCREMENT PRIMARY KEY, - fk_propal integer NOT NULL, - fk_parent_line integer NULL, - fk_product integer NULL, - label varchar(255) DEFAULT NULL, - description text, - fk_remise_except integer NULL, -- Lien vers table des remises fixes - vat_src_code varchar(10) DEFAULT '', -- Vat code used as source of vat fields. Not strict foreign key here. - tva_tx double(6,3) DEFAULT 0, -- Vat rate - localtax1_tx double(6,3) DEFAULT 0, -- localtax1 rate - localtax1_type varchar(10) NULL, -- localtax1 type - localtax2_tx double(6,3) DEFAULT 0, -- localtax2 rate - localtax2_type varchar(10) NULL, -- localtax2 type - qty real, -- quantity - remise_percent real DEFAULT 0, -- pourcentage de remise - remise real DEFAULT 0, -- montant de la remise (obsolete) - price real, -- prix final (obsolete) - subprice double(24,8) DEFAULT 0, -- prix unitaire article - total_ht double(24,8) DEFAULT 0, -- Total HT de la ligne toute quantite et incluant remise ligne et globale - total_tva double(24,8) DEFAULT 0, -- Total TVA de la ligne toute quantite et incluant remise ligne et globale - total_localtax1 double(24,8) DEFAULT 0, -- Total localtax1 - total_localtax2 double(24,8) DEFAULT 0, -- Total localtax2 - total_ttc double(24,8) DEFAULT 0, -- Total TTC de la ligne toute quantite et incluant remise ligne et globale - product_type integer DEFAULT 0, -- 0 or 1. Value 9 may be used by some modules (amount of line may not be included into generated discount if value is 9). - date_start datetime DEFAULT NULL, -- date debut si service - date_end datetime DEFAULT NULL, -- date fin si service - info_bits integer DEFAULT 0, -- TVA NPR ou non - - buy_price_ht double(24,8) DEFAULT 0, -- buying price - fk_product_fournisseur_price integer DEFAULT NULL, -- reference of supplier price when line was added (may be used to update buy_price_ht current price when future invoice will be created) - - special_code integer DEFAULT 0, -- code for special lines (may be 1=transport, 2=ecotax, 3=option, moduleid=...) - rang integer DEFAULT 0, -- ordre affichage sur la propal - fk_unit integer DEFAULT NULL, -- lien vers table des unités - - fk_multicurrency integer, - multicurrency_code varchar(255), - multicurrency_subprice double(24,8) DEFAULT 0, - multicurrency_total_ht double(24,8) DEFAULT 0, - multicurrency_total_tva double(24,8) DEFAULT 0, - multicurrency_total_ttc double(24,8) DEFAULT 0 + rowid integer AUTO_INCREMENT PRIMARY KEY, + fk_propal integer NOT NULL, + fk_parent_line integer NULL, + fk_product integer NULL, + label varchar(255) DEFAULT NULL, + description text, + fk_remise_except integer NULL, -- Lien vers table des remises fixes + vat_src_code varchar(10) DEFAULT '', -- Vat code used as source of vat fields. Not strict foreign key here. + tva_tx double(6,3) DEFAULT 0, -- Vat rate + localtax1_tx double(6,3) DEFAULT 0, -- localtax1 rate + localtax1_type varchar(10) NULL, -- localtax1 type + localtax2_tx double(6,3) DEFAULT 0, -- localtax2 rate + localtax2_type varchar(10) NULL, -- localtax2 type + qty real, -- quantity + remise_percent real DEFAULT 0, -- pourcentage de remise + remise real DEFAULT 0, -- montant de la remise (obsolete) + price real, -- prix final (obsolete) + subprice double(24,8) DEFAULT 0, -- prix unitaire article + total_ht double(24,8) DEFAULT 0, -- Total HT de la ligne toute quantite et incluant remise ligne et globale + total_tva double(24,8) DEFAULT 0, -- Total TVA de la ligne toute quantite et incluant remise ligne et globale + total_localtax1 double(24,8) DEFAULT 0, -- Total localtax1 + total_localtax2 double(24,8) DEFAULT 0, -- Total localtax2 + total_ttc double(24,8) DEFAULT 0, -- Total TTC de la ligne toute quantite et incluant remise ligne et globale + product_type integer DEFAULT 0, -- 0 or 1. Value 9 may be used by some modules (amount of line may not be included into generated discount if value is 9). + date_start datetime DEFAULT NULL, -- date debut si service + date_end datetime DEFAULT NULL, -- date fin si service + info_bits integer DEFAULT 0, -- TVA NPR ou non + + buy_price_ht double(24,8) DEFAULT 0, -- buying price + fk_product_fournisseur_price integer DEFAULT NULL, -- reference of supplier price when line was added (may be used to update buy_price_ht current price when future invoice will be created) + + special_code integer DEFAULT 0, -- code for special lines (may be 1=transport, 2=ecotax, 3=option, moduleid=...) + rang integer DEFAULT 0, -- ordre affichage sur la propal + fk_unit integer DEFAULT NULL, -- lien vers table des unités + + fk_multicurrency integer, + multicurrency_code varchar(255), + multicurrency_subprice double(24,8) DEFAULT 0, + multicurrency_total_ht double(24,8) DEFAULT 0, + multicurrency_total_tva double(24,8) DEFAULT 0, + multicurrency_total_ttc double(24,8) DEFAULT 0, + + import_key varchar(14) )ENGINE=innodb; -- From b18b049dcac108e2b518dbf532ff86c7ec6d140f Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Sun, 6 Feb 2022 22:55:37 +0100 Subject: [PATCH 009/225] FIX api product with subproduct --- htdocs/product/class/api_products.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/product/class/api_products.class.php b/htdocs/product/class/api_products.class.php index 91edbe5eaff..ec735da3865 100644 --- a/htdocs/product/class/api_products.class.php +++ b/htdocs/product/class/api_products.class.php @@ -479,7 +479,7 @@ class Products extends DolibarrApi $childsArbo = $this->product->getChildsArbo($id, 1); - $keys = array('rowid', 'qty', 'fk_product_type', 'label', 'incdec', 'ref'); + $keys = array('rowid', 'qty', 'fk_product_type', 'label', 'incdec', 'ref', 'fk_association', 'rang'); $childs = array(); foreach ($childsArbo as $values) { $childs[] = array_combine($keys, $values); @@ -2049,7 +2049,7 @@ class Products extends DolibarrApi if ($includesubproducts) { $childsArbo = $this->product->getChildsArbo($id, 1); - $keys = array('rowid', 'qty', 'fk_product_type', 'label', 'incdec'); + $keys = array('rowid', 'qty', 'fk_product_type', 'label', 'incdec', 'ref', 'fk_association', 'rang'); $childs = array(); foreach ($childsArbo as $values) { $childs[] = array_combine($keys, $values); From 3e4150fbc23ed40cfd0b47c1c82ef6b1ea4f45ab Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Mon, 7 Feb 2022 05:02:59 +0100 Subject: [PATCH 010/225] Translation --- htdocs/install/mysql/tables/llx_propaldet.sql | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/htdocs/install/mysql/tables/llx_propaldet.sql b/htdocs/install/mysql/tables/llx_propaldet.sql index 6b4699d3188..fea9bad9bdc 100644 --- a/htdocs/install/mysql/tables/llx_propaldet.sql +++ b/htdocs/install/mysql/tables/llx_propaldet.sql @@ -28,7 +28,7 @@ create table llx_propaldet fk_product integer NULL, label varchar(255) DEFAULT NULL, description text, - fk_remise_except integer NULL, -- Lien vers table des remises fixes + fk_remise_except integer NULL, -- Link to table of fixed discounts vat_src_code varchar(10) DEFAULT '', -- Vat code used as source of vat fields. Not strict foreign key here. tva_tx double(6,3) DEFAULT 0, -- Vat rate localtax1_tx double(6,3) DEFAULT 0, -- localtax1 rate @@ -36,26 +36,26 @@ create table llx_propaldet localtax2_tx double(6,3) DEFAULT 0, -- localtax2 rate localtax2_type varchar(10) NULL, -- localtax2 type qty real, -- quantity - remise_percent real DEFAULT 0, -- pourcentage de remise - remise real DEFAULT 0, -- montant de la remise (obsolete) - price real, -- prix final (obsolete) - subprice double(24,8) DEFAULT 0, -- prix unitaire article - total_ht double(24,8) DEFAULT 0, -- Total HT de la ligne toute quantite et incluant remise ligne et globale - total_tva double(24,8) DEFAULT 0, -- Total TVA de la ligne toute quantite et incluant remise ligne et globale + remise_percent real DEFAULT 0, -- discount percentage + remise real DEFAULT 0, -- discount amount (obsolete) + price real, -- final price (obsolete) + subprice double(24,8) DEFAULT 0, -- unit price article + total_ht double(24,8) DEFAULT 0, -- Total excluding VAT of the line all quantities and including line and global discount + total_tva double(24,8) DEFAULT 0, -- Total VAT of the line any quantity and including discount line and global total_localtax1 double(24,8) DEFAULT 0, -- Total localtax1 total_localtax2 double(24,8) DEFAULT 0, -- Total localtax2 - total_ttc double(24,8) DEFAULT 0, -- Total TTC de la ligne toute quantite et incluant remise ligne et globale + total_ttc double(24,8) DEFAULT 0, -- Total TTC of the line all quantity and including line and global discount product_type integer DEFAULT 0, -- 0 or 1. Value 9 may be used by some modules (amount of line may not be included into generated discount if value is 9). - date_start datetime DEFAULT NULL, -- date debut si service - date_end datetime DEFAULT NULL, -- date fin si service - info_bits integer DEFAULT 0, -- TVA NPR ou non + date_start datetime DEFAULT NULL, -- start date if service + date_end datetime DEFAULT NULL, -- end date if service + info_bits integer DEFAULT 0, -- VAT NPR or not buy_price_ht double(24,8) DEFAULT 0, -- buying price fk_product_fournisseur_price integer DEFAULT NULL, -- reference of supplier price when line was added (may be used to update buy_price_ht current price when future invoice will be created) special_code integer DEFAULT 0, -- code for special lines (may be 1=transport, 2=ecotax, 3=option, moduleid=...) - rang integer DEFAULT 0, -- ordre affichage sur la propal - fk_unit integer DEFAULT NULL, -- lien vers table des unités + rang integer DEFAULT 0, -- order display on the propal + fk_unit integer DEFAULT NULL, -- link to table of units fk_multicurrency integer, multicurrency_code varchar(255), @@ -68,9 +68,9 @@ create table llx_propaldet )ENGINE=innodb; -- --- Liste des codes pour special_code +-- List of codes for special_code -- --- 1 : frais de port --- 2 : ecotaxe --- 3 : produit/service propose en option +-- 1 : shipping costs +-- 2 : ecotax +-- 3 : optional product/service -- From 75653395fd127e93e782bdb437c96fd7c491642b Mon Sep 17 00:00:00 2001 From: kamel Date: Mon, 7 Feb 2022 10:12:41 +0100 Subject: [PATCH 011/225] NEW: Update variants to standard card and list (SQL) --- htdocs/install/mysql/migration/15.0.0-16.0.0.sql | 5 +++++ .../install/mysql/tables/llx_product_attribute.sql | 12 ++++++------ .../mysql/tables/llx_product_attribute_value.sql | 11 ++++++----- 3 files changed, 17 insertions(+), 11 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 d0aac914cb9..f4ff7b3bbcf 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 @@ -96,3 +96,8 @@ CREATE TABLE llx_stock_mouvement_extrafields ( )ENGINE=innodb; ALTER TABLE llx_mrp_mo ADD COLUMN fk_parent_line integer; + +ALTER TABLE llx_product_attribute_value MODIFY COLUMN ref VARCHAR(180) NOT NULL; +ALTER TABLE llx_product_attribute_value MODIFY COLUMN value VARCHAR(255) NOT NULL; +ALTER TABLE llx_product_attribute_value ADD COLUMN position INTEGER NOT NULL DEFAULT 0; +ALTER TABLE llx_product_attribute CHANGE rang position INTEGER DEFAULT 0 NOT NULL; diff --git a/htdocs/install/mysql/tables/llx_product_attribute.sql b/htdocs/install/mysql/tables/llx_product_attribute.sql index 362c104b95c..e4e60719046 100644 --- a/htdocs/install/mysql/tables/llx_product_attribute.sql +++ b/htdocs/install/mysql/tables/llx_product_attribute.sql @@ -21,10 +21,10 @@ CREATE TABLE llx_product_attribute ( - rowid INT PRIMARY KEY NOT NULL AUTO_INCREMENT, - ref VARCHAR(255) NOT NULL, - ref_ext VARCHAR(255) NULL, - label VARCHAR(255) NOT NULL, - rang INT DEFAULT 0 NOT NULL, - entity INT DEFAULT 1 NOT NULL + rowid INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, + ref VARCHAR(255) NOT NULL, + ref_ext VARCHAR(255) NULL, + label VARCHAR(255) NOT NULL, + position INTEGER DEFAULT 0 NOT NULL, + entity INTEGER DEFAULT 1 NOT NULL )ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_product_attribute_value.sql b/htdocs/install/mysql/tables/llx_product_attribute_value.sql index 09e7d325d0d..e6821976ed2 100644 --- a/htdocs/install/mysql/tables/llx_product_attribute_value.sql +++ b/htdocs/install/mysql/tables/llx_product_attribute_value.sql @@ -21,9 +21,10 @@ CREATE TABLE llx_product_attribute_value ( - rowid INT PRIMARY KEY NOT NULL AUTO_INCREMENT, - fk_product_attribute INT NOT NULL, - ref VARCHAR(180) DEFAULT NULL, - value VARCHAR(255) DEFAULT NULL, - entity INT DEFAULT 1 NOT NULL + rowid INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, + fk_product_attribute INTEGER NOT NULL, + ref VARCHAR(180) NOT NULL, + value VARCHAR(255) NOT NULL, + entity INTEGER DEFAULT 1 NOT NULL, + position INTEGER NOT NULL DEFAULT 0 )ENGINE=innodb; From 31ca78acda3086db335af327fcfee28e3b74f290 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 7 Feb 2022 14:25:20 +0100 Subject: [PATCH 012/225] Sync transifex. Fix install. --- htdocs/admin/accountant.php | 4 +- htdocs/admin/company.php | 2 +- htdocs/admin/company_socialnetworks.php | 4 +- htdocs/admin/openinghours.php | 4 +- htdocs/install/step4.php | 4 +- htdocs/install/step5.php | 85 +-- htdocs/langs/.gitignore | 1 + htdocs/langs/am_ET/admin.lang | 10 +- htdocs/langs/am_ET/bills.lang | 19 +- htdocs/langs/am_ET/blockedlog.lang | 5 +- htdocs/langs/am_ET/errors.lang | 4 + htdocs/langs/am_ET/eventorganization.lang | 17 +- htdocs/langs/am_ET/holiday.lang | 2 + htdocs/langs/am_ET/knowledgemanagement.lang | 4 + htdocs/langs/am_ET/mrp.lang | 2 +- htdocs/langs/am_ET/other.lang | 1 + htdocs/langs/am_ET/products.lang | 1 + htdocs/langs/am_ET/projects.lang | 2 + htdocs/langs/am_ET/receptions.lang | 12 +- htdocs/langs/ar_DZ/admin.lang | 10 +- htdocs/langs/ar_DZ/bills.lang | 19 +- htdocs/langs/ar_DZ/blockedlog.lang | 3 + htdocs/langs/ar_DZ/errors.lang | 4 + htdocs/langs/ar_DZ/eventorganization.lang | 17 +- htdocs/langs/ar_DZ/holiday.lang | 2 + htdocs/langs/ar_DZ/knowledgemanagement.lang | 4 + htdocs/langs/ar_DZ/mrp.lang | 2 +- htdocs/langs/ar_DZ/other.lang | 1 + htdocs/langs/ar_DZ/products.lang | 1 + htdocs/langs/ar_DZ/projects.lang | 2 + htdocs/langs/ar_DZ/receptions.lang | 12 +- htdocs/langs/ar_EG/admin.lang | 4 +- htdocs/langs/ar_EG/main.lang | 3 + htdocs/langs/ar_EG/printing.lang | 6 + htdocs/langs/ar_JO/admin.lang | 10 +- htdocs/langs/ar_JO/bills.lang | 19 +- htdocs/langs/ar_JO/blockedlog.lang | 3 + htdocs/langs/ar_JO/errors.lang | 4 + htdocs/langs/ar_JO/eventorganization.lang | 17 +- htdocs/langs/ar_JO/holiday.lang | 2 + htdocs/langs/ar_JO/knowledgemanagement.lang | 4 + htdocs/langs/ar_JO/mrp.lang | 2 +- htdocs/langs/ar_JO/other.lang | 1 + htdocs/langs/ar_JO/products.lang | 1 + htdocs/langs/ar_JO/projects.lang | 2 + htdocs/langs/ar_JO/receptions.lang | 12 +- htdocs/langs/ar_SA/admin.lang | 30 +- htdocs/langs/ar_SA/bills.lang | 19 +- htdocs/langs/ar_SA/blockedlog.lang | 5 +- htdocs/langs/ar_SA/errors.lang | 4 + htdocs/langs/ar_SA/eventorganization.lang | 17 +- htdocs/langs/ar_SA/holiday.lang | 2 + htdocs/langs/ar_SA/knowledgemanagement.lang | 4 + htdocs/langs/ar_SA/mrp.lang | 2 +- htdocs/langs/ar_SA/other.lang | 1 + htdocs/langs/ar_SA/printing.lang | 14 +- htdocs/langs/ar_SA/productbatch.lang | 34 +- htdocs/langs/ar_SA/products.lang | 1 + htdocs/langs/ar_SA/projects.lang | 2 + htdocs/langs/ar_SA/receptions.lang | 12 +- htdocs/langs/az_AZ/admin.lang | 10 +- htdocs/langs/az_AZ/bills.lang | 19 +- htdocs/langs/az_AZ/blockedlog.lang | 5 +- htdocs/langs/az_AZ/errors.lang | 4 + htdocs/langs/az_AZ/eventorganization.lang | 17 +- htdocs/langs/az_AZ/holiday.lang | 2 + htdocs/langs/az_AZ/knowledgemanagement.lang | 4 + htdocs/langs/az_AZ/mrp.lang | 2 +- htdocs/langs/az_AZ/other.lang | 1 + htdocs/langs/az_AZ/products.lang | 1 + htdocs/langs/az_AZ/projects.lang | 2 + htdocs/langs/az_AZ/receptions.lang | 12 +- htdocs/langs/bg_BG/admin.lang | 10 +- htdocs/langs/bg_BG/bills.lang | 19 +- htdocs/langs/bg_BG/blockedlog.lang | 5 +- htdocs/langs/bg_BG/errors.lang | 4 + htdocs/langs/bg_BG/eventorganization.lang | 17 +- htdocs/langs/bg_BG/holiday.lang | 2 + htdocs/langs/bg_BG/knowledgemanagement.lang | 4 + htdocs/langs/bg_BG/mrp.lang | 2 +- htdocs/langs/bg_BG/other.lang | 1 + htdocs/langs/bg_BG/products.lang | 1 + htdocs/langs/bg_BG/projects.lang | 2 + htdocs/langs/bg_BG/receptions.lang | 12 +- htdocs/langs/bn_BD/admin.lang | 10 +- htdocs/langs/bn_BD/bills.lang | 19 +- htdocs/langs/bn_BD/blockedlog.lang | 5 +- htdocs/langs/bn_BD/errors.lang | 4 + htdocs/langs/bn_BD/eventorganization.lang | 17 +- htdocs/langs/bn_BD/holiday.lang | 2 + htdocs/langs/bn_BD/knowledgemanagement.lang | 4 + htdocs/langs/bn_BD/mrp.lang | 2 +- htdocs/langs/bn_BD/other.lang | 1 + htdocs/langs/bn_BD/products.lang | 1 + htdocs/langs/bn_BD/projects.lang | 2 + htdocs/langs/bn_BD/receptions.lang | 12 +- htdocs/langs/bn_IN/admin.lang | 10 +- htdocs/langs/bn_IN/bills.lang | 19 +- htdocs/langs/bn_IN/blockedlog.lang | 5 +- htdocs/langs/bn_IN/errors.lang | 4 + htdocs/langs/bn_IN/eventorganization.lang | 17 +- htdocs/langs/bn_IN/holiday.lang | 2 + htdocs/langs/bn_IN/knowledgemanagement.lang | 4 + htdocs/langs/bn_IN/mrp.lang | 2 +- htdocs/langs/bn_IN/other.lang | 1 + htdocs/langs/bn_IN/products.lang | 1 + htdocs/langs/bn_IN/projects.lang | 2 + htdocs/langs/bn_IN/receptions.lang | 12 +- htdocs/langs/bs_BA/admin.lang | 10 +- htdocs/langs/bs_BA/bills.lang | 19 +- htdocs/langs/bs_BA/blockedlog.lang | 5 +- htdocs/langs/bs_BA/errors.lang | 4 + htdocs/langs/bs_BA/eventorganization.lang | 17 +- htdocs/langs/bs_BA/holiday.lang | 2 + htdocs/langs/bs_BA/knowledgemanagement.lang | 4 + htdocs/langs/bs_BA/mrp.lang | 2 +- htdocs/langs/bs_BA/other.lang | 1 + htdocs/langs/bs_BA/products.lang | 1 + htdocs/langs/bs_BA/projects.lang | 2 + htdocs/langs/bs_BA/receptions.lang | 12 +- htdocs/langs/ca_ES/accountancy.lang | 36 +- htdocs/langs/ca_ES/admin.lang | 140 ++--- htdocs/langs/ca_ES/agenda.lang | 2 +- htdocs/langs/ca_ES/banks.lang | 2 +- htdocs/langs/ca_ES/bills.lang | 29 +- htdocs/langs/ca_ES/blockedlog.lang | 5 +- htdocs/langs/ca_ES/bookmarks.lang | 4 +- htdocs/langs/ca_ES/cashdesk.lang | 12 +- htdocs/langs/ca_ES/commercial.lang | 4 +- htdocs/langs/ca_ES/companies.lang | 24 +- htdocs/langs/ca_ES/compta.lang | 32 +- htdocs/langs/ca_ES/ecm.lang | 4 +- htdocs/langs/ca_ES/errors.lang | 12 +- htdocs/langs/ca_ES/eventorganization.lang | 59 ++- htdocs/langs/ca_ES/help.lang | 2 +- htdocs/langs/ca_ES/holiday.lang | 6 +- htdocs/langs/ca_ES/hrm.lang | 114 ++-- htdocs/langs/ca_ES/install.lang | 2 +- htdocs/langs/ca_ES/knowledgemanagement.lang | 4 + htdocs/langs/ca_ES/languages.lang | 8 +- htdocs/langs/ca_ES/ldap.lang | 6 +- htdocs/langs/ca_ES/mails.lang | 2 +- htdocs/langs/ca_ES/main.lang | 24 +- htdocs/langs/ca_ES/members.lang | 10 +- htdocs/langs/ca_ES/modulebuilder.lang | 4 +- htdocs/langs/ca_ES/mrp.lang | 8 +- htdocs/langs/ca_ES/oauth.lang | 6 +- htdocs/langs/ca_ES/opensurvey.lang | 4 +- htdocs/langs/ca_ES/other.lang | 17 +- htdocs/langs/ca_ES/partnership.lang | 4 +- htdocs/langs/ca_ES/paybox.lang | 2 +- htdocs/langs/ca_ES/paypal.lang | 10 +- htdocs/langs/ca_ES/printing.lang | 12 +- htdocs/langs/ca_ES/productbatch.lang | 8 +- htdocs/langs/ca_ES/products.lang | 21 +- htdocs/langs/ca_ES/projects.lang | 6 +- htdocs/langs/ca_ES/propal.lang | 16 +- htdocs/langs/ca_ES/receptions.lang | 14 +- htdocs/langs/ca_ES/salaries.lang | 3 +- htdocs/langs/ca_ES/sendings.lang | 2 +- htdocs/langs/ca_ES/stocks.lang | 28 +- htdocs/langs/ca_ES/stripe.lang | 4 +- htdocs/langs/ca_ES/ticket.lang | 4 +- htdocs/langs/ca_ES/trips.lang | 10 +- htdocs/langs/ca_ES/website.lang | 4 +- htdocs/langs/ca_ES/withdrawals.lang | 8 +- htdocs/langs/ca_ES/workflow.lang | 6 +- htdocs/langs/ca_ES/zapier.lang | 2 +- htdocs/langs/cs_CZ/admin.lang | 10 +- htdocs/langs/cs_CZ/bills.lang | 19 +- htdocs/langs/cs_CZ/blockedlog.lang | 5 +- htdocs/langs/cs_CZ/errors.lang | 4 + htdocs/langs/cs_CZ/eventorganization.lang | 17 +- htdocs/langs/cs_CZ/holiday.lang | 2 + htdocs/langs/cs_CZ/knowledgemanagement.lang | 4 + htdocs/langs/cs_CZ/mrp.lang | 2 +- htdocs/langs/cs_CZ/other.lang | 1 + htdocs/langs/cs_CZ/products.lang | 1 + htdocs/langs/cs_CZ/projects.lang | 2 + htdocs/langs/cs_CZ/receptions.lang | 12 +- htdocs/langs/da_DK/admin.lang | 22 +- htdocs/langs/da_DK/bills.lang | 19 +- htdocs/langs/da_DK/blockedlog.lang | 5 +- htdocs/langs/da_DK/companies.lang | 12 +- htdocs/langs/da_DK/errors.lang | 4 + htdocs/langs/da_DK/eventorganization.lang | 17 +- htdocs/langs/da_DK/holiday.lang | 2 + htdocs/langs/da_DK/knowledgemanagement.lang | 12 +- htdocs/langs/da_DK/mrp.lang | 2 +- htdocs/langs/da_DK/other.lang | 1 + htdocs/langs/da_DK/products.lang | 1 + htdocs/langs/da_DK/projects.lang | 2 + htdocs/langs/da_DK/receptions.lang | 12 +- htdocs/langs/de_AT/admin.lang | 4 + htdocs/langs/de_CH/admin.lang | 7 +- htdocs/langs/de_CH/bills.lang | 7 +- htdocs/langs/de_CH/projects.lang | 1 + htdocs/langs/de_CH/receptions.lang | 1 - htdocs/langs/de_DE/admin.lang | 30 +- htdocs/langs/de_DE/bills.lang | 1 + htdocs/langs/de_DE/blockedlog.lang | 3 + htdocs/langs/de_DE/boxes.lang | 2 +- htdocs/langs/de_DE/companies.lang | 12 +- htdocs/langs/de_DE/errors.lang | 4 + htdocs/langs/de_DE/eventorganization.lang | 15 +- htdocs/langs/de_DE/exports.lang | 2 +- htdocs/langs/de_DE/holiday.lang | 2 + htdocs/langs/de_DE/interventions.lang | 32 +- htdocs/langs/de_DE/knowledgemanagement.lang | 4 + htdocs/langs/de_DE/mrp.lang | 2 +- htdocs/langs/de_DE/other.lang | 1 + htdocs/langs/de_DE/products.lang | 1 + htdocs/langs/de_DE/projects.lang | 10 +- htdocs/langs/de_DE/receptions.lang | 10 +- htdocs/langs/el_CY/admin.lang | 3 + htdocs/langs/el_GR/accountancy.lang | 2 +- htdocs/langs/el_GR/admin.lang | 56 +- htdocs/langs/el_GR/bills.lang | 15 +- htdocs/langs/el_GR/blockedlog.lang | 3 + htdocs/langs/el_GR/boxes.lang | 40 +- htdocs/langs/el_GR/cashdesk.lang | 72 +-- htdocs/langs/el_GR/categories.lang | 44 +- htdocs/langs/el_GR/companies.lang | 42 +- htdocs/langs/el_GR/compta.lang | 14 +- htdocs/langs/el_GR/errors.lang | 4 + htdocs/langs/el_GR/eventorganization.lang | 17 +- htdocs/langs/el_GR/holiday.lang | 2 + htdocs/langs/el_GR/knowledgemanagement.lang | 4 + htdocs/langs/el_GR/mrp.lang | 2 +- htdocs/langs/el_GR/other.lang | 1 + htdocs/langs/el_GR/products.lang | 1 + htdocs/langs/el_GR/projects.lang | 118 +++-- htdocs/langs/el_GR/receptions.lang | 12 +- htdocs/langs/el_GR/ticket.lang | 272 +++++----- htdocs/langs/en_AE/admin.lang | 4 + htdocs/langs/en_AE/companies.lang | 7 + htdocs/langs/en_AE/receptions.lang | 2 - htdocs/langs/en_AU/admin.lang | 4 + htdocs/langs/en_CA/admin.lang | 4 + htdocs/langs/en_GB/admin.lang | 4 + htdocs/langs/en_IN/admin.lang | 4 + htdocs/langs/en_SG/admin.lang | 4 + htdocs/langs/en_SG/companies.lang | 7 + htdocs/langs/en_US/admin.lang | 4 +- htdocs/langs/en_ZA/admin.lang | 4 + htdocs/langs/en_ZA/companies.lang | 7 + htdocs/langs/en_ZA/receptions.lang | 2 - htdocs/langs/es_AR/admin.lang | 3 +- htdocs/langs/es_AR/receptions.lang | 2 - htdocs/langs/es_BO/admin.lang | 2 + htdocs/langs/es_BO/companies.lang | 7 + htdocs/langs/es_CL/admin.lang | 8 +- htdocs/langs/es_CL/bills.lang | 2 +- htdocs/langs/es_CL/receptions.lang | 1 - htdocs/langs/es_CO/accountancy.lang | 3 + htdocs/langs/es_CO/admin.lang | 44 +- htdocs/langs/es_CO/bills.lang | 2 +- htdocs/langs/es_CO/blockedlog.lang | 3 + htdocs/langs/es_CO/bookmarks.lang | 1 + htdocs/langs/es_CO/companies.lang | 4 + htdocs/langs/es_CO/compta.lang | 2 + htdocs/langs/es_CO/errors.lang | 1 + htdocs/langs/es_CO/eventorganization.lang | 4 +- htdocs/langs/es_CO/holiday.lang | 1 + htdocs/langs/es_CO/knowledgemanagement.lang | 1 + htdocs/langs/es_CO/main.lang | 7 +- htdocs/langs/es_CO/modulebuilder.lang | 1 + htdocs/langs/es_CO/mrp.lang | 3 +- htdocs/langs/es_CO/other.lang | 4 + htdocs/langs/es_CO/partnership.lang | 1 + htdocs/langs/es_CO/productbatch.lang | 1 + htdocs/langs/es_CO/products.lang | 4 + htdocs/langs/es_CO/projects.lang | 1 + htdocs/langs/es_CO/receptions.lang | 2 +- htdocs/langs/es_CO/stocks.lang | 4 + htdocs/langs/es_CO/stripe.lang | 1 + htdocs/langs/es_CO/withdrawals.lang | 3 + htdocs/langs/es_DO/admin.lang | 2 + htdocs/langs/es_DO/companies.lang | 7 + htdocs/langs/es_EC/admin.lang | 6 +- htdocs/langs/es_EC/bills.lang | 2 +- htdocs/langs/es_EC/blockedlog.lang | 1 - htdocs/langs/es_EC/mrp.lang | 1 - htdocs/langs/es_EC/receptions.lang | 2 - htdocs/langs/es_ES/accountancy.lang | 2 +- htdocs/langs/es_ES/admin.lang | 192 +++---- htdocs/langs/es_ES/assets.lang | 2 + htdocs/langs/es_ES/banks.lang | 8 +- htdocs/langs/es_ES/bills.lang | 17 +- htdocs/langs/es_ES/blockedlog.lang | 5 +- htdocs/langs/es_ES/bookmarks.lang | 2 +- htdocs/langs/es_ES/companies.lang | 24 +- htdocs/langs/es_ES/cron.lang | 2 +- htdocs/langs/es_ES/errors.lang | 4 + htdocs/langs/es_ES/eventorganization.lang | 17 +- htdocs/langs/es_ES/holiday.lang | 2 + htdocs/langs/es_ES/knowledgemanagement.lang | 4 + htdocs/langs/es_ES/main.lang | 26 +- htdocs/langs/es_ES/mrp.lang | 4 +- htdocs/langs/es_ES/other.lang | 1 + htdocs/langs/es_ES/products.lang | 1 + htdocs/langs/es_ES/projects.lang | 2 + htdocs/langs/es_ES/receptions.lang | 3 +- htdocs/langs/es_GT/admin.lang | 2 + htdocs/langs/es_GT/companies.lang | 7 + htdocs/langs/es_HN/admin.lang | 2 + htdocs/langs/es_HN/companies.lang | 7 + htdocs/langs/es_MX/admin.lang | 4 +- htdocs/langs/es_MX/bills.lang | 1 + htdocs/langs/es_MX/companies.lang | 13 + htdocs/langs/es_MX/exports.lang | 1 + htdocs/langs/es_MX/main.lang | 22 + htdocs/langs/es_PA/admin.lang | 2 + htdocs/langs/es_PA/companies.lang | 7 + htdocs/langs/es_PE/admin.lang | 2 + htdocs/langs/es_PE/mrp.lang | 2 +- htdocs/langs/es_PY/admin.lang | 2 + htdocs/langs/es_PY/companies.lang | 7 + htdocs/langs/es_US/admin.lang | 2 + htdocs/langs/es_US/companies.lang | 7 + htdocs/langs/es_UY/admin.lang | 2 + htdocs/langs/es_UY/companies.lang | 7 + htdocs/langs/es_VE/admin.lang | 3 + htdocs/langs/es_VE/commercial.lang | 16 + htdocs/langs/es_VE/companies.lang | 8 + htdocs/langs/et_EE/admin.lang | 10 +- htdocs/langs/et_EE/bills.lang | 19 +- htdocs/langs/et_EE/blockedlog.lang | 5 +- htdocs/langs/et_EE/errors.lang | 4 + htdocs/langs/et_EE/eventorganization.lang | 17 +- htdocs/langs/et_EE/holiday.lang | 2 + htdocs/langs/et_EE/knowledgemanagement.lang | 4 + htdocs/langs/et_EE/mrp.lang | 2 +- htdocs/langs/et_EE/other.lang | 1 + htdocs/langs/et_EE/products.lang | 1 + htdocs/langs/et_EE/projects.lang | 2 + htdocs/langs/et_EE/receptions.lang | 12 +- htdocs/langs/eu_ES/admin.lang | 10 +- htdocs/langs/eu_ES/bills.lang | 19 +- htdocs/langs/eu_ES/blockedlog.lang | 5 +- htdocs/langs/eu_ES/errors.lang | 4 + htdocs/langs/eu_ES/eventorganization.lang | 17 +- htdocs/langs/eu_ES/holiday.lang | 2 + htdocs/langs/eu_ES/knowledgemanagement.lang | 4 + htdocs/langs/eu_ES/mrp.lang | 2 +- htdocs/langs/eu_ES/other.lang | 1 + htdocs/langs/eu_ES/products.lang | 1 + htdocs/langs/eu_ES/projects.lang | 2 + htdocs/langs/eu_ES/receptions.lang | 12 +- htdocs/langs/fa_IR/admin.lang | 10 +- htdocs/langs/fa_IR/bills.lang | 19 +- htdocs/langs/fa_IR/blockedlog.lang | 5 +- htdocs/langs/fa_IR/errors.lang | 4 + htdocs/langs/fa_IR/eventorganization.lang | 17 +- htdocs/langs/fa_IR/holiday.lang | 2 + htdocs/langs/fa_IR/knowledgemanagement.lang | 4 + htdocs/langs/fa_IR/mrp.lang | 2 +- htdocs/langs/fa_IR/other.lang | 1 + htdocs/langs/fa_IR/products.lang | 1 + htdocs/langs/fa_IR/projects.lang | 2 + htdocs/langs/fa_IR/receptions.lang | 12 +- htdocs/langs/fi_FI/admin.lang | 10 +- htdocs/langs/fi_FI/bills.lang | 19 +- htdocs/langs/fi_FI/blockedlog.lang | 5 +- htdocs/langs/fi_FI/errors.lang | 4 + htdocs/langs/fi_FI/eventorganization.lang | 17 +- htdocs/langs/fi_FI/holiday.lang | 2 + htdocs/langs/fi_FI/knowledgemanagement.lang | 4 + htdocs/langs/fi_FI/mrp.lang | 2 +- htdocs/langs/fi_FI/other.lang | 1 + htdocs/langs/fi_FI/products.lang | 1 + htdocs/langs/fi_FI/projects.lang | 2 + htdocs/langs/fi_FI/receptions.lang | 12 +- htdocs/langs/fr_BE/admin.lang | 4 + htdocs/langs/fr_CA/admin.lang | 4 + htdocs/langs/fr_CA/bills.lang | 4 +- htdocs/langs/fr_CA/receptions.lang | 1 - htdocs/langs/fr_CH/admin.lang | 14 + htdocs/langs/fr_CH/companies.lang | 8 + htdocs/langs/fr_CH/main.lang | 1 + htdocs/langs/fr_CI/admin.lang | 5 + htdocs/langs/fr_CI/companies.lang | 7 + htdocs/langs/fr_CM/admin.lang | 5 + htdocs/langs/fr_CM/companies.lang | 7 + htdocs/langs/fr_FR/accountancy.lang | 10 +- htdocs/langs/fr_FR/admin.lang | 50 +- htdocs/langs/fr_FR/bills.lang | 23 +- htdocs/langs/fr_FR/blockedlog.lang | 3 + htdocs/langs/fr_FR/bookmarks.lang | 2 +- htdocs/langs/fr_FR/boxes.lang | 8 +- htdocs/langs/fr_FR/categories.lang | 2 +- htdocs/langs/fr_FR/companies.lang | 12 +- htdocs/langs/fr_FR/compta.lang | 8 +- htdocs/langs/fr_FR/errors.lang | 8 +- htdocs/langs/fr_FR/eventorganization.lang | 19 +- htdocs/langs/fr_FR/holiday.lang | 2 + htdocs/langs/fr_FR/install.lang | 2 +- htdocs/langs/fr_FR/knowledgemanagement.lang | 4 + htdocs/langs/fr_FR/main.lang | 10 +- htdocs/langs/fr_FR/modulebuilder.lang | 4 +- htdocs/langs/fr_FR/mrp.lang | 4 +- htdocs/langs/fr_FR/other.lang | 9 +- htdocs/langs/fr_FR/partnership.lang | 2 +- htdocs/langs/fr_FR/productbatch.lang | 4 +- htdocs/langs/fr_FR/products.lang | 9 +- htdocs/langs/fr_FR/projects.lang | 2 + htdocs/langs/fr_FR/receptions.lang | 3 +- htdocs/langs/fr_FR/salaries.lang | 2 +- htdocs/langs/fr_FR/stocks.lang | 18 +- htdocs/langs/fr_FR/stripe.lang | 2 +- htdocs/langs/fr_FR/ticket.lang | 2 +- htdocs/langs/fr_FR/website.lang | 2 +- htdocs/langs/fr_FR/withdrawals.lang | 8 +- htdocs/langs/fr_FR/workflow.lang | 8 +- htdocs/langs/fr_GA/admin.lang | 4 + htdocs/langs/gl_ES/accountancy.lang | 4 +- htdocs/langs/gl_ES/admin.lang | 26 +- htdocs/langs/gl_ES/bills.lang | 19 +- htdocs/langs/gl_ES/blockedlog.lang | 5 +- htdocs/langs/gl_ES/companies.lang | 12 +- htdocs/langs/gl_ES/compta.lang | 2 +- htdocs/langs/gl_ES/errors.lang | 4 + htdocs/langs/gl_ES/eventorganization.lang | 17 +- htdocs/langs/gl_ES/holiday.lang | 2 + htdocs/langs/gl_ES/knowledgemanagement.lang | 4 + htdocs/langs/gl_ES/mrp.lang | 2 +- htdocs/langs/gl_ES/other.lang | 1 + htdocs/langs/gl_ES/products.lang | 1 + htdocs/langs/gl_ES/projects.lang | 2 + htdocs/langs/gl_ES/receptions.lang | 12 +- htdocs/langs/gl_ES/stocks.lang | 2 +- htdocs/langs/he_IL/admin.lang | 10 +- htdocs/langs/he_IL/bills.lang | 19 +- htdocs/langs/he_IL/blockedlog.lang | 5 +- htdocs/langs/he_IL/errors.lang | 4 + htdocs/langs/he_IL/eventorganization.lang | 17 +- htdocs/langs/he_IL/holiday.lang | 2 + htdocs/langs/he_IL/knowledgemanagement.lang | 4 + htdocs/langs/he_IL/mrp.lang | 2 +- htdocs/langs/he_IL/other.lang | 1 + htdocs/langs/he_IL/products.lang | 1 + htdocs/langs/he_IL/projects.lang | 2 + htdocs/langs/he_IL/receptions.lang | 12 +- htdocs/langs/hi_IN/admin.lang | 10 +- htdocs/langs/hi_IN/bills.lang | 19 +- htdocs/langs/hi_IN/blockedlog.lang | 5 +- htdocs/langs/hi_IN/errors.lang | 4 + htdocs/langs/hi_IN/eventorganization.lang | 17 +- htdocs/langs/hi_IN/holiday.lang | 2 + htdocs/langs/hi_IN/knowledgemanagement.lang | 4 + htdocs/langs/hi_IN/mrp.lang | 2 +- htdocs/langs/hi_IN/other.lang | 1 + htdocs/langs/hi_IN/products.lang | 1 + htdocs/langs/hi_IN/projects.lang | 2 + htdocs/langs/hi_IN/receptions.lang | 12 +- htdocs/langs/hr_HR/admin.lang | 10 +- htdocs/langs/hr_HR/bills.lang | 19 +- htdocs/langs/hr_HR/blockedlog.lang | 5 +- htdocs/langs/hr_HR/errors.lang | 4 + htdocs/langs/hr_HR/eventorganization.lang | 17 +- htdocs/langs/hr_HR/holiday.lang | 2 + htdocs/langs/hr_HR/knowledgemanagement.lang | 4 + htdocs/langs/hr_HR/mrp.lang | 2 +- htdocs/langs/hr_HR/other.lang | 1 + htdocs/langs/hr_HR/products.lang | 1 + htdocs/langs/hr_HR/projects.lang | 2 + htdocs/langs/hr_HR/receptions.lang | 12 +- htdocs/langs/hu_HU/admin.lang | 10 +- htdocs/langs/hu_HU/bills.lang | 19 +- htdocs/langs/hu_HU/blockedlog.lang | 3 + htdocs/langs/hu_HU/errors.lang | 4 + htdocs/langs/hu_HU/eventorganization.lang | 17 +- htdocs/langs/hu_HU/holiday.lang | 2 + htdocs/langs/hu_HU/knowledgemanagement.lang | 4 + htdocs/langs/hu_HU/mrp.lang | 2 +- htdocs/langs/hu_HU/other.lang | 1 + htdocs/langs/hu_HU/products.lang | 1 + htdocs/langs/hu_HU/projects.lang | 2 + htdocs/langs/hu_HU/receptions.lang | 12 +- htdocs/langs/id_ID/admin.lang | 10 +- htdocs/langs/id_ID/bills.lang | 19 +- htdocs/langs/id_ID/blockedlog.lang | 3 + htdocs/langs/id_ID/errors.lang | 4 + htdocs/langs/id_ID/eventorganization.lang | 17 +- htdocs/langs/id_ID/holiday.lang | 2 + htdocs/langs/id_ID/knowledgemanagement.lang | 4 + htdocs/langs/id_ID/mrp.lang | 2 +- htdocs/langs/id_ID/other.lang | 1 + htdocs/langs/id_ID/products.lang | 1 + htdocs/langs/id_ID/projects.lang | 2 + htdocs/langs/id_ID/receptions.lang | 12 +- htdocs/langs/is_IS/admin.lang | 10 +- htdocs/langs/is_IS/bills.lang | 19 +- htdocs/langs/is_IS/blockedlog.lang | 5 +- htdocs/langs/is_IS/errors.lang | 4 + htdocs/langs/is_IS/eventorganization.lang | 17 +- htdocs/langs/is_IS/holiday.lang | 2 + htdocs/langs/is_IS/knowledgemanagement.lang | 4 + htdocs/langs/is_IS/mrp.lang | 2 +- htdocs/langs/is_IS/other.lang | 1 + htdocs/langs/is_IS/products.lang | 1 + htdocs/langs/is_IS/projects.lang | 2 + htdocs/langs/is_IS/receptions.lang | 12 +- htdocs/langs/it_CH/admin.lang | 7 + htdocs/langs/it_CH/companies.lang | 7 + htdocs/langs/it_IT/accountancy.lang | 160 +++--- htdocs/langs/it_IT/admin.lang | 560 ++++++++++---------- htdocs/langs/it_IT/agenda.lang | 30 +- htdocs/langs/it_IT/banks.lang | 14 +- htdocs/langs/it_IT/bills.lang | 75 +-- htdocs/langs/it_IT/blockedlog.lang | 3 + htdocs/langs/it_IT/bookmarks.lang | 2 +- htdocs/langs/it_IT/boxes.lang | 38 +- htdocs/langs/it_IT/cashdesk.lang | 56 +- htdocs/langs/it_IT/companies.lang | 44 +- htdocs/langs/it_IT/compta.lang | 106 ++-- htdocs/langs/it_IT/errors.lang | 132 ++--- htdocs/langs/it_IT/eventorganization.lang | 221 ++++---- htdocs/langs/it_IT/holiday.lang | 36 +- htdocs/langs/it_IT/hrm.lang | 116 ++-- htdocs/langs/it_IT/install.lang | 2 +- htdocs/langs/it_IT/intracommreport.lang | 48 +- htdocs/langs/it_IT/knowledgemanagement.lang | 36 +- htdocs/langs/it_IT/main.lang | 214 ++++---- htdocs/langs/it_IT/members.lang | 166 +++--- htdocs/langs/it_IT/mrp.lang | 74 +-- htdocs/langs/it_IT/multicurrency.lang | 32 +- htdocs/langs/it_IT/other.lang | 39 +- htdocs/langs/it_IT/partnership.lang | 90 ++-- htdocs/langs/it_IT/productbatch.lang | 44 +- htdocs/langs/it_IT/products.lang | 55 +- htdocs/langs/it_IT/projects.lang | 40 +- htdocs/langs/it_IT/receptions.lang | 3 +- htdocs/langs/it_IT/recruitment.lang | 46 +- htdocs/langs/it_IT/stocks.lang | 100 ++-- htdocs/langs/it_IT/ticket.lang | 58 +- htdocs/langs/it_IT/withdrawals.lang | 8 +- htdocs/langs/ja_JP/admin.lang | 44 +- htdocs/langs/ja_JP/banks.lang | 2 +- htdocs/langs/ja_JP/bills.lang | 23 +- htdocs/langs/ja_JP/blockedlog.lang | 3 + htdocs/langs/ja_JP/cashdesk.lang | 2 +- htdocs/langs/ja_JP/companies.lang | 12 +- htdocs/langs/ja_JP/compta.lang | 6 +- htdocs/langs/ja_JP/contracts.lang | 2 +- htdocs/langs/ja_JP/ecm.lang | 6 +- htdocs/langs/ja_JP/errors.lang | 4 + htdocs/langs/ja_JP/eventorganization.lang | 21 +- htdocs/langs/ja_JP/holiday.lang | 4 +- htdocs/langs/ja_JP/install.lang | 2 +- htdocs/langs/ja_JP/knowledgemanagement.lang | 4 + htdocs/langs/ja_JP/loan.lang | 4 +- htdocs/langs/ja_JP/mails.lang | 2 +- htdocs/langs/ja_JP/main.lang | 14 +- htdocs/langs/ja_JP/mrp.lang | 2 +- htdocs/langs/ja_JP/orders.lang | 2 +- htdocs/langs/ja_JP/other.lang | 7 +- htdocs/langs/ja_JP/paybox.lang | 4 +- htdocs/langs/ja_JP/paypal.lang | 2 +- htdocs/langs/ja_JP/products.lang | 1 + htdocs/langs/ja_JP/projects.lang | 2 + htdocs/langs/ja_JP/receptions.lang | 20 +- htdocs/langs/ja_JP/resource.lang | 59 ++- htdocs/langs/ja_JP/sms.lang | 2 +- htdocs/langs/ja_JP/stocks.lang | 4 +- htdocs/langs/ja_JP/stripe.lang | 2 +- htdocs/langs/ja_JP/ticket.lang | 16 +- htdocs/langs/ja_JP/users.lang | 2 +- htdocs/langs/ja_JP/website.lang | 2 +- htdocs/langs/ka_GE/admin.lang | 10 +- htdocs/langs/ka_GE/bills.lang | 19 +- htdocs/langs/ka_GE/blockedlog.lang | 5 +- htdocs/langs/ka_GE/errors.lang | 4 + htdocs/langs/ka_GE/eventorganization.lang | 17 +- htdocs/langs/ka_GE/holiday.lang | 2 + htdocs/langs/ka_GE/knowledgemanagement.lang | 4 + htdocs/langs/ka_GE/mrp.lang | 2 +- htdocs/langs/ka_GE/other.lang | 1 + htdocs/langs/ka_GE/products.lang | 1 + htdocs/langs/ka_GE/projects.lang | 2 + htdocs/langs/ka_GE/receptions.lang | 12 +- htdocs/langs/kk_KZ/admin.lang | 10 +- htdocs/langs/kk_KZ/bills.lang | 19 +- htdocs/langs/kk_KZ/blockedlog.lang | 3 + htdocs/langs/kk_KZ/errors.lang | 4 + htdocs/langs/kk_KZ/eventorganization.lang | 17 +- htdocs/langs/kk_KZ/holiday.lang | 2 + htdocs/langs/kk_KZ/knowledgemanagement.lang | 4 + htdocs/langs/kk_KZ/mrp.lang | 2 +- htdocs/langs/kk_KZ/other.lang | 1 + htdocs/langs/kk_KZ/products.lang | 1 + htdocs/langs/kk_KZ/projects.lang | 2 + htdocs/langs/kk_KZ/receptions.lang | 12 +- htdocs/langs/km_KH/admin.lang | 10 +- htdocs/langs/km_KH/bills.lang | 19 +- htdocs/langs/km_KH/blockedlog.lang | 5 +- htdocs/langs/km_KH/errors.lang | 4 + htdocs/langs/km_KH/eventorganization.lang | 17 +- htdocs/langs/km_KH/holiday.lang | 2 + htdocs/langs/km_KH/knowledgemanagement.lang | 4 + htdocs/langs/km_KH/mrp.lang | 2 +- htdocs/langs/km_KH/other.lang | 1 + htdocs/langs/km_KH/products.lang | 1 + htdocs/langs/km_KH/projects.lang | 2 + htdocs/langs/km_KH/receptions.lang | 12 +- htdocs/langs/kn_IN/admin.lang | 10 +- htdocs/langs/kn_IN/bills.lang | 19 +- htdocs/langs/kn_IN/blockedlog.lang | 5 +- htdocs/langs/kn_IN/errors.lang | 4 + htdocs/langs/kn_IN/eventorganization.lang | 17 +- htdocs/langs/kn_IN/holiday.lang | 2 + htdocs/langs/kn_IN/knowledgemanagement.lang | 4 + htdocs/langs/kn_IN/mrp.lang | 2 +- htdocs/langs/kn_IN/other.lang | 1 + htdocs/langs/kn_IN/products.lang | 1 + htdocs/langs/kn_IN/projects.lang | 2 + htdocs/langs/kn_IN/receptions.lang | 12 +- htdocs/langs/ko_KR/admin.lang | 10 +- htdocs/langs/ko_KR/bills.lang | 19 +- htdocs/langs/ko_KR/blockedlog.lang | 5 +- htdocs/langs/ko_KR/errors.lang | 4 + htdocs/langs/ko_KR/eventorganization.lang | 17 +- htdocs/langs/ko_KR/holiday.lang | 2 + htdocs/langs/ko_KR/knowledgemanagement.lang | 4 + htdocs/langs/ko_KR/mrp.lang | 2 +- htdocs/langs/ko_KR/other.lang | 1 + htdocs/langs/ko_KR/products.lang | 1 + htdocs/langs/ko_KR/projects.lang | 2 + htdocs/langs/ko_KR/receptions.lang | 12 +- htdocs/langs/lo_LA/admin.lang | 10 +- htdocs/langs/lo_LA/bills.lang | 19 +- htdocs/langs/lo_LA/blockedlog.lang | 3 + htdocs/langs/lo_LA/errors.lang | 4 + htdocs/langs/lo_LA/eventorganization.lang | 17 +- htdocs/langs/lo_LA/holiday.lang | 2 + htdocs/langs/lo_LA/knowledgemanagement.lang | 4 + htdocs/langs/lo_LA/mrp.lang | 2 +- htdocs/langs/lo_LA/other.lang | 1 + htdocs/langs/lo_LA/products.lang | 1 + htdocs/langs/lo_LA/projects.lang | 2 + htdocs/langs/lo_LA/receptions.lang | 12 +- htdocs/langs/lt_LT/admin.lang | 10 +- htdocs/langs/lt_LT/bills.lang | 19 +- htdocs/langs/lt_LT/blockedlog.lang | 5 +- htdocs/langs/lt_LT/errors.lang | 4 + htdocs/langs/lt_LT/eventorganization.lang | 17 +- htdocs/langs/lt_LT/holiday.lang | 2 + htdocs/langs/lt_LT/knowledgemanagement.lang | 4 + htdocs/langs/lt_LT/mrp.lang | 2 +- htdocs/langs/lt_LT/other.lang | 1 + htdocs/langs/lt_LT/products.lang | 1 + htdocs/langs/lt_LT/projects.lang | 2 + htdocs/langs/lt_LT/receptions.lang | 12 +- htdocs/langs/lv_LV/accountancy.lang | 2 +- htdocs/langs/lv_LV/admin.lang | 46 +- htdocs/langs/lv_LV/bills.lang | 17 +- htdocs/langs/lv_LV/blockedlog.lang | 3 + htdocs/langs/lv_LV/companies.lang | 12 +- htdocs/langs/lv_LV/errors.lang | 6 +- htdocs/langs/lv_LV/eventorganization.lang | 17 +- htdocs/langs/lv_LV/holiday.lang | 2 + htdocs/langs/lv_LV/knowledgemanagement.lang | 4 + htdocs/langs/lv_LV/main.lang | 4 +- htdocs/langs/lv_LV/mrp.lang | 2 +- htdocs/langs/lv_LV/other.lang | 9 +- htdocs/langs/lv_LV/products.lang | 1 + htdocs/langs/lv_LV/projects.lang | 2 + htdocs/langs/lv_LV/receptions.lang | 3 +- htdocs/langs/lv_LV/withdrawals.lang | 2 +- htdocs/langs/mk_MK/admin.lang | 10 +- htdocs/langs/mk_MK/bills.lang | 19 +- htdocs/langs/mk_MK/blockedlog.lang | 5 +- htdocs/langs/mk_MK/errors.lang | 4 + htdocs/langs/mk_MK/eventorganization.lang | 17 +- htdocs/langs/mk_MK/holiday.lang | 2 + htdocs/langs/mk_MK/knowledgemanagement.lang | 4 + htdocs/langs/mk_MK/mrp.lang | 2 +- htdocs/langs/mk_MK/other.lang | 1 + htdocs/langs/mk_MK/products.lang | 1 + htdocs/langs/mk_MK/projects.lang | 2 + htdocs/langs/mk_MK/receptions.lang | 12 +- htdocs/langs/mn_MN/admin.lang | 10 +- htdocs/langs/mn_MN/bills.lang | 19 +- htdocs/langs/mn_MN/blockedlog.lang | 5 +- htdocs/langs/mn_MN/errors.lang | 4 + htdocs/langs/mn_MN/eventorganization.lang | 17 +- htdocs/langs/mn_MN/holiday.lang | 2 + htdocs/langs/mn_MN/knowledgemanagement.lang | 4 + htdocs/langs/mn_MN/mrp.lang | 2 +- htdocs/langs/mn_MN/other.lang | 1 + htdocs/langs/mn_MN/products.lang | 1 + htdocs/langs/mn_MN/projects.lang | 2 + htdocs/langs/mn_MN/receptions.lang | 12 +- htdocs/langs/my_MM/admin.lang | 10 +- htdocs/langs/my_MM/bills.lang | 19 +- htdocs/langs/my_MM/blockedlog.lang | 3 + htdocs/langs/my_MM/errors.lang | 4 + htdocs/langs/my_MM/eventorganization.lang | 17 +- htdocs/langs/my_MM/holiday.lang | 2 + htdocs/langs/my_MM/knowledgemanagement.lang | 4 + htdocs/langs/my_MM/mrp.lang | 2 +- htdocs/langs/my_MM/other.lang | 1 + htdocs/langs/my_MM/products.lang | 1 + htdocs/langs/my_MM/projects.lang | 2 + htdocs/langs/my_MM/receptions.lang | 12 +- htdocs/langs/nb_NO/admin.lang | 264 ++++----- htdocs/langs/nb_NO/banks.lang | 2 +- htdocs/langs/nb_NO/bills.lang | 21 +- htdocs/langs/nb_NO/blockedlog.lang | 5 +- htdocs/langs/nb_NO/boxes.lang | 6 +- htdocs/langs/nb_NO/categories.lang | 4 +- htdocs/langs/nb_NO/compta.lang | 6 +- htdocs/langs/nb_NO/contracts.lang | 2 +- htdocs/langs/nb_NO/deliveries.lang | 2 +- htdocs/langs/nb_NO/errors.lang | 16 +- htdocs/langs/nb_NO/eventorganization.lang | 33 +- htdocs/langs/nb_NO/help.lang | 20 +- htdocs/langs/nb_NO/holiday.lang | 4 +- htdocs/langs/nb_NO/hrm.lang | 68 +-- htdocs/langs/nb_NO/install.lang | 4 +- htdocs/langs/nb_NO/interventions.lang | 2 +- htdocs/langs/nb_NO/knowledgemanagement.lang | 4 + htdocs/langs/nb_NO/main.lang | 86 +-- htdocs/langs/nb_NO/margins.lang | 2 +- htdocs/langs/nb_NO/mrp.lang | 2 +- htdocs/langs/nb_NO/oauth.lang | 4 +- htdocs/langs/nb_NO/opensurvey.lang | 4 +- htdocs/langs/nb_NO/other.lang | 1 + htdocs/langs/nb_NO/partnership.lang | 2 +- htdocs/langs/nb_NO/paybox.lang | 3 +- htdocs/langs/nb_NO/paypal.lang | 2 +- htdocs/langs/nb_NO/products.lang | 3 +- htdocs/langs/nb_NO/projects.lang | 2 + htdocs/langs/nb_NO/receptions.lang | 12 +- htdocs/langs/nb_NO/sendings.lang | 2 +- htdocs/langs/nb_NO/stocks.lang | 2 +- htdocs/langs/nb_NO/stripe.lang | 2 +- htdocs/langs/nb_NO/users.lang | 2 +- htdocs/langs/nb_NO/withdrawals.lang | 2 +- htdocs/langs/nb_NO/workflow.lang | 6 +- htdocs/langs/ne_NP/admin.lang | 10 +- htdocs/langs/ne_NP/bills.lang | 19 +- htdocs/langs/ne_NP/blockedlog.lang | 5 +- htdocs/langs/ne_NP/errors.lang | 4 + htdocs/langs/ne_NP/eventorganization.lang | 17 +- htdocs/langs/ne_NP/holiday.lang | 2 + htdocs/langs/ne_NP/knowledgemanagement.lang | 4 + htdocs/langs/ne_NP/mrp.lang | 2 +- htdocs/langs/ne_NP/other.lang | 1 + htdocs/langs/ne_NP/products.lang | 1 + htdocs/langs/ne_NP/projects.lang | 2 + htdocs/langs/ne_NP/receptions.lang | 12 +- htdocs/langs/nl_BE/accountancy.lang | 2 - htdocs/langs/nl_BE/admin.lang | 11 +- htdocs/langs/nl_BE/companies.lang | 12 + htdocs/langs/nl_BE/dict.lang | 1 + htdocs/langs/nl_NL/accountancy.lang | 22 +- htdocs/langs/nl_NL/admin.lang | 10 +- htdocs/langs/nl_NL/banks.lang | 2 +- htdocs/langs/nl_NL/bills.lang | 19 +- htdocs/langs/nl_NL/blockedlog.lang | 3 + htdocs/langs/nl_NL/companies.lang | 8 +- htdocs/langs/nl_NL/errors.lang | 4 + htdocs/langs/nl_NL/eventorganization.lang | 17 +- htdocs/langs/nl_NL/holiday.lang | 2 + htdocs/langs/nl_NL/knowledgemanagement.lang | 4 + htdocs/langs/nl_NL/mrp.lang | 12 +- htdocs/langs/nl_NL/other.lang | 1 + htdocs/langs/nl_NL/productbatch.lang | 2 +- htdocs/langs/nl_NL/products.lang | 1 + htdocs/langs/nl_NL/projects.lang | 2 + htdocs/langs/nl_NL/receptions.lang | 12 +- htdocs/langs/pl_PL/admin.lang | 10 +- htdocs/langs/pl_PL/bills.lang | 23 +- htdocs/langs/pl_PL/blockedlog.lang | 107 ++-- htdocs/langs/pl_PL/companies.lang | 2 +- htdocs/langs/pl_PL/errors.lang | 4 + htdocs/langs/pl_PL/eventorganization.lang | 17 +- htdocs/langs/pl_PL/holiday.lang | 2 + htdocs/langs/pl_PL/knowledgemanagement.lang | 4 + htdocs/langs/pl_PL/main.lang | 2 +- htdocs/langs/pl_PL/mrp.lang | 2 +- htdocs/langs/pl_PL/other.lang | 1 + htdocs/langs/pl_PL/products.lang | 1 + htdocs/langs/pl_PL/projects.lang | 2 + htdocs/langs/pl_PL/propal.lang | 4 +- htdocs/langs/pl_PL/receptions.lang | 12 +- htdocs/langs/pt_BR/bills.lang | 6 +- htdocs/langs/pt_BR/blockedlog.lang | 3 +- htdocs/langs/pt_BR/mrp.lang | 1 - htdocs/langs/pt_BR/receptions.lang | 2 - htdocs/langs/pt_PT/admin.lang | 10 +- htdocs/langs/pt_PT/bills.lang | 19 +- htdocs/langs/pt_PT/blockedlog.lang | 5 +- htdocs/langs/pt_PT/errors.lang | 4 + htdocs/langs/pt_PT/eventorganization.lang | 17 +- htdocs/langs/pt_PT/holiday.lang | 2 + htdocs/langs/pt_PT/knowledgemanagement.lang | 4 + htdocs/langs/pt_PT/mrp.lang | 2 +- htdocs/langs/pt_PT/other.lang | 1 + htdocs/langs/pt_PT/products.lang | 1 + htdocs/langs/pt_PT/projects.lang | 2 + htdocs/langs/pt_PT/receptions.lang | 12 +- htdocs/langs/ro_RO/admin.lang | 22 +- htdocs/langs/ro_RO/bills.lang | 17 +- htdocs/langs/ro_RO/blockedlog.lang | 47 +- htdocs/langs/ro_RO/companies.lang | 12 +- htdocs/langs/ro_RO/errors.lang | 4 + htdocs/langs/ro_RO/eventorganization.lang | 17 +- htdocs/langs/ro_RO/holiday.lang | 2 + htdocs/langs/ro_RO/knowledgemanagement.lang | 4 + htdocs/langs/ro_RO/mrp.lang | 2 +- htdocs/langs/ro_RO/other.lang | 1 + htdocs/langs/ro_RO/products.lang | 1 + htdocs/langs/ro_RO/projects.lang | 2 + htdocs/langs/ro_RO/receptions.lang | 12 +- htdocs/langs/ru_RU/admin.lang | 10 +- htdocs/langs/ru_RU/bills.lang | 19 +- htdocs/langs/ru_RU/blockedlog.lang | 3 + htdocs/langs/ru_RU/errors.lang | 4 + htdocs/langs/ru_RU/eventorganization.lang | 17 +- htdocs/langs/ru_RU/holiday.lang | 2 + htdocs/langs/ru_RU/knowledgemanagement.lang | 4 + htdocs/langs/ru_RU/mrp.lang | 2 +- htdocs/langs/ru_RU/other.lang | 1 + htdocs/langs/ru_RU/products.lang | 1 + htdocs/langs/ru_RU/projects.lang | 2 + htdocs/langs/ru_RU/receptions.lang | 12 +- htdocs/langs/ru_UA/admin.lang | 3 + htdocs/langs/sk_SK/admin.lang | 10 +- htdocs/langs/sk_SK/bills.lang | 19 +- htdocs/langs/sk_SK/blockedlog.lang | 5 +- htdocs/langs/sk_SK/errors.lang | 4 + htdocs/langs/sk_SK/eventorganization.lang | 17 +- htdocs/langs/sk_SK/holiday.lang | 2 + htdocs/langs/sk_SK/knowledgemanagement.lang | 4 + htdocs/langs/sk_SK/mrp.lang | 2 +- htdocs/langs/sk_SK/other.lang | 1 + htdocs/langs/sk_SK/products.lang | 1 + htdocs/langs/sk_SK/projects.lang | 2 + htdocs/langs/sk_SK/receptions.lang | 12 +- htdocs/langs/sl_SI/admin.lang | 10 +- htdocs/langs/sl_SI/bills.lang | 19 +- htdocs/langs/sl_SI/blockedlog.lang | 5 +- htdocs/langs/sl_SI/errors.lang | 4 + htdocs/langs/sl_SI/eventorganization.lang | 17 +- htdocs/langs/sl_SI/holiday.lang | 2 + htdocs/langs/sl_SI/knowledgemanagement.lang | 4 + htdocs/langs/sl_SI/mrp.lang | 2 +- htdocs/langs/sl_SI/other.lang | 1 + htdocs/langs/sl_SI/products.lang | 1 + htdocs/langs/sl_SI/projects.lang | 2 + htdocs/langs/sl_SI/receptions.lang | 12 +- htdocs/langs/sq_AL/admin.lang | 10 +- htdocs/langs/sq_AL/bills.lang | 19 +- htdocs/langs/sq_AL/blockedlog.lang | 5 +- htdocs/langs/sq_AL/errors.lang | 4 + htdocs/langs/sq_AL/eventorganization.lang | 17 +- htdocs/langs/sq_AL/holiday.lang | 2 + htdocs/langs/sq_AL/knowledgemanagement.lang | 4 + htdocs/langs/sq_AL/mrp.lang | 2 +- htdocs/langs/sq_AL/other.lang | 1 + htdocs/langs/sq_AL/products.lang | 1 + htdocs/langs/sq_AL/projects.lang | 2 + htdocs/langs/sq_AL/receptions.lang | 12 +- htdocs/langs/sr_RS/admin.lang | 10 +- htdocs/langs/sr_RS/bills.lang | 19 +- htdocs/langs/sr_RS/blockedlog.lang | 5 +- htdocs/langs/sr_RS/errors.lang | 4 + htdocs/langs/sr_RS/eventorganization.lang | 17 +- htdocs/langs/sr_RS/holiday.lang | 2 + htdocs/langs/sr_RS/knowledgemanagement.lang | 4 + htdocs/langs/sr_RS/mrp.lang | 2 +- htdocs/langs/sr_RS/other.lang | 1 + htdocs/langs/sr_RS/products.lang | 1 + htdocs/langs/sr_RS/projects.lang | 2 + htdocs/langs/sr_RS/receptions.lang | 12 +- htdocs/langs/sv_SE/admin.lang | 10 +- htdocs/langs/sv_SE/bills.lang | 19 +- htdocs/langs/sv_SE/blockedlog.lang | 3 + htdocs/langs/sv_SE/errors.lang | 4 + htdocs/langs/sv_SE/eventorganization.lang | 17 +- htdocs/langs/sv_SE/holiday.lang | 2 + htdocs/langs/sv_SE/knowledgemanagement.lang | 4 + htdocs/langs/sv_SE/mrp.lang | 2 +- htdocs/langs/sv_SE/other.lang | 1 + htdocs/langs/sv_SE/products.lang | 1 + htdocs/langs/sv_SE/projects.lang | 2 + htdocs/langs/sv_SE/receptions.lang | 12 +- htdocs/langs/sw_SW/admin.lang | 10 +- htdocs/langs/sw_SW/bills.lang | 19 +- htdocs/langs/sw_SW/blockedlog.lang | 5 +- htdocs/langs/sw_SW/errors.lang | 4 + htdocs/langs/sw_SW/eventorganization.lang | 17 +- htdocs/langs/sw_SW/holiday.lang | 2 + htdocs/langs/sw_SW/knowledgemanagement.lang | 4 + htdocs/langs/sw_SW/mrp.lang | 2 +- htdocs/langs/sw_SW/other.lang | 1 + htdocs/langs/sw_SW/products.lang | 1 + htdocs/langs/sw_SW/projects.lang | 2 + htdocs/langs/sw_SW/receptions.lang | 12 +- htdocs/langs/ta_IN/admin.lang | 10 +- htdocs/langs/ta_IN/bills.lang | 17 +- htdocs/langs/ta_IN/blockedlog.lang | 3 + htdocs/langs/ta_IN/errors.lang | 4 + htdocs/langs/ta_IN/eventorganization.lang | 17 +- htdocs/langs/ta_IN/holiday.lang | 2 + htdocs/langs/ta_IN/knowledgemanagement.lang | 4 + htdocs/langs/ta_IN/mrp.lang | 2 +- htdocs/langs/ta_IN/other.lang | 1 + htdocs/langs/ta_IN/products.lang | 1 + htdocs/langs/ta_IN/projects.lang | 2 + htdocs/langs/ta_IN/receptions.lang | 3 +- htdocs/langs/tg_TJ/admin.lang | 10 +- htdocs/langs/tg_TJ/bills.lang | 19 +- htdocs/langs/tg_TJ/blockedlog.lang | 3 + htdocs/langs/tg_TJ/errors.lang | 4 + htdocs/langs/tg_TJ/eventorganization.lang | 17 +- htdocs/langs/tg_TJ/holiday.lang | 2 + htdocs/langs/tg_TJ/knowledgemanagement.lang | 4 + htdocs/langs/tg_TJ/mrp.lang | 2 +- htdocs/langs/tg_TJ/other.lang | 1 + htdocs/langs/tg_TJ/products.lang | 1 + htdocs/langs/tg_TJ/projects.lang | 2 + htdocs/langs/tg_TJ/receptions.lang | 12 +- htdocs/langs/th_TH/admin.lang | 156 +++--- htdocs/langs/th_TH/bills.lang | 23 +- htdocs/langs/th_TH/blockedlog.lang | 5 +- htdocs/langs/th_TH/errors.lang | 4 + htdocs/langs/th_TH/eventorganization.lang | 17 +- htdocs/langs/th_TH/holiday.lang | 2 + htdocs/langs/th_TH/knowledgemanagement.lang | 4 + htdocs/langs/th_TH/mrp.lang | 2 +- htdocs/langs/th_TH/other.lang | 1 + htdocs/langs/th_TH/products.lang | 1 + htdocs/langs/th_TH/projects.lang | 2 + htdocs/langs/th_TH/receptions.lang | 12 +- htdocs/langs/tr_TR/admin.lang | 10 +- htdocs/langs/tr_TR/bills.lang | 13 +- htdocs/langs/tr_TR/blockedlog.lang | 5 +- htdocs/langs/tr_TR/errors.lang | 4 + htdocs/langs/tr_TR/eventorganization.lang | 17 +- htdocs/langs/tr_TR/holiday.lang | 2 + htdocs/langs/tr_TR/knowledgemanagement.lang | 4 + htdocs/langs/tr_TR/mrp.lang | 2 +- htdocs/langs/tr_TR/other.lang | 1 + htdocs/langs/tr_TR/products.lang | 1 + htdocs/langs/tr_TR/projects.lang | 2 + htdocs/langs/tr_TR/receptions.lang | 12 +- htdocs/langs/uk_UA/admin.lang | 10 +- htdocs/langs/uk_UA/bills.lang | 19 +- htdocs/langs/uk_UA/blockedlog.lang | 5 +- htdocs/langs/uk_UA/errors.lang | 4 + htdocs/langs/uk_UA/eventorganization.lang | 17 +- htdocs/langs/uk_UA/holiday.lang | 2 + htdocs/langs/uk_UA/knowledgemanagement.lang | 4 + htdocs/langs/uk_UA/mrp.lang | 2 +- htdocs/langs/uk_UA/other.lang | 1 + htdocs/langs/uk_UA/products.lang | 1 + htdocs/langs/uk_UA/projects.lang | 2 + htdocs/langs/uk_UA/receptions.lang | 12 +- htdocs/langs/ur_PK/admin.lang | 10 +- htdocs/langs/ur_PK/bills.lang | 13 +- htdocs/langs/ur_PK/blockedlog.lang | 3 + htdocs/langs/ur_PK/errors.lang | 4 + htdocs/langs/ur_PK/eventorganization.lang | 17 +- htdocs/langs/ur_PK/holiday.lang | 2 + htdocs/langs/ur_PK/knowledgemanagement.lang | 4 + htdocs/langs/ur_PK/mrp.lang | 2 +- htdocs/langs/ur_PK/other.lang | 1 + htdocs/langs/ur_PK/products.lang | 1 + htdocs/langs/ur_PK/projects.lang | 2 + htdocs/langs/ur_PK/receptions.lang | 3 +- htdocs/langs/uz_UZ/admin.lang | 10 +- htdocs/langs/uz_UZ/bills.lang | 19 +- htdocs/langs/uz_UZ/blockedlog.lang | 3 + htdocs/langs/uz_UZ/errors.lang | 4 + htdocs/langs/uz_UZ/eventorganization.lang | 17 +- htdocs/langs/uz_UZ/holiday.lang | 2 + htdocs/langs/uz_UZ/knowledgemanagement.lang | 4 + htdocs/langs/uz_UZ/mrp.lang | 2 +- htdocs/langs/uz_UZ/other.lang | 1 + htdocs/langs/uz_UZ/products.lang | 1 + htdocs/langs/uz_UZ/projects.lang | 2 + htdocs/langs/uz_UZ/receptions.lang | 12 +- htdocs/langs/vi_VN/admin.lang | 10 +- htdocs/langs/vi_VN/bills.lang | 19 +- htdocs/langs/vi_VN/blockedlog.lang | 5 +- htdocs/langs/vi_VN/errors.lang | 4 + htdocs/langs/vi_VN/eventorganization.lang | 17 +- htdocs/langs/vi_VN/holiday.lang | 2 + htdocs/langs/vi_VN/knowledgemanagement.lang | 4 + htdocs/langs/vi_VN/mrp.lang | 2 +- htdocs/langs/vi_VN/other.lang | 1 + htdocs/langs/vi_VN/products.lang | 1 + htdocs/langs/vi_VN/projects.lang | 2 + htdocs/langs/vi_VN/receptions.lang | 12 +- htdocs/langs/zh_CN/admin.lang | 10 +- htdocs/langs/zh_CN/bills.lang | 19 +- htdocs/langs/zh_CN/blockedlog.lang | 5 +- htdocs/langs/zh_CN/errors.lang | 4 + htdocs/langs/zh_CN/eventorganization.lang | 17 +- htdocs/langs/zh_CN/holiday.lang | 2 + htdocs/langs/zh_CN/knowledgemanagement.lang | 4 + htdocs/langs/zh_CN/mrp.lang | 2 +- htdocs/langs/zh_CN/other.lang | 1 + htdocs/langs/zh_CN/products.lang | 1 + htdocs/langs/zh_CN/projects.lang | 2 + htdocs/langs/zh_CN/receptions.lang | 12 +- htdocs/langs/zh_HK/admin.lang | 10 +- htdocs/langs/zh_HK/bills.lang | 19 +- htdocs/langs/zh_HK/blockedlog.lang | 5 +- htdocs/langs/zh_HK/errors.lang | 4 + htdocs/langs/zh_HK/eventorganization.lang | 17 +- htdocs/langs/zh_HK/holiday.lang | 2 + htdocs/langs/zh_HK/knowledgemanagement.lang | 4 + htdocs/langs/zh_HK/mrp.lang | 2 +- htdocs/langs/zh_HK/other.lang | 1 + htdocs/langs/zh_HK/products.lang | 1 + htdocs/langs/zh_HK/projects.lang | 2 + htdocs/langs/zh_HK/receptions.lang | 12 +- htdocs/langs/zh_TW/accountancy.lang | 24 +- htdocs/langs/zh_TW/admin.lang | 10 +- htdocs/langs/zh_TW/bills.lang | 13 +- htdocs/langs/zh_TW/blockedlog.lang | 3 + htdocs/langs/zh_TW/errors.lang | 4 + htdocs/langs/zh_TW/eventorganization.lang | 17 +- htdocs/langs/zh_TW/holiday.lang | 2 + htdocs/langs/zh_TW/knowledgemanagement.lang | 4 + htdocs/langs/zh_TW/modulebuilder.lang | 20 +- htdocs/langs/zh_TW/mrp.lang | 2 +- htdocs/langs/zh_TW/other.lang | 1 + htdocs/langs/zh_TW/products.lang | 3 +- htdocs/langs/zh_TW/projects.lang | 2 + htdocs/langs/zh_TW/receptions.lang | 3 +- htdocs/user/class/user.class.php | 4 +- 1036 files changed, 6778 insertions(+), 4456 deletions(-) create mode 100644 htdocs/langs/.gitignore create mode 100644 htdocs/langs/ar_EG/printing.lang create mode 100644 htdocs/langs/el_CY/admin.lang create mode 100644 htdocs/langs/en_AE/companies.lang delete mode 100644 htdocs/langs/en_AE/receptions.lang create mode 100644 htdocs/langs/en_SG/companies.lang create mode 100644 htdocs/langs/en_ZA/companies.lang delete mode 100644 htdocs/langs/en_ZA/receptions.lang create mode 100644 htdocs/langs/es_BO/companies.lang create mode 100644 htdocs/langs/es_DO/companies.lang create mode 100644 htdocs/langs/es_GT/companies.lang create mode 100644 htdocs/langs/es_HN/companies.lang create mode 100644 htdocs/langs/es_PA/companies.lang create mode 100644 htdocs/langs/es_PY/companies.lang create mode 100644 htdocs/langs/es_US/companies.lang create mode 100644 htdocs/langs/es_UY/companies.lang create mode 100644 htdocs/langs/fr_CH/companies.lang create mode 100644 htdocs/langs/fr_CI/admin.lang create mode 100644 htdocs/langs/fr_CI/companies.lang create mode 100644 htdocs/langs/fr_CM/admin.lang create mode 100644 htdocs/langs/fr_CM/companies.lang create mode 100644 htdocs/langs/it_CH/admin.lang create mode 100644 htdocs/langs/it_CH/companies.lang create mode 100644 htdocs/langs/ru_UA/admin.lang diff --git a/htdocs/admin/accountant.php b/htdocs/admin/accountant.php index d9d15aa6d47..e0e01cab328 100644 --- a/htdocs/admin/accountant.php +++ b/htdocs/admin/accountant.php @@ -85,7 +85,7 @@ print load_fiche_titre($langs->trans("CompanyFoundation"), '', 'title_setup'); $head = company_admin_prepare_head(); -print dol_get_fiche_head($head, 'accountant', $langs->trans("Company"), -1, 'company'); +print dol_get_fiche_head($head, 'accountant', '', -1, ''); $form = new Form($db); $formother = new FormOther($db); @@ -119,7 +119,7 @@ print ''.$langs-> // Name print ''; -print 'global->MAIN_OPTIMIZEFORTEXTBROWSER) ? '' : ' autofocus="autofocus"').'>'."\n"; +print 'global->MAIN_OPTIMIZEFORTEXTBROWSER) ? '' : ' autofocus="autofocus"').'>'."\n"; // Address print ''; diff --git a/htdocs/admin/company.php b/htdocs/admin/company.php index ba040f77afc..25495e2de43 100644 --- a/htdocs/admin/company.php +++ b/htdocs/admin/company.php @@ -375,7 +375,7 @@ print load_fiche_titre($langs->trans("CompanyFoundation"), '', 'title_setup'); $head = company_admin_prepare_head(); -print dol_get_fiche_head($head, 'company', $langs->trans("Company"), -1, 'company'); +print dol_get_fiche_head($head, 'company', '', -1, ''); print ''.$langs->trans("CompanyFundationDesc", $langs->transnoentities("Save"))."
\n"; print "

\n"; diff --git a/htdocs/admin/company_socialnetworks.php b/htdocs/admin/company_socialnetworks.php index a12de9204ce..1f2d102b644 100644 --- a/htdocs/admin/company_socialnetworks.php +++ b/htdocs/admin/company_socialnetworks.php @@ -90,7 +90,7 @@ print load_fiche_titre($langs->trans("CompanyFoundation"), '', 'title_setup'); $head = company_admin_prepare_head(); -print dol_get_fiche_head($head, 'socialnetworks', $langs->trans("SocialNetworksInformation"), -1, 'company'); +print dol_get_fiche_head($head, 'socialnetworks', '', -1, ''); print ''.$langs->trans("CompanyFundationDesc", $langs->transnoentities("Save"))."
\n"; print "
\n"; @@ -114,6 +114,8 @@ print ''.$form->textwithpicto($langs->trans("Url"), $langs->trans("KeepEmpty print ''; print "\n"; +$listofnetworks = dol_sort_array($listofnetworks, 'label'); +//var_dump($listofnetworks); foreach ($listofnetworks as $key => $value) { if (!empty($value['active'])) { diff --git a/htdocs/admin/openinghours.php b/htdocs/admin/openinghours.php index fb7dddc092c..a0f02fe99ac 100644 --- a/htdocs/admin/openinghours.php +++ b/htdocs/admin/openinghours.php @@ -78,7 +78,7 @@ print load_fiche_titre($langs->trans("CompanyFoundation"), '', 'title_setup'); $head = company_admin_prepare_head(); -print dol_get_fiche_head($head, 'openinghours', $langs->trans("Company"), -1, 'company'); +print dol_get_fiche_head($head, 'openinghours', '', -1, ''); print ''.$langs->trans("OpeningHoursDesc")."
\n"; print "

\n"; @@ -97,7 +97,7 @@ if (empty($action) || $action == 'edit' || $action == 'updateedit') { print ''; print $form->textwithpicto($langs->trans("Monday"), $langs->trans("OpeningHoursFormatDesc")); print ''; - print 'global->MAIN_OPTIMIZEFORTEXTBROWSER) ? '' : ' autofocus="autofocus"').'>'."\n"; + print 'global->MAIN_OPTIMIZEFORTEXTBROWSER) ? '' : ' autofocus="autofocus"').'>'."\n"; print ''; print $form->textwithpicto($langs->trans("Tuesday"), $langs->trans("OpeningHoursFormatDesc")); diff --git a/htdocs/install/step4.php b/htdocs/install/step4.php index 82a01f39f6a..c2f6ce2384d 100644 --- a/htdocs/install/step4.php +++ b/htdocs/install/step4.php @@ -82,9 +82,9 @@ if ($db->ok) { print ''; print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; if (isset($_GET["error"]) && $_GET["error"] == 1) { diff --git a/htdocs/install/step5.php b/htdocs/install/step5.php index 5eba9856c06..89681794aeb 100644 --- a/htdocs/install/step5.php +++ b/htdocs/install/step5.php @@ -214,7 +214,9 @@ if ($action == "set" || empty($action) || preg_match('/upgrade/i', $action)) { $newuser->admin = 1; $newuser->entity = 0; - $conf->global->USER_MAIL_REQUIRED = 0; // Force global option to be sure to create a new user with no email + $conf->global->USER_MAIL_REQUIRED = 0; // Force global option to be sure to create a new user with no email + $conf->global->USER_PASSWORD_GENERATED = ''; // To not use any rule for password validation + $result = $newuser->create($createuser, 1); if ($result > 0) { print $langs->trans("AdminLoginCreatedSuccessfuly", $login)."
"; @@ -226,7 +228,10 @@ if ($action == "set" || empty($action) || preg_match('/upgrade/i', $action)) { $success = 1; } else { dolibarr_install_syslog('step5: FailedToCreateAdminLogin '.$newuser->error, LOG_ERR); - print '
'.$langs->trans("FailedToCreateAdminLogin").' '.$newuser->error.'


'; + setEventMessage($langs->trans("FailedToCreateAdminLogin").' '.$newuser->error, null, 'errors'); + //header("Location: step4.php?error=3&selectlang=$setuplang".(isset($login) ? '&login='.$login : '')); + print '
'.$langs->trans("FailedToCreateAdminLogin").': '.$newuser->error.'


'; + print $langs->trans("ErrorGoBackAndCorrectParameters").'

'; } } @@ -357,48 +362,50 @@ if ($action == "set" || empty($action) || preg_match('/upgrade/i', $action)) { // Create lock file // If first install -if ($action == "set" && $success) { - if (empty($conf->global->MAIN_VERSION_LAST_UPGRADE) || ($conf->global->MAIN_VERSION_LAST_UPGRADE == DOL_VERSION)) { - // Install is finished - print $langs->trans("SystemIsInstalled")."
"; +if ($action == "set") { + if ($success) { + if (empty($conf->global->MAIN_VERSION_LAST_UPGRADE) || ($conf->global->MAIN_VERSION_LAST_UPGRADE == DOL_VERSION)) { + // Install is finished + print '
'.$langs->trans("SystemIsInstalled")."
"; - $createlock = 0; + $createlock = 0; - if (!empty($force_install_lockinstall) || !empty($conf->global->MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE)) { - // Install is finished, we create the lock file - $lockfile = DOL_DATA_ROOT.'/install.lock'; - $fp = @fopen($lockfile, "w"); - if ($fp) { - if (empty($force_install_lockinstall) || $force_install_lockinstall == 1) { - $force_install_lockinstall = 444; // For backward compatibility + if (!empty($force_install_lockinstall) || !empty($conf->global->MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE)) { + // Install is finished, we create the lock file + $lockfile = DOL_DATA_ROOT.'/install.lock'; + $fp = @fopen($lockfile, "w"); + if ($fp) { + if (empty($force_install_lockinstall) || $force_install_lockinstall == 1) { + $force_install_lockinstall = 444; // For backward compatibility + } + fwrite($fp, "This is a lock file to prevent use of install pages (set with permission ".$force_install_lockinstall.")"); + fclose($fp); + @chmod($lockfile, octdec($force_install_lockinstall)); + $createlock = 1; } - fwrite($fp, "This is a lock file to prevent use of install pages (set with permission ".$force_install_lockinstall.")"); - fclose($fp); - @chmod($lockfile, octdec($force_install_lockinstall)); - $createlock = 1; } + if (empty($createlock)) { + print '
'.$langs->trans("WarningRemoveInstallDir")."
"; + } + + print "
"; + + print $langs->trans("YouNeedToPersonalizeSetup")."


"; + + print '
'; + } else { + // If here MAIN_VERSION_LAST_UPGRADE is not empty + print $langs->trans("VersionLastUpgrade").': '.$conf->global->MAIN_VERSION_LAST_UPGRADE.'
'; + print $langs->trans("VersionProgram").': '.DOL_VERSION.'
'; + print $langs->trans("MigrationNotFinished").'
'; + print "
"; + + print ''; } - if (empty($createlock)) { - print '
'.$langs->trans("WarningRemoveInstallDir")."
"; - } - - print "
"; - - print $langs->trans("YouNeedToPersonalizeSetup")."


"; - - print ''; - } else { - // If here MAIN_VERSION_LAST_UPGRADE is not empty - print $langs->trans("VersionLastUpgrade").': '.$conf->global->MAIN_VERSION_LAST_UPGRADE.'
'; - print $langs->trans("VersionProgram").': '.DOL_VERSION.'
'; - print $langs->trans("MigrationNotFinished").'
'; - print "
"; - - print ''; } } elseif (empty($action) || preg_match('/upgrade/i', $action)) { // If upgrade diff --git a/htdocs/langs/.gitignore b/htdocs/langs/.gitignore new file mode 100644 index 00000000000..3a07e2e73d9 --- /dev/null +++ b/htdocs/langs/.gitignore @@ -0,0 +1 @@ +/en/ diff --git a/htdocs/langs/am_ET/admin.lang b/htdocs/langs/am_ET/admin.lang index 3971948e5a1..d79adb1e960 100644 --- a/htdocs/langs/am_ET/admin.lang +++ b/htdocs/langs/am_ET/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Foundation Version=Version Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=Step %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/am_ET/bills.lang b/htdocs/langs/am_ET/bills.lang index 3aaa5465ca0..f7d0155f41e 100644 --- a/htdocs/langs/am_ET/bills.lang +++ b/htdocs/langs/am_ET/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Payments reports PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Refunds already done PaymentRule=Payment rule -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Draft PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bank details BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/am_ET/blockedlog.lang b/htdocs/langs/am_ET/blockedlog.lang index 0bba5605d0f..12f28737d49 100644 --- a/htdocs/langs/am_ET/blockedlog.lang +++ b/htdocs/langs/am_ET/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/am_ET/errors.lang b/htdocs/langs/am_ET/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/am_ET/errors.lang +++ b/htdocs/langs/am_ET/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/am_ET/eventorganization.lang b/htdocs/langs/am_ET/eventorganization.lang index 82951892a32..b4a7279d757 100644 --- a/htdocs/langs/am_ET/eventorganization.lang +++ b/htdocs/langs/am_ET/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/am_ET/holiday.lang b/htdocs/langs/am_ET/holiday.lang index dceaef59081..3d0ae64be0f 100644 --- a/htdocs/langs/am_ET/holiday.lang +++ b/htdocs/langs/am_ET/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/am_ET/knowledgemanagement.lang b/htdocs/langs/am_ET/knowledgemanagement.lang index 2426e0e7013..bcdf9740cdd 100644 --- a/htdocs/langs/am_ET/knowledgemanagement.lang +++ b/htdocs/langs/am_ET/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/am_ET/mrp.lang b/htdocs/langs/am_ET/mrp.lang index 3f1aac53340..74bed0d9186 100644 --- a/htdocs/langs/am_ET/mrp.lang +++ b/htdocs/langs/am_ET/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/am_ET/other.lang b/htdocs/langs/am_ET/other.lang index 7b509f60ff7..49ff93dd589 100644 --- a/htdocs/langs/am_ET/other.lang +++ b/htdocs/langs/am_ET/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/am_ET/products.lang b/htdocs/langs/am_ET/products.lang index a8942bd337f..14715670882 100644 --- a/htdocs/langs/am_ET/products.lang +++ b/htdocs/langs/am_ET/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/am_ET/projects.lang b/htdocs/langs/am_ET/projects.lang index 0d9c7ea34c8..ff542521afe 100644 --- a/htdocs/langs/am_ET/projects.lang +++ b/htdocs/langs/am_ET/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/am_ET/receptions.lang b/htdocs/langs/am_ET/receptions.lang index 46b2d689609..7f1a97d16a9 100644 --- a/htdocs/langs/am_ET/receptions.lang +++ b/htdocs/langs/am_ET/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Canceled StatusReceptionDraft=Draft -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processed StatusReceptionDraftShort=Draft StatusReceptionValidatedShort=Validated @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/ar_DZ/admin.lang b/htdocs/langs/ar_DZ/admin.lang index 3971948e5a1..d79adb1e960 100644 --- a/htdocs/langs/ar_DZ/admin.lang +++ b/htdocs/langs/ar_DZ/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Foundation Version=Version Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=Step %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/ar_DZ/bills.lang b/htdocs/langs/ar_DZ/bills.lang index 3aaa5465ca0..f7d0155f41e 100644 --- a/htdocs/langs/ar_DZ/bills.lang +++ b/htdocs/langs/ar_DZ/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Payments reports PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Refunds already done PaymentRule=Payment rule -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Draft PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bank details BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/ar_DZ/blockedlog.lang b/htdocs/langs/ar_DZ/blockedlog.lang index 44cb183050a..12f28737d49 100644 --- a/htdocs/langs/ar_DZ/blockedlog.lang +++ b/htdocs/langs/ar_DZ/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/ar_DZ/errors.lang b/htdocs/langs/ar_DZ/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/ar_DZ/errors.lang +++ b/htdocs/langs/ar_DZ/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/ar_DZ/eventorganization.lang b/htdocs/langs/ar_DZ/eventorganization.lang index 82951892a32..b4a7279d757 100644 --- a/htdocs/langs/ar_DZ/eventorganization.lang +++ b/htdocs/langs/ar_DZ/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/ar_DZ/holiday.lang b/htdocs/langs/ar_DZ/holiday.lang index dceaef59081..3d0ae64be0f 100644 --- a/htdocs/langs/ar_DZ/holiday.lang +++ b/htdocs/langs/ar_DZ/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/ar_DZ/knowledgemanagement.lang b/htdocs/langs/ar_DZ/knowledgemanagement.lang index 2426e0e7013..bcdf9740cdd 100644 --- a/htdocs/langs/ar_DZ/knowledgemanagement.lang +++ b/htdocs/langs/ar_DZ/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/ar_DZ/mrp.lang b/htdocs/langs/ar_DZ/mrp.lang index 3f1aac53340..74bed0d9186 100644 --- a/htdocs/langs/ar_DZ/mrp.lang +++ b/htdocs/langs/ar_DZ/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/ar_DZ/other.lang b/htdocs/langs/ar_DZ/other.lang index 7b509f60ff7..49ff93dd589 100644 --- a/htdocs/langs/ar_DZ/other.lang +++ b/htdocs/langs/ar_DZ/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/ar_DZ/products.lang b/htdocs/langs/ar_DZ/products.lang index a8942bd337f..14715670882 100644 --- a/htdocs/langs/ar_DZ/products.lang +++ b/htdocs/langs/ar_DZ/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/ar_DZ/projects.lang b/htdocs/langs/ar_DZ/projects.lang index 0d9c7ea34c8..ff542521afe 100644 --- a/htdocs/langs/ar_DZ/projects.lang +++ b/htdocs/langs/ar_DZ/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/ar_DZ/receptions.lang b/htdocs/langs/ar_DZ/receptions.lang index 46b2d689609..7f1a97d16a9 100644 --- a/htdocs/langs/ar_DZ/receptions.lang +++ b/htdocs/langs/ar_DZ/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Canceled StatusReceptionDraft=Draft -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processed StatusReceptionDraftShort=Draft StatusReceptionValidatedShort=Validated @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/ar_EG/admin.lang b/htdocs/langs/ar_EG/admin.lang index 46608a162b0..37745d3baba 100644 --- a/htdocs/langs/ar_EG/admin.lang +++ b/htdocs/langs/ar_EG/admin.lang @@ -12,8 +12,6 @@ FileIntegrityIsStrictlyConformedWithReference=يجب ان تتوافق سلام FileIntegrityIsOkButFilesWereAdded=اجتاز فحص تكامل الملفات ، ولكن تمت إضافة بعض الملفات الجديدة. FileIntegritySomeFilesWereRemovedOrModified=فشل التحقق من تكامل الملفات. تم تعديل بعض الملفات أو إزالتها أو إضافتها. MakeIntegrityAnalysisFrom=عمل تحليل سلامة ملفات التطبيق من -LocalSignature=توقيع محلي مضمن (أقل موثوقية) -RemoteSignature=التوقيع عن بعد (أكثر موثوقية) FilesMissing=الملفات المفقودة FilesUpdated=الملفات المحدثة FilesModified=الملفات المعدلة @@ -31,7 +29,6 @@ ConfirmLockNewSessions=هل أنت متأكد من أنك تريد تقييد أ UnlockNewSessions=الغاء حظر الاتصال YourSession=جلستك WebUserGroup=مستخدم\\مجموعة خادم الويب -NoSessionFound=يبدو أن تكوين PHP الخاص بك لا يسمح بإدراج الجلسات النشطة. قد يتم حماية الدليل المستخدم لحفظ الجلسات ( %s ) (على سبيل المثال عن طريق أذونات نظام التشغيل أو عن طريق توجيه PHP open_basedir). DBStoringCharset=ضبط الحروف في قاعدة البيانات لحفظ المعلومات DBSortingCharset=ضبط الحروف في قاعدة البيانات لحفظ المعلومات ClientCharset=مجموع حروف العميل @@ -42,6 +39,7 @@ InternalUsers=مستخدمون داخليون ExternalUsers=مستخدمون خارجيون FormToTestFileUploadForm=نموذج تجربة رفع الملفات (تبعا للتنصيب) FeatureAvailableOnlyOnStable=الميزة متوفرة فقط في الإصدارات الثابتة الرسمية +ExtrafieldPassword=كلمة السر Module40Name=موردين Module700Name=تبرعات Module1780Name=الأوسمة/التصنيفات diff --git a/htdocs/langs/ar_EG/main.lang b/htdocs/langs/ar_EG/main.lang index e83f01bc8a1..970e5d4d1d2 100644 --- a/htdocs/langs/ar_EG/main.lang +++ b/htdocs/langs/ar_EG/main.lang @@ -22,10 +22,13 @@ FormatDateHourText=%B %d, %Y, %I:%M %p Closed=مقفول Closed2=مقفول CloseAs=اضبط الحالة على +Password=كلمة السر +Connection=تسجيل دخول RefSupplier=المرجع. مورد CommercialProposalsShort=عروض تجارية Refused=مرفوض Opened=افتح +Login=تسجيل دخول SearchIntoCustomerInvoices=فواتير العميل SearchIntoSupplierInvoices=فواتير المورد SearchIntoSupplierOrders=أوامر الشراء diff --git a/htdocs/langs/ar_EG/printing.lang b/htdocs/langs/ar_EG/printing.lang new file mode 100644 index 00000000000..8126189444c --- /dev/null +++ b/htdocs/langs/ar_EG/printing.lang @@ -0,0 +1,6 @@ +# Dolibarr language file - Source file is en_US - printing +PRINTGCP_AUTHLINK=توثيق +GCP_displayName=اسم العرض\n +PRINTIPP_HOST=خادم الطباعة +PRINTIPP_USER=تسجيل دخول +PRINTIPP_PASSWORD=كلمة السر diff --git a/htdocs/langs/ar_JO/admin.lang b/htdocs/langs/ar_JO/admin.lang index 8f60ac04582..c59947539f2 100644 --- a/htdocs/langs/ar_JO/admin.lang +++ b/htdocs/langs/ar_JO/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=المرجع والفترة الزمنية بالخط العريض ل بي دي اف -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Foundation Version=Version Publisher=الناشر @@ -343,7 +343,7 @@ StepNb=Step %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/ar_JO/bills.lang b/htdocs/langs/ar_JO/bills.lang index 3aaa5465ca0..f7d0155f41e 100644 --- a/htdocs/langs/ar_JO/bills.lang +++ b/htdocs/langs/ar_JO/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Payments reports PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Refunds already done PaymentRule=Payment rule -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Draft PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bank details BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/ar_JO/blockedlog.lang b/htdocs/langs/ar_JO/blockedlog.lang index 44cb183050a..12f28737d49 100644 --- a/htdocs/langs/ar_JO/blockedlog.lang +++ b/htdocs/langs/ar_JO/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/ar_JO/errors.lang b/htdocs/langs/ar_JO/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/ar_JO/errors.lang +++ b/htdocs/langs/ar_JO/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/ar_JO/eventorganization.lang b/htdocs/langs/ar_JO/eventorganization.lang index 82951892a32..b4a7279d757 100644 --- a/htdocs/langs/ar_JO/eventorganization.lang +++ b/htdocs/langs/ar_JO/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/ar_JO/holiday.lang b/htdocs/langs/ar_JO/holiday.lang index dceaef59081..3d0ae64be0f 100644 --- a/htdocs/langs/ar_JO/holiday.lang +++ b/htdocs/langs/ar_JO/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/ar_JO/knowledgemanagement.lang b/htdocs/langs/ar_JO/knowledgemanagement.lang index 2426e0e7013..bcdf9740cdd 100644 --- a/htdocs/langs/ar_JO/knowledgemanagement.lang +++ b/htdocs/langs/ar_JO/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/ar_JO/mrp.lang b/htdocs/langs/ar_JO/mrp.lang index 3f1aac53340..74bed0d9186 100644 --- a/htdocs/langs/ar_JO/mrp.lang +++ b/htdocs/langs/ar_JO/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/ar_JO/other.lang b/htdocs/langs/ar_JO/other.lang index 7b509f60ff7..49ff93dd589 100644 --- a/htdocs/langs/ar_JO/other.lang +++ b/htdocs/langs/ar_JO/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/ar_JO/products.lang b/htdocs/langs/ar_JO/products.lang index a8942bd337f..14715670882 100644 --- a/htdocs/langs/ar_JO/products.lang +++ b/htdocs/langs/ar_JO/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/ar_JO/projects.lang b/htdocs/langs/ar_JO/projects.lang index 0d9c7ea34c8..ff542521afe 100644 --- a/htdocs/langs/ar_JO/projects.lang +++ b/htdocs/langs/ar_JO/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/ar_JO/receptions.lang b/htdocs/langs/ar_JO/receptions.lang index 46b2d689609..7f1a97d16a9 100644 --- a/htdocs/langs/ar_JO/receptions.lang +++ b/htdocs/langs/ar_JO/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Canceled StatusReceptionDraft=Draft -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processed StatusReceptionDraftShort=Draft StatusReceptionValidatedShort=Validated @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/ar_SA/admin.lang b/htdocs/langs/ar_SA/admin.lang index 2fd95615c0c..7e2bcb6f6be 100644 --- a/htdocs/langs/ar_SA/admin.lang +++ b/htdocs/langs/ar_SA/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=أساس Version=الإصدار Publisher=الناشر @@ -18,8 +18,8 @@ FileIntegrityIsOkButFilesWereAdded=لقد نجح فحص سلامة الملفا FileIntegritySomeFilesWereRemovedOrModified=فشل فحص سلامة الملفات. تم تعديل بعض الملفات أو إزالتها أو إضافتها. GlobalChecksum=تفحص نهائي عام MakeIntegrityAnalysisFrom=إجراء تحليل سلامة لملفات التطبيق من -LocalSignature=Embedded local signature (less reliable) -RemoteSignature=Remote distant signature (more reliable) +LocalSignature=توقيع محلي مضمن (أقل موثوقية) +RemoteSignature=التوقيع عن بعد (أكثر موثوقية) FilesMissing=ملفات مفقودة FilesUpdated=ملفات محدثة FilesModified=ملفات معدلة @@ -39,10 +39,10 @@ UnlockNewSessions=إزالة قفل الإتصال YourSession=الجلسة الخاصة بك Sessions=جلسات المستخدمين WebUserGroup=خادم الويب المستخدم / المجموعة -PermissionsOnFiles=Permissions on files +PermissionsOnFiles=أذونات في الملف PermissionsOnFilesInWebRoot=Permissions on files in web root directory PermissionsOnFile=أذونات في الملف %s -NoSessionFound=Your PHP configuration seems to not allow listing of active sessions. The directory used to save sessions (%s) may be protected (for example by OS permissions or by PHP directive open_basedir). +NoSessionFound=يبدو أن تكوين PHP الخاص بك لا يسمح بإدراج الجلسات النشطة. قد يتم حماية الدليل المستخدم لحفظ الجلسات ( %s ) (على سبيل المثال عن طريق أذونات نظام التشغيل أو عن طريق توجيه PHP open_basedir). DBStoringCharset=الترميز الخاص بقاعدة البيانات لتخزين المعلومات DBSortingCharset=الترميز الخاص بقاعدة البيانات لتخزين المعلومات HostCharset=ترميز المضيف @@ -55,19 +55,19 @@ InternalUser=مستخدم داخلي ExternalUser=مستخدم خارجي InternalUsers=مستخدمين داخليين ExternalUsers=مستخدمين خارجيين -UserInterface=User interface +UserInterface=الواجهة العامة GUISetup=العرض SetupArea=التثبيت UploadNewTemplate=تحميل قالب جديد FormToTestFileUploadForm=نموذج لاختبار تحميل ملف (وفقا لبرنامج الإعداد) -ModuleMustBeEnabled=The module/application %s must be enabled -ModuleIsEnabled=The module/application %s has been enabled +ModuleMustBeEnabled=يجب أن يكون النموذج / التطبيق %s مفعل +ModuleIsEnabled=النموذج / التطبيق %s تم تفعيله IfModuleEnabled=ملاحظة : نعم فعالة فقط في حال كان النموذج %s مفعل -RemoveLock=Remove/rename file %s if it exists, to allow usage of the Update/Install tool. +RemoveLock=حذف/إعادة تسمية الملف %sإذا كان موجود , للسماح باستخدام أداة الرفع/التثبيت . RestoreLock=Restore file %s, with read permission only, to disable any further use of the Update/Install tool. SecuritySetup=الإعداد الأمني -PHPSetup=PHP setup -OSSetup=OS setup +PHPSetup=إعدادت PHP +OSSetup=إعدادات نظام التشغيل SecurityFilesDesc=حدد هنا الخيارات المتعلقة بالأمان حول تحميل الملفات. ErrorModuleRequirePHPVersion=خطأ ، هذا النموذج يتطلب نسخة بي إتش بي %s أو أعلى ErrorModuleRequireDolibarrVersion=خطأ ، هذا النموذج يتطلب نسخة دوليبار %s أو أعلى @@ -343,7 +343,7 @@ StepNb=الخطوة %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=تسليط الضوء على خطوط الجدول عندما يمر تحرك الماوس فوق HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=لون الروابط PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/ar_SA/bills.lang b/htdocs/langs/ar_SA/bills.lang index 702c8535824..7d018917ac0 100644 --- a/htdocs/langs/ar_SA/bills.lang +++ b/htdocs/langs/ar_SA/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=تقارير المدفوعات PaymentsAlreadyDone=المدفوعات قد فعلت PaymentsBackAlreadyDone=تم رد الأموال PaymentRule=قاعدة الدفع -PaymentMode=طريفة الدفع -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=بطاقة الخصم / الائتمان -PaymentTypePP=PayPal -IdPaymentMode=معرف نوع السداد -CodePaymentMode=كود نوع السداد -LabelPaymentMode=اسم نوع السداد -PaymentModeShort=طريفة السداد +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=شروط السداد PaymentConditions=شروط السداد PaymentConditionsShort=شروط السداد @@ -280,6 +279,7 @@ SetMode=حدد نوع السداد SetRevenuStamp=حدد ختم الإيرادات Billed=فواتير RecurringInvoices=الفواتير المتكررة +RecurringInvoice=Recurring invoice RepeatableInvoice=قالب الفاتورة RepeatableInvoices=قالب الفواتير Repeatable=قالب @@ -449,6 +449,8 @@ PaymentTypeTRA=حوالة مصرفية PaymentTypeShortTRA=حوالة مصرفية PaymentTypeFAC=عامل PaymentTypeShortFAC=عامل +PaymentTypeDC=بطاقة الخصم / الائتمان +PaymentTypePP=PayPal BankDetails=تفاصيل مصرفية BankCode=رمز البنك DeskCode=رمز الفرع @@ -604,3 +606,4 @@ SituationTotalProgress=إجمالي التقدم %d %% 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 diff --git a/htdocs/langs/ar_SA/blockedlog.lang b/htdocs/langs/ar_SA/blockedlog.lang index 2f01fbe9817..021cbd00dc9 100644 --- a/htdocs/langs/ar_SA/blockedlog.lang +++ b/htdocs/langs/ar_SA/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/ar_SA/errors.lang b/htdocs/langs/ar_SA/errors.lang index 6192948f084..0b94eabbb83 100644 --- a/htdocs/langs/ar_SA/errors.lang +++ b/htdocs/langs/ar_SA/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=هذا الاتصال هو اتصال ErrorCashAccountAcceptsOnlyCashMoney=هذا الحساب المصرفي هو الحساب النقدي ، وذلك ما وافق على نوع من المدفوعات النقدية فقط. ErrorFromToAccountsMustDiffers=المصدر والأهداف يجب أن تكون الحسابات المصرفية المختلفة. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=و٪ s غير إلزامي +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=سوء تركيب الزبون مدونة ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=رمز العميل المطلوبة @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/ar_SA/eventorganization.lang b/htdocs/langs/ar_SA/eventorganization.lang index f357dc77992..71434cc289f 100644 --- a/htdocs/langs/ar_SA/eventorganization.lang +++ b/htdocs/langs/ar_SA/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/ar_SA/holiday.lang b/htdocs/langs/ar_SA/holiday.lang index 8b5279a03dc..accadd28e1b 100644 --- a/htdocs/langs/ar_SA/holiday.lang +++ b/htdocs/langs/ar_SA/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/ar_SA/knowledgemanagement.lang b/htdocs/langs/ar_SA/knowledgemanagement.lang index 958c0843b82..002cf78ddf2 100644 --- a/htdocs/langs/ar_SA/knowledgemanagement.lang +++ b/htdocs/langs/ar_SA/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/ar_SA/mrp.lang b/htdocs/langs/ar_SA/mrp.lang index 7473b4d2138..0abf5f071be 100644 --- a/htdocs/langs/ar_SA/mrp.lang +++ b/htdocs/langs/ar_SA/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/ar_SA/other.lang b/htdocs/langs/ar_SA/other.lang index 0e8d0ee36a0..fb7e8ef709e 100644 --- a/htdocs/langs/ar_SA/other.lang +++ b/htdocs/langs/ar_SA/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=صادرات المنطقة diff --git a/htdocs/langs/ar_SA/printing.lang b/htdocs/langs/ar_SA/printing.lang index 7b1b57866c9..01b13693845 100644 --- a/htdocs/langs/ar_SA/printing.lang +++ b/htdocs/langs/ar_SA/printing.lang @@ -1,15 +1,15 @@ # Dolibarr language file - Source file is en_US - printing -Module64000Name=One click Printing -Module64000Desc=Enable One click Printing System -PrintingSetup=Setup of One click Printing System -PrintingDesc=This module adds a Print button to various modules to allow documents to be printed directly to a printer with no need to open the document into another application. -MenuDirectPrinting=One click Printing jobs -DirectPrint=One click Print +Module64000Name=طباعة بنقرة واحدة +Module64000Desc=إتاحة نظام الطباعة بنقرة واحدة +PrintingSetup=إعدادات نظام طباعة بنقرة واحدة +PrintingDesc=تضيف هذه الوحدة زر الطباعة إلى وحدات مختلفة للسماح بطباعة الوثائق مباشرة إلى طابعة دون الحاجة إلى فتح الوثيقة في تطبيق آخر. +MenuDirectPrinting=وظائف الطباعة بنقرة واحدة +DirectPrint=طباعة بنقرة واحدة\n PrintingDriverDesc=المتغيرات التكوين للطباعة السائق. ListDrivers=قائمة برامج التشغيل PrintTestDesc=قائمة الطابعات. FileWasSentToPrinter=وأرسل ملف٪ s إلى طابعة -ViaModule=via the module +ViaModule=عبر الوحدة NoActivePrintingModuleFound=No active driver to print document. Check setup of module %s. PleaseSelectaDriverfromList=يرجى تحديد برنامج تشغيل من القائمة. PleaseConfigureDriverfromList=يرجى تكوين برنامج التشغيل المحدد من القائمة. diff --git a/htdocs/langs/ar_SA/productbatch.lang b/htdocs/langs/ar_SA/productbatch.lang index 995cbe2a0a2..529f7a6f6f4 100644 --- a/htdocs/langs/ar_SA/productbatch.lang +++ b/htdocs/langs/ar_SA/productbatch.lang @@ -1,10 +1,10 @@ # 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=استخدام حصة / الرقم التسلسلي +ProductStatusOnBatch=نعم (الحصة مطلوبة) +ProductStatusOnSerial=نعم (رقم تسلسلي فريد من نوعه مطلوب) +ProductStatusNotOnBatch=رقم (حصة / الرقم التسلسلي لم يستخدم) +ProductStatusOnBatchShort=حصة +ProductStatusOnSerialShort=الرقم التسلسلي ProductStatusNotOnBatchShort=لا Batch=الكثير / المسلسل atleast1batchfield=أكل حسب التاريخ أو بيع حسب التاريخ أو لوط / الرقم التسلسلي @@ -20,22 +20,22 @@ printQty=الكمية:٪ د 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 +ProductLotSetup=إعدادات الحصة / الرقم التسلسلي +ShowCurrentStockOfLot=عرض المخزون الحالي للمنتجات/الحصص. +ShowLogOfMovementIfLot=عرض سجل الحركات للمنتجات/ الحصص . +StockDetailPerBatch=تفاصيل المخزون لكل قطعة +SerialNumberAlreadyInUse=الرقم التسلسلي %s مستخدم للمنتج %s TooManyQtyForSerialNumber=You can only have one product %s for serial number %s -ManageLotMask=Custom mask +ManageLotMask=قناع مخصص 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 +LifeTime=المدة (بالأيام) +EndOfLife=نهاية المدة +ManufacturingDate=تاريخ التصنيع +DestructionDate=تاريخ التدمير +FirstUseDate=تاريخ أول استخدام QCFrequency=Quality control frequency (in days) ShowAllLots=Show all lots HideLots=Hide lots diff --git a/htdocs/langs/ar_SA/products.lang b/htdocs/langs/ar_SA/products.lang index 97002c450ca..bda51095681 100644 --- a/htdocs/langs/ar_SA/products.lang +++ b/htdocs/langs/ar_SA/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/ar_SA/projects.lang b/htdocs/langs/ar_SA/projects.lang index 2c8dfe4df1c..7c52187cf3d 100644 --- a/htdocs/langs/ar_SA/projects.lang +++ b/htdocs/langs/ar_SA/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=مشاريع مع هذا العضو عن الاتصال +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=المهام الموكلة إلى هذا المستخدم ResourceNotAssignedToProject=لم يتم تعيين إلى المشروع ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=تاريخ نهاية لا يمكن أن يكون قبل تاريخ البدء diff --git a/htdocs/langs/ar_SA/receptions.lang b/htdocs/langs/ar_SA/receptions.lang index 5965f6e7e38..0a463e7d4fc 100644 --- a/htdocs/langs/ar_SA/receptions.lang +++ b/htdocs/langs/ar_SA/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=على عملية Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=ألغيت StatusReceptionDraft=مسودة -StatusReceptionValidated=صادق (لشحن المنتجات أو شحنها بالفعل) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=معالجة StatusReceptionDraftShort=مسودة StatusReceptionValidatedShort=التحقق من صحة @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/az_AZ/admin.lang b/htdocs/langs/az_AZ/admin.lang index 3971948e5a1..d79adb1e960 100644 --- a/htdocs/langs/az_AZ/admin.lang +++ b/htdocs/langs/az_AZ/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Foundation Version=Version Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=Step %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/az_AZ/bills.lang b/htdocs/langs/az_AZ/bills.lang index 3aaa5465ca0..f7d0155f41e 100644 --- a/htdocs/langs/az_AZ/bills.lang +++ b/htdocs/langs/az_AZ/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Payments reports PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Refunds already done PaymentRule=Payment rule -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Draft PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bank details BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/az_AZ/blockedlog.lang b/htdocs/langs/az_AZ/blockedlog.lang index 0bba5605d0f..12f28737d49 100644 --- a/htdocs/langs/az_AZ/blockedlog.lang +++ b/htdocs/langs/az_AZ/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/az_AZ/errors.lang b/htdocs/langs/az_AZ/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/az_AZ/errors.lang +++ b/htdocs/langs/az_AZ/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/az_AZ/eventorganization.lang b/htdocs/langs/az_AZ/eventorganization.lang index 82951892a32..b4a7279d757 100644 --- a/htdocs/langs/az_AZ/eventorganization.lang +++ b/htdocs/langs/az_AZ/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/az_AZ/holiday.lang b/htdocs/langs/az_AZ/holiday.lang index dceaef59081..3d0ae64be0f 100644 --- a/htdocs/langs/az_AZ/holiday.lang +++ b/htdocs/langs/az_AZ/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/az_AZ/knowledgemanagement.lang b/htdocs/langs/az_AZ/knowledgemanagement.lang index 2426e0e7013..bcdf9740cdd 100644 --- a/htdocs/langs/az_AZ/knowledgemanagement.lang +++ b/htdocs/langs/az_AZ/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/az_AZ/mrp.lang b/htdocs/langs/az_AZ/mrp.lang index 3f1aac53340..74bed0d9186 100644 --- a/htdocs/langs/az_AZ/mrp.lang +++ b/htdocs/langs/az_AZ/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/az_AZ/other.lang b/htdocs/langs/az_AZ/other.lang index 7b509f60ff7..49ff93dd589 100644 --- a/htdocs/langs/az_AZ/other.lang +++ b/htdocs/langs/az_AZ/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/az_AZ/products.lang b/htdocs/langs/az_AZ/products.lang index a8942bd337f..14715670882 100644 --- a/htdocs/langs/az_AZ/products.lang +++ b/htdocs/langs/az_AZ/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/az_AZ/projects.lang b/htdocs/langs/az_AZ/projects.lang index 0d9c7ea34c8..ff542521afe 100644 --- a/htdocs/langs/az_AZ/projects.lang +++ b/htdocs/langs/az_AZ/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/az_AZ/receptions.lang b/htdocs/langs/az_AZ/receptions.lang index 46b2d689609..7f1a97d16a9 100644 --- a/htdocs/langs/az_AZ/receptions.lang +++ b/htdocs/langs/az_AZ/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Canceled StatusReceptionDraft=Draft -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processed StatusReceptionDraftShort=Draft StatusReceptionValidatedShort=Validated @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/bg_BG/admin.lang b/htdocs/langs/bg_BG/admin.lang index e105187f942..08f7a113d11 100644 --- a/htdocs/langs/bg_BG/admin.lang +++ b/htdocs/langs/bg_BG/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Организация Version=Версия Publisher=Издател @@ -343,7 +343,7 @@ StepNb=Стъпка %s FindPackageFromWebSite=Намерете пакет, който ви осигурява функционалността от която имате нужда (например на официалния уебсайт %s). DownloadPackageFromWebSite=Изтеглете пакета (например от официалния уебсайт %s). UnpackPackageInDolibarrRoot=Разопаковайте / разархивирайте файловете в директорията %s на Dolibarr -UnpackPackageInModulesRoot=За да разположите / инсталирате външен модул, разопаковайте / разархивирайте пакетираните файлове в директорията
%s на сървъра, определена за външни модули +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Разполагането на модула е завършено. Необходимо е да активирате и настроите модула във вашата система, като отидете на страницата за настройка на модули: %s . NotExistsDirect=Алтернативната основна директория не е дефинирана за съществуваща директория.
InfDirAlt=От версия 3 е възможно да се дефинира алтернативна основна директория. Това ви позволява да съхранявате в специална директория, добавки и персонализирани шаблони.
Просто създайте основна директория в Dolibarr (например: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Инсталирането или създаванет HighlightLinesOnMouseHover=Маркиране на редове в таблица, когато мишката преминава отгоре HighlightLinesColor=Цвят на подчертания ред при преминаване на мишката отгоре (използвайте 'ffffff', ако не искате да се подчертава) HighlightLinesChecked=Цвят на подчертания ред, когато е маркиран (използвайте 'ffffff',ако не искате да се подчертава) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Цвят на текста в заглавието на страницата LinkColor=Цвят на връзките PressF5AfterChangingThis=Натиснете CTRL + F5 на клавиатурата или изчистете кеша на браузъра си след като промените тази стойност, за да стане ефективна. @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/bg_BG/bills.lang b/htdocs/langs/bg_BG/bills.lang index 48f89b283d8..abcacda9424 100644 --- a/htdocs/langs/bg_BG/bills.lang +++ b/htdocs/langs/bg_BG/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Справки за плащания PaymentsAlreadyDone=Вече направени плащания PaymentsBackAlreadyDone=Вече направени възстановявания PaymentRule=Правило за плащане -PaymentMode=Начин на плащане -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Дебитна / Кредитна карта -PaymentTypePP=PayPal -IdPaymentMode=Начин на плащане (идентификатор) -CodePaymentMode=Начин на плащане (код) -LabelPaymentMode=Начин на плащане (текст) -PaymentModeShort=Начин на плащане +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Условие за плащане PaymentConditions=Условия за плащане PaymentConditionsShort=Условия за плащане @@ -280,6 +279,7 @@ SetMode=Определете начин на плащане SetRevenuStamp=Определете гербова марка (бандерол) Billed=Фактурирано RecurringInvoices=Повтарящи се фактури +RecurringInvoice=Recurring invoice RepeatableInvoice=Шаблонна фактура RepeatableInvoices=Шаблонни фактури Repeatable=Шаблон @@ -449,6 +449,8 @@ PaymentTypeTRA=Банкова гаранция PaymentTypeShortTRA=Гаранция PaymentTypeFAC=Фактор PaymentTypeShortFAC=Фактор +PaymentTypeDC=Дебитна / Кредитна карта +PaymentTypePP=PayPal BankDetails=Банкови данни BankCode=Банков код DeskCode=Код на клон @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/bg_BG/blockedlog.lang b/htdocs/langs/bg_BG/blockedlog.lang index 892210b3ebb..40ada06b4b8 100644 --- a/htdocs/langs/bg_BG/blockedlog.lang +++ b/htdocs/langs/bg_BG/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Неизменими регистри ShowAllFingerPrintsMightBeTooLong=Показване на всички архивирани регистри (може да са дълги) ShowAllFingerPrintsErrorsMightBeTooLong=Показване на всички невалидни архивирани регистри (може да са дълги) DownloadBlockChain=Изтегляне на идентификационни данни -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Записът в архивираният регистър е валиден. Данните от този ред не са променени и записът следва предишния. OkCheckFingerprintValidityButChainIsKo=Архивираният регистър изглежда валиден в сравнение с предишния, но веригата е повредена от преди това. AddedByAuthority=Съхранено в отдалечен орган @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=Списък на държавите, в OnlyNonValid=Невалидно TooManyRecordToScanRestrictFilters=Твърде много записи за сканиране / анализиране. Моля, ограничете списъка с по-конкретни филтри. RestrictYearToExport=Ограничаване на месец / година за експортиране +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/bg_BG/errors.lang b/htdocs/langs/bg_BG/errors.lang index 0969328f231..ceb6c75ae21 100644 --- a/htdocs/langs/bg_BG/errors.lang +++ b/htdocs/langs/bg_BG/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Този контакт вече е ErrorCashAccountAcceptsOnlyCashMoney=Тази банкова сметка е касова сметка, така че приема плащания само в брой. ErrorFromToAccountsMustDiffers=Източниците и целевите банкови сметки трябва да са различни. ErrorBadThirdPartyName=Неправилна стойност за име на контрагент +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=%s е задължително +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Неправилен синтаксис за клиентски код ErrorBadBarCodeSyntax=Неправилен синтаксис за баркод. Може би сте задали неправилен тип баркод или баркод маска за номериране, които не съответстват на сканираната стойност. ErrorCustomerCodeRequired=Необходим е клиентски код @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Вашата стойност на PHP параметър upload_max_filesize (%s) е по-голяма от стойността на PHP параметър post_max_size (%s). Това не е последователна настройка. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/bg_BG/eventorganization.lang b/htdocs/langs/bg_BG/eventorganization.lang index ae73c56cf07..447662d81b1 100644 --- a/htdocs/langs/bg_BG/eventorganization.lang +++ b/htdocs/langs/bg_BG/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/bg_BG/holiday.lang b/htdocs/langs/bg_BG/holiday.lang index 94ee33f3491..1262acd3b8a 100644 --- a/htdocs/langs/bg_BG/holiday.lang +++ b/htdocs/langs/bg_BG/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Молби за отпуск за одобрение NobodyHasPermissionToValidateHolidays=Никой няма права за валидиране на молби за отпуск HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/bg_BG/knowledgemanagement.lang b/htdocs/langs/bg_BG/knowledgemanagement.lang index db3990f0eac..e916f639077 100644 --- a/htdocs/langs/bg_BG/knowledgemanagement.lang +++ b/htdocs/langs/bg_BG/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/bg_BG/mrp.lang b/htdocs/langs/bg_BG/mrp.lang index 30e7e553675..0ff188dba14 100644 --- a/htdocs/langs/bg_BG/mrp.lang +++ b/htdocs/langs/bg_BG/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Сигурни ли сте, че искате да клонирате поръчката за производство %s? ManufacturingEfficiency=Производствена ефективност ConsumptionEfficiency=Потребляема ефективност -ValueOfMeansLoss=Стойност 0,95 означава средно 5%% загуба по време на производство +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Стойност 0,95 означава средно 5%% загуба от произведен продукт DeleteBillOfMaterials=Изтриване на списък с материали DeleteMo=Изтриване на поръчка за производство diff --git a/htdocs/langs/bg_BG/other.lang b/htdocs/langs/bg_BG/other.lang index c125bbe8710..a66f6c66ddb 100644 --- a/htdocs/langs/bg_BG/other.lang +++ b/htdocs/langs/bg_BG/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Проектът е създаден, чрез и TicketCreatedByEmailCollector=Тикетът е създаден, чрез имейл колектор от имейл MSGID %s OpeningHoursFormatDesc=Използвайте средно тире '-' за разделяне на часовете на отваряне и затваряне.
Използвайте интервал, за да въведете различни диапазони.
Пример: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Секция с експортирания diff --git a/htdocs/langs/bg_BG/products.lang b/htdocs/langs/bg_BG/products.lang index 51186cdfab2..448a69e3fb0 100644 --- a/htdocs/langs/bg_BG/products.lang +++ b/htdocs/langs/bg_BG/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/bg_BG/projects.lang b/htdocs/langs/bg_BG/projects.lang index e94891f1693..f1c73f32c82 100644 --- a/htdocs/langs/bg_BG/projects.lang +++ b/htdocs/langs/bg_BG/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=За месец InputDetail=Детайли TimeAlreadyRecorded=Това отделено време е вече записано за тази задача / ден и потребител %s ProjectsWithThisUserAsContact=Проекти с потребител за контакт +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Задачи възложени на потребител ResourceNotAssignedToProject=Не е участник в проекта ResourceNotAssignedToTheTask=Не е участник в задачата @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=Крайната дата не може да бъде преди началната дата diff --git a/htdocs/langs/bg_BG/receptions.lang b/htdocs/langs/bg_BG/receptions.lang index a89ee464387..64450c03620 100644 --- a/htdocs/langs/bg_BG/receptions.lang +++ b/htdocs/langs/bg_BG/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Настройка на модул стокови разписки +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Съгласно стокова разписка № Reception=Стокова разписка Receptions=Стокови разписки @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Стокови разписки за тази ReceptionsToValidate=Стокови разписки за валидиране StatusReceptionCanceled=Анулирана StatusReceptionDraft=Чернова -StatusReceptionValidated=Валидирана (продукти за изпращане или вече изпратени) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Обработена StatusReceptionDraftShort=Чернова StatusReceptionValidatedShort=Валидирана @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Статистиката е водена само SendReceptionByEMail=Изпращане на стокова разписка по имейл SendReceptionRef=Изпращане на стокова разписка %s ActionsOnReception=Свързани събития -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Стоков ред ProductQtyInReceptionAlreadySent=Количество продукт от вече изпратена поръчка за продажба ProductQtyInSuppliersReceptionAlreadyRecevied=Количество продукт от вече получена поръчка за покупка @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Шаблони на документи за стоков NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/bn_BD/admin.lang b/htdocs/langs/bn_BD/admin.lang index 3971948e5a1..d79adb1e960 100644 --- a/htdocs/langs/bn_BD/admin.lang +++ b/htdocs/langs/bn_BD/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Foundation Version=Version Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=Step %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/bn_BD/bills.lang b/htdocs/langs/bn_BD/bills.lang index b0d57d50d97..1d0ebd16a74 100644 --- a/htdocs/langs/bn_BD/bills.lang +++ b/htdocs/langs/bn_BD/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Payments reports PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Refunds already done PaymentRule=Payment rule -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Draft PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bank details BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/bn_BD/blockedlog.lang b/htdocs/langs/bn_BD/blockedlog.lang index 0bba5605d0f..12f28737d49 100644 --- a/htdocs/langs/bn_BD/blockedlog.lang +++ b/htdocs/langs/bn_BD/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/bn_BD/errors.lang b/htdocs/langs/bn_BD/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/bn_BD/errors.lang +++ b/htdocs/langs/bn_BD/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/bn_BD/eventorganization.lang b/htdocs/langs/bn_BD/eventorganization.lang index 82951892a32..b4a7279d757 100644 --- a/htdocs/langs/bn_BD/eventorganization.lang +++ b/htdocs/langs/bn_BD/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/bn_BD/holiday.lang b/htdocs/langs/bn_BD/holiday.lang index dceaef59081..3d0ae64be0f 100644 --- a/htdocs/langs/bn_BD/holiday.lang +++ b/htdocs/langs/bn_BD/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/bn_BD/knowledgemanagement.lang b/htdocs/langs/bn_BD/knowledgemanagement.lang index 2426e0e7013..bcdf9740cdd 100644 --- a/htdocs/langs/bn_BD/knowledgemanagement.lang +++ b/htdocs/langs/bn_BD/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/bn_BD/mrp.lang b/htdocs/langs/bn_BD/mrp.lang index 3f1aac53340..74bed0d9186 100644 --- a/htdocs/langs/bn_BD/mrp.lang +++ b/htdocs/langs/bn_BD/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/bn_BD/other.lang b/htdocs/langs/bn_BD/other.lang index 7b509f60ff7..49ff93dd589 100644 --- a/htdocs/langs/bn_BD/other.lang +++ b/htdocs/langs/bn_BD/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/bn_BD/products.lang b/htdocs/langs/bn_BD/products.lang index a8942bd337f..14715670882 100644 --- a/htdocs/langs/bn_BD/products.lang +++ b/htdocs/langs/bn_BD/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/bn_BD/projects.lang b/htdocs/langs/bn_BD/projects.lang index 0d9c7ea34c8..ff542521afe 100644 --- a/htdocs/langs/bn_BD/projects.lang +++ b/htdocs/langs/bn_BD/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/bn_BD/receptions.lang b/htdocs/langs/bn_BD/receptions.lang index 46b2d689609..7f1a97d16a9 100644 --- a/htdocs/langs/bn_BD/receptions.lang +++ b/htdocs/langs/bn_BD/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Canceled StatusReceptionDraft=Draft -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processed StatusReceptionDraftShort=Draft StatusReceptionValidatedShort=Validated @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/bn_IN/admin.lang b/htdocs/langs/bn_IN/admin.lang index 3971948e5a1..d79adb1e960 100644 --- a/htdocs/langs/bn_IN/admin.lang +++ b/htdocs/langs/bn_IN/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Foundation Version=Version Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=Step %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/bn_IN/bills.lang b/htdocs/langs/bn_IN/bills.lang index 3aaa5465ca0..f7d0155f41e 100644 --- a/htdocs/langs/bn_IN/bills.lang +++ b/htdocs/langs/bn_IN/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Payments reports PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Refunds already done PaymentRule=Payment rule -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Draft PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bank details BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/bn_IN/blockedlog.lang b/htdocs/langs/bn_IN/blockedlog.lang index 0bba5605d0f..12f28737d49 100644 --- a/htdocs/langs/bn_IN/blockedlog.lang +++ b/htdocs/langs/bn_IN/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/bn_IN/errors.lang b/htdocs/langs/bn_IN/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/bn_IN/errors.lang +++ b/htdocs/langs/bn_IN/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/bn_IN/eventorganization.lang b/htdocs/langs/bn_IN/eventorganization.lang index 82951892a32..b4a7279d757 100644 --- a/htdocs/langs/bn_IN/eventorganization.lang +++ b/htdocs/langs/bn_IN/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/bn_IN/holiday.lang b/htdocs/langs/bn_IN/holiday.lang index dceaef59081..3d0ae64be0f 100644 --- a/htdocs/langs/bn_IN/holiday.lang +++ b/htdocs/langs/bn_IN/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/bn_IN/knowledgemanagement.lang b/htdocs/langs/bn_IN/knowledgemanagement.lang index 2426e0e7013..bcdf9740cdd 100644 --- a/htdocs/langs/bn_IN/knowledgemanagement.lang +++ b/htdocs/langs/bn_IN/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/bn_IN/mrp.lang b/htdocs/langs/bn_IN/mrp.lang index 3f1aac53340..74bed0d9186 100644 --- a/htdocs/langs/bn_IN/mrp.lang +++ b/htdocs/langs/bn_IN/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/bn_IN/other.lang b/htdocs/langs/bn_IN/other.lang index 7b509f60ff7..49ff93dd589 100644 --- a/htdocs/langs/bn_IN/other.lang +++ b/htdocs/langs/bn_IN/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/bn_IN/products.lang b/htdocs/langs/bn_IN/products.lang index a8942bd337f..14715670882 100644 --- a/htdocs/langs/bn_IN/products.lang +++ b/htdocs/langs/bn_IN/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/bn_IN/projects.lang b/htdocs/langs/bn_IN/projects.lang index 0d9c7ea34c8..ff542521afe 100644 --- a/htdocs/langs/bn_IN/projects.lang +++ b/htdocs/langs/bn_IN/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/bn_IN/receptions.lang b/htdocs/langs/bn_IN/receptions.lang index 46b2d689609..7f1a97d16a9 100644 --- a/htdocs/langs/bn_IN/receptions.lang +++ b/htdocs/langs/bn_IN/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Canceled StatusReceptionDraft=Draft -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processed StatusReceptionDraftShort=Draft StatusReceptionValidatedShort=Validated @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/bs_BA/admin.lang b/htdocs/langs/bs_BA/admin.lang index adea2378f2f..2ce6165e282 100644 --- a/htdocs/langs/bs_BA/admin.lang +++ b/htdocs/langs/bs_BA/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Fondacija Version=Verzija Publisher=Izdavač @@ -343,7 +343,7 @@ StepNb=Step %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/bs_BA/bills.lang b/htdocs/langs/bs_BA/bills.lang index 43bdc280644..969e6d8fbe5 100644 --- a/htdocs/langs/bs_BA/bills.lang +++ b/htdocs/langs/bs_BA/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Izvještaji o uplatama PaymentsAlreadyDone=Izvršene uplate PaymentsBackAlreadyDone=Refunds already done PaymentRule=Pravilo plaćanja -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debitna/kreditna kartica -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Fakturisano RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Šablonska faktura RepeatableInvoices=Šablonske fakture Repeatable=Šablon @@ -449,6 +449,8 @@ PaymentTypeTRA=Povlačenje banke PaymentTypeShortTRA=Nacrt PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debitna/kreditna kartica +PaymentTypePP=PayPal BankDetails=Podaci o banki BankCode=Kod banke DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/bs_BA/blockedlog.lang b/htdocs/langs/bs_BA/blockedlog.lang index 0bba5605d0f..12f28737d49 100644 --- a/htdocs/langs/bs_BA/blockedlog.lang +++ b/htdocs/langs/bs_BA/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/bs_BA/errors.lang b/htdocs/langs/bs_BA/errors.lang index c2fa833e62e..864a09e3e63 100644 --- a/htdocs/langs/bs_BA/errors.lang +++ b/htdocs/langs/bs_BA/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/bs_BA/eventorganization.lang b/htdocs/langs/bs_BA/eventorganization.lang index feb62375b7b..082f8acc4bf 100644 --- a/htdocs/langs/bs_BA/eventorganization.lang +++ b/htdocs/langs/bs_BA/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/bs_BA/holiday.lang b/htdocs/langs/bs_BA/holiday.lang index 4b2a975af89..76dc1b6154c 100644 --- a/htdocs/langs/bs_BA/holiday.lang +++ b/htdocs/langs/bs_BA/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/bs_BA/knowledgemanagement.lang b/htdocs/langs/bs_BA/knowledgemanagement.lang index 989382a2264..a6c842f5c75 100644 --- a/htdocs/langs/bs_BA/knowledgemanagement.lang +++ b/htdocs/langs/bs_BA/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/bs_BA/mrp.lang b/htdocs/langs/bs_BA/mrp.lang index 994d2416fde..b3fb904ae07 100644 --- a/htdocs/langs/bs_BA/mrp.lang +++ b/htdocs/langs/bs_BA/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/bs_BA/other.lang b/htdocs/langs/bs_BA/other.lang index 993973a6849..4ef2a28837a 100644 --- a/htdocs/langs/bs_BA/other.lang +++ b/htdocs/langs/bs_BA/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/bs_BA/products.lang b/htdocs/langs/bs_BA/products.lang index 51a0a4d07ff..c8f23d7694b 100644 --- a/htdocs/langs/bs_BA/products.lang +++ b/htdocs/langs/bs_BA/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/bs_BA/projects.lang b/htdocs/langs/bs_BA/projects.lang index 7301a6277fc..ba1f4b44551 100644 --- a/htdocs/langs/bs_BA/projects.lang +++ b/htdocs/langs/bs_BA/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=Datum završetka ne može biti prije datuma početka diff --git a/htdocs/langs/bs_BA/receptions.lang b/htdocs/langs/bs_BA/receptions.lang index 4624552b977..e64de16bb1c 100644 --- a/htdocs/langs/bs_BA/receptions.lang +++ b/htdocs/langs/bs_BA/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Otkazan StatusReceptionDraft=Nacrt -StatusReceptionValidated=Potvrđeno (proizvodi za slanje ili već poslano) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Obrađeno StatusReceptionDraftShort=Nacrt StatusReceptionValidatedShort=Potvrđeno @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/ca_ES/accountancy.lang b/htdocs/langs/ca_ES/accountancy.lang index 1f2f17bb3e4..c2ef03783fb 100644 --- a/htdocs/langs/ca_ES/accountancy.lang +++ b/htdocs/langs/ca_ES/accountancy.lang @@ -37,8 +37,8 @@ OtherInfo=Una altra informació DeleteCptCategory=Eliminar el compte comptable del grup ConfirmDeleteCptCategory=Estàs segur que vols eliminar aquest compte comptable del grup de comptabilitat? JournalizationInLedgerStatus=Estat del diari -AlreadyInGeneralLedger=Already transferred to accounting journals and ledger -NotYetInGeneralLedger=Not yet transferred to accouting journals and ledger +AlreadyInGeneralLedger=Ja s'ha transferit als diaris comptables i al llibre major +NotYetInGeneralLedger=Encara no s'ha transferit a les revistes comptables i al llibre major GroupIsEmptyCheckSetup=El grup està buit, comproveu la configuració del grup de comptabilitat personalitzat DetailByAccount=Mostra detalls per compte AccountWithNonZeroValues=Compte amb valors no nuls @@ -48,8 +48,8 @@ CountriesNotInEEC=Països no integrats a la CEE CountriesInEECExceptMe=Països a la CEE excepte %s CountriesExceptMe=Tots els països, excepte %s AccountantFiles=Exporta documents d'origen -ExportAccountingSourceDocHelp=With this tool, you can export the source events (list in CSV and PDFs) that are used to generate your accountancy. -ExportAccountingSourceDocHelp2=Per exportar les vostres revistes, utilitzeu l'entrada de menú %s - %s. +ExportAccountingSourceDocHelp=Amb aquesta eina, podeu exportar els esdeveniments d'origen (llista en CSV i PDF) que s'utilitzen per a generar la vostra comptabilitat. +ExportAccountingSourceDocHelp2=Per a exportar els vostres diaris, utilitzeu l'entrada de menú %s - %s. VueByAccountAccounting=Veure per compte comptable VueBySubAccountAccounting=Veure-ho per subcomptes comptables @@ -203,7 +203,7 @@ Docref=Referència LabelAccount=Etiqueta de compte LabelOperation=Etiqueta de l'operació Sens=Direcció -AccountingDirectionHelp=Per a un compte comptable d'un client, utilitzeu Crèdit per registrar un pagament que heu rebut
Per a un compte comptable d'un proveïdor, utilitzeu Dèbit per registrar el pagament que heu fet +AccountingDirectionHelp=Per a un compte comptable d'un client, utilitzeu Crèdit per a registrar un pagament que heu rebut
Per a un compte comptable d'un proveïdor, utilitzeu Dèbit per a registrar el pagament que heu fet LetteringCode=Codi de retolació Lettering=Lletres Codejournal=Diari @@ -256,7 +256,7 @@ ShowOpeningBalance=Mostra el saldo d'obertura HideOpeningBalance=Amagueu el balanç d'obertura ShowSubtotalByGroup=Mostra el subtotal per nivell -Pcgtype=Grup de compte +Pcgtype=Grup de comptes PcgtypeDesc=S'utilitzen grups de comptes com a criteris predefinits de «filtre» i «agrupació» per a alguns informes de comptabilitat. Per exemple, «INGRESSOS» o «DESPESES» s'utilitzen com a grups per a comptes comptables de productes per a crear l'informe de despeses/ingressos. Reconcilable=Reconciliable @@ -286,7 +286,7 @@ ValidateMovements=Valida 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=Automatic bindings done (%s) - Automatic binding not possible for some record (%s) +AutomaticBindingDone=Enllaços automàtics fets (%s): l'enllaç automàtic no és possible per a alguns registres (%s) ErrorAccountancyCodeIsAlreadyUse=Error, no pots eliminar aquest compte comptable perquè està en ús MvtNotCorrectlyBalanced=Assentament comptabilitzat incorrectament. Deure = %s | Haver = %s @@ -298,7 +298,7 @@ NoNewRecordSaved=No hi ha més registres pel diari ListOfProductsWithoutAccountingAccount=Llista de productes no comptabilitzats en cap compte comptable ChangeBinding=Canvia la comptabilització Accounted=Comptabilitzat en el llibre major -NotYetAccounted=Not yet transferred to accounting +NotYetAccounted=Encara no s'ha traslladat a la comptabilitat ShowTutorial=Mostrar Tutorial NotReconciled=No conciliat WarningRecordWithoutSubledgerAreExcluded=Advertiment: totes les operacions sense subcompte comptable definit es filtren i s'exclouen d'aquesta vista @@ -329,8 +329,8 @@ ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=Desactiva la vinculació i transferènci 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) ## Export -NotifiedExportDate=Flag exported lines as exported (modification of the lines will not be possible) -NotifiedValidationDate=Validate the exported entries (modification or deletion of the lines will not be possible) +NotifiedExportDate=Marca les línies exportades com a exportades (no serà possible la modificació de les línies) +NotifiedValidationDate=Validar les entrades exportades (no serà possible modificar o eliminar les línies) ConfirmExportFile=Confirmació de la generació del fitxer d'exportació comptable? ExportDraftJournal=Exporta els esborranys del llibre Modelcsv=Model d'exportació @@ -343,7 +343,7 @@ Modelcsv_ciel=Exportació per a Sage50, Ciel Compta o Compta Evo. (Format XIMPOR Modelcsv_quadratus=Exporta a Quadratus QuadraCompta Modelcsv_ebp=Exporta a EBP Modelcsv_cogilog=Exporta a Cogilog -Modelcsv_agiris=Export for Agiris Isacompta +Modelcsv_agiris=Exportació per a Agiris Isacompta Modelcsv_LDCompta=Exportar per LD Compta (v9) (Test) Modelcsv_LDCompta10=Exportar per LD Compta (v10 i més) Modelcsv_openconcerto=Exporta per a OpenConcerto (Test) @@ -351,10 +351,10 @@ Modelcsv_configurable=Exporta CSV configurable Modelcsv_FEC=Exporta FEC Modelcsv_FEC2=Exporta FEC (amb escriptura de generació de dates / document invertit) Modelcsv_Sage50_Swiss=Exportació per Sage 50 Switzerland -Modelcsv_winfic=Export for Winfic - eWinfic - WinSis Compta +Modelcsv_winfic=Exporta per a Winfic - eWinfic - WinSis Compta Modelcsv_Gestinumv3=Exporta per a Gestinum (v3) -Modelcsv_Gestinumv5=Export for Gestinum (v5) -Modelcsv_charlemagne=Export for Aplim Charlemagne +Modelcsv_Gestinumv5=Exporta per a Gestinum (v5) +Modelcsv_charlemagne=Exportació per a Aplim Carlemany ChartofaccountsId=Id pla comptable ## Tools - Init accounting account on product / service @@ -387,8 +387,8 @@ SaleExport=Venda d’exportació SaleEEC=Venda en CEE SaleEECWithVAT=Venda a la CEE amb un IVA que no és nul, per la qual cosa suposem que NO es tracta d’una venda intracomunitària i el compte suggerit és el compte estàndard del producte. SaleEECWithoutVATNumber=Venda a la CEE sense IVA, però l’identificador d’IVA del tercer no està definit. S'ha emprat el compte del producte per a vendes estàndard. Podeu corregir l’identificador d’IVA del tercer o el compte del producte si cal. -ForbiddenTransactionAlreadyExported=Forbidden: The transaction has been validated and/or exported. -ForbiddenTransactionAlreadyValidated=Forbidden: The transaction has been validated. +ForbiddenTransactionAlreadyExported=Prohibit: la transacció ha estat validada i/o exportada. +ForbiddenTransactionAlreadyValidated=Prohibit: la transacció s'ha validat. ## Dictionary Range=Rang de compte comptable Calculated=Calculat @@ -405,7 +405,7 @@ NoJournalDefined=Cap diari definit Binded=Línies comptabilitzades ToBind=Línies a comptabilitzar UseMenuToSetBindindManualy=Línies encara no enllaçades, utilitzeu el menú %s per a fer l'enllaç manualment -SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Sorry this module is not compatible with the experimental feature of situation invoices +SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Ho sentim, aquest mòdul no és compatible amb la funció experimental de les factures de situació ## Import ImportAccountingEntries=Entrades de comptabilitat @@ -418,7 +418,7 @@ FECFormatGeneralAccountNumber=Número de compte general (CompteNum) FECFormatGeneralAccountLabel=Etiqueta de compte general (CompteLib) FECFormatSubledgerAccountNumber=Número de compte de Subledger (CompAuxNum) FECFormatSubledgerAccountLabel=Número de compte de Subledger (CompAuxLib) -FECFormatPieceRef=Peça ref (PieceRef) +FECFormatPieceRef=Peça ref. (PieceRef) FECFormatPieceDate=Creació de la data de la peça (PieceDate) FECFormatLabelOperation=Funcionament de l'etiqueta (EcritureLib) FECFormatDebit=Dèbit (dèbit) diff --git a/htdocs/langs/ca_ES/admin.lang b/htdocs/langs/ca_ES/admin.lang index 302fb383700..02a196db0e8 100644 --- a/htdocs/langs/ca_ES/admin.lang +++ b/htdocs/langs/ca_ES/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Imprimeix la referència i el període de la línia del producte en PDF +BoldLabelOnPDF=Imprimeix l'etiqueta del producte en negreta en PDF Foundation=Entitat Version=Versió Publisher=Publicador @@ -159,10 +159,10 @@ SystemInfo=Informació del sistema SystemToolsArea=Àrea utilitats del sistema SystemToolsAreaDesc=Aquesta àrea proporciona funcions d'administració. Utilitzeu el menú per a triar la funció necessària. Purge=Purga -PurgeAreaDesc=Aquesta pàgina us permet suprimir tots els fitxers generats o emmagatzemats per Dolibarr (fitxers temporals o tots els fitxers del directori %s ). Normalment no és necessari fer servir aquesta funció. Es proporciona com a solució alternativa als usuaris que allotjen Dolibarr amb un proveïdor que no ofereix permisos per a eliminar fitxers generats pel servidor web. +PurgeAreaDesc=Aquesta pàgina us permet suprimir tots els fitxers generats o emmagatzemats per Dolibarr (fitxers temporals o tots els fitxers del directori %s ). Normalment no és necessari fer servir aquesta funció. Es proporciona com a solució alternativa als usuaris que allotgen Dolibarr amb un proveïdor que no ofereix permisos per a eliminar fitxers generats pel servidor web. PurgeDeleteLogFile=Suprimeix els fitxers de registre, inclosos %s definits per al mòdul Syslog (sense risc de perdre dades) PurgeDeleteTemporaryFiles=Suprimeix tots els fitxers de registre i temporals (no hi ha risc de perdre dades). El paràmetre pot ser 'tempfilesold', 'logfiles' o tots dos 'tempfilesold+logfiles'. Nota: la supressió de fitxers temporals només es fa si el directori temporal es va crear fa més de 24 hores. -PurgeDeleteTemporaryFilesShort=Delete log and temporary files (no risk of losing data) +PurgeDeleteTemporaryFilesShort=Suprimeix els fitxers de registre i temporals (sense risc de perdre dades) PurgeDeleteAllFilesInDocumentsDir=Suprimiu tots els fitxers del directori: %s.
Això suprimirà tots els documents generats relacionats amb elements (tercers, factures, etc.), fitxers penjats al mòdul GED, còpies de seguretat de la base de dades i fitxers temporals. PurgeRunNow=Purgar PurgeNothingToDelete=No hi ha cap directori ni fitxers per a suprimir. @@ -212,7 +212,7 @@ FeatureAvailableOnlyOnStable=Funcionalitat disponible únicament en versions est BoxesDesc=Els panells són components que mostren algunes dades que poden afegir-se per a personalitzar algunes pàgines. Pots triar entre mostrar el panell o no seleccionant la pàgina de destí i fent clic a 'Activar', o fent clic en la paperera per a desactivar. OnlyActiveElementsAreShown=Només els elements de mòduls activats són mostrats ModulesDesc=Els mòduls/aplicacions determinen quines funcions estan disponibles al programari. Alguns mòduls requereixen que es concedeixin permisos als usuaris després d'activar-lo. Feu clic al botó d'encesa/apagada %s de cada mòdul per a habilitar o desactivar un mòdul/aplicació. -ModulesDesc2=Feu clic al botó de la roda %s per configurar el mòdul / aplicació. +ModulesDesc2=Feu clic al botó de la roda %s per a configurar el mòdul/aplicació. ModulesMarketPlaceDesc=A internet podeu trobar més mòduls per a descarregar en pàgines web externes... ModulesDeployDesc=Si els permisos del vostre sistema de fitxers ho permeten, podeu utilitzar aquesta eina per a desplegar un mòdul extern. El mòdul serà visible a la pestanya %s . ModulesMarketPlaces=Trobar mòduls/complements externs @@ -267,8 +267,8 @@ OtherResources=Altres recursos ExternalResources=Recursos externs SocialNetworks=Xarxes socials SocialNetworkId=Identificador de la xarxa social -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 +ForDocumentationSeeWiki=Per a la documentació de l'usuari o del desenvolupador (Doc, preguntes freqüents...),
doneu un cop d'ull a la wiki de Dolibarr:
%s +ForAnswersSeeForum=Per a qualsevol altra pregunta/ajuda, podeu utilitzar el fòrum de Dolibarr:
%s HelpCenterDesc1=Aquests són alguns recursos per a obtenir ajuda i suport amb Dolibarr. HelpCenterDesc2=Alguns d'aquests serveis només estan disponibles en anglès. CurrentMenuHandler=Gestor de menú @@ -281,7 +281,7 @@ SpaceX=Àrea X SpaceY=Àrea Y FontSize=Mida de la font Content=Contingut -ContentForLines=Content to display for each product or service (from variable __LINES__ of Content) +ContentForLines=Contingut per a mostrar a cada producte o servei (de la variable __LINES__ de Contingut) NoticePeriod=Preavís NewByMonth=Nou per mes Emails=Correus electrònics @@ -343,7 +343,7 @@ StepNb=Pas %s FindPackageFromWebSite=Cerca un paquet que proporcioni les funcions que necessites (per exemple, al lloc web oficial %s). DownloadPackageFromWebSite=Descarrega el paquet (per exemple, des del lloc web oficial %s). UnpackPackageInDolibarrRoot=Desempaqueta/descomprimeix els fitxers empaquetats al teu directori del servidor Dolibarr: %s -UnpackPackageInModulesRoot=Per a desplegar/instal·lar un mòdul extern, descomprimiu els fitxers empaquetats al directori del servidor dedicat a mòduls externs:
%s +UnpackPackageInModulesRoot=Per a implementar/instal·lar un mòdul extern, heu de descomprimir/descomprimir el fitxer d'arxiu al directori del servidor dedicat als mòduls externs:
%s SetupIsReadyForUse=La instal·lació del mòdul ha finalitzat. No obstant això, ha d'habilitar i configurar el mòdul en la seva aplicació, aneu a la pàgina per a configurar els mòduls: %s. NotExistsDirect=No s'ha definit el directori arrel alternatiu a un directori existent.
InfDirAlt=Des de la versió 3, és possible definir un directori arrel alternatiu. Això li permet emmagatzemar, en un directori dedicat, plug-ins i plantilles personalitzades.
Només ha de crear un directori a l'arrel de Dolibarr (per exemple: custom).
@@ -355,10 +355,10 @@ LastStableVersion=Última versió estable LastActivationDate=Data de l'última activació LastActivationAuthor=Últim autor d'activació LastActivationIP=Última IP d'activació -LastActivationVersion=Latest activation version +LastActivationVersion=Última versió d'activació UpdateServerOffline=Actualitza el servidor fora de línia WithCounter=Gestiona un comptador -GenericMaskCodes=Podeu introduir qualsevol màscara de numeració. En aquesta màscara, es poden utilitzar les etiquetes següents:
{000000} correspon a un número que s'incrementarà a cada %s. Introduïu tants zeros com la longitud desitjada del comptador. El comptador es completarà amb zeros de l'esquerra per tal de tenir tants zeros com la màscara.
{000000 + 000} igual que l'anterior, però s'aplica un desplaçament que correspon al número a la dreta del signe + a partir del primer %s.
{000000 @ x} igual que l'anterior, però el comptador es restableix a zero quan s'arriba al mes x (x entre 1 i 12, o 0 per utilitzar els primers mesos de l'any fiscal definits a la vostra configuració, o 99 a restableix a zero cada mes). Si s’utilitza aquesta opció i x és 2 o superior, també és obligatòria la seqüència {yy} {mm} o {yyyy} {mm}.
{dd} dia (de l'1 al 31).
{mm} mes (01 a 12).
{aa} , {aaaa} o {y} a09a4b.
+GenericMaskCodes=Podeu introduir qualsevol màscara de numeració. En aquesta màscara, es poden utilitzar les etiquetes següents:
{000000} correspon a un número que s'incrementarà a cada %s. Introduïu tants zeros com la longitud desitjada del comptador. El comptador es completarà amb zeros des de l'esquerra per tal de tenir tants zeros com la màscara.
{000000+000} igual que l'anterior però s'aplica un desplaçament corresponent al número a la dreta del signe + a partir del primer %s.
{000000@x} igual que l'anterior, però el comptador es reinicia a zero quan s'arriba al mes x (x entre 1 i 12, o 0 per a utilitzar els primers mesos de l'any fiscal definits a la vostra configuració, o 99 torna a zero cada mes). Si s'utilitza aquesta opció i x és 2 o superior, també es requereix la seqüència {yy} {mm} o {yyyy} {mm}.
{dd} dia (de l'1 al 31).
{mm} mes (de l'1 al 12).
{yy} , {yyyy} o {y} amb l'any sobre 2, 4 o 1 número.
GenericMaskCodes2= {cccc} el codi del client en n caràcters
{cccc000} a09a4b739f17f8z. Aquest comptador dedicat al client es restableix al mateix temps que el comptador global.
{tttt} El codi del tipus de tercers en n caràcters (vegeu el menú Inici - Configuració - Diccionari - Tipus de tercers). Si afegiu aquesta etiqueta, el comptador serà diferent per a cada tipus de tercer.
GenericMaskCodes3=Qualsevol altre caràcter a la màscara es quedarà sense canvis.
No es permeten espais
GenericMaskCodes3EAN=La resta de caràcters de la màscara romandran intactes (excepte * o ? En 13a posició a EAN13).
No es permeten espais.
A EAN13, l'últim caràcter després de l'últim } a la 13a posició hauria de ser * o ? . Se substituirà per la clau calculada.
@@ -501,10 +501,10 @@ WarningPHPMail=ADVERTÈNCIA: la configuració per a enviar correus electrònics WarningPHPMailA=- L’ús del servidor del proveïdor de serveis de correu electrònic augmenta la confiança del vostre correu electrònic, de manera que augmenta l'enviament sense ser marcat com a SPAM WarningPHPMailB=- Alguns proveïdors de serveis de correu electrònic (com Yahoo) no us permeten enviar un correu electrònic des d'un altre servidor que el seu propi servidor. La configuració actual utilitza el servidor de l’aplicació per a enviar correus electrònics i no el servidor del vostre proveïdor de correu electrònic, de manera que alguns destinataris (el compatible amb el protocol DMARC restrictiu) demanaran al vostre proveïdor de correu electrònic si poden acceptar el vostre correu electrònic i alguns proveïdors de correu electrònic. (com Yahoo) pot respondre "no" perquè el servidor no és seu, de manera que és possible que pocs dels vostres correus electrònics enviats no s'acceptin per al lliurament (tingueu cura també de la quota d'enviament del vostre proveïdor de correu electrònic). WarningPHPMailC=- També és interessant utilitzar el servidor SMTP del vostre proveïdor de serveis de correu electrònic per a enviar correus electrònics, de manera que tots els correus electrònics enviats des de l’aplicació també es guardaran al directori "Enviats" de la vostra bústia de correu. -WarningPHPMailD=Així mateix, es recomana canviar el mètode d'enviament de correus electrònics pel valor "SMTP". Si realment voleu mantenir el mètode predeterminat "PHP" per enviar correus electrònics, només ignoreu aquest advertiment o elimineu-lo establint la constant MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP a 1 a Inici - Configuració - Altres. +WarningPHPMailD=Així mateix, es recomana canviar el mètode d'enviament de correus electrònics pel valor "SMTP". Si realment voleu mantenir el mètode predeterminat "PHP" per a enviar correus electrònics, només ignoreu aquest advertiment o elimineu-lo establint la constant MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP a 1 a Inici - Configuració - Altres. WarningPHPMail2=Si el vostre proveïdor SMTP necessita restringir al client de correu a una adreça IP (molt estrany), aquesta és la IP de l'agent d'usuari de correu (MUA) per la vostra aplicació ERP CRM: %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 : %s +WarningPHPMailSPF=Si el nom de domini de la vostra adreça de correu electrònic del remitent està protegit per un registre SPF (demaneu al registre del vostre nom de domini), heu d'afegir les IP següents al registre SPF del DNS del vostre domini: %s . +ActualMailSPFRecordFound=Registre SPF real trobat: %s ClickToShowDescription=Feu clic per a mostrar la descripció DependsOn=Aquest mòdul necessita els mòduls RequiredBy=Aquest mòdul és requerit pel/s mòdul/s @@ -521,9 +521,9 @@ Field=Camp ProductDocumentTemplates=Plantilles de documents per a generar document de producte FreeLegalTextOnExpenseReports=Text legal lliure en informes de despeses WatermarkOnDraftExpenseReports=Marca d'aigua en informes de despeses esborrany -ProjectIsRequiredOnExpenseReports=The project is mandatory for entering an expense report -PrefillExpenseReportDatesWithCurrentMonth=Pre-fill start and end dates of new expense report with start and end dates of the current month -ForceExpenseReportsLineAmountsIncludingTaxesOnly=Force the entry of expense report amounts always in amount with taxes +ProjectIsRequiredOnExpenseReports=El projecte és obligatori per a introduir un informe de despeses +PrefillExpenseReportDatesWithCurrentMonth=Ompliu prèviament les dates d'inici i finalització del nou informe de despeses amb les dates d'inici i finalització del mes actual +ForceExpenseReportsLineAmountsIncludingTaxesOnly=Força l'entrada d'imports de la memòria de despeses sempre en import amb impostos AttachMainDocByDefault=Establiu-lo a 1 si voleu adjuntar el document principal al correu electrònic de manera predeterminada (si escau) FilesAttachedToEmail=Adjunta el fitxer SendEmailsReminders=Enviar recordatoris d'agenda per correu electrònic @@ -756,7 +756,7 @@ Permission106=Exportar expedicions Permission109=Eliminar expedicions Permission111=Consultar comptes financers (comptes bancaris, caixes) Permission112=Crear/modificar quantitat/eliminar registres bancaris -Permission113=Setup financial accounts (create, manage categories of bank transactions) +Permission113=Configurar comptes financers (crear, gestionar categories de transaccions bancàries) Permission114=Reconcilia les transaccions Permission115=Exporta transaccions i extractes Permission116=Captar transferències entre comptes @@ -765,7 +765,7 @@ Permission121=Consulta tercers enllaçats a usuaris Permission122=Crea/modifica tercers enllaçats a l'usuari Permission125=Elimina tercers enllaçats a l'usuari Permission126=Exporta tercers -Permission130=Create/modify third parties payment information +Permission130=Crear/modificar informació de pagament de tercers Permission141=Consulta tots els projectes i tasques (també els projectes privats dels qui no en soc contacte) Permission142=Crea/modifica tots els projectes i tasques (també projectes privats dels qui no en soc contacte) Permission144=Elimina tots els projectes i tasques (també els projectes privats dels qui no en soc contacte) @@ -893,11 +893,11 @@ Permission701=Consultar donacions Permission702=Crear/modificar donacions Permission703=Eliminar donacions Permission771=Consulta informes de despeses (propis i dels subordinats) -Permission772=Create/modify expense reports (for you and your subordinates) +Permission772=Crear/modificar informes de despeses (per a tu i els teus subordinats) Permission773=Eliminar els informes de despeses Permission775=Aprovar els informes de despeses Permission776=Pagar informes de despeses -Permission777=Read all expense reports (even those of user not subordinates) +Permission777=Llegeix tots els informes de despeses (fins i tot els dels usuaris no subordinats) Permission778=Crea/modifica informes de despeses de tothom Permission779=Exportar informes de despeses Permission1001=Consulta d'estocs @@ -961,14 +961,14 @@ Permission2801=Utilitzar el client FTP en mode lectura (només explorar i descar Permission2802=Utilitzar el client FTP en mode escriptura (esborrar o pujar arxius) Permission3200=Llegiu els esdeveniments arxivats i les empremtes dactilars Permission3301=Genera mòduls nous -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 +Permission4001=Llegir habilitat/ocupació/posició +Permission4002=Crear/modificar habilitat/ocupació/posició +Permission4003=Esborra habilitat/ocupació/posició +Permission4020=Llegir avaluacions +Permission4021=Crea/modifica la teva avaluació +Permission4022=Valida l'avaluació +Permission4023=Elimina l'avaluació +Permission4030=Veure menú comparatiu 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. @@ -976,9 +976,9 @@ Permission10005=Suprimeix el contingut del lloc web Permission20001=Consulta els dies de lliure disposició (els propis i els dels teus subordinats) Permission20002=Crea/modifica els teus dies de lliure disposició (els propis i els dels teus subordinats) Permission20003=Elimina les peticions de dies lliures retribuïts -Permission20004=Read all leave requests (even those of user not subordinates) -Permission20005=Create/modify leave requests for everybody (even those of user not subordinates) -Permission20006=Administer leave requests (setup and update balance) +Permission20004=Llegeix totes les sol·licituds de baixa (fins i tot les d'usuaris no subordinats) +Permission20005=Crear/modificar sol·licituds de baixa per a tothom (fins i tot les d'usuaris no subordinats) +Permission20006=Administrar les sol·licituds de baixa (configuració i actualització del saldo) Permission20007=Aproveu sol·licituds de dies lliures Permission23001=Consulta les tasques programades Permission23002=Crear/Modificar les tasques programades @@ -1051,7 +1051,7 @@ DictionaryFees=Informe de despeses - Tipus de línies d'informe de despeses DictionarySendingMethods=Mètodes d'expedició DictionaryStaff=Nombre d'empleats DictionaryAvailability=Temps de lliurament -DictionaryOrderMethods=Order methods +DictionaryOrderMethods=Mètodes de comanda DictionarySource=Orígens de pressupostos/comandes DictionaryAccountancyCategory=Grups personalitzats per informes DictionaryAccountancysystem=Models de plans comptables @@ -1211,7 +1211,7 @@ SetupDescription3= %s -> %s

Paràmetres bàsics uti SetupDescription4=  %s -> %s

Aquest programari és un conjunt de molts mòduls / aplicacions. Els mòduls relacionats amb les vostres necessitats s’han d’activar i configurar. Les entrades del menú apareixen amb l’activació d’aquests mòduls. SetupDescription5=Altres entrades del menú d'instal·lació gestionen paràmetres opcionals. SetupDescriptionLink= %s - %s -SetupDescription3b=Paràmetres bàsics que s’utilitzen per personalitzar el comportament predeterminat de la vostra aplicació (per exemple, per a funcions relacionades amb el paí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. AuditedSecurityEvents=Esdeveniments de seguretat que s’auditen NoSecurityEventsAreAduited=No s’audita cap esdeveniment de seguretat. Podeu activar-les des del menú %s @@ -1349,7 +1349,7 @@ YouDoNotUseBestDriver=S'utilitza el controlador %s, però es recomana utilitzar NbOfObjectIsLowerThanNoPb=Només teniu %s %s a la base de dades. Això no requereix cap optimització particular. ComboListOptim=Optimització de càrrega de llista combinada SearchOptim=Cerca optimització -YouHaveXObjectUseComboOptim=Teniu %s %s a la base de dades. Podeu entrar a la configuració del mòdul per habilitar la càrrega de la llista combinada en un esdeveniment premut amb la tecla. +YouHaveXObjectUseComboOptim=Teniu %s %s a la base de dades. Podeu entrar a la configuració del mòdul per a habilitar la càrrega de la llista combinada en l'esdeveniment de tecla premuda. YouHaveXObjectUseSearchOptim=Teniu %s %s a la base de dades. Podeu afegir la constant %s a 1 a Inici-Configuració-Altres. YouHaveXObjectUseSearchOptimDesc=Això limita la cerca al començament de les cadenes, cosa que fa que la base de dades pugui utilitzar índexs i hauríeu d'obtenir una resposta immediata. YouHaveXObjectAndSearchOptimOn=Teniu %s %s a la base de dades i la constant %s s'estableix en %s a Home-Setup-Other. @@ -1357,9 +1357,9 @@ BrowserIsOK=Esteu utilitzant el navegador web %s. Aquest navegador està bé per BrowserIsKO=Esteu utilitzant el navegador web %s. Es considera que aquest navegador és una mala elecció per a la seguretat, el rendiment i la fiabilitat. Recomanem utilitzar Firefox, Chrome, Opera o Safari. PHPModuleLoaded=Es carrega el component PHP %s PreloadOPCode=S'utilitza un codi OPC precarregat -AddRefInList=Display Customer/Vendor ref. into combo lists.
Third Parties will appear with a name format of "CC12345 - SC45678 - The Big Company corp." instead of "The Big Company corp". -AddVatInList=Display Customer/Vendor VAT number into combo lists. -AddAdressInList=Display Customer/Vendor adress into combo lists.
Third Parties will appear with a name format of "The Big Company corp. - 21 jump street 123456 Big town - USA" instead of "The Big Company corp". +AddRefInList=Mostra client/proveïdor ref. en llistes combinades.
Els tercers apareixeran amb el format de nom "CC12345 - SC45678 - The Big Company corp". en lloc de "The Big Company corp". +AddVatInList=Mostra el número d'IVA del client/proveïdor a les llistes combinades. +AddAdressInList=Mostra l'adreça del client/proveïdor en llistes combinades.
Els tercers apareixeran amb el format de nom "The Big Company corp. - 21 jump street 123456 Big town - USA" en comptes de "The Big Company corp". AddEmailPhoneTownInContactList=Mostra el correu electrònic de contacte (o els telèfons si no està definit) i la llista d'informació de la ciutat (llista de selecció o llista desplegable)
Els contactes apareixeran amb un format de nom "Dupond Durand - dupond.durand@email.com - París" o "Dupond Durand - 06 07 59 65 66 - París "en lloc de" Dupond Durand". AskForPreferredShippingMethod=Demaneu un mètode d'enviament preferit per a tercers. FieldEdition=Edició del camp %s @@ -1643,7 +1643,7 @@ ProductSetup=Configuració del mòdul Productes ServiceSetup=Configuració del mòdul Serveis ProductServiceSetup=Configuració dels mòduls Productes i Serveis NumberOfProductShowInSelect=Nombre màxim de productes que es mostraran a les llistes de selecció combo (0 = sense límit) -ViewProductDescInFormAbility=Display product descriptions in lines of items (otherwise show description in a tooltip popup) +ViewProductDescInFormAbility=Mostra les descripcions dels productes a les línies d'articles (en cas contrari, mostra la descripció en una finestra emergent d'informació eines) OnProductSelectAddProductDesc=Com s'utilitza la descripció dels productes quan s'afegeix un producte com a línia d'un document AutoFillFormFieldBeforeSubmit=Empleneu automàticament el camp d’entrada de la descripció amb la descripció del producte DoNotAutofillButAutoConcat=No empleneu automàticament el camp d'entrada amb la descripció del producte. La descripció del producte es concatenarà automàticament a la descripció introduïda. @@ -1707,9 +1707,9 @@ MailingDelay=Segons d'espera després d'enviar el següent missatge NotificationSetup=Configuració del mòdul de notificació per correu electrònic NotificationEMailFrom=Correu electrònic del remitent (des de) per als correus electrònics enviats pel mòdul de notificacions FixedEmailTarget=Destinatari -NotificationDisableConfirmMessageContact=Hide the list of recipients (subscribed as contact) of notifications into the confirmation message -NotificationDisableConfirmMessageUser=Hide the list of recipients (subscribed as user) of notifications into the confirmation message -NotificationDisableConfirmMessageFix=Hide the list of recipients (subscribed as global email) of notifications into the confirmation message +NotificationDisableConfirmMessageContact=Amaga la llista de destinataris (subscrits com a contacte) de les notificacions al missatge de confirmació +NotificationDisableConfirmMessageUser=Amaga la llista de destinataris (suscrits com a usuari) de les notificacions al missatge de confirmació +NotificationDisableConfirmMessageFix=Amaga la llista de destinataris (subscrits com a correu electrònic global) de les notificacions al missatge de confirmació ##### Sendings ##### SendingsSetup=Configuració del mòdul d'enviament SendingsReceiptModel=Model de rebut d’enviament @@ -1725,8 +1725,8 @@ FreeLegalTextOnDeliveryReceipts=Text lliure en els rebuts de lliurament ##### FCKeditor ##### AdvancedEditor=Editor avançat ActivateFCKeditor=Activar editor avançat per a : -FCKeditorForNotePublic=WYSIWIG creation/edition of the field "public notes" of elements -FCKeditorForNotePrivate=WYSIWIG creation/edition of the field "private notes" of elements +FCKeditorForNotePublic=WYSIWIG creació/edició del camp "notes públiques" d'elements +FCKeditorForNotePrivate=Creació/edició WYSIWIG del camp "notes privades" d'elements FCKeditorForCompany=Creació / edició de WYSIWIG de la descripció del camp d'elements (excepte productes / serveis) FCKeditorForProduct=Creació / edició de WYSIWIG de la descripció del camp de productes / serveis FCKeditorForProductDetails=Creació/edició WYSIWIG de línies de detalls de productes per a totes les entitats (pressupostos, comandes, factures, etc.). Advertiment: no es recomana utilitzar aquesta opció per a aquest cas, ja que pot crear problemes amb caràcters especials i format de pàgina en crear fitxers PDF. @@ -1800,7 +1800,7 @@ AGENDA_DEFAULT_VIEW=Quina vista voleu obrir de manera predeterminada en seleccio 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 AGENDA_REMINDER_EMAIL=Activa el recordatori d'esdeveniments per correu electrònic (es pot definir l'opció de recordatori/retard a cada esdeveniment). -AGENDA_REMINDER_EMAIL_NOTE=Nota: La freqüència del treball programat %s ha de ser suficient per assegurar-se que els recordatoris s’envien en el moment correcte. +AGENDA_REMINDER_EMAIL_NOTE=Nota: La freqüència de la tasca programada %s ha de ser suficient per a assegurar-se que el recordatori s'envia en el moment correcte. AGENDA_SHOW_LINKED_OBJECT=Mostra l'objecte vinculat a la vista d'agenda ##### Clicktodial ##### ClickToDialSetup=Configuració del mòdul Click To Dial @@ -1813,9 +1813,9 @@ CashDesk=Punt de venda CashDeskSetup=Configuració del mòdul de Punt de venda CashDeskThirdPartyForSell=Tercer genèric per defecte que s'utilitzarà per a les vendes CashDeskBankAccountForSell=Compte predeterminat que cal utilitzar per a rebre cobraments en efectiu -CashDeskBankAccountForCheque=Compte a utilitzar per defecte per rebre pagaments per xec +CashDeskBankAccountForCheque=Compte a utilitzar per defecte per a rebre pagaments per xec CashDeskBankAccountForCB=Compte predeterminat que cal utilitzar per a rebre cobraments amb targeta de crèdit -CashDeskBankAccountForSumup=Compte bancari per defecte que es farà servir per rebre pagaments de SumUp +CashDeskBankAccountForSumup=Compte bancari per defecte que es farà servir per a rebre pagaments de SumUp CashDeskDoNotDecreaseStock=Desactiva la reducció d'estoc quan es fa una venda des del punt de venda (si és "no", la reducció d'estoc es realitza per a cada venda realitzada des del TPV, independentment de l'opció establerta al mòdul Estoc). CashDeskIdWareHouse=Força i restringeix el magatzem a utilitzar per disminuir l'estoc StockDecreaseForPointOfSaleDisabled=La disminució d'estocs des del punt de venda està desactivat @@ -1901,7 +1901,7 @@ ExpenseReportsRulesSetup=Configurar mòdul Informes de despeses - Regles ExpenseReportNumberingModules=Mòdul de numeració d'informes de despeses NoModueToManageStockIncrease=No s'ha activat cap mòdul capaç de gestionar l'increment automàtic d'estoc. L’increment d’estoc es farà només amb entrada manual. YouMayFindNotificationsFeaturesIntoModuleNotification=Podeu trobar opcions de notificacions per correu electrònic habilitant i configurant el mòdul "Notificació". -TemplatesForNotifications=Templates for notifications +TemplatesForNotifications=Plantilles per a notificacions ListOfNotificationsPerUser=Llista de notificacions automàtiques per usuari * ListOfNotificationsPerUserOrContact=Llista de possibles notificacions automàtiques (en un esdeveniment comercial) disponibles per usuari* o per contacte** ListOfFixedNotifications=Llista de notificacions fixes automàtiques @@ -1912,11 +1912,13 @@ BackupDumpWizard=Assistent per a crear el fitxer d'exportació de la base de dad BackupZipWizard=Assistent per a crear el directori d’arxiu de documents SomethingMakeInstallFromWebNotPossible=No és possible la instal·lació de mòduls externs des de la interfície web per la següent raó: SomethingMakeInstallFromWebNotPossible2=Per aquest motiu, el procés d'actualització descrit aquí és un procés manual que només un usuari privilegiat pot realitzar. -InstallModuleFromWebHasBeenDisabledByFile=La instal·lació de mòduls externs des de l'aplicació es troba desactivada per l'administrador. Ha de requerir que elimini l'arxiu %s per habilitar aquesta funció +InstallModuleFromWebHasBeenDisabledByFile=El vostre administrador ha desactivat la instal·lació del mòdul extern des de l'aplicació. Heu de demanar-li que suprimeixi el fitxer %s per permetre aquesta funció. ConfFileMustContainCustom=Per a instal·lar o crear un mòdul extern des de l'aplicació es necessita desar els fitxers del mòdul en el directori %s. Per a permetre a Dolibarr el processament d'aquest directori, has de configurar el teu conf/conf.php afegint aquestes 2 línies:
$dolibarr_main_url_root_alt='/custom';
$dolibarr_main_document_root_alt='%s/custom'; HighlightLinesOnMouseHover=Remarca línies de la taula quan el ratolí passi per sobre HighlightLinesColor=Ressalteu el color de la línia quan el ratolí passa (utilitzeu 'ffffff' per no ressaltar) HighlightLinesChecked=Ressalteu el color de la línia quan està marcada (utilitzeu 'ffffff' per no ressaltar) +BtnActionColor=Color del botó d'acció +TextBtnActionColor=Color del text del botó d'acció TextTitleColor=Color del text del títol de la pàgina LinkColor=Color dels enllaços PressF5AfterChangingThis=Prem CTRL+F5 en el teclat o neteja la memòria cau del navegador després de canviar aquest valor per fer-ho efectiu @@ -1942,7 +1944,7 @@ SellTaxRate=Tipus d’impost sobre les vendes RecuperableOnly=Sí per l'IVA "No percebut sinó recuperable" dedicat per a algun estat a França. Manteniu el valor "No" en tots els altres casos. UrlTrackingDesc=Si el proveïdor o el servei de transport ofereix una pàgina o un lloc web per a comprovar l'estat dels vostres enviaments, podeu introduir-lo aquí. Podeu utilitzar la clau {TRACKID} als paràmetres d'URL perquè el sistema la substitueixi pel número de seguiment que l'usuari va introduir a la fitxa d'enviament. OpportunityPercent=Quan creeu un avantatge, definiran una quantitat estimada de projecte / avantatge. Segons l'estat del lideratge, aquesta quantitat es pot multiplicar per aquesta taxa per avaluar una quantitat total que pot generar tots els vostres clients potencials. El valor és un percentatge (entre 0 i 100). -TemplateForElement=This mail template is related to what type of object? An email template is available only when using the "Send Email" button from the related object. +TemplateForElement=Aquesta plantilla de correu està relacionada amb quin tipus d'objecte? Una plantilla de correu electrònic només està disponible quan s'utilitza el botó "Envia un correu electrònic" de l'objecte relacionat. TypeOfTemplate=Tipus de plantilla TemplateIsVisibleByOwnerOnly=La plantilla només és visible pel propietari VisibleEverywhere=Visible arreu @@ -2017,8 +2019,8 @@ MAIN_PDF_MARGIN_RIGHT=Marge dret al PDF MAIN_PDF_MARGIN_TOP=Marge superior al PDF MAIN_PDF_MARGIN_BOTTOM=Marge inferior al PDF MAIN_DOCUMENTS_LOGO_HEIGHT=Alçada del logotip en PDF -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_GENERATE_PROPOSALS_WITH_PICTURE=Afegiu una columna per a la imatge a les línies de proposta +MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Amplada de la columna si s'afegeix una imatge a les línies MAIN_PDF_NO_SENDER_FRAME=Amaga les vores del marc d’adreça del remitent MAIN_PDF_NO_RECIPENT_FRAME=Amaga les vores del marc d’adreça destinatari MAIN_PDF_HIDE_CUSTOMER_CODE=Amaga el codi de client @@ -2064,14 +2066,14 @@ EmailCollectorConfirmCollect=Voleu executar ara la recol·lecció d’aquest col NoNewEmailToProcess=No hi ha cap correu electrònic nou (filtres coincidents) per a processar NothingProcessed=No s'ha fet res XEmailsDoneYActionsDone=%s correus electrònics qualificats, %s correus electrònics processats amb èxit (per %s registre / accions realitzades) -RecordEvent=Record an event in agenda (with type Email sent or received) -CreateLeadAndThirdParty=Create a lead (and a third party if necessary) -CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation, with no third party otherwise) +RecordEvent=Enregistrar un esdeveniment a l'agenda (amb el tipus de correu electrònic enviat o rebut) +CreateLeadAndThirdParty=Creeu un client potencial (i un tercer si cal) +CreateTicketAndThirdParty=Crear un bitllet (enllaçat a un tercer si el tercer s'ha carregat per una operació anterior, sense cap tercer d'altra manera) CodeLastResult=Últim codi retornat NbOfEmailsInInbox=Nombre de correus electrònics en el directori font LoadThirdPartyFromName=Carregueu la cerca de tercers al %s (només carrega) LoadThirdPartyFromNameOrCreate=Carregueu la cerca de tercers a %s (crear si no es troba) -AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. +AttachJoinedDocumentsToObject=Deseu els fitxers adjunts als documents d'objectes si es troba una referència d'un objecte al tema del correu electrònic. WithDolTrackingID=Missatge d'una conversa iniciada per un primer correu electrònic enviat des de Dolibarr WithoutDolTrackingID=Missatge d'una conversa iniciada per un primer correu electrònic NO enviat des de Dolibarr WithDolTrackingIDInMsgId=Missatge enviat des de Dolibarr @@ -2080,7 +2082,7 @@ CreateCandidature=Crea sol·licitud de feina FormatZip=Format Zip MainMenuCode=Codi d'entrada del menú (menú principal) ECMAutoTree=Mostra l'arbre ECM automàtic -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=Definiu les regles a utilitzar per extreure o establir valors.
Exemple d'operacions que necessiten extreure un nom de l'assumpte del correu electrònic:
name=EXTRACT:SUBJECT:Missatge de l'empresa ([^\n] *)
Exemple per a les operacions que creen objectes:
objproperty1 = SET: el valor en conjunt
objproperty2 = SET: un valor incloent el valor de __objproperty1__
objproperty3 = SETIFEMPTY: valor utilitzat si objproperty3 no està ja definit
objproperty4 = extracte: HEADER :X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:El nom de la meva empresa és\\s( [^\\s]*)

Utilitzeu un ; char com a separador per extreure o establir diverses propietats. OpeningHours=Horari d'obertura OpeningHoursDesc=Introduïu aquí l'horari habitual d'obertura de la vostra empresa. ResourceSetup=Configuració del mòdul de recursos @@ -2126,7 +2128,7 @@ LargerThan=Major que IfTrackingIDFoundEventWillBeLinked=Tingueu en compte que si es troba un identificador de seguiment d’un objecte al correu electrònic o si el correu electrònic és una resposta d’un correu electrònic que ja està recollit i enllaçat a un objecte, l’esdeveniment creat s’enllaçarà automàticament a l’objecte relacionat conegut. WithGMailYouCanCreateADedicatedPassword=Amb un compte de GMail, si heu activat la validació de dos passos, es recomana crear una segona contrasenya dedicada a l’aplicació en comptes d’utilitzar la contrasenya del vostre compte des de https://myaccount.google.com/. EmailCollectorTargetDir=Pot ser un comportament desitjat traslladar el correu electrònic a una altra etiqueta/directori quan s'ha processat correctament. Només heu de definir el nom del directori per a utilitzar aquesta funció (NO utilitzeu caràcters especials en el nom). Tingueu en compte que també heu d'utilitzar un compte d'inici de sessió de lectura/escriptura. -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=Podeu utilitzar aquesta acció per a utilitzar el contingut del correu electrònic per a trobar i carregar un tercer existent a la vostra base de dades. El tercer trobat (o creat) s'utilitzarà per a seguir les accions que ho necessitin.
Per exemple, si voleu crear un tercer amb un nom extret d'una cadena 'Nom: nom per a trobar' present al cos, utilitzeu el correu electrònic del remitent com a correu electrònic, podeu establir el camp de paràmetres així:
'email= HEADER:^From:(.*);nom=EXTRACT:BODY:Nom:\\s([^\\s]*);client=SET:2;'
EndPointFor=Punt final per %s: %s DeleteEmailCollector=Suprimeix el recollidor de correu electrònic ConfirmDeleteEmailCollector=Esteu segur que voleu suprimir aquest recollidor de correu electrònic? @@ -2143,7 +2145,7 @@ EMailsWillHaveMessageID=Els correus electrònics tindran una etiqueta "Referènc PDF_SHOW_PROJECT=Mostra el projecte al document ShowProjectLabel=Etiqueta del projecte PDF_USE_ALSO_LANGUAGE_CODE=Si voleu que alguns textos del vostre PDF es copiïn en 2 idiomes diferents en el mateix PDF generat, heu d’establir aquí aquest segon idioma perquè el PDF generat contingui 2 idiomes diferents en la mateixa pàgina, l’escollit en generar el PDF i aquesta (només poques plantilles de PDF admeten això). Mantingueu-lo buit per a 1 idioma per PDF. -PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF +PDF_USE_A=Gerera documents PDF amb el format PDF/A en lloc del format PDF predeterminat FafaIconSocialNetworksDesc=Introduïu aquí el codi de la icona de FontAwesome. Si no sabeu què és FontAwesome, podeu utilitzar el llibre genèric d’adreces. RssNote=Nota: Cada definició del canal RSS proporciona un giny que heu d’habilitar per a tenir-lo disponible al tauler de control JumpToBoxes=Aneu a Configuració -> Ginys @@ -2170,17 +2172,17 @@ MailToPartnership=Associació AGENDA_EVENT_DEFAULT_STATUS=Estat de l'esdeveniment per defecte en crear un esdeveniment des del formulari YouShouldDisablePHPFunctions=Hauríeu de desactivar les funcions PHP IfCLINotRequiredYouShouldDisablePHPFunctions=Excepte si heu d'executar ordres del sistema en codi personalitzat, hauríeu de desactivar les funcions PHP -PHPFunctionsRequiredForCLI=Per al propòsit de l'intèrpret d'ordres (com fer còpies de seguretat programades o executar un programa anitivurs), heu de mantenir les funcions PHP +PHPFunctionsRequiredForCLI=Per a propòsits d'intèrpret d'ordres (com fer copies de seguretat programades o executar un programa antivirus), heu de mantenir les funcions PHP NoWritableFilesFoundIntoRootDir=No s'ha trobat cap fitxer ni directori d'escriptura dels programes comuns al directori arrel (Bo) RecommendedValueIs=Recomanat: %s Recommended=Recomanada NotRecommended=No es recomana -ARestrictedPath=Some restricted path +ARestrictedPath=Algun camí restringit CheckForModuleUpdate=Comproveu si hi ha actualitzacions de mòduls externs CheckForModuleUpdateHelp=Aquesta acció es connectarà als editors de mòduls externs per comprovar si hi ha disponible una nova versió. ModuleUpdateAvailable=Hi ha disponible una actualització NoExternalModuleWithUpdate=No s'han trobat actualitzacions per a mòduls externs -SwaggerDescriptionFile=Fitxer de descripció de l'API Swagger (per utilitzar-lo amb redoc per exemple) +SwaggerDescriptionFile=Fitxer de descripció de l'API Swagger (per a utilitzar-lo amb redoc, per exemple) YouEnableDeprecatedWSAPIsUseRESTAPIsInstead=Heu activat l'API WS obsoleta. Haureu d’utilitzar l’API REST. RandomlySelectedIfSeveral=Seleccionat aleatòriament si hi ha diverses imatges disponibles DatabasePasswordObfuscated=La contrasenya de la base de dades està ofuscada al fitxer conf @@ -2210,9 +2212,11 @@ LanguageAndPresentation=Llengua i presentació SkinAndColors=Pell i colors IfYouUseASecondTaxYouMustSetYouUseTheMainTax=Si voleu utilitzar un segon impost, heu d’habilitar també el primer impost de venda IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=Si voleu utilitzar un tercer impost, també heu d’habilitar l’impost de primera venda -PDF_USE_1A=Generate PDF with PDF/A-1b format -MissingTranslationForConfKey = Missing translation for %s -NativeModules=Native modules -NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria -API_DISABLE_COMPRESSION=Disable compression of API responses -EachTerminalHasItsOwnCounter=Each terminal use its own counter. +PDF_USE_1A=Genereu PDF amb format PDF/A-1b +MissingTranslationForConfKey = Falta traducció per a %s +NativeModules=Mòduls nadius +NoDeployedModulesFoundWithThisSearchCriteria=No s'han trobat mòduls per a aquests criteris de cerca +API_DISABLE_COMPRESSION=Desactiva la compressió de les respostes de l'API +EachTerminalHasItsOwnCounter=Cada terminal utilitza el seu propi comptador. +FillAndSaveAccountIdAndSecret=Primer ompliu i deseu l'identificador del compte i el secret +PreviousHash=Hash anterior diff --git a/htdocs/langs/ca_ES/agenda.lang b/htdocs/langs/ca_ES/agenda.lang index f032308545c..30bd9cad0b1 100644 --- a/htdocs/langs/ca_ES/agenda.lang +++ b/htdocs/langs/ca_ES/agenda.lang @@ -64,7 +64,7 @@ ShipmentClassifyClosedInDolibarr=Expedició %s classificada com a facturada ShipmentUnClassifyCloseddInDolibarr=Enviament %s classificat de nou com a obert ShipmentBackToDraftInDolibarr=Enviament %s retornat a l'estat d'esborrany ShipmentDeletedInDolibarr=Expedició %s eliminada -ShipmentCanceledInDolibarr=Shipment %s canceled +ShipmentCanceledInDolibarr=Enviament %s cancel·lat ReceptionValidatedInDolibarr=S'ha validat la recepció %s OrderCreatedInDolibarr=Comanda %s creada OrderValidatedInDolibarr=Comanda %s validada diff --git a/htdocs/langs/ca_ES/banks.lang b/htdocs/langs/ca_ES/banks.lang index be030cdb09d..338012f07cd 100644 --- a/htdocs/langs/ca_ES/banks.lang +++ b/htdocs/langs/ca_ES/banks.lang @@ -181,4 +181,4 @@ BankColorizeMovementName2=Color de fons pel moviment de crèdit IfYouDontReconcileDisableProperty=Si no feu cap conciliació bancària en alguns comptes bancaris, desactiveu la propietat "%s" per a eliminar aquest advertiment. NoBankAccountDefined=No s'ha definit cap compte bancari NoRecordFoundIBankcAccount=No s'ha trobat cap registre al compte bancari. Normalment, això passa quan un registre s’ha suprimit manualment de la llista de transaccions del compte bancari (per exemple, durant una conciliació del compte bancari). Una altra raó és que el pagament es va registrar quan es va desactivar el mòdul "%s". -AlreadyOneBankAccount=Already one bank account defined +AlreadyOneBankAccount=Ja s'ha definit un compte bancari diff --git a/htdocs/langs/ca_ES/bills.lang b/htdocs/langs/ca_ES/bills.lang index 5340e280590..d61d7fc719f 100644 --- a/htdocs/langs/ca_ES/bills.lang +++ b/htdocs/langs/ca_ES/bills.lang @@ -82,12 +82,11 @@ PaymentsAlreadyDone=Pagaments efectuats PaymentsBackAlreadyDone=Devolucions realitzades PaymentRule=Regla de pagament PaymentMode=Forma de pagament -DefaultPaymentMode=Tipus de pagament predeterminat +PaymentModes=Formes de pagament +DefaultPaymentMode=Forma de pagament predeterminada DefaultBankAccount=Compte bancari per defecte -PaymentTypeDC=Dèbit/Crèdit Tarja -PaymentTypePP=PayPal IdPaymentMode=Forma de pagament (Id) -CodePaymentMode=Tipus de pagament (codi) +CodePaymentMode=Forma de pagament (codi) LabelPaymentMode=Forma de pagament (etiqueta) PaymentModeShort=Forma de pagament PaymentTerm=Condicions de pagament @@ -192,7 +191,7 @@ ConfirmClassifyPaidPartiallyReasonDiscount=La resta a pagar (%s %s) és u ConfirmClassifyPaidPartiallyReasonDiscountNoVat=La resta a pagar (%s %s) és un descompte acordat després de la facturació. Accepto perdre l'IVA d'aquest descompte ConfirmClassifyPaidPartiallyReasonDiscountVat=La resta a pagar (%s %s) és un descompte atorgat perquè el pagament es va fer abans de temps. Recupero l'IVA d'aquest descompte, sense un abonament. ConfirmClassifyPaidPartiallyReasonBadCustomer=Client morós -ConfirmClassifyPaidPartiallyReasonBankCharge=Deduction by bank (intermediary bank fees) +ConfirmClassifyPaidPartiallyReasonBankCharge=Deducció per banc (comissions bancàries intermediaris) ConfirmClassifyPaidPartiallyReasonProductReturned=Productes retornats en part ConfirmClassifyPaidPartiallyReasonOther=D'altra raó ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=Aquesta opció és possible si la vostra factura ha rebut els comentaris adequats. (Exemple «Només l'impost corresponent al preu realment pagat dona dret a la deducció») @@ -200,7 +199,7 @@ ConfirmClassifyPaidPartiallyReasonDiscountVatDesc=En alguns països, aquesta opc ConfirmClassifyPaidPartiallyReasonAvoirDesc=Aquesta elecció és l'elecció que s'ha de prendre si les altres no són aplicables ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=Un client morós és un client que es nega a pagar el seu deute. ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=Aquesta elecció és possible si el cas de pagament incomplet és arran d'una devolució de part dels productes -ConfirmClassifyPaidPartiallyReasonBankChargeDesc=The unpaid amount is intermediary bank fees, deducted directly from the correct amount paid by the Customer. +ConfirmClassifyPaidPartiallyReasonBankChargeDesc=L'import no pagat és comissions bancàries intermediaris , deduïdes directament de l'import correcte pagat pel Client. ConfirmClassifyPaidPartiallyReasonOtherDesc=Utilitza aquesta opció si totes les altres no són adequades, per exemple, en la següent situació:
- el pagament no s'ha completat perquè alguns productes es van tornar a enviar
- la quantitat reclamada és massa important perquè s'ha oblidat un descompte
En tots els casos, s'ha de corregir l'import excessiu en el sistema de comptabilitat mitjançant la creació d’un abonament. ConfirmClassifyAbandonReasonOther=Altres ConfirmClassifyAbandonReasonOtherDesc=Aquesta elecció serà per a qualsevol altre cas. Per exemple arran de la intenció de crear una factura rectificativa. @@ -221,7 +220,7 @@ AllowedInvoiceForRetainedWarranty=Garantia retinguda que es pot utilitzar en els RetainedwarrantyDefaultPercent=Percentatge de garantia retingut per defecte RetainedwarrantyOnlyForSituation=Fer disponible la "garantia retinguda" només per a les factures de situació RetainedwarrantyOnlyForSituationFinal=A les factures de situació, la deducció global de "garantia retinguda" només s'aplica a la situació final -ToPayOn=Per pagar %s +ToPayOn=Per a pagar amb %s toPayOn=a pagar %s RetainedWarranty=Garantia retinguda PaymentConditionsShortRetainedWarranty=Condicions de pagament de la garantia retinguda @@ -235,25 +234,25 @@ AlreadyPaid=Ja pagat AlreadyPaidBack=Ja reemborsat AlreadyPaidNoCreditNotesNoDeposits=Ja pagat (exclosos els abonaments i bestretes) Abandoned=Abandonada -RemainderToPay=Queda per pagar +RemainderToPay=Queda sense pagar RemainderToPayMulticurrency=La moneda original pendent de pagament RemainderToTake=Queda per cobrar RemainderToTakeMulticurrency=Import restant, moneda original RemainderToPayBack=Import pendent per reemborsar RemainderToPayBackMulticurrency=Import restant per reembossar, moneda original -NegativeIfExcessRefunded=negative if excess refunded +NegativeIfExcessRefunded=negatiu si es reemborsa l'excés Rest=Pendent AmountExpected=Import reclamat ExcessReceived=Rebut en excés ExcessReceivedMulticurrency=Excés rebut, moneda original -NegativeIfExcessReceived=negative if excess received +NegativeIfExcessReceived=negatiu si es rep l'excés ExcessPaid=Excés de pagament ExcessPaidMulticurrency=Excés de pagament, moneda original EscompteOffered=Descompte (pagament aviat) EscompteOfferedShort=Descompte SendBillRef=Enviament de la factura %s SendReminderBillRef=Recordatori de la factura %s -SendPaymentReceipt=Submission of payment receipt %s +SendPaymentReceipt=Presentació del rebut de pagament %s NoDraftBills=Cap factura esborrany NoOtherDraftBills=Cap altra factura esborrany NoDraftInvoices=Sense factures esborrany @@ -270,7 +269,7 @@ DateInvoice=Data facturació DatePointOfTax=Punt d'impostos NoInvoice=Cap factura NoOpenInvoice=No hi ha factura oberta -NbOfOpenInvoices=Number of open invoices +NbOfOpenInvoices=Nombre de factures obertes ClassifyBill=Classifica la factura SupplierBillsToPay=Factures de proveïdors pendents de pagament CustomerBillsUnpaid=Factures de client pendents de cobrament @@ -280,6 +279,7 @@ SetMode=Indicar la forma de pagament SetRevenuStamp=Indica el timbre fiscal Billed=Facturat RecurringInvoices=Factures recurrents +RecurringInvoice=Factura recurrent RepeatableInvoice=Factura recurrent RepeatableInvoices=Factures recurrents Repeatable=Recurrent @@ -449,6 +449,8 @@ PaymentTypeTRA=Banc esborrany PaymentTypeShortTRA=Esborrany PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Dèbit/Crèdit Tarja +PaymentTypePP=PayPal BankDetails=Dades bancàries BankCode=Codi banc DeskCode=Codi oficina @@ -578,7 +580,7 @@ invoiceLineProgressError=El progrés de la línia de factura no pot ser igual o updatePriceNextInvoiceErrorUpdateline=Error : actualització de preu en línia de factura : %s ToCreateARecurringInvoice=Per a crear una factura recurrent per a aquest contracte, primer creeu aquest esborrany de factura, després convertiu-lo en una plantilla de factura i definiu la freqüència de generació de futures factures. ToCreateARecurringInvoiceGene=Per a generar futures factures regularment i manualment, només cal que aneu al menú %s - %s - %s . -ToCreateARecurringInvoiceGeneAuto=Si necessites tenir cada factura generada automàticament, pregunta a l'administrador per habilitar i configurar el mòdul %s. Tingues en compte que ambdós mètodes (manual i automàtic) es poden utilitzar alhora sense risc de duplicats. +ToCreateARecurringInvoiceGeneAuto=Si necessiteu que aquestes factures es generin automàticament, demaneu al vostre administrador que habiliti i configuri el mòdul %s . Tingueu en compte que els dos mètodes (manual i automàtic) es poden utilitzar junts sense risc de duplicació. DeleteRepeatableInvoice=Elimina la factura recurrent ConfirmDeleteRepeatableInvoice=Vols eliminar la plantilla de factura? CreateOneBillByThird=Creeu una factura per tercers (en cas contrari, una factura per objecte seleccionat) @@ -604,3 +606,4 @@ SituationTotalProgress=Progrés total %d %% SearchUnpaidInvoicesWithDueDate=Cerqueu factures pendents de pagament amb data de venciment = %s NoPaymentAvailable=No hi ha cap pagament disponible per %s PaymentRegisteredAndInvoiceSetToPaid=Pagament registrat i factura %s configurada a pagada +SendEmailsRemindersOnInvoiceDueDate=Envieu un recordatori per correu electrònic per a les factures no pagades diff --git a/htdocs/langs/ca_ES/blockedlog.lang b/htdocs/langs/ca_ES/blockedlog.lang index dc38c2149c7..4092a8f8a1e 100644 --- a/htdocs/langs/ca_ES/blockedlog.lang +++ b/htdocs/langs/ca_ES/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Registres inalterables ShowAllFingerPrintsMightBeTooLong=Mostra tots els registres arxivats (pot ser llarg) ShowAllFingerPrintsErrorsMightBeTooLong=Mostra tots els registres d'arxiu no vàlids (pot ser llarg) DownloadBlockChain=Baixa les empremtes dactilars -KoCheckFingerprintValidity=L’entrada de registre arxivada no és vàlida. Significa que algú (un pirata informàtic?) ha modificat algunes dades d’aquest registre després que es va gravar, o que ha estat esborrat el registre arxivat anterior (comproveu que la línia amb numeració anterior existeix). +KoCheckFingerprintValidity=L’entrada de registre arxivada no és vàlida. Significa que algú (un pirata informàtic?) ha modificat algunes dades d’aquest registre després que es va gravar, o que ha estat esborrat el registre arxivat anterior (comproveu que la línia amb numeració anterior existeix) o ha sigut modificat el el checksum del registre anterior. OkCheckFingerprintValidity=El registre del registre arxivat és vàlid. Les dades d'aquesta línia no s'han modificat i l'entrada segueix l'anterior. OkCheckFingerprintValidityButChainIsKo=El registre arxivat sembla ser vàlid en comparació amb l'anterior, però la cadena s'ha corromput prèviament. AddedByAuthority=Emmagatzemat a l'autoritat remota @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=Llista de països on l'ús d'aquest mòdul OnlyNonValid=No vàlid TooManyRecordToScanRestrictFilters=Hi ha massa registres per escanejar / analitzar. Limiteu la llista amb filtres més restrictius. RestrictYearToExport=Restringeix el mes / any per a exportar +BlockedLogEnabled=S'ha habilitat el sistema per fer el seguiment d'esdeveniments en registres inalterables +BlockedLogDisabled=El sistema per fer un seguiment dels esdeveniments en registres inalterables s'ha desactivat després de fer algunes gravacions. Hem desat una empremta digital especial per fer un seguiment de la cadena com a trencada +BlockedLogDisabledBis=S'ha desactivat el sistema per fer el seguiment d'esdeveniments en registres inalterables. Això és possible perquè encara no s'ha fet cap registre. diff --git a/htdocs/langs/ca_ES/bookmarks.lang b/htdocs/langs/ca_ES/bookmarks.lang index 5d72cebd7aa..6cd64eb6bf9 100644 --- a/htdocs/langs/ca_ES/bookmarks.lang +++ b/htdocs/langs/ca_ES/bookmarks.lang @@ -15,8 +15,8 @@ UrlOrLink=URL BehaviourOnClick=Comportament quan se selecciona un URL de marcador CreateBookmark=Crea marcador SetHereATitleForLink=Estableix un nom per al marcador -UseAnExternalHttpLinkOrRelativeDolibarrLink=Use an external/absolute link (https://externalurl.com) or an internal/relative link (/mypage.php). You can also use phone like tel:0123456. +UseAnExternalHttpLinkOrRelativeDolibarrLink=Utilitzeu un enllaç extern/absolut (https://externalurl.com) o un enllaç intern/relatiu (/mypage.php). També podeu utilitzar el telèfon com tel: 0123456. ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Trieu si la pàgina enllaçada s'ha d'obrir a la pestanya actual o a una pestanya nova BookmarksManagement=Gestió de marcadors BookmarksMenuShortCut=Ctrl + shift + m -NoBookmarks=No bookmarks defined +NoBookmarks=No s'han definit cap marcador diff --git a/htdocs/langs/ca_ES/cashdesk.lang b/htdocs/langs/ca_ES/cashdesk.lang index 8bc8b8b0f36..5daeefd8246 100644 --- a/htdocs/langs/ca_ES/cashdesk.lang +++ b/htdocs/langs/ca_ES/cashdesk.lang @@ -41,7 +41,7 @@ Floor=Sala AddTable=Afegeix taula Place=Lloc TakeposConnectorNecesary=Es requereix el 'connector TakePOS' -OrderPrinters=Afegiu un botó per enviar la comanda a algunes impressores donades, sense pagament (per exemple, per enviar una comanda a una cuina) +OrderPrinters=Afegiu un botó per a enviar la comanda a algunes impressores donades, sense pagament (per exemple, per a enviar una comanda a una cuina) NotAvailableWithBrowserPrinter=No disponible quan la impressora per a recepció està configurada al navegador SearchProduct=Cerca producte Receipt=Ordre @@ -53,7 +53,7 @@ RealAmount=Import real CashFence=Tancament de caixa CashFenceDone=Tancament de caixa realitzat pel període NbOfInvoices=Nombre de factures -Paymentnumpad=Tipus de pad per introduir el pagament +Paymentnumpad=Tipus de pad per a introduir el pagament Numberspad=Números Pad BillsCoinsPad=Pad de monedes i bitllets DolistorePosCategory=Mòduls TakePOS i altres solucions POS per a Dolibarr @@ -130,7 +130,7 @@ ShowPriceHT = Mostra la columna amb el preu sense impostos (a la pantalla) ShowPriceHTOnReceipt = Mostra la columna amb el preu sense impostos (al rebut) CustomerDisplay=Visualització del client SplitSale=Venda dividida -PrintWithoutDetailsButton=Add "Print without details" button -PrintWithoutDetailsLabelDefault=Line label by default on printing without details -PrintWithoutDetails=Print without details -YearNotDefined=Year is not defined +PrintWithoutDetailsButton=Afegeix el botó "Imprimeix sense detalls". +PrintWithoutDetailsLabelDefault=Etiqueta de línia per defecte a la impressió sense detalls +PrintWithoutDetails=Imprimeix sense detalls +YearNotDefined=L'any no està definit diff --git a/htdocs/langs/ca_ES/commercial.lang b/htdocs/langs/ca_ES/commercial.lang index 4299749d6b0..191ee60e8f0 100644 --- a/htdocs/langs/ca_ES/commercial.lang +++ b/htdocs/langs/ca_ES/commercial.lang @@ -74,8 +74,8 @@ StatusProsp=Estat del pressupost DraftPropals=Pressupostos esborrany NoLimit=Sense límit ToOfferALinkForOnlineSignature=Enllaç per a la signatura en línia -WelcomeOnOnlineSignaturePage=Benvingut a la pàgina per acceptar pressuposts %s +WelcomeOnOnlineSignaturePage=Benvingut a la pàgina per a acceptar pressupostos de %s ThisScreenAllowsYouToSignDocFrom=Aquesta pantalla us permet acceptar i signar, o rebutjar, una cotització / proposta comercial -ThisIsInformationOnDocumentToSign=Es tracta d'informació sobre el document per acceptar o rebutjar +ThisIsInformationOnDocumentToSign=Aquesta és la informació del document a acceptar o rebutjar SignatureProposalRef=Signatura de pressupost / proposta comercial %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 9d5034df19b..0412b592ca6 100644 --- a/htdocs/langs/ca_ES/companies.lang +++ b/htdocs/langs/ca_ES/companies.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - companies ErrorCompanyNameAlreadyExists=El nom de l'empresa %s ja existeix. Indica un altre. -ErrorSetACountryFirst=Indica en primer lloc el país +ErrorSetACountryFirst=Estableix, en primer lloc, el país SelectThirdParty=Seleccionar un tercer ConfirmDeleteCompany=Esteu segur que voleu eliminar aquesta empresa i tota la informació relacionada? DeleteContact=Eliminar un contacte @@ -157,15 +157,15 @@ ProfId3CL=- ProfId4CL=- ProfId5CL=- ProfId6CL=- -ProfId1CM=Id. prof. 1 (Trade Register) -ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1CM=Id. prof. 1 (Registre Mercantil) +ProfId2CM=Id. prof. 2 (núm. contribuent) +ProfId3CM=Id. prof. 3 (Decret de creació) ProfId4CM=- ProfId5CM=- ProfId6CM=- -ProfId1ShortCM=Trade Register -ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation +ProfId1ShortCM=Registre Mercantil +ProfId2ShortCM=Contribuent núm. +ProfId3ShortCM=Decret de creació ProfId4ShortCM=- ProfId5ShortCM=- ProfId6ShortCM=- @@ -284,9 +284,9 @@ ProfId4RU=OKPO ProfId5RU=- ProfId6RU=- ProfId1UA=Prof Id 1 (EDRPOU) -ProfId2UA=Prof Id 2 (DRFO) -ProfId3UA=Prof Id 3 (INN) -ProfId4UA=Prof Id 4 (Certificate) +ProfId2UA=Prof. Id 2 (DRFO) +ProfId3UA=Prof. Id 3 (INN) +ProfId4UA=Prof Id 4 (certificat) ProfId5UA=Prof Id 5 (RNOKPP) ProfId6UA=Prof Id 6 (TRDPAU) ProfId1DZ=RC @@ -381,7 +381,7 @@ VATIntraCheck=Verificar VATIntraCheckDesc=L'enllaç %s permet consultar el NIF intracomunitari al servei de control europeu. Es requereix accés a internet per a que el servei funcioni. VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do VATIntraCheckableOnEUSite=Verifica el NIF Intracomunitari a la web de la Comissió Europea -VATIntraManualCheck=You can also check manually on the European Commission website %s +VATIntraManualCheck=També podeu comprovar manualment al lloc web de la Comissió Europea %s ErrorVATCheckMS_UNAVAILABLE=Comprovació impossible. El servei de comprovació no és prestat pel país membre (%s). NorProspectNorCustomer=Ni client, ni client potencial JuridicalStatus=Tipus d'entitat empresarial @@ -472,7 +472,7 @@ LeopardNumRefModelDesc=El codi és lliure. Aquest codi es pot modificar en quals ManagingDirectors=Nom del gerent(s) (CEO, director, president ...) MergeOriginThirdparty=Duplicar tercer (tercer que vols eliminar) MergeThirdparties=Fusionar tercers -ConfirmMergeThirdparties=Esteu segur que voleu combinar el tercer triat amb l'actual? Tots els objectes enllaçats (factures, comandes, ...) es mouran al tercer actual, i després se suprimirà el tercer triat. +ConfirmMergeThirdparties=Esteu segur que voleu combinar el tercer triat amb l'actual? Tots els objectes enllaçats (factures, comandes...) es mouran al tercer actual, i després se suprimirà el tercer triat. ThirdpartiesMergeSuccess=S'han fusionat els tercers SaleRepresentativeLogin=Nom d'usuari de l'agent comercial SaleRepresentativeFirstname=Nom de l'agent comercial diff --git a/htdocs/langs/ca_ES/compta.lang b/htdocs/langs/ca_ES/compta.lang index ecc64fa3bf7..9d3361a1b79 100644 --- a/htdocs/langs/ca_ES/compta.lang +++ b/htdocs/langs/ca_ES/compta.lang @@ -170,9 +170,9 @@ SeeReportInInputOutputMode=Mostra%sl'anàlisi de pagaments%s per a obteni SeeReportInDueDebtMode=Mostra l'%sanàlisi de documents registrats%s per a obtenir un càlcul basat en els documents registrats coneguts, fins i tot si encara no estan comptabilitzats al llibre major. SeeReportInBookkeepingMode=Mostra %sl'anàlisi de la taula de llibres comptables%s per a obtenir un informe basat en Taula de llibres comptables RulesAmountWithTaxIncluded=- Els imports mostrats són amb tots els impostos inclosos. -RulesAmountWithTaxExcluded=- Amounts of invoices shown are with all taxes excluded -RulesResultDue=- It includes all invoices, expenses, VAT, donations, salaries, whether they are paid or not.
- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries, the date of end of period is used. -RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries.
- It is based on the payment dates of the invoices, expenses, VAT, donations and salaries. +RulesAmountWithTaxExcluded=- Els imports de les factures mostrats inclouen tots els impostos exclosos +RulesResultDue=- Inclou totes les factures, despeses, IVA, donacions, sous, siguin pagats o no.
- Es basa en la data de facturació de les factures i en la data de venciment de despeses o pagaments d'impostos. Per als salaris, s'utilitza la data de finalització del període. +RulesResultInOut=- Inclou els pagaments reals realitzats en factures, despeses, IVA i salaris.
- Es basa en les dates de pagament de les factures, despeses, IVA, donacions i sous. RulesCADue=- Inclou les factures degudes al client tant si són pagades com si no.
- Es basa en la data de facturació d'aquestes factures.
RulesCAIn=- Inclou tots els pagaments efectius de factures rebuts dels clients.
- Es basa en la data de pagament d'aquestes factures
RulesCATotalSaleJournal=Inclou totes les línies de crèdit del Diari de venda. @@ -232,12 +232,12 @@ Pcg_subtype=Subtipus de compte InvoiceLinesToDispatch=Línies de factures a desglossar ByProductsAndServices=Per producte i servei RefExt=Ref. externa -ToCreateAPredefinedInvoice=Per crear una factura de plantilla, creeu una factura estàndard i, després, sense validar-la, feu clic al botó "%s". +ToCreateAPredefinedInvoice=Per a crear una plantilla de factura, creeu una factura estàndard, després, sense validar-la, feu clic al botó "%s". LinkedOrder=Enllaçar a una comanda Mode1=Mètode 1 Mode2=Mètode 2 CalculationRuleDesc=Per a calcular l'IVA total, hi ha dos mètodes:
El mètode 1 és arrodonir l'IVA a cada línia i, a continuació, sumar-los.
El mètode 2 suma totes els IVA de cada línia i, a continuació, arrodoneix el resultat.
El resultat final pot diferir de pocs cèntims. El mode per defecte és el mode %s. -CalculationRuleDescSupplier=Segons el proveïdor, seleccioneu el mètode adequat per aplicar la mateixa regla de càlcul i obtenir el mateix resultat esperat pel vostre proveïdor. +CalculationRuleDescSupplier=Segons el proveïdor, trieu el mètode adequat per a aplicar la mateixa regla de càlcul i obtenir el mateix resultat esperat pel vostre proveïdor. TurnoverPerProductInCommitmentAccountingNotRelevant=L'informe de volum de negocis cobrat per producte no està disponible. Aquest informe només està disponible per a la facturació facturada. 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 @@ -287,14 +287,14 @@ ReportPurchaseTurnover=Volum de compres facturat ReportPurchaseTurnoverCollected=Volum de compres recollit IncludeVarpaysInResults = Incloure varis pagaments als informes IncludeLoansInResults = Inclou préstecs en informes -InvoiceLate30Days = Invoices late (> 30 days) -InvoiceLate15Days = Invoices late (15 to 30 days) -InvoiceLateMinus15Days = Invoices late (< 15 days) -InvoiceNotLate = To be collected (< 15 days) -InvoiceNotLate15Days = To be collected (15 to 30 days) -InvoiceNotLate30Days = To be collected (> 30 days) -InvoiceToPay=To pay (< 15 days) -InvoiceToPay15Days=To pay (15 to 30 days) -InvoiceToPay30Days=To pay (> 30 days) -ConfirmPreselectAccount=Preselect accountancy code -ConfirmPreselectAccountQuestion=Are you sure you want to preselect the %s selected lines with this accountancy code ? +InvoiceLate30Days = Factures amb retard (> 30 dies) +InvoiceLate15Days = Factures amb retard (entre 15 i 30 dies) +InvoiceLateMinus15Days = Factures amb retard (< 15 dies) +InvoiceNotLate = A recollir (< 15 dies) +InvoiceNotLate15Days = A recollir (de 15 a 30 dies) +InvoiceNotLate30Days = A recollir (> 30 dies) +InvoiceToPay=Per a pagar (< 15 dies) +InvoiceToPay15Days=Per a pagar (15 a 30 dies) +InvoiceToPay30Days=Per a pagar (> 30 dies) +ConfirmPreselectAccount=Preseleccioneu el codi comptable +ConfirmPreselectAccountQuestion=Esteu segur que voleu preseleccionar les línies seleccionades %s amb aquest codi comptable? diff --git a/htdocs/langs/ca_ES/ecm.lang b/htdocs/langs/ca_ES/ecm.lang index aad5437a1a5..e920e6f4fc6 100644 --- a/htdocs/langs/ca_ES/ecm.lang +++ b/htdocs/langs/ca_ES/ecm.lang @@ -45,5 +45,5 @@ GenerateImgWebp=Duplica totes les imatges amb una altra versió amb format .webp ConfirmGenerateImgWebp=Si ho confirmeu, generareu una imatge en format .webp per a totes les imatges actualment en aquesta carpeta (no s’inclouen les subcarpetes) ... ConfirmImgWebpCreation=Confirmeu la duplicació de totes les imatges SucessConvertImgWebp=Les imatges s'han duplicat correctament -ECMDirName=Dir name -ECMParentDirectory=Parent directory +ECMDirName=Dir nom +ECMParentDirectory=Directori pare diff --git a/htdocs/langs/ca_ES/errors.lang b/htdocs/langs/ca_ES/errors.lang index 59b51abe81d..9f038bdf256 100644 --- a/htdocs/langs/ca_ES/errors.lang +++ b/htdocs/langs/ca_ES/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Aquest contacte ja està definit com ErrorCashAccountAcceptsOnlyCashMoney=Aquest compte bancari és un compte d'efectiu, de manera que només accepta pagaments de tipus efectiu. ErrorFromToAccountsMustDiffers=El compte origen i destinació han de ser diferents. ErrorBadThirdPartyName=Valor incorrecte per al nom de tercers +ForbiddenBySetupRules=Prohibit per les normes de configuració ErrorProdIdIsMandatory=El %s es obligatori +ErrorAccountancyCodeCustomerIsMandatory=El codi comptable del client %s és obligatori ErrorBadCustomerCodeSyntax=La sintaxi del codi client és incorrecta ErrorBadBarCodeSyntax=Mala sintaxi per al codi de barres. Pot ser que configureu un tipus de codi de barres incorrecte o que hàgiu definit una màscara de codi de barres per a la numeració que no coincideixi amb el valor escanejat. ErrorCustomerCodeRequired=Codi client obligatori @@ -111,7 +113,7 @@ ErrorFailedToLoadRSSFile=Error en la recuperació del flux RSS. Afegiu la consta ErrorForbidden=Accés denegat.
Intentes accedir a una pàgina, àrea o funcionalitat d'un mòdul amb desactivat o sense estar en una sessió autenticada o que no se li permet al seu usuari. ErrorForbidden2=Els permisos per a aquest usuari poden ser assignats per l'administrador Dolibarr mitjançant el menú %s-> %s. ErrorForbidden3=Dolibarr no sembla funcionar en una sessió autentificada. Consulteu la documentació d'instal lació de Dolibarr per saber com administrar les autenticacions (htacces, mod_auth o altre ...). -ErrorForbidden4=Note: clear your browser cookies to destroy existing sessions for this login. +ErrorForbidden4=Nota: esborreu les galetes del vostre navegador per destruir les sessions existents per a aquest inici de sessió. ErrorNoImagickReadimage=No s'ha trobat la classe Imagick en aquesta instal lació PHP. La previsualització no està disponible. Els administradors poden deshabilitar aquesta pestanya en el menú Configuració - Entorn. ErrorRecordAlreadyExists=Registre ja existent ErrorLabelAlreadyExists=Aquesta etiqueta ja existeix @@ -219,7 +221,7 @@ ErrorObjectMustHaveStatusDraftToBeValidated=L'objecte %s ha de tenir l'estat 'Es ErrorObjectMustHaveLinesToBeValidated=L'objecte %s ha de tenir línies per ser validat. ErrorOnlyInvoiceValidatedCanBeSentInMassAction=Només es poden enviar factures validades mitjançant l'acció massiva "Enviar per correu electrònic". ErrorChooseBetweenFreeEntryOrPredefinedProduct=Heu de triar si l'article és un producte predefinit o no -ErrorDiscountLargerThanRemainToPaySplitItBefore=El descompte que intenteu aplicar és més gran que el que queda per pagar. Dividiu el descompte en 2 descomptes menors abans. +ErrorDiscountLargerThanRemainToPaySplitItBefore=El descompte que intenteu aplicar és més gran del que queda per a pagar. Dividiu el descompte en 2 descomptes més petits abans. ErrorFileNotFoundWithSharedLink=No s'ha trobat el fitxer. Pot ser que la clau compartida s'hagi modificat o el fitxer s'hagi eliminat recentment. ErrorProductBarCodeAlreadyExists=El codi de barres de producte %s ja existeix en la referència d'un altre producte. ErrorNoteAlsoThatSubProductCantBeFollowedByLot=Tingueu en compte també que no és possible l'ús de kits per augmentar/disminuir automàticament els subproductes quan almenys un subproducte (o subproducte de subproductes) necessita un número de sèrie/lot. @@ -272,8 +274,9 @@ CheckVersionFail=Error de comprovació de versió ErrorWrongFileName=El nom del fitxer no pot contenir __COSA__ ErrorNotInDictionaryPaymentConditions=No es troba al Diccionari de condicions de pagament, modifiqueu-lo. ErrorIsNotADraft=%s no és un esborrany -ErrorExecIdFailed=Can't execute command "id" -ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorExecIdFailed=No es pot executar l'ordre "id" +ErrorBadCharIntoLoginName=Caràcter no autoritzat al nom d'inici de sessió +ErrorRequestTooLarge=Error, sol·licitud massa gran # 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. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requereix com a mínim %s caràcter(s) RequireXStringMax = Requereix un màxim de %scaràcter(s) RequireAtLeastXDigits = Requereix com a mínim %s dígit(s) RequireXDigitsMax = Requereix %s dígit(s) màx +RequireValidNumeric = Requereix un valor numèric RequireValidEmail = L'adreça de correu electrònic no és vàlida RequireMaxLength = La longitud ha de ser inferior a %s caràcters RequireMinLength = La longitud ha de ser superior a %s caràcter(s) diff --git a/htdocs/langs/ca_ES/eventorganization.lang b/htdocs/langs/ca_ES/eventorganization.lang index 5bfd2b90599..870941b0fff 100644 --- a/htdocs/langs/ca_ES/eventorganization.lang +++ b/htdocs/langs/ca_ES/eventorganization.lang @@ -19,7 +19,7 @@ # ModuleEventOrganizationName = Organització d'esdeveniments EventOrganizationDescription = Organització d’esdeveniments mitjançant Projecte de mòduls -EventOrganizationDescriptionLong= Manage the organization of an event (show, conferences, attendees or speakers, with public pages for suggestion, vote or registration) +EventOrganizationDescriptionLong= Gestionar l'organització d'un esdeveniment (espectacle, conferències, assistents o ponents, amb pàgines públiques de suggeriment, votació o registre) # # Menu # @@ -37,17 +37,17 @@ EventOrganization=Organització d'esdeveniments Settings=Configuració EventOrganizationSetupPage = Pàgina de configuració de l'organització d'esdeveniments EVENTORGANIZATION_TASK_LABEL = Etiqueta de tasques per a crear automàticament quan es validi el projecte -EVENTORGANIZATION_TASK_LABELTooltip = Quan es valida un esdeveniment organitzat, es poden crear automàticament algunes tasques al projecte

Per exemple:
Enviar trucada per a conferències
Enviar trucades per a Booth
Rebre trucades per a conferències a034 recordatori de l'esdeveniment als altaveus
Enviar recordatori de l'esdeveniment a l'allotjament de l'estand
Enviar recordatori de l'esdeveniment als assistents +EVENTORGANIZATION_TASK_LABELTooltip = Quan es valida un esdeveniment organitzat, es poden crear automàticament algunes tasques al projecte

Per exemple:
Enviar trucada de Conferència
Enviar trucada de estand
Rebre trucada de conferències
Rebre trucada de estand
Subscripcions obertes als esdeveniments pels assistents
Enviar recordatori de l'esdeveniment als ponents
Envia recordatori de l'esdeveniment a l'organitzador de l'estand
Envia recordatori de l'esdeveniment als assistents EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Categoria per afegir a tercers creada automàticament quan algú suggereix una conferència EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Categoria per a afegir a tercers creada automàticament quan suggereixen un estand -EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Plantilla de correu electrònic per enviar després de rebre un suggeriment d'una conferència. -EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Plantilla de correu electrònic per enviar després de rebre un suggeriment d'un estand. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Plantilla de correu electrònic per enviar després de pagar un registre a un estand. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Plantilla de correu electrònic per enviar després de pagar un registre a un esdeveniment. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Plantilla de correu electrònic d'acció massiva als assistents -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Plantilla de correu electrònic d'acció massiva als ponents -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filtra la llista de selecció de tercers a la targeta / formulari de creació d'assistents amb categoria -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filtra la llista de selecció de tercers a la targeta / formulari de creació d'assistents amb el tipus de client +EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Plantilla de correu electrònic per a enviar després de rebre un suggeriment d'una conferència. +EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Plantilla de correu electrònic per a enviar després de rebre un suggeriment d'un estand. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Plantilla de correu electrònic per a enviar després d'haver pagat la inscripció a un estand. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Plantilla de correu electrònic per a enviar després de pagar un registre a un esdeveniment. +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Plantilla de correu electrònic per a utilitzar quan s'envien correus electrònics des de l'acció massiva "Envia correus electrònics" als parlants +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Plantilla de correu electrònic per a utilitzar quan s'envien correus electrònics des de l'acció massiva "Envia correus electrònics" a la llista d'assistents +EVENTORGANIZATION_FILTERATTENDEES_CAT = Al formulari per crear/afegir un assistent, restringeix la llista de tercers a tercers de la categoria +EVENTORGANIZATION_FILTERATTENDEES_TYPE = En el formulari per crear/afegir un assistent, restringeix la llista de tercers a tercers amb la naturalesa # # Object @@ -71,26 +71,27 @@ EventOrganizationEmailBoothPayment = Pagament del seu estand EventOrganizationEmailRegistrationPayment = Inscripció a un esdeveniment EventOrganizationMassEmailAttendees = Comunicació als assistents EventOrganizationMassEmailSpeakers = Comunicació als altaveus +ToSpeakers=A parlants # # Event # -AllowUnknownPeopleSuggestConf=Allow people to suggest conferences -AllowUnknownPeopleSuggestConfHelp=Allow unknown people to suggest a conference they want to do -AllowUnknownPeopleSuggestBooth=Allow people to apply for a booth -AllowUnknownPeopleSuggestBoothHelp=Allow unknown people to apply for a booth +AllowUnknownPeopleSuggestConf=Permet que la gent suggereixi conferències +AllowUnknownPeopleSuggestConfHelp=Permet que persones desconegudes suggereixin una conferència que vulguin fer +AllowUnknownPeopleSuggestBooth=Permet que la gent sol·liciti un estand +AllowUnknownPeopleSuggestBoothHelp=Permet que persones desconegudes sol·licitin un estand PriceOfRegistration=Preu de la inscripció PriceOfRegistrationHelp=Preu a pagar per inscriure’s o participar a l’esdeveniment PriceOfBooth=Preu de la subscripció per a estand PriceOfBoothHelp=Preu de la subscripció per a estand -EventOrganizationICSLink=Enllaç ICS per a esdeveniments +EventOrganizationICSLink=Enllaç ICS per a conferències ConferenceOrBoothInformation=Informació sobre conferències o estands Attendees=Assistents ListOfAttendeesOfEvent=Llista d’assistents al projecte de l’esdeveniment DownloadICSLink = Descarregueu l’enllaç ICS -EVENTORGANIZATION_SECUREKEY = Clau segura de l'enllaç de registre públic a una conferència +EVENTORGANIZATION_SECUREKEY = Llavor per a assegurar la clau de la pàgina de registre públic per a suggerir una conferència SERVICE_BOOTH_LOCATION = Servei que s'utilitza per a la fila de factures sobre una ubicació de l'estand -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Servei que s'utilitza per a la fila de factures sobre una subscripció d'assistent a una conferència +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Servei utilitzat per a la fila de factura sobre la subscripció d'un assistent a un esdeveniment NbVotes=Nombre de vots # # Status @@ -106,9 +107,9 @@ EvntOrgCancelled = Cancel·lat # SuggestForm = Pàgina de suggeriments SuggestOrVoteForConfOrBooth = Pàgina per suggerir o votar -EvntOrgRegistrationHelpMessage = Here, you can vote for a conference or suggest a new one for the event. You can also apply to have a booth during the event. -EvntOrgRegistrationConfHelpMessage = Here, you can suggest a new conference to animate during the event. -EvntOrgRegistrationBoothHelpMessage = Here, you can apply to have a booth during the event. +EvntOrgRegistrationHelpMessage = Aquí podeu votar per una conferència o suggerir-ne una de nova per a l'esdeveniment. També podeu sol·licitar tenir un estand durant l'esdeveniment. +EvntOrgRegistrationConfHelpMessage = Aquí podeu suggerir una nova conferència per animar durant l'esdeveniment. +EvntOrgRegistrationBoothHelpMessage = Aquí, podeu sol·licitar tenir un estand durant l'esdeveniment. ListOfSuggestedConferences = Llista de conferències suggerides ListOfSuggestedBooths = Llista de casetes suggerides ListOfConferencesOrBooths=Llista de conferències o estands del projecte d'esdeveniments @@ -136,10 +137,10 @@ OrganizationEventPaymentOfBoothWasReceived=El vostre pagament pel vostre estand OrganizationEventPaymentOfRegistrationWasReceived=El vostre pagament pel registre de l'esdeveniment s'ha registrat OrganizationEventBulkMailToAttendees=Aquest és un recordatori de la vostra participació a l'esdeveniment com a assistent OrganizationEventBulkMailToSpeakers=Aquest és un recordatori de la vostra participació a l’esdeveniment com a ponent -OrganizationEventLinkToThirdParty=Link to third party (customer, supplier or partner) +OrganizationEventLinkToThirdParty=Enllaç a tercers (client, proveïdor o soci) -NewSuggestionOfBooth=Application for a booth -NewSuggestionOfConference=Application for a conference +NewSuggestionOfBooth=Sol·licitud d'estand +NewSuggestionOfConference=Sol·licitud per a una conferència # # Vote page @@ -157,10 +158,10 @@ ConfAttendeeSubscriptionConfirmation = Confirmació de la subscripció a un esde Attendee = Assistent PaymentConferenceAttendee = Pagament dels assistents a la conferència PaymentBoothLocation = Pagament de la ubicació de l’estand -DeleteConferenceOrBoothAttendee=Remove attendee +DeleteConferenceOrBoothAttendee=Elimina l'assistent RegistrationAndPaymentWereAlreadyRecorder=Ja es va registrar un registre i un pagament per al correu electrònic %s -EmailAttendee=Attendee email -EmailCompanyForInvoice=Company email (for invoice, if different of attendee email) -ErrorSeveralCompaniesWithEmailContactUs=Several companies with this email has been found so we can't validate automaticaly your registration. Please contact us at %s for a manual validation -ErrorSeveralCompaniesWithNameContactUs=Several companies with this name has been found so we can't validate automaticaly your registration. Please contact us at %s for a manual validation -NoPublicActionsAllowedForThisEvent=No public actions are open to public for this event +EmailAttendee=Correu electrònic de l'assistent +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 obtenir una validació manual +ErrorSeveralCompaniesWithNameContactUs=S'han trobat diverses empreses amb aquest nom per la qual cosa no podem validar automàticament el vostre registre. Si us plau, poseu-vos en contacte amb nosaltres a %s per obtenir una validació manual +NoPublicActionsAllowedForThisEvent=No hi ha cap acció pública oberta al públic per a aquest esdeveniment diff --git a/htdocs/langs/ca_ES/help.lang b/htdocs/langs/ca_ES/help.lang index d0ffcfc9b44..02b26539227 100644 --- a/htdocs/langs/ca_ES/help.lang +++ b/htdocs/langs/ca_ES/help.lang @@ -20,4 +20,4 @@ BackToHelpCenter=En cas contrari, torna a la pàgina d'inici del C LinkToGoldMember=Pots trucar a un dels formadors preseleccionats per Dolibarr pel teu idioma (%s) fent clic al seu Panell (l'estat i el preu màxim s'actualitzen automàticament): PossibleLanguages=Idiomes disponibles SubscribeToFoundation=Ajuda al projecte Dolibarr, adhereix-te a l'associació -SeeOfficalSupport=Per suport oficial de Dolibar amb el teu llenguatge:
%s +SeeOfficalSupport=Per obtenir suport oficial de Dolibarr en el vostre idioma:
%s diff --git a/htdocs/langs/ca_ES/holiday.lang b/htdocs/langs/ca_ES/holiday.lang index f934a8759ee..845ee3ffe97 100644 --- a/htdocs/langs/ca_ES/holiday.lang +++ b/htdocs/langs/ca_ES/holiday.lang @@ -27,7 +27,7 @@ DescCP=Descripció SendRequestCP=Enviar la petició de dies lliures DelayToRequestCP=Les peticions de dies lliures s'han de realitzar al menys %s dies abans. MenuConfCP=Saldo de dies lliures -SoldeCPUser=Leave balance (in days) %s +SoldeCPUser=Deixa el saldo (en dies) %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 @@ -134,4 +134,6 @@ HolidaysToApprove=Vacances per a aprovar NobodyHasPermissionToValidateHolidays=Ningú no té permís per a validar les vacances HolidayBalanceMonthlyUpdate=Actualització mensual del saldo de vacances XIsAUsualNonWorkingDay=%s sol ser un dia NO laborable -ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted +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 diff --git a/htdocs/langs/ca_ES/hrm.lang b/htdocs/langs/ca_ES/hrm.lang index 200751cb8bd..4f56f1a6c8c 100644 --- a/htdocs/langs/ca_ES/hrm.lang +++ b/htdocs/langs/ca_ES/hrm.lang @@ -20,62 +20,62 @@ Employee=Empleat NewEmployee=Empleat nou ListOfEmployees=Llistat d'empleats HrmSetup=Configuració de mòdul de gestió de recursos humans -HRM_MAXRANK=Maximum rank for a skill -HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created -deplacement=Shift -DateEval=Evaluation date -JobCard=Job card -Job=Tasca -Jobs=Jobs -NewSkill=New Skill -SkillType=Skill type -Skilldets=List of ranks for this skill -Skilldet=Skill level -rank=Rank -ErrNoSkillSelected=No skill selected -ErrSkillAlreadyAdded=This skill is already in the list -SkillHasNoLines=This skill has no lines -skill=Skill -Skills=Skills -SkillCard=Skill card -EmployeeSkillsUpdated=Employee skills have been updated (see "Skills" tab of employee card) -Eval=Evaluation -Evals=Evaluations -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 -EmployeeRank=Employee rank for this skill -Position=Càrrec -Positions=Positions -PositionCard=Position card -EmployeesInThisPosition=Employees in this position -group1ToCompare=Usergroup to analyze -group2ToCompare=Second usergroup for comparison -OrJobToCompare=Compare to job skills requirements +SkillsManagement=Gestió d'habilitats +HRM_MAXRANK=Nombre màxim de nivells per classificar una habilitat +HRM_DEFAULT_SKILL_DESCRIPTION=Descripció per defecte dels rangs quan es crea l'habilitat +deplacement=Canvi +DateEval=Data d'avaluació +JobCard=Targeta de treball +JobPosition=Tasca +JobsPosition=Feines +NewSkill=Nova habilitat +SkillType=Tipus d'habilitat +Skilldets=Llista de classificacions per a aquesta habilitat +Skilldet=Nivell d'habilitat +rank=Classificació +ErrNoSkillSelected=No s'ha seleccionat cap habilitat +ErrSkillAlreadyAdded=Aquesta habilitat ja està a la llista +SkillHasNoLines=Aquesta habilitat no té línies +skill=Habilitat +Skills=Habilitats +SkillCard=Targeta d'habilitat +EmployeeSkillsUpdated=Les habilitats dels empleats s'han actualitzat (vegeu la pestanya "Habilitats" de la targeta d'empleat) +Eval=Avaluació +Evals=Avaluacions +NewEval=Nova avaluació +ValidateEvaluation=Valida l'avaluació +ConfirmValidateEvaluation=Esteu segur que voleu validar aquesta avaluació amb la referència %s ? +EvaluationCard=Targeta d'avaluació +RequiredRank=Grau requerit per a aquesta feina +EmployeeRank=Classificació dels empleats per a aquesta habilitat +EmployeePosition=Càrrec d'empleat +EmployeePositions=Càrrecs dels empleats +EmployeesInThisPosition=Empleats en aquesta posició +group1ToCompare=Grup d'usuaris per analitzar +group2ToCompare=Segon grup d'usuaris per comparar +OrJobToCompare=Compareu amb els requisits d'habilitats laborals difference=Diferència -CompetenceAcquiredByOneOrMore=Competence acquired by one or more users but not requested by the second comparator -MaxlevelGreaterThan=Max level greater than the one requested -MaxLevelEqualTo=Max level equal to that demand -MaxLevelLowerThan=Max level lower than that demand -MaxlevelGreaterThanShort=Employee level greater than the one requested -MaxLevelEqualToShort=Employee level equals to that demand -MaxLevelLowerThanShort=Employee level lower than that demand -SkillNotAcquired=Skill not acquired by all users and requested by the second comparator +CompetenceAcquiredByOneOrMore=Competència adquirida per un o més usuaris però no sol·licitada pel segon comparador +MaxlevelGreaterThan=Nivell màxim superior al sol·licitat +MaxLevelEqualTo=Nivell màxim igual a aquesta demanda +MaxLevelLowerThan=Nivell màxim inferior a aquesta demanda +MaxlevelGreaterThanShort=Nivell de treballador superior al sol·licitat +MaxLevelEqualToShort=El nivell d'empleat és igual a aquesta demanda +MaxLevelLowerThanShort=Nivell d'empleat inferior a aquesta demanda +SkillNotAcquired=Habilitat no adquirida per tots els usuaris i sol·licitada pel segon comparador legend=Llegenda -TypeSkill=Skill type -AddSkill=Add skills to job -RequiredSkills=Required skills for this job -UserRank=User Rank -SkillList=Skill list -SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge -AbandonmentComment=Abandonment comment -DateLastEval=Date last evaluation -NoEval=No evaluation done for this employee -HowManyUserWithThisMaxNote=Number of users with this rank -HighestRank=Highest rank -SkillComparison=Skill comparison +TypeSkill=Tipus d'habilitat +AddSkill=Afegeix habilitats a la feina +RequiredSkills=Competències necessàries per a aquesta feina +UserRank=Rank d'usuari +SkillList=Llista d'habilitats +SaveRank=Guardar rang +knowHow=Saber com +HowToBe=Com ser +knowledge=Coneixement +AbandonmentComment=Comentari d'abandonament +DateLastEval=Data darrera avaluació +NoEval=No s'ha fet cap avaluació per a aquest empleat +HowManyUserWithThisMaxNote=Nombre d'usuaris amb aquest rànquing +HighestRank=Grau més alt +SkillComparison=Comparació d'habilitats diff --git a/htdocs/langs/ca_ES/install.lang b/htdocs/langs/ca_ES/install.lang index 060dde403f5..e1143e0d0cc 100644 --- a/htdocs/langs/ca_ES/install.lang +++ b/htdocs/langs/ca_ES/install.lang @@ -21,7 +21,7 @@ ErrorPHPDoesNotSupportCurl=La vostra instal·lació de PHP no admet Curl. ErrorPHPDoesNotSupportCalendar=La vostra instal·lació de PHP no admet extensions de calendari php. ErrorPHPDoesNotSupportUTF8=La vostra instal·lació de PHP no admet funcions UTF8. Dolibarr no pot funcionar correctament. Resoleu-ho abans d’instal·lar Dolibarr. ErrorPHPDoesNotSupportIntl=La vostra instal·lació de PHP no admet funcions Intl. -ErrorPHPDoesNotSupportMbstring=Your PHP installation does not support mbstring functions. +ErrorPHPDoesNotSupportMbstring=La vostra instal·lació de PHP no admet les funcions mbstring. ErrorPHPDoesNotSupportxDebug=La vostra instal·lació de PHP no admet funcions de depuració extres. ErrorPHPDoesNotSupport=La teva instal·lació PHP no admet funcions %s. ErrorDirDoesNotExists=La carpeta %s no existeix o no és accessible. diff --git a/htdocs/langs/ca_ES/knowledgemanagement.lang b/htdocs/langs/ca_ES/knowledgemanagement.lang index ef153f8da6e..4bc4ee56f66 100644 --- a/htdocs/langs/ca_ES/knowledgemanagement.lang +++ b/htdocs/langs/ca_ES/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Camps extra per a l'article GroupOfTicket=Grup de tiquets YouCanLinkArticleToATicketCategory=Podeu adjuntar un article a un grup de tiquets (per tant, l'article es suggerirà durant la qualificació dels nous tiquets) SuggestedForTicketsInGroup=Suggerit per a entrades quan el grup està + +SetObsolete=S'estableix com a obsolet +ConfirmCloseKM=Confirmeu el tancament d'aquest article com a obsolet? +ConfirmReopenKM=Voleu restaurar aquest article a l'estat "Validat"? diff --git a/htdocs/langs/ca_ES/languages.lang b/htdocs/langs/ca_ES/languages.lang index 839fc264031..32c178e92d6 100644 --- a/htdocs/langs/ca_ES/languages.lang +++ b/htdocs/langs/ca_ES/languages.lang @@ -1,13 +1,13 @@ # Dolibarr language file - Source file is en_US - languages Language_am_ET=Etíop Language_ar_AR=Àrab -Language_ar_DZ=Arabic (Algeria) +Language_ar_DZ=Àrab (Algèria) Language_ar_EG=Àrab (Egipte) Language_ar_MA=Àrab (marroquí) Language_ar_SA=Àrab Language_ar_TN=Àrab (Tunísia) Language_ar_IQ=Àrab (Iraq) -Language_as_IN=Assamese +Language_as_IN=assameses Language_az_AZ=Azerbaidjan Language_bn_BD=Bengalí Language_bn_IN=Bengalí (Índia) @@ -74,7 +74,7 @@ Language_it_IT=Italià Language_it_CH=Italià (Suïssa) Language_ja_JP=Japonès Language_ka_GE=Georgià -Language_kk_KZ=Kazakh +Language_kk_KZ=kazakh Language_km_KH=Khmer Language_kn_IN=Kannada Language_ko_KR=Coreà @@ -95,7 +95,7 @@ Language_ro_MD=Romanès (Moldàvia) Language_ro_RO=Romanès Language_ru_RU=Rus Language_ru_UA=Rus (Ucraïna) -Language_tg_TJ=Tajik +Language_tg_TJ=Tadjik Language_tr_TR=Turc Language_sl_SI=Eslovè Language_sv_SV=Suec diff --git a/htdocs/langs/ca_ES/ldap.lang b/htdocs/langs/ca_ES/ldap.lang index 6c7f154e597..ea122ee2993 100644 --- a/htdocs/langs/ca_ES/ldap.lang +++ b/htdocs/langs/ca_ES/ldap.lang @@ -18,10 +18,14 @@ LDAPFieldLastSubscriptionAmount=Últim import de subscripció LDAPFieldSkype=Id Skype LDAPFieldSkypeExample=Exemple : NomSkype UserSynchronized=Usuari sincronitzat -GroupSynchronized=Grup sincronizado +GroupSynchronized=Grup sincronitzat MemberSynchronized=Soci sincronitzat MemberTypeSynchronized=Tipus de membre sincronitzat ContactSynchronized=Contacte sincronitzat ForceSynchronize=Forçar sincronització Dolibarr -> LDAP ErrorFailedToReadLDAP=Error de la lectura de l'anuari LDAP. Comprovar la configuració del mòdul LDAP i l'accessibilitat de l'anuari. PasswordOfUserInLDAP=Contrasenya de l'usuari en LDAP +LDAPPasswordHashType=Tipus hash de contrasenya +LDAPPasswordHashTypeExample=Tipus d'hash de contrasenya utilitzat al servidor +SupportedForLDAPExportScriptOnly=Només és compatible amb un script d'exportació ldap +SupportedForLDAPImportScriptOnly=Només és compatible amb un script d'importació ldap diff --git a/htdocs/langs/ca_ES/mails.lang b/htdocs/langs/ca_ES/mails.lang index 19cd8f322cd..799c3ed0452 100644 --- a/htdocs/langs/ca_ES/mails.lang +++ b/htdocs/langs/ca_ES/mails.lang @@ -60,7 +60,7 @@ EMailTestSubstitutionReplacedByGenericValues=En mode prova, les variables de sub MailingAddFile=Adjunta aquest fitxer NoAttachedFiles=Sense fitxers adjunts BadEMail=Valor incorrecte per correu electrònic -EMailNotDefined=Email not defined +EMailNotDefined=Correu electrònic no definit ConfirmCloneEMailing=Vols clonar aquest E-Mailing? CloneContent=Clonar missatge CloneReceivers=Clonar destinataris diff --git a/htdocs/langs/ca_ES/main.lang b/htdocs/langs/ca_ES/main.lang index d6eeee42f7d..2144d2ecf0a 100644 --- a/htdocs/langs/ca_ES/main.lang +++ b/htdocs/langs/ca_ES/main.lang @@ -67,7 +67,7 @@ ErrorNoVATRateDefinedForSellerCountry=Error, cap tipus d'IVA definit per al paí ErrorNoSocialContributionForSellerCountry=Error, cap tipus d'impost varis definit per al país '%s'. ErrorFailedToSaveFile=Error, el registre del fitxer ha fallat. ErrorCannotAddThisParentWarehouse=Esteu intentant afegir un magatzem primari que ja és fill d'un mag atzem existent -FieldCannotBeNegative=Field "%s" cannot be negative +FieldCannotBeNegative=El camp "%s" no pot ser negatiu MaxNbOfRecordPerPage=Màx. nombre de registres per pàgina NotAuthorized=No està autoritzat per fer-ho. SetDate=Indica la data @@ -88,7 +88,7 @@ FileWasNotUploaded=Un arxiu ha estat seleccionat per adjuntar, però encara no h NbOfEntries=Nombre d'entrades GoToWikiHelpPage=Llegiu l'ajuda en línia (cal tenir accés a Internet) GoToHelpPage=Consultar l'ajuda -DedicatedPageAvailable=Dedicated help page related to your current screen +DedicatedPageAvailable=Pàgina d'ajuda dedicada relacionada amb la pantalla actual HomePage=Pàgina d'inici RecordSaved=Registre guardat RecordDeleted=Registre eliminat @@ -115,7 +115,7 @@ ReturnCodeLastAccessInError=Retorna el codi per les últimes peticions d'accés InformationLastAccessInError=Informació de les últimes peticions d'accés a la base de dades amb error DolibarrHasDetectedError=Dolibarr ha trobat un error tècnic YouCanSetOptionDolibarrMainProdToZero=Podeu llegir el fitxer de registre o establir l'opció $dolibarr_main_prod a '0' al fitxer de configuració per a obtenir més informació. -InformationToHelpDiagnose=This information can be useful for diagnostic purposes (you can set option $dolibarr_main_prod to '1' to hide sensitive information) +InformationToHelpDiagnose=Aquesta informació pot ser útil per a finalitats de diagnòstic (podeu establir l'opció $dolibarr_main_prod a '1' per amagar informació sensible) MoreInformation=Més informació TechnicalInformation=Informació tècnica TechnicalID=ID Tècnic @@ -212,8 +212,8 @@ User=Usuari Users=Usuaris Group=Grup Groups=Grups -UserGroup=User group -UserGroups=User groups +UserGroup=Grup d'usuaris +UserGroups=Grups d'usuaris NoUserGroupDefined=Grup d'usuari no definit Password=Contrasenya PasswordRetype=Repetir contrasenya @@ -441,7 +441,7 @@ Average=Mitja Sum=Suma Delta=Diferència StatusToPay=A pagar -RemainToPay=Queda per pagar +RemainToPay=Queda per a pagar Module=Mòdul/Aplicació Modules=Mòduls/Aplicacions Option=Opció @@ -909,7 +909,7 @@ ViewFlatList=Veure llista plana ViewAccountList=Veure llibre major ViewSubAccountList=Vegeu el subcompte del llibre major RemoveString=Eliminar cadena '%s' -SomeTranslationAreUncomplete=Some of the languages offered may be only partially translated or may contain errors. Please help to correct your language by registering at https://transifex.com/projects/p/dolibarr/ to add your improvements. +SomeTranslationAreUncomplete=Alguns dels idiomes que s'ofereixen poden estar traduïts només parcialment o poden contenir errors. Si us plau, ajudeu a corregir el vostre idioma registrant-vos a https://transifex.com/projects/p/dolibarr/ per afegir les vostres millores. DirectDownloadLink=Enllaç de descàrrega públic PublicDownloadLinkDesc=Per baixar el fitxer només es necessita l'enllaç DirectDownloadInternalLink=Enllaç de descàrrega privat @@ -1084,7 +1084,7 @@ ToApprove=Per a aprovar GlobalOpenedElemView=Vista global NoArticlesFoundForTheKeyword=No s'ha trobat cap article per a la paraula clau " %s " NoArticlesFoundForTheCategory=No s'ha trobat cap article per a la categoria -ToAcceptRefuse=Per acceptar | refusar +ToAcceptRefuse=Acceptar | rebutjar ContactDefault_agenda=Esdeveniment ContactDefault_commande=Comanda ContactDefault_contrat=Contracte @@ -1160,7 +1160,7 @@ RecordsApproved=%s Registre(s) aprovat(s) Properties=Propietats hasBeenValidated=%s s'ha validat ClientTZ=Zona horària client (usuari) -NotClosedYet=Not yet closed -ClearSignature=Reset signature -CanceledHidden=Canceled hidden -CanceledShown=Canceled shown +NotClosedYet=Encara no tancat +ClearSignature=Restableix la signatura +CanceledHidden=Cancel·lat ocult +CanceledShown=Es mostra cancel·lada diff --git a/htdocs/langs/ca_ES/members.lang b/htdocs/langs/ca_ES/members.lang index 3fe6d64443b..9ed01b35226 100644 --- a/htdocs/langs/ca_ES/members.lang +++ b/htdocs/langs/ca_ES/members.lang @@ -140,12 +140,12 @@ ThisIsContentOfSubscriptionReminderEmail=Volem informar-vos que la vostra subscr ThisIsContentOfYourCard=Aquest és un resum de la informació que tenim sobre vostè. Poseu-vos en contacte amb nosaltres si hi ha alguna cosa incorrecta.

DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Assumpte del correu electrònic de notificació rebut en cas d'inscripció automàtica d'un convidat DescADHERENT_AUTOREGISTER_NOTIF_MAIL=Contingut del correu electrònic de notificació rebut en cas d'inscripció automàtica d'un convidat -DescADHERENT_EMAIL_TEMPLATE_AUTOREGISTER=Plantilla de correu electrònic que cal utilitzar per enviar un correu electrònic a un membre mitjançant el registre automàtic de membres +DescADHERENT_EMAIL_TEMPLATE_AUTOREGISTER=Plantilla de correu electrònic que cal utilitzar per a enviar un correu electrònic a un soci mitjançant el registre automàtic de socis DescADHERENT_EMAIL_TEMPLATE_MEMBER_VALIDATION=Plantilla de correu electrònic que cal utilitzar per a enviar un correu electrònic a un soci amb la validació de socis -DescADHERENT_EMAIL_TEMPLATE_SUBSCRIPTION=Plantilla de correu electrònic que s'utilitzarà per enviar correus electrònics a un membre en un nou registre de contribució -DescADHERENT_EMAIL_TEMPLATE_REMIND_EXPIRATION=Plantilla de correu electrònic que s'utilitzarà per enviar un recordatori de correu electrònic quan la contribució estigui a punt de caducar +DescADHERENT_EMAIL_TEMPLATE_SUBSCRIPTION=Plantilla de correu electrònic que s'utilitzarà per a enviar correus electrònics a un membre en un nou registre de contribució +DescADHERENT_EMAIL_TEMPLATE_REMIND_EXPIRATION=Plantilla de correu electrònic que s'utilitzarà per a enviar un recordatori de correu electrònic quan la contribució estigui a punt de caducar DescADHERENT_EMAIL_TEMPLATE_CANCELATION=Plantilla de correu electrònic que s'utilitzarà per a enviar un correu electrònic a un soci en la seva cancel·lació -DescADHERENT_EMAIL_TEMPLATE_EXCLUSION=Plantilla de correu electrònic que s'utilitzarà per enviar un correu electrònic a un membre en cas d'exclusió de membre +DescADHERENT_EMAIL_TEMPLATE_EXCLUSION=Plantilla de correu electrònic que s'utilitzarà per a enviar un correu electrònic a un soci en cas d'exclusió de soci DescADHERENT_MAIL_FROM=Correu electrònic del remitent per a correus electrònics automàtics DescADHERENT_ETIQUETTE_TYPE=Format pàgines etiquetes DescADHERENT_ETIQUETTE_TEXT=Text a imprimir a la direcció de les etiquetes de soci @@ -210,7 +210,7 @@ SubscriptionRecorded=Contribució registrada NoEmailSentToMember=No s'ha enviat un correu electrònic al membre EmailSentToMember=Correu electrònic enviat a membre a %s SendReminderForExpiredSubscriptionTitle=Envieu un recordatori per correu electrònic de les contribucions caducades -SendReminderForExpiredSubscription=Envieu un recordatori per correu electrònic als membres quan la contribució estigui a punt de caducar (el paràmetre és el nombre de dies abans de finalitzar la subscripció per enviar el recordatori. Pot ser una llista de dies separats per un punt i coma, per exemple '10; 5; 0; -5 ') +SendReminderForExpiredSubscription=Envieu un recordatori per correu electrònic als membres quan la contribució estigui a punt de caducar (el paràmetre és el nombre de dies abans de finalitzar la subscripció per a enviar el recordatori. Pot ser una llista de dies separats per un punt i coma, per exemple '10; 5; 0; -5 ') MembershipPaid=Membres pagats pel període actual (fins a %s) YouMayFindYourInvoiceInThisEmail=Podeu trobar la factura adjunta a aquest correu electrònic XMembersClosed=%s soci(s) tancat(s) diff --git a/htdocs/langs/ca_ES/modulebuilder.lang b/htdocs/langs/ca_ES/modulebuilder.lang index 5fe12f8e82b..116ea41d0b1 100644 --- a/htdocs/langs/ca_ES/modulebuilder.lang +++ b/htdocs/langs/ca_ES/modulebuilder.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - loan -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. +ModuleBuilderDesc=Aquesta eina només l'han d'utilitzar usuaris o desenvolupadors experimentats. Proporciona utilitats per construir o editar el vostre propi mòdul. La documentació per al desenvolupament manual alternatiu és aquí . EnterNameOfModuleDesc=Introduïu el nom del mòdul/aplicació per a crear sense espais. Utilitzeu majúscules per separar paraules (per exemple: MyModule, EcommerceForShop, SyncWithMySystem ...) EnterNameOfObjectDesc=Introduïu el nom de l'objecte que voleu crear sense espais. Utilitzeu majúscules per separar paraules (Per exemple: MyObject, Estudiant, Professor...). El fitxer de classes CRUD, però també el fitxer API, pàgines per a llistar/afegir/editar/eliminar objectes i els fitxers SQL es generaran. ModuleBuilderDesc2=Camí on es generen / editen els mòduls (primer directori per als mòduls externs definits en %s): %s @@ -98,7 +98,7 @@ MenusDefDescTooltip=Els menús proporcionats pel vostre mòdul / aplicació es d DictionariesDefDescTooltip=Els diccionaris subministrats pel vostre mòdul/aplicació es defineixen a la matriu $this->dictionaries del fitxer descriptor del mòdul. Podeu editar manualment aquest fitxer o utilitzar l’editor incrustat.

Nota: un cop definit (i reactivat el mòdul), els diccionaris també són visibles a la zona de configuració per als usuaris administradors a %s. PermissionsDefDescTooltip=Els permisos proporcionats pel vostre mòdul / aplicació es defineixen a la matriu $ this-> rights al fitxer descriptor del mòdul. Podeu editar manualment aquest fitxer o utilitzar l’editor incrustat.

Nota: un cop definits (i el mòdul reactivat), els permisos es visualitzen a la configuració de permisos per defecte %s. HooksDefDesc=Definiu a la propietat module_parts['hooks'], en el descriptor del mòdul, el context dels "hooks" que voleu gestionar (una llista de contextos es pot trobar si cerqueu 'initHooks' (en el codi del nucli de Dolibarr.
Editeu el fitxer del "hook" per afegir el codi de les vostres funcions "hookables" (les quals es poden trobar cercant "executeHooks" en el codi del nucli de Dolibarr). -TriggerDefDesc=Define in the trigger file the code that you want to execute when a business event external to your module is executed (events triggered by other modules). +TriggerDefDesc=Definiu al fitxer disparador el codi que voleu executar quan s'executi un esdeveniment empresarial extern al vostre mòdul (esdeveniments desencadenats per altres mòduls). SeeIDsInUse=Consulteu els identificadors que s’utilitzen a la instal·lació SeeReservedIDsRangeHere=Consultar l'interval d'identificadors reservats ToolkitForDevelopers=Kit d'eines per als desenvolupadors de Dolibarr diff --git a/htdocs/langs/ca_ES/mrp.lang b/htdocs/langs/ca_ES/mrp.lang index beac2db3e6d..b15fd5c4f1e 100644 --- a/htdocs/langs/ca_ES/mrp.lang +++ b/htdocs/langs/ca_ES/mrp.lang @@ -27,12 +27,12 @@ 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 -ValueOfMeansLoss=El valor de 0,95 significa una mitjana de 5%% de pèrdues durant la producció +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 DeleteMo=Eliminar Ordre de Fabricació ConfirmDeleteBillOfMaterials=Esteu segur que voleu suprimir aquesta llista de materials? -ConfirmDeleteMo=Are you sure you want to delete this Manufacturing Order? +ConfirmDeleteMo=Esteu segur que voleu suprimir aquesta comanda de fabricació? MenuMRP=Ordres de fabricació NewMO=Ordre de fabricació nova QtyToProduce=Quantitat a produir @@ -104,6 +104,6 @@ HumanMachine=Humà / Màquina WorkstationArea=Zona d’estació de treball Machines=Màquines THMEstimatedHelp=Aquesta taxa permet definir un cost previst de l'article -BOM=Bill Of Materials -CollapseBOMHelp=You can define the default display of the details of the nomenclature in the configuration of the BOM module +BOM=Factura de materials +CollapseBOMHelp=Podeu definir la visualització per defecte dels detalls de la nomenclatura a la configuració del mòdul BOM MOAndLines=Comandes i línies de fabricació diff --git a/htdocs/langs/ca_ES/oauth.lang b/htdocs/langs/ca_ES/oauth.lang index 95bb8384e1b..d5808930a4f 100644 --- a/htdocs/langs/ca_ES/oauth.lang +++ b/htdocs/langs/ca_ES/oauth.lang @@ -7,7 +7,7 @@ IsTokenGenerated=S'ha generat el token? NoAccessToken=No es pot accedir al token desat en la base de dades local HasAccessToken=S'ha generat un token i s'ha desat en la base de dades local NewTokenStored=Token rebut i desat -ToCheckDeleteTokenOnProvider=Feu clic aquí per comprovar/eliminar l'autorització desada pel proveïdor OAuth %s +ToCheckDeleteTokenOnProvider=Feu clic aquí per a comprovar/eliminar l'autorització desada pel proveïdor OAuth %s TokenDeleted=Token eliminat RequestAccess=Feu clic aquí per a sol·licitar/renovar l'accés i rebre un nou testimoni per a desar DeleteAccess=Feu clic aquí per a suprimir el testimoni @@ -23,10 +23,10 @@ TOKEN_DELETE=Elimina el token desat OAUTH_GOOGLE_NAME=Servei d'OAuth Google OAUTH_GOOGLE_ID=Identificador de Google OAuth OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Aneu a aquesta pàgina després "Credencials" per crear credencials OAuth +OAUTH_GOOGLE_DESC=Aneu a aquesta pàgina i després "Credencials" per a crear credencials OAuth OAUTH_GITHUB_NAME=Servei OAuth GitHub OAUTH_GITHUB_ID=OAuth GitHub Id OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Aneu aaquesta pàgina i després a "Registra una aplicació nova" per a crear les credencials d'OAuth +OAUTH_GITHUB_DESC=Aneu a aquesta pàgina i després "Registreu una aplicació nova" per crear credencials OAuth OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live diff --git a/htdocs/langs/ca_ES/opensurvey.lang b/htdocs/langs/ca_ES/opensurvey.lang index dc052b6f241..e81e66a4551 100644 --- a/htdocs/langs/ca_ES/opensurvey.lang +++ b/htdocs/langs/ca_ES/opensurvey.lang @@ -48,8 +48,8 @@ AddEndHour=Afegeix l'hora final votes=vot(s) NoCommentYet=Cap comentari ha estat publicat per a aquesta enquesta CanComment=Els votants poden comentar a l'enquesta -YourVoteIsPrivate=This poll is private, nobody can see your vote. -YourVoteIsPublic=This poll is public, anybody with the link can see your vote. +YourVoteIsPrivate=Aquesta enquesta és privada, ningú pot veure el teu vot. +YourVoteIsPublic=Aquesta enquesta és pública, qualsevol persona amb l'enllaç pot veure el teu vot. CanSeeOthersVote=Els votants poden veure els vots d'altres SelectDayDesc=Per a cada dia seleccionat, pot triar, o no, les hores de reunió en el següent format:
- buit,
- "8h", "8H" o "8:00" per proporcionar una hora d'inici de la reunió,
- "8-11", "8h-11h", "8H-11H" o "8:00-11:00" per proporcionar una hora d'inici i de fi de la reunió,
- "8h15-11h15", "8H15-11H15" or "8:15-11:15" per el mateix però amb minuts. BackToCurrentMonth=Tornar al mes actual diff --git a/htdocs/langs/ca_ES/other.lang b/htdocs/langs/ca_ES/other.lang index b1844407a52..4154ffc475a 100644 --- a/htdocs/langs/ca_ES/other.lang +++ b/htdocs/langs/ca_ES/other.lang @@ -35,9 +35,9 @@ OnlyOneFieldForXAxisIsPossible=Actualment només és possible 1 camp com a Eix X 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 -notiftouser=To users -notiftofixedemail=To fixed mail -notiftouserandtofixedemail=To user and fixed mail +notiftouser=A usuaris +notiftofixedemail=Al correu fix +notiftouserandtofixedemail=A l'usuari i correu fix Notify_ORDER_VALIDATE=Ordre de venda validat Notify_ORDER_SENTBYMAIL=Ordre de venda enviat per correu Notify_ORDER_SUPPLIER_SENTBYMAIL=Ordre de compra enviat per correu electrònic @@ -258,10 +258,10 @@ PassEncoding=Codificació de contrasenya PermissionsAdd=Permisos afegits PermissionsDelete=Permisos eliminats YourPasswordMustHaveAtLeastXChars=La teva contrasenya ha de tenir almenys %s \ncaràcters -PasswordNeedAtLeastXUpperCaseChars=The password need at least %s upper case chars -PasswordNeedAtLeastXDigitChars=The password need at least %s numeric chars -PasswordNeedAtLeastXSpecialChars=The password need at least %s special chars -PasswordNeedNoXConsecutiveChars=The password must not have %s consecutive similar chars +PasswordNeedAtLeastXUpperCaseChars=La contrasenya necessita almenys %s caràcters majúscules +PasswordNeedAtLeastXDigitChars=La contrasenya necessita almenys %s caràcters numèrics +PasswordNeedAtLeastXSpecialChars=La contrasenya necessita almenys %s caràcters especials +PasswordNeedNoXConsecutiveChars=La contrasenya no ha de tenir %s caràcters similars consecutius YourPasswordHasBeenReset=La teva contrasenya s'ha restablert correctament ApplicantIpAddress=Adreça IP del sol·licitant SMSSentTo=SMS enviat a %s @@ -270,8 +270,9 @@ ThirdPartyCreatedByEmailCollector=Tercers creats pel recollidor de correus elect ContactCreatedByEmailCollector=Contacte / adreça creada pel recollidor de correus electrònics MSGID %s ProjectCreatedByEmailCollector=Projecte creat pel recollidor de correus electrònics MSGID %s TicketCreatedByEmailCollector=Tiquet creat pel recollidor de correus electrònics MSGID %s -OpeningHoursFormatDesc=Utilitzeu a - per separar l’horari d’obertura i tancament.
Utilitzeu un espai per introduir diferents intervals.
Exemple: 8-12 14-18 +OpeningHoursFormatDesc=Utilitzeu un - per a separar l'horari d'obertura i tancament.
Utilitzeu un espai per a introduir diferents intervals.
Exemple: 8-12 14-18 SuffixSessionName=Sufix per al nom de la sessió +LoginWith=Inicieu sessió amb %s ##### Export ##### ExportsArea=Àrea d'exportacions diff --git a/htdocs/langs/ca_ES/partnership.lang b/htdocs/langs/ca_ES/partnership.lang index 72d4ecedee7..bd9fe10404f 100644 --- a/htdocs/langs/ca_ES/partnership.lang +++ b/htdocs/langs/ca_ES/partnership.lang @@ -19,7 +19,7 @@ ModulePartnershipName=Gestió de la col·laboració PartnershipDescription=Mòdul Gestió de la col·laboració PartnershipDescriptionLong= Mòdul Gestió de la col·laboració -Partnership=Partnership +Partnership=Associació 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 @@ -58,7 +58,7 @@ ManagePartnership=Gestioneu l'associació BacklinkNotFoundOnPartnerWebsite=Enllaç de retrocés no trobat al lloc web associat ConfirmClosePartnershipAsk=Esteu segur que voleu cancel·lar aquesta associació? PartnershipType=Tipus de col·laboració -PartnershipRefApproved=Partnership %s approved +PartnershipRefApproved=Associació %s aprovada # # Template Mail diff --git a/htdocs/langs/ca_ES/paybox.lang b/htdocs/langs/ca_ES/paybox.lang index 0da9d902659..2dd9b7e3f54 100644 --- a/htdocs/langs/ca_ES/paybox.lang +++ b/htdocs/langs/ca_ES/paybox.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - paybox PayBoxSetup=Configuració mòdul PayBox -PayBoxDesc=Aquest mòdul ofereix una pàgina de pagament a través del proveïdor Paybox per realitzar qualsevol pagament o un pagament en relació amb un objecte Dolibarr (factures, comandes ...) +PayBoxDesc=Aquest mòdul ofereix pàgines per permetre el pagament a Paybox per part dels clients. Això es pot utilitzar per a un pagament gratuït o per a un pagament d'un objecte Dolibarr concret (factura, comanda, ...) FollowingUrlAreAvailableToMakePayments=Les següents URL estan disponibles per a permetre a un client fer un cobrament en objectes de Dolibarr PaymentForm=Formulari de pagament WelcomeOnPaymentPage=Benvingut als nostres serveis de pagament en línia diff --git a/htdocs/langs/ca_ES/paypal.lang b/htdocs/langs/ca_ES/paypal.lang index 7246fea7e23..529fe9c0b28 100644 --- a/htdocs/langs/ca_ES/paypal.lang +++ b/htdocs/langs/ca_ES/paypal.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - paypal PaypalSetup=Configuració mòdul PayPal -PaypalDesc=Aquest mòdul permet el pagament per part dels clients a través de PayPal . Això es pot utilitzar per a un pagament ad hoc o per un pagament relacionat amb un objecte Dolibarr (factura, comanda ...) +PaypalDesc=Aquest mòdul permet el pagament dels clients mitjançant PayPal . Això es pot utilitzar per a un pagament ad hoc o per a un pagament relacionat amb un objecte Dolibarr (factura, comanda, ...) PaypalOrCBDoPayment=Paga amb PayPal (targeta de crèdit o PayPal) PaypalDoPayment=Paga amb PayPal PAYPAL_API_SANDBOX=Mode de proves(sandbox) @@ -14,11 +14,11 @@ PaypalModeOnlyPaypal=Només PayPal ONLINE_PAYMENT_CSS_URL=URL opcional del full d'estils CSS a la pàgina de pagament en línia ThisIsTransactionId=Identificador de la transacció: %s PAYPAL_ADD_PAYMENT_URL=Incloeu l'adreça de pagament de PayPal quan envieu un document per correu electrònic -NewOnlinePaymentReceived=Nou pagament online rebut -NewOnlinePaymentFailed=S'ha intentat el nou pagament online però ha fallat +NewOnlinePaymentReceived=S'ha rebut un pagament en línia nou +NewOnlinePaymentFailed=S'ha intentat un pagament en línia nou, però ha fallat ONLINE_PAYMENT_SENDEMAIL=Adreça de correu electrònic per a les notificacions després de cada intent de pagament (per a l'èxit i el fracàs) ReturnURLAfterPayment=URL de retorn després del pagament -ValidationOfOnlinePaymentFailed=Ha fallat la validació del pagament online +ValidationOfOnlinePaymentFailed=La validació del pagament en línia ha fallat PaymentSystemConfirmPaymentPageWasCalledButFailed=La pàgina de confirmació de pagament sol·licitada pel sistema de pagament ha retornat un error SetExpressCheckoutAPICallFailed=Ha fallat la crida a l'API SetExpressCheckout. DoExpressCheckoutPaymentAPICallFailed=Ha fallat la crida a l'API DoExpressCheckoutPayment. @@ -26,7 +26,7 @@ DetailedErrorMessage=Missatge d'error detallat ShortErrorMessage=Missatge d'error curt ErrorCode=Codi d'error ErrorSeverityCode=Codi sever d'error -OnlinePaymentSystem=Sistema de pagament online +OnlinePaymentSystem=Sistema de pagament en línia PaypalLiveEnabled=El mode "en viu" de PayPal habilitat (en cas contrari, el mode prova / sandbox) PaypalImportPayment=Importeu els pagaments de PayPal PostActionAfterPayment=Accions posteriors desprès dels pagaments diff --git a/htdocs/langs/ca_ES/printing.lang b/htdocs/langs/ca_ES/printing.lang index 4d504c5de00..5691216f9a1 100644 --- a/htdocs/langs/ca_ES/printing.lang +++ b/htdocs/langs/ca_ES/printing.lang @@ -1,10 +1,10 @@ # Dolibarr language file - Source file is en_US - printing -Module64000Name=One click Printing -Module64000Desc=Enable One click Printing System -PrintingSetup=Setup of One click Printing System -PrintingDesc=This module adds a Print button to various modules to allow documents to be printed directly to a printer with no need to open the document into another application. -MenuDirectPrinting=One click Printing jobs -DirectPrint=One click Print +Module64000Name=Impressió amb un clic +Module64000Desc=Activeu el sistema d'impressió d'un clic +PrintingSetup=Configuració del sistema d'impressió d'un clic +PrintingDesc=Aquest mòdul afegeix un botó Imprimeix a diversos mòduls per permetre que els documents s'imprimissin directament a una impressora sense necessitat d'obrir el document a una altra aplicació. +MenuDirectPrinting=Treballs d'impressió amb un clic +DirectPrint=Un clic Imprimeix PrintingDriverDesc=Configuració variables pel driver d'impressió ListDrivers=Llista de controladors PrintTestDesc=Llista d'impressores. diff --git a/htdocs/langs/ca_ES/productbatch.lang b/htdocs/langs/ca_ES/productbatch.lang index 50a33349845..5a53b2f0281 100644 --- a/htdocs/langs/ca_ES/productbatch.lang +++ b/htdocs/langs/ca_ES/productbatch.lang @@ -30,16 +30,16 @@ ManageLotMask=Màscara personalitzada CustomMasks=Opció per definir una màscara de numeració diferent per a cada producte BatchLotNumberingModules=Regla de numeració per a la generació automàtica del número de lot BatchSerialNumberingModules=Regla de numeració per a la generació automàtica de número de sèrie (per a productes amb la propietat 1 lot / sèrie únic per a cada producte) -QtyToAddAfterBarcodeScan=Qty to %s for each barcode/lot/serial scanned +QtyToAddAfterBarcodeScan=Quantitat a %s per a cada codi de barres/lot/sèrie escanejat LifeTime=Vida útil (en dies) EndOfLife=Final de la vida ManufacturingDate=Data de fabricació DestructionDate=Data de destrucció FirstUseDate=Data del primer ús QCFrequency=Freqüència de control de qualitat (en dies) -ShowAllLots=Show all lots -HideLots=Hide lots +ShowAllLots=Mostra tots els lots +HideLots=Amaga molts #Traceability - qc status OutOfOrder=No funciona InWorkingOrder=En procés -ToReplace=Replace +ToReplace=Substitueix diff --git a/htdocs/langs/ca_ES/products.lang b/htdocs/langs/ca_ES/products.lang index c939c2d39c2..82eb754189e 100644 --- a/htdocs/langs/ca_ES/products.lang +++ b/htdocs/langs/ca_ES/products.lang @@ -75,7 +75,7 @@ SellingPriceTTC=PVP amb IVA SellingMinPriceTTC=Preu mínim de venda (IVA inclòs) CostPriceDescription=Aquest camp de preus (sense impostos) es pot utilitzar per capturar l'import mitjà que aquest producte costa a la vostra empresa. Pot ser qualsevol preu que calculeu vosaltres mateixos, per exemple, a partir del preu de compra mitjà més el cost mitjà de producció i distribució. CostPriceUsage=Aquest valor pot utilitzar-se per al càlcul de marges -ManufacturingPrice=Manufacturing price +ManufacturingPrice=Preu de fabricació SoldAmount=Import venut PurchasedAmount=Import comprat NewPrice=Preu nou @@ -316,7 +316,7 @@ LastUpdated=Última actualització CorrectlyUpdated=Actualitzat correctament PropalMergePdfProductActualFile=Els fitxers que s’utilitzen per a afegir-se al PDF Azur són PropalMergePdfProductChooseFile=Selecciona fitxers PDF -IncludingProductWithTag=Including products/services with the tag +IncludingProductWithTag=Incloent productes/serveis amb l'etiqueta DefaultPriceRealPriceMayDependOnCustomer=Preu predeterminat, el preu real pot dependre del client WarningSelectOneDocument=Selecciona com a mínim un document DefaultUnitToShow=Unitat @@ -398,15 +398,16 @@ ActionAvailableOnVariantProductOnly=Acció només disponible sobre la variant de ProductsPricePerCustomer=Preus dels productes per clients ProductSupplierExtraFields=Atributs addicionals (preus de proveïdors) DeleteLinkedProduct=Suprimeix el producte fill enllaçat a la combinació -AmountUsedToUpdateWAP=Amount to use to update the Weighted Average Price +AmountUsedToUpdateWAP=Import a utilitzar per actualitzar el preu mitjà ponderat PMPValue=Preu mitjà ponderat PMPValueShort=PMP -mandatoryperiod=Mandatory periods -mandatoryPeriodNeedTobeSet=Note: Period (start and end date) must be defined -mandatoryPeriodNeedTobeSetMsgValidate=A service requires a start and end period -mandatoryHelper=Check this if you want a message to the user when creating / validating an invoice, commercial proposal, sales order without entering a start and end date on lines with this service.
Note that the message is a warning and not a blocking error. +mandatoryperiod=Períodes obligatoris +mandatoryPeriodNeedTobeSet=Nota: Cal definir el període (data d'inici i final). +mandatoryPeriodNeedTobeSetMsgValidate=Un servei requereix un període d'inici i de finalització +mandatoryHelper=Marqueu-ho si voleu un missatge a l'usuari en crear/validar una factura, proposta comercial, comanda de venda sense introduir data d'inici i finalització a les línies d'aquest servei.
Tingueu en compte que el missatge és un avís i no un error de bloqueig. DefaultBOM=Matèria predeterminada per defecte DefaultBOMDesc=Es recomana utilitzar la llista de materials predeterminada per fabricar aquest producte. Aquest camp només es pot establir si la naturalesa del producte és "%s". -Rank=Rank -SwitchOnSaleStatus=Switch on sale status -SwitchOnPurchaseStatus=Switch on purchase status +Rank=Classificació +SwitchOnSaleStatus=Canvia l'estat de venda +SwitchOnPurchaseStatus=Activa l'estat de compra +StockMouvementExtraFields= Camps addicionals (moviment d'existències) diff --git a/htdocs/langs/ca_ES/projects.lang b/htdocs/langs/ca_ES/projects.lang index 765f56996b7..49a2835884b 100644 --- a/htdocs/langs/ca_ES/projects.lang +++ b/htdocs/langs/ca_ES/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Entrada per mes InputDetail=Detall d'entrada TimeAlreadyRecorded=Aquest és el temps dedicat ja registrat per a aquesta tasca/dia i l'usuari %s ProjectsWithThisUserAsContact=Projectes amb aquest usuari com a contacte +ProjectsWithThisContact=Projectes amb aquest contacte TasksWithThisUserAsContact=Tasques asignades a l'usuari ResourceNotAssignedToProject=No assignat a cap projecte ResourceNotAssignedToTheTask=No assignat a la tasca @@ -282,6 +283,7 @@ UsageOrganizeEvent=Ús: organització d'esdeveniments PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE=Classifica un projecte com a tancat quan s'hagin completat totes les seves tasques (progrés 100%%) PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Nota: els projectes existents amb totes les tasques amb un progrés del 100%% no es veuran afectats, i els haureu de tancar manualment. Així doncs, aquesta opció només afecta els projectes oberts. SelectLinesOfTimeSpentToInvoice=Seleccioneu les línies de temps que no es facturen i, a continuació, feu una acció massiva "Genera factura" per facturar-les -ProjectTasksWithoutTimeSpent=Project tasks without time spent -FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectTasksWithoutTimeSpent=Projecte tasques sense temps dedicat +FormForNewLeadDesc=Gràcies per omplir el següent formulari per contactar amb nosaltres. També podeu enviar-nos un correu electrònic directament a %s . +ProjectsHavingThisContact=Projectes amb aquest contacte StartDateCannotBeAfterEndDate=La data de fi no pot ser anterior a la d'inici diff --git a/htdocs/langs/ca_ES/propal.lang b/htdocs/langs/ca_ES/propal.lang index 389e36bbd82..10ca43312b5 100644 --- a/htdocs/langs/ca_ES/propal.lang +++ b/htdocs/langs/ca_ES/propal.lang @@ -89,11 +89,11 @@ IdProposal=ID del pressupost IdProduct=ID de producte PrParentLine=Línia de pressupost origen LineBuyPriceHT=Preu de compra sense impostos per línia -SignPropal=Accept proposal -RefusePropal=Refuse proposal -Sign=Sign -PropalAlreadySigned=Proposal already accepted -PropalAlreadyRefused=Proposal already refused -PropalSigned=Proposal accepted -PropalRefused=Proposal refused -ConfirmRefusePropal=Are you sure you want to refuse this commercial proposal? +SignPropal=Acceptar la proposta +RefusePropal=Rebutja la proposta +Sign=Signe +PropalAlreadySigned=Proposta ja acceptada +PropalAlreadyRefused=Proposta ja rebutjada +PropalSigned=S'accepta la proposta +PropalRefused=Proposta rebutjada +ConfirmRefusePropal=Esteu segur que voleu rebutjar aquesta proposta comercial? diff --git a/htdocs/langs/ca_ES/receptions.lang b/htdocs/langs/ca_ES/receptions.lang index ea61c9498c1..51a5290bc70 100644 --- a/htdocs/langs/ca_ES/receptions.lang +++ b/htdocs/langs/ca_ES/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Configuració de recepció de productes +ReceptionDescription=Gestió de recepció de venedors (crear documents de recepció) +ReceptionsSetup=Configuració de recepció del venedor RefReception=Ref. recepció Reception=En procés Receptions=Recepcions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Recepcions i rebuts d'aquesta comanda ReceptionsToValidate=Recepcions per a validar StatusReceptionCanceled=Cancel·lat StatusReceptionDraft=Esborrany -StatusReceptionValidated=Validat (productes a enviar o enviats) +StatusReceptionValidated=Validat (productes per a rebre o ja rebuts) +StatusReceptionValidatedToReceive=Validat (productes per a rebre) +StatusReceptionValidatedReceived=Validat (productes rebuts) StatusReceptionProcessed=Processats StatusReceptionDraftShort=Esborrany StatusReceptionValidatedShort=Validat @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Les estadístiques compten només les recepcions SendReceptionByEMail=Envia la recepció per correu electrònic SendReceptionRef=Presentació de la recepció %s ActionsOnReception=Esdeveniments de la recepció -ReceptionCreationIsDoneFromOrder=De moment, la creació d’una nova recepció es fa a partir del registre de la Comanda de compra. +ReceptionCreationIsDoneFromOrder=De moment, la creació d'una nova recepció es fa des de l'Ordre de Compra. ReceptionLine=Línia de recepció ProductQtyInReceptionAlreadySent=Quantitat de producte de comandes de vendes obertes ja enviades ProductQtyInSuppliersReceptionAlreadyRecevied=Quantitat de producte des de comandes de proveïdor obertes ja rebudes @@ -45,4 +48,7 @@ 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=Bying price +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/salaries.lang b/htdocs/langs/ca_ES/salaries.lang index 21bcaf07f1d..e21803b9e15 100644 --- a/htdocs/langs/ca_ES/salaries.lang +++ b/htdocs/langs/ca_ES/salaries.lang @@ -6,7 +6,7 @@ CREATE_NEW_SALARY_WITHOUT_AUTO_PAYMENT=De manera predeterminada, deixeu buida l' Salary=Sou Salaries=Sous NewSalary=Salari nou -AddSalary=Add salary +AddSalary=Afegeix el sou NewSalaryPayment=Fitxa de salari nova AddSalaryPayment=Afegeix pagament de sou SalaryPayment=Pagament de sous @@ -24,3 +24,4 @@ SalariesStatistics=Estadístiques de salaris SalariesAndPayments=Salaris i pagaments ConfirmDeleteSalaryPayment=Voleu eliminar aquest pagament del salari? FillFieldFirst=Empleneu primer el camp dels empleats +UpdateAmountWithLastSalary=Establiu l'import amb l'últim sou diff --git a/htdocs/langs/ca_ES/sendings.lang b/htdocs/langs/ca_ES/sendings.lang index e59c5f2cf38..da471544388 100644 --- a/htdocs/langs/ca_ES/sendings.lang +++ b/htdocs/langs/ca_ES/sendings.lang @@ -21,7 +21,7 @@ QtyShipped=Qt. enviada QtyShippedShort=Quant. env. QtyPreparedOrShipped=Quantitat preparada o enviada QtyToShip=Qt. a enviar -QtyToReceive=Quantitat per rebre +QtyToReceive=Quantitat per a rebre QtyReceived=Qt. rebuda QtyInOtherShipments=Quantitat a altres enviaments KeepToShip=Resta a enviar diff --git a/htdocs/langs/ca_ES/stocks.lang b/htdocs/langs/ca_ES/stocks.lang index 383bd1acd54..0e591c8dd1f 100644 --- a/htdocs/langs/ca_ES/stocks.lang +++ b/htdocs/langs/ca_ES/stocks.lang @@ -63,7 +63,7 @@ RuleForWarehouse=Regles per als magatzems WarehouseAskWarehouseOnThirparty=Establir un magatzem a tercers WarehouseAskWarehouseDuringPropal=Estableix un magatzem en pressupostos WarehouseAskWarehouseDuringOrder=Establir un magatzem a les comandes de venda -WarehouseAskWarehouseDuringProject=Set a warehouse on Projects +WarehouseAskWarehouseDuringProject=Establir un magatzem a Projectes UserDefaultWarehouse=Estableix un magatzem per Usuaris MainDefaultWarehouse=Magatzem predeterminat MainDefaultWarehouseUser=Utilitzeu un magatzem per defecte per a cada usuari @@ -96,7 +96,7 @@ RealStock=Estoc real RealStockDesc=L'estoc físic o real és l'estoc que tens actualment als teus magatzems/emplaçaments interns. RealStockWillAutomaticallyWhen=L'estoc real es modificarà d'acord amb aquesta regla (tal com es defineix al mòdul d'accions): VirtualStock=Estoc virtual -VirtualStockAtDate=Virtual stock at a future date +VirtualStockAtDate=Existències virtuals en una data futura VirtualStockAtDateDesc=Existències virtuals un cop finalitzades totes les comandes pendents que es preveu processar abans de la data escollida VirtualStockDesc=L’estoc virtual és l’estoc disponible calculat un cop tancades (comandes de compra rebudes, comandes de venda enviades, ordres de fabricació produïdes, etc.) totes les accions obertes/pendents (que afecten a les existències) AtDate=A la data @@ -207,8 +207,8 @@ INVENTORY_USE_INVENTORY_DATE_FOR_DATE_OF_MVT=Els moviments d’estoc tindran la inventoryChangePMPPermission=Permet canviar el valor PMP d'un producte ColumnNewPMP=Unitat PMP nova OnlyProdsInStock=No afegeixis producte sense estoc -TheoricalQty=Theorical qty -TheoricalValue=Theorical qty +TheoricalQty=Quantitat teòrica +TheoricalValue=Quantitat teòrica LastPA=Últim BP CurrentPA=Actual BP RecordedQty=Qtat. registrada @@ -241,7 +241,7 @@ StockAtDatePastDesc=Aquí podeu veure l'estoc (estoc real) en una data determina StockAtDateFutureDesc=Podeu veure aquí l'estoc (estoc virtual) en una data determinada en el futur CurrentStock=Estoc actual InventoryRealQtyHelp=Estableix el valor a 0 per a restablir la quantitat
Mantén el camp buit o elimina la línia per a mantenir-la sense canvis -UpdateByScaning=Complete real qty by scaning +UpdateByScaning=Completa la quantitat real escanejant UpdateByScaningProductBarcode=Actualització per escaneig (codi de barres de producte) UpdateByScaningLot=Actualització per escaneig (codi de barres lot|sèrie) DisableStockChangeOfSubProduct=Desactiva el canvi d'estoc de tots els subproductes d'aquest kit durant aquest moviment. @@ -251,23 +251,23 @@ SelectAStockMovementFileToImport=seleccioneu un fitxer de moviment de valors per InfoTemplateImport=El fitxer carregat ha de tenir aquest format (* són camps obligatoris):
Magatzem font * | Magatzem objectiu * | Producte * | Quantitat * | Número de lot / sèrie
El separador de caràcters CSV ha de ser " %s " LabelOfInventoryMovemement=Inventari %s ReOpen=Reobrir -ConfirmFinish=Confirmeu el tancament de l'inventari? Això generarà tots els moviments de les accions per actualitzar les accions a la quantitat real que vau introduir a l'inventari. +ConfirmFinish=Confirmeu el tancament de l'inventari? Això generarà tots els moviments d'estoc per a actualitzar el vostre estoc a la quantitat real que heu introduït a l'inventari. ObjectNotFound=no s'ha trobat %s MakeMovementsAndClose=Generar moviments i tancar -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Substituïu la quantitat real per la quantitat esperada ShowAllBatchByDefault=Per defecte, mostreu els detalls del lot a la pestanya "existències" del producte CollapseBatchDetailHelp=Podeu configurar la visualització predeterminada del detall del lot a la configuració del mòdul d'existències ErrorWrongBarcodemode=Mode de codi de barres desconegut ProductDoesNotExist=El producte no existeix -ErrorSameBatchNumber=Several record for the batch number were found in the inventory sheet. No way to know which one to increase. +ErrorSameBatchNumber=Es van trobar diversos registres per al número de lot al full d'inventari. No hi ha manera de saber quin augmentar. ProductBatchDoesNotExist=El producte amb lots o sèries no existeix ProductBarcodeDoesNotExist=El producte amb codi de barres no existeix WarehouseId=Identificador de magatzem WarehouseRef=Magatzem Ref -SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +SaveQtyFirst=Deseu primer les quantitats reals inventariades, abans de demanar la creació del moviment d'existències. InventoryStartedShort=Començada -ErrorOnElementsInventory=Operation canceled for the following reason: -ErrorCantFindCodeInInventory=Can't find the following code in inventory -QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. -StockChangeDisabled=Change on stock disabled -NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ErrorOnElementsInventory=Operació cancel·lada pel motiu següent: +ErrorCantFindCodeInInventory=No es pot trobar el codi següent a l'inventari +QtyWasAddedToTheScannedBarcode=Èxit!! La quantitat s'ha afegit a tots els codis de barres sol·licitats. Podeu tancar l'eina Escàner. +StockChangeDisabled=Canvi d'estoc desactivat +NoWarehouseDefinedForTerminal=No s'ha definit cap magatzem per a la terminal diff --git a/htdocs/langs/ca_ES/stripe.lang b/htdocs/langs/ca_ES/stripe.lang index f697565a49f..7d96342c51e 100644 --- a/htdocs/langs/ca_ES/stripe.lang +++ b/htdocs/langs/ca_ES/stripe.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - stripe StripeSetup=Configuració del mòdul Stripe -StripeDesc=Offer your customers an online payment page for payments with credit/debit cards via Stripe. This can be used to allow your customers to make ad-hoc payments or for payments related to a particular Dolibarr object (invoice, order, ...) +StripeDesc=Oferiu als vostres clients una pàgina de pagament en línia per als pagaments amb targetes de crèdit/dèbit mitjançant Stripe . Això es pot utilitzar per permetre als vostres clients fer pagaments ad hoc o per a pagaments relacionats amb un objecte Dolibarr concret (factura, comanda, ...) StripeOrCBDoPayment=Pagar amb targeta de crèdit o Stripe FollowingUrlAreAvailableToMakePayments=Les següents URL estan disponibles per a permetre a un client fer un cobrament en objectes de Dolibarr PaymentForm=Formulari de pagament @@ -13,7 +13,7 @@ STRIPE_PAYONLINE_SENDEMAIL=Notificació de correu electrònic després d'un inte Creditor=Beneficiari PaymentCode=Codi de pagament StripeDoPayment=Paga amb Stripe -YouWillBeRedirectedOnStripe=Se us redirigirà a la pàgina de Stripe assegurada per introduir la informació de la vostra targeta de crèdit +YouWillBeRedirectedOnStripe=Se us redirigirà a la pàgina de Stripe segura per a introduir la informació de la vostra targeta de crèdit Continue=Continuar ToOfferALinkForOnlinePayment=URL de pagament %s ToOfferALinkForOnlinePaymentOnOrder=URL per oferir una pàgina de pagament en línia %s per a una ordre de venda diff --git a/htdocs/langs/ca_ES/ticket.lang b/htdocs/langs/ca_ES/ticket.lang index 096cd88d783..7da1703c601 100644 --- a/htdocs/langs/ca_ES/ticket.lang +++ b/htdocs/langs/ca_ES/ticket.lang @@ -121,7 +121,7 @@ TicketsShowModuleLogoHelp=Activeu aquesta opció per a ocultar el mòdul de logo TicketsShowCompanyLogo=Mostra el logotip de l'empresa en la interfície pública TicketsShowCompanyLogoHelp=Activeu aquesta opció per a ocultar el logotip de l'empresa principal a les pàgines de la interfície pública TicketsEmailAlsoSendToMainAddress=També envieu una notificació a l’adreça de correu electrònic principal -TicketsEmailAlsoSendToMainAddressHelp=Activeu aquesta opció per enviar també un correu electrònic a l'adreça definida a la configuració "%s" (vegeu la pestanya "%s") +TicketsEmailAlsoSendToMainAddressHelp=Activeu aquesta opció per a enviar també un correu electrònic a l'adreça definida a la configuració "%s" (vegeu la pestanya "%s") TicketsLimitViewAssignedOnly=Restringir la visualització als tiquets assignats a l'usuari actual (no és efectiu per als usuaris externs, sempre estarà limitat al tercer de qui depengui) TicketsLimitViewAssignedOnlyHelp=Només es veuran les entrades assignades a l'usuari actual. No s'aplica a un usuari amb drets de gestió de tiquets. TicketsActivatePublicInterface=Activar la interfície pública @@ -318,7 +318,7 @@ BoxTicketLastXDays=Nombre de bitllets nous per dies els darrers %s dies BoxTicketLastXDayswidget = Nombre de bitllets nous per dies els darrers X dies BoxNoTicketLastXDays=No hi ha entrades noves els darrers %s dies BoxNumberOfTicketByDay=Nombre de bitllets nous per dia -BoxNewTicketVSClose=Number of tickets versus closed tickets (today) +BoxNewTicketVSClose=Nombre d'entrades versus entrades tancades (avui) TicketCreatedToday=Entrada creada avui TicketClosedToday=Entrada tancada avui KMFoundForTicketGroup=Hem trobat temes i preguntes més freqüents que poden respondre a la vostra pregunta, gràcies a comprovar-los abans d'enviar el bitllet diff --git a/htdocs/langs/ca_ES/trips.lang b/htdocs/langs/ca_ES/trips.lang index 444a5f9589a..75151da5644 100644 --- a/htdocs/langs/ca_ES/trips.lang +++ b/htdocs/langs/ca_ES/trips.lang @@ -112,7 +112,7 @@ ConfirmCloneExpenseReport=Estàs segur de voler clonar aquest informe de despese ExpenseReportsIk=Configuració de les despeses de quilometratge ExpenseReportsRules=Normes d'informe de despeses ExpenseReportIkDesc=Podeu modificar el càlcul de les despeses de quilometratge per categoria i abast, els quals s'han definit anteriorment. d és la distància en quilòmetres -ExpenseReportRulesDesc=You can define max amount rules for expense reports. These rules will be applied when a new expense is added to an expense report +ExpenseReportRulesDesc=Podeu definir regles d'import màxim per als informes de despeses. Aquestes regles s'aplicaran quan s'afegeixi una nova despesa a un informe de despeses expenseReportOffset=Decàleg expenseReportCoef=Coeficient expenseReportTotalForFive=Exemple amb d = 5 @@ -127,19 +127,19 @@ ExpenseReportDomain=Domini a aplicar ExpenseReportLimitOn=Limitar a ExpenseReportDateStart=Data inici ExpenseReportDateEnd=Data fi -ExpenseReportLimitAmount=Max amount -ExpenseReportRestrictive=Exceeding forbidden +ExpenseReportLimitAmount=Import màxim +ExpenseReportRestrictive=Superació prohibida AllExpenseReport=Tots els tipus d’informe de despeses OnExpense=Línia de despesa ExpenseReportRuleSave=S'ha desat la regla de l'informe de despeses ExpenseReportRuleErrorOnSave=Error: %s RangeNum=Rang %d -ExpenseReportConstraintViolationError=Max amount exceeded (rule %s): %s is higher than %s (Exceeding forbidden) +ExpenseReportConstraintViolationError=S'ha superat la quantitat màxima (regla %s): %s és superior a %s (excedit prohibit) byEX_DAY=per dia (limitació a %s) byEX_MON=per mes (limitació a %s) byEX_YEA=per any (limitació a %s) byEX_EXP=per línia (limitació a %s) -ExpenseReportConstraintViolationWarning=Max amount exceeded (rule %s): %s is higher than %s (Exceeding authorized) +ExpenseReportConstraintViolationWarning=S'ha superat l'import màxim (regla %s): %s és superior a %s (supera l'autoritzat) nolimitbyEX_DAY=per dia (sense límits) nolimitbyEX_MON=per mes (sense límits) nolimitbyEX_YEA=per any (sense límits) diff --git a/htdocs/langs/ca_ES/website.lang b/htdocs/langs/ca_ES/website.lang index fa7927a9f4c..118e8e38909 100644 --- a/htdocs/langs/ca_ES/website.lang +++ b/htdocs/langs/ca_ES/website.lang @@ -45,7 +45,7 @@ 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: YouCanAlsoTestWithPHPS= Utilitzeu-lo amb el servidor incrustat de PHP
Al 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 de hosting de Dolibarr
Si no teniu disponible un servidor web com Apache o NGinx a Internet, podeu exportar i importar el vostre lloc web a una altra instància de Dolibarr proporcionada per un altre proveïdor d'allotjament de Dolibarr que ofereixi una integració completa amb el mòdul del lloc web. Podeu trobar una llista d'alguns proveïdors d'allotjament Dolibarr a https://saas.dolibarr.org +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 ReadPerm=Llegit WritePerm=Escriu @@ -60,7 +60,7 @@ YouCanEditHtmlSourceckeditor=Podeu editar el codi font HTML usant el botó "Codi YouCanEditHtmlSource=
Podeu incloure el codi PHP en aquesta font mitjançant les etiquetes <? php? > a0a65d071f6fc9z Estan disponibles les variables globals següents: $ conf, $ db, $ mysoc, $ user, $ lloc web, $ pàgina web, $ weblangs, $ pagelangs.

També podeu incloure contingut d'una altra pàgina / contenidor amb la següent sintaxi:
a03900dfdf ? >

Vostè pot 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 afegir un vincle a una altra pàgina, utilitzeu la sintaxi:
<a href = "alias_of_page_to_link_to.php" >mylink<a>

Per 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 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 #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 de codi HTML o dinàmic disponibles a la documentació wiki
. +YouCanEditHtmlSourceMore=
Més exemples d'HTML o codi dinàmic disponibles a la documentació wiki
. ClonePage=Clona la pàgina/contenidor CloneSite=Clona el lloc SiteAdded=S'ha afegit el lloc web diff --git a/htdocs/langs/ca_ES/withdrawals.lang b/htdocs/langs/ca_ES/withdrawals.lang index 6c0831a2d30..fdcbe9b1f36 100644 --- a/htdocs/langs/ca_ES/withdrawals.lang +++ b/htdocs/langs/ca_ES/withdrawals.lang @@ -48,7 +48,7 @@ ThirdPartyBankCode=Codi bancari de tercers NoInvoiceCouldBeWithdrawed=Cap factura s'ha carregat amb èxit. Comproveu que els tercers de les factures tenen un IBAN vàlid i que IBAN té un RUM (Referència de mandat exclusiva) amb mode %s. WithdrawalCantBeCreditedTwice=Aquesta domiciliació ja està marcada com a cobrada; això no es pot fer dues vegades, ja que això podria generar duplicats de pagaments i entrades bancàries. ClassCredited=Classifica com "Abonada" -ClassDebited=Classify debited +ClassDebited=Classifica els domiciliats ClassCreditedConfirm=Esteu segur de voler classificar aquesta domiciliació com abonada al seu compte bancari? TransData=Data enviament TransMetod=Mètode enviament @@ -117,7 +117,7 @@ WithdrawRequestErrorNilAmount=No és possible crear una domiciliació sense impo SepaMandate=Mandat de domiciliació bancària SEPA SepaMandateShort=Mandat SEPA PleaseReturnMandate=Si us plau retorna aquest formulari de mandat per correu electrònic a %s o per correu postal a -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=En signar aquest formulari de mandat, autoritzeu (A) %s a enviar instruccions al vostre banc per carregar el vostre compte i (B) al vostre banc a domiciliar el vostre compte d'acord amb les instruccions de %s. Com a part dels vostres drets, teniu dret a un reemborsament del vostre banc segons els termes i condicions del vostre acord amb el vostre banc. Els vostres drets respecte al mandat anterior s'expliquen en un comunicat que podeu obtenir al vostre banc. CreditorIdentifier=Identificador del creditor CreditorName=Nom del creditor SEPAFillForm=(B) Si us plau completa tots els camps marcats amb * @@ -152,5 +152,5 @@ ModeWarning=No s'ha establert l'opció de treball en real, ens aturarem després ErrorCompanyHasDuplicateDefaultBAN=L’empresa amb l’identificador %s té més d’un compte bancari per defecte. No hi ha manera de saber quin utilitzar. ErrorICSmissing=Falta ICS al compte bancari %s TotalAmountOfdirectDebitOrderDiffersFromSumOfLines=La quantitat total de l'ordre de domiciliació bancària difereix de la suma de línies -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 +WarningSomeDirectDebitOrdersAlreadyExists=Avís: ja hi ha algunes comandes de domiciliació bancària pendents (%s) sol·licitades per un import de %s +WarningSomeCreditTransferAlreadyExists=Avís: ja hi ha una transferència de crèdit pendent (%s) sol·licitada per un import de %s diff --git a/htdocs/langs/ca_ES/workflow.lang b/htdocs/langs/ca_ES/workflow.lang index b1296f2b280..4465cf9ca53 100644 --- a/htdocs/langs/ca_ES/workflow.lang +++ b/htdocs/langs/ca_ES/workflow.lang @@ -14,9 +14,13 @@ descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Classifica les comandes de cli descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Classifica les comandes de client vinculades d'origen com a facturades quan la factura del client es posi com a pagada (i si l'import de la factura és igual a l'import total de les comandes vinculades) descWORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING=Classifica les comandes vinculades com a enviades quan l'expedició es validi (i si la quantitat enviada per totes les expedicions és igual que la comanda a actualitzar) descWORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING_CLOSED=Classifiqueu la comanda de venda d'origen enllaçada com a enviada quan es tanca un enviament (i si la quantitat enviada per tots els enviaments és la mateixa que a l'ordre d'actualització) -# Autoclassify purchase order +# Autoclassify purchase proposal descWORKFLOW_ORDER_CLASSIFY_BILLED_SUPPLIER_PROPOSAL=Classifica el pressupost de proveïdor vinculat com facturat quan la factura de proveïdor és validada (i si l'import de la factura és igual a l'import total del pressupost vinculat) +# Autoclassify purchase order descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER=Classifica la comanda de proveïdor vinculada com facturada quan la factura de proveïdor és validada (i si l'import de la factura és igual a l'import total de la comanda vinculada) +descWORKFLOW_ORDER_CLASSIFY_RECEIVED_RECEPTION=Classifica l'ordre de compra d'origen enllaçat com a rebut quan es valida una recepció (i si la quantitat rebuda per totes les recepcions és la mateixa que a l'ordre de compra per actualitzar) +descWORKFLOW_ORDER_CLASSIFY_RECEIVED_RECEPTION_CLOSED=Classifica l'ordre de compra d'origen enllaçat com a rebut quan es tanca una recepció (i si la quantitat rebuda per totes les recepcions és la mateixa que a l'ordre de compra per actualitzar) +# Autoclassify purchase invoice descWORKFLOW_BILL_ON_RECEPTION=Classifica les recepcions com a "facturades" quan es valida una comanda de proveïdor enllaçada # Autoclose intervention descWORKFLOW_TICKET_CLOSE_INTERVENTION=Tanca totes les intervencions vinculades quan es tanca un tiquet diff --git a/htdocs/langs/ca_ES/zapier.lang b/htdocs/langs/ca_ES/zapier.lang index 731820a7373..8ec34baedaf 100644 --- a/htdocs/langs/ca_ES/zapier.lang +++ b/htdocs/langs/ca_ES/zapier.lang @@ -18,4 +18,4 @@ ModuleZapierForDolibarrDesc = Mòdul Zapier per a Dolibarr ZapierForDolibarrSetup=Configuració de Zapier per a Dolibarr ZapierDescription=Interfície amb Zapier ZapierAbout=Quant al mòdul Zapier -ZapierSetupPage=No cal fer cap configuració al costat de Dolibarr per utilitzar Zapier. Tot i això, heu de generar i publicar un paquet a zapier per poder utilitzar Zapier amb Dolibarr. Consulteu la documentació aquesta pàgina wiki . +ZapierSetupPage=No cal fer cap configuració al costat de Dolibarr per a utilitzar Zapier. Tot i això, heu de generar i publicar un paquet a zapier per a poder utilitzar Zapier amb Dolibarr. Consulteu la documentació aquesta pàgina wiki . diff --git a/htdocs/langs/cs_CZ/admin.lang b/htdocs/langs/cs_CZ/admin.lang index a03135f0814..5934fa549c3 100644 --- a/htdocs/langs/cs_CZ/admin.lang +++ b/htdocs/langs/cs_CZ/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Nadace Version=Verze Publisher=Vydavatel @@ -343,7 +343,7 @@ StepNb=Krok %s FindPackageFromWebSite=Najděte balíček, který poskytuje funkce, které potřebujete (například na oficiálním webu %s). DownloadPackageFromWebSite=Stáhnout balíček (například z oficiálního webu %s). UnpackPackageInDolibarrRoot=Rozbalte soubor balíčku do adresáře, vyhrazenému pro externí moduly: %s -UnpackPackageInModulesRoot=Chcete-li nasadit / nainstalovat externí modul, rozbalte / rozbalte zabalené soubory do adresáře serveru určeného pro externí moduly:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Zavedení modulu je dokončeno. Musíte však povolit a nastavit modul v aplikaci přejděte na moduly nastavení stránky: %s . NotExistsDirect=Alternativní kořenový adresář není definován.
InfDirAlt=Od verze 3 je možné definovat alternativní kořenovou složku. To umožňuje ukládat na stejné místo plug-iny a vlastní šablony.
Stačí vytvořit adresář v kořenovém adresáři Dolibarr (např.: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Instalace nebo sestavení externího modulu z aplikace HighlightLinesOnMouseHover=Zvýrazněte řádky tabulky, když pohyb myší projde HighlightLinesColor=Zvýrazněte barvu čáry, když myš přejde (použijte "ffffff"aby nebylo zvýrazněno) HighlightLinesChecked=Zvýrazněte barvu čáry, když je zaškrtnuta (pro zvýraznění použijte "ffffff") +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Barva textu titulku stránky LinkColor=Barva odkazů PressF5AfterChangingThis=Stisknutím klávesy CTRL + F5 na klávesnici nebo vymazat mezipaměť prohlížeče Po změně této hodnoty, aby bylo účinné @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/cs_CZ/bills.lang b/htdocs/langs/cs_CZ/bills.lang index 191776157ad..32fd1026747 100644 --- a/htdocs/langs/cs_CZ/bills.lang +++ b/htdocs/langs/cs_CZ/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Zprávy o platbách PaymentsAlreadyDone=Provedené platby PaymentsBackAlreadyDone=Vrácení peněz již bylo provedeno PaymentRule=Pravidlo platby -PaymentMode=Způsob platby -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debetní / kreditní karty -PaymentTypePP=PayPal -IdPaymentMode=Typ platby (id) -CodePaymentMode=Typ platby (kód) -LabelPaymentMode=Typ platby (štítek) -PaymentModeShort=Způsob platby +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Platební termín PaymentConditions=Platební podmínky PaymentConditionsShort=Platební podmínky @@ -280,6 +279,7 @@ SetMode=Nastavte typ platby SetRevenuStamp=Sada razítko příjmy Billed=Účtováno RecurringInvoices=opakující faktury +RecurringInvoice=Recurring invoice RepeatableInvoice=Šablona faktury RepeatableInvoices=Šablony faktur Repeatable=Šablona @@ -449,6 +449,8 @@ PaymentTypeTRA=šek PaymentTypeShortTRA=Návrh PaymentTypeFAC=Faktor PaymentTypeShortFAC=Faktor +PaymentTypeDC=Debetní / kreditní karty +PaymentTypePP=PayPal BankDetails=Bankovní spojení BankCode=Kód banky DeskCode=Kód pobočky @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/cs_CZ/blockedlog.lang b/htdocs/langs/cs_CZ/blockedlog.lang index 2637c5675ae..157609f3388 100644 --- a/htdocs/langs/cs_CZ/blockedlog.lang +++ b/htdocs/langs/cs_CZ/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Nezměnitelné záznamy ShowAllFingerPrintsMightBeTooLong=Zobrazit všechny archivované záznamy (mohou být dlouhé) ShowAllFingerPrintsErrorsMightBeTooLong=Zobrazit všechny neplatné protokoly archivu (mohou být dlouhé) DownloadBlockChain=Stažení otisků prstů -KoCheckFingerprintValidity=Archivovaná položka protokolu není platná. To znamená, že někdo (hacker?) upravil některá data tohoto záznamu poté, co byl zaznamenán, nebo vymazal předchozí archivovaný záznam (zkontrolujte, zda existuje řádek s předchozím #). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archivovaný záznam protokolu je platný. Údaje na tomto řádku nebyly změněny a záznam je následující. OkCheckFingerprintValidityButChainIsKo=Archivovaný protokol se zdá být v porovnání s předchozím protokolem platný, ale řetězec byl dříve poškozen. AddedByAuthority=Uloženo do vzdálené autority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=Seznam zemí, kde je použití tohoto modu OnlyNonValid=Neplatná TooManyRecordToScanRestrictFilters=Příliš mnoho záznamů pro skenování / analýzu. Omezte prosím seznam s restriktivnějšími filtry. RestrictYearToExport=Omezit měsíc / rok pro export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/cs_CZ/errors.lang b/htdocs/langs/cs_CZ/errors.lang index 3185f5fe7ac..e530b0dbba3 100644 --- a/htdocs/langs/cs_CZ/errors.lang +++ b/htdocs/langs/cs_CZ/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Tento kontakt je již definován jako ErrorCashAccountAcceptsOnlyCashMoney=Tento bankovní účet je hotovostní účet, takže přijímá pouze platby typu hotovosti. ErrorFromToAccountsMustDiffers=Zdrojové a cílové bankovní účty musí být různé. ErrorBadThirdPartyName=Špatná hodnota názvu subjektu nebo třetí strany +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=%s je povinné +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Špatná syntaxe kódu zákazníka ErrorBadBarCodeSyntax=Špatná syntaxe pro čárový kód. Možná jste nastavili špatný typ čárového kódu nebo jste definovali masku čárového kódu pro číslování, které nesouhlasí s naskenovanou hodnotou. ErrorCustomerCodeRequired=Je vyžadován kód zákazníka @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Váš parametr PHP upload_max_filesize (%s) je vyšší než parametr PHP post_max_size (%s). Toto není konzistentní nastavení. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/cs_CZ/eventorganization.lang b/htdocs/langs/cs_CZ/eventorganization.lang index 434298cc595..d3d9a2ad7ad 100644 --- a/htdocs/langs/cs_CZ/eventorganization.lang +++ b/htdocs/langs/cs_CZ/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/cs_CZ/holiday.lang b/htdocs/langs/cs_CZ/holiday.lang index ace8f3b319e..a295166d4a6 100644 --- a/htdocs/langs/cs_CZ/holiday.lang +++ b/htdocs/langs/cs_CZ/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Svátky ke schválení NobodyHasPermissionToValidateHolidays=Nikdo nemá povolení k ověření svátků HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/cs_CZ/knowledgemanagement.lang b/htdocs/langs/cs_CZ/knowledgemanagement.lang index 4e4655d818f..3ca187fe2d7 100644 --- a/htdocs/langs/cs_CZ/knowledgemanagement.lang +++ b/htdocs/langs/cs_CZ/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/cs_CZ/mrp.lang b/htdocs/langs/cs_CZ/mrp.lang index 345a866d4bb..de13de20ca1 100644 --- a/htdocs/langs/cs_CZ/mrp.lang +++ b/htdocs/langs/cs_CZ/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Opravdu chcete klonovat výrobní objednávku %s? ManufacturingEfficiency=Účinnost výroby ConsumptionEfficiency=Účinnost spotřeby -ValueOfMeansLoss=Hodnota 0,95 znamená průměrně ztrátu během výroby ve výši 5%% +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Hodnota 0,95 znamená průměrně ztrátu vyrobeného produktu ve výši 5%% DeleteBillOfMaterials=Odstranit kusovník DeleteMo=Smazat výrobní zakázku diff --git a/htdocs/langs/cs_CZ/other.lang b/htdocs/langs/cs_CZ/other.lang index 1aa196e21be..b9baa429d2f 100644 --- a/htdocs/langs/cs_CZ/other.lang +++ b/htdocs/langs/cs_CZ/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Projekt vytvořený sběratelem e-mailů z e-mail TicketCreatedByEmailCollector=Lístek vytvořený sběratelem e-mailů z e-mailu MSGID %s OpeningHoursFormatDesc=Pomocí a - oddělte otevírací a zavírací dobu.
Pomocí mezery zadejte různé rozsahy.
Příklad: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exportní plocha diff --git a/htdocs/langs/cs_CZ/products.lang b/htdocs/langs/cs_CZ/products.lang index 9cb6f6a907d..0643566beb6 100644 --- a/htdocs/langs/cs_CZ/products.lang +++ b/htdocs/langs/cs_CZ/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/cs_CZ/projects.lang b/htdocs/langs/cs_CZ/projects.lang index 614ddbeaca4..c8b1ec2f289 100644 --- a/htdocs/langs/cs_CZ/projects.lang +++ b/htdocs/langs/cs_CZ/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Vstup za měsíc InputDetail=Vstupní detail TimeAlreadyRecorded=Toto je čas strávený již zaznamenaný pro tento úkol / den a uživatel %s ProjectsWithThisUserAsContact=Projekty s tímto uživatelem jako kontakt +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Úkoly přidělené tomuto uživateli ResourceNotAssignedToProject=Není přiřazen k projektu ResourceNotAssignedToTheTask=Není přiřazen k úkolu @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=Datum ukončení nemůže být před datem zahájení diff --git a/htdocs/langs/cs_CZ/receptions.lang b/htdocs/langs/cs_CZ/receptions.lang index 8d819e61ae0..6cc7811cc2f 100644 --- a/htdocs/langs/cs_CZ/receptions.lang +++ b/htdocs/langs/cs_CZ/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Nastavení recepce produktu +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. recepce Reception=Recepce Receptions=Recepce @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Recepce a potvrzení objednávky ReceptionsToValidate=Recepce k ověření StatusReceptionCanceled=Zrušený StatusReceptionDraft=Návrh -StatusReceptionValidated=Ověřené (výrobky pro dodávku nebo již dodány) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Zpracované StatusReceptionDraftShort=Návrh StatusReceptionValidatedShort=Ověřeno @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistiky prováděné na recepcích byly ověř SendReceptionByEMail=Poslat recepci e-mailem SendReceptionRef=Předložení příjmu %s ActionsOnReception=Události na recepci -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Linka recepce ProductQtyInReceptionAlreadySent=Množství již odeslaných produktů z objednávek zákazníka ProductQtyInSuppliersReceptionAlreadyRecevied=Množství produktu již obdrženo od otevřené dodavatelské objednávky @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Šablony dokumentů pro recepce NoMorePredefinedProductToDispatch=Žádné další předdefinované produkty k odeslání ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/da_DK/admin.lang b/htdocs/langs/da_DK/admin.lang index 379f04aa920..0f638c2d1ab 100644 --- a/htdocs/langs/da_DK/admin.lang +++ b/htdocs/langs/da_DK/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Fed reference og periode i PDF -BoldLabelOnPDF=Fed etiket i PDF +BoldRefAndPeriodOnPDF=Udskriv reference og periode for produktvare i PDF +BoldLabelOnPDF=Udskriv produktetiketten med fed skrift i PDF Foundation=Fundament Version=Version Publisher=Forlægger @@ -343,7 +343,7 @@ StepNb=Trin %s FindPackageFromWebSite=Find en pakke, der indeholder de funktioner, du har brug for (for eksempel på den officielle hjemmeside %s). DownloadPackageFromWebSite=Download pakke (for eksempel fra den officielle hjemmeside %s). UnpackPackageInDolibarrRoot=Udpak / pakk de pakkede filer ud i din Dolibarr-serverkatalog: %s -UnpackPackageInModulesRoot=Hvis du vil installere / installere et eksternt modul, skal du pakke / pakke de pakkede filer ud i serverkataloget dedikeret til eksterne moduler:
%s +UnpackPackageInModulesRoot=For at implementere/installere et eksternt modul skal du udpakke/udpakke arkivfilen i serverbiblioteket dedikeret til eksterne moduler:
%s SetupIsReadyForUse=Modulets implementering er afsluttet. Du skal dog aktivere og opsætte modulet i din ansøgning ved at gå til sideopsætningsmodulerne: %s . NotExistsDirect=Den alternative rodmappen er ikke defineret til en eksisterende mappe.
InfDirAlt=Siden version 3, er det muligt at definere en alternativ root directory. Dette giver dig mulighed for at gemme, til en dedikeret mappe, plugins og tilpassede skabeloner.
du skal Bare oprette en mappe i roden af Dolibarr (f.eks: brugerdefineret).
@@ -893,11 +893,11 @@ Permission701=Læs donationer Permission702=Opret/rediger donationer Permission703=Slet donationer Permission771=Læs omkostningsrapporter (din og dine underordnede) -Permission772=Create/modify expense reports (for you and your subordinates) +Permission772=Opret/rediger udgiftsrapporter (til dig og dine underordnede) Permission773=Slet udgiftsrapporter Permission775=Godkendelse af udgiftsrapporter Permission776=Betalingsomkostningsrapporter -Permission777=Read all expense reports (even those of user not subordinates) +Permission777=Læs alle udgiftsrapporter (selv dem fra brugere, der ikke er underordnede) Permission778=Opret / rediger udgiftsrapporter for alle Permission779=Eksportudgiftsrapporter Permission1001=Læs bestande @@ -965,7 +965,7 @@ Permission4001=Læs færdigheder/job/stilling Permission4002=Opret/ændre færdigheder/job/position Permission4003=Slet færdighed/job/stilling Permission4020=Læs evalueringer -Permission4021=Create/modify your evaluation +Permission4021=Opret/rediger din evaluering Permission4022=Valider evaluering Permission4023=Slet evaluering Permission4030=Se sammenligningsmenu @@ -976,9 +976,9 @@ Permission10005=Slet webstedsindhold Permission20001=Læs tilladelsesforespørgsler (din orlov og dine underordnede) Permission20002=Opret / rediger dine anmodninger om orlov (din ferie og dine underordnede) Permission20003=Slet permitteringsforespørgsler -Permission20004=Read all leave requests (even those of user not subordinates) -Permission20005=Create/modify leave requests for everybody (even those of user not subordinates) -Permission20006=Administer leave requests (setup and update balance) +Permission20004=Læs alle orlovsanmodninger (selv dem fra brugere, der ikke er underordnede) +Permission20005=Opret/rediger orlovsanmodninger for alle (selv dem fra brugere, der ikke er underordnede) +Permission20006=Administrer orlovsanmodninger (opsætning og opdatering af saldo) Permission20007=Godkend orlovsanmodninger Permission23001=Read Scheduled job Permission23002=Create/update Scheduled job @@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installation eller opbygning af et eksternt modul fra HighlightLinesOnMouseHover=Fremhæv tabel linjer, når musen flytter passerer over HighlightLinesColor=Fremhæv farve på linjen, når musen passerer (brug 'ffffff' til intet højdepunkt) HighlightLinesChecked=Fremhæv farve på linjen, når den er markeret (brug 'ffffff' til ikke at fremhæve) +BtnActionColor=Farve på handlingsknappen +TextBtnActionColor=Tekstfarve på handlingsknappen TextTitleColor=Tekstfarve på sidetitel LinkColor=Farve af links PressF5AfterChangingThis=Tryk på CTRL + F5 på tastaturet eller ryd din browserens cache efter at have ændret denne værdi for at få den effektiv @@ -2216,3 +2218,5 @@ NativeModules=Native moduler NoDeployedModulesFoundWithThisSearchCriteria=Ingen moduler fundet til disse søgekriterier API_DISABLE_COMPRESSION=Deaktiver komprimering af API-svar EachTerminalHasItsOwnCounter=Hver terminal bruger sin egen tæller. +FillAndSaveAccountIdAndSecret=Udfyld og gem først konto-id og hemmeligkode +PreviousHash=Tidligere hash diff --git a/htdocs/langs/da_DK/bills.lang b/htdocs/langs/da_DK/bills.lang index e2c1b61cb89..5cf9b6614d9 100644 --- a/htdocs/langs/da_DK/bills.lang +++ b/htdocs/langs/da_DK/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Betalingsrapporter PaymentsAlreadyDone=Betalinger allerede udført PaymentsBackAlreadyDone=Tilbagebetaling allerede udført PaymentRule=Betalingsregel -PaymentMode=Betalings type -DefaultPaymentMode=Standard betalingstype +PaymentMode=Betalingsmetode +PaymentModes=Betalingsmetoder +DefaultPaymentMode=Standard betalingsmetode DefaultBankAccount=Standard bankkonto -PaymentTypeDC=Debet / Kreditkort -PaymentTypePP=PayPal -IdPaymentMode=Betalingstype (id) -CodePaymentMode=Betalingstype (kode) -LabelPaymentMode=Betalingstype (etiket) -PaymentModeShort=Betalings type +IdPaymentMode=Betalingsmetode (id) +CodePaymentMode=Betalingsmetode (kode) +LabelPaymentMode=Betalingsmetode (label) +PaymentModeShort=Betalingsmetode PaymentTerm=Betalingsbetingelser PaymentConditions=Betalingsbetingelser PaymentConditionsShort=Betalingsbetingelser @@ -280,6 +279,7 @@ SetMode=Indstil betalingstype SetRevenuStamp=Indstil omsætningsstempel Billed=Billed RecurringInvoices=Tilbagevendende fakturaer +RecurringInvoice=Tilbagevendende faktura RepeatableInvoice=Fakturaskabelon RepeatableInvoices=Fakturerskabelon Repeatable=Skabelon @@ -449,6 +449,8 @@ PaymentTypeTRA=Bankudkast PaymentTypeShortTRA=Udkast til PaymentTypeFAC=Faktor PaymentTypeShortFAC=Faktor +PaymentTypeDC=Debet / Kreditkort +PaymentTypePP=PayPal BankDetails=Bankoplysninger BankCode=Bankkode DeskCode=Filialkode @@ -604,3 +606,4 @@ SituationTotalProgress=Samlet fremskridt %d %% SearchUnpaidInvoicesWithDueDate=Søg efter ubetalte fakturaer med en forfaldsdato = %s NoPaymentAvailable=Ingen betaling tilgængelig for %s PaymentRegisteredAndInvoiceSetToPaid=Betaling registreret og faktura %s indstillet til betalt +SendEmailsRemindersOnInvoiceDueDate=Send påmindelse på mail for ubetalte fakturaer diff --git a/htdocs/langs/da_DK/blockedlog.lang b/htdocs/langs/da_DK/blockedlog.lang index cc7298bf441..6ed7c2320d6 100644 --- a/htdocs/langs/da_DK/blockedlog.lang +++ b/htdocs/langs/da_DK/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Uændrede logfiler ShowAllFingerPrintsMightBeTooLong=Vis alle arkiverede logfiler (kan være lang) ShowAllFingerPrintsErrorsMightBeTooLong=Vis alle ikke-gyldige arkivlogfiler (kan være lange) DownloadBlockChain=Download fingeraftryk -KoCheckFingerprintValidity=Arkiveret logpost er ikke gyldig. Det betyder, at nogen (en hacker?) Har ændret nogle data fra denne post, efter at de blev optaget, eller har slettet den forrige arkiverede post (kontroller, at linjen med forrige # findes). +KoCheckFingerprintValidity=Arkiveret log post er ikke gyldig. Det betyder, at nogen (en hacker?) Har ændret nogle data i denne post, efter at den blev optaget, eller har slettet den tidligere arkiverede post (kontroller, at linjen med forrige # findes) eller har ændret kontrolsum for den tidligere post. OkCheckFingerprintValidity=Den arkiverede log optegnelse er gyldig. Dataene på denne linje blev ikke ændret, og posten følger den foregående. OkCheckFingerprintValidityButChainIsKo=Arkiveret log synes at være gyldig i forhold til den foregående, men kæden blev ødelagt tidligere. AddedByAuthority=Gemt i ekstern myndighed @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=Liste over lande, hvor brugen af ​​det OnlyNonValid=Ikke-gyldigt TooManyRecordToScanRestrictFilters=For mange poster, der skal scannes / analyseres. Begræns venligst listen med mere restriktive filtre. RestrictYearToExport=Begræns måned / år til eksport +BlockedLogEnabled=System til at spore hændelser i logfiler, der ikke kan ændres, er blevet aktiveret +BlockedLogDisabled=Systemet til at spore hændelser i logfiler, der ikke kan ændres, er blevet deaktiveret, efter at der er foretaget nogle optagelser. Vi gemte et særligt fingeraftryk for at spore kæden som knækket +BlockedLogDisabledBis=System til at spore hændelser i logfiler, der ikke kan ændres, er blevet deaktiveret. Dette er muligt, fordi der ikke er blevet registreret endnu. diff --git a/htdocs/langs/da_DK/companies.lang b/htdocs/langs/da_DK/companies.lang index 61988ba219c..b5c2e17f1b4 100644 --- a/htdocs/langs/da_DK/companies.lang +++ b/htdocs/langs/da_DK/companies.lang @@ -157,15 +157,15 @@ ProfId3CL=- ProfId4CL=- ProfId5CL=- ProfId6CL=- -ProfId1CM=Id. prof. 1 (Trade Register) -ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1CM=Id. prof. 1 (handelsregister) +ProfId2CM=Id. prof. 2 (skatteyder nr.) +ProfId3CM=Id. prof. 3 (oprettelsesdekret) ProfId4CM=- ProfId5CM=- ProfId6CM=- -ProfId1ShortCM=Trade Register -ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation +ProfId1ShortCM=Handelsregister +ProfId2ShortCM=Skatteyder nr. +ProfId3ShortCM=Dekret om oprettelse ProfId4ShortCM=- ProfId5ShortCM=- ProfId6ShortCM=- diff --git a/htdocs/langs/da_DK/errors.lang b/htdocs/langs/da_DK/errors.lang index 61f5197ab73..f447526798e 100644 --- a/htdocs/langs/da_DK/errors.lang +++ b/htdocs/langs/da_DK/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Denne kontaktperson er allerede defin ErrorCashAccountAcceptsOnlyCashMoney=Denne bankkonto er et kontant-konto, så det accepterer betaling af type cash only. ErrorFromToAccountsMustDiffers=Kilde og mål bankkonti skal være anderledes. ErrorBadThirdPartyName=Dårlig værdi for tredjeparts navn +ForbiddenBySetupRules=Forbudt ifølge opsætnings regler ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=Regnskabskoden for kunden %s er obligatorisk ErrorBadCustomerCodeSyntax=Bad syntaks for kunde-kode ErrorBadBarCodeSyntax=Dårlig syntaks til stregkode. Måske angiver du en dårlig stregkodetype, eller definerer du en stregkodemaske til nummerering, der ikke svarer til den scannede værdi. ErrorCustomerCodeRequired=Kundekode kræves @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Ikke i ordbogen om betalingsbetingelser, b ErrorIsNotADraft=%s er ikke et udkast ErrorExecIdFailed=Kan ikke udføre kommandoen "id" ErrorBadCharIntoLoginName=Ikke godkendt tegn i login-navnet +ErrorRequestTooLarge=Fejl, anmodningen er for stor # 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. @@ -315,6 +318,7 @@ RequireAtLeastXString = Kræver mindst %s karakter (er) RequireXStringMax = Kræver maks. Tegn på %s RequireAtLeastXDigits = Kræver mindst %s ciffer (er) RequireXDigitsMax = Kræver %s ciffer (er) maks +RequireValidNumeric = Kræver en numerisk værdi RequireValidEmail = E -mailadressen er ikke gyldig RequireMaxLength = Længden skal være mindre end %s tegn RequireMinLength = Længden skal være mere end %s char (s) diff --git a/htdocs/langs/da_DK/eventorganization.lang b/htdocs/langs/da_DK/eventorganization.lang index 7639ccb1363..16d1d57cf92 100644 --- a/htdocs/langs/da_DK/eventorganization.lang +++ b/htdocs/langs/da_DK/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Kategori, der automatisk tilføjes til EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Kategori, der automatisk tilføjes til tredjeparter, når de foreslår en stand EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Skabelon til e-mail, der skal sendes efter modtagelse af et forslag til en konference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Skabelon til e-mail, der skal sendes efter modtagelse af et forslag til en stand. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Skabelon til e -mail, der skal sendes, efter at en registrering til en bod er blevet betalt. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Skabelon af e-mail til at sende efter en tilmelding til en stand er betalt. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = E -mail -skabelon, der skal sendes, efter at en registrering til en begivenhed er betalt. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Skabelon til e-mail med massaktion til attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Skabelon til e-mail med massaktion til højttalere -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filtrer tredjeparts valgliste i deltagernes oprettelseskort / formular med kategori -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filtrer tredjeparts valgliste i deltagernes oprettelseskort / formular med kundetype +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Skabelon for e-mail til brug ved afsendelse af e-mails fra massaktionen "Send e-mails" til højttalere +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Skabelon til e-mail til brug ved afsendelse af e-mails fra massaktionen "Send e-mails" på deltagerlisten +EVENTORGANIZATION_FILTERATTENDEES_CAT = I formularen til at oprette/tilføje en deltager begrænser listen over tredjeparter til tredjeparter i kategorien +EVENTORGANIZATION_FILTERATTENDEES_TYPE = I formularen til at oprette/tilføje en deltager begrænser listen over tredjeparter til tredjeparter med arten # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Betaling af din bod EventOrganizationEmailRegistrationPayment = Tilmelding til et arrangement EventOrganizationMassEmailAttendees = Kommunikation til deltagere EventOrganizationMassEmailSpeakers = Kommunikation til taler +ToSpeakers=Til talere # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Pris for registrering PriceOfRegistrationHelp=Pris at betale for at tilmelde sig eller deltage i arrangementet PriceOfBooth=Abonnementspris for at stå en kabine PriceOfBoothHelp=Abonnementspris for at stå en kabine -EventOrganizationICSLink=Link ICS til begivenheder +EventOrganizationICSLink=Link ICS til konferencer ConferenceOrBoothInformation=Oplysninger om konference eller stand Attendees=Deltagere ListOfAttendeesOfEvent=Liste over deltagere i arrangementsprojektet DownloadICSLink = Download ICS-link -EVENTORGANIZATION_SECUREKEY = Sikker nøgle til linket til offentlig registrering til en konference +EVENTORGANIZATION_SECUREKEY = Seed for at sikre nøglen til den offentlige registreringsside for at foreslå en konference SERVICE_BOOTH_LOCATION = Service, der bruges til fakturarække om en standplacering -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service, der bruges til fakturarække om et deltagerabonnement på en konference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service brugt til fakturarækken om et deltagerabonnement på en begivenhed NbVotes=Antal stemmer # # Status diff --git a/htdocs/langs/da_DK/holiday.lang b/htdocs/langs/da_DK/holiday.lang index d26e79c5990..2c3f51239f5 100644 --- a/htdocs/langs/da_DK/holiday.lang +++ b/htdocs/langs/da_DK/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Ferie til at godkende NobodyHasPermissionToValidateHolidays=Ingen har tilladelse til at validere helligdage HolidayBalanceMonthlyUpdate=Månedlig opdatering af feriesaldo XIsAUsualNonWorkingDay=%s er sædvanligvis en IKKE arbejdsdag +BlockHolidayIfNegative=Bloker hvis saldoen er negativ +LeaveRequestCreationBlockedBecauseBalanceIsNegative=Oprettelsen af denne orlovsanmodning er blokeret, fordi din saldo er negativ ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Efter lad spørgsmål %s skal være udkast, annulleret eller nægtet at blive slettet diff --git a/htdocs/langs/da_DK/knowledgemanagement.lang b/htdocs/langs/da_DK/knowledgemanagement.lang index c819c24a45a..349c9097405 100644 --- a/htdocs/langs/da_DK/knowledgemanagement.lang +++ b/htdocs/langs/da_DK/knowledgemanagement.lang @@ -18,7 +18,7 @@ # # Module label 'ModuleKnowledgeManagementName' -ModuleKnowledgeManagementName = Videnstyringssystem +ModuleKnowledgeManagementName = Videnstyrings system # Module description 'ModuleKnowledgeManagementDesc' ModuleKnowledgeManagementDesc=Administrer en Knowledge Management (KM) eller Help-Desk base @@ -35,7 +35,7 @@ KnowledgeManagementSetupPage = Knowledge Management System opsætningsside # About = Om KnowledgeManagementAbout = Om Knowledge Management -KnowledgeManagementAboutPage = Videnstyring om side +KnowledgeManagementAboutPage = Videnstyring infoside KnowledgeManagementArea = Videnshåndtering MenuKnowledgeRecord = Videnbase @@ -46,5 +46,9 @@ KnowledgeRecords = Artikler KnowledgeRecord = Artikel KnowledgeRecordExtraFields = Ekstra felter til artikel GroupOfTicket=Gruppe af billetter -YouCanLinkArticleToATicketCategory=Du kan linke en artikel til en billetgruppe (så artiklen vil blive foreslået under kvalificeringen af nye billetter) -SuggestedForTicketsInGroup=Foreslås til billetter når gruppen er +YouCanLinkArticleToATicketCategory=Du kan linke en artikel til en opgave gruppe (så artiklen vil blive foreslået under kvalificeringen af nye billetter) +SuggestedForTicketsInGroup=Foreslås til opgave når gruppen er + +SetObsolete=Angivet som forældet +ConfirmCloseKM=Bekræfter du lukningen af denne artikel som forældet? +ConfirmReopenKM=Vil du gendanne denne artikel til status "Valideret"? diff --git a/htdocs/langs/da_DK/mrp.lang b/htdocs/langs/da_DK/mrp.lang index 3ada39000a9..4a611751bf2 100644 --- a/htdocs/langs/da_DK/mrp.lang +++ b/htdocs/langs/da_DK/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Er du sikker på, at du vil klone styklisten %s? ConfirmCloneMo=Er du sikker på, at du vil klone produktionsordren %s? ManufacturingEfficiency=Fremstillingseffektivitet ConsumptionEfficiency=Forbrugseffektivitet -ValueOfMeansLoss=Værdi på 0,95 betyder et gennemsnit på 5%% tab under produktionen +ValueOfMeansLoss=Værdi på 0,95 betyder et gennemsnit på 5%% tab under fremstillingen eller demonteringen ValueOfMeansLossForProductProduced=Værdi på 0,95 betyder et gennemsnit på 5%% tab af produceret produkt DeleteBillOfMaterials=Slet regning af materialer DeleteMo=Slet produktionsordre diff --git a/htdocs/langs/da_DK/other.lang b/htdocs/langs/da_DK/other.lang index 9518d8764c6..46edef7e29d 100644 --- a/htdocs/langs/da_DK/other.lang +++ b/htdocs/langs/da_DK/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Projekt skabt via e-mail indsamler fra mail MSGID TicketCreatedByEmailCollector=Billet skabt via e-mail indsamler fra mail MSGID %s OpeningHoursFormatDesc=Brug et - til separat åbning og lukning timer.
brug en mellemrum"Space" til at indtaste forskellige område.
Eksempel: 8-12 14-18 SuffixSessionName=Suffiks til sessionens navn +LoginWith=Log ind med %s ##### Export ##### ExportsArea=Eksport område diff --git a/htdocs/langs/da_DK/products.lang b/htdocs/langs/da_DK/products.lang index e8dfcac47b7..589ca8130b0 100644 --- a/htdocs/langs/da_DK/products.lang +++ b/htdocs/langs/da_DK/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=Standardstyklisten anbefales at bruge til fremstilling af dette p Rank=Rang SwitchOnSaleStatus=Slå salgsstatus til SwitchOnPurchaseStatus=Slå købsstatus til +StockMouvementExtraFields= Ekstra felter (aktiebevægelse) diff --git a/htdocs/langs/da_DK/projects.lang b/htdocs/langs/da_DK/projects.lang index f0436a75586..83ac7d0edef 100644 --- a/htdocs/langs/da_DK/projects.lang +++ b/htdocs/langs/da_DK/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input pr. Måned InputDetail=Indgangsdetalje TimeAlreadyRecorded=Dette er den tid, der allerede er registreret for denne opgave / dag og bruger %s ProjectsWithThisUserAsContact=Projekter med denne bruger som kontaktperson +ProjectsWithThisContact=Projekter med denne kontakt TasksWithThisUserAsContact=Opgaver tildelt denne bruger ResourceNotAssignedToProject=Ikke tildelt til projekt ResourceNotAssignedToTheTask=Ikke tildelt opgaven @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Bemærk: eksisterende projekter SelectLinesOfTimeSpentToInvoice=Vælg tidslinjer, der ikke er faktureret, og masseforanstaltning "Generer faktura" for at fakturere dem ProjectTasksWithoutTimeSpent=Projektopgaver uden brugt tid FormForNewLeadDesc=Tak for at udfylde nedenstående formular for at kontakte os. Du kan også sende os en e -mail direkte til %s . +ProjectsHavingThisContact=Projekter med denne kontakt StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/da_DK/receptions.lang b/htdocs/langs/da_DK/receptions.lang index 75cef375905..75494647560 100644 --- a/htdocs/langs/da_DK/receptions.lang +++ b/htdocs/langs/da_DK/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Opsætning af produktmodtagelse +ReceptionDescription=Leverandørens receptionsstyring (Opret receptionsdokumenter) +ReceptionsSetup=Opsætning af sælgerreception RefReception=Modtager Ref. Reception=Den proces Receptions=Modtagelse @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Modtagelser og kvitteringer for denne ordre ReceptionsToValidate=Modtagelser til validering StatusReceptionCanceled=Aflyst StatusReceptionDraft=Udkast til -StatusReceptionValidated=Bekræftet (varer til afsendelse eller allerede afsendt) +StatusReceptionValidated=Valideret (produkter, der skal modtages eller allerede modtaget) +StatusReceptionValidatedToReceive=Valideret (produkter, der skal modtages) +StatusReceptionValidatedReceived=Valideret (produkter modtaget) StatusReceptionProcessed=Behandlet StatusReceptionDraftShort=Udkast til StatusReceptionValidatedShort=bekræftet @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistikker udført på receptioner, der kun er SendReceptionByEMail=Send modtagelse via e-mail SendReceptionRef=Indsendelse af modtagelse %s ActionsOnReception=Begivenheder i receptionen -ReceptionCreationIsDoneFromOrder=I øjeblikket foretages oprettelse af en ny modtagelse fra indkøbsordre -posten. +ReceptionCreationIsDoneFromOrder=I øjeblikket oprettes en ny reception fra Indkøbsordren. ReceptionLine=Modtagelse linje ProductQtyInReceptionAlreadySent=Produkt mængde fra åben salgsordre allerede sendt ProductQtyInSuppliersReceptionAlreadyRecevied=Produkt mængde fra åben leverandør ordre allerede modtaget @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Dokumentskabeloner til modtagelser NoMorePredefinedProductToDispatch=Ikke flere foruddefinerede produkter, der skal sendes ReceptionExist=Der findes en reception ByingPrice=Købs pris +ReceptionBackToDraftInDolibarr=Modtagelse %s tilbage til udkast +ReceptionClassifyClosedInDolibarr=Reception %s klassificeret Lukket +ReceptionUnClassifyCloseddInDolibarr=Receptionen %s genåbner diff --git a/htdocs/langs/de_AT/admin.lang b/htdocs/langs/de_AT/admin.lang index 9376de90964..8ceb0acdd00 100644 --- a/htdocs/langs/de_AT/admin.lang +++ b/htdocs/langs/de_AT/admin.lang @@ -1,4 +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 Publisher=Hausgeber VersionProgram=Versionsnummer VersionLastInstall=Erstinstallationsversion @@ -159,3 +161,5 @@ RESTRICT_ON_IP=Erlauben Sie nur den Zugriff auf eine Host-IP (Platzhalter nicht FeatureNotAvailableWithReceptionModule=Funktion nicht verfügbar, wenn das Modul Empfang aktiviert ist EmailTemplate=Vorlage für E-Mail YouShouldDisablePHPFunctions=PHP Funktionen sollten deaktiviert werden +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/de_CH/admin.lang b/htdocs/langs/de_CH/admin.lang index be5b7173f04..71fb7e04085 100644 --- a/htdocs/langs/de_CH/admin.lang +++ b/htdocs/langs/de_CH/admin.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldLabelOnPDF=Fettgedrucktes Etikett im PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Publisher=Herausgeber VersionLastInstall=Erste installierte Version VersionLastUpgrade=Version der letzten Aktualisierung @@ -184,7 +185,6 @@ ThisIsAlternativeProcessToFollow=Dies ist ein alternativer Setup-Prozess: FindPackageFromWebSite=Finde das passende Dolibarrpaket (zum Beispiel auf der Dolibarr - Website %s) DownloadPackageFromWebSite=Lade das gefundene Paket herunter (zum Beispiel von der offiziellen Dolibarr Website %s). UnpackPackageInDolibarrRoot=Entpacke das Archiv in dein aktuelles Dolibarr Verzeichnis: %s. -UnpackPackageInModulesRoot=Zum Einbinden eines externen Moduls entpackst du deren Archiv in das Verzeichnis:
%s. SetupIsReadyForUse=Modulinstallation abgeschlossen. Aktiviere und konfiguriere nun das Modul im Menu "%s". InfDirExample=
Dann deklariere in conf.php
$dolibarr_main_url_root_alt='/custom'
$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'
\n"#" heisst, die Variablen sind auskommentiert und werden nicht berücksichtigt.\nEntferne einfach "#", um die Variablen scharf zu schalten. CallUpdatePage=Zur Aktualisierung der Daten und der Datenbankstruktur gehst du zur Seite %s. @@ -369,6 +369,7 @@ Permission184=Lieferantenbestellungen bestätigen Permission185=Lieferantenbestellungen auslösen oder verwerfen Permission187=Lieferantenbestellungen schliessen Permission188=Lieferantenbestellungen zurückziehen +Permission192=Leitungen erstellen Permission193=Leitungen abbrechen Permission203=Bestellungsverbindungen Bestellungen Permission215=Lieferanten einrichten @@ -587,3 +588,5 @@ 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 +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/de_CH/bills.lang b/htdocs/langs/de_CH/bills.lang index 432508afc19..a837b366b49 100644 --- a/htdocs/langs/de_CH/bills.lang +++ b/htdocs/langs/de_CH/bills.lang @@ -26,19 +26,22 @@ NoInvoiceToCorrect=Ich habe keine Rechnung zu korrigieren. InvoiceHasAvoir=Korrigiert durch eine oder mehrere Gutschriften CardBill=Rechnungsübersicht InvoiceLine=Rechnungsposition +SupplierInvoiceLines=Lieferantenrechnungspositionen paymentInInvoiceCurrency=In Rechnungswährung PaidBack=Zurückbezahlt DeletePayment=Zahlung löschen ConfirmDeletePayment=Nur zur Sicherheit: Willst du diese Zahlung wirklich löschen? +ConfirmConvertToReduc=Willst du diese %s in eine Gutschrift umwandeln? ConfirmConvertToReduc2=Der Betrag wird in den Gutschriften gespeichert und kann für diesen Kunden in einer offenen oder künftigen Rechnung als Rabatt verwendet werden. +ConfirmConvertToReducSupplier=Willst du diese %s in eine Gutschrift umwandeln? ConfirmConvertToReducSupplier2=Der Betrag wird in den Gutschriften gespeichert und kann für diesen Lieferanten in einer offenen oder künftigen Rechnung als Rabatt verwendet werden. SupplierPayments=Lieferantenzahlungen ReceivedPayments=Zahlungseingang ReceivedCustomersPayments=Erhaltene Kundenzahlungen PayedSuppliersPayments=Ausgeführte Zahlungen an Lieferanten PaymentsReportsForYear=Zahlungsbericht laufendes Jahr für %s +PaymentsBackAlreadyDone=Bereits getätigte Rückerstattungen PaymentRule=Zahlungsmodalitäten -LabelPaymentMode=Zahlungsart (Bezeichnung) PaymentAmount=Betrag PaymentHigherThanReminderToPay=Der eingegangene Betrag ist höher als der Mahnbetrag. HelpPaymentHigherThanReminderToPay=Hoppla, du willst einen höheren Betrag angeben, als noch offen ist.
Falls das so stimmt und du daraus z.B. eine Gutschrift machen willst - kein Problem. @@ -90,6 +93,7 @@ ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=Diese Wahl ist möglich, wen ConfirmClassifyPaidPartiallyReasonDiscountVatDesc=In einigen Ländern steht diese Option nur offen, wenn die Rechnung mit entsprechenden Kommentaren versehen ist. ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=Unter Kundenverschulden fallen vor allem Zahlungsunwilligkeit-, bzw. -unfähigkeit (Insolvenz). ConfirmClassifyPaidPartiallyReasonOtherDesc=Wähle diese Option, falls keine der anderen zutrifft:
- Zahlung unvollständig wg. mangelhafter oder falscher Lieferung
- Forderung auf Grund vergessenen Rabatts zu hoch
Korrigiere in jedem Fall den Überbetrag in der Buchhaltung über eine entsprechende Gutschrift. +ConfirmClassifyAbandonReasonOther=Weitere ConfirmCustomerPayment=Stimmt dieser Zahlungseingang für %s, %s? ConfirmSupplierPayment=Stimmt dieser Zahlungseingang für %s, %s? ConfirmValidatePayment=Bist du sicher, dass du diese Zahlung freigeben willst? Danach kannst du keine Änderungen mehr vornehmen. @@ -100,7 +104,6 @@ toPayOn=zahlbar am %s ExcessPaid=Bezahlter Überschuss SendBillRef=Einreichung der Rechnung %s SendReminderBillRef=Einreichung von Rechnung %s (Erinnerung) -NoOtherDraftBills=Keine Rechnungsentwürfe Anderer RelatedRecurringCustomerInvoices=Verknüpfte wiederkehrende Kundenrechnung Reduction=Ermässigung ReductionShort=% diff --git a/htdocs/langs/de_CH/projects.lang b/htdocs/langs/de_CH/projects.lang index f9387b0e21e..fc00e2d4799 100644 --- a/htdocs/langs/de_CH/projects.lang +++ b/htdocs/langs/de_CH/projects.lang @@ -13,6 +13,7 @@ ShowProject=Zeige Projekt SetProject=Projekt setzen TimeSpentByYou=Dein Zeitaufwand MyTimeSpent=Mein Zeitaufwand +TaskDescription=Aufgaben-Beschreibung NewTask=Neue Aufgabe MyProjectsArea=Mein Projektbereich GoToListOfTimeConsumed=Zur Stundenaufwandsliste wechseln diff --git a/htdocs/langs/de_CH/receptions.lang b/htdocs/langs/de_CH/receptions.lang index 7a4d73b1067..8b59f7889f4 100644 --- a/htdocs/langs/de_CH/receptions.lang +++ b/htdocs/langs/de_CH/receptions.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Einrichtung Produktlieferungen RefReception=Liefernummer Reception=Lieferung Receptions=Lieferungen diff --git a/htdocs/langs/de_DE/admin.lang b/htdocs/langs/de_DE/admin.lang index 37642b232ce..d2dbd69dd23 100644 --- a/htdocs/langs/de_DE/admin.lang +++ b/htdocs/langs/de_DE/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Fettgedruckte Referenz und Zeitraum im PDF -BoldLabelOnPDF=Fettgedrucktes Label im PDF +BoldRefAndPeriodOnPDF=Referenz und Zeitraum des Produkts im PDF aufnehmen +BoldLabelOnPDF=Fettgedrucktes Label des Produkts im PDF Foundation=Stiftung Version=Version Publisher=Verfasser @@ -343,7 +343,7 @@ StepNb=Schritt %s FindPackageFromWebSite=Finden Sie ein Paket, das die gewünschten Funktionen beinhaltet (zum Beispiel auf der offiziellen Website %s). DownloadPackageFromWebSite=Installationspaket herunterladen (zum Beispiel, von der offiziellen Webseite %s). UnpackPackageInDolibarrRoot=Entpacken des Pakets in das Verzeichnis der Systeminstallation %s -UnpackPackageInModulesRoot=Um eine externes Modul bereit zu stellen, entpacken Sie die gepackten Dateien in das Verzeichnis für Module:
%s +UnpackPackageInModulesRoot=Um ein externes Modul bereitzustellen/zu installieren, müssen Sie die Archivdatei in das für externe Module bestimmte Serververzeichnis entpacken (unzip):
%s SetupIsReadyForUse=Modul Installation abgeschlossen, das Modul muss aber noch aktiviert und konfiguriert werden: %s. NotExistsDirect=Das alternative Stammverzeichnis ist nicht zu einem existierenden Verzeichnis definiert.
InfDirAlt=Seit Version 3 ist es möglich, ein alternatives Stammverzeichnis anzugeben. Dies ermöglicht, Erweiterungen und eigene Templates am gleichen Ort zu speichern.
Erstellen Sie einfach ein Verzeichis im Hauptverzeichnis von Dolibarr an (z.B. "custom").
@@ -795,7 +795,7 @@ Permission185=Lieferantenbestellungen ausführen oder verwerfen Permission186=Lieferantenbestellungen empfangen Permission187=Lieferantenbestellungen schließen Permission188=Lieferantenbestellungen stornieren -Permission192=Leitungen erstellen +Permission192=Positionen erstellen Permission193=Zeilen stornieren Permission194=Bandbreite der Leitungen einsehen Permission202=ADSL Verbindungen erstellen @@ -893,11 +893,11 @@ Permission701=Spenden anzeigen Permission702=Spenden erstellen/bearbeiten Permission703=Spenden löschen Permission771=Spesenabrechnungen einsehen (eigene und die der Untergebenen) -Permission772=Create/modify expense reports (for you and your subordinates) +Permission772=Spesenabrechnungen erstellen/ändern (für Sie und Ihnen unterstellte Mitarbeiter) Permission773=Spesenabrechnung löschen Permission775=Spesenabrechnung genehmigen Permission776=Spesenabrechnung bezahlen -Permission777=Read all expense reports (even those of user not subordinates) +Permission777=Lesen Sie alle Spesenabrechnungen (auch die von Ihnen nicht unterstellten Mitarbeitern) Permission778=Spesenabrechnungen aller erstellen / ändern Permission779=Spesenabrechnung exportieren Permission1001=Warenbestände einsehen @@ -965,7 +965,7 @@ Permission4001=Kompetenz/Job/Position lesen Permission4002=Kompetenz/Job/Position erstellen/ändern Permission4003=Kompetenz/Job/Position löschen Permission4020=Bewertungen lesen -Permission4021=Create/modify your evaluation +Permission4021=Erstellen/ändern Sie Ihre Bewertung Permission4022=Bewertung validieren Permission4023=Bewertung löschen Permission4030=Siehe Vergleichsmenü @@ -976,9 +976,9 @@ Permission10005=Inhalt der Website löschen Permission20001=Urlaubsanträge einsehen (eigene und die Ihrer Untergeordneten) Permission20002=Urlaubsanträge anlegen/bearbeiten (eigene und die Ihrer Untergeordneten) Permission20003=Lösche Urlaubsanträge -Permission20004=Read all leave requests (even those of user not subordinates) -Permission20005=Create/modify leave requests for everybody (even those of user not subordinates) -Permission20006=Administer leave requests (setup and update balance) +Permission20004=Alle Urlaubsanträge lesen (auch die von Ihnen nicht unterstellten Mitarbeitern) +Permission20005=Urlaubsanträge für alle erstellen/ändern (auch für Ihnen nicht unterstellte Mitarbeiter) +Permission20006=Urlaubsanträge verwalten (Saldo einrichten und aktualisieren) Permission20007=Urlaubsanträge genehmigen Permission23001=Geplante Aufgaben anzeigen Permission23002=Geplante Aufgaben erstellen/bearbeiten @@ -1035,7 +1035,7 @@ DictionaryCanton=Bundesland/Kanton DictionaryRegion=Regionen DictionaryCountry=Länder DictionaryCurrency=Währungen -DictionaryCivility=Ehrentitel +DictionaryCivility=Anreden/Titel DictionaryActions=Typen von Kalender-Ereignissen DictionarySocialContributions=Arten von Steuern oder Sozialabgaben DictionaryVAT=USt.-Sätze @@ -1451,8 +1451,8 @@ BANK_ASK_PAYMENT_BANK_DURING_ORDER=Fragen Sie nach der Ziel-Bankverbindung InterventionsSetup=Einstellungen Modul Serviceaufträge FreeLegalTextOnInterventions=Freier Text auf Serviceauftragsdokumenten FicheinterNumberingModules=Nummernvergabe für Serviceaufträge -TemplatePDFInterventions=Dokumentenvorlage(n) -WatermarkOnDraftInterventionCards=Wasserzeichen auf Serviceauftragskartenentwurf (leerlassen wenn keines benötigt wird) +TemplatePDFInterventions=Dokumentenvorlage(n) für Serviceaufträge +WatermarkOnDraftInterventionCards=Wasserzeichen auf Dokumenten für Serviceaufträge (keines, wenn leer) ##### Contracts ##### ContractsSetup=Vertrags- und Abonnements-Einstellungen ContractsNumberingModules=Nummernvergabe für Verträge und Abonnements @@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Um ein externes Modul zu erstellen oder installieren, HighlightLinesOnMouseHover=Zeilen hervorheben bei Mouseover HighlightLinesColor=Farbe zum Hervorheben der Zeile, wenn die Maus darüberfahrt (verwenden Sie 'ffffff' für keine Hervorhebung) HighlightLinesChecked=Farbe zum Hervorheben der Zeile, wenn die Zeile ausgewählt ist (verwenden Sie 'ffffff' für keine Hervorhebung) +BtnActionColor=Hintergrundfarbe der Aktionsschaltfläche +TextBtnActionColor=Textfarbe der Aktionsschaltfläche TextTitleColor=Textfarbe der Seitenüberschrift LinkColor=Farbe für Hyperlinks PressF5AfterChangingThis=Drücken Sie CTRL+F5 auf der Tastatur oder löschen Sie Ihren Browser-Cache, nachdem dem Sie diesen Wert geändert haben, damit die Änderung wirksam wird @@ -2216,3 +2218,5 @@ NativeModules=Native Module NoDeployedModulesFoundWithThisSearchCriteria=Keine Module für diese Suchkriterien gefunden API_DISABLE_COMPRESSION=Komprimierung von API-Antworten deaktivieren EachTerminalHasItsOwnCounter=Jedes Terminal verwendet seinen eigenen Zähler. +FillAndSaveAccountIdAndSecret=Zuerst die Account-ID und den Geheimschlüssel eingeben und speichern +PreviousHash=Vorheriger Hash diff --git a/htdocs/langs/de_DE/bills.lang b/htdocs/langs/de_DE/bills.lang index f6b00de77ac..6eec6f79952 100644 --- a/htdocs/langs/de_DE/bills.lang +++ b/htdocs/langs/de_DE/bills.lang @@ -82,6 +82,7 @@ PaymentsAlreadyDone=Bereits getätigte Zahlungen PaymentsBackAlreadyDone=Rückerstattungen bereits erledigt PaymentRule=Zahlungsregel PaymentMode=Zahlungsart +PaymentModes=Zahlungsarten DefaultPaymentMode=Standardzahlungsart DefaultBankAccount=Standardbankkonto IdPaymentMode=Zahlungsart (ID) diff --git a/htdocs/langs/de_DE/blockedlog.lang b/htdocs/langs/de_DE/blockedlog.lang index a9cadcb60c7..5f02fb8ed77 100644 --- a/htdocs/langs/de_DE/blockedlog.lang +++ b/htdocs/langs/de_DE/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=Liste der Länder, in denen die Verwendung OnlyNonValid=Nicht-bestätigt TooManyRecordToScanRestrictFilters=Anzahl der zu scannenden-/analysierenden Einträge ist zu hoch. Bitte schränken Sie die Liste mit restriktiveren Filtern ein. RestrictYearToExport=Beschränke Zeitraum (Monat/Jahr) für den Export +BlockedLogEnabled=Das System zum Protokollieren von Ereignissen in unveränderbaren Logs wurde aktiviert +BlockedLogDisabled=Das System zum Protokollieren von Ereignissen in unveränderbaren Logs wurde deaktiviert, nachdem einige Aufzeichnungen durchgeführt wurden. Wir haben einen speziellen Fingerabdruck gespeichert, um die Kette als gebrochen zu markieren +BlockedLogDisabledBis=Das System zum Protokollieren von Ereignissen in unveränderbaren Logs wurde deaktiviert. Dies ist möglich, da noch keine Aufzeichnungen vorgenommen wurden. diff --git a/htdocs/langs/de_DE/boxes.lang b/htdocs/langs/de_DE/boxes.lang index 3d91576eb60..06a3fabd926 100644 --- a/htdocs/langs/de_DE/boxes.lang +++ b/htdocs/langs/de_DE/boxes.lang @@ -56,7 +56,7 @@ BoxGlobalActivity=Globale Aktivität (Rechnungen, Angebote, Aufträge) BoxGoodCustomers=Gute Kunden BoxTitleGoodCustomers=%s gute Kunden BoxScheduledJobs=Geplante Aufträge -BoxTitleFunnelOfProspection=Interessenten Trichter +BoxTitleFunnelOfProspection=Lead Funnel FailedToRefreshDataInfoNotUpToDate=Fehler beim RSS-Abruf. Letzte erfolgreiche Aktualisierung: %s LastRefreshDate=Letzte Aktualisierung NoRecordedBookmarks=Keine Lesezeichen definiert. diff --git a/htdocs/langs/de_DE/companies.lang b/htdocs/langs/de_DE/companies.lang index a058ed34dba..500642bc9c8 100644 --- a/htdocs/langs/de_DE/companies.lang +++ b/htdocs/langs/de_DE/companies.lang @@ -157,15 +157,15 @@ ProfId3CL=- ProfId4CL=- ProfId5CL=- ProfId6CL=- -ProfId1CM=Id. prof. 1 (Trade Register) -ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1CM=Prof. Id 1 (Handelsregister) +ProfId2CM=Prof. Id 2 (Steuer-Nr./Steuer-ID) +ProfId3CM=Prof. Id 3 (Handelsregister-Nr.) ProfId4CM=- ProfId5CM=- ProfId6CM=- -ProfId1ShortCM=Trade Register -ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation +ProfId1ShortCM=Handelsregister +ProfId2ShortCM=Steuer-Nr./Steuer-ID +ProfId3ShortCM=Handelsregister-Nr. ProfId4ShortCM=- ProfId5ShortCM=- ProfId6ShortCM=- diff --git a/htdocs/langs/de_DE/errors.lang b/htdocs/langs/de_DE/errors.lang index 78148729281..5b7db2999ca 100644 --- a/htdocs/langs/de_DE/errors.lang +++ b/htdocs/langs/de_DE/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Dieser Kontakt ist bereits als Kontak ErrorCashAccountAcceptsOnlyCashMoney=Dies ist ein Bargeldkonto (Kasse) und akzeptiert deshalb nur Bargeldtransaktionen. ErrorFromToAccountsMustDiffers=Quell- und Zielbankkonto müssen unterschiedlich sein. ErrorBadThirdPartyName=Ungültiger Wert für den Namen des Partners +ForbiddenBySetupRules=Durch Setup-Regeln verboten ErrorProdIdIsMandatory=Die %s ist zwingend notwendig +ErrorAccountancyCodeCustomerIsMandatory=Der Buchhaltungscode des Kunden %s ist eine Pflichtangabe ErrorBadCustomerCodeSyntax=Die eingegebene Kundennummer ist unzulässig. ErrorBadBarCodeSyntax=Falsche Syntax für den Barcode. Vielleicht haben Sie eine falsche Barcodeart eingestellt oder eine falsche Barcode Maske definiert. ErrorCustomerCodeRequired=Kunden Nr. erforderlich @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Nicht im Dictionary der Zahlungsbedingunge ErrorIsNotADraft=%s ist kein Entwurf ErrorExecIdFailed=Befehl "id" kann nicht ausgeführt werden ErrorBadCharIntoLoginName=Unzulässiges Zeichen im Login-Namen +ErrorRequestTooLarge=Fehler, Anfrage zu groß # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Ihr PHP Parameter upload_max_filesize (%s) ist größer als Parameter post_max_size (%s). Dies ist eine inkonsistente Einstellung. @@ -315,6 +318,7 @@ RequireAtLeastXString = Mindestlänge beträgt %s Zeichen RequireXStringMax = Maximal %s Zeichen zulässig RequireAtLeastXDigits = Mindestlänge beträgt %s Ziffern RequireXDigitsMax = Maximal %s Ziffern zulässig +RequireValidNumeric = Erfordert einen numerischen Wert RequireValidEmail = E-Mail Adresse ist nicht gültig RequireMaxLength = Länge muss kleiner sein als %s Zeichen RequireMinLength = Länge muss größer als %s Zeichen sein diff --git a/htdocs/langs/de_DE/eventorganization.lang b/htdocs/langs/de_DE/eventorganization.lang index 3deb6c18c83..d5b08831e2b 100644 --- a/htdocs/langs/de_DE/eventorganization.lang +++ b/htdocs/langs/de_DE/eventorganization.lang @@ -44,10 +44,10 @@ EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Vorlage einer E-Mail, die nach Erhal EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Vorlage einer E-Mail, die nach Erhalt eines Standvorschlags gesendet werden soll. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = E-Mail-Vorlage, die nach der Bezahlung eines registrierten Standes gesendet wird. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = E-Mail-Vorlage, die nach der Bezahlung der Anmeldung zu einer Veranstaltung gesendet wird. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Vorlage der E-Mail bei Massenaktion an Teilnehmer -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Vorlage der Massenaktion-E-Mail an die Redner -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filtern Sie die Auswahlliste des Drittanbieters in der Erstellungskarte / dem Formular des Teilnehmers nach Kategorie -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filtern Sie die Auswahlliste des Drittanbieters in der Teilnehmererstellungskarte / dem Formular nach Kundentyp +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = E-Mail-Vorlage, die verwendet werden soll, wenn E-Mails durch Massenaktion "E-Mails senden" an Redner gesendet werden +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = E-Mail-Vorlage, die verwendet werden soll, wenn E-Mails durch Massenaktion „E-Mails senden“ an Teilnehmer gesendet werden +EVENTORGANIZATION_FILTERATTENDEES_CAT = Schränkt im Formular zum Erstellen/Hinzufügen eines Teilnehmers die Liste der Geschäftspartner auf diejenigen aus der Kategorie ein +EVENTORGANIZATION_FILTERATTENDEES_TYPE = Schränkt im Formular zum Erstellen/Hinzufügen eines Teilnehmers die Liste der Geschäftspartner auf diejenigen des Typs ein # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Bezahlung Ihres Standes EventOrganizationEmailRegistrationPayment = Anmeldung zu einer Veranstaltung EventOrganizationMassEmailAttendees = Kommunikation mit den Teilnehmern EventOrganizationMassEmailSpeakers = Kommunikation mit den Sprechern +ToSpeakers=An Redner # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Buchungskosten für die Teilnahme PriceOfRegistrationHelp=Preis für die Anmeldung/Teilnahme an der Veranstaltung PriceOfBooth=Buchungskosten für einen Stand PriceOfBoothHelp=Buchungskosten für einen Stand -EventOrganizationICSLink=Verknüpfe ICS für Ereignisse +EventOrganizationICSLink=Verknüpfe ICS für Vorträge ConferenceOrBoothInformation=Informationen zu Konferenzbeitrag oder Stand Attendees=Teilnehmer ListOfAttendeesOfEvent=Teilnehmerliste des Veranstaltungsprojekts DownloadICSLink = ICS-Link herunterladen -EVENTORGANIZATION_SECUREKEY = Sicherer Schlüssel des öffentlichen Registrierungslinks zu einer Konferenz +EVENTORGANIZATION_SECUREKEY = Seed, um den Schlüssel für die öffentliche Registrierungsseite zu sichern, die zum Vorschlagen eines Vortrags dient SERVICE_BOOTH_LOCATION = Service, der für die Rechnungszeile über einen Stand verwendet wird -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service, der für die Rechnungszeile über eine Teilnahmebuchung einer Konferenz verwendet wird +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service, der für die Rechnungszeile über eine Teilnahmebuchung einer Veranstaltung verwendet wird NbVotes=Anzahl der Stimmen # # Status diff --git a/htdocs/langs/de_DE/exports.lang b/htdocs/langs/de_DE/exports.lang index 90d1a1f9afe..4f9e5bfd08a 100644 --- a/htdocs/langs/de_DE/exports.lang +++ b/htdocs/langs/de_DE/exports.lang @@ -38,7 +38,7 @@ FormatedExportDesc2=Der erste Schritt besteht darin, einen vordefinierten Datens FormatedExportDesc3=Wenn zu exportierende Daten ausgewählt sind, können Sie das Format der Ausgabedatei auswählen. Sheet=Blatt NoImportableData=Keine importfähigen Daten (kein Modul mit Erlaubnis für Datenimport) -FileSuccessfullyBuilt=Dateien erstellt +FileSuccessfullyBuilt=Datei erstellt SQLUsedForExport=SQL-Abfrage zum Extrahieren von Daten LineId=ID der Zeile LineLabel=Zeilenbeschriftung diff --git a/htdocs/langs/de_DE/holiday.lang b/htdocs/langs/de_DE/holiday.lang index e0d6f61c5c6..16eb2a417bd 100644 --- a/htdocs/langs/de_DE/holiday.lang +++ b/htdocs/langs/de_DE/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Urlaubstage zu genehmigen NobodyHasPermissionToValidateHolidays=Niemand hat die Erlaubnis, Urlaubstage zu bestätigen. HolidayBalanceMonthlyUpdate=Monatliche Aktualisierung des Urlaubsguthabens XIsAUsualNonWorkingDay=%s ist normalerweise KEIN Arbeitstag +BlockHolidayIfNegative=Sperren bei negativem Saldo +LeaveRequestCreationBlockedBecauseBalanceIsNegative=Die Erstellung dieses Urlaubsantrags ist gesperrt, da Ihr Saldo negativ ist ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Urlaubsantrag %s muss im Status 'Entwurf', 'storniert' oder 'abgelehnt' sein, um gelöscht zu werden diff --git a/htdocs/langs/de_DE/interventions.lang b/htdocs/langs/de_DE/interventions.lang index 5bb4fcc450d..51748b383f9 100644 --- a/htdocs/langs/de_DE/interventions.lang +++ b/htdocs/langs/de_DE/interventions.lang @@ -4,7 +4,7 @@ Interventions=Serviceaufträge InterventionCard=Serviceauftrag - Arbeitsbericht NewIntervention=Neuer Serviceauftrag AddIntervention=Serviceauftrag erstellen -ChangeIntoRepeatableIntervention=Wechseln Sie zu wiederholbaren Serviceauftrag +ChangeIntoRepeatableIntervention=In wiederholbaren Serviceauftrag umwandeln ListOfInterventions=Liste der Serviceaufträge ActionsOnFicheInter=Ereignisse zu diesem Serviceauftrag LastInterventions=%s neueste Serviceaufträge @@ -13,8 +13,8 @@ CreateDraftIntervention=Entwurf erstellen InterventionContact=Kontakte/Adressen DeleteIntervention=Serviceauftrag löschen ValidateIntervention=Serviceauftrag freigeben -ModifyIntervention=Ändere Serviceauftrag -DeleteInterventionLine=Serviceauftragsposition löschen +ModifyIntervention=Serviceauftrag ändern +DeleteInterventionLine=Position im Serviceauftrag löschen ConfirmDeleteIntervention=Möchten Sie diesen Serviceauftrag wirklich löschen? ConfirmValidateIntervention=Sind Sie sicher, dass Sie den Serviceauftrag %s freigeben wollen? ConfirmModifyIntervention=Möchten Sie diesen Serviceauftrag wirklich ändern? @@ -24,32 +24,32 @@ NameAndSignatureOfInternalContact=Name und Unterschrift des Mitarbeiters: NameAndSignatureOfExternalContact=Name und Unterschrift des Kunden: DocumentModelStandard=Standard-Dokumentvorlage für Serviceaufträge InterventionCardsAndInterventionLines=Serviceaufträge und Serviceauftragspositionen -InterventionClassifyBilled=Eingeordnet "Angekündigt" -InterventionClassifyUnBilled=Als "nicht verrechnet" markieren +InterventionClassifyBilled=Als "in Rechnung gestellt" markieren +InterventionClassifyUnBilled=Als "nicht in Rechnung gestellt" markieren InterventionClassifyDone=Als "erledigt" markieren -StatusInterInvoiced=Angekündigt +StatusInterInvoiced=In Rechnung gestellt SendInterventionRef=Serviceauftrag %s SendInterventionByMail=Serviceauftrag per E-Mail versenden InterventionCreatedInDolibarr=Serviceauftrag %s erstellt InterventionValidatedInDolibarr=Serviceauftrag %s freigegeben InterventionModifiedInDolibarr=Serviceauftrag %s geändert -InterventionClassifiedBilledInDolibarr=Serviceauftrag %s als verrechnet eingestuft -InterventionClassifiedUnbilledInDolibarr=Serviceauftrag %s als nicht verrechnet eingestuft +InterventionClassifiedBilledInDolibarr=Serviceauftrag %s als "in Rechnung gestellt" markiert +InterventionClassifiedUnbilledInDolibarr=Serviceauftrag %s als "nicht in Rechnung gestellt" markiert InterventionSentByEMail=Serviceauftrag %s per E-Mail versendet InterventionDeletedInDolibarr=Serviceauftrag %s gelöscht InterventionsArea=Übersicht Serviceaufträge -DraftFichinter=Serviceaufträge entwerfen +DraftFichinter=Serviceaufträge im Entwurf LastModifiedInterventions=Zuletzt bearbeitete Serviceaufträge (maximal %s) FichinterToProcess=Zu bearbeitende Serviceaufträge TypeContact_fichinter_external_CUSTOMER=Kundenkontakt-Nachbetreuung -PrintProductsOnFichinter=Auch Produktzeilen (Nicht nur Leistungen) auf der Serviceauftragskarte drucken -PrintProductsOnFichinterDetails=Serviceaufträge durch Bestellungen generiert +PrintProductsOnFichinter=Auch Produktzeilen (nicht nur Leistungen) auf dem Serviceauftragsdokument drucken +PrintProductsOnFichinterDetails=Aus Kundenaufträgen erstellte Serviceaufträge UseServicesDurationOnFichinter=Standard-Wert der Dauer für diesen Service aus dem Auftrag übernehmen UseDurationOnFichinter=Feld 'Dauer' für Einsatzeinträge nicht anzeigen UseDateWithoutHourOnFichinter=Stunden- und Minutenfelder beim Datum von Einsatzeinträgen nicht anzeigen InterventionStatistics=Statistik Serviceaufträge -NbOfinterventions=Anzahl Karten für Serviceaufträge -NumberOfInterventionsByMonth=Anzahl Karten für Serviceaufträge pro Monat (Freigabedatum) +NbOfinterventions=Anzahl Dokumente für Serviceaufträge +NumberOfInterventionsByMonth=Anzahl Dokumente für Serviceaufträge pro Monat (Freigabedatum) AmountOfInteventionNotIncludedByDefault=Die Anzahl an Einsätzen ist normalerweise nicht im Umsatz enthalten. (In den meisten Fällen werden sie Einsatzstunden separat erfasst) Setzen Sie die globale Option PROJECT_INCLUDE_INTERVENTION_AMOUNT_IN_PROFIT auf 1 damit diese berücksichtigt werden. InterId=Serviceauftrag ID InterRef=Serviceauftrag Ref. @@ -57,12 +57,12 @@ InterDateCreation=Erstellungsdatum Serviceauftrag InterDuration=Dauer Serviceauftrag InterStatus=Status Serviceauftrag InterNote=Serviceauftrag Bemerkung -InterLine=Interventionslinie +InterLine=Position im Serviceauftrag InterLineId=Serviceauftragsposition ID InterLineDate=Serviceauftragsposition Datum InterLineDuration=Serviceauftragsposition Dauer InterLineDesc=Serviceauftragsposition Beschreibung -RepeatableIntervention=Vorlage der Intervention -ToCreateAPredefinedIntervention=Für eine vordefinierte oder wiederkehrende Intervention erstellen Sie zunächst eine gemeinsame Intervention und konvertieren diese dann in eine Vorlage +RepeatableIntervention=Vorlage für Serviceauftrag +ToCreateAPredefinedIntervention=Für einen vordefinierten oder wiederkehrenden Serviceauftrag erstellen Sie zunächst einen gemeinsamen Serviceauftrag und konvertieren diesen anschließend in eine Vorlage ConfirmReopenIntervention=Möchten Sie den Serviceauftrag %s wieder öffnen? GenerateInter=Serviceauftrag erstellen diff --git a/htdocs/langs/de_DE/knowledgemanagement.lang b/htdocs/langs/de_DE/knowledgemanagement.lang index 2237b64d1e5..9b2f1404101 100644 --- a/htdocs/langs/de_DE/knowledgemanagement.lang +++ b/htdocs/langs/de_DE/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafelder für Artikel GroupOfTicket=Ticket-Gruppe YouCanLinkArticleToATicketCategory=Sie können einen Artikel mit einer Ticket-Gruppe verknüpfen (so wird der Artikel bei der Qualifizierung neuer Tickets vorgeschlagen) SuggestedForTicketsInGroup=Empfohlen für Tickets der Gruppe + +SetObsolete=Als veraltet festlegen +ConfirmCloseKM=Bestätigen Sie das Schließen dieses Artikels als veraltet? +ConfirmReopenKM=Möchten Sie diesen Artikel auf den Status "Validiert" zurücksetzen? diff --git a/htdocs/langs/de_DE/mrp.lang b/htdocs/langs/de_DE/mrp.lang index 2bea7dd7d6e..a3b0e0c1940 100644 --- a/htdocs/langs/de_DE/mrp.lang +++ b/htdocs/langs/de_DE/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Sind Sie sicher, dass Sie die Stückliste %s klonen ConfirmCloneMo=Möchten Sie den Fertigungsauftrag %s wirklich duplizieren? ManufacturingEfficiency=Produktionseffizienz ConsumptionEfficiency=Verbrauchseffizienz -ValueOfMeansLoss=Ein Wert von 0,95 bedeutet einen durchschnittlichen Verlust von 5%% während der Produktion. +ValueOfMeansLoss=Ein Wert von 0,95 bedeutet einen durchschnittlichen Verlust von 5%% während der Herstellung oder Demontage ValueOfMeansLossForProductProduced=Ein Wert von 0,95 bedeutet im Durchschnitt 5%% Verlust bei dem hergestellten Produkt DeleteBillOfMaterials=Stückliste löschen DeleteMo=Fertigungsauftrag löschen diff --git a/htdocs/langs/de_DE/other.lang b/htdocs/langs/de_DE/other.lang index 569325dda82..2c9b38fa0db 100644 --- a/htdocs/langs/de_DE/other.lang +++ b/htdocs/langs/de_DE/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Projekt durch das Modul E-Mail-Sammler aus der E- TicketCreatedByEmailCollector=Ticket durch das Modul E-Mail-Sammler aus der E-Mail erstellt. MSGID %s OpeningHoursFormatDesc=Benutze unterschiedliche von - bis Öffnungs- und Schließzeiten.
Leerzeichen trennt unterschiedliche Bereiche.
Beispiel: 8-12 14-18 SuffixSessionName=Suffix für Sitzungsnamen +LoginWith=Melden Sie sich mit %s an ##### Export ##### ExportsArea=Exportübersicht diff --git a/htdocs/langs/de_DE/products.lang b/htdocs/langs/de_DE/products.lang index 48b1865416d..100ffcf7213 100644 --- a/htdocs/langs/de_DE/products.lang +++ b/htdocs/langs/de_DE/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=Die zur Herstellung dieses Produkts empfohlene Standardstücklist Rank=Rang SwitchOnSaleStatus=Status Verkauf einschalten SwitchOnPurchaseStatus=Status Einkauf einschalten +StockMouvementExtraFields= Zusatzfelder (Lagerbewegung) diff --git a/htdocs/langs/de_DE/projects.lang b/htdocs/langs/de_DE/projects.lang index a9cda09b2c3..313cc907d4f 100644 --- a/htdocs/langs/de_DE/projects.lang +++ b/htdocs/langs/de_DE/projects.lang @@ -64,7 +64,7 @@ Tasks=Aufgaben Task=Aufgabe TaskDateStart=Startdatum der Aufgabe TaskDateEnd=Enddatum der Aufgabe -TaskDescription=Aufgaben-Beschreibung +TaskDescription=Aufgabenbeschreibung NewTask=neue Aufgabe AddTask=Aufgabe erstellen AddTimeSpent=Erfasse verwendete Zeit @@ -197,6 +197,7 @@ InputPerMonth=Monatsansicht InputDetail=Eingabedetail TimeAlreadyRecorded=Zeitaufwand für diese Aufgabe/Tag und Benutzer %s bereits aufgenommen ProjectsWithThisUserAsContact=Projekte mit diesem Anwender als Kontakt +ProjectsWithThisContact=Projekte mit diesem Kontakt TasksWithThisUserAsContact=Aufgaben zugeordnet zu diesem Anwender ResourceNotAssignedToProject=Nicht dem Projekt zugeordnet ResourceNotAssignedToTheTask=nicht der Aufgabe zugewiesen @@ -257,18 +258,18 @@ TimeSpentInvoiced=Zeitaufwand in Rechnung gestellt TimeSpentForIntervention=Zeitaufwand TimeSpentForInvoice=Zeitaufwand OneLinePerUser=Eine Zeile pro Benutzer -ServiceToUseOnLines=Service für Leitungen +ServiceToUseOnLines=Service für Leistungen InvoiceGeneratedFromTimeSpent=Die Rechnung %s wurde aus der für das Projekt aufgewendeten Zeit generiert InterventionGeneratedFromTimeSpent=Der Serviceauftrag %s wurde aus der für das Projekt aufgewendeten Zeit generiert ProjectBillTimeDescription=Prüfe, ob Arbeitszeittabellen für Projektaufgaben geführt werden UND ob Rechnungen aus dieser Arbeitszeittabelle erstellt werden sollen, um mit dem Kunden des Projekts abzurechnen (Prüfe nicht, ob Rechnungen erstellt werden sollen, die nicht auf Arbeitszeittabellen basieren). Hinweis: Um eine Rechnung zu erstellen, gehe auf die Registerkarte 'Zeitaufwand' des Projekts und wähle einzuschließende Zeilen aus. -ProjectFollowOpportunity=Leads nachverfolgen +ProjectFollowOpportunity=Leads (Interessenten) nachverfolgen ProjectFollowTasks=Aufgaben und aufgewendete Zeiten nachverfolgen Usage=Verwendungszweck UsageOpportunity=Anwendung: Verkaufsmöglichkeit UsageTasks=Verwendung: Aufgaben UsageBillTimeShort=Verwendung: Zeit abrechnen InvoiceToUse=Zu verwendender Rechnungsentwurf -InterToUse=Interventionsentwurf zu benutzen +InterToUse=Zu verwendender Serviceauftrag (Entwurf) NewInvoice=Neue Rechnung NewInter=Neuer Serviceauftrag OneLinePerTask=Eine Zeile pro Aufgabe @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Hinweis: Bestehende Projekte mi SelectLinesOfTimeSpentToInvoice=Wählen Sie Positionen mit Zeiten aus, die noch nicht in Rechnung gestellt wurden, und führen Sie dann die Massenaktion "Rechnung erstellen" aus, um sie zu berechnen ProjectTasksWithoutTimeSpent=Projektaufgaben ohne Zeitaufwand FormForNewLeadDesc=Vielen Dank für das Ausfüllen des Formulars, um uns zu kontaktieren. Sie können uns auch direkt eine E-Mail an %s senden. +ProjectsHavingThisContact=Projekte mit diesem Kontakt StartDateCannotBeAfterEndDate=Enddatum kann nicht vor dem Startdatum liegen diff --git a/htdocs/langs/de_DE/receptions.lang b/htdocs/langs/de_DE/receptions.lang index 02933e6dbc2..a969383777c 100644 --- a/htdocs/langs/de_DE/receptions.lang +++ b/htdocs/langs/de_DE/receptions.lang @@ -1,4 +1,5 @@ # Dolibarr language file - Source file is en_US - receptions +ReceptionDescription=Verwaltung des Wareneingangs (Empfangsdokumente erstellen) ReceptionsSetup=Wareneingang einrichten RefReception=Wareneingangs Nummer Reception=Wareneingang @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Empfänge and receipts für dieses order ReceptionsToValidate=Empfänge an validate StatusReceptionCanceled=Storniert StatusReceptionDraft=Entwurf -StatusReceptionValidated=Freigegeben (Artikel versandfertig oder bereits versandt) +StatusReceptionValidated=Validiert (zu erhaltende oder bereits erhaltene Produkte) +StatusReceptionValidatedToReceive=Validiert (zu erhaltende Produkte) +StatusReceptionValidatedReceived=Validiert (Produkte erhalten) StatusReceptionProcessed=Bearbeitet StatusReceptionDraftShort=Entwurf StatusReceptionValidatedShort=Bestätigt @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics wurde nur für empfangsdaten durchgef SendReceptionByEMail=Senden Sie den Empfang mit email SendReceptionRef=Wareneingang %s ActionsOnReception=Veranstaltungen an der Rezeption -ReceptionCreationIsDoneFromOrder=Im Moment erfolgt die Erstellung eines neuen Wareneingangs aus dem Datensatz der Lieferantenbestellung. +ReceptionCreationIsDoneFromOrder=Im Moment erfolgt die Erstellung eines neuen Wareneingangs aus der Lieferantenbestellung. ReceptionLine=Empfang line ProductQtyInReceptionAlreadySent=Produktmenge von open sales order already gesendet ProductQtyInSuppliersReceptionAlreadyRecevied=Bereits erhaltene Produktmenge aus Lieferantenbestellung @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Dokumentvorlagen für Empfänge NoMorePredefinedProductToDispatch=Keine vordefinierten Produkte mehr zum Versand ReceptionExist=Ein Wareneingang ist vorhanden ByingPrice=Einkaufspreis +ReceptionBackToDraftInDolibarr=Wareneingang%s zurück auf Entwurf +ReceptionClassifyClosedInDolibarr=Wareneingang %s als geschlossen klassifizieren +ReceptionUnClassifyCloseddInDolibarr=Wareneingang %s wieder öffnen diff --git a/htdocs/langs/el_CY/admin.lang b/htdocs/langs/el_CY/admin.lang new file mode 100644 index 00000000000..c5cc61bc110 --- /dev/null +++ b/htdocs/langs/el_CY/admin.lang @@ -0,0 +1,3 @@ +# 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 diff --git a/htdocs/langs/el_GR/accountancy.lang b/htdocs/langs/el_GR/accountancy.lang index 88894c91d3b..e7b284ea019 100644 --- a/htdocs/langs/el_GR/accountancy.lang +++ b/htdocs/langs/el_GR/accountancy.lang @@ -3,7 +3,7 @@ Accountancy=Λογιστική Accounting=Λογιστική ACCOUNTING_EXPORT_SEPARATORCSV=Διαχωριστής στηλών για το αρχείο που θα εξαχθεί ACCOUNTING_EXPORT_DATE=Μορφή ημερομηνίας για το αρχείο που θα εξαχθεί -ACCOUNTING_EXPORT_PIECE=Εξαγωγή του αριθμού του τεμαχίου +ACCOUNTING_EXPORT_PIECE=Εξαγωγή του αριθμού τεμαχίου ACCOUNTING_EXPORT_GLOBAL_ACCOUNT=Εξαγωγή με καθολικό λογαριασμό ACCOUNTING_EXPORT_LABEL=Εξαγωγή ετικέτας ACCOUNTING_EXPORT_AMOUNT=Εξαγωγή ποσού diff --git a/htdocs/langs/el_GR/admin.lang b/htdocs/langs/el_GR/admin.lang index 27059397d83..c33cd174692 100644 --- a/htdocs/langs/el_GR/admin.lang +++ b/htdocs/langs/el_GR/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Έντονη ετικέτα σε PDF +BoldRefAndPeriodOnPDF=Εκτύπωση αναφοράς και περιόδου του προϊόντος σε PDF +BoldLabelOnPDF=Εκτυπώστε την ετικέτα του προϊόντος με έντονη γραφή σε PDF Foundation=Οργανισμός Version=Έκδοση Publisher=Εκδότης @@ -162,7 +162,7 @@ Purge=Εκκαθάριση PurgeAreaDesc=Αυτή η σελίδα σας επιτρέπει να διαγράψετε όλα τα αρχεία που κατασκευάζονται ή αποθηκεύονται από την Dolibarr (προσωρινά αρχεία ή όλα τα αρχεία σε %s directory). Η χρήση αυτής της λειτουργίας δεν είναι απαραίτητη. Παρέχεται για χρήστες των οποίων η Dolibarr φιλοξενείται από πάροχο, που δεν προσφέρει δικαίωμα διαγραφής αρχείων που κατασκευάστηκαν από τον web server. PurgeDeleteLogFile=Διαγράψτε τα αρχεία καταγραφής, συμπεριλαμβανομένων%s που είναι ορισμένα για τη χρήση της μονάδας Syslog (χωρίς κίνδυνο απώλειας δεδομένων) 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) +PurgeDeleteTemporaryFilesShort=Διαγραφή αρχείων καταγραφής και προσωρινών αρχείων (χωρίς κίνδυνος απώλειας δεδομένων) PurgeDeleteAllFilesInDocumentsDir=Διαγράψτε όλα τα αρχεία στον κατάλογο: %s .
Αυτό θα διαγράψει όλα τα παραγόμενα έγγραφα που σχετίζονται με στοιχεία (τρίτα μέρη, τιμολόγια κ.λπ.), αρχεία που έχουν φορτωθεί στη μονάδα ECM, αρχεία από αντίγραφα ασφαλείας βάσεων δεδομένων και προσωρινά αρχεία. PurgeRunNow=Διαγραφή τώρα PurgeNothingToDelete=Δεν υπάρχει κατάλογος ή αρχείο για διαγραφή. @@ -212,7 +212,7 @@ FeatureAvailableOnlyOnStable=Το χαρακτηριστικό είναι δια BoxesDesc=Τα γραφικά στοιχεία είναι στοιχεία που εμφανίζουν ορισμένες πληροφορίες που μπορείτε να προσθέσετε για να προσαρμόσετε ορισμένες σελίδες. Μπορείτε να επιλέξετε μεταξύ εμφάνισης του γραφικού στοιχείου ή όχι επιλέγοντας τη σελίδα προορισμού και κάνοντας κλικ στην επιλογή 'Ενεργοποίηση' ή κάνοντας κλικ στο καλάθι απορριμάτων για να το απενεργοποιήσετε. OnlyActiveElementsAreShown=Μόνο στοιχεία από ενεργοποιημένα modules προβάλλονται. ModulesDesc=Οι ενότητες / εφαρμογές καθορίζουν ποιες δυνατότητες είναι διαθέσιμες στο λογισμικό. Ορισμένες λειτουργικές μονάδες απαιτούν να δοθούν δικαιώματα στους χρήστες μετά την ενεργοποίηση της λειτουργικής μονάδας. Κάντε κλικ στο κουμπί on / off %s κάθε μονάδας για να ενεργοποιήσετε ή να απενεργοποιήσετε μια ενότητα / εφαρμογή. -ModulesDesc2=Click the wheel button %s to configure the module/application. +ModulesDesc2=Κάντε κλικ στο κουμπί τροχού %s για να διαμορφώσετε τη μονάδα/εφαρμογή. ModulesMarketPlaceDesc=Μπορείτε να βρείτε περισσότερες ενότητες για να κατεβάσετε σε εξωτερικές ιστοσελίδες στο Internet ... ModulesDeployDesc=Εάν το επιτρέπουν τα δικαιώματα στο σύστημα αρχείων σας, μπορείτε να χρησιμοποιήσετε αυτό το εργαλείο για την ανάπτυξη εξωτερικής μονάδας. Η ενότητα θα είναι στη συνέχεια ορατή στην καρτέλα %s . ModulesMarketPlaces=Βρείτε εξωτερική εφαρμογή / ενότητες @@ -226,7 +226,7 @@ NotCompatible=Αυτή η ενότητα δεν φαίνεται συμβατή CompatibleAfterUpdate=Αυτή η ενότητα απαιτεί ενημέρωση του Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=Δές στην Αγορά SeeSetupOfModule=Δείτε την ρύθμιση του module %s -SetOptionTo=Set option %s to %s +SetOptionTo=Ορίστε την επιλογή %s σε %s Updated=Ενημερωμένο AchatTelechargement=Αγόρασε / Μεταφόρτωσε GoModuleSetupArea=Για να ενεργοποιήσετε/εγκαταστήσετε ενα νέο module, πηγαίνετε στην περιοχή εγκατάστασης Modules/Applications: %s. @@ -240,7 +240,7 @@ BoxesAvailable=Διαθέσιμα Widgets BoxesActivated=Ενεργοποιημένα Widgets ActivateOn=Ενεργοποιήστε στις ActiveOn=Ενεργοποιήθηκε στις -ActivatableOn=Activatable on +ActivatableOn=Δυνατότητα ενεργοποίησης σε SourceFile=Πηγαίο αρχείο AvailableOnlyIfJavascriptAndAjaxNotDisabled=Διαθέσιμο μόνο αν το JavaScript δεν είναι απενεργοποιημένο Required=Υποχρεωτικό @@ -266,7 +266,7 @@ ReferencedPreferredPartners=Preferred Partners OtherResources=Άλλοι πόροι ExternalResources=Εξωτερικοί πόροι SocialNetworks=Κοινωνικά δίκτυα -SocialNetworkId=Social Network ID +SocialNetworkId=Αναγνωριστικό ID κοινωνικού δικτύου ForDocumentationSeeWiki=Για την τεκμηρίωση χρήστη ή προγραμματιστή (έγγραφο, συχνές ερωτήσεις...),
ρίξτε μια ματιά στο Dolibarr Wiki:
%s ForAnswersSeeForum=Για οποιεσδήποτε άλλες ερωτήσεις/βοήθεια, μπορείτε να χρησιμοποιήσετε το forum του Dolibarr:
%s HelpCenterDesc1=Εδώ είναι μερικοί πόροι για να λάβετε βοήθεια και υποστήριξη με τον Dolibarr. @@ -316,7 +316,7 @@ MAIN_MAIL_DEFAULT_FROMTYPE=Προεπιλεγμένο μήνυμα αποστο UserEmail=Ηλεκτρονικό ταχυδρομείο χρήστη CompanyEmail=Εταιρεία ηλεκτρονικού ταχυδρομείου FeatureNotAvailableOnLinux=Αυτή η λειτουργία δεν είναι διαθέσιμη σε συστήματα Unix like. Δοκιμάστε το πρόγραμμα sendmail τοπικά. -FixOnTransifex=Fix the translation on the online translation platform of project +FixOnTransifex=Διορθώστε τη μετάφραση στην ηλεκτρονική πλατφόρμα μετάφρασης του έργου SubmitTranslation=Εάν η μετάφραση για αυτήν τη γλώσσα δεν είναι πλήρης ή βρίσκετε σφάλματα, μπορείτε να διορθώσετε αυτό με την επεξεργασία αρχείων στον κατάλογο langs / %s και να υποβάλετε την αλλαγή σας στο www.transifex.com/dolibarr-association/dolibarr/ SubmitTranslationENUS=If translation for this language is not complete or you find errors, you can correct this by editing files into directory langs/%s and submit modified files on dolibarr.org/forum or, if you are a developer, with a PR on github.com/Dolibarr/dolibarr ModuleSetup=Διαχείριση Αρθρώματος @@ -343,7 +343,7 @@ StepNb=Βήμα %s FindPackageFromWebSite=Βρείτε ένα πακέτο που παρέχει τις λειτουργίες που χρειάζεστε (για παράδειγμα στην επίσημη ιστοσελίδα %s). DownloadPackageFromWebSite=Λήψη του πακέτου (για παράδειγμα από την επίσημη ιστοσελίδα %s). UnpackPackageInDolibarrRoot=Αποσυμπιέστε / αποσυνδέστε τα συσκευασμένα αρχεία στον κατάλογο του διακομιστή Dolibarr : %s -UnpackPackageInModulesRoot=Για να αναπτύξετε / εγκαταστήσετε μια εξωτερική μονάδα, αποσυμπιέστε / αποσυνδέστε τα συσκευασμένα αρχεία στον κατάλογο διακομιστών που είναι αφιερωμένος σε εξωτερικές μονάδες:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Η εγκατάσταση της μονάδας ολοκληρώθηκε. Ωστόσο, πρέπει να ενεργοποιήσετε και να ρυθμίσετε την ενότητα στην εφαρμογή σας μεταβαίνοντας στις ενότητες εγκατάστασης σελίδας: %s . NotExistsDirect=Ο εναλλακτικός ριζικός κατάλογος δεν ορίζεται σε έναν υπάρχοντα κατάλογο.
InfDirAlt=Από την έκδοση 3, είναι δυνατό να οριστεί ένας εναλλακτικός κατάλογος ρίζας. Αυτό σας επιτρέπει να αποθηκεύετε, σε έναν ειδικό κατάλογο, plug-ins και προσαρμοσμένα πρότυπα.
Απλά δημιουργήστε έναν κατάλογο στη ρίζα του Dolibarr (π.χ.: custom).
@@ -355,7 +355,7 @@ LastStableVersion=Τελευταία σταθερή έκδοση LastActivationDate=Τελευταία ημερομηνία ενεργοποίησης LastActivationAuthor=Τελευταίος συντάκτης ενεργοποίησης LastActivationIP=Τελευταία IP ενεργοποίησης -LastActivationVersion=Latest activation version +LastActivationVersion=Τελευταία έκδοση ενεργοποίησης UpdateServerOffline=Ο διακομιστής ενημερώσεων είναι εκτός σύνδεσης WithCounter=Διαχειριστείτε έναν μετρητή GenericMaskCodes=You may enter any numbering mask. In this mask, the following tags can be used:
{000000} corresponds to a number which will be incremented on each %s. Enter as many zeros as the desired length of the counter. The counter will be completed by zeros from the left in order to have as many zeros as the mask.
{000000+000} same as the previous one but an offset corresponding to the number to the right of the + sign is applied starting on the first %s.
{000000@x} same as the previous one but the counter is reset to zero when month x is reached (x between 1 and 12, or 0 to use the early months of fiscal year defined in your configuration, or 99 to reset to zero every month). If this option is used and x is 2 or higher, then the sequence {yy}{mm} or {yyyy}{mm} is also required.
{dd} day (01 to 31).
{mm} month (01 to 12).
{yy}, {yyyy} or {y} year over 2, 4 or 1 numbers.
@@ -406,7 +406,7 @@ SecurityToken=Security Token NoSmsEngine=Δεν διατίθεται διαχειριστής αποστολέων SMS. Ένας διαχειριστής αποστολέα SMS δεν είναι εγκατεστημένος με την προεπιλεγμένη διανομή επειδή εξαρτάται από έναν εξωτερικό προμηθευτή, αλλά μπορείτε να βρείτε μερικούς από τους %s PDF=PDF PDFDesc=Καθολικές επιλογές για τη δημιουργία PDF -PDFOtherDesc=PDF Option specific to some modules +PDFOtherDesc=Επιλογή PDF, συγκεκριμένη για ορισμένες ενότητες PDFAddressForging=Κανόνες για την ενότητα διευθύνσεων HideAnyVATInformationOnPDF=Απόκρυψη όλων των πληροφοριών που σχετίζονται με το φόρο επί των πωλήσεων / ΦΠΑ PDFRulesForSalesTax=Κανόνες φόρου επί των πωλήσεων / ΦΠΑ @@ -428,9 +428,9 @@ PriceBaseTypeToChange=Τροποποίηση τιμών με βάση την τ MassConvert=Ξεκινήστε τη μαζική μετατροπή PriceFormatInCurrentLanguage=Μορφή τιμής στην τρέχουσα γλώσσα String=String -String1Line=String (1 line) +String1Line=Συμβολοσειρά (1 γραμμή) TextLong=Μεγάλο κείμενο -TextLongNLines=Long text (n lines) +TextLongNLines=Μεγάλο κείμενο (n γραμμές) HtmlText=Html κείμενο Int=Integer Float=Float @@ -468,13 +468,13 @@ LinkToTestClickToDial=Εισάγετε έναν τηλεφωνικό αριθμ RefreshPhoneLink=Ανανέωση συνδέσμου LinkToTest=Δημιουργήθηκε σύνδεσμος για τον χρήστη %s (κάντε κλικ στον αριθμό τηλεφώνου για να τον δοκιμάσετε) KeepEmptyToUseDefault=Αφήστε κενό για να χρησιμοποιήσετε την προεπιλεγμένη τιμή -KeepThisEmptyInMostCases=In most cases, you can keep this field empy. +KeepThisEmptyInMostCases=Στις περισσότερες περιπτώσεις, μπορείτε να διατηρήσετε αυτό το πεδίο ελεύθερο. DefaultLink=Προεπιλεγμένος σύνδεσμος SetAsDefault=Ορισμός ως προεπιλογή ValueOverwrittenByUserSetup=Προσοχή, αυτή η τιμή μπορεί να αντικατασταθεί από επιλογή του χρήστη (ο κάθε χρήστης μπορεί να κάνει τον δικό του σύνδεσμο clicktodial) ExternalModule=Εξωτερική μονάδα InstalledInto=Εγκαταστάθηκε στον κατάλογο %s -BarcodeInitForThirdparties=Mass barcode init for third-parties +BarcodeInitForThirdparties=Μαζική έναρξη γραμμικού κώδικα για Τρίτα Μέρη BarcodeInitForProductsOrServices=Όγκος barcode init ή επαναφορά για προϊόντα ή υπηρεσίες CurrentlyNWithoutBarCode=Επί του παρόντος, έχετε %s ρεκόρ για %s %s χωρίς barcode ορίζεται. InitEmptyBarCode=Init τιμή για τις επόμενες %s άδειες καταχωρήσεις @@ -523,7 +523,7 @@ FreeLegalTextOnExpenseReports=Δωρεάν νομικό κείμενο σχετ WatermarkOnDraftExpenseReports=Υδατογράφημα για τις εκθέσεις περί δαπανών ProjectIsRequiredOnExpenseReports=The project is mandatory for entering an expense report PrefillExpenseReportDatesWithCurrentMonth=Pre-fill start and end dates of new expense report with start and end dates of the current month -ForceExpenseReportsLineAmountsIncludingTaxesOnly=Force the entry of expense report amounts always in amount with taxes +ForceExpenseReportsLineAmountsIncludingTaxesOnly=Υποχρεώστε την καταχώριση ποσών αναφοράς εξόδων πάντα σε ποσό με φόρους AttachMainDocByDefault=Ρυθμίστε αυτό στο 1 εάν θέλετε να επισυνάψετε το κύριο έγγραφο σε email από προεπιλογή (αν υπάρχει) FilesAttachedToEmail=Επισυνάψετε το αρχείο SendEmailsReminders=Αποστολή υπενθυμίσεων της ημερήσιας διάταξης μέσω ηλεκτρονικού ταχυδρομείου @@ -691,7 +691,7 @@ Module54000Desc=Άμεση εκτύπωση (χωρίς το άνοιγμα τω Module55000Name=Δημοσκόπηση, έρευνα ή ψηφοφορία Module55000Desc=Δημιουργήστε online δημοσκοπήσεις, έρευνες ή ψηφοφορίες (όπως Doodle, Studs, RDVz κ.λπ. ...) Module59000Name=Περιθώρια -Module59000Desc=Module to follow margins +Module59000Desc=Ενότητα για να ακολουθείτε τα περιθώρια Module60000Name=Προμήθειες Module60000Desc=Ένθεμα για τη διαχείριση των προμηθειών Module62000Name=Διεθνείς Εμπορικοί Όροι @@ -717,7 +717,7 @@ Permission32=Δημιουργία / τροποποίηση προϊόντων Permission34=Διαγραφή προϊόντων Permission36=Δείτε / διαχειριστείτε κρυφά προϊόντα Permission38=Εξαγωγή προϊόντων -Permission39=Ignore minimum price +Permission39=Αγνοήστε την ελάχιστη τιμή Permission41=Διαβάστε τα έργα και τα καθήκοντα (κοινό σχέδιο και έργα για τα οποία είμαι υπεύθυνος). Μπορεί επίσης να εισάγει χρόνο που καταναλώνεται, για μένα ή για την ιεραρχία μου, σε εκχωρημένες εργασίες (Timesheet) Permission42=Δημιουργία / τροποποίηση έργων (κοινό έργο και έργα για τα οποία έχω επικοινωνία). Μπορεί επίσης να δημιουργήσει εργασίες και να εκχωρήσει τους χρήστες σε έργα και εργασίες Permission44=Διαγραφή έργων (κοινό έργο και έργα για τα οποία είμαι υπεύθυνος) @@ -726,9 +726,9 @@ Permission61=Διαβάστε τις παρεμβάσεις Permission62=Δημιουργία / τροποποίηση παρεμβάσεων Permission64=Διαγραφή παρεμβάσεων Permission67=Εξαγωγή παρεμβάσεων -Permission68=Send interventions by email -Permission69=Validate interventions -Permission70=Invalidate interventions +Permission68=Αποστολή παρεμβάσεων με email +Permission69=Επικύρωση παρεμβάσεων +Permission70=Ακυρώστε τις παρεμβάσεις Permission71=Διάβασμα μελών Permission72=Δημιουργία / τροποποίηση μελών Permission74=Διαγραφή μελών @@ -756,7 +756,7 @@ Permission106=Εξαγωγή αποστολών Permission109=Διαγραφή αποστολών Permission111=Διάβασμα οικονομικών λογαριασμών Permission112=Δημιουργία / τροποποίηση / διαγραφή και σύγκριση συναλλαγών -Permission113=Setup financial accounts (create, manage categories of bank transactions) +Permission113=Ρύθμιση οικονομικών λογαριασμών (δημιουργία, διαχείριση κατηγοριών τραπεζικών συναλλαγών) Permission114=Συναλλαγή συναλλαγών Permission115=Εξαγωγή συναλλαγών και καταστάσεις λογαριασμών Permission116=Μεταφορές μεταξύ λογαριασμών @@ -765,7 +765,7 @@ Permission121=Διάβασμα τρίτων μερών που συνδέοντα Permission122=Δημιουργία / τροποποίηση τρίτων μερών συνδεδεμένων με το χρήστη Permission125=Διαγραφή τρίτων μερών συνδεδεμένων με το χρήστη Permission126=Εξαγωγή τρίτων μερών -Permission130=Create/modify third parties payment information +Permission130=Δημιουργία/τροποποίηση στοιχείων πληρωμής τρίτων μερών Permission141=Διαβάστε όλα τα έργα και τα καθήκοντα (επίσης ιδιωτικά έργα για τα οποία δεν είμαι επαφή) Permission142=Δημιουργία / τροποποίηση όλων των έργων και εργασιών (επίσης ιδιωτικά έργα για τα οποία δεν είμαι επαφή) Permission144=Διαγράψτε όλα τα έργα και τις εργασίες (επίσης ιδιωτικά έργα για τα οποία δεν έχω επικοινωνία) @@ -862,8 +862,8 @@ Permission403=Επικύρωση εκπτώσεων Permission404=Διαγραφή εκπτώσεων Permission430=Χρησιμοποιήστε τη γραμμή εντοπισμού σφαλμάτων Permission511=Read salaries and payments (yours and subordinates) -Permission512=Create/modify salaries and payments -Permission514=Delete salaries and payments +Permission512=Δημιουργία/τροποποίηση μισθών και πληρωμών +Permission514=Διαγραφή μισθών και πληρωμών Permission517=Read salaries and payments everybody Permission519=Εξαγωγή μισθών Permission520=Ανάγνωση δανείων @@ -1739,7 +1739,7 @@ StockSetup=Ρύθμιση μονάδας αποθέματος IfYouUsePointOfSaleCheckModule=Εάν χρησιμοποιείτε τη μονάδα POS (Point of Sale) που παρέχεται εξ ορισμού ή μια εξωτερική μονάδα, αυτή η ρύθμιση ενδέχεται να αγνοηθεί από τη μονάδα POS. Οι περισσότερες μονάδες POS σχεδιάζονται από προεπιλογή για να δημιουργήσουν άμεσα ένα τιμολόγιο και να μειώσουν το απόθεμα ανεξάρτητα από τις επιλογές εδώ. Επομένως, εάν χρειάζεστε ή όχι να μειώσετε το απόθεμα κατά την εγγραφή μιας πώλησης από το POS σας, ελέγξτε επίσης τη ρύθμιση της μονάδας POS. ##### Menu ##### MenuDeleted=Το μενού διαγράφηκε -Menu=Menu +Menu=Μενού Menus=Μενού TreeMenuPersonalized=Εξατομικευμένα μενού NotTopTreeMenuPersonalized=Εξατομικευμένα μενού που δεν συνδέονται με μια καταχώρηση κορυφαίου μενού @@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Η εγκατάσταση ή η δημιουργία HighlightLinesOnMouseHover=Επισημάνετε τις γραμμές του πινάκου όταν περνάει το ποντίκι HighlightLinesColor=Επισημάνετε το χρώμα της γραμμής όταν το ποντίκι περάσει (χρησιμοποιήστε το 'ffffff' για να μην επισημανθεί) HighlightLinesChecked=Επισημάνετε το χρώμα της γραμμής όταν την ελέγξετε (χρησιμοποιήστε το 'ffffff' για να μην επισημανθεί) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Χρώμα κειμένου του τίτλου σελίδας LinkColor=Χρώμα σε συνδέσμους PressF5AfterChangingThis=Πατήστε CTRL + F5 στο πληκτρολόγιο ή διαγράψτε την προσωρινή μνήμη του προγράμματος περιήγησής σας αφού αλλάξετε αυτήν την τιμή για να την έχετε αποτελεσματική @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/el_GR/bills.lang b/htdocs/langs/el_GR/bills.lang index 6e7606fadb7..7e510ba1ac2 100644 --- a/htdocs/langs/el_GR/bills.lang +++ b/htdocs/langs/el_GR/bills.lang @@ -81,13 +81,14 @@ PaymentsReports=Αναφορές Πληρωμών PaymentsAlreadyDone=Ιστορικό Πληρωμών PaymentsBackAlreadyDone=Οι επιστροφές χρημάτων έχουν γίνει ήδη PaymentRule=Κανόνας Πληρωμής -PaymentMode=Τρόπος πληρωμής -DefaultPaymentMode=Προεπιλεγμένος τύπος πληρωμής +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Προεπιλεγμένος τραπεζικός λογαριασμός -IdPaymentMode=Τύπος πληρωμής (id) -CodePaymentMode=Τύπος πληρωμής (κωδικός) -LabelPaymentMode=Είδος πληρωμής (ετικέτα) -PaymentModeShort=Τρόπος πληρωμής +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Ορος πληρωμής PaymentConditions=Όροι πληρωμής PaymentConditionsShort=Όροι πληρωμής @@ -398,7 +399,7 @@ GeneratedFromTemplate=Δημιουργήθηκε από το τιμολόγιο WarningInvoiceDateInFuture=Warning, the invoice date is higher than current date WarningInvoiceDateTooFarInFuture=Warning, the invoice date is too far from current date ViewAvailableGlobalDiscounts=Δείτε τις διαθέσιμες εκπτώσεις -GroupPaymentsByModOnReports=Group payments by mode on reports +GroupPaymentsByModOnReports=Ομαδικές πληρωμές κατά τρόπο λειτουργίας στις αναφορές # PaymentConditions Statut=Κατάσταση PaymentConditionShortRECEP=Due Upon Receipt diff --git a/htdocs/langs/el_GR/blockedlog.lang b/htdocs/langs/el_GR/blockedlog.lang index b57f73838c8..f0be0bb0a68 100644 --- a/htdocs/langs/el_GR/blockedlog.lang +++ b/htdocs/langs/el_GR/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=Κατάλογος χωρών όπου η OnlyNonValid=Μη έγκυρη TooManyRecordToScanRestrictFilters=Πάρα πολλές εγγραφές για σάρωση / ανάλυση. Περιορίστε τη λίστα με πιο περιοριστικά φίλτρα. RestrictYearToExport=Περιορίστε μήνα / έτος για εξαγωγή +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/el_GR/boxes.lang b/htdocs/langs/el_GR/boxes.lang index e9b326ddb64..68f4040ed0c 100644 --- a/htdocs/langs/el_GR/boxes.lang +++ b/htdocs/langs/el_GR/boxes.lang @@ -18,13 +18,13 @@ BoxLastActions=Τελευταίες ενέργειες BoxLastContracts=Τελευταία συμβόλαια BoxLastContacts=Τελευταίες επαφές/διευθύνσεις BoxLastMembers=Τελευταία μέλη -BoxLastModifiedMembers=Latest modified members -BoxLastMembersSubscriptions=Latest member subscriptions +BoxLastModifiedMembers=Τελευταία τροποποιημένα μέλη +BoxLastMembersSubscriptions=Τελευταίες συνδρομές μελών BoxFicheInter=Τελευταίες παρεμβάσεις BoxCurrentAccounts=Άνοιξε το ισοζύγιο των λογαριασμών BoxTitleMemberNextBirthdays=Γενέθλια αυτού του μήνα (μέλη) -BoxTitleMembersByType=Members by type -BoxTitleMembersSubscriptionsByYear=Members Subscriptions by year +BoxTitleMembersByType=Μέλη ανά τύπο +BoxTitleMembersSubscriptionsByYear=Συνδρομές μελών ανά έτος BoxTitleLastRssInfos=Τα %s πιο πρόσφατα νέα από %s BoxTitleLastProducts=Προϊόντα / Υπηρεσίες: τελευταία τροποποίηση %s BoxTitleProductsAlertStock=Προϊόντα: προειδοποίηση αποθέματος @@ -46,12 +46,12 @@ BoxMyLastBookmarks=Σελιδοδείκτες: τελευταίες %s BoxOldestExpiredServices=Παλαιότερες ενεργές υπηρεσίες που έχουν λήξει BoxLastExpiredServices=Τελευταίες %s παλαιότερες επαφές με ενεργές υπηρεσίες λήξαν BoxTitleLastActionsToDo=Τελευταίες %s ενέργειες προς πραγμαοποίηση -BoxTitleLastContracts=Latest %s contracts which were modified -BoxTitleLastModifiedDonations=Latest %s donations which were modified -BoxTitleLastModifiedExpenses=Latest %s expense reports which were modified -BoxTitleLatestModifiedBoms=Latest %s BOMs which were modified -BoxTitleLatestModifiedMos=Latest %s Manufacturing Orders which were modified -BoxTitleLastOutstandingBillReached=Customers with maximum outstanding exceeded +BoxTitleLastContracts=Τα πιο πρόσφατα %s συμβόλαια που τροποποιήθηκαν +BoxTitleLastModifiedDonations=Τελευταίες %s δωρεές που τροποποιήθηκαν +BoxTitleLastModifiedExpenses=Τελευταίες %s αναφορές εξόδων που τροποποιήθηκαν +BoxTitleLatestModifiedBoms=Τελευταία %s BOM που τροποποιήθηκαν +BoxTitleLatestModifiedMos=Τελευταίες %s Παραγγελίες Κατασκευής που τροποποιήθηκαν +BoxTitleLastOutstandingBillReached=Πελάτες με υπέρβαση του μέγιστου οφειλόμενου BoxGlobalActivity=Η γενική δραστηριότητα για (τιμολόγια, προσφορές, παραγγελίες) BoxGoodCustomers=Καλοί πελάτες BoxTitleGoodCustomers=%s καλών πελατών @@ -91,8 +91,8 @@ BoxTitleLatestModifiedSupplierOrders=Παραγγελίες προμηθευτή BoxTitleLastModifiedCustomerBills=Τιμολόγια πελατών: τροποποιήθηκε τελευταία %s BoxTitleLastModifiedCustomerOrders=Παραγγελίες πώλησης: τελευταία τροποποίηση %s BoxTitleLastModifiedPropals=Τελευταίες τροποποιημένες προτάσεις %s -BoxTitleLatestModifiedJobPositions=Latest %s modified job positions -BoxTitleLatestModifiedCandidatures=Latest %s modified job applications +BoxTitleLatestModifiedJobPositions=Τελευταίες %s τροποποιημένες θέσεις εργασίας +BoxTitleLatestModifiedCandidatures=Τελευταίες %s τροποποιημένες εφαρμογές εργασίας ForCustomersInvoices=Τιμολόγια Πελάτη ForCustomersOrders=Παραγγελίες πελατών ForProposals=Προσφορές @@ -100,8 +100,8 @@ LastXMonthRolling=Ο τελευταίος κύλινδρος %s μήνα ChooseBoxToAdd=Προσθέστε widget στον πίνακα ελέγχου BoxAdded=Το Widget προστέθηκε στον πίνακα ελέγχου σας BoxTitleUserBirthdaysOfMonth=Γενέθλια αυτού του μήνα (χρήστες) -BoxLastManualEntries=Latest record in accountancy entered manually or without source document -BoxTitleLastManualEntries=%s latest record entered manually or without source document +BoxLastManualEntries=Τελευταία εγγραφή στη λογιστική που καταχωρήθηκε χειροκίνητα ή χωρίς έγγραφο πηγής +BoxTitleLastManualEntries=%s τελευταίες εγγραφές που έχουν εισαχθεί χειροκίνητα ή χωρίς έγγραφο προέλευσης NoRecordedManualEntries=Δεν καταγράφονται μη καταχωρημένα μητρώα στη λογιστική BoxSuspenseAccount=Αρίθμηση λογιστικής λειτουργίας με λογαριασμό αναμονής BoxTitleSuspenseAccount=Αριθμός μη διατεθέντων γραμμών @@ -112,9 +112,9 @@ BoxTitleLastCustomerShipments=Τελευταίες %s αποστολές πελ NoRecordedShipments=Καμία καταγεγραμμένη αποστολή πελάτη BoxCustomersOutstandingBillReached=Customers with oustanding limit reached # Pages -UsersHome=Home users and groups -MembersHome=Home Membership -ThirdpartiesHome=Home Thirdparties -TicketsHome=Home Tickets -AccountancyHome=Home Accountancy -ValidatedProjects=Validated projects +UsersHome=Αρχικοί χρήστες και ομάδες +MembersHome=Αρχική Συνδρομή +ThirdpartiesHome=Αρχική Τρίτοι +TicketsHome=Αρχικά Εισιτήρια +AccountancyHome=Αρχική Λογιστική +ValidatedProjects=Επικυρωμένα έργα diff --git a/htdocs/langs/el_GR/cashdesk.lang b/htdocs/langs/el_GR/cashdesk.lang index 480c3fcb4e5..d5b6521d4e4 100644 --- a/htdocs/langs/el_GR/cashdesk.lang +++ b/htdocs/langs/el_GR/cashdesk.lang @@ -41,8 +41,8 @@ Floor=Πάτωμα AddTable=Προσθήκη πίνακα Place=Θέση TakeposConnectorNecesary=Απαιτείται 'Connector TakePOS' -OrderPrinters=Add a button to send the order to some given printers, without payment (for example to send an order to a kitchen) -NotAvailableWithBrowserPrinter=Not available when printer for receipt is set to browser +OrderPrinters=Προσθέστε ένα κουμπί για να στείλετε την παραγγελία σε ορισμένους εκτυπωτές, χωρίς πληρωμή (για παράδειγμα για να στείλετε μια παραγγελία σε μια κουζίνα) +NotAvailableWithBrowserPrinter=Δεν είναι διαθέσιμο όταν ο εκτυπωτής για παραλαβή έχει ρυθμιστεί στο πρόγραμμα περιήγησης SearchProduct=Αναζήτηση προϊόντος Receipt=Παραλαβή Header=Επί κεφαλής @@ -50,16 +50,16 @@ Footer=Υποσέλιδο AmountAtEndOfPeriod=Ποσό στο τέλος της περιόδου (ημέρα, μήνας ή έτος) TheoricalAmount=Θεωρητικό ποσό RealAmount=Πραγματικό ποσό -CashFence=Cash desk closing -CashFenceDone=Cash desk closing done for the period +CashFence=Κλείσιμο ταμείου +CashFenceDone=Το κλείσιμο του ταμείου ολοκληρώθηκε για αυτήν την περίοδο NbOfInvoices=Πλήθος τιμολογίων Paymentnumpad=Τύπος πλακέτας για να πληκτρολογήσετε την πληρωμή Numberspad=Αριθμητικό Pad BillsCoinsPad=Νομίσματα και τραπεζογραμμάτια Pad DolistorePosCategory=Δομοστοιχεία TakePOS και άλλες λύσεις POS για Dolibarr -TakeposNeedsCategories=TakePOS needs at least one product categorie to work -TakeposNeedsAtLeastOnSubCategoryIntoParentCategory=TakePOS needs at least 1 product category under the category %s to work -OrderNotes=Can add some notes to each ordered items +TakeposNeedsCategories=Το TakePOS χρειάζεται τουλάχιστον μία κατηγορία προϊόντων για να λειτουργήσει +TakeposNeedsAtLeastOnSubCategoryIntoParentCategory=Το TakePOS χρειάζεται τουλάχιστον 1 κατηγορία προϊόντων στην κατηγορία %s για να λειτουργήσει +OrderNotes=Μπορεί να προσθέσει μερικές σημειώσεις σε κάθε παραγγελία CashDeskBankAccountFor=Προεπιλεγμένος λογαριασμός που θα χρησιμοποιηθεί για πληρωμές σε NoPaimementModesDefined=Δεν έχει ρυθμιστεί η λειτουργία πρατηρίου που έχει οριστεί στη διαμόρφωση του TakePOS TicketVatGrouped=Ομαδικός ΦΠΑ ανά τιμή σε εισιτήρια | αποδείξεις @@ -84,7 +84,7 @@ InvoiceIsAlreadyValidated=Το τιμολόγιο έχει ήδη επικυρω NoLinesToBill=Δεν υπάρχουν γραμμές που να χρεώνουν CustomReceipt=Προσαρμοσμένη παραλαβή ReceiptName=Όνομα παραλαβής -ProductSupplements=Manage supplements of products +ProductSupplements=Διαχειριστείτε τα συμπληρώματα προϊόντων SupplementCategory=Συμπλήρωμα κατηγορίας ColorTheme=Χρώμα θέματος Colorful=Πολύχρωμα @@ -96,41 +96,41 @@ TakeposConnectorMethodDescription=Εξωτερική μονάδα με επιπ PrintMethod=Μέθοδος εκτύπωσης ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. The server hosting the application can't be in the Cloud (must be able to reach the printers in your network). ByTerminal=Από τερματικό -TakeposNumpadUsePaymentIcon=Use icon instead of text on payment buttons of numpad -CashDeskRefNumberingModules=Numbering module for POS sales +TakeposNumpadUsePaymentIcon=Χρησιμοποιήστε το εικονίδιο αντί για το κείμενο στα κουμπιά πληρωμής του πληκτρολογίου numpad +CashDeskRefNumberingModules=Ενότητα αρίθμησης για πωλήσεις POS CashDeskGenericMaskCodes6 =  
{TN} ετικέτα χρησιμοποιείται για την προσθήκη του αριθμού τερματικού TakeposGroupSameProduct=Ομαδοποιήστε τις ίδιες σειρές προϊόντων StartAParallelSale=Ξεκινήστε μια νέα παράλληλη πώληση -SaleStartedAt=Sale started at %s -ControlCashOpening=Open the "Control cash" popup when opening the POS -CloseCashFence=Close cash desk control +SaleStartedAt=Η πώληση ξεκίνησε στο %s +ControlCashOpening=Ανοίξτε το αναδυόμενο παράθυρο "Έλεγχος μετρητών" κατά το άνοιγμα του POS +CloseCashFence=Κλείστε το ταμείο ελέγχου CashReport=Έκθεση μετρητών MainPrinterToUse=Κύριος εκτυπωτής προς χρήση OrderPrinterToUse=Παραγγείλετε τον εκτυπωτή για χρήση MainTemplateToUse=Κύριο πρότυπο για χρήση OrderTemplateToUse=Πρότυπο παραγγελίας για χρήση BarRestaurant=Bar Restaurant -AutoOrder=Order by the customer himself -RestaurantMenu=Menu -CustomerMenu=Customer menu -ScanToMenu=Scan QR code to see the menu -ScanToOrder=Scan QR code to order -Appearance=Appearance -HideCategoryImages=Hide Category Images -HideProductImages=Hide Product Images -NumberOfLinesToShow=Number of lines of images to show -DefineTablePlan=Define tables plan -GiftReceiptButton=Add a "Gift receipt" button -GiftReceipt=Gift receipt -ModuleReceiptPrinterMustBeEnabled=Module Receipt printer must have been enabled first -AllowDelayedPayment=Allow delayed payment -PrintPaymentMethodOnReceipts=Print payment method on tickets|receipts -WeighingScale=Weighing scale -ShowPriceHT = Display the column with the price excluding tax (on screen) -ShowPriceHTOnReceipt = Display the column with the price excluding tax (on the receipt) -CustomerDisplay=Customer display +AutoOrder=Παραγγελία από τον ίδιο τον πελάτη +RestaurantMenu=Μενού +CustomerMenu=Μενού πελάτη +ScanToMenu=Σαρώστε τον κωδικό QR για να δείτε το μενού +ScanToOrder=Σαρώστε τον κωδικό QR για παραγγελία +Appearance=Εμφάνιση +HideCategoryImages=Απόκρυψη εικόνων κατηγορίας +HideProductImages=Απόκρυψη εικόνων προϊόντων +NumberOfLinesToShow=Αριθμός γραμμών εικόνων προς εμφάνιση +DefineTablePlan=Καθορισμός σχεδίου πινάκων +GiftReceiptButton=Προσθέστε ένα κουμπί "Απόδειξη δώρου". +GiftReceipt=Απόδειξη δώρου +ModuleReceiptPrinterMustBeEnabled=Η εφαρμογή/ενότητα Receipt Printer πρέπει να έχει ενεργοποιηθεί πρώτα +AllowDelayedPayment=Να επιτρέπεται η καθυστερημένη πληρωμή +PrintPaymentMethodOnReceipts=Εκτύπωση τρόπου πληρωμής σε εισιτήρια|αποδείξεις +WeighingScale=Ζυγαριά +ShowPriceHT = Εμφάνιση της στήλης με την τιμή χωρίς φόρο (στην οθόνη) +ShowPriceHTOnReceipt = Εμφάνιση της στήλης με την τιμή χωρίς φόρο (στην απόδειξη) +CustomerDisplay=Εμφάνιση πελάτη SplitSale=Split sale -PrintWithoutDetailsButton=Add "Print without details" button -PrintWithoutDetailsLabelDefault=Line label by default on printing without details -PrintWithoutDetails=Print without details -YearNotDefined=Year is not defined +PrintWithoutDetailsButton=Προσθέστε το κουμπί "Εκτύπωση χωρίς λεπτομέρειες". +PrintWithoutDetailsLabelDefault=Ετικέτα γραμμής από προεπιλογή στην εκτύπωση χωρίς λεπτομέρειες +PrintWithoutDetails=Εκτύπωση χωρίς λεπτομέρειες +YearNotDefined=Το έτος δεν ορίστηκε diff --git a/htdocs/langs/el_GR/categories.lang b/htdocs/langs/el_GR/categories.lang index 6ba2a0b5196..cf6188f58bb 100644 --- a/htdocs/langs/el_GR/categories.lang +++ b/htdocs/langs/el_GR/categories.lang @@ -10,16 +10,16 @@ modify=Αλλαγή Classify=Ταξινόμηση CategoriesArea=Πεδίο Ετικέτες/Κατηγορίες ProductsCategoriesArea=Πεδίο Προϊόντα/Υπηρεσίες Ετικέτες/Κατηγορίες -SuppliersCategoriesArea=Vendor tags/categories area -CustomersCategoriesArea=Customer tags/categories area -MembersCategoriesArea=Member tags/categories area -ContactsCategoriesArea=Contact tags/categories area -AccountsCategoriesArea=Bank account tags/categories area +SuppliersCategoriesArea=Περιοχή ετικετών/κατηγοριών προμηθευτή +CustomersCategoriesArea=Περιοχή ετικετών/κατηγοριών πελατών +MembersCategoriesArea=Περιοχή ετικετών/κατηγοριών μελών +ContactsCategoriesArea=Περιοχή ετικετών/κατηγοριών επαφών +AccountsCategoriesArea=Περιοχή ετικετών/κατηγοριών τραπεζικού λογαριασμού ProjectsCategoriesArea=Πεδίο Ετικετών/Κατηγοριών έργου -UsersCategoriesArea=User tags/categories area +UsersCategoriesArea=Περιοχή ετικετών/κατηγοριών χρήστη SubCats=Υποκατηγορίες CatList=Λίστα Ετικετών/Κατηγοριών -CatListAll=List of tags/categories (all types) +CatListAll=Λίστα ετικετών/κατηγοριών (όλοι οι τύποι) NewCategory=Νέα Ετικέτα/Κατηγορία ModifCat=Τροποποίηση Ετικέτας/Κατηγορίας CatCreated=Ετικέτα/Κατηγορία δημιουργήθηκε @@ -68,33 +68,33 @@ ThisCategoryHasNoItems=Αυτή η κατηγορία δεν περιέχει σ CategId=Ετικέτα/κατηγορία id ParentCategory=Parent tag/category ParentCategoryLabel=Label of parent tag/category -CatSupList=List of vendors tags/categories -CatCusList=List of customers/prospects tags/categories +CatSupList=Λίστα ετικετών/κατηγοριών προμηθευτών +CatCusList=Λίστα ετικετών/κατηγοριών πελατών/υποψήφιων πελατών CatProdList=Λίστα προϊόντων ετικέτες/κατηγορίες CatMemberList=Λίστα μελών ετικέτες/κατηγορίες -CatContactList=List of contacts tags/categories -CatProjectsList=List of projects tags/categories -CatUsersList=List of users tags/categories -CatSupLinks=Links between vendors and tags/categories +CatContactList=Λίστα ετικετών/κατηγοριών επαφών +CatProjectsList=Λίστα ετικετών/κατηγοριών έργων +CatUsersList=Λίστα ετικετών/κατηγοριών χρηστών +CatSupLinks=Σύνδεσμοι μεταξύ προμηθευτών και ετικετών/κατηγοριών CatCusLinks=Συνδέσεις μεταξύ πελατών/προοπτικών και ετικετών/κατηγοριών CatContactsLinks=Σύνδεσμοι μεταξύ επαφών / διευθύνσεων και ετικετών / κατηγοριών CatProdLinks=Συνδέσεις μεταξύ προϊόντων/υπηρεσιών και ετικετών/κατηγοριών -CatMembersLinks=Links between members and tags/categories +CatMembersLinks=Σύνδεσμοι μεταξύ μελών και ετικετών/κατηγοριών CatProjectsLinks=Links between projects and tags/categories -CatUsersLinks=Links between users and tags/categories +CatUsersLinks=Σύνδεσμοι μεταξύ χρηστών και ετικετών/κατηγοριών DeleteFromCat=Αφαίρεση αυτής της ετικέτας/κατηγορίας ExtraFieldsCategories=Συμπληρωματικά χαρακτηριστικά CategoriesSetup=Ρύθμιση ετικετών/κατηγοριών CategorieRecursiv=Αυτόματη σύνδεση με μητρική ετικέτα/κατηγορία CategorieRecursivHelp=Εάν είναι ενεργοποιημένη η επιλογή, όταν προσθέσετε ένα προϊόν σε μια υποκατηγορία, το προϊόν θα προστεθεί επίσης στην κατηγορία γονέων. AddProductServiceIntoCategory=Προσθέστε το ακόλουθο προϊόν/υπηρεσία -AddCustomerIntoCategory=Assign category to customer -AddSupplierIntoCategory=Assign category to supplier +AddCustomerIntoCategory=Εκχώρηση κατηγορίας στον πελάτη +AddSupplierIntoCategory=Εκχώρηση κατηγορίας στον προμηθευτή ShowCategory=Εμφάνιση ετικέτας/κατηγορίας ByDefaultInList=By default in list ChooseCategory=Επιλέξτε κατηγορία -StocksCategoriesArea=Warehouse Categories -ActionCommCategoriesArea=Event Categories -WebsitePagesCategoriesArea=Page-Container Categories -KnowledgemanagementsCategoriesArea=KM article Categories -UseOrOperatorForCategories=Use 'OR' operator for categories +StocksCategoriesArea=Κατηγορίες Αποθήκης +ActionCommCategoriesArea=Κατηγορίες εκδηλώσεων +WebsitePagesCategoriesArea=Κατηγορίες Σελίδας-Κοντέινερ +KnowledgemanagementsCategoriesArea=Κατηγορίες άρθρου KM +UseOrOperatorForCategories=Χρησιμοποιήστε τον τελεστή 'OR' για κατηγορίες diff --git a/htdocs/langs/el_GR/companies.lang b/htdocs/langs/el_GR/companies.lang index 5bc2908e9a1..358745ba199 100644 --- a/htdocs/langs/el_GR/companies.lang +++ b/htdocs/langs/el_GR/companies.lang @@ -43,10 +43,10 @@ Individual=Ιδιώτης ToCreateContactWithSameName=Θα δημιουργήσει αυτόματα μια επαφή / διεύθυνση με τις ίδιες πληροφορίες με το τρίτο μέρος στο τρίτο μέρος. Στις περισσότερες περιπτώσεις, ακόμη και αν το τρίτο σας πρόσωπο είναι φυσικό πρόσωπο, είναι αρκετό να δημιουργηθεί ένα τρίτο μέρος μόνο του. ParentCompany=Γονική εταιρία Subsidiaries=Θυγατρικές -ReportByMonth=Report per month -ReportByCustomers=Report per customer -ReportByThirdparties=Report per thirdparty -ReportByQuarter=Report per rate +ReportByMonth=Αναφορά ανά Μήνα +ReportByCustomers=Αναφορά ανά Πελάτη +ReportByThirdparties=Αναφορά ανά Τρίτο Μέρος +ReportByQuarter=Αναφορά ανά Τιμή CivilityCode=Προσφωνήσεις RegisteredOffice=Έδρα της εταιρείας Lastname=Επίθετο @@ -125,7 +125,7 @@ ProfId1AT=Prof Id 1 (USt.-IdNr) ProfId2AT=Prof Id 2 (USt.-Nr) ProfId3AT=Prof Id 3 (Handelsregister-Nr.) ProfId4AT=- -ProfId5AT=EORI number +ProfId5AT=Αριθμός EORI ProfId6AT=- ProfId1AU=Prof Id 1 (ABN) ProfId2AU=- @@ -137,7 +137,7 @@ ProfId1BE=Prof Id 1 (Professional number) ProfId2BE=- ProfId3BE=- ProfId4BE=- -ProfId5BE=EORI number +ProfId5BE=Αριθμός EORI ProfId6BE=- ProfId1BR=- ProfId2BR=IE (Inscricao Estadual) @@ -145,11 +145,11 @@ ProfId3BR=IM (Inscricao Municipal) ProfId4BR=CPF #ProfId5BR=CNAE #ProfId6BR=INSS -ProfId1CH=UID-Nummer +ProfId1CH=UID-Αριθμός ProfId2CH=- ProfId3CH=Prof Id 1 (Federal number) ProfId4CH=Prof Id 2 (Αριθμός Εμπορικής Εγγραφής) -ProfId5CH=EORI number +ProfId5CH=Αριθμός EORI ProfId6CH=- ProfId1CL=Ο καθηγητής Id 1 (RUT) ProfId2CL=- @@ -179,7 +179,7 @@ ProfId1DE=Prof Id 1 (USt.-IdNr) ProfId2DE=Prof Id 2 (USt.-Nr) ProfId3DE=Prof Id 3 (Handelsregister-Nr.) ProfId4DE=- -ProfId5DE=EORI number +ProfId5DE=Αριθμός EORI ProfId6DE=- ProfId1ES=Prof Id 1 (CIF/NIF) ProfId2ES=Prof Id 2 (Social security number) @@ -193,7 +193,7 @@ ProfId3FR=Prof Id 3 (NAF, old APE) ProfId4FR=Prof Id 4 (RCS/RM) ProfId5FR=Prof Id 5 (numéro EORI) ProfId6FR=- -ProfId1ShortFR=SIREN +ProfId1ShortFR=ΣΕΙΡΗΝΑ ProfId2ShortFR=SIRET ProfId3ShortFR=NAF ProfId4ShortFR=RCS @@ -221,13 +221,13 @@ ProfId1IT=- ProfId2IT=- ProfId3IT=- ProfId4IT=- -ProfId5IT=EORI number +ProfId5IT=Αριθμός EORI ProfId6IT=- ProfId1LU=Id. prof. 1 (R.C.S. Luxembourg) ProfId2LU=Id. prof. 2 (Business permit) ProfId3LU=- ProfId4LU=- -ProfId5LU=EORI number +ProfId5LU=Αριθμός EORI ProfId6LU=- ProfId1MA=Id prof. 1 (RC) ProfId2MA=Id prof. 2 (Patente) @@ -245,7 +245,7 @@ ProfId1NL=KVK nummer ProfId2NL=- ProfId3NL=- ProfId4NL=Burgerservicenummer (BSN) -ProfId5NL=EORI number +ProfId5NL=Αριθμός EORI ProfId6NL=- ProfId1PT=Prof Id 1 (NIPC) ProfId2PT=Prof Id 2 (Social security number) @@ -328,7 +328,7 @@ AddContact=Δημιουργία επαφής AddContactAddress=Δημιουργία επαφής/διεύθυνση EditContact=Επεξεργασία επαφής EditContactAddress=Επεξεργασία επαφής/διεύθυνσης -Contact=Contact/Address +Contact=Επαφή/Διεύθυνση Contacts=Αντιπρόσωποι ContactId=Contact id ContactsAddresses=Επαφές/Διευθύνσεις @@ -349,15 +349,15 @@ CustomerCodeDesc=Κωδικός πελάτη, μοναδικός για κάθε SupplierCodeDesc=Κωδικός προμηθευτή, μοναδικό για όλους τους προμηθευτές RequiredIfCustomer=Απαιτείται αν το στοιχείο είναι πελάτης ή προοπτική RequiredIfSupplier=Απαιτείται αν κάποιος τρίτος είναι πωλητής -ValidityControledByModule=Validity controlled by the module +ValidityControledByModule=Η εγκυρότητα ελέγχεται από τη μονάδα ThisIsModuleRules=Κανόνες για αυτήν την ενότητα ProspectToContact=Προοπτική σε Επαφή CompanyDeleted="%s" διαγράφηκε από την βάση δεδομένων ListOfContacts=Λίστα αντιπροσώπων ListOfContactsAddresses=Λίστα αντιπροσώπων ListOfThirdParties=Κατάλογος τρίτων μερών -ShowCompany=Third Party -ShowContact=Contact-Address +ShowCompany=Τρίτο Μέρος +ShowContact=Επαφή-Διεύθυνση ContactsAllShort=Όλα (Χωρίς Φίλτρο) ContactType=Τύπος αντιπροσώπου επικοινωνίας ContactForOrders=Αντιπρόσωπος επικοινωνίας για παραγγελία @@ -381,11 +381,11 @@ VATIntraCheck=Έλεγχος VATIntraCheckDesc=Το αναγνωριστικό ΦΠΑ πρέπει να περιλαμβάνει το πρόθεμα χώρας. Ο σύνδεσμος %s χρησιμοποιεί την ευρωπαϊκή υπηρεσία ελέγχου ΦΠΑ (VIES), η οποία απαιτεί πρόσβαση στο Διαδίκτυο από το διακομιστή Dolibarr. VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do VATIntraCheckableOnEUSite=Ελέγξτε το ενδοκοινοτικό αναγνωριστικό ΦΠΑ στον δικτυακό τόπο της Ευρωπαϊκής Επιτροπής -VATIntraManualCheck=You can also check manually on the European Commission website %s +VATIntraManualCheck=Μπορείτε επίσης να ελέγξετε με μη αυτόματο τρόπο στον ιστότοπο της Ευρωπαϊκής Επιτροπής %s ErrorVATCheckMS_UNAVAILABLE=Check not possible. Check service is not provided by the member state (%s). NorProspectNorCustomer=Δεν προοπτική, ούτε πελάτης JuridicalStatus=Τύπος νομικού προσώπου -Workforce=Workforce +Workforce=ΕΡΓΑΤΙΚΟ Δυναμικό Staff=Εργαζόμενοι ProspectLevelShort=Δυναμική ProspectLevel=Δυναμική προοπτικής @@ -490,6 +490,6 @@ MulticurrencyUsed=Χρησιμοποιήστε το Πολλαπλάσιο MulticurrencyCurrency=Νόμισμα InEEC=Ευρώπη (ΕΕ) RestOfEurope=Υπόλοιπη Ευρώπη (ΕΕ) -OutOfEurope=Out of Europe (EEC) +OutOfEurope=Εκτός Ευρώπης (ΕΟΚ) CurrentOutstandingBillLate=Current outstanding bill late -BecarefullChangeThirdpartyBeforeAddProductToInvoice=Be carefull, depending on your product price settings, you should change thirdparty before adding product to POS. +BecarefullChangeThirdpartyBeforeAddProductToInvoice=Προσοχή, ανάλογα με τις ρυθμίσεις τιμής του προϊόντος σας, θα πρέπει να αλλάξετε το Τρίτο Μέρος πριν προσθέσετε το προϊόν στο POS. diff --git a/htdocs/langs/el_GR/compta.lang b/htdocs/langs/el_GR/compta.lang index fd4b2dc3b77..17136f57f5d 100644 --- a/htdocs/langs/el_GR/compta.lang +++ b/htdocs/langs/el_GR/compta.lang @@ -65,12 +65,12 @@ LT2SupplierIN=Οι αγορές SGST VATCollected=VAT collected StatusToPay=Προς πληρωμή SpecialExpensesArea=Περιοχή για όλες τις ειδικές πληρωμές -VATExpensesArea=Area for all TVA payments +VATExpensesArea=Περιοχή όλων των πληρωμών TVA SocialContribution=Κοινωνική ή φορολογική εισφορά SocialContributions=Κοινωνικές ή φορολογικές εισφορές SocialContributionsDeductibles=Deductible social or fiscal taxes SocialContributionsNondeductibles=Nondeductible social or fiscal taxes -DateOfSocialContribution=Date of social or fiscal tax +DateOfSocialContribution=Ημερομηνία κοινωνικού ή φορολογικού φόρου LabelContrib=Label contribution TypeContrib=Type contribution MenuSpecialExpenses=Ειδικά έξοδα @@ -86,7 +86,7 @@ PaymentCustomerInvoice=Πληρωμή τιμολογίου πελάτη PaymentSupplierInvoice=πληρωμή τιμολογίου προμηθευτή PaymentSocialContribution=Πληρωμή Κοινωνικής/Φορολογικής εισφοράς PaymentVat=Πληρωμή Φ.Π.Α. -AutomaticCreationPayment=Automatically record the payment +AutomaticCreationPayment=Αυτόματη καταγραφή πληρωμής ListPayment=Λίστα πληρωμών ListOfCustomerPayments=Λίστα πληρωμών πελατών ListOfSupplierPayments=Λίστα πληρωμών προμηθευτών @@ -106,8 +106,8 @@ LT2PaymentES=IRPF Πληρωμής LT2PaymentsES=Πληρωμές IRPF VATPayment=Πληρωμή ΦΠΑ πωλήσεων VATPayments=Πληρωμές ΦΠΑ πωλήσεων -VATDeclarations=VAT declarations -VATDeclaration=VAT declaration +VATDeclarations=Δηλώσεις ΦΠΑ +VATDeclaration=Δήλωση ΦΠΑ VATRefund=Sales tax refund NewVATPayment=Νέα καταβολή φόρου επί των πωλήσεων NewLocalTaxPayment=Νέα πληρωμή φόρου %s @@ -115,7 +115,7 @@ Refund=Refund SocialContributionsPayments=Πληρωμές Κοινωνικών/Φορολογικών εισφορών ShowVatPayment=Εμφάνιση πληρωμής φόρου TotalToPay=Σύνολο πληρωμής -BalanceVisibilityDependsOnSortAndFilters=Balance is visible in this list only if table is sorted on %s and filtered on 1 bank account (with no other filters) +BalanceVisibilityDependsOnSortAndFilters=Το υπόλοιπο είναι ορατό σε αυτήν τη λίστα μόνο εάν ο πίνακας είναι ταξινομημένος σε %s και φιλτράρεται σε 1 τραπεζικό λογαριασμό (χωρίς άλλα φίλτρα) CustomerAccountancyCode=Κωδικός λογιστικής πελάτη SupplierAccountancyCode=Κωδικός Προμηθευτή CustomerAccountancyCodeShort=Cust. account. code @@ -135,7 +135,7 @@ NewCheckReceipt=Νέα έκπτωση NewCheckDeposit=Νέα κατάθεση επιταγής NewCheckDepositOn=Create receipt for deposit on account: %s NoWaitingChecks=Δεν υπάρχουν επιταγές που αναμένουν κατάθεση. -DateChequeReceived=Check receiving date +DateChequeReceived=Ελέγξτε την ημερομηνία λήψης NbOfCheques=Αριθμός ελέγχων PaySocialContribution=Πληρωμή Κοινωνικής/Φορολογικής εισφοράς PayVAT=Pay a VAT declaration diff --git a/htdocs/langs/el_GR/errors.lang b/htdocs/langs/el_GR/errors.lang index 0229202606d..967c1b4090b 100644 --- a/htdocs/langs/el_GR/errors.lang +++ b/htdocs/langs/el_GR/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Η επαφή αυτή έχει ήδ ErrorCashAccountAcceptsOnlyCashMoney=Αυτό τραπεζικός λογαριασμός είναι ένας λογαριασμός σε μετρητά, έτσι ώστε να δέχεται πληρωμές σε μετρητά τύπου μόνο. ErrorFromToAccountsMustDiffers=Πηγή και τους στόχους των τραπεζικών λογαριασμών πρέπει να είναι διαφορετικό. ErrorBadThirdPartyName=Κακή τιμή για όνομα τρίτου μέρους +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=Το %s είναι υποχρεωτικό +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Λάθος σύνταξη για τον κωδικό πελάτη ErrorBadBarCodeSyntax=Κακή σύνταξη για τον γραμμωτό κώδικα. Μπορεί να ορίσετε έναν κακό τύπο γραμμωτού κώδικα ή έχετε ορίσει μια μάσκα γραμμωτού κώδικα για την αρίθμηση που δεν ταιριάζει με την τιμή που σαρώθηκε. ErrorCustomerCodeRequired=Κωδικός πελάτη απαιτείται @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Η παράμετρος PHP upload_max_filesize (%s) είναι υψηλότερη από την παράμετρο PHP post_max_size (%s). Αυτό δεν είναι μια σταθερή ρύθμιση. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/el_GR/eventorganization.lang b/htdocs/langs/el_GR/eventorganization.lang index 44aa4634cbe..f239c426ec8 100644 --- a/htdocs/langs/el_GR/eventorganization.lang +++ b/htdocs/langs/el_GR/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/el_GR/holiday.lang b/htdocs/langs/el_GR/holiday.lang index 4f654ca2fb5..561229d411a 100644 --- a/htdocs/langs/el_GR/holiday.lang +++ b/htdocs/langs/el_GR/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Διακοπές για έγκριση NobodyHasPermissionToValidateHolidays=Κανείς δεν έχει άδεια να επικυρώσει διακοπές HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/el_GR/knowledgemanagement.lang b/htdocs/langs/el_GR/knowledgemanagement.lang index 58313c6e2b6..200d27dd5ed 100644 --- a/htdocs/langs/el_GR/knowledgemanagement.lang +++ b/htdocs/langs/el_GR/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/el_GR/mrp.lang b/htdocs/langs/el_GR/mrp.lang index c3e453965bb..ff6820785f6 100644 --- a/htdocs/langs/el_GR/mrp.lang +++ b/htdocs/langs/el_GR/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Είστε βέβαιοι ότι θέλετε να κλωνοποιήσετε την Παραγγελία Παραγωγής %s? ManufacturingEfficiency=Αποτελεσματικότητα κατασκευής ConsumptionEfficiency=Απόδοση κατανάλωσης -ValueOfMeansLoss=Η τιμή 0,95 σημαίνει έναν μέσο όρο 5%% απώλειας κατά την παραγωγή +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Η τιμή 0,95 σημαίνει κατά μέσο όρο απώλεια παραγόμενου προϊόντος 5%% DeleteBillOfMaterials=Διαγραφή λογαριασμού υλικών DeleteMo=Διαγραφή Παραγγελίας Παραγωγής diff --git a/htdocs/langs/el_GR/other.lang b/htdocs/langs/el_GR/other.lang index 2be932a1d9e..22d026de39d 100644 --- a/htdocs/langs/el_GR/other.lang +++ b/htdocs/langs/el_GR/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Έργο που δημιουργήθηκε από TicketCreatedByEmailCollector=Εισιτήριο που δημιουργήθηκε από τον συλλέκτη ηλεκτρονικού ταχυδρομείου από το ηλεκτρονικό ταχυδρομείο MSGID %s OpeningHoursFormatDesc=Χρησιμοποιήστε το "-" για να διαχωρίσετε τις ώρες ανοίγματος και κλεισίματος.
Χρησιμοποιήστε "κενό" για να εισάγετε διαφορετικές περιοχές.
Παράδειγμα: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/el_GR/products.lang b/htdocs/langs/el_GR/products.lang index 8067a1c651d..6ed351723a2 100644 --- a/htdocs/langs/el_GR/products.lang +++ b/htdocs/langs/el_GR/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/el_GR/projects.lang b/htdocs/langs/el_GR/projects.lang index 8fb56b5cf91..a31c1391fd3 100644 --- a/htdocs/langs/el_GR/projects.lang +++ b/htdocs/langs/el_GR/projects.lang @@ -6,23 +6,23 @@ ProjectLabel=Ετικέτα έργου ProjectsArea=Περιοχή έργων ProjectStatus=Κατάσταση έργου SharedProject=Όλοι -PrivateProject=Αντιπρόσωποι του έργου -ProjectsImContactFor=Projects for which I am explicitly a contact +PrivateProject=Επαφές του έργου +ProjectsImContactFor=Έργα για τα οποία είμαι αποκλειστική επαφή AllAllowedProjects=Όλα τα έργα που μπορώ να διαβάσω (δικά μου + δημόσια) AllProjects=Όλα τα έργα -MyProjectsDesc=This view is limited to the projects that you are a contact for +MyProjectsDesc=Αυτή η προβολή περιορίζεται στα έργα για τα οποία είστε επαφή ProjectsPublicDesc=Η άποψη αυτή παρουσιάζει όλα τα έργα σας επιτρέπεται να διαβάσετε. TasksOnProjectsPublicDesc=Αυτή η προβολή παρουσιάζει όλες τις εργασίες στα έργα που επιτρέπεται να διαβάσετε. ProjectsPublicTaskDesc=Αυτή η προβολή παρουσιάζει όλα τα έργα και τα καθήκοντα που επιτρέπεται να δείτε. ProjectsDesc=Η άποψη αυτή παρουσιάζει όλα τα έργα (δικαιώματα χρήστη να δώσει δικαίωμα για να δείτε τα πάντα). TasksOnProjectsDesc=Αυτή η προβολή παρουσιάζει όλες τις εργασίες σε όλα τα έργα (οι άδειες χρήστη σας επιτρέπουν να δείτε τα πάντα). -MyTasksDesc=This view is limited to the projects or tasks that you are a contact for +MyTasksDesc=Αυτή η προβολή περιορίζεται στα έργα ή εργασίες για τα οποία είστε επαφή OnlyOpenedProject=Είναι ορατά μόνο τα ανοιχτά έργα (δεν εμφανίζονται έργα σε μορφή πρόχειρης ή κλειστής). ClosedProjectsAreHidden=Τα κλειστά έργα δεν είναι ορατά. TasksPublicDesc=Η άποψη αυτή παρουσιάζει όλα τα έργα και τα καθήκοντα που επιτρέπεται να διαβάζουν. TasksDesc=Η άποψη αυτή παρουσιάζει όλα τα έργα και τα καθήκοντα (δικαιώματα χρήστη να δώσει δικαίωμα για να δείτε τα πάντα). AllTaskVisibleButEditIfYouAreAssigned=Όλες οι εργασίες για πιστοποιημένα έργα είναι ορατές, αλλά μπορείτε να εισάγετε χρόνο μόνο για εργασία που έχει εκχωρηθεί σε επιλεγμένο χρήστη. Εκχωρήστε εργασία αν χρειαστεί να εισαγάγετε χρόνο σε αυτήν. -OnlyYourTaskAreVisible=Only tasks assigned to you are visible. If you need to enter time on a task and if the task is not visible here, then you need to assign the task to yourself. +OnlyYourTaskAreVisible=Μόνο εργασίες που σας έχουν ανατεθεί είναι ορατές. Αν χρειάζεται να εισάγετε χρόνο στην εργασία και η εργασία δεν είναι ορατή, πρέπει να αντιστοιχίσετε την εργασία στον εαυτό σας. ImportDatasetTasks=Καθήκοντα έργων ProjectCategories=Ετικέτες / κατηγορίες έργου NewProject=Νέο Έργο @@ -33,8 +33,8 @@ ConfirmDeleteAProject=Είστε βέβαιοι ότι θέλετε να δια ConfirmDeleteATask=Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την εργασία; OpenedProjects=Ανοιχτά έργα OpenedTasks=Άνοιγμα εργασιών -OpportunitiesStatusForOpenedProjects=Προέρχεται το ποσό των ανοιχτών έργων ανά κατάσταση -OpportunitiesStatusForProjects=Προβάλλει το ποσό των έργων ανά κατάσταση +OpportunitiesStatusForOpenedProjects=Ποσό προοπτικών ανοιχτών έργων ανά κατάσταση +OpportunitiesStatusForProjects=Ποσό προοπτικών έργων ανά κατάσταση ShowProject=Εμφάνιση έργου ShowTask=Εμφάνιση Εργασίας SetProject=Set project @@ -76,24 +76,24 @@ MyActivities=Οι εργασίες/δραστηρ. μου MyProjects=Τα έργα μου MyProjectsArea=Τα έργα μου Περιοχή DurationEffective=Αποτελεσματική διάρκεια -ProgressDeclared=Declared real progress +ProgressDeclared=Ορίστε την πραγματική πρόοδο TaskProgressSummary=Πρόοδος εργασιών CurentlyOpenedTasks=Ανοιχτές εργασίες -TheReportedProgressIsLessThanTheCalculatedProgressionByX=The declared real progress is less %s than the progress on consumption -TheReportedProgressIsMoreThanTheCalculatedProgressionByX=The declared real progress is more %s than the progress on consumption -ProgressCalculated=Progress on consumption +TheReportedProgressIsLessThanTheCalculatedProgressionByX=Η δηλωμένη πραγματική πρόοδος είναι μικρότερη κατά %s από την πρόοδο που έχει καταναλωθεί +TheReportedProgressIsMoreThanTheCalculatedProgressionByX=Η δηλωμένη πραγματική πρόοδος είναι μεγαλύτερη κατά %s από την πρόοδο που έχει καταναλωθεί +ProgressCalculated=Πρόοδος που έχει καταναλωθεί WhichIamLinkedTo=με το οποίο είμαι συνδεδεμένος WhichIamLinkedToProject=που είμαι συνδεδεμένος με το έργο Time=Χρόνος -TimeConsumed=Consumed +TimeConsumed=Έχει καταναλωθεί ListOfTasks=Κατάλογος εργασιών -GoToListOfTimeConsumed=Μεταβείτε στη λίστα του χρόνου που καταναλώνετε +GoToListOfTimeConsumed=Μεταβείτε στη λίστα του χρόνου που έχει καταναλωθεί GanttView=Gantt View -ListWarehouseAssociatedProject=List of warehouses associated to the project +ListWarehouseAssociatedProject=Λίστα αποθηκών που σχετίζονται με το έργο ListProposalsAssociatedProject=Κατάλογος των εμπορικών προτάσεων που σχετίζονται με το έργο ListOrdersAssociatedProject=Κατάλογος παραγγελιών πωλήσεων που σχετίζονται με το έργο ListInvoicesAssociatedProject=Κατάλογος των τιμολογίων πελατών που σχετίζονται με το έργο -ListPredefinedInvoicesAssociatedProject=Λίστα τιμολογίων προτύπου πελάτη που σχετίζονται με το έργο +ListPredefinedInvoicesAssociatedProject=Λίστα πρότυπων τιμολογίων πελάτη που σχετίζονται με το έργο ListSupplierOrdersAssociatedProject=Κατάλογος εντολών αγοράς που σχετίζονται με το έργο ListSupplierInvoicesAssociatedProject=Λίστα τιμολογίων πωλητών που σχετίζονται με το έργο ListContractAssociatedProject=Κατάλογος των συμβάσεων που σχετίζονται με το έργο @@ -117,7 +117,7 @@ ChildOfTask=Παιδί της αποστολής TaskHasChild=Η εργασία έχει παιδί NotOwnerOfProject=Δεν ιδιοκτήτης αυτού του ιδιωτικού έργου, AffectedTo=Κατανέμονται σε -CantRemoveProject=This project can't be removed as it is referenced by some other objects (invoice, orders or other). See tab '%s'. +CantRemoveProject=Το έργο δεν μπορεί να διαγραφεί καθώς συνδέεται με κάποιο άλλο αντικείμενο (τιμολόγιο, εντολές ή αντίστοιχο). Δείτε την καρτέλα '%s'. ValidateProject=Επικύρωση projet ConfirmValidateProject=Είστε βέβαιοι ότι θέλετε να επικυρώσετε αυτό το έργο; CloseAProject=Κλείσιμο έργου @@ -140,7 +140,7 @@ NoTasks=Δεν υπάρχουν εργασίες για αυτό το έργο LinkedToAnotherCompany=Συνδέεται με άλλο τρίτο μέρος TaskIsNotAssignedToUser=Εργασία δεν έχει εκχωρηθεί στο χρήστη. Χρησιμοποιήστε το κουμπί ' %s ' για να εκχωρήσετε εργασία τώρα. ErrorTimeSpentIsEmpty=Χρόνος που δαπανάται είναι άδειο -TimeRecordingRestrictedToNMonthsBack=Time recording is restricted to %s months back +TimeRecordingRestrictedToNMonthsBack=Η καταγραφή χρόνου περιορίζεται σε %s μήνες πίσω ThisWillAlsoRemoveTasks=Αυτή η ενέργεια θα διαγράψει επίσης όλα τα καθήκοντα του έργου (%s καθηκόντων προς το παρόν) και όλες οι είσοδοι του χρόνου. IfNeedToUseOtherObjectKeepEmpty=Εάν ορισμένα αντικείμενα (τιμολόγιο, προκειμένου, ...), που ανήκουν σε άλλο τρίτο μέρος, πρέπει να συνδέεται με το έργο να δημιουργήσει, διατηρήσει αυτό το κενό να έχει το έργο να είναι πολλαπλών τρίτους. CloneTasks=Clone tasks @@ -159,20 +159,20 @@ ProjectModifiedInDolibarr=Το έργο %s τροποποιήθηκε TaskCreatedInDolibarr=Εργασία %s δημιουργήθηκε TaskModifiedInDolibarr=Εργασία %s τροποποιήθηκε TaskDeletedInDolibarr=Εργασία %s διαγράφηκε -OpportunityStatus=Κατάσταση μολύβδου -OpportunityStatusShort=Κατάσταση μολύβδου -OpportunityProbability=Πιθανότητα μολύβδου -OpportunityProbabilityShort=Επικεφαλής probab. -OpportunityAmount=Ποσό μολύβδου -OpportunityAmountShort=Ποσό μολύβδου +OpportunityStatus=Κατάσταση προοπτικής +OpportunityStatusShort=Κατάσταση προοπτικής +OpportunityProbability=Πιθανότητα προοπτικής +OpportunityProbabilityShort=Πιθαν. προοπτικής +OpportunityAmount=Ποσό προοπτικής +OpportunityAmountShort=Ποσό προοπτικής OpportunityWeightedAmount=Σταθμισμένο ποσό ευκαιρίας OpportunityWeightedAmountShort=Αντί. σταθμισμένο ποσό -OpportunityAmountAverageShort=Μέσο ποσό μολύβδου -OpportunityAmountWeigthedShort=Σταθμισμένο ποσό μολύβδου +OpportunityAmountAverageShort=Μέσο ποσό προοπτικής +OpportunityAmountWeigthedShort=Σταθμισμένο ποσό προοπτικής WonLostExcluded=Κερδισμένο / Lost αποκλεισμένο ##### Types de contacts ##### -TypeContact_project_internal_PROJECTLEADER=Επικεφαλής του σχεδίου -TypeContact_project_external_PROJECTLEADER=Επικεφαλής του σχεδίου +TypeContact_project_internal_PROJECTLEADER=Επικεφαλής του έργου +TypeContact_project_external_PROJECTLEADER=Επικεφαλής του έργου TypeContact_project_internal_PROJECTCONTRIBUTOR=Συνεισφέρων TypeContact_project_external_PROJECTCONTRIBUTOR=Συνεισφέρων TypeContact_project_task_internal_TASKEXECUTIVE=Εκτελεστική ομάδα @@ -197,37 +197,38 @@ InputPerMonth=Είσοδος / εισαγωγή ανά μήνα InputDetail=Λεπτομέρειες εισόδου TimeAlreadyRecorded=Αυτός είναι ο χρόνος που έχει ήδη εγγραφεί για αυτήν την εργασία / ημέρα και ο χρήστης %s ProjectsWithThisUserAsContact=Έργα με αυτόν τον χρήστη ως επαφή +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Εργασίες που έχουν εκχωρηθεί σε αυτόν τον χρήστη ResourceNotAssignedToProject=Δεν έχει ανατεθεί σε έργο ResourceNotAssignedToTheTask=Δεν έχει ανατεθεί στην εργασία NoUserAssignedToTheProject=Δεν έχουν ανατεθεί χρήστες σε αυτό το έργο TimeSpentBy=Χρόνος που πέρασε TasksAssignedTo=Οι εργασίες που έχουν εκχωρηθεί στο -AssignTaskToMe=Assign task to myself +AssignTaskToMe=Αντιστοίχηση εργασίας στον εαυτό μου AssignTaskToUser=Αναθέστε εργασία σε %s SelectTaskToAssign=Επιλέξτε εργασία για εκχώρηση ... AssignTask=Ανάθεση ProjectOverview=Επισκόπηση ManageTasks=Χρησιμοποιήστε έργα για να παρακολουθήσετε εργασίες και / ή να αναφέρετε το χρόνο που ξοδεύετε (φύλλα εργασίας) -ManageOpportunitiesStatus=Χρησιμοποιήστε τα προγράμματα για να παρακολουθήσετε τους οδηγούς / ευκαιρίες +ManageOpportunitiesStatus=Χρησιμοποιήστε τα έργα για να παρακολουθήσετε τις προοπτικές / ευκαιρίες ProjectNbProjectByMonth=Αριθμός δημιουργηθέντων έργων ανά μήνα ProjectNbTaskByMonth=Αριθμός δημιουργημένων εργασιών ανά μήνα -ProjectOppAmountOfProjectsByMonth=Ποσό οδηγιών ανά μήνα -ProjectWeightedOppAmountOfProjectsByMonth=Σταθμισμένο ποσό οδηγεί κατά μήνα -ProjectOpenedProjectByOppStatus=Open project|lead by lead status -ProjectsStatistics=Statistics on projects or leads -TasksStatistics=Statistics on tasks of projects or leads +ProjectOppAmountOfProjectsByMonth=Ποσό προοπτικών ανά μήνα +ProjectWeightedOppAmountOfProjectsByMonth=Σταθμισμένο ποσό προοπτικών κατά μήνα +ProjectOpenedProjectByOppStatus=Ανοιχτές προοπτικές έργων ανά κατάσταση προοπτικής +ProjectsStatistics=Στατιστικά έργων ή προοπτικών +TasksStatistics=Στατιστικά εργασιών των έργων ή των προοπτικών TaskAssignedToEnterTime=Η εργασία έχει εκχωρηθεί. Πρέπει να είναι δυνατή η εισαγωγή του χρόνου αυτού του έργου. IdTaskTime=Χρόνος εργασίας Id YouCanCompleteRef=Εάν θέλετε να συμπληρώσετε το ref με κάποιο επίθημα, συνιστάται να προσθέσετε ένα χαρακτήρα για να το διαχωρίσετε, οπότε η αυτόματη αρίθμηση θα εξακολουθήσει να λειτουργεί σωστά για τα επόμενα έργα. Για παράδειγμα %s-MYSUFFIX OpenedProjectsByThirdparties=Ανοίξτε έργα από τρίτους -OnlyOpportunitiesShort=Μόνο οδηγεί -OpenedOpportunitiesShort=Ανοίξτε τους οδηγούς -NotOpenedOpportunitiesShort=Δεν είναι ανοικτό μόλυβδο -NotAnOpportunityShort=Δεν είναι μόλυβδος -OpportunityTotalAmount=Συνολικό ποσό οδηγεί -OpportunityPonderatedAmount=Σταθμισμένο ποσό οδηγεί -OpportunityPonderatedAmountDesc=Το ποσό οδηγεί σταθμισμένο με πιθανότητα +OnlyOpportunitiesShort=Μόνο προοπτικές +OpenedOpportunitiesShort=Ανοιχτές προοπτικές +NotOpenedOpportunitiesShort=Δεν είναι ανοιχτή προοπτική +NotAnOpportunityShort=Δεν είναι προοπτική +OpportunityTotalAmount=Συνολικό ποσό προοπτικών +OpportunityPonderatedAmount=Σταθμισμένο ποσό προοπτικών +OpportunityPonderatedAmountDesc=Ποσό προοπτικών σταθμισμένο με βάση την πιθανότητα OppStatusPROSP=Προοπτική OppStatusQUAL=Προσόν OppStatusPROPO=Πρόταση @@ -236,7 +237,7 @@ OppStatusPENDING=Εκκρεμεί OppStatusWON=Κέρδισε OppStatusLOST=Χαμένος Budget=Προϋπολογισμός -AllowToLinkFromOtherCompany=Επιτρέψτε τη σύνδεση του έργου με άλλη εταιρεία

Υποστηριζόμενες τιμές:
- Κρατήστε κενό: Μπορεί να συνδέσει οποιοδήποτε έργο της εταιρείας (προεπιλογή)
- "όλα": Μπορεί να συνδέσει οποιαδήποτε έργα, ακόμα και έργα άλλων εταιρειών
- Μια λίστα με IDs τρίτων που χωρίζονται με κόμματα: μπορούν να συνδέσουν όλα τα έργα αυτών των τρίτων μερών (Παράδειγμα: 123,4795,53)
+AllowToLinkFromOtherCompany=Επιτρέψτε τη σύνδεση του έργου με άλλη εταιρεία

Υποστηριζόμενες τιμές:
- Κρατήστε κενό: Μπορεί να συνδέσει οποιοδήποτε έργο της εταιρείας (προεπιλογή)
- "όλα": Μπορεί να συνδέσει οποιαδήποτε έργα, ακόμα και έργα άλλων εταιρειών
- Μια λίστα με IDs τρίτων που χωρίζονται με κόμματα: μπορούν να συνδέσουν όλα τα έργα αυτών των τρίτων μερών (Παράδειγμα: 123,4795,53)
LatestProjects=Τελευταία έργα %s LatestModifiedProjects=Τελευταία τροποποιημένα έργα %s OtherFilteredTasks=Άλλες φιλτραρισμένες εργασίες @@ -249,9 +250,9 @@ AllowCommentOnTask=Επιτρέψτε στα σχόλια των χρηστών AllowCommentOnProject=Να επιτρέπεται στα σχόλια των χρηστών τα έργα DontHavePermissionForCloseProject=Δεν έχετε δικαιώματα για να κλείσετε το έργο %s DontHaveTheValidateStatus=Το έργο %s πρέπει να είναι ανοικτό για να κλείσει -RecordsClosed=%s Έργα κλειστά -SendProjectRef=Έργο πληροφοριών %s -ModuleSalaryToDefineHourlyRateMustBeEnabled=Η ενότητα "Μισθοί" πρέπει να είναι ενεργοποιημένη για να καθορίζει την ωριαία τιμή του εργαζόμενου ώστε να έχει αξιοποιηθεί ο χρόνος που δαπανάται +RecordsClosed=%s κλειστά έργα +SendProjectRef=Πληροφορίες έργου %s +ModuleSalaryToDefineHourlyRateMustBeEnabled=Η ενότητα "Μισθοί" πρέπει να είναι ενεργοποιημένη για να καθορίζει την ωριαία τιμή του εργαζόμενου ώστε να έχει αξιοποιηθεί ο χρόνος που δαπανάται NewTaskRefSuggested=Η αναφορά εργασίας που έχει ήδη χρησιμοποιηθεί, απαιτείται νέα αναφορά εργασίας TimeSpentInvoiced=Χρόνος που δαπανήθηκε χρεώνεται TimeSpentForIntervention=Ο χρόνος που δαπανάται @@ -259,10 +260,10 @@ TimeSpentForInvoice=Ο χρόνος που δαπανάται OneLinePerUser=Μια γραμμή ανά χρήστη ServiceToUseOnLines=Υπηρεσία για χρήση σε γραμμές InvoiceGeneratedFromTimeSpent=Το τιμολόγιο %s δημιουργήθηκε από το χρόνο που αφιερώσατε στο έργο -InterventionGeneratedFromTimeSpent=Intervention %s has been generated from time spent on project -ProjectBillTimeDescription=Ελέγξτε αν εισάγετε φύλλο κατανομής για τα καθήκοντα του έργου και σχεδιάζετε να δημιουργήσετε τιμολόγιο(α) από το δελτίο χρόνου για να χρεώσετε τον πελάτη του έργου (μην ελέγξετε αν σκοπεύετε να δημιουργήσετε τιμολόγιο που δεν βασίζεται σε καταγεγραμμένα φύλλα εργασίας). Σημείωση: Για να δημιουργήσετε τιμολόγιο, μεταβείτε στην καρτέλα 'Χρόνος δαπάνης' του έργου και επιλέξτε γραμμές που θα συμπεριληφθούν. +InterventionGeneratedFromTimeSpent=Η παρέμβαση %s έχει δημιουργηθεί από τον χρόνο που δαπανήθηκε στο έργο +ProjectBillTimeDescription=Επιλέξτε στην περίπτωση που εισάγετε φύλλο κατανομής χρόνου για τα καθήκοντα του έργου και σχεδιάζετε να δημιουργήσετε τιμολόγιο(α) από το δελτίο χρόνου για να χρεώσετε τον πελάτη του έργου (μην το επιλέξετε αν σκοπεύετε να δημιουργήσετε τιμολόγιο που δεν βασίζεται σε καταγεγραμμένα φύλλα χρόνου). Σημείωση: Για να δημιουργήσετε τιμολόγιο, μεταβείτε στην καρτέλα 'Χρόνος που δαπανήθηκε' του έργου και επιλέξτε τις γραμμές που θα συμπεριληφθούν. ProjectFollowOpportunity=Ακολουθήστε την ευκαιρία -ProjectFollowTasks=Follow tasks or time spent +ProjectFollowTasks=Ακολουθήστε τις εργασίες ή τον χρόνο που δαπανήθηκε Usage=Χρήση UsageOpportunity=Χρήση: Ευκαιρία UsageTasks=Χρήση: Εργασίες @@ -273,15 +274,16 @@ NewInvoice=Νέο τιμολόγιο NewInter=Νέα παρέμβαση OneLinePerTask=Μια γραμμή ανά εργασία OneLinePerPeriod=Μία γραμμή ανά περίοδο -OneLinePerTimeSpentLine=One line for each time spent declaration -AddDetailDateAndDuration=With date and duration into line description +OneLinePerTimeSpentLine=Ορισμός μίας γραμμής για κάθε χρονικό διάστημα που δαπανήθηκε +AddDetailDateAndDuration=Με ημερομηνία και διάρκεια στην περιγραφή της γραμμής RefTaskParent=Αναφ. Γονική εργασία -ProfitIsCalculatedWith=Profit is calculated using -AddPersonToTask=Add also to tasks -UsageOrganizeEvent=Usage: Event Organization -PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE=Classify project as closed when all its tasks are completed (100%% progress) -PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with all tasks at 100 %% progress won't be affected: you will have to close them manually. This option only affects open projects. -SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them -ProjectTasksWithoutTimeSpent=Project tasks without time spent -FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProfitIsCalculatedWith=Το κέρδος υπολογίζεται χρησιμοποιώντας +AddPersonToTask=Προσθήκη και στις εργασίες +UsageOrganizeEvent=Χρήση: Οργάνωση συμβάντος +PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE=Καταχώρηση του έργου ως ολοκληρωμένου όταν όλες οι εργασίες έχουν ολοκληρωθεί (100 %% πρόοδος) +PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Σημείωση: τα υπάρχοντα έργα με όλες τις εργασίες τους σε 100 %% πρόοδο δεν θα επηρεαστούν: θα χρειαστεί να τα κλείσετε χειροκίνητα. Η επιλογή αυτή επηρεάζει μόνο τα ανοιχτά έργα. +SelectLinesOfTimeSpentToInvoice=Επιλέξτε τις γραμμές κατανάλωσης χρόνου που δεν έχουν τιμολογηθεί και έπειτα την μαζική εντολή "Δημιουργία τιμολογίου" για να τα τιμολογήσετε. +ProjectTasksWithoutTimeSpent=Εργασίες έργου χωρίς χρόνο που έχει δαπανηθεί +FormForNewLeadDesc=Σας ευχαριστούμε που συμπληρώσατε την ακόλουθη φόρμα επικοινωνίας. Μπορείτε επίσης να μας στείλετε απευθείας email στο %s. +ProjectsHavingThisContact=Έργα που έχουν αυτή την επαφή StartDateCannotBeAfterEndDate=Η ημερομηνία λήξης δεν μπορεί να είναι πριν από την ημερομηνία έναρξης diff --git a/htdocs/langs/el_GR/receptions.lang b/htdocs/langs/el_GR/receptions.lang index 2428ade0a31..290a1caf306 100644 --- a/htdocs/langs/el_GR/receptions.lang +++ b/htdocs/langs/el_GR/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Ρύθμιση παραλαβής προϊόντος +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Αναφ. ρεσεψιόν Reception=Σε εξέλιξη Receptions=Δεξιώσεις @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Υποδοχές και αποδείξεις ReceptionsToValidate=Υποδοχές για επικύρωση StatusReceptionCanceled=Ακυρώθηκε StatusReceptionDraft=Πρόχειρο -StatusReceptionValidated=Επικυρωμένη (προϊόντα για αποστολή ή που έχουν ήδη αποσταλεί) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Επεξεργασμένα StatusReceptionDraftShort=Πρόχειρο StatusReceptionValidatedShort=Επικυρώθηκε @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Οι στατιστικές που διεξάγο SendReceptionByEMail=Στείλτε τη λήψη μέσω ηλεκτρονικού ταχυδρομείου SendReceptionRef=Υποβολή της υποδοχής %s ActionsOnReception=Εκδηλώσεις στη ρεσεψιόν -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Γραμμή υποδοχής ProductQtyInReceptionAlreadySent=Ποσότητα προϊόντος από ανοικτή εντολή πωλήσεων που έχει ήδη αποσταλεί ProductQtyInSuppliersReceptionAlreadyRecevied=Ποσότητα προϊόντος από ανοικτή παραγγελία προμηθευτή που έχει ήδη παραληφθεί @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Πρότυπα εγγράφων για δεξιώσεις NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/el_GR/ticket.lang b/htdocs/langs/el_GR/ticket.lang index 0ca400945ce..0c66458130d 100644 --- a/htdocs/langs/el_GR/ticket.lang +++ b/htdocs/langs/el_GR/ticket.lang @@ -18,23 +18,23 @@ # Generic # -Module56000Name=Εισιτήρια -Module56000Desc=Σύστημα εισιτηρίων για διαχείριση εκδόσεων ή αιτήσεων +Module56000Name=Tickets +Module56000Desc=Σύστημα ticket για διαχείριση θεμάτων ή αιτήσεων -Permission56001=Δείτε εισιτήρια -Permission56002=Τροποποίηση εισιτηρίων -Permission56003=Διαγράψτε τα εισιτήρια -Permission56004=Διαχείριση εισιτηρίων -Permission56005=Δείτε τα εισιτήρια όλων των τρίτων (δεν είναι αποτελεσματικά για εξωτερικούς χρήστες, πάντα περιορίζονται στο τρίτο μέρος από το οποίο εξαρτώνται) +Permission56001=Δείτε τα tickets +Permission56002=Τροποποίηση tickets +Permission56003=Διαγραφή tickets +Permission56004=Διαχείριση tickets +Permission56005=Δείτε τα tickets όλων των τρίτων (δεν ισχύει για εξωτερικούς χρήστες, πάντα περιορίζονται στο τρίτο μέρος από το οποίο εξαρτώνται) -TicketDictType=Τύπος εισιτηρίου -TicketDictCategory=Εισιτήριο - Ομαδοποιεί -TicketDictSeverity=Εισιτήριο - Βαρύτητα -TicketDictResolution=Εισιτήριο - Ανάλυση +TicketDictType=Ticket - Τύποι +TicketDictCategory=Ticket - Ομάδες +TicketDictSeverity=Ticket - Σημαντικότητα +TicketDictResolution=Ticket - Επίλυση TicketTypeShortCOM=Εμπορική ερώτηση TicketTypeShortHELP=Αίτημα για λειτουργική βοήθεια -TicketTypeShortISSUE=Issue or bug +TicketTypeShortISSUE=Θέμα ή σφάλμα TicketTypeShortPROBLEM=Πρόβλημα TicketTypeShortREQUEST=Αίτημα αλλαγής ή βελτίωσης TicketTypeShortPROJET=Έργο @@ -43,67 +43,67 @@ TicketTypeShortOTHER=Άλλο TicketSeverityShortLOW=Χαμηλή TicketSeverityShortNORMAL=Κανονικός TicketSeverityShortHIGH=Υψηλή -TicketSeverityShortBLOCKING=Critical, Blocking +TicketSeverityShortBLOCKING=Κρίσιμο, Blocking TicketCategoryShortOTHER=Άλλο -ErrorBadEmailAddress=Το πεδίο '%s' είναι εσφαλμένο -MenuTicketMyAssign=Τα εισιτήριά μου -MenuTicketMyAssignNonClosed=Τα ανοιχτά μου εισιτήρια -MenuListNonClosed=Ανοίξτε εισιτήρια +ErrorBadEmailAddress=Το πεδίο '%s' είναι εσφαλμένο +MenuTicketMyAssign=Τα tickets μου +MenuTicketMyAssignNonClosed=Τα ανοιχτά tickets μου +MenuListNonClosed=Ανοίξτε ticket TypeContact_ticket_internal_CONTRIBUTOR=Συνεισφέρων -TypeContact_ticket_internal_SUPPORTTEC=Εκχωρημένος χρήστης -TypeContact_ticket_external_SUPPORTCLI=Παρακολούθηση επαφών πελατών / συμβάντων -TypeContact_ticket_external_CONTRIBUTOR=Εξωτερικός συνεργάτης +TypeContact_ticket_internal_SUPPORTTEC=Χρήστης σε ανάθεση +TypeContact_ticket_external_SUPPORTCLI=Επαφή πελάτη / παρακολούθηση συμβάντος +TypeContact_ticket_external_CONTRIBUTOR=Εξωτερικός συνεισφέρων -OriginEmail=Reporter Email -Notify_TICKET_SENTBYMAIL=Στείλτε μήνυμα εισιτηρίου μέσω ηλεκτρονικού ταχυδρομείου +OriginEmail=Αναφερόμενο Email +Notify_TICKET_SENTBYMAIL=Στείλτε μήνυμα ticket μέσω email # Status -Read=Ανάγνωση -Assigned=Ανατεθεί +Read=Έχει αναγνωστεί +Assigned=Έχει ανατεθεί InProgress=Σε εξέλιξη -NeedMoreInformation=Waiting for reporter feedback -NeedMoreInformationShort=Waiting for feedback +NeedMoreInformation=Σε αναμονή feedback από τον δημιουργό +NeedMoreInformationShort=Σε αναμονή feedback Answered=Απαντήθηκε -Waiting=Αναμονή -SolvedClosed=Solved +Waiting=Σε αναμονή +SolvedClosed=Επιλύθηκε Deleted=Διαγράφηκε # Dict Type=Τύπος -Severity=Δριμύτητα -TicketGroupIsPublic=Group is public -TicketGroupIsPublicDesc=If a ticket group is public, it will be visible in the form when creating a ticket from the public interface +Severity=Κρισιμότητα +TicketGroupIsPublic=Η ομάδα είναι δημόσια +TicketGroupIsPublicDesc=Αν η ομάδα του ticket είναι δημόσια, θα είναι ορατή στην φόρμα όταν δημιουργείται ένα ticket από την δημόσια διεπαφή # Email templates -MailToSendTicketMessage=Για να στείλετε email από το μήνυμα εισιτηρίων +MailToSendTicketMessage=Για να στείλετε email από το μήνυμα ticket # # Admin page # -TicketSetup=Ρύθμιση μονάδας εισιτηρίων +TicketSetup=Ρύθμιση μονάδας ticket TicketSettings=Ρυθμίσεις TicketSetupPage= TicketPublicAccess=Μια δημόσια διεπαφή που δεν απαιτεί αναγνώριση είναι διαθέσιμη στην παρακάτω διεύθυνση URL -TicketSetupDictionaries=Ο τύπος του εισιτηρίου, ο βαθμός σοβαρότητας και οι αναλυτικοί κωδικοί ρυθμίζονται από λεξικά +TicketSetupDictionaries=Ο τύπος του ticket, ο βαθμός σοβαρότητας και οι αναλυτικοί κωδικοί ρυθμίζονται από λεξικά TicketParamModule=Ρύθμιση μεταβλητής μονάδας TicketParamMail=Ρύθμιση ηλεκτρονικού ταχυδρομείου TicketEmailNotificationFrom=Ειδοποίηση ηλεκτρονικού ταχυδρομείου από TicketEmailNotificationFromHelp=Χρησιμοποιείται στο μήνυμα του εισιτηρίου με το παράδειγμα TicketEmailNotificationTo=Οι ειδοποιήσεις αποστέλλονται ηλεκτρονικά στο TicketEmailNotificationToHelp=Στείλτε ειδοποιήσεις μέσω ηλεκτρονικού ταχυδρομείου σε αυτήν τη διεύθυνση. -TicketNewEmailBodyLabel=Μήνυμα κειμένου που αποστέλλεται μετά τη δημιουργία ενός εισιτηρίου -TicketNewEmailBodyHelp=Το κείμενο που καθορίζεται εδώ θα εισαχθεί στο μήνυμα ηλεκτρονικού ταχυδρομείου που επιβεβαιώνει τη δημιουργία νέου εισιτηρίου από το δημόσιο περιβάλλον. Οι πληροφορίες σχετικά με τη διαβούλευση με το εισιτήριο προστίθενται αυτόματα. +TicketNewEmailBodyLabel=Μήνυμα κειμένου που αποστέλλεται μετά τη δημιουργία ενός ticket +TicketNewEmailBodyHelp=Το κείμενο που καθορίζεται εδώ θα εισαχθεί στο μήνυμα ηλεκτρονικού ταχυδρομείου που επιβεβαιώνει τη δημιουργία νέου ticket από το δημόσιο περιβάλλον. Οι πληροφορίες σχετικά με τη διαβούλευση με το ticket προστίθενται αυτόματα. TicketParamPublicInterface=Ρύθμιση δημόσιας διεπαφής -TicketsEmailMustExist=Απαιτήστε μια υπάρχουσα διεύθυνση ηλεκτρονικού ταχυδρομείου για να δημιουργήσετε ένα εισιτήριο -TicketsEmailMustExistHelp=Στη δημόσια διεπαφή, η διεύθυνση ηλεκτρονικού ταχυδρομείου θα πρέπει ήδη να συμπληρωθεί στη βάση δεδομένων για να δημιουργηθεί ένα νέο εισιτήριο. +TicketsEmailMustExist=Απαιτήστε μια υπάρχουσα διεύθυνση ηλεκτρονικού ταχυδρομείου για να δημιουργήσετε ένα ticket +TicketsEmailMustExistHelp=Στη δημόσια διεπαφή, η διεύθυνση ηλεκτρονικού ταχυδρομείου θα πρέπει ήδη να συμπληρωθεί στη βάση δεδομένων για να δημιουργηθεί ένα νέο ticket. PublicInterface=Δημόσια διεπαφή TicketUrlPublicInterfaceLabelAdmin=Εναλλακτική διεύθυνση URL για δημόσια διασύνδεση TicketUrlPublicInterfaceHelpAdmin=Είναι δυνατόν να ορίσετε ένα ψευδώνυμο στον διακομιστή ιστού και έτσι να διαθέσετε τη δημόσια διασύνδεση με μια άλλη διεύθυνση URL (ο διακομιστής πρέπει να ενεργεί ως διακομιστής μεσολάβησης σε αυτήν τη νέα διεύθυνση URL) TicketPublicInterfaceTextHomeLabelAdmin=Καλωσόρισμα κειμένου της δημόσιας διασύνδεσης -TicketPublicInterfaceTextHome=Μπορείτε να δημιουργήσετε ένα εισιτήριο υποστήριξης ή μια προβολή που υπάρχει από το εισιτήριο παρακολούθησης ταυτοποίησης. +TicketPublicInterfaceTextHome=Μπορείτε να δημιουργήσετε ένα ticket υποστήριξης ή να προβάλετε ένα υπάρχον από το αναγνωριστικό παρακολούθησης ticket. TicketPublicInterfaceTextHomeHelpAdmin=Το κείμενο που ορίζεται εδώ θα εμφανιστεί στην αρχική σελίδα της δημόσιας διασύνδεσης. TicketPublicInterfaceTopicLabelAdmin=Τίτλος διεπαφής TicketPublicInterfaceTopicHelp=Αυτό το κείμενο θα εμφανιστεί ως ο τίτλος της δημόσιας διασύνδεσης. @@ -122,16 +122,16 @@ TicketsShowCompanyLogo=Εμφανίστε το λογότυπο της εται TicketsShowCompanyLogoHelp=Ενεργοποιήστε αυτήν την επιλογή για να αποκρύψετε το λογότυπο της κύριας εταιρείας στις σελίδες της δημόσιας διασύνδεσης TicketsEmailAlsoSendToMainAddress=Also send a notification to the main email address TicketsEmailAlsoSendToMainAddressHelp=Enable this option to also send an email to the address defined into setup "%s" (see tab "%s") -TicketsLimitViewAssignedOnly=Περιορίστε την εμφάνιση σε εισιτήρια που έχουν εκχωρηθεί στον τρέχοντα χρήστη (δεν είναι αποτελεσματικά για εξωτερικούς χρήστες, πάντα περιορίζονται στο τρίτο μέρος από το οποίο εξαρτώνται) -TicketsLimitViewAssignedOnlyHelp=Μόνο εισιτήρια που έχουν εκχωρηθεί στον τρέχοντα χρήστη θα είναι ορατά. Δεν ισχύει για χρήστη με δικαιώματα διαχείρισης εισιτηρίων. +TicketsLimitViewAssignedOnly=Περιορίστε την εμφάνιση σε tickets που έχουν εκχωρηθεί στον τρέχοντα χρήστη (δεν έχει εφαρμογή για εξωτερικούς χρήστες, πάντα περιορίζονται στο τρίτο μέρος από το οποίο εξαρτώνται) +TicketsLimitViewAssignedOnlyHelp=Μόνο tickets που έχουν εκχωρηθεί στον τρέχοντα χρήστη θα είναι ορατά. Δεν ισχύει για χρήστη με δικαιώματα διαχείρισης tickets. TicketsActivatePublicInterface=Ενεργοποιήστε τη δημόσια διεπαφή -TicketsActivatePublicInterfaceHelp=Η δημόσια διεπαφή επιτρέπει στους επισκέπτες να δημιουργούν εισιτήρια. -TicketsAutoAssignTicket=Ορίστε αυτόματα τον χρήστη που δημιούργησε το εισιτήριο -TicketsAutoAssignTicketHelp=Κατά τη δημιουργία ενός εισιτηρίου, ο χρήστης μπορεί να αντιστοιχιστεί αυτόματα στο εισιτήριο. -TicketNumberingModules=Μονάδα αρίθμησης εισιτηρίων -TicketsModelModule=Document templates for tickets +TicketsActivatePublicInterfaceHelp=Η δημόσια διεπαφή επιτρέπει στους επισκέπτες να δημιουργούν tickets. +TicketsAutoAssignTicket=Ορίστε αυτόματα τον χρήστη που δημιούργησε το ticket +TicketsAutoAssignTicketHelp=Κατά τη δημιουργία ενός ticket, ο χρήστης μπορεί να αντιστοιχιστεί αυτόματα στο ticket. +TicketNumberingModules=Μονάδα αρίθμησης tickets +TicketsModelModule=Πρότυπο έγγραφο για tickets TicketNotifyTiersAtCreation=Ειδοποιήστε τρίτο μέρος στη δημιουργία -TicketsDisableCustomerEmail=Πάντα να απενεργοποιείτε τα μηνύματα ηλεκτρονικού ταχυδρομείου όταν δημιουργείται ένα εισιτήριο από τη δημόσια διασύνδεση +TicketsDisableCustomerEmail=Πάντα να απενεργοποιείτε τα μηνύματα ηλεκτρονικού ταχυδρομείου όταν δημιουργείται ένα ticket από τη δημόσια διασύνδεση TicketsPublicNotificationNewMessage=Send email(s) when a new message/comment is added to a ticket TicketsPublicNotificationNewMessageHelp=Send email(s) when a new message is added from public interface (to assigned user or the notifications email to (update) and/or the notifications email to) TicketPublicNotificationNewMessageDefaultEmail=Notifications email to (update) @@ -139,14 +139,14 @@ TicketPublicNotificationNewMessageDefaultEmailHelp=Send an email to this address # # Index & list page # -TicketsIndex=Περιοχή εισιτηρίων -TicketList=Λίστα εισιτηρίων -TicketAssignedToMeInfos=Αυτή η σελίδα εμφανίζει τη λίστα εισιτηρίων που έχει δημιουργηθεί ή έχει εκχωρηθεί στον τρέχοντα χρήστη -NoTicketsFound=Δεν βρέθηκε εισιτήριο -NoUnreadTicketsFound=Δεν βρέθηκαν αδιάβατα εισιτήρια -TicketViewAllTickets=Δείτε όλα τα εισιτήρια -TicketViewNonClosedOnly=Δείτε μόνο ανοιχτά εισιτήρια -TicketStatByStatus=Εισιτήρια ανά κατάσταση +TicketsIndex=Περιοχή tickets +TicketList=Λίστα tickets +TicketAssignedToMeInfos=Αυτή η σελίδα εμφανίζει τη λίστα tickets που έχει δημιουργηθεί ή έχει εκχωρηθεί στον τρέχοντα χρήστη +NoTicketsFound=Δεν βρέθηκε ticket +NoUnreadTicketsFound=Δεν βρέθηκαν αδιάβατα ticket +TicketViewAllTickets=Δείτε όλα τα tickets +TicketViewNonClosedOnly=Δείτε μόνο ανοιχτά ticket +TicketStatByStatus=Tickets ανά κατάσταση OrderByDateAsc=Ταξινόμηση κατά αύξουσα ημερομηνία OrderByDateDesc=Ταξινόμηση κατά φθίνουσα ημερομηνία ShowAsConversation=Εμφάνιση ως λίστα συνομιλιών @@ -155,50 +155,50 @@ MessageListViewType=Εμφάνιση ως λίστα πίνακα # # Ticket card # -Ticket=Εισιτήριο -TicketCard=Κάρτα εισιτηρίων -CreateTicket=Δημιουργήστε εισιτήριο -EditTicket=Επεξεργασία εισιτηρίου -TicketsManagement=Διαχείριση εισιτηρίων +Ticket=Ticket +TicketCard=Κάρτα ticket +CreateTicket=Δημιουργήστε ticket +EditTicket=Επεξεργασία ticket +TicketsManagement=Διαχείριση tickets CreatedBy=Δημιουργήθηκε από -NewTicket=Νέο εισιτήριο -SubjectAnswerToTicket=Απάντηση εισιτηρίου +NewTicket=Νέο ticket +SubjectAnswerToTicket=Το ticket απαντήθηκε TicketTypeRequest=Τύπος αιτήματος -TicketCategory=Ticket categorization -SeeTicket=Δείτε εισιτήριο -TicketMarkedAsRead=Το εισιτήριο έχει επισημανθεί ως αναγνωσμένο +TicketCategory=Κατηγοριοποίηση ticket +SeeTicket=Δείτε το ticket +TicketMarkedAsRead=Το ticket έχει επισημανθεί ως αναγνωσμένο TicketReadOn=Συνέχισε να διαβάζεις TicketCloseOn=Ημερομηνία Κλεισίματος -MarkAsRead=Μαρκάρετε το εισιτήριο ως αναγνωσμένο -TicketHistory=Ιστορικό εισιτηρίων +MarkAsRead=Μαρκάρετε το ticket ως αναγνωσμένο +TicketHistory=Ιστορικό ticket AssignUser=Αναθέστε στον χρήστη -TicketAssigned=Το εισιτήριο έχει πλέον εκχωρηθεί -TicketChangeType=Τύπος αλλαγής +TicketAssigned=Το ticket έχει πλέον εκχωρηθεί +TicketChangeType=Αλλάξτε τον τύπο TicketChangeCategory=Αλλάξτε τον αναλυτικό κώδικα TicketChangeSeverity=Αλλάξτε τη σοβαρότητα TicketAddMessage=Προσθήκη μηνύματος AddMessage=Προσθήκη μηνύματος -MessageSuccessfullyAdded=Το εισιτήριο προστέθηκε +MessageSuccessfullyAdded=Το ticket προστέθηκε TicketMessageSuccessfullyAdded=Το μήνυμα προστέθηκε με επιτυχία TicketMessagesList=Λίστα μηνυμάτων -NoMsgForThisTicket=Δεν υπάρχει μήνυμα για αυτό το εισιτήριο +NoMsgForThisTicket=Δεν υπάρχει μήνυμα για αυτό το ticket TicketProperties=Classification -LatestNewTickets=Τελευταία %s νεότερα εισιτήρια (δεν διαβάζονται) -TicketSeverity=Δριμύτητα -ShowTicket=Δείτε εισιτήριο -RelatedTickets=Σχετικά εισιτήρια +LatestNewTickets=Τελευταία %s πιο πρόσφατα tickets (δεν έχουν διαβαστεί) +TicketSeverity=Κρισιμότητα +ShowTicket=Δείτε το ticket +RelatedTickets=Σχετικό ticket TicketAddIntervention=Δημιουργία παρέμβασης -CloseTicket=Close|Solve ticket -AbandonTicket=Abandon ticket -CloseATicket=Close|Solve a ticket -ConfirmCloseAticket=Επιβεβαιώστε το κλείσιμο εισιτηρίου -ConfirmAbandonTicket=Do you confirm the closing of the ticket to status 'Abandonned' -ConfirmDeleteTicket=Επιβεβαιώστε τη διαγραφή του εισιτηρίου -TicketDeletedSuccess=Το εισιτήριο διαγράφηκε με επιτυχία -TicketMarkedAsClosed=Το εισιτήριο επισημαίνεται ως κλειστό +CloseTicket=Κλείστε|Επιλύστε το ticket +AbandonTicket=Εγκαταλείψτε το ticket +CloseATicket=Κλείστε|Επιλύστε ένα ticket +ConfirmCloseAticket=Επιβεβαιώστε το κλείσιμο του ticket +ConfirmAbandonTicket=Επιβεβαιώνετε το κλείσιμο του ticket με κατάσταση 'Εγκαταλελειμμένο' +ConfirmDeleteTicket=Επιβεβαιώστε τη διαγραφή του ticket +TicketDeletedSuccess=Το ticket διαγράφηκε με επιτυχία +TicketMarkedAsClosed=Το ticket επισημαίνεται ως κλειστό TicketDurationAuto=Υπολογισμένη διάρκεια TicketDurationAutoInfos=Διάρκεια υπολογίζεται αυτόματα από την παρέμβαση -TicketUpdated=Το εισιτήριο ενημερώθηκε +TicketUpdated=Το ticket ενημερώθηκε SendMessageByEmail=Αποστολή μηνύματος μέσω ηλεκτρονικού ταχυδρομείου TicketNewMessage=Νέο μήνυμα ErrorMailRecipientIsEmptyForSendTicketMessage=Ο παραλήπτης είναι κενός. Δεν στέλνεται μήνυμα ηλεκτρονικού ταχυδρομείου @@ -206,27 +206,27 @@ TicketGoIntoContactTab=Μεταβείτε στην καρτέλα "Επαφ TicketMessageMailIntro=Εισαγωγή TicketMessageMailIntroHelp=Αυτό το κείμενο προστίθεται μόνο στην αρχή του μηνύματος ηλεκτρονικού ταχυδρομείου και δεν θα αποθηκευτεί. TicketMessageMailIntroLabelAdmin=Εισαγωγή στο μήνυμα κατά την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου -TicketMessageMailIntroText=Γεια σας,
Μια νέα απάντηση στάλθηκε σε ένα εισιτήριο που επικοινωνήσατε. Εδώ είναι το μήνυμα:
-TicketMessageMailIntroHelpAdmin=Αυτό το κείμενο θα εισαχθεί πριν από το κείμενο της απάντησης σε ένα εισιτήριο. +TicketMessageMailIntroText=Γεια σας,
Μια νέα απάντηση στάλθηκε σε ένα ticket που είστε επαφή. Εδώ είναι το μήνυμα:
+TicketMessageMailIntroHelpAdmin=Αυτό το κείμενο θα εισαχθεί πριν από το κείμενο της απάντησης σε ένα ticket. TicketMessageMailSignature=Υπογραφή TicketMessageMailSignatureHelp=Αυτό το κείμενο προστίθεται μόνο στο τέλος του μηνύματος ηλεκτρονικού ταχυδρομείου και δεν θα αποθηκευτεί. TicketMessageMailSignatureText=

Με εκτιμιση,

-

TicketMessageMailSignatureLabelAdmin=Υπογραφή ηλεκτρονικού ταχυδρομείου απάντησης TicketMessageMailSignatureHelpAdmin=Αυτό το κείμενο θα εισαχθεί μετά το μήνυμα απάντησης. -TicketMessageHelp=Μόνο αυτό το κείμενο θα αποθηκευτεί στη λίστα μηνυμάτων της κάρτας εισιτηρίων. +TicketMessageHelp=Μόνο αυτό το κείμενο θα αποθηκευτεί στη λίστα μηνυμάτων της κάρτας tickets. TicketMessageSubstitutionReplacedByGenericValues=Οι μεταβλητές αντικατάστασης αντικαθίστανται από γενικές τιμές. TimeElapsedSince=Χρόνος που πέρασε από τότε TicketTimeToRead=Ο χρόνος που παρέμενε πριν διαβάσετε TicketTimeElapsedBeforeSince=Time elapsed before / since -TicketContacts=Επαφές εισιτήριο -TicketDocumentsLinked=Έγγραφα που συνδέονται με το εισιτήριο -ConfirmReOpenTicket=Επιβεβαιώστε ξανανοίξτε αυτό το εισιτήριο; -TicketMessageMailIntroAutoNewPublicMessage=Ένα νέο μήνυμα αναρτήθηκε στο εισιτήριο με το θέμα %s: -TicketAssignedToYou=Το εισιτήριο έχει εκχωρηθεί -TicketAssignedEmailBody=Σας έχει ανατεθεί το εισιτήριο # %s από %s +TicketContacts=Επαφές ticket +TicketDocumentsLinked=Έγγραφα που συνδέονται με το ticket +ConfirmReOpenTicket=Επιβεβαιώστε ανοίγματος ξανά σε αυτό το ticket; +TicketMessageMailIntroAutoNewPublicMessage=Ένα νέο μήνυμα αναρτήθηκε στο ticket με το θέμα %s: +TicketAssignedToYou=Το ticket έχει ανατεθεί +TicketAssignedEmailBody=Σας έχει ανατεθεί το ticket # %s από %s MarkMessageAsPrivate=Σημειώστε το μήνυμα ως ιδιωτικό TicketMessagePrivateHelp=Αυτό το μήνυμα δεν θα εμφανίζεται σε εξωτερικούς χρήστες -TicketEmailOriginIssuer=Εκδότης στην αρχή των εισιτηρίων +TicketEmailOriginIssuer=Δημιουργός στην αρχή των tickets InitialMessage=Αρχικό μήνυμα LinkToAContract=Σύνδεση με σύμβαση TicketPleaseSelectAContract=Επιλέξτε μια σύμβαση @@ -245,72 +245,72 @@ ErrorTicketRefRequired=Το όνομα αναφοράς Eισιτηρίου εί # # Logs # -TicketLogMesgReadBy=Το εισιτήριο %s διαβάζεται από %s -NoLogForThisTicket=Δεν υπάρχει αρχείο για αυτό το εισιτήριο ακόμα -TicketLogAssignedTo=Το εισιτήριο %s εκχωρήθηκε στο %s -TicketLogPropertyChanged=Εισιτήριο %s τροποποιήθηκε: ταξινόμηση από %s σε %s -TicketLogClosedBy=Το εισιτήριο %s έκλεισε με %s -TicketLogReopen=Το Eισιτήριο %s άνοιξε ξανά +TicketLogMesgReadBy=Το ticket %s διαβάστηκε από %s +NoLogForThisTicket=Δεν υπάρχει καταγραφή για αυτό το ticket ακόμα +TicketLogAssignedTo=Το ticket %s ανατέθηκε στο %s +TicketLogPropertyChanged=Το ticket %s τροποποιήθηκε: ταξινόμηση από %s σε %s +TicketLogClosedBy=Το ticket %s έκλεισε με %s +TicketLogReopen=Εκ νέου άνοιγμα του ticket %s # # Public pages # -TicketSystem=Σύστημα εισιτηρίων -ShowListTicketWithTrackId=Εμφάνιση λίστας εισιτηρίων από αναγνωριστικό κομματιού -ShowTicketWithTrackId=Εμφάνιση εισιτηρίου από αναγνωριστικό κομματιού -TicketPublicDesc=Μπορείτε να δημιουργήσετε ένα εισιτήριο υποστήριξης ή να ελέγξετε από ένα υπάρχον αναγνωριστικό. -YourTicketSuccessfullySaved=Το εισιτήριο αποθηκεύτηκε με επιτυχία! -MesgInfosPublicTicketCreatedWithTrackId=Eνα νέο εισιτήριο δημιουργήθηκε με το αναγνωριστικό %sκαι αναφ %s +TicketSystem=Σύστημα ticket +ShowListTicketWithTrackId=Εμφάνιση λίστας ticket με βάση το αναγνωριστικό ID +ShowTicketWithTrackId=Εμφάνιση ticket από το αναγνωριστικό ID +TicketPublicDesc=Μπορείτε να δημιουργήσετε ένα ticket υποστήριξης ή να επιλέξετε από ένα αναγνωριστικό ID. +YourTicketSuccessfullySaved=Το ticket αποθηκεύτηκε με επιτυχία! +MesgInfosPublicTicketCreatedWithTrackId=Ένα νέο ticket δημιουργήθηκε με ID %sκαι αναφ. %s PleaseRememberThisId=Παρακαλούμε να διατηρήσετε τον αριθμό παρακολούθησης που σας ζητάμε αργότερα. -TicketNewEmailSubject=Δημιουργία εισιτηρίου - Ref %s (δημόσιο εισιτήριο ID %s) -TicketNewEmailSubjectCustomer=Νέο εισιτήριο υποστήριξης -TicketNewEmailBody=Αυτό είναι ένα αυτόματο μήνυμα ηλεκτρονικού ταχυδρομείου για να επιβεβαιώσετε ότι έχετε καταχωρήσει ένα νέο εισιτήριο. -TicketNewEmailBodyCustomer=Αυτό είναι ένα αυτόματο μήνυμα ηλεκτρονικού ταχυδρομείου για να επιβεβαιώσετε ότι μόλις δημιουργήθηκε νέο εισιτήριο στο λογαριασμό σας. -TicketNewEmailBodyInfosTicket=Πληροφορίες για την παρακολούθηση του εισιτηρίου -TicketNewEmailBodyInfosTrackId=Αριθμός παρακολούθησης εισιτηρίων: %s -TicketNewEmailBodyInfosTrackUrl=Μπορείτε να δείτε την πρόοδο του εισιτηρίου κάνοντας κλικ στον παραπάνω σύνδεσμο. -TicketNewEmailBodyInfosTrackUrlCustomer=Μπορείτε να δείτε την πρόοδο του εισιτηρίου στη συγκεκριμένη διεπαφή κάνοντας κλικ στον ακόλουθο σύνδεσμο -TicketEmailPleaseDoNotReplyToThisEmail=Παρακαλώ μην απαντήσετε απευθείας σε αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου! Χρησιμοποιήστε τη σύνδεση για να απαντήσετε στη διεπαφή. -TicketPublicInfoCreateTicket=Αυτή η φόρμα σάς επιτρέπει να καταγράψετε ένα εισιτήριο υποστήριξης στο σύστημα διαχείρισης. +TicketNewEmailSubject=Δημιουργία ticket- Ref %s (δημόσιο ID %s) +TicketNewEmailSubjectCustomer=Νέο ticket υποστήριξης +TicketNewEmailBody=Αυτό είναι ένα αυτόματο μήνυμα ηλεκτρονικού ταχυδρομείου που επιβεβαιώνει ότι έχετε καταχωρήσει ένα νέο ticket. +TicketNewEmailBodyCustomer=Αυτό είναι ένα αυτόματο μήνυμα ηλεκτρονικού ταχυδρομείου που επιβεβαιώνει ότι μόλις δημιουργήθηκε νέο ticket στο λογαριασμό σας. +TicketNewEmailBodyInfosTicket=Πληροφορίες για την παρακολούθηση του ticket +TicketNewEmailBodyInfosTrackId=Αριθμός παρακολούθησης ticket: %s +TicketNewEmailBodyInfosTrackUrl=Μπορείτε να δείτε την πρόοδο του ticket κάνοντας κλικ στον παραπάνω σύνδεσμο. +TicketNewEmailBodyInfosTrackUrlCustomer=Μπορείτε να δείτε την πρόοδο του ticket στη συγκεκριμένη διεπαφή κάνοντας κλικ στον ακόλουθο σύνδεσμο +TicketEmailPleaseDoNotReplyToThisEmail=Παρακαλώ μην απαντήσετε απευθείας σε αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου! Χρησιμοποιήστε το σύνδεσμο για να απαντήσετε μέσω της διεπαφής. +TicketPublicInfoCreateTicket=Αυτή η φόρμα σάς επιτρέπει να καταγράψετε ένα ticket υποστήριξης στο σύστημα διαχείρισης. TicketPublicPleaseBeAccuratelyDescribe=Παρακαλούμε περιγράψτε με ακρίβεια το πρόβλημα. Παρέχετε τις περισσότερες πληροφορίες που είναι δυνατόν να μας επιτρέψουν να προσδιορίσουμε σωστά το αίτημά σας. -TicketPublicMsgViewLogIn=Εισαγάγετε το αναγνωριστικό παρακολούθησης εισιτηρίων +TicketPublicMsgViewLogIn=Εισαγάγετε το αναγνωριστικό παρακολούθησης ticket TicketTrackId=Δημόσιο αναγνωριστικό παρακολούθησης OneOfTicketTrackId=Ένα από τα αναγνωριστικά παρακολούθησης -ErrorTicketNotFound=Δεν βρέθηκε εισιτήριο με αναγνωριστικό παρακολούθησης %s! +ErrorTicketNotFound=Δεν βρέθηκε ticket με αναγνωριστικό παρακολούθησης %s! Subject=Αντικείμενο -ViewTicket=Προβολή εισιτηρίου -ViewMyTicketList=Δείτε τη λίστα εισιτηρίων μου +ViewTicket=Προβολή ticket +ViewMyTicketList=Δείτε τη λίστα των tickets μου ErrorEmailMustExistToCreateTicket=Σφάλμα: η διεύθυνση ηλεκτρονικού ταχυδρομείου δεν βρέθηκε στη βάση δεδομένων μας -TicketNewEmailSubjectAdmin=Δημιουργήθηκε νέο εισιτήριο - Ref %s (δημόσιο εισιτήριο ID %s) -TicketNewEmailBodyAdmin=

Το εισιτήριο μόλις δημιουργήθηκε με την ταυτότητα # %s, δείτε τις πληροφορίες:

+TicketNewEmailSubjectAdmin=Δημιουργήθηκε νέο ticket - Ref %s (δημόσιο ticket ID %s) +TicketNewEmailBodyAdmin=

Το ticket μόλις δημιουργήθηκε με την ID # %s, δείτε τις πληροφορίες:

SeeThisTicketIntomanagementInterface=Δείτε το εισιτήριο στη διεπαφή διαχείρισης -TicketPublicInterfaceForbidden=Η δημόσια διεπαφή για τα εισιτήρια δεν ήταν ενεργοποιημένη -ErrorEmailOrTrackingInvalid=Κακή τιμή για την παρακολούθηση ταυτότητας ή ηλεκτρονικού ταχυδρομείου +TicketPublicInterfaceForbidden=Η δημόσια διεπαφή για τα tickets δεν ήταν ενεργοποιημένη +ErrorEmailOrTrackingInvalid=Λάθος τιμή ID παρακολούθηση ή ηλεκτρονικού ταχυδρομείου OldUser=Παλιός χρήστης NewUser=Νέος χρήστης -NumberOfTicketsByMonth=Αριθμός εισιτηρίων ανά μήνα -NbOfTickets=Αριθμός εισιτηρίων +NumberOfTicketsByMonth=Αριθμός tickets ανά μήνα +NbOfTickets=Αριθμός tickets # notifications -TicketNotificationEmailSubject=Το ενημερωμένο εισιτήριο %s -TicketNotificationEmailBody=Αυτό είναι ένα αυτόματο μήνυμα που σας ειδοποιεί ότι το εισιτήριο %s μόλις ενημερώθηκε +TicketNotificationEmailSubject=Το ticket %s ενημερώθηκε +TicketNotificationEmailBody=Αυτό είναι ένα αυτόματο μήνυμα που σας ειδοποιεί ότι το ticket %s μόλις ενημερώθηκε TicketNotificationRecipient=Αποδέκτης ειδοποίησης TicketNotificationLogMessage=Μηνύματα καταγραφής -TicketNotificationEmailBodyInfosTrackUrlinternal=Προβολή εισιτηρίου σε διεπαφή +TicketNotificationEmailBodyInfosTrackUrlinternal=Προβολή ticket σε διεπαφή TicketNotificationNumberEmailSent=Ειδοποίηση ηλεκτρονικού ταχυδρομείου αποστολή: %s -ActionsOnTicket=Εκδηλώσεις στο εισιτήριο +ActionsOnTicket=Συμβάντα του ticket # # Boxes # -BoxLastTicket=Τα πιο πρόσφατα δημιουργημένα εισιτήρια -BoxLastTicketDescription=Τα τελευταία %s δημιούργησαν εισιτήρια +BoxLastTicket=Πρόσφατα δημιουργημένα tickets +BoxLastTicketDescription=Τα τελευταία %s δημιουργημένα tickets BoxLastTicketContent= -BoxLastTicketNoRecordedTickets=Δεν υπάρχουν πρόσφατα αδιάβαστα εισιτήρια -BoxLastModifiedTicket=Τελευταία τροποποιημένα εισιτήρια -BoxLastModifiedTicketDescription=Τα τελευταία τροποποιημένα εισιτήρια %s +BoxLastTicketNoRecordedTickets=Δεν υπάρχουν πρόσφατα αδιάβαστα tickets +BoxLastModifiedTicket=Τελευταία τροποποιημένα tickets +BoxLastModifiedTicketDescription=Τα τελευταία %s τροποποιημένα tickets BoxLastModifiedTicketContent= -BoxLastModifiedTicketNoRecordedTickets=Δεν υπάρχουν πρόσφατα τροποποιημένα εισιτήρια +BoxLastModifiedTicketNoRecordedTickets=Δεν υπάρχουν πρόσφατα τροποποιημένα tickets BoxTicketType=Distribution of open tickets by type BoxTicketSeverity=Number of open tickets by severity BoxNoTicketSeverity=No tickets opened diff --git a/htdocs/langs/en_AE/admin.lang b/htdocs/langs/en_AE/admin.lang index a5f92aef8da..9bfd4f12f48 100644 --- a/htdocs/langs/en_AE/admin.lang +++ b/htdocs/langs/en_AE/admin.lang @@ -1,3 +1,7 @@ # 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 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/companies.lang b/htdocs/langs/en_AE/companies.lang new file mode 100644 index 00000000000..40b5f885e43 --- /dev/null +++ b/htdocs/langs/en_AE/companies.lang @@ -0,0 +1,7 @@ +# Dolibarr language file - Source file is en_US - companies +ProfId1CM=Id. prof. 1 (Trade Register) +ProfId2CM=Id. prof. 2 (Taxpayer No.) +ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1ShortCM=Trade Register +ProfId2ShortCM=Taxpayer No. +ProfId3ShortCM=Decree of creation diff --git a/htdocs/langs/en_AE/receptions.lang b/htdocs/langs/en_AE/receptions.lang deleted file mode 100644 index 088c09f1f33..00000000000 --- a/htdocs/langs/en_AE/receptions.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - receptions -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. diff --git a/htdocs/langs/en_AU/admin.lang b/htdocs/langs/en_AU/admin.lang index 7adbe17281c..4d2a046987c 100644 --- a/htdocs/langs/en_AU/admin.lang +++ b/htdocs/langs/en_AU/admin.lang @@ -1,4 +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 OldVATRates=Old GST rate NewVATRates=New GST rate DictionaryVAT=GST Rates or Sales Tax Rates @@ -6,3 +8,5 @@ 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_CA/admin.lang b/htdocs/langs/en_CA/admin.lang index ef9654fbaf9..168cecdf060 100644 --- a/htdocs/langs/en_CA/admin.lang +++ b/htdocs/langs/en_CA/admin.lang @@ -1,7 +1,11 @@ # 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 LocalTax1Management=PST Management 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_GB/admin.lang b/htdocs/langs/en_GB/admin.lang index d185f42b80b..4c86efb8c05 100644 --- a/htdocs/langs/en_GB/admin.lang +++ b/htdocs/langs/en_GB/admin.lang @@ -1,4 +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 Foundation=Company VersionProgram=Program Version VersionLastInstall=Version Initially Installed @@ -47,3 +49,5 @@ GenbarcodeLocation=Barcode generation command line tool (used by internal engine FormatZip=Postcode 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_IN/admin.lang b/htdocs/langs/en_IN/admin.lang index dc3bbbf6c72..1c0c06a69a2 100644 --- a/htdocs/langs/en_IN/admin.lang +++ b/htdocs/langs/en_IN/admin.lang @@ -1,4 +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 Module20Name=Quotations Module20Desc=Management of quotations Permission21=Read quotations @@ -16,3 +18,5 @@ 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 a5f92aef8da..9bfd4f12f48 100644 --- a/htdocs/langs/en_SG/admin.lang +++ b/htdocs/langs/en_SG/admin.lang @@ -1,3 +1,7 @@ # 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 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/companies.lang b/htdocs/langs/en_SG/companies.lang new file mode 100644 index 00000000000..40b5f885e43 --- /dev/null +++ b/htdocs/langs/en_SG/companies.lang @@ -0,0 +1,7 @@ +# Dolibarr language file - Source file is en_US - companies +ProfId1CM=Id. prof. 1 (Trade Register) +ProfId2CM=Id. prof. 2 (Taxpayer No.) +ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1ShortCM=Trade Register +ProfId2ShortCM=Taxpayer No. +ProfId3ShortCM=Decree of creation diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 1bf5233f660..80e40c12a1b 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -2204,8 +2204,8 @@ DashboardDisableBlockAdherent=Disable the thumb for memberships DashboardDisableBlockExpenseReport=Disable the thumb for expense reports DashboardDisableBlockHoliday=Disable the thumb for leaves EnabledCondition=Condition to have field enabled (if not enabled, visibility will always be off) -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 +IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sales tax +IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sales tax LanguageAndPresentation=Language and presentation SkinAndColors=Skin and colors IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sales tax diff --git a/htdocs/langs/en_ZA/admin.lang b/htdocs/langs/en_ZA/admin.lang index a5f92aef8da..9bfd4f12f48 100644 --- a/htdocs/langs/en_ZA/admin.lang +++ b/htdocs/langs/en_ZA/admin.lang @@ -1,3 +1,7 @@ # 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 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/companies.lang b/htdocs/langs/en_ZA/companies.lang new file mode 100644 index 00000000000..40b5f885e43 --- /dev/null +++ b/htdocs/langs/en_ZA/companies.lang @@ -0,0 +1,7 @@ +# Dolibarr language file - Source file is en_US - companies +ProfId1CM=Id. prof. 1 (Trade Register) +ProfId2CM=Id. prof. 2 (Taxpayer No.) +ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1ShortCM=Trade Register +ProfId2ShortCM=Taxpayer No. +ProfId3ShortCM=Decree of creation diff --git a/htdocs/langs/en_ZA/receptions.lang b/htdocs/langs/en_ZA/receptions.lang deleted file mode 100644 index 088c09f1f33..00000000000 --- a/htdocs/langs/en_ZA/receptions.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - receptions -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. diff --git a/htdocs/langs/es_AR/admin.lang b/htdocs/langs/es_AR/admin.lang index a99acf5cbee..cd369333c0e 100644 --- a/htdocs/langs/es_AR/admin.lang +++ b/htdocs/langs/es_AR/admin.lang @@ -233,7 +233,6 @@ ThisIsAlternativeProcessToFollow=Esta es una configuración alternativa para pro FindPackageFromWebSite=Encuentre un paquete que proporcione las funciones que necesita (por ejemplo, en el sitio web oficial %s). DownloadPackageFromWebSite=Descargue el paquete (por ejemplo, desde el sitio web oficial %s). UnpackPackageInDolibarrRoot=Desempaquetar / descomprima los archivos empaquetados en su directorio del servidor Dolibarr: %s -UnpackPackageInModulesRoot=Para implementar / instalar un módulo externo, desempaquete / descomprima los archivos empaquetados en el directorio del servidor dedicado a los módulos externos:
%s SetupIsReadyForUse=El despliegue del módulo ha finalizado. Sin embargo, debe habilitar y configurar el módulo en su aplicación ingresando a los módulos de configuración de la página: %s . NotExistsDirect=El directorio raíz alternativo no está definido en un directorio existente.
InfDirAlt=Desde la versión 3, es posible definir un directorio raíz alternativo. Esto le permite almacenar, en un directorio dedicado, complementos y plantillas personalizadas.
Simplemente cree un directorio en la raíz de Dolibarr (por ejemplo: personalizado).
@@ -596,3 +595,5 @@ DisabledResourceLinkContact=Deshabilitar función para vincular un recurso a con 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;'
+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_AR/receptions.lang b/htdocs/langs/es_AR/receptions.lang index 2a2e1bec4a2..d71bbb3d7dd 100644 --- a/htdocs/langs/es_AR/receptions.lang +++ b/htdocs/langs/es_AR/receptions.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Configuración de recepción de productos Reception=Recepción ReceptionsArea=Área de recepciones NbOfReceptions=Cantidad de recepciones @@ -10,7 +9,6 @@ OtherReceptionsForSameOrder=Otras recepciones para esta orden ReceptionsAndReceivingForSameOrder=Recepciones y recibos de esta orden. ReceptionsToValidate=Recepciones para validar StatusReceptionCanceled=Cancelada -StatusReceptionValidated=Validada (productos para enviar o ya enviados) StatusReceptionProcessed=Procesada StatusReceptionValidatedShort=Validada StatusReceptionProcessedShort=Procesada diff --git a/htdocs/langs/es_BO/admin.lang b/htdocs/langs/es_BO/admin.lang index a5f92aef8da..c5ab56cb8d8 100644 --- a/htdocs/langs/es_BO/admin.lang +++ b/htdocs/langs/es_BO/admin.lang @@ -1,3 +1,5 @@ # 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/companies.lang b/htdocs/langs/es_BO/companies.lang new file mode 100644 index 00000000000..40b5f885e43 --- /dev/null +++ b/htdocs/langs/es_BO/companies.lang @@ -0,0 +1,7 @@ +# Dolibarr language file - Source file is en_US - companies +ProfId1CM=Id. prof. 1 (Trade Register) +ProfId2CM=Id. prof. 2 (Taxpayer No.) +ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1ShortCM=Trade Register +ProfId2ShortCM=Taxpayer No. +ProfId3ShortCM=Decree of creation diff --git a/htdocs/langs/es_CL/admin.lang b/htdocs/langs/es_CL/admin.lang index 39c906f17bb..5554b00bc11 100644 --- a/htdocs/langs/es_CL/admin.lang +++ b/htdocs/langs/es_CL/admin.lang @@ -40,6 +40,8 @@ GUISetup=Visualización SetupArea=Configurar UploadNewTemplate=Cargar nueva plantilla (s) FormToTestFileUploadForm=Formulario para probar la carga del archivo (según la configuración) +ModuleMustBeEnabled=El módulo / aplicación %s debe estar habilitado +ModuleIsEnabled=Se ha habilitado el módulo / aplicación %s IfModuleEnabled=Nota: sí es efectivo solo si el módulo %s está habilitado RemoveLock=Elimine / rename el archivo %s si existe, para permitir el uso de la herramienta Actualizar / Instalar. RestoreLock=Restaure el archivo %s , solo con permiso de lectura, para deshabilitar cualquier uso posterior de la herramienta Actualizar / Instalar. @@ -113,6 +115,7 @@ SystemToolsArea=Área de herramientas del sistema SystemToolsAreaDesc=Esta área proporciona funciones de administración. Utilice el menú para elegir la función requerida. PurgeAreaDesc=Esta página le permite eliminar todos los archivos generados o almacenados por Dolibarr (archivos temporales o todos los archivos en el directorio %s ). Usando esta característica normalmente no es necesario. Se proporciona como una solución para los usuarios cuyo Dolibarr está alojado por un proveedor que no ofrece permisos para eliminar archivos generados por el servidor web. PurgeDeleteLogFile=Eliminar archivos de registro, incluido %s definido para el módulo Syslog (sin riesgo de perder datos) +PurgeDeleteTemporaryFiles=Elimine todos los archivos de registro y temporales (sin riesgo de perder datos). El parámetro puede ser 'tempfilesold', 'logfiles' o ambos 'tempfilesold + logfiles'. Nota: La eliminación de archivos temporales se realiza solo si el directorio temporal se creó hace más de 24 horas. PurgeDeleteAllFilesInDocumentsDir=Eliminar todos los archivos en el directorio: %s .
Esto eliminará todos los documentos generados relacionados con elementos (terceros, facturas, etc.), archivos cargados en el módulo ECM, volcados de copia de seguridad de bases de datos y archivos temporales. PurgeRunNow=Purgar ahora PurgeNothingToDelete=Sin directorio o archivos para eliminar. @@ -239,7 +242,6 @@ ThisIsAlternativeProcessToFollow=Esta es una configuración alternativa para pro FindPackageFromWebSite=Encuentre un paquete que proporcione las funciones que necesita (por ejemplo, en el sitio web oficial %s). DownloadPackageFromWebSite=Descargue el paquete (por ejemplo, desde el sitio web oficial %s). UnpackPackageInDolibarrRoot=Desempaquete / descomprima los archivos empaquetados en el directorio de su servidor Dolibarr: %s -UnpackPackageInModulesRoot=Para implementar / instalar un módulo externo, descomprima / descomprima los archivos empaquetados en el directorio del servidor dedicado a los módulos externos:
%s SetupIsReadyForUse=El despliegue del módulo ha finalizado. Sin embargo, debe habilitar y configurar el módulo en su aplicación yendo a los módulos de configuración de la página: %s . NotExistsDirect=El directorio raíz alternativo no está definido en un directorio existente.
InfDirAlt=Desde la versión 3, es posible definir un directorio raíz alternativo. Esto le permite almacenar, en un directorio dedicado, complementos y plantillas personalizadas.
Simplemente cree un directorio en la raíz de Dolibarr (p. Ej .: personalizado).
@@ -249,6 +251,7 @@ LastActivationIP=Última activación IP UpdateServerOffline=Servidor de actualización fuera de línea WithCounter=Administrar un contador GenericMaskCodes=Puede ingresar cualquier máscara de numeración. En esta máscara, se pueden utilizar las siguientes etiquetas:
{000000} corresponde a un número que se incrementará en cada %s. Ingrese tantos ceros como la longitud deseada del contador. El contador se completará con ceros desde la izquierda para tener tantos ceros como la máscara.
{000000+000} igual que el anterior pero se aplica un desplazamiento correspondiente al número a la derecha del signo + comenzando en el primer %s.
{000000 @ x} igual que el anterior pero el contador se restablece a cero cuando se alcanza el mes x (x entre 1 y 12, o 0 para usar los primeros meses del año fiscal definido en su configuración, o 99 para poner a cero todos los meses). Si se usa esta opción y x es 2 o superior, entonces también se requiere la secuencia {yy} {mm} o {yyyy} {mm}.
{dd} día (01 a 31).
{mm} mes (01 a 12).
{yy} , {yyyy} o {y} a09a4b0739 números de año más de .f8
+GenericMaskCodes2= {cccc} el código de cliente en n caracteres
{cccc000} el código de cliente es un código de cliente dedicado a n. Este contador dedicado al cliente se pone a cero al mismo tiempo que el contador global.
{tttt} El código del tipo de terceros en n caracteres (ver menú Inicio - Configuración - Diccionario - Tipos de terceros). Si agrega esta etiqueta, el contador será diferente para cada tipo de tercero.
GenericMaskCodes3=Todos los demás personajes de la máscara permanecerán intactos.
No se permiten espacios.
GenericMaskCodes3EAN=Todos los demás caracteres de la máscara permanecerán intactos (excepto * o? En la 13ª posición en EAN13).
No se permiten espacios.
En EAN13, el último carácter después del último} en la posición 13 debe ser * o? . Será reemplazado por la clave calculada.
GenericMaskCodes4a=Ejemplo en el 99º %s del tercero TheCompany, con fecha 2007-01-31:
@@ -290,7 +293,6 @@ ModuleMustBeEnabledFirst=El módulo %s debe estar habilitado primero si n SecurityToken=Clave para asegurar URLs NoSmsEngine=No hay administrador de remitente de SMS disponible. Un administrador de remitentes de SMS no se instala con la distribución predeterminada porque dependen de un proveedor externo, pero puede encontrar algunos en %s PDFDesc=Opciones globales para la generación de PDF -PDFAddressForging=Reglas para la sección de direcciones HideAnyVATInformationOnPDF=Ocultar toda la información relacionada con el Impuesto de Ventas / IVA PDFRulesForSalesTax=Reglas para el impuesto a las ventas / IVA HideLocalTaxOnPDF=Ocultar la tasa %s en la columna Impuesto sobre las ventas / IVA @@ -1381,3 +1383,5 @@ MakeAnonymousPing=Realice un Ping anónimo '+1' al servidor de la base D FeatureNotAvailableWithReceptionModule=Función no disponible cuando la recepción del módulo está habilitada EmailTemplate=Plantila para email Recommended=Recomendado +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_CL/bills.lang b/htdocs/langs/es_CL/bills.lang index c8aa2be1209..e19c06e0867 100644 --- a/htdocs/langs/es_CL/bills.lang +++ b/htdocs/langs/es_CL/bills.lang @@ -56,7 +56,6 @@ ReceivedCustomersPaymentsToValid=Recibió pagos de clientes para validar PaymentsReportsForYear=Informes de pagos para %s PaymentsAlreadyDone=Pagos ya hechos PaymentRule=Regla de pago -PaymentTypeDC=Tarjeta de crédito débito PaymentTerm=Plazo de pago PaymentConditions=Términos de pago PaymentConditionsShort=Términos de pago @@ -316,6 +315,7 @@ PaymentTypeCB=Tarjeta de crédito PaymentTypeShortCB=Tarjeta de crédito PaymentTypeTIP=TIP (Documentos contra pago) PaymentTypeTRA=giro bancario +PaymentTypeDC=Tarjeta de crédito débito BankDetails=Detalles del banco BankCode=codigo bancario DeskCode=Código de sucursal diff --git a/htdocs/langs/es_CL/receptions.lang b/htdocs/langs/es_CL/receptions.lang index dbe9970915a..c3ef0fffd2b 100644 --- a/htdocs/langs/es_CL/receptions.lang +++ b/htdocs/langs/es_CL/receptions.lang @@ -14,7 +14,6 @@ OtherReceptionsForSameOrder=Otras recepciones para este pedido. ReceptionsAndReceivingForSameOrder=Recepciones y recibos por este pedido. ReceptionsToValidate=Recepciones para validar StatusReceptionCanceled=Cancelado -StatusReceptionValidated=Validado (productos a enviar o ya enviados) StatusReceptionProcessed=Procesada StatusReceptionProcessedShort=Procesada ConfirmDeleteReception=¿Estás seguro de que deseas eliminar esta recepción? diff --git a/htdocs/langs/es_CO/accountancy.lang b/htdocs/langs/es_CO/accountancy.lang index 6e20a5cb8d2..54c0ddba299 100644 --- a/htdocs/langs/es_CO/accountancy.lang +++ b/htdocs/langs/es_CO/accountancy.lang @@ -192,6 +192,7 @@ DescVentilDoneExpenseReport=Consulte aquí la lista de líneas de informes de ga DescClosure=Consulta aquí el número de movimientos por mes que no están validados y años fiscales ya abiertos NotAllMovementsCouldBeRecordedAsValidated=No todos los movimientos se pudieron registrar como validados DescValidateMovements=Se prohíbe cualquier modificación o eliminación de la escritura, las letras y las eliminaciones. Todas las entradas para un ejercicio deben ser validadas, de lo contrario no será posible cerrar +AutomaticBindingDone=Enlaces automáticos realizados (%s) - El enlace automático no es posible para algunos registros (%s) ErrorAccountancyCodeIsAlreadyUse=Error, no puede eliminar esta cuenta de contabilidad porque se usa MvtNotCorrectlyBalanced=Movimiento no equilibrado correctamente. Débito = %s | Crédito = %s Balancing=Equilibrio @@ -267,6 +268,8 @@ WithValidAccount=Con cuenta dedicada válida. ValueNotIntoChartOfAccount=Este valor de la cuenta contable no existe en el plan de cuentas. SaleEECWithVAT=Venta en EEC con IVA no nulo, por lo que suponemos que NO es una venta intracomunitaria y la cuenta sugerida es la cuenta estándar del producto. SaleEECWithoutVATNumber=Venta en CEE sin IVA, pero no se define el ID de IVA del tercero. Recurrimos a la cuenta de producto para las ventas estándar. Puede corregir el ID de IVA del tercero o la cuenta del producto si es necesario. +ForbiddenTransactionAlreadyExported=Prohibido: La transacción ha sido validada y/o exportada. +ForbiddenTransactionAlreadyValidated=Prohibido: La transacción ha sido validada. SomeMandatoryStepsOfSetupWereNotDone=Algunos pasos obligatorios de configuración no se realizaron, por favor complete ErrorNoAccountingCategoryForThisCountry=No hay grupo de cuentas contables disponible para el país %s (Consulte Inicio - Configuración - Diccionarios) ErrorInvoiceContainsLinesNotYetBounded=Intenta registrar en el diario algunas líneas de la factura %s , pero algunas otras líneas aún no están vinculadas a la cuenta contable. La periodización de todas las líneas de factura para esta factura se rechazan. diff --git a/htdocs/langs/es_CO/admin.lang b/htdocs/langs/es_CO/admin.lang index 1a2035ad8a2..b8c0b3f8a0d 100644 --- a/htdocs/langs/es_CO/admin.lang +++ b/htdocs/langs/es_CO/admin.lang @@ -39,10 +39,13 @@ WarningOnlyPermissionOfActivatedModules=Solo los permisos relacionados a los mod DolibarrSetup=Instalación o actualización de Dolibarr UploadNewTemplate=Subir nueva (s) plantilla (s) FormToTestFileUploadForm=Formulario para probar la importación de archivos (según configuración) +ModuleMustBeEnabled=El módulo / aplicación %s debe estar habilitado +ModuleIsEnabled=Se ha habilitado el módulo / aplicación %s IfModuleEnabled=Nota: solo aplica el SI en caso de que el modulo %s esté activo RemoveLock=Quite / cambie el nombre del archivo %s si existe, para permitir el uso de la herramienta Actualizar / Instalar. RestoreLock=Restaure el archivo %s , solo con permiso de lectura, para deshabilitar cualquier uso posterior de la herramienta Actualizar / Instalar. SecuritySetup=Configuración de seguridad +OSSetup=Configuración del sistema operativo SecurityFilesDesc=Define aquí las opciones relacionadas con la seguridad sobre la carga de archivos. ErrorModuleRequirePHPVersion=Error, éste módulo requiere la versión de PHP %s o superior ErrorModuleRequireDolibarrVersion=Error, éste módulo requiere la versión Dolibarr %s o superior @@ -120,6 +123,7 @@ SystemToolsAreaDesc=Esta área proporciona funciones de administración. Utilice Purge=Purgar PurgeAreaDesc=Esta página le permite eliminar todos los archivos generados o almacenados por Dolibarr (archivos temporales o todos los archivos en el directorio %s ). Normalmente, no es necesario utilizar esta función. Se proporciona como una solución para los usuarios cuyo Dolibarr está alojado por un proveedor que no ofrece permisos para eliminar archivos generados por el servidor web. PurgeDeleteLogFile=Elimine los archivos de registro, incluido el %s definido para el módulo Syslog (sin riesgo de perder datos) +PurgeDeleteTemporaryFiles=Elimine todos los archivos de registro y temporales (sin riesgo de perder datos). El parámetro puede ser 'tempfilesold', 'logfiles' o ambos 'tempfilesold + logfiles'. Nota: La eliminación de archivos temporales se realiza solo si el directorio temporal se creó hace más de 24 horas. PurgeDeleteAllFilesInDocumentsDir=Elimine todos los archivos del directorio: %s .
Esto eliminará todos los documentos generados relacionados con elementos (terceros, facturas, etc.), archivos cargados en el módulo ECM, volcados de respaldo (backup dumps) de la base de datos y archivos temporales. PurgeRunNow=Purgar ahora PurgeNothingToDelete=No hay directorio o archivos para eliminar. @@ -195,6 +199,7 @@ OfficialDemo=Demostración online de dolibarr OfficialMarketPlace=Mercado oficial para módulos externos / addons OfficialWebHostingService=Servicios de alojamiento web referenciados (Cloud hosting) ReferencedPreferredPartners=Socios preferidos +ForDocumentationSeeWiki=Para obtener documentación para el usuario o el desarrollador (Doc, FAQs ...),
eche un vistazo a la Wiki de Dolibarr:
%s ForAnswersSeeForum=Para cualquier otra pregunta / ayuda, puede utilizar el foro de Dolibarr:
%s HelpCenterDesc1=Aquí hay algunos recursos para obtener ayuda y apoyo con Dolibarr. HelpCenterDesc2=Algunos de estos recursos solo están disponibles en inglés . @@ -282,6 +287,8 @@ UMask=Parámetro UMask para archivos nuevos en el sistema de archivos Unix / Lin UMaskExplanation=Este parámetro le permite definir los permisos establecidos de forma predeterminada en los archivos creados por Dolibarr en el servidor (durante la carga, por ejemplo).
Debe ser el valor octal (por ejemplo, 0666 significa lectura y escritura para todos).
El parámetro es inútil en un servidor Windows. SeeWikiForAllTeam=Eche un vistazo a la página Wiki para obtener una lista de contribuyentes y su organización. UseACacheDelay=Retraso para almacenar en caché la respuesta de exportación en segundos (0 o vacío para no tener caché) +DisableLinkToHelpCenter=Ocultar el enlace " Necesita ayuda o soporte " en la página de inicio de sesión +DisableLinkToHelp=Ocultar el enlace a la ayuda en línea " %s " AddCRIfTooLong=No hay ajuste de texto automático, el texto que es demasiado largo no se mostrará en los documentos. Por favor agregue retornos de carro en el área de texto si es necesario. ConfirmPurge=¿Está seguro de que desea ejecutar esta purga?
Esto eliminará permanentemente todos sus archivos de datos sin posibilidad de restaurarlos (archivos ECM, archivos adjuntos ...). MinLength=Longitud mínima @@ -304,7 +311,6 @@ ModuleMustBeEnabledFirst=El módulo %s debe habilitarse primero si nece SecurityToken=Clave para asegurar las URL NoSmsEngine=No hay ningún administrador de remitentes de SMS disponible. Un administrador de remitentes de SMS no está instalado con la distribución predeterminada porque depende de un proveedor externo, pero puede encontrar algunos en %s PDFDesc=Opciones globales para la generación de PDF -PDFAddressForging=Reglas para la sección de direcciones HideAnyVATInformationOnPDF=Ocultar toda la información relacionada con el impuesto sobre las ventas / IVA PDFRulesForSalesTax=Reglas para el impuesto de ventas / IVA HideLocalTaxOnPDF=Ocultar la tasa %s en la columna Impuesto sobre las ventas / IVA @@ -376,7 +382,10 @@ ModuleCompanyCodeSupplierDigitaria=%s seguido del nombre del proveedor truncado Use3StepsApproval=De forma predeterminada, los pedidos de compra deben ser creados y aprobados por 2 usuarios diferentes (un paso / usuario para crear y un paso / usuario para aprobar. Tenga en cuenta que si el usuario tiene permiso para crear y aprobar, un paso / usuario será suficiente) . Puede pedir con esta opción que introduzca un tercer paso / aprobación del usuario, si la cantidad es mayor que un valor dedicado (por lo que serán necesarios 3 pasos: 1 = validación, 2 = primera aprobación y 3 = segunda aprobación si la cantidad es suficiente).
Configúrelo en vacío si una aprobación (2 pasos) es suficiente, ajústelo a un valor muy bajo (0.1) si siempre se requiere una segunda aprobación (3 pasos). UseDoubleApproval=Utilice una aprobación de 3 pasos cuando la cantidad (sin impuestos) sea superior a ... WarningPHPMail=ADVERTENCIA: La configuración para enviar correos electrónicos desde la aplicación utiliza la configuración genérica predeterminada. A menudo, es mejor configurar los correos electrónicos salientes para utilizar el servidor de correo electrónico de su proveedor de servicios de correo electrónico en lugar de la configuración predeterminada por varias razones: +WarningPHPMailD=Además, por lo tanto, se recomienda cambiar el método de envío de correos electrónicos al valor "SMTP". Si realmente desea mantener el método "PHP" predeterminado para enviar correos electrónicos, simplemente ignore esta advertencia o elimínela configurando MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constante en 1 en Inicio - Configuración - Otro. WarningPHPMail2=Si su proveedor de correo electrónico SMTP necesita restringir el cliente de correo electrónico a algunas direcciones IP (muy raro), esta es la dirección IP del agente de usuario de correo (MUA) para su aplicación ERP CRM: %s . +WarningPHPMailSPF=Si el nombre de dominio en su dirección de correo electrónico del remitente está protegido por un registro SPF (pregunte a su registrador de nombre de dominio), debe agregar las siguientes IP en el registro SPF del DNS de su dominio: %s . +ActualMailSPFRecordFound=Registro de SPF real encontrado: %s ClickToShowDescription=Haga clic para mostrar la descripción DependsOn=Este módulo necesita el módulo (s) RequiredBy=Este módulo es requerido por el módulo (s) @@ -392,6 +401,7 @@ WarningSettingSortOrder=Advertencia: establecer un orden de clasificación prede ProductDocumentTemplates=Plantillas de documentos para generar documentos de productos. FreeLegalTextOnExpenseReports=Texto legal gratuito sobre informes de gastos. WatermarkOnDraftExpenseReports=Marca de agua en los proyectos de informes de gastos +ProjectIsRequiredOnExpenseReports=El proyecto es obligatorio para ingresar un informe de gastos. ForceExpenseReportsLineAmountsIncludingTaxesOnly=Forzar la entrada de importes del informe de gastos siempre en importe con impuestos AttachMainDocByDefault=Establézcalo en 1 si desea adjuntar el documento principal al correo electrónico de forma predeterminada (si corresponde) SendEmailsReminders=Enviar recordatorios de agenda por emails. @@ -454,6 +464,7 @@ Module400Desc=Gestión de proyectos, leads / oportunidades y / o tareas. Tambié Module410Name=Calendario web Module410Desc=Integración webcalendar Module500Name=Impuestos & Gastos especiales +Module500Desc=Gestión de otros gastos (impuestos a las ventas, impuestos sociales o fiscales, dividendos, ...) Module510Desc=Registrar y rastrear los pagos de los empleados Module520Desc=Gestion de prestamos Module600Name=Notificaciones sobre eventos comerciales @@ -488,6 +499,7 @@ Module3200Desc=Habilitar un registro inalterable de eventos empresariales. Los e Module3400Desc=Habilite los campos de Redes Sociales en terceros y direcciones (skype, twitter, facebook, ...). Module4000Desc=Gestión de recursos humanos (gestión de departamento, contratos de empleados y sentimientos). Module5000Desc=Le permite gestionar múltiples empresas. +Module6000Desc=Gestión del flujo de trabajo entre diferentes módulos (creación automática de objeto y / o cambio de estado automático) Module10000Desc=Cree sitios web (públicos) con un editor WYSIWYG. Este es un CMS orientado a webmasters o desarrolladores (es mejor conocer el lenguaje HTML y CSS). Simplemente configure su servidor web (Apache, Nginx, ...) para que apunte al directorio Dolibarr dedicado para tenerlo en línea en Internet con su propio nombre de dominio. Module20000Name=Gestión de solicitudes de licencia/permisos Module20000Desc=Definir y realizar un seguimiento de las solicitudes de licencia/permisos de los empleados @@ -503,6 +515,7 @@ Module50400Name=Contabilidad (doble entrada) Module54000Desc=Impresión directa (sin abrir los documentos) mediante la interfaz IPP de Cups (la impresora debe estar visible desde el servidor y CUPS debe estar instalada en el servidor). Module55000Name=Encuesta, encuesta o voto Module55000Desc=Cree sondeos, encuestas o votos en línea (como Doodle, Studs, RDVz, etc.) +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 @@ -622,6 +635,7 @@ PermissionAdvanced253=Crear / modificar usuarios internos / externos y permisos. Permission254=Crear / modificar usuarios externos solamente Permission256=Eliminar o deshabilitar otros usuarios Permission262=Ampliar el acceso a todos los terceros Y sus objetos (no solo a los terceros para los que el usuario es un representante de ventas).
No efectivo para usuarios externos (siempre limitado a ellos mismos para propuestas, pedidos, facturas, contratos, etc.).
No es efectivo para proyectos (solo reglas sobre permisos de proyectos, visibilidad y asuntos de asignación). +Permission263=Ampliar el acceso a todos los terceros SIN sus objetos (no solo a los terceros para los que el usuario es representante de ventas).
No efectivo para usuarios externos (siempre limitado a ellos mismos para propuestas, pedidos, facturas, contratos, etc.).
No es efectivo para proyectos (solo reglas sobre permisos de proyectos, visibilidad y asuntos de asignación). Permission271=Leer CA Permission272=Leer facturas Permission273=Emitir facturas @@ -647,6 +661,7 @@ Permission402=Crear / modificar descuentos. Permission403=Validar descuentos Permission404=Eliminar descuentos Permission430=Usar la barra de depuración +Permission512=Crear / modificar salarios y pagos Permission517=Leer sueldos y pagos de todo el mundo Permission519=Salarios de exportación Permission520=Leer prestamos @@ -699,6 +714,7 @@ Permission1185=Aprobar órdenes de compra Permission1186=Ordenar órdenes de compra Permission1187=Acuse recibo de órdenes de compra Permission1188=Eliminar órdenes de compra +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 @@ -726,6 +742,7 @@ Permission2503=Presentar o borrar documentos Permission2515=Configurar directorios de documentos Permission2801=Usar el cliente FTP en modo de lectura (solo navegar y descargar) Permission2802=Usar el cliente FTP en modo de escritura (eliminar o cargar archivos) +Permission4021=Crea/modifica tu evaluación Permission10001=Leer el contenido del sitio web Permission10002=Crear / modificar el contenido del sitio web (contenido html y javascript) Permission10003=Crear / modificar el contenido del sitio web (código php dinámico). Peligroso, debe reservarse para desarrolladores restringidos. @@ -733,15 +750,18 @@ Permission10005=Eliminar el contenido del sitio web Permission20001=Leer solicitudes de licencia (su licencia y las de sus subordinados) Permission20002=Crear / modificar sus solicitudes de licencia (su licencia y las de sus subordinados) Permission20003=Eliminar solicitudes de permiso +Permission20004=Leer todas las solicitudes de licencia (incluso las de usuarios que no sean subordinados) +Permission20005=Crear/modificar solicitudes de licencia para todos (incluso las de usuarios que no sean subordinados) +Permission20006=Administrar solicitudes de licencia (configurar y actualizar el saldo) Permission20007=Aprobar solicitudes de licencia Permission23001=Leer trabajo programado Permission23002=Crear / actualizar trabajo programado Permission23003=Eliminar trabajo programado Permission23004=Ejecutar trabajo programado Permission50101=Usar punto de venta (SimplePOS) +Permission50153=Editar líneas de venta ordenadas Permission50201=Leer transacciones Permission50202=Transacciones de importación -Permission50330=Leer objetos de Zapier Permission50331=Crear / actualizar objetos de Zapier Permission50401=Vincular productos y facturas con cuentas contables Permission50411=Leer operaciones en el libro mayor @@ -907,6 +927,7 @@ AreaForAdminOnly=Los parámetros de configuración solo pueden ser configurados SystemInfoDesc=La información del sistema es información técnica diversa que se obtiene en modo de solo lectura y visible solo para administradores. SystemAreaForAdminOnly=Esta área solo está disponible para usuarios administradores. Los permisos de usuario de Dolibarr no pueden cambiar esta restricción. AccountantDesc=Si tiene un contador/contable externo, puede editar aquí su información. +DisplayDesc=Aquí se pueden modificar los parámetros que afectan el aspecto y la presentación de la aplicación. ToActivateModule=Para activar los módulos, vaya al área de configuración (Inicio-> Configuración-> Módulos). SessionTimeOut=Tiempo fuera para sesión SessionExplanation=Este número garantiza que la sesión nunca caducará antes de este retraso, si el limpiador de sesión se realiza mediante un limpiador de sesión interno de PHP (y nada más). El limpiador interno de sesiones de PHP no garantiza que la sesión caduque después de este retraso. Expirará, después de este retraso, y cuando se ejecute el limpiador de sesiones, por lo que cada acceso %s / %s , pero solo durante el acceso realizado por otras sesiones (si el valor es 0, significa que la eliminación de la sesión es hecho solo por un proceso externo).
Nota: en algunos servidores con un mecanismo de limpieza de sesión externo (cron bajo debian, ubuntu ...), las sesiones pueden ser destruidas después de un período definido por una configuración externa, sin importar qué El valor introducido aquí es. @@ -963,7 +984,6 @@ MAIN_PROXY_HOST=Servidor proxy: nombre / dirección MAIN_PROXY_PORT=Servidor proxy: puerto MAIN_PROXY_USER=Servidor proxy: inicio de sesión / usuario MAIN_PROXY_PASS=Servidor proxy: contraseña -DefineHereComplementaryAttributes=Defina cualquier atributo adicional/personalizado que deba agregarse a: %s ExtraFields=Atributos complementarios ExtraFieldsLines=Atributos complementarios (líneas) ExtraFieldsLinesRec=Atributos complementarios (plantillas facturas líneas) @@ -1004,7 +1024,9 @@ SuhosinSessionEncrypt=Almacenamiento de sesión encriptado por Suhosin. ConditionIsCurrently=La condición es actualmente %s YouUseBestDriver=Utiliza el controlador %s, que es el mejor controlador disponible actualmente. YouDoNotUseBestDriver=Utiliza el controlador %s pero se recomienda el controlador %s. +ComboListOptim=Optimización de carga de lista combinada SearchOptim=Optimización de búsqueda +YouHaveXObjectUseComboOptim=Tiene %s %s en la base de datos. Puede ir a la configuración del módulo para habilitar la carga de la lista combinada en el evento de tecla presionada. YouHaveXObjectUseSearchOptim=Tiene %s %s en la base de datos. Puede agregar la constante %s a 1 en Inicio - Configuración - Otro. YouHaveXObjectAndSearchOptimOn=Tiene %s %s en la base de datos y la constante %s se establece en %s en Inicio - Configuración - Otro. BrowserIsOK=Está utilizando el navegador web %s. Este navegador está bien para la seguridad y el rendimiento. @@ -1019,6 +1041,7 @@ AskForPreferredShippingMethod=Pregunte por el método de envío preferido para t FillThisOnlyIfRequired=Ejemplo: +2 (rellenar solo si se experimentan problemas de compensación de zona horaria) NumberingModules=Modelos de numeración DocumentModules=Modelos de documentos +PasswordGenerationStandard=Devuelve una contraseña generada de acuerdo con el algoritmo interno de Dolibarr: %s caracteres que contienen números compartidos y caracteres en minúsculas. PasswordGenerationNone=No sugiera una contraseña generada. La contraseña debe escribirse manualmente. PasswordGenerationPerso=Devuelva una contraseña de acuerdo con su configuración definida personalmente. SetupPerso=Según su configuración @@ -1095,6 +1118,7 @@ MemberMainOptions=Principales opciones AdherentLoginRequired=Administrar un inicio de sesión para cada miembro AdherentMailRequired=Se requiere correo electrónico para crear un nuevo miembro MemberSendInformationByMailByDefault=La casilla de verificación para enviar la confirmación de correo a los miembros (validación o nueva suscripción) está activada de forma predeterminada +MemberCreateAnExternalUserForSubscriptionValidated=Cree un inicio de sesión de usuario externo para cada nueva suscripción de miembro validada MEMBER_REMINDER_EMAIL=Habilite el recordatorio automático por correo electrónico de suscripciones caducadas. Nota: El módulo %s debe estar habilitado y configurado correctamente para enviar recordatorios. LDAPSetup=Configuración de LDAP LDAPSynchronizeUsers=Organización de usuarios en LDAP. @@ -1228,6 +1252,7 @@ ServiceSetup=Configuración del módulo de servicios ProductServiceSetup=Configuración de módulos de productos y servicios. NumberOfProductShowInSelect=Número máximo de productos para mostrar en listas de selección combinadas (0 = sin límite) ViewProductDescInFormAbility=Mostrar descripciones de productos en líneas de artículos (de lo contrario, mostrar la descripción en una ventana emergente de información sobre herramientas) +OnProductSelectAddProductDesc=Cómo utilizar la descripción de los productos al agregar un producto como una línea de un documento DoNotAutofillButAutoConcat=No llene automáticamente el campo de entrada con la descripción del producto. La descripción del producto se concatenará a la descripción ingresada automáticamente. MergePropalProductCard=Active en la pestaña Archivos adjuntos del producto / servicio una opción para fusionar el documento PDF del producto a la propuesta PDF azur si el producto / servicio está en la propuesta UseSearchToSelectProductTooltip=Además, si tiene una gran cantidad de productos (> 100 000), puede aumentar la velocidad configurando la constante PRODUCT_DONOTSEARCH_ANYWHERE en 1 en Configuración-> Otros. La búsqueda se limitará entonces al inicio de la cadena. @@ -1276,6 +1301,8 @@ MailingDelay=Segundos para esperar después de enviar el siguiente mensaje. NotificationSetup=Configuración del módulo de notificación por correo electrónico NotificationEMailFrom=Correo electrónico del remitente (De) para los correos electrónicos enviados por el módulo de notificaciones FixedEmailTarget=Recipiente +NotificationDisableConfirmMessageContact=Oculte la lista de destinatarios (suscritos como contacto) de notificaciones en el mensaje de confirmación +NotificationDisableConfirmMessageFix=Oculte la lista de destinatarios (suscritos como correo electrónico global) de notificaciones en el mensaje de confirmación SendingsSetup=Configuración del módulo de envío SendingsReceiptModel=Enviando recibo modelo SendingsNumberingModules=Módulos de numeración de envíos. @@ -1298,7 +1325,6 @@ FCKeditorForMail=Creación / edición WYSIWIG para todo el correo (excepto Herra FCKeditorForTicket=Creación / edición WYSIWIG para entradas StockSetup=Configuración del módulo de stock IfYouUsePointOfSaleCheckModule=Si usa el módulo de Punto de Venta (POS) provisto por defecto o un módulo externo, su configuración puede ser ignorada por su módulo de POS. La mayoría de los módulos POS están diseñados de forma predeterminada para crear una factura inmediatamente y disminuir el stock, independientemente de las opciones aquí. Por lo tanto, si necesita o no una disminución de stock al registrar una venta desde su POS, verifique también la configuración de su módulo POS. -Menu=Menú NotTopTreeMenuPersonalized=Menús personalizados no vinculados a una entrada del menú superior NewMenu=Nuevo menu MenuHandler=Manejador de menú @@ -1521,6 +1547,7 @@ WarningInstallationMayBecomeNotCompliantWithLaw=Está intentando instalar el mó MAIN_DOCUMENTS_LOGO_HEIGHT=Altura para logo en PDF MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Agregar una columna para una imagen en las líneas de propuesta MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Ancho de la columna si se agrega una imagen en líneas +MAIN_PDF_NO_SENDER_FRAME=Ocultar bordes en el marco de la dirección del remitente MAIN_PDF_HIDE_SENDER_NAME=Ocultar el nombre del remitente / empresa en el bloque de direcciones MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING=Agregar inicio de sesión electrónico en PDF NothingToSetup=No se requiere una configuración específica para este módulo. @@ -1546,21 +1573,22 @@ EmailcollectorOperations=Operaciones a realizar por coleccionista. EmailcollectorOperationsDesc=Las operaciones se ejecutan de arriba a abajo. MaxEmailCollectPerCollect=Número máximo de correos electrónicos recolectados por recolección ConfirmCloneEmailCollector=¿Está seguro de que desea duplicar el recolector de correo electrónico %s? -DateLastCollectResult=Fecha del último intento de recolección DateLastcollectResultOk=Fecha del último éxito de recolección EmailCollectorConfirmCollectTitle=Correo electrónico recoger confirmación EmailCollectorConfirmCollect=¿Quieres ejecutar la recolección de este recolector ahora? NoNewEmailToProcess=No hay correo electrónico nuevo (filtros coincidentes) para procesar XEmailsDoneYActionsDone=%s correos electrónicos calificados, %s correos electrónicos procesados correctamente (para %s registro/acciones realizadas) +CreateLeadAndThirdParty=Cree un cliente potencial (y un tercero si es necesario) CodeLastResult=Último código de resultado NbOfEmailsInInbox=Número de correos electrónicos en el directorio de origen LoadThirdPartyFromName=Cargar búsqueda de terceros en %s (solo cargar) LoadThirdPartyFromNameOrCreate=Cargar búsqueda de terceros en %s (crear si no se encuentra) +AttachJoinedDocumentsToObject=Guarde los archivos adjuntos en documentos de objetos si se encuentra una referencia de un objeto en el tema del correo electrónico. WithDolTrackingID=Mensaje de una conversación iniciada por un primer correo electrónico enviado desde Dolibarr WithoutDolTrackingID=Mensaje de una conversación iniciada por un primer correo electrónico NO enviado desde Dolibarr MainMenuCode=Código de entrada de menú (menú principal) ECMAutoTree=Mostrar árbol ECM automático -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=Defina las reglas que se utilizarán para extraer o establecer valores.
Ejemplo de operaciones que necesitan extraer un nombre del asunto del correo electrónico:
nombre=EXTRACT:SUBJECT:Mensaje de la empresa ([^\n] *)
Ejemplo para las operaciones que crean objetos:
objproperty1=SET: el valor puesto
objproperty2=SET: un valor incluyendo el valor de __objproperty1__
objproperty3=SETIFEMPTY: valor utilizado si objproperty3 no está ya definido
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:El nombre de mi empresa es\\s( [^\\s]*)

Use un ; char como separador para extraer o establecer varias propiedades. OpeningHours=Horario de oficina OpeningHoursDesc=Introduzca aquí el horario habitual de trabajo/servicio de su empresa. ResourceSetup=Configuración del módulo de recursos @@ -1591,9 +1619,10 @@ EXPORTS_SHARE_MODELS=Los modelos de exportación se comparten con todos ExportSetup=Configuración de la exportación del módulo ImportSetup=Configuración de la importación del módulo InstanceUniqueID=ID único de la instancia +IfTrackingIDFoundEventWillBeLinked=Tenga en cuenta que si se encuentra un ID de seguimiento de un objeto en un correo electrónico, o si el correo electrónico es una respuesta de un correo electrónico ya recopilado y vinculado a un objeto, el evento creado se vinculará automáticamente al objeto relacionado conocido. WithGMailYouCanCreateADedicatedPassword=Si habilitó la validación de 2 pasos con una cuenta de GMail, 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/. EmailCollectorTargetDir=Puede ser un comportamiento deseado mover el correo electrónico a otra etiqueta/directorio cuando se procesó correctamente. Simplemente configure el nombre del directorio aquí para usar esta función (NO use caracteres especiales en el nombre). Tenga en cuenta que también debe utilizar una cuenta de inicio de sesión de lectura/escritura. -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=Puede usar esta acción para usar el contenido del correo electrónico para buscar y cargar un tercero existente en su base de datos. El tercero encontrado (o creado) se utilizará para las siguientes acciones que lo requieran.
Por ejemplo, si desea crear un tercero con un nombre extraído de una cadena 'Nombre: nombre para encontrar' presente en el cuerpo, use el correo electrónico del remitente como correo electrónico, puede configurar el campo del parámetro de esta manera:
'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á seguro de que desea eliminar este recopilador de correo electrónico? @@ -1647,3 +1676,4 @@ EnabledCondition=Condición para tener el campo habilitado (si no está habilita LanguageAndPresentation=Lenguaje y presentación SkinAndColors=Piel y colores PDF_USE_1A=Generar PDF con formato PDF / A-1b +PreviousHash=Hachís anterior diff --git a/htdocs/langs/es_CO/bills.lang b/htdocs/langs/es_CO/bills.lang index c156e84ed5f..b9af989bbb7 100644 --- a/htdocs/langs/es_CO/bills.lang +++ b/htdocs/langs/es_CO/bills.lang @@ -63,7 +63,6 @@ PaymentsReportsForYear=Informes de pagos para %s PaymentsAlreadyDone=Pagos ya hechos PaymentsBackAlreadyDone=Reembolsos ya relizados PaymentRule=Regla de pago -PaymentTypeDC=Tarjeta de crédito débito PaymentTerm=Plazo de pago PaymentConditions=Términos de pago PaymentConditionsShort=Términos de pago @@ -348,6 +347,7 @@ PaymentTypeShortCHQ=Verificar PaymentTypeTIP=TIP (Documentos contra pago) PaymentTypeShortTIP=TIP Pago PaymentTypeTRA=giro bancario +PaymentTypeDC=Tarjeta de crédito débito BankDetails=Cuentas bancarias BankCode=codigo bancario DeskCode=Código de sucursal diff --git a/htdocs/langs/es_CO/blockedlog.lang b/htdocs/langs/es_CO/blockedlog.lang index d3224cc30cc..fcd666aaca2 100644 --- a/htdocs/langs/es_CO/blockedlog.lang +++ b/htdocs/langs/es_CO/blockedlog.lang @@ -31,3 +31,6 @@ BlockedLogAreRequiredByYourCountryLegislation=El módulo Registros inalterables BlockedLogActivatedBecauseRequiredByYourCountryLegislation=El módulo Registros inalterables se activó debido a la legislación de su país. La desactivación de este módulo puede invalidar cualquier transacción futura con respecto a la ley y el uso de software legal, ya que no pueden ser validadas por una auditoría fiscal. BlockedLogDisableNotAllowedForCountry=Lista de países donde el uso de este módulo es obligatorio (solo para evitar deshabilitar el módulo por error, si su país está en esta lista, no es posible deshabilitar el módulo sin editar esta lista primero. Tenga en cuenta también que habilitar / deshabilitar este módulo mantener un registro en el registro inalterable). TooManyRecordToScanRestrictFilters=Demasiados registros para escanear / analizar. Restrinja la lista con filtros más restrictivos. +BlockedLogEnabled=Se ha habilitado el sistema para rastrear eventos en registros inalterables +BlockedLogDisabled=El sistema para rastrear eventos en registros inalterables se deshabilitó después de que se realizaron algunas grabaciones. Guardamos una huella digital especial para rastrear la cadena como rota +BlockedLogDisabledBis=Se ha deshabilitado el sistema para rastrear eventos en registros inalterables. Esto es posible porque aún no se ha realizado ningún registro. diff --git a/htdocs/langs/es_CO/bookmarks.lang b/htdocs/langs/es_CO/bookmarks.lang index d76203c7aa0..dc99f7b06ba 100644 --- a/htdocs/langs/es_CO/bookmarks.lang +++ b/htdocs/langs/es_CO/bookmarks.lang @@ -6,5 +6,6 @@ ShowBookmark=Mostrar marcador ReplaceWindow=Reemplazar pestaña actual BehaviourOnClick=Comportamiento cuando se selecciona una URL de marcador SetHereATitleForLink=Establecer un nombre para el marcador +UseAnExternalHttpLinkOrRelativeDolibarrLink=Use un link externo/absoluto (https://ejemplo.com) o un link interno/relativo (/mypage.php). También puede usar un teléfono como tel: 0123456. ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Elija si la página vinculada debe abrirse en la pestaña actual o en una nueva pestaña BookmarksMenuShortCut=Ctrl + Mayús + m diff --git a/htdocs/langs/es_CO/companies.lang b/htdocs/langs/es_CO/companies.lang index faa200b06d4..f740d495d5d 100644 --- a/htdocs/langs/es_CO/companies.lang +++ b/htdocs/langs/es_CO/companies.lang @@ -40,6 +40,10 @@ SupplierCodeModel=Modelo de código de proveedor ProfId1AT=Id prof. 1 (USt.-IdNr) ProfId2AT=Id prof. 2 (USt.-Nr) ProfId3AT=Id prof. 3 (Handelsregister-Nr.) +ProfId1CM=Prueba de ID 1 (Registro de Comercio) +ProfId2CM=Prueba de ID 2 (Nº de Contribuyente) +ProfId3CM=Prueba de ID 3 (Decreto de creación) +ProfId2ShortCM=Contribuyente No. ProfId2CO=Identificación (CC, NIT, CE) ProfId3CO=CIIU ProfId1ShortFR=SIRENA diff --git a/htdocs/langs/es_CO/compta.lang b/htdocs/langs/es_CO/compta.lang index 63736363fb6..05fa4dbd95b 100644 --- a/htdocs/langs/es_CO/compta.lang +++ b/htdocs/langs/es_CO/compta.lang @@ -138,6 +138,8 @@ SeeReportInInputOutputMode=Consulte %sanálisis de pagos%s para obtener SeeReportInDueDebtMode=Consulte %sanálisis de documentos registrados%s para obtener un cálculo basado en documentos registrados conocidos incluso si aún no están contabilizados en el libro mayor SeeReportInBookkeepingMode=Consulte %sanálisis de la tabla de contabilidad contable%s para obtener un informe basado en Tabla de contabilidad contable RulesAmountWithTaxIncluded=- Las cantidades mostradas están con todos los impuestos incluidos. +RulesResultDue=- Incluye todas las facturas, gastos, IVA, donaciones, salarios, estén o no pagados.
- Se basa en la fecha de facturación de las facturas y en la fecha de vencimiento de los gastos o pagos de impuestos. Para los salarios se utiliza la fecha de fin de período. +RulesResultInOut=- Incluye los pagos reales realizados de facturas, gastos, IVA y salarios.
- Se basa en las fechas de pago de las facturas, gastos, IVA, donaciones y salarios. RulesCADue=- Incluye las facturas vencidas del cliente, ya sean pagadas o no.
- Se basa en la fecha de facturación de estas facturas.
RulesCAIn=- Incluye todos los pagos efectivos de las facturas recibidas de los clientes.
- Se basa en la fecha de pago de estas facturas
RulesCATotalSaleJournal=Incluye todas las líneas de crédito del diario Sale. diff --git a/htdocs/langs/es_CO/errors.lang b/htdocs/langs/es_CO/errors.lang index 50490d54339..d7ee4fe6ffd 100644 --- a/htdocs/langs/es_CO/errors.lang +++ b/htdocs/langs/es_CO/errors.lang @@ -236,6 +236,7 @@ WarningFailedToAddFileIntoDatabaseIndex=Advertencia, no se pudo agregar la entra WarningAvailableOnlyForHTTPSServers=Disponible solo si se usa una conexión segura HTTPS. RequireAtLeastXString =Requiere al menos %s carácter (s) RequireXStringMax =Requiere %s caracter(es) como máximo +RequireValidNumeric =Requiere un valor numérico RequireValidEmail =La dirección de correo electrónico no es válida RequireMaxLength =La longitud debe ser menor que %s caracteres RequireValidUrl =Requerir URL válida diff --git a/htdocs/langs/es_CO/eventorganization.lang b/htdocs/langs/es_CO/eventorganization.lang index cca82066be8..6884bedb6a6 100644 --- a/htdocs/langs/es_CO/eventorganization.lang +++ b/htdocs/langs/es_CO/eventorganization.lang @@ -3,15 +3,13 @@ ModuleEventOrganizationName =Organización del evento EventOrganizationDescriptionLong=Gestionar la organización de un evento (espectáculo, conferencias, asistentes o ponentes, con páginas públicas para sugerencia, voto o registro) Settings=Ajustes EVENTORGANIZATION_TASK_LABELTooltip =Al validar un evento organizado, algunas tareas se pueden crear automáticamente en el proyecto

Por ejemplo:
Enviar llamada para conferencia
Enviar llamada para stand
Recibir llamada para conferencias
Recibir llamada para stand
Abrir suscripciones a eventos para asistentes
recordar el evento a los oradores
Enviar recordatorio del evento al anfitrión del stand
Enviar recordatorio del evento a los asistentes -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH =Plantilla de correo electrónico para enviar después de que se haya pagado la inscripción a un stand. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT =Plantilla de correo electrónico para enviar después de que se haya pagado la inscripción a un evento. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER =Plantilla de correo electrónico de masacre a asistentes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES =Plantilla de correo electrónico de masacre a ponentes EventOrganizationConfOrBooth=Conferencia o stand ManageOrganizeEvent =Gestionar la organización de un evento ConferenceOrBooth =Conferencia o stand ConferenceOrBoothTab =Conferencia o stand AmountPaid =Cantidad pagada +ToSpeakers=A los altavoces AllowUnknownPeopleSuggestConf=Permitir que las personas sugieran conferencias AllowUnknownPeopleSuggestBooth=Permitir que las personas soliciten un stand NbVotes=Numero de votos diff --git a/htdocs/langs/es_CO/holiday.lang b/htdocs/langs/es_CO/holiday.lang index d8e37d8b8d1..ad7bd301a26 100644 --- a/htdocs/langs/es_CO/holiday.lang +++ b/htdocs/langs/es_CO/holiday.lang @@ -105,3 +105,4 @@ FreeLegalTextOnHolidays=Texto libre en PDF WatermarkOnDraftHolidayCards=Marcas de agua en solicitudes de licencia de borrador HolidaysToApprove=Días festivos para aprobar NobodyHasPermissionToValidateHolidays=Nadie tiene permiso para validar las vacaciones. +ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=La solicitud de licencia %s debe ser borrador, cancelada o rechazada para ser eliminada diff --git a/htdocs/langs/es_CO/knowledgemanagement.lang b/htdocs/langs/es_CO/knowledgemanagement.lang index 9c4c99c34f2..bc5540d9bec 100644 --- a/htdocs/langs/es_CO/knowledgemanagement.lang +++ b/htdocs/langs/es_CO/knowledgemanagement.lang @@ -9,3 +9,4 @@ KnowledgeManagementArea =Conocimiento administrativo MenuKnowledgeRecord =Base de conocimientos GroupOfTicket=Grupo de entradas YouCanLinkArticleToATicketCategory=Puede vincular un artículo a un grupo de entradas (por lo que el artículo se sugerirá durante la calificación de nuevas entradas) +SuggestedForTicketsInGroup=Sugerido para boletos cuando el grupo es diff --git a/htdocs/langs/es_CO/main.lang b/htdocs/langs/es_CO/main.lang index 68769439084..ffef2f25c5f 100644 --- a/htdocs/langs/es_CO/main.lang +++ b/htdocs/langs/es_CO/main.lang @@ -117,6 +117,7 @@ MulticurrencyAmountTTC=Importe (inc. De impuestos), moneda original MulticurrencyAmountVAT=Importe impuesto, moneda original PriceQtyMinHT=Precio cantidad min. (sin impuestos) PriceQtyMinHTCurrency=Precio cantidad min. (sin impuestos) (moneda) +PercentOfOriginalObject=Porcentaje de objeto original TotalHTShort=Total (sin imp.) TotalHTShortCurrency=Total (excl. En moneda) TotalHT=Total (sin imp.) @@ -210,6 +211,7 @@ LinkToSupplierInvoice=Enlace a la factura del proveedor LinkToContract=Enlace al contrato LinkToIntervention=Enlace a la intervención LinkToTicket=Enlace al ticket +LinkToMo=Enlace a Mo ClickToRefresh=Haga clic para actualizar EditHTMLSource=Editar código fuente HTML SystemTools=Herramientas de sistema @@ -218,7 +220,6 @@ SelectAction=Seleccione la acción SelectTargetUser=Seleccionar usuario / empleado objetivo AccountCurrency=Cuenta de dinero ShowMoreLines=Mostrar más / menos líneas -SelectElementAndClick=Seleccione un elemento y haga clic en %s PrintFile=Imprimir archivo %s ShowTransaction=Mostrar entrada en cuenta bancaria ShowIntervention=Mostrar intervencion @@ -333,8 +334,12 @@ SecurityTokenHasExpiredSoActionHasBeenCanceledPleaseRetry=El token de seguridad UpToDate=Al día OutOfDate=Vencido EventReminder=Recordatorio de evento +Civility=Civilidad ConfirmAffectTag=Afectar etiqueta en masa ConfirmAffectTagQuestion=¿Está seguro de que desea afectar las etiquetas a los %s registros seleccionados ? +InformationOnLinkToContract=Esta cantidad es solo el total de todas las líneas del contrato. No se toma en consideración ninguna noción de tiempo. +ConfirmCancel=Estas seguro que quieres cancelar +EmailMsgID=MsgID de correo electrónico SetToEnabled=Establecer como habilitado SetToDisabled=Establecer como deshabilitado ConfirmMassEnablingQuestion=¿Está seguro de que desea habilitar los %s registro(s) seleccionado(s)? diff --git a/htdocs/langs/es_CO/modulebuilder.lang b/htdocs/langs/es_CO/modulebuilder.lang index 8e4e5f71219..e66ed23363e 100644 --- a/htdocs/langs/es_CO/modulebuilder.lang +++ b/htdocs/langs/es_CO/modulebuilder.lang @@ -76,6 +76,7 @@ MenusDefDescTooltip=Los menús proporcionados por su módulo / aplicación se de DictionariesDefDescTooltip=Los diccionarios proporcionados por su módulo / aplicación se definen en la matriz $ this-> dictionary en el archivo descriptor del módulo. Puede editar manualmente este archivo o utilizar el editor incorporado.

Nota: Una vez definidos (y el módulo reactivado), los diccionarios también son visibles en el área de configuración para los usuarios administradores en %s. PermissionsDefDescTooltip=Los permisos proporcionados por su módulo / aplicación se definen en la matriz $ this-> rights en el archivo descriptor del módulo. Puede editar manualmente este archivo o utilizar el editor incorporado.

Nota: Una vez definidos (y el módulo reactivado), los permisos son visibles en la configuración de permisos predeterminada %s. HooksDefDesc=Defina en la propiedad module_parts['hooks'] , en el descriptor del módulo, el contexto de los ganchos (hooks) que desea administrar (la lista de contextos se puede encontrar mediante una búsqueda en ' initHooks (' en el código central).
El archivo de gancho (hook) para agregar el código de sus funciones enganchadas (las funciones enganchables se pueden encontrar mediante una búsqueda en ' executeHooks ' en el código central). +TriggerDefDesc=Defina en el archivo disparador el código que desea ejecutar cuando se ejecute un evento de negocio externo a su módulo (eventos disparados por otros módulos). SeeIDsInUse=Ver ID en uso en su instalación SeeReservedIDsRangeHere=Ver rango de ID reservados ToolkitForDevelopers=Kit de herramientas para desarrolladores de Dolibarr diff --git a/htdocs/langs/es_CO/mrp.lang b/htdocs/langs/es_CO/mrp.lang index 1aca235829c..ee1902077da 100644 --- a/htdocs/langs/es_CO/mrp.lang +++ b/htdocs/langs/es_CO/mrp.lang @@ -16,7 +16,7 @@ WatermarkOnDraftBOMs=Marca de agua en borrador de lista de materiales FreeLegalTextOnMOs=Texto libre en documento de MO WatermarkOnDraftMOs=Marca de agua en el borrador de MO ConfirmCloneMo=¿Está seguro de que desea clonar la orden de fabricación %s? -ValueOfMeansLoss=El valor de 0,95 significa un promedio de 5%% de pérdida durante la producción. +ValueOfMeansLoss=Valor de 0,95 significa un promedio de 5%% de pérdida durante la fabricación o el desmontaje ValueOfMeansLossForProductProduced=El valor de 0,95 significa un promedio de 5%% de pérdida de producto producido DeleteBillOfMaterials=Eliminar lista de materiales DeleteMo=Eliminar orden de fabricación @@ -46,3 +46,4 @@ NoStockChangeOnServices=Sin cambio de stock en los servicios ProductsToProduce=Productos a producir BOMTotalCost=El costo de producir esta lista de materiales en función del costo de cada cantidad y producto a consumir (use el precio de costo si está definido, de lo contrario, el precio promedio ponderado si está definido, de lo contrario, el mejor precio de compra) ErrorAVirtualProductCantBeUsedIntoABomOrMo=Un kit no se puede utilizar en una lista de materiales o un MO +CollapseBOMHelp=Puede definir la visualización predeterminada de los detalles de la nomenclatura en la configuración del módulo BOM diff --git a/htdocs/langs/es_CO/other.lang b/htdocs/langs/es_CO/other.lang index 5a4b7bca97f..6528536e60b 100644 --- a/htdocs/langs/es_CO/other.lang +++ b/htdocs/langs/es_CO/other.lang @@ -178,6 +178,10 @@ IfAmountHigherThan=Si la cantidad es superior a %s SourcesRepository=Repositorio de fuentes PassEncoding=Codificación de contraseña YourPasswordMustHaveAtLeastXChars=Su contraseña debe tener al menos %s caracteres +PasswordNeedAtLeastXUpperCaseChars=La contraseña necesita al menos %s caracteres en mayúsculas +PasswordNeedAtLeastXDigitChars=La contraseña necesita al menos %s caracteres numéricos +PasswordNeedAtLeastXSpecialChars=La contraseña necesita al menos %s caracteres especiales +PasswordNeedNoXConsecutiveChars=La contraseña no debe tener %s caracteres similares consecutivos YourPasswordHasBeenReset=Tu contraseña ha sido restablecida con éxito SMSSentTo=SMS enviados a %s MissingIds=IDs que faltan diff --git a/htdocs/langs/es_CO/partnership.lang b/htdocs/langs/es_CO/partnership.lang index 1fd381cc9c8..122f5cf7523 100644 --- a/htdocs/langs/es_CO/partnership.lang +++ b/htdocs/langs/es_CO/partnership.lang @@ -2,6 +2,7 @@ ModulePartnershipName=Gestión de alianzas PartnershipDescription=Módulo de gestión de asociaciones PartnershipDescriptionLong=Módulo de gestión de asociaciones +Partnership=Sociedad (Partnership) NewPartnership=Nueva sociedad ListOfPartnerships=Lista de asociación PartnershipSetup=Configuración de la asociación diff --git a/htdocs/langs/es_CO/productbatch.lang b/htdocs/langs/es_CO/productbatch.lang index 691d4afd316..4435b1bc075 100644 --- a/htdocs/langs/es_CO/productbatch.lang +++ b/htdocs/langs/es_CO/productbatch.lang @@ -21,4 +21,5 @@ ShowLogOfMovementIfLot=Mostrar registro de movimientos por pareja producto/lote StockDetailPerBatch=Valores detallados por lote SerialNumberAlreadyInUse=El número de serie %s ya se usa para el producto %s BatchSerialNumberingModules=Regla de numeración para la generación automática de número de serie (para productos con propiedad 1 lote / serie único para cada producto) +QtyToAddAfterBarcodeScan=Cantidad a %s por cada código de barras/lote/serie escaneado EndOfLife=Fin de la vida diff --git a/htdocs/langs/es_CO/products.lang b/htdocs/langs/es_CO/products.lang index 7ee70d35e36..6901f598df8 100644 --- a/htdocs/langs/es_CO/products.lang +++ b/htdocs/langs/es_CO/products.lang @@ -241,3 +241,7 @@ ProductSupplierExtraFields=Atributos adicionales (precios de proveedores) DeleteLinkedProduct=Eliminar el producto secundario vinculado a la combinación AmountUsedToUpdateWAP=Cantidad a utilizar para actualizar el precio medio ponderado PMPValue=Precio promedio ponderado +mandatoryPeriodNeedTobeSet=Nota: Debe definirse el período (fecha de inicio y finalización) +mandatoryHelper=Marque esto si desea un mensaje para el usuario al crear / validar una factura, propuesta comercial, orden de venta sin ingresar una fecha de inicio y finalización en las líneas con este servicio.
Tenga en cuenta que el mensaje es una advertencia y no un error de bloqueo. +SwitchOnSaleStatus=Activar estado de venta +SwitchOnPurchaseStatus=Activar estado de compra diff --git a/htdocs/langs/es_CO/projects.lang b/htdocs/langs/es_CO/projects.lang index 4a556806570..42fa3d7ba31 100644 --- a/htdocs/langs/es_CO/projects.lang +++ b/htdocs/langs/es_CO/projects.lang @@ -201,3 +201,4 @@ ProfitIsCalculatedWith=La ganancia se calcula usando PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Nota: los proyectos existentes con todas las tareas en 100%% no se verán afectados: tendrá que cerrarlos manualmente. Esta opción solo afecta a proyectos abiertos. ProjectTasksWithoutTimeSpent=Proyecto de tareas sin tiempo invertido FormForNewLeadDesc=Gracias por llenar el siguiente formulario para contactarnos. También puede enviarnos un correo electrónico directamente a %s . +StartDateCannotBeAfterEndDate=La fecha de finalización no puede ser anterior a la fecha de inicio diff --git a/htdocs/langs/es_CO/receptions.lang b/htdocs/langs/es_CO/receptions.lang index 36c588df434..fb9a67d8272 100644 --- a/htdocs/langs/es_CO/receptions.lang +++ b/htdocs/langs/es_CO/receptions.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Configuración de recepción de productos +ReceptionDescription=Gestión de recepción de proveedores (Crear documentos de recepción) Reception=Recepción ReceptionsArea=Área de recepciones ListOfReceptions=Lista de recepciones diff --git a/htdocs/langs/es_CO/stocks.lang b/htdocs/langs/es_CO/stocks.lang index a4826ddcaae..137e6c47dfe 100644 --- a/htdocs/langs/es_CO/stocks.lang +++ b/htdocs/langs/es_CO/stocks.lang @@ -161,7 +161,11 @@ StockDecreaseAfterCorrectTransfer=Disminuir por corrección / transferencia StockIncrease=Aumento de stock StockDecrease=Disminución de stock AlwaysShowFullArbo=Mostrar el árbol completo del almacén en la ventana emergente de los enlaces del almacén (Advertencia: esto puede disminuir drásticamente el rendimiento) +UpdateByScaning=Complete la cantidad real escaneando ImportFromCSV=Importar lista CSV de movimiento InfoTemplateImport=El archivo cargado debe tener este formato (* son campos obligatorios):
Source Warehouse * | Almacén de destino * | Producto * | Cantidad * | Lote / número de serie
El separador de caracteres CSV debe ser " %s " ProductBatchDoesNotExist=El producto con lote / serie no existe InventoryStartedShort=Empezado +QtyWasAddedToTheScannedBarcode=Éxito !! La cantidad se agregó a todos los códigos de barras solicitados. Puede cerrar la herramienta Escáner. +StockChangeDisabled=Cambio en stock deshabilitado +NoWarehouseDefinedForTerminal=No hay almacén definido para terminal diff --git a/htdocs/langs/es_CO/stripe.lang b/htdocs/langs/es_CO/stripe.lang index 68442b66c99..e4412f149cc 100644 --- a/htdocs/langs/es_CO/stripe.lang +++ b/htdocs/langs/es_CO/stripe.lang @@ -1,4 +1,5 @@ # Dolibarr language file - Source file is en_US - stripe +StripeDesc=Ofrezca a sus clientes una página de pago en línea para pagos con tarjetas de crédito/débito a través de Stripe . Esto se puede utilizar para permitir que sus clientes realicen pagos ad-hoc o pagos relacionados con un objeto particular de Dolibarr (factura, pedido, ...) StripeOrCBDoPayment=Paga con tarjeta de crédito o Stripe STRIPE_PAYONLINE_SENDEMAIL=Notificación por correo electrónico después de un intento de pago (exitoso o fallido) StripeDoPayment=Paga con Stripe diff --git a/htdocs/langs/es_CO/withdrawals.lang b/htdocs/langs/es_CO/withdrawals.lang index ff6d53c208f..38e533e6b22 100644 --- a/htdocs/langs/es_CO/withdrawals.lang +++ b/htdocs/langs/es_CO/withdrawals.lang @@ -95,6 +95,7 @@ BankTransferAmount=Monto de la solicitud de transferencia bancaria: WithdrawRequestErrorNilAmount=No se puede crear una solicitud de débito automático por un monto vacío. SepaMandate=Mandato de débito automático SEPA PleaseReturnMandate=Envíe este formulario de mandato por correo electrónico a %s o por correo postal a +SEPALegalText=Al firmar este formulario de mandato, autoriza a (A) %s a enviar instrucciones a su banco para que debite su cuenta y (B) a su banco a que debite su cuenta de acuerdo con las instrucciones de %s. Como parte de sus derechos, tiene derecho a un reembolso de su banco según los términos y condiciones de su acuerdo con su banco. Sus derechos con respecto al mandato anterior se explican en una declaración que puede obtener de su banco. CreditorIdentifier=Identificador del acreedor (CI) CreditorName=Nombre del acreedor SEPAFillForm=(B) Por favor complete todos los campos marcados * @@ -118,3 +119,5 @@ InfoRejectMessage=Hola,

la orden de pago por débito automático de la ModeWarning=La opción para el modo real no se configuró, nos detenemos después de esta simulación. ErrorCompanyHasDuplicateDefaultBAN=La empresa con la identificación %s tiene más de una cuenta bancaria predeterminada. No hay forma de saber cuál usar. TotalAmountOfdirectDebitOrderDiffersFromSumOfLines=El monto total de la orden de débito automático difiere de la suma de líneas +WarningSomeDirectDebitOrdersAlreadyExists=Aviso: Ya hay algunas órdenes de Débito Directo pendientes (%s) solicitadas por un importe de %s +WarningSomeCreditTransferAlreadyExists=Advertencia: Ya hay alguna Transferencia de Crédito pendiente (%s) solicitada por un monto de %s diff --git a/htdocs/langs/es_DO/admin.lang b/htdocs/langs/es_DO/admin.lang index 43a2dbc6cfa..8317eec449a 100644 --- a/htdocs/langs/es_DO/admin.lang +++ b/htdocs/langs/es_DO/admin.lang @@ -9,3 +9,5 @@ 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/companies.lang b/htdocs/langs/es_DO/companies.lang new file mode 100644 index 00000000000..40b5f885e43 --- /dev/null +++ b/htdocs/langs/es_DO/companies.lang @@ -0,0 +1,7 @@ +# Dolibarr language file - Source file is en_US - companies +ProfId1CM=Id. prof. 1 (Trade Register) +ProfId2CM=Id. prof. 2 (Taxpayer No.) +ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1ShortCM=Trade Register +ProfId2ShortCM=Taxpayer No. +ProfId3ShortCM=Decree of creation diff --git a/htdocs/langs/es_EC/admin.lang b/htdocs/langs/es_EC/admin.lang index d39ca139dde..266b2ae19e4 100644 --- a/htdocs/langs/es_EC/admin.lang +++ b/htdocs/langs/es_EC/admin.lang @@ -239,7 +239,6 @@ ThisIsAlternativeProcessToFollow=Esta es una configuración alternativa para pro FindPackageFromWebSite=Encuentre un paquete que proporcione las funciones que necesita (por ejemplo, en el sitio web oficial %s). DownloadPackageFromWebSite=Descargue el paquete (por ejemplo, desde el sitio web oficial %s). UnpackPackageInDolibarrRoot=Descomprima / descomprima los archivos empaquetados en su directorio del servidor Dolibarr: %s -UnpackPackageInModulesRoot=Para implementar / instalar un módulo externo, descomprima / descomprima los archivos empaquetados en el directorio del servidor dedicado a los módulos externos:
%s SetupIsReadyForUse=El despliegue del módulo ha finalizado. Sin embargo, debe habilitar y configurar el módulo en su aplicación yendo a los módulos de configuración de la página: InfDirAlt=Desde la versión 3, es posible definir un directorio raíz alternativo. Esto le permite almacenar, en un directorio dedicado, plug-ins y plantillas personalizadas.
Sólo se crea un directorio en la raíz de Dolibarr (por ejemplo: personalizado).
@@ -750,7 +749,6 @@ LocalTax2IsUsedDescES=La tasa de IRPF por defecto al crear prospectos, facturas, LocalTax2IsNotUsedDescES=Por defecto, el IRPF ha propuesto 0. Fin de la regla. LocalTax2IsUsedExampleES=En España, freelancers y profesionales independientes que prestan servicios y empresas que han elegido el sistema tributario de módulos. LocalTax2IsNotUsedExampleES=En España son empresas no sujetas al régimen fiscal de los módulos. -RevenueStampDesc=El "sello fiscal" o "sello de ingresos" es un impuesto fijo que usted paga por factura (no depende del monto de la factura). También puede ser un porcentaje de impuestos, pero usar el segundo o tercer tipo de impuesto es mejor para los impuestos porcentuales, ya que los timbres fiscales no proporcionan ningún informe. Solo unos pocos países utilizan este tipo de impuesto. UseRevenueStamp=Use un sello fiscal UseRevenueStampExample=El valor del sello fiscal se define de manera predeterminada en la configuración de los diccionarios (%s - %s - %s) CalcLocaltax=Informes sobre impuestos locales @@ -924,6 +922,7 @@ PasswordPatternDesc=Descripción del patrón de contraseña DisableForgetPasswordLinkOnLogonPage=No mostrar el enlace "Contraseña olvidada" en la página de inicio de sesión UsersSetup=Configuración de módulos de usuario UserMailRequired=Email requerido para crear un nuevo usuario +UserHideInactive=Ocultar usuarios inactivos de todas las listas de usuarios combinados (No recomendado: esto puede significar que no podrá filtrar o buscar usuarios antiguos en algunas páginas) HRMSetup=Configuración del módulo de RRHH (Recursos Humanos) CompanySetup=Configuración del módulo de empresas CompanyCodeChecker=Opciones para la generación automática de códigos de clientes / proveedores. @@ -1237,6 +1236,7 @@ CashDeskIdWareHouse=Forzar y restringir el almacén a utilizar para la disminuci StockDecreaseForPointOfSaleDisabled=Disminución de stock desde punto de venta deshabilitado StockDecreaseForPointOfSaleDisabledbyBatch=La disminución de stock en POS no es compatible con el módulo Serial / Lot management (actualmente activo), por lo que la disminución de stock está deshabilitada. CashDeskYouDidNotDisableStockDecease=No desactivó la disminución de existencias al realizar una venta desde el punto de venta. Por lo tanto se requiere un almacén. +CashDeskForceDecreaseStockLabel=La disminución de existencias para productos por lotes fue forzada. CashDeskForceDecreaseStockDesc=Disminuya primero por las fechas más antiguas de comer y vender. BookmarkSetup=Configuración del módulo de marcadores BookmarkDesc=Este módulo le permite administrar los marcadores. También puede agregar accesos directos a cualquier página de Dolibarr o sitios web externos en su menú de la izquierda. @@ -1449,3 +1449,5 @@ EmailTemplate=Plantilla para correo electrónico EMailsWillHaveMessageID=Los correos electrónicos tendrán una etiqueta 'Referencias' que coincida con esta sintaxis JumpToBoxes=Vaya a Configuración -> Widgets Recommended=Recomendado +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_EC/bills.lang b/htdocs/langs/es_EC/bills.lang index 0eff56e47aa..f4780a77805 100644 --- a/htdocs/langs/es_EC/bills.lang +++ b/htdocs/langs/es_EC/bills.lang @@ -60,7 +60,6 @@ ReceivedCustomersPaymentsToValid=Pagos de clientes recibidos para validar PaymentsReportsForYear=Informes de pagos de%s PaymentsAlreadyDone=Pagos ya realizados PaymentRule=Regla de pago -PaymentTypeDC=Tarjeta de crédito débito PaymentTerm=Plazo de pago PaymentConditions=Términos de pago PaymentConditionsShort=Términos de pago @@ -327,6 +326,7 @@ PaymentTypeShortCHQ=Comprobar PaymentTypeTIP=TIP (documentos contra pago) PaymentTypeShortTIP=Pago de TIP PaymentTypeTRA=giro bancario +PaymentTypeDC=Tarjeta de crédito débito BankDetails=Detalles del banco BankCode=codigo bancario DeskCode=Código de sucursal diff --git a/htdocs/langs/es_EC/blockedlog.lang b/htdocs/langs/es_EC/blockedlog.lang index 4f7bb9a99a4..1f6e272599d 100644 --- a/htdocs/langs/es_EC/blockedlog.lang +++ b/htdocs/langs/es_EC/blockedlog.lang @@ -1,7 +1,6 @@ # Dolibarr language file - Source file is en_US - blockedlog BlockedLogDesc=Este módulo rastrea algunos eventos en un registro inalterable (que no puede modificar una vez registrado) en una cadena de bloques, en tiempo real. Este módulo proporciona compatibilidad con los requisitos de las leyes de algunos países (como Francia con la ley Finanzas 2016 - Norma NF525). FingerprintsDesc=Esta es la herramienta para navegar o extraer los registros inalterables. Los registros inalterables se generan y archivan localmente en una tabla dedicada, en tiempo real cuando registra un evento de negocios. Puede usar esta herramienta para exportar este archivo y guardarlo en un soporte externo (algunos países, como Francia, le piden que lo haga todos los años). Tenga en cuenta que no hay ninguna función para limpiar este registro y que todos los cambios que se intentaron realizar directamente en este registro (por ejemplo, un pirata informático) se informarán con una huella digital no válida. Si realmente necesita purgar esta tabla porque usó su aplicación para una demostración / propósito de prueba y desea limpiar sus datos para comenzar su producción, puede solicitar a su revendedor o integrador que reinicie su base de datos (se eliminarán todos sus datos). -KoCheckFingerprintValidity=La entrada de registro archivada no es válida. Significa que alguien (¿un pirata informático?) Ha modificado algunos datos de este registro después de que fue grabado, o ha borrado el registro archivado anterior (verifique que exista esa línea con # anterior). OkCheckFingerprintValidity=El registro de registro archivado es válido. Los datos en esta línea no se modificaron y la entrada sigue a la anterior. AddedByAuthority=Almacenado en sitio remoto NotAddedByAuthorityYet=Aún no almacenado en sitio remoto diff --git a/htdocs/langs/es_EC/mrp.lang b/htdocs/langs/es_EC/mrp.lang index 902fbfe221f..136c443a5d8 100644 --- a/htdocs/langs/es_EC/mrp.lang +++ b/htdocs/langs/es_EC/mrp.lang @@ -15,7 +15,6 @@ WatermarkOnDraftBOMs=Marca de agua en el borrador de lista de materiales FreeLegalTextOnMOs=Texto libre en el documento de MO WatermarkOnDraftMOs=Marca de agua en borrador MO ConfirmCloneMo=¿Está seguro de que desea clonar la orden de fabricación %s? -ValueOfMeansLoss=Valor de 0.95 significa un promedio de 5%% de pérdida durante la producción DeleteBillOfMaterials=Eliminar lista de materiales DeleteMo=Eliminar orden de fabricación QtyToProduce=Cantidad para producir diff --git a/htdocs/langs/es_EC/receptions.lang b/htdocs/langs/es_EC/receptions.lang index 27ab91b2044..17103f3b6d9 100644 --- a/htdocs/langs/es_EC/receptions.lang +++ b/htdocs/langs/es_EC/receptions.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Configuración de recepción del producto RefReception=Referencia de recepción Reception=Recepción ReceptionsArea=Area de recepciones @@ -13,7 +12,6 @@ OtherReceptionsForSameOrder=Otras recepciones para este pedido. ReceptionsAndReceivingForSameOrder=Recepciones y recibos por este pedido. ReceptionsToValidate=Recepciones para validar StatusReceptionCanceled=Cancelado -StatusReceptionValidated=Validado (productos para enviar o ya enviar) StatusReceptionProcessed=Procesada StatusReceptionProcessedShort=Procesada ConfirmDeleteReception=¿Seguro que quieres borrar esta recepción? diff --git a/htdocs/langs/es_ES/accountancy.lang b/htdocs/langs/es_ES/accountancy.lang index c7751dea89e..e2c4f573641 100644 --- a/htdocs/langs/es_ES/accountancy.lang +++ b/htdocs/langs/es_ES/accountancy.lang @@ -38,7 +38,7 @@ DeleteCptCategory=Eliminar la cuenta contable del grupo ConfirmDeleteCptCategory=¿Está seguro de querer eliminar esta cuenta contable del grupo de cuentas contables? JournalizationInLedgerStatus=Estado de diario AlreadyInGeneralLedger=Ya transferido en diarios contables y libro mayor -NotYetInGeneralLedger=Aún no se ha transferido a los diarios y al libro mayor +NotYetInGeneralLedger=Aún no se ha transferido a los diarios contables y al libro mayor GroupIsEmptyCheckSetup=El grupo está vacío, compruebe la configuración de grupos contables DetailByAccount=Ver detalles por cuenta AccountWithNonZeroValues=Cuentas con valores no cero diff --git a/htdocs/langs/es_ES/admin.lang b/htdocs/langs/es_ES/admin.lang index 97778d04338..4e31c89e5e3 100644 --- a/htdocs/langs/es_ES/admin.lang +++ b/htdocs/langs/es_ES/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Referencia y período en negrita en PDF -BoldLabelOnPDF=Etiqueta en negrita en PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Fundación Version=Versión Publisher=Editor @@ -60,14 +60,14 @@ GUISetup=Entorno SetupArea=Configuración UploadNewTemplate=Nueva(s) plantilla(s) actualizada(s) FormToTestFileUploadForm=Formulario de prueba de subida de archivo (según opciones elegidas) -ModuleMustBeEnabled=El módulo / aplicación %s debe estar habilitado -ModuleIsEnabled=Se ha habilitado el módulo / aplicación %s +ModuleMustBeEnabled=El módulo/aplicación %s debe estar habilitado +ModuleIsEnabled=Se ha habilitado el módulo/aplicación %s IfModuleEnabled=Nota: sólo es eficaz si el módulo %s está activado RemoveLock=Elimine o renombre el archivo %s, si existe, para permitir el uso de la herramienta de Actualización/Instalación. RestoreLock=Restaure el archivo %s , solo con permiso de lectura, para deshabilitar cualquier uso posterior de la herramienta Actualización/Instalación. SecuritySetup=Configuración de la seguridad PHPSetup=Configuración de PHP -OSSetup=Configuración del sistema operativo +OSSetup=Configuración del S.Operativo SecurityFilesDesc=Defina aquí las opciones de seguridad relacionadas con la subida de archivos. ErrorModuleRequirePHPVersion=Error, este módulo requiere una versión %s o superior de PHP ErrorModuleRequireDolibarrVersion=Error, este módulo requiere una versión %s o superior de Dolibarr @@ -161,7 +161,7 @@ SystemToolsAreaDesc=Esta área ofrece distintas funciones de administración. Ut Purge=Purga PurgeAreaDesc=Esta página le permite borrar todos los archivos generados o almacenados por Dolibarr (archivos temporales o todos los archivos del directorio %s). El uso de esta función no es necesaria. Se proporciona como solución para los usuarios cuyos Dolibarr se encuentran en un proveedor que no ofrece permisos para eliminar los archivos generados por el servidor web. PurgeDeleteLogFile=Eliminar archivos de registro, incluidos %s definidos por el módulo Syslog (sin riesgo de perder datos) -PurgeDeleteTemporaryFiles=Elimine todos los archivos de registro y temporales (sin riesgo de perder datos). El parámetro puede ser 'tempfilesold', 'logfiles' o ambos 'tempfilesold + logfiles'. Nota: La eliminación de archivos temporales se realiza solo si el directorio temporal se creó hace más de 24 horas. +PurgeDeleteTemporaryFiles=Elimine todos los archivos de registro y temporales (sin riesgo de perder datos). El parámetro puede ser 'tempfilesold', 'logfiles' o ambos 'tempfilesold+logfiles'. Nota: La eliminación de archivos temporales se realiza solo si el directorio temporal se creó hace más de 24 horas. PurgeDeleteTemporaryFilesShort=Elimina archivos de registro y temporales (sin riesgo de perder datos) PurgeDeleteAllFilesInDocumentsDir=Eliminar todos los archivos del directorio %s. Serán eliminados archivos temporales y archivos relacionados con elementos (terceros, facturas, etc.), archivos subidos al módulo GED, copias de seguridad de la base de datos y archivos temporales. PurgeRunNow=Purgar @@ -267,7 +267,7 @@ OtherResources=Otros recursos ExternalResources=Recursos externos SocialNetworks=Redes sociales SocialNetworkId=ID de red social -ForDocumentationSeeWiki=Para obtener documentación para el usuario o el desarrollador (Doc, FAQs ...),
eche un vistazo a la Wiki de Dolibarr:
%s +ForDocumentationSeeWiki=Para obtener documentación para el usuario o el desarrollador (Doc, FAQs...),
eche un vistazo a la Wiki de Dolibarr:
%s ForAnswersSeeForum=Para cualquier otra pregunta/ayuda, puede utilizar el foro de Dolibarr:
%s HelpCenterDesc1=Aquí hay algunos recursos para obtener ayuda y soporte de Dolibarr HelpCenterDesc2=Algunos de estos recursos sólo están disponibles en inglés. @@ -318,7 +318,7 @@ CompanyEmail=E-mail de empresa FeatureNotAvailableOnLinux=Funcionalidad no disponible en sistemas Unix. Pruebe su sendmail localmente. FixOnTransifex=Corrija la traducción en la plataforma de traducción en línea del proyecto. SubmitTranslation=Si la traducción de este idioma no está completa o si encuentra errores, puede corregir esto editando los archivos en el directorio langs/%s y enviar su cambio a www.transifex.com/dolibarr-association/dolibarr/ -SubmitTranslationENUS=Si la traducción de este idioma es incompleta o si encuentra errores, puede corregirlos mediante la edición de los archivos en el directorio langs/%s y el envío los cambios al foro www.dolibarr.es o, si es desarrollador, con un PR en github.com/Dolibarr/dolibarr. +SubmitTranslationENUS=Si la traducción de este idioma está incompleta o si encuentra errores, puede corregirlos mediante la edición de los archivos en el directorio langs/%s y enviar los cambios al www.dolibarr.es/foro o, si es desarrollador, con un PR en github.com/Dolibarr/dolibarr. ModuleSetup=Configuración del módulo ModulesSetup=Configuración de los módulos ModuleFamilyBase=Sistema @@ -358,10 +358,10 @@ LastActivationIP=Última IP activa LastActivationVersion=Última versión de activación UpdateServerOffline=Actualizar servidor offline WithCounter=Gestionar un contador -GenericMaskCodes=Puede ingresar cualquier máscara de numeración. En esta máscara, se pueden utilizar las siguientes etiquetas:
{000000} corresponde a un número que se incrementará en cada %s. Ingrese tantos ceros como la longitud deseada del contador. El contador se completará con ceros desde la izquierda para tener tantos ceros como la máscara.
{000000 + 000} igual que el anterior pero se aplica un desplazamiento correspondiente al número a la derecha del signo + comenzando en el primer %s.
{000000 @ x} igual que el anterior pero el contador se restablece a cero cuando se alcanza el mes x (x entre 1 y 12, o 0 para usar los primeros meses del año fiscal definido en su configuración, o 99 para poner a cero todos los meses). Si se usa esta opción y x es 2 o superior, entonces también se requiere la secuencia {yy} {mm} o {yyyy} {mm}.
{dd} día (01 a 31).
{mm} mes (01 a 12).
{yy} , {yyyy} o {y} año sobre 2, 4 o 1 cifras.
-GenericMaskCodes2= {cccc} el código de cliente en n caracteres
{cccc000} el código de cliente es un código de cliente dedicado a n. Este contador dedicado al cliente se pone a cero al mismo tiempo que el contador global.
{tttt} El código del tipo de terceros en n caracteres (ver menú Inicio - Configuración - Diccionario - Tipos de terceros). Si agrega esta etiqueta, el contador será diferente para cada tipo de tercero.
-GenericMaskCodes3=Cualquier otro carácter en la máscara se quedará sin cambios.
No se permiten espacios
-GenericMaskCodes3EAN=Todos los demás caracteres de la máscara permanecerán intactos (excepto * o ? En la 13ª posición en EAN13).
No se permiten espacios.
En EAN13, el último carácter después del último} en la 13ª posición debería ser * o ? . Será reemplazado por la clave calculada.
+GenericMaskCodes=Puede ingresar cualquier máscara de numeración. En esta máscara, se pueden utilizar las siguientes etiquetas:
{000000} corresponde a un número que se incrementará en cada %s. Ingrese tantos ceros como la longitud deseada del contador. El contador se completará con ceros desde la izquierda para tener tantos ceros como la máscara.
{000000+000} igual que el anterior pero se aplica un desplazamiento correspondiente al número a la derecha del signo + comenzando en el primer %s.
{000000@x} igual que el anterior pero el contador se restablece a cero cuando se alcanza el mes x (x entre 1 y 12, o 0 para usar los primeros meses del año fiscal definido en su configuración, o 99 para poner a cero todos los meses). Si se usa esta opción y x es 2 o superior, entonces también se requiere la secuencia {yy}{mm} o {yyyy}{mm}.
{dd} día (01 a 31).
{mm} mes (01 a 12).
{yy}, {yyyy} o {y} año sobre 2, 4 o 1 cifras.
+GenericMaskCodes2= {cccc} el código de cliente en n caracteres
{cccc000} el código de cliente es un código de cliente dedicado a n. Este contador dedicado al cliente se pone a cero al mismo tiempo que el contador global.
{tttt} El código del tipo de terceros en n caracteres (ver menú Inicio - Configuración - Diccionario - Tipos de terceros). Si agrega esta etiqueta, el contador será diferente para cada tipo de tercero.
+GenericMaskCodes3=Cualquier otro carácter en la máscara se quedará sin cambios.
No se permiten espacios.
+GenericMaskCodes3EAN=Todos los demás caracteres de la máscara permanecerán intactos (excepto * o ? En la 13ª posición en EAN13).
No se permiten espacios.
En EAN13, el último carácter después del último} en la 13ª posición debería ser * o ? . Será reemplazado por la clave calculada.
GenericMaskCodes4a=Ejemplo en la 99 ª %s del tercero La Empresa realizada el 31/03/2007:
GenericMaskCodes4b=Ejemplo sobre un tercero creado el 31/03/2007:
GenericMaskCodes4c=Ejemplo en un producto/servicio creado el 31/03/2007:
@@ -378,8 +378,8 @@ UMask=Parámetro UMask de nuevos archivos en Unix/Linux/BSD. UMaskExplanation=Este parámetro determina los derechos de los archivos creados en el servidor Dolibarr (durante la subida, por ejemplo).
Este debe ser el valor octal (por ejemplo, 0666 significa lectura / escritura para todos).
Este parámetro no tiene ningún efecto sobre un servidor Windows. SeeWikiForAllTeam=Vea el wiki para más detalles de todos los contribuidores y de su organización UseACacheDelay= Demora en caché de la exportación en segundos (0 o vacio sin caché) -DisableLinkToHelpCenter=Ocultar el enlace " Necesita ayuda o soporte " en la página de inicio de sesión -DisableLinkToHelp=Ocultar el enlace a la ayuda en línea " %s " +DisableLinkToHelpCenter=Ocultar el enlace "Necesita ayuda o soporte" en la página de acceso a la aplicación +DisableLinkToHelp=Ocultar el enlace a la ayuda en línea "%s" AddCRIfTooLong=No hay líneas de corte automático, de modo que si el texto es demasiado largo no se mostrará en los documentos. Por favor añada un salto de línea en el área de texto si fuese necesario. ConfirmPurge=¿Está seguro de querer realizar esta purga?
Esto borrará definitivamente todos los datos de sus archivos (área GED, archivos adjuntos...). MinLength=Longuitud mínima @@ -407,7 +407,7 @@ NoSmsEngine=No hay disponible ningún gestor de envío de SMS. Los gestores de e PDF=PDF PDFDesc=Opciones globales para la generación de PDF. PDFOtherDesc=Opción PDF específica para algunos módulos -PDFAddressForging=Reglas para las direcciones +PDFAddressForging=Reglas para la sección de direcciones HideAnyVATInformationOnPDF=Ocultar toda la información relacionada con el Impuesto/IVA PDFRulesForSalesTax=Reglas de IVA PDFLocaltax=Reglas para %s @@ -450,15 +450,15 @@ 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.
Usando un campo computado significa que no puede ingresar ningún valor de la interfaz. Además, si hay un error de sintaxis, la fórmula puede 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)

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=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' 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) ExtrafieldParamHelpselect=El listado de valores tiene que ser líneas key,valor

por ejemplo:
1,value1
2,value2
3,value3
...

Para tener una lista en funcion de campos adicionales de lista:
1,value1|options_parent_list_code:parent_key
2,value2|options_parent_list_code:parent_key

Para tener la lista en función de otra:
1,value1|parent_list_code:parent_key
2,value2|parent_list_code:parent_key ExtrafieldParamHelpcheckbox=El listado de valores tiene que ser líneas con el formato key,valor

por ejemplo:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=El listado de valores tiene que ser líneas con el formato key,valor (donde key no puede ser 0)

por ejemplo:
1,value1
2,value2
3,value3
... -ExtrafieldParamHelpsellist=La lista de valores proviene de una tabla
Sintaxis: nombre_tabla:campo_etiqueta:campo_id::filtrosql
Ejemplo: c_typent:libelle:id::filtrosql

- id_campo es una clave entera primaria SQL es condición necesaria.
Puede ser una prueba simple (por ejemplo, activo = 1) para mostrar solo el valor activo
También puede usar $ID$ en el filtro, que es el ID actual del objeto actual
Para usar un SELECT en el filtro, use la palabra clave $SEL$ para bypass de protección anti-inyección.
si desea filtrar en campos extra, use la sintaxis extra.fieldcode=... (donde el código de campo es el código del campo extra)

Para que la lista dependa de otra lista de atributos complementarios:
c_typent:libelle:id:options_ parent_list_code|parent_column:filter

Para que la lista dependa de otra lista:
c_typent:libelle:id: parent_list_code |parent_column:filter -ExtrafieldParamHelpchkbxlst=Lista de valores proviene de una tabla
Sintaxis: nombre_tabla:etiqueta_field: id_field::filtro
Ejemplo: c_typent:libelle:id::filtro

filtro puede ser una prueba simple (por ejemplo, activa = 1) Para mostrar sólo el valor activo
También puede utilizar $ID$ en el filtro witch es el id actual del objeto actual
Para hacer un SELECT en el filtro de uso $SEL$
si desea filtrar en campos adicionales utilizar la sintaxis Extra.fieldcode=...(donde código de campo es el código de campo adicional)

Para que la lista dependa de otra lista de campos adicionales:
c_typent: libelle:id:options_ parent_list_code | parent_column:filter

Para que la lista dependa de otra lista:
c_typent:libelle:id: parent_list_code | parent_column:filter +ExtrafieldParamHelpsellist=La lista de valores proviene de una tabla
Sintaxis: nombre_tabla:campo_etiqueta:campo_id::filtrosql
Ejemplo: c_typent:libelle:id::filtrosql

- campo_id es obligatoriamente una clave entera primaria
- filtrosql es una condición SQL. Puede ser una prueba simple (por ejemplo, activo=1) para mostrar solo el valor activo
También puede usar $ID$ en el filtro, que es el ID actual del objeto actual
Para usar un SELECT en el filtro, use la palabra clave $SEL$ para evitar la protección anti-inyección.
Si desea filtrar en campos extra, use la sintaxis extra.fieldcode=... (donde el código de campo es el código del campo extra).

Para que la lista dependa de otra lista de atributos complementarios:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

Para que la lista dependa de otra lista:
c_typent:libelle:id: parent_list_code |parent_column:filter +ExtrafieldParamHelpchkbxlst=Lista de valores proviene de una tabla
Sintaxis: nombre_tabla:campo_etiqueta: campo_id::filtrosql
Ejemplo: c_typent:libelle:id::filtrosql

Filtrosql puede ser una prueba simple (por ejemplo, activa = 1) para mostrar sólo el valor activo.
También puede utilizar $ID$ en el filtro que es el id actual del objeto actual.
Para hacer un SELECT en el filtro use $SEL$
Si desea filtrar en campos adicionales utilice la sintaxis extra.fieldcode=...(donde fieldcode es el código de campo adicional)

Para que la lista dependa de otra lista de campos adicionales:
c_typent: libelle:id:options_ parent_list_code | parent_column:filter

Para que la lista dependa de otra lista:
c_typent:libelle:id: parent_list_code | parent_column:filter ExtrafieldParamHelplink=Los parámetros deben ser NombreObjeto:RutaClase
Sintaxis: NombreObjeto:RutaClase ExtrafieldParamHelpSeparator=Mantener vacío para un separador simple
Establezca a 1 para un separador de colapso (abierto de forma predeterminada para una nueva sesión, luego el estado se mantiene para cada sesión de usuario)
Establezca a 2 para un separador de colapso (colapsado por defecto para una nueva sesión, luego el estado se mantiene para cada sesión de usuario) LibraryToBuildPDF=Libreria usada en la generación de los PDF @@ -501,10 +501,10 @@ WarningPHPMail=ADVERTENCIA: La configuración para enviar correos electrónicos WarningPHPMailA=- El uso del servidor del proveedor de servicios de correo electrónico aumenta la confiabilidad de su correo electrónico, por lo que aumenta la entrega sin ser marcado como SPAM WarningPHPMailB=- Algunos proveedores de servicios de correo electrónico (como Yahoo) no le permiten enviar un correo electrónico desde otro servidor que no sea su propio servidor. Su configuración actual utiliza el servidor de la aplicación para enviar correo electrónico y no el servidor de su proveedor de correo electrónico, por lo que algunos destinatarios (el que es compatible con el protocolo restrictivo DMARC) le preguntarán a su proveedor de correo electrónico si pueden aceptar su correo electrónico y algunos proveedores de correo electrónico. (como Yahoo) puede responder "no" porque el servidor no es de ellos, por lo que es posible que algunos de sus correos electrónicos enviados no sean aceptados para la entrega (tenga cuidado también con la cuota de envío de su proveedor de correo electrónico). WarningPHPMailC=- El uso del servidor SMTP de su propio proveedor de servicios de correo electrónico para enviar correos electrónicos también es interesante, por lo que todos los correos electrónicos enviados desde la aplicación también se guardarán en el directorio "Enviados" de su buzón. -WarningPHPMailD=Además, por lo tanto, se recomienda cambiar el método de envío de correos electrónicos al valor "SMTP". Si realmente desea mantener el método "PHP" predeterminado para enviar correos electrónicos, simplemente ignore esta advertencia o elimínela configurando MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constante en 1 en Inicio - Configuración - Otro. +WarningPHPMailD=Además, por lo tanto, se recomienda cambiar el método de envío de correos electrónicos al valor "SMTP". Si realmente desea mantener el método "PHP" predeterminado para enviar correos electrónicos, simplemente ignore esta advertencia o elimínela configurando la constante MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP a 1 en Inicio - Configuración - Otras Configuraciones. WarningPHPMail2=Si su proveedor SMTP de correo electrónico necesita restringir el cliente de correo electrónico a algunas direcciones IP (muy raro), esta es la dirección IP de su aplicación ERP CRM: %s. -WarningPHPMailSPF=Si el nombre de dominio en su dirección de correo electrónico del remitente está protegido por un registro SPF (pregunte a su registrador de nombre de dominio), debe agregar las siguientes IP en el registro SPF del DNS de su dominio: %s . -ActualMailSPFRecordFound=Registro de SPF real encontrado: %s +WarningPHPMailSPF=Si el nombre de dominio en su dirección de correo electrónico del remitente está protegido por un registro SPF (pregunte a su registrador de nombre de dominio), debe agregar las siguientes IP en el registro SPF del DNS de su dominio: %s. +ActualMailSPFRecordFound=Registro de SPF actual encontrado: %s ClickToShowDescription=Clic para ver la descripción DependsOn=Este módulo necesita el módulo(s) RequiredBy=Este módulo es requerido por los módulos @@ -521,7 +521,7 @@ Field=Campo ProductDocumentTemplates=Plantillas de documentos para generar documento de producto FreeLegalTextOnExpenseReports=Texto libre legal en los informes de gastos WatermarkOnDraftExpenseReports=Marca de agua en los informes de gastos -ProjectIsRequiredOnExpenseReports=El proyecto es obligatorio para ingresar un informe de gastos. +ProjectIsRequiredOnExpenseReports=El proyecto es obligatorio para añadir un informe de gastos. PrefillExpenseReportDatesWithCurrentMonth=Complete previamente las fechas de inicio y finalización del nuevo informe de gastos con las fechas de inicio y finalización del mes actual ForceExpenseReportsLineAmountsIncludingTaxesOnly=Forzar la entrada de importes del informe de gastos siempre en importes con impuestos AttachMainDocByDefault=Establezca esto en 1 si desea adjuntar el documento principal al e-mail de forma predeterminada (si corresponde) @@ -580,8 +580,8 @@ Module57Name=Pagos por domiciliación bancaria Module57Desc=Gestión de domiciliaciones. También incluye generación de archivo SEPA para los países europeos. Module58Name=ClickToDial Module58Desc=Integración con ClickToDial -Module60Name=Pegatinas -Module60Desc=Gestión de pegatinas +Module60Name=Etiquetas autoadhesivas +Module60Desc=Gestión de etiquetas autoadhesivas Module70Name=Intervenciones Module70Desc=Gestión de las intervenciones a terceros Module75Name=Notas de gasto y desplazamientos @@ -613,7 +613,7 @@ Module400Desc=Gestión de proyectos, oportunidades/leads y/o tareas. También pu Module410Name=Webcalendar Module410Desc=Interfaz con el calendario Webcalendar Module500Name=Impuestos y gastos especiales -Module500Desc=Gestión de otros gastos (impuestos a las ventas, impuestos sociales o fiscales, dividendos, ...) +Module500Desc=Gestión de otros gastos (impuestos a las ventas, impuestos sociales o fiscales, dividendos...) Module510Name=Salarios Module510Desc=Registro y seguimiento del pago de los salarios de sus empleados Module520Name=Préstamos @@ -659,13 +659,13 @@ Module2900Desc=Capacidades de conversión GeoIP Maxmind Module3200Name=Archivos inalterables Module3200Desc=Activar el registro inalterable de eventos empresariales. Los eventos se archivan en tiempo real. El registro es una tabla de sucesos encadenados que se pueden leer y exportar. Este módulo puede ser obligatorio en algunos países. Module3400Name=Redes sociales -Module3400Desc=Habilite campos de Redes Sociales en terceros y direcciones (skype, twitter, facebook, ...). +Module3400Desc=Habilita campos de Redes Sociales en terceros y direcciones (skype, twitter, facebook...). Module4000Name=RRHH Module4000Desc=Departamento de Recursos Humanos (gestión del departamento, contratos de empleados) Module5000Name=Multi-empresa Module5000Desc=Permite gestionar varias empresas Module6000Name=Flujo de trabajo entre módulos -Module6000Desc=Gestión del flujo de trabajo entre diferentes módulos (creación automática de objeto y / o cambio de estado automático) +Module6000Desc=Gestión del flujo de trabajo entre diferentes módulos (creación automática de objeto y/o cambio de estado automático) Module10000Name=Sitios web Module10000Desc=Cree sitios web (públicos) con un editor WYSIWYG. Este es un CMS orientado a webmasters o desarrolladores (es mejor conocer el lenguaje HTML y CSS). Simplemente configure su servidor web (Apache, Nginx, ...) para que apunte al directorio dedicado de Dolibarr para tenerlo en línea en Internet con su propio nombre de dominio. Module20000Name=Gestión de días libres @@ -691,7 +691,7 @@ Module54000Desc=La impresión directa (sin abrir los documentos) usa el interfaz Module55000Name=Encuesta o Voto Module55000Desc=Crea encuestas en línea, encuestas o votos (como Doodle, Studs, RDVz, etc.) Module59000Name=Márgenes -Module59000Desc=Módulo para seguir márgenes +Module59000Desc=Módulo para ver márgenes Module60000Name=Comisiones Module60000Desc=Módulo para gestionar las comisiones de venta Module62000Name=Incoterms @@ -751,7 +751,7 @@ Permission95=Consultar balances y resultados Permission101=Consultar expediciones Permission102=Crear/modificar expediciones Permission104=Validar expediciones -Permission105=Enviar expediciones por email +Permission105=Enviar envíos por email Permission106=Exportar expediciones Permission109=Eliminar expediciones Permission111=Consultar cuentas financieras (cuentas bancarias, cajas) @@ -827,8 +827,8 @@ PermissionAdvanced253=Crear/modificar usuarios internos/externos y sus permisos Permission254=Crear/modificar únicamente usuarios externos Permission255=Modificar la contraseña de otros usuarios Permission256=Eliminar o desactivar otros usuarios -Permission262=Ampliar el acceso a todos los terceros Y sus objetos (no solo a los terceros para los que el usuario es representante de ventas)
No efectivo para usuarios externos (siempre limitado a ellos mismos para propuestas, pedidos, facturas, contratos, etc.).
No es efectivo para proyectos (solo reglas sobre permisos de proyectos, visibilidad y asuntos de asignación). -Permission263=Ampliar el acceso a todos los terceros SIN sus objetos (no solo a los terceros para los que el usuario es representante de ventas).
No efectivo para usuarios externos (siempre limitado a ellos mismos para propuestas, pedidos, facturas, contratos, etc.).
No es efectivo para proyectos (solo reglas sobre permisos de proyectos, visibilidad y asuntos de asignación). +Permission262=Ampliar el acceso a todos los terceros Y sus objetos (no solo a los terceros para los que el usuario es comercial)
No efectivo para usuarios externos (siempre limitado a ellos mismos para presupuestos, pedidos, facturas, contratos, etc.).
No es efectivo para proyectos (solo reglas sobre permisos de proyectos, visibilidad y asuntos de asignación). +Permission263=Ampliar el acceso a todos los terceros SIN sus objetos (no solo a los terceros para los que el usuario es comercial).
No efectivo para usuarios externos (siempre limitado a ellos mismos para presupuestos, pedidos, facturas, contratos, etc.).
No es efectivo para proyectos (solo reglas sobre permisos de proyectos, visibilidad y asuntos de asignación). Permission271=Consultar el CA Permission272=Consultar las facturas Permission273=Emitir las facturas @@ -862,9 +862,9 @@ Permission403=Validar haberes Permission404=Eliminar haberes Permission430=Usa barra de debug Permission511=Leer salarios y pagos (suyos y subordinados) -Permission512=Crear / modificar salarios y pagos +Permission512=Crear/modificar salarios y pagos Permission514=Eliminar salarios y pagos -Permission517=Leer sueldos y pagos de todos +Permission517=Leer salarios y pagos de todos Permission519=Exportar salarios Permission520=Consultar Créditos Permission522=Crear/modificar Créditos @@ -880,24 +880,24 @@ Permission561=Leer órdenes de pago mediante transferencia bancaria Permission562=Crear/modificar orden de pago mediante transferencia bancaria Permission563=Enviar/transmitir orden de pago mediante transferencia bancaria Permission564=Registrar Abonos/Devoluciones de transferencias bancarias -Permission601=Leer pegatinas -Permission602=Crear / modificar pegatinas -Permission609=Eliminar pegatinas +Permission601=Leer etiquetas autoadhesivas +Permission602=Crear/modificar etiquetas autoadhesivas +Permission609=Eliminar etiquetas autoadhesivas Permission650=Leer lista de materiales Permission651=Crear/Actualizar lista de material Permission652=Eliminar lista de material -Permission660=Leer orden de fabricación (OF) -Permission661=Crear/modificar orden de fabricación (OF) -Permission662=Eliminar orden de fabricación (OF) +Permission660=Leer Orden de Fabricación (OF) +Permission661=Crear/modificar Orden de Fabricación (OF) +Permission662=Eliminar Orden de Fabricación (OF) Permission701=Consultar donaciones Permission702=Crear/modificar donaciones Permission703=Eliminar donaciones Permission771=Leer informes de gastos (suyos y subordinados) -Permission772=Create/modify expense reports (for you and your subordinates) +Permission772=Crear/modificar informes de gastos (para usted y sus subordinados) Permission773=Eliminar informe de gastos Permission775=Aprobar informe de gastos Permission776=Pagar informe de gastos -Permission777=Read all expense reports (even those of user not subordinates) +Permission777=Lea todos los informes de gastos (incluso los de usuarios que no sean subordinados) Permission778=Crear/modificar informes de gastos de todos Permission779=Exportar informe de gastos Permission1001=Consultar stocks @@ -928,7 +928,7 @@ Permission1185=Aprobar pedidos a proveedor Permission1186=Ordenar pedidos a proveedores Permission1187=Generar acuse de recibo de los pedidos de proveedor Permission1188=Eliminar pedidos a proveedor -Permission1189=Marcar / desmarcar la recepción de una orden de compra +Permission1189=Marcar/desmarcar la recepción de un pedido a proveedor Permission1190=Aprobar (segunda aprobación) pedidos a proveedores Permission1191=Exportar pedidos a proveedor y sus atributos Permission1201=Obtener resultado de una exportación @@ -946,7 +946,7 @@ Permission1322=Reabrir una factura pagada Permission1421=Exportar pedidos y atributos Permission1521=Consultar documentos Permission1522=Eliminar documentos -Permission2401=Leer acciones (eventos o tareas) vinculadas a su cuenta de usuario (si es el propietario del evento o si se le acaba de asignar) +Permission2401=Leer acciones (eventos o tareas) vinculadas a su cuenta de usuario (si es el propietario del evento o lo tiene asignado) Permission2402=Crear/modificar acciones (eventos o tareas) vinculadas a su cuenta de usuario (si es propietario del evento) Permission2403=Eliminar acciones (eventos o tareas) vinculadas a su cuenta de usuario (si es propietario del evento) Permission2411=Leer acciones (eventos o tareas) de otros @@ -965,7 +965,7 @@ Permission4001=Leer habilidad/trabajo/puesto Permission4002=Crear/modificar habilidad/trabajo/puesto Permission4003=Eliminar habilidad/trabajo/puesto Permission4020=Leer evaluaciones -Permission4021=Create/modify your evaluation +Permission4021=Crear/modificar tu evaluación Permission4022=Validar evaluación Permission4023=Eliminar evaluación Permission4030=Ver menú de comparación @@ -976,9 +976,9 @@ Permission10005=Eliminar contenido del sitio web Permission20001=Leer peticiones días líbres (suyos y subordinados) Permission20002=Crear/modificar peticiones días libres (suyos y de sus subordinados) Permission20003=Eliminar peticiones de días retribuidos -Permission20004=Read all leave requests (even those of user not subordinates) -Permission20005=Create/modify leave requests for everybody (even those of user not subordinates) -Permission20006=Administer leave requests (setup and update balance) +Permission20004=Leer todas las solicitudes de días libres (incluso las de usuarios que no sean subordinados) +Permission20005=Crear/modificar solicitudes de días libres para todos (incluso las de usuarios que no sean subordinados) +Permission20006=Administrar solicitudes de días libres (configurar y actualizar el balance) Permission20007=Aprobar solicitudes de días libres Permission23001=Consultar Trabajo programado Permission23002=Crear/actualizar Trabajo programado @@ -987,10 +987,10 @@ Permission23004=Ejecutar Trabajo programado Permission50101=Usar punto de venta (TPV simple) Permission50151=Usar punto de venta (TakePOS) Permission50152=Editar líneas de venta -Permission50153=Editar líneas de venta ordenadas +Permission50153=Editar líneas de venta ya pedidas Permission50201=Consultar las transacciones Permission50202=Importar las transacciones -Permission50330=Consultar objetos de Zapier +Permission50330=Leer objetos de Zapier Permission50331=Crear/modificar objetos de Zapier Permission50332=Eliminar objetos de Zapier Permission50401=Contabilizar productos y facturas con cuentas contables @@ -1018,8 +1018,8 @@ Permission63003=Eliminar recursos Permission63004=Enlazar recursos a eventos de la agenda Permission64001=Permitir impresión directa Permission67000=Permitir la impresión de recibos -Permission68001=Leer informe intracomm -Permission68002=Crear / modificar informe intracomunitario +Permission68001=Leer informe intracomunitario +Permission68002=Crear/modificar informe intracomunitario Permission68004=Eliminar informe intracomunitario Permission941601=Leer recibos Permission941602=Crear y modificar recibos @@ -1028,14 +1028,14 @@ Permission941604=Enviar recibos por correo electrónico Permission941605=Recibos de exportación Permission941606=Eliminar recibos DictionaryCompanyType=Tipos de Terceros -DictionaryCompanyJuridicalType=Tipo de entidad legar para Terceros -DictionaryProspectLevel=Perspectiva nivel para empresas -DictionaryProspectContactLevel=Perspectiva nivel para contactos +DictionaryCompanyJuridicalType=Tipo de entidad legal para Terceros +DictionaryProspectLevel=Nivel potencial para empresas +DictionaryProspectContactLevel=Nivel potencial para contactos DictionaryCanton=Provincias DictionaryRegion=Regiones DictionaryCountry=Países DictionaryCurrency=Monedas -DictionaryCivility=Título honorífico +DictionaryCivility=Tratamiento (Sr. Sra. etc.) DictionaryActions=Tipos de eventos de la agenda DictionarySocialContributions=Tipos de impuestos sociales o fiscales DictionaryVAT=Tasa de IVA (Impuesto sobre ventas en EEUU) @@ -1062,12 +1062,12 @@ DictionaryMeasuringUnits=Unidades de Medida DictionarySocialNetworks=Redes sociales DictionaryProspectStatus=Estado prospección para empresas DictionaryProspectContactStatus=Estado prospección para contactos -DictionaryHolidayTypes=Permisos - Tipos de permisos +DictionaryHolidayTypes=Días Libres - Tipos de días libres DictionaryOpportunityStatus=Estado de oportunidad para el proyecto/oportunidad DictionaryExpenseTaxCat=Informe de gastos - Categorías de transporte DictionaryExpenseTaxRange=Informe de gastos - Rango por categoría de transporte -DictionaryTransportMode=Informe intracomm: modo de transporte -DictionaryBatchStatus=Estado del control de calidad del lote/serie del producto +DictionaryTransportMode=Informe intracomunitario - Modo de transporte +DictionaryBatchStatus=Estado del Control de Calidad del lote/serie del producto TypeOfUnit=Tipo de unidad SetupSaved=Configuración guardada SetupNotSaved=Configuración no guardada @@ -1104,7 +1104,7 @@ LocalTax2IsUsedDescES=El tipo de IRPF propuesto por defecto en las creaciones de LocalTax2IsNotUsedDescES=El tipo de IRPF propuesto por defecto es 0. Final de regla. LocalTax2IsUsedExampleES=En España, se trata de personas físicas: autónomos y profesionales independientes que prestan servicios y empresas que han elegido el régimen fiscal de módulos. LocalTax2IsNotUsedExampleES=En España, se trata de empresas no sujetas al régimen fiscal de módulos. -RevenueStampDesc=El "sello de impuestos" o "sello de ingresos" es un impuesto fijo que usted paga por factura (no depende del monto de la factura). También puede ser un porcentaje de impuestos, pero usar el segundo o tercer tipo de impuesto es mejor para los impuestos porcentuales, ya que los timbres fiscales no proporcionan ningún informe. Solo unos pocos países utilizan este tipo de impuesto. +RevenueStampDesc=El "sello fiscal" o "sello de ingresos" es un impuesto fijo que usted paga por factura (no depende del monto de la factura). También puede ser un porcentaje de impuestos, pero usar el segundo o tercer tipo de impuesto es mejor para los impuestos porcentuales, ya que los timbres fiscales no proporcionan ningún informe. Solo unos pocos países utilizan este tipo de impuesto. UseRevenueStamp=Usar un sello fiscal UseRevenueStampExample=El valor del sello fiscal se define de manera predeterminada en la configuración de los diccionarios. (%s - %s - %s) CalcLocaltax=Informes de impuestos locales @@ -1235,12 +1235,12 @@ SystemAreaForAdminOnly=Esta área está disponible solo para usuarios administra CompanyFundationDesc=Edite la información de su empresa/organización. Haga clic en el botón "%s" en la parte inferior de la página cuando haya terminado. AccountantDesc=Si tiene un contable/asesor externo, puede editar aquí su información. AccountantFileNumber=Código contable -DisplayDesc=Aquí se pueden modificar los parámetros que afectan el aspecto y la presentación de la aplicación. +DisplayDesc=Aquí se pueden modificar los parámetros que afectan al aspecto y la presentación de la aplicación. AvailableModules=Módulos disponibles ToActivateModule=Para activar los módulos, vaya al área de Configuración (Inicio->Configuración->Módulos). SessionTimeOut=Timeout de sesiones SessionExplanation=Este número garantiza que la sesión nunca caducará antes de este retraso, si el limpiador de sesión se realiza mediante un limpiador de sesión interno de PHP (y nada más). El limpiador interno de sesiones de PHP no garantiza que la sesión caduque después de este retraso. Expirará, después de este retraso, y cuando se ejecute el limpiador de sesiones, por lo que cada acceso %s/%s , pero solo durante el acceso realizado por otras sesiones (si el valor es 0, significa que la limpieza de sesiones solo se realiza por un proceso externo).
Nota: en algunos servidores con un mecanismo externo de limpieza de sesión (cron bajo debian, ubuntu...), las sesiones se pueden destruir después de un período definido por una configuración externa, sin importar el valor introducido aquí -SessionsPurgedByExternalSystem=Las sesiones en este servidor parecen ser limpiadas por un mecanismo externo (cron bajo debian, ubuntu ...), probablemente cada %s segundos (= valor del parámetro session.gc_maxlifetime), por lo que cambiar el valor aquí no tiene ningún efecto. Debe solicitar al administrador del servidor que cambie el retraso de la sesión. +SessionsPurgedByExternalSystem=Las sesiones en este servidor parecen ser limpiadas por un mecanismo externo (cron bajo debian, ubuntu...), probablemente cada %s segundos (= valor del parámetro session.gc_maxlifetime), por lo que cambiar el valor aquí no tiene ningún efecto. Debe solicitar al administrador del servidor que cambie el retraso de la sesión. TriggersAvailable=Triggers disponibles TriggersDesc=Los triggers son archivos que, une vez copiados en el directorio htdocs/core/triggers, modifican el comportamiento del workflow de Dolibarr. Realizan acciones suplementarias, desencadenadas por los eventos Dolibarr (creación de empresa, validación factura...). TriggerDisabledByName=Triggers de este archivo desactivados por el sufijo -NORUN en el nombre del archivo. @@ -1285,7 +1285,7 @@ DownloadMoreSkins=Más temas para descargar SimpleNumRefModelDesc=Devuelve el número de referencia en el formato %syymm-nnnn donde aa es el año, mm es el mes y nnnn es un número secuencial que se incrementa automáticamente sin reinicio. SimpleNumRefNoDateModelDesc=Devuelve el número de referencia en el formato %s-nnnn donde nnnn es un número secuencial que se incrementa automáticamente sin reinicio ShowProfIdInAddress=Mostrar el identificador profesional en las direcciones -ShowVATIntaInAddress=Ocultar el IVA Intracomunitario en las direcciones +ShowVATIntaInAddress=Ocultar el identificador IVA Intracomunitario en las direcciones TranslationUncomplete=Traducción parcial MAIN_DISABLE_METEO=Deshabilitar la vista meteorológica MeteoStdMod=Modo estándar @@ -1301,7 +1301,7 @@ MAIN_PROXY_HOST=Servidor proxy: Nombre/Dirección MAIN_PROXY_PORT=Servidor proxy: Puerto MAIN_PROXY_USER=Servidor proxy: Login/Usuario MAIN_PROXY_PASS=Servidor proxy: Contraseña -DefineHereComplementaryAttributes=Defina cualquier atributo adicional / personalizado que deba agregarse a: %s +DefineHereComplementaryAttributes=Defina cualquier atributo adicional/personalizado que deba agregarse a: %s ExtraFields=Campos adicionales ExtraFieldsLines=Campos adicionales (líneas) ExtraFieldsLinesRec=Campos adicionales (plantillas de líneas de facturas) @@ -1347,20 +1347,20 @@ ConditionIsCurrently=Actualmente la condición es %s YouUseBestDriver=Está usando el driver %s, actualmente es el mejor driver disponible. YouDoNotUseBestDriver=Usa el driver %s aunque se recomienda usar el driver %s. NbOfObjectIsLowerThanNoPb=Solo tiene %s %s en la base de datos. Esto no requiere ninguna optimización particular. -ComboListOptim=Optimización de carga de lista combinada +ComboListOptim=Optimización de carga de lista desplegable SearchOptim=Buscar optimización -YouHaveXObjectUseComboOptim=Tiene %s %s en la base de datos. Puede ir a la configuración del módulo para habilitar la carga de la lista combinada en el evento de tecla presionada. -YouHaveXObjectUseSearchOptim=Tiene %s %s en la base de datos. Puede agregar la constante %s a 1 en Inicio-Configuración-Varios. +YouHaveXObjectUseComboOptim=Tiene %s %s en la base de datos. Puede ir a la configuración del módulo para habilitar la carga de la lista deplegable al pulsar una tecla. +YouHaveXObjectUseSearchOptim=Tiene %s %s en la base de datos. Puede agregar la constante %s a 1 en Inicio-Configuración-Otras Configuraciones. YouHaveXObjectUseSearchOptimDesc=Esto limita la búsqueda al comienzo de las cadenas, lo que hace posible que la base de datos utilice índices y debería obtener una respuesta inmediata. -YouHaveXObjectAndSearchOptimOn=Tiene %s %s en la base de datos y la constante %s se establece en %s en Inicio-Configuración-Otros. +YouHaveXObjectAndSearchOptimOn=Tiene %s %s en la base de datos y la constante %s se establece en %s en Inicio-Configuración-Otras Configuraciones. BrowserIsOK=Usa el navegador web %s. Este navegador está optimizado para la seguridad y el rendimiento. BrowserIsKO=Usa el navegador web %s. Este navegador es una mala opción para la seguridad, rendimiento y fiabilidad. Aconsejamos utilizar Firefox, Chrome, Opera o Safari. PHPModuleLoaded=El componente PHP %s está cargado PreloadOPCode=Se utiliza OPCode precargado -AddRefInList=Mostrar ref. de Cliente/Proveedor en listas combinadas.
Los terceros aparecerán con un formato de nombre de "CC12345 - SC45678 - The Big Company corp." en lugar de "The Big Company corp". -AddVatInList=Muestra el número de IVA de cliente/proveedor en listas combinadas. +AddRefInList=Mostrar ref. de Cliente/Proveedor en listas desplegables.
Los terceros aparecerán con un formato de nombre de "CC12345 - SC45678 - The Big Company corp." en lugar de "The Big Company corp". +AddVatInList=Muestra el número de IVA de cliente/proveedor en listas desplegables. AddAdressInList=Muestra la dirección del cliente/proveedor en listas combinadas.
Los terceros aparecerán con un formato de nombre de "The Big Company corp. - 21 jump street 123456 Big town - USA" en lugar de "The Big Company corp". -AddEmailPhoneTownInContactList=Mostrar e-mail de contacto (o teléfonos si no están definidos) y lista de información de la ciudad (lista de selección o cuadro combinado)
Los contactos aparecerán con un formato de nombre de "Dupond Durand - dupond.durand@email.com - Paris" o "Dupond Durand - 06 07 59 65 66 - Paris "en lugar de" Dupond Durand ". +AddEmailPhoneTownInContactList=Mostrar e-mail de contacto (o teléfonos si no están definidos) y lista de información de la ciudad (lista de selección o desplegable)
Los contactos aparecerán con un formato de nombre de "Dupond Durand - dupond.durand@email.com - Paris" o "Dupond Durand - 06 07 59 65 66 - Paris "en lugar de" Dupond Durand ". AskForPreferredShippingMethod=Consultar por el método preferido de envío a terceros. FieldEdition=Edición del campo %s FillThisOnlyIfRequired=Ejemplo: +2 (Complete sólo si se registra una desviación del tiempo en la exportación) @@ -1368,7 +1368,7 @@ GetBarCode=Obtener código de barras NumberingModules=Módulos de numeración DocumentModules=Modelos de documento ##### Module password generation -PasswordGenerationStandard=Devuelve una contraseña generada de acuerdo con el algoritmo interno de Dolibarr: %s caracteres que contienen números compartidos y caracteres en minúsculas. +PasswordGenerationStandard=Devuelve una contraseña generada de acuerdo con el algoritmo interno de Dolibarr: %s caracteres que contienen números y caracteres en minúsculas mezclados. PasswordGenerationNone=No sugerir ninguna contraseña generada. La contraseña debe ser escrita manualmente. PasswordGenerationPerso=Devuelve una contraseña según la configuración definida. SetupPerso=Obteniendo tu configuración @@ -1378,7 +1378,7 @@ RuleForGeneratedPasswords=Reglas para generar y validar contraseñas. DisableForgetPasswordLinkOnLogonPage=No mostrar el vínculo "Contraseña olvidada" en la página de login UsersSetup=Configuración del módulo usuarios UserMailRequired=E-Mail necesario para crear un usuario nuevo -UserHideInactive=Ocultar usuarios inactivos de todas las listas de usuarios combinados (No recomendado: esto puede significar que no podrá filtrar o buscar usuarios antiguos en algunas páginas) +UserHideInactive=Ocultar usuarios inactivos de todas las listas deplegables de usuarios (No recomendado: esto puede significar que no podrá filtrar o buscar usuarios antiguos en algunas páginas) UsersDocModules=Plantillas de documentos para documentos generados a partir del registro de usuario GroupsDocModules=Plantillas de documentos para documentos generados a partir de un registro de grupo ##### HRM setup ##### @@ -1412,7 +1412,7 @@ BillsPDFModules=Modelo de documento de facturas BillsPDFModulesAccordindToInvoiceType=Modelos de documentos de facturas según tipo de factura PaymentsPDFModules=Modelo de documentos de pago ForceInvoiceDate=Forzar la fecha de factura a la fecha de validación -SuggestedPaymentModesIfNotDefinedInInvoice=Forma de pago sugerida en la factura por defecto si no está definido en la factura +SuggestedPaymentModesIfNotDefinedInInvoice=Forma de pago sugerida en la factura por defecto si no está definida en la factura SuggestPaymentByRIBOnAccount=Sugerir el pago por domiciliación en la cuenta SuggestPaymentByChequeToAddress=Sugerir el pago por cheque a FreeLegalTextOnInvoices=Texto libre en facturas @@ -1424,7 +1424,7 @@ SupplierPaymentSetup=Configuración de pagos a proveedores PropalSetup=Configuración del módulo Presupuestos ProposalsNumberingModules=Módulos de numeración de presupuestos ProposalsPDFModules=Modelos de documentos de presupuestos -SuggestedPaymentModesIfNotDefinedInProposal=Forma de pago sugerida en la propuesta por defecto si no está definido en el presupuesto +SuggestedPaymentModesIfNotDefinedInProposal=Forma de pago sugerida en el presupuesto por defecto si no está definida en el presupuesto FreeLegalTextOnProposal=Texto libre en presupuestos WatermarkOnDraftProposal=Marca de agua en presupuestos borrador (en caso de estar vacío) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Preguntar por cuenta bancaria a usar en el presupuesto @@ -1439,7 +1439,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Almacén a utilizar para el pedido ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Preguntar por cuenta bancaria a usar en el pedido a proveedor ##### Orders ##### -SuggestedPaymentModesIfNotDefinedInOrder=Forma de pago sugerida en pedido de venta por defecto si no está definido en el pedido +SuggestedPaymentModesIfNotDefinedInOrder=Forma de pago sugerida en pedido de venta por defecto si no está definida en el pedido OrdersSetup=Configuración de Gestión de Pedidos OrdersNumberingModules=Módulos de numeración de los pedidos OrdersModelModule=Modelos de documentos de pedidos @@ -1465,7 +1465,7 @@ MemberMainOptions=Opciones principales AdherentLoginRequired= Gestionar un login para cada miembro AdherentMailRequired=E-Mail obligatorio para crear un miembro nuevo MemberSendInformationByMailByDefault=Casilla de verificación para enviar el correo de confirmación (validación ó nueva cotización) a los miembros es por defecto "sí" -MemberCreateAnExternalUserForSubscriptionValidated=Cree un inicio de sesión de usuario externo para cada nueva suscripción de miembro validada +MemberCreateAnExternalUserForSubscriptionValidated=Crear un nuevo usuario externo para cada nueva suscripción de miembro validada VisitorCanChooseItsPaymentMode=El visitante puede elegir entre los modos de pago disponibles MEMBER_REMINDER_EMAIL=Habilitar recordatorio de eventos por e-mail de suscripciones expiradas. Nota: El módulo %s debe estar habilitado y configurado correctamente para que el recordatorio se envíe. MembersDocModules=Plantillas de documentos para documentos generados a partir de registros de miembros @@ -1614,7 +1614,7 @@ PerfDolibarr=Configuración rendimiento/informe de optimización YouMayFindPerfAdviceHere=En esta página encontrará varias pruebas y consejos relacionados con el rendimiento. NotInstalled=No instalado NotSlowedDownByThis=No se ralentiza por esto. -NotRiskOfLeakWithThis=No hay riesgo de fuga con esto +NotRiskOfLeakWithThis=No hay riesgo de fuga con esto. ApplicativeCache=Aplicación caché MemcachedNotAvailable=No se ha encontrado una aplicación de cache. Puede mejorar el rendimiento instalando un cache server Memcached y un módulo capaz de usar ese servidor de cache.
Más información aquí http://wiki.dolibarr.org/index.php/Module_MemCached_EN.
Tenga en cuenta que algunos hostings no ofrecen servidores de cache. MemcachedModuleAvailableButNotSetup=Módulo memcached para el caché aplicativo encontrado pero la configuración del módulo no está completa. @@ -1644,9 +1644,9 @@ ServiceSetup=Configuración del módulo Servicios ProductServiceSetup=Configuración de los módulos Productos y Servicios NumberOfProductShowInSelect=Nº de productos máx. en las listas (0=sin límite) ViewProductDescInFormAbility=Visualización de las descripciones de los productos en los formularios (en caso contrario como tooltip) -OnProductSelectAddProductDesc=Cómo utilizar la descripción de los productos al agregar un producto como una línea de un documento +OnProductSelectAddProductDesc=Cómo utilizar la descripción de los productos al agregar un producto en una línea de un documento AutoFillFormFieldBeforeSubmit=Autocompletar el campo de entrada de descripción con la descripción del producto -DoNotAutofillButAutoConcat=No autocompletar el campo de entrada con la descripción del producto. La descripción del producto se concatenará a la descripción ingresada automáticamente. +DoNotAutofillButAutoConcat=No autocompletar el campo de entrada con la descripción del producto. La descripción del producto se concatenará a la descripción introducida automáticamente. DoNotUseDescriptionOfProdut=La descripción del producto nunca se incluirá en la descripción de líneas de documentos. MergePropalProductCard=Activar en el producto/servicio la pestaña Documentos una opción para fusionar documentos PDF de productos al presupuesto PDF azur si el producto/servicio se encuentra en el presupuesto ViewProductDescInThirdpartyLanguageAbility=Mostrar descripciones de productos en formularios en el idioma del tercero (de lo contrario, en el idioma del usuario) @@ -1729,7 +1729,7 @@ FCKeditorForNotePublic=Creación/edición WYSIWIG del campo "notas públicas" de FCKeditorForNotePrivate=Creación/edición WYSIWIG del campo "notas privadas" de elementos FCKeditorForCompany=Creación/edición WYSIWIG en el campo de la descripción de los elementos (excepto en productos/servicios) FCKeditorForProduct=Creación/edición WYSIWIG en el campo de la descripción de los productos/servicios -FCKeditorForProductDetails=creación/edición WYSIWIG de líneas de detalle de productos para todas las entidades (propuestas, pedidos, facturas, etc ...). Advertencia: El uso de esta opción para este caso no se recomienda seriamente, ya que puede crear problemas con caracteres especiales y formato de página al crear archivos PDF. +FCKeditorForProductDetails=creación/edición WYSIWIG de líneas de detalle de productos para todas las entidades (presupuestos, pedidos, facturas, etc...). Advertencia: El uso de esta opción para este caso es seriamente no recomendada, ya que puede crear problemas con caracteres especiales y formato de página al crear archivos PDF. FCKeditorForMailing= Creación/edición WYSIWIG de los E-Mails (Utilidades->E-Mailings) FCKeditorForUserSignature=Creación/edición WYSIWIG de la firma de usuarios FCKeditorForMail=Creación/edición WYSIWIG de todos los e-mails ( excepto Utilidades->E-Mailings) @@ -1739,7 +1739,7 @@ StockSetup=Configuración del módulo Almacenes IfYouUsePointOfSaleCheckModule=Si utiliza un módulo de Punto de Venta (módulo TPV por defecto u otro módulo externo), esta configuración puede ser ignorada por su módulo de Punto de Venta. La mayor parte de módulos TPV están diseñados para crear inmediatamente una factura y decrementar stocks cualquiera que sean estas opciones. Por lo tanto, si usted necesita o no decrementar stocks en el registro de una venta de su punto de venta, controle también la configuración de su módulo TPV. ##### Menu ##### MenuDeleted=Menú eliminado -Menu=Carta +Menu=Menú Menus=Menús TreeMenuPersonalized=Menús personalizados NotTopTreeMenuPersonalized=Menús personalizados no enlazados a un menú superior @@ -1821,7 +1821,7 @@ CashDeskIdWareHouse=Forzar y restringir almacén a usar para decremento de stock StockDecreaseForPointOfSaleDisabled=Decremento de stock desde TPV desactivado StockDecreaseForPointOfSaleDisabledbyBatch=El decremento de stock en TPV no es compatible con la gestión de lotes (actualmente activado), por lo que el decremento de stock está desactivado. CashDeskYouDidNotDisableStockDecease=Usted no ha desactivado el decremento de stock al hacer una venta desde TPV. Así que se requiere un almacén. -CashDeskForceDecreaseStockLabel=La disminución de existencias para productos por lotes fue forzada. +CashDeskForceDecreaseStockLabel=El decremento de stock para productos con lote ha sido forzada. CashDeskForceDecreaseStockDesc=Disminuir primero por las fechas más antiguas de caducidad y venta. CashDeskReaderKeyCodeForEnter=Código de clave para "Enter" definido en el lector de código de barras (Ejemplo: 13) ##### Bookmark ##### @@ -1855,7 +1855,7 @@ MultiCompanySetup=Configuración del módulo Multi-empresa ##### Suppliers ##### SuppliersSetup=Configuración del módulo de proveedores SuppliersCommandModel=Plantilla completa de Pedidos a proveedores -SuppliersCommandModelMuscadet=Plantilla completa de la orden de compra (implementación anterior de la plantilla de cornas) +SuppliersCommandModelMuscadet=Plantilla completa de pedido a proveedor (implementación anterior de la plantilla de cornas) SuppliersInvoiceModel=Plantilla completa de Factura de proveedor SuppliersInvoiceNumberingModel=Modelos de numeración de facturas de proveedor IfSetToYesDontForgetPermission=Si se establece en un valor no nulo, no olvide proporcionar permisos a los grupos o usuarios permitidos para la segunda aprobación @@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=La instalación o construcción de un módulo externo HighlightLinesOnMouseHover=Resaltar líneas de los listados cuando el ratón pasa por encima de ellas HighlightLinesColor=Resalta el color de la línea cuando el ratón pasa por encima (usar 'ffffff' para no resaltar) HighlightLinesChecked=Resalta el color de la línea cuando se marca (use 'ffffff' para no resaltar) +BtnActionColor=Color del botón de acción +TextBtnActionColor=Color del texto del botón de acción TextTitleColor=Color para la página de título LinkColor=Color para los enlaces PressF5AfterChangingThis=Para que sea eficaz el cambio, presione CTRL+F5 en el teclado o borre la memoria caché del navegador después de cambiar este valor @@ -1933,7 +1935,7 @@ BackgroundTableLineEvenColor=Color de fondo para todas las líneas de tabl MinimumNoticePeriod=Período mínimo de notificación (Su solicitud de licencia debe hacerse antes de este período) NbAddedAutomatically=Número de días adicionales que se añaden automáticamente a los contadores de usuarios cada mes EnterAnyCode=Este campo contiene una referencia para identificar la línea. Ingrese cualquier valor de su elección, pero sin caracteres especiales. -Enter0or1=Introduzca 0 o 1 +Enter0or1=Introduzca 0 ó 1 UnicodeCurrency=Ingrese aquí entre llaves, lista con número de byte que representa el símbolo de moneda. Por ejemplo: para $, introduzca [36] - para Brasil Real R$ [82,36] - para €, introduzca [8364] ColorFormat=El color RGB es en formato HEX, ej: FF0000 PictoHelp=Nombre del icono en formato dolibarr ('image.png' si está en el directorio del tema actual, 'image.png@nombre_del_modulo' si está en el directorio /img/ de un módulo) @@ -2017,18 +2019,18 @@ MAIN_PDF_MARGIN_RIGHT=Margen derecho en PDF MAIN_PDF_MARGIN_TOP=Margen superior en PDF MAIN_PDF_MARGIN_BOTTOM=Margen inferior en PDF MAIN_DOCUMENTS_LOGO_HEIGHT=Altura del logo en PDF -MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Añadir una columna para una imagen en las líneas de pedido +MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Añadir una columna para una imagen en las líneas de presupuesto MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Ancho de la columna si se añade una imagen en las líneas -MAIN_PDF_NO_SENDER_FRAME=Ocultar bordes en el marco de la dirección del remitente +MAIN_PDF_NO_SENDER_FRAME=Ocultar bordes en el marco de la dirección del emisor MAIN_PDF_NO_RECIPENT_FRAME=Ocultar bordes en el marco de la dirección del destinatario MAIN_PDF_HIDE_CUSTOMER_CODE=Ocultar código de cliente -MAIN_PDF_HIDE_SENDER_NAME=Ocultar el nombre del remitente/empresa en el bloque de direcciones +MAIN_PDF_HIDE_SENDER_NAME=Ocultar el nombre del emisor/empresa en el bloque de direcciones PROPOSAL_PDF_HIDE_PAYMENTTERM=Ocultar condiciones de pago PROPOSAL_PDF_HIDE_PAYMENTMODE=Ocultar modo de pago MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING=Agregar firma electrónica en PDF NothingToSetup=No hay ninguna configuración a realizar en este módulo. SetToYesIfGroupIsComputationOfOtherGroups=Establezca esto a sí si este grupo es un cálculo de otros grupos -EnterCalculationRuleIfPreviousFieldIsYes=Ingrese la regla de cálculo si el campo anterior se estableció en Sí.
Por ejemplo:
CODEGRP1 + CODEGRP2 +EnterCalculationRuleIfPreviousFieldIsYes=Ingrese la regla de cálculo si el campo anterior se estableció en Sí.
Por ejemplo:
CODEGRP1+CODEGRP2 SeveralLangugeVariatFound=Varias variantes de idioma encontradas RemoveSpecialChars=Eliminar caracteres especiales COMPANY_AQUARIUM_CLEAN_REGEX=Filtro Regex para limpiar el valor (COMPANY_AQUARIUM_CLEAN_REGEX) @@ -2044,7 +2046,7 @@ SocialNetworkSetup=Configuración del módulo de redes sociales. EnableFeatureFor=Habilitar funciones para %s VATIsUsedIsOff=Nota: La opción de usar el IVA se ha establecido como Desactivado en el menú %s - %s, por lo que el IVA usado siempre será 0 para las ventas. SwapSenderAndRecipientOnPDF=Intercambiar dirección de remitente y destinatario en documentos PDF -FeatureSupportedOnTextFieldsOnly=Advertencia, función compatible solo con campos de texto y listas combinadas. Además, se debe establecer un parámetro de URL action = create o action = edit O el nombre de la página debe terminar con 'new.php' para activar esta función. +FeatureSupportedOnTextFieldsOnly=Advertencia, función compatible solo con campos de texto y listas desplegables. Además, se debe establecer un parámetro de URL action=create o action=edit O el nombre de la página debe terminar con 'new.php' para activar esta función. EmailCollector=Recolector de correo EmailCollectorDescription=Añade una tarea programada y una página de configuración para escanear los buzones de e-mail con regularidad (utilizando el protocolo IMAP) y registra los e-mails recibidos en su aplicación, en el lugar correcto y/o crea registros automáticamente (como leads). NewEmailCollector=Nuevo recolector de e-mail @@ -2056,8 +2058,8 @@ EmailcollectorOperationsDesc=Las operaciones se ejecutan de arriba hacia abajo. MaxEmailCollectPerCollect=Número máximo de e-mails recolectados por la recolección CollectNow=Recoger ahora ConfirmCloneEmailCollector=¿Está seguro de que desea clonar el recolector de e-mails %s? -DateLastCollectResult=Fecha del último intento de recopilación -DateLastcollectResultOk=Fecha del último éxito de recopilación +DateLastCollectResult=Fecha del último intento de recolección +DateLastcollectResultOk=Fecha de la última recolección con éxito LastResult=Último resultado EmailCollectorConfirmCollectTitle=Confirmación recolección e-mail EmailCollectorConfirmCollect=¿Desea ejecutar la recolección de este recolector ahora? @@ -2071,7 +2073,7 @@ CodeLastResult=Resultado último código NbOfEmailsInInbox=Número de emails en el directorio fuente LoadThirdPartyFromName=Cargar terceros buscando en %s (solo carga) LoadThirdPartyFromNameOrCreate=Cargar terceros terceros buscando en %s (crear si no se encuentra) -AttachJoinedDocumentsToObject=Guarde los archivos adjuntos en documentos de objetos si se encuentra una referencia de un objeto en el tema del correo electrónico. +AttachJoinedDocumentsToObject=Guarde los archivos adjuntos en los documentos del objeto si se encuentra una referencia de un objeto en el asunto del correo electrónico. WithDolTrackingID=Mensaje de una conversación iniciada por un primer e-mail enviado desde Dolibarr WithoutDolTrackingID=Mensaje de una conversación iniciada por un primer e-mail NO enviado desde Dolibarr WithDolTrackingIDInMsgId=Mensaje enviado desde Dolibarr @@ -2123,9 +2125,9 @@ ImportSetup=Configuración del módulo Importar InstanceUniqueID=ID única de la instancia SmallerThan=Menor que LargerThan=Mayor que -IfTrackingIDFoundEventWillBeLinked=Tenga en cuenta que si se encuentra un ID de seguimiento de un objeto en un correo electrónico, o si el correo electrónico es una respuesta de un correo electrónico ya recopilado y vinculado a un objeto, el evento creado se vinculará automáticamente al objeto relacionado conocido. +IfTrackingIDFoundEventWillBeLinked=Tenga en cuenta que si se encuentra un ID de seguimiento de un objeto en un correo electrónico, o si el correo electrónico es una respuesta de un correo electrónico ya recolectado y vinculado a un objeto, el evento creado se vinculará automáticamente a dicho objeto relacionado. 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 su propia contraseña de https://myaccount.google.com/. -EmailCollectorTargetDir=Puede desear mover el e-mail a otra etiqueta/directorio cuando se procesó correctamente. Simplemente configure el nombre del directorio aquí para usar esta función (NO use caracteres especiales en el nombre). Tenga en cuenta que también debe utilizar un login de lectura/escritura. +EmailCollectorTargetDir=Puede que desee mover el e-mail a otra etiqueta/directorio cuando se procesó correctamente. Simplemente configure el nombre del directorio aquí para usar esta función (NO use caracteres especiales en el nombre). Tenga en cuenta que también debe utilizar un login de lectura/escritura. EmailCollectorLoadThirdPartyHelp=Puede usar esta acción para usar el contenido del correo electrónico para buscar y cargar un tercero existente en su base de datos. El tercero encontrado (o creado) se utilizará para las siguientes acciones que lo requieran.
Por ejemplo, si desea crear un tercero con un nombre extraído de una cadena 'Name: nombre para encontrar' presente en el cuerpo, use el correo electrónico del remitente como correo electrónico, puede configurar el campo del parámetro de esta manera:
'email= HEADER:^De:(.*);Name=EXTRACTO:CUERPO:Name:\\s([^\\s]*);client=SET:2;'
EndPointFor=End point for %s : %s DeleteEmailCollector=Eliminar el recolector de e-mail @@ -2216,3 +2218,5 @@ NativeModules=Módulos nativos NoDeployedModulesFoundWithThisSearchCriteria=No se encontraron módulos para estos criterios de búsqueda API_DISABLE_COMPRESSION=Deshabilitar la compresión de las respuestas de la API EachTerminalHasItsOwnCounter=Cada terminal utiliza su propio contador. +FillAndSaveAccountIdAndSecret=Rellene y guarde el ID de la cuenta y el secreto primero +PreviousHash=Hash previo diff --git a/htdocs/langs/es_ES/assets.lang b/htdocs/langs/es_ES/assets.lang index 76c7e101a2f..99b1a479095 100644 --- a/htdocs/langs/es_ES/assets.lang +++ b/htdocs/langs/es_ES/assets.lang @@ -61,5 +61,7 @@ MenuListTypeAssets = Listado # # Module # +Asset=Activo NewAssetType=Nuevo tipo de activo NewAsset=Nuevo activo +ConfirmDeleteAsset=¿Está seguro de que desea eliminar este activo? diff --git a/htdocs/langs/es_ES/banks.lang b/htdocs/langs/es_ES/banks.lang index 20def75dcfa..a03281116b3 100644 --- a/htdocs/langs/es_ES/banks.lang +++ b/htdocs/langs/es_ES/banks.lang @@ -108,13 +108,13 @@ SocialContributionPayment=Pago impuesto social/fiscal BankTransfer=Transferencia bancaria BankTransfers=Transferencias bancarias MenuBankInternalTransfer=Transferencia interna -TransferDesc=Utilice la transferencia interna para transferir de una cuenta a otra, la aplicación escribirá dos registros: un débito en la cuenta de origen y un crédito en la cuenta de destino. Se utilizará la misma cantidad, etiqueta y fecha para esta transacción. +TransferDesc=Utilice la transferencia interna para transferir de una cuenta a otra, la aplicación escribirá dos registros: uno de débito en la cuenta de origen y uno de crédito en la cuenta de destino. Se utilizará la misma cantidad, etiqueta y fecha para esta transacción. TransferFrom=De TransferTo=Hacia TransferFromToDone=La transferencia de %s hacia %s de %s %s se ha creado. CheckTransmitter=Emisor ValidateCheckReceipt=¿Validar esta remesa? -ConfirmValidateCheckReceipt=¿Está seguro de que desea enviar este recibo de cheque para su validación? No será posible realizar cambios una vez validado. +ConfirmValidateCheckReceipt=¿Está seguro de querer validar esta remesa de cheque? No será posible realizar cambios una vez validada. DeleteCheckReceipt=¿Eliminar esta remesa? ConfirmDeleteCheckReceipt=¿Está seguro de querer eliminar esta remesa? BankChecks=Cheques @@ -173,12 +173,12 @@ YourSEPAMandate=Su mandato SEPA FindYourSEPAMandate=Este es su mandato SEPA para autorizar a nuestra empresa a realizar un petición de débito directo a su banco. Gracias por devolverlo firmado (escaneo del documento firmado) o enviado por correo a AutoReportLastAccountStatement=Rellenar automáticamente el campo 'número de extracto bancario' con el último número de extracto cuando realice la conciliación CashControl=Cierre de caja del POS -NewCashFence=Apertura o cierre de nueva caja +NewCashFence=Nueva apertura o cierre de caja BankColorizeMovement=Colorear movimientos BankColorizeMovementDesc=Si esta función está activada, puede elegir un color de fondo específico para los movimientos de débito o crédito BankColorizeMovementName1=Color de fondo para el movimiento de débito BankColorizeMovementName2=Color de fondo para el movimiento de crédito IfYouDontReconcileDisableProperty=Si no realiza las conciliaciones bancarias en algunas cuentas bancarias, desactive la propiedad "%s" en ellas para eliminar esta advertencia. NoBankAccountDefined=Sin cuenta bancaria definida -NoRecordFoundIBankcAccount=No se encontró ningún registro en la cuenta bancaria. Por lo general, esto ocurre cuando un registro se ha eliminado manualmente de la lista de transacciones en la cuenta bancaria (por ejemplo, durante una conciliación de la cuenta bancaria). Otra razón es que el pago se registró cuando se deshabilitó el módulo "%s". +NoRecordFoundIBankcAccount=No se encontró ningún registro en la cuenta bancaria. Por lo general, esto ocurre cuando un registro se ha eliminado manualmente de la lista de transacciones en la cuenta bancaria (por ejemplo, durante una conciliación de la cuenta bancaria). Otra razón es que el pago se registró cuando el módulo "%s" estaba deshabilitado. AlreadyOneBankAccount=Ya se ha definido una cuenta bancaria diff --git a/htdocs/langs/es_ES/bills.lang b/htdocs/langs/es_ES/bills.lang index 12af29f49b5..6e50598e0f3 100644 --- a/htdocs/langs/es_ES/bills.lang +++ b/htdocs/langs/es_ES/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Informes de pagos PaymentsAlreadyDone=Pagos efectuados PaymentsBackAlreadyDone=Reembolsos ya realizados PaymentRule=Forma de pago -PaymentMode=Tipo de pago -DefaultPaymentMode=Tipo de pago predeterminado +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Cuenta bancaria predeterminada -PaymentTypeDC=Tarjeta de Débito/Crédito -PaymentTypePP=PayPal -IdPaymentMode=Tipo de pago (id) -CodePaymentMode=Tipo de pago (código) -LabelPaymentMode=Tipo de pago (etiqueta) -PaymentModeShort=Tipo de pago +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Condición de pago PaymentConditions=Condiciones de pago PaymentConditionsShort=Condiciones de pago @@ -450,6 +449,8 @@ PaymentTypeTRA=Banco borrador PaymentTypeShortTRA=Borrador PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Tarjeta de Débito/Crédito +PaymentTypePP=PayPal BankDetails=Datos bancarios BankCode=Código banco DeskCode=Oficina diff --git a/htdocs/langs/es_ES/blockedlog.lang b/htdocs/langs/es_ES/blockedlog.lang index 576218090d6..151e2c746a3 100644 --- a/htdocs/langs/es_ES/blockedlog.lang +++ b/htdocs/langs/es_ES/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Registros inalterables ShowAllFingerPrintsMightBeTooLong=Mostrar todos los registros archivados (puede ser largo) ShowAllFingerPrintsErrorsMightBeTooLong=Mostrar todos los registros de archivo no válidos (puede ser largo) DownloadBlockChain=Descargar huellas dactilares -KoCheckFingerprintValidity=La entrada de registro archivada no es válida. Significa que alguien (¿un pirata informático?) ha modificado algunos datos de este registro después de que fue grabado, o ha borrado el registro archivado anterior (verifique que exista esa línea con # anterior). +KoCheckFingerprintValidity=La entrada del registro archivado no es válida. Significa que alguien (¿un pirata informático?) Ha modificado algunos datos de este registro después de que se registró, o ha borrado el registro archivado anterior (verifique que existe la línea con el # anterior) o ha modificado la suma de comprobación del registro anterior. OkCheckFingerprintValidity=El registro archivado es válido. Significa que no se modificó ningún dato en esta línea y el registro sigue a la anterior. OkCheckFingerprintValidityButChainIsKo=El registro archivado parece válido en comparación con el anterior, pero la cadena se dañó anteriormente. AddedByAuthority=Almacenado en autoridad remota @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=Lista de países donde el uso de este mód OnlyNonValid=No válido TooManyRecordToScanRestrictFilters=Demasiados registros para escanear/analizar. Por favor restringa la lista con filtros más restrictivos. RestrictYearToExport=Restringir mes / año para exportar +BlockedLogEnabled=El sistema para registrar eventos en el registro inalterable ha sido activado +BlockedLogDisabled=El sistema para registrar eventos en el registro inalterable ha sido desactivado después de que se hayan realizado algunos registros. Se ha salvado una huella especial para registrar que la cadena se ha roto. +BlockedLogDisabledBis=El sistema para registrar eventos en el registro inalterable se ha desactivado. Ha sido posible dado que todavía no había registros. diff --git a/htdocs/langs/es_ES/bookmarks.lang b/htdocs/langs/es_ES/bookmarks.lang index f7bdb2f412e..a147978b0d1 100644 --- a/htdocs/langs/es_ES/bookmarks.lang +++ b/htdocs/langs/es_ES/bookmarks.lang @@ -15,7 +15,7 @@ UrlOrLink=URL BehaviourOnClick=Comportamiento al hacer clic en la URL CreateBookmark=Crear marcador SetHereATitleForLink=Indicar un nombre para el marcador -UseAnExternalHttpLinkOrRelativeDolibarrLink=Utilice un enlace externo / absoluto (https://externalurl.com) o un enlace interno / relativo (/mypage.php). También puede utilizar un teléfono como tel: 0123456. +UseAnExternalHttpLinkOrRelativeDolibarrLink=Utilice un enlace externo/absoluto (https://externalurl.com) o un enlace interno/relativo (/mypage.php). También puede utilizar un teléfono como tel:0123456. ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Elija si la página enlazada debería abrirse en la pestaña actual o en una nueva pestaña BookmarksManagement=Gestión de marcadores BookmarksMenuShortCut=Ctrl + shift + m diff --git a/htdocs/langs/es_ES/companies.lang b/htdocs/langs/es_ES/companies.lang index 43ba643a63b..e84430a5eca 100644 --- a/htdocs/langs/es_ES/companies.lang +++ b/htdocs/langs/es_ES/companies.lang @@ -157,15 +157,15 @@ ProfId3CL=- ProfId4CL=- ProfId5CL=- ProfId6CL=- -ProfId1CM=Id. prof. 1 (Trade Register) -ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1CM=Identificación. profe. 1 (Registro Mercantil) +ProfId2CM=Identificación. profe. 2 (Número de Identificación Fiscal ) +ProfId3CM=Identificación. profe. 3 (Decreto de creación) ProfId4CM=- ProfId5CM=- ProfId6CM=- -ProfId1ShortCM=Trade Register -ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation +ProfId1ShortCM=Registro Mercantil +ProfId2ShortCM=NIF (Número de Identificación Fiscal) +ProfId3ShortCM=Decreto de creación ProfId4ShortCM=- ProfId5ShortCM=- ProfId6ShortCM=- @@ -283,12 +283,12 @@ ProfId3RU=KPP ProfId4RU=OKPO ProfId5RU=- ProfId6RU=- -ProfId1UA=Prof Id 1 (EDRPOU) -ProfId2UA=Prof Id 2 (DRFO) -ProfId3UA=Prof Id 3 (INN) -ProfId4UA=Prof Id 4 (Certificate) -ProfId5UA=Prof Id 5 (RNOKPP) -ProfId6UA=Prof Id 6 (TRDPAU) +ProfId1UA=EDRPOU +ProfId2UA=DRFO +ProfId3UA=INN +ProfId4UA=Certificado +ProfId5UA=RNOKPP +ProfId6UA=TRDPAU ProfId1DZ=RC ProfId2DZ=Art. ProfId3DZ=NIF diff --git a/htdocs/langs/es_ES/cron.lang b/htdocs/langs/es_ES/cron.lang index 06a2e94309b..25537c7cbbc 100644 --- a/htdocs/langs/es_ES/cron.lang +++ b/htdocs/langs/es_ES/cron.lang @@ -60,7 +60,7 @@ CronErrEndDateStartDt=La fecha de finalizacion no puede ser anterior a la fecha StatusAtInstall=Estado en la instalación del módulo CronStatusActiveBtn=Calendario CronStatusInactiveBtn=Inactivo -CronTaskInactive=Este trabajo está inhabilitado (no programado) +CronTaskInactive=Este trabajo está desactivado (no programado) CronId=Id CronClassFile=Nombre de archivo con clase CronModuleHelp=Nombre del directorio del módulo Dolibarr (también funciona con módulos externos).
Por ejemplo, para realizar un fetch del objeto Product /htdocs/product/class/product.class.php, el valor del módulo es product diff --git a/htdocs/langs/es_ES/errors.lang b/htdocs/langs/es_ES/errors.lang index 9448dcff649..cba521d8f83 100644 --- a/htdocs/langs/es_ES/errors.lang +++ b/htdocs/langs/es_ES/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Este contacto ya está definido como ErrorCashAccountAcceptsOnlyCashMoney=Esta cuenta bancaria es de tipo caja y sólo acepta pagos en efectivo. ErrorFromToAccountsMustDiffers=La cuenta origen y destino deben ser diferentes. ErrorBadThirdPartyName=Nombre de tercero incorrecto +ForbiddenBySetupRules=Prohibido por las reglas de la configuración ErrorProdIdIsMandatory=El %s es obligatorio +ErrorAccountancyCodeCustomerIsMandatory=El código contable del cliente %s es obligatorio ErrorBadCustomerCodeSyntax=La sintaxis del código cliente es incorrecta ErrorBadBarCodeSyntax=Sintaxis errónea para el código de barras. Es posible que haya asignado un tipo de código de barras o definido una máscara de código de barras para numerar que no coincide con el valor escaneado ErrorCustomerCodeRequired=Código cliente obligatorio @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=No está en el Diccionario de términos de ErrorIsNotADraft=%s no es un borrador ErrorExecIdFailed=No se puede ejecutar el comando "id" ErrorBadCharIntoLoginName=Carácter no autorizado en el nombre de inicio de sesión +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=El parámetro PHP upload_max_filesize (%s) es más alto que el parámetro PHP post_max_size (%s). Esta no es una configuración consistente. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requiere al menos %s carácter(es) RequireXStringMax = Requiere %s carácter(es) como máximo RequireAtLeastXDigits = Requiere al menos %s dígito(s) RequireXDigitsMax = Requiere %s dígito(s) máx. +RequireValidNumeric = Se requiere un valor numérico RequireValidEmail = La dirección de e-mail no es válida RequireMaxLength = La longitud debe ser menor que %s carácter(es) RequireMinLength = La longitud debe ser superior a %s char (s) diff --git a/htdocs/langs/es_ES/eventorganization.lang b/htdocs/langs/es_ES/eventorganization.lang index e3336875960..8ea50dc2eb1 100644 --- a/htdocs/langs/es_ES/eventorganization.lang +++ b/htdocs/langs/es_ES/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Categoría para agregar a terceros cre EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Categoría para agregar a terceros creada automáticamente cuando sugieren un stand EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Plantilla de correo electrónico para enviar después de recibir una sugerencia de conferencia. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Plantilla de correo electrónico para enviar después de recibir sugerencia de stand. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Plantilla de e-mail para enviar después de que se haya pagado una suscripción a un stand. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Plantilla de correo electrónico para enviar después de que se haya pagado la inscripción a un stand. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Plantilla de e-mail para enviar después de que se haya pagado una suscripción a un evento. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Plantilla de correo electrónico de acción masiva a asistentes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Plantilla de correo electrónico de acción masiva a ponentes -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filtrar la lista de selección de terceros en la tarjeta / formulario de creación de asistentes con categoría -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filtre la lista de selección de terceros en la tarjeta / formulario de creación de asistentes con el tipo de cliente +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Plantilla de correo electrónico para usar al enviar correos electrónicos de la masa "Enviar correos electrónicos" a los oradores +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Plantilla de correo electrónico para usar al enviar correos electrónicos de la masa "Enviar correos electrónicos" en la lista de asistentes +EVENTORGANIZATION_FILTERATTENDEES_CAT = En el formulario para crear/agregar un asistente, restringe la lista de terceros a terceros en la categoría +EVENTORGANIZATION_FILTERATTENDEES_TYPE = En el formulario para crear/agregar un asistente, restringe la lista de terceros a terceros con la naturaleza # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Pago de su stand EventOrganizationEmailRegistrationPayment = Registro para un evento EventOrganizationMassEmailAttendees = Comunicación a los asistentes EventOrganizationMassEmailSpeakers = Comunicación a los ponentes +ToSpeakers=A los ponentes # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Precio de inscripción PriceOfRegistrationHelp=Precio a pagar por registrarse o participar en el evento PriceOfBooth=Precio de suscripción para hacer stand PriceOfBoothHelp=Precio de suscripción para hacer stand -EventOrganizationICSLink=Enlace ICS para eventos +EventOrganizationICSLink=Enlace ICS para conferencias ConferenceOrBoothInformation=Información sobre conferencias o stands Attendees=Asistentes ListOfAttendeesOfEvent=Lista de asistentes al proyecto del evento DownloadICSLink = Descargar enlace ICS -EVENTORGANIZATION_SECUREKEY = Secure Key del enlace de registro público a una conferencia +EVENTORGANIZATION_SECUREKEY = Semilla para asegurar la clave de la página de registro público para sugerir una conferencia SERVICE_BOOTH_LOCATION = Servicio utilizado para la fila de facturas sobre la ubicación de un stand -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Servicio utilizado para la fila de la factura sobre la suscripción de un asistente a una conferencia +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Servicio utilizado para la fila de la factura sobre la suscripción de un asistente a un evento NbVotes=Número de votos # # Status diff --git a/htdocs/langs/es_ES/holiday.lang b/htdocs/langs/es_ES/holiday.lang index bc7b2c0984d..48fb8be6ac9 100644 --- a/htdocs/langs/es_ES/holiday.lang +++ b/htdocs/langs/es_ES/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Vacaciones para aprobar NobodyHasPermissionToValidateHolidays=Nadie tiene permiso para validar días libres HolidayBalanceMonthlyUpdate=Actualización mensual del saldo de vacaciones XIsAUsualNonWorkingDay=%s es normalmente un día NO laborable +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=La solicitud de abandono %s debe ser borrador, cancelada o rechazada para ser eliminada diff --git a/htdocs/langs/es_ES/knowledgemanagement.lang b/htdocs/langs/es_ES/knowledgemanagement.lang index 2d8e10b380b..2c0c2c3797b 100644 --- a/htdocs/langs/es_ES/knowledgemanagement.lang +++ b/htdocs/langs/es_ES/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Campos adicionales para el artículo GroupOfTicket=Grupo de tickets YouCanLinkArticleToATicketCategory=Puede vincular un artículo a un grupo de tickets (por lo que el artículo se sugerirá durante la calificación de nuevos tickets) SuggestedForTicketsInGroup=Sugerido para tickets cuando el grupo es + +SetObsolete=Marcar como obsoleto +ConfirmCloseKM=¿Confirma el cierre de este artículo como obsoleto? +ConfirmReopenKM=¿Quieres reabrir este artículo al estado "Validado"? diff --git a/htdocs/langs/es_ES/main.lang b/htdocs/langs/es_ES/main.lang index e26ba150da7..80bbe511acf 100644 --- a/htdocs/langs/es_ES/main.lang +++ b/htdocs/langs/es_ES/main.lang @@ -365,7 +365,7 @@ UnitPriceHTCurrency=Precio base (moneda) UnitPriceTTC=Precio unitario total PriceU=P.U. PriceUHT=P.U. -PriceUHTCurrency=P.U. (neto) (moneda) +PriceUHTCurrency=P.U. (neto) (divisa) PriceUTTC=P.U. (i.i.) Amount=Importe AmountInvoice=Importe factura @@ -393,7 +393,7 @@ AmountTotal=Importe total AmountAverage=Importe medio PriceQtyMinHT=Precio cantidad min. total PriceQtyMinHTCurrency=Precio cantidad min. (moneda) -PercentOfOriginalObject=Porcentaje de objeto original +PercentOfOriginalObject=Porcentaje del objeto original AmountOrPercent=Cantidad o porcentaje Percentage=Porcentaje Total=Total @@ -797,7 +797,7 @@ AttributeCode=Código URLPhoto=Url de la foto/logo SetLinkToAnotherThirdParty=Vincular a otro tercero LinkTo=Enlazar a -LinkToProposal=Enlazar a pedido +LinkToProposal=Enlazar a presupuesto LinkToOrder=Enlazar a pedido LinkToInvoice=Enlazar a factura LinkToTemplateInvoice=Enlazar a plantilla de factura @@ -807,7 +807,7 @@ LinkToSupplierInvoice=Enlazar a factura de proveedor LinkToContract=Enlazar a contrato LinkToIntervention=Enlazar a intervención LinkToTicket=Enlazar a ticket -LinkToMo=Enlace a Mo +LinkToMo=Enlace a OF CreateDraft=Crear borrador SetToDraft=Volver a borrador ClickToEdit=Clic para editar @@ -851,7 +851,7 @@ XMoreLines=%s línea(s) ocultas ShowMoreLines=Mostrar más/menos líneas PublicUrl=URL pública AddBox=Añadir caja -SelectElementAndClick=Seleccione un elemento y haga clic %s +SelectElementAndClick=Seleccione un elemento y haga clic en %s PrintFile=Imprimir Archivo %s ShowTransaction=Mostrar registro en la cuenta bancaria ShowIntervention=Mostrar intervención @@ -1131,32 +1131,32 @@ OutOfDate=Fuera de plazo EventReminder=Recordatorio evento UpdateForAllLines=Actualización para todas las líneas OnHold=En espera -Civility=Civilidad +Civility=Título Cortesía AffectTag=Afectar etiqueta CreateExternalUser=Crear usuario externo ConfirmAffectTag=Afectar etiquetas masivas ConfirmAffectTagQuestion=¿Está seguro de que desea asignar las etiquetas a los %s registros seleccionados? CategTypeNotFound=No se encontró ningún tipo de etiqueta para el tipo de registros CopiedToClipboard=Copiado al portapapeles -InformationOnLinkToContract=Esta cantidad es solo el total de todas las líneas del contrato. No se toma en consideración ninguna noción de tiempo. -ConfirmCancel=Estas seguro que quieres cancelar -EmailMsgID=MsgID de correo electrónico +InformationOnLinkToContract=Este importe es solo el total de todas las líneas del contrato. No se toma en consideración ninguna noción de tiempo. +ConfirmCancel=Estás seguro que quieres cancelar +EmailMsgID=MsgID de e-mail SetToEnabled=Establecer como activado SetToDisabled=Establecer como desactivado ConfirmMassEnabling=confirmación de habilitación masiva -ConfirmMassEnablingQuestion=¿Está seguro de que desea activar los registros seleccionados %s? +ConfirmMassEnablingQuestion=¿Está seguro de que desea activar los %s registros seleccionados? ConfirmMassDisabling=confirmación de desactivación masiva -ConfirmMassDisablingQuestion=¿Está seguro de que desea dessactivar los registros seleccionados %s? +ConfirmMassDisablingQuestion=¿Está seguro de que desea desactivar los %s registros seleccionados? RecordsEnabled=%s registro(s) activado(s) RecordsDisabled=%s registro(s) desactivado(s) RecordEnabled=Registro activado RecordDisabled=Registro desactivado Forthcoming=Próximo Currently=Actualmente -ConfirmMassLeaveApprovalQuestion=¿Está seguro de que desea aprobar los registros seleccionados %s? +ConfirmMassLeaveApprovalQuestion=¿Está seguro de que desea aprobar los %s registros seleccionados? ConfirmMassLeaveApproval=Confirmación de aprobación masiva RecordAproved=Registro aprobado -RecordsApproved=%s Registro(s) aprobado +RecordsApproved=%s Registro(s) aprobado(s) Properties=Propiedades hasBeenValidated=%s ha sido validado ClientTZ=Zona horaria cliente (usuario) diff --git a/htdocs/langs/es_ES/mrp.lang b/htdocs/langs/es_ES/mrp.lang index 2ef74f6e4d6..030da32d5aa 100644 --- a/htdocs/langs/es_ES/mrp.lang +++ b/htdocs/langs/es_ES/mrp.lang @@ -104,6 +104,6 @@ HumanMachine=Humano / Máquina WorkstationArea=Área de la estación de trabajo Machines=Máquinas THMEstimatedHelp=Esta tarifa permite definir un costo de previsión del artículo. -BOM=Bill Of Materials -CollapseBOMHelp=You can define the default display of the details of the nomenclature in the configuration of the BOM module +BOM=Lista de materiales +CollapseBOMHelp=Puede definir la visualización predeterminada de los detalles de la nomenclatura en la configuración del módulo Lista de Materiales MOAndLines=Órdenes de fabricación y líneas diff --git a/htdocs/langs/es_ES/other.lang b/htdocs/langs/es_ES/other.lang index 3a21455b045..7d9c4356d72 100644 --- a/htdocs/langs/es_ES/other.lang +++ b/htdocs/langs/es_ES/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Proyecto creado por el recolector de e-mails del TicketCreatedByEmailCollector=Ticket creado por el recolector de e-mails del MSGID de e-mail %s OpeningHoursFormatDesc=Use un - para separar las horas de apertura y cierre.
Use un espacio para ingresar diferentes rangos.
Ejemplo: 8-12 14-18 SuffixSessionName=Sufijo para el nombre de la sesión +LoginWith=Iniciar sesión con %s ##### Export ##### ExportsArea=Área de exportaciones diff --git a/htdocs/langs/es_ES/products.lang b/htdocs/langs/es_ES/products.lang index 4d3ca8f91a9..c11249bb2cf 100644 --- a/htdocs/langs/es_ES/products.lang +++ b/htdocs/langs/es_ES/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=La lista de materiales predeterminada que se recomienda utilizar Rank=Rango SwitchOnSaleStatus=Cambiar estado de oferta SwitchOnPurchaseStatus=Activar el estado de la compra +StockMouvementExtraFields= Campos adicionales (movimientos de stock) diff --git a/htdocs/langs/es_ES/projects.lang b/htdocs/langs/es_ES/projects.lang index 4b312f01cd6..891363b0885 100644 --- a/htdocs/langs/es_ES/projects.lang +++ b/htdocs/langs/es_ES/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Entrada por mes InputDetail=Detalle de entrada TimeAlreadyRecorded=Tiempo dedicado ya registrado para esta tarea/día y usuario %s ProjectsWithThisUserAsContact=Proyectos con este usuario como contacto +ProjectsWithThisContact=Proyectos con este contacto TasksWithThisUserAsContact=Tareas asignadas a este usuario ResourceNotAssignedToProject=No asignado al proyecto ResourceNotAssignedToTheTask=No asignado a la tarea @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Nota: los proyectos existentes SelectLinesOfTimeSpentToInvoice=Seleccione las líneas de tiempo invertido que no se hayan facturado y, a continuación, realice la acción masiva "Generar factura" para facturarlas. ProjectTasksWithoutTimeSpent=Tareas de proyecto sin tiempo invertido FormForNewLeadDesc=Gracias por llenar el siguiente formulario para contactarnos. También puede enviarnos un e-mail directamente a %s. +ProjectsHavingThisContact=Proyectos que tienen este contacto StartDateCannotBeAfterEndDate=La fecha de finalizacion no puede ser anterior a la fecha de inicio diff --git a/htdocs/langs/es_ES/receptions.lang b/htdocs/langs/es_ES/receptions.lang index 07b68ead0ed..b6f437b9d45 100644 --- a/htdocs/langs/es_ES/receptions.lang +++ b/htdocs/langs/es_ES/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Configuración de la recepción del producto +ReceptionDescription=Administración de recepción de proveedores (Crear documentos de recepción) +ReceptionsSetup=Configuración de recepción de proveedores RefReception=Ref. recepción Reception=Pte. recibir Receptions=Recepciones diff --git a/htdocs/langs/es_GT/admin.lang b/htdocs/langs/es_GT/admin.lang index a5f92aef8da..c5ab56cb8d8 100644 --- a/htdocs/langs/es_GT/admin.lang +++ b/htdocs/langs/es_GT/admin.lang @@ -1,3 +1,5 @@ # 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/companies.lang b/htdocs/langs/es_GT/companies.lang new file mode 100644 index 00000000000..40b5f885e43 --- /dev/null +++ b/htdocs/langs/es_GT/companies.lang @@ -0,0 +1,7 @@ +# Dolibarr language file - Source file is en_US - companies +ProfId1CM=Id. prof. 1 (Trade Register) +ProfId2CM=Id. prof. 2 (Taxpayer No.) +ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1ShortCM=Trade Register +ProfId2ShortCM=Taxpayer No. +ProfId3ShortCM=Decree of creation diff --git a/htdocs/langs/es_HN/admin.lang b/htdocs/langs/es_HN/admin.lang index a5f92aef8da..c5ab56cb8d8 100644 --- a/htdocs/langs/es_HN/admin.lang +++ b/htdocs/langs/es_HN/admin.lang @@ -1,3 +1,5 @@ # 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/companies.lang b/htdocs/langs/es_HN/companies.lang new file mode 100644 index 00000000000..40b5f885e43 --- /dev/null +++ b/htdocs/langs/es_HN/companies.lang @@ -0,0 +1,7 @@ +# Dolibarr language file - Source file is en_US - companies +ProfId1CM=Id. prof. 1 (Trade Register) +ProfId2CM=Id. prof. 2 (Taxpayer No.) +ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1ShortCM=Trade Register +ProfId2ShortCM=Taxpayer No. +ProfId3ShortCM=Decree of creation diff --git a/htdocs/langs/es_MX/admin.lang b/htdocs/langs/es_MX/admin.lang index 39054070ad4..504bddb9753 100644 --- a/htdocs/langs/es_MX/admin.lang +++ b/htdocs/langs/es_MX/admin.lang @@ -38,12 +38,12 @@ WarningOnlyPermissionOfActivatedModules=Sólo los permisos relacionados a los m DolibarrSetup=Instalación o actualización de Dolibarr UploadNewTemplate=Cargar plantilla(s) nuevas FormToTestFileUploadForm=Formulario para probar la carga de archivos (según la configuración) -ModuleMustBeEnabled=El módulo/aplicación %s debe estar habilitado ModuleIsEnabled=El módulo/aplicación %s se ha habilitado IfModuleEnabled=Nota: sí es efectivo sólo si el módulo %s está activado RemoveLock=Remover/renombrar archivo %s si existe, para permitir el uso de la herramienta Actualizar/Instalar. RestoreLock=Restaurar archivo %s, sólo con permisos de lectura, para deshabilitar cualquier uso posterior de la herramienta Actualizar/Instalar. SecuritySetup=Configuración de seguridad +OSSetup=Configuración del sistema operativo SecurityFilesDesc=Definir aqui opciones acerca de subir archivos con seguridad . ErrorModuleRequirePHPVersion=Error, éste módulo requiere PHP versión %s o superior ErrorModuleRequireDolibarrVersion=Error, éste módulo requiere Dolibarr versión %s o superior @@ -278,3 +278,5 @@ ShowProjectLabel=Etiqueta de proyecto TemplateAdded=Plantilla agregada MailToSendEventOrganization=Organización de Eventos ModuleUpdateAvailable=Una actualización está disponible +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_MX/bills.lang b/htdocs/langs/es_MX/bills.lang index 6e54fb35a3c..88bd041778b 100644 --- a/htdocs/langs/es_MX/bills.lang +++ b/htdocs/langs/es_MX/bills.lang @@ -59,6 +59,7 @@ DisabledBecauseNotEnouthCreditNote=Para eliminar una factura de situación del c PaymentConditionShortPT_ORDER=Pedido PaymentTypeCB=Tarjeta de crédito PaymentTypeShortCB=Tarjeta de crédito +BICNumber=Cuentas bancarias | Pasarelas PayedByThisPayment=Liquidado en este pago ClosePaidCreditNotesAutomatically=Clasifica automáticamente todas las notas de crédito como "Pagadas" cuando el reembolso se realiza en su totalidad. NoteListOfYourUnpaidInvoices=Nota: Esta lista contiene solo facturas de terceros con los que está vinculado como representante de ventas. diff --git a/htdocs/langs/es_MX/companies.lang b/htdocs/langs/es_MX/companies.lang index fcde353f946..5994d9bd951 100644 --- a/htdocs/langs/es_MX/companies.lang +++ b/htdocs/langs/es_MX/companies.lang @@ -64,15 +64,24 @@ ProfId2AR=ID Prof 2 (Ingresos brutos) ProfId1AT=ID Prof 1 (USt.-IdNr) ProfId2AT=ID Prof 2 (USt.-Nr) ProfId3AT=ID Prof 3 (Handelsregister-Nr.) +ProfId5AT=número EORI ProfId1AU=ID Prof 1 (ABN) ProfId1BE=ID Prof 1 (Professional number) +ProfId5BE=número EORI ProfId3CH=ID Prof 1 (Federal number) ProfId4CH=ID Prof 2 (Commercial Record number) +ProfId5CH=número EORI ProfId1CL=ID Prof 1 (R.U.T.) +ProfId1CM=Identificación prof. 1 (Registro de Comercio) +ProfId2CM=Identificación prof. 2 (Nº de Contribuyente) +ProfId3CM=Identificación prof. 3 (Decreto de creación) +ProfId2ShortCM=Contribuyente No. +ProfId3ShortCM=Decree of creation ProfId1CO=ID Prof 1 (R.U.T) ProfId1DE=ID Prof 1 (USt.-IdNr) ProfId2DE=ID Prof 2 (USt.-Nr) ProfId3DE=ID Prof 3 (Handelsregister-Nr.) +ProfId5DE=número EORI ProfId1ES=ID Prof 1 (CIF/NIF) ProfId2ES=ID Prof 2 (Número de seguro social) ProfId3ES=ID Prof 3 (CNAE) @@ -88,13 +97,16 @@ ProfId2IN=ID Prof 2 (PAN) ProfId3IN=ID Prof 3 (SRVC TAX) ProfId4IN=ID Prof 4 ProfId5IN=ID Prof 5 +ProfId5IT=número EORI ProfId1LU=Id. prof. 1 (R.C.S. Luxemburgo) ProfId2LU=Id. prof. 2 (Permiso de negocio) +ProfId5LU=número EORI ProfId1MA=ID Prof. 1 (R.C.) ProfId2MA=ID Prof. 2 (Patente) ProfId3MA=Id Prof. 3 (I.F.) ProfId4MA=ID Prof. 4 (C.N.S.S.) ProfId2MX=R.P. IMSS +ProfId5NL=número EORI ProfId3PT=Prof Id 3 (número de registro comercial) ProfId1US=ID del profesional (FEIN) ProfId1RO=ID 1 (CUI) @@ -159,6 +171,7 @@ EditCompany=Editar empresa ThisUserIsNot=Este usuario no es un cliente potencial, cliente ni proveedor VATIntraCheckDesc=El numero de control de IVA intracomunitario debe incluir el prefijo del país. El enlace %s permite consultar al servicio de control de números de IVA intracomunitario (VIES). Se requiere acceso a Internet desde el servidor para que este servicio funcione. VATIntraCheckableOnEUSite=Verificar el numero de control de IVA intracomunitario en la web de la Comisión Europea +VATIntraManualCheck=También puede consultar manualmente en el sitio web de la Comisión Europea %s ErrorVATCheckMS_UNAVAILABLE=No es posible realizar la verificación. El servicio de comprobación no es prestado por el país miembro (%s). NorProspectNorCustomer=No es cliente potencial, ni cliente OthersNotLinkedToThirdParty=Otros, no vinculado a un tercero diff --git a/htdocs/langs/es_MX/exports.lang b/htdocs/langs/es_MX/exports.lang index e682d6951bd..0cf9c5c4990 100644 --- a/htdocs/langs/es_MX/exports.lang +++ b/htdocs/langs/es_MX/exports.lang @@ -1,2 +1,3 @@ # Dolibarr language file - Source file is en_US - exports +LineDescription=Descripción de la línea ComputedField=Campo calculado diff --git a/htdocs/langs/es_MX/main.lang b/htdocs/langs/es_MX/main.lang index cfb36418da9..62d1df1d2c1 100644 --- a/htdocs/langs/es_MX/main.lang +++ b/htdocs/langs/es_MX/main.lang @@ -76,34 +76,56 @@ DatabaseTypeManager=Administrador de tipo de base de datos RequestLastAccessInError=Último error de solicitud de acceso a la base de datos ReturnCodeLastAccessInError=Código de respuesta para el último error de solicitud de acceso a la base de datos InformationLastAccessInError=Información para el último error de solicitud de acceso a la base de datos +YouCanSetOptionDolibarrMainProdToZero=Puede leer el archivo de registro o establecer la opción $dolibarr_main_prod en '0' en su archivo de configuración para obtener más información. +InformationToHelpDiagnose=Esta información puede ser útil para fines de diagnóstico (puede establecer la opción $dolibarr_main_prod en '1' para ocultar información confidencial) TechnicalID=ID Técnico PrecisionUnitIsLimitedToXDecimals=Dolibarr fue instalado para limitar la precisión de los precios unitarios a%s decimales. +WarningYouHaveAtLeastOneTaskLate=Advertencia, tiene al menos un elemento que ha excedido el tiempo de tolerancia. Under=debajo PeriodEndDate=Fecha final para ell periódo +SelectedPeriod=Período seleccionado +NotClosed=No se ha cerrado Enabled=Habilitado +Enable=Permitir Deprecated=Depreciado Disabled=Deshabilitado AddLink=Añadir vínculo RemoveLink=Remover enlace +AddToDraft=Agregar al borrador Update=Actualizar +CloseBox=Elimine el widget de su tablero +ConfirmSendCardByMail=¿Realmente desea enviar el contenido de esta tarjeta por correo a %s? +Resiliate=Terminar Cancel=Cancelar ValidateAndApprove=Validar y aprobar Save=Guardar SaveAs=Guardar como +SaveAndStay=Guardar y quedarse TestConnection=Probar conexión ToClone=Clonar NoCloneOptionsSpecified=No se definió información a clonar. Run=Ejecutar +Hide=Ocultar ShowCardHere=Ver la ficha +QuickAdd=Adición rápida Valid=Válido +Upload=Cargar ToLink=Vínculo +ResizeOrCrop=Redimensionar o Recortar NoUserGroupDefined=Ningún grupo definido por el usuario NoteSomeFeaturesAreDisabled=Atención, muchas funciones/módulos están deshabilitadas en esta demostración. PersonalValue=Valor personal MultiLanguage=Multi-idioma +DescriptionOfLine=Descripción de la línea +DateOfLine=Fecha de linea +Model=Plantilla de documento +DefaultModel=Plantilla de documento predeterminada Action=Evento +NumberByMonth=Informes totales por mes AmountByMonth=Cantidad por mes +NoLogoutProcessWithAuthMode=Sin función de desconexión de aplicación con el modo de autenticación %s Connection=Inicio de sesión +Deadline=Plazo DateEnd=Fecha de finalización DateCreationShort=Fecha de creación DateModificationShort=Fecha Modif. diff --git a/htdocs/langs/es_PA/admin.lang b/htdocs/langs/es_PA/admin.lang index c35da4b698e..7a1aa3e37f8 100644 --- a/htdocs/langs/es_PA/admin.lang +++ b/htdocs/langs/es_PA/admin.lang @@ -2,3 +2,5 @@ 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/companies.lang b/htdocs/langs/es_PA/companies.lang new file mode 100644 index 00000000000..40b5f885e43 --- /dev/null +++ b/htdocs/langs/es_PA/companies.lang @@ -0,0 +1,7 @@ +# Dolibarr language file - Source file is en_US - companies +ProfId1CM=Id. prof. 1 (Trade Register) +ProfId2CM=Id. prof. 2 (Taxpayer No.) +ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1ShortCM=Trade Register +ProfId2ShortCM=Taxpayer No. +ProfId3ShortCM=Decree of creation diff --git a/htdocs/langs/es_PE/admin.lang b/htdocs/langs/es_PE/admin.lang index 4e531b95475..34a13d1f06f 100644 --- a/htdocs/langs/es_PE/admin.lang +++ b/htdocs/langs/es_PE/admin.lang @@ -11,3 +11,5 @@ 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/mrp.lang b/htdocs/langs/es_PE/mrp.lang index ac9d5fd4292..e4ded5756ef 100644 --- a/htdocs/langs/es_PE/mrp.lang +++ b/htdocs/langs/es_PE/mrp.lang @@ -10,6 +10,7 @@ LatestBOMModified=Últimas%s Lista de materiales modificados LatestMOModified=Últimas %s Órdenes de Fabricación modificadas Bom=Listas de Material BillOfMaterials=Lista de Materiales +BillOfMaterialsLines=Lineas de Lista de Materiales ListOfBOMs=Listado de Lista De Material - BOM ListOfManufacturingOrders=Lista de Órdenes de Fabricación BOMsNumberingModules=Plantillas de numeración BOM @@ -22,7 +23,6 @@ FreeLegalTextOnMOs=Texto libre en documento MO WatermarkOnDraftMOs=Marca de agua en borrador MO ConfirmCloneBillOfMaterials=Está seguro de clonar esta lista de materiales %s ? ConfirmCloneMo=Está seguro de clonar la Orden de Fabricación %s? -ValueOfMeansLoss=Valor de 0.95 significa un promedio de 5%% pérdidas durante la producción ValueOfMeansLossForProductProduced=Valor de 0.95 significa un promedio de 5 %% de pérdidas del producto producido DeleteBillOfMaterials=Eliminar Lista De Materiales NewMO=Nueva Orden de Fabricación diff --git a/htdocs/langs/es_PY/admin.lang b/htdocs/langs/es_PY/admin.lang index a5f92aef8da..c5ab56cb8d8 100644 --- a/htdocs/langs/es_PY/admin.lang +++ b/htdocs/langs/es_PY/admin.lang @@ -1,3 +1,5 @@ # 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/companies.lang b/htdocs/langs/es_PY/companies.lang new file mode 100644 index 00000000000..40b5f885e43 --- /dev/null +++ b/htdocs/langs/es_PY/companies.lang @@ -0,0 +1,7 @@ +# Dolibarr language file - Source file is en_US - companies +ProfId1CM=Id. prof. 1 (Trade Register) +ProfId2CM=Id. prof. 2 (Taxpayer No.) +ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1ShortCM=Trade Register +ProfId2ShortCM=Taxpayer No. +ProfId3ShortCM=Decree of creation diff --git a/htdocs/langs/es_US/admin.lang b/htdocs/langs/es_US/admin.lang index a5f92aef8da..c5ab56cb8d8 100644 --- a/htdocs/langs/es_US/admin.lang +++ b/htdocs/langs/es_US/admin.lang @@ -1,3 +1,5 @@ # 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/companies.lang b/htdocs/langs/es_US/companies.lang new file mode 100644 index 00000000000..40b5f885e43 --- /dev/null +++ b/htdocs/langs/es_US/companies.lang @@ -0,0 +1,7 @@ +# Dolibarr language file - Source file is en_US - companies +ProfId1CM=Id. prof. 1 (Trade Register) +ProfId2CM=Id. prof. 2 (Taxpayer No.) +ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1ShortCM=Trade Register +ProfId2ShortCM=Taxpayer No. +ProfId3ShortCM=Decree of creation diff --git a/htdocs/langs/es_UY/admin.lang b/htdocs/langs/es_UY/admin.lang index a5f92aef8da..c5ab56cb8d8 100644 --- a/htdocs/langs/es_UY/admin.lang +++ b/htdocs/langs/es_UY/admin.lang @@ -1,3 +1,5 @@ # 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/companies.lang b/htdocs/langs/es_UY/companies.lang new file mode 100644 index 00000000000..40b5f885e43 --- /dev/null +++ b/htdocs/langs/es_UY/companies.lang @@ -0,0 +1,7 @@ +# Dolibarr language file - Source file is en_US - companies +ProfId1CM=Id. prof. 1 (Trade Register) +ProfId2CM=Id. prof. 2 (Taxpayer No.) +ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1ShortCM=Trade Register +ProfId2ShortCM=Taxpayer No. +ProfId3ShortCM=Decree of creation diff --git a/htdocs/langs/es_VE/admin.lang b/htdocs/langs/es_VE/admin.lang index 15c0b2ab924..059460aa02f 100644 --- a/htdocs/langs/es_VE/admin.lang +++ b/htdocs/langs/es_VE/admin.lang @@ -4,6 +4,7 @@ VersionLastUpgrade=Última actualización de la versión ConfirmPurgeSessions=¿De verdad quieres purgar todas las sesiones? Esto desconectará a todos los usuarios (excepto a usted). SetupArea=Parametrizaje NotConfigured=Módulo / Aplicación no configurada +GenericMaskCodes3=Cualquier otro carácter en la máscara se quedará sin cambios.
No se permiten espacios
Module1780Desc=Crear etiquetas/Categoría (Productos, clientes, proveedores, contactos y miembros) Permission254=Modificar la contraseña de otros usuarios Permission255=Eliminar o desactivar otros usuarios @@ -32,3 +33,5 @@ LDAPUserObjectClassListExample=Lista de ObjectClass que definen los atributos de 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 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_VE/commercial.lang b/htdocs/langs/es_VE/commercial.lang index 7983b729aac..e56c4cbe0b0 100644 --- a/htdocs/langs/es_VE/commercial.lang +++ b/htdocs/langs/es_VE/commercial.lang @@ -1,3 +1,19 @@ # Dolibarr language file - Source file is en_US - commercial +Commercial=Comercio +ConfirmDeleteAction=¿Estás seguro que quieres eliminar este evento? +ActionOnCompany=Empresa relacionada +TaskRDVWith=Reunión con 1%s +ThirdPartiesOfSaleRepresentative=Cliente/Proveedor con representante de ventas +SaleRepresentativesOfThirdParty=Representante de ventas de tercero +LastDoneTasks=Últimas 1%s tareas completadas +LastActionsToDo=Anteriores 1%s tareas no completadas +StatusActionToDo=Para hacer +ActionAC_EMAIL_IN=Recepción de email ActionAC_INT=Intervención en sitio ActionAC_EMAILING=Envío de correo masivo +ActionAC_COM=Enviar órden de venta por correo +ActionAC_SUP_ORD=Enviar orden de compra por email +ActionAC_SUP_INV=Enviar factura de proveedor por email +ActionAC_OTH_AUTOShort=Otra +ToOfferALinkForOnlineSignature=Link para firma en línea +FeatureOnlineSignDisabled=La funcionalidad para la firma digital está deshabilitada o el documento fue generado antes de habilitar la función diff --git a/htdocs/langs/es_VE/companies.lang b/htdocs/langs/es_VE/companies.lang index 93ac64371ec..8b438adbb1d 100644 --- a/htdocs/langs/es_VE/companies.lang +++ b/htdocs/langs/es_VE/companies.lang @@ -1,10 +1,18 @@ # Dolibarr language file - Source file is en_US - companies +MenuNewCustomer=Nuevo Cliente +MenuNewProspect=Nuevo Cliente Potencial OverAllSupplierProposals=Solicitudes de precios LocalTax1IsUsed=Sujeto LocalTax2IsUsed=Sujeto ProfId1AT=Id prof. 1 (USt.-IdNr) ProfId2AT=Id prof. 2 (USt.-Nr) ProfId3AT=Id prof. 3 (Handelsregister-Nr.) +ProfId1CM=Id. prof. 1 (Trade Register) +ProfId2CM=Id. prof. 2 (Taxpayer No.) +ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1ShortCM=Trade Register +ProfId2ShortCM=R.I.F. +ProfId3ShortCM=Decree of creation ProfId1ES=CI/ RIF ProfId2ES=- ProfId3ES=- diff --git a/htdocs/langs/et_EE/admin.lang b/htdocs/langs/et_EE/admin.lang index 5196dff18a8..6047e9818ff 100644 --- a/htdocs/langs/et_EE/admin.lang +++ b/htdocs/langs/et_EE/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Sihtasutus Version=Versioon Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=Samm %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/et_EE/bills.lang b/htdocs/langs/et_EE/bills.lang index ea4ac59757a..988a6973e37 100644 --- a/htdocs/langs/et_EE/bills.lang +++ b/htdocs/langs/et_EE/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Maksete aruanded PaymentsAlreadyDone=Juba tehtud maksed PaymentsBackAlreadyDone=Refunds already done PaymentRule=Maksereegel -PaymentMode=Makse tüüp -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Makse tüüp (id) -CodePaymentMode=Makse tüüp (kood) -LabelPaymentMode=Makse tüüp (silt) -PaymentModeShort=Makse tüüp +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Maksetähtaeg PaymentConditions=Maksetähtajad PaymentConditionsShort=Maksetähtajad @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Arve esitatud RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Arve mall RepeatableInvoices=Arvete mallid Repeatable=Mall @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Mustand PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Pangarekvisiidid BankCode=Panga kood DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/et_EE/blockedlog.lang b/htdocs/langs/et_EE/blockedlog.lang index 7b3480de3b1..d5950c55010 100644 --- a/htdocs/langs/et_EE/blockedlog.lang +++ b/htdocs/langs/et_EE/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/et_EE/errors.lang b/htdocs/langs/et_EE/errors.lang index dea1995b047..e6cb1458234 100644 --- a/htdocs/langs/et_EE/errors.lang +++ b/htdocs/langs/et_EE/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Antud kontakt on juba määratletud s ErrorCashAccountAcceptsOnlyCashMoney=See pangakonto on sularahakonto, seega võtab ta vastu ainult sularahamakseid. ErrorFromToAccountsMustDiffers=Lähtekonto ja sihtkonto pevad olema erinevad. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=%s on kohustuslik +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Halb kliendi koodi süntaks ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Kliendi kood on nõutud @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/et_EE/eventorganization.lang b/htdocs/langs/et_EE/eventorganization.lang index 62ce1fc170e..462db5ed787 100644 --- a/htdocs/langs/et_EE/eventorganization.lang +++ b/htdocs/langs/et_EE/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/et_EE/holiday.lang b/htdocs/langs/et_EE/holiday.lang index e60e901228d..275d093c939 100644 --- a/htdocs/langs/et_EE/holiday.lang +++ b/htdocs/langs/et_EE/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/et_EE/knowledgemanagement.lang b/htdocs/langs/et_EE/knowledgemanagement.lang index 80f09c6ccba..eef8e69db9a 100644 --- a/htdocs/langs/et_EE/knowledgemanagement.lang +++ b/htdocs/langs/et_EE/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/et_EE/mrp.lang b/htdocs/langs/et_EE/mrp.lang index fd757d19a10..9c4e1da967d 100644 --- a/htdocs/langs/et_EE/mrp.lang +++ b/htdocs/langs/et_EE/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/et_EE/other.lang b/htdocs/langs/et_EE/other.lang index aa6ec77f705..4fd1edbc36a 100644 --- a/htdocs/langs/et_EE/other.lang +++ b/htdocs/langs/et_EE/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Ekspordi ala diff --git a/htdocs/langs/et_EE/products.lang b/htdocs/langs/et_EE/products.lang index 55827cfec4b..5c6a29a3a15 100644 --- a/htdocs/langs/et_EE/products.lang +++ b/htdocs/langs/et_EE/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/et_EE/projects.lang b/htdocs/langs/et_EE/projects.lang index 4b3def37e57..9e19a41c9fa 100644 --- a/htdocs/langs/et_EE/projects.lang +++ b/htdocs/langs/et_EE/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=Lõppkuupäev ei saa olla alguskuupäevast varasem diff --git a/htdocs/langs/et_EE/receptions.lang b/htdocs/langs/et_EE/receptions.lang index 7398c1ead1b..86ef62d8919 100644 --- a/htdocs/langs/et_EE/receptions.lang +++ b/htdocs/langs/et_EE/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Vastuvõtt Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Tühistatud StatusReceptionDraft=Mustand -StatusReceptionValidated=Kinnitatud (väljastamisele minevad või juba väljastatud kaubad) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Töödeldud StatusReceptionDraftShort=Mustand StatusReceptionValidatedShort=Kinnitatud @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/eu_ES/admin.lang b/htdocs/langs/eu_ES/admin.lang index 041c50fe865..f18097cd7fc 100644 --- a/htdocs/langs/eu_ES/admin.lang +++ b/htdocs/langs/eu_ES/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Fundazioa Version=Bertsioa Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=%s pausua FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/eu_ES/bills.lang b/htdocs/langs/eu_ES/bills.lang index 43afb338298..1036665a983 100644 --- a/htdocs/langs/eu_ES/bills.lang +++ b/htdocs/langs/eu_ES/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Ordainketen txostena PaymentsAlreadyDone=Jada egindako ordainketak PaymentsBackAlreadyDone=Refunds already done PaymentRule=Payment rule -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Draft PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bank details BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/eu_ES/blockedlog.lang b/htdocs/langs/eu_ES/blockedlog.lang index 0bba5605d0f..12f28737d49 100644 --- a/htdocs/langs/eu_ES/blockedlog.lang +++ b/htdocs/langs/eu_ES/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/eu_ES/errors.lang b/htdocs/langs/eu_ES/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/eu_ES/errors.lang +++ b/htdocs/langs/eu_ES/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/eu_ES/eventorganization.lang b/htdocs/langs/eu_ES/eventorganization.lang index 82951892a32..b4a7279d757 100644 --- a/htdocs/langs/eu_ES/eventorganization.lang +++ b/htdocs/langs/eu_ES/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/eu_ES/holiday.lang b/htdocs/langs/eu_ES/holiday.lang index 3009b092e78..180e39ed54a 100644 --- a/htdocs/langs/eu_ES/holiday.lang +++ b/htdocs/langs/eu_ES/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/eu_ES/knowledgemanagement.lang b/htdocs/langs/eu_ES/knowledgemanagement.lang index 2426e0e7013..bcdf9740cdd 100644 --- a/htdocs/langs/eu_ES/knowledgemanagement.lang +++ b/htdocs/langs/eu_ES/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/eu_ES/mrp.lang b/htdocs/langs/eu_ES/mrp.lang index a56332a1d73..a526ac2516e 100644 --- a/htdocs/langs/eu_ES/mrp.lang +++ b/htdocs/langs/eu_ES/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/eu_ES/other.lang b/htdocs/langs/eu_ES/other.lang index 6875c9c829c..840ade39f60 100644 --- a/htdocs/langs/eu_ES/other.lang +++ b/htdocs/langs/eu_ES/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/eu_ES/products.lang b/htdocs/langs/eu_ES/products.lang index 5c2ee73c469..e66efbb8926 100644 --- a/htdocs/langs/eu_ES/products.lang +++ b/htdocs/langs/eu_ES/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/eu_ES/projects.lang b/htdocs/langs/eu_ES/projects.lang index a7affa4a766..ee6916fbc5e 100644 --- a/htdocs/langs/eu_ES/projects.lang +++ b/htdocs/langs/eu_ES/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/eu_ES/receptions.lang b/htdocs/langs/eu_ES/receptions.lang index 46b2d689609..7f1a97d16a9 100644 --- a/htdocs/langs/eu_ES/receptions.lang +++ b/htdocs/langs/eu_ES/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Canceled StatusReceptionDraft=Draft -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processed StatusReceptionDraftShort=Draft StatusReceptionValidatedShort=Validated @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/fa_IR/admin.lang b/htdocs/langs/fa_IR/admin.lang index 85a3a9d1dbd..6a196bb2b3b 100644 --- a/htdocs/langs/fa_IR/admin.lang +++ b/htdocs/langs/fa_IR/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=موسسه Version=نسخه Publisher=ناشر @@ -343,7 +343,7 @@ StepNb=گام %s FindPackageFromWebSite=بسته‌ای که متناسب با قابلیت‌های مورد نظر شماست بیابید (برای مثال روی وبگاه رسمی %s). DownloadPackageFromWebSite=دریافت بسته ( برای مثال از وبگاه رسمی %s ). UnpackPackageInDolibarrRoot=فایل‌های بسته‌بندی شده را در فهرست موجود در سرویس دهندۀ Dolibarr در نشانی: %s استخراج و بازگشائی unpack/unzip کنید. -UnpackPackageInModulesRoot=برای استفاده/نصب یک واحد خارجی، فایل‌های فشرده/بسته‌بندی شده را در پوشۀ مربوط به واحد‌های خارجی در سرویس‌دهنده باز کنید:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=واحد مورد نظر مورد استفاده قرار گرفت. با این حال نیاز به تنظیم و برپاسازی در واحد مربوطه هنوز باقی است: %s. NotExistsDirect=پوشۀ جایگزین ریشه در پوشۀ موجود فعلی تعریف نشده است.
InfDirAlt=از نسخۀ 3، امکان تعریف یک پوشۀ جایگزین ریشه وجود دارد. این به شما امکان ذخیرۀ افزونه‌ها و قالب‌های دل‌خواه را در یک پوشۀ اختصاصی می‌دهد.
فقط یک پوشه در ریشۀ Dolibarr بسازید (مثلا: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=نصب یا ساخت یک واحد خارجی در ب HighlightLinesOnMouseHover=برجسته‌کردن سطور جدول در هنگام عبور نشان‌گر موش HighlightLinesColor=برجسته‌کردن رنگ سطر در هنگام عبور موشواره از آن (از 'ffffff' برای عدم رنگ‌دهی) HighlightLinesChecked=روشن‌کردن زرنگ سطر در هنگامی که کادرتائید فشرده شده است ( از 'ffffff' برای عدم روشن کردن استفاده کنید) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=رنگ نوشتۀ عنوان صفحه LinkColor=رنگ پیوندها PressF5AfterChangingThis=کلیدهای CTRL+F5 را روی صفحه‌کلید برای پاک‌کردن میان‌گیری پس از تغییر بفشرید تا تاثیر مقداردهی دیده شود. @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/fa_IR/bills.lang b/htdocs/langs/fa_IR/bills.lang index 9d2addb7d6b..4b6e9659256 100644 --- a/htdocs/langs/fa_IR/bills.lang +++ b/htdocs/langs/fa_IR/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=گزارش‌های پرداخت‌ها PaymentsAlreadyDone=پرداخت‌هائی که قبلا انجام شده PaymentsBackAlreadyDone=Refunds already done PaymentRule=مقررات پرداخت -PaymentMode=نوع پرداخ -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=کارت اعتباری/نقدی -PaymentTypePP=PayPal -IdPaymentMode=نوع پرداخت (شناسه) -CodePaymentMode=نوع پرداخت (کد) -LabelPaymentMode=نوع پرداخت (برچسب) -PaymentModeShort=نوع پرداخت +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=شرایط پرداخت PaymentConditions=شرایط پرداخت PaymentConditionsShort=شرایط پرداخت @@ -280,6 +279,7 @@ SetMode=تنظیم نوع پرداخت SetRevenuStamp=تنظیم تمبر مالیاتی Billed=صورت‌حساب صادرشده RecurringInvoices=صورت‌حساب‌های تکرارشدنی +RecurringInvoice=Recurring invoice RepeatableInvoice=صورت‌حساب قالبی RepeatableInvoices=صورت‌حساب‌های قالبی Repeatable=قالب @@ -449,6 +449,8 @@ PaymentTypeTRA=پیش‌نویس بانک PaymentTypeShortTRA=پیش‌نویس PaymentTypeFAC=صورت‌حساب PaymentTypeShortFAC=صورت‌حساب +PaymentTypeDC=کارت اعتباری/نقدی +PaymentTypePP=PayPal BankDetails=جزئیات بانک BankCode=کد بانک DeskCode=کد شعبه @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/fa_IR/blockedlog.lang b/htdocs/langs/fa_IR/blockedlog.lang index f5999b78250..07b4494bdea 100644 --- a/htdocs/langs/fa_IR/blockedlog.lang +++ b/htdocs/langs/fa_IR/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=گزارش‌کارهای غیرقابل‌تغییر ShowAllFingerPrintsMightBeTooLong=نمایش همۀ گزارش‌کار‌های بایگانی شده (ممکن است طولانی باشد) ShowAllFingerPrintsErrorsMightBeTooLong=نمایش همۀ گزارش‌کارهای نامعتبر بایگانی (ممکن است طولانی باشد) DownloadBlockChain=دریافت اثرانگشت‌ها -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=ردیف گزارش‌کار بایگانی شده معتبر است. داده‌های این سطر ویرایش نشده و ورودی به‌دنبال ورودی قبل است. OkCheckFingerprintValidityButChainIsKo=گزارش‌کار بایگانی شده در قیاس با قبلی معتبر است اما زنجیره قبلا خراب شده است. AddedByAuthority=ذخیره شده برای مقام دوردست @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=فهرست کشورهائی که در آن OnlyNonValid=معتبر نیست TooManyRecordToScanRestrictFilters=ردیف‌های زیادی برای وارسی/تحلیل وجود دارد. لطفا فهرست را با صافی‌های بیشتری محدود کنید. RestrictYearToExport=محدودکردن ماه/سال برای صادرکردن +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/fa_IR/errors.lang b/htdocs/langs/fa_IR/errors.lang index 1ae5475c14a..1231bb9e621 100644 --- a/htdocs/langs/fa_IR/errors.lang +++ b/htdocs/langs/fa_IR/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=این طرف‌تماس قبلا ب ErrorCashAccountAcceptsOnlyCashMoney=این حساب‌بانکی نقدی است و تنها پرداخت‌های نقدی را می‌پذیرد. ErrorFromToAccountsMustDiffers=مبدأ و مقصد حساب‌های بانکی باید متفاوت باشد. ErrorBadThirdPartyName=مقدار غیرقابل‌قبول برای نام شخص‌سوم +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=بخش %s الزامی است +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=روش‌درج برای کدمشتری اشتباه است ErrorBadBarCodeSyntax=روش درج بارکد اشتباه است. ممکناست یک نوع بارکد اشتباه تنظیم کرده باشید یا یک پوشش-ماسک بارکد برای عددهی انتخاب کرده‌اید که با مقدار اسکن شده همخوان نیست. ErrorCustomerCodeRequired=کدمشتری الزامی است @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/fa_IR/eventorganization.lang b/htdocs/langs/fa_IR/eventorganization.lang index a276c098227..df8636f150d 100644 --- a/htdocs/langs/fa_IR/eventorganization.lang +++ b/htdocs/langs/fa_IR/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/fa_IR/holiday.lang b/htdocs/langs/fa_IR/holiday.lang index 3cbc6d30bd2..823b4377048 100644 --- a/htdocs/langs/fa_IR/holiday.lang +++ b/htdocs/langs/fa_IR/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=روزهای‌تعطیل مجاز NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/fa_IR/knowledgemanagement.lang b/htdocs/langs/fa_IR/knowledgemanagement.lang index fbe6ca7b827..1a3d1004ede 100644 --- a/htdocs/langs/fa_IR/knowledgemanagement.lang +++ b/htdocs/langs/fa_IR/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/fa_IR/mrp.lang b/htdocs/langs/fa_IR/mrp.lang index 3ef55588d4a..3da28f8a37a 100644 --- a/htdocs/langs/fa_IR/mrp.lang +++ b/htdocs/langs/fa_IR/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=بازده تولید ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=مقدار 0.95 به معنای یک میانگین 5 %% ضرر در طول تولید هست +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/fa_IR/other.lang b/htdocs/langs/fa_IR/other.lang index 761c80e414e..6024d53da29 100644 --- a/htdocs/langs/fa_IR/other.lang +++ b/htdocs/langs/fa_IR/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=منطقه صادرات diff --git a/htdocs/langs/fa_IR/products.lang b/htdocs/langs/fa_IR/products.lang index 245e7f131fe..5422a1d0aad 100644 --- a/htdocs/langs/fa_IR/products.lang +++ b/htdocs/langs/fa_IR/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/fa_IR/projects.lang b/htdocs/langs/fa_IR/projects.lang index f69e3d36874..13df6369665 100644 --- a/htdocs/langs/fa_IR/projects.lang +++ b/htdocs/langs/fa_IR/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=جزئیات ورودی TimeAlreadyRecorded=این زمان صرف شده قبلا برای این وظیفه/روز و کاربر %s ثبت شده است ProjectsWithThisUserAsContact=طرح‌های مربوط به این کاربر به‌عنوان طرف تماس +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=وظایف محول شده به این کاربر ResourceNotAssignedToProject=به طرح نسبت داده نشده ResourceNotAssignedToTheTask=به این طرح نسبت داده نشده @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=تاریخ پایان نمی‌تواند قبل از تاریخ شروع باشد diff --git a/htdocs/langs/fa_IR/receptions.lang b/htdocs/langs/fa_IR/receptions.lang index fef5cf38a92..9f61026b57d 100644 --- a/htdocs/langs/fa_IR/receptions.lang +++ b/htdocs/langs/fa_IR/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=برپاسازی دریافت محصول +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=ارجاع دریافت‌کالا Reception=دریافت‌کالا Receptions=دریافت‌های کالا @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=دریافت‌کالا‌ها و رسیده ReceptionsToValidate=دریافت‌کالا‌های منتظر تائید StatusReceptionCanceled=لغو شد StatusReceptionDraft=پیش‌نویش -StatusReceptionValidated=تائیدشده ( محصولات ارسال‌شده یا برای ارسال) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=پردازش‌شده StatusReceptionDraftShort=پیش‌نویش StatusReceptionValidatedShort=تائیدشده @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=آمارهائی که تنها بر اساس در SendReceptionByEMail=ارسال دریافت‌کالا توسط رایانامه SendReceptionRef=تسلیم دریافت‌کالا %s ActionsOnReception=رخداد‌های دریافت‌کالا -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=سطر دریافت‌کالا ProductQtyInReceptionAlreadySent=این تعداد محصول از سفارش باز فروش قبلا ارسال شده است ProductQtyInSuppliersReceptionAlreadyRecevied=این تعداد محصول از سفارش باز تامین‌‌کننده قبلا دریافت شده است @@ -46,3 +49,6 @@ ReceptionsReceiptModel=قالب اسناد دریافت‌کالا NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/fi_FI/admin.lang b/htdocs/langs/fi_FI/admin.lang index b0a93ad8154..a1f177033a2 100644 --- a/htdocs/langs/fi_FI/admin.lang +++ b/htdocs/langs/fi_FI/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Säätiö Version=Versio Publisher=Julkaisija @@ -343,7 +343,7 @@ StepNb=Vaihe %s FindPackageFromWebSite=Etsi paketti, joka tarjoaa tarvittavat ominaisuudet (esimerkiksi virallisella verkkosivustolla %s). DownloadPackageFromWebSite=Lataa paketti (esimerkiksi viralliselta verkkosivustolta %s). UnpackPackageInDolibarrRoot=Pura pakatut tiedostot Dolibarr-palvelinhakemistoon: %s -UnpackPackageInModulesRoot=Ulkoisen moduulin käyttöönottoon/asentamiseksi pura pakatut tiedostot ulkoisille moduuleille tarkoitettuun palvelinhakemistoon:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Moduulin käyttöönotto on valmis. Sinun on kuitenkin otettava käyttöön ja määriteltävä moduuli sovelluksessasi siirtymällä sivun asetusmoduuleihin: %s . NotExistsDirect=Vaihtoehtoista juurihakemistoa ei ole määritelty olemassa olevalle hakemistolle.
InfDirAlt=Versiosta 3 lähtien on mahdollista määrittää vaihtoehtoinen juurihakemisto. Tämän avulla voit tallentaa erilliseen hakemistoon laajennuksia ja mukautettuja malleja.
Luo vain hakemisto Dolibarrin juurelle (esim. mukautettu).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Korosta taulukon rivit hiiren liikkuessa niiden päällä HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Sivun otsikon tekstin väri LinkColor=Linkkien värit PressF5AfterChangingThis=Paina näppäimistön CTRL + F5 tai tyhjennä selaimen välimuisti muutettuasi tämän arvon, jotta se tulee voimaan @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/fi_FI/bills.lang b/htdocs/langs/fi_FI/bills.lang index ba37997ead2..deca53dc7ec 100644 --- a/htdocs/langs/fi_FI/bills.lang +++ b/htdocs/langs/fi_FI/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Maksut raportit PaymentsAlreadyDone=Maksut jo PaymentsBackAlreadyDone=Refunds already done PaymentRule=Maksu sääntö -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Luottokortti -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Maksuehdot PaymentConditionsShort=Maksuehdot @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Laskutetun RecurringInvoices=Toistuvat laskut +RecurringInvoice=Recurring invoice RepeatableInvoice=Laskupohja RepeatableInvoices=Laskupohjat Repeatable=Pohja @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Luonnos PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Luottokortti +PaymentTypePP=PayPal BankDetails=Pankkitiedot BankCode=Pankin koodi DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/fi_FI/blockedlog.lang b/htdocs/langs/fi_FI/blockedlog.lang index 6e6393f5cd1..256ef6bd1fa 100644 --- a/htdocs/langs/fi_FI/blockedlog.lang +++ b/htdocs/langs/fi_FI/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/fi_FI/errors.lang b/htdocs/langs/fi_FI/errors.lang index 9f36b253ddb..bbbace60e76 100644 --- a/htdocs/langs/fi_FI/errors.lang +++ b/htdocs/langs/fi_FI/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Tämä yhteys on jo määritelty yhte ErrorCashAccountAcceptsOnlyCashMoney=Tämä pankkitili on käteistä huomioon, joten se hyväksyy maksujen tyypin käteisellä vain. ErrorFromToAccountsMustDiffers=Lähde ja tavoitteet pankkitilit on erilainen. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntaksi asiakas-koodi ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Asiakas-koodi tarvitaan @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/fi_FI/eventorganization.lang b/htdocs/langs/fi_FI/eventorganization.lang index 365aeeacd21..a6a8abe80dd 100644 --- a/htdocs/langs/fi_FI/eventorganization.lang +++ b/htdocs/langs/fi_FI/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/fi_FI/holiday.lang b/htdocs/langs/fi_FI/holiday.lang index 7ffdc46059d..f83bf3dc4f6 100644 --- a/htdocs/langs/fi_FI/holiday.lang +++ b/htdocs/langs/fi_FI/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/fi_FI/knowledgemanagement.lang b/htdocs/langs/fi_FI/knowledgemanagement.lang index 949d8b1ef9b..469f3889085 100644 --- a/htdocs/langs/fi_FI/knowledgemanagement.lang +++ b/htdocs/langs/fi_FI/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/fi_FI/mrp.lang b/htdocs/langs/fi_FI/mrp.lang index 332363391c7..24fe344aebd 100644 --- a/htdocs/langs/fi_FI/mrp.lang +++ b/htdocs/langs/fi_FI/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/fi_FI/other.lang b/htdocs/langs/fi_FI/other.lang index 0e9a031b071..addd43c0748 100644 --- a/htdocs/langs/fi_FI/other.lang +++ b/htdocs/langs/fi_FI/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Vienti alueen diff --git a/htdocs/langs/fi_FI/products.lang b/htdocs/langs/fi_FI/products.lang index 48cc863a768..b067ead47d8 100644 --- a/htdocs/langs/fi_FI/products.lang +++ b/htdocs/langs/fi_FI/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/fi_FI/projects.lang b/htdocs/langs/fi_FI/projects.lang index 686b8058b09..3eec3031322 100644 --- a/htdocs/langs/fi_FI/projects.lang +++ b/htdocs/langs/fi_FI/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/fi_FI/receptions.lang b/htdocs/langs/fi_FI/receptions.lang index d5cb67157fa..549fbb5ec7c 100644 --- a/htdocs/langs/fi_FI/receptions.lang +++ b/htdocs/langs/fi_FI/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Prosessissa Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Peruttu StatusReceptionDraft=Luonnos -StatusReceptionValidated=Validoidut (tuotteet alukselle tai jo lähettänyt) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Käsitelty StatusReceptionDraftShort=Luonnos StatusReceptionValidatedShort=Hyväksytty @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/fr_BE/admin.lang b/htdocs/langs/fr_BE/admin.lang index f3453c451c1..81e53590442 100644 --- a/htdocs/langs/fr_BE/admin.lang +++ b/htdocs/langs/fr_BE/admin.lang @@ -17,4 +17,8 @@ IfModuleEnabled=Note: oui ne fonctionne que si le module %s est activé 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_CA/admin.lang b/htdocs/langs/fr_CA/admin.lang index 0b561530754..41812f1e821 100644 --- a/htdocs/langs/fr_CA/admin.lang +++ b/htdocs/langs/fr_CA/admin.lang @@ -238,4 +238,8 @@ 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 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. 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;'
+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_CA/bills.lang b/htdocs/langs/fr_CA/bills.lang index a10b60e502a..549eaa35485 100644 --- a/htdocs/langs/fr_CA/bills.lang +++ b/htdocs/langs/fr_CA/bills.lang @@ -7,8 +7,6 @@ InvoiceHasAvoir=Était une source d'une ou de plusieurs notes de crédit PredefinedInvoices=Facture prédéfinie paymentInInvoiceCurrency=en factures de devises ConfirmDeletePayment=Êtes-vous sûr de vouloir supprimer ce paiement? -PaymentTypeDC=Carte de débit / crédit -PaymentTypePP=Pay Pal CreateCreditNote=Créer avoir DoPayment=Entrez le paiement DoPaymentBack=Saisissez le remboursement @@ -75,6 +73,8 @@ PaymentTypeTIP=CONSEIL (Documents contre paiement) PaymentTypeShortTIP=PAIEMENT Paiement PaymentTypeTRA=Procédure bancaire PaymentTypeShortTRA=Brouillon +PaymentTypeDC=Carte de débit / crédit +PaymentTypePP=Pay Pal DepositId=Identifiant de dépot CreditNoteConvertedIntoDiscount=Ce %s a été converti en %s YouMustCreateStandardInvoiceFirstDesc=Vous devez d'abord créer une facture standard et la convertir en «modèle» pour créer une nouvelle facture modèle diff --git a/htdocs/langs/fr_CA/receptions.lang b/htdocs/langs/fr_CA/receptions.lang index 2b3197d3bed..5af4dd43428 100644 --- a/htdocs/langs/fr_CA/receptions.lang +++ b/htdocs/langs/fr_CA/receptions.lang @@ -6,7 +6,6 @@ LastReceptions=Dernières %s réceptions ReceptionCard=Carte de réception QtyInOtherReceptions=Qtée dans d'autres réceptions OtherReceptionsForSameOrder=Autres réceptions sur cette commande -StatusReceptionValidated=Validée (produits à envoyer ou déjà envoyé) StatusReceptionProcessed=Traité StatusReceptionValidatedShort=Validée StatusReceptionProcessedShort=Traité diff --git a/htdocs/langs/fr_CH/admin.lang b/htdocs/langs/fr_CH/admin.lang index e03092c0b34..48875993c72 100644 --- a/htdocs/langs/fr_CH/admin.lang +++ b/htdocs/langs/fr_CH/admin.lang @@ -1,5 +1,19 @@ # Dolibarr language file - Source file is en_US - admin +Foundation=Fondation +VersionProgram=Version programme +VersionLastInstall=Version d'installation initiale +VersionLastUpgrade=Version de la dernière mise à jour +VersionRecommanded=Recommandée +FileCheckDesc=Cet outil vous permet to vérifier l'intégrité des fichiers et la configuration de votre application en comparant chaque fichier avec les fichiers officiels. La valeur de certaines constantes de configuration pourrait être vérifiée aussi. Vous pouvez utiliser cet outil pour déterminer si des fichiers ont été modifiés (ex: par un pirate informatique) +LocalSignature=Signature locale intégrée (moins fiable) +RemoteSignature=Signature sur le serveur distant (plus fiable) +FileCheckDolibarr=Vérifier l'intégrité des fichiers de l'application Module310Name=Membres 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/companies.lang b/htdocs/langs/fr_CH/companies.lang new file mode 100644 index 00000000000..8d5d6e0ceb4 --- /dev/null +++ b/htdocs/langs/fr_CH/companies.lang @@ -0,0 +1,8 @@ +# Dolibarr language file - Source file is en_US - companies +ProfId1CM=Id. prof. 1 (Trade Register) +ProfId2CM=Id. prof. 2 (Taxpayer No.) +ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1ShortCM=Trade Register +ProfId2ShortCM=Taxpayer No. +ProfId3ShortCM=Decree of creation +PL_UNKNOWN=Inconnue diff --git a/htdocs/langs/fr_CH/main.lang b/htdocs/langs/fr_CH/main.lang index ccea260191e..7b1aec11282 100644 --- a/htdocs/langs/fr_CH/main.lang +++ b/htdocs/langs/fr_CH/main.lang @@ -19,5 +19,6 @@ FormatDateHourShort=%d.%m.%Y %H:%M %p FormatDateHourSecShort=%d.%m.%Y %H:%M:%S %p FormatDateHourTextShort=%d %b %Y, %H:%M %p FormatDateHourText=%d %B %Y, %H:%M %p +Unknown=Inconnue MenuMembers=Membres SearchIntoMembers=Membres diff --git a/htdocs/langs/fr_CI/admin.lang b/htdocs/langs/fr_CI/admin.lang new file mode 100644 index 00000000000..c5ab56cb8d8 --- /dev/null +++ b/htdocs/langs/fr_CI/admin.lang @@ -0,0 +1,5 @@ +# 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/companies.lang b/htdocs/langs/fr_CI/companies.lang new file mode 100644 index 00000000000..40b5f885e43 --- /dev/null +++ b/htdocs/langs/fr_CI/companies.lang @@ -0,0 +1,7 @@ +# Dolibarr language file - Source file is en_US - companies +ProfId1CM=Id. prof. 1 (Trade Register) +ProfId2CM=Id. prof. 2 (Taxpayer No.) +ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1ShortCM=Trade Register +ProfId2ShortCM=Taxpayer No. +ProfId3ShortCM=Decree of creation diff --git a/htdocs/langs/fr_CM/admin.lang b/htdocs/langs/fr_CM/admin.lang new file mode 100644 index 00000000000..c5ab56cb8d8 --- /dev/null +++ b/htdocs/langs/fr_CM/admin.lang @@ -0,0 +1,5 @@ +# 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/companies.lang b/htdocs/langs/fr_CM/companies.lang new file mode 100644 index 00000000000..40b5f885e43 --- /dev/null +++ b/htdocs/langs/fr_CM/companies.lang @@ -0,0 +1,7 @@ +# Dolibarr language file - Source file is en_US - companies +ProfId1CM=Id. prof. 1 (Trade Register) +ProfId2CM=Id. prof. 2 (Taxpayer No.) +ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1ShortCM=Trade Register +ProfId2ShortCM=Taxpayer No. +ProfId3ShortCM=Decree of creation diff --git a/htdocs/langs/fr_FR/accountancy.lang b/htdocs/langs/fr_FR/accountancy.lang index dcfb2fa7f87..fa9e2203eea 100644 --- a/htdocs/langs/fr_FR/accountancy.lang +++ b/htdocs/langs/fr_FR/accountancy.lang @@ -48,7 +48,7 @@ CountriesNotInEEC=Pays hors CEE CountriesInEECExceptMe=Pays de la CEE sauf %s CountriesExceptMe=Tous les pays sauf %s AccountantFiles=Exporter les documents sources -ExportAccountingSourceDocHelp=With this tool, you can export the source events (list in CSV and PDFs) that are used to generate your accountancy. +ExportAccountingSourceDocHelp=Avec cet outil, vous pouvez exporter les événements sources (liste en CSV et PDF) qui servent à générer votre comptabilité. ExportAccountingSourceDocHelp2=Pour exporter vos journaux, utilisez l'entrée de menu %s - %s. VueByAccountAccounting=Vue par comptes comptables VueBySubAccountAccounting=Affichage par compte auxiliaire @@ -286,7 +286,7 @@ ValidateMovements=Valider les mouvements DescValidateMovements=Toute modification ou suppression d'écriture, de lettrage et de suppression sera interdite. Toutes les entrées pour un exercice doivent être validées, sinon la fermeture ne sera pas possible ValidateHistory=Lier automatiquement -AutomaticBindingDone=Automatic bindings done (%s) - Automatic binding not possible for some record (%s) +AutomaticBindingDone=Liaisons automatiques effectuées (%s) - Liaison automatique impossible pour certains enregistrements (%s) ErrorAccountancyCodeIsAlreadyUse=Erreur, vous ne pouvez pas détruire de compte comptable car il est utilisé MvtNotCorrectlyBalanced=Mouvement non équilibré. Débit = %s| Crédit = %s @@ -387,8 +387,8 @@ SaleExport=Vente export SaleEEC=Vente dans la CEE SaleEECWithVAT=Vente dans la CEE avec un taux de TVA non nul, on considère qu'il s'agit d'une vente intracommunutaire à un assujetti à la TVA et le compte comptable suggéré est le compte comptable de vente classique. SaleEECWithoutVATNumber=Vente dans la CEE avec un taux de TVA nul mais sans numéro de TVA intracommunutaire renseigné dans la fiche du tiers. Nous forçons ainsi le compte comptable de vente classique. Il est nécessaire de renseigner le numéro de TVA intracommunautaire dans la fiche du tiers ou changer le compte comptable de vente si nécessaire. -ForbiddenTransactionAlreadyExported=Forbidden: The transaction has been validated and/or exported. -ForbiddenTransactionAlreadyValidated=Forbidden: The transaction has been validated. +ForbiddenTransactionAlreadyExported=Interdit : La transaction a été validée et/ou exportée. +ForbiddenTransactionAlreadyValidated=Interdit : La transaction a été validée. ## Dictionary Range=Plage de comptes Calculated=Calculé @@ -405,7 +405,7 @@ NoJournalDefined=Pas de journal défini Binded=Lignes liées ToBind=Lignes à lier UseMenuToSetBindindManualy=Lignes non encore liées, utilisez le menu %s pour effectuer la liaison manuellement. -SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Sorry this module is not compatible with the experimental feature of situation invoices +SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Désolé ce module n'est pas compatible avec la fonctionnalité expérimentale des factures de situation ## Import ImportAccountingEntries=Écritures comptables diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 97ce4ebca73..034f105f6d8 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Référence et période en gras sur le PDF -BoldLabelOnPDF=Étiquette en gras sur le PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Association Version=Version Publisher=Editeur @@ -343,7 +343,7 @@ StepNb=Étape %s FindPackageFromWebSite=Rechercher le paquet qui répond à votre besoin (par exemple sur le site web %s). DownloadPackageFromWebSite=Télécharger le package (par exemple depuis le site web officiel %s) UnpackPackageInDolibarrRoot=Décompressez les fichiers packagés dans le répertoire de votre serveur Dolibarr : %s -UnpackPackageInModulesRoot=Pour installer un module externe, décompresser les fichiers de l'archive dans le répertoire du serveur Dolibarr dédié aux modules externes
%s +UnpackPackageInModulesRoot=Pour déployer/installer un module externe, vous devez décompresser/décompresser le fichier archive dans le répertoire serveur dédié aux modules externes :
%s SetupIsReadyForUse=L"installation du module est terminée. Il est cependant nécessaire de procéder à son activation et à son paramétrage dans la page de configuration des modules : %s NotExistsDirect=Le dossier racine alternatif n'est pas défini.
InfDirAlt=Depuis les versions 3, il est possible de définir un dossier racine alternatif. Cela permet d'installer modules et thèmes additionnels dans un répertoire dédié.
Créer un dossier racine alternatif à Dolibarr (ex : custom).
@@ -756,7 +756,7 @@ Permission106=Exporter les expéditions Permission109=Supprimer les expéditions Permission111=Consulter les comptes financiers (comptes bancaires, caisses) Permission112=Créer/modifier montant/supprimer écritures bancaires -Permission113=Setup financial accounts (create, manage categories of bank transactions) +Permission113=Configurer des comptes financiers (créer, gérer des catégories de transactions bancaires) Permission114=Rapprocher les transactions Permission115=Exporter transactions et relevés Permission116=Saisir virements entre comptes @@ -893,11 +893,11 @@ Permission701=Consulter les dons Permission702=Créer/modifier les dons Permission703=Supprimer les dons Permission771=Lire les notes de frais (les vôtres et celle de vos subordonnés) -Permission772=Create/modify expense reports (for you and your subordinates) +Permission772=Créer/modifier les notes de frais (pour vous et vos subordonnés) Permission773=Supprimer les notes de frais Permission775=Approuver les notes de frais Permission776=Payer les notes de frais -Permission777=Read all expense reports (even those of user not subordinates) +Permission777=Lire toutes les notes de frais (même celles des utilisateurs non subordonnés) Permission778=Créer / modifier les notes de frais de tout le monde Permission779=Exporter les notes de frais Permission1001=Consulter les stocks @@ -965,7 +965,7 @@ Permission4001=Lire compétence/emploi/poste Permission4002=Créer/modifier une compétence/un emploi/un poste Permission4003=Supprimer compétence/emploi/poste Permission4020=Lire les évaluations -Permission4021=Create/modify your evaluation +Permission4021=Créer/modifier votre évaluation Permission4022=Valider l'évaluation Permission4023=Supprimer l'évaluation Permission4030=Voir menu de comparaison @@ -976,9 +976,9 @@ Permission10005=Supprimer du contenu de site web Permission20001=Lire les demandes de congé (les vôtres et celle de vos subordonnés) Permission20002=Créer/modifier vos demandes de congé (les vôtres et celle de vos subordonnés) Permission20003=Supprimer les demandes de congé -Permission20004=Read all leave requests (even those of user not subordinates) -Permission20005=Create/modify leave requests for everybody (even those of user not subordinates) -Permission20006=Administer leave requests (setup and update balance) +Permission20004=Lire toutes les demandes de congé (même celles des utilisateurs non subordonnés) +Permission20005=Créer/modifier les demandes de congés pour tout le monde (même celles des utilisateurs non subordonnés) +Permission20006=Administrer les demandes de congés (configurer et mettre à jour le solde) Permission20007=Approuver les demandes de congés Permission23001=Voir les travaux planifiés Permission23002=Créer/Modifier des travaux planifiées @@ -1707,9 +1707,9 @@ MailingDelay=Temps d'attente, en seconde, avant d'envoyer le prochain message NotificationSetup=Configuration du module Notification par email NotificationEMailFrom=Adresse émettrice (From) des emails envoyés lors des notifications FixedEmailTarget=Email fixe cible destinataires -NotificationDisableConfirmMessageContact=Hide the list of recipients (subscribed as contact) of notifications into the confirmation message -NotificationDisableConfirmMessageUser=Hide the list of recipients (subscribed as user) of notifications into the confirmation message -NotificationDisableConfirmMessageFix=Hide the list of recipients (subscribed as global email) of notifications into the confirmation message +NotificationDisableConfirmMessageContact=Masquer la liste des destinataires (abonnés en tant que contact) des notifications dans le message de confirmation +NotificationDisableConfirmMessageUser=Masquer la liste des destinataires (abonnés en tant qu'utilisateur) des notifications dans le message de confirmation +NotificationDisableConfirmMessageFix=Masquez la liste des destinataires (abonnés en tant qu'e-mail global) des notifications dans le message de confirmation ##### Sendings ##### SendingsSetup=Configuration du module Expédition/Livraison SendingsReceiptModel=Modèles de bordereau d'expédition @@ -1901,7 +1901,7 @@ ExpenseReportsRulesSetup=Configuration du module Notes de frais - Règles ExpenseReportNumberingModules=Modèle de numérotation des notes de frais NoModueToManageStockIncrease=Aucun module capable d'assurer l'augmentation de stock en automatique a été activé. La réduction de stock se fera donc uniquement sur mise à jour manuelle. YouMayFindNotificationsFeaturesIntoModuleNotification=Vous pouvez trouver d'autres options pour la notification par Email en activant et configurant le module "Notification". -TemplatesForNotifications=Templates for notifications +TemplatesForNotifications=Modèles de notifications ListOfNotificationsPerUser=Liste des notifications automatiques par utilisateur* ListOfNotificationsPerUserOrContact=Liste des notifications automatiques (sur les évênements métiers) par utilisateur* ou par contact** ListOfFixedNotifications=Liste des notifications emails fixes @@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installer ou créer un module externe à partir de l'a HighlightLinesOnMouseHover=Mettre en surbrillance les lignes de la table lorsque la souris passe au-dessus HighlightLinesColor=Couleur de la ligne de surbrillance lorsque la souris passe au-dessus (mettre 'ffffff' pour ne pas mettre en surbrillance) HighlightLinesChecked=Couleur de la ligne cochée dans les listes (mettre 'ffffff' pour ne pas mettre de surbrillance) +BtnActionColor=Couleur du bouton d'action +TextBtnActionColor=Couleur du texte du bouton d'action TextTitleColor=Couleur du texte du titre de la page LinkColor=Couleur des liens PressF5AfterChangingThis=Appuyez sur la touche CTRL+F5 ou videz le cache de votre navigateur après avoir modifié cette valeur pour que le changement soit effectif @@ -2021,7 +2023,7 @@ MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Ajouter une colonne pour les images dans le MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Largeur de la colonne si une image est ajoutée sur les lignes MAIN_PDF_NO_SENDER_FRAME=Masquer les bordures dans le cadre de l'adresse de l'expéditeur MAIN_PDF_NO_RECIPENT_FRAME=Masquer les bordures dans le cadre de l'adresse du destinataire -MAIN_PDF_HIDE_CUSTOMER_CODE=Masquer le code client +MAIN_PDF_HIDE_CUSTOMER_CODE=Cacher le code client MAIN_PDF_HIDE_SENDER_NAME=Masquer l'expéditeur/le nom de l'entreprise dans le bloc d'adresse PROPOSAL_PDF_HIDE_PAYMENTTERM=Masquer les conditions de paiement PROPOSAL_PDF_HIDE_PAYMENTMODE=Masquer le mode de paiement @@ -2064,14 +2066,14 @@ EmailCollectorConfirmCollect=Voulez-vous exécuter la collecte pour ce collecteu NoNewEmailToProcess=Aucun nouvel email (correspondants aux filtres) à traiter NothingProcessed=Aucune action faite XEmailsDoneYActionsDone=%s e-mails qualifiés, %s e-mails traités avec succès (pour %s enregistrements/actions réalisés) -RecordEvent=Record an event in agenda (with type Email sent or received) -CreateLeadAndThirdParty=Create a lead (and a third party if necessary) -CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation, with no third party otherwise) +RecordEvent=Enregistrer un événement dans l'agenda (avec le type Email envoyé ou reçu) +CreateLeadAndThirdParty=Créer un prospect (et un tiers si nécessaire) +CreateTicketAndThirdParty=Créer un ticket (lié à un tiers si le tiers a été chargé par une opération précédente, sinon sans tiers) CodeLastResult=Dernier code de retour NbOfEmailsInInbox=Nombre de courriels dans le répertoire source LoadThirdPartyFromName=Charger le Tiers en cherchant sur %s (chargement uniquement) LoadThirdPartyFromNameOrCreate=Charger le Tiers en cherchant sur %s (créer si non trouvé) -AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. +AttachJoinedDocumentsToObject=Enregistrez les fichiers joints dans des documents d'objet si la référence d'un objet est trouvée dans le sujet de l'e-mail. WithDolTrackingID=Message d'une conversation initiée par un premier mail envoyé depuis Dolibarr WithoutDolTrackingID=Message d'une conversation initiée par un premier e-mail NON envoyé depuis Dolibarr WithDolTrackingIDInMsgId=Message envoyé depuis Dolibarr @@ -2080,7 +2082,7 @@ CreateCandidature=Créer une candidature FormatZip=Zip MainMenuCode=Code d'entrée du menu (mainmenu) ECMAutoTree=Afficher l'arborescence GED automatique -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=Définissez les règles à utiliser pour extraire ou définir des valeurs.
Exemple d'opérations nécessitant d'extraire un nom de l'objet d'un e-mail :
name=EXTRACT:SUBJECT:Message from company ([^\n] *)
exemple pour des opérations qui créent des objets:
objproperty1=SET:la valeur d'ensemble
objproperty2=SET:une valeur incluant __objproperty1__
objproperty3 = SETIFEMPTY:valeur utilisée si objproperty3 est non déjà défini
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Le nom de ma société est\\s( [^\\s]*)

Utilisez un caractère ; comme séparateur pour extraire ou définir plusieurs propriétés. OpeningHours=Heures d'ouverture OpeningHoursDesc=Entrez ici les heures d'ouverture régulières de votre entreprise. ResourceSetup=Configuration du module Ressource @@ -2126,7 +2128,7 @@ LargerThan=Plus grand que IfTrackingIDFoundEventWillBeLinked=Notez que si un ID de suivi d'un objet est trouvé dans le courrier électronique, ou si l'email est une réponse d'un email déjà collecté et lié à un objet, l'événement sera aussi automatiquement lié à l'objet en question. WithGMailYouCanCreateADedicatedPassword=Avec un compte GMail, si vous avez activé la validation en 2 étapes, il est recommandé de créer un deuxième mot de passe dédié à l'application, au lieu d'utiliser votre propre mot de passe de compte, à partir de https://myaccount.google.com/. EmailCollectorTargetDir=Il peut être souhaitable de déplacer l'e-mail dans un autre tag/répertoire lorsqu'il a été traité avec succès. Définissez simplement une valeur ici pour utiliser cette fonction (N'utilisez PAS de caractères spéciaux dans le nom). Notez que vous devez également utiliser un compte de connexion en lecture/écriture. -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=Vous pouvez utiliser cette action pour utiliser le contenu de l'e-mail pour rechercher et charger un tiers existant dans votre base de données. Le tiers trouvé (ou créé) sera utilisé pour les actions suivantes qui en ont besoin.
Par exemple, si vous souhaitez créer un tiers avec un nom extrait d'une chaîne 'Nom : nom à rechercher' présent dans le corps, utilisez l'email de l'expéditeur comme email, vous pouvez paramétrer le champ comme ceci :
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
EndPointFor=Endpoint pour %s: %s DeleteEmailCollector=Supprimer le collecteur d'email ConfirmDeleteEmailCollector=Êtes-vous sûr de vouloir supprimer ce collecteur d'email ? @@ -2214,5 +2216,7 @@ PDF_USE_1A=Générer les PDF au format PDF/A-1b MissingTranslationForConfKey = Traduction manquante pour %s NativeModules=Modules natifs NoDeployedModulesFoundWithThisSearchCriteria=Aucun module trouvé pour ces critères de recherche -API_DISABLE_COMPRESSION=Disable compression of API responses -EachTerminalHasItsOwnCounter=Each terminal use its own counter. +API_DISABLE_COMPRESSION=Désactiver la compression des réponses API +EachTerminalHasItsOwnCounter=Chaque terminal utilise son propre compteur. +FillAndSaveAccountIdAndSecret=Remplissez et enregistrez d'abord l'ID de compte et le secret +PreviousHash=Hachage précédent diff --git a/htdocs/langs/fr_FR/bills.lang b/htdocs/langs/fr_FR/bills.lang index e797706f660..d06da508e4e 100644 --- a/htdocs/langs/fr_FR/bills.lang +++ b/htdocs/langs/fr_FR/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Rapports de règlements PaymentsAlreadyDone=Versements déjà effectués PaymentsBackAlreadyDone=Remboursements déjà effectués PaymentRule=Mode de paiement -PaymentMode=Mode de règlement -DefaultPaymentMode=Type de paiement par défaut +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Compte bancaire par défaut -PaymentTypeDC=Carte débit/crédit -PaymentTypePP=PayPal -IdPaymentMode=Type de paiement (id) -CodePaymentMode=Type de paiement (code) -LabelPaymentMode=Type de paiement (libellé) -PaymentModeShort=Mode de règlement +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Condition de règlement PaymentConditions=Conditions de règlement PaymentConditionsShort=Conditions de règlement @@ -200,7 +199,7 @@ ConfirmClassifyPaidPartiallyReasonDiscountVatDesc=Ce choix est possible si votre ConfirmClassifyPaidPartiallyReasonAvoirDesc=Ce choix est le choix à prendre si les autres ne sont pas applicables ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=Un mauvais payeur est un client qui refuse de régler sa dette. ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=Ce choix sera celui choisi, dans le cas du paiement incomplet suite au retour d'une partie des produits -ConfirmClassifyPaidPartiallyReasonBankChargeDesc=The unpaid amount is intermediary bank fees, deducted directly from the correct amount paid by the Customer. +ConfirmClassifyPaidPartiallyReasonBankChargeDesc=Le montant impayé est frais de banque intermédiaire , déduit directement du montant correct payé par le Client. ConfirmClassifyPaidPartiallyReasonOtherDesc=Ce choix sera celui choisi dans tout autre cas, par exemple, dans les cas suivants:
- paiement partiel car une partie des produits a été retourné.
- trop réclamé suite à oubli d'une remise
Dans tous les cas, le trop réclamé doit être régularisé en compta et envers le client par un avoir. ConfirmClassifyAbandonReasonOther=Autre ConfirmClassifyAbandonReasonOtherDesc=Ce choix sera celui choisi dans tout autre cas. Par exemple suite à l'intention de créer une facture de remplacement. @@ -241,12 +240,12 @@ RemainderToTake=Montant restant à percevoir RemainderToTakeMulticurrency=Montant restant à encaisser, devise d'origine RemainderToPayBack=Montant restant à rembourser RemainderToPayBackMulticurrency=Montant restant à rembourser, devise d'origine -NegativeIfExcessRefunded=negative if excess refunded +NegativeIfExcessRefunded=négatif si franchise remboursée Rest=Créance AmountExpected=Montant réclamé ExcessReceived=Trop perçu ExcessReceivedMulticurrency=Excédent reçu, devise d'origine -NegativeIfExcessReceived=negative if excess received +NegativeIfExcessReceived=négatif si excédent perçu ExcessPaid=Excédent payé ExcessPaidMulticurrency=Excédent payé, devise d'origine EscompteOffered=Escompte (règl. avt échéance) @@ -450,6 +449,8 @@ PaymentTypeTRA=Traite PaymentTypeShortTRA=Traite PaymentTypeFAC=Facteur PaymentTypeShortFAC=Facteur +PaymentTypeDC=Carte débit/crédit +PaymentTypePP=PayPal BankDetails=Coordonnées bancaires BankCode=Code banque DeskCode=Code guichet diff --git a/htdocs/langs/fr_FR/blockedlog.lang b/htdocs/langs/fr_FR/blockedlog.lang index 5ef44ec366c..d5173143e59 100644 --- a/htdocs/langs/fr_FR/blockedlog.lang +++ b/htdocs/langs/fr_FR/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=Liste des pays où l'utilisation de ce mod OnlyNonValid=Non valide TooManyRecordToScanRestrictFilters=Trop d'enregistrements à analyser / analyser. Veuillez restreindre la liste avec des filtres plus restrictifs. RestrictYearToExport=Restreindre mois / année pour exporter +BlockedLogEnabled=Le système de suivi des événements dans des journaux inaltérables a été activé +BlockedLogDisabled=Le système de suivi des événements dans des journaux inaltérables a été désactivé après certains enregistrements. Nous avons enregistré une empreinte digitale spéciale pour suivre la chaîne comme cassée +BlockedLogDisabledBis=Le système de suivi des événements dans des journaux inaltérables a été désactivé. Ceci est possible car aucun enregistrement n'a encore été fait. diff --git a/htdocs/langs/fr_FR/bookmarks.lang b/htdocs/langs/fr_FR/bookmarks.lang index bc00fd90d23..b449ca7110a 100644 --- a/htdocs/langs/fr_FR/bookmarks.lang +++ b/htdocs/langs/fr_FR/bookmarks.lang @@ -15,7 +15,7 @@ UrlOrLink=URL BehaviourOnClick=Comportement sur sélection de l'URL CreateBookmark=Créer marque-page SetHereATitleForLink=Saisir ici un titre pour le marque-page -UseAnExternalHttpLinkOrRelativeDolibarrLink=Use an external/absolute link (https://externalurl.com) or an internal/relative link (/mypage.php). You can also use phone like tel:0123456. +UseAnExternalHttpLinkOrRelativeDolibarrLink=Utilisez un lien externe/absolu (https://externalurl.com) ou un lien interne/relatif (/mapage.php). Vous pouvez également utiliser un lien de téléphone comme tel:0123456. ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Choisir si le raccourci doit ouvrir la page dans une nouvelle fenêtre ou fenêtre courante BookmarksManagement=Gestion des marque-pages BookmarksMenuShortCut=Ctrl + Maj + m diff --git a/htdocs/langs/fr_FR/boxes.lang b/htdocs/langs/fr_FR/boxes.lang index a73b8965302..801785a4427 100644 --- a/htdocs/langs/fr_FR/boxes.lang +++ b/htdocs/langs/fr_FR/boxes.lang @@ -112,9 +112,9 @@ BoxTitleLastCustomerShipments=Les %s dernières expéditions clients NoRecordedShipments=Aucune expédition client BoxCustomersOutstandingBillReached=Clients dont l'en-cours de facturation est dépassé # Pages -UsersHome=Accueil utilisateurs et groupes -MembersHome=Accueil adhésion -ThirdpartiesHome=Accueil tiers -TicketsHome=Accueil tickets +UsersHome=Accueil des utilisateurs et groupes +MembersHome=Accueil des adhérents +ThirdpartiesHome=Accueil des tiers +TicketsHome=Accueil des tickets AccountancyHome=Espace Comptabilité ValidatedProjects=Projets validés diff --git a/htdocs/langs/fr_FR/categories.lang b/htdocs/langs/fr_FR/categories.lang index 371c644ff1c..feabfac2d3c 100644 --- a/htdocs/langs/fr_FR/categories.lang +++ b/htdocs/langs/fr_FR/categories.lang @@ -24,7 +24,7 @@ NewCategory=Nouveau tag/catégorie ModifCat=Modifier tag/catégorie CatCreated=Tags/catégorie créé(e) CreateCat=Créer tag/catégorie -CreateThisCat=Créer ce(tte) tag/catégorie +CreateThisCat=Créer tag/catégorie NoSubCat=Cette catégorie ne contient aucune sous-catégorie. SubCatOf=Sous-catégorie FoundCats=Tags/catégories trouvé(e)s diff --git a/htdocs/langs/fr_FR/companies.lang b/htdocs/langs/fr_FR/companies.lang index f2d25c00507..6cc6efc18d7 100644 --- a/htdocs/langs/fr_FR/companies.lang +++ b/htdocs/langs/fr_FR/companies.lang @@ -157,15 +157,15 @@ ProfId3CL=- ProfId4CL=- ProfId5CL=- ProfId6CL=- -ProfId1CM=Id. prof. 1 (Trade Register) -ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1CM=Identifiant. prof. 1 (Registre de Commerce) +ProfId2CM=Identifiant. prof. 2 (numéro de contribuable) +ProfId3CM=Identifiant. prof. 3 (Décret de création) ProfId4CM=- ProfId5CM=- ProfId6CM=- -ProfId1ShortCM=Trade Register -ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation +ProfId1ShortCM=Registre du commerce +ProfId2ShortCM=Numéro de contribuable +ProfId3ShortCM=Décret de création ProfId4ShortCM=- ProfId5ShortCM=- ProfId6ShortCM=- diff --git a/htdocs/langs/fr_FR/compta.lang b/htdocs/langs/fr_FR/compta.lang index 9f9ef3eb182..dc883e26c4d 100644 --- a/htdocs/langs/fr_FR/compta.lang +++ b/htdocs/langs/fr_FR/compta.lang @@ -170,9 +170,9 @@ SeeReportInInputOutputMode=Voir %sanalyse des paiements%s pour un calcul SeeReportInDueDebtMode=Voir %sanalyse des documents enregistrés%s pour un calcul basé sur les documents enregistrées même s'ils ne sont pas encore comptabilisés dans le Grand Livre. SeeReportInBookkeepingMode=Voir %sanalyse du grand livre%s pour un rapport basé sur la comptabilité RulesAmountWithTaxIncluded=- Les montants affichés sont les montants taxe incluse -RulesAmountWithTaxExcluded=- Amounts of invoices shown are with all taxes excluded -RulesResultDue=- It includes all invoices, expenses, VAT, donations, salaries, whether they are paid or not.
- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries, the date of end of period is used. -RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries.
- It is based on the payment dates of the invoices, expenses, VAT, donations and salaries. +RulesAmountWithTaxExcluded=- Les montants des factures indiqués sont toutes taxes comprises +RulesResultDue=- Il comprend toutes les factures, dépenses, TVA, dons, salaires, qu'ils soient payés ou non.
- Il est basé sur la date de facturation des factures et sur la date d'échéance des dépenses ou des paiements de taxes. Pour les salaires, la date de fin de période est utilisée. +RulesResultInOut=- Il comprend les paiements réels effectués sur les factures, les dépenses, la TVA et les salaires.
- Il est basé sur les dates de paiement des factures, dépenses, TVA, dons et salaires. RulesCADue=- Il inclut les factures clients dues, qu'elles soient payées ou non.
- Il se base sur la date de facturation de ces factures.
RulesCAIn=- Il inclut les règlements effectivement reçus des factures clients.
- Il se base sur la date de règlement de ces factures
RulesCATotalSaleJournal=Il comprend toutes les lignes du journal de vente. @@ -297,4 +297,4 @@ InvoiceToPay=A payer (dans moins de 15 jours) InvoiceToPay15Days=A payer (d'ici 15 à 30 jours) InvoiceToPay30Days=A payer (dans plus de 30 jours) ConfirmPreselectAccount=Présélectionner le code comptable -ConfirmPreselectAccountQuestion=Are you sure you want to preselect the %s selected lines with this accountancy code ? +ConfirmPreselectAccountQuestion=Êtes-vous sûr de vouloir présélectionner les %s lignes sélectionnées avec ce code comptable ? diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang index ddf7c67ec65..80814e27ed2 100644 --- a/htdocs/langs/fr_FR/errors.lang +++ b/htdocs/langs/fr_FR/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Ce contact est déjà défini comme c ErrorCashAccountAcceptsOnlyCashMoney=Ce compte bancaire est de type caisse et n'accepte que le mode de règlement de type espèce. ErrorFromToAccountsMustDiffers=Les comptes source et destination doivent être différents. ErrorBadThirdPartyName=Nom de tiers incorrect +ForbiddenBySetupRules=Interdit par les règles de configuration ErrorProdIdIsMandatory=Le %s est obligatoire +ErrorAccountancyCodeCustomerIsMandatory=Le code comptable du client %s est obligatoire ErrorBadCustomerCodeSyntax=La syntaxe du code client est incorrecte ErrorBadBarCodeSyntax=Mauvaise syntaxe pour le code barre. Peut être que vous avez défini un mauvais type de code-barres ou que vous avez défini un masque de code à barres pour la numérotation qui ne correspond pas à la valeur scannée. ErrorCustomerCodeRequired=Code client obligatoire @@ -111,7 +113,7 @@ ErrorFailedToLoadRSSFile=Echec de la récupération du flux RSS. Ajoutez la cons ErrorForbidden=Accès refusé.
Vous essayez d'accéder à une page, région ou fonctionnalité d'un module désactivé, ou sans être dans une session authentifiée, ou avec un utilisateur non autorisé. ErrorForbidden2=Les permissions pour cet identifiant peuvent être attribuées par l'administrateur Dolibarr via le menu %s -> %s. ErrorForbidden3=Dolibarr ne semble pas fonctionner au sein d'une session authentifiée. Consultez la documentation d'installation de Dolibarr pour savoir comment gérer les authentifications (htaccess, mod_auth ou autre...). -ErrorForbidden4=Note: clear your browser cookies to destroy existing sessions for this login. +ErrorForbidden4=Remarque : effacez les cookies de votre navigateur pour détruire les sessions existantes pour cette connexion. ErrorNoImagickReadimage=La classe Imagick n'est pas présente sur cette installation de PHP. L'aperçu n'est donc pas disponible. Les administrateurs peuvent désactiver cet onglet dans le menu Configuration - Affichage. ErrorRecordAlreadyExists=Enregistrement déjà existant ErrorLabelAlreadyExists=Ce libellé existe déjà @@ -273,7 +275,8 @@ ErrorWrongFileName=Le nom du fichier ne peut pas contenir __SOMETHING__ ErrorNotInDictionaryPaymentConditions=Pas dans le dictionnaire des conditions de paiement, veuillez modifier. ErrorIsNotADraft=%s n'est pas au statut brouillon ErrorExecIdFailed=Impossible d'exécuter la commande "id" -ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorBadCharIntoLoginName=Caractère non autorisé dans le nom de connexion +ErrorRequestTooLarge=Error, request too large # 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. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requiert au moins %s caractère(s) RequireXStringMax = Requiert %s caractère(s) maximum RequireAtLeastXDigits = Requiert au moins %s caractère(s) RequireXDigitsMax = Requiert %scaractère(s) maximum +RequireValidNumeric = Nécessite une valeur numérique RequireValidEmail = L'adresse email n'est pas valide RequireMaxLength = La longueur doit être inférieure à %s caractères RequireMinLength = La longueur doit être supérieure à %s caractère(s) diff --git a/htdocs/langs/fr_FR/eventorganization.lang b/htdocs/langs/fr_FR/eventorganization.lang index cb1e6ac84fb..496afa7d9e2 100644 --- a/htdocs/langs/fr_FR/eventorganization.lang +++ b/htdocs/langs/fr_FR/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Catégorie à ajouter à des tiers aut EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Catégorie à ajouter à des tiers automatiquement créée lorsque quelqu’un suggère un stand EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Modèle de courriel à envoyer après avoir reçu une suggestion de conférence. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Modèle de courriel à envoyer après avoir reçu une suggestion d'un stand. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Modèle d'e-mail à envoyer suite à l'enregistrement du paiement de la participation +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Modèle d'e-mail à envoyer après le paiement d'une inscription à un stand. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Modèle de courriel à envoyer après paiement d'une inscription à un événement. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Modèle de courriel pour action de masse aux participants -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Modèle de courriel pour action de masse aux intervenants -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filtrer la liste de sélection des tiers dans la fiche/le formulaire de création des participants avec/selon la catégorie -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filtrer la liste de sélection des tiers dans la fiche/le formulaire de création des participants avec le type de client +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Modèle d'e-mail à utiliser lors de l'envoi d'e-mails de la massaction "Envoyer des e-mails" aux intervenants +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Modèle d'e-mail à utiliser lors de l'envoi d'e-mails depuis la massaction "Envoyer des e-mails" sur la liste des participants +EVENTORGANIZATION_FILTERATTENDEES_CAT = Dans le formulaire pour créer/ajouter un participant, limite la liste des tiers aux tiers de la catégorie +EVENTORGANIZATION_FILTERATTENDEES_TYPE = Dans le formulaire pour créer/ajouter un participant, limite la liste des tiers aux tiers ayant la nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Règlement de votre stand EventOrganizationEmailRegistrationPayment = Inscription à un événement EventOrganizationMassEmailAttendees = Communication aux participants EventOrganizationMassEmailSpeakers = Communication aux conférenciers +ToSpeakers=Aux conférenciers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Prix de l'inscription PriceOfRegistrationHelp=Montant à payer pour l'enregistrement d'un participant à l'événement PriceOfBooth=Prix d’inscription pour un stand PriceOfBoothHelp=Prix d’inscription pour un stand -EventOrganizationICSLink=Lien ICS des événements +EventOrganizationICSLink=Lien ICS pour les conférences ConferenceOrBoothInformation=Renseignements sur la conférence ou le stand Attendees=Participants ListOfAttendeesOfEvent=Liste des participant à l'événement DownloadICSLink = Télécharger le lien ICS -EVENTORGANIZATION_SECUREKEY = Clé sécurisée pour le lien d’inscription public à une conférence +EVENTORGANIZATION_SECUREKEY = Graine pour sécuriser la clé de la page d'inscription publique pour suggérer une conférence SERVICE_BOOTH_LOCATION = Service utilisé pour la ligne de facture concernant l'emplacement d'un stand -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service utilisé pour la ligne de facture concernant l'abonnement d'un participant à une conférence +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service utilisé pour la ligne de facture relative à l'abonnement d'un participant à un événement NbVotes=Nombre de votes # # Status @@ -162,5 +163,5 @@ RegistrationAndPaymentWereAlreadyRecorder=Une inscription et un règlement sont EmailAttendee=E-mail du participant EmailCompanyForInvoice=E-mail de la société pour la facturation (si différent du participant) ErrorSeveralCompaniesWithEmailContactUs=Plusieurs entreprises avec cet email ont été trouvées donc nous ne pouvons pas valider automatiquement votre inscription. Veuillez nous contacter à %s pour une validation manuelle -ErrorSeveralCompaniesWithNameContactUs=Several companies with this name has been found so we can't validate automaticaly your registration. Please contact us at %s for a manual validation +ErrorSeveralCompaniesWithNameContactUs=Plusieurs sociétés portant ce nom ont été trouvées, nous ne pouvons donc pas valider automatiquement votre inscription. Veuillez nous contacter à %s pour une validation manuelle NoPublicActionsAllowedForThisEvent=Aucune action publique n'est ouverte au public pour cet événement diff --git a/htdocs/langs/fr_FR/holiday.lang b/htdocs/langs/fr_FR/holiday.lang index 14de04c612a..061eb3b5c77 100644 --- a/htdocs/langs/fr_FR/holiday.lang +++ b/htdocs/langs/fr_FR/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Vacances à approuver NobodyHasPermissionToValidateHolidays=Aucun utilisateur ne dispose des permissions pour valider les demandes de congés HolidayBalanceMonthlyUpdate=Mise à jour mensuelle du solde des congés XIsAUsualNonWorkingDay=%s est généralement un jour NON ouvrable +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=La demande de congé %s doit être brouillon, annulée ou refusée pour être supprimée diff --git a/htdocs/langs/fr_FR/install.lang b/htdocs/langs/fr_FR/install.lang index 0ed0d154752..81122d1b5d3 100644 --- a/htdocs/langs/fr_FR/install.lang +++ b/htdocs/langs/fr_FR/install.lang @@ -21,7 +21,7 @@ ErrorPHPDoesNotSupportCurl=Votre version de PHP ne supporte pas l'extension Curl ErrorPHPDoesNotSupportCalendar=Votre installation de PHP ne supporte pas les extensions php calendar. ErrorPHPDoesNotSupportUTF8=Ce PHP ne prend pas en charge les fonctions UTF8. Résolvez le problème avant d'installer Dolibarr car il ne pourra pas fonctionner correctement. ErrorPHPDoesNotSupportIntl=Votre installation de PHP ne supporte pas les fonctions Intl. -ErrorPHPDoesNotSupportMbstring=Your PHP installation does not support mbstring functions. +ErrorPHPDoesNotSupportMbstring=Votre installation PHP ne prend pas en charge les fonctions mbstring. ErrorPHPDoesNotSupportxDebug=Votre installation PHP ne prend pas en charge les fonctions d'extension de débogage. ErrorPHPDoesNotSupport=Votre installation PHP ne prend pas en charge les fonctions %s. ErrorDirDoesNotExists=Le répertoire %s n'existe pas ou n'est pas accessible. diff --git a/htdocs/langs/fr_FR/knowledgemanagement.lang b/htdocs/langs/fr_FR/knowledgemanagement.lang index 63ee4cb1b52..28d69785450 100644 --- a/htdocs/langs/fr_FR/knowledgemanagement.lang +++ b/htdocs/langs/fr_FR/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Atribut supplémentaires (articles) GroupOfTicket=Groupe de tickets YouCanLinkArticleToATicketCategory=Vous pouvez lier un article à un groupe de tickets (ainsi l'article sera proposé lors de la qualification de nouveaux tickets) SuggestedForTicketsInGroup=Suggéré pour les tickets lorsque le groupe est + +SetObsolete=Définir comme obsolète +ConfirmCloseKM=Confirmez-vous la fermeture de cet article comme obsolète ? +ConfirmReopenKM=Souhaitez-vous remettre cet article au statut "Validé" ? diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang index 293d4f9de97..63c5192a01f 100644 --- a/htdocs/langs/fr_FR/main.lang +++ b/htdocs/langs/fr_FR/main.lang @@ -88,7 +88,7 @@ FileWasNotUploaded=Un fichier a été sélectionné pour attachement mais n'a pa NbOfEntries=Nb d'entrées GoToWikiHelpPage=Consulter l'aide (nécessite un accès internet) GoToHelpPage=Consulter l'aide -DedicatedPageAvailable=Dedicated help page related to your current screen +DedicatedPageAvailable=Page d'aide dédiée liée à votre écran actuel HomePage=Page d'accueil RecordSaved=Enregistrement sauvegardé RecordDeleted=Enregistrement supprimé @@ -212,8 +212,8 @@ User=Utilisateur Users=Utilisateurs Group=Groupe Groups=Groupes -UserGroup=User group -UserGroups=User groups +UserGroup=Groupe d'utilisateurs +UserGroups=Groupes d'utilisateurs NoUserGroupDefined=Pas de groupe utilisateur défini Password=Mot de passe PasswordRetype=Retaper le mot de passe @@ -1028,7 +1028,7 @@ SearchIntoUsers=Utilisateurs SearchIntoProductsOrServices=Produits ou services SearchIntoBatch=Lots / Séries SearchIntoProjects=Projets -SearchIntoMO=Ordres de fabrication +SearchIntoMO=Ordres Fabrication SearchIntoTasks=Tâches SearchIntoCustomerInvoices=Factures clients SearchIntoSupplierInvoices=Factures fournisseur @@ -1161,6 +1161,6 @@ Properties=Attributs hasBeenValidated=%s a été validé ClientTZ=Fuseau horaire client (utilisateur) NotClosedYet=Pas encore fermé -ClearSignature=Reset signature +ClearSignature=Réinitialiser la signature CanceledHidden=Annulé masqué CanceledShown=Annulé affiché diff --git a/htdocs/langs/fr_FR/modulebuilder.lang b/htdocs/langs/fr_FR/modulebuilder.lang index 587c81c2326..e3abfdb6210 100644 --- a/htdocs/langs/fr_FR/modulebuilder.lang +++ b/htdocs/langs/fr_FR/modulebuilder.lang @@ -98,7 +98,7 @@ MenusDefDescTooltip=Les menus fournis par votre module / application sont défin DictionariesDefDescTooltip=Les dictionnaires fournis par votre module/application sont définis dans le tableau $this->dictionaries dans le fichier descripteur de module. Vous pouvez modifier manuellement ce fichier ou utiliser l'éditeur intégré.

Remarque: une fois définis (et module réactivé), les dictionnaires sont également visibles dans la zone de configuration par les utilisateurs administrateurs sur %s. PermissionsDefDescTooltip=Les autorisations fournies par votre module / application sont définies dans le tableau $this->rights dans le fichier descripteur de module. Vous pouvez modifier manuellement ce fichier ou utiliser l'éditeur intégré.

Remarque: une fois définies (et le module réactivé), les autorisations sont visibles dans la configuration par défaut des autorisations %s. HooksDefDesc=Définissez dans la propriété module_parts ['hooks'] , dans le descripteur de module, le contexte des hooks à gérer (la liste des contextes peut être trouvée par une recherche sur ' initHooks (' dans le code du noyau).
Editez le fichier hook pour ajouter le code de vos fonctions hookées (les fonctions hookables peuvent être trouvées par une recherche sur ' executeHooks ' dans le code core). -TriggerDefDesc=Define in the trigger file the code that you want to execute when a business event external to your module is executed (events triggered by other modules). +TriggerDefDesc=Définissez dans le fichier trigger le code que vous souhaitez exécuter lors de l'exécution d'un événement métier externe à votre module (événements déclenchés par d'autres modules). SeeIDsInUse=Voir les IDs utilisés dans votre installation SeeReservedIDsRangeHere=Voir la plage des ID réservés ToolkitForDevelopers=Boîte à outils pour développeurs Dolibarr @@ -143,5 +143,5 @@ AsciiToHtmlConverter=Convertisseur Ascii en HTML AsciiToPdfConverter=Convertisseur Ascii en PDF TableNotEmptyDropCanceled=La table n’est pas vide. La suppression a été annulée. ModuleBuilderNotAllowed=Le module builder est activé mais son accès n'est pas autorisé pour votre utilisateur -ImportExportProfiles=Importer et exporter des profils +ImportExportProfiles=Profils d'import et d'export ValidateModBuilderDesc=Mettez 1 si ce champ doit être validé avec $this->validateField() ou 0 si la validation est requise diff --git a/htdocs/langs/fr_FR/mrp.lang b/htdocs/langs/fr_FR/mrp.lang index 1820abd2ccd..abe0a3b2e55 100644 --- a/htdocs/langs/fr_FR/mrp.lang +++ b/htdocs/langs/fr_FR/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Êtes-vous sûr de vouloir cloner cette nomenclature ConfirmCloneMo=Êtes-vous sûr de vouloir cloner l'Ordre de Fabrication %s? ManufacturingEfficiency=Efficacité de fabrication ConsumptionEfficiency=Efficacité de la consommation -ValueOfMeansLoss=Une valeur de 0,95 signifie une perte moyenne de 5%% pendant la production +ValueOfMeansLoss=Une valeur de 0,95 signifie une moyenne de 5%% de perte lors de la fabrication ou du désassemblage ValueOfMeansLossForProductProduced=Une valeur de 0,95 signifie une moyenne de 5%% de perte de produit fabriqué DeleteBillOfMaterials=Supprimer la nomenclature DeleteMo=Supprimer l'ordre de fabrication @@ -105,5 +105,5 @@ WorkstationArea=Espace Poste de travail Machines=Machines THMEstimatedHelp=Ce taux permet de définir un coût prévisionnel de l'article BOM=Nomenclature -CollapseBOMHelp=You can define the default display of the details of the nomenclature in the configuration of the BOM module +CollapseBOMHelp=Vous pouvez définir l'affichage par défaut des détails de la nomenclature dans la configuration du module BOM MOAndLines=Ordres de fabrication et lignes diff --git a/htdocs/langs/fr_FR/other.lang b/htdocs/langs/fr_FR/other.lang index 9596adae411..87237e4acef 100644 --- a/htdocs/langs/fr_FR/other.lang +++ b/htdocs/langs/fr_FR/other.lang @@ -258,10 +258,10 @@ PassEncoding=Codage du mot de passe PermissionsAdd=Permissions ajoutés PermissionsDelete=Permissions retirées YourPasswordMustHaveAtLeastXChars=Votre mot de passe doit avoir au moins %s caractères -PasswordNeedAtLeastXUpperCaseChars=The password need at least %s upper case chars -PasswordNeedAtLeastXDigitChars=The password need at least %s numeric chars -PasswordNeedAtLeastXSpecialChars=The password need at least %s special chars -PasswordNeedNoXConsecutiveChars=The password must not have %s consecutive similar chars +PasswordNeedAtLeastXUpperCaseChars=Le mot de passe nécessite au moins %s caractères majuscules +PasswordNeedAtLeastXDigitChars=Le mot de passe nécessite au moins %s caractères numériques +PasswordNeedAtLeastXSpecialChars=Le mot de passe nécessite au moins %s caractères spéciaux +PasswordNeedNoXConsecutiveChars=Le mot de passe ne doit pas avoir %s caractères similaires consécutifs YourPasswordHasBeenReset=Votre mot de passe a été réinitialisé avec succès ApplicantIpAddress=Adresse IP du demandeur SMSSentTo=SMS envoyé à %s @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Projet créé par le collecteur de courrier élec TicketCreatedByEmailCollector=Ticket créé par le collecteur de courrier électronique à partir du courrier électronique MSGID %s OpeningHoursFormatDesc=Utilisez un - pour séparer les heures d'ouverture et de fermeture.
Utilisez un espace pour entrer différentes plages.
Exemple: 8-12 14-18 SuffixSessionName=Suffixe pour le nom de la session +LoginWith=Connectez-vous avec %s ##### Export ##### ExportsArea=Espace exports diff --git a/htdocs/langs/fr_FR/partnership.lang b/htdocs/langs/fr_FR/partnership.lang index 2ec5bde1d87..845bf4ff36c 100644 --- a/htdocs/langs/fr_FR/partnership.lang +++ b/htdocs/langs/fr_FR/partnership.lang @@ -58,7 +58,7 @@ ManagePartnership=Gestion de partenariat BacklinkNotFoundOnPartnerWebsite=Lien de retour non trouvé sur le site web partenaire ConfirmClosePartnershipAsk=Êtes-vous sûr de vouloir annuler ce partenariat ? PartnershipType=Type de partenariat -PartnershipRefApproved=Partnership %s approved +PartnershipRefApproved=Partenariat %s approuvé # # Template Mail diff --git a/htdocs/langs/fr_FR/productbatch.lang b/htdocs/langs/fr_FR/productbatch.lang index 2283a5c9785..e1883f5bba0 100644 --- a/htdocs/langs/fr_FR/productbatch.lang +++ b/htdocs/langs/fr_FR/productbatch.lang @@ -30,7 +30,7 @@ ManageLotMask=Masque personnalisé CustomMasks=Option pour définir un masque de numérotation différent pour chaque produit BatchLotNumberingModules=Règle de numérotation pour la génération automatique de numéro de lot BatchSerialNumberingModules=Règle de numérotation pour la génération automatique de numéro de série (pour les produits avec propriété 1 lot/série unique pour chaque produit) -QtyToAddAfterBarcodeScan=Qty to %s for each barcode/lot/serial scanned +QtyToAddAfterBarcodeScan=Qté à %s pour chaque code-barres/lot/série scanné LifeTime=Durée de vie (en jours) EndOfLife=Fin d'utilisation ManufacturingDate=Date de fabrication @@ -42,4 +42,4 @@ HideLots=Masquer les lots #Traceability - qc status OutOfOrder=Hors d'usage InWorkingOrder=En état de marche -ToReplace=Replace +ToReplace=Remplacer diff --git a/htdocs/langs/fr_FR/products.lang b/htdocs/langs/fr_FR/products.lang index 570fa7d339f..a9ae791ec8d 100644 --- a/htdocs/langs/fr_FR/products.lang +++ b/htdocs/langs/fr_FR/products.lang @@ -402,11 +402,12 @@ AmountUsedToUpdateWAP=Montant à utiliser pour mettre à jour le prix moyen pond PMPValue=Prix moyen pondéré (PMP) PMPValueShort=PMP mandatoryperiod=Plage de date obligatoire -mandatoryPeriodNeedTobeSet=Note: Period (start and end date) must be defined +mandatoryPeriodNeedTobeSet=Remarque : La période (date de début et de fin) doit être définie mandatoryPeriodNeedTobeSetMsgValidate=Un service requiert une date de début et une date de fin -mandatoryHelper=Check this if you want a message to the user when creating / validating an invoice, commercial proposal, sales order without entering a start and end date on lines with this service.
Note that the message is a warning and not a blocking error. +mandatoryHelper=Cochez cette case si vous souhaitez un message à l'utilisateur lors de la création/validation d'une facture, proposition commerciale, commande client sans saisir de date de début et de fin sur les lignes avec ce service.
Notez que le message est un avertissement et non une erreur bloquante. DefaultBOM=Nomenclature par défaut DefaultBOMDesc=La nomenclature par défaut qu'il est recommandé d'utiliser pour fabriquer ce produit. Ce champ ne peut être défini que si la nature du produit est '%s'. Rank=Classement -SwitchOnSaleStatus=Switch on sale status -SwitchOnPurchaseStatus=Switch on purchase status +SwitchOnSaleStatus=Basculer le statut En vente +SwitchOnPurchaseStatus=Basculer le statut En achat +StockMouvementExtraFields= Champs supplémentaires (mouvement de stock) diff --git a/htdocs/langs/fr_FR/projects.lang b/htdocs/langs/fr_FR/projects.lang index 1b3c6ec7662..d969e7472cc 100644 --- a/htdocs/langs/fr_FR/projects.lang +++ b/htdocs/langs/fr_FR/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Saisie par mois InputDetail=Saisir le détail TimeAlreadyRecorded=C'est le temps passé déjà enregistré pour cette tâche/jour et pour l'utilisateur %s ProjectsWithThisUserAsContact=Projets avec cet utilisateur comme contact +ProjectsWithThisContact=Projets avec ce contact TasksWithThisUserAsContact=Tâches assignées à cet utilisateur ResourceNotAssignedToProject=Non assigné au projet ResourceNotAssignedToTheTask=Non assigné à la tache @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Remarque : les projets existant SelectLinesOfTimeSpentToInvoice=Sélectionnez les lignes de temps passé non facturées, puis l'action groupée "Générer la facture" pour les facturer ProjectTasksWithoutTimeSpent=Tâches de projet sans temps consommé FormForNewLeadDesc=Veuillez remplir ce formulaire de contact ou écrivez un e-mail à %s. +ProjectsHavingThisContact=Projets ayant ce contact StartDateCannotBeAfterEndDate=La date de fin ne peux être avant la date de début diff --git a/htdocs/langs/fr_FR/receptions.lang b/htdocs/langs/fr_FR/receptions.lang index 78993666793..30ac8e985bc 100644 --- a/htdocs/langs/fr_FR/receptions.lang +++ b/htdocs/langs/fr_FR/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Configuration de la réception de produits +ReceptionDescription=Gestion de la réception des fournisseurs (Créer des documents de réception) +ReceptionsSetup=Configuration de la réception des fournisseurs RefReception=Réf. Réception Reception=Réception Receptions=Réceptions diff --git a/htdocs/langs/fr_FR/salaries.lang b/htdocs/langs/fr_FR/salaries.lang index 0ac91939796..51a430cc9b6 100644 --- a/htdocs/langs/fr_FR/salaries.lang +++ b/htdocs/langs/fr_FR/salaries.lang @@ -24,4 +24,4 @@ SalariesStatistics=Statistiques SalariesAndPayments=Salaires et paiements ConfirmDeleteSalaryPayment=Voulez-vous supprimer ce paiement de salaire ? FillFieldFirst=Remplissez d'abord le champ de l'employé -UpdateAmountWithLastSalary=Set amount with last salary +UpdateAmountWithLastSalary=Fixer le montant avec le dernier salaire diff --git a/htdocs/langs/fr_FR/stocks.lang b/htdocs/langs/fr_FR/stocks.lang index 0adfc7d7c69..a907598ff61 100644 --- a/htdocs/langs/fr_FR/stocks.lang +++ b/htdocs/langs/fr_FR/stocks.lang @@ -241,7 +241,7 @@ StockAtDatePastDesc=Vous pouvez voir ici le stock (stock réel) à une date donn StockAtDateFutureDesc=Vous pouvez voir ici le stock (stock virtuel) à une date donnée dans le futur CurrentStock=Stock actuel InventoryRealQtyHelp=Définissez la valeur sur 0 pour réinitialiser la quantité
Gardez le champ vide ou supprimez la ligne pour qu'elle reste inchangé -UpdateByScaning=Complete real qty by scaning +UpdateByScaning=Complétez la quantité réelle en scannant UpdateByScaningProductBarcode=Mettre à jour par scan (code-barres produit) UpdateByScaningLot=Mise à jour par scan (code barres lot/série) DisableStockChangeOfSubProduct=Désactiver les mouvements de stock des composants pour ce mouvement de stock. @@ -254,20 +254,20 @@ ReOpen=Réouvrir ConfirmFinish=Confirmez-vous la clôture de l'inventaire ? Cela générera tous les mouvements de stock pour mettre à jour votre stock à la quantité réelle que vous avez entrée dans l'inventaire. ObjectNotFound=%s introuvable MakeMovementsAndClose=Générer les mouvements et fermer -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Remplacer la quantité réelle par la quantité attendue ShowAllBatchByDefault=Par défaut, afficher les détails des lots sur l'onglet "stock" du produit CollapseBatchDetailHelp=Vous pouvez définir l'affichage par défaut des détails du lot dans la configuration du module de stocks ErrorWrongBarcodemode=Mode code-barres inconnu ProductDoesNotExist=Le produit n'existe pas -ErrorSameBatchNumber=Several record for the batch number were found in the inventory sheet. No way to know which one to increase. +ErrorSameBatchNumber=Plusieurs enregistrement pour le numéro de lot ont été trouvés dans la fiche d'inventaire. Pas moyen de savoir lequel augmenter. ProductBatchDoesNotExist=Le produit avec ce lot/série n'existe pas ProductBarcodeDoesNotExist=Le produit avec ce code-barres n'existe pas WarehouseId=ID entrepôt WarehouseRef=Réf entrepôt -SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +SaveQtyFirst=Enregistrez d'abord les quantités réelles inventoriées, avant de demander la création du mouvement de stock. InventoryStartedShort=En cours -ErrorOnElementsInventory=Operation canceled for the following reason: -ErrorCantFindCodeInInventory=Can't find the following code in inventory -QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. -StockChangeDisabled=Change on stock disabled -NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ErrorOnElementsInventory=Opération annulée pour la raison suivante : +ErrorCantFindCodeInInventory=Impossible de trouver le code suivant dans l'inventaire +QtyWasAddedToTheScannedBarcode=Succès !! La quantité a été ajoutée à tous les codes-barres demandés. Vous pouvez fermer l'outil Scanner. +StockChangeDisabled=Changement sur stock désactivé +NoWarehouseDefinedForTerminal=Aucun entrepôt défini pour le terminal diff --git a/htdocs/langs/fr_FR/stripe.lang b/htdocs/langs/fr_FR/stripe.lang index 2506c3f7d9c..15837306612 100644 --- a/htdocs/langs/fr_FR/stripe.lang +++ b/htdocs/langs/fr_FR/stripe.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - stripe StripeSetup=Configuration module Stripe -StripeDesc=Offer your customers an online payment page for payments with credit/debit cards via Stripe. This can be used to allow your customers to make ad-hoc payments or for payments related to a particular Dolibarr object (invoice, order, ...) +StripeDesc=Offrez à vos clients une page de paiement en ligne pour les paiements par cartes de crédit/débit via Stripe . Cela peut être utilisé pour permettre à vos clients d'effectuer des paiements ponctuels ou pour des paiements liés à un objet Dolibarr particulier (facture, commande, ...) StripeOrCBDoPayment=Payez avec une carte bancaire ou Stripe FollowingUrlAreAvailableToMakePayments=Les URL suivantes sont disponibles pour permettre à un client de faire un paiement PaymentForm=Formulaire de paiement diff --git a/htdocs/langs/fr_FR/ticket.lang b/htdocs/langs/fr_FR/ticket.lang index b43d2574baf..91850194533 100644 --- a/htdocs/langs/fr_FR/ticket.lang +++ b/htdocs/langs/fr_FR/ticket.lang @@ -321,4 +321,4 @@ BoxNumberOfTicketByDay=Nombre de nouveaux tickets par jour BoxNewTicketVSClose=Nombre de nouveaux tickets par rapport aux tickets fermés (aujourd'hui) TicketCreatedToday=Ticket créé aujourd'hui TicketClosedToday=Ticket fermé aujourd'hui -KMFoundForTicketGroup=We found topics and FAQs that may answers your question, thanks to check them before submitting the ticket +KMFoundForTicketGroup=Nous avons trouvé des sujets et des FAQ pouvant répondre à votre question, merci de les consulter avant de soumettre le ticket diff --git a/htdocs/langs/fr_FR/website.lang b/htdocs/langs/fr_FR/website.lang index bce2f1a72c9..53e07d0dd2e 100644 --- a/htdocs/langs/fr_FR/website.lang +++ b/htdocs/langs/fr_FR/website.lang @@ -31,7 +31,7 @@ AddWebsite=Ajouter site web Webpage=Page/container Web AddPage=Ajouter une page/container PageContainer=Page -PreviewOfSiteNotYetAvailable=L'aperçu de votre site web %s n'est pas encore disponible. Vous devez d'abord " Importer un modèle de site Web complet " ou simplement " Ajouter une page/un conteneur ". +PreviewOfSiteNotYetAvailable=L'aperçu de votre site web %s n'est pas encore disponible. Vous devez d'abord " Importer un modèle de site Web complet " ou simplement " Ajouter une page/un conteneur ". RequestedPageHasNoContentYet=La page demandée avec l'id=%s ne présente encore aucun contenu ou le fichier cache .tpl.php a été supprimé. Ajoutez du contenu à la page pour résoudre cela. SiteDeleted=Site Web '%s' supprimé PageContent=Page/Container diff --git a/htdocs/langs/fr_FR/withdrawals.lang b/htdocs/langs/fr_FR/withdrawals.lang index d66b9f47032..fae9c7e2f78 100644 --- a/htdocs/langs/fr_FR/withdrawals.lang +++ b/htdocs/langs/fr_FR/withdrawals.lang @@ -48,7 +48,7 @@ ThirdPartyBankCode=Code banque du tiers NoInvoiceCouldBeWithdrawed=Aucune facture traitée avec succès. Vérifiez que les factures sont sur les sociétés avec un BAN par défaut valide et que le BAN a un RUM avec le mode %s . WithdrawalCantBeCreditedTwice=Le virement est déjà marqué comme étant crédité ; cela ne peut pas être fait deux fois, cela créerait potentiellement des paiements et des saisies bancaires en double. ClassCredited=Classer crédité -ClassDebited=Classify debited +ClassDebited=Classer Débité ClassCreditedConfirm=Êtes-vous sûr de vouloir classer ce bon de prélèvement comme crédité sur votre compte bancaire ? TransData=Date de transmission TransMetod=Méthode de transmission @@ -117,7 +117,7 @@ WithdrawRequestErrorNilAmount=Impossible de créer une demande de prélèvement SepaMandate=Mandat prélèvement SEPA SepaMandateShort=Mandat SEPA PleaseReturnMandate=Merci de retourner ce formulaire mandat par email à %s ou par courrier à -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=En signant ce formulaire de mandat, vous autorisez (A) %s à envoyer des instructions à votre banque pour débiter votre compte et (B) votre banque à débiter votre compte conformément aux instructions de %s. Dans le cadre de vos droits, vous avez droit à un remboursement de votre banque selon les termes et conditions de votre accord avec votre banque. Vos droits concernant le mandat ci-dessus sont expliqués dans une déclaration que vous pouvez obtenir auprès de votre banque. CreditorIdentifier=Identifiant créditeur CreditorName=Nom du créditeur SEPAFillForm=(B) Remplir tous les champs marqués * @@ -152,5 +152,5 @@ ModeWarning=Option mode réel non établi, nous allons arrêter après cette sim ErrorCompanyHasDuplicateDefaultBAN=La société avec l'identifiant %s a plus d'un compte bancaire par défaut. Aucun moyen de savoir lequel utiliser. ErrorICSmissing=ICS manquant pour le compte bancaire %s TotalAmountOfdirectDebitOrderDiffersFromSumOfLines=Le montant total de l'ordre de prélèvement diffère de la somme des lignes -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 +WarningSomeDirectDebitOrdersAlreadyExists=Attention : Il y a déjà des ordres de prélèvement automatique en attente (%s) demandés pour un montant de %s +WarningSomeCreditTransferAlreadyExists=Attention : Il y a déjà des virements en attente (%s) demandés pour un montant de %s diff --git a/htdocs/langs/fr_FR/workflow.lang b/htdocs/langs/fr_FR/workflow.lang index d20027ca42b..02c641616fe 100644 --- a/htdocs/langs/fr_FR/workflow.lang +++ b/htdocs/langs/fr_FR/workflow.lang @@ -13,10 +13,14 @@ descWORKFLOW_INVOICE_CLASSIFY_BILLED_PROPAL=Classer la/les proposition(s) commer descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Classer la/les commande(s) client(s) source(s) facturée(s) à la validation de la facture client (et si le montant de la facture est le même que le montant total des commandes liées) descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Classer la/les commande(s) client(s) source(s) à Facturée quand une facture client est passée à Payé (et si le montant de la facture est identique à la somme des commandes sources) descWORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING=Classer la commande source à expédiée à la validation d'une expédition (et si les quantités expédiées dans le bon d'expédition sont les même que dans la commande mise à jour) -descWORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING_CLOSED=Classer la commande client source liée comme expédiée lorsqu'une expédition est fermée (et si la quantité expédiée par toutes les expéditions est la même que dans la commande à mettre à jour) -# Autoclassify purchase order +descWORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING_CLOSED=Classer la commande client source liée à expédiée lorsqu'une expédition est fermée (et si la quantité expédiée par toutes les expéditions est la même que dans la commande à mettre à jour) +# Autoclassify purchase proposal descWORKFLOW_ORDER_CLASSIFY_BILLED_SUPPLIER_PROPOSAL=Classer la ou les proposition(s) commerciale(s) fournisseur sources facturées quand une facture fournisseur est validée (et si le montant de la facture est le même que le total des propositions sources liées) +# Autoclassify purchase order descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER=Classer la ou les commande(s) fournisseur(s) de source(s) à facturée(s) lorsque la facture fournisseur est validée (et si le montant de la facture est le même que le montant total des commandes liées) +descWORKFLOW_ORDER_CLASSIFY_RECEIVED_RECEPTION=Classer le bon de commande source liée comme reçu lorsqu'une réception est validée (et si la quantité reçue par toutes les réceptions est la même que dans le bon de commande à mettre à jour) +descWORKFLOW_ORDER_CLASSIFY_RECEIVED_RECEPTION_CLOSED=Classer le bon de commande source lié comme reçu lorsqu'une réception est clôturée (et si la quantité reçue par toutes les réceptions est la même que dans le bon de commande à mettre à jour) +# Autoclassify purchase invoice descWORKFLOW_BILL_ON_RECEPTION=Classer les réceptions en "facturées" lorsqu'une commande fournisseur liée est validée # Autoclose intervention descWORKFLOW_TICKET_CLOSE_INTERVENTION=Fermer toutes les interventions liées au ticket lorsqu'un ticket est fermé diff --git a/htdocs/langs/fr_GA/admin.lang b/htdocs/langs/fr_GA/admin.lang index c090f334335..10a19479a6e 100644 --- a/htdocs/langs/fr_GA/admin.lang +++ b/htdocs/langs/fr_GA/admin.lang @@ -1,3 +1,7 @@ # Dolibarr language file - Source file is en_US - admin 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/gl_ES/accountancy.lang b/htdocs/langs/gl_ES/accountancy.lang index c17fbb999c3..b5b3a8afad6 100644 --- a/htdocs/langs/gl_ES/accountancy.lang +++ b/htdocs/langs/gl_ES/accountancy.lang @@ -278,8 +278,8 @@ DescVentilExpenseReportMore=Se configura as contas contables dos tipos de inform DescVentilDoneExpenseReport=Consulte aquí as liñas de informes de gastos e as súas contas contables Closure=Peche anual -DescClosure=Consult here the number of movements by month who are not validated & fiscal years already open -OverviewOfMovementsNotValidated=Step 1/ Overview of movements not validated. (Necessary to close a fiscal year) +DescClosure=Consulte aquí o número de movementos por mes que non están validados e exercicios fiscais xa abertos +OverviewOfMovementsNotValidated=Paso 1/ Visión xeral dos movementos non validados. (Preciso para pechar un exercicio fiscal) AllMovementsWereRecordedAsValidated=Todos os movementos foron rexistrados e validados NotAllMovementsCouldBeRecordedAsValidated=Non todos os movementos puideron ser rexistrados e validados ValidateMovements=Validar os movementos diff --git a/htdocs/langs/gl_ES/admin.lang b/htdocs/langs/gl_ES/admin.lang index de5ae10ff4d..27692650270 100644 --- a/htdocs/langs/gl_ES/admin.lang +++ b/htdocs/langs/gl_ES/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Referencia e período en negrita en PDF -BoldLabelOnPDF=Etiqueta en negrita en PDF +BoldRefAndPeriodOnPDF=Imprima a referencia e o período do elemento do produto en PDF +BoldLabelOnPDF=Imprima a etiqueta do produto en negrita en PDF Foundation=Fundación Version=Versión Publisher=Editor @@ -343,7 +343,7 @@ StepNb=Paso %s FindPackageFromWebSite=Busca o paquete que proporciona a funcionalidade que precisa (por exemplo no sitio web oficial %s) DownloadPackageFromWebSite=Descargue o paquete (por exemplo dende o sitio web oficial %s). UnpackPackageInDolibarrRoot=Descomprimir os ficheiros comprimidos no directorio do servidor adicado a Dolibarr: %s -UnpackPackageInModulesRoot=Para instalar un módulo externo, descomprima o ficheiro no directorio do servidor adicado aos módulos externos:
%s +UnpackPackageInModulesRoot=Para implementar/instalar un módulo externo, debe desempaquetar/descomprimir o ficheiro de arquivo no directorio do servidor adicado aos módulos externos:
%s SetupIsReadyForUse=A instalación do módulo rematou. Porén, debe habilitar e configurar o módulo na súa aplicación, indo á páxina para configurar os módulos: %s. NotExistsDirect=O directorio raíz alternativo non está configurado nun directorio existente.
InfDirAlt=Dende a versión 3, é posible definir un directorio raíz alternativo. Isto permítelle almacenar, nun directorio adicado, plug-ins e padróns persoalizados.
Só en que crear un directorio na raíz de Dolibarr (por exemplo: custom).
@@ -893,11 +893,11 @@ Permission701=Consultar doacións/subvencións Permission702=Crear/modificar doacións/subvencións Permission703=Eliminar doacións/subvencións Permission771=Consultar informes de gastos (seus e subordinados) -Permission772=Create/modify expense reports (for you and your subordinates) +Permission772=Crear/modificar informes de gastos (para vostede e os seus subordinados) Permission773=Eliminar informe de gastos Permission775=Aprobar informe de gastos Permission776=Pagar informe de gastos -Permission777=Read all expense reports (even those of user not subordinates) +Permission777=Ler todos os informes de gastos (incluso os dos usuarios non subordinados) Permission778=Crear/modificar informes de gastos de todos Permission779=Exportar informe de gastos Permission1001=Consultar stocks @@ -965,7 +965,7 @@ Permission4001=Ler competencia/traballo/posto Permission4002=Crear/modificar competencia/traballo/posto Permission4003=Eliminar competencia/traballo/posto Permission4020=Ler avaliacións -Permission4021=Create/modify your evaluation +Permission4021=Crea/modifica a súa avaliación Permission4022=Validar avaliación Permission4023=Eliminar avaliación Permission4030=Ver menú comparativo @@ -976,9 +976,9 @@ Permission10005=Eliminar contido do sitio web Permission20001=Consultar peticións días líbres (seus e subordinados) Permission20002=Crear/modificar peticións días libres (seus e subordinados) Permission20003=Eliminar peticións de días retribuidos -Permission20004=Read all leave requests (even those of user not subordinates) -Permission20005=Create/modify leave requests for everybody (even those of user not subordinates) -Permission20006=Administer leave requests (setup and update balance) +Permission20004=Ler todas as solicitudes de baixa (incluso as de usuarios non subordinados) +Permission20005=Crear/modificar solicitudes de baixa para todos (incluso as de usuarios non subordinados) +Permission20006=Administrar solicitudes de baixa (configuración e actualización do saldo) Permission20007=Aprobar petición de vacacións Permission23001=Consultar. Traballo programado Permission23002=Crear/actualizar. Traballo programado @@ -1263,8 +1263,8 @@ ParameterActiveForNextInputOnly=Parámetro efectivo só a partir das próximas s NoEventOrNoAuditSetup=Non foron rexistrados eventos de seguridade aínda. Isto pode ser normal se a auditoría non foi habilitada na páxina "Configuración->Seguridade->Auditoría". NoEventFoundWithCriteria=Non atopáronse eventos de seguridade para tales criterios de búsca. SeeLocalSendMailSetup=Ver a configuración local de sendmail -BackupDesc=Unha copia de seguridade completada instalación de Dolibarr, require dous pasos. -BackupDesc2=Garde o contido do directorio de "documentos" (%s), que contén todos os ficheiros subidos e xerados Isto tamén incluirça os ficheiros xerados no paso 1. Esta operación pode levar varios minutos. +BackupDesc=Unha copia de seguridade completa da instalación de Dolibarr, require dous pasos. +BackupDesc2=Garde o contido do directorio de "documentos" (%s), que contén todos os ficheiros subidos e xerados Isto tamén incluirá os ficheiros xerados no paso 1. Esta operación pode levar varios minutos. BackupDesc3=Gardar o contido da súa base de datos (%s) nun ficheiro de volcado. Para isto pode utilizar o asistente a continuación. BackupDescX=O directorio arquivado deberá gardarse nun lugar seguro. BackupDescY=O ficheiro de volcado xerado deberá gardarse nun lugar seguro. @@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=A instalación ou construción dun módulo externo des HighlightLinesOnMouseHover=Resalte as liñas da táboa cando pasa o rato por riba HighlightLinesColor=Resaltar a cor da liña cando pasa o rato pasa (use 'ffffff' para non destacar) HighlightLinesChecked=Resaltar a cor da liña cando está marcada (use 'ffffff' para non destacar) +BtnActionColor=Cor do botón da acción +TextBtnActionColor=Cor do texto do botón da acción TextTitleColor=Cor do texto do título da páxina LinkColor=Cor das ligazóns PressF5AfterChangingThis=Prema CTRL+F5 no teclado ou limpe a caché do navegador despois de cambiar este valor para que sexa efectivo @@ -2216,3 +2218,5 @@ NativeModules=Modulos nativos NoDeployedModulesFoundWithThisSearchCriteria=Non se atoparon módulos para estes criterios de busca API_DISABLE_COMPRESSION=Desactivar a compresión das respostas da API EachTerminalHasItsOwnCounter=Cada terminal usa o seu propio contador. +FillAndSaveAccountIdAndSecret=Encha e garde primeiro o ID da conta e o contrasinal +PreviousHash=Hash anterior diff --git a/htdocs/langs/gl_ES/bills.lang b/htdocs/langs/gl_ES/bills.lang index 29af3dc6b1a..1e8201604fb 100644 --- a/htdocs/langs/gl_ES/bills.lang +++ b/htdocs/langs/gl_ES/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Informes de pagamentos PaymentsAlreadyDone=Pagamentos efectuados PaymentsBackAlreadyDone=Reembolsos xa efectuados PaymentRule=Forma de pagamento -PaymentMode=Forma de pagamento -DefaultPaymentMode=Tipo de pagamento predeterminado +PaymentMode=Modo de pagamento +PaymentModes=Modos de pagamento +DefaultPaymentMode=Modo de pagamento predeterminado DefaultBankAccount=Conta bancaria predeterminada -PaymentTypeDC=Tarxeta de Débito/Crédito -PaymentTypePP=PayPal -IdPaymentMode=Tipo de pagamento (id) -CodePaymentMode=Tipo de pagamento (código) -LabelPaymentMode=Tipo de pagamento (etiqueta) -PaymentModeShort=Forma de pagamento +IdPaymentMode=Modo de pagamento (id) +CodePaymentMode=Modo de pagamento (código) +LabelPaymentMode=Modo de pagamento (etiqueta) +PaymentModeShort=Modo de pagamento PaymentTerm=Condición de pagamento PaymentConditions=Condicións de pagamento PaymentConditionsShort=Condicións de pagamento @@ -280,6 +279,7 @@ SetMode=Definir modo de pagamento SetRevenuStamp=Establecer selo fiscal Billed=Facturado RecurringInvoices=Facturas recurrentes +RecurringInvoice=Factura recurrente RepeatableInvoice=Padrón de factura RepeatableInvoices=Padrón de facturas Repeatable=Padrón @@ -449,6 +449,8 @@ PaymentTypeTRA=Banco borrador PaymentTypeShortTRA=Borrador PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Tarxeta de Débito/Crédito +PaymentTypePP=PayPal BankDetails=Datos bancarios BankCode=Código banco DeskCode=Código oficina @@ -604,3 +606,4 @@ SituationTotalProgress=Progreso total %d %% SearchUnpaidInvoicesWithDueDate=Procurar facturas pendentes de pagamento cunha data de vencemento= %s NoPaymentAvailable=Non hai pagamento dispoñible para %s PaymentRegisteredAndInvoiceSetToPaid=Pagamento rexistrado e factura %s configurada como xa paga +SendEmailsRemindersOnInvoiceDueDate=Envía lembranza por correo electrónico para as facturas pendentes de pagamento diff --git a/htdocs/langs/gl_ES/blockedlog.lang b/htdocs/langs/gl_ES/blockedlog.lang index 99de9dd3d73..143a1d9138a 100644 --- a/htdocs/langs/gl_ES/blockedlog.lang +++ b/htdocs/langs/gl_ES/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Rexistros inalterables ShowAllFingerPrintsMightBeTooLong=Amosar todos os rexistros arquivados (pode ser longo) ShowAllFingerPrintsErrorsMightBeTooLong=Mostrar todos os rexistros de ficheiro no válidos (pode ser longo) DownloadBlockChain=Descargar pegadas dactilares -KoCheckFingerprintValidity=A entrada de rexistro arquivada non é válida. Significa que alguén (¿un hacker?) Modificou algúns datos deste rexistro despois de gravalo ou borrou o rexistro anterior arquivado (comprobe que existe a liña co # anterior). +KoCheckFingerprintValidity=A entrada de rexistro arquivada non é válida. Significa que alguén (¿un hacker?) Modificou algúns datos deste rexistro despois de gravalo ou borrou o rexistro anterior arquivado (comprobe que existe a liña co # anterior) ou se modificou a suma de comprobación do rexistro anterior. OkCheckFingerprintValidity=O rexistro de rexistro arquivado é válido. Os datos desta liña non se modificaron e a entrada segue a anterior. OkCheckFingerprintValidityButChainIsKo=O rexistro arquivado parece válido en comparación co anterior, pero a cadea estaba corrompida anteriormente. AddedByAuthority=Almacenado na autoridade remota @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=Listaxe de países onde o uso deste módul OnlyNonValid=Non válido TooManyRecordToScanRestrictFilters=Demasiados rexistros para escanear/analizar. Prégase restrinxa a listaxe con filtros mais restrictivos. RestrictYearToExport=Restrinxir mes/ano para exportar +BlockedLogEnabled=Activouse o sistema para rastrexar eventos en rexistros inalterables +BlockedLogDisabled=O sistema para rastrexar eventos en rexistros inalterables desactivouse despois de que se fixeran algunhas gravacións. Gardase unha pegada dixital especial para rastrexar a cadea como rota +BlockedLogDisabledBis=Desactivouse o sistema para rastrexar eventos en rexistros inalterables. Isto é posible porque aínda non se fixo ningún rexistro. diff --git a/htdocs/langs/gl_ES/companies.lang b/htdocs/langs/gl_ES/companies.lang index 64d45f649ce..cf9b5772970 100644 --- a/htdocs/langs/gl_ES/companies.lang +++ b/htdocs/langs/gl_ES/companies.lang @@ -157,15 +157,15 @@ ProfId3CL=- ProfId4CL=- ProfId5CL=- ProfId6CL=- -ProfId1CM=Id. prof. 1 (Trade Register) -ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1CM=Id. prof. 1 (Rexistro Mercantil) +ProfId2CM=Id. prof. 2 (Número de Contribuínte) +ProfId3CM=Id. prof. 3 (Acta de creación) ProfId4CM=- ProfId5CM=- ProfId6CM=- -ProfId1ShortCM=Trade Register -ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation +ProfId1ShortCM=Rexistro Mercantil +ProfId2ShortCM=Contribuínte Núm. +ProfId3ShortCM=Acta de creación ProfId4ShortCM=- ProfId5ShortCM=- ProfId6ShortCM=- diff --git a/htdocs/langs/gl_ES/compta.lang b/htdocs/langs/gl_ES/compta.lang index bf57606e0c2..40cdd993ded 100644 --- a/htdocs/langs/gl_ES/compta.lang +++ b/htdocs/langs/gl_ES/compta.lang @@ -198,7 +198,7 @@ VATReportByCustomers=Informe do imposto sobre as vendas IVE por cliente VATReportByCustomersInInputOutputMode=Informe por cliente do IVE repercutido e soportado VATReportByQuartersInInputOutputMode=Informe polo tipo do imposto sobre as vendas do imposto cobrado e xa pago VATReportShowByRateDetails=Amosar detalles desta tarifa -LT1ReportByQuarters=Informe do imposto 2 IRPF por taxa +LT1ReportByQuarters=Informe do imposto 2 RE por taxa LT2ReportByQuarters=Informe do imposto 3 IRPF por taxa LT1ReportByQuartersES=Informe de RE por taxa LT2ReportByQuartersES=Informe de IRPF por taxa diff --git a/htdocs/langs/gl_ES/errors.lang b/htdocs/langs/gl_ES/errors.lang index ebfe6c04387..f018fce58a5 100644 --- a/htdocs/langs/gl_ES/errors.lang +++ b/htdocs/langs/gl_ES/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Este contacto xa está definido como ErrorCashAccountAcceptsOnlyCashMoney=Esta conta bancaria é de tipo caixa e só acepta pagos en efectivo. ErrorFromToAccountsMustDiffers=A conta orixe e destino deben ser distintas. ErrorBadThirdPartyName=Nome de terceiro incorrecto +ForbiddenBySetupRules=Prohibido polas regras de configuración ErrorProdIdIsMandatory=O %s é obrigado +ErrorAccountancyCodeCustomerIsMandatory=O código contable do cliente %s é obrigatorio ErrorBadCustomerCodeSyntax=A sintaxe do código cliente é incorrecta. ErrorBadBarCodeSyntax=Sintaxe incorrecta do código de barras. Pode definir un tipo de código de barras incorrecto ou definir unha máscara de código de barras para a numeración que non coincide co valor escaneado. ErrorCustomerCodeRequired=Código cliente obrigado @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Non está no Dicionario de Condicións de ErrorIsNotADraft=%s non é un borrador ErrorExecIdFailed=Non se pode executar o comando "id" ErrorBadCharIntoLoginName=Carácter non autorizado no nome de inicio de sesión +ErrorRequestTooLarge=Erro, a solicitude é longa de mais # 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. @@ -315,6 +318,7 @@ RequireAtLeastXString = Require polo menos %s caracter(es) RequireXStringMax = Require %s caracter(es) como máximo RequireAtLeastXDigits = Require polo menos %s díxito(s) RequireXDigitsMax = Require %s díxito(s) como máximo +RequireValidNumeric = Require un valor numérico RequireValidEmail = O enderezo de correo electrónico non é válido RequireMaxLength = A lonxitude ten que ser inferior a %s caracter(es) RequireMinLength = A lonxitude ten que ser maior de %s caracter(es) diff --git a/htdocs/langs/gl_ES/eventorganization.lang b/htdocs/langs/gl_ES/eventorganization.lang index 572383188ec..79e60fe00d8 100644 --- a/htdocs/langs/gl_ES/eventorganization.lang +++ b/htdocs/langs/gl_ES/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Categoría para engadir a terceiros cr EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Categoría para engadir a terceiros creada automaticamente cando suxiren un stand EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Modelo de correo electrónico para enviar despois de recibir unha suxestión dunha conferencia. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Modelo de correo electrónico para enviar despois de recibir a suxestión dun stand. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Padrón de correo electrónico para enviar despois do pago dun rexistro a un stand. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Padrón de correo electrónico para enviar despois do pagamento dun rexistro a un stand. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Padrón de correo electrónico para enviar despois de pagar un rexistro a un evento.  -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Modelo de correo electrónico de acción masiva para os asistentes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Modelo de correo electrónico de acción masiva para os relatores -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filtra a listaxe de selección de terceiros na tarxeta/formulario de creación de asistentes coa categoría -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filtra a listaxe de selección de terceiros na tarxeta/formulario de creación de asistentes co tipo de cliente +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Padrón de correo electrónico para usar ao enviar correos electrónicos desde a acción masiva "Enviar correos electrónicos" aos ponentes +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Padrón de correo electrónico para usar ao enviar correos electrónicos desde a acción masiva "Enviar correos electrónicos" aos asistentes +EVENTORGANIZATION_FILTERATTENDEES_CAT = No formulario para crear/engadir un asistente, restrinxe a lista de terceiros a na categoría de terceiros +EVENTORGANIZATION_FILTERATTENDEES_TYPE = No formulario para crear/engadir un asistente, restrinxe a lista de terceiros a aos de natureza terceiros # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Pagamento do seu stand EventOrganizationEmailRegistrationPayment = Inscrición nun evento EventOrganizationMassEmailAttendees = Comunicación aos asistentes EventOrganizationMassEmailSpeakers = Comunicación aos relatores +ToSpeakers=Aos ponentes # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Prezo da inscrición PriceOfRegistrationHelp=Prezo a pagar para inscribirse ou participar no evento PriceOfBooth=Prezo da subscrición para estar nun stand PriceOfBoothHelp=Prezo da subscrición para estar nun stand -EventOrganizationICSLink=Ligazón ICS para eventos +EventOrganizationICSLink=Ligazón ICS para conferencias ConferenceOrBoothInformation=Información sobre conferencia ou stand Attendees=Asistentes ListOfAttendeesOfEvent=Listaxe de asistentes ao evento DownloadICSLink = Descargar ligazón ICS -EVENTORGANIZATION_SECUREKEY = Clave segura da ligazón de rexistro público a unha conferencia +EVENTORGANIZATION_SECUREKEY = Semente para asegurar a chave da páxina pública de rexistro para suxerir unha conferencia SERVICE_BOOTH_LOCATION = Servizo empregado para a fila de facturas sobre a situación do stand -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Servizo usado para a fila de facturas sobre unha subscrición de asistente a unha conferencia +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Servizo utilizado para a fila da factura sobre a subscrición dun asistente a un evento NbVotes=Número de votos # # Status diff --git a/htdocs/langs/gl_ES/holiday.lang b/htdocs/langs/gl_ES/holiday.lang index c4fe6b8c2b8..1478f1e5e91 100644 --- a/htdocs/langs/gl_ES/holiday.lang +++ b/htdocs/langs/gl_ES/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Vacacións para aprobar NobodyHasPermissionToValidateHolidays=Ninguén ten permisos para validar vacacións HolidayBalanceMonthlyUpdate=Actualización mensual do saldo de vacacións 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 diff --git a/htdocs/langs/gl_ES/knowledgemanagement.lang b/htdocs/langs/gl_ES/knowledgemanagement.lang index 29a5ef254b4..32e2d1c05dd 100644 --- a/htdocs/langs/gl_ES/knowledgemanagement.lang +++ b/htdocs/langs/gl_ES/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Campos extras para Artigos GroupOfTicket=Grupo de tickets YouCanLinkArticleToATicketCategory=Pode ligar un artigo a un grupo de tickets (polo que o artigo suxerirase durante a cualificación de novos tickets) SuggestedForTicketsInGroup=Suxerido para tickes cando o grupo é + +SetObsolete=Establécese como obsoleto +ConfirmCloseKM=Está certo de querer confirmar o peche deste artigo como obsoleto? +ConfirmReopenKM=Está certo de querer restaurar este artigo ao estado "Validado"? diff --git a/htdocs/langs/gl_ES/mrp.lang b/htdocs/langs/gl_ES/mrp.lang index 8d3ceafe64d..2c839edced3 100644 --- a/htdocs/langs/gl_ES/mrp.lang +++ b/htdocs/langs/gl_ES/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Está certo de querer clonar a listaxe de materiais ConfirmCloneMo=Está certo de querer clonar este pedimento de facturación %s? ManufacturingEfficiency=Eficiencia de fabricación ConsumptionEfficiency=Eficienci de consumo -ValueOfMeansLoss=O valor de 0.95 significa un promedio de 5%% de perda durante a produción +ValueOfMeansLoss=O valor de 0,95 significa unha media de 5%% de perda durante a fabricación ou a desmontaxe ValueOfMeansLossForProductProduced=O valor de 0,95 significa unha media do 5 %% da perda do produto producido DeleteBillOfMaterials=Eliminar listaxe de materiais DeleteMo=Borra pedimento de manufacturación diff --git a/htdocs/langs/gl_ES/other.lang b/htdocs/langs/gl_ES/other.lang index c2fd86637b0..5d73052ba48 100644 --- a/htdocs/langs/gl_ES/other.lang +++ b/htdocs/langs/gl_ES/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Proxecto creado polo recolector de correos electr TicketCreatedByEmailCollector=Ticket creado polo recolector de correos electrónicos do MSGID de correo electrónico %s OpeningHoursFormatDesc=Use o - para separar horario de apertura e peche.
Use o espazo para engadir diferentes rangos.
Exemplo: 8-12 14-18 SuffixSessionName=Sufixo para o nome da sesión +LoginWith=Inicio de sesión con %s ##### Export ##### ExportsArea=Área de exportación diff --git a/htdocs/langs/gl_ES/products.lang b/htdocs/langs/gl_ES/products.lang index 0620c15a695..a47ce9f04a7 100644 --- a/htdocs/langs/gl_ES/products.lang +++ b/htdocs/langs/gl_ES/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=A listaxe de materiais por defecto recomendada para fabricar este Rank=Rango SwitchOnSaleStatus=Activa o estado de venda SwitchOnPurchaseStatus=Activa o estado de compra +StockMouvementExtraFields= Campos extra (movemento de stock) diff --git a/htdocs/langs/gl_ES/projects.lang b/htdocs/langs/gl_ES/projects.lang index 80699730335..367ab742156 100644 --- a/htdocs/langs/gl_ES/projects.lang +++ b/htdocs/langs/gl_ES/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Entrada por mes InputDetail=Detalle de entrada TimeAlreadyRecorded=Tempo empregado xa rexistrado para esta tarefa/día e usuario %s ProjectsWithThisUserAsContact=Proxectos con este usuario como contacto +ProjectsWithThisContact=Proxectos con este contacto TasksWithThisUserAsContact=Tarefas asignadas a este usuario ResourceNotAssignedToProject=Non asignado ao proxecto ResourceNotAssignedToTheTask=Non asignado á tarefa @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Nota: os proxectos existentes c SelectLinesOfTimeSpentToInvoice=Seleccione a liñas de tempo utilizadas que non se facturan e, de seguido, empregue unha acción masiva de "Xerar factura" para facturalas ProjectTasksWithoutTimeSpent=Tarefas do proxecto sen tempo empregado FormForNewLeadDesc=Grazas por encher o seguinte formulario para contactar connosco. Tamén pode enviarnos un correo electrónico directamente a %s +ProjectsHavingThisContact=Proxectos tendo este contacto StartDateCannotBeAfterEndDate=A data de finalización non pode ser anterior á data de inicio diff --git a/htdocs/langs/gl_ES/receptions.lang b/htdocs/langs/gl_ES/receptions.lang index f6a33a835d8..c91f2a13bb3 100644 --- a/htdocs/langs/gl_ES/receptions.lang +++ b/htdocs/langs/gl_ES/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Configuración da recepción del producto +ReceptionDescription=Xestión de recepción de provedores (Crear documentos de recepción) +ReceptionsSetup=Configuración de recepción de provedores RefReception=Ref. recepción Reception=Recepción Receptions=Recepcións @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Recepcións e recibos deste pedimento. ReceptionsToValidate=Recepcións a validar StatusReceptionCanceled=Anulado StatusReceptionDraft=Borrador -StatusReceptionValidated=Validado (produtos a enviar ou enviados) +StatusReceptionValidated=Validado (produtos a recibir ou xa recibidos) +StatusReceptionValidatedToReceive=Validado (produtos a recibir) +StatusReceptionValidatedReceived=Validado (produtos recibidos) StatusReceptionProcessed=Procesado StatusReceptionDraftShort=Borrador StatusReceptionValidatedShort=Validado @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Estatísticas realizadas únicamente sobre as rec SendReceptionByEMail=Enviar recepción por correo electrónico SendReceptionRef=Envío da recepción %s ActionsOnReception=Eventos sobre a recepción -ReceptionCreationIsDoneFromOrder=Polo momento, a creación dunha nova recepción faise a partir do rexistro de pedimento de provedor. +ReceptionCreationIsDoneFromOrder=Polo de agora, a creación dunha nova recepción realízase desde o Pedimento a cliente. ReceptionLine=Liña de recepción ProductQtyInReceptionAlreadySent=Cantidade de produto do pedimento de cliente aberto xa enviado ProductQtyInSuppliersReceptionAlreadyRecevied=Cantidade de produto en pedimentos a proveedores xa recibidos @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Modeloss de documentos para recepcións. NoMorePredefinedProductToDispatch=Non hai máis produtos predefinidos para enviar ReceptionExist=Xa hai unha recepción ByingPrice=Prezo de compra +ReceptionBackToDraftInDolibarr=A recepción %s volta a borrador +ReceptionClassifyClosedInDolibarr=Recepción %s clasificada Pechada +ReceptionUnClassifyCloseddInDolibarr=A recepción %s volta a abrirse diff --git a/htdocs/langs/gl_ES/stocks.lang b/htdocs/langs/gl_ES/stocks.lang index 95c2a9b83a8..191fd19bedf 100644 --- a/htdocs/langs/gl_ES/stocks.lang +++ b/htdocs/langs/gl_ES/stocks.lang @@ -17,7 +17,7 @@ CancelSending=Cancelar o envío DeleteSending=Eliminar envío Stock=Stock Stocks=Stocks -MissingStocks=Falta sock +MissingStocks=Falta stock StockAtDate=Stocks á data StockAtDateInPast=Data no pasado StockAtDateInFuture=Data no futuro diff --git a/htdocs/langs/he_IL/admin.lang b/htdocs/langs/he_IL/admin.lang index 6d7aeaf35c1..9a3360b7938 100644 --- a/htdocs/langs/he_IL/admin.lang +++ b/htdocs/langs/he_IL/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Foundation Version=גרסה Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=שלב %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/he_IL/bills.lang b/htdocs/langs/he_IL/bills.lang index 89081b98881..8e98f6d3b7c 100644 --- a/htdocs/langs/he_IL/bills.lang +++ b/htdocs/langs/he_IL/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Payments reports PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Refunds already done PaymentRule=Payment rule -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Draft PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bank details BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/he_IL/blockedlog.lang b/htdocs/langs/he_IL/blockedlog.lang index 0bba5605d0f..12f28737d49 100644 --- a/htdocs/langs/he_IL/blockedlog.lang +++ b/htdocs/langs/he_IL/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/he_IL/errors.lang b/htdocs/langs/he_IL/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/he_IL/errors.lang +++ b/htdocs/langs/he_IL/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/he_IL/eventorganization.lang b/htdocs/langs/he_IL/eventorganization.lang index 82951892a32..b4a7279d757 100644 --- a/htdocs/langs/he_IL/eventorganization.lang +++ b/htdocs/langs/he_IL/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/he_IL/holiday.lang b/htdocs/langs/he_IL/holiday.lang index 25b8ea301d0..c5aa045afc3 100644 --- a/htdocs/langs/he_IL/holiday.lang +++ b/htdocs/langs/he_IL/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/he_IL/knowledgemanagement.lang b/htdocs/langs/he_IL/knowledgemanagement.lang index 2426e0e7013..bcdf9740cdd 100644 --- a/htdocs/langs/he_IL/knowledgemanagement.lang +++ b/htdocs/langs/he_IL/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/he_IL/mrp.lang b/htdocs/langs/he_IL/mrp.lang index 3f1aac53340..74bed0d9186 100644 --- a/htdocs/langs/he_IL/mrp.lang +++ b/htdocs/langs/he_IL/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/he_IL/other.lang b/htdocs/langs/he_IL/other.lang index c06945f5087..1cd1c4956be 100644 --- a/htdocs/langs/he_IL/other.lang +++ b/htdocs/langs/he_IL/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/he_IL/products.lang b/htdocs/langs/he_IL/products.lang index 61326021b7b..71b29379a26 100644 --- a/htdocs/langs/he_IL/products.lang +++ b/htdocs/langs/he_IL/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/he_IL/projects.lang b/htdocs/langs/he_IL/projects.lang index 7ef9f67b7d7..73d797e7ba1 100644 --- a/htdocs/langs/he_IL/projects.lang +++ b/htdocs/langs/he_IL/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/he_IL/receptions.lang b/htdocs/langs/he_IL/receptions.lang index 46b2d689609..7f1a97d16a9 100644 --- a/htdocs/langs/he_IL/receptions.lang +++ b/htdocs/langs/he_IL/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Canceled StatusReceptionDraft=Draft -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processed StatusReceptionDraftShort=Draft StatusReceptionValidatedShort=Validated @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/hi_IN/admin.lang b/htdocs/langs/hi_IN/admin.lang index 433b4f66f70..40642f8f3ed 100644 --- a/htdocs/langs/hi_IN/admin.lang +++ b/htdocs/langs/hi_IN/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=प्रतिष्ठान Version=संस्करण Publisher=प्रकाशक @@ -343,7 +343,7 @@ StepNb=Step %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/hi_IN/bills.lang b/htdocs/langs/hi_IN/bills.lang index 3aaa5465ca0..f7d0155f41e 100644 --- a/htdocs/langs/hi_IN/bills.lang +++ b/htdocs/langs/hi_IN/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Payments reports PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Refunds already done PaymentRule=Payment rule -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Draft PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bank details BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/hi_IN/blockedlog.lang b/htdocs/langs/hi_IN/blockedlog.lang index 0bba5605d0f..12f28737d49 100644 --- a/htdocs/langs/hi_IN/blockedlog.lang +++ b/htdocs/langs/hi_IN/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/hi_IN/errors.lang b/htdocs/langs/hi_IN/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/hi_IN/errors.lang +++ b/htdocs/langs/hi_IN/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/hi_IN/eventorganization.lang b/htdocs/langs/hi_IN/eventorganization.lang index 82951892a32..b4a7279d757 100644 --- a/htdocs/langs/hi_IN/eventorganization.lang +++ b/htdocs/langs/hi_IN/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/hi_IN/holiday.lang b/htdocs/langs/hi_IN/holiday.lang index dceaef59081..3d0ae64be0f 100644 --- a/htdocs/langs/hi_IN/holiday.lang +++ b/htdocs/langs/hi_IN/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/hi_IN/knowledgemanagement.lang b/htdocs/langs/hi_IN/knowledgemanagement.lang index 2426e0e7013..bcdf9740cdd 100644 --- a/htdocs/langs/hi_IN/knowledgemanagement.lang +++ b/htdocs/langs/hi_IN/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/hi_IN/mrp.lang b/htdocs/langs/hi_IN/mrp.lang index 3f1aac53340..74bed0d9186 100644 --- a/htdocs/langs/hi_IN/mrp.lang +++ b/htdocs/langs/hi_IN/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/hi_IN/other.lang b/htdocs/langs/hi_IN/other.lang index 7b509f60ff7..49ff93dd589 100644 --- a/htdocs/langs/hi_IN/other.lang +++ b/htdocs/langs/hi_IN/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/hi_IN/products.lang b/htdocs/langs/hi_IN/products.lang index a8942bd337f..14715670882 100644 --- a/htdocs/langs/hi_IN/products.lang +++ b/htdocs/langs/hi_IN/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/hi_IN/projects.lang b/htdocs/langs/hi_IN/projects.lang index 0d9c7ea34c8..ff542521afe 100644 --- a/htdocs/langs/hi_IN/projects.lang +++ b/htdocs/langs/hi_IN/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/hi_IN/receptions.lang b/htdocs/langs/hi_IN/receptions.lang index 46b2d689609..7f1a97d16a9 100644 --- a/htdocs/langs/hi_IN/receptions.lang +++ b/htdocs/langs/hi_IN/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Canceled StatusReceptionDraft=Draft -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processed StatusReceptionDraftShort=Draft StatusReceptionValidatedShort=Validated @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/hr_HR/admin.lang b/htdocs/langs/hr_HR/admin.lang index 53563ab2fff..ccc1bd1cd83 100644 --- a/htdocs/langs/hr_HR/admin.lang +++ b/htdocs/langs/hr_HR/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Zaklada Version=Inačica Publisher=Izdavač @@ -343,7 +343,7 @@ StepNb=Korak %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Boja poveznica PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/hr_HR/bills.lang b/htdocs/langs/hr_HR/bills.lang index 94a626c96d1..a6667101c7f 100644 --- a/htdocs/langs/hr_HR/bills.lang +++ b/htdocs/langs/hr_HR/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Izvještaji plaćanja PaymentsAlreadyDone=Izvršena plaćanja PaymentsBackAlreadyDone=Izvršeni povrati PaymentRule=Način plaćanja -PaymentMode=Način plaćanja -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debitna/kreditna kartica -PaymentTypePP=PayPal -IdPaymentMode=Način plaćanja (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Način plaćanja +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Rok plaćanja PaymentConditionsShort=Rok plaćanja @@ -280,6 +279,7 @@ SetMode=Izaberi način plaćanja SetRevenuStamp=Postavi prihodovnu markicu Billed=Zaračunato RecurringInvoices=Pretplatnički računi +RecurringInvoice=Recurring invoice RepeatableInvoice=Predložak računa RepeatableInvoices=Predlošci računa Repeatable=Predložak @@ -449,6 +449,8 @@ PaymentTypeTRA=Skica banke PaymentTypeShortTRA=Skica PaymentTypeFAC=Faktor PaymentTypeShortFAC=Faktor +PaymentTypeDC=Debitna/kreditna kartica +PaymentTypePP=PayPal BankDetails=Bankovni podaci BankCode=Oznaka Banke DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/hr_HR/blockedlog.lang b/htdocs/langs/hr_HR/blockedlog.lang index 0bba5605d0f..12f28737d49 100644 --- a/htdocs/langs/hr_HR/blockedlog.lang +++ b/htdocs/langs/hr_HR/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/hr_HR/errors.lang b/htdocs/langs/hr_HR/errors.lang index 1867517eff5..ec2a653f646 100644 --- a/htdocs/langs/hr_HR/errors.lang +++ b/htdocs/langs/hr_HR/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=Ovaj bankovni račun je gotovinski te prihvaća samo gotovinske uplate. ErrorFromToAccountsMustDiffers=Izvorni i odredišni bankovni računi moraju biti različiti. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/hr_HR/eventorganization.lang b/htdocs/langs/hr_HR/eventorganization.lang index ffd2b23e575..b9676420b74 100644 --- a/htdocs/langs/hr_HR/eventorganization.lang +++ b/htdocs/langs/hr_HR/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/hr_HR/holiday.lang b/htdocs/langs/hr_HR/holiday.lang index ce4bdcdf365..3bd975ab1fe 100644 --- a/htdocs/langs/hr_HR/holiday.lang +++ b/htdocs/langs/hr_HR/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/hr_HR/knowledgemanagement.lang b/htdocs/langs/hr_HR/knowledgemanagement.lang index 4abe0b7586a..b4540191757 100644 --- a/htdocs/langs/hr_HR/knowledgemanagement.lang +++ b/htdocs/langs/hr_HR/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/hr_HR/mrp.lang b/htdocs/langs/hr_HR/mrp.lang index 60420bc6db0..3fcf32a1fe3 100644 --- a/htdocs/langs/hr_HR/mrp.lang +++ b/htdocs/langs/hr_HR/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/hr_HR/other.lang b/htdocs/langs/hr_HR/other.lang index 48f0663ef39..c56010884a2 100644 --- a/htdocs/langs/hr_HR/other.lang +++ b/htdocs/langs/hr_HR/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/hr_HR/products.lang b/htdocs/langs/hr_HR/products.lang index 924d7c7f42a..13ebc7c3659 100644 --- a/htdocs/langs/hr_HR/products.lang +++ b/htdocs/langs/hr_HR/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/hr_HR/projects.lang b/htdocs/langs/hr_HR/projects.lang index e609d42b467..3c0f2c1b0b2 100644 --- a/htdocs/langs/hr_HR/projects.lang +++ b/htdocs/langs/hr_HR/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Pojedinosti unosa TimeAlreadyRecorded=Ovo vrijeme je već zabilježeno za ovaj zadatak / dan, a korisnik %s ProjectsWithThisUserAsContact=Projekti s ovim korisnikom kao kontakt osoba +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Zadaci dodjeljeni korisniku ResourceNotAssignedToProject=Nije dodjeljen projektu ResourceNotAssignedToTheTask=Nije dodjeljen zadatku @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=Datum kraja ne može biti prije datuma početka diff --git a/htdocs/langs/hr_HR/receptions.lang b/htdocs/langs/hr_HR/receptions.lang index 06f15991b61..498b5e2c1a3 100644 --- a/htdocs/langs/hr_HR/receptions.lang +++ b/htdocs/langs/hr_HR/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Poništeno StatusReceptionDraft=Skica -StatusReceptionValidated=Ovjereno (proizvodi za isporuku ili su isporučeni) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Obrađeno StatusReceptionDraftShort=Skica StatusReceptionValidatedShort=Ovjereno @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/hu_HU/admin.lang b/htdocs/langs/hu_HU/admin.lang index 87fa2d323ef..c818208a7b4 100644 --- a/htdocs/langs/hu_HU/admin.lang +++ b/htdocs/langs/hu_HU/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Alapítvány Version=Verzió Publisher=Szerző @@ -343,7 +343,7 @@ StepNb=%s lépés FindPackageFromWebSite=Keressen egy csomagot, amely biztosítja a szükséges szolgáltatásokat (például az %s hivatalos webhelyen). DownloadPackageFromWebSite=Csomag letöltése (például az %s hivatalos webhelyről). UnpackPackageInDolibarrRoot=Csomagolja ki a becsomagolt fájlokat a Dolibarr kiszolgáló könyvtárába: %s -UnpackPackageInModulesRoot=Külső modul telepítéséhez csomagolja ki a becsomagolt fájlokat a külső modulokhoz rendelt kiszolgáló könyvtárba:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=A modul telepítése befejeződött. Azonban engedélyeznie kell és be kell állítania a modult az alkalmazásban: %s . NotExistsDirect=Az alternatív gyökérkönyvtár nincs definiálva egy meglévő könyvtárra.
InfDirAlt=A 3. verzió óta meghatározható egy alternatív gyökérkönyvtár. Ez lehetővé teszi a beépülő modulok és az egyedi sablonok tárolását egy dedikált könyvtárba.
Csak hozzon létre egy könyvtárat a Dolibarr gyökérkönyvtárában (pl .: egyedi).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/hu_HU/bills.lang b/htdocs/langs/hu_HU/bills.lang index 5670ae7a559..205ba0efd8c 100644 --- a/htdocs/langs/hu_HU/bills.lang +++ b/htdocs/langs/hu_HU/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Fizetések jelentései PaymentsAlreadyDone=Fizetve PaymentsBackAlreadyDone=A visszatérítések teljesültek PaymentRule=Fizetési szabály -PaymentMode=Fizetési mód -DefaultPaymentMode=Alapértelmezett fizetési típus +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Alapértelmezett bankszámla -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Fizetési típus (azonosító) -CodePaymentMode=Fizetési típus (kód) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Fizetési mód +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Fizetési határidő PaymentConditions=Fizetési feltételek PaymentConditionsShort=Fizetési feltételek @@ -280,6 +279,7 @@ SetMode=Fizetési típus beállítása SetRevenuStamp=Set revenue stamp Billed=Kiszámlázott RecurringInvoices=Ismétlődő számlák +RecurringInvoice=Recurring invoice RepeatableInvoice=Számla minta RepeatableInvoices=Számlaminták Repeatable=Minta @@ -449,6 +449,8 @@ PaymentTypeTRA=Banki tervezet PaymentTypeShortTRA=Piszkozat PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Banki adatok BankCode=Bank kódja DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% SearchUnpaidInvoicesWithDueDate=Fizetetlen számlák keresése esedékességgel = %s NoPaymentAvailable=No payment available for %s PaymentRegisteredAndInvoiceSetToPaid=Payment registered and invoice %s set to paid +SendEmailsRemindersOnInvoiceDueDate=Send reminder by email for unpaid invoices diff --git a/htdocs/langs/hu_HU/blockedlog.lang b/htdocs/langs/hu_HU/blockedlog.lang index 8e161468a08..12a9d80e7d3 100644 --- a/htdocs/langs/hu_HU/blockedlog.lang +++ b/htdocs/langs/hu_HU/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Nem érvényes TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/hu_HU/errors.lang b/htdocs/langs/hu_HU/errors.lang index dbdd337ca3c..e097d2988db 100644 --- a/htdocs/langs/hu_HU/errors.lang +++ b/htdocs/langs/hu_HU/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Ez a kapcsolat már definiálva van, ErrorCashAccountAcceptsOnlyCashMoney=Ez egy folyószámla, ezért csak készpénzes fizetési módot fogad el. ErrorFromToAccountsMustDiffers=A forrás és cél bankszámláknak különbözőeknek kell lenniük. ErrorBadThirdPartyName=Rossz érték a harmadik fél nevében +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=A %s kötelezően megadandó +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Az ügyfélkód szintaxisa rossz ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Ügyfélkód szükséges @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = E-mail cím nem érvényes RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/hu_HU/eventorganization.lang b/htdocs/langs/hu_HU/eventorganization.lang index 6a9562999d8..0a859f511d2 100644 --- a/htdocs/langs/hu_HU/eventorganization.lang +++ b/htdocs/langs/hu_HU/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/hu_HU/holiday.lang b/htdocs/langs/hu_HU/holiday.lang index d19fb485b24..a9615c8d743 100644 --- a/htdocs/langs/hu_HU/holiday.lang +++ b/htdocs/langs/hu_HU/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Ünnepek jóváhagyásra\n NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/hu_HU/knowledgemanagement.lang b/htdocs/langs/hu_HU/knowledgemanagement.lang index 442e50ceefb..4f8d74a2f96 100644 --- a/htdocs/langs/hu_HU/knowledgemanagement.lang +++ b/htdocs/langs/hu_HU/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Jegyek csoportjai YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/hu_HU/mrp.lang b/htdocs/langs/hu_HU/mrp.lang index ffc5c684aee..018449c4d68 100644 --- a/htdocs/langs/hu_HU/mrp.lang +++ b/htdocs/langs/hu_HU/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/hu_HU/other.lang b/htdocs/langs/hu_HU/other.lang index 36d91090ab1..f8e59d4ee71 100644 --- a/htdocs/langs/hu_HU/other.lang +++ b/htdocs/langs/hu_HU/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=A projektet létrehozva az e-mail gyűjtő által TicketCreatedByEmailCollector=A jegy létrehozva az e-mail gyűjtő által az MSGID %s e-mailből OpeningHoursFormatDesc=A nyitvatartási időket (-tól-ig) kötőjellel (-) válassza el.
Használjon szóközt a különböző idősávok megadásához.
Példa: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Az export területén diff --git a/htdocs/langs/hu_HU/products.lang b/htdocs/langs/hu_HU/products.lang index 554a08b39e6..4863e3e29f5 100644 --- a/htdocs/langs/hu_HU/products.lang +++ b/htdocs/langs/hu_HU/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/hu_HU/projects.lang b/htdocs/langs/hu_HU/projects.lang index a37db21a5f7..d826ba8b40b 100644 --- a/htdocs/langs/hu_HU/projects.lang +++ b/htdocs/langs/hu_HU/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Havi bevitel InputDetail=Bemenet részletei TimeAlreadyRecorded=Ez az a nap, amelyet erre a feladatra már naponta rögzítettünk, és az %s felhasználó ProjectsWithThisUserAsContact=Vetíti ezt a felhasználót kapcsolattartóként +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=A felhasználóhoz rendelt feladatok ResourceNotAssignedToProject=Nincs hozzárendelve a projekthez ResourceNotAssignedToTheTask=Nincs hozzárendelve a feladathoz @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Projektfeladatok eltöltött idő nélkül\n FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=A befejezés időpontja nem lehet hamarabb mint a kezdet diff --git a/htdocs/langs/hu_HU/receptions.lang b/htdocs/langs/hu_HU/receptions.lang index 2abb9139df1..99207f1d856 100644 --- a/htdocs/langs/hu_HU/receptions.lang +++ b/htdocs/langs/hu_HU/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Recepció Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Visszavonva StatusReceptionDraft=Piszkozat -StatusReceptionValidated=Hitelesítve (már szállítva) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Feldolgozott StatusReceptionDraftShort=Piszkozat StatusReceptionValidatedShort=Hitelesítetve @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=A nyitott értékesítési rendelésből származó termékmennyiség már elküldve ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/id_ID/admin.lang b/htdocs/langs/id_ID/admin.lang index ba6b5d05104..9892491fec2 100644 --- a/htdocs/langs/id_ID/admin.lang +++ b/htdocs/langs/id_ID/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Referensi tebal dan titik dalam PDF -BoldLabelOnPDF=Label tebal dalam PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Yayasan Version=Versi Publisher=Penerbit @@ -343,7 +343,7 @@ StepNb=Langkah %s FindPackageFromWebSite=Temukan paket yang menyediakan fitur yang Anda butuhkan (misalnya di situs web resmi %s). DownloadPackageFromWebSite=Paket unduhan (misalnya dari situs web resmi %s). UnpackPackageInDolibarrRoot=Buka paket / unzip file yang dikemas ke dalam direktori server Dolibarr Anda:%s -UnpackPackageInModulesRoot=Untuk menggunakan / menginstal modul eksternal, buka paket / unzip file yang dikemas ke dalam direktori server yang didedikasikan untuk modul eksternal:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Pemasangan modul selesai. Namun Anda harus mengaktifkan dan mengatur modul dalam aplikasi Anda dengan masuk ke modul pengaturan halaman: %s . NotExistsDirect=Direktori root alternatif tidak didefinisikan ke direktori yang ada.
InfDirAlt=Sejak versi 3, dimungkinkan untuk mendefinisikan direktori root alternatif. Ini memungkinkan Anda untuk menyimpan, ke direktori khusus, plug-in, dan template khusus.
Cukup buat direktori di root Dolibarr (mis: kustom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Menginstal atau membuat modul eksternal dari aplikasi HighlightLinesOnMouseHover=Sorot garis-garis tabel ketika mouse bergerak HighlightLinesColor=Sorot warna garis ketika mouse dilewati (gunakan 'ffffff' tanpa highlight) HighlightLinesChecked=Sorot warna garis ketika dicentang (gunakan 'ffffff' tanpa highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Warna teks judul Halaman LinkColor=Warna tautan PressF5AfterChangingThis=Tekan CTRL + F5 pada keyboard atau kosongkan cache browser Anda setelah mengubah nilai ini agar efektif @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/id_ID/bills.lang b/htdocs/langs/id_ID/bills.lang index 310e24963c9..a95adcb4e93 100644 --- a/htdocs/langs/id_ID/bills.lang +++ b/htdocs/langs/id_ID/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Laporan - laporan semua pembayaran PaymentsAlreadyDone=Pembayaran - pembayaran yang sudah selesai PaymentsBackAlreadyDone=Pengembalian dana sudah dilakukan PaymentRule=Aturan pembayaran -PaymentMode=Tipe pembayaran -DefaultPaymentMode=Jenis Pembayaran Default +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Rekening Bank Default -PaymentTypeDC=Kartu Debit / Kredit -PaymentTypePP=PayPal -IdPaymentMode=Jenis Pembayaran (id) -CodePaymentMode=Jenis Pembayaran (kode) -LabelPaymentMode=Jenis Pembayaran (label) -PaymentModeShort=Tipe pembayaran +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Jangka waktu pembayaran PaymentConditions=Syarat pembayaran PaymentConditionsShort=Syarat pembayaran @@ -280,6 +279,7 @@ SetMode=Tetapkan Jenis Pembayaran SetRevenuStamp=Tetapkan stempel pendapatan Billed=Ditagih RecurringInvoices=Faktur berulang +RecurringInvoice=Recurring invoice RepeatableInvoice=Faktur templat RepeatableInvoices=Faktur templat Repeatable=Templat @@ -449,6 +449,8 @@ PaymentTypeTRA=Draft bank PaymentTypeShortTRA=Konsep PaymentTypeFAC=Faktor PaymentTypeShortFAC=Faktor +PaymentTypeDC=Kartu Debit / Kredit +PaymentTypePP=PayPal BankDetails=rincian bank BankCode=Kode Bank DeskCode=Kode cabang @@ -604,3 +606,4 @@ SituationTotalProgress=Total kemajuan %d %% SearchUnpaidInvoicesWithDueDate=Cari faktur yang belum dibayar dengan tanggal jatuh tempo = %s NoPaymentAvailable=Tidak ada pembayaran yang tersedia untuk %s PaymentRegisteredAndInvoiceSetToPaid=Pembayaran terdaftar dan faktur %s disetel ke dibayar +SendEmailsRemindersOnInvoiceDueDate=Send reminder by email for unpaid invoices diff --git a/htdocs/langs/id_ID/blockedlog.lang b/htdocs/langs/id_ID/blockedlog.lang index 0096f7a7fd6..301b4d81184 100644 --- a/htdocs/langs/id_ID/blockedlog.lang +++ b/htdocs/langs/id_ID/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=Daftar negara di mana penggunaan modul ini OnlyNonValid=Tidak valid TooManyRecordToScanRestrictFilters=Terlalu banyak catatan untuk dipindai / dianalisis. Harap batasi daftar dengan filter yang lebih ketat. RestrictYearToExport=Batasi bulan / tahun untuk ekspor +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/id_ID/errors.lang b/htdocs/langs/id_ID/errors.lang index e1d11b00ec4..2df9104a067 100644 --- a/htdocs/langs/id_ID/errors.lang +++ b/htdocs/langs/id_ID/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Kontak ini sudah didefinisikan sebaga ErrorCashAccountAcceptsOnlyCashMoney=Rekening bank ini adalah rekening tunai, sehingga hanya menerima pembayaran dengan jenis uang tunai. ErrorFromToAccountsMustDiffers=Sumber dan target rekening bank harus berbeda. ErrorBadThirdPartyName=Nilai buruk untuk nama pihak ketiga +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=%s wajib diisi +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Sintaks buruk untuk kode pelanggan ErrorBadBarCodeSyntax=Sintaksis buruk untuk barcode. Mungkin Anda menetapkan jenis barcode yang buruk atau Anda mendefinisikan masker barcode untuk penomoran yang tidak cocok dengan nilai yang dipindai. ErrorCustomerCodeRequired=Diperlukan kode pelanggan @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Tidak ada dalam Kamus Istilah Pembayaran, ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Parameter PHP Anda upload_max_filesize (%s) lebih tinggi dari parameter PHP post_max_size (%s). Ini bukan pengaturan yang konsisten. @@ -315,6 +318,7 @@ RequireAtLeastXString = Memerlukan setidaknya %s karakter RequireXStringMax = Memerlukan maksimal %s karakter RequireAtLeastXDigits = Membutuhkan setidaknya %s digit RequireXDigitsMax = Memerlukan maksimal %s digit +RequireValidNumeric = Requires a numeric value RequireValidEmail = Alamat email tidak valid RequireMaxLength = Panjangnya harus kurang dari %s karakter RequireMinLength = Panjangnya harus lebih dari %s karakter diff --git a/htdocs/langs/id_ID/eventorganization.lang b/htdocs/langs/id_ID/eventorganization.lang index a1a743c1fcf..fcb52f70206 100644 --- a/htdocs/langs/id_ID/eventorganization.lang +++ b/htdocs/langs/id_ID/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Kategori untuk ditambahkan ke pihak ke EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Kategori untuk ditambahkan ke pihak ketiga secara otomatis dibuat saat mereka menyarankan stan EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template email untuk dikirim setelah menerima saran konferensi. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template email untuk dikirim setelah menerima saran stan. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template email aksi masal ke para peserta -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Templat email aksi masal ke pembicara -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter daftar pilih pihak ketiga di kartu/formulir pembuatan peserta dengan kategori -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter daftar pilih pihak ketiga di kartu/formulir pembuatan peserta dengan tipe pelanggan +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Komunikasi kepada peserta EventOrganizationMassEmailSpeakers = Komunikasi dengan pembicara +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Harga pendaftaran PriceOfRegistrationHelp=Harga yang harus dibayar untuk mendaftar atau berpartisipasi dalam acara PriceOfBooth=Harga langganan mendirikan stan PriceOfBoothHelp=Harga langganan stand stand -EventOrganizationICSLink=Tautkan ICS untuk acara +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Informasi Konferensi Atau Stan Attendees=Peserta ListOfAttendeesOfEvent=Daftar peserta proyek acara DownloadICSLink = Unduh tautan ICS -EVENTORGANIZATION_SECUREKEY = Kunci Aman dari tautan pendaftaran publik ke konferensi +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Layanan yang digunakan untuk baris faktur tentang lokasi stan -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Layanan yang digunakan untuk baris faktur tentang langganan peserta konferensi +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Jumlah suara # # Status diff --git a/htdocs/langs/id_ID/holiday.lang b/htdocs/langs/id_ID/holiday.lang index 8ae054f6bb6..f03f385e2b8 100644 --- a/htdocs/langs/id_ID/holiday.lang +++ b/htdocs/langs/id_ID/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Liburan disetujui NobodyHasPermissionToValidateHolidays=Tidak ada yang memiliki izin untuk memvalidasi hari libur HolidayBalanceMonthlyUpdate=Pembaruan bulanan saldo liburan XIsAUsualNonWorkingDay=%s biasanya bukan hari kerja +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/id_ID/knowledgemanagement.lang b/htdocs/langs/id_ID/knowledgemanagement.lang index 19750699b28..640e4c857f0 100644 --- a/htdocs/langs/id_ID/knowledgemanagement.lang +++ b/htdocs/langs/id_ID/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields untuk Artikel GroupOfTicket=Kelompok tiket YouCanLinkArticleToATicketCategory=Anda dapat menautkan artikel ke grup tiket (sehingga artikel akan disarankan selama kualifikasi tiket baru) SuggestedForTicketsInGroup=Disarankan untuk tiket saat grup + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/id_ID/mrp.lang b/htdocs/langs/id_ID/mrp.lang index 346baca23b3..044dce1d6e2 100644 --- a/htdocs/langs/id_ID/mrp.lang +++ b/htdocs/langs/id_ID/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Anda yakin ingin mengkloning bill of material %s ? ConfirmCloneMo=Yakin ingin mengkloning Pesanan Manufaktur %s? ManufacturingEfficiency=Efisiensi manufaktur ConsumptionEfficiency=Efisiensi konsumsi -ValueOfMeansLoss=Nilai 0,95 berarti rata-rata kerugian 5%% selama produksi +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Nilai 0,95 berarti rata-rata 5%% dari kehilangan produk yang dihasilkan DeleteBillOfMaterials=Hapus Bill Of Material DeleteMo=Hapus Pesanan Pembuatan diff --git a/htdocs/langs/id_ID/other.lang b/htdocs/langs/id_ID/other.lang index 190810660ff..477ca55a00a 100644 --- a/htdocs/langs/id_ID/other.lang +++ b/htdocs/langs/id_ID/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Proyek dibuat oleh kolektor email dari email MSGI TicketCreatedByEmailCollector=Tiket dibuat oleh kolektor email dari email MSGID %s OpeningHoursFormatDesc=Gunakan a - untuk memisahkan jam buka dan tutup.
Gunakan spasi untuk memasukkan rentang yang berbeda.
Contoh: 8-12 14-18 SuffixSessionName=Akhiran untuk nama sesi +LoginWith=Login with %s ##### Export ##### ExportsArea=Area ekspor diff --git a/htdocs/langs/id_ID/products.lang b/htdocs/langs/id_ID/products.lang index c5852e2c840..d35bc34af19 100644 --- a/htdocs/langs/id_ID/products.lang +++ b/htdocs/langs/id_ID/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=BOM default direkomendasikan untuk digunakan untuk memproduksi pr Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/id_ID/projects.lang b/htdocs/langs/id_ID/projects.lang index 3434f65fb93..7f70ebfff40 100644 --- a/htdocs/langs/id_ID/projects.lang +++ b/htdocs/langs/id_ID/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Masukan per bulan InputDetail=Detail input TimeAlreadyRecorded=Ini adalah waktu yang dihabiskan yang sudah direkam untuk tugas / hari ini dan pengguna %s ProjectsWithThisUserAsContact=Proyek dengan pengguna ini sebagai kontak +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tugas yang ditugaskan untuk pengguna ini ResourceNotAssignedToProject=Tidak ditugaskan ke proyek ResourceNotAssignedToTheTask=Tidak ditugaskan untuk tugas itu @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Catatan: progres proyek yang ad SelectLinesOfTimeSpentToInvoice=Pilih baris waktu yang dihabiskan yang belum ditagih, lalu tindakan massal "Buat Faktur" untuk menagihnya ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/id_ID/receptions.lang b/htdocs/langs/id_ID/receptions.lang index fa4b7ec9b2e..704c7d5eae4 100644 --- a/htdocs/langs/id_ID/receptions.lang +++ b/htdocs/langs/id_ID/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Pengaturan Penerimaan Produk +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. penerimaan Reception=Penerimaan Receptions=Penerimaan @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Penerimaan dan tanda terima untuk pesanan ini ReceptionsToValidate=Penerimaan untuk divalidasi StatusReceptionCanceled=Dibatalkan StatusReceptionDraft=Konsep -StatusReceptionValidated=Divalidasi (produk untuk dikirim atau pun sudah dikirim) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Diproses StatusReceptionDraftShort=Konsep StatusReceptionValidatedShort=Divalidasi @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistik yang dilakukan pada penerimaan hanya ya SendReceptionByEMail=Kirim penerimaan melalui email SendReceptionRef=Pengajuan penerimaan %s ActionsOnReception=Agenda penerimaan -ReceptionCreationIsDoneFromOrder=Untuk sementara pembuatan penerimaan baru dilakukan dari record Purchase Order. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Jalur penerimaan ProductQtyInReceptionAlreadySent=Kuantitas produk dari pesanan penjualan terbuka sudah dikirim ProductQtyInSuppliersReceptionAlreadyRecevied=Kuantitas produk dari pesanan pemasok terbuka sudah diterima @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Templat dokumen untuk penerimaan NoMorePredefinedProductToDispatch=Tidak ada lagi produk yang telah ditentukan untuk dikirim ReceptionExist=Resepsi ada ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/is_IS/admin.lang b/htdocs/langs/is_IS/admin.lang index 80888a265af..540d764bad6 100644 --- a/htdocs/langs/is_IS/admin.lang +++ b/htdocs/langs/is_IS/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Foundation Version=Útgáfa Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=Skref %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/is_IS/bills.lang b/htdocs/langs/is_IS/bills.lang index 4b72ab71e04..53e0f52fe37 100644 --- a/htdocs/langs/is_IS/bills.lang +++ b/htdocs/langs/is_IS/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Greiðslur skýrslur PaymentsAlreadyDone=Greiðslur gert þegar PaymentsBackAlreadyDone=Refunds already done PaymentRule=Greiðsla regla -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Drög PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bankaupplýsingar BankCode=Bankakóði DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/is_IS/blockedlog.lang b/htdocs/langs/is_IS/blockedlog.lang index ffd835ef987..640c554f575 100644 --- a/htdocs/langs/is_IS/blockedlog.lang +++ b/htdocs/langs/is_IS/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/is_IS/errors.lang b/htdocs/langs/is_IS/errors.lang index e91f653c8b4..a6d3ae56134 100644 --- a/htdocs/langs/is_IS/errors.lang +++ b/htdocs/langs/is_IS/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Þessi tengiliður er nú þegar skil ErrorCashAccountAcceptsOnlyCashMoney=Þessi bankareikningur er reiðufé reikning, svo tekur það greiðslur af gerðinni reiðufé eingöngu. ErrorFromToAccountsMustDiffers=Heimild og markmið bankareikninga verður að vera annað. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad setningafræði fyrir kóða viðskiptavina ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Viðskiptavinur númer sem þarf @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/is_IS/eventorganization.lang b/htdocs/langs/is_IS/eventorganization.lang index bf722d95752..9f77c86f78a 100644 --- a/htdocs/langs/is_IS/eventorganization.lang +++ b/htdocs/langs/is_IS/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/is_IS/holiday.lang b/htdocs/langs/is_IS/holiday.lang index a9be3602be0..2afc9da4ad8 100644 --- a/htdocs/langs/is_IS/holiday.lang +++ b/htdocs/langs/is_IS/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/is_IS/knowledgemanagement.lang b/htdocs/langs/is_IS/knowledgemanagement.lang index 073f67a783e..446c2586083 100644 --- a/htdocs/langs/is_IS/knowledgemanagement.lang +++ b/htdocs/langs/is_IS/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/is_IS/mrp.lang b/htdocs/langs/is_IS/mrp.lang index 416e9c1bebf..ce5eab945ef 100644 --- a/htdocs/langs/is_IS/mrp.lang +++ b/htdocs/langs/is_IS/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/is_IS/other.lang b/htdocs/langs/is_IS/other.lang index 5bccef3d2b8..84da72c8bac 100644 --- a/htdocs/langs/is_IS/other.lang +++ b/htdocs/langs/is_IS/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Útflutningur area diff --git a/htdocs/langs/is_IS/products.lang b/htdocs/langs/is_IS/products.lang index be271a2361c..65cbfc8d55f 100644 --- a/htdocs/langs/is_IS/products.lang +++ b/htdocs/langs/is_IS/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/is_IS/projects.lang b/htdocs/langs/is_IS/projects.lang index 21c8bc9f7cc..dda11fdbe0e 100644 --- a/htdocs/langs/is_IS/projects.lang +++ b/htdocs/langs/is_IS/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/is_IS/receptions.lang b/htdocs/langs/is_IS/receptions.lang index aa5882b0c97..aafe2194c3a 100644 --- a/htdocs/langs/is_IS/receptions.lang +++ b/htdocs/langs/is_IS/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Á ferli Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Hætt við StatusReceptionDraft=Drög -StatusReceptionValidated=Staðfestar (vörur til skip eða þegar flutt) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Afgreitt StatusReceptionDraftShort=Drög StatusReceptionValidatedShort=Staðfest @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/it_CH/admin.lang b/htdocs/langs/it_CH/admin.lang new file mode 100644 index 00000000000..9bfd4f12f48 --- /dev/null +++ b/htdocs/langs/it_CH/admin.lang @@ -0,0 +1,7 @@ +# 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 +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/it_CH/companies.lang b/htdocs/langs/it_CH/companies.lang new file mode 100644 index 00000000000..40b5f885e43 --- /dev/null +++ b/htdocs/langs/it_CH/companies.lang @@ -0,0 +1,7 @@ +# Dolibarr language file - Source file is en_US - companies +ProfId1CM=Id. prof. 1 (Trade Register) +ProfId2CM=Id. prof. 2 (Taxpayer No.) +ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1ShortCM=Trade Register +ProfId2ShortCM=Taxpayer No. +ProfId3ShortCM=Decree of creation diff --git a/htdocs/langs/it_IT/accountancy.lang b/htdocs/langs/it_IT/accountancy.lang index d2d89538dfd..9e3b6ed7f2d 100644 --- a/htdocs/langs/it_IT/accountancy.lang +++ b/htdocs/langs/it_IT/accountancy.lang @@ -4,30 +4,30 @@ Accounting=Contabilità ACCOUNTING_EXPORT_SEPARATORCSV=Separatore delle colonne nel file di esportazione ACCOUNTING_EXPORT_DATE=Formato della data per i file di esportazione ACCOUNTING_EXPORT_PIECE=Esporta il numero di pezzi -ACCOUNTING_EXPORT_GLOBAL_ACCOUNT=Esporta con account globale +ACCOUNTING_EXPORT_GLOBAL_ACCOUNT=Esporta con conto globale ACCOUNTING_EXPORT_LABEL=Esporta etichetta -ACCOUNTING_EXPORT_AMOUNT=Esporta importo +ACCOUNTING_EXPORT_AMOUNT=Importo dell'esportazione ACCOUNTING_EXPORT_DEVISE=Esporta valuta Selectformat=Scegli il formato del file -ACCOUNTING_EXPORT_FORMAT=Scegli il formato del file +ACCOUNTING_EXPORT_FORMAT=Seleziona il formato per il file ACCOUNTING_EXPORT_ENDLINE=Seleziona il tipo di ritorno a capo -ACCOUNTING_EXPORT_PREFIX_SPEC=Specifica il prefisso per il nome del file +ACCOUNTING_EXPORT_PREFIX_SPEC=Specificare il prefisso per il nome del file ThisService=Questo servizio ThisProduct=Questo prodotto DefaultForService=Predefinito per servizio DefaultForProduct=Predefinito per prodotto -ProductForThisThirdparty=Product for this thirdparty +ProductForThisThirdparty=Prodotto per questa terza parte ServiceForThisThirdparty=Servizi per questo soggetto terzo CantSuggest=Non posso suggerire AccountancySetupDoneFromAccountancyMenu=La maggior parte del setup della contabilità è effettuata dal menù %s -ConfigAccountingExpert=Configuration of the module accounting (double entry) +ConfigAccountingExpert=Configurazione del modulo contabilità (doppia partita) Journalization=Giornali Journals=Giornali JournalFinancial=Giornali finanziari BackToChartofaccounts=Ritorna alla lista dell'account Chartofaccounts=Piano dei conti -ChartOfSubaccounts=Chart of individual accounts -ChartOfIndividualAccountsOfSubsidiaryLedger=Chart of individual accounts of the subsidiary ledger +ChartOfSubaccounts=Piano dei conti individuali +ChartOfIndividualAccountsOfSubsidiaryLedger=Piano dei conti individuali del libro mastro sussidiario CurrentDedicatedAccountingAccount=Attuale account dedicato AssignDedicatedAccountingAccount=Nuovo account da assegnare InvoiceLabel=Etichetta fattura @@ -37,8 +37,8 @@ OtherInfo=Altre informazioni DeleteCptCategory=Rimuovi conto corrente dal gruppo ConfirmDeleteCptCategory=Sei sicuro di voler rimuovere questo account contabile dal gruppo di account contabilità? JournalizationInLedgerStatus=Stato delle registrazioni -AlreadyInGeneralLedger=Already transferred to accounting journals and ledger -NotYetInGeneralLedger=Not yet transferred to accouting journals and ledger +AlreadyInGeneralLedger=Già trasferito su giornali e libri contabili contabili +NotYetInGeneralLedger=Non ancora trasferito ai giornali di contabilità e al libro mastro GroupIsEmptyCheckSetup=Il gruppo è vuoto, controlla le impostazioni del gruppo personalizzato di contabilità DetailByAccount=Mostra dettagli dall'account AccountWithNonZeroValues=Account con valori non-zero @@ -47,11 +47,11 @@ CountriesInEEC=Paesi nella CEE CountriesNotInEEC=Paesi al di fuori della CEE CountriesInEECExceptMe=Paesi nella CEE eccetto %s CountriesExceptMe=Tutti i paesi eccetto %s -AccountantFiles=Export source documents -ExportAccountingSourceDocHelp=With this tool, you can export the source events (list in CSV and PDFs) that are used to generate your accountancy. -ExportAccountingSourceDocHelp2=To export your journals, use the menu entry %s - %s. -VueByAccountAccounting=View by accounting account -VueBySubAccountAccounting=View by accounting subaccount +AccountantFiles=Esporta documenti di origine +ExportAccountingSourceDocHelp=Con questo strumento puoi esportare gli eventi di origine (elenco in CSV e PDF) utilizzati per generare la tua contabilità. +ExportAccountingSourceDocHelp2=Per esportare i tuoi diari, usa la voce di menu %s - %s. +VueByAccountAccounting=Visualizza per conto contabile +VueBySubAccountAccounting=Visualizza per conto secondario contabile MainAccountForCustomersNotDefined=Account principale di contabilità per i clienti non definito nel setup MainAccountForSuppliersNotDefined=Account principale di contabilità per fornitori non definito nel setup @@ -87,7 +87,7 @@ AccountancyAreaDescAnalyze=STEP %s: Aggiunti o modifica le transazioni esistenti AccountancyAreaDescClosePeriod=STEP %s: Chiudo il periodo così non verranno fatte modifiche in futuro. -TheJournalCodeIsNotDefinedOnSomeBankAccount=A mandatory step in setup has not been completed (accounting code journal not defined for all bank accounts) +TheJournalCodeIsNotDefinedOnSomeBankAccount=Un passaggio obbligatorio nella configurazione non è stato completato (giornale di registrazione dei codici contabili non definito per tutti i conti bancari) Selectchartofaccounts=Seleziona il piano dei conti attivo ChangeAndLoad=Cambia e carica Addanaccount=Aggiungi un conto di contabilità @@ -97,8 +97,8 @@ SubledgerAccount=Conto del registro secondario SubledgerAccountLabel=Etichetta del conto Registro secondario ShowAccountingAccount=Mostra conti di contabilità ShowAccountingJournal=Mostra diario contabile -ShowAccountingAccountInLedger=Show accounting account in ledger -ShowAccountingAccountInJournals=Show accounting account in journals +ShowAccountingAccountInLedger=Mostra conto contabile nel libro mastro +ShowAccountingAccountInJournals=Mostra conto contabile nei giornali di registrazione AccountAccountingSuggest=Conto suggerito per contabilità MenuDefaultAccounts=Conti predefiniti MenuBankAccounts=Conti bancari @@ -120,7 +120,7 @@ ExpenseReportsVentilation=Associa nota spese CreateMvts=Crea nuova transazione UpdateMvts=Modifica una transazione ValidTransaction=Valida transazione -WriteBookKeeping=Register transactions in accounting +WriteBookKeeping=Registra le transazioni in contabilità Bookkeeping=Libro contabile BookkeepingSubAccount=Subledger AccountBalance=Saldo @@ -132,7 +132,7 @@ InvoiceLinesDone=Righe di fatture bloccate ExpenseReportLines=Linee di note spese da associare ExpenseReportLinesDone=Linee vincolate di note spese IntoAccount=Collega linee con il piano dei conti -TotalForAccount=Total accounting account +TotalForAccount=Conto contabile totale Ventilate=Associa @@ -148,7 +148,7 @@ NotVentilatedinAccount=Non collegato al piano dei conti XLineSuccessfullyBinded=%sprodotti/servizi correttamente collegato ad un piano dei conti XLineFailedToBeBinded=%sprodotti/servizi non collegato a nessun piano dei conti -ACCOUNTING_LIMIT_LIST_VENTILATION=Maximum number of lines on list and bind page (recommended: 50) +ACCOUNTING_LIMIT_LIST_VENTILATION=Numero massimo di righe su elenco e rilegatura (consigliato: 50) ACCOUNTING_LIST_SORT_VENTILATION_TODO=Inizia ad ordinare la pagina "Associazioni da effettuare" dagli elementi più recenti ACCOUNTING_LIST_SORT_VENTILATION_DONE=Inizia ad ordinare la pagina "Associazioni effettuate" dagli elementi più recenti @@ -159,9 +159,9 @@ ACCOUNTING_LENGTH_AACCOUNT=Lunghezza della contabilità di terze parti (se impos ACCOUNTING_MANAGE_ZERO=Consentire di gestire un diverso numero di zeri alla fine di un conto contabile. Necessario in alcuni paesi (come la Svizzera). Se impostato su off (predefinito), è possibile impostare i seguenti due parametri per chiedere all'applicazione di aggiungere zeri virtuali. BANK_DISABLE_DIRECT_INPUT=Disabilita la registrazione diretta della transazione nel conto bancario ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Abilita la bozza di esportazione sul giornale -ACCOUNTANCY_COMBO_FOR_AUX=Enable combo list for subsidiary account (may be slow if you have a lot of third parties, break ability to search on a part of value) -ACCOUNTING_DATE_START_BINDING=Define a date to start binding & transfer in accountancy. Below this date, the transactions will not be transferred to accounting. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=On accountancy transfer, select period show by default +ACCOUNTANCY_COMBO_FOR_AUX=Abilita l'elenco combinato per l'account sussidiario (potrebbe essere lento se hai molte terze parti, interrompere la capacità di cercare su una parte del valore) +ACCOUNTING_DATE_START_BINDING=Definisci una data per iniziare la rilegatura e il trasferimento in contabilità. Al di sotto di tale data, le transazioni non saranno trasferite in contabilità. +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Al momento del trasferimento contabile, selezionare la visualizzazione del periodo per impostazione predefinita ACCOUNTING_SELL_JOURNAL=Giornale Vendite ACCOUNTING_PURCHASE_JOURNAL=Giornale Acquisti @@ -181,7 +181,7 @@ ACCOUNTING_ACCOUNT_SUSPENSE=Conto di contabilità di attesa DONATION_ACCOUNTINGACCOUNT=Conto di contabilità per registrare le donazioni ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Conto contabile per registrare gli abbonamenti -ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Accounting account by default to register customer deposit +ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Conto contabile per impostazione predefinita per registrare il deposito del cliente ACCOUNTING_PRODUCT_BUY_ACCOUNT=Conto di contabilità predefinito per i prodotti acquistati (se non definito nella scheda prodotto) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Conto contabile predefinito per i prodotti acquistati in CEE (usato se non definito nella scheda prodotto) @@ -202,33 +202,33 @@ Docdate=Data Docref=Riferimento LabelAccount=Etichetta conto LabelOperation=Etichetta operazione -Sens=Direction -AccountingDirectionHelp=For an accounting account of a customer, use Credit to record a payment you have received
For an accounting account of a supplier, use Debit to record a payment you made +Sens=Direzione +AccountingDirectionHelp=Per un conto contabile di un cliente, usa Credito per registrare un pagamento che hai ricevuto
Per un conto contabile di un fornitore, usa Addebito per registrare un pagamento che hai effettuato LetteringCode=Codice impressioni Lettering=Impressioni Codejournal=Giornale JournalLabel=Etichetta del giornale NumPiece=Numero del pezzo TransactionNumShort=Num. transazione -AccountingCategory=Custom group -GroupByAccountAccounting=Group by general ledger account -GroupBySubAccountAccounting=Group by subledger account +AccountingCategory=Gruppo personalizzato +GroupByAccountAccounting=Raggruppa per conto di contabilità generale +GroupBySubAccountAccounting=Raggruppa per conto subledger AccountingAccountGroupsDesc=Qui puoi definire alcuni gruppi di conti contabili. Saranno utilizzati per rapporti contabili personalizzati. ByAccounts=Per conto ByPredefinedAccountGroups=Per gruppi predefiniti ByPersonalizedAccountGroups=Gruppi personalizzati ByYear=Per anno NotMatch=Non impostato -DeleteMvt=Delete some operation lines from accounting +DeleteMvt=Elimina alcune righe di operazione dalla contabilità DelMonth=Mese da cancellare DelYear=Anno da cancellare DelJournal=Giornale da cancellare -ConfirmDeleteMvt=This will delete all operation lines of the accounting for the year/month and/or for a specific journal (At least one criterion is required). You will have to reuse the feature '%s' to have the deleted record back in the ledger. -ConfirmDeleteMvtPartial=This will delete the transaction from the accounting (all operation lines related to the same transaction will be deleted) +ConfirmDeleteMvt=Ciò cancellerà tutte le righe operative della contabilità per l'anno/mese e/o per un giornale di registrazione specifico (è richiesto almeno un criterio). Dovrai riutilizzare la funzione '%s' per riportare il record eliminato nel libro mastro. +ConfirmDeleteMvtPartial=Ciò cancellerà la transazione dalla contabilità (tutte le righe di operazione relative alla stessa transazione verranno eliminate) FinanceJournal=Giornale delle finanze ExpenseReportsJournal=Rapporto spese DescFinanceJournal=Giornale finanziario che include tutti i tipi di pagamenti per conto bancario -DescJournalOnlyBindedVisible=This is a view of record that are bound to an accounting account and can be recorded into the Journals and Ledger. +DescJournalOnlyBindedVisible=Questa è una vista di registrazione che è vincolata a un conto contabile e può essere registrata nei giornali e nel libro mastro. VATAccountNotDefined=Conto per IVA non definito ThirdpartyAccountNotDefined=Conto per terze parti non definito ProductAccountNotDefined=Account per prodotto non definito @@ -246,15 +246,15 @@ DescThirdPartyReport=Consulta qui l'elenco dei clienti e fornitori di terze part ListAccounts=Lista delle voci del piano dei conti UnknownAccountForThirdparty=Conto di terze parti sconosciuto. Useremo %s UnknownAccountForThirdpartyBlocking=Conto di terze parti sconosciuto. Errore di blocco -ThirdpartyAccountNotDefinedOrThirdPartyUnknown=Subledger account not defined or third party or user unknown. We will use %s +ThirdpartyAccountNotDefinedOrThirdPartyUnknown=Account subledger non definito o di terze parti o utente sconosciuto. Useremo %s ThirdpartyAccountNotDefinedOrThirdPartyUnknownSubledgerIgnored=Terze parti sconosciuta e sottoconti non definiti nel pagamento. Manterremo vuoto il valore sottoconto dell'account. -ThirdpartyAccountNotDefinedOrThirdPartyUnknownBlocking=Subledger account not defined or third party or user unknown. Blocking error. +ThirdpartyAccountNotDefinedOrThirdPartyUnknownBlocking=Account subledger non definito o di terze parti o utente sconosciuto. Errore di blocco. UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking=Unknown third-party account and waiting account not defined. Blocking error PaymentsNotLinkedToProduct=Payment not linked to any product / service OpeningBalance=Saldo di apertura ShowOpeningBalance=Mostra bilancio di apertura HideOpeningBalance=Nascondi bilancio di apertura -ShowSubtotalByGroup=Show subtotal by level +ShowSubtotalByGroup=Mostra il totale parziale per livello Pcgtype=Gruppo di conto PcgtypeDesc=Il gruppo di conti viene utilizzato come criterio 'filtro' e 'raggruppamento' predefiniti per alcuni report contabili. Ad esempio, "REDDITO" o "SPESA" sono utilizzati come gruppi per la contabilità dei prodotti per creare il rapporto spese / entrate. @@ -277,16 +277,16 @@ DescVentilExpenseReport=Consult here the list of expense report lines bound (or DescVentilExpenseReportMore=If you setup accounting account on type of expense report lines, the application will be able to make all the binding between your expense report lines and the accounting account of your chart of accounts, just in one click with the button "%s". If account was not set on fees dictionary or if you still have some lines not bound to any account, you will have to make a manual binding from the menu "%s". DescVentilDoneExpenseReport=Consult here the list of the lines of expenses reports and their fees accounting account -Closure=Annual closure +Closure=Chiusura annuale DescClosure=Consultare qui il numero di movimenti per mese che non sono stati convalidati e gli anni fiscali già aperti OverviewOfMovementsNotValidated=Passaggio 1 / Panoramica dei movimenti non convalidati. (Necessario per chiudere un anno fiscale) -AllMovementsWereRecordedAsValidated=All movements were recorded as validated -NotAllMovementsCouldBeRecordedAsValidated=Not all movements could be recorded as validated +AllMovementsWereRecordedAsValidated=Tutti i movimenti sono stati registrati come convalidati +NotAllMovementsCouldBeRecordedAsValidated=Non tutti i movimenti possono essere registrati come convalidati ValidateMovements=Convalida i movimenti DescValidateMovements=Qualsiasi modifica o cancellazione di scrittura, lettura e cancellazione sarà vietata. Tutte le voci per un esercizio devono essere convalidate altrimenti la chiusura non sarà possibile ValidateHistory=Collega automaticamente -AutomaticBindingDone=Automatic bindings done (%s) - Automatic binding not possible for some record (%s) +AutomaticBindingDone=Associazioni automatiche eseguite (%s) - Associazioni automatiche non possibili per alcuni record (%s) ErrorAccountancyCodeIsAlreadyUse=Errore, non puoi cancellare la voce del piano dei conti perché è utilizzata MvtNotCorrectlyBalanced=Movement not correctly balanced. Debit = %s | Credit = %s @@ -298,13 +298,13 @@ NoNewRecordSaved=No more record to journalize ListOfProductsWithoutAccountingAccount=Lista di prodotti non collegati a nessun piano dei conti ChangeBinding=Cambia il piano dei conti Accounted=Accounted in ledger -NotYetAccounted=Not yet transferred to accounting +NotYetAccounted=Non ancora trasferito in contabilità ShowTutorial=Mostra tutorial NotReconciled=Non conciliata -WarningRecordWithoutSubledgerAreExcluded=Warning, all operations without subledger account defined are filtered and excluded from this view +WarningRecordWithoutSubledgerAreExcluded=Avvertenza, tutte le operazioni senza account subledger definito vengono filtrate ed escluse da questa visualizzazione ## Admin -BindingOptions=Binding options +BindingOptions=Opzioni di rilegatura ApplyMassCategories=Applica categorie di massa AddAccountFromBookKeepingWithNoCategories=Available account not yet in the personalized group CategoryDeleted=Category for the accounting account has been removed @@ -324,14 +324,14 @@ ErrorAccountingJournalIsAlreadyUse=Questo giornale è già in uso AccountingAccountForSalesTaxAreDefinedInto=Note: Accounting account for Sales tax are defined into menu %s - %s NumberOfAccountancyEntries=Number of entries NumberOfAccountancyMovements=Number of movements -ACCOUNTING_DISABLE_BINDING_ON_SALES=Disable binding & transfer in accountancy on sales (customer invoices will not be taken into account in accounting) -ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=Disable binding & transfer in accountancy on purchases (vendor invoices will not be taken into account in accounting) -ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Disable binding & transfer in accountancy on expense reports (expense reports will not be taken into account in accounting) +ACCOUNTING_DISABLE_BINDING_ON_SALES=Disabilita vincolante e trasferimento in contabilità sulle vendite (le fatture dei clienti non verranno prese in considerazione in contabilità) +ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=Disabilita vincolante e trasferimento in contabilità sugli acquisti (le fatture fornitore non verranno prese in considerazione in contabilità) +ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Disabilita binding e trasferimento in contabilità sulle note spese (le note spese non verranno prese in considerazione in contabilità) ## Export -NotifiedExportDate=Flag exported lines as exported (modification of the lines will not be possible) -NotifiedValidationDate=Validate the exported entries (modification or deletion of the lines will not be possible) -ConfirmExportFile=Confirmation of the generation of the accounting export file ? +NotifiedExportDate=Contrassegna le righe esportate come esportate (la modifica delle righe non sarà possibile) +NotifiedValidationDate=Convalidare le voci esportate (non sarà possibile modificare o eliminare le righe) +ConfirmExportFile=Conferma della generazione del file di esportazione contabile? ExportDraftJournal=Export draft journal Modelcsv=Modello di esportazione Selectmodelcsv=Seleziona un modello di esportazione @@ -339,22 +339,22 @@ Modelcsv_normal=Esportazione classica Modelcsv_CEGID=Export for CEGID Expert Comptabilité Modelcsv_COALA=Export for Sage Coala Modelcsv_bob50=Export for Sage BOB 50 -Modelcsv_ciel=Export for Sage50, Ciel Compta or Compta Evo. (Format XIMPORT) +Modelcsv_ciel=Esporta per Sage50, Ciel Compta o Compta Evo. (Formato XIMPORT) Modelcsv_quadratus=Export for Quadratus QuadraCompta Modelcsv_ebp=Export for EBP Modelcsv_cogilog=Export for Cogilog -Modelcsv_agiris=Export for Agiris Isacompta +Modelcsv_agiris=Export per Agiris Isacompta Modelcsv_LDCompta=Esporta per LD Compta (v9) (Test) Modelcsv_LDCompta10=Esporta per LD Compta (v10 e successive) Modelcsv_openconcerto=Export for OpenConcerto (Test) Modelcsv_configurable=Export CSV Configurable Modelcsv_FEC=Export FEC -Modelcsv_FEC2=Export FEC (With dates generation writing / document reversed) +Modelcsv_FEC2=Esporta FEC (con scrittura di generazione delle date / documento invertito) Modelcsv_Sage50_Swiss=Export for Sage 50 Switzerland -Modelcsv_winfic=Export for Winfic - eWinfic - WinSis Compta -Modelcsv_Gestinumv3=Export for Gestinum (v3) -Modelcsv_Gestinumv5=Export for Gestinum (v5) -Modelcsv_charlemagne=Export for Aplim Charlemagne +Modelcsv_winfic=Esporta per Winfic - eWinfic - WinSis Compta +Modelcsv_Gestinumv3=Esporta per Gestinum (v3) +Modelcsv_Gestinumv5=Esporta per Gestinum (v5) +Modelcsv_charlemagne=Esporta per Aplim Carlo Magno ChartofaccountsId=Id Piano dei Conti ## Tools - Init accounting account on product / service @@ -387,8 +387,8 @@ SaleExport=Export sale SaleEEC=Sale in EEC SaleEECWithVAT=Vendita in CEE con IVA non nulla, quindi supponiamo che questa NON sia una vendita intracomunitaria e l'account suggerito sia l'account standard del prodotto. SaleEECWithoutVATNumber=La vendita nella CEE senza IVA ma la partita IVA di terzi non è definita. Eseguiamo il fallback sull'account del prodotto per le vendite standard. È possibile correggere l'ID IVA di terze parti o l'account del prodotto, se necessario. -ForbiddenTransactionAlreadyExported=Forbidden: The transaction has been validated and/or exported. -ForbiddenTransactionAlreadyValidated=Forbidden: The transaction has been validated. +ForbiddenTransactionAlreadyExported=Vietato: la transazione è stata convalidata e/o esportata. +ForbiddenTransactionAlreadyValidated=Vietato: la transazione è stata convalidata. ## Dictionary Range=Range of accounting account Calculated=Calcolato @@ -405,33 +405,33 @@ NoJournalDefined=No journal defined Binded=Linee collegate ToBind=Linee da vincolare UseMenuToSetBindindManualy=Lines not yet bound, use menu %s to make the binding manually -SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Sorry this module is not compatible with the experimental feature of situation invoices +SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Spiacenti, questo modulo non è compatibile con la funzione sperimentale delle fatture di situazione ## Import ImportAccountingEntries=Accounting entries -ImportAccountingEntriesFECFormat=Accounting entries - FEC format -FECFormatJournalCode=Code journal (JournalCode) -FECFormatJournalLabel=Label journal (JournalLib) -FECFormatEntryNum=Piece number (EcritureNum) -FECFormatEntryDate=Piece date (EcritureDate) -FECFormatGeneralAccountNumber=General account number (CompteNum) -FECFormatGeneralAccountLabel=General account label (CompteLib) -FECFormatSubledgerAccountNumber=Subledger account number (CompAuxNum) -FECFormatSubledgerAccountLabel=Subledger account number (CompAuxLib) -FECFormatPieceRef=Piece ref (PieceRef) -FECFormatPieceDate=Piece date creation (PieceDate) -FECFormatLabelOperation=Label operation (EcritureLib) -FECFormatDebit=Debit (Debit) -FECFormatCredit=Credit (Credit) -FECFormatReconcilableCode=Reconcilable code (EcritureLet) -FECFormatReconcilableDate=Reconcilable date (DateLet) -FECFormatValidateDate=Piece date validated (ValidDate) -FECFormatMulticurrencyAmount=Multicurrency amount (Montantdevise) -FECFormatMulticurrencyCode=Multicurrency code (Idevise) +ImportAccountingEntriesFECFormat=Registrazioni contabili - formato FEC +FECFormatJournalCode=Giornale del codice (JournalCode) +FECFormatJournalLabel=Diario delle etichette (JournalLib) +FECFormatEntryNum=Numero pezzo (EcritureNum) +FECFormatEntryDate=Data pezzo (EcritureDate) +FECFormatGeneralAccountNumber=Numero di conto generale (CompteNum) +FECFormatGeneralAccountLabel=Etichetta account generale (CompteLib) +FECFormatSubledgerAccountNumber=Numero di conto subledger (CompAuxNum) +FECFormatSubledgerAccountLabel=Numero di conto subledger (CompAuxLib) +FECFormatPieceRef=Rif pezzo (PieceRef) +FECFormatPieceDate=Creazione data pezzo (PieceDate) +FECFormatLabelOperation=Operazione etichetta (EcritureLib) +FECFormatDebit=Addebito (addebito) +FECFormatCredit=Credito (Credito) +FECFormatReconcilableCode=Codice riconciliabile (EcritureLet) +FECFormatReconcilableDate=Data riconciliabile (DateLet) +FECFormatValidateDate=Data pezzo convalidata (ValidDate) +FECFormatMulticurrencyAmount=Importo multivaluta (Montantdevise) +FECFormatMulticurrencyCode=Codice multivaluta (Idevise) DateExport=Date export WarningReportNotReliable=Warning, this report is not based on the Ledger, so does not contains transaction modified manually in the Ledger. If your journalization is up to date, the bookkeeping view is more accurate. ExpenseReportJournal=Expense Report Journal InventoryJournal=Inventory Journal -NAccounts=%s accounts +NAccounts=%s account diff --git a/htdocs/langs/it_IT/admin.lang b/htdocs/langs/it_IT/admin.lang index ee46f92edc2..e2632df530a 100644 --- a/htdocs/langs/it_IT/admin.lang +++ b/htdocs/langs/it_IT/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Stampa il riferimento e il periodo dell'articolo del prodotto in PDF +BoldLabelOnPDF=Stampa l'etichetta dell'articolo del prodotto in grassetto in PDF Foundation=Fondazione Version=Versione Publisher=Editore @@ -87,7 +87,7 @@ NumberOfBytes=Number of Bytes SearchString=Search string NotAvailableWhenAjaxDisabled=Non disponibile quando Ajax è disabilitato 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 +TimesheetPreventAfterFollowingMonths=Impedisci il tempo di registrazione trascorso dopo il seguente numero di mesi JavascriptDisabled=JavaScript disattivato UsePreviewTabs=Utilizza i tabs per l'anteprima ShowPreview=Vedi anteprima @@ -120,7 +120,7 @@ MultiCurrencySetup=Impostazioni multi-valuta MenuLimits=Limiti e precisione MenuIdParent=Capogruppo dal menu ID DetailMenuIdParent=ID del menu principale (0 per un menu in alto) -ParentID=Parent ID +ParentID=ID genitore DetailPosition=Ordina per definire il numero di posizione del menu AllMenus=Tutti NotConfigured= Modulo/Applicazione non configurato @@ -161,8 +161,8 @@ SystemToolsAreaDesc=Questa area fornisce funzioni di amministrazione. Usa il men Purge=Pulizia 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=Eliminia il file log, compreso %s definito per il modulo Syslog (nessun rischio di perdita di dati) -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) +PurgeDeleteTemporaryFiles=Elimina tutti i file di registro e temporanei (nessun rischio di perdita di dati). Il parametro può essere 'tempfilesold', 'logfiles' o entrambi 'tempfilesold+logfiles'. Nota: l'eliminazione dei file temporanei viene eseguita solo se la directory temporanea è stata creata più di 24 ore fa. +PurgeDeleteTemporaryFilesShort=Elimina log e file temporanei (nessun rischio di perdita di dati) 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. PurgeRunNow=Procedo all'eliminazione PurgeNothingToDelete=Nessuna directory o file da eliminare. @@ -212,7 +212,7 @@ FeatureAvailableOnlyOnStable=Feature disponibile solo nelle versioni stabili uff BoxesDesc=I Widgets sono componenti che personalizzano le pagine aggiungendo delle informazioni.\nPuoi scegliere se mostrare il widget o meno cliccando 'Attiva' sulla la pagina di destinazione, o cliccando sul cestino per disattivarlo. OnlyActiveElementsAreShown=Vengono mostrati solo gli elementi relativi ai moduli attivi . ModulesDesc=I moduli / applicazioni determinano quali funzionalità sono disponibili nel software. Alcuni moduli richiedono autorizzazioni da concedere agli utenti dopo l'attivazione del modulo stesso. Fare clic sul pulsante on / off %s (alla fine della riga del modulo) per abilitare / disabilitare un modulo / un'applicazione. -ModulesDesc2=Click the wheel button %s to configure the module/application. +ModulesDesc2=Fare clic sul pulsante a rotellina %s per configurare il modulo/l'applicazione. ModulesMarketPlaceDesc=Potete trovare altri moduli da scaricare su siti web esterni... 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=Trova app/moduli esterni... @@ -226,7 +226,7 @@ NotCompatible=Questo modulo non sembra essere compatibile con la tua versione di CompatibleAfterUpdate=Questo modulo richiede un aggiornamento a Dolibarr %s (Min %s - Max %s). SeeInMarkerPlace=See in Market place SeeSetupOfModule=Vedi la configurazione del modulo %s -SetOptionTo=Set option %s to %s +SetOptionTo=Imposta l'opzione %s su %s Updated=Aggiornato AchatTelechargement=Aquista / Scarica GoModuleSetupArea=To deploy/install a new module, go to the Module setup area: %s. @@ -240,7 +240,7 @@ BoxesAvailable=Widget disponibili BoxesActivated=Widget attivi ActivateOn=Attiva sul ActiveOn=Attivi sul -ActivatableOn=Activatable on +ActivatableOn=Attivabile su SourceFile=File sorgente AvailableOnlyIfJavascriptAndAjaxNotDisabled=Disponibile solo se JavaScript e Ajax non sono disattivati Required=Richiesto @@ -266,9 +266,9 @@ ReferencedPreferredPartners=Preferred Partners OtherResources=Altre risorse ExternalResources=Risorse esterne SocialNetworks=Social Networks -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 +SocialNetworkId=ID della rete sociale +ForDocumentationSeeWiki=Per la documentazione dell'utente o dello sviluppatore (Doc, FAQ...),
dai un'occhiata al Wiki di Dolibarr:
%s +ForAnswersSeeForum=Per qualsiasi altra domanda/aiuto, puoi usare il forum Dolibarr:
%s HelpCenterDesc1=Here are some resources for getting help and support with Dolibarr. HelpCenterDesc2=Alcune di queste risorse sono disponibili solo in inglese . CurrentMenuHandler=Attuale gestore menu @@ -281,7 +281,7 @@ SpaceX=Spazio X SpaceY=Spazio Y FontSize=Dimensione del testo Content=Contenuto -ContentForLines=Content to display for each product or service (from variable __LINES__ of Content) +ContentForLines=Contenuto da visualizzare per ogni prodotto o servizio (dalla variabile __LINES__ di Contenuto) NoticePeriod=Periodo di avviso NewByMonth=New by month Emails=Email @@ -343,7 +343,7 @@ StepNb=Passo %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=Per distribuire/installare un modulo esterno, è necessario decomprimere/decomprimere il file di archivio nella directory del server dedicata ai moduli esterni:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=La directory root alternativa non è stata associata ad una directory esistente.
InfDirAlt=A partire dalla versione 3 è possibile definire una directory root alternativa. Ciò permette di archiviare plugin e template personalizzati nello stesso posto.
Basta creare una directory nella root di Dolibarr (per esempio: custom).
@@ -355,13 +355,13 @@ LastStableVersion=Ultima versione stabile LastActivationDate=Ultima data di attivazione LastActivationAuthor=Ultimo LastActivationIP=Latest activation IP -LastActivationVersion=Latest activation version +LastActivationVersion=Ultima versione di attivazione UpdateServerOffline=Update server offline WithCounter=Gestisci un contatore -GenericMaskCodes=You may enter any numbering mask. In this mask, the following tags can be used:
{000000} corresponds to a number which will be incremented on each %s. Enter as many zeros as the desired length of the counter. The counter will be completed by zeros from the left in order to have as many zeros as the mask.
{000000+000} same as the previous one but an offset corresponding to the number to the right of the + sign is applied starting on the first %s.
{000000@x} same as the previous one but the counter is reset to zero when month x is reached (x between 1 and 12, or 0 to use the early months of fiscal year defined in your configuration, or 99 to reset to zero every month). If this option is used and x is 2 or higher, then the sequence {yy}{mm} or {yyyy}{mm} is also required.
{dd} day (01 to 31).
{mm} month (01 to 12).
{yy}, {yyyy} or {y} year over 2, 4 or 1 numbers.
-GenericMaskCodes2={cccc} the client code on n characters
{cccc000} the client code on n characters is followed by a counter dedicated to the customer. This counter dedicated to customer is reset at same time as the global counter.
{tttt} The code of third party type on n characters (see menu Home - Setup - Dictionary - Types of third parties). If you add this tag, the counter will be different for each type of third party.
+GenericMaskCodes=Puoi inserire qualsiasi maschera di numerazione. In questa maschera possono essere utilizzati i seguenti tag:
{000000} corrisponde ad un numero che verrà incrementato su ogni %s. Immettere tanti zeri quanti sono la lunghezza desiderata del contatore. Il contatore sarà completato da zeri da sinistra in modo da avere tanti zeri quanti sono la maschera.
{000000+000} uguale al precedente ma viene applicato un offset corrispondente al numero a destra del segno + a partire dal primo %s.
{000000@x} come il precedente ma il contatore viene azzerato quando viene raggiunto il mese x (x compreso tra 1 e 12, oppure 0 per utilizzare i primi mesi dell'anno fiscale definito nella configurazione, oppure 99 per azzera ogni mese). Se viene utilizzata questa opzione e x è 2 o superiore, è richiesta anche la sequenza {yy}{mm} o {yyyy}{mm}.
{dd} giorno (da 01 a 31).
{mm} mese (da 01 a 12). .
+GenericMaskCodes2= {cccc} il codice cliente su n caratteri
{cccc000} il codice cliente su n caratteri è seguito da un contatore dedicato al cliente. Questo contatore dedicato al cliente viene azzerato contemporaneamente al contatore globale.
{tttt} Il codice di terza parte digita su n caratteri (vedi menu Home - Setup - Dizionario - Tipi di terze parti). Se aggiungi questo tag, il contatore sarà diverso per ogni tipo di terza parte.
GenericMaskCodes3=Tutti gli altri caratteri nello schema rimarranno inalterati.
Gli spazi non sono ammessi.
-GenericMaskCodes3EAN=All other characters in the mask will remain intact (except * or ? in 13th position in EAN13).
Spaces are not allowed.
In EAN13, the last character after the last } in 13th position should be * or ? . It will be replaced by the calculated key.
+GenericMaskCodes3EAN=Tutti gli altri caratteri nella maschera rimarranno intatti (tranne * o ? in 13a posizione in EAN13).
Gli spazi non sono consentiti.
In EAN13, l'ultimo carattere dopo l'ultimo } nella 13a posizione dovrebbe essere * o ? . Sarà sostituito dalla chiave calcolata.
GenericMaskCodes4a=Esempio sulla novantanovesima %s del contatto, con la data il 31/01/2007:
GenericMaskCodes4b=Esempio : il 99esimo cliente/fornitore viene creato 31/01/2007:
GenericMaskCodes4c=Esempio su prodotto creato il 2007-03-01:
@@ -378,8 +378,8 @@ UMask=Parametro umask per i nuovi file su Unix/Linux/BSD. UMaskExplanation=Questo parametro consente di definire i permessi impostati di default per i file creati da Dolibarr sul server (per esempio durante il caricamento).
Il valore deve essere ottale (per esempio, 0.666 indica il permesso di lettura e scrittura per tutti).
Questo parametro non si usa sui server Windows. SeeWikiForAllTeam=Take a look at the Wiki page for a list of contributors and their organization UseACacheDelay= Ritardo per il caching di esportazione (0 o vuoto per disabilitare la cache) -DisableLinkToHelpCenter=Hide the link "Need help or support" on the login page -DisableLinkToHelp=Hide the link to the online help "%s" +DisableLinkToHelpCenter=Nascondi il link " Hai bisogno di aiuto o supporto " nella pagina di accesso +DisableLinkToHelp=Nascondi il link alla guida in linea " %s " AddCRIfTooLong=There is no automatic text wrapping, text that is too long will not display on documents. Please add carriage returns in the text area if needed. ConfirmPurge=Are you sure you want to execute this purge?
This will permanently delete all your data files with no way to restore them (ECM files, attached files...). MinLength=Durata minima @@ -389,7 +389,7 @@ ExamplesWithCurrentSetup=Esempi di funzionamento secondo la configurazione attua ListOfDirectories=Elenco delle directory dei modelli OpenDocument ListOfDirectoriesForModelGenODT=Lista di cartelle contenenti file modello in formato OpenDocument.

Inserisci qui il percorso completo delle cartelle.
Digitare un 'Invio' tra ciascuna cartella.
Per aggiungere una cartella del modulo GED, inserire qui DOL_DATA_ROOT/ecm/yourdirectoryname.

I file in quelle cartelle devono terminare con .odt o .ods. NumberOfModelFilesFound=Number of ODT/ODS template files found in these directories -ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\myapp\\mydocumentdir\\mysubdir
/home/myapp/mydocumentdir/mysubdir
DOL_DATA_ROOT/ecm/ecmdir +ExampleOfDirectoriesForModelGen=Esempi di sintassi:
c:\\myapp\\mydocumentdir\\mysubdir
/home/myapp/mydocumentdir/mysubdir
DOL_DATA_ROOT/ecm/ecmdir FollowingSubstitutionKeysCanBeUsed=
Per sapere come creare i modelli di documento odt, prima di salvarli in queste directory, leggere la documentazione wiki: FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Create_an_ODT_document_template FirstnameNamePosition=Posizione del cognome/nome @@ -406,7 +406,7 @@ SecurityToken=Token di sicurezza NoSmsEngine=Nessun gestore mittente SMS disponibile. Un gestore mittente SMS non è installato con la distribuzione predefinita perché dipendono da un fornitore esterno, ma puoi trovarne alcuni su %s PDF=PDF PDFDesc=Opzioni globali per la generazione di PDF -PDFOtherDesc=PDF Option specific to some modules +PDFOtherDesc=PDF Opzione specifica per alcuni moduli PDFAddressForging=Regole per la sezione degli indirizzi HideAnyVATInformationOnPDF=Nascondi tutte le informazioni relative all'IVA sui pdf generati. PDFRulesForSalesTax=Regole per tasse sulla vendita/IVA @@ -421,7 +421,7 @@ UrlGenerationParameters=Parametri di generazione degli indirizzi SecurityTokenIsUnique=Utilizzare un unico parametro securekey per ogni URL EnterRefToBuildUrl=Inserisci la reference per l'oggetto %s GetSecuredUrl=Prendi URL calcolato -ButtonHideUnauthorized=Hide unauthorized action buttons also for internal users (just greyed otherwise) +ButtonHideUnauthorized=Nascondi pulsanti di azione non autorizzati anche per utenti interni (solo in grigio altrimenti) OldVATRates=Vecchia aliquota IVA NewVATRates=Nuova aliquota IVA PriceBaseTypeToChange=Modifica i prezzi con la valuta di base definita. @@ -457,9 +457,9 @@ ExtrafieldParamHelpPassword=Leaving this field blank means this value will be st ExtrafieldParamHelpselect=List of values must be lines with format key,value (where key can't be '0')

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

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

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

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

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

- id_field is necessarly a primary int key
- filtersql is a SQL condition. It can be a simple test (eg active=1) to display only active value
You can also use $ID$ in filter which is the current id of current object
To use a SELECT into the filter use the keyword $SEL$ to bypass anti-injection protection.
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

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

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

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

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

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath
Syntax: ObjectName:Classpath +ExtrafieldParamHelpsellist=L'elenco dei valori proviene da una tabella
Sintassi: table_name:label_field:id_field::filtersql
Esempio: c_typent:libelle:id::filtersql

- id_field è necessariamente una chiave int primaria a0342fccfda10342fccfda19bz0 Può essere un semplice test (es. active=1) per visualizzare solo il valore attivo
Puoi anche usare $ID$ nel filtro che è l'id corrente dell'oggetto corrente
Per usare un SELECT nel filtro usa la parola chiave $SEL$ per bypassare la protezione anti-iniezione.
se vuoi filtrare su extrafield usa la sintassi extra.fieldcode=... (dove field code è il codice di extrafield)

Per avere la lista dipendente da un'altra lista di attributi complementari:
c_typent:libelle:id:options_ parent_list_code |parent_column:filter

Per avere la lista dipendente da un'altra lista:
c_typent:libelle:id: 3parent_list_code a:3parent_list_code a:3parent_list_code a:3parent_list_code a: +ExtrafieldParamHelpchkbxlst=L'elenco dei valori proviene da una tabella
Sintassi: table_name:label_field:id_field::filtersql
Esempio: c_typent:libelle:id::filtersql

Il filtro può essere un semplice test (es. active=1) per visualizzare solo il valore attivo a0342fcc può anche usare $ID$ nel filtro che è l'id corrente dell'oggetto corrente
Per fare un SELECT nel filtro usa $SEL$
se vuoi filtrare su campi extra usa la sintassi extra.fieldcode=... (dove il codice del campo è il codice di extrafield)

per avere la lista seconda altro elenco di attributi complementari:
c_typent: libelle: id: options_ parent_list_code | parent_column: filtro

per avere la lista seconda un'altra lista: c_typent
: libelle:id: parent_list_code |parent_column:filter +ExtrafieldParamHelplink=I parametri devono essere ObjectName:Classpath
Sintassi: ObjectName:Classpath ExtrafieldParamHelpSeparator=Keep empty for a simple separator
Set this to 1 for a collapsing separator (open by default for new session, then status is kept for each user session)
Set this to 2 for a collapsing separator (collapsed by default for new session, then status is kept fore each user session) LibraryToBuildPDF=Libreria utilizzata per generare PDF LocalTaxDesc=Some countries may apply two or three taxes on each invoice line. If this is the case, choose the type for the second and third tax and its rate. Possible type are:
1: local tax apply on products and services without vat (localtax is calculated on amount without tax)
2: local tax apply on products and services including vat (localtax is calculated on amount + main tax)
3: local tax apply on products without vat (localtax is calculated on amount without tax)
4: local tax apply on products including vat (localtax is calculated on amount + main vat)
5: local tax apply on services without vat (localtax is calculated on amount without tax)
6: local tax apply on services including vat (localtax is calculated on amount + tax) @@ -497,14 +497,14 @@ ModuleCompanyCodeCustomerDigitaria=%s seguito dal nome del cliente troncato dal ModuleCompanyCodeSupplierDigitaria=%s seguito dal nome del fornitore troncato dal numero di caratteri: %s per il codice contabile del fornitore. Use3StepsApproval=By default, Purchase Orders need to be created and approved by 2 different users (one step/user to create and one step/user to approve. Note that if user has both permission to create and approve, one step/user will be enough). You can ask with this option to introduce a third step/user approval, if amount is higher than a dedicated value (so 3 steps will be necessary: 1=validation, 2=first approval and 3=second approval if amount is enough).
Set this to empty if one approval (2 steps) is enough, set it to a very low value (0.1) if a second approval (3 steps) is always required. UseDoubleApproval=Utilizzare un'approvazione in 3 passaggi quando l'importo (senza tasse) è superiore a ... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. It is often better to setup outgoing emails to use the email server of your Email Service Provider instead of the default setup for several reasons: -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. +WarningPHPMail=ATTENZIONE: la configurazione per inviare e-mail dall'applicazione utilizza la configurazione generica predefinita. Spesso è meglio configurare le e-mail in uscita per utilizzare il server di posta elettronica del provider di servizi di posta elettronica anziché l'impostazione predefinita per diversi motivi: +WarningPHPMailA=- L'utilizzo del server del provider di servizi di posta elettronica aumenta l'affidabilità della tua e-mail, quindi aumenta la consegna senza essere contrassegnato come SPAM +WarningPHPMailB=- Alcuni provider di servizi di posta elettronica (come Yahoo) non consentono di inviare un'e-mail da un server diverso dal proprio server. La tua configurazione attuale utilizza il server dell'applicazione per inviare e-mail e non il server del tuo provider di posta elettronica, quindi alcuni destinatari (quello compatibile con il protocollo restrittivo DMARC), chiederanno al tuo provider di posta elettronica se possono accettare la tua posta e alcuni provider di posta elettronica (come Yahoo) potrebbe rispondere "no" perché il server non è il loro, quindi alcune delle tue email inviate potrebbero non essere accettate per la consegna (attenzione anche alla quota di invio del tuo provider di posta elettronica). +WarningPHPMailC=- Anche l'utilizzo del server SMTP del tuo provider di servizi di posta elettronica per inviare e-mail è interessante, quindi tutte le e-mail inviate dall'applicazione verranno salvate anche nella directory "Inviati" della tua casella di posta. +WarningPHPMailD=Inoltre, si consiglia quindi di modificare il metodo di invio delle e-mail sul valore "SMTP". Se vuoi davvero mantenere il metodo "PHP" predefinito per inviare e-mail, ignora questo avviso o rimuovilo impostando la costante MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP su 1 in Home - Configurazione - Altro. 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 : %s +WarningPHPMailSPF=Se il nome a dominio dell'indirizzo email del tuo mittente è protetto da un record SPF (chiedi al tuo registar del nome a dominio), devi aggiungere i seguenti IP nel record SPF del DNS del tuo dominio: %s . +ActualMailSPFRecordFound=Trovato record SPF effettivo: %s ClickToShowDescription=Clicca per mostrare la descrizione DependsOn=This module needs the module(s) RequiredBy=Questo modulo è richiesto dal modulo @@ -521,9 +521,9 @@ Field=Campo ProductDocumentTemplates=Document templates to generate product document FreeLegalTextOnExpenseReports=Testo libero sul report di spesa WatermarkOnDraftExpenseReports=Bozze delle note spese filigranate -ProjectIsRequiredOnExpenseReports=The project is mandatory for entering an expense report -PrefillExpenseReportDatesWithCurrentMonth=Pre-fill start and end dates of new expense report with start and end dates of the current month -ForceExpenseReportsLineAmountsIncludingTaxesOnly=Force the entry of expense report amounts always in amount with taxes +ProjectIsRequiredOnExpenseReports=Il progetto è obbligatorio per l'inserimento di una nota spese +PrefillExpenseReportDatesWithCurrentMonth=Precompila le date di inizio e fine della nuova nota spese con le date di inizio e fine del mese corrente +ForceExpenseReportsLineAmountsIncludingTaxesOnly=Forzare l'inserimento degli importi di nota spese sempre in importo con imposte AttachMainDocByDefault=Imposta a 1 se vuoi allegare il documento principale alle email come impostazione predefinita (se applicabile) FilesAttachedToEmail=Allega file SendEmailsReminders=Invia promemoria agenda via email @@ -559,7 +559,7 @@ Module40Desc=Gestione fornitori e acquisti (ordini e fatture) Module42Name=Debug Logs Module42Desc=Strumenti di tracciamento (file, syslog, ...). Questi strumenti sono per scopi tecnici/correzione. Module43Name=Barra di debug -Module43Desc=A tool for developper adding a debug bar in your browser. +Module43Desc=Uno strumento per sviluppatori che aggiungono una barra di debug nel tuo browser. Module49Name=Redazione Module49Desc=Gestione redattori Module50Name=Prodotti @@ -573,11 +573,11 @@ Module53Desc=Gestione servizi Module54Name=Contratti/Abbonamenti Module54Desc=Gestione contratti (servizi o abbonamenti) Module55Name=Codici a barre -Module55Desc=Barcode or QR code management +Module55Desc=Gestione codici a barre o QR code Module56Name=Pagamento con bonifico bancario -Module56Desc=Management of payment of suppliers by Credit Transfer orders. It includes generation of SEPA file for European countries. -Module57Name=Payments by Direct Debit -Module57Desc=Management of Direct Debit orders. It includes generation of SEPA file for European countries. +Module56Desc=Gestione del pagamento dei fornitori tramite ordini di Bonifico. Include la generazione di file SEPA per i paesi europei. +Module57Name=Pagamenti con addebito diretto +Module57Desc=Gestione degli ordini di addebito diretto. Include la generazione di file SEPA per i paesi europei. Module58Name=ClickToDial Module58Desc=Integrazione di un sistema ClickToDial (per esempio Asterisk) Module60Name=Adesivi @@ -613,7 +613,7 @@ Module400Desc=Gestione di progetti ed opportunità. Puoi assegnare ogni elemento Module410Name=Calendario web Module410Desc=Integrazione calendario web Module500Name=Tasse e spese speciali -Module500Desc=Management of other expenses (sales taxes, social or fiscal taxes, dividends, ...) +Module500Desc=Gestione di altre spese (imposta sulle vendite, imposte sociali o fiscali, dividendi, ...) Module510Name=Stipendi Module510Desc=Gestione salari e pagamenti dei dipendenti Module520Name=Prestiti @@ -659,13 +659,13 @@ Module2900Desc=Localizzazione degli accessi tramite GeoIP Maxmind Module3200Name=Archivi inalterabili Module3200Desc=Abilita un registro inalterabile degli eventi aziendali. Gli eventi sono archiviati in tempo reale. Il registro è una tabella di sola lettura degli eventi concatenati che possono essere esportati. Questo modulo potrebbe essere obbligatorio per alcuni paesi. Module3400Name=Social Networks -Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...). +Module3400Desc=Abilita i campi Social Network in terze parti e indirizzi (skype, twitter, facebook, ...). Module4000Name=Risorse umane Module4000Desc=Gestione delle risorse umane (gestione dei dipartimenti e contratti dipendenti) Module5000Name=Multiazienda Module5000Desc=Permette la gestione di diverse aziende -Module6000Name=Inter-modules Workflow -Module6000Desc=Workflow management between different modules (automatic creation of object and/or automatic status change) +Module6000Name=Flusso di lavoro tra moduli +Module6000Desc=Gestione del flusso di lavoro tra i diversi moduli (creazione automatica dell'oggetto e/o cambio automatico dello stato) Module10000Name=Siti web Module10000Desc=Crea siti Web (pubblici) con un editor WYSIWYG. Si tratta di un CMS orientato a webmaster o sviluppatori (richiesta conoscenza di linguaggio HTML e CSS). Basta configurare il proprio server Web (Apache, Nginx, ...) in modo che punti alla directory Dolibarr dedicata per averlo online su Internet con il proprio nome di dominio. Module20000Name=Richieste ferie / permesso @@ -685,13 +685,13 @@ Module50200Desc=Modulo per offrire una pagina di pagamento che accetti pagamenti Module50300Name=Stripe Module50300Desc=Offri ai clienti una pagina di pagamento online Stripe (carte di credito / debito). Questo modulo può essere usato per consentire ai tuoi clienti di effettuare pagamenti ad-hoc o pagamenti relativi a uno specifico oggetto Dolibarr (fattura, ordine ecc ...) Module50400Name=Contabilità (partita doppia) -Module50400Desc=Accounting management (double entries, support General and Subsidiary Ledgers). Export the ledger in several other accounting software formats. +Module50400Desc=Gestione contabile (doppie partite, supporto contabilità generale e sussidiaria). Esporta il libro mastro in molti altri formati di software di contabilità. Module54000Name=PrintIPP Module54000Desc=Direct print (without opening the documents) using Cups IPP interface (Printer must be visible from server, and CUPS must be installed on server). Module55000Name=Sondaggio, Indagine o Votazione Module55000Desc=Modulo per creare sondaggi, indagini o feedback online (Doodle, Studs, Rdvz o simili) Module59000Name=Margini -Module59000Desc=Module to follow margins +Module59000Desc=Modulo per seguire i margini Module60000Name=Commissioni Module60000Desc=Modulo per gestire commissioni Module62000Name=Import-Export @@ -700,7 +700,7 @@ Module63000Name=Risorse Module63000Desc=Gestione risorse (stampanti, automobili, locali, ...) e loro utilizzo all'interno degli eventi Permission11=Vedere le fatture attive Permission12=Creare fatture attive -Permission13=Invalidate customer invoices +Permission13=Invalidare le fatture dei clienti Permission14=Convalidare le fatture attive Permission15=Inviare le fatture attive via email Permission16=Creare pagamenti per fatture attive @@ -717,7 +717,7 @@ Permission32=Creare/modificare prodotti Permission34=Eliminare prodotti Permission36=Vedere/gestire prodotti nascosti Permission38=Esportare prodotti -Permission39=Ignore minimum price +Permission39=Ignora il prezzo minimo Permission41=Read projects and tasks (shared project and projects I'm contact for). Can also enter time consumed, for me or my hierarchy, on assigned tasks (Timesheet) Permission42=Create/modify projects (shared project and projects I'm contact for). Can also create tasks and assign users to project and tasks Permission44=Delete projects (shared project and projects I'm contact for) @@ -726,7 +726,7 @@ Permission61=Vedere gli interventi Permission62=Creare/modificare gli interventi Permission64=Eliminare interventi Permission67=Esportare interventi -Permission68=Send interventions by email +Permission68=Inviare interventi via email Permission69=Convalida interventi Permission70=Riportare in bozza interventi Permission71=Vedere schede membri @@ -751,12 +751,12 @@ Permission95=Vedi resoconti Permission101=Vedere invii Permission102=Creare/modificare spedizioni Permission104=Convalidare spedizioni -Permission105=Send sendings by email +Permission105=Invia invii tramite e-mail Permission106=Esporta gli invii Permission109=Eliminare spedizioni Permission111=Vedere i conti bancari Permission112=Creare/modificare/cancellare e confrontare operazioni bancarie -Permission113=Setup financial accounts (create, manage categories of bank transactions) +Permission113=Imposta conti finanziari (crea, gestisci categorie di transazioni bancarie) Permission114=Riconciliare transazioni Permission115=Operazioni di esportazione ed estratti conto Permission116=Trasferimenti tra conti @@ -765,7 +765,7 @@ Permission121=Vedere soggetti terzi collegati all'utente Permission122=Creare/modificare terzi legati all'utente Permission125=Eliminare terzi legati all'utente Permission126=Esportare terzi -Permission130=Create/modify third parties payment information +Permission130=Crea/modifica le informazioni di pagamento di terze parti Permission141=Read all projects and tasks (also private projects for which I am not a contact) Permission142=Create/modify all projects and tasks (also private projects for which I am not a contact) Permission144=Cancella tutti i progetti e tutti i compiti (anche progetti privati in cui non sono stato insertio come contatto) @@ -827,8 +827,8 @@ PermissionAdvanced253=Creare/modificare utenti interni/esterni e permessi Permission254=Eliminare o disattivare altri utenti Permission255=Cambiare le password di altri utenti Permission256=Eliminare o disabilitare altri utenti -Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is a sale representative).
Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.).
Not effective for projects (only rules on project permissions, visibility and assignment matters). -Permission263=Extend access to all third parties WITHOUT their objects (not only third parties for which the user is a sale representative).
Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.).
Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262=Estendere l'accesso a tutte le terze parti E ai loro oggetti (non solo a terze parti per le quali l'utente è un rappresentante di vendita).
Non efficace per gli utenti esterni (sempre limitato a se stesso per proposte, ordini, fatture, contratti, ecc.).
Non efficace per i progetti (solo regole su autorizzazioni di progetto, visibilità e questioni di assegnazione). +Permission263=Estendere l'accesso a tutte le terze parti SENZA i loro oggetti (non solo a terze parti per le quali l'utente è un rappresentante di vendita).
Non efficace per gli utenti esterni (sempre limitato a se stesso per proposte, ordini, fatture, contratti, ecc.).
Non efficace per i progetti (solo regole su autorizzazioni di progetto, visibilità e questioni di assegnazione). Permission271=Vedere CA Permission272=Vedere fatture Permission273=Emettere fatture @@ -861,10 +861,10 @@ Permission402=Creare/modificare sconti Permission403=Convalidare sconti Permission404=Eliminare sconti Permission430=Usa la barra di debug -Permission511=Read salaries and payments (yours and subordinates) -Permission512=Create/modify salaries and payments -Permission514=Delete salaries and payments -Permission517=Read salaries and payments everybody +Permission511=Leggi stipendi e pagamenti (tuoi e subordinati) +Permission512=Crea/modifica stipendi e pagamenti +Permission514=Elimina stipendi e pagamenti +Permission517=Leggi stipendi e pagamenti a tutti Permission519=Esporta stipendi Permission520=Read Loans Permission522=Crea/modifica prestiti @@ -876,29 +876,29 @@ Permission532=Creare/modificare servizi Permission534=Eliminare servizi Permission536=Vedere/gestire servizi nascosti Permission538=Esportare servizi -Permission561=Read payment orders by credit transfer -Permission562=Create/modify payment order by credit transfer -Permission563=Send/Transmit payment order by credit transfer -Permission564=Record Debits/Rejections of credit transfer -Permission601=Read stickers -Permission602=Create/modify stickers -Permission609=Delete stickers +Permission561=Leggi gli ordini di pagamento tramite bonifico +Permission562=Crea/modifica ordine di pagamento tramite bonifico +Permission563=Invia/Trasmetti ordine di pagamento tramite bonifico +Permission564=Registrare addebiti/rifiuti di bonifici +Permission601=Leggi gli adesivi +Permission602=Crea/modifica adesivi +Permission609=Elimina adesivi Permission650=Read Bills of Materials Permission651=Create/Update Bills of Materials Permission652=Delete Bills of Materials -Permission660=Read Manufacturing Order (MO) -Permission661=Create/Update Manufacturing Order (MO) -Permission662=Delete Manufacturing Order (MO) +Permission660=Leggi l'ordine di produzione (MO) +Permission661=Crea/Aggiorna ordine di produzione (MO) +Permission662=Elimina ordine di produzione (MO) Permission701=Vedere donazioni Permission702=Creare/modificare donazioni Permission703=Eliminare donazioni Permission771=Visualizzare le note spese (tue e dei tuoi subordinati) -Permission772=Create/modify expense reports (for you and your subordinates) +Permission772=Crea/modifica note spese (per te e i tuoi subordinati) Permission773=Eliminare le note spese Permission775=Approvare le note spese Permission776=Pagare le note spese -Permission777=Read all expense reports (even those of user not subordinates) -Permission778=Create/modify expense reports of everybody +Permission777=Leggi tutte le note spese (anche quelle di utenti non subordinati) +Permission778=Crea/modifica note spese di tutti Permission779=Esporta note spese Permission1001=Vedere magazzino Permission1002=Crea/modifica magazzini @@ -928,9 +928,9 @@ Permission1185=Approve purchase orders Permission1186=Order purchase orders Permission1187=Acknowledge receipt of purchase orders Permission1188=Delete purchase orders -Permission1189=Check/Uncheck a purchase order reception +Permission1189=Selezionare/deselezionare la ricezione di un ordine di acquisto Permission1190=Approve (second approval) purchase orders -Permission1191=Export supplier orders and their attributes +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 @@ -944,8 +944,8 @@ Permission1251=Eseguire importazioni di massa di dati esterni nel database (data Permission1321=Esportare fatture attive, attributi e pagamenti Permission1322=Riaprire le fatture pagate Permission1421=Esporta Ordini Cliente e attributi -Permission1521=Read documents -Permission1522=Delete documents +Permission1521=Leggi documenti +Permission1522=Elimina documenti Permission2401=Leggere le azioni (eventi o attività) collegate al suo account utente (se proprietario dell'evento) Permission2402=Creare/modificare azioni (eventi o compiti) personali Permission2403=Cancellare azioni (eventi o compiti) personali @@ -960,15 +960,15 @@ Permission2515=Impostare directory documenti Permission2801=Client FTP in sola lettura (solo download e navigazione dei file) Permission2802=Client FTP in lettura e scrittura (caricamento e eliminazione dei file) Permission3200=Read archived events and fingerprints -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 +Permission3301=Genera nuovi moduli +Permission4001=Leggi abilità/lavoro/posizione +Permission4002=Crea/modifica abilità/lavoro/posizione +Permission4003=Elimina abilità/lavoro/posizione +Permission4020=Leggi valutazioni +Permission4021=Crea/modifica la tua valutazione +Permission4022=Convalida la valutazione +Permission4023=Elimina valutazione +Permission4030=Vedi menu di confronto 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. @@ -976,23 +976,23 @@ Permission10005=Delete website content Permission20001=Vedere le richieste di ferie (tue e dei tuoi subordinati) Permission20002=Creare / modificare le tue richieste di ferie (le tue ferie e quelle dei tuoi subordinati) Permission20003=Eliminare le richieste di ferie -Permission20004=Read all leave requests (even those of user not subordinates) -Permission20005=Create/modify leave requests for everybody (even those of user not subordinates) -Permission20006=Administer leave requests (setup and update balance) +Permission20004=Leggi tutte le richieste di permesso (anche quelle di utenti non subordinati) +Permission20005=Creare/modificare le richieste di ferie per tutti (anche quelle di utenti non subordinati) +Permission20006=Amministrare le richieste di ferie (configurazione e aggiornamento del saldo) Permission20007=Approvare le richieste di ferie Permission23001=Leggi lavoro pianificato Permission23002=Crea / Aggiorna lavoro pianificato Permission23003=Elimina lavoro pianificato Permission23004=Esegui lavoro pianificato -Permission50101=Use Point of Sale (SimplePOS) -Permission50151=Use Point of Sale (TakePOS) -Permission50152=Edit sales lines -Permission50153=Edit ordered sales lines +Permission50101=Utilizzare il punto vendita (SimplePOS) +Permission50151=Utilizzare il punto vendita (TakePOS) +Permission50152=Modifica le linee di vendita +Permission50153=Modifica le righe di vendita ordinate Permission50201=Vedere transazioni Permission50202=Importare transazioni -Permission50330=Read objects of Zapier -Permission50331=Create/Update objects of Zapier -Permission50332=Delete objects of Zapier +Permission50330=Leggi gli oggetti di Zapier +Permission50331=Crea/Aggiorna oggetti di Zapier +Permission50332=Elimina gli oggetti di Zapier Permission50401=Bind products and invoices with accounting accounts Permission50411=Read operations in ledger Permission50412=Write/Edit operations in ledger @@ -1016,21 +1016,21 @@ Permission63001=Leggi risorse Permission63002=Crea/modifica risorse Permission63003=Elimina risorsa Permission63004=Collega le risorse agli eventi -Permission64001=Allow direct printing -Permission67000=Allow printing of receipts -Permission68001=Read intracomm report -Permission68002=Create/modify intracomm report -Permission68004=Delete intracomm report -Permission941601=Read receipts -Permission941602=Create and modify receipts -Permission941603=Validate receipts -Permission941604=Send receipts by email -Permission941605=Export receipts -Permission941606=Delete receipts +Permission64001=Consenti stampa diretta +Permission67000=Consenti la stampa di ricevute +Permission68001=Leggi il rapporto intracom +Permission68002=Crea/modifica report intracom +Permission68004=Elimina rapporto intracom +Permission941601=Leggi le ricevute +Permission941602=Crea e modifica le ricevute +Permission941603=Convalida le ricevute +Permission941604=Invia ricevute via e-mail +Permission941605=Ricevute di esportazione +Permission941606=Elimina le ricevute DictionaryCompanyType=Tipo di soggetto terzo DictionaryCompanyJuridicalType=Entità legali di terze parti -DictionaryProspectLevel=Prospect potential level for companies -DictionaryProspectContactLevel=Prospect potential level for contacts +DictionaryProspectLevel=Prospetto livello di potenziale per le aziende +DictionaryProspectContactLevel=Prospetto livello potenziale per i contatti DictionaryCanton=Stati / Province DictionaryRegion=Regioni DictionaryCountry=Paesi @@ -1051,7 +1051,7 @@ DictionaryFees=Note spesa - Tipi di righe delle note spesa DictionarySendingMethods=Metodi di spedizione DictionaryStaff=Numero di dipendenti DictionaryAvailability=Tempi di consegna -DictionaryOrderMethods=Order methods +DictionaryOrderMethods=Metodi di ordine DictionarySource=Origine delle proposte/ordini DictionaryAccountancyCategory=Personalized groups for reports DictionaryAccountancysystem=Modelli per piano dei conti @@ -1060,15 +1060,15 @@ DictionaryEMailTemplates=Modelli e-mail DictionaryUnits=Unità DictionaryMeasuringUnits=Unità di misura DictionarySocialNetworks=Social networks -DictionaryProspectStatus=Prospect status for companies -DictionaryProspectContactStatus=Prospect status for contacts -DictionaryHolidayTypes=Leave - Types of leave +DictionaryProspectStatus=Stato del potenziale cliente per le aziende +DictionaryProspectContactStatus=Stato del potenziale cliente per i contatti +DictionaryHolidayTypes=Congedo - Tipi di congedo DictionaryOpportunityStatus=Stato opportunità per progetto/clienti potenziali DictionaryExpenseTaxCat=Note spesa - Categorie di trasporto DictionaryExpenseTaxRange=Note spesa: intervallo per categoria di trasporto -DictionaryTransportMode=Intracomm report - Transport mode -DictionaryBatchStatus=Product lot/serial Quality Control status -TypeOfUnit=Type of unit +DictionaryTransportMode=Rapporto intracomm - Modalità di trasporto +DictionaryBatchStatus=Stato del controllo qualità del lotto/serie del prodotto +TypeOfUnit=Tipo di unità SetupSaved=Impostazioni salvate SetupNotSaved=Impostazioni non salvate BackToModuleList=Torna all'elenco dei moduli @@ -1119,7 +1119,7 @@ LabelUsedByDefault=Descrizione (utilizzata in tutti i documenti per cui non esis LabelOnDocuments=Descrizione sul documento LabelOrTranslationKey=Etichetta o chiave di traduzione ValueOfConstantKey=Valore di una costante -ConstantIsOn=Option %s is on +ConstantIsOn=L'opzione %s è attiva NbOfDays=Numero di giorni AtEndOfMonth=Alla fine del mese CurrentNext=Corrente/Successivo @@ -1164,7 +1164,7 @@ LoginPage=Pagina di login BackgroundImageLogin=Immagine di sfondo PermanentLeftSearchForm=Modulo di ricerca permanente nel menu di sinistra DefaultLanguage=Lingua predefinita (codice lingua) -EnableMultilangInterface=Enable multilanguage support for customer or vendor relationships +EnableMultilangInterface=Abilita il supporto multilingue per le relazioni con clienti o fornitori EnableShowLogo=Abilita la visualizzazione del logo CompanyInfo=Società/Organizzazione CompanyIds=Informazioni società/fondazione @@ -1184,8 +1184,8 @@ DoNotSuggestPaymentMode=Non suggerire NoActiveBankAccountDefined=Nessun conto bancario attivo definito OwnerOfBankAccount=Titolare del conto bancario %s BankModuleNotActive=Modulo conti bancari non attivato -ShowBugTrackLink=Show the link "%s" -ShowBugTrackLinkDesc=Keep empty to not display this link, use value 'github' for the link to the Dolibarr project or define directly an url 'https://...' +ShowBugTrackLink=Mostra il link " %s " +ShowBugTrackLinkDesc=Lascia vuoto per non visualizzare questo link, usa il valore 'github' per il link al progetto Dolibarr o definisci direttamente un url 'https://...' Alerts=Avvisi e segnalazioni DelaysOfToleranceBeforeWarning=Delay before displaying a warning alert for: DelaysOfToleranceDesc=Set the delay before an alert icon %s is shown onscreen for the late element. @@ -1210,12 +1210,12 @@ SetupDescription2=Le 2 seguenti sezioni sono obbligatorie (le prime 2 sezioni ne SetupDescription3=  %s -> %s

Parametri di base utilizzati per personalizzare il comportamento predefinito dell'applicazione (ad es. per le funzionalità relative al paese). SetupDescription4=  %s -> %s

Questo software è una suite di molti moduli / applicazioni. I moduli relativi alle tue esigenze devono essere abilitati e configurati. Le voci di menu verranno visualizzate con l'attivazione di questi moduli. SetupDescription5=Altre voci di menu consentono la gestione di parametri opzionali. -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. -AuditedSecurityEvents=Security events that are audited -NoSecurityEventsAreAduited=No security events are audited. You can enable them from menu %s -Audit=Security events +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. +AuditedSecurityEvents=Eventi di sicurezza controllati +NoSecurityEventsAreAduited=Nessun evento di sicurezza viene controllato. Puoi abilitarli dal menu %s +Audit=Eventi di sicurezza InfoDolibarr=Informazioni su Dolibarr InfoBrowser=Informazioni browser InfoOS=Informazioni OS @@ -1223,7 +1223,7 @@ InfoWebServer=Informazioni web server InfoDatabase=Informazioni database InfoPHP=Informazioni PHP InfoPerf=Informazioni prestazioni -InfoSecurity=About Security +InfoSecurity=A proposito di sicurezza BrowserName=Browser BrowserOS=Sistema operativo ListOfSecurityEvents=Elenco degli eventi di sicurezza Dolibarr @@ -1235,7 +1235,7 @@ SystemAreaForAdminOnly=Questa area è disponibile solo per gli utenti amministra CompanyFundationDesc=Modifica le informazioni dell'azienda / fondazione. Fai clic sul pulsante "%s" nella parte inferiore della pagina. AccountantDesc=Se hai un contabile / contabile esterno, puoi modificare qui le sue informazioni. AccountantFileNumber=Accountant code -DisplayDesc=Parameters affecting the look and presentation of the application can be modified here. +DisplayDesc=I parametri che influenzano l'aspetto e la presentazione dell'applicazione possono essere modificati qui. AvailableModules=Moduli disponibili ToActivateModule=Per attivare i moduli, andare nell'area Impostazioni (Home->Impostazioni->Moduli). SessionTimeOut=Timeout delle sessioni @@ -1274,7 +1274,7 @@ RestoreDesc2=Restore the backup file (zip file for example) of the "documents" d RestoreDesc3=Restore the database structure and data from a backup dump file into the database of the new Dolibarr installation or into the database of this current installation (%s). Warning, once the restore is complete, you must use a login/password, that existed from the backup time/installation to connect again.
To restore a backup database into this current installation, you can follow this assistant. RestoreMySQL=Importa MySQL ForcedToByAModule=Questa regola è impsotata su %s da un modulo attivo -ValueIsForcedBySystem=This value is forced by the system. You can't change it. +ValueIsForcedBySystem=Questo valore è forzato dal sistema. Non puoi cambiarlo. PreviousDumpFiles=Existing backup files PreviousArchiveFiles=Archivio files esistente WeekStartOnDay=Primo giorno della settimana @@ -1282,12 +1282,12 @@ RunningUpdateProcessMayBeRequired=Running the upgrade process seems to be requir YouMustRunCommandFromCommandLineAfterLoginToUser=È necessario eseguire questo comando dal riga di comando dopo il login in una shell con l'utente %s. YourPHPDoesNotHaveSSLSupport=Il PHP del server non supporta SSL DownloadMoreSkins=Scarica altre skin -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 -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 +SimpleNumRefModelDesc=Restituisce il numero di riferimento nel formato %syymm-nnnn dove yy è l'anno, mm è il mese e nnnn è un numero sequenziale a incremento automatico senza reimpostazione +SimpleNumRefNoDateModelDesc=Restituisce il numero di riferimento nel formato %s-nnnn dove nnnn è un numero sequenziale a incremento automatico senza reimpostazione +ShowProfIdInAddress=Mostra l'ID professionale con gli indirizzi +ShowVATIntaInAddress=Nascondi partita IVA intracomunitaria TranslationUncomplete=Traduzione incompleta -MAIN_DISABLE_METEO=Disable weather thumb +MAIN_DISABLE_METEO=Disabilita il pollice meteo MeteoStdMod=Standard mode MeteoStdModEnabled=Standard mode enabled MeteoPercentageMod=Modalità percentuale @@ -1301,7 +1301,7 @@ MAIN_PROXY_HOST=Proxy server: Name/Address MAIN_PROXY_PORT=Proxy server: Port MAIN_PROXY_USER=Proxy server: Login/User MAIN_PROXY_PASS=Proxy server: Password -DefineHereComplementaryAttributes=Define any additional / custom attributes that must be added to: %s +DefineHereComplementaryAttributes=Definire eventuali attributi aggiuntivi/personalizzati che devono essere aggiunti a: %s ExtraFields=Campi extra ExtraFieldsLines=Attributi complementari (righe) ExtraFieldsLinesRec=Attributi complementari (righe di template di fattura) @@ -1347,20 +1347,20 @@ ConditionIsCurrently=La condizione corrente è %s YouUseBestDriver=You use driver %s which is the best driver currently available. YouDoNotUseBestDriver=You use driver %s but driver %s is recommended. NbOfObjectIsLowerThanNoPb=You have only %s %s in the database. This does not require any particular optimization. -ComboListOptim=Combo list loading optimization +ComboListOptim=Ottimizzazione del caricamento dell'elenco combinato SearchOptim=Ottimizzazione della ricerca -YouHaveXObjectUseComboOptim=You have %s %s in the database. You can go into setup of module to enable loading of combo list on key pressed event. -YouHaveXObjectUseSearchOptim=You have %s %s in the database. You can add the constant %s to 1 in Home-Setup-Other. -YouHaveXObjectUseSearchOptimDesc=This limits the search to the beginning of strings which makes it possible for the database to use indexes and you should get an immediate response. -YouHaveXObjectAndSearchOptimOn=You have %s %s in the database and constant %s is set to %s in Home-Setup-Other. +YouHaveXObjectUseComboOptim=Hai %s %s nel database. È possibile accedere all'impostazione del modulo per abilitare il caricamento dell'elenco combinato all'evento premuto il tasto. +YouHaveXObjectUseSearchOptim=Hai %s %s nel database. Puoi aggiungere la costante %s a 1 in Home-Setup-Other. +YouHaveXObjectUseSearchOptimDesc=Ciò limita la ricerca all'inizio delle stringhe, il che consente al database di utilizzare gli indici e dovresti ottenere una risposta immediata. +YouHaveXObjectAndSearchOptimOn=Hai %s %s nel database e la costante %s è impostata su %s in Home-Setup-Other. BrowserIsOK=You are using the %s web browser. This browser is ok for security and performance. BrowserIsKO=You are using the %s web browser. This browser is known to be a bad choice for security, performance and reliability. We recommend using Firefox, Chrome, Opera or Safari. PHPModuleLoaded=PHP component %s is loaded PreloadOPCode=Preloaded OPCode is used -AddRefInList=Display Customer/Vendor ref. into combo lists.
Third Parties will appear with a name format of "CC12345 - SC45678 - The Big Company corp." instead of "The Big Company corp". -AddVatInList=Display Customer/Vendor VAT number into combo lists. -AddAdressInList=Display Customer/Vendor adress into combo lists.
Third Parties will appear with a name format of "The Big Company corp. - 21 jump street 123456 Big town - USA" instead of "The Big Company corp". -AddEmailPhoneTownInContactList=Display Contact email (or phones if not defined) and town info list (select list or combobox)
Contacts will appear with a name format of "Dupond Durand - dupond.durand@email.com - Paris" or "Dupond Durand - 06 07 59 65 66 - Paris" instead of "Dupond Durand". +AddRefInList=Visualizza rif. cliente/fornitore in elenchi combinati.
Le terze parti appariranno con il formato del nome "CC12345 - SC45678 - The Big Company corp." invece di "The Big Company corp". +AddVatInList=Visualizza il numero di partita IVA cliente/fornitore negli elenchi combinati. +AddAdressInList=Visualizza l'indirizzo del cliente/fornitore in elenchi combinati.
Terze parti appariranno con un nome formato "The Big Company corp. - 21 jump street 123456 Big town - USA" invece di "The Big Company corp". +AddEmailPhoneTownInContactList=Visualizza l'e-mail di contatto (oi telefoni se non definiti) e l'elenco delle informazioni sulla città (selezionare l'elenco o la casella combinata)
I contatti verranno visualizzati con il formato del nome "Dupond Durand - dupond.durand@email.com - Parigi" o "Dupond Durand - 06 07 59 65 66 - Parigi" invece di "Dupond Durand". AskForPreferredShippingMethod=Ask for preferred shipping method for Third Parties. FieldEdition=Modifica del campo %s FillThisOnlyIfRequired=Per esempio: +2 (compilare solo se ci sono problemi di scostamento del fuso orario) @@ -1368,7 +1368,7 @@ GetBarCode=Ottieni codice a barre NumberingModules=Modelli di numerazione DocumentModules=Modelli di documenti ##### Module password generation -PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters in lowercase. +PasswordGenerationStandard=Restituisce una password generata secondo l'algoritmo interno di Dolibarr: %s caratteri contenenti numeri condivisi e caratteri in minuscolo. PasswordGenerationNone=Do not suggest a generated password. Password must be typed in manually. PasswordGenerationPerso=Return a password according to your personally defined configuration. SetupPerso=Secondo la tua configurazione @@ -1390,7 +1390,7 @@ AccountCodeManager=Opzioni per la generazione automatica di codici contabili cli NotificationsDesc=Le notifiche e-mail possono essere inviate automaticamente per alcuni eventi Dolibarr.
I destinatari delle notifiche possono essere definiti: NotificationsDescUser=* per user, one user at a time. NotificationsDescContact=* per third-party contacts (customers or vendors), one contact at a time. -NotificationsDescGlobal=* or by setting global email addresses in the setup page of the module. +NotificationsDescGlobal=* o impostando indirizzi email globali nella pagina di configurazione del modulo. ModelModules=Document Templates DocumentModelOdt=Generate documents from OpenDocument templates (.ODT / .ODS files from LibreOffice, OpenOffice, KOffice, TextEdit,...) WatermarkOnDraft=Filigrana sulle bozze @@ -1439,7 +1439,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order ##### Orders ##### -SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sales order by default if not defined on the order +SuggestedPaymentModesIfNotDefinedInOrder=Modalità di pagamento suggerita sull'ordine cliente per impostazione predefinita se non definita nell'ordine OrdersSetup=Impostazione gestione Ordini Cliente OrdersNumberingModules=Modelli di numerazione ordini OrdersModelModule=Modelli per ordini in pdf @@ -1465,10 +1465,10 @@ MemberMainOptions=Opzioni principali AdherentLoginRequired= Gestire un account di accesso per ogni membro AdherentMailRequired=Email required to create a new member MemberSendInformationByMailByDefault=Checkbox per inviare una mail di conferma per i membri (è attiva per impostazione predefinita) -MemberCreateAnExternalUserForSubscriptionValidated=Create an external user login for each new member subscription validated +MemberCreateAnExternalUserForSubscriptionValidated=Crea un login utente esterno per ogni nuovo abbonamento membro convalidato VisitorCanChooseItsPaymentMode=Il visitatore può scegliere tra le modalità di pagamento disponibili 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 +MembersDocModules=Modelli di documento per i documenti generati dal record del membro ##### LDAP setup ##### LDAPSetup=Impostazioni del protocollo LDAP LDAPGlobalParameters=Parametri globali @@ -1490,10 +1490,10 @@ LDAPSynchronizeMembersTypes=Organization of foundation's members types in LDAP LDAPPrimaryServer=Server LDAP primario LDAPSecondaryServer=Server LDAP secondario LDAPServerPort=Porta del server -LDAPServerPortExample=Standard or StartTLS: 389, LDAPs: 636 +LDAPServerPortExample=Standard o StartTLS: 389, LDAP: 636 LDAPServerProtocolVersion=Versione del protocollo LDAPServerUseTLS=Usa TLS -LDAPServerUseTLSExample=Your LDAP server use StartTLS +LDAPServerUseTLSExample=Il tuo server LDAP usa StartTLS LDAPServerDn=Server DN LDAPAdminDn=DN dell'amministratore LDAPAdminDnExample=Complete DN (ex: cn=admin,dc=example,dc=com or cn=Administrator,cn=Users,dc=example,dc=com for active directory) @@ -1550,7 +1550,7 @@ LDAPFieldLoginUnix=Login (Unix) LDAPFieldLoginExample=Example: uid LDAPFilterConnection=Filtro di ricerca LDAPFilterConnectionExample=Example: &(objectClass=inetOrgPerson) -LDAPGroupFilterExample=Example: &(objectClass=groupOfUsers) +LDAPGroupFilterExample=Esempio: &(objectClass=groupOfUsers) LDAPFieldLoginSamba=Login (samba, ActiveDirectory) LDAPFieldLoginSambaExample=Example: samaccountname LDAPFieldFullname=Cognome Nome @@ -1612,9 +1612,9 @@ LDAPDescValues=I valori di esempio sono progettati per OpenLDAP con i seg ForANonAnonymousAccess=Per un accesso autenticato (per esempio un accesso in scrittura) PerfDolibarr=Report di setup/ottimizzazione della performance YouMayFindPerfAdviceHere=This page provides some checks or advice related to performance. -NotInstalled=Not installed. -NotSlowedDownByThis=Not slowed down by this. -NotRiskOfLeakWithThis=Not risk of leak with this. +NotInstalled=Non installato. +NotSlowedDownByThis=Non rallentato da questo. +NotRiskOfLeakWithThis=Nessun rischio di perdita con questo. ApplicativeCache=Cache applicativa MemcachedNotAvailable=No applicative cache found. You can enhance performance by installing a cache server Memcached and a module able to use this cache server.
More information here http://wiki.dolibarr.org/index.php/Module_MemCached_EN.
Note that a lot of web hosting provider does not provide such cache server. MemcachedModuleAvailableButNotSetup=Module memcached for applicative cache found but setup of module is not complete. @@ -1643,13 +1643,13 @@ ProductSetup=Impostazioni modulo prodotti ServiceSetup=Impostazioni modulo servizi ProductServiceSetup=Impostazioni moduli prodotti e servizi NumberOfProductShowInSelect=Maximum number of products to show in combo select lists (0=no limit) -ViewProductDescInFormAbility=Display product descriptions in lines of items (otherwise show description in a tooltip popup) -OnProductSelectAddProductDesc=How to use the description of the products when adding a product as a line of a document -AutoFillFormFieldBeforeSubmit=Auto fill the description input field with the description of product -DoNotAutofillButAutoConcat=Do not autofill the input field with description of product. Description of the product will be concatenated to the entered description automatically. -DoNotUseDescriptionOfProdut=Description of the product will never be included into the description of lines of documents +ViewProductDescInFormAbility=Visualizza le descrizioni dei prodotti nelle righe di articoli (altrimenti mostra la descrizione in un popup di descrizione comando) +OnProductSelectAddProductDesc=Come utilizzare la descrizione dei prodotti quando si aggiunge un prodotto come riga di un documento +AutoFillFormFieldBeforeSubmit=Compila automaticamente il campo di immissione della descrizione con la descrizione del prodotto +DoNotAutofillButAutoConcat=Non compilare automaticamente il campo di input con la descrizione del prodotto. La descrizione del prodotto verrà concatenata automaticamente alla descrizione inserita. +DoNotUseDescriptionOfProdut=La descrizione del prodotto non sarà mai inclusa nella descrizione delle righe di documenti MergePropalProductCard=Activate in product/service Attached Files tab an option to merge product PDF document to proposal PDF azur if product/service is in the proposal -ViewProductDescInThirdpartyLanguageAbility=Display products descriptions in forms in the language of the third party (otherwise in the language of the user) +ViewProductDescInThirdpartyLanguageAbility=Visualizzare le descrizioni dei prodotti nei moduli nella lingua della terza parte (altrimenti nella lingua dell'utente) UseSearchToSelectProductTooltip=Also if you have a large number of products (> 100 000), you can increase speed by setting constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. UseSearchToSelectProduct=Wait until you press a key before loading content of product combo list (This may increase performance if you have a large number of products, but it is less convenient) SetDefaultBarcodeTypeProducts=Tipo di codici a barre predefinito da utilizzare per i prodotti @@ -1666,7 +1666,7 @@ SyslogLevel=Livello SyslogFilename=Nome file e percorso YouCanUseDOL_DATA_ROOT=È possibile utilizzare DOL_DATA_ROOT/dolibarr.log come file di log per la directory "documenti". È anche possibile impostare un percorso diverso per tale file. ErrorUnknownSyslogConstant=La costante %s è sconosciuta a syslog. -OnlyWindowsLOG_USER=On Windows, only the LOG_USER facility will be supported +OnlyWindowsLOG_USER=Su Windows, sarà supportata solo la funzione LOG_USER CompressSyslogs=Compression and backup of debug log files (generated by module Log for debug) SyslogFileNumberOfSaves=Numero dei backup di log da mantenere ConfigureCleaningCronjobToSetFrequencyOfSaves=Configure cleaning scheduled job to set log backup frequency @@ -1707,9 +1707,9 @@ MailingDelay=Seconds to wait after sending next message NotificationSetup=Impostazioni modulo notifiche email NotificationEMailFrom=Sender email (From) for emails sent by the Notifications module FixedEmailTarget=Destinatario -NotificationDisableConfirmMessageContact=Hide the list of recipients (subscribed as contact) of notifications into the confirmation message -NotificationDisableConfirmMessageUser=Hide the list of recipients (subscribed as user) of notifications into the confirmation message -NotificationDisableConfirmMessageFix=Hide the list of recipients (subscribed as global email) of notifications into the confirmation message +NotificationDisableConfirmMessageContact=Nascondi l'elenco dei destinatari (iscritti come contatto) delle notifiche nel messaggio di conferma +NotificationDisableConfirmMessageUser=Nascondi l'elenco dei destinatari (iscritti come utente) delle notifiche nel messaggio di conferma +NotificationDisableConfirmMessageFix=Nascondi l'elenco dei destinatari (sottoscritti come e-mail globale) delle notifiche nel messaggio di conferma ##### Sendings ##### SendingsSetup=Shipping module setup SendingsReceiptModel=Modello di ricevuta consegna (D.D.T.) @@ -1725,11 +1725,11 @@ FreeLegalTextOnDeliveryReceipts=Testo libero sulle ricevute di consegna ##### FCKeditor ##### AdvancedEditor=Editor avanzato ActivateFCKeditor=Attiva editor avanzato per: -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. +FCKeditorForNotePublic=WYSIWIG creazione/edizione del campo "note pubbliche" di elementi +FCKeditorForNotePrivate=WYSIWIG creazione/edizione del campo "note private" degli elementi +FCKeditorForCompany=WYSIWIG creazione/modifica del campo descrizione degli elementi (esclusi prodotti/servizi) +FCKeditorForProduct=WYSIWIG creazione/edizione del campo descrizione dei prodotti/servizi +FCKeditorForProductDetails=WYSIWIG creazione/modifica di righe di dettaglio prodotti per tutte le entità (proposte, ordini, fatture, ecc...). Avvertenza: l'utilizzo di questa opzione in questo caso è fortemente sconsigliato in quanto può creare problemi con i caratteri speciali e la formattazione della pagina durante la creazione di file PDF. FCKeditorForMailing= Editor WYSIWIG per le email FCKeditorForUserSignature=WYSIWIG creazione/modifica della firma utente FCKeditorForMail=WYSIWIG creation/edition for all mail (except Tools->eMailing) @@ -1786,28 +1786,28 @@ YourCompanyDoesNotUseVAT=La tua azienda è stata definita per non utilizzare l'I AccountancyCode=Accounting Code AccountancyCodeSell=Codice contabilità vendite AccountancyCodeBuy=Codice contabilità acquisti -CREATE_NEW_VAT_WITHOUT_AUTO_PAYMENT=Keep the checkbox “Automatically create the payment” empty by default when creating a new tax +CREATE_NEW_VAT_WITHOUT_AUTO_PAYMENT=Mantieni la casella di controllo "Crea automaticamente il pagamento" vuota per impostazione predefinita quando crei una nuova tassa ##### Agenda ##### AgendaSetup=Impostazioni modulo agenda PasswordTogetVCalExport=Chiave per autorizzare l'esportazione di link -SecurityKey = Security Key +SecurityKey = Chiave di sicurezza PastDelayVCalExport=Non esportare evento più vecchio di AGENDA_USE_EVENT_TYPE=Use events types (managed in menu Setup -> Dictionaries -> Type of agenda events) AGENDA_USE_EVENT_TYPE_DEFAULT=Automatically set this default value for type of event in event create form AGENDA_DEFAULT_FILTER_TYPE=Automatically set this type of event in search filter of agenda view AGENDA_DEFAULT_FILTER_STATUS=Automatically set this status for events in search filter of agenda view -AGENDA_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_DEFAULT_VIEW=Quale vista si desidera aprire per impostazione predefinita quando si seleziona il menu Agenda +AGENDA_REMINDER_BROWSER=Abilita promemoria eventi sul browser dell'utente (Quando viene raggiunta la data del promemoria, il browser mostra un popup. Ogni utente può disabilitare tali notifiche dalla configurazione delle notifiche del browser). AGENDA_REMINDER_BROWSER_SOUND=Attiva i suoni per le notifiche -AGENDA_REMINDER_EMAIL=Enable event reminder by emails (remind option/delay can be defined on each event). -AGENDA_REMINDER_EMAIL_NOTE=Note: The frequency of the scheduled job %s must be enough to be sure that the remind are sent at the correct moment. +AGENDA_REMINDER_EMAIL=Abilita promemoria evento tramite e-mail (l'opzione di promemoria/ritardo può essere definita su ciascun evento). +AGENDA_REMINDER_EMAIL_NOTE=Nota: la frequenza del lavoro pianificato %s deve essere sufficiente per essere sicuri che il promemoria venga inviato al momento corretto. AGENDA_SHOW_LINKED_OBJECT=Show linked object into agenda view ##### Clicktodial ##### ClickToDialSetup=Impostazioni modulo ClickToDial (telefonate con un clic) ClickToDialUrlDesc=Url called when a click on phone picto is done. In URL, you can use tags
__PHONETO__ that will be replaced with the phone number of person to call
__PHONEFROM__ that will be replaced with phone number of calling person (yours)
__LOGIN__ that will be replaced with clicktodial login (defined on user card)
__PASS__ that will be replaced with clicktodial password (defined on user card). ClickToDialDesc=Questo modulo modifica i numeri di telefono, quando si utilizza un computer desktop, in collegamenti selezionabili. Un clic chiamerà il numero. Questo può essere usato per iniziare la telefonata quando si utilizza un softphone sul desktop o, ad esempio, quando si utilizza un sistema CTI basato sul protocollo SIP. Nota: quando si utilizza uno smartphone, i numeri di telefono sono sempre selezionabili. ClickToDialUseTelLink=Peri numeri di telefono basta usare un link di tipo "tel:" -ClickToDialUseTelLinkDesc=Use this method if your users have a softphone or a software interface, installed on the same computer as the browser, and called when you click on a link starting with "tel:" in your browser. If you need a link that start with "sip:" or a full server solution (no need of local software installation), you must set this to "No" and fill the next field. +ClickToDialUseTelLinkDesc=Utilizza questo metodo se i tuoi utenti hanno un softphone o un'interfaccia software, installata sullo stesso computer del browser e chiamata quando fai clic su un collegamento che inizia con "tel:" nel tuo browser. Se è necessario un collegamento che inizi con "sip:" o una soluzione server completa (non è necessaria l'installazione di software locale), è necessario impostarlo su "No" e compilare il campo successivo. ##### Point Of Sale (CashDesk) ##### CashDesk=Point of Sale CashDeskSetup=Point of Sales module setup @@ -1901,7 +1901,7 @@ ExpenseReportsRulesSetup=Setup of module Expense Reports - Rules ExpenseReportNumberingModules=Modelli di numerazione delle note spesa NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. YouMayFindNotificationsFeaturesIntoModuleNotification=È possibile trovare opzioni per le notifiche e-mail abilitando e configurando il modulo 'Notifiche di eventi lavorativi' -TemplatesForNotifications=Templates for notifications +TemplatesForNotifications=Modelli per le notifiche ListOfNotificationsPerUser=Elenco delle notifiche automatiche per utente* ListOfNotificationsPerUserOrContact=List of possible automatic notifications (on business event) available per user* or per contact** ListOfFixedNotifications=Elenco di notifiche fisse automatiche @@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Evidenzia il colore della linea quando passa il mouse (usa 'ffffff' per nessuna evidenziazione) HighlightLinesChecked=Evidenzia il colore della linea quando è selezionata (usa 'ffffff' per nessuna evidenziazione) +BtnActionColor=Colore del pulsante di azione +TextBtnActionColor=Colore del testo del pulsante di azione TextTitleColor=Colore del testo del titolo della pagina LinkColor=Colore dei link PressF5AfterChangingThis=Premi CTRL + F5 sulla tastiera o cancella la cache del browser per rendere effettiva la modifica di questo parametro @@ -1932,17 +1934,17 @@ BackgroundTableLineOddColor=Colore di sfondo per le linee dispari delle tabelle BackgroundTableLineEvenColor=Colore di sfondo per le linee pari delle tabelle MinimumNoticePeriod=Periodo minimo di avviso (le richieste di ferie/permesso dovranno essere effettuate prima di questo periodo) NbAddedAutomatically=Numero di giorni aggiunti ai contatori di utenti (automaticamente) ogni mese -EnterAnyCode=This field contains a reference to identify the line. Enter any value of your choice, but without special characters. +EnterAnyCode=Questo campo contiene un riferimento per identificare la linea. Inserisci qualsiasi valore a tua scelta, ma senza caratteri speciali. Enter0or1=Inserire 0 o 1 UnicodeCurrency=Enter here between braces, list of byte number that represent the currency symbol. For example: for $, enter [36] - for brazil real R$ [82,36] - for €, enter [8364] ColorFormat=Il colore RGB è nel formato HEX, es:FF0000 -PictoHelp=Icon name in dolibarr format ('image.png' if into the current theme directory, 'image.png@nom_du_module' if into the directory /img/ of a module) +PictoHelp=Nome dell'icona in formato dolibarr ('image.png' se nella directory del tema corrente, 'image.png@nom_du_module' se nella directory /img/ di un modulo) PositionIntoComboList=Posizione di questo modello nella menu a tendina -SellTaxRate=Sales tax rate +SellTaxRate=Aliquota dell'imposta sulle vendite RecuperableOnly=Yes for VAT "Not Perceived but Recoverable" dedicated for some state in France. Keep value to "No" in all other cases. UrlTrackingDesc=If the provider or transport service offers a page or web site to check the status of your shipments, you may enter it here. You can use the key {TRACKID} in the URL parameters so the system will replace it with the tracking number the user entered into the shipment card. OpportunityPercent=When you create a lead, you will define an estimated amount of project/lead. According to status of the lead, this amount may be multiplied by this rate to evaluate a total amount all your leads may generate. Value is a percentage (between 0 and 100). -TemplateForElement=This mail template is related to what type of object? An email template is available only when using the "Send Email" button from the related object. +TemplateForElement=Questo modello di posta è correlato a quale tipo di oggetto? Un modello di email è disponibile solo quando si utilizza il pulsante "Invia email" dall'oggetto correlato. TypeOfTemplate=Tipo di modello TemplateIsVisibleByOwnerOnly=Template is visible to owner only VisibleEverywhere=Visibile ovunque @@ -1977,7 +1979,7 @@ ExampleOfNewsMessageForMajorRelease=Dolibarr ERP & CRM %s is available. Version ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP & CRM %s is available. Version %s is a maintenance version, so contains only bug fixes. We recommend all users to upgrade to this version. A maintenance release does not introduce new features or changes to the database. You may download it from the download area of https://www.dolibarr.org portal (subdirectory Stable versions). You can read the ChangeLog for complete list of changes. MultiPriceRuleDesc=When option "Several levels of prices per product/service" is enabled, you can define different prices (one per price level) for each product. To save you time, here you may enter a rule to autocalculate a price for each level based on the price of the first level, so you will have to only enter a price for the first level for each product. This page is designed to save you time but is useful only if your prices for each level are relative to first level. You can ignore this page in most cases. ModelModulesProduct=Modelli per documenti prodotto -WarehouseModelModules=Templates for documents of warehouses +WarehouseModelModules=Modelli per documenti di magazzini ToGenerateCodeDefineAutomaticRuleFirst=To be able to generate codes automatically, you must first define a manager to auto-define the barcode number. SeeSubstitutionVars=See * note for list of possible substitution variables SeeChangeLog=Guarda ChangeLog file (in inglese) @@ -2017,18 +2019,18 @@ MAIN_PDF_MARGIN_RIGHT=Margine destro sul PDF MAIN_PDF_MARGIN_TOP=Margine superiore sul PDF MAIN_PDF_MARGIN_BOTTOM=Margine inferiore su PDF MAIN_DOCUMENTS_LOGO_HEIGHT=Altezza per logo in PDF -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 -MAIN_PDF_NO_RECIPENT_FRAME=Hide borders on recipent address frame -MAIN_PDF_HIDE_CUSTOMER_CODE=Hide customer code -MAIN_PDF_HIDE_SENDER_NAME=Hide sender/company name in address block -PROPOSAL_PDF_HIDE_PAYMENTTERM=Hide payments conditions -PROPOSAL_PDF_HIDE_PAYMENTMODE=Hide payment mode -MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING=Add electronic sign in PDF +MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Aggiungi una colonna per l'immagine sulle righe della proposta +MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Larghezza della colonna se viene aggiunta un'immagine su righe +MAIN_PDF_NO_SENDER_FRAME=Nascondi i bordi sulla cornice dell'indirizzo del mittente +MAIN_PDF_NO_RECIPENT_FRAME=Nascondi i bordi sulla cornice dell'indirizzo del ricettante +MAIN_PDF_HIDE_CUSTOMER_CODE=Nascondi codice cliente +MAIN_PDF_HIDE_SENDER_NAME=Nascondi il nome del mittente/della società nel blocco degli indirizzi +PROPOSAL_PDF_HIDE_PAYMENTTERM=Nascondi condizioni di pagamento +PROPOSAL_PDF_HIDE_PAYMENTMODE=Nascondi modalità di pagamento +MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING=Aggiungi segno elettronico in PDF NothingToSetup=There is no specific setup required for this module. SetToYesIfGroupIsComputationOfOtherGroups=Set this to yes if this group is a computation of other groups -EnterCalculationRuleIfPreviousFieldIsYes=Enter calculation rule if previous field was set to Yes.
For example:
CODEGRP1+CODEGRP2 +EnterCalculationRuleIfPreviousFieldIsYes=Immettere la regola di calcolo se il campo precedente era impostato su Sì.
Ad esempio:
CODEGRP1+CODEGRP2 SeveralLangugeVariatFound=Sono state trovate diverse varianti linguistiche RemoveSpecialChars=Rimuovi caratteri speciali COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN_REGEX) @@ -2044,7 +2046,7 @@ SocialNetworkSetup=Setup of module Social Networks EnableFeatureFor=Enable features for %s VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to Off in the menu %s - %s, so Sales tax or Vat used will always be 0 for sales. SwapSenderAndRecipientOnPDF=Scambia la posizione dell'indirizzo del mittente e del destinatario sui documenti PDF -FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields and combo lists only. Also an URL parameter action=create or action=edit must be set OR page name must end with 'new.php' to trigger this feature. +FeatureSupportedOnTextFieldsOnly=Attenzione, funzionalità supportata solo su campi di testo ed elenchi combinati. Anche un parametro URL action=create o action=edit deve essere impostato OPPURE il nome della pagina deve terminare con 'new.php' per attivare questa funzione. EmailCollector=Email collector EmailCollectorDescription=Aggiungi un lavoro programmato e una pagina di configurazione per scansionare regolarmente caselle di posta elettronica (usando il protocollo IMAP) e registrare le email ricevute nella tua applicazione, nel posto giusto e / o creare automaticamente alcuni record (come i lead). NewEmailCollector=New Email Collector @@ -2052,35 +2054,35 @@ EMailHost=Host of email IMAP server MailboxSourceDirectory=Mailbox source directory MailboxTargetDirectory=Mailbox target directory EmailcollectorOperations=Operations to do by collector -EmailcollectorOperationsDesc=Operations are executed from top to bottom order +EmailcollectorOperationsDesc=Le operazioni vengono eseguite dall'alto verso il basso MaxEmailCollectPerCollect=Max number of emails collected per collect CollectNow=Collect now ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s ? -DateLastCollectResult=Date of latest collect try -DateLastcollectResultOk=Date of latest collect success +DateLastCollectResult=Data dell'ultimo tentativo di ritiro +DateLastcollectResultOk=Data dell'ultimo successo di raccolta LastResult=Latest result EmailCollectorConfirmCollectTitle=Email collect confirmation EmailCollectorConfirmCollect=Do you want to run the collection for this collector now ? NoNewEmailToProcess=No new email (matching filters) to process NothingProcessed=Nothing done XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) -RecordEvent=Record an event in agenda (with type Email sent or received) -CreateLeadAndThirdParty=Create a lead (and a third party if necessary) -CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation, with no third party otherwise) +RecordEvent=Registra un evento in agenda (con tipo Email inviata o ricevuta) +CreateLeadAndThirdParty=Crea un lead (e una terza parte se necessario) +CreateTicketAndThirdParty=Creare un ticket (collegato a una terza parte se la terza parte è stata caricata da un'operazione precedente, altrimenti senza una terza parte) CodeLastResult=Ultimo codice risultato NbOfEmailsInInbox=Numero di e-mail nella directory di origine LoadThirdPartyFromName=Load third party searching on %s (load only) LoadThirdPartyFromNameOrCreate=Load third party 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 -WithDolTrackingIDInMsgId=Message sent from Dolibarr -WithoutDolTrackingIDInMsgId=Message NOT sent from Dolibarr -CreateCandidature=Create job application +AttachJoinedDocumentsToObject=Salva i file allegati nei documenti oggetto se viene trovato un riferimento di un oggetto nell'argomento e-mail. +WithDolTrackingID=Messaggio da una conversazione iniziata da una prima email inviata da Dolibarr +WithoutDolTrackingID=Messaggio da una conversazione iniziata da una prima email NON inviata da Dolibarr +WithDolTrackingIDInMsgId=Messaggio inviato da Dolibarr +WithoutDolTrackingIDInMsgId=Messaggio NON inviato da Dolibarr +CreateCandidature=Crea domanda di lavoro FormatZip=CAP 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=Definire le regole da utilizzare per estrarre o impostare valori.
Esempio per operazioni che richiedono l'estrazione di un nome dall'oggetto dell'e-mail:
name=EXTRACT:SUBJECT:Message from company ([^\n] *)
Esempio di operazioni che creano oggetti:
objproperty1 = SET: il valore impostato
objproperty2 = SET: un valore compreso valore __objproperty1__
objproperty3 = SETIFEMPTY: valore utilizzato se objproperty3 non è già definito
objproperty4 = ESTRATTO: HEADER :X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Il nome della mia azienda è\\s( [^\\s]*)

Usa a ; char come separatore per estrarre o impostare più proprietà. OpeningHours=Orari di apertura OpeningHoursDesc=Inserisci gli orari di apertura regolare della tua azienda. ResourceSetup=Configurazione del modulo Risorse @@ -2090,7 +2092,7 @@ DisabledResourceLinkContact=Disattiva funzionalità per collegare una risorsa ai EnableResourceUsedInEventCheck=Abilitare la funzione per verificare se una risorsa è in uso in un evento ConfirmUnactivation=Conferma reset del modulo OnMobileOnly=On small screen (smartphone) only -DisableProspectCustomerType=Disable the "Prospect + Customer" third party type (so third party must be "Prospect" or "Customer", but can't be both) +DisableProspectCustomerType=Disabilita il tipo di terza parte "Prospect + Cliente" (quindi la terza parte deve essere "Prospect" o "Cliente", ma non può essere entrambi) MAIN_OPTIMIZEFORTEXTBROWSER=Semplifica l'interfaccia per i non vedenti MAIN_OPTIMIZEFORTEXTBROWSERDesc=Enable this option if you are a blind person, or if you use the application from a text browser like Lynx or Links. MAIN_OPTIMIZEFORCOLORBLIND=Cambia il colore dell'interfaccia per i non vedenti @@ -2112,21 +2114,21 @@ UseDebugBar=Usa la barra di debug DEBUGBAR_LOGS_LINES_NUMBER=Number of last log lines to keep in console WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramaticaly output ModuleActivated=Module %s is activated and slows the interface -ModuleActivatedWithTooHighLogLevel=Module %s is activated with a too high logging level (try to use a lower level for better performances and security) -ModuleSyslogActivatedButLevelNotTooVerbose=Module %s is activated and log level (%s) is correct (not too verbose) -IfYouAreOnAProductionSetThis=If you are on a production environment, you should set this property to %s. -AntivirusEnabledOnUpload=Antivirus enabled on uploaded files -SomeFilesOrDirInRootAreWritable=Some files or directories are not in a read-only mode +ModuleActivatedWithTooHighLogLevel=Il modulo %s è attivato con un livello di logging troppo alto (provare a utilizzare un livello più basso per prestazioni e sicurezza migliori) +ModuleSyslogActivatedButLevelNotTooVerbose=Il modulo %s è attivato e il livello di log (%s) è corretto (non troppo dettagliato) +IfYouAreOnAProductionSetThis=Se ci si trova in un ambiente di produzione, è necessario impostare questa proprietà su %s. +AntivirusEnabledOnUpload=Antivirus abilitato sui file caricati +SomeFilesOrDirInRootAreWritable=Alcuni file o directory non sono in modalità di sola lettura EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export ImportSetup=Impostazione del modulo Import InstanceUniqueID=Unique ID of the instance SmallerThan=Smaller than 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. +IfTrackingIDFoundEventWillBeLinked=Si noti che se nell'e-mail viene trovato un ID di tracciamento di un oggetto, o se l'e-mail è la risposta di un'e-mail già raccolta e collegata a un oggetto, l'evento creato verrà automaticamente collegato all'oggetto correlato noto. 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=Potrebbe essere un comportamento desiderato spostare l'e-mail in un altro tag / directory quando è stata elaborata correttamente. Basta impostare il nome della directory qui per utilizzare questa funzione (NON usare caratteri speciali nel nome). Si noti che è necessario utilizzare anche un account di accesso in lettura / scrittura. -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=È possibile utilizzare questa azione per utilizzare il contenuto dell'e-mail per trovare e caricare una terza parte esistente nel database. La terza parte trovata (o creata) verrà utilizzata per le seguenti azioni che ne hanno bisogno.
Ad esempio, se vuoi creare una terza parte con un nome estratto da una stringa 'Nome: nome da trovare' presente nel corpo, usa l'email del mittente come email, puoi impostare il campo del parametro in questo modo:
'email= INTESTAZIONE:^Da:(.*);nome=ESTRATTO:CORPO:Nome:\\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? @@ -2140,10 +2142,10 @@ MakeAnonymousPing=Effettua un ping anonimo '+1' al server della Fondazione Dolib FeatureNotAvailableWithReceptionModule=Funzione non disponibile quando la ricezione del modulo è abilitata EmailTemplate=Modello per le e-mail EMailsWillHaveMessageID=Le e-mail avranno un tag "Riferimenti" corrispondente a questa sintassi -PDF_SHOW_PROJECT=Show project on document -ShowProjectLabel=Project Label +PDF_SHOW_PROJECT=Mostra progetto su documento +ShowProjectLabel=Etichetta del progetto PDF_USE_ALSO_LANGUAGE_CODE=Se vuoi avere alcuni testi nel tuo PDF duplicato in 2 lingue diverse nello stesso PDF generato, devi impostare qui la seconda lingua in modo che il PDF generato contenga 2 lingue diverse nella stessa pagina, quella scelta durante la generazione del PDF e questa ( solo pochi modelli PDF supportano questa opzione). Mantieni vuoto per 1 lingua per PDF. -PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF +PDF_USE_A=Genera documenti PDF in formato PDF/A anziché in formato PDF predefinito FafaIconSocialNetworksDesc=Inserisci qui il codice di un'icona FontAwesome. Se non sai cos'è FontAwesome, puoi utilizzare il valore generico fa-address-book. RssNote=Nota: ogni definizione di feed RSS fornisce un widget che è necessario abilitare per renderlo disponibile nella dashboard JumpToBoxes=Vai a Setup -> Widget @@ -2152,67 +2154,69 @@ MeasuringScaleDesc=La scala è il numero di posizioni in cui è necessario spost TemplateAdded=Template aggiunto TemplateUpdated=Template aggiornato TemplateDeleted=Template eliminato -MailToSendEventPush=Event reminder email -SwitchThisForABetterSecurity=Switching this value to %s is recommended for more security +MailToSendEventPush=E-mail di promemoria dell'evento +SwitchThisForABetterSecurity=Si consiglia di cambiare questo valore in %s per una maggiore sicurezza DictionaryProductNature= Natura del prodotto -CountryIfSpecificToOneCountry=Country (if specific to a given country) -YouMayFindSecurityAdviceHere=You may find security advisory here -ModuleActivatedMayExposeInformation=This PHP extension may expose sensitive data. If you don't need it, disable it. -ModuleActivatedDoNotUseInProduction=A module designed for the development has been enabled. Do not enable it on a production environment. -CombinationsSeparator=Separator character for product combinations -SeeLinkToOnlineDocumentation=See link to online documention on top menu for examples -SHOW_SUBPRODUCT_REF_IN_PDF=If the feature "%s" of module %s is used, show details of subproducts of a kit on PDF. -AskThisIDToYourBank=Contact your bank to get this ID -AdvancedModeOnly=Permision available in Advanced permission mode only -ConfFileIsReadableOrWritableByAnyUsers=The conf file is readable or writable by any users. Give permission to web server user and group only. -MailToSendEventOrganization=Event Organization -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 -NoWritableFilesFoundIntoRootDir=No writable files or directories of the common programs were found into your root directory (Good) -RecommendedValueIs=Recommended: %s +CountryIfSpecificToOneCountry=Paese (se specifico per un determinato Paese) +YouMayFindSecurityAdviceHere=Puoi trovare un avviso di sicurezza qui +ModuleActivatedMayExposeInformation=Questa estensione PHP può esporre dati sensibili. Se non ti serve, disabilitalo. +ModuleActivatedDoNotUseInProduction=È stato abilitato un modulo progettato per lo sviluppo. Non abilitarlo in un ambiente di produzione. +CombinationsSeparator=Carattere separatore per le combinazioni di prodotti +SeeLinkToOnlineDocumentation=Vedere il collegamento alla documentazione online nel menu in alto per esempi +SHOW_SUBPRODUCT_REF_IN_PDF=Se viene utilizzata la funzione "%s" del modulo %s , mostra i dettagli dei sottoprodotti di un kit su PDF. +AskThisIDToYourBank=Contatta la tua banca per ottenere questo ID +AdvancedModeOnly=Autorizzazione disponibile solo in modalità di autorizzazione Avanzata +ConfFileIsReadableOrWritableByAnyUsers=Il file conf è leggibile o scrivibile da qualsiasi utente. Concedi l'autorizzazione solo all'utente e al gruppo del server Web. +MailToSendEventOrganization=Organizzazione di eventi +MailToPartnership=Collaborazione +AGENDA_EVENT_DEFAULT_STATUS=Stato dell'evento predefinito durante la creazione di un evento dal modulo +YouShouldDisablePHPFunctions=Dovresti disabilitare le funzioni PHP +IfCLINotRequiredYouShouldDisablePHPFunctions=Tranne se è necessario eseguire i comandi di sistema nel codice personalizzato, è necessario disabilitare le funzioni PHP +PHPFunctionsRequiredForCLI=Ai fini della shell (come il backup di un lavoro pianificato o l'esecuzione di un programma anitivurs), è necessario mantenere le funzioni PHP +NoWritableFilesFoundIntoRootDir=Nessun file scrivibile o directory dei programmi comuni è stato trovato nella directory principale (buono) +RecommendedValueIs=Consigliato: %s Recommended=Raccomandata -NotRecommended=Not recommended -ARestrictedPath=Some restricted path -CheckForModuleUpdate=Check for external modules updates -CheckForModuleUpdateHelp=This action will connect to editors of external modules to check if a new version is available. +NotRecommended=Non consigliato +ARestrictedPath=Qualche percorso ristretto +CheckForModuleUpdate=Controlla gli aggiornamenti dei moduli esterni +CheckForModuleUpdateHelp=Questa azione si collegherà agli editor di moduli esterni per verificare se è disponibile una nuova versione. ModuleUpdateAvailable=Un aggiornamento è disponibile -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 -DatabasePasswordObfuscated=Database password is obfuscated in conf file -DatabasePasswordNotObfuscated=Database password is NOT obfuscated in conf file -APIsAreNotEnabled=APIs modules are not enabled -YouShouldSetThisToOff=You should set this to 0 or off -InstallAndUpgradeLockedBy=Install and upgrades are locked by the file %s -OldImplementation=Old implementation -PDF_SHOW_LINK_TO_ONLINE_PAYMENT=If some online payment modules are enabled (Paypal, Stripe, ...), add a link on the PDF to make the online payment -DashboardDisableGlobal=Disable globally all the thumbs of open objects -BoxstatsDisableGlobal=Disable totally box statistics -DashboardDisableBlocks=Thumbs of open objects (to process or late) on main dashboard -DashboardDisableBlockAgenda=Disable the thumb for agenda -DashboardDisableBlockProject=Disable the thumb for projects -DashboardDisableBlockCustomer=Disable the thumb for customers -DashboardDisableBlockSupplier=Disable the thumb for suppliers -DashboardDisableBlockContract=Disable the thumb for contracts -DashboardDisableBlockTicket=Disable the thumb for tickets -DashboardDisableBlockBank=Disable the thumb for banks -DashboardDisableBlockAdherent=Disable the thumb for memberships -DashboardDisableBlockExpenseReport=Disable the thumb for expense reports -DashboardDisableBlockHoliday=Disable the thumb for leaves -EnabledCondition=Condition to have field enabled (if not enabled, visibility will always be off) -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 -LanguageAndPresentation=Language and presentation -SkinAndColors=Skin and colors -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 -PDF_USE_1A=Generate PDF with PDF/A-1b format -MissingTranslationForConfKey = Missing translation for %s -NativeModules=Native modules -NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria -API_DISABLE_COMPRESSION=Disable compression of API responses -EachTerminalHasItsOwnCounter=Each terminal use its own counter. +NoExternalModuleWithUpdate=Nessun aggiornamento trovato per i moduli esterni +SwaggerDescriptionFile=File di descrizione dell'API Swagger (per l'uso con redoc, ad esempio) +YouEnableDeprecatedWSAPIsUseRESTAPIsInstead=Hai abilitato l'API WS obsoleta. Dovresti invece usare l'API REST. +RandomlySelectedIfSeveral=Selezionato casualmente se sono disponibili più immagini +DatabasePasswordObfuscated=La password del database è offuscata nel file conf +DatabasePasswordNotObfuscated=La password del database NON è offuscata nel file conf +APIsAreNotEnabled=I moduli API non sono abilitati +YouShouldSetThisToOff=Dovresti impostarlo su 0 o disattivato +InstallAndUpgradeLockedBy=L'installazione e gli aggiornamenti sono bloccati dal file %s +OldImplementation=Vecchia implementazione +PDF_SHOW_LINK_TO_ONLINE_PAYMENT=Se alcuni moduli di pagamento online sono abilitati (Paypal, Stripe, ...), aggiungi un link sul PDF per effettuare il pagamento online +DashboardDisableGlobal=Disabilita globalmente tutti i pollici degli oggetti aperti +BoxstatsDisableGlobal=Disattiva totalmente le statistiche della casella +DashboardDisableBlocks=Pollici di oggetti aperti (da elaborare o in ritardo) sul dashboard principale +DashboardDisableBlockAgenda=Disattiva il pollice per l'agenda +DashboardDisableBlockProject=Disabilita il pollice per i progetti +DashboardDisableBlockCustomer=Disabilita il pollice per i clienti +DashboardDisableBlockSupplier=Disabilita il pollice per i fornitori +DashboardDisableBlockContract=Disabilita il pollice per i contratti +DashboardDisableBlockTicket=Disabilita il pollice per i biglietti +DashboardDisableBlockBank=Disabilita il pollice per le banche +DashboardDisableBlockAdherent=Disabilita il pollice per gli abbonamenti +DashboardDisableBlockExpenseReport=Disattiva il pollice per le note spese +DashboardDisableBlockHoliday=Disattiva il pollice per le foglie +EnabledCondition=Condizione per avere il campo abilitato (se non abilitato, la visibilità sarà sempre disattivata) +IfYouUseASecondTaxYouMustSetYouUseTheMainTax=Se vuoi utilizzare una seconda imposta, devi abilitare anche la prima imposta sulla vendita +IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=Se vuoi utilizzare una terza imposta, devi abilitare anche la prima imposta sulla vendita +LanguageAndPresentation=Linguaggio e presentazione +SkinAndColors=Pelle e colori +IfYouUseASecondTaxYouMustSetYouUseTheMainTax=Se vuoi utilizzare una seconda imposta, devi abilitare anche la prima imposta sulla vendita +IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=Se vuoi utilizzare una terza imposta, devi abilitare anche la prima imposta sulla vendita +PDF_USE_1A=Genera PDF in formato PDF/A-1b +MissingTranslationForConfKey = Traduzione mancante per %s +NativeModules=Moduli nativi +NoDeployedModulesFoundWithThisSearchCriteria=Nessun modulo trovato per questi criteri di ricerca +API_DISABLE_COMPRESSION=Disabilita la compressione delle risposte API +EachTerminalHasItsOwnCounter=Ogni terminale utilizza il proprio contatore. +FillAndSaveAccountIdAndSecret=Compila e salva prima l'ID account e il segreto +PreviousHash=Hash precedente diff --git a/htdocs/langs/it_IT/agenda.lang b/htdocs/langs/it_IT/agenda.lang index 55b6ced3f81..59afe414529 100644 --- a/htdocs/langs/it_IT/agenda.lang +++ b/htdocs/langs/it_IT/agenda.lang @@ -4,7 +4,7 @@ Actions=Eventi Agenda=Agenda TMenuAgenda=Agenda Agendas=Agende -LocalAgenda=Default calendar +LocalAgenda=Calendario predefinito ActionsOwnedBy=Evento amministrato da ActionsOwnedByShort=Proprietario AffectedTo=Azione assegnata a @@ -20,7 +20,7 @@ MenuToDoActions=Tutte le azioni incomplete MenuDoneActions=Tutte le azioni passate MenuToDoMyActions=I mie eventi non completati MenuDoneMyActions=I miei eventi passati -ListOfEvents=List of events (default calendar) +ListOfEvents=Elenco degli eventi (calendario predefinito) ActionsAskedBy=Azioni richieste da ActionsToDoBy=Eventi assegnati a ActionsDoneBy=Azioni fatte da @@ -38,7 +38,7 @@ ActionsEvents=Eventi per i quali creare un'azione EventRemindersByEmailNotEnabled=I promemoria degli eventi via e-mail non sono stati abilitati nell'impostazione del modulo %s. ##### Agenda event labels ##### NewCompanyToDolibarr=Soggetto terzo %s creato -COMPANY_MODIFYInDolibarr=Third party %s modified +COMPANY_MODIFYInDolibarr=%s di terze parti modificato COMPANY_DELETEInDolibarr=Third party %s deleted ContractValidatedInDolibarr=Contratto %s convalidato CONTRACT_DELETEInDolibarr=Contratto %s cancellato @@ -64,7 +64,7 @@ ShipmentClassifyClosedInDolibarr=Spedizione %s classificata come fatturata ShipmentUnClassifyCloseddInDolibarr=Spedizione %s classificata come riaperta ShipmentBackToDraftInDolibarr=La spedizione %s torna allo stato bozza ShipmentDeletedInDolibarr=Spedizione %s eliminata -ShipmentCanceledInDolibarr=Shipment %s canceled +ShipmentCanceledInDolibarr=Spedizione %s annullata ReceptionValidatedInDolibarr=Ricezione %s convalidata OrderCreatedInDolibarr=Ordine %s creato OrderValidatedInDolibarr=Ordine convalidato @@ -89,7 +89,7 @@ OrderDeleted=Ordine cancellato InvoiceDeleted=Fattura cancellata DraftInvoiceDeleted=Bozza di fattura eliminata CONTACT_CREATEInDolibarr=Contatto %s creato -CONTACT_MODIFYInDolibarr=Contact %s modified +CONTACT_MODIFYInDolibarr=Contatto %s modificato CONTACT_DELETEInDolibarr=Contatto %s eliminato PRODUCT_CREATEInDolibarr=Prodotto %s creato PRODUCT_MODIFYInDolibarr=Prodotto %s modificato @@ -122,7 +122,7 @@ MRP_MO_UNVALIDATEInDolibarr=MO impostato sullo stato bozza MRP_MO_PRODUCEDInDolibarr=MO prodotto MRP_MO_DELETEInDolibarr=MO eliminato MRP_MO_CANCELInDolibarr=MO annullato -PAIDInDolibarr=%s paid +PAIDInDolibarr=%s pagato ##### End agenda events ##### AgendaModelModule=Modelli di documento per eventi DateActionStart=Data di inizio @@ -134,7 +134,7 @@ AgendaUrlOptions4=logint=%s per limitare l'output alle azioni assegnate a AgendaUrlOptionsProject=project= __PROJECT_ID__ per limitare l'output alle azioni collegate al progetto __PROJECT_ID__ . AgendaUrlOptionsNotAutoEvent=notactiontype=systemauto per escludere gli eventi automatici. AgendaUrlOptionsIncludeHolidays= includeholidays = 1 per includere eventi delle festività. -AgendaShowBirthdayEvents=Birthdays of contacts +AgendaShowBirthdayEvents=Compleanni di contatti AgendaHideBirthdayEvents=Nascondi i compleanni dei contatti Busy=Occupato ExportDataset_event1=Lista degli eventi in agenda @@ -156,7 +156,7 @@ ActionType=Tipo di evento DateActionBegin=Data di inizio evento ConfirmCloneEvent=Sei sicuro che vuoi clonare l'evento %s? RepeatEvent=Ripeti evento -OnceOnly=Once only +OnceOnly=Solo una volta EveryWeek=Ogni settimana EveryMonth=Ogni mese DayOfMonth=Giorno del mese @@ -165,10 +165,10 @@ DateStartPlusOne=Data inizio +1 ora SetAllEventsToTodo=Imposta tutti gli eventi su da fare SetAllEventsToInProgress=Imposta tutti gli eventi su in corso SetAllEventsToFinished=Imposta tutti gli eventi su conclusi -ReminderTime=Reminder period before the event -TimeType=Duration type -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 -ActiveByDefault=Enabled by default +ReminderTime=Periodo di promemoria prima dell'evento +TimeType=Tipo di durata +ReminderType=Tipo di richiamata +AddReminder=Crea una notifica di promemoria automatica per questo evento +ErrorReminderActionCommCreation=Errore durante la creazione della notifica di promemoria per questo evento +BrowserPush=Notifica a comparsa del browser +ActiveByDefault=Abilitato per impostazione predefinita diff --git a/htdocs/langs/it_IT/banks.lang b/htdocs/langs/it_IT/banks.lang index bbab88b91b4..0fa9abdc08b 100644 --- a/htdocs/langs/it_IT/banks.lang +++ b/htdocs/langs/it_IT/banks.lang @@ -108,13 +108,13 @@ SocialContributionPayment=Pagamento delle imposte sociali/fiscali BankTransfer=Bonifico bancario BankTransfers=Bonifici MenuBankInternalTransfer=Trasferimento interno -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. +TransferDesc=Usa il trasferimento interno per trasferire da un conto all'altro, l'applicazione scriverà due record: un addebito nel conto di origine e un credito nel conto di destinazione. Per questa transazione verranno utilizzati lo stesso importo, etichetta e data. TransferFrom=Da TransferTo=A TransferFromToDone=È stato registrato un trasferimento da %s a %s di %s %s. CheckTransmitter=Mittente ValidateCheckReceipt=Convalidare questa ricevuta ? -ConfirmValidateCheckReceipt=Are you sure that you want to submit this check receipt for validation? No changes will be possible once validated. +ConfirmValidateCheckReceipt=Sei sicuro di voler inviare questa ricevuta di controllo per la convalida? Nessuna modifica sarà possibile una volta convalidata. DeleteCheckReceipt=Eliminare questa ricevuta? ConfirmDeleteCheckReceipt=Vuoi davvero eliminare questa ricevuta? BankChecks=Assegni bancari @@ -141,7 +141,7 @@ AllAccounts=Tutte le banche e le casse BackToAccount=Torna al conto ShowAllAccounts=Mostra per tutti gli account FutureTransaction=Transazioni futura. Impossibile riconciliare -SelectChequeTransactionAndGenerate=Select/filter the checks which are to be included in the check deposit receipt. Then, click on "Create". +SelectChequeTransactionAndGenerate=Selezionare/filtrare gli assegni che devono essere inclusi nella ricevuta di deposito dell'assegno. Quindi, fai clic su "Crea". InputReceiptNumber=Scegliere l'estratto conto collegato alla conciliazione. Utilizzare un valore numerico ordinabile: AAAAMM o AAAAMMGG EventualyAddCategory=Infine, specificare una categoria in cui classificare i record ToConciliate=Da conciliare? @@ -172,13 +172,13 @@ SEPAMandate=Mandato SEPA YourSEPAMandate=I tuoi mandati SEPA FindYourSEPAMandate=Questo è il tuo mandato SEPA che autorizza la nostra azienda ad effettuare un ordine di addebito diretto alla tua banca. Da restituire firmata (scansione del documento firmato) o inviato all'indirizzo email 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=Controllo cassa POS +NewCashFence=Apertura o chiusura nuova cassa BankColorizeMovement=Colora i movimenti BankColorizeMovementDesc=Se questa funzione è abilitata, è possibile scegliere il colore di sfondo specifico per i movimenti di debito o credito BankColorizeMovementName1=Colore di sfondo per il movimento di debito BankColorizeMovementName2=Colore di sfondo per il movimento del credito -IfYouDontReconcileDisableProperty=If you don't make the bank reconciliations on some bank accounts, disable the property "%s" on them to remove this warning. +IfYouDontReconcileDisableProperty=Se non esegui le riconciliazioni bancarie su alcuni conti bancari, disabilita la proprietà "%s" su di essi per rimuovere questo avviso. NoBankAccountDefined=Nessun conto bancario definito -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. +NoRecordFoundIBankcAccount=Nessun record trovato nel conto bancario. Comunemente, ciò si verifica quando un record è stato eliminato manualmente dall'elenco delle transazioni nel conto bancario (ad esempio durante una riconciliazione del conto bancario). Un altro motivo è che il pagamento è stato registrato quando il modulo "%s" è stato disabilitato. AlreadyOneBankAccount=È già stato definito un conto bancario diff --git a/htdocs/langs/it_IT/bills.lang b/htdocs/langs/it_IT/bills.lang index 54e46a3f62e..d12ff11b14b 100644 --- a/htdocs/langs/it_IT/bills.lang +++ b/htdocs/langs/it_IT/bills.lang @@ -55,7 +55,7 @@ CustomerInvoice=Fattura attive CustomersInvoices=Fatture attive SupplierInvoice=Fattura fornitore SuppliersInvoices=Fatture Fornitore -SupplierInvoiceLines=Vendor invoice lines +SupplierInvoiceLines=Righe fattura fornitore SupplierBill=Fattura fornitore SupplierBills=Fatture Fornitore Payment=Pagamento @@ -81,15 +81,14 @@ PaymentsReports=Report pagamenti PaymentsAlreadyDone=Pagamenti già fatti PaymentsBackAlreadyDone=Rimborso già effettuato PaymentRule=Regola pagamento -PaymentMode=Tipo di pagamento -DefaultPaymentMode=Tipo di pagamento +PaymentMode=Metodo di pagamento +PaymentModes=Modalità di pagamento +DefaultPaymentMode=Metodo di pagamento predefinito DefaultBankAccount=Conto bancario -PaymentTypeDC=Carta di Debito/Credito -PaymentTypePP=PayPal -IdPaymentMode=Tipo di pagamento (id) -CodePaymentMode=Tipo di pagamento (codice) -LabelPaymentMode=Tipo di pagamento (etichetta) -PaymentModeShort=Tipo di pagamento +IdPaymentMode=Metodo di pagamento (id) +CodePaymentMode=Metodo di pagamento (codice) +LabelPaymentMode=Metodo di pagamento (etichetta) +PaymentModeShort=Metodo di pagamento PaymentTerm=Payment Term PaymentConditions=Termini di Pagamento PaymentConditionsShort=Termini di Pagamento @@ -120,7 +119,7 @@ ConvertExcessPaidToReduc=Convert excess paid into available discount EnterPaymentReceivedFromCustomer=Inserisci il pagamento ricevuto dal cliente EnterPaymentDueToCustomer=Emettere il pagamento dovuto al cliente DisabledBecauseRemainderToPayIsZero=Disabilitato perché il restante da pagare vale zero -PriceBase=Base price +PriceBase=Prezzo base BillStatus=Stato fattura StatusOfGeneratedInvoices=Stato delle fatture generate BillStatusDraft=Bozza (deve essere convalidata) @@ -192,7 +191,7 @@ ConfirmClassifyPaidPartiallyReasonDiscount=Il restante da pagare (%s %s) ConfirmClassifyPaidPartiallyReasonDiscountNoVat=Il restante da pagare (%s %s) viene scontato perché il pagamento è stato eseguito entro il termine. Accetto di perdere l'IVA sullo sconto. ConfirmClassifyPaidPartiallyReasonDiscountVat=Il restante da pagare (%s %s) viene scontato perché il pagamento è stato eseguito entro il termine. L'IVA sullo sconto sarà recuperata senza nota di credito. ConfirmClassifyPaidPartiallyReasonBadCustomer=Cliente moroso -ConfirmClassifyPaidPartiallyReasonBankCharge=Deduction by bank (intermediary bank fees) +ConfirmClassifyPaidPartiallyReasonBankCharge=Detrazione da parte della banca (spese bancarie intermedie) ConfirmClassifyPaidPartiallyReasonProductReturned=Parziale restituzione di prodotti ConfirmClassifyPaidPartiallyReasonOther=Altri motivi ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=This choice is possible if your invoice has been provided with suitable comments. (Example «Only the tax corresponding to the price that has been actually paid gives rights to deduction») @@ -200,7 +199,7 @@ ConfirmClassifyPaidPartiallyReasonDiscountVatDesc=In some countries, this choice ConfirmClassifyPaidPartiallyReasonAvoirDesc=Utilizzare questa scelta se tutte le altre opzioni sono inadeguate. ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=A bad customer is a customer that refuses to pay his debt. ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=Questa scelta viene utilizzata quando il pagamento non è completo perché alcuni dei prodotti sono stati restituiti -ConfirmClassifyPaidPartiallyReasonBankChargeDesc=The unpaid amount is intermediary bank fees, deducted directly from the correct amount paid by the Customer. +ConfirmClassifyPaidPartiallyReasonBankChargeDesc=L'importo non pagato è commissioni bancarie intermediarie , detratte direttamente dall'importo corretto pagato dal Cliente. ConfirmClassifyPaidPartiallyReasonOtherDesc=Use this choice if all others are not suitable, for example in following situation:
- payment not complete because some products were shipped back
- amount claimed too important because a discount was forgotten
In all cases, amount over-claimed must be corrected in accountancy system by creating a credit note. ConfirmClassifyAbandonReasonOther=Altro ConfirmClassifyAbandonReasonOtherDesc=Questa scelta sarà utilizzata in tutti gli altri casi. Perché, ad esempio, si prevede di creare una fattura sostitutiva. @@ -236,24 +235,24 @@ AlreadyPaidBack=Già rimborsato AlreadyPaidNoCreditNotesNoDeposits=Già pagata (senza note di credito e note d'accredito) Abandoned=Abbandonata RemainderToPay=Restante da pagare -RemainderToPayMulticurrency=Remaining unpaid, original currency +RemainderToPayMulticurrency=Resto non pagato, valuta originale RemainderToTake=Restante da incassare -RemainderToTakeMulticurrency=Remaining amount to take, original currency +RemainderToTakeMulticurrency=Importo residuo da prelevare, valuta originale RemainderToPayBack=Restante da rimborsare -RemainderToPayBackMulticurrency=Remaining amount to refund, original currency -NegativeIfExcessRefunded=negative if excess refunded +RemainderToPayBackMulticurrency=Importo residuo da rimborsare, valuta originale +NegativeIfExcessRefunded=negativo in caso di rimborso in eccesso Rest=In attesa AmountExpected=Importo atteso ExcessReceived=Ricevuto in eccesso -ExcessReceivedMulticurrency=Excess received, original currency -NegativeIfExcessReceived=negative if excess received +ExcessReceivedMulticurrency=Eccedenza ricevuta, valuta originale +NegativeIfExcessReceived=negativo se eccedenza ricevuta ExcessPaid=Eccesso pagato -ExcessPaidMulticurrency=Excess paid, original currency +ExcessPaidMulticurrency=Eccedenza pagata, valuta originale EscompteOffered=Sconto offerto (pagamento prima del termine) EscompteOfferedShort=Sconto SendBillRef=Invio della fattura %s SendReminderBillRef=Invio della fattura %s (promemoria) -SendPaymentReceipt=Submission of payment receipt %s +SendPaymentReceipt=Invio della ricevuta di pagamento %s NoDraftBills=Nessuna bozza di fatture NoOtherDraftBills=Nessun'altra bozza di fatture NoDraftInvoices=Nessuna fattura in bozza @@ -269,8 +268,8 @@ DateMaxPayment=Pagamento dovuto per DateInvoice=Data di fatturazione DatePointOfTax=Punto di imposta NoInvoice=Nessuna fattura -NoOpenInvoice=No open invoice -NbOfOpenInvoices=Number of open invoices +NoOpenInvoice=Nessuna fattura aperta +NbOfOpenInvoices=Numero di fatture aperte ClassifyBill=Classificazione fattura SupplierBillsToPay=Fatture Fornitore non pagate CustomerBillsUnpaid=Fatture attive non pagate @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Imposta marca da bollo Billed=Fatturati RecurringInvoices=Fatture ricorrenti +RecurringInvoice=Fattura ricorrente RepeatableInvoice=Modello fattura RepeatableInvoices=Modello fatture Repeatable=Modello @@ -388,7 +388,7 @@ DateLastGeneration=Data dell'ultima generazione DateLastGenerationShort=Data ultima gen. MaxPeriodNumber=Numero massimo di fatture da generare NbOfGenerationDone=Numero di fatture generate già create -NbOfGenerationOfRecordDone=Number of record generation already done +NbOfGenerationOfRecordDone=Numero di generazione di record già eseguita NbOfGenerationDoneShort=Numero di generazione eseguita MaxGenerationReached=Numero massimo di generazioni raggiunto InvoiceAutoValidate=Convalida le fatture automaticamente @@ -429,7 +429,7 @@ PaymentCondition14DENDMONTH=Pagamento a 14 giorni fine mese FixAmount=Importo fisso - 1 riga con etichetta "%s" VarAmount=Importo variabile (%% tot.) VarAmountOneLine=Variable amount (%% tot.) - 1 line with label '%s' -VarAmountAllLines=Variable amount (%% tot.) - all lines from origin +VarAmountAllLines=Importo variabile (%% tot.) - tutte le righe dall'origine # PaymentType PaymentTypeVIR=Bonifico bancario PaymentTypeShortVIR=Bonifico bancario @@ -449,6 +449,8 @@ PaymentTypeTRA=Assegno circolare PaymentTypeShortTRA=Assegno circolare PaymentTypeFAC=Fattore PaymentTypeShortFAC=Fattore +PaymentTypeDC=Carta di Debito/Credito +PaymentTypePP=PayPal BankDetails=Dati banca BankCode=ABI DeskCode=Codice filiale @@ -466,7 +468,7 @@ RegulatedOn=Regolamentato su ChequeNumber=Assegno N° ChequeOrTransferNumber=Assegno/Bonifico N° ChequeBordereau=Controlla programma -ChequeMaker=Check/Transfer sender +ChequeMaker=Controlla/Trasferisci mittente ChequeBank=Banca emittente CheckBank=Controllo NetToBePaid=Netto a pagare @@ -510,15 +512,15 @@ Cash=Contanti Reported=Segnalato DisabledBecausePayments=Impossibile perché ci sono dei pagamenti CantRemovePaymentWithOneInvoicePaid=Impossibile rimuovere il pagamento. C'è almeno una fattura classificata come pagata -CantRemovePaymentVATPaid=Can't remove payment since VAT declaration is classified paid -CantRemovePaymentSalaryPaid=Can't remove payment since salary is classified paid +CantRemovePaymentVATPaid=Impossibile rimuovere il pagamento poiché la dichiarazione IVA è classificata pagata +CantRemovePaymentSalaryPaid=Impossibile rimuovere il pagamento poiché lo stipendio è classificato pagato ExpectedToPay=Pagamento previsto CantRemoveConciliatedPayment=Can't remove reconciled payment PayedByThisPayment=Pagato con questo pagamento ClosePaidInvoicesAutomatically=Classify "Paid" all standard, down-payment or replacement invoices paid entirely. ClosePaidCreditNotesAutomatically=Classifica come "Pagata" tutte le note di credito interamente rimborsate ClosePaidContributionsAutomatically=Classify "Paid" all social or fiscal contributions paid entirely. -ClosePaidVATAutomatically=Classify automatically VAT declaration as "Paid" when payment is done entirely. +ClosePaidVATAutomatically=Classifica automaticamente la dichiarazione IVA come "Pagata" quando il pagamento è completo. ClosePaidSalaryAutomatically=Classifica automaticamente lo stipendio come "Pagato" quando l'importo è interamente saldato. AllCompletelyPayedInvoiceWillBeClosed=All invoices with no remainder to pay will be automatically closed with status "Paid". ToMakePayment=Paga @@ -532,10 +534,10 @@ YouMustCreateStandardInvoiceFirstDesc=Per creare un nuovo modelo bisogna prima c PDFCrabeDescription=Modello di fattura PDF Crabe. Un modello completo di fattura (vecchia implementazione del modello Sponge) PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template PDFCrevetteDescription=Modello di fattura Crevette. Template completo per le fatture (Modello raccomandato) -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 +TerreNumRefModelDesc1=Numero restituito nel formato %syymm-nnnn per fatture standard e %syymm-nnnn per note di credito dove yy è l'anno, mm è il mese e nnnn è un numero sequenziale a incremento automatico senza interruzioni e senza ritorno a 0 +MarsNumRefModelDesc1=Numero di ritorno nel formato %syymm-nnnn per fatture standard, %syymm-nnnn per fatture sostitutive, %syymm-nnnn per fatture di acconto e %syymm-nnnn per note di credito dove yy è l'anno, mm è il mese e nnnn è un autoincremento sequenziale senza interruzione e senza ritorno a 0 TerreNumRefModelError=Un altro modello di numerazione con sequenza $ syymm è già esistente e non è compatibile con questo modello. Rimuovere o rinominare per attivare questo modulo. -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 +CactusNumRefModelDesc1=Numero di ritorno nel formato %syymm-nnnn per fatture standard, %syymm-nnnn per note di credito e %syymm-nnnn per fatture di acconto dove yy è l'anno, mm è il mese e nnnn è un numero sequenziale a incremento automatico senza interruzioni e senza ritorno a 0 EarlyClosingReason=Motivo di chiusura anticipata EarlyClosingComment=Nota di chiusura anticipata ##### Types de contacts ##### @@ -581,9 +583,9 @@ ToCreateARecurringInvoiceGene=Per generare regolarmente e manualmente le prossim ToCreateARecurringInvoiceGeneAuto=If you need to have such invoices generated automatically, ask your administrator to enable and setup module %s. Note that both methods (manual and automatic) can be used together with no risk of duplication. DeleteRepeatableInvoice=Elimina template di fattura ConfirmDeleteRepeatableInvoice=Sei sicuro di voler eliminare il modello di fattura? -CreateOneBillByThird=Create one invoice per third party (otherwise, one invoice per selected object) -BillCreated=%s invoice(s) generated -BillXCreated=Invoice %s generated +CreateOneBillByThird=Crea una fattura per terzi (in caso contrario, una fattura per oggetto selezionato) +BillCreated=%s fatture generate +BillXCreated=Fattura %s generata StatusOfGeneratedDocuments=Stato della generazione del documento DoNotGenerateDoc=Non generare il documento AutogenerateDoc=Genera automaticamente il documento @@ -602,5 +604,6 @@ SituationTotalRayToRest=Resto da pagare senza tasse PDFSituationTitle=Situazione n ° %d SituationTotalProgress=Avanzamento totale %d %% SearchUnpaidInvoicesWithDueDate=Cerca fatture non pagate con data di scadenza = %s -NoPaymentAvailable=No payment available for %s -PaymentRegisteredAndInvoiceSetToPaid=Payment registered and invoice %s set to paid +NoPaymentAvailable=Nessun pagamento disponibile per %s +PaymentRegisteredAndInvoiceSetToPaid=Pagamento registrato e fattura %s impostata su pagata +SendEmailsRemindersOnInvoiceDueDate=Invia promemoria via e-mail per fatture non pagate diff --git a/htdocs/langs/it_IT/blockedlog.lang b/htdocs/langs/it_IT/blockedlog.lang index fd510757ffe..23088c4dc0f 100644 --- a/htdocs/langs/it_IT/blockedlog.lang +++ b/htdocs/langs/it_IT/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=È stato abilitato il sistema per tenere traccia degli eventi in registri inalterabili +BlockedLogDisabled=Il sistema per tenere traccia degli eventi in registri inalterabili è stato disabilitato dopo l'esecuzione di alcune registrazioni. Abbiamo salvato un'impronta digitale speciale per tracciare la catena come rotta +BlockedLogDisabledBis=Il sistema per tenere traccia degli eventi in log inalterabili è stato disabilitato. Ciò è possibile perché non è stata ancora eseguita alcuna registrazione. diff --git a/htdocs/langs/it_IT/bookmarks.lang b/htdocs/langs/it_IT/bookmarks.lang index 3eecd143941..88e23214ccf 100644 --- a/htdocs/langs/it_IT/bookmarks.lang +++ b/htdocs/langs/it_IT/bookmarks.lang @@ -15,7 +15,7 @@ UrlOrLink=URL BehaviourOnClick=Funzione per l'URL del segnalibro CreateBookmark=Crea segnalibro SetHereATitleForLink=Dai un titolo al segnalibro -UseAnExternalHttpLinkOrRelativeDolibarrLink=Use an external/absolute link (https://externalurl.com) or an internal/relative link (/mypage.php). You can also use phone like tel:0123456. +UseAnExternalHttpLinkOrRelativeDolibarrLink=Utilizza un link esterno/assoluto (https://externalurl.com) o un link interno/relativo (/mypage.php). Puoi anche usare il telefono come tel:0123456. ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Scegli se la pagina collegata deve essera aperta in una nuova finestra oppure no BookmarksManagement=Gestione segnalibri BookmarksMenuShortCut=Ctrl + Maiusc + m diff --git a/htdocs/langs/it_IT/boxes.lang b/htdocs/langs/it_IT/boxes.lang index 61bf843e5d0..4f7bb3f5d3a 100644 --- a/htdocs/langs/it_IT/boxes.lang +++ b/htdocs/langs/it_IT/boxes.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - boxes -BoxDolibarrStateBoard=Statistics on main business objects in database +BoxDolibarrStateBoard=Statistiche sui principali oggetti aziendali nel database BoxLoginInformation=Informazioni di login BoxLastRssInfos=RSS Information BoxLastProducts=Latest %s Products/Services @@ -18,13 +18,13 @@ BoxLastActions=Ultime azioni BoxLastContracts=Ultimi contratti BoxLastContacts=Ultimi contatti/indirizzi BoxLastMembers=Ultimi membri -BoxLastModifiedMembers=Latest modified members -BoxLastMembersSubscriptions=Latest member subscriptions +BoxLastModifiedMembers=Ultimi membri modificati +BoxLastMembersSubscriptions=Ultimi abbonamenti dei membri BoxFicheInter=Ultimi interventi BoxCurrentAccounts=Saldo conti aperti BoxTitleMemberNextBirthdays=Compleanni di questo mese (membri) -BoxTitleMembersByType=Members by type -BoxTitleMembersSubscriptionsByYear=Members Subscriptions by year +BoxTitleMembersByType=Membri per tipo +BoxTitleMembersSubscriptionsByYear=Abbonamenti membri per anno BoxTitleLastRssInfos=Ultime %s notizie da %s BoxTitleLastProducts=Prodotti/Servizi: ultimi %s modificati BoxTitleProductsAlertStock=Prodotti: allerta scorte @@ -46,11 +46,11 @@ BoxMyLastBookmarks=Segnalibri: ultimi %s modificati BoxOldestExpiredServices=Servizi scaduti da più tempo ancora attivi BoxLastExpiredServices=Ultimi %s contatti con servizi scaduti ancora attivi BoxTitleLastActionsToDo=Ultime %s azioni da fare -BoxTitleLastContracts=Latest %s contracts which were modified -BoxTitleLastModifiedDonations=Latest %s donations which were modified -BoxTitleLastModifiedExpenses=Latest %s expense reports which were modified -BoxTitleLatestModifiedBoms=Latest %s BOMs which were modified -BoxTitleLatestModifiedMos=Latest %s Manufacturing Orders which were modified +BoxTitleLastContracts=Gli ultimi contratti %s che sono stati modificati +BoxTitleLastModifiedDonations=Ultime donazioni %s che sono state modificate +BoxTitleLastModifiedExpenses=Ultime note spese %s che sono state modificate +BoxTitleLatestModifiedBoms=Ultime distinte base %s che sono state modificate +BoxTitleLatestModifiedMos=Ultimi ordini di produzione %s che sono stati modificati BoxTitleLastOutstandingBillReached=Clienti con il massimo in sospeso superato BoxGlobalActivity=Attività generale (fatture, proposte, ordini) BoxGoodCustomers=Buoni clienti @@ -91,8 +91,8 @@ BoxTitleLatestModifiedSupplierOrders=Ordini fornitore: ultimi %s modificati BoxTitleLastModifiedCustomerBills=Fatture attive: ultime %s modificate BoxTitleLastModifiedCustomerOrders=Ordini: ultimi %s modificati BoxTitleLastModifiedPropals=Ultime %s proposte modificate -BoxTitleLatestModifiedJobPositions=Latest %s modified job positions -BoxTitleLatestModifiedCandidatures=Latest %s modified job applications +BoxTitleLatestModifiedJobPositions=Ultime posizioni lavorative modificate %s +BoxTitleLatestModifiedCandidatures=Ultime domande di lavoro modificate %s ForCustomersInvoices=Fatture attive ForCustomersOrders=Ordini cliente ForProposals=Proposte @@ -100,8 +100,8 @@ LastXMonthRolling=Ultimi %s mesi ChooseBoxToAdd=Aggiungi widget alla dashboard BoxAdded=Widget aggiunto al pannello principale BoxTitleUserBirthdaysOfMonth=Compleanni di questo mese (utenti) -BoxLastManualEntries=Latest record in accountancy entered manually or without source document -BoxTitleLastManualEntries=%s latest record entered manually or without source document +BoxLastManualEntries=Ultimo record in contabilità inserito manualmente o senza documento di origine +BoxTitleLastManualEntries=%s ultimo record inserito manualmente o senza documento di origine NoRecordedManualEntries=Nessuna registrazione manuale registrata in contabilità BoxSuspenseAccount=Conta l'operazione contabile con l'account suspense BoxTitleSuspenseAccount=Numero di righe non allocate @@ -112,9 +112,9 @@ BoxTitleLastCustomerShipments=Ultime %s spedizioni cliente NoRecordedShipments=Nessuna spedizione cliente registrata BoxCustomersOutstandingBillReached=Clienti con limite eccezionale raggiunto # Pages -UsersHome=Home users and groups -MembersHome=Home Membership -ThirdpartiesHome=Home Thirdparties -TicketsHome=Home Tickets -AccountancyHome=Home Accountancy +UsersHome=Utenti domestici e gruppi +MembersHome=Abbonamento domestico +ThirdpartiesHome=Terze parti domestiche +TicketsHome=Biglietti per la casa +AccountancyHome=Contabilità domestica ValidatedProjects=Progetti convalidati diff --git a/htdocs/langs/it_IT/cashdesk.lang b/htdocs/langs/it_IT/cashdesk.lang index 524a45078ea..0aa9f577634 100644 --- a/htdocs/langs/it_IT/cashdesk.lang +++ b/htdocs/langs/it_IT/cashdesk.lang @@ -41,8 +41,8 @@ Floor=Floor AddTable=Add table Place=Place TakeposConnectorNecesary='TakePOS Connector' required -OrderPrinters=Add a button to send the order to some given printers, without payment (for example to send an order to a kitchen) -NotAvailableWithBrowserPrinter=Not available when printer for receipt is set to browser +OrderPrinters=Aggiungi un pulsante per inviare l'ordine a determinate stampanti, senza pagamento (ad esempio per inviare un ordine a una cucina) +NotAvailableWithBrowserPrinter=Non disponibile quando la stampante per la ricevuta è impostata sul browser SearchProduct=Search product Receipt=Ricevuta Header=Header @@ -50,16 +50,16 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Importo teorico RealAmount=Real amount -CashFence=Cash desk closing -CashFenceDone=Cash desk closing done for the period +CashFence=Chiusura cassa +CashFenceDone=Chiusura cassa avvenuta nel periodo NbOfInvoices=Numero di fatture Paymentnumpad=Type of Pad to enter payment Numberspad=Numbers Pad BillsCoinsPad=Coins and banknotes Pad DolistorePosCategory=TakePOS modules and other POS solutions for Dolibarr -TakeposNeedsCategories=TakePOS needs at least one product categorie to work -TakeposNeedsAtLeastOnSubCategoryIntoParentCategory=TakePOS needs at least 1 product category under the category %s to work -OrderNotes=Can add some notes to each ordered items +TakeposNeedsCategories=TakePOS ha bisogno di almeno una categoria di prodotti per funzionare +TakeposNeedsAtLeastOnSubCategoryIntoParentCategory=TakePOS ha bisogno di almeno 1 categoria di prodotti nella categoria %s per funzionare +OrderNotes=Può aggiungere alcune note a ogni articolo ordinato CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration TicketVatGrouped=Raggruppa l'IVA per aliquota in biglietti / ricevute @@ -79,12 +79,12 @@ POSModule=Modulo POS BasicPhoneLayout=Use basic layout for phones SetupOfTerminalNotComplete=Setup of terminal %s is not complete DirectPayment=Direct payment -DirectPaymentButton=Add a "Direct cash payment" button +DirectPaymentButton=Aggiungi un pulsante "Pagamento diretto in contanti". InvoiceIsAlreadyValidated=La fattura è già stata convalidata NoLinesToBill=No lines to bill CustomReceipt=Ricevuta personalizzata ReceiptName=Nome ricevuta -ProductSupplements=Manage supplements of products +ProductSupplements=Gestire supplementi di prodotti SupplementCategory=Categorie di supplemento ColorTheme=Colore del tema Colorful=Colorato @@ -94,16 +94,16 @@ Browser=Browser BrowserMethodDescription=Stampa di ricevute semplice e facile. Solo pochi parametri per configurare la ricevuta. Stampa tramite browser. TakeposConnectorMethodDescription=Modulo esterno con funzionalità extra. Possibilità di stampare dal cloud. PrintMethod=Metodo di stampa -ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. The server hosting the application can't be in the Cloud (must be able to reach the printers in your network). +ReceiptPrinterMethodDescription=Metodo potente con molti parametri. Completamente personalizzabile con modelli. Il server che ospita l'applicazione non può essere nel Cloud (deve essere in grado di raggiungere le stampanti nella tua rete). ByTerminal=Da terminale -TakeposNumpadUsePaymentIcon=Use icon instead of text on payment buttons of numpad +TakeposNumpadUsePaymentIcon=Utilizzare l'icona al posto del testo sui pulsanti di pagamento del tastierino numerico CashDeskRefNumberingModules=Modulo di numerazione per vendite POS CashDeskGenericMaskCodes6 =
Il tag {TN} viene utilizzato per aggiungere il numero del terminale TakeposGroupSameProduct=Raggruppa le stesse linee di prodotti StartAParallelSale=Inizia una nuova vendita parallela -SaleStartedAt=Sale started at %s -ControlCashOpening=Open the "Control cash" popup when opening the POS -CloseCashFence=Close cash desk control +SaleStartedAt=La vendita è iniziata a %s +ControlCashOpening=Apri il popup "Controllo contanti" quando apri il POS +CloseCashFence=Chiudere il controllo della cassa CashReport=Rapporto di cassa MainPrinterToUse=Stampante principale da utilizzare OrderPrinterToUse=Ordine stampante da utilizzare @@ -120,17 +120,17 @@ HideCategoryImages=Nascondi immagini di categoria HideProductImages=Nascondi immagini del prodotto NumberOfLinesToShow=Numero di righe di immagini da mostrare DefineTablePlan=Definisci il piano dei tavoli -GiftReceiptButton=Add a "Gift receipt" button -GiftReceipt=Gift receipt -ModuleReceiptPrinterMustBeEnabled=Module Receipt printer must have been enabled first -AllowDelayedPayment=Allow delayed payment -PrintPaymentMethodOnReceipts=Print payment method on tickets|receipts -WeighingScale=Weighing scale -ShowPriceHT = Display the column with the price excluding tax (on screen) -ShowPriceHTOnReceipt = Display the column with the price excluding tax (on the receipt) -CustomerDisplay=Customer display -SplitSale=Split sale -PrintWithoutDetailsButton=Add "Print without details" button -PrintWithoutDetailsLabelDefault=Line label by default on printing without details -PrintWithoutDetails=Print without details -YearNotDefined=Year is not defined +GiftReceiptButton=Aggiungi un pulsante "Scontrino regalo". +GiftReceipt=Ricevuta regalo +ModuleReceiptPrinterMustBeEnabled=La stampante per ricevute del modulo deve essere prima abilitata +AllowDelayedPayment=Consenti pagamento ritardato +PrintPaymentMethodOnReceipts=Stampa il metodo di pagamento sui biglietti|ricevute +WeighingScale=Bilancia +ShowPriceHT = Visualizza la colonna con il prezzo IVA esclusa (a schermo) +ShowPriceHTOnReceipt = Visualizza la colonna con il prezzo IVA esclusa (sulla ricevuta) +CustomerDisplay=Esposizione del cliente +SplitSale=Vendita frazionata +PrintWithoutDetailsButton=Aggiungi il pulsante "Stampa senza dettagli". +PrintWithoutDetailsLabelDefault=Etichetta di linea per impostazione predefinita sulla stampa senza dettagli +PrintWithoutDetails=Stampa senza dettagli +YearNotDefined=L'anno non è definito diff --git a/htdocs/langs/it_IT/companies.lang b/htdocs/langs/it_IT/companies.lang index ee9968003d8..c0a45186b90 100644 --- a/htdocs/langs/it_IT/companies.lang +++ b/htdocs/langs/it_IT/companies.lang @@ -4,7 +4,7 @@ ErrorSetACountryFirst=Imposta prima il paese SelectThirdParty=Seleziona un soggetto terzo ConfirmDeleteCompany=Vuoi davvero eliminare questo soggetto terzo e tutte le relative informazioni? DeleteContact=Elimina un contatto/indirizzo -ConfirmDeleteContact=Are you sure you want to delete this contact and all related information? +ConfirmDeleteContact=Sei sicuro di voler eliminare questo contatto e tutte le relative informazioni? MenuNewThirdParty=Nuovo soggetto terzo MenuNewCustomer=Nuovo cliente MenuNewProspect=Nuovo cliente potenziale @@ -43,10 +43,10 @@ Individual=Privato ToCreateContactWithSameName=Will automatically create a contact/address with same information as the third party under the third party. In most cases, even if your third party is a physical person, creating a third party alone is enough. ParentCompany=Società madre Subsidiaries=Controllate -ReportByMonth=Report per month -ReportByCustomers=Report per customer -ReportByThirdparties=Report per thirdparty -ReportByQuarter=Report per rate +ReportByMonth=Rapporto al mese +ReportByCustomers=Report per cliente +ReportByThirdparties=Report per terze parti +ReportByQuarter=Rapporto per tariffa CivilityCode=Titolo RegisteredOffice=Sede legale Lastname=Cognome @@ -80,7 +80,7 @@ Web=Sito web Poste= Posizione DefaultLang=Lingua predefinita (codice lingua) VATIsUsed=Utilizza imposte sulle vendite -VATIsUsedWhenSelling=This defines if this third party includes a sales tax or not when it makes an invoice to its own customers +VATIsUsedWhenSelling=Questo definisce se questa terza parte include un'imposta sulle vendite o meno quando fa una fattura ai propri clienti VATIsNotUsed=L'imposta sulle vendite non viene utilizzata CopyAddressFromSoc=Compila l'indirizzo con l'indirizzo del soggetto terzo ThirdpartyNotCustomerNotSupplierSoNoRef=Soggetto terzo né cliente né fornitore, nessun oggetto di riferimento disponibile @@ -157,15 +157,15 @@ ProfId3CL=- ProfId4CL=- ProfId5CL=- ProfId6CL=- -ProfId1CM=Id. prof. 1 (Trade Register) -ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1CM=ID. prof. 1 (Registro delle imprese) +ProfId2CM=ID. prof. 2 (n. contribuente) +ProfId3CM=ID. prof. 3 (Decreto di creazione) ProfId4CM=Id Professionale 6 ProfId5CM=Id Professionale 6 ProfId6CM=Id Professionale 6 -ProfId1ShortCM=Trade Register -ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation +ProfId1ShortCM=Registro delle Imprese +ProfId2ShortCM=contribuente n. +ProfId3ShortCM=Decreto di creazione ProfId4ShortCM=Id Professionale 6 ProfId5ShortCM=Id Professionale 6 ProfId6ShortCM=Id Professionale 6 @@ -185,15 +185,15 @@ ProfId1ES=CIF/NIF ProfId2ES=Núm seguridad social ProfId3ES=CNAE ProfId4ES=Núm colegiado -ProfId5ES=Prof Id 5 (EORI number) +ProfId5ES=Prof Id 5 (numero EORI) ProfId6ES=- ProfId1FR=SIREN ProfId2FR=SIRET ProfId3FR=NAF, vecchio APE ProfId4FR=RCS/RM -ProfId5FR=Prof Id 5 (numéro EORI) +ProfId5FR=Prof Id 5 (numero EORI) ProfId6FR=- -ProfId1ShortFR=SIREN +ProfId1ShortFR=SIRENA ProfId2ShortFR=SIRET ProfId3ShortFR=NAF ProfId4ShortFR=RCS @@ -251,7 +251,7 @@ ProfId1PT=NIPC ProfId2PT=numero di sicurezza sociale ProfId3PT=numero registrazione commerciale ProfId4PT=Conservatorio -ProfId5PT=Prof Id 5 (EORI number) +ProfId5PT=Prof Id 5 (numero EORI) ProfId6PT=- ProfId1SN=RC ProfId2SN=Ninea @@ -275,7 +275,7 @@ ProfId1RO=Prof ID 1 (CUI) ProfId2RO=Prof ID 2 (Nr. Immatricolazione) ProfId3RO=Prof ID 3 (CAEN) ProfId4RO=Prof ID 5 (EUID) -ProfId5RO=Prof Id 5 (EORI number) +ProfId5RO=Prof Id 5 (numero EORI) ProfId6RO=- ProfId1RU=OGRN ProfId2RU=INN @@ -286,7 +286,7 @@ ProfId6RU=- ProfId1UA=Prof Id 1 (EDRPOU) ProfId2UA=Prof Id 2 (DRFO) ProfId3UA=Prof Id 3 (INN) -ProfId4UA=Prof Id 4 (Certificate) +ProfId4UA=Prof Id 4 (Certificato) ProfId5UA=Prof Id 5 (RNOKPP) ProfId6UA=Prof Id 6 (TRDPAU) ProfId1DZ=RC @@ -349,7 +349,7 @@ CustomerCodeDesc=Codice cliente, univoco SupplierCodeDesc=Codice fornitore, unico per tutti i fornitori RequiredIfCustomer=Obbligatorio se il soggetto terzo è un cliente o un cliente potenziale RequiredIfSupplier=Obbligatorio se il soggetto terzo è un fornitore -ValidityControledByModule=Validity controlled by the module +ValidityControledByModule=Validità controllata dal modulo ThisIsModuleRules=Regole per questo modulo ProspectToContact=Cliente potenziale da contattare CompanyDeleted=Società %s cancellata dal database. @@ -381,7 +381,7 @@ VATIntraCheck=Controllo partita IVA VATIntraCheckDesc=The VAT ID must include the country prefix. The link %s uses the European VAT checker service (VIES) which requires internet access from the Dolibarr server. VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do VATIntraCheckableOnEUSite=Check the intra-Community VAT ID on the European Commission website -VATIntraManualCheck=You can also check manually on the European Commission website %s +VATIntraManualCheck=Puoi anche controllare manualmente sul sito web della Commissione Europea %s ErrorVATCheckMS_UNAVAILABLE=Non è possibile effettuare il controllo. Servizio non previsto per lo stato membro ( %s). NorProspectNorCustomer=Né cliente, né cliente potenziale JuridicalStatus=Tipo di entità aziendale @@ -467,12 +467,12 @@ CurrentOutstandingBill=Fatture scadute OutstandingBill=Max. fattura in sospeso OutstandingBillReached=Raggiunto il massimo numero di fatture scadute OrderMinAmount=Quantità minima per l'ordine -MonkeyNumRefModelDesc=Return a number in the format %syymm-nnnn for the customer code and %syymm-nnnn for the vendor code where yy is year, mm is month and nnnn is a sequencial auto-incrementing number with no break and no return to 0. +MonkeyNumRefModelDesc=Restituisce un numero nel formato %syymm-nnnn per il codice cliente e %syymm-nnnn per il codice fornitore dove yy è l'anno, mm è il mese e nnnn è un numero sequenziale a incremento automatico senza interruzioni e senza ritorno a 0. LeopardNumRefModelDesc=Codice cliente/fornitore libero. Questo codice può essere modificato in qualsiasi momento. ManagingDirectors=Nome Manager(s) (CEO, direttore, presidente...) MergeOriginThirdparty=Duplica soggetto terzo (soggetto terzo che stai eliminando) MergeThirdparties=Unisci soggetti terzi -ConfirmMergeThirdparties=Are you sure you want to merge the chosen third party with the current one? All linked objects (invoices, orders, ...) will be moved to the current third party, after which the chosen third party will be deleted. +ConfirmMergeThirdparties=Sei sicuro di voler unire la terza parte scelta con quella attuale? Tutti gli oggetti collegati (fatture, ordini, ...) verranno spostati nella terza parte corrente, dopodiché la terza parte scelta verrà eliminata. ThirdpartiesMergeSuccess=Terze parti sono state unite SaleRepresentativeLogin=Login del rappresentante commerciale SaleRepresentativeFirstname=Nome del commerciale diff --git a/htdocs/langs/it_IT/compta.lang b/htdocs/langs/it_IT/compta.lang index 99392cc1ef7..c6352f9dc5e 100644 --- a/htdocs/langs/it_IT/compta.lang +++ b/htdocs/langs/it_IT/compta.lang @@ -65,7 +65,7 @@ LT2SupplierIN=SGST purchases VATCollected=IVA incassata StatusToPay=Pagare SpecialExpensesArea=Area per pagamenti straordinari -VATExpensesArea=Area for all TVA payments +VATExpensesArea=Area per tutti i pagamenti TVA SocialContribution=Tassa o contributo SocialContributions=Tasse o contributi SocialContributionsDeductibles=Tasse o contributi deducibili @@ -106,8 +106,8 @@ LT2PaymentES=Pagamento IRPF (Spagna) LT2PaymentsES=Pagamenti IRPF (Spagna) VATPayment=Pagamento IVA VATPayments=Pagamenti IVA -VATDeclarations=VAT declarations -VATDeclaration=VAT declaration +VATDeclarations=Dichiarazioni IVA +VATDeclaration=Dichiarazione IVA VATRefund=Rimborso IVA NewVATPayment=New sales tax payment NewLocalTaxPayment=New tax %s payment @@ -115,7 +115,7 @@ Refund=Rimborso SocialContributionsPayments=Pagamenti tasse/contributi ShowVatPayment=Visualizza pagamento IVA TotalToPay=Totale da pagare -BalanceVisibilityDependsOnSortAndFilters=Balance is visible in this list only if table is sorted on %s and filtered on 1 bank account (with no other filters) +BalanceVisibilityDependsOnSortAndFilters=Il saldo è visibile in questo elenco solo se la tabella è ordinata su %s e filtrata su 1 conto bancario (senza altri filtri) CustomerAccountancyCode=Customer accounting code SupplierAccountancyCode=vendor accounting code CustomerAccountancyCodeShort=Cod. cont. cliente @@ -135,24 +135,24 @@ NewCheckReceipt=Nuovo sconto NewCheckDeposit=Nuovo deposito NewCheckDepositOn=Nuovo deposito sul conto: %s NoWaitingChecks=Nessun assegno in attesa di deposito. -DateChequeReceived=Check receiving date +DateChequeReceived=Controlla la data di ricezione NbOfCheques=No. of checks PaySocialContribution=Paga tassa/contributo -PayVAT=Pay a VAT declaration -PaySalary=Pay a salary card -ConfirmPaySocialContribution=Are you sure you want to classify this social or fiscal tax as paid ? -ConfirmPayVAT=Are you sure you want to classify this VAT declaration as paid ? -ConfirmPaySalary=Are you sure you want to classify this salary card as paid? +PayVAT=Pagare una dichiarazione IVA +PaySalary=Pagare una carta stipendio +ConfirmPaySocialContribution=Sei sicuro di voler classificare questa imposta sociale o fiscale come pagata? +ConfirmPayVAT=Sei sicuro di voler classificare questa dichiarazione IVA come pagata? +ConfirmPaySalary=Sei sicuro di voler classificare questa busta paga come pagata? DeleteSocialContribution=Cancella il pagamento della tassa/contributo -DeleteVAT=Delete a VAT declaration -DeleteSalary=Delete a salary card -ConfirmDeleteSocialContribution=Are you sure you want to delete this social/fiscal tax payment ? -ConfirmDeleteVAT=Are you sure you want to delete this VAT declaration ? -ConfirmDeleteSalary=Are you sure you want to delete this salary? +DeleteVAT=Elimina una dichiarazione IVA +DeleteSalary=Elimina una scheda stipendio +ConfirmDeleteSocialContribution=Sei sicuro di voler eliminare questo pagamento fiscale/sociale? +ConfirmDeleteVAT=Sei sicuro di voler eliminare questa dichiarazione IVA? +ConfirmDeleteSalary=Sei sicuro di voler eliminare questo stipendio? ExportDataset_tax_1=Tasse/contributi e pagamenti CalcModeVATDebt=Modalità %sIVA su contabilità d'impegno%s. CalcModeVATEngagement=Calcola %sIVA su entrate-uscite%s -CalcModeDebt=Analysis of known recorded documents even if they are not yet accounted in ledger. +CalcModeDebt=Analisi dei documenti registrati noti anche se non ancora contabilizzati. CalcModeEngagement=Analisi dei pagamenti registrati, anche se non ancora contabilizzati nel libro mastro. CalcModeBookkeeping=Analysis of data journalized in Bookkeeping Ledger table. CalcModeLT1= Modalità %sRE su fatture clienti - fatture fornitori%s @@ -166,48 +166,48 @@ AnnualSummaryInputOutputMode=Bilancio di entrate e uscite, sintesi annuale AnnualByCompanies=Balance of income and expenses, by predefined groups of account AnnualByCompaniesDueDebtMode=Balance of income and expenses, detail by predefined groups, mode %sClaims-Debts%s said Commitment accounting. AnnualByCompaniesInputOutputMode=Balance of income and expenses, detail by predefined groups, mode %sIncomes-Expenses%s said cash accounting. -SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation based on recorded payments made even if they are not yet accounted in Ledger -SeeReportInDueDebtMode=See %sanalysis of recorded documents%s for a calculation based on known recorded documents even if they are not yet accounted in Ledger -SeeReportInBookkeepingMode=See %sanalysis of bookeeping ledger table%s for a report based on Bookkeeping Ledger table +SeeReportInInputOutputMode=Vedere %sanalysis of payments%s per un calcolo basato su pagamenti registrati effettuati anche se non sono ancora contabilizzati in Ledger +SeeReportInDueDebtMode=Vedere %sanalisi dei documenti registrati%s per un calcolo basato su documenti noti registrati anche se non sono ancora contabilizzati in Ledger +SeeReportInBookkeepingMode=Vedere %sanalysis of bookeeping ledger table%s per un report basato su Tabella di contabilità RulesAmountWithTaxIncluded=- Gli importi indicati sono tasse incluse -RulesAmountWithTaxExcluded=- Amounts of invoices shown are with all taxes excluded -RulesResultDue=- It includes all invoices, expenses, VAT, donations, salaries, whether they are paid or not.
- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries, the date of end of period is used. -RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries.
- It is based on the payment dates of the invoices, expenses, VAT, donations and salaries. +RulesAmountWithTaxExcluded=- Gli importi delle fatture indicati sono con tutte le tasse escluse +RulesResultDue=- Include tutte le fatture, spese, IVA, donazioni, stipendi, pagati o meno.
- Si basa sulla data di fatturazione delle fatture e sulla data di scadenza delle spese o dei pagamenti delle tasse. Per gli stipendi viene utilizzata la data di fine periodo. +RulesResultInOut=- Comprende i pagamenti reali effettuati su fatture, spese, IVA e stipendi.
- Si basa sulle date di pagamento di fatture, spese, IVA, donazioni e stipendi. RulesCADue=- Include le fatture scadute del cliente indipendentemente dal fatto che siano pagate o meno.
- Si basa sulla data di fatturazione di queste fatture.
RulesCAIn=- Comprende le fatture effettivamente pagate dai clienti.
- Si basa sulla data dei pagamenti.
RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. -RulesSalesTurnoverOfIncomeAccounts=It includes (credit - debit) of lines for product accounts in group INCOME +RulesSalesTurnoverOfIncomeAccounts=Comprende (accredito - addebito) di righe per conti prodotto nel gruppo ENTRATE RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" RulesResultBookkeepingPredefined=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" RulesResultBookkeepingPersonalized=It show record in your Ledger with accounting accounts grouped by personalized groups SeePageForSetup=See menu %s for setup DepositsAreNotIncluded=- Down payment invoices are not included DepositsAreIncluded=- Sono incluse le fatture d'acconto -LT1ReportByMonth=Tax 2 report by month -LT2ReportByMonth=Tax 3 report by month +LT1ReportByMonth=Report fiscale 2 per mese +LT2ReportByMonth=Report fiscale 3 per mese LT1ReportByCustomers=Report tax 2 by third party LT2ReportByCustomers=Report tax 3 by third party LT1ReportByCustomersES=Report by third party RE LT2ReportByCustomersES=IRPF soggetti terzi(Spagna) -VATReport=Sales tax report -VATReportByPeriods=Sales tax report by period -VATReportByMonth=Sales tax report by month -VATReportByRates=Sales tax report by rate -VATReportByThirdParties=Sales tax report by third party -VATReportByCustomers=Sales tax report by customer +VATReport=Report IVA +VATReportByPeriods=Report IVA per periodo +VATReportByMonth=Report IVA per mese +VATReportByRates=Report IVA per aliquota +VATReportByThirdParties=Report IVA di terzi +VATReportByCustomers=Report IVA per cliente VATReportByCustomersInInputOutputMode=Report per IVA cliente riscossa e pagata -VATReportByQuartersInInputOutputMode=Report by Sales tax rate of the tax collected and paid -VATReportShowByRateDetails=Show details of this rate +VATReportByQuartersInInputOutputMode=Report per aliquota dell'imposta sulle vendite dell'imposta riscossa e pagata +VATReportShowByRateDetails=Mostra i dettagli di questa tariffa LT1ReportByQuarters=Report tax 2 by rate LT2ReportByQuarters=Report tax 3 by rate LT1ReportByQuartersES=Report by RE rate LT2ReportByQuartersES=Report by IRPF rate -SeeVATReportInInputOutputMode=See report %sVAT collection%s for a standard calculation -SeeVATReportInDueDebtMode=See report %sVAT on debit%s for a calculation with an option on the invoicing -RulesVATInServices=- For services, the report includes the VAT of payments actually received or paid on the basis of the date of payment. -RulesVATInProducts=- For material assets, the report includes the VAT on the basis of the date of payment. -RulesVATDueServices=- For services, the report includes VAT of due invoices, paid or not, based on the invoice date. -RulesVATDueProducts=- For material assets, the report includes the VAT of due invoices, based on the invoice date. +SeeVATReportInInputOutputMode=Vedi report %sVAT collection%s per un calcolo standard +SeeVATReportInDueDebtMode=Vedi report %sVAT su debit%s per un calcolo con opzione sulla fatturazione +RulesVATInServices=- Per i servizi, il rendiconto include l'IVA dei pagamenti effettivamente ricevuti o pagati in base alla data di pagamento. +RulesVATInProducts=- Per i beni materiali, il rendiconto include l'IVA in base alla data di pagamento. +RulesVATDueServices=- Per i servizi, il report include l'IVA delle fatture dovute, pagate o meno, in base alla data della fattura. +RulesVATDueProducts=- Per i beni materiali, il report include l'IVA delle fatture dovute, in base alla data della fattura. OptionVatInfoModuleComptabilite=Nota: Per i prodotti è più corretto usare la data di consegna. ThisIsAnEstimatedValue=This is a preview, based on business events and not from the final ledger table, so final results may differ from this preview values PercentOfInvoice=%%/fattura @@ -232,7 +232,7 @@ Pcg_subtype=Sottotipo Pcg InvoiceLinesToDispatch=Riga di fattura da spedire *consegnare ByProductsAndServices=Per prodotti e servizi RefExt=Referente esterno -ToCreateAPredefinedInvoice=To create a template invoice, create a standard invoice, then, without validating it, click on button "%s". +ToCreateAPredefinedInvoice=Per creare una fattura modello, creare una fattura standard, quindi, senza convalidarla, fare clic sul pulsante "%s". LinkedOrder=Collega a ordine Mode1=Metodo 1 Mode2=Metodo 2 @@ -250,8 +250,8 @@ ACCOUNTING_ACCOUNT_CUSTOMER_Desc=The dedicated accounting account defined on thi ACCOUNTING_ACCOUNT_SUPPLIER=Accounting account used for vendor third parties ACCOUNTING_ACCOUNT_SUPPLIER_Desc=The dedicated accounting account defined on third party card will be used for Subledger accounting only. This one will be used for General Ledger and as default value of Subledger accounting if dedicated vendor accounting account on third party is not defined. ConfirmCloneTax=Confirm the clone of a social/fiscal tax -ConfirmCloneVAT=Confirm the clone of a VAT declaration -ConfirmCloneSalary=Confirm the clone of a salary +ConfirmCloneVAT=Conferma il clone di una dichiarazione IVA +ConfirmCloneSalary=Conferma il clone di uno stipendio CloneTaxForNextMonth=Clona nel mese successivo SimpleReport=Report semplice AddExtraReport=Extra reports (add foreign and national customer report) @@ -270,8 +270,8 @@ AccountingAffectation=Accounting assignment LastDayTaxIsRelatedTo=Last day of period the tax is related to VATDue=Sale tax claimed ClaimedForThisPeriod=Claimed for the period -PaidDuringThisPeriod=Paid for this period -PaidDuringThisPeriodDesc=This is the sum of all payments linked to VAT declarations which have an end-of-period date in the selected date range +PaidDuringThisPeriod=Pagato per questo periodo +PaidDuringThisPeriodDesc=Questa è la somma di tutti i pagamenti collegati alle dichiarazioni IVA che hanno una data di fine periodo nell'intervallo di date selezionato ByVatRate=Per aliquota iva di vendita TurnoverbyVatrate=Fatturato per aliquota iva di vendita TurnoverCollectedbyVatrate=Fatturato per aliquota iva di vendita @@ -282,19 +282,19 @@ PurchaseTurnoverCollected=Fatturato di acquisto raccolto RulesPurchaseTurnoverDue=- Include le fatture scadute del fornitore, che siano pagate o meno.
- Si basa sulla data di fatturazione di queste fatture.
RulesPurchaseTurnoverIn=- Comprende tutti i pagamenti effettivi delle fatture effettuate ai fornitori.
- Si basa sulla data di pagamento di queste fatture
RulesPurchaseTurnoverTotalPurchaseJournal=Include tutte le righe di addebito dal giornale di registrazione acquisti. -RulesPurchaseTurnoverOfExpenseAccounts=It includes (debit - credit) of lines for product accounts in group EXPENSE +RulesPurchaseTurnoverOfExpenseAccounts=Comprende (addebito - accredito) delle righe per conti prodotto nel gruppo SPESA ReportPurchaseTurnover=Fatturato di acquisto fatturato ReportPurchaseTurnoverCollected=Fatturato di acquisto raccolto IncludeVarpaysInResults = Includere vari pagamenti nei rapporti IncludeLoansInResults = Includere prestiti nei report -InvoiceLate30Days = Invoices late (> 30 days) -InvoiceLate15Days = Invoices late (15 to 30 days) -InvoiceLateMinus15Days = Invoices late (< 15 days) +InvoiceLate30Days = Fatture in ritardo (> 30 giorni) +InvoiceLate15Days = Fatture in ritardo (da 15 a 30 giorni) +InvoiceLateMinus15Days = Fatture in ritardo (< 15 giorni) InvoiceNotLate = In scadenza (< 15 giorni) InvoiceNotLate15Days = In scadenza (tra 15 e 30 giorni) InvoiceNotLate30Days = In scadenza (> 30 giorni) -InvoiceToPay=To pay (< 15 days) -InvoiceToPay15Days=To pay (15 to 30 days) -InvoiceToPay30Days=To pay (> 30 days) -ConfirmPreselectAccount=Preselect accountancy code -ConfirmPreselectAccountQuestion=Are you sure you want to preselect the %s selected lines with this accountancy code ? +InvoiceToPay=Per pagare (< 15 giorni) +InvoiceToPay15Days=Per pagare (da 15 a 30 giorni) +InvoiceToPay30Days=Per pagare (> 30 giorni) +ConfirmPreselectAccount=Preseleziona il codice contabile +ConfirmPreselectAccountQuestion=Sei sicuro di voler preselezionare le righe selezionate %s con questo codice contabile? diff --git a/htdocs/langs/it_IT/errors.lang b/htdocs/langs/it_IT/errors.lang index 83c3785e070..f784773bb16 100644 --- a/htdocs/langs/it_IT/errors.lang +++ b/htdocs/langs/it_IT/errors.lang @@ -4,14 +4,14 @@ NoErrorCommitIsDone=Nessun errore, committiamo # Errors ErrorButCommitIsDone=Sono stati trovati errori ma si convalida ugualmente -ErrorBadEMail=Email %s is incorrect -ErrorBadMXDomain=Email %s seems incorrect (domain has no valid MX record) -ErrorBadUrl=Url %s is incorrect +ErrorBadEMail=L'e-mail %s non è corretta +ErrorBadMXDomain=L'e-mail %s sembra errata (il dominio non ha un record MX valido) +ErrorBadUrl=L'URL %s non è corretto ErrorBadValueForParamNotAString=Bad value for your parameter. It appends generally when translation is missing. -ErrorRefAlreadyExists=Reference %s already exists. +ErrorRefAlreadyExists=Il riferimento %s esiste già. ErrorLoginAlreadyExists=L'utente %s esiste già. ErrorGroupAlreadyExists=Il gruppo %s esiste già -ErrorEmailAlreadyExists=Email %s already exists. +ErrorEmailAlreadyExists=L'e-mail %s esiste già. ErrorRecordNotFound=Record non trovato ErrorFailToCopyFile=Impossibile copiare il file '%s' in '%s' ErrorFailToCopyDir=Impossibile copiare la directory ' %s ' in ' %s '. @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Questo contatto è già tra i contatt ErrorCashAccountAcceptsOnlyCashMoney=Questo conto corrente è un conto di cassa e accetta solo pagamenti in contanti. ErrorFromToAccountsMustDiffers=I conti bancari di origine e destinazione devono essere diversi. ErrorBadThirdPartyName=Valore non valido per Nome Soggetto terzo +ForbiddenBySetupRules=Proibito dalle regole di installazione ErrorProdIdIsMandatory=%s obbligatorio +ErrorAccountancyCodeCustomerIsMandatory=Il codice contabile del cliente %s è obbligatorio ErrorBadCustomerCodeSyntax=Sintassi del codice cliente errata ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Il codice cliente è obbligatorio @@ -48,10 +50,10 @@ ErrorFailedToWriteInDir=Impossibile scrivere nella directory %s ErrorFoundBadEmailInFile=Sintassi email errata nelle righe %s del file (ad esempio alla riga %s con email = %s) ErrorUserCannotBeDelete=User cannot be deleted. Maybe it is associated to Dolibarr entities. ErrorFieldsRequired=Mancano alcuni campi obbligatori. -ErrorSubjectIsRequired=The email subject is required +ErrorSubjectIsRequired=L'oggetto dell'email è obbligatorio ErrorFailedToCreateDir=Impossibile creare la directory. Verifica che l'utente del server Web abbia i permessi per scrivere nella directory Dolibarr. Se il parametro safe_mode è abilitato in PHP, verifica che i file php di Dolibarr appartengano all'utente o al gruppo del server web (per esempio www-data). ErrorNoMailDefinedForThisUser=Nessun indirizzo memorizzato per questo utente -ErrorSetupOfEmailsNotComplete=Setup of emails is not complete +ErrorSetupOfEmailsNotComplete=L'impostazione delle e-mail non è completa ErrorFeatureNeedJavascript=Questa funzione necessita di javascript per essere attivata. Modificare questa impostazione nel menu Impostazioni - layout di visualizzazione. ErrorTopMenuMustHaveAParentWithId0=Un menu di tipo "Top" non può appartenere ad un menu superiore. Seleziona 0 menu genitori o scegli un menu di tipo "Left". ErrorLeftMenuMustHaveAParentId=Un menu di tipo 'Left' deve avere un id genitore @@ -60,7 +62,7 @@ ErrorDirNotFound=Directory %s non trovata (percorso errato, permessi erra ErrorFunctionNotAvailableInPHP=Per questa funzione occorre l'estensione %s, ma non è disponibile in questa versione/configurazione di PHP. ErrorDirAlreadyExists=Esiste già una directory con questo nome. ErrorFileAlreadyExists=Esiste già un file con questo nome. -ErrorDestinationAlreadyExists=Another file with the name %s already exists. +ErrorDestinationAlreadyExists=Esiste già un altro file con il nome %s . ErrorPartialFile=File non completamente ricevuto dal server. ErrorNoTmpDir=La directory temporanea %s non esiste. ErrorUploadBlockedByAddon=Upload bloccato da un plugin di Apache/PHP @@ -80,10 +82,10 @@ ErrorExportDuplicateProfil=Questo nome profilo già esiste per questo set di esp ErrorLDAPSetupNotComplete=La configurazione per l'uso di LDAP è incompleta ErrorLDAPMakeManualTest=È stato generato un file Ldif nella directory %s. Prova a caricarlo dalla riga di comando per avere maggiori informazioni sugli errori. ErrorCantSaveADoneUserWithZeroPercentage=Can't save an action with "status not started" if field "done by" is also filled. -ErrorRefAlreadyExists=Reference %s already exists. +ErrorRefAlreadyExists=Il riferimento %s esiste già. ErrorPleaseTypeBankTransactionReportName=Please enter the bank statement name where the entry has to be reported (Format YYYYMM or YYYYMMDD) ErrorRecordHasChildren=Failed to delete record since it has some child records. -ErrorRecordHasAtLeastOneChildOfType=Object %s has at least one child of type %s +ErrorRecordHasAtLeastOneChildOfType=L'oggetto %s ha almeno un figlio di tipo %s ErrorRecordIsUsedCantDelete=Can't delete record. It is already used or included into another object. ErrorModuleRequireJavascript=Per questa funzionalità Javascript deve essere attivo. Per abilitare/disabilitare Javascript, vai su Home - Impostazioni - Schermo ErrorPasswordsMustMatch=Le due password digitate devono essere identiche @@ -111,7 +113,7 @@ ErrorFailedToLoadRSSFile=Impossibile ottenere feed RSS. Se i messaggi di errore ErrorForbidden=Accesso negato.
Tentativo di accesso ad una pagina, area o funzionalità di un modulo disabilitato; oppure in una sessione non autenticata o comunque non consentita. ErrorForbidden2=L'autorizzazione all'accesso per questi dati può essere impostata dall'amministratore di Dolibarr tramite il menu %s - %s. ErrorForbidden3=Sembra che Dolibarr non venga utilizzato tramite una sessione autenticata. Dai un'occhiata alla documentazione di installazione Dolibarr per sapere come gestire le autenticazioni (htaccess, mod_auth o altri...). -ErrorForbidden4=Note: clear your browser cookies to destroy existing sessions for this login. +ErrorForbidden4=Nota: cancella i cookie del tuo browser per distruggere le sessioni esistenti per questo accesso. ErrorNoImagickReadimage=La funzione Imagick_readimage non è stata trovato nel PHP. L'anteprima non è disponibile. Gli amministratori possono disattivare questa scheda dal menu Impostazioni - Schermo ErrorRecordAlreadyExists=Il record esiste già ErrorLabelAlreadyExists=Etichetta già esistente @@ -119,7 +121,7 @@ ErrorCantReadFile=Impossibile leggere il file %s ErrorCantReadDir=Impossibile leggere nella directory %s ErrorBadLoginPassword=Errore: Username o password non corretti ErrorLoginDisabled=L'account è stato disabilitato -ErrorFailedToRunExternalCommand=Failed to run external command. Check it is available and runnable by your PHP server user. Check also the command is not protected on shell level by a security layer like apparmor. +ErrorFailedToRunExternalCommand=Impossibile eseguire il comando esterno. Verifica che sia disponibile ed eseguibile dall'utente del tuo server PHP. Controlla anche che il comando non sia protetto a livello di shell da un livello di sicurezza come apparmor. ErrorFailedToChangePassword=Impossibile cambiare la password ErrorLoginDoesNotExists=Utente con accesso %s inesistente ErrorLoginHasNoEmail=Questo utente non ha alcun indirizzo email. Processo interrotto. @@ -222,15 +224,15 @@ ErrorChooseBetweenFreeEntryOrPredefinedProduct=You must choose if article is a p ErrorDiscountLargerThanRemainToPaySplitItBefore=The discount you try to apply is larger than remain to pay. Split the discount in 2 smaller discounts before. ErrorFileNotFoundWithSharedLink=File was not found. May be the share key was modified or file was removed recently. ErrorProductBarCodeAlreadyExists=The product barcode %s already exists on another product reference. -ErrorNoteAlsoThatSubProductCantBeFollowedByLot=Note also that using kits to have auto increase/decrease of subproducts is not possible when at least one subproduct (or subproduct of subproducts) needs a serial/lot number. +ErrorNoteAlsoThatSubProductCantBeFollowedByLot=Si noti inoltre che l'utilizzo di kit per aumentare/diminuire automaticamente i sottoprodotti non è possibile quando almeno un sottoprodotto (o un sottoprodotto di sottoprodotti) necessita di un numero di serie/lotto. ErrorDescRequiredForFreeProductLines=Description is mandatory for lines with free product ErrorAPageWithThisNameOrAliasAlreadyExists=The page/container %s has the same name or alternative alias that the one your try to use ErrorDuringChartLoad=Error when loading chart of accounts. If few accounts were not loaded, you can still enter them manually. ErrorBadSyntaxForParamKeyForContent=Bad syntax for param keyforcontent. Must have a value starting with %s or %s ErrorVariableKeyForContentMustBeSet=Error, the constant with name %s (with text content to show) or %s (with external url to show) must be set. -ErrorURLMustEndWith=URL %s must end %s +ErrorURLMustEndWith=L'URL %s deve terminare %s ErrorURLMustStartWithHttp=URL %s must start with http:// or https:// -ErrorHostMustNotStartWithHttp=Host name %s must NOT start with http:// or https:// +ErrorHostMustNotStartWithHttp=Il nome host %s NON deve iniziare con http:// o https:// ErrorNewRefIsAlreadyUsed=Error, the new reference is already used ErrorDeletePaymentLinkedToAClosedInvoiceNotPossible=Errore! Impossibile eliminare un pagamento collegato ad una fattura Pagata. ErrorSearchCriteriaTooSmall=Search criteria too small. @@ -248,32 +250,33 @@ ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=Quantità insufficiente per ErrorOnlyOneFieldForGroupByIsPossible=È possibile solo 1 campo per il "Raggruppa per" (gli altri vengono scartati) ErrorTooManyDifferentValueForSelectedGroupBy=Sono stati trovati troppi valori diversi (più di %s ) per il campo " %s ", quindi non possiamo utilizzarlo come grafico "Group by". Il campo "Raggruppa per" è stato rimosso. Forse volevi usarlo come asse X? ErrorReplaceStringEmpty=Errore, la stringa da sostituire è vuota -ErrorProductNeedBatchNumber=Error, product '%s' need a lot/serial number -ErrorProductDoesNotNeedBatchNumber=Error, product '%s' does not accept a lot/serial number -ErrorFailedToReadObject=Error, failed to read object of type %s -ErrorParameterMustBeEnabledToAllwoThisFeature=Error, parameter %s must be enabled into conf/conf.php to allow use of Command Line Interface by the internal job scheduler -ErrorLoginDateValidity=Error, this login is outside the validity date range -ErrorValueLength=Length of field '%s' must be higher than '%s' -ErrorReservedKeyword=The word '%s' is a reserved keyword -ErrorNotAvailableWithThisDistribution=Not available with this distribution +ErrorProductNeedBatchNumber=Errore, il prodotto ' %s ' necessita di un lotto/numero di serie +ErrorProductDoesNotNeedBatchNumber=Errore, il prodotto " %s " non accetta un lotto/numero di serie +ErrorFailedToReadObject=Errore, impossibile leggere l'oggetto di tipo %s +ErrorParameterMustBeEnabledToAllwoThisFeature=Errore, parametro %s deve essere abilitato in conf/conf.php per consentire l'utilizzo dell'interfaccia della riga di comando da parte dell'utilità di pianificazione interna dei lavori +ErrorLoginDateValidity=Errore, questo login non rientra nell'intervallo di date di validità +ErrorValueLength=La lunghezza del campo ' %s ' deve essere maggiore di ' %s ' +ErrorReservedKeyword=La parola ' %s ' è una parola chiave riservata +ErrorNotAvailableWithThisDistribution=Non disponibile con questa distribuzione ErrorPublicInterfaceNotEnabled=L'interfaccia pubblica non è stata abilitata -ErrorLanguageRequiredIfPageIsTranslationOfAnother=The language of new page must be defined if it is set as a translation of another page -ErrorLanguageMustNotBeSourceLanguageIfPageIsTranslationOfAnother=The language of new page must not be the source language if it is set as a translation of another page -ErrorAParameterIsRequiredForThisOperation=A parameter is mandatory for this operation -ErrorDateIsInFuture=Error, the date can't be in the future -ErrorAnAmountWithoutTaxIsRequired=Error, amount is mandatory -ErrorAPercentIsRequired=Error, please fill in the percentage correctly -ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of account -ErrorFailedToFindEmailTemplate=Failed to find template with code name %s -ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. -ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary -CheckVersionFail=Version check fail -ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it -ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. -ErrorIsNotADraft=%s is not a draft -ErrorExecIdFailed=Can't execute command "id" -ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorLanguageRequiredIfPageIsTranslationOfAnother=La lingua della nuova pagina deve essere definita se è impostata come traduzione di un'altra pagina +ErrorLanguageMustNotBeSourceLanguageIfPageIsTranslationOfAnother=La lingua della nuova pagina non deve essere la lingua di partenza se è impostata come traduzione di un'altra pagina +ErrorAParameterIsRequiredForThisOperation=Un parametro è obbligatorio per questa operazione +ErrorDateIsInFuture=Errore, la data non può essere futura +ErrorAnAmountWithoutTaxIsRequired=Errore, l'importo è obbligatorio +ErrorAPercentIsRequired=Errore, si prega di compilare correttamente la percentuale +ErrorYouMustFirstSetupYourChartOfAccount=Devi prima impostare il tuo piano dei conti +ErrorFailedToFindEmailTemplate=Impossibile trovare il modello con nome in codice %s +ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Durata non definita in servizio. Non c'è modo di calcolare il prezzo orario. +ErrorActionCommPropertyUserowneridNotDefined=Il proprietario dell'utente è obbligatorio +ErrorActionCommBadType=Il tipo di evento selezionato (id: %n, codice: %s) non esiste nel dizionario del tipo di evento +CheckVersionFail=Controllo della versione fallito +ErrorWrongFileName=Il nome del file non può contenere __SOMETHING__ +ErrorNotInDictionaryPaymentConditions=Non nel dizionario dei termini di pagamento, modificare. +ErrorIsNotADraft=%s non è una bozza +ErrorExecIdFailed=Impossibile eseguire il comando "id" +ErrorBadCharIntoLoginName=Carattere non autorizzato nel nome di accesso +ErrorRequestTooLarge=Errore, richiesta troppo grande # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -302,29 +305,30 @@ WarningDateOfLineMustBeInExpenseReportRange=Attenzione, la data della riga non WarningProjectDraft=Il progetto è ancora in stato bozza. Non dimenticare di convalidarlo per utilizzare i compiti. WarningProjectClosed=Il progetto è chiuso. È necessario prima aprirlo nuovamente. WarningSomeBankTransactionByChequeWereRemovedAfter=Alcune transazioni bancarie sono state rimosse dopo che è stata generata la ricevuta che le includeva. Quindi il numero di assegni e il totale dello scontrino possono differire dal numero e dal totale nell'elenco. -WarningFailedToAddFileIntoDatabaseIndex=Warning, failed to add file entry into ECM database index table -WarningTheHiddenOptionIsOn=Warning, the hidden option %s is on. -WarningCreateSubAccounts=Warning, you can't create directly a sub account, you must create a third party or an user and assign them an accounting code to find them in this list -WarningAvailableOnlyForHTTPSServers=Available only if using HTTPS secured connection. -WarningModuleXDisabledSoYouMayMissEventHere=Module %s has not been enabled. So you may miss a lot of event here. -WarningPaypalPaymentNotCompatibleWithStrict=The value 'Strict' makes the online payment features not working correctly. Use 'Lax' instead. +WarningFailedToAddFileIntoDatabaseIndex=Avviso, impossibile aggiungere la voce del file nella tabella dell'indice del database ECM +WarningTheHiddenOptionIsOn=Attenzione, l'opzione nascosta %s è attiva. +WarningCreateSubAccounts=Attenzione, non puoi creare direttamente un sub account, devi creare una terza parte o un utente e assegnargli un codice contabile per trovarli in questo elenco +WarningAvailableOnlyForHTTPSServers=Disponibile solo se si utilizza una connessione protetta HTTPS. +WarningModuleXDisabledSoYouMayMissEventHere=Il modulo %s non è stato abilitato. Quindi potresti perdere molti eventi qui. +WarningPaypalPaymentNotCompatibleWithStrict=Il valore "Strict" fa sì che le funzioni di pagamento online non funzionino correttamente. Usa invece "Lax". # Validate -RequireValidValue = Value not valid -RequireAtLeastXString = Requires at least %s character(s) -RequireXStringMax = Requires %s character(s) max -RequireAtLeastXDigits = Requires at least %s digit(s) -RequireXDigitsMax = Requires %s digit(s) max -RequireValidEmail = Email address is not valid -RequireMaxLength = Length must be less than %s chars -RequireMinLength = Length must be more than %s char(s) -RequireValidUrl = Require valid URL -RequireValidDate = Require a valid date -RequireANotEmptyValue = Is required -RequireValidDuration = Require a valid duration -RequireValidExistingElement = Require an existing value -RequireValidBool = Require a valid boolean -BadSetupOfField = Error bad setup of field -BadSetupOfFieldClassNotFoundForValidation = Error bad setup of field : Class not found for validation -BadSetupOfFieldFileNotFound = Error bad setup of field : File not found for inclusion -BadSetupOfFieldFetchNotCallable = Error bad setup of field : Fetch not callable on class +RequireValidValue = Valore non valido +RequireAtLeastXString = Richiede almeno %s caratteri +RequireXStringMax = Richiede %s caratteri max +RequireAtLeastXDigits = Richiede almeno %s cifre +RequireXDigitsMax = Richiede %s cifre max +RequireValidNumeric = Richiede un valore numerico +RequireValidEmail = Indirizzo email non valido +RequireMaxLength = La lunghezza deve essere inferiore ai caratteri %s +RequireMinLength = La lunghezza deve essere maggiore di %s char(s) +RequireValidUrl = Richiedi URL valido +RequireValidDate = Richiedi una data valida +RequireANotEmptyValue = È obbligatorio +RequireValidDuration = Richiedi una durata valida +RequireValidExistingElement = Richiedi un valore esistente +RequireValidBool = Richiedi un booleano valido +BadSetupOfField = Errore impostazione errata del campo +BadSetupOfFieldClassNotFoundForValidation = Errore impostazione errata del campo: classe non trovata per la convalida +BadSetupOfFieldFileNotFound = Errore impostazione errata del campo: file non trovato per l'inclusione +BadSetupOfFieldFetchNotCallable = Errore impostazione errata del campo: Recupero non richiamabile sulla classe diff --git a/htdocs/langs/it_IT/eventorganization.lang b/htdocs/langs/it_IT/eventorganization.lang index d6d59ffac32..c96bbd91106 100644 --- a/htdocs/langs/it_IT/eventorganization.lang +++ b/htdocs/langs/it_IT/eventorganization.lang @@ -17,150 +17,151 @@ # # Generic # -ModuleEventOrganizationName = Event Organization -EventOrganizationDescription = Event Organization through Module Project -EventOrganizationDescriptionLong= Manage the organization of an event (show, conferences, attendees or speakers, with public pages for suggestion, vote or registration) +ModuleEventOrganizationName = Organizzazione di eventi +EventOrganizationDescription = Organizzazione di eventi attraverso il Progetto Modulo +EventOrganizationDescriptionLong= Gestire l'organizzazione di un evento (show, conferenze, partecipanti o relatori, con pagine pubbliche per suggerimenti, votazioni o iscrizioni) # # Menu # -EventOrganizationMenuLeft = Organized events -EventOrganizationConferenceOrBoothMenuLeft = Conference Or Booth +EventOrganizationMenuLeft = Eventi organizzati +EventOrganizationConferenceOrBoothMenuLeft = Conferenza o stand -PaymentEvent=Payment of event +PaymentEvent=Pagamento dell'evento # # Admin page # -NewRegistration=Registration -EventOrganizationSetup=Event Organization setup -EventOrganization=Event organization +NewRegistration=Registrazione +EventOrganizationSetup=Allestimento organizzazione eventi +EventOrganization=Organizzazione di eventi Settings=Impostazioni -EventOrganizationSetupPage = Event Organization setup page -EVENTORGANIZATION_TASK_LABEL = Label of tasks to create automatically when project is validated -EVENTORGANIZATION_TASK_LABELTooltip = When you validate an organized event, some tasks can be automatically created in the project

For example:
Send Call for Conference
Send Call for Booth
Receive call for conferences
Receive call for Booth
Open subscriptions to events for attendees
Send remind of event to speakers
Send remind of event to Booth hoster
Send remind of event to attendees -EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties automatically created when someone suggests a conference -EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth -EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. -EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EventOrganizationSetupPage = Pagina di configurazione dell'organizzazione dell'evento +EVENTORGANIZATION_TASK_LABEL = Etichetta delle attività da creare automaticamente quando il progetto viene convalidato +EVENTORGANIZATION_TASK_LABELTooltip = Quando si convalida un evento organizzato, alcune operazioni possono essere creati automaticamente nel progetto

Ad esempio:
Send Call for Conference
Invia Invito a Booth
Ricevi invito a conferenze
ricevere la chiamata per Booth
sottoscrizioni aperte agli eventi per i partecipanti
Invia ricorda l'evento ai relatori
Invia ricorda l'evento all'host dello stand
Invia ricorda l'evento ai partecipanti +EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Categoria da aggiungere a terze parti creata automaticamente quando qualcuno suggerisce una conferenza +EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Categoria da aggiungere a terze parti creata automaticamente quando suggeriscono uno stand +EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Modello di email da inviare dopo aver ricevuto un suggerimento per una conferenza. +EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Modello di email da inviare dopo aver ricevuto un suggerimento su uno stand. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Modello di email da inviare dopo il pagamento di una registrazione a uno stand. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Modello di email da inviare dopo il pagamento di una registrazione a un evento. +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Modello di e-mail da utilizzare per l'invio di e-mail dalla massa "Invia e-mail" agli oratori +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Modello di e-mail da utilizzare quando si inviano e-mail dalla massa "Invia e-mail" nell'elenco dei partecipanti +EVENTORGANIZATION_FILTERATTENDEES_CAT = Nel modulo per creare/aggiungere un partecipante, limita l'elenco di terze parti a terze parti nella categoria +EVENTORGANIZATION_FILTERATTENDEES_TYPE = Nel modulo per creare/aggiungere un partecipante, limita l'elenco di terze parti a terze parti con la natura # # Object # -EventOrganizationConfOrBooth= Conference Or Booth -ManageOrganizeEvent = Manage the organization of an event -ConferenceOrBooth = Conference Or Booth -ConferenceOrBoothTab = Conference Or Booth -AmountPaid = Amount paid -DateOfRegistration = Date of registration -ConferenceOrBoothAttendee = Conference Or Booth Attendee +EventOrganizationConfOrBooth= Conferenza o stand +ManageOrganizeEvent = Gestire l'organizzazione di un evento +ConferenceOrBooth = Conferenza o stand +ConferenceOrBoothTab = Conferenza o stand +AmountPaid = Importo pagato +DateOfRegistration = Data di registrazione +ConferenceOrBoothAttendee = Partecipante alla conferenza o allo stand # # Template Mail # -YourOrganizationEventConfRequestWasReceived = Your request for conference was received -YourOrganizationEventBoothRequestWasReceived = Your request for booth was received -EventOrganizationEmailAskConf = Request for conference -EventOrganizationEmailAskBooth = Request for booth -EventOrganizationEmailBoothPayment = Payment of your booth -EventOrganizationEmailRegistrationPayment = Registration for an event -EventOrganizationMassEmailAttendees = Communication to attendees -EventOrganizationMassEmailSpeakers = Communication to speakers +YourOrganizationEventConfRequestWasReceived = La tua richiesta di conferenza è stata ricevuta +YourOrganizationEventBoothRequestWasReceived = La tua richiesta per lo stand è stata ricevuta +EventOrganizationEmailAskConf = Richiesta di conferenza +EventOrganizationEmailAskBooth = Richiesta di stand +EventOrganizationEmailBoothPayment = Pagamento del tuo stand +EventOrganizationEmailRegistrationPayment = Iscrizione ad un evento +EventOrganizationMassEmailAttendees = Comunicazione ai partecipanti +EventOrganizationMassEmailSpeakers = Comunicazione ai relatori +ToSpeakers=Agli altoparlanti # # Event # -AllowUnknownPeopleSuggestConf=Allow people to suggest conferences -AllowUnknownPeopleSuggestConfHelp=Allow unknown people to suggest a conference they want to do -AllowUnknownPeopleSuggestBooth=Allow people to apply for a booth -AllowUnknownPeopleSuggestBoothHelp=Allow unknown people to apply for a booth -PriceOfRegistration=Price of registration -PriceOfRegistrationHelp=Price to pay to register or participate in the event -PriceOfBooth=Subscription price to stand a booth -PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events -ConferenceOrBoothInformation=Conference Or Booth informations -Attendees=Attendees -ListOfAttendeesOfEvent=List of attendees of the event project -DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference -SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference -NbVotes=Number of votes +AllowUnknownPeopleSuggestConf=Consenti alle persone di suggerire conferenze +AllowUnknownPeopleSuggestConfHelp=Consenti a persone sconosciute di suggerire una conferenza che vogliono fare +AllowUnknownPeopleSuggestBooth=Consenti alle persone di richiedere uno stand +AllowUnknownPeopleSuggestBoothHelp=Consenti a persone sconosciute di richiedere uno stand +PriceOfRegistration=Prezzo di registrazione +PriceOfRegistrationHelp=Prezzo da pagare per iscriversi o partecipare all'evento +PriceOfBooth=Prezzo di abbonamento per stare in uno stand +PriceOfBoothHelp=Prezzo di abbonamento per stare in uno stand +EventOrganizationICSLink=Collegamento ICS per conferenze +ConferenceOrBoothInformation=Informazioni sulla conferenza o sullo stand +Attendees=Partecipanti +ListOfAttendeesOfEvent=Elenco dei partecipanti al progetto dell'evento +DownloadICSLink = Scarica il collegamento ICS +EVENTORGANIZATION_SECUREKEY = Seme per proteggere la chiave per la pagina di registrazione pubblica per suggerire una conferenza +SERVICE_BOOTH_LOCATION = Servizio utilizzato per la riga della fattura relativa all'ubicazione di uno stand +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Servizio utilizzato per la riga della fattura relativa all'iscrizione di un partecipante a un evento +NbVotes=Numero di voti # # Status # EvntOrgDraft = Assegno circolare -EvntOrgSuggested = Suggested -EvntOrgConfirmed = Confirmed -EvntOrgNotQualified = Not Qualified +EvntOrgSuggested = Suggerito +EvntOrgConfirmed = Confermato +EvntOrgNotQualified = Non qualificato EvntOrgDone = Fatte -EvntOrgCancelled = Cancelled +EvntOrgCancelled = Annullato # # Public page # -SuggestForm = Suggestion page -SuggestOrVoteForConfOrBooth = Page for suggestion or vote -EvntOrgRegistrationHelpMessage = Here, you can vote for a conference or suggest a new one for the event. You can also apply to have a booth during the event. -EvntOrgRegistrationConfHelpMessage = Here, you can suggest a new conference to animate during the event. -EvntOrgRegistrationBoothHelpMessage = Here, you can apply to have a booth during the event. -ListOfSuggestedConferences = List of suggested conferences -ListOfSuggestedBooths = List of suggested booths -ListOfConferencesOrBooths=List of conferences or booths of event project -SuggestConference = Suggest a new conference -SuggestBooth = Suggest a booth -ViewAndVote = View and vote for suggested events -PublicAttendeeSubscriptionGlobalPage = Public link for registration to the event -PublicAttendeeSubscriptionPage = Public link for registration to this event only -MissingOrBadSecureKey = The security key is invalid or missing -EvntOrgWelcomeMessage = This form allows you to register as a new participant to the event : %s -EvntOrgDuration = This conference starts on %s and ends on %s. -ConferenceAttendeeFee = Conference attendee fee for the event : '%s' occurring from %s to %s. -BoothLocationFee = Booth location for the event : '%s' occurring from %s to %s +SuggestForm = Pagina dei suggerimenti +SuggestOrVoteForConfOrBooth = Pagina per suggerimenti o votazioni +EvntOrgRegistrationHelpMessage = Qui puoi votare per una conferenza o suggerirne una nuova per l'evento. Puoi anche candidarti per avere uno stand durante l'evento. +EvntOrgRegistrationConfHelpMessage = Qui puoi suggerire una nuova conferenza da animare durante l'evento. +EvntOrgRegistrationBoothHelpMessage = Qui puoi candidarti per avere uno stand durante l'evento. +ListOfSuggestedConferences = Elenco delle conferenze suggerite +ListOfSuggestedBooths = Elenco delle cabine consigliate +ListOfConferencesOrBooths=Elenco delle conferenze o degli stand del progetto dell'evento +SuggestConference = Proponi una nuova conferenza +SuggestBooth = Suggerisci uno stand +ViewAndVote = Visualizza e vota gli eventi suggeriti +PublicAttendeeSubscriptionGlobalPage = Link pubblico per la registrazione all'evento +PublicAttendeeSubscriptionPage = Link pubblico solo per la registrazione a questo evento +MissingOrBadSecureKey = La chiave di sicurezza non è valida o manca +EvntOrgWelcomeMessage = Questo modulo permette di registrarsi come nuovo partecipante all'evento: %s +EvntOrgDuration = Questa conferenza inizia su %s e termina su %s. +ConferenceAttendeeFee = Quota di partecipazione alla conferenza per l'evento: "%s" che si verifica da %s a %s. +BoothLocationFee = Posizione dello stand per l'evento: '%s' che si verifica da %s a %s EventType = Tipo di evento -LabelOfBooth=Booth label -LabelOfconference=Conference label -ConferenceIsNotConfirmed=Registration not available, conference is not confirmed yet -DateMustBeBeforeThan=%s must be before %s -DateMustBeAfterThan=%s must be after %s +LabelOfBooth=Etichetta della cabina +LabelOfconference=Etichetta conferenza +ConferenceIsNotConfirmed=Iscrizione non disponibile, conferenza non ancora confermata +DateMustBeBeforeThan=%s deve essere prima di %s +DateMustBeAfterThan=%s deve essere dopo %s -NewSubscription=Registration -OrganizationEventConfRequestWasReceived=Your suggestion for a conference has been received -OrganizationEventBoothRequestWasReceived=Your request for a booth has been received -OrganizationEventPaymentOfBoothWasReceived=Your payment for your booth has been recorded -OrganizationEventPaymentOfRegistrationWasReceived=Your payment for your event registration has been recorded -OrganizationEventBulkMailToAttendees=This is a remind about your participation in the event as an attendee -OrganizationEventBulkMailToSpeakers=This is a reminder on your participation in the event as a speaker -OrganizationEventLinkToThirdParty=Link to third party (customer, supplier or partner) +NewSubscription=Registrazione +OrganizationEventConfRequestWasReceived=Il tuo suggerimento per una conferenza è stato ricevuto +OrganizationEventBoothRequestWasReceived=La tua richiesta per uno stand è stata ricevuta +OrganizationEventPaymentOfBoothWasReceived=Il tuo pagamento per il tuo stand è stato registrato +OrganizationEventPaymentOfRegistrationWasReceived=Il tuo pagamento per la registrazione all'evento è stato registrato +OrganizationEventBulkMailToAttendees=Questo è un promemoria della tua partecipazione all'evento come partecipante +OrganizationEventBulkMailToSpeakers=Questo è un promemoria sulla tua partecipazione all'evento come relatore +OrganizationEventLinkToThirdParty=Collegamento a terzi (cliente, fornitore o partner) -NewSuggestionOfBooth=Application for a booth -NewSuggestionOfConference=Application for a conference +NewSuggestionOfBooth=Domanda per uno stand +NewSuggestionOfConference=Domanda per una conferenza # # Vote page # -EvntOrgRegistrationWelcomeMessage = Welcome on the conference or booth suggestion page. -EvntOrgRegistrationConfWelcomeMessage = Welcome on the conference suggestion page. -EvntOrgRegistrationBoothWelcomeMessage = Welcome on the booth suggestion page. -EvntOrgVoteHelpMessage = Here, you can view and vote for the suggested events for the project -VoteOk = Your vote has been accepted. -AlreadyVoted = You have already voted for this event. -VoteError = An error has occurred during the vote, please try again. +EvntOrgRegistrationWelcomeMessage = Benvenuto nella pagina dei suggerimenti per la conferenza o lo stand. +EvntOrgRegistrationConfWelcomeMessage = Benvenuto nella pagina dei suggerimenti per la conferenza. +EvntOrgRegistrationBoothWelcomeMessage = Benvenuto nella pagina dei suggerimenti per lo stand. +EvntOrgVoteHelpMessage = Qui puoi visualizzare e votare gli eventi suggeriti per il progetto +VoteOk = Il tuo voto è stato accettato. +AlreadyVoted = Hai già votato per questo evento. +VoteError = Si è verificato un errore durante la votazione, riprova. -SubscriptionOk = Your registration has been validated -ConfAttendeeSubscriptionConfirmation = Confirmation of your subscription to an event -Attendee = Attendee -PaymentConferenceAttendee = Conference attendee payment -PaymentBoothLocation = Booth location payment -DeleteConferenceOrBoothAttendee=Remove attendee -RegistrationAndPaymentWereAlreadyRecorder=A registration and a payment were already recorded for the email %s -EmailAttendee=Attendee email -EmailCompanyForInvoice=Company email (for invoice, if different of attendee email) -ErrorSeveralCompaniesWithEmailContactUs=Several companies with this email has been found so we can't validate automaticaly your registration. Please contact us at %s for a manual validation -ErrorSeveralCompaniesWithNameContactUs=Several companies with this name has been found so we can't validate automaticaly your registration. Please contact us at %s for a manual validation -NoPublicActionsAllowedForThisEvent=No public actions are open to public for this event +SubscriptionOk = La tua registrazione è stata convalidata +ConfAttendeeSubscriptionConfirmation = Conferma della tua iscrizione a un evento +Attendee = Partecipante +PaymentConferenceAttendee = Pagamento dei partecipanti alla conferenza +PaymentBoothLocation = Pagamento posizione stand +DeleteConferenceOrBoothAttendee=Rimuovi partecipante +RegistrationAndPaymentWereAlreadyRecorder=Per la mail %s sono già state registrate una registrazione e un pagamento +EmailAttendee=E-mail del partecipante +EmailCompanyForInvoice=Email aziendale (per fattura, se diversa dall'email del partecipante) +ErrorSeveralCompaniesWithEmailContactUs=Sono state trovate diverse aziende con questa e-mail, quindi non possiamo convalidare automaticamente la tua registrazione. Vi preghiamo di contattarci all'indirizzo %s per una convalida manuale +ErrorSeveralCompaniesWithNameContactUs=Sono state trovate diverse aziende con questo nome, quindi non possiamo convalidare automaticamente la tua registrazione. Si prega di contattarci all'indirizzo %s per una convalida manuale +NoPublicActionsAllowedForThisEvent=Nessuna azione pubblica è aperta al pubblico per questo evento diff --git a/htdocs/langs/it_IT/holiday.lang b/htdocs/langs/it_IT/holiday.lang index 422c721bd82..6b6119857af 100644 --- a/htdocs/langs/it_IT/holiday.lang +++ b/htdocs/langs/it_IT/holiday.lang @@ -13,7 +13,7 @@ ToReviewCP=Pendente ApprovedCP=Approvato CancelCP=Cancellato RefuseCP=Rifiutato -ValidatorCP=Approver +ValidatorCP=Approvatore ListeCP=Elenco ferie e permessi Leave=Richiesta di assenza LeaveId=Leave ID @@ -27,7 +27,7 @@ DescCP=Descrizione SendRequestCP=Inserisci richiesta di assenza DelayToRequestCP=Le richieste devono essere inserite almeno %s giorni prima dell'inizio. MenuConfCP=Bilancio delle ferie / permessi -SoldeCPUser=Leave balance (in days) %s +SoldeCPUser=Saldo residuo (in giorni) %s ErrorEndDateCP=La data di fine deve essere posteriore alla data di inizio. ErrorSQLCreateCP=Si è verificato un errore SQL durante la creazione: ErrorIDFicheCP=Si è verificato un errore: la richiesta non esiste. @@ -41,9 +41,9 @@ TypeOfLeaveCode=Type of leave code TypeOfLeaveLabel=Type of leave label NbUseDaysCP=Numero giornate di ferie NbUseDaysCPHelp=Il calcolo tiene conto dei giorni non lavorativi e delle festività definite nel dizionario. -NbUseDaysCPShort=Days of leave -NbUseDaysCPShortInMonth=Days of leave in month -DayIsANonWorkingDay=%s is a non-working day +NbUseDaysCPShort=Giorni di ferie +NbUseDaysCPShortInMonth=Giorni di ferie nel mese +DayIsANonWorkingDay=%s è un giorno non lavorativo DateStartInMonth=Start date in month DateEndInMonth=End date in month EditCP=Modifica @@ -55,7 +55,7 @@ TitleDeleteCP=Elimina la richiesta ConfirmDeleteCP=Vuoi davvero cancellare questa richiesta? ErrorCantDeleteCP=Errore: non hai i permessi necessari per eliminare questa richiesta. CantCreateCP=Non hai i permessi necessari per inserire richieste. -InvalidValidatorCP=You must choose the approver for your leave request. +InvalidValidatorCP=Devi scegliere l'approvatore per la tua richiesta di congedo. NoDateDebut=Bisogna selezionare una data di inizio. NoDateFin=Bisogna selezionare una data di fine. ErrorDureeCP=La tua richiesta di ferie non comprende giorni lavorativi. @@ -80,14 +80,14 @@ UserCP=Utente ErrorAddEventToUserCP=Si è verificato un errore nell'assegnazione del permesso straordinario. AddEventToUserOkCP=Permesso straordinario assegnato correttamente. MenuLogCP=Elenco delle modifiche -LogCP=Log of all updates made to "Balance of Leave" -ActionByCP=Updated by -UserUpdateCP=Updated for +LogCP=Registro di tutti gli aggiornamenti effettuati su "Saldo delle ferie" +ActionByCP=Aggiornato da +UserUpdateCP=Aggiornato per PrevSoldeCP=Saldo precedente NewSoldeCP=Nuovo saldo alreadyCPexist=C'è già una richiesta per lo stesso periodo. -FirstDayOfHoliday=Beginning day of leave request -LastDayOfHoliday=Ending day of leave request +FirstDayOfHoliday=Inizio giorno di richiesta ferie +LastDayOfHoliday=Richiesta di fine giornata di ferie BoxTitleLastLeaveRequests=Ultime %s richieste di assenza modificate HolidaysMonthlyUpdate=Aggiornamento mensile ManualUpdate=Aggiornamento manuale @@ -104,8 +104,8 @@ LEAVE_SICK=Malattia LEAVE_OTHER=Altro LEAVE_PAID_FR=Ferie pagate ## Configuration du Module ## -LastUpdateCP=Last automatic update of leave allocation -MonthOfLastMonthlyUpdate=Month of last automatic update of leave allocation +LastUpdateCP=Ultimo aggiornamento automatico dell'assegnazione delle ferie +MonthOfLastMonthlyUpdate=Mese dell'ultimo aggiornamento automatico dell'assegnazione delle ferie UpdateConfCPOK=Aggiornato con successo Module27130Name= Gestione ferie Module27130Desc= Gestione ferie @@ -126,12 +126,14 @@ FollowedByACounter=1: questo tipo di ferie segue un contatore. NoLeaveWithCounterDefined=Non ci sono tipi di ferie definite che devono seguire un contatore GoIntoDictionaryHolidayTypes=Vai in Home - Impostazioni - Dizionari - Tipi di ferie/permessi per impostare i diversi tipi di ferie e permessi. HolidaySetup=Impostazioni modulo Richieste Ferie / Permesso -HolidaysNumberingModules=Numbering models for leave requests +HolidaysNumberingModules=Modelli di numerazione per le richieste di ferie TemplatePDFHolidays=Template for leave requests PDF FreeLegalTextOnHolidays=Free text on PDF WatermarkOnDraftHolidayCards=Watermarks on draft leave requests HolidaysToApprove=Ferie da approvare NobodyHasPermissionToValidateHolidays=Nessuno ha il permesso di convalidare le vacanze -HolidayBalanceMonthlyUpdate=Monthly update of holiday balance -XIsAUsualNonWorkingDay=%s is usualy a NON working day -ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted +HolidayBalanceMonthlyUpdate=Aggiornamento mensile del saldo ferie +XIsAUsualNonWorkingDay=%s è solitamente un giorno NON lavorativo +BlockHolidayIfNegative=Blocca se saldo negativo +LeaveRequestCreationBlockedBecauseBalanceIsNegative=La creazione di questa richiesta di ferie è bloccata perché il tuo saldo è negativo +ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=La richiesta di uscita %s deve essere bozza, annullata o rifiutata per essere eliminata diff --git a/htdocs/langs/it_IT/hrm.lang b/htdocs/langs/it_IT/hrm.lang index 590d771bd42..b4028530d38 100644 --- a/htdocs/langs/it_IT/hrm.lang +++ b/htdocs/langs/it_IT/hrm.lang @@ -11,7 +11,7 @@ ConfirmDeleteEstablishment=Sei sicuro di voler cancellare questa azienda? OpenEtablishment=Apri azienda CloseEtablishment=Chiudi azienda # Dictionary -DictionaryPublicHolidays=Leave - Public holidays +DictionaryPublicHolidays=Congedo - Giorni festivi DictionaryDepartment=HRM - Lista dipartimenti DictionaryFunction=HRM - Posizioni di lavoro # Module @@ -20,62 +20,62 @@ Employee=Dipendente NewEmployee=Nuovo dipendente ListOfEmployees=Lista dei dipendenti HrmSetup=Impostazioni modulo risorse umane -HRM_MAXRANK=Maximum rank for a skill -HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created -deplacement=Shift -DateEval=Evaluation date -JobCard=Job card -Job=Processo -Jobs=Jobs -NewSkill=New Skill -SkillType=Skill type -Skilldets=List of ranks for this skill -Skilldet=Skill level -rank=Rank -ErrNoSkillSelected=No skill selected -ErrSkillAlreadyAdded=This skill is already in the list -SkillHasNoLines=This skill has no lines -skill=Skill -Skills=Skills -SkillCard=Skill card -EmployeeSkillsUpdated=Employee skills have been updated (see "Skills" tab of employee card) -Eval=Evaluation -Evals=Evaluations -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 -EmployeeRank=Employee rank for this skill -Position=Posizione -Positions=Positions -PositionCard=Position card -EmployeesInThisPosition=Employees in this position -group1ToCompare=Usergroup to analyze -group2ToCompare=Second usergroup for comparison -OrJobToCompare=Compare to job skills requirements +SkillsManagement=Gestione delle competenze +HRM_MAXRANK=Numero massimo di livelli per classificare un'abilità +HRM_DEFAULT_SKILL_DESCRIPTION=Descrizione predefinita dei gradi quando viene creata l'abilità +deplacement=Cambio +DateEval=Data di valutazione +JobCard=Carta di lavoro +JobPosition=Processo +JobsPosition=Lavori +NewSkill=Nuova abilità +SkillType=Tipo di abilità +Skilldets=Elenco dei gradi per questa abilità +Skilldet=Livello di abilità +rank=Rango +ErrNoSkillSelected=Nessuna abilità selezionata +ErrSkillAlreadyAdded=Questa abilità è già nell'elenco +SkillHasNoLines=Questa abilità non ha linee +skill=Abilità +Skills=Abilità +SkillCard=Carta abilità +EmployeeSkillsUpdated=Le competenze dei dipendenti sono state aggiornate (vedi scheda "Competenze" della scheda dipendente) +Eval=Valutazione +Evals=Valutazioni +NewEval=Nuova valutazione +ValidateEvaluation=Convalida la valutazione +ConfirmValidateEvaluation=Sei sicuro di voler validare questa valutazione con riferimento %s ? +EvaluationCard=Scheda di valutazione +RequiredRank=Grado richiesto per questo lavoro +EmployeeRank=Grado di dipendente per questa abilità +EmployeePosition=Posizione dei dipendenti +EmployeePositions=Posizioni dei dipendenti +EmployeesInThisPosition=Dipendenti in questa posizione +group1ToCompare=Gruppo di utenti da analizzare +group2ToCompare=Secondo gruppo di utenti per il confronto +OrJobToCompare=Confronta con i requisiti delle competenze lavorative difference=Differenza -CompetenceAcquiredByOneOrMore=Competence acquired by one or more users but not requested by the second comparator -MaxlevelGreaterThan=Max level greater than the one requested -MaxLevelEqualTo=Max level equal to that demand -MaxLevelLowerThan=Max level lower than that demand -MaxlevelGreaterThanShort=Employee level greater than the one requested -MaxLevelEqualToShort=Employee level equals to that demand -MaxLevelLowerThanShort=Employee level lower than that demand -SkillNotAcquired=Skill not acquired by all users and requested by the second comparator +CompetenceAcquiredByOneOrMore=Competenza acquisita da uno o più utenti ma non richiesta dal secondo comparatore +MaxlevelGreaterThan=Livello massimo superiore a quello richiesto +MaxLevelEqualTo=Livello massimo pari a tale domanda +MaxLevelLowerThan=Livello massimo inferiore a quella richiesta +MaxlevelGreaterThanShort=Livello dei dipendenti superiore a quello richiesto +MaxLevelEqualToShort=Il livello dei dipendenti è uguale a quella domanda +MaxLevelLowerThanShort=Livello dei dipendenti inferiore a tale domanda +SkillNotAcquired=Competenza non acquisita da tutti gli utenti e richiesta dal secondo comparatore legend=Legenda -TypeSkill=Skill type -AddSkill=Add skills to job -RequiredSkills=Required skills for this job -UserRank=User Rank -SkillList=Skill list -SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge -AbandonmentComment=Abandonment comment -DateLastEval=Date last evaluation -NoEval=No evaluation done for this employee -HowManyUserWithThisMaxNote=Number of users with this rank -HighestRank=Highest rank -SkillComparison=Skill comparison +TypeSkill=Tipo di abilità +AddSkill=Aggiungi competenze al lavoro +RequiredSkills=Competenze richieste per questo lavoro +UserRank=Classifica utente +SkillList=Elenco delle abilità +SaveRank=Salva classifica +knowHow=Competenza +HowToBe=Come essere +knowledge=Conoscenza +AbandonmentComment=Commento sull'abbandono +DateLastEval=Data ultima valutazione +NoEval=Nessuna valutazione effettuata per questo dipendente +HowManyUserWithThisMaxNote=Numero di utenti con questo rango +HighestRank=Grado più alto +SkillComparison=Confronto delle abilità diff --git a/htdocs/langs/it_IT/install.lang b/htdocs/langs/it_IT/install.lang index 7b0573c8d01..e9f4fdbaeb1 100644 --- a/htdocs/langs/it_IT/install.lang +++ b/htdocs/langs/it_IT/install.lang @@ -21,7 +21,7 @@ ErrorPHPDoesNotSupportCurl=L'attuale installazione di PHP non supporta cURL. ErrorPHPDoesNotSupportCalendar=La tua installazione di PHP non supporta le estensioni del calendario php. ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. -ErrorPHPDoesNotSupportMbstring=Your PHP installation does not support mbstring functions. +ErrorPHPDoesNotSupportMbstring=La tua installazione PHP non supporta le funzioni mbstring. ErrorPHPDoesNotSupportxDebug=La tua installazione di PHP non supporta l'estensione delle funzioni di debug. ErrorPHPDoesNotSupport=La tua installazione di PHP non supporta le funzioni %s. ErrorDirDoesNotExists=La directory %s non esiste. diff --git a/htdocs/langs/it_IT/intracommreport.lang b/htdocs/langs/it_IT/intracommreport.lang index 37a7fc4d3bb..3e4fd3ab31d 100644 --- a/htdocs/langs/it_IT/intracommreport.lang +++ b/htdocs/langs/it_IT/intracommreport.lang @@ -1,40 +1,40 @@ -Module68000Name = Intracomm report -Module68000Desc = Intracomm report management (Support for French DEB/DES format) -IntracommReportSetup = Intracommreport module setup -IntracommReportAbout = About intracommreport +Module68000Name = Rapporto intracomunicativo +Module68000Desc = Gestione dei report intracomm (supporto per il formato DEB/DES francese) +IntracommReportSetup = Configurazione del modulo intracommreport +IntracommReportAbout = A proposito di intracommreport # Setup INTRACOMMREPORT_NUM_AGREMENT=Numéro d'agrément (délivré par le CISD de rattachement) -INTRACOMMREPORT_TYPE_ACTEUR=Type d'acteur -INTRACOMMREPORT_ROLE_ACTEUR=Rôle joué par l'acteur -INTRACOMMREPORT_NIV_OBLIGATION_INTRODUCTION=Niveau d'obligation sur les introductions +INTRACOMMREPORT_TYPE_ACTEUR=Tipo d'attore +INTRACOMMREPORT_ROLE_ACTEUR=Ruolo gioioso per l'attore +INTRACOMMREPORT_NIV_OBLIGATION_INTRODUCTION=Niveau d'obligation sur les introduzioni INTRACOMMREPORT_NIV_OBLIGATION_EXPEDITION=Niveau d'obligation sur les expéditions -INTRACOMMREPORT_CATEG_FRAISDEPORT=Catégorie de services de type "Frais de port" +INTRACOMMREPORT_CATEG_FRAISDEPORT=Categoria di servizi di tipo "Frais de port" -INTRACOMMREPORT_NUM_DECLARATION=Numéro de déclarant +INTRACOMMREPORT_NUM_DECLARATION=Numero di dichiarante # Menu -MenuIntracommReport=Intracomm report -MenuIntracommReportNew=New declaration +MenuIntracommReport=Rapporto intracomunicativo +MenuIntracommReportNew=Nuova dichiarazione MenuIntracommReportList=Elenco # View -NewDeclaration=New declaration -Declaration=Declaration -AnalysisPeriod=Analysis period -TypeOfDeclaration=Type of declaration -DEB=Goods exchange declaration (DEB) -DES=Services exchange declaration (DES) +NewDeclaration=Nuova dichiarazione +Declaration=Dichiarazione +AnalysisPeriod=Periodo di analisi +TypeOfDeclaration=Tipo di dichiarazione +DEB=Dichiarazione di scambio merci (DEB) +DES=Dichiarazione di scambio di servizi (DES) # Export page -IntracommReportTitle=Preparation of an XML file in ProDouane format +IntracommReportTitle=Preparazione di un file XML in formato ProDouane # List -IntracommReportList=List of generated declarations -IntracommReportNumber=Numero of declaration -IntracommReportPeriod=Period of nalysis -IntracommReportTypeDeclaration=Type of declaration -IntracommReportDownload=download XML file +IntracommReportList=Elenco delle dichiarazioni generate +IntracommReportNumber=Numero di dichiarazione +IntracommReportPeriod=Periodo di analisi +IntracommReportTypeDeclaration=Tipo di dichiarazione +IntracommReportDownload=scarica il file XML # Invoice -IntracommReportTransportMode=Transport mode +IntracommReportTransportMode=Modalità di trasporto diff --git a/htdocs/langs/it_IT/knowledgemanagement.lang b/htdocs/langs/it_IT/knowledgemanagement.lang index 32474332026..17629ad035f 100644 --- a/htdocs/langs/it_IT/knowledgemanagement.lang +++ b/htdocs/langs/it_IT/knowledgemanagement.lang @@ -18,33 +18,37 @@ # # Module label 'ModuleKnowledgeManagementName' -ModuleKnowledgeManagementName = Knowledge Management System +ModuleKnowledgeManagementName = Sistema di gestione della conoscenza # Module description 'ModuleKnowledgeManagementDesc' -ModuleKnowledgeManagementDesc=Manage a Knowledge Management (KM) or Help-Desk base +ModuleKnowledgeManagementDesc=Gestire una base di Knowledge Management (KM) o Help-Desk # # Admin page # -KnowledgeManagementSetup = Knowledge Management System setup +KnowledgeManagementSetup = Configurazione del sistema di gestione della conoscenza Settings = Impostazioni -KnowledgeManagementSetupPage = Knowledge Management System setup page +KnowledgeManagementSetupPage = Pagina di configurazione del sistema di gestione della conoscenza # # About page # About = Info -KnowledgeManagementAbout = About Knowledge Management -KnowledgeManagementAboutPage = Knowledge Management about page +KnowledgeManagementAbout = Informazioni sulla gestione della conoscenza +KnowledgeManagementAboutPage = Gestione della conoscenza sulla pagina -KnowledgeManagementArea = Knowledge Management -MenuKnowledgeRecord = Knowledge base -ListKnowledgeRecord = List of articles -NewKnowledgeRecord = New article -ValidateReply = Validate solution -KnowledgeRecords = Articles +KnowledgeManagementArea = Gestione della conoscenza +MenuKnowledgeRecord = Base di conoscenza +ListKnowledgeRecord = Elenco degli articoli +NewKnowledgeRecord = Nuovo articolo +ValidateReply = Convalida la soluzione +KnowledgeRecords = Articoli KnowledgeRecord = Articolo -KnowledgeRecordExtraFields = Extrafields for Article -GroupOfTicket=Group of tickets -YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) -SuggestedForTicketsInGroup=Suggested for tickets when group is +KnowledgeRecordExtraFields = Extracampi per l'art +GroupOfTicket=Gruppo di biglietti +YouCanLinkArticleToATicketCategory=Puoi collegare un articolo a un gruppo di biglietti (quindi l'articolo verrà suggerito durante la qualificazione dei nuovi biglietti) +SuggestedForTicketsInGroup=Consigliato per i biglietti quando il gruppo è + +SetObsolete=Imposta come obsoleto +ConfirmCloseKM=Confermi la chiusura di questo articolo come obsoleto? +ConfirmReopenKM=Vuoi ripristinare questo articolo allo stato "Convalidato"? diff --git a/htdocs/langs/it_IT/main.lang b/htdocs/langs/it_IT/main.lang index b9ea4aa0c46..8d94a066667 100644 --- a/htdocs/langs/it_IT/main.lang +++ b/htdocs/langs/it_IT/main.lang @@ -30,7 +30,7 @@ NoTranslation=Nessuna traduzione Translation=Traduzioni CurrentTimeZone=Fuso orario attuale EmptySearchString=Inserisci criteri di ricerca non vuoti -EnterADateCriteria=Enter a date criteria +EnterADateCriteria=Immettere un criterio di data NoRecordFound=Nessun risultato trovato NoRecordDeleted=Nessun record eliminato NotEnoughDataYet=Dati insufficienti @@ -67,7 +67,7 @@ ErrorNoVATRateDefinedForSellerCountry=Errore, non sono state definite le aliquot ErrorNoSocialContributionForSellerCountry=Errore, non sono stati definiti i tipi di contributi per: '%s'. ErrorFailedToSaveFile=Errore, file non salvato. ErrorCannotAddThisParentWarehouse=You are trying to add a parent warehouse which is already a child of a existing warehouse -FieldCannotBeNegative=Field "%s" cannot be negative +FieldCannotBeNegative=Il campo "%s" non può essere negativo MaxNbOfRecordPerPage=Max. numero di records per pagina NotAuthorized=Non sei autorizzato. SetDate=Imposta data @@ -88,7 +88,7 @@ FileWasNotUploaded=Il file selezionato per l'upload non è stato ancora caricato NbOfEntries=No. of entries GoToWikiHelpPage=Leggi l'aiuto online (è richiesto un collegamento internet) GoToHelpPage=Vai alla pagina di aiuto -DedicatedPageAvailable=Dedicated help page related to your current screen +DedicatedPageAvailable=Pagina di aiuto dedicata relativa alla schermata corrente HomePage=Home Page RecordSaved=Record salvato RecordDeleted=Record cancellato @@ -115,7 +115,7 @@ ReturnCodeLastAccessInError=Codice di ritorno per l'ultimo accesso errato al dat InformationLastAccessInError=Informazioni sull'ultimo accesso errato al database DolibarrHasDetectedError=Dolibarr ha rilevato un errore tecnico YouCanSetOptionDolibarrMainProdToZero=Puoi leggere il file di registro o impostare l'opzione $dolibarr_main_prod su '0' nel tuo file di configurazione per ottenere maggiori informazioni. -InformationToHelpDiagnose=This information can be useful for diagnostic purposes (you can set option $dolibarr_main_prod to '1' to hide sensitive information) +InformationToHelpDiagnose=Queste informazioni possono essere utili per scopi diagnostici (puoi impostare l'opzione $dolibarr_main_prod su '1' per nascondere le informazioni sensibili) MoreInformation=Maggiori informazioni TechnicalInformation=Informazioni tecniche TechnicalID=ID Tecnico @@ -181,7 +181,7 @@ SaveAndNew=Salva e nuovo TestConnection=Test connessione ToClone=Clonare ConfirmCloneAsk=Sei sicuro di voler clonare l'oggetto %s ? -ConfirmClone=Choose the data you want to clone: +ConfirmClone=Scegli i dati che vuoi clonare: NoCloneOptionsSpecified=Dati da clonare non definiti Of=di Go=Vai @@ -212,8 +212,8 @@ User=Utente Users=Utenti Group=Gruppo Groups=Gruppi -UserGroup=User group -UserGroups=User groups +UserGroup=Gruppo di utenti +UserGroups=Gruppi di utenti NoUserGroupDefined=Gruppo non definito Password=Password PasswordRetype=Ridigita la password @@ -227,7 +227,7 @@ Value=Valore PersonalValue=Valore personalizzato NewObject=Nuovo %s NewValue=Nuovo valore -OldValue=Old value %s +OldValue=Vecchio valore %s CurrentValue=Valore attuale Code=Codice Type=Tipo @@ -249,7 +249,7 @@ DefaultModel=Modello predefinito Action=Azione About=About Number=Numero -NumberByMonth=Total reports by month +NumberByMonth=Rapporti totali per mese AmountByMonth=Importo per mese Numero=Numero Limit=Limite @@ -266,7 +266,7 @@ Cards=Schede Card=Scheda Now=Adesso HourStart=Ora di inizio -Deadline=Deadline +Deadline=Scadenza Date=Data DateAndHour=Data e ora DateToday=Data odierna @@ -275,10 +275,10 @@ DateStart=Data di inizio DateEnd=Data di fine DateCreation=Data di creazione DateCreationShort=Data di creazione -IPCreation=Creation IP +IPCreation=IP di creazione DateModification=Data di modifica DateModificationShort=Data modif. -IPModification=Modification IP +IPModification=IP di modifica DateLastModification=Data ultima modifica DateValidation=Data di convalida DateSigning=Data firma @@ -333,7 +333,7 @@ Morning=Mattina Afternoon=Pomeriggio Quadri=Trimestre MonthOfDay=Mese del giorno -DaysOfWeek=Days of week +DaysOfWeek=Giorni della settimana HourShort=Ora MinuteShort=min Rate=Tariffa @@ -344,8 +344,8 @@ KiloBytes=Kilobyte MegaBytes=Megabyte GigaBytes=Gigabyte TeraBytes=Terabyte -UserAuthor=Ceated by -UserModif=Updated by +UserAuthor=Ceato da +UserModif=Aggiornato da b=b Kb=Kb Mb=Mb @@ -365,7 +365,7 @@ UnitPriceHTCurrency=Prezzo unitario (netto) (valuta) UnitPriceTTC=Prezzo unitario (lordo) PriceU=P.U. PriceUHT=P.U.(netto) -PriceUHTCurrency=U.P (net) (currency) +PriceUHTCurrency=UP (netto) (valuta) PriceUTTC=P.U.(lordo) Amount=Importo AmountInvoice=Importo della fattura @@ -384,7 +384,7 @@ MulticurrencyPaymentAmount=Importo del pagamento, valuta originaria MulticurrencyAmountHT=Amount (excl. tax), original currency MulticurrencyAmountTTC=Importo (imposte incluse), valuta originaria MulticurrencyAmountVAT=Importo delle tasse, valuta originaria -MulticurrencySubPrice=Amount sub price multi currency +MulticurrencySubPrice=Importo sottoprezzo multivaluta AmountLT1=Valore tassa 2 AmountLT2=Valore tassa 3 AmountLT1ES=Importo RE (Spagna) @@ -393,7 +393,7 @@ AmountTotal=Importo totale AmountAverage=Importo medio PriceQtyMinHT=Prezzo quantità min. tasse escluse PriceQtyMinHTCurrency=Prezzo per quantità min. (tasse escluse) (valuta) -PercentOfOriginalObject=Percent of original object +PercentOfOriginalObject=Percentuale dell'oggetto originale AmountOrPercent=Importo o percentuale Percentage=Percentuale Total=Totale @@ -433,7 +433,7 @@ LT1IN=CGST LT2IN=SGST LT1GC=Additionnal cents VATRate=Aliquota IVA -RateOfTaxN=Rate of tax %s +RateOfTaxN=Aliquota fiscale %s VATCode=Codice aliquota VATNPR=Aliquota NPR DefaultTaxRate=Valore base tassa @@ -445,7 +445,7 @@ RemainToPay=Rimanente da pagare Module=Moduli/Applicazioni Modules=Moduli/Applicazioni Option=Opzione -Filters=Filters +Filters=Filtri List=Elenco FullList=Elenco completo FullConversation=Conversazione completa @@ -511,7 +511,7 @@ to=a To=a ToDate=a ToLocation=a -at=at +at=in and=e or=o Other=Altro @@ -665,7 +665,7 @@ SupplierPreview=Anteprima fornitore ShowCustomerPreview=Visualizza anteprima cliente ShowSupplierPreview=Visualizza anteprima fornitore RefCustomer=Rif. cliente -InternalRef=Internal ref. +InternalRef=Rif. interno Currency=Valuta InfoAdmin=Informazioni per gli amministratori Undo=Annulla @@ -714,7 +714,7 @@ Method=Metodo Receive=Ricevi CompleteOrNoMoreReceptionExpected=Completa o non attendere altro ExpectedValue=Valore atteso -ExpectedQty=Expected Qty +ExpectedQty=Qtà prevista PartialWoman=Parziale TotalWoman=Totale NeverReceived=Mai ricevuto @@ -733,7 +733,7 @@ MenuMembers=Membri MenuAgendaGoogle=Agenda Google MenuTaxesAndSpecialExpenses=Tasse | Spese speciali ThisLimitIsDefinedInSetup=Limite applicazione (Menu home-impostazioni-sicurezza):%s Kb, limite PHP:%s Kb -ThisLimitIsDefinedInSetupAt=Dolibarr limit (Menu %s): %s Kb, PHP limit (Param %s): %s Kb +ThisLimitIsDefinedInSetupAt=Limite Dolibarr (Menu %s): %s Kb, Limite PHP (Param %s): %s Kb NoFileFound=Nessun documento caricato CurrentUserLanguage=Lingua dell'utente CurrentTheme=Tema attuale @@ -807,7 +807,7 @@ LinkToSupplierInvoice=Collega alla fattura fornitore LinkToContract=Collega a contratto LinkToIntervention=Collega a intervento LinkToTicket=Collega al ticket -LinkToMo=Link to Mo +LinkToMo=Link a Mo CreateDraft=Crea bozza SetToDraft=Ritorna a bozza ClickToEdit=Clicca per modificare @@ -906,14 +906,14 @@ Miscellaneous=Varie Calendar=Calendario GroupBy=Raggruppa per... ViewFlatList=Vedi lista semplice -ViewAccountList=View ledger -ViewSubAccountList=View subaccount ledger +ViewAccountList=Visualizza registro +ViewSubAccountList=Visualizza il libro mastro del subaccount RemoveString=Rimuovi la stringa '%s' -SomeTranslationAreUncomplete=Some of the languages offered may be only partially translated or may contain errors. Please help to correct your language by registering at https://transifex.com/projects/p/dolibarr/ to add your improvements. -DirectDownloadLink=Public download link -PublicDownloadLinkDesc=Only the link is required to download the file -DirectDownloadInternalLink=Private download link -PrivateDownloadLinkDesc=You need to be logged and you need permissions to view or download the file +SomeTranslationAreUncomplete=Alcune delle lingue offerte potrebbero essere tradotte solo parzialmente o contenere errori. Aiutaci a correggere la tua lingua registrandoti a https://transifex.com/projects/p/dolibarr/ per aggiungere i tuoi miglioramenti. +DirectDownloadLink=Link per il download pubblico +PublicDownloadLinkDesc=Per scaricare il file è necessario solo il collegamento +DirectDownloadInternalLink=Link per il download privato +PrivateDownloadLinkDesc=Devi essere registrato e hai bisogno delle autorizzazioni per visualizzare o scaricare il file Download=Download DownloadDocument=Scarica documento ActualizeCurrency=Aggiorna tasso di cambio @@ -978,39 +978,39 @@ ShortThursday=Gio ShortFriday=Ven ShortSaturday=Sab ShortSunday=Dom -one=one +one=uno two=due -three=three -four=four -five=five +three=tre +four=quattro +five=cinque six=sei seven=sette -eight=eight -nine=nine -ten=ten -eleven=eleven -twelve=twelve -thirteen=thirdteen -fourteen=fourteen -fifteen=fifteen +eight=otto +nine=nove +ten=dieci +eleven=undici +twelve=dodici +thirteen=tredicesimo +fourteen=quattordici +fifteen=quindici sixteen=sedici seventeen=diciassette -eighteen=eighteen -nineteen=nineteen -twenty=twenty -thirty=thirty -forty=forty -fifty=fifty -sixty=sixty -seventy=seventy -eighty=eighty -ninety=ninety -hundred=hundred -thousand=thousand -million=million -billion=billion -trillion=trillion -quadrillion=quadrillion +eighteen=diciotto +nineteen=diciannove +twenty=venti +thirty=trenta +forty=quaranta +fifty=cinquanta +sixty=sessanta +seventy=Settanta +eighty=ottanta +ninety=novanta +hundred=centinaio +thousand=mille +million=milioni +billion=miliardi +trillion=trilioni +quadrillion=quadrilione SelectMailModel=Seleziona un tema email SetRef=Imposta rif. Select2ResultFoundUseArrows=Alcuni risultati trovati. Usa le frecce per selezionare. @@ -1026,7 +1026,7 @@ SearchIntoContacts=Contatti SearchIntoMembers=Membri SearchIntoUsers=Utenti SearchIntoProductsOrServices=Prodotti o servizi -SearchIntoBatch=Lots / Serials +SearchIntoBatch=Lotti / Seriali SearchIntoProjects=Progetti SearchIntoMO=Ordini di produzione SearchIntoTasks=Compiti @@ -1042,7 +1042,7 @@ SearchIntoCustomerShipments=Spedizioni cliente SearchIntoExpenseReports=Nota spese SearchIntoLeaves=Ferie / Permessi SearchIntoTickets=Ticket -SearchIntoCustomerPayments=Customer payments +SearchIntoCustomerPayments=Pagamenti dei clienti SearchIntoVendorPayments=Pagamenti fornitori SearchIntoMiscPayments=Pagamenti vari CommentLink=Commenti @@ -1063,13 +1063,13 @@ KeyboardShortcut=Tasto scelta rapida AssignedTo=Azione assegnata a Deletedraft=Elimina bozza ConfirmMassDraftDeletion=Draft mass delete confirmation -FileSharedViaALink=File shared with a public link +FileSharedViaALink=File condiviso con un collegamento pubblico SelectAThirdPartyFirst=Seleziona prima un Soggetto terzo... YouAreCurrentlyInSandboxMode=You are currently in the %s "sandbox" mode Inventory=Inventario AnalyticCode=Analytic code TMenuMRP=MRP -ShowCompanyInfos=Show company infos +ShowCompanyInfos=Mostra le informazioni sull'azienda ShowMoreInfos=Mostra maggiori informazioni NoFilesUploadedYet=Carica un documento per iniziare SeePrivateNote=Vedi nota privata @@ -1078,7 +1078,7 @@ ValidFrom=Valid from ValidUntil=Valid until NoRecordedUsers=No users ToClose=Da chiudere -ToRefuse=To refuse +ToRefuse=Per rifiutare ToProcess=Da lavorare ToApprove=Da approvare GlobalOpenedElemView=Vista globale @@ -1115,52 +1115,52 @@ NotUsedForThisCustomer=Non utilizzato per questo cliente AmountMustBePositive=L'importo deve essere positivo ByStatus=Per stato InformationMessage=Informazioni -Used=Used +Used=Usato ASAP=Il prima possibile -CREATEInDolibarr=Record %s created -MODIFYInDolibarr=Record %s modified -DELETEInDolibarr=Record %s deleted -VALIDATEInDolibarr=Record %s validated -APPROVEDInDolibarr=Record %s approved -DefaultMailModel=Default Mail Model -PublicVendorName=Public name of vendor +CREATEInDolibarr=Registra %s creato +MODIFYInDolibarr=Registra %s modificato +DELETEInDolibarr=Il record %s è stato eliminato +VALIDATEInDolibarr=Record %s convalidato +APPROVEDInDolibarr=Registrare %s approvato +DefaultMailModel=Modello di posta predefinito +PublicVendorName=Nome pubblico del venditore DateOfBirth=Data di nascita SecurityTokenHasExpiredSoActionHasBeenCanceledPleaseRetry=Token di autenticazione non più valido, azione eliminata. Prego riprovare -UpToDate=Up-to-date -OutOfDate=Out-of-date -EventReminder=Event Reminder -UpdateForAllLines=Update for all lines +UpToDate=Aggiornato +OutOfDate=Obsoleto +EventReminder=Promemoria evento +UpdateForAllLines=Aggiornamento per tutte le linee OnHold=In attesa -Civility=Civility -AffectTag=Affect Tag -CreateExternalUser=Create external user -ConfirmAffectTag=Bulk Tag Affect -ConfirmAffectTagQuestion=Are you sure you want to affect tags to the %s selected record(s)? -CategTypeNotFound=No tag type found for type of records +Civility=Civiltà +AffectTag=Influenza tag +CreateExternalUser=Crea utente esterno +ConfirmAffectTag=Influenza tag in blocco +ConfirmAffectTagQuestion=Sei sicuro di voler modificare i tag per i record %s selezionati? +CategTypeNotFound=Nessun tipo di tag trovato per il tipo di record CopiedToClipboard=Copiato negli appunti -InformationOnLinkToContract=This amount is only the total of all the lines of the contract. No notion of time is taken into consideration. -ConfirmCancel=Are you sure you want to cancel -EmailMsgID=Email MsgID -SetToEnabled=Set to enabled -SetToDisabled=Set to disabled -ConfirmMassEnabling=mass enabling confirmation -ConfirmMassEnablingQuestion=Are you sure you want to enable the %s selected record(s)? -ConfirmMassDisabling=mass disabling confirmation -ConfirmMassDisablingQuestion=Are you sure you want to disable the %s selected record(s)? -RecordsEnabled=%s record(s) enabled -RecordsDisabled=%s record(s) disabled -RecordEnabled=Record enabled -RecordDisabled=Record disabled -Forthcoming=Forthcoming +InformationOnLinkToContract=Questo importo è solo il totale di tutte le linee del contratto. Nessuna nozione di tempo viene presa in considerazione. +ConfirmCancel=Sei sicuro di voler annullare +EmailMsgID=E-mail MsgID +SetToEnabled=Impostare su abilitato +SetToDisabled=Impostare su disabilitato +ConfirmMassEnabling=conferma di abilitazione di massa +ConfirmMassEnablingQuestion=Sei sicuro di voler abilitare i record selezionati %s? +ConfirmMassDisabling=conferma di disabilitazione di massa +ConfirmMassDisablingQuestion=Sei sicuro di voler disabilitare i record selezionati %s? +RecordsEnabled=%s record abilitati +RecordsDisabled=%s record disabilitato +RecordEnabled=Registrazione abilitata +RecordDisabled=Registrazione disabilitata +Forthcoming=Imminente Currently=Attuale -ConfirmMassLeaveApprovalQuestion=Are you sure you want to approve the %s selected record(s)? -ConfirmMassLeaveApproval=Mass leave approval confirmation -RecordAproved=Record approved -RecordsApproved=%s Record(s) approved -Properties=Properties -hasBeenValidated=%s has been validated +ConfirmMassLeaveApprovalQuestion=Sei sicuro di voler approvare i record selezionati %s? +ConfirmMassLeaveApproval=Conferma dell'approvazione del congedo di massa +RecordAproved=Record approvato +RecordsApproved=%s Record approvato +Properties=Proprietà +hasBeenValidated=%s è stato convalidato ClientTZ=Fuso orario client (utente) -NotClosedYet=Not yet closed -ClearSignature=Reset signature -CanceledHidden=Canceled hidden -CanceledShown=Canceled shown +NotClosedYet=Non ancora chiuso +ClearSignature=Reimposta firma +CanceledHidden=Nascosto annullato +CanceledShown=Annullato mostrato diff --git a/htdocs/langs/it_IT/members.lang b/htdocs/langs/it_IT/members.lang index 29aff0aa04a..ab06eeb7f40 100644 --- a/htdocs/langs/it_IT/members.lang +++ b/htdocs/langs/it_IT/members.lang @@ -7,7 +7,7 @@ Members=Membri ShowMember=Visualizza scheda membro UserNotLinkedToMember=L'utente non è collegato ad un membro ThirdpartyNotLinkedToMember=Soggetto terzo non collegato ad un membro -MembersTickets=Membership address sheet +MembersTickets=Foglio dell'indirizzo di appartenenza FundationMembers=Membri della fondazione ListOfValidatedPublicMembers=Elenco membri pubblici convalidati ErrorThisMemberIsNotPublic=Questo membro non è pubblico @@ -15,26 +15,26 @@ ErrorMemberIsAlreadyLinkedToThisThirdParty=Un altro membro (nome: %s, log ErrorUserPermissionAllowsToLinksToItselfOnly=Per motivi di sicurezza, è necessario possedere permessi di modifica di tutti gli utenti per poter modificare un membro diverso da sé stessi. SetLinkToUser=Link a un utente Dolibarr SetLinkToThirdParty=Link ad un soggetto terzo -MembersCards=Business cards for members +MembersCards=Biglietti da visita per i membri MembersList=Elenco dei membri MembersListToValid=Elenco dei membri del progetto (da convalidare) MembersListValid=Elenco dei membri validi -MembersListUpToDate=List of valid members with up-to-date contribution -MembersListNotUpToDate=List of valid members with out-of-date contribution -MembersListExcluded=List of excluded members +MembersListUpToDate=Elenco dei membri validi con contributo aggiornato +MembersListNotUpToDate=Elenco dei membri validi con contributo scaduto +MembersListExcluded=Elenco dei membri esclusi MembersListResiliated=List of terminated members MembersListQualified=Elenco dei membri qualificati MenuMembersToValidate=Membri da convalidare MenuMembersValidated=Membri convalidati -MenuMembersExcluded=Excluded members +MenuMembersExcluded=Membri esclusi MenuMembersResiliated=Terminated members -MembersWithSubscriptionToReceive=Members with contribution to receive -MembersWithSubscriptionToReceiveShort=Contributions to receive -DateSubscription=Date of membership -DateEndSubscription=End date of membership -EndSubscription=End of membership -SubscriptionId=Contribution ID -WithoutSubscription=Without contribution +MembersWithSubscriptionToReceive=Membri con contributo da ricevere +MembersWithSubscriptionToReceiveShort=Contributi da ricevere +DateSubscription=Data di adesione +DateEndSubscription=Data di fine adesione +EndSubscription=Fine adesione +SubscriptionId=ID contributo +WithoutSubscription=Senza contributo MemberId=ID NewMember=Nuovo membro MemberType=Tipo membro @@ -43,22 +43,22 @@ MemberTypeLabel=Etichetta tipo membro MembersTypes=Tipi di membro MemberStatusDraft=Bozza (deve essere convalidata) MemberStatusDraftShort=Bozza -MemberStatusActive=Validated (waiting contribution) +MemberStatusActive=Convalidato (in attesa di contributo) MemberStatusActiveShort=Convalidato -MemberStatusActiveLate=Contribution expired +MemberStatusActiveLate=Contributo scaduto MemberStatusActiveLateShort=Scaduta MemberStatusPaid=Adesione aggiornata MemberStatusPaidShort=Aggiornata -MemberStatusExcluded=Excluded member -MemberStatusExcludedShort=Excluded +MemberStatusExcluded=Membro escluso +MemberStatusExcludedShort=Escluso MemberStatusResiliated=Terminated member MemberStatusResiliatedShort=Terminated MembersStatusToValid=Membri da convalidare -MembersStatusExcluded=Excluded members +MembersStatusExcluded=Membri esclusi MembersStatusResiliated=Terminated members -MemberStatusNoSubscription=Validated (no contribution required) +MemberStatusNoSubscription=Convalidato (nessun contributo richiesto) MemberStatusNoSubscriptionShort=convalidato -SubscriptionNotNeeded=No contribution required +SubscriptionNotNeeded=Nessun contributo richiesto NewCotisation=Nuovo contributo PaymentSubscription=Nuovo contributo di pagamento SubscriptionEndDate=Termine ultimo per la sottoscrizione @@ -70,66 +70,66 @@ MemberTypeDeleted=Member type deleted MemberTypeCanNotBeDeleted=Member type can not be deleted NewSubscription=Nuovo contributo NewSubscriptionDesc=Questo modulo consente di registrare l'adesione di un nuovo membro alla fondazione. Per rinnovare l'adesione (se già iscritto), si prega di contattare la fondazione per email. -Subscription=Contribution -Subscriptions=Contributions +Subscription=Contributo +Subscriptions=Contributi SubscriptionLate=Ritardi -SubscriptionNotReceived=Contribution never received -ListOfSubscriptions=List of contributions +SubscriptionNotReceived=Contributo mai ricevuto +ListOfSubscriptions=Elenco dei contributi SendCardByMail=Send card by email AddMember=Crea membro NoTypeDefinedGoToSetup=Nessun tipo di membro definito. Vai su impostazioni - Tipi di membro NewMemberType=Nuovo tipo di membro WelcomeEMail=Welcome email -SubscriptionRequired=Contribution required +SubscriptionRequired=Contributo richiesto DeleteType=Elimina VoteAllowed=E' permesso il voto -Physical=Individual -Moral=Corporation -MorAndPhy=Corporation and Individual -Reenable=Re-Enable -ExcludeMember=Exclude a member -Exclude=Exclude -ConfirmExcludeMember=Are you sure you want to exclude this member ? +Physical=Individuale +Moral=Società +MorAndPhy=Società e individuo +Reenable=Riabilitare +ExcludeMember=Escludi un membro +Exclude=Escludere +ConfirmExcludeMember=Sei sicuro di voler escludere questo membro? ResiliateMember=Terminate a member ConfirmResiliateMember=Are you sure you want to terminate this member? DeleteMember=Elimina membro -ConfirmDeleteMember=Are you sure you want to delete this member (Deleting a member will delete all his contributions)? +ConfirmDeleteMember=Sei sicuro di voler eliminare questo membro (l'eliminazione di un membro eliminerà tutti i suoi contributi)? DeleteSubscription=Cancella adesione -ConfirmDeleteSubscription=Are you sure you want to delete this contribution? +ConfirmDeleteSubscription=Sei sicuro di voler eliminare questo contributo? Filehtpasswd=File htpasswd ValidateMember=Convalida un membro ConfirmValidateMember=Are you sure you want to validate this member? FollowingLinksArePublic=The following links are open pages not protected by any Dolibarr permission. They are not formatted pages, provided as example to show how to list members database. PublicMemberList=Elenco pubblico dei membri -BlankSubscriptionForm=Public self-registration form +BlankSubscriptionForm=Modulo di autoregistrazione pubblica BlankSubscriptionFormDesc=Dolibarr can provide you a public URL/website to allow external visitors to ask to subscribe to the foundation. If an online payment module is enabled, a payment form may also be automatically provided. EnablePublicSubscriptionForm=Enable the public website with self-subscription form ForceMemberType=Force the member type -ExportDataset_member_1=Members and contributions +ExportDataset_member_1=Soci e contributi ImportDataset_member_1=Membri LastMembersModified=ultimi %s membri modificati -LastSubscriptionsModified=Latest %s modified contributions +LastSubscriptionsModified=Ultimi contributi %s modificati String=Stringa Text=Testo Int=Intero DateAndTime=Data e ora PublicMemberCard=Scheda membro pubblico -SubscriptionNotRecorded=Contribution not recorded -AddSubscription=Create contribution -ShowSubscription=Show contribution +SubscriptionNotRecorded=Contributo non registrato +AddSubscription=Crea contributo +ShowSubscription=Mostra contributo # Label of email templates SendingAnEMailToMember=Sending information email to member SendingEmailOnAutoSubscription=Sending email on auto registration SendingEmailOnMemberValidation=Sending email on new member validation -SendingEmailOnNewSubscription=Sending email on new contribution -SendingReminderForExpiredSubscription=Sending reminder for expired contributions +SendingEmailOnNewSubscription=Invio email sul nuovo contributo +SendingReminderForExpiredSubscription=Invio sollecito contributi scaduti SendingEmailOnCancelation=Sending email on cancelation -SendingReminderActionComm=Sending reminder for agenda event +SendingReminderActionComm=Invio promemoria per evento in agenda # Topic of email templates YourMembershipRequestWasReceived=Your membership was received. YourMembershipWasValidated=Your membership was validated -YourSubscriptionWasRecorded=Your new contribution was recorded -SubscriptionReminderEmail=contribution reminder +YourSubscriptionWasRecorded=Il tuo nuovo contributo è stato registrato +SubscriptionReminderEmail=promemoria del contributo YourMembershipWasCanceled=Your membership was canceled CardContent=Contenuto della scheda membro # Text of email templates @@ -140,12 +140,12 @@ ThisIsContentOfSubscriptionReminderEmail=We want to let you know that your subsc ThisIsContentOfYourCard=This is a summary of the information we have about you. Please contact us if anything is incorrect.

DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Subject of the notification email received in case of auto-inscription of a guest DescADHERENT_AUTOREGISTER_NOTIF_MAIL=Content of the notification email received in case of auto-inscription of a guest -DescADHERENT_EMAIL_TEMPLATE_AUTOREGISTER=Email template to use to send email to a member on member auto-registration +DescADHERENT_EMAIL_TEMPLATE_AUTOREGISTER=Modello e-mail da utilizzare per inviare e-mail a un membro durante la registrazione automatica dei membri DescADHERENT_EMAIL_TEMPLATE_MEMBER_VALIDATION=Email template to use to send email to a member on member validation -DescADHERENT_EMAIL_TEMPLATE_SUBSCRIPTION=Email template to use to send email to a member on new contribution recording -DescADHERENT_EMAIL_TEMPLATE_REMIND_EXPIRATION=Email template to use to send email reminder when contribution is about to expire +DescADHERENT_EMAIL_TEMPLATE_SUBSCRIPTION=Modello e-mail da utilizzare per inviare e-mail a un membro sulla nuova registrazione del contributo +DescADHERENT_EMAIL_TEMPLATE_REMIND_EXPIRATION=Modello e-mail da utilizzare per inviare promemoria via e-mail quando il contributo sta per scadere DescADHERENT_EMAIL_TEMPLATE_CANCELATION=Email template to use to send email to a member on member cancelation -DescADHERENT_EMAIL_TEMPLATE_EXCLUSION=Email template to use to send email to a member on member exclusion +DescADHERENT_EMAIL_TEMPLATE_EXCLUSION=Modello e-mail da utilizzare per inviare e-mail a un membro sull'esclusione dei membri DescADHERENT_MAIL_FROM=Sender Email for automatic emails DescADHERENT_ETIQUETTE_TYPE=Formato etichette DescADHERENT_ETIQUETTE_TEXT=Testo da stampare nel campo indirizzo di un membro @@ -156,10 +156,10 @@ DescADHERENT_CARD_TEXT_RIGHT=Testo della scheda membro (allineato a destra) DescADHERENT_CARD_FOOTER_TEXT=Testo del footer fondo della scheda membro ShowTypeCard=Visualizza la scheda dei tipi HTPasswordExport=Esporta htpassword -NoThirdPartyAssociatedToMember=No third party associated with this member -MembersAndSubscriptions=Members and Contributions +NoThirdPartyAssociatedToMember=Nessuna terza parte associata a questo membro +MembersAndSubscriptions=Membri e contributi MoreActions=Azioni complementari alla registrazione -MoreActionsOnSubscription=Complementary action, suggested by default when recording a contribution +MoreActionsOnSubscription=Azione complementare, suggerita di default al momento della registrazione di un contributo MoreActionBankDirect=Create a direct entry on bank account MoreActionBankViaInvoice=Create an invoice, and a payment on bank account MoreActionInvoiceOnly=Creare una fattura senza pagamento @@ -168,53 +168,53 @@ LinkToGeneratedPagesDesc=Questa schermata permette di generare file PDF contenen DocForAllMembersCards=Genera schede per tutti i membri (formato di output impostato: %s) DocForOneMemberCards=Genera scheda per un membro (formato di output impostato: %s) DocForLabels=Genera etichette con indirizzi (formato di output impostato: %s) -SubscriptionPayment=Contribution payment -LastSubscriptionDate=Date of latest contribution payment -LastSubscriptionAmount=Amount of latest contribution -LastMemberType=Last Member type +SubscriptionPayment=Pagamento del contributo +LastSubscriptionDate=Data dell'ultimo versamento del contributo +LastSubscriptionAmount=Importo dell'ultimo contributo +LastMemberType=Ultimo tipo di membro MembersStatisticsByCountries=Statistiche per paese MembersStatisticsByState=Statistiche per stato/provincia MembersStatisticsByTown=Statistiche per città MembersStatisticsByRegion=Statistiche membri per regioni -NbOfMembers=Total number of members -NbOfActiveMembers=Total number of current active members +NbOfMembers=Numero totale di membri +NbOfActiveMembers=Numero totale degli attuali membri attivi NoValidatedMemberYet=Nessun membro convalidato trovato -MembersByCountryDesc=This screen shows you the statistics of members by countries. Graphs and charts depend on the availability of the Google online graph service as well as on the availability of a working internet connection. -MembersByStateDesc=This screen show you statistics of members by state/provinces/canton. -MembersByTownDesc=This screen show you statistics of members by town. -MembersByNature=This screen show you statistics of members by nature. -MembersByRegion=This screen show you statistics of members by region. +MembersByCountryDesc=Questa schermata mostra le statistiche dei membri per paese. Grafici e grafici dipendono dalla disponibilità del servizio di grafici online di Google e dalla disponibilità di una connessione Internet funzionante. +MembersByStateDesc=Questa schermata mostra le statistiche dei membri per stato/provincia/cantone. +MembersByTownDesc=Questa schermata mostra le statistiche dei membri per città. +MembersByNature=Questa schermata mostra le statistiche dei membri per natura. +MembersByRegion=Questa schermata mostra le statistiche dei membri per regione. MembersStatisticsDesc=Scegli quali statistiche visualizzare... MenuMembersStats=Statistiche -LastMemberDate=Latest membership date -LatestSubscriptionDate=Latest contribution date -MemberNature=Nature of the member -MembersNature=Nature of the members -Public=Information is public +LastMemberDate=Ultima data di iscrizione +LatestSubscriptionDate=Data dell'ultimo contributo +MemberNature=Natura del membro +MembersNature=Natura dei membri +Public=L'informazione è pubblica NewMemberbyWeb=Nuovo membro aggiunto. In attesa di approvazione NewMemberForm=Nuova modulo membri -SubscriptionsStatistics=Contributions statistics -NbOfSubscriptions=Number of contributions -AmountOfSubscriptions=Amount collected from contributions +SubscriptionsStatistics=Statistiche dei contributi +NbOfSubscriptions=Numero di contributi +AmountOfSubscriptions=Importo raccolto dai contributi TurnoverOrBudget=Giro d'affari (aziende) o Budget (fondazione) -DefaultAmount=Default amount of contribution -CanEditAmount=Visitor can choose/edit amount of its contribution +DefaultAmount=Importo predefinito del contributo +CanEditAmount=Il visitatore può scegliere/modificare l'importo del suo contributo MEMBER_NEWFORM_PAYONLINE=Saltate sulla integrato pagina di pagamento online ByProperties=By nature MembersStatisticsByProperties=Members statistics by nature -VATToUseForSubscriptions=VAT rate to use for contributionss -NoVatOnSubscription=No VAT for contributions -ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product used for contribution line into invoice: %s +VATToUseForSubscriptions=Aliquota IVA da utilizzare per i contributi +NoVatOnSubscription=Nessuna IVA per i contributi +ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Prodotto utilizzato per riga contributi in fattura: %s NameOrCompany=Name or company -SubscriptionRecorded=Contribution recorded +SubscriptionRecorded=Contributo registrato NoEmailSentToMember=No email sent to member EmailSentToMember=Email sent to member at %s -SendReminderForExpiredSubscriptionTitle=Send reminder by email for expired contributions -SendReminderForExpiredSubscription=Send reminder by email to members when contribution is about to expire (parameter is number of days before end of membership to send the remind. It can be a list of days separated by a semicolon, for example '10;5;0;-5') +SendReminderForExpiredSubscriptionTitle=Invia promemoria via e-mail per i contributi scaduti +SendReminderForExpiredSubscription=Invia promemoria via e-mail ai membri quando il contributo sta per scadere (il parametro è il numero di giorni prima della fine dell'iscrizione per inviare il promemoria. Può essere un elenco di giorni separati da un punto e virgola, ad esempio '10;5;0;-5 ') MembershipPaid=Membership paid for current period (until %s) YouMayFindYourInvoiceInThisEmail=You may find your invoice attached to this email XMembersClosed=%s member(s) closed -XExternalUserCreated=%s external user(s) created -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. +XExternalUserCreated=%s utenti esterni creati +ForceMemberNature=Natura del membro forzato (individuo o società) +CreateDolibarrLoginDesc=La creazione di un login utente per i membri consente loro di connettersi all'applicazione. A seconda delle autorizzazioni concesse, potranno, ad esempio, consultare o modificare autonomamente il proprio fascicolo. +CreateDolibarrThirdPartyDesc=Una terza parte è la persona giuridica che verrà utilizzata nella fattura se si decide di generare la fattura per ogni contributo. Potrai crearlo in seguito durante il processo di registrazione del contributo. diff --git a/htdocs/langs/it_IT/mrp.lang b/htdocs/langs/it_IT/mrp.lang index 02dc5395366..e4c1ce36a2a 100644 --- a/htdocs/langs/it_IT/mrp.lang +++ b/htdocs/langs/it_IT/mrp.lang @@ -8,13 +8,13 @@ MenuBOM=Bills of material LatestBOMModified=Latest %s Bills of materials modified LatestMOModified=Ultimi %sordini di produzione modificati Bom=Distinta base -BillOfMaterials=Bill of Materials -BillOfMaterialsLines=Bill of Materials lines +BillOfMaterials=Distinta materiali +BillOfMaterialsLines=Righe Distinta Materiali BOMsSetup=Setup of module BOM ListOfBOMs=List of bills of material - BOM ListOfManufacturingOrders=Elenco degli ordini di produzione -NewBOM=New bill of materials -ProductBOMHelp=Product to create (or disassemble) with this BOM.
Note: Products with the property 'Nature of product' = 'Raw material' are not visible into this list. +NewBOM=Nuova distinta base +ProductBOMHelp=Prodotto da creare (o smontare) con questa distinta base.
Nota: i prodotti con la proprietà 'Natura del prodotto' = 'Materia prima' non sono visibili in questo elenco. BOMsNumberingModules=BOM numbering templates BOMsModelModule=BOMS document templates MOsNumberingModules=Modelli di numerazione degli ordini di produzione (MO) @@ -23,16 +23,16 @@ FreeLegalTextOnBOMs=Free text on document of BOM WatermarkOnDraftBOMs=Watermark on draft BOM FreeLegalTextOnMOs=Testo libero sui documenti MO WatermarkOnDraftMOs=Filigrana sulla bozza degli ordini di produzione MO (se presente) -ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials %s ? +ConfirmCloneBillOfMaterials=Sei sicuro di voler clonare la distinta base %s ? ConfirmCloneMo=Vuoi davvero clonare l'ordine di produzione %s? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Efficienza dei consumi -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Il valore di 0,95 indica una media di 5%% di perdita durante la produzione o lo smontaggio ValueOfMeansLossForProductProduced=Il valore di 0,95 indica una media di 5%% di perdita del prodotto prodotto DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Elimina Ordine di Produzione -ConfirmDeleteBillOfMaterials=Are you sure you want to delete this Bill Of Materials? -ConfirmDeleteMo=Are you sure you want to delete this Manufacturing Order? +ConfirmDeleteBillOfMaterials=Sei sicuro di voler eliminare questa distinta base? +ConfirmDeleteMo=Sei sicuro di voler eliminare questo ordine di produzione? MenuMRP=Ordini di produzione NewMO=Nuovo ordine di produzione QtyToProduce=Qtà da produrre @@ -40,7 +40,7 @@ DateStartPlannedMo=Data di inizio prevista DateEndPlannedMo=Fine della data prevista KeepEmptyForAsap=Vuoto significa "Il più presto possibile" EstimatedDuration=Durata stimata -EstimatedDurationDesc=Estimated duration to manufacture (or disassemble) this product using this BOM +EstimatedDurationDesc=Durata stimata per la fabbricazione (o lo smontaggio) di questo prodotto utilizzando questa distinta base ConfirmValidateBom=Vuoi convalidare la distinta base con il riferimento %s (sarai in grado di usarlo per costruire nuovi ordini di produzione) ConfirmCloseBom=Vuoi davvero eliminare questa Distinta Base (non sarà più possibile utilizzarla per creare nuovi ordini di produzione) ConfirmReopenBom=Sei sicuro di voler riaprire questa BOM (potrai usarla per creare nuovi ordini di produzione) @@ -56,7 +56,7 @@ WarehouseForProduction=Magazzino per la produzione CreateMO=Crea Ordine di Produzione ToConsume=Da consumare ToProduce=Da produrre -ToObtain=To obtain +ToObtain=Ottenere QtyAlreadyConsumed=Q.tà già consumate QtyAlreadyProduced=Q.tà già prodotte QtyRequiredIfNoLoss=Qtà richiesta se non ci sono perdite (l'efficienza di produzione è 100%%) @@ -65,16 +65,16 @@ ConsumeAndProduceAll=Consuma e produci tutto Manufactured=Creato TheProductXIsAlreadyTheProductToProduce=Il prodotto da aggiungere è già il prodotto da produrre. ForAQuantityOf=Per una quantità da produrre di %s -ForAQuantityToConsumeOf=For a quantity to disassemble of %s +ForAQuantityToConsumeOf=Per una quantità da smontare di %s ConfirmValidateMo=Sei sicuro di voler convalidare questo ordine di produzione? ConfirmProductionDesc=Cliccando su '%s' convaliderai il consumo e / o la produzione per le quantità impostate. Ciò aggiornerà anche le azioni e registrerà i movimenti delle scorte. ProductionForRef=Produzione di %s AutoCloseMO=Chiude automaticamente l'ordine di produzione se vengono raggiunte le quantità da consumare e da produrre NoStockChangeOnServices=Nessuna variazione di stock sui servizi ProductQtyToConsumeByMO=Quantità di prodotto ancora da consumare con MO aperto -ProductQtyToProduceByMO=Product quantity still to produce by open MO +ProductQtyToProduceByMO=Quantità di prodotto ancora da produrre per MO aperto AddNewConsumeLines=Aggiungi una nuova riga da consumare -AddNewProduceLines=Add new line to produce +AddNewProduceLines=Aggiungi nuova linea da produrre ProductsToConsume=Prodotti da consumare ProductsToProduce=Prodotti da produrre UnitCost=Costo unitario @@ -82,28 +82,28 @@ TotalCost=Costo totale BOMTotalCost=Il costo per produrre questa distinta base in base al costo di ciascuna quantità e prodotto da consumare (utilizzare il prezzo di costo se definito, altrimenti il prezzo medio ponderato se definito, altrimenti il miglior prezzo di acquisto) GoOnTabProductionToProduceFirst=È necessario prima aver avviato la produzione per chiudere un ordine di produzione (vedere la scheda "%s"). Ma puoi annullarlo. ErrorAVirtualProductCantBeUsedIntoABomOrMo=Un kit non può essere utilizzato in una distinta materiali o in un ordine di produzione -Workstation=Workstation -Workstations=Workstations -WorkstationsDescription=Workstations management -WorkstationSetup = Workstations setup -WorkstationSetupPage = Workstations setup page -WorkstationList=Workstation list -WorkstationCreate=Add new workstation -ConfirmEnableWorkstation=Are you sure you want to enable workstation %s ? -EnableAWorkstation=Enable a workstation -ConfirmDisableWorkstation=Are you sure you want to disable workstation %s ? -DisableAWorkstation=Disable a workstation +Workstation=Postazione di lavoro +Workstations=Postazioni di lavoro +WorkstationsDescription=Gestione delle postazioni di lavoro +WorkstationSetup = Configurazione delle postazioni di lavoro +WorkstationSetupPage = Pagina di configurazione delle workstation +WorkstationList=Elenco delle postazioni di lavoro +WorkstationCreate=Aggiungi nuova workstation +ConfirmEnableWorkstation=Sei sicuro di voler abilitare la workstation %s ? +EnableAWorkstation=Abilita una stazione di lavoro +ConfirmDisableWorkstation=Sei sicuro di voler disabilitare la workstation %s ? +DisableAWorkstation=Disabilita una workstation DeleteWorkstation=Elimina -NbOperatorsRequired=Number of operators required -THMOperatorEstimated=Estimated operator THM -THMMachineEstimated=Estimated machine THM -WorkstationType=Workstation type -Human=Human -Machine=Machine -HumanMachine=Human / Machine -WorkstationArea=Workstation area -Machines=Machines -THMEstimatedHelp=This rate makes it possible to define a forecast cost of the item -BOM=Bill Of Materials -CollapseBOMHelp=You can define the default display of the details of the nomenclature in the configuration of the BOM module -MOAndLines=Manufacturing Orders and lines +NbOperatorsRequired=Numero di operatori richiesti +THMOperatorEstimated=Operatore stimato THM +THMMachineEstimated=Macchina stimata THM +WorkstationType=Tipo di stazione di lavoro +Human=Umano +Machine=Macchina +HumanMachine=Umano/Macchina +WorkstationArea=Zona di lavoro +Machines=Macchine +THMEstimatedHelp=Questa tariffa permette di definire una previsione di costo dell'articolo +BOM=Distinta materiali +CollapseBOMHelp=È possibile definire la visualizzazione di default dei dettagli della nomenclatura nella configurazione del modulo BOM +MOAndLines=Ordini e linee di produzione diff --git a/htdocs/langs/it_IT/multicurrency.lang b/htdocs/langs/it_IT/multicurrency.lang index 1344eb123be..ac4ae101cfe 100644 --- a/htdocs/langs/it_IT/multicurrency.lang +++ b/htdocs/langs/it_IT/multicurrency.lang @@ -20,19 +20,19 @@ MulticurrencyPaymentAmount=Payment amount, original currency AmountToOthercurrency=Amount To (in currency of receiving account) CurrencyRateSyncSucceed=Sincronizzazione del tasso di cambio eseguita correttamente MULTICURRENCY_USE_CURRENCY_ON_DOCUMENT=Usa la valuta del documento per i pagamenti online -TabTitleMulticurrencyRate=Rate list -ListCurrencyRate=List of exchange rates for the currency -CreateRate=Create a rate -FormCreateRate=Rate creation -FormUpdateRate=Rate modification -successRateCreate=Rate for currency %s has been added to the database -ConfirmDeleteLineRate=Are you sure you want to remove the %s rate for currency %s on %s date? -DeleteLineRate=Clear rate -successRateDelete=Rate deleted -errorRateDelete=Error when deleting the rate -successUpdateRate=Modification made -ErrorUpdateRate=Error when changing the rate -Codemulticurrency=currency code -UpdateRate=change the rate -CancelUpdate=cancel -NoEmptyRate=The rate field must not be empty +TabTitleMulticurrencyRate=Listino prezzi +ListCurrencyRate=Elenco dei tassi di cambio per la valuta +CreateRate=Crea una tariffa +FormCreateRate=Creazione di una tariffa +FormUpdateRate=Modifica tariffa +successRateCreate=Il tasso per la valuta %s è stato aggiunto al database +ConfirmDeleteLineRate=Sei sicuro di voler rimuovere il tasso %s per la valuta %s alla data %s? +DeleteLineRate=Tasso chiaro +successRateDelete=Tasso cancellato +errorRateDelete=Errore durante l'eliminazione della tariffa +successUpdateRate=Modifica apportata +ErrorUpdateRate=Errore durante la modifica della tariffa +Codemulticurrency=codice valuta +UpdateRate=cambia la tariffa +CancelUpdate=Annulla +NoEmptyRate=Il campo della tariffa non deve essere vuoto diff --git a/htdocs/langs/it_IT/other.lang b/htdocs/langs/it_IT/other.lang index f1b5079789f..7daf1c74056 100644 --- a/htdocs/langs/it_IT/other.lang +++ b/htdocs/langs/it_IT/other.lang @@ -14,8 +14,8 @@ PreviousMonthOfInvoice=Previous month (number 1-12) of invoice date TextPreviousMonthOfInvoice=Previous month (text) of invoice date NextMonthOfInvoice=Following month (number 1-12) of invoice date TextNextMonthOfInvoice=Following month (text) of invoice date -PreviousMonth=Previous month -CurrentMonth=Current month +PreviousMonth=Il mese scorso +CurrentMonth=Corrente mese ZipFileGeneratedInto=Archivio zip generato in %s. DocFileGeneratedInto=Doc file generated into %s. JumpToLogin=Disconnected. Go to login page... @@ -35,9 +35,9 @@ OnlyOneFieldForXAxisIsPossible=Al momento è possibile solo 1 campo come asse X. AtLeastOneMeasureIsRequired=È richiesto almeno 1 campo per la misura AtLeastOneXAxisIsRequired=È richiesto almeno 1 campo per l'asse X. LatestBlogPosts=Ultimi post del blog -notiftouser=To users -notiftofixedemail=To fixed mail -notiftouserandtofixedemail=To user and fixed mail +notiftouser=Agli utenti +notiftofixedemail=Alla posta fissa +notiftouserandtofixedemail=A utente e posta fissa Notify_ORDER_VALIDATE=Sales order validated Notify_ORDER_SENTBYMAIL=Sales order sent by mail Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email @@ -81,7 +81,7 @@ Notify_EXPENSE_REPORT_VALIDATE=Note spese convalidate (è richiesta l'approvazio Notify_EXPENSE_REPORT_APPROVE=Nota spesa approvata Notify_HOLIDAY_VALIDATE=Richiesta ferie/permesso convalidata (approvazione richiesta) Notify_HOLIDAY_APPROVE=Richiesta ferie/permesso approvata -Notify_ACTION_CREATE=Added action to Agenda +Notify_ACTION_CREATE=Aggiunta azione all'Agenda SeeModuleSetup=Vedi la configurazione del modulo %s NbOfAttachedFiles=Numero di file/documenti allegati TotalSizeOfAttachedFiles=Dimensione totale dei file/documenti allegati @@ -103,7 +103,7 @@ PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find shipping __REF__ at PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find intervention __REF__ attached\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n PredefinedMailContentGeneric=__(Buongiorno)__\n\n\n__(Cordialmente)__\n\n__USER_SIGNATURE__ -PredefinedMailContentSendActionComm=Event reminder "__EVENT_LABEL__" on __EVENT_DATE__ at __EVENT_TIME__

This is an automatic message, please do not reply. +PredefinedMailContentSendActionComm=Promemoria evento "__EVENT_LABEL__" il __EVENT_DATE__ at __EVENT_TIME__

Questo è un messaggio automatico, per favore non rispondere. DemoDesc=Dolibarr è un ERP/CRM compatto composto di diversi moduli funzionali. Un demo comprendente tutti i moduli non ha alcun senso, perché un caso simile non esiste nella realtà. Sono dunque disponibili diversi profili demo. ChooseYourDemoProfil=Scegli il profilo demo che corrisponde alla tua attività ... ChooseYourDemoProfilMore=...or build your own profile
(manual module selection) @@ -132,7 +132,7 @@ ClosedByLogin=Login utente che ha chiuso FileWasRemoved=Il file è stato eliminato DirWasRemoved=La directory è stata rimossa FeatureNotYetAvailable=Funzionalità non ancora disponibile nella versione corrente -FeatureNotAvailableOnDevicesWithoutMouse=Feature not available on devices without mouse +FeatureNotAvailableOnDevicesWithoutMouse=Funzionalità non disponibile su dispositivi senza mouse FeaturesSupported=Caratteristiche supportate Width=Larghezza Height=Altezza @@ -187,7 +187,7 @@ EnableGDLibraryDesc=Per usare questa opzione bisogna installare o abilitare la l ProfIdShortDesc=Prof ID %s è un dato dipendente dal paese terzo.
Ad esempio, per il paese %s, è il codice %s. DolibarrDemo=Dolibarr ERP/CRM demo StatsByNumberOfUnits=Statistiche per somma della quantità di prodotti / servizi -StatsByNumberOfEntities=Statistics for number of referring entities (no. of invoices, or orders...) +StatsByNumberOfEntities=Statistiche per numero di soggetti di riferimento (n. di fatture, o ordini...) NumberOfProposals=Numero di preventivi NumberOfCustomerOrders=Numero di ordini cliente NumberOfCustomerInvoices=Numero di ordini fornitore @@ -221,7 +221,7 @@ EMailTextExpenseReportValidated=Expense report %s has been validated. EMailTextExpenseReportApproved=Expense report %s has been approved. EMailTextHolidayValidated=La richiesta di ferie/permesso %s è stata convalidata. EMailTextHolidayApproved=Leave request %s has been approved. -EMailTextActionAdded=The action %s has been added to the Agenda. +EMailTextActionAdded=L'azione %s è stata aggiunta all'Agenda. ImportedWithSet=Set dati importazione DolibarrNotification=Notifica automatica ResizeDesc=Ridimesiona con larghezza o altezza nuove. Il ridimensionamento è proporzionale, il rapporto tra le due dimenzioni verrà mantenuto. @@ -249,7 +249,7 @@ NewKeyIs=Queste sono le tue nuove credenziali di accesso NewKeyWillBe=Le tue nuove credenziali per loggare al software sono ClickHereToGoTo=Clicca qui per andare a %s YouMustClickToChange=Devi cliccare sul seguente link per validare il cambio della password -ConfirmPasswordChange=Confirm password change +ConfirmPasswordChange=Conferma la modifica della password ForgetIfNothing=Se non hai richiesto questo cambio, lascia perdere questa mail. Le tue credenziali sono mantenute al sicuro. IfAmountHigherThan=Se l'importo è superiore a %s SourcesRepository=Repository for sources @@ -258,10 +258,10 @@ PassEncoding=Codifica Password PermissionsAdd=Permessi aggiunti PermissionsDelete=Permessi rimossi YourPasswordMustHaveAtLeastXChars=La tua password deve contenere almeno %scaratteri -PasswordNeedAtLeastXUpperCaseChars=The password need at least %s upper case chars -PasswordNeedAtLeastXDigitChars=The password need at least %s numeric chars -PasswordNeedAtLeastXSpecialChars=The password need at least %s special chars -PasswordNeedNoXConsecutiveChars=The password must not have %s consecutive similar chars +PasswordNeedAtLeastXUpperCaseChars=La password richiede almeno %s caratteri maiuscoli +PasswordNeedAtLeastXDigitChars=La password richiede almeno %s caratteri numerici +PasswordNeedAtLeastXSpecialChars=La password richiede almeno %s caratteri speciali +PasswordNeedNoXConsecutiveChars=La password non deve contenere %s caratteri simili consecutivi YourPasswordHasBeenReset=Your password has been reset successfully ApplicantIpAddress=IP address of applicant SMSSentTo=SMS sent to %s @@ -271,7 +271,8 @@ ContactCreatedByEmailCollector=Contact/address created by email collector from e ProjectCreatedByEmailCollector=Project created by email collector from email MSGID %s TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Utilizzare - per separare gli orari di apertura e chiusura.
Utilizzare uno spazio per inserire intervalli diversi.
Esempio: 8-12 14-18 -SuffixSessionName=Suffix for session name +SuffixSessionName=Suffisso per il nome della sessione +LoginWith=Accedi con %s ##### Export ##### ExportsArea=Area esportazioni @@ -297,8 +298,8 @@ PopuProp=Prodotti / servizi per popolarità nelle proposte PopuCom=Prodotti / servizi per popolarità negli ordini ProductStatistics=Statistiche sui prodotti / servizi NbOfQtyInOrders=Qtà in ordini -SelectTheTypeOfObjectToAnalyze=Select an object to view its statistics... +SelectTheTypeOfObjectToAnalyze=Seleziona un oggetto per visualizzarne le statistiche... -ConfirmBtnCommonContent = Are you sure you want to "%s" ? -ConfirmBtnCommonTitle = Confirm your action +ConfirmBtnCommonContent = Sei sicuro di voler "%s"? +ConfirmBtnCommonTitle = Conferma la tua azione CloseDialog = Chiudere diff --git a/htdocs/langs/it_IT/partnership.lang b/htdocs/langs/it_IT/partnership.lang index 2201a77b039..cac42a97758 100644 --- a/htdocs/langs/it_IT/partnership.lang +++ b/htdocs/langs/it_IT/partnership.lang @@ -16,71 +16,71 @@ # # Generic # -ModulePartnershipName=Partnership management -PartnershipDescription=Module Partnership management -PartnershipDescriptionLong= Module Partnership management -Partnership=Partnership -AddPartnership=Add partnership -CancelPartnershipForExpiredMembers=Partnership: Cancel partnership of members with expired subscriptions -PartnershipCheckBacklink=Partnership: Check referring backlink +ModulePartnershipName=Gestione del partenariato +PartnershipDescription=Modulo Gestione del partenariato +PartnershipDescriptionLong= Modulo Gestione del partenariato +Partnership=Collaborazione +AddPartnership=Aggiungi partnership +CancelPartnershipForExpiredMembers=Partnership: annulla la partnership di membri con abbonamenti scaduti +PartnershipCheckBacklink=Partnership: controlla il backlink di riferimento # # Menu # -NewPartnership=New Partnership -ListOfPartnerships=List of partnership +NewPartnership=Nuova partnership +ListOfPartnerships=Elenco delle partnership # # Admin page # -PartnershipSetup=Partnership setup -PartnershipAbout=About Partnership -PartnershipAboutPage=Partnership about page -partnershipforthirdpartyormember=Partner status must be set on a 'thirdparty' or a 'member' -PARTNERSHIP_IS_MANAGED_FOR=Partnership managed for -PARTNERSHIP_BACKLINKS_TO_CHECK=Backlinks to check -PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL=Nb of days before cancelling status of a partnership when a subscription has expired -ReferingWebsiteCheck=Check of website referring -ReferingWebsiteCheckDesc=You can enable a feature to check that your partners has added a backlink to your website domains on their own website. +PartnershipSetup=Configurazione della partnership +PartnershipAbout=A proposito di partenariato +PartnershipAboutPage=Partnership sulla pagina +partnershipforthirdpartyormember=Lo stato di partner deve essere impostato su "terza parte" o "membro" +PARTNERSHIP_IS_MANAGED_FOR=Partnership gestita per +PARTNERSHIP_BACKLINKS_TO_CHECK=Backlink da controllare +PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL=Nb di giorni prima della cancellazione dello stato di una partnership quando un abbonamento è scaduto +ReferingWebsiteCheck=Verifica del sito web di riferimento +ReferingWebsiteCheckDesc=Puoi abilitare una funzione per verificare che i tuoi partner abbiano aggiunto un backlink ai domini del tuo sito web sul proprio sito web. # # Object # -DeletePartnership=Delete a partnership -PartnershipDedicatedToThisThirdParty=Partnership dedicated to this third party -PartnershipDedicatedToThisMember=Partnership dedicated to this member +DeletePartnership=Elimina una partnership +PartnershipDedicatedToThisThirdParty=Partnership dedicata a questa terza parte +PartnershipDedicatedToThisMember=Partnership dedicata a questo membro DatePartnershipStart=Data di inizio DatePartnershipEnd=Data di fine -ReasonDecline=Decline reason -ReasonDeclineOrCancel=Decline reason -PartnershipAlreadyExist=Partnership already exist -ManagePartnership=Manage partnership -BacklinkNotFoundOnPartnerWebsite=Backlink not found on partner website -ConfirmClosePartnershipAsk=Are you sure you want to cancel this partnership? -PartnershipType=Partnership type -PartnershipRefApproved=Partnership %s approved +ReasonDecline=Rifiuta la ragione +ReasonDeclineOrCancel=Rifiuta la ragione +PartnershipAlreadyExist=La partnership esiste già +ManagePartnership=Gestisci la partnership +BacklinkNotFoundOnPartnerWebsite=Backlink non trovato sul sito web del partner +ConfirmClosePartnershipAsk=Sei sicuro di voler annullare questa partnership? +PartnershipType=Tipo di partenariato +PartnershipRefApproved=Approvata la partnership %s # # Template Mail # -SendingEmailOnPartnershipWillSoonBeCanceled=Partnership will soon be canceled -SendingEmailOnPartnershipRefused=Partnership refused -SendingEmailOnPartnershipAccepted=Partnership accepted -SendingEmailOnPartnershipCanceled=Partnership canceled +SendingEmailOnPartnershipWillSoonBeCanceled=La partnership sarà presto annullata +SendingEmailOnPartnershipRefused=Partnership rifiutata +SendingEmailOnPartnershipAccepted=Partnership accettata +SendingEmailOnPartnershipCanceled=Partnership annullata -YourPartnershipWillSoonBeCanceledTopic=Partnership will soon be canceled -YourPartnershipRefusedTopic=Partnership refused -YourPartnershipAcceptedTopic=Partnership accepted -YourPartnershipCanceledTopic=Partnership canceled +YourPartnershipWillSoonBeCanceledTopic=La partnership sarà presto annullata +YourPartnershipRefusedTopic=Partnership rifiutata +YourPartnershipAcceptedTopic=Partnership accettata +YourPartnershipCanceledTopic=Partnership annullata -YourPartnershipWillSoonBeCanceledContent=We inform you that your partnership will soon be canceled (Backlink not found) -YourPartnershipRefusedContent=We inform you that your partnership request has been refused. -YourPartnershipAcceptedContent=We inform you that your partnership request has been accepted. -YourPartnershipCanceledContent=We inform you that your partnership has been canceled. +YourPartnershipWillSoonBeCanceledContent=Ti informiamo che la tua partnership verrà presto cancellata (Backlink non trovato) +YourPartnershipRefusedContent=La informiamo che la sua richiesta di partnership è stata rifiutata. +YourPartnershipAcceptedContent=La informiamo che la sua richiesta di partnership è stata accettata. +YourPartnershipCanceledContent=Ti informiamo che la tua partnership è stata annullata. -CountLastUrlCheckError=Number of errors for last URL check -LastCheckBacklink=Date of last URL check -ReasonDeclineOrCancel=Decline reason +CountLastUrlCheckError=Numero di errori per l'ultimo controllo URL +LastCheckBacklink=Data dell'ultimo controllo dell'URL +ReasonDeclineOrCancel=Rifiuta la ragione # # Status @@ -89,4 +89,4 @@ PartnershipDraft=Assegno circolare PartnershipAccepted=Accettata PartnershipRefused=Rifiutato PartnershipCanceled=Annullata -PartnershipManagedFor=Partners are +PartnershipManagedFor=I partner sono diff --git a/htdocs/langs/it_IT/productbatch.lang b/htdocs/langs/it_IT/productbatch.lang index 5f35e584c7f..277322df786 100644 --- a/htdocs/langs/it_IT/productbatch.lang +++ b/htdocs/langs/it_IT/productbatch.lang @@ -1,10 +1,10 @@ # ProductBATCH language file - Source file is en_US - ProductBATCH ManageLotSerial=Usa lotto/numero di serie -ProductStatusOnBatch=Yes (lot required) -ProductStatusOnSerial=Yes (unique serial number required) +ProductStatusOnBatch=Sì (lotto richiesto) +ProductStatusOnSerial=Sì (è richiesto un numero di serie univoco) ProductStatusNotOnBatch=No (è richiesto il lotto/numero di serie) -ProductStatusOnBatchShort=Lot -ProductStatusOnSerialShort=Serial +ProductStatusOnBatchShort=Quantità +ProductStatusOnSerialShort=Seriale ProductStatusNotOnBatchShort=No Batch=Lotto/numero di serie atleast1batchfield=Data di scadenza o lotto/numero di serie @@ -24,22 +24,22 @@ ProductLotSetup=Configurazione del modulo lotto/numero di serie ShowCurrentStockOfLot=Mostra la scorta disponibile per la coppia prodotto/lotto ShowLogOfMovementIfLot=Mostra il log dei movimenti per la coppia prodotto/lotto StockDetailPerBatch=Dettagli magazzino per lotto -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 +SerialNumberAlreadyInUse=Il numero di serie %s è già utilizzato per il prodotto %s +TooManyQtyForSerialNumber=Puoi avere un solo prodotto %s per numero di serie %s +ManageLotMask=Mascherina personalizzata +CustomMasks=Possibilità di definire una maschera di numerazione diversa per ogni prodotto +BatchLotNumberingModules=Regola di numerazione per la generazione automatica del numero di lotto +BatchSerialNumberingModules=Regola di numerazione per la generazione automatica del numero di serie (per prodotti con proprietà 1 lotto/numero unico per ogni prodotto) +QtyToAddAfterBarcodeScan=Quantità in %s per ogni codice a barre/lotto/numero scansionato +LifeTime=Durata (in giorni) +EndOfLife=Fine della vita +ManufacturingDate=Data di produzione +DestructionDate=Data di distruzione +FirstUseDate=Data di primo utilizzo +QCFrequency=Frequenza del controllo qualità (in giorni) +ShowAllLots=Mostra tutti i lotti +HideLots=Nascondi un sacco #Traceability - qc status -OutOfOrder=Out of order -InWorkingOrder=In working order -ToReplace=Replace +OutOfOrder=Fuori servizio +InWorkingOrder=Funzionante +ToReplace=Sostituire diff --git a/htdocs/langs/it_IT/products.lang b/htdocs/langs/it_IT/products.lang index f33ca8759bf..f8e13bc3fb4 100644 --- a/htdocs/langs/it_IT/products.lang +++ b/htdocs/langs/it_IT/products.lang @@ -43,7 +43,7 @@ ServicesOnSaleOnly=Servizi solo vendibili ServicesOnPurchaseOnly=Servizi solo acquistabili ServicesNotOnSell=Servizi non vendibili nè acquistabili ServicesOnSellAndOnBuy=Servizi vendibili ed acquistabili -LastModifiedProductsAndServices=Latest %s products/services which were modified +LastModifiedProductsAndServices=Ultimi prodotti/servizi %s che sono stati modificati LastRecordedProducts=Ultimi %s prodotti registrati LastRecordedServices=Ultimi %s servizi registrati CardProduct0=Prodotto @@ -73,13 +73,13 @@ SellingPrice=Prezzo di vendita SellingPriceHT=Prezzo di vendita (al netto delle imposte) SellingPriceTTC=Prezzo di vendita (inclusa IVA) SellingMinPriceTTC=Prezzo minimo di vendita (tasse incluse) -CostPriceDescription=This price field (excl. tax) can be used to capture the average amount this product costs to your company. It may be any price you calculate yourself, for example, from the average buying price plus average production and distribution cost. +CostPriceDescription=Questo campo del prezzo (tasse escluse) può essere utilizzato per acquisire l'importo medio che questo prodotto costa alla tua azienda. Può essere qualsiasi prezzo che calcoli tu stesso, ad esempio, dal prezzo medio di acquisto più il costo medio di produzione e distribuzione. CostPriceUsage=Questo valore può essere utilizzato per il calcolo del margine. -ManufacturingPrice=Manufacturing price +ManufacturingPrice=Prezzo di produzione SoldAmount=Quantità venduta PurchasedAmount=Quantità acquistata NewPrice=Nuovo prezzo -MinPrice=Min. selling price +MinPrice=min. prezzo di vendita EditSellingPriceLabel=Modifica l'etichetta del prezzo di vendita CantBeLessThanMinPrice=Il prezzo di vendita non può essere inferiore al minimo consentito per questo prodotto ( %s IVA esclusa) ContractStatusClosed=Chiuso @@ -142,7 +142,7 @@ VATRateForSupplierProduct=Aliquota IVA (per questo fornitore / prodotto) DiscountQtyMin=Sconto per questa quantità NoPriceDefinedForThisSupplier=No price/qty defined for this vendor/product NoSupplierPriceDefinedForThisProduct=No vendor price/qty defined for this product -PredefinedItem=Predefined item +PredefinedItem=Articolo predefinito PredefinedProductsToSell=Prodotto predefinito PredefinedServicesToSell=Servizio predefinito PredefinedProductsAndServicesToSell=Prodotti/servizi predefiniti per la vendita @@ -158,11 +158,11 @@ ListServiceByPopularity=Elenco dei servizi per popolarità Finished=Prodotto creato RowMaterial=Materia prima ConfirmCloneProduct=Vuoi davvero clonare il prodotto / servizio %s ? -CloneContentProduct=Clone all main information of the product/service +CloneContentProduct=Clona tutte le informazioni principali del prodotto/servizio ClonePricesProduct=Clona prezzi CloneCategoriesProduct=Clona tag/categorie collegate -CloneCompositionProduct=Clone virtual products/services -CloneCombinationsProduct=Clone the product variants +CloneCompositionProduct=Clonare prodotti/servizi virtuali +CloneCombinationsProduct=Clona le varianti di prodotto ProductIsUsed=Questo prodotto è in uso NewRefForClone=Rif. del nuovo prodotto/servizio SellingPrices=Prezzi di vendita @@ -171,12 +171,12 @@ CustomerPrices=Prezzi di vendita SuppliersPrices=Prezzi fornitore SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) CustomCode=codice Customs|Commodity|HS -CountryOrigin=Country of origin -RegionStateOrigin=Region of origin -StateOrigin=State|Province of origin -Nature=Nature of product (raw/manufactured) +CountryOrigin=Paese d'origine +RegionStateOrigin=Regione di origine +StateOrigin=Stato|Provincia di origine +Nature=Natura del prodotto (grezzo/lavorato) NatureOfProductShort=Natura del prodotto -NatureOfProductDesc=Raw material or manufactured product +NatureOfProductDesc=Materia prima o prodotto fabbricato ShortLabel=Etichetta breve Unit=Unità p=u. @@ -278,7 +278,7 @@ PriceByCustomer=Prezzi diversi in base al cliente PriceCatalogue=Prezzo singolo di vendita per prodotto/servizio PricingRule=Reogle dei prezzi di vendita AddCustomerPrice=Aggiungere prezzo dal cliente -ForceUpdateChildPriceSoc=Set same price on customer's subsidiaries +ForceUpdateChildPriceSoc=Imposta lo stesso prezzo sulle filiali del cliente PriceByCustomerLog=Log di precedenti prezzi clienti MinimumPriceLimit=Prezzo minimo non può essere inferiore a % s MinimumRecommendedPrice=Minimum recommended price is: %s @@ -297,7 +297,7 @@ ComposedProductIncDecStock=Aumenta e Diminuisci le scorte alla modifica del prod ComposedProduct=Sottoprodotto MinSupplierPrice=Prezzo d'acquisto minimo MinCustomerPrice=Prezzo minimo di vendita -NoDynamicPrice=No dynamic price +NoDynamicPrice=Nessun prezzo dinamico DynamicPriceConfiguration=Configurazione dinamica dei prezzi DynamicPriceDesc=You may define mathematical formulae to calculate Customer or Vendor prices. Such formulas can use all mathematical operators, some constants and variables. You can define here the variables you wish to use. If the variable needs an automatic update, you may define the external URL to allow Dolibarr to update the value automatically. AddVariable=Aggiungi variabile @@ -316,7 +316,7 @@ LastUpdated=Ultimo aggiornamento CorrectlyUpdated=Aggiornato correttamente PropalMergePdfProductActualFile=I file utilizzano per aggiungere in PDF Azzurra sono / è PropalMergePdfProductChooseFile=Selezionare i file PDF -IncludingProductWithTag=Including products/services with the tag +IncludingProductWithTag=Compresi prodotti/servizi con il tag DefaultPriceRealPriceMayDependOnCustomer=Prezzo predefinito, prezzo reale può dipendere cliente WarningSelectOneDocument=Seleziona almeno un documento DefaultUnitToShow=Unità @@ -342,7 +342,7 @@ ProductSheet=Scheda prodotto ServiceSheet=Scheda di servizio PossibleValues=Valori possibili GoOnMenuToCreateVairants=Vai sul menu %s - %s per preparare le varianti degli attributi (come colori, dimensioni, ...) -UseProductFournDesc=Add a feature to define the product description defined by the vendors (for each vendor reference) in addition to the description for customers +UseProductFournDesc=Aggiungere una funzione per definire la descrizione del prodotto definita dai fornitori (per ogni riferimento del fornitore) oltre alla descrizione per i clienti ProductSupplierDescription=Vendor description for the product UseProductSupplierPackaging=Utilizzare l'imballaggio sui prezzi del fornitore (ricalcolare le quantità in base all'imballaggio impostato sul prezzo del fornitore quando si aggiunge / aggiorna la riga nei documenti del fornitore) PackagingForThisProduct=Confezione @@ -398,15 +398,16 @@ ActionAvailableOnVariantProductOnly=Action only available on the variant of prod ProductsPricePerCustomer=Product prices per customers ProductSupplierExtraFields=Attributi aggiuntivi (prezzi dei fornitori) DeleteLinkedProduct=Elimina il prodotto figlio collegato alla combinazione -AmountUsedToUpdateWAP=Amount to use to update the Weighted Average Price +AmountUsedToUpdateWAP=Importo da utilizzare per aggiornare il Prezzo Medio Ponderato PMPValue=Media ponderata prezzo PMPValueShort=MPP -mandatoryperiod=Mandatory periods -mandatoryPeriodNeedTobeSet=Note: Period (start and end date) must be defined -mandatoryPeriodNeedTobeSetMsgValidate=A service requires a start and end period -mandatoryHelper=Check this if you want a message to the user when creating / validating an invoice, commercial proposal, sales order without entering a start and end date on lines with this service.
Note that the message is a warning and not a blocking error. -DefaultBOM=Default BOM -DefaultBOMDesc=The default BOM recommended to use to manufacture this product. This field can be set only if nature of product is '%s'. -Rank=Rank -SwitchOnSaleStatus=Switch on sale status -SwitchOnPurchaseStatus=Switch on purchase status +mandatoryperiod=Periodi obbligatori +mandatoryPeriodNeedTobeSet=Nota: il periodo (data di inizio e di fine) deve essere definito +mandatoryPeriodNeedTobeSetMsgValidate=Un servizio richiede un periodo di inizio e di fine +mandatoryHelper=Selezionare questa opzione se si desidera un messaggio all'utente durante la creazione/convalida di una fattura, proposta commerciale, ordine cliente senza inserire una data di inizio e di fine sulle righe con questo servizio.
Si noti che il messaggio è un avviso e non un errore di blocco. +DefaultBOM=Distinta base predefinita +DefaultBOMDesc=La distinta base predefinita consigliata per la fabbricazione di questo prodotto. Questo campo può essere impostato solo se la natura del prodotto è '%s'. +Rank=Rango +SwitchOnSaleStatus=Attiva lo stato di vendita +SwitchOnPurchaseStatus=Attiva lo stato di acquisto +StockMouvementExtraFields= Campi Extra (movimento stock) diff --git a/htdocs/langs/it_IT/projects.lang b/htdocs/langs/it_IT/projects.lang index 6bddc691130..7d652db4c4b 100644 --- a/htdocs/langs/it_IT/projects.lang +++ b/htdocs/langs/it_IT/projects.lang @@ -10,19 +10,19 @@ PrivateProject=Contatti del progetto ProjectsImContactFor=Progetti per i quali sono esplicitamente un contatto AllAllowedProjects=Tutti i progetti che posso vedere (miei + pubblici) AllProjects=Tutti i progetti -MyProjectsDesc=This view is limited to the projects that you are a contact for +MyProjectsDesc=Questa visualizzazione è limitata ai progetti per i quali sei un contatto ProjectsPublicDesc=Questa visualizzazione mostra tutti i progetti che sei autorizzato a vedere. TasksOnProjectsPublicDesc=Questa vista presenta tutte le attività nei progetti su cui tu sei abilitato a leggere. ProjectsPublicTaskDesc=Questa prospettiva presenta tutti i progetti e le attività a cui è permesso accedere. ProjectsDesc=Questa visualizzazione mostra tutti i progetti (hai i privilegi per vedere tutto). TasksOnProjectsDesc=Questa visualizzazione mostra tutti i compiti di ogni progetto (hai i privilegi per vedere tutto). -MyTasksDesc=This view is limited to the projects or tasks that you are a contact for +MyTasksDesc=Questa visualizzazione è limitata ai progetti o alle attività per cui sei un contatto OnlyOpenedProject=Sono visibili solamente i progetti aperti (i progetti con stato di bozza o chiusi non sono visibili). ClosedProjectsAreHidden=I progetti chiusi non sono visibili. TasksPublicDesc=Questa visualizzazione mostra tutti i progetti e i compiti che hai il permesso di vedere. TasksDesc=Questa visualizzazione mostra tutti i progetti e i compiti (hai i privilegi per vedere tutto). AllTaskVisibleButEditIfYouAreAssigned=Tutte le attività dei progetti validati sono visibili, ma puoi inserire le ore solo nelle attività assegnate all'utente selezionato. Assegna delle attività se hai bisogno di inserirci all'interno delle ore. -OnlyYourTaskAreVisible=Only tasks assigned to you are visible. If you need to enter time on a task and if the task is not visible here, then you need to assign the task to yourself. +OnlyYourTaskAreVisible=Sono visibili solo le attività assegnate a te. Se devi inserire l'ora in un'attività e se l'attività non è visibile qui, devi assegnarla a te stesso. ImportDatasetTasks=Compiti dei progetti ProjectCategories=Tag/Categorie Progetti NewProject=Nuovo progetto @@ -79,13 +79,13 @@ DurationEffective=Durata effettiva ProgressDeclared=Avanzamento dichiarato reale TaskProgressSummary=Avanzamento compito CurentlyOpenedTasks=Compiti attualmente aperti -TheReportedProgressIsLessThanTheCalculatedProgressionByX=The declared real progress is less %s than the progress on consumption -TheReportedProgressIsMoreThanTheCalculatedProgressionByX=The declared real progress is more %s than the progress on consumption -ProgressCalculated=Progress on consumption +TheReportedProgressIsLessThanTheCalculatedProgressionByX=Il progresso reale dichiarato è inferiore a %s rispetto al progresso sul consumo +TheReportedProgressIsMoreThanTheCalculatedProgressionByX=Il progresso reale dichiarato è più %s del progresso sui consumi +ProgressCalculated=Progressi sui consumi WhichIamLinkedTo=which I'm linked to WhichIamLinkedToProject=which I'm linked to project Time=Tempo -TimeConsumed=Consumed +TimeConsumed=Consumato ListOfTasks=Elenco dei compiti GoToListOfTimeConsumed=Vai all'elenco del tempo impiegato GanttView=Vista Gantt @@ -140,7 +140,7 @@ NoTasks=Nessun compito per questo progetto LinkedToAnotherCompany=Collegato ad un altro soggetto terzo TaskIsNotAssignedToUser=Attività non assegnata all'utente. Usa il bottone '%s' per assegnare l'attività ora. ErrorTimeSpentIsEmpty=Il campo tempo lavorato è vuoto -TimeRecordingRestrictedToNMonthsBack=Time recording is restricted to %s months back +TimeRecordingRestrictedToNMonthsBack=La registrazione del tempo è limitata a %s mesi fa ThisWillAlsoRemoveTasks=Questa azione eliminerà anche tutti i compiti del progetto (al momento ci sono %s compiti) e tutto il tempo lavorato già inserito. IfNeedToUseOtherObjectKeepEmpty=Se qualche elemento (fattura, ordine, ...), appartenente ad un altro soggetto terzo deve essere collegato al progetto da creare, non compilare il campo per assegnare il progetto a più di un soggetto terzo. CloneTasks=Clona compiti @@ -197,6 +197,7 @@ InputPerMonth=Input per mese InputDetail=Dettagli di input TimeAlreadyRecorded=Questo lasso di tempo è già stato registrato per questa attività/giorno e l'utente%s ProjectsWithThisUserAsContact=Progetti con questo utente come contatto +ProjectsWithThisContact=Progetti con questo contatto TasksWithThisUserAsContact=Compiti assegnati a questo utente ResourceNotAssignedToProject=Non assegnato al progetto ResourceNotAssignedToTheTask=Risorsa non assegnata all'attività @@ -214,7 +215,7 @@ ProjectNbProjectByMonth=Num. di progetti creati per mese ProjectNbTaskByMonth=Numero di attività create per mese ProjectOppAmountOfProjectsByMonth=Quantità di Lead per mese ProjectWeightedOppAmountOfProjectsByMonth=Quantità ponderata di opportunità per mese -ProjectOpenedProjectByOppStatus=Open project|lead by lead status +ProjectOpenedProjectByOppStatus=Progetto aperto|capofila per stato capofila ProjectsStatistics=Statistiche su attività di progetto/clienti potenziali TasksStatistics=Statistiche su attività di progetto/clienti potenziali TaskAssignedToEnterTime=Compito assegnato. Inserire i tempi per questo compito dovrebbe esserre possibile. @@ -259,7 +260,7 @@ TimeSpentForInvoice=Tempo lavorato OneLinePerUser=One line per user ServiceToUseOnLines=Service to use on lines InvoiceGeneratedFromTimeSpent=Invoice %s has been generated from time spent on project -InterventionGeneratedFromTimeSpent=Intervention %s has been generated from time spent on project +InterventionGeneratedFromTimeSpent=L'intervento %s è stato generato dal tempo dedicato al progetto ProjectBillTimeDescription=Check se inserisci la scheda attività sulle attività del progetto E prevedi di generare fatture dalla scheda attività per fatturare al cliente il progetto (non verificare se si prevede di creare una fattura che non si basa sulle schede attività inserite). Nota: per generare una fattura, vai sulla scheda "Tempo trascorso" del progetto e seleziona le righe da includere. ProjectFollowOpportunity=Opportunità da seguire ProjectFollowTasks=Segui le attività o il tempo trascorso @@ -268,20 +269,21 @@ UsageOpportunity=Utilizzo: opportunità UsageTasks=Uso: Compiti UsageBillTimeShort=Utilizzo: tempo di fatturazione InvoiceToUse=Fattura in bozza da usare -InterToUse=Draft intervention to use +InterToUse=Progetto di intervento da utilizzare NewInvoice=Nuova fattura NewInter=Nuovo intervento OneLinePerTask=Una riga per compito OneLinePerPeriod=Una riga per periodo -OneLinePerTimeSpentLine=One line for each time spent declaration -AddDetailDateAndDuration=With date and duration into line description +OneLinePerTimeSpentLine=Una riga per ogni dichiarazione del tempo trascorso +AddDetailDateAndDuration=Con data e durata nella descrizione della riga RefTaskParent=Ref. Attività genitore ProfitIsCalculatedWith=Il profitto viene calcolato utilizzando AddPersonToTask=Aggiungi anche ai seguenti compiti -UsageOrganizeEvent=Usage: Event Organization -PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE=Classify project as closed when all its tasks are completed (100%% progress) -PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with all tasks at 100 %% progress won't be affected: you will have to close them manually. This option only affects open projects. -SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them -ProjectTasksWithoutTimeSpent=Project tasks without time spent -FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +UsageOrganizeEvent=Utilizzo: organizzazione di eventi +PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE=Classifica il progetto come chiuso quando tutte le sue attività sono state completate (avanzamento 100%%) +PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Nota: i progetti esistenti con tutte le attività allo stato di avanzamento 100%% non saranno interessati: dovrai chiuderli manualmente. Questa opzione ha effetto solo sui progetti aperti. +SelectLinesOfTimeSpentToInvoice=Seleziona le righe di tempo trascorse non fatturate, quindi l'azione collettiva "Genera fattura" per fatturarle +ProjectTasksWithoutTimeSpent=Attività di progetto senza tempo speso +FormForNewLeadDesc=Grazie per aver compilato il seguente modulo per contattarci. Puoi anche inviarci un'e-mail direttamente a %s . +ProjectsHavingThisContact=Progetti che hanno questo contatto StartDateCannotBeAfterEndDate=La data di fine non può essere precedente a quella di inizio diff --git a/htdocs/langs/it_IT/receptions.lang b/htdocs/langs/it_IT/receptions.lang index 5ecd878a59a..8549d23a51e 100644 --- a/htdocs/langs/it_IT/receptions.lang +++ b/htdocs/langs/it_IT/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Gestione accoglienza fornitori (Crea documenti di accoglienza) +ReceptionsSetup=Configurazione della reception del fornitore RefReception=Ref. reception Reception=In ricezione Receptions=Receptions diff --git a/htdocs/langs/it_IT/recruitment.lang b/htdocs/langs/it_IT/recruitment.lang index 83194566a93..0a6a28cc8dc 100644 --- a/htdocs/langs/it_IT/recruitment.lang +++ b/htdocs/langs/it_IT/recruitment.lang @@ -29,8 +29,8 @@ RecruitmentSetup = Setup Selezione Settings = Impostazioni RecruitmentSetupPage = Inserisci qui le impostazioni delle opzioni principali per il modulo di selezione RecruitmentArea=Area selezioni -PublicInterfaceRecruitmentDesc=Public pages of jobs are public URLs to show and answer to open jobs. There is one different link for each open job, found on each job record. -EnablePublicRecruitmentPages=Enable public pages of open jobs +PublicInterfaceRecruitmentDesc=Le pagine pubbliche dei lavori sono URL pubblici per mostrare e rispondere ai lavori aperti. C'è un collegamento diverso per ogni lavoro aperto, che si trova su ogni record di lavoro. +EnablePublicRecruitmentPages=Abilita le pagine pubbliche dei lavori aperti # # About page @@ -50,27 +50,27 @@ PositionsToBeFilled=Posizione lavorativa ListOfPositionsToBeFilled=Elenco posizioni lavorative NewPositionToBeFilled=Nuova posizione lavorativa -JobOfferToBeFilled=Job position to be filled +JobOfferToBeFilled=Posizione lavorativa da ricoprire ThisIsInformationOnJobPosition=Informazioni sulla posizione lavorativa da compilare -ContactForRecruitment=Contact for recruitment -EmailRecruiter=Email recruiter -ToUseAGenericEmail=To use a generic email. If not defined, the email of the responsible of recruitment will be used -NewCandidature=New application -ListOfCandidatures=List of applications -RequestedRemuneration=Requested remuneration -ProposedRemuneration=Proposed remuneration -ContractProposed=Contract proposed +ContactForRecruitment=Contatto per reclutamento +EmailRecruiter=Reclutatore di posta elettronica +ToUseAGenericEmail=Per utilizzare un'e-mail generica. Se non definita, verrà utilizzata l'e-mail del responsabile del reclutamento +NewCandidature=Nuova applicazione +ListOfCandidatures=Elenco delle applicazioni +RequestedRemuneration=Compenso richiesto +ProposedRemuneration=Compenso proposto +ContractProposed=Proposta di contratto ContractSigned=Contratto firmato -ContractRefused=Contract refused -RecruitmentCandidature=Application +ContractRefused=Contratto rifiutato +RecruitmentCandidature=Applicazione JobPositions=Posizione lavorativa -RecruitmentCandidatures=Applications -InterviewToDo=Interview to do -AnswerCandidature=Application answer -YourCandidature=Your application -YourCandidatureAnswerMessage=Thanks you for your application.
... -JobClosedTextCandidateFound=The job position is closed. The position has been filled. -JobClosedTextCanceled=The job position is closed. -ExtrafieldsJobPosition=Complementary attributes (job positions) -ExtrafieldsApplication=Complementary attributes (job applications) -MakeOffer=Make an offer +RecruitmentCandidatures=Applicazioni +InterviewToDo=Intervista da fare +AnswerCandidature=Risposta dell'applicazione +YourCandidature=La tua applicazione +YourCandidatureAnswerMessage=Grazie per la tua candidatura.
... +JobClosedTextCandidateFound=La posizione lavorativa è chiusa. La posizione è stata occupata. +JobClosedTextCanceled=La posizione lavorativa è chiusa. +ExtrafieldsJobPosition=Attributi complementari (posizioni lavorative) +ExtrafieldsApplication=Attributi complementari (domande di lavoro) +MakeOffer=Fare un'offerta diff --git a/htdocs/langs/it_IT/stocks.lang b/htdocs/langs/it_IT/stocks.lang index 0f1240457cf..4a1c3b32740 100644 --- a/htdocs/langs/it_IT/stocks.lang +++ b/htdocs/langs/it_IT/stocks.lang @@ -12,9 +12,9 @@ AddWarehouse=Crea magazzino AddOne=Aggiungi uno DefaultWarehouse=Magazzino predefinito WarehouseTarget=Magazzino di destinazione -ValidateSending=Confirm shipment -CancelSending=Cancel shipment -DeleteSending=Delete shipment +ValidateSending=Conferma la spedizione +CancelSending=Annulla spedizione +DeleteSending=Elimina spedizione Stock=Scorta Stocks=Scorte MissingStocks=Scorte mancanti @@ -34,10 +34,10 @@ StockMovementForId=ID movimento %d ListMouvementStockProject=Elenco dei movimenti delle scorte associati al progetto StocksArea=Area magazzino e scorte AllWarehouses=Tutti i magazzini -IncludeEmptyDesiredStock=Include also negative stock with undefined desired stock +IncludeEmptyDesiredStock=Includere anche lo stock negativo con lo stock desiderato non definito IncludeAlsoDraftOrders=Includi anche bozze di ordini Location=Ubicazione -LocationSummary=Short name of location +LocationSummary=Nome abbreviato del luogo NumberOfDifferentProducts=Numero di prodotti unici NumberOfProducts=Numero totale prodotti LastMovement=Ultimo movimento @@ -60,10 +60,10 @@ EnhancedValueOfWarehouses=Valore magazzini UserWarehouseAutoCreate=Crea anche un magazzino alla creazione di un utente AllowAddLimitStockByWarehouse=Gestisci anche i valori minimo e desiderato della scorta per abbinamento (prodotto - magazzino) oltre ai valori per prodotto RuleForWarehouse=Regola per i magazzini -WarehouseAskWarehouseOnThirparty=Set a warehouse on Third-parties -WarehouseAskWarehouseDuringPropal=Set a warehouse on Commercial proposals -WarehouseAskWarehouseDuringOrder=Set a warehouse on Sales Orders -WarehouseAskWarehouseDuringProject=Set a warehouse on Projects +WarehouseAskWarehouseOnThirparty=Imposta un magazzino su Terze parti +WarehouseAskWarehouseDuringPropal=Imposta un magazzino su Proposte commerciali +WarehouseAskWarehouseDuringOrder=Impostare un magazzino sugli ordini di vendita +WarehouseAskWarehouseDuringProject=Imposta un magazzino su Progetti UserDefaultWarehouse=Imposta un magazzino per gli utenti MainDefaultWarehouse=Magazzino predefinito MainDefaultWarehouseUser=Utilizza un magazzino predefinito per ogni utente @@ -90,23 +90,23 @@ NoPredefinedProductToDispatch=Per l'oggetto non ci sono prodotti predefiniti. Qu DispatchVerb=Ricezione StockLimitShort=Limite per segnalazioni StockLimit=Limite minimo scorte (per gli avvisi) -StockLimitDesc=(empty) means no warning.
0 can be used to trigger a warning as soon as the stock is empty. +StockLimitDesc=(vuoto) significa nessun avviso.
0 può essere utilizzato per attivare un avviso non appena lo stock è vuoto. PhysicalStock=Scorte fisiche RealStock=Scorte reali RealStockDesc=Scorte fisiche/reali è la giacenza attualmente nei magazzini.\n RealStockWillAutomaticallyWhen=Le scorte fisiche saranno modificate secondo le seguenti regole (come definito nel modulo Magazzino): VirtualStock=Scorte virtuali -VirtualStockAtDate=Virtual stock at a future date -VirtualStockAtDateDesc=Virtual stock once all the pending orders that are planned to be processed before the chosen date will be finished +VirtualStockAtDate=Stock virtuale in una data futura +VirtualStockAtDateDesc=Stock virtuale una volta che tutti gli ordini in sospeso che dovrebbero essere elaborati prima della data scelta saranno terminati VirtualStockDesc=Lo stock virtuale è lo stock calcolato disponibile una volta che tutte le azioni aperte / in sospeso (che interessano le scorte) sono state chiuse (ordini di acquisto ricevuti, ordini di vendita spediti, ordini di produzione prodotti, ecc.) -AtDate=At date +AtDate=Ad oggi IdWarehouse=Id magazzino DescWareHouse=Descrizione magazzino LieuWareHouse=Ubicazione magazzino WarehousesAndProducts=Magazzini e prodotti WarehousesAndProductsBatchDetail=Magazzini e prodotti (con indicazione dei lotti/numeri di serie) AverageUnitPricePMPShort=Media ponderata prezzo -AverageUnitPricePMPDesc=The input average unit price we had to expense to get 1 unit of product into our stock. +AverageUnitPricePMPDesc=Il prezzo unitario medio di input che abbiamo dovuto spendere per inserire 1 unità di prodotto nel nostro stock. SellPriceMin=Prezzo di vendita unitario EstimatedStockValueSellShort=Valori di vendita EstimatedStockValueSell=Valori di vendita @@ -124,9 +124,9 @@ DesiredStockDesc=Questa quantità sarà il valore utilizzato per rifornire il ma StockToBuy=Da ordinare Replenishment=Rifornimento ReplenishmentOrders=Ordini di rifornimento -VirtualDiffersFromPhysical=According to increase/decrease stock options, physical stock and virtual stock (physical stock + open orders) may differ -UseRealStockByDefault=Use real stock, instead of virtual stock, for replenishment feature -ReplenishmentCalculation=Amount to order will be (desired quantity - real stock) instead of (desired quantity - virtual stock) +VirtualDiffersFromPhysical=In base alle opzioni di aumento/riduzione delle azioni, le azioni fisiche e le azioni virtuali (azioni fisiche + ordini aperti) possono differire +UseRealStockByDefault=Usa scorte reali, invece di scorte virtuali, per la funzione di rifornimento +ReplenishmentCalculation=L'importo dell'ordine sarà (quantità desiderata - stock reale) anziché (quantità desiderata - stock virtuale) UseVirtualStock=Usa scorte virtuale UsePhysicalStock=Usa scorte fisiche CurentSelectionMode=Modalità di selezione corrente @@ -146,7 +146,7 @@ Replenishments=Rifornimento NbOfProductBeforePeriod=Quantità del prodotto %s in magazzino prima del periodo selezionato (< %s) NbOfProductAfterPeriod=Quantità del prodotto %s in magazzino dopo il periodo selezionato (< %s) MassMovement=Movimentazione di massa -SelectProductInAndOutWareHouse=Select a source warehouse and a target warehouse, a product and a quantity then click "%s". Once this is done for all required movements, click on "%s". +SelectProductInAndOutWareHouse=Seleziona un magazzino di origine e un magazzino di destinazione, un prodotto e una quantità, quindi fai clic su "%s". Una volta fatto questo per tutti i movimenti richiesti, fare clic su "%s". RecordMovement=Record transfer ReceivingForSameOrder=Ricezioni per questo ordine StockMovementRecorded=Movimentazione di scorte registrata @@ -155,7 +155,7 @@ StockMustBeEnoughForInvoice=Stock level must be enough to add product/service to StockMustBeEnoughForOrder=Stock level must be enough to add product/service to order (check is done on current real stock when adding a line into order whatever the rule for automatic stock change) StockMustBeEnoughForShipment= Stock level must be enough to add product/service to shipment (check is done on current real stock when adding a line into shipment whatever the rule for automatic stock change) MovementLabel=Etichetta per lo spostamento di magazzino -TypeMovement=Direction of movement +TypeMovement=Direzione del movimento DateMovement=Date of movement InventoryCode=Codice di inventario o di spostamento IsInPackage=Contenuto nel pacchetto @@ -168,8 +168,8 @@ MovementTransferStock=Trasferisci scorte del prodotto %s in un altro magazzino InventoryCodeShort=Codice di inventario o di spostamento NoPendingReceptionOnSupplierOrder=No pending reception due to open purchase order ThisSerialAlreadyExistWithDifferentDate=Questo lotto/numero seriale (%s) esiste già con una differente data di scadenza o di validità (trovata %s, inserita %s ) -OpenAnyMovement=Open (all movement) -OpenInternal=Open (only internal movement) +OpenAnyMovement=Aperto (tutti i movimenti) +OpenInternal=Aperto (solo movimento interno) UseDispatchStatus=Utilizzare uno stato di spedizione (approvato / rifiutato) per le righe di prodotti alla ricezione dell'ordine di acquisto OptionMULTIPRICESIsOn=Option "several prices per segment" is on. It means a product has several selling price so value for sell can't be calculated ProductStockWarehouseCreated=Stock limit for alert and desired optimal stock correctly created @@ -207,8 +207,8 @@ INVENTORY_USE_INVENTORY_DATE_FOR_DATE_OF_MVT=I movimenti delle scorte avranno la inventoryChangePMPPermission=Allow to change PMP value for a product ColumnNewPMP=New unit PMP OnlyProdsInStock=Do not add product without stock -TheoricalQty=Theorical qty -TheoricalValue=Theorical qty +TheoricalQty=Quantità teorica +TheoricalValue=Quantità teorica LastPA=Last BP CurrentPA=Curent BP RecordedQty=Qtà registrata @@ -238,36 +238,36 @@ StockIsRequiredToChooseWhichLotToUse=Le scorte sono necessarie per scegliere qua ForceTo=Costringere AlwaysShowFullArbo=Visualizza l'albero completo del magazzino sul popup dei collegamenti del magazzino (avvertenza: questo potrebbe diminuire drasticamente le prestazioni) StockAtDatePastDesc=È possibile visualizzare qui lo stock (stock reale) in una determinata data nel passato -StockAtDateFutureDesc=You can view here the stock (virtual stock) at a given date in the future +StockAtDateFutureDesc=Puoi visualizzare qui lo stock (stock virtuale) in una determinata data futura CurrentStock=Scorta attuale -InventoryRealQtyHelp=Set value to 0 to reset qty
Keep field empty, or remove line, to keep unchanged -UpdateByScaning=Complete real qty by scaning -UpdateByScaningProductBarcode=Update by scan (product barcode) -UpdateByScaningLot=Update by scan (lot|serial barcode) -DisableStockChangeOfSubProduct=Deactivate the stock change for all the subproducts of this Kit during this movement. -ImportFromCSV=Import CSV list of movement +InventoryRealQtyHelp=Imposta il valore su 0 per reimpostare qty
Mantieni il campo vuoto o rimuovi la riga per mantenerlo invariato +UpdateByScaning=Completare la quantità reale tramite la scansione +UpdateByScaningProductBarcode=Aggiornamento tramite scansione (codice a barre del prodotto) +UpdateByScaningLot=Aggiornamento tramite scansione (lotto|codice a barre seriale) +DisableStockChangeOfSubProduct=Disattiva il cambio stock per tutti i sottoprodotti di questo Kit durante questo movimento. +ImportFromCSV=Importa l'elenco dei movimenti CSV ChooseFileToImport=Scegli il file da importare e poi clicca sull'icona %s -SelectAStockMovementFileToImport=select a stock movement file to import -InfoTemplateImport=Uploaded file needs to have this format (* are mandatory fields):
Source Warehouse* | Target Warehouse* | Product* | Quantity* | Lot/serial number
CSV character separator must be "%s" +SelectAStockMovementFileToImport=selezionare un file di movimento stock da importare +InfoTemplateImport=Il file caricato deve avere questo formato (* sono campi obbligatori):
Source Warehouse* | Magazzino di destinazione* | Prodotto* | Quantità* | Lotto/numero di serie
Il separatore di caratteri CSV deve essere " %s " LabelOfInventoryMovemement=Inventario %s ReOpen=Riapri ConfirmFinish=Confermi la chiusura dell'inventario? Questa azione genererà tutti i movimenti di magazzino per aggiornare le quantità reali dei prodotti inserite nell'inventario. -ObjectNotFound=%s not found -MakeMovementsAndClose=Generate movements and close -AutofillWithExpected=Replace real quantity with expected quantity -ShowAllBatchByDefault=By default, show batch details on product "stock" tab -CollapseBatchDetailHelp=You can set batch detail default display in stocks module configuration -ErrorWrongBarcodemode=Unknown Barcode mode -ProductDoesNotExist=Product does not exist -ErrorSameBatchNumber=Several record for the batch number were found in the inventory sheet. No way to know which one to increase. -ProductBatchDoesNotExist=Product with batch/serial does not exist -ProductBarcodeDoesNotExist=Product with barcode does not exist -WarehouseId=Warehouse ID -WarehouseRef=Warehouse Ref -SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ObjectNotFound=%s non trovato +MakeMovementsAndClose=Genera movimenti e chiudi +AutofillWithExpected=Sostituisci la quantità reale con la quantità prevista +ShowAllBatchByDefault=Per impostazione predefinita, mostra i dettagli del lotto nella scheda "stock" del prodotto +CollapseBatchDetailHelp=È possibile impostare la visualizzazione predefinita dei dettagli del lotto nella configurazione del modulo scorte +ErrorWrongBarcodemode=Modalità codice a barre sconosciuto +ProductDoesNotExist=Il prodotto non esiste +ErrorSameBatchNumber=Nel foglio di inventario sono stati trovati diversi record per il numero di lotto. Non c'è modo di sapere quale aumentare. +ProductBatchDoesNotExist=Prodotto con lotto/serie non esiste +ProductBarcodeDoesNotExist=Il prodotto con codice a barre non esiste +WarehouseId=ID magazzino +WarehouseRef=Rif. Magazzino +SaveQtyFirst=Salva prima le quantità reali inventariate, prima di chiedere la creazione del movimento stock. InventoryStartedShort=Iniziata -ErrorOnElementsInventory=Operation canceled for the following reason: -ErrorCantFindCodeInInventory=Can't find the following code in inventory -QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. -StockChangeDisabled=Change on stock disabled -NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ErrorOnElementsInventory=Operazione annullata per il seguente motivo: +ErrorCantFindCodeInInventory=Impossibile trovare il codice seguente nell'inventario +QtyWasAddedToTheScannedBarcode=Successo !! La quantità è stata aggiunta a tutto il codice a barre richiesto. È possibile chiudere lo strumento Scanner. +StockChangeDisabled=Cambio su stock disabilitato +NoWarehouseDefinedForTerminal=Nessun magazzino definito per il terminal diff --git a/htdocs/langs/it_IT/ticket.lang b/htdocs/langs/it_IT/ticket.lang index d71c6aefebc..c49e994ca10 100644 --- a/htdocs/langs/it_IT/ticket.lang +++ b/htdocs/langs/it_IT/ticket.lang @@ -34,8 +34,8 @@ TicketDictResolution=Ticket - Risoluzione TicketTypeShortCOM=Commercial question TicketTypeShortHELP=Richiesta di aiuto funzionale -TicketTypeShortISSUE=Issue or bug -TicketTypeShortPROBLEM=Problem +TicketTypeShortISSUE=Problema o bug +TicketTypeShortPROBLEM=Problema TicketTypeShortREQUEST=Richiesta di modifica o miglioramento TicketTypeShortPROJET=Progetto TicketTypeShortOTHER=Altro @@ -57,25 +57,25 @@ TypeContact_ticket_internal_SUPPORTTEC=Assegnato a TypeContact_ticket_external_SUPPORTCLI=Contatto cliente / tracciamento incidente TypeContact_ticket_external_CONTRIBUTOR=External contributor -OriginEmail=Reporter Email +OriginEmail=Email giornalista Notify_TICKET_SENTBYMAIL=Send ticket message by email # Status Read=Da leggere Assigned=Assegnato InProgress=Avviato -NeedMoreInformation=Waiting for reporter feedback -NeedMoreInformationShort=Waiting for feedback +NeedMoreInformation=In attesa del feedback dei giornalisti +NeedMoreInformationShort=in attesa di un riscontro Answered=Answered Waiting=In attesa -SolvedClosed=Solved +SolvedClosed=Risolto Deleted=Deleted # Dict Type=Tipo Severity=Gravità -TicketGroupIsPublic=Group is public -TicketGroupIsPublicDesc=If a ticket group is public, it will be visible in the form when creating a ticket from the public interface +TicketGroupIsPublic=Il gruppo è pubblico +TicketGroupIsPublicDesc=Se un gruppo di ticket è pubblico, sarà visibile nel modulo durante la creazione di un ticket dall'interfaccia pubblica # Email templates MailToSendTicketMessage=Per inviare e-mail dal messaggio ticket @@ -120,8 +120,8 @@ TicketsShowModuleLogo=Display the logo of the module in the public interface TicketsShowModuleLogoHelp=Enable this option to hide the logo module in the pages of the public interface TicketsShowCompanyLogo=Display the logo of the company in the public interface TicketsShowCompanyLogoHelp=Enable this option to hide the logo of the main company in the pages of the public interface -TicketsEmailAlsoSendToMainAddress=Also send a notification to the main email address -TicketsEmailAlsoSendToMainAddressHelp=Enable this option to also send an email to the address defined into setup "%s" (see tab "%s") +TicketsEmailAlsoSendToMainAddress=Invia anche una notifica all'indirizzo email principale +TicketsEmailAlsoSendToMainAddressHelp=Abilita questa opzione per inviare anche un'e-mail all'indirizzo definito nel setup "%s" (vedi scheda "%s") TicketsLimitViewAssignedOnly=Restrict the display to tickets assigned to the current user (not effective for external users, always be limited to the third party they depend on) TicketsLimitViewAssignedOnlyHelp=Only tickets assigned to the current user will be visible. Does not apply to a user with tickets management rights. TicketsActivatePublicInterface=Attivare l'interfaccia pubblica @@ -132,10 +132,10 @@ TicketNumberingModules=Tickets numbering module TicketsModelModule=Modelli di documenti per i ticket TicketNotifyTiersAtCreation=Notify third party at creation TicketsDisableCustomerEmail=Always disable emails when a ticket is created from public interface -TicketsPublicNotificationNewMessage=Send email(s) when a new message/comment is added to a ticket +TicketsPublicNotificationNewMessage=Invia e-mail quando un nuovo messaggio/commento viene aggiunto a un ticket TicketsPublicNotificationNewMessageHelp=Invia e-mail quando si aggiunge un nuovo messaggio dall'interfaccia pubblica (all'utente assegnato o all'e-mail di notifica a (aggiorna) e / o all'e-mail di notifica a) TicketPublicNotificationNewMessageDefaultEmail=Notifiche via email (aggiornamento) -TicketPublicNotificationNewMessageDefaultEmailHelp=Send an email to this address for each new message notifications if the ticket doesn't have a user assigned to it or if the user doesn't have any known email. +TicketPublicNotificationNewMessageDefaultEmailHelp=Invia un'e-mail a questo indirizzo per ogni nuovo messaggio di notifica se al ticket non è assegnato un utente o se l'utente non ha alcuna e-mail nota. # # Index & list page # @@ -164,7 +164,7 @@ CreatedBy=Creato da NewTicket=Nuovo Ticket SubjectAnswerToTicket=Ticket answer TicketTypeRequest=Request type -TicketCategory=Ticket categorization +TicketCategory=Classificazione dei biglietti SeeTicket=See ticket TicketMarkedAsRead=Ticket has been marked as read TicketReadOn=Read on @@ -188,11 +188,11 @@ TicketSeverity=Gravità ShowTicket=See ticket RelatedTickets=Ticket correlati TicketAddIntervention=Crea intervento -CloseTicket=Close|Solve ticket -AbandonTicket=Abandon ticket -CloseATicket=Close|Solve a ticket +CloseTicket=Chiudi|Risolvi ticket +AbandonTicket=Abbandonare il biglietto +CloseATicket=Chiudi|Risolvi un ticket ConfirmCloseAticket=Confirm ticket closing -ConfirmAbandonTicket=Do you confirm the closing of the ticket to status 'Abandonned' +ConfirmAbandonTicket=Confermi la chiusura del biglietto allo stato 'Abbandonato' ConfirmDeleteTicket=Please confirm ticket deleting TicketDeletedSuccess=Ticket deleted with success TicketMarkedAsClosed=Ticket marked as closed @@ -217,7 +217,7 @@ TicketMessageHelp=Only this text will be saved in the message list on ticket car TicketMessageSubstitutionReplacedByGenericValues=Substitutions variables are replaced by generic values. TimeElapsedSince=Time elapsed since TicketTimeToRead=Time elapsed before read -TicketTimeElapsedBeforeSince=Time elapsed before / since +TicketTimeElapsedBeforeSince=Tempo trascorso prima/da allora TicketContacts=Contacts ticket TicketDocumentsLinked=Documenti collegati al ticket ConfirmReOpenTicket=Confermi la riapertura di questo ticket? @@ -311,14 +311,14 @@ BoxLastModifiedTicket=Latest modified tickets BoxLastModifiedTicketDescription=Latest %s modified tickets BoxLastModifiedTicketContent= BoxLastModifiedTicketNoRecordedTickets=No recent modified tickets -BoxTicketType=Distribution of open tickets by type -BoxTicketSeverity=Number of open tickets by severity -BoxNoTicketSeverity=No tickets opened -BoxTicketLastXDays=Number of new tickets by days the last %s days -BoxTicketLastXDayswidget = Number of new tickets by days the last X days -BoxNoTicketLastXDays=No new tickets the last %s days -BoxNumberOfTicketByDay=Number of new tickets by day -BoxNewTicketVSClose=Number of tickets versus closed tickets (today) -TicketCreatedToday=Ticket created today -TicketClosedToday=Ticket closed today -KMFoundForTicketGroup=We found topics and FAQs that may answers your question, thanks to check them before submitting the ticket +BoxTicketType=Distribuzione biglietti aperti per tipologia +BoxTicketSeverity=Numero di ticket aperti per gravità +BoxNoTicketSeverity=Nessun biglietto aperto +BoxTicketLastXDays=Numero di nuovi biglietti per giorni negli ultimi %s giorni +BoxTicketLastXDayswidget = Numero di nuovi biglietti per giorni negli ultimi X giorni +BoxNoTicketLastXDays=Nessun nuovo biglietto negli ultimi %s giorni +BoxNumberOfTicketByDay=Numero di nuovi biglietti per giorno +BoxNewTicketVSClose=Numero di biglietti rispetto ai biglietti chiusi (oggi) +TicketCreatedToday=Biglietto creato oggi +TicketClosedToday=Biglietto chiuso oggi +KMFoundForTicketGroup=Abbiamo trovato argomenti e FAQ che potrebbero rispondere alla tua domanda, grazie a controllarli prima di inviare il ticket diff --git a/htdocs/langs/it_IT/withdrawals.lang b/htdocs/langs/it_IT/withdrawals.lang index e7205d026a7..9792251ccbe 100644 --- a/htdocs/langs/it_IT/withdrawals.lang +++ b/htdocs/langs/it_IT/withdrawals.lang @@ -48,7 +48,7 @@ ThirdPartyBankCode=Codice bancario del Soggetto terzo NoInvoiceCouldBeWithdrawed=No invoice debited successfully. Check that invoices are on companies with a valid IBAN and that IBAN has a UMR (Unique Mandate Reference) with mode %s. WithdrawalCantBeCreditedTwice=Questa ricevuta di prelievo è già contrassegnata come accreditata; questa operazione non può essere eseguita due volte, poiché ciò potrebbe creare pagamenti e movimenti bancari duplicati. ClassCredited=Classifica come accreditata -ClassDebited=Classify debited +ClassDebited=Classifica addebito ClassCreditedConfirm=Vuoi davvero classificare questa ricevuta di domiciliazione come accreditata sul vostro conto bancario? TransData=Data di trasmissione TransMetod=Metodo di trasmissione @@ -117,7 +117,7 @@ WithdrawRequestErrorNilAmount=Unable to create direct debit request for empty am SepaMandate=Mandato per addebito diretto SEPA SepaMandateShort=Mandato SEPA PleaseReturnMandate=Si prega di ritornare il mandato tramite email a %s o tramite mail a -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=Firmando questo modulo di mandato, autorizzi (A) %s a inviare istruzioni alla tua banca per addebitare il tuo conto e (B) la tua banca ad addebitare il tuo conto secondo le istruzioni di %s. Come parte dei tuoi diritti, hai diritto a un rimborso dalla tua banca secondo i termini e le condizioni del tuo accordo con la tua banca. I tuoi diritti in merito al mandato di cui sopra sono illustrati in una dichiarazione che puoi ottenere dalla tua banca. CreditorIdentifier=Id Creditore SEPA CreditorName=Creditor Name SEPAFillForm=(B) Completare tutti i campi contrassegnati da * @@ -152,5 +152,5 @@ ModeWarning=Non è stata impostata la modalità reale, ci fermiamo dopo questa s ErrorCompanyHasDuplicateDefaultBAN=L'azienda con ID %s ha più di un conto bancario predefinito. Non c'è modo di sapere quale usare. ErrorICSmissing=ICS mancante nel conto bancario %s TotalAmountOfdirectDebitOrderDiffersFromSumOfLines=L'importo totale dell'ordine di addebito diretto differisce dalla somma delle righe -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 +WarningSomeDirectDebitOrdersAlreadyExists=Avvertenza: sono già stati richiesti ordini di addebito diretto in sospeso (%s) per un importo di %s +WarningSomeCreditTransferAlreadyExists=Avvertenza: è già stato richiesto un trasferimento di credito in sospeso (%s) per un importo di %s diff --git a/htdocs/langs/ja_JP/admin.lang b/htdocs/langs/ja_JP/admin.lang index 0856a7b5df9..11803c0dc1a 100644 --- a/htdocs/langs/ja_JP/admin.lang +++ b/htdocs/langs/ja_JP/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=PDFでの太字の参照と期間 -BoldLabelOnPDF=PDFでの太字ラベル +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=財団 Version=バージョン Publisher=出版社 @@ -343,7 +343,7 @@ StepNb=ステップ%s FindPackageFromWebSite=必要な機能を提供するパッケージを見つける ( たとえば、公式Webサイト%sで ) 。 DownloadPackageFromWebSite=パッケージをダウンロードする ( たとえば、公式Webサイト%sから ) 。 UnpackPackageInDolibarrRoot=パッケージ化されたファイルをDolibarrサーバーディレクトリに解凍/解凍する: %s -UnpackPackageInModulesRoot=外部モジュールを展開/インストールするには、パッケージ化されたファイルを外部モジュール専用のサーバーディレクトリに解凍/解凍する。
%s +UnpackPackageInModulesRoot=外部モジュールを展開/インストールするには、アーカイブファイルを外部モジュール専用のサーバーディレクトリに unpack/unzip する必要がある:
%s SetupIsReadyForUse=モジュールの展開が完了した。ただし、ページ設定モジュール %s に移動し、アプリケーション内でモジュールを有効にして設定する必要がある。 NotExistsDirect=代替ルートディレクトリは、既存のディレクトリに対して定義されていない。
InfDirAlt=バージョン3以降、代替ルートディレクトリを定義することが可能。これにより、プラグインとカスタムテンプレートを専用のディレクトリに保存できる。
Dolibarrのルートにディレクトリを作成するだけ ( 例:カスタム ) 。
@@ -488,7 +488,7 @@ NoDetails=フッターに追加の詳細はない DisplayCompanyInfo=法人の住所を表示する DisplayCompanyManagers=ディスプレイマネージャー名 DisplayCompanyInfoAndManagers=法人の住所とマネージャーの名前を表示する -EnableAndSetupModuleCron=この定期的な請求書を自動的に生成する場合は、モジュール* %s *を有効にして、正しく設定する必要がある。それ以外の場合、請求書の生成は、【作成】ボタンを使用してこのテンプレートから手動で行う必要がある。自動生成を有効にしても、手動生成を安全に起動できることに注意すること。同じ期間の重複を生成することはできない。 +EnableAndSetupModuleCron=この定期的な請求書を自動的に生成する場合は、モジュール * %s * を有効にして、正しく設定する必要がある。それ以外の場合、請求書の生成は、【作成】ボタンを使用してこのテンプレートから手動で行う必要がある。自動生成を有効にしても、手動生成を安全に起動できることに注意すること。同じ期間の重複を生成することはできない。 ModuleCompanyCodeCustomerAquarium=%sの後に、顧客会計コードの顧客コードが続く ModuleCompanyCodeSupplierAquarium=%sの後に、仕入先会計コードの仕入先コードが続く ModuleCompanyCodePanicum=空の会計コードを返する。 @@ -893,11 +893,11 @@ Permission701=寄付を読込む Permission702=寄付を作成/変更 Permission703=寄付を削除する。 Permission771=経費報告書sを読込む ( あなたとあなたの部下 ) -Permission772=Create/modify expense reports (for you and your subordinates) +Permission772=経費報告書の作成/変更(自分および部下のため) Permission773=経費報告書sを削除する Permission775=経費報告書sを承認する Permission776=経費報告書sの支払い -Permission777=Read all expense reports (even those of user not subordinates) +Permission777=すべての経費報告書を読込む(部下ではないユーザの報告書も含む) Permission778=全員の経費報告書sを作成/変更する Permission779=経費報告書sをエクスポート Permission1001=在庫を読込む @@ -964,8 +964,8 @@ Permission3301=新規モジュールを生成する Permission4001=技能/職種/役職を読込む Permission4002=技能/職種/役職の作成/変更 Permission4003=技能/職種/役職を削除する -Permission4020=Read evaluations -Permission4021=Create/modify your evaluation +Permission4020=評価を読込む +Permission4021=評価を作成/変更する Permission4022=評価を検証する Permission4023=評価を削除する Permission4030=比較メニューを見る @@ -976,9 +976,9 @@ Permission10005=ウェブサイトのコンテンツを削除する Permission20001=休暇申請書 ( あなたの休暇と部下の休暇 ) を読込む Permission20002=休暇申請 ( 休暇と部下の休暇 ) を作成/変更する Permission20003=休暇申請を削除する -Permission20004=Read all leave requests (even those of user not subordinates) -Permission20005=Create/modify leave requests for everybody (even those of user not subordinates) -Permission20006=Administer leave requests (setup and update balance) +Permission20004=すべての休暇申請を読込む(部下ではないユーザの申請も含む) +Permission20005=すべての人(部下ではないユーザの場合でも)の休暇申請を作成/変更する +Permission20006=休暇申請の管理(残高の設定と更新) Permission20007=休暇申請を承認する Permission23001=スケジュールされたジョブを読込む Permission23002=スケジュールされたジョブの作成/更新 @@ -1464,7 +1464,7 @@ MembersSetup=メンバーモジュールの設定 MemberMainOptions=主なオプション AdherentLoginRequired= 各メンバーのログインを管理する AdherentMailRequired=新規メンバーを作成するにはメールが必要 -MemberSendInformationByMailByDefault=メンバー ( 検証や新規サブスクリプション ) にメールの確認を送信するチェックボックスはデフォルトでオンになっている +MemberSendInformationByMailByDefault=メンバー ( 検証や新規サブスクリプション ) にメールの確定を送信するチェックボックスはデフォルトでオンになっている MemberCreateAnExternalUserForSubscriptionValidated=検証された新規メンバーサブスクリプションごとに外部ユーザーログインを作成する VisitorCanChooseItsPaymentMode=訪問者は利用可能な支払いモードから選択できる MEMBER_REMINDER_EMAIL=期限切れのサブスクリプションの電子メール
によって自動リマインダーを有効にする。注:モジュール %s を有効にして、リマインダーを送信するように正しく設定する必要がある。 @@ -1707,9 +1707,9 @@ MailingDelay=次のメッセージを送信してから待機する秒数 NotificationSetup=電子メール通知モジュールの設定 NotificationEMailFrom=通知モジュールによって送信された電子メールの送信者電子メール ( 差出人 ) FixedEmailTarget=受信者 -NotificationDisableConfirmMessageContact=通知受信者(連絡先としてサブスクライブ)のリストを確認メッセージに非表示にする -NotificationDisableConfirmMessageUser=通知受信者(ユーザーとしてサブスクライブ)のリストを確認メッセージに非表示にする -NotificationDisableConfirmMessageFix=通知受信者(グローバル電子メールとしてサブスクライブ)のリストを確認メッセージに非表示にする +NotificationDisableConfirmMessageContact=通知受信者(連絡先としてサブスクライブ)のリストを確定メッセージに非表示にする +NotificationDisableConfirmMessageUser=通知受信者(ユーザーとしてサブスクライブ)のリストを確定メッセージに非表示にする +NotificationDisableConfirmMessageFix=通知受信者(グローバル電子メールとしてサブスクライブ)のリストを確定メッセージに非表示にする ##### Sendings ##### SendingsSetup=出荷モジュールの設定 SendingsReceiptModel=領収書のモデルを送信する @@ -1735,7 +1735,7 @@ FCKeditorForUserSignature=WYSIWIGによるユーザ署名の作成/編集 FCKeditorForMail=すべてのメールのWYSIWIG作成/エディション ( 【ツール】-> 【電子メール】を除く ) FCKeditorForTicket=チケットのWYSIWIG作成/エディション ##### Stock ##### -StockSetup=在庫モジュールの設定 +StockSetup=在庫モジュール設定 IfYouUsePointOfSaleCheckModule=デフォルトで提供されている販売時点モジュール(POS)または外部モジュールを使用する場合、この設定はPOSモジュールによって無視される可能性がある。ほとんどのPOSモジュールは、デフォルトで、ここでのオプションに関係なく、請求書をすぐに作成し、在庫を減らすように設計されている。したがって、POSから販売を登録するときに在庫を減らす必要があるかどうかにかかわらず、POSモジュールの設定も確認すること。 ##### Menu ##### MenuDeleted=メニューを削除 @@ -1792,7 +1792,7 @@ AgendaSetup=イベントと議題モジュールの設定 PasswordTogetVCalExport=エクスポートのリンクを許可するキー SecurityKey = セキュリティキー PastDelayVCalExport=より古いイベントはエクスポートしない -AGENDA_USE_EVENT_TYPE=イベント種別を使用する ( メニューの【設定】-> 【辞書】-> 【アジェンダイベントの種別】で管理 ) +AGENDA_USE_EVENT_TYPE=イベント種別を使用する ( メニューの【設定】-> 【辞書】-> 【アジェンダイベントの種別】で管理 ) AGENDA_USE_EVENT_TYPE_DEFAULT=イベント作成フォームでイベントの種別にこのデフォルト値を自動的に設定する AGENDA_DEFAULT_FILTER_TYPE=アジェンダビューの検索フィルタでこの種別のイベントを自動的に設定する AGENDA_DEFAULT_FILTER_STATUS=アジェンダビューの検索フィルタでイベントのこのステータスを自動的に設定する @@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=アプリケーションから外部モジュールを HighlightLinesOnMouseHover=マウスの動きが通過したときにテーブルの行を強調表示する HighlightLinesColor=マウスが通過したときの線のハイライト色 ( ハイライトなしの場合は「ffffff」を使用 ) HighlightLinesChecked=チェックされたときの線のハイライト色 ( ハイライトなしの場合は「ffffff」を使用 ) +BtnActionColor=アクションボタンの色 +TextBtnActionColor=アクションボタンのテキストの色 TextTitleColor=ページタイトルのテキストの色 LinkColor=リンクの色 PressF5AfterChangingThis=キーボードのCTRL + F5を押すか、この値を変更して有効にするためにブラウザのキャッシュをクリアする @@ -2008,7 +2010,7 @@ SamePriceAlsoForSharedCompanies=複数の法人のモジュールを使用し、 ModuleEnabledAdminMustCheckRights=モジュールがアクティブ化されました。アクティブ化されたモジュールのアクセス許可は、管理者ユーザにのみ付与されました。必要に応じて、他のユーザまたはグループに手動でアクセス許可を付与する必要がある場合がある。 UserHasNoPermissions=このユーザには権限が定義されていない TypeCdr=支払い期間の日付が請求書の日付に日数のデルタを加えたものである場合は「なし」を使用する ( デルタはフィールド「%s」 )
デルタの後、日付を増やして終了する必要がある場合は、「月末」を使用する月の ( +オプションの「%s」 ( 日数 ) )
「現在/次」を使用して、支払い期間の日付をデルタの後の月の最初のN番目にする ( デルタはフィールド「%s」、Nはフィールド「%s」に格納される ) -BaseCurrency=法人の参照通貨 ( これを変更するには、法人の設定に入る ) +BaseCurrency=法人の参照通貨 ( これを変更するには、法人の設定に入る ) WarningNoteModuleInvoiceForFrenchLaw=このモジュール%sは、フランスの法律 ( Loi Finance 2016 ) に準拠している。 WarningNoteModulePOSForFrenchLaw=このモジュール%sは、モジュールNon Reversible Logsが自動的にアクティブ化されるため、フランスの法律 ( Loi Finance 2016 ) に準拠している。 WarningInstallationMayBecomeNotCompliantWithLaw=外部モジュールであるモジュール%sをインストールしようとしている。外部モジュールをアクティブ化すると、そのモジュールの発行元を信頼し、このモジュールがアプリケーションの動作に悪影響を与えず、国の法律 ( %s ) に準拠していることを確認できる。モジュールが違法な機能を導入した場合、違法なソフトウェアの使用について責任を負うことになる。 @@ -2059,7 +2061,7 @@ ConfirmCloneEmailCollector=メールコレクター%sのクローンを作成し DateLastCollectResult=最新の取得試行の日付 DateLastcollectResultOk=最新の取得成功の日付 LastResult=最新の結果 -EmailCollectorConfirmCollectTitle=メール収集確認 +EmailCollectorConfirmCollectTitle=メール収集確定 EmailCollectorConfirmCollect=このコレクターのコレクションを今すぐ実行するか? NoNewEmailToProcess=処理する新規電子メール ( 一致するフィルタ ) はない NothingProcessed=何もしていない @@ -2088,7 +2090,7 @@ UseSearchToSelectResource= ( ドロップダウンリストではなく ) 検索 DisabledResourceLinkUser=リソースをユーザにリンクする機能を無効にする DisabledResourceLinkContact=リソースを連絡先にリンクする機能を無効にする EnableResourceUsedInEventCheck=リソースがイベントで使用されているかどうかを確認する機能を有効にする -ConfirmUnactivation=モジュールのリセットを確認する +ConfirmUnactivation=モジュールのリセットを確定する OnMobileOnly=小画面 ( スマートフォン ) のみ DisableProspectCustomerType=「見込み客+顧客」の取引先種別を無効にする ( したがって、取引先は「見込み客」または「顧客」である必要があるが、両方にすることはできない ) MAIN_OPTIMIZEFORTEXTBROWSER=目の不自由な人のためのインターフェースを簡素化する @@ -2216,3 +2218,5 @@ NativeModules=ネイティブモジュール NoDeployedModulesFoundWithThisSearchCriteria=これらの検索条件に対応するモジュールが見つからない API_DISABLE_COMPRESSION=API応答の圧縮を無効にする EachTerminalHasItsOwnCounter=各端末は独自のカウンターを使用する。 +FillAndSaveAccountIdAndSecret=最初にアカウントIDとシークレットを入力して保存する +PreviousHash=以前のハッシュ diff --git a/htdocs/langs/ja_JP/banks.lang b/htdocs/langs/ja_JP/banks.lang index 55716c3dd32..3dc4be416d9 100644 --- a/htdocs/langs/ja_JP/banks.lang +++ b/htdocs/langs/ja_JP/banks.lang @@ -167,7 +167,7 @@ ShowVariousPayment=雑費を表示 AddVariousPayment=その他の支払を追加 VariousPaymentId=その他の支払ID VariousPaymentLabel=その他の支払ラベル -ConfirmCloneVariousPayment=雑費のクローンを確認 +ConfirmCloneVariousPayment=雑費のクローンを確定 SEPAMandate=SEPA指令 YourSEPAMandate=あなたのSEPA指令 FindYourSEPAMandate=これは、当法人が銀行に口座振替を注文することを承認するSEPA指令。署名済(署名済ドキュメントをスキャン)で返送するか、メールで送付すること diff --git a/htdocs/langs/ja_JP/bills.lang b/htdocs/langs/ja_JP/bills.lang index 02baec060d7..8df18ce010d 100644 --- a/htdocs/langs/ja_JP/bills.lang +++ b/htdocs/langs/ja_JP/bills.lang @@ -81,20 +81,21 @@ PaymentsReports=決済報告書s PaymentsAlreadyDone=支払は実行済 PaymentsBackAlreadyDone=払戻は実行済 PaymentRule=支払ルール -PaymentMode=支払種別 -DefaultPaymentMode=デフォルト支払種別 +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=デフォルト銀行口座 -IdPaymentMode=支払種別(id) -CodePaymentMode=支払種別(コード) -LabelPaymentMode=支払種別(ラベル) -PaymentModeShort=支払種別 +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=支払条件 PaymentConditions=支払条件 PaymentConditionsShort=支払条件 PaymentAmount=支払金額 PaymentHigherThanReminderToPay=督促状よりも高い支払 -HelpPaymentHigherThanReminderToPay=注意、1つ以上の請求書の支払額は、未払金額よりも高くなっている。
エントリを編集。それ以外の場合は、過払いの請求書ごとに受け取った超過分の貸方表を作成することを確認して検討。 -HelpPaymentHigherThanReminderToPaySupplier=注意、1つ以上の請求書の支払額は、未払金額よりも高くなっている。
エントリを編集。それ以外の場合は、過払いの請求書ごとに支払われた超過分の貸方表を作成することを確認して検討。 +HelpPaymentHigherThanReminderToPay=注意、1つ以上の請求書の支払額は、未払金額よりも高くなっている。
エントリを編集。それ以外の場合は、過払いの請求書ごとに受け取った超過分の貸方表を作成することを確定して検討。 +HelpPaymentHigherThanReminderToPaySupplier=注意、1つ以上の請求書の支払額は、未払金額よりも高くなっている。
エントリを編集。それ以外の場合は、過払いの請求書ごとに支払われた超過分の貸方表を作成することを確定して検討。 ClassifyPaid=分類 '支払済' ClassifyUnPaid=分類 '未払' ClassifyPaidPartially=分類 '一部支払済' @@ -202,8 +203,8 @@ ConfirmClassifyPaidPartiallyReasonBankChargeDesc=未払いの金額は中間 ConfirmClassifyPaidPartiallyReasonOtherDesc=他のすべてが適切でない場合、たとえば次の状況でこの選択を使用。
-一部の製品が返送されたため支払が未完了
-割引を忘れたため請求額が多すぎる
いずれにせよ、貸方表を作成することにより、会計システムで過払い金を修正。 ConfirmClassifyAbandonReasonOther=その他 ConfirmClassifyAbandonReasonOtherDesc=この選択は、他のすべての例で使用される。交換する請求書を作成することを計画するなどの理由で。 -ConfirmCustomerPayment= %s %sのこの支払入力を確認するか? -ConfirmSupplierPayment= %s %sのこの支払入力を確認するか? +ConfirmCustomerPayment= %s %sのこの支払入力を確定するか? +ConfirmSupplierPayment= %s %sのこの支払入力を確定するか? ConfirmValidatePayment=この支払を確認してもよいか?支払が確認されると、変更を加えることはできない。 ValidateBill=請求書を検証する UnvalidateBill=請求書を未検証に戻す @@ -375,7 +376,7 @@ CurrentSituationTotal=総現状 DisabledBecauseNotEnouthCreditNote=シチュエーション請求書をサイクルから削除するには、この請求書の貸方表の合計がこの請求書の合計をカバーしている必要がある RemoveSituationFromCycle=この請求書をサイクルから削除する ConfirmRemoveSituationFromCycle=この請求書%sをサイクルから削除するか? -ConfirmOuting=外出を確認する +ConfirmOuting=外出を確定する FrequencyPer_d=%s日ごと FrequencyPer_m=%sか月ごと FrequencyPer_y=%s年ごと diff --git a/htdocs/langs/ja_JP/blockedlog.lang b/htdocs/langs/ja_JP/blockedlog.lang index 21959d6a771..afdb0876c7a 100644 --- a/htdocs/langs/ja_JP/blockedlog.lang +++ b/htdocs/langs/ja_JP/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=このモジュールの使用が必須で OnlyNonValid=無効 TooManyRecordToScanRestrictFilters=スキャン/分析するにはレコードが多すぎ。より制限の厳しいフィルタでリストを制限すること。 RestrictYearToExport=エクスポートする月/年を制限する +BlockedLogEnabled=イベントを追跡して変更不可ログに追加するシステムが有効化された +BlockedLogDisabled=一部の記録が行われた後、イベントを変更不可能なログに追跡するシステムが無効になった。チェーンが壊れていることを追跡するために特別な指紋を保存した +BlockedLogDisabledBis=イベントを追跡して変更不可ログに追加するシステムが無効化された。おそらく、まだ記録が行われていないため。 diff --git a/htdocs/langs/ja_JP/cashdesk.lang b/htdocs/langs/ja_JP/cashdesk.lang index 0d3a9f4dd31..7e9b4ce86fc 100644 --- a/htdocs/langs/ja_JP/cashdesk.lang +++ b/htdocs/langs/ja_JP/cashdesk.lang @@ -66,7 +66,7 @@ TicketVatGrouped=チケットのレートでVATをグループ化|領収書 AutoPrintTickets=チケットを自動的に印刷|領収書 PrintCustomerOnReceipts=チケットに顧客を印刷する|領収書 EnableBarOrRestaurantFeatures=バーまたはレストランの機能を有効にする -ConfirmDeletionOfThisPOSSale=この現在の販売の削除を確認するか? +ConfirmDeletionOfThisPOSSale=この現在の販売の削除を確定するか? ConfirmDiscardOfThisPOSSale=この現在の販売を破棄するか? History=履歴 ValidateAndClose=検証して閉じる diff --git a/htdocs/langs/ja_JP/companies.lang b/htdocs/langs/ja_JP/companies.lang index 18adc3d380e..83257937a61 100644 --- a/htdocs/langs/ja_JP/companies.lang +++ b/htdocs/langs/ja_JP/companies.lang @@ -157,15 +157,15 @@ ProfId3CL=- ProfId4CL=- ProfId5CL=- ProfId6CL=- -ProfId1CM=Id. prof. 1 (Trade Register) -ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1CM=Id。プロフ 1(貿易登録) +ProfId2CM=Id。プロフ 2(納税者番号) +ProfId3CM=Id。プロフ 3(作成指令) ProfId4CM=- ProfId5CM=- ProfId6CM=- -ProfId1ShortCM=Trade Register -ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation +ProfId1ShortCM=貿易登録 +ProfId2ShortCM=納税者番号 +ProfId3ShortCM=作成指令 ProfId4ShortCM=- ProfId5ShortCM=- ProfId6ShortCM=- diff --git a/htdocs/langs/ja_JP/compta.lang b/htdocs/langs/ja_JP/compta.lang index 8dc912d5ebc..25691b11d55 100644 --- a/htdocs/langs/ja_JP/compta.lang +++ b/htdocs/langs/ja_JP/compta.lang @@ -249,9 +249,9 @@ ACCOUNTING_ACCOUNT_CUSTOMER=顧客の第三者に使用される会計アカウ ACCOUNTING_ACCOUNT_CUSTOMER_Desc=取引先カードで定義された専用の会計アカウントは、補助元帳の会計にのみ使用される。これは総勘定元帳に使用され、取引先の専用顧客会計勘定が定義されていない場合は補助元帳会計のデフォルト値として使用される。 ACCOUNTING_ACCOUNT_SUPPLIER=ベンダーの取引先に使用される会計アカウント ACCOUNTING_ACCOUNT_SUPPLIER_Desc=取引先カードで定義された専用の会計アカウントは、補助元帳の会計にのみ使用される。これは総勘定元帳に使用され、取引先の専用仕入先会計勘定が定義されていない場合は補助元帳会計のデフォルト値として使用される。 -ConfirmCloneTax=社会税/財政税のクローンを確認する -ConfirmCloneVAT=VAT宣言のクローンを確認する -ConfirmCloneSalary=給与のクローンを確認する +ConfirmCloneTax=社会税/財政税のクローンを確定する +ConfirmCloneVAT=VAT宣言のクローンを確定する +ConfirmCloneSalary=給与のクローンを確定する CloneTaxForNextMonth=来月のためにそれをクローンする SimpleReport=簡単な報告書 AddExtraReport=追加報告書s(海外および国内の顧客報告書sを追加) diff --git a/htdocs/langs/ja_JP/contracts.lang b/htdocs/langs/ja_JP/contracts.lang index f0e5c280047..6d69bd57da5 100644 --- a/htdocs/langs/ja_JP/contracts.lang +++ b/htdocs/langs/ja_JP/contracts.lang @@ -77,7 +77,7 @@ CloseAllContracts=すべて契約行を閉じる DeleteContractLine=契約の行を削除する ConfirmDeleteContractLine=こ契約行を削除してもよいか? MoveToAnotherContract=別契約にサービスを移動する。 -ConfirmMoveToAnotherContract=私は、新規ターゲット契約を選びましたし、私はこ契約には、このサービスを移動することを確認する。 +ConfirmMoveToAnotherContract=私は、新規ターゲット契約を選びましたし、私はこ契約には、このサービスを移動することを確定する。 ConfirmMoveToAnotherContractQuestion=このサービスを移動する(同じ取引先の)既存契約を選択するか? PaymentRenewContractId=契約行(番号%s)を​​更新 ExpiredSince=有効期限の日付 diff --git a/htdocs/langs/ja_JP/ecm.lang b/htdocs/langs/ja_JP/ecm.lang index c1b706cdcac..4452d1ba6f1 100644 --- a/htdocs/langs/ja_JP/ecm.lang +++ b/htdocs/langs/ja_JP/ecm.lang @@ -27,7 +27,7 @@ ECMDocsBy=%sにリンクされているドキュメント ECMNoDirectoryYet=作成されたディレクトリなし ShowECMSection=ディレクトリを表示する DeleteSection=ディレクトリを削除 -ConfirmDeleteSection=ディレクトリ%s を削除することを確認できるか? +ConfirmDeleteSection=ディレクトリ%s を削除することを確定できるか? ECMDirectoryForFiles=ファイルの相対ディレクトリ CannotRemoveDirectoryContainsFilesOrDirs=一部のファイルまたはサブディレクトリが含まれているため、削除できない CannotRemoveDirectoryContainsFiles=一部のファイルが含まれているため、削除できない @@ -42,8 +42,8 @@ ExtraFieldsEcmFiles=ExtrafieldsEcmファイル ExtraFieldsEcmDirectories=ExtrafieldsEcmディレクトリ ECMSetup=ECM設定 GenerateImgWebp=すべての画像を.webp形式の別のバージョンで複製する -ConfirmGenerateImgWebp=確認すると、現在このフォルダーにあるすべての画像に対して.webp形式の画像が生成される(サブフォルダーは含まれない)... -ConfirmImgWebpCreation=すべての画像の重複を確認する +ConfirmGenerateImgWebp=確定すると、現在このフォルダーにあるすべての画像に対して.webp形式の画像が生成される(サブフォルダーは含まれない)... +ConfirmImgWebpCreation=すべての画像の重複を確定する SucessConvertImgWebp=画像が正常に複製された ECMDirName=ディレクトリ名 ECMParentDirectory=親ディレクトリ diff --git a/htdocs/langs/ja_JP/errors.lang b/htdocs/langs/ja_JP/errors.lang index 13a207c0d0a..221d7673ead 100644 --- a/htdocs/langs/ja_JP/errors.lang +++ b/htdocs/langs/ja_JP/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=この連絡先は既にこのタイ ErrorCashAccountAcceptsOnlyCashMoney=この銀行口座は現金勘定であるため、それが唯一のタイプの現金の支払を受け入れる。 ErrorFromToAccountsMustDiffers=ソースとターゲットの銀行口座は異なっている必要がある。 ErrorBadThirdPartyName=取引先名の値が正しくない +ForbiddenBySetupRules=設定ルールにより禁止 ErrorProdIdIsMandatory=%sは必須だ +ErrorAccountancyCodeCustomerIsMandatory=顧客%sの会計コードは必須 ErrorBadCustomerCodeSyntax=顧客コードの不正な構文 ErrorBadBarCodeSyntax=バーコードの構文が正しくない。不正なバーコードタイプを設定したか、スキャンした値と一致しない番号付け用のバーコードマスクを定義した可能性がある。 ErrorCustomerCodeRequired=顧客コードが必要だ @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=支払条件辞書にないので、変更 ErrorIsNotADraft=%sはドラフトではない ErrorExecIdFailed=コマンド「id」を実行できない ErrorBadCharIntoLoginName=ログイン名に含まれる不正な文字 +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=PHPパラメータ upload_max_filesize(%s)は、PHPパラメータ post_max_size(%s)よりも大きくなっている。これは一貫した設定ではない。 @@ -315,6 +318,7 @@ RequireAtLeastXString = 少なくとも%s文字(s)が必要 RequireXStringMax = 最大%s文字(s)が必要 RequireAtLeastXDigits = 少なくとも%s桁(s)が必要 RequireXDigitsMax = 最大%s桁(s)が必要 +RequireValidNumeric = 数値が必要 RequireValidEmail = メールアドレスが無効. RequireMaxLength = 長さは%s文字未満である必要がある RequireMinLength = 長さは%s文字(s)より長くする必要がある diff --git a/htdocs/langs/ja_JP/eventorganization.lang b/htdocs/langs/ja_JP/eventorganization.lang index 867cbe52756..8d39e33b2b4 100644 --- a/htdocs/langs/ja_JP/eventorganization.lang +++ b/htdocs/langs/ja_JP/eventorganization.lang @@ -44,10 +44,10 @@ EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = 会議の提案を受け取った後 EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = ブースの提案を受けて送信するメールのテンプレート。 EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = ブースへの登録が支払われた後に送信する電子メールのテンプレート。 EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = イベントへの登録が支払われた後に送信する電子メールのテンプレート。 -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = 出席する大虐殺の電子メールのテンプレート -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = 話者への虐待の電子メールのテンプレート -EVENTORGANIZATION_FILTERATTENDEES_CAT = 参加者作成カード/フォームで取引先の選択リストをカテゴリでフィルタリングする -EVENTORGANIZATION_FILTERATTENDEES_TYPE = 顧客タイプを使用して、参加者作成カード/フォームで取引先の選択リストをフィルタリングする +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Massaction「Sendemails」からスピーカーにメールを送信するときに使用するメールのテンプレート +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = 参加者リストの大衆活動「メール送信」からメールを送信するときに使用するメールのテンプレート +EVENTORGANIZATION_FILTERATTENDEES_CAT = 出席者を作成/追加するフォームで、サードパーティのリストをカテゴリ内のサードパーティに制限する +EVENTORGANIZATION_FILTERATTENDEES_TYPE = 出席者を作成/追加するフォームで、サードパーティのリストを性質のあるサードパーティに制限する # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = ブースのお支払い EventOrganizationEmailRegistrationPayment = イベントへの登録 EventOrganizationMassEmailAttendees = 参加者へのコミュニケーション EventOrganizationMassEmailSpeakers = 話者とのコミュニケーション +ToSpeakers=スピーカーへ # # Event @@ -83,21 +84,21 @@ PriceOfRegistration=登録価格 PriceOfRegistrationHelp=イベントの登録または参加に支払う価格 PriceOfBooth=ブース立ちのサブスクリプション価格 PriceOfBoothHelp=ブース出展用サブスクリプション価格 -EventOrganizationICSLink=イベントのICSをリンクする +EventOrganizationICSLink=会議用のリンクICS ConferenceOrBoothInformation=会議またはブース情報 Attendees=参加者 ListOfAttendeesOfEvent=イベントプロジェクトの参加者リスト DownloadICSLink = ICS リンクをダウンロード -EVENTORGANIZATION_SECUREKEY = 会議への公開登録リンクのセキュアキー +EVENTORGANIZATION_SECUREKEY = 会議を提案するための公開登録ページのキーを確保するためのシード SERVICE_BOOTH_LOCATION = ブースの場所に関する請求書の行に使用されるサービス -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = 会議への参加者のサブスクリプションに関する請求書の行に使用されるサービス +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = イベントへの参加者のサブスクリプションに関する請求書の行に使用されるサービス NbVotes=投票数 # # Status # EvntOrgDraft = 下書き EvntOrgSuggested = 提案済 -EvntOrgConfirmed = 確認済み +EvntOrgConfirmed = 確定済み EvntOrgNotQualified = 資格なし EvntOrgDone = 済 EvntOrgCancelled = キャンセル @@ -125,7 +126,7 @@ BoothLocationFee = イベントのブース位置: '%s' で %s から %s まで EventType = イベント種別 LabelOfBooth=ブースラベル LabelOfconference=会議ラベル -ConferenceIsNotConfirmed=登録できません。会議はまだ確認されていない +ConferenceIsNotConfirmed=登録できません。会議はまだ確定されていない DateMustBeBeforeThan=%sは必ず%sの前 DateMustBeAfterThan=%sは必ず%sの後 @@ -153,7 +154,7 @@ AlreadyVoted = あなたはすでにこのイベントに投票している。 VoteError = 投票中にエラーが発生した。もう一度やり直し願う。 SubscriptionOk = 登録が検証された -ConfAttendeeSubscriptionConfirmation = イベントへのサブスクリプションの確認 +ConfAttendeeSubscriptionConfirmation = イベントへのサブスクリプションの確定 Attendee = 参加者 PaymentConferenceAttendee = 会議参加者の支払い PaymentBoothLocation = ブースの場所の支払い diff --git a/htdocs/langs/ja_JP/holiday.lang b/htdocs/langs/ja_JP/holiday.lang index 6b9f0513907..ffdb542f460 100644 --- a/htdocs/langs/ja_JP/holiday.lang +++ b/htdocs/langs/ja_JP/holiday.lang @@ -52,7 +52,7 @@ ActionRefuseCP=却下 ActionCancelCP=キャンセル StatutCP=ステータス TitleDeleteCP=休暇申請を削除する -ConfirmDeleteCP=この休暇申請の削除を確認するか? +ConfirmDeleteCP=この休暇申請の削除を確定するか? ErrorCantDeleteCP=エラー この休暇申請を削除する権利がない。 CantCreateCP=休暇申請をする権利がない。 InvalidValidatorCP=休暇申請の承認者を選択する必要がある。 @@ -134,4 +134,6 @@ HolidaysToApprove=承認する休日 NobodyHasPermissionToValidateHolidays=休日の検証権限を持つ者がいない HolidayBalanceMonthlyUpdate=休日残の月次更新 XIsAUsualNonWorkingDay=%sは、通常、非稼働日。 +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=リクエスト%sは下書きのままとし、取消済や拒否済のものは削除すること diff --git a/htdocs/langs/ja_JP/install.lang b/htdocs/langs/ja_JP/install.lang index 248c0d1fe6e..06174cca6a6 100644 --- a/htdocs/langs/ja_JP/install.lang +++ b/htdocs/langs/ja_JP/install.lang @@ -55,7 +55,7 @@ DatabaseName=データベース名 DatabasePrefix=データベースのテーブル接頭辞 DatabasePrefixDescription=データベースのテーブル接頭辞。空欄にするとデフォルトの「llx_」が設定される。 AdminLogin=Dolibarrデータベース所有者のユーザアカウント。 -PasswordAgain=パスワード確認の再入力 +PasswordAgain=パスワード確定の再入力 AdminPassword=Dolibarrデータベースの所有者のパスワード。 CreateDatabase=データベースを作成する。 CreateUser=Dolibarrデータベースでユーザアカウントを作成するか、ユーザアカウントのアクセス許可を付与する diff --git a/htdocs/langs/ja_JP/knowledgemanagement.lang b/htdocs/langs/ja_JP/knowledgemanagement.lang index a10e53cb59d..34bcc6ef39d 100644 --- a/htdocs/langs/ja_JP/knowledgemanagement.lang +++ b/htdocs/langs/ja_JP/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = 記事のエクストラフィールド GroupOfTicket=チケットのグループ YouCanLinkArticleToATicketCategory=記事をチケットグループにリンクできる(新規チケット認定時に記事が提案されるようになる) SuggestedForTicketsInGroup=チケットに対して提案されるのは、グループが + +SetObsolete=廃止として設定 +ConfirmCloseKM=この記事の締めくくりが廃止されたことを確定するか? +ConfirmReopenKM=この記事をステータス「検証済み」に復元するか? diff --git a/htdocs/langs/ja_JP/loan.lang b/htdocs/langs/ja_JP/loan.lang index 7b09bf4ef54..fa97491403b 100644 --- a/htdocs/langs/ja_JP/loan.lang +++ b/htdocs/langs/ja_JP/loan.lang @@ -14,9 +14,9 @@ Term=期間 LoanAccountancyCapitalCode=会計科目資本 LoanAccountancyInsuranceCode=会計科目保険 LoanAccountancyInterestCode=会計科目利息 -ConfirmDeleteLoan=このローンの削除を確認する +ConfirmDeleteLoan=このローンの削除を確定する LoanDeleted=ローンが正常に削除された -ConfirmPayLoan=分類がこのローンを支払ったことを確認する +ConfirmPayLoan=分類がこのローンを支払ったことを確定する LoanPaid=ローン支払い ListLoanAssociatedProject=プロジェクトに関連するローンのリスト AddLoan=ローンを作成する diff --git a/htdocs/langs/ja_JP/mails.lang b/htdocs/langs/ja_JP/mails.lang index 01d0df7d046..1df89aa640e 100644 --- a/htdocs/langs/ja_JP/mails.lang +++ b/htdocs/langs/ja_JP/mails.lang @@ -109,7 +109,7 @@ SendMailing=メール送信送信 SentBy=によって送信され、 MailingNeedCommand=メールの送信はコマンドラインから実行できる。サーバー管理者に次のコマンドを起動して、すべての受信者に電子メールを送信するように依頼すること。 MailingNeedCommand2=ただし、セッションで送信するメールの最大数の値を持つパラメータのMAILING_LIMIT_SENDBYWEBを追加することによってそれらをオンラインで送信することができる。このため、ホーム - 設定 - その他 に行くこと。 -ConfirmSendingEmailing=この画面から直接メールを送信したい場合は、ブラウザから今すぐメールを送信することを確認すること。 +ConfirmSendingEmailing=この画面から直接メールを送信したい場合は、ブラウザから今すぐメールを送信することを確定すること。 LimitSendingEmailing=注:Webインターフェースからの電子メールの送信は、セキュリティとタイムアウトの理由から数回行われる。各送信セッションで一度に %s受信者が実行される。 TargetsReset=一覧をクリアする ToClearAllRecipientsClickHere=このメール送信の受信者リストをクリアするにはここをクリック diff --git a/htdocs/langs/ja_JP/main.lang b/htdocs/langs/ja_JP/main.lang index ce1f83fd418..f085068bfda 100644 --- a/htdocs/langs/ja_JP/main.lang +++ b/htdocs/langs/ja_JP/main.lang @@ -162,7 +162,7 @@ Update=更新 Close=閉じる CloseAs=ステータスをに設定する CloseBox=ダッシュボードからウィジェットを削除する -Confirm=確認する +Confirm=確定する ConfirmSendCardByMail=このカードの内容を本当にメールで%s に送信するか? Delete=削除する Remove=削除する @@ -682,7 +682,7 @@ SendByMail=メールで送る MailSentBy=によって送信される電子メール NotSent=送信されません TextUsedInTheMessageBody=電子メールの本文 -SendAcknowledgementByMail=確認メールを送信する +SendAcknowledgementByMail=確定メールを送信する SendMail=メールを送る Email=Eメール NoEMail=まだメールしない @@ -881,7 +881,7 @@ TooManyRecordForMassAction=マスアクション用に選択されたレコー NoRecordSelected=レコードが選択されていない MassFilesArea=大量アクションによって作成されたファイルの領域 ShowTempMassFilesArea=大量アクションによって作成されたファイルの領域を表示する -ConfirmMassDeletion=一括削除確認 +ConfirmMassDeletion=一括削除確定 ConfirmMassDeletionQuestion=選択した%sレコード(s)を削除してもよいか? RelatedObjects=関連オブジェクト ClassifyBilled=請求分類 @@ -1107,7 +1107,7 @@ Measures=対策 XAxis=X軸 YAxis=Y軸 StatusOfRefMustBe=%sのステータスは%sである必要がある -DeleteFileHeader=ファイル削除の確認 +DeleteFileHeader=ファイル削除の確定 DeleteFileText=本当にこのファイルを削除するか? ShowOtherLanguages=他の言語を表示する SwitchInEditModeToAddTranslation=この言語の翻訳を追加するには、編集モードに切り替える @@ -1143,9 +1143,9 @@ ConfirmCancel=本当にキャンセルしたいか EmailMsgID=メールMsgID SetToEnabled=有効に設定 SetToDisabled=無効に設定 -ConfirmMassEnabling=一括有効化の確認 +ConfirmMassEnabling=一括有効化の確定 ConfirmMassEnablingQuestion=選択した%sレコード(s)を有効にするか? -ConfirmMassDisabling=一括無効化の確認 +ConfirmMassDisabling=一括無効化の確定 ConfirmMassDisablingQuestion=選択した%sレコード(s)を無効にしてもよいか? RecordsEnabled=%sレコード(s)が有効 RecordsDisabled=%sレコード(s)が無効 @@ -1154,7 +1154,7 @@ RecordDisabled=記録が無効 Forthcoming=今後の予定 Currently=現在 ConfirmMassLeaveApprovalQuestion=%s選択レコード(s)を承認してもよい.か? -ConfirmMassLeaveApproval=一括休暇承認確認 +ConfirmMassLeaveApproval=一括休暇承認確定 RecordAproved=承認された記録 RecordsApproved=%sレコード(s)承認済み Properties=プロパティ diff --git a/htdocs/langs/ja_JP/mrp.lang b/htdocs/langs/ja_JP/mrp.lang index 550a0d40faf..5fcc7bc9fae 100644 --- a/htdocs/langs/ja_JP/mrp.lang +++ b/htdocs/langs/ja_JP/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=部品表%sのクローンを作成してよいか ConfirmCloneMo=製造指図%sのクローンを作成してよいか? ManufacturingEfficiency=製造効率 ConsumptionEfficiency=消費効率 -ValueOfMeansLoss=0.95の値は、生産中の平均5%%の損失を意味する。 +ValueOfMeansLoss=0.95の値は、製造中または分解中の平均5%%の損失を意味します。 ValueOfMeansLossForProductProduced=0.95の値は、生産された製品の損失の平均5%%を意味する DeleteBillOfMaterials=部品表を削除 DeleteMo=製造指図を削除 diff --git a/htdocs/langs/ja_JP/orders.lang b/htdocs/langs/ja_JP/orders.lang index 8e3fb4c8b70..c0f21bdc34f 100644 --- a/htdocs/langs/ja_JP/orders.lang +++ b/htdocs/langs/ja_JP/orders.lang @@ -99,7 +99,7 @@ ConfirmDeleteOrder=この注文を削除してもよいか? ConfirmValidateOrder=この注文を%s という名前で検証してもよいか? ConfirmUnvalidateOrder=注文%s を下書きステータスに復元してもよいか? ConfirmCancelOrder=この注文をキャンセルしてもよいか? -ConfirmMakeOrder= %s でこの注文をしたことを確認するか? +ConfirmMakeOrder= %s でこの注文をしたことを確定するか? GenerateBill=請求書を生成する。 ClassifyShipped=配信された分類 DraftOrders=下書き注文 diff --git a/htdocs/langs/ja_JP/other.lang b/htdocs/langs/ja_JP/other.lang index ee9e58bd046..99dc53f5c12 100644 --- a/htdocs/langs/ja_JP/other.lang +++ b/htdocs/langs/ja_JP/other.lang @@ -180,7 +180,7 @@ SizeUnitinch=インチ SizeUnitfoot=フィート SizeUnitpoint=ポイント BugTracker=バグトラッカー -SendNewPasswordDesc=このフォームでは、新規パスワードをリクエストできる。それはあなたのメールアドレスに送られる。
メール内の確認リンクをクリックすると、変更が有効になる。
受信トレイを確認すること。 +SendNewPasswordDesc=このフォームでは、新規パスワードをリクエストできる。それはあなたのメールアドレスに送られる。
メール内の確定リンクをクリックすると、変更が有効になる。
受信トレイを確定すること。 BackToLoginPage=ログインページに戻る AuthenticationDoesNotAllowSendNewPassword=認証モードは%s
このモードではDolibarr上でパスワードの表示も変更もできません。
パスワードを変更したい場合はシステム管理者に連絡して下さい。 EnableGDLibraryDesc=このオプションを使用するには、PHPインストールでGDライブラリをインストールまたは有効にする。 @@ -249,7 +249,7 @@ NewKeyIs=これはログインするための新規キー NewKeyWillBe=ソフトウェアにログインするための新規キーは次のようになる ClickHereToGoTo=%sに移動するには、ここをクリックすること YouMustClickToChange=ただし、このパスワードの変更を検証するには、最初に次のリンクをクリックする必要がある -ConfirmPasswordChange=パスワードの変更を確認する +ConfirmPasswordChange=パスワードの変更を確定する ForgetIfNothing=この変更をリクエストしなかった場合は、このメールを忘れてください。あなたの資格情報は安全に保たれる。 IfAmountHigherThan= %sよりも多い場合 SourcesRepository=ソースのリポジトリ @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=メールMSGID%sからメールコレクターに TicketCreatedByEmailCollector=メールMSGID%sからメールコレクターによって作成されたチケット OpeningHoursFormatDesc=-を使用して、営業時間と営業時間を区切る。
スペースを使用してさまざまな範囲を入力する。
例:8-12 14-18 SuffixSessionName=セッション名のサフィックス +LoginWith=%sでログインする ##### Export ##### ExportsArea=輸出地域 @@ -300,5 +301,5 @@ NbOfQtyInOrders=注文数量 SelectTheTypeOfObjectToAnalyze=オブジェクトを選択してその統計を表示する... ConfirmBtnCommonContent = 「%s」を実行してもよいか? -ConfirmBtnCommonTitle = アクションを確認する +ConfirmBtnCommonTitle = アクションを確定する CloseDialog = 閉じる diff --git a/htdocs/langs/ja_JP/paybox.lang b/htdocs/langs/ja_JP/paybox.lang index 59b72e25a34..e8a3e2a749a 100644 --- a/htdocs/langs/ja_JP/paybox.lang +++ b/htdocs/langs/ja_JP/paybox.lang @@ -7,14 +7,14 @@ WelcomeOnPaymentPage=オンライン決済サービスへようこそ ThisScreenAllowsYouToPay=この画面では、%sにオンライン決済を行うことができる。 ThisIsInformationOnPayment=これは、実行する支払いに関する情報。 ToComplete=完了する -YourEMail=入金確認を受信する電子メール +YourEMail=入金確定を受信する電子メール Creditor=債権者 PaymentCode=支払いコード PayBoxDoPayment=Payboxで支払う YouWillBeRedirectedOnPayBox=あなたが入力するクレジットカード情報をセキュリティで保護された切符売り場のページにリダイレクトされる。 Continue=次の SetupPayBoxToHavePaymentCreatedAutomatically=Payboxによる検証時に支払いが自動的に作成されるように、URL %sを使用してPayboxを設定する。 -YourPaymentHasBeenRecorded=このページでは、あなたの支払が記録されていることを確認する。ありがとうございる。 +YourPaymentHasBeenRecorded=このページでは、あなたの支払が記録されていることを確定する。ありがとうございる。 YourPaymentHasNotBeenRecorded=お支払いは記録されておらず、取引はキャンセルされている。ありがとうございる。 AccountParameter=アカウントのパラメータ UsageParameter=使用パラメータ diff --git a/htdocs/langs/ja_JP/paypal.lang b/htdocs/langs/ja_JP/paypal.lang index f48a53a8f2f..5a2e882fdab 100644 --- a/htdocs/langs/ja_JP/paypal.lang +++ b/htdocs/langs/ja_JP/paypal.lang @@ -19,7 +19,7 @@ NewOnlinePaymentFailed=新規オンライン支払いが試行されたが失敗 ONLINE_PAYMENT_SENDEMAIL=各支払い試行後の通知の電子メールアドレス(成功および失敗の場合) ReturnURLAfterPayment=支払い後にURLを返す ValidationOfOnlinePaymentFailed=オンライン支払いの検証に失敗した -PaymentSystemConfirmPaymentPageWasCalledButFailed=支払いシステムによって支払い確認ページが呼び出され、エラーが返された +PaymentSystemConfirmPaymentPageWasCalledButFailed=支払いシステムによって支払い確定ページが呼び出され、エラーが返された SetExpressCheckoutAPICallFailed=SetExpressCheckoutAPI呼び出しが失敗した。 DoExpressCheckoutPaymentAPICallFailed=DoExpressCheckoutPaymentAPI呼び出しが失敗した。 DetailedErrorMessage=詳細なエラーメッセージ diff --git a/htdocs/langs/ja_JP/products.lang b/htdocs/langs/ja_JP/products.lang index a62ad67a29e..a79d0524633 100644 --- a/htdocs/langs/ja_JP/products.lang +++ b/htdocs/langs/ja_JP/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=この製品の製造に使用が推奨されるデフォルトBO Rank=ランク SwitchOnSaleStatus=販売ステータスをオンにする SwitchOnPurchaseStatus=購入ステータスをオンにする +StockMouvementExtraFields= エクストラフィールド(在庫移動) diff --git a/htdocs/langs/ja_JP/projects.lang b/htdocs/langs/ja_JP/projects.lang index e0d06ab67b8..96a931acc0b 100644 --- a/htdocs/langs/ja_JP/projects.lang +++ b/htdocs/langs/ja_JP/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=1か月あたりの入力 InputDetail=詳細を入力 TimeAlreadyRecorded=これは、このタスク/日およびユーザー%sについてすでに記録されている時間。 ProjectsWithThisUserAsContact=このユーザーを連絡先とするプロジェクト +ProjectsWithThisContact=この連絡先のあるプロジェクト TasksWithThisUserAsContact=このユーザーに割り当てられたタスク ResourceNotAssignedToProject=プロジェクトに割り当てられていない ResourceNotAssignedToTheTask=タスクに割り当てられていない @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=注:100%%の進行状況に SelectLinesOfTimeSpentToInvoice=請求されていない時間の行を選択し、「請求書の生成」を一括して請求する ProjectTasksWithoutTimeSpent=プロジェクトタスクで時間をかけないもの FormForNewLeadDesc=連絡のため、以下のフォームへの記入に対して謝意を申し上げる。また、 %sで直接メール送信することも可能である。 +ProjectsHavingThisContact=この連絡先を持つプロジェクト StartDateCannotBeAfterEndDate=終了日を開始日より前にすることはできない diff --git a/htdocs/langs/ja_JP/receptions.lang b/htdocs/langs/ja_JP/receptions.lang index 2fd4b650257..5ed8404c11f 100644 --- a/htdocs/langs/ja_JP/receptions.lang +++ b/htdocs/langs/ja_JP/receptions.lang @@ -1,16 +1,17 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=製品受付の設定 +ReceptionDescription=仕入先受付管理(受付文書作成) +ReceptionsSetup=仕入先受付設定 RefReception=参照受付 -Reception=レセプション +Reception=受付 Receptions=受付 AllReceptions=すべての受付 -Reception=レセプション +Reception=受付 Receptions=受付 ShowReception=受付を表示 ReceptionsArea=受付エリア ListOfReceptions=受付のリスト ReceptionMethod=受付方法 -LastReceptions=最新の%s受付 +LastReceptions=最新%s受付 StatisticsOfReceptions=受付の統計 NbOfReceptions=受付数 NumberOfReceptionsByMonth=月別の受付数 @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=この注文の領収書と領収書 ReceptionsToValidate=検証する受付 StatusReceptionCanceled=キャンセル StatusReceptionDraft=ドラフト -StatusReceptionValidated=検証(製品が出荷する、またはすでに出荷される) +StatusReceptionValidated=検証済み(受取り製品またはすでに受取済製品) +StatusReceptionValidatedToReceive=検証済み(受取り製品) +StatusReceptionValidatedReceived=検証済み(受取済製品) StatusReceptionProcessed=処理 StatusReceptionDraftShort=ドラフト StatusReceptionValidatedShort=検証 @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=受付で実施された統計は検証された SendReceptionByEMail=メールで受付を送信する SendReceptionRef=受付の提出%s ActionsOnReception=受付のイベント -ReceptionCreationIsDoneFromOrder=現時点では、新しいレセプションの作成は発注書レコードから行われる。 +ReceptionCreationIsDoneFromOrder=現時点では、新しい受付の作成は発注書から行われる。 ReceptionLine=受付ライン ProductQtyInReceptionAlreadySent=未処理の受注からの製品数量はすでに送信された ProductQtyInSuppliersReceptionAlreadyRecevied=すでに受け取ったオープンサプライヤー注文からの製品数量 @@ -44,5 +47,8 @@ ValidateOrderFirstBeforeReception=受付を行う前に、まず注文を確認 ReceptionsNumberingModules=受付のナンバリングモジュール ReceptionsReceiptModel=受付のドキュメントテンプレート NoMorePredefinedProductToDispatch=ディスパッチする事前定義された製品はもうない -ReceptionExist=レセプションがある +ReceptionExist=受付がある ByingPrice=買取価格 +ReceptionBackToDraftInDolibarr=受付%sドラフト戻り +ReceptionClassifyClosedInDolibarr=受付%s閉鎖分類 +ReceptionUnClassifyCloseddInDolibarr=受付%s再開 diff --git a/htdocs/langs/ja_JP/resource.lang b/htdocs/langs/ja_JP/resource.lang index 38bac9cfab5..a9b6bdafe54 100644 --- a/htdocs/langs/ja_JP/resource.lang +++ b/htdocs/langs/ja_JP/resource.lang @@ -1,36 +1,39 @@ # Dolibarr language file - Source file is en_US - resource -MenuResourceIndex=資源 -MenuResourceAdd=New resource -DeleteResource=Delete resource -ConfirmDeleteResourceElement=Confirm delete the resource for this element -NoResourceInDatabase=No resource in database. -NoResourceLinked=No resource linked +MenuResourceIndex=リソース +MenuResourceAdd=新規リソース +DeleteResource=リソースを削除する +ConfirmDeleteResourceElement=この要素のリソースを削除することを確定する +NoResourceInDatabase=データベースにリソースがない。 +NoResourceLinked=リンクされたリソースはない +ActionsOnResource=このリソースに関するイベント +ResourcePageIndex=リソースリスト +ResourceSingular=リソース +ResourceCard=リソースカード +AddResource=リソースを作成する +ResourceFormLabel_ref=リソース名 +ResourceType=リソースタイプ +ResourceFormLabel_description=リソースの説明 -ResourcePageIndex=Resources list -ResourceSingular=Resource -ResourceCard=Resource card -AddResource=Create a resource -ResourceFormLabel_ref=Resource name -ResourceType=Resource type -ResourceFormLabel_description=Resource description +ResourcesLinkedToElement=要素にリンクされているリソース -ResourcesLinkedToElement=Resources linked to element +ShowResource=リソースを表示 -ShowResource=Show resource +ResourceElementPage=要素リソース +ResourceCreatedWithSuccess=リソースが正常に作成された +RessourceLineSuccessfullyDeleted=リソース行が正常に削除された +RessourceLineSuccessfullyUpdated=リソース行が正常に更新された +ResourceLinkedWithSuccess=成功につながるリソース -ResourceElementPage=Element resources -ResourceCreatedWithSuccess=Resource successfully created -RessourceLineSuccessfullyDeleted=Resource line successfully deleted -RessourceLineSuccessfullyUpdated=Resource line successfully updated -ResourceLinkedWithSuccess=Resource linked with success +ConfirmDeleteResource=このリソースを削除することを確定すること +RessourceSuccessfullyDeleted=リソースが正常に削除された +DictionaryResourceType=リソースの種類 -ConfirmDeleteResource=Confirm to delete this resource -RessourceSuccessfullyDeleted=Resource successfully deleted -DictionaryResourceType=Type of resources +SelectResource=リソースを選択 -SelectResource=Select resource +IdResource=IDリソース +AssetNumber=シリアルナンバー +ResourceTypeCode=リソースタイプコード +ImportDataset_resource_1=リソース -IdResource=Id resource -AssetNumber=Serial number -ResourceTypeCode=Resource type code -ImportDataset_resource_1=資源 +ErrorResourcesAlreadyInUse=一部のリソースが使用されている +ErrorResourceUseInEvent=%sイベントで使用される%s diff --git a/htdocs/langs/ja_JP/sms.lang b/htdocs/langs/ja_JP/sms.lang index 8924983278c..c2ea40576c2 100644 --- a/htdocs/langs/ja_JP/sms.lang +++ b/htdocs/langs/ja_JP/sms.lang @@ -38,7 +38,7 @@ SmsStatusNotSent=送信されない SmsSuccessfulySent=SMSが正しく送信された(%sから%sへ) ErrorSmsRecipientIsEmpty=ターゲットの数が空である WarningNoSmsAdded=ターゲットリストに追加する新規電話番号なし -ConfirmValidSms=このキャンペーンの検証を確認するか? +ConfirmValidSms=このキャンペーンの検証を確定するか? NbOfUniqueSms=固有の電話番号の数 NbOfSms=電話番号の数 ThisIsATestMessage=これはテストメッセージ。 diff --git a/htdocs/langs/ja_JP/stocks.lang b/htdocs/langs/ja_JP/stocks.lang index 812981fc506..74c52d0211d 100644 --- a/htdocs/langs/ja_JP/stocks.lang +++ b/htdocs/langs/ja_JP/stocks.lang @@ -12,7 +12,7 @@ AddWarehouse=倉庫を作成する AddOne=1つ追加する DefaultWarehouse=デフォルトの倉庫 WarehouseTarget=ターゲット倉庫 -ValidateSending=出荷を確認する +ValidateSending=出荷を確定する CancelSending=発送をキャンセルする DeleteSending=貨物を削除する Stock=在庫 @@ -219,7 +219,7 @@ AddInventoryProduct=製品を目録に追加する AddProduct=加える ApplyPMP=PMPを適用する FlushInventory=目録をフラッシュする -ConfirmFlushInventory=このアクションを確認するか? +ConfirmFlushInventory=このアクションを確定するか? InventoryFlushed=目録がフラッシュされた ExitEditMode=終了版 inventoryDeleteLine=行を削除する diff --git a/htdocs/langs/ja_JP/stripe.lang b/htdocs/langs/ja_JP/stripe.lang index 403d91e73d0..ad0bb8fa8f0 100644 --- a/htdocs/langs/ja_JP/stripe.lang +++ b/htdocs/langs/ja_JP/stripe.lang @@ -8,7 +8,7 @@ WelcomeOnPaymentPage=オンライン決済サービスへようこそ ThisScreenAllowsYouToPay=この画面では、%sにオンライン決済を行うことができる。 ThisIsInformationOnPayment=これは、実行する支払いに関する情報。 ToComplete=完了する -YourEMail=入金確認を受信する電子メール +YourEMail=入金確定を受信する電子メール STRIPE_PAYONLINE_SENDEMAIL=支払い試行後の電子メール通知(成功または失敗) Creditor=債権者 PaymentCode=支払いコード diff --git a/htdocs/langs/ja_JP/ticket.lang b/htdocs/langs/ja_JP/ticket.lang index 54a49fc3ab3..45f9d066fb7 100644 --- a/htdocs/langs/ja_JP/ticket.lang +++ b/htdocs/langs/ja_JP/ticket.lang @@ -95,7 +95,7 @@ TicketEmailNotificationFromHelp=例によるチケットメッセージの回答 TicketEmailNotificationTo=通知メール TicketEmailNotificationToHelp=このアドレスに電子メール通知を送信する。 TicketNewEmailBodyLabel=チケット作成後に送信されるテキストメッセージ -TicketNewEmailBodyHelp=ここで指定されたテキストは、公開インターフェイスからの新規チケットの作成を確認する電子メールに挿入される。チケットの相談に関する情報は自動的に追加される。 +TicketNewEmailBodyHelp=ここで指定されたテキストは、公開インターフェイスからの新規チケットの作成を確定する電子メールに挿入される。チケットの相談に関する情報は自動的に追加される。 TicketParamPublicInterface=公開インターフェイスの設定 TicketsEmailMustExist=チケットを作成するには、既存のメールアドレスが必要 TicketsEmailMustExistHelp=公開インターフェイスでは、新規チケットを作成するために、電子メールアドレスがデータベースにすでに入力されている必要がある。 @@ -191,9 +191,9 @@ TicketAddIntervention=介入を作成する CloseTicket=チケットを 閉じる|解決 する AbandonTicket=チケットを放棄する CloseATicket=チケット1つを 閉じる|解決 する -ConfirmCloseAticket=チケットの終了を確認する +ConfirmCloseAticket=チケットの終了を確定する ConfirmAbandonTicket=チケットを終了し、ステータスを「放棄」に確定するか -ConfirmDeleteTicket=チケットの削除を確認すること +ConfirmDeleteTicket=チケットの削除を確定すること TicketDeletedSuccess=チケットは正常に削除された TicketMarkedAsClosed=チケットはクローズとしてマークされている TicketDurationAuto=計算された期間 @@ -220,7 +220,7 @@ TicketTimeToRead=読み取るまでの経過時間 TicketTimeElapsedBeforeSince=前後の経過時間 TicketContacts=連絡先チケット TicketDocumentsLinked=チケットにリンクされているドキュメント -ConfirmReOpenTicket=このチケットを再度開くことを確認するか? +ConfirmReOpenTicket=このチケットを再度開くことを確定するか? TicketMessageMailIntroAutoNewPublicMessage=件名が%sの新規メッセージがチケットに投稿された。 TicketAssignedToYou=割り当てられたチケット TicketAssignedEmailBody=%sによってチケット#%sが割り当てられました @@ -235,7 +235,7 @@ TicketMailExchanges=メール交換 TicketInitialMessageModified=最初のメッセージが変更された TicketMessageSuccesfullyUpdated=メッセージが正常に更新された TicketChangeStatus=ステータスを変更する -TicketConfirmChangeStatus=ステータスの変更を確認する:%s? +TicketConfirmChangeStatus=ステータスの変更を確定する:%s? TicketLogStatusChanged=ステータスが変更された:%sから%s TicketNotNotifyTiersAtCreate=作成時に法人に通知しない Unread=未読 @@ -262,10 +262,10 @@ TicketPublicDesc=サポートチケットを作成したり、既存のIDから YourTicketSuccessfullySaved=チケットが正常に保存された! MesgInfosPublicTicketCreatedWithTrackId=ID%sおよびRef%sで新規チケットが作成された。 PleaseRememberThisId=後で尋ねる可能性のある追跡番号を保管すること。 -TicketNewEmailSubject=チケット作成の確認-Ref%s(公開チケットID %s) +TicketNewEmailSubject=チケット作成の確定-Ref%s(公開チケットID %s) TicketNewEmailSubjectCustomer=新規サポートチケット -TicketNewEmailBody=これは、新規チケットを登録したことを確認するための自動メール。 -TicketNewEmailBodyCustomer=これは、新規チケットがアカウントに作成されたことを確認するための自動メール。 +TicketNewEmailBody=これは、新規チケットを登録したことを確定するための自動メール。 +TicketNewEmailBodyCustomer=これは、新規チケットがアカウントに作成されたことを確定するための自動メール。 TicketNewEmailBodyInfosTicket=チケットを監視するための情報 TicketNewEmailBodyInfosTrackId=チケット追跡番号:%s TicketNewEmailBodyInfosTrackUrl=上のリンクをクリックすると、チケットの進行状況を確認できる。 diff --git a/htdocs/langs/ja_JP/users.lang b/htdocs/langs/ja_JP/users.lang index c12265248a9..5c4f07b0ce5 100644 --- a/htdocs/langs/ja_JP/users.lang +++ b/htdocs/langs/ja_JP/users.lang @@ -49,7 +49,7 @@ PasswordChangeRequest= %sのパスワード変更を要求 PasswordChangeRequestSent=%s のパスワード変更を要求するには %s に送信する。 IfLoginExistPasswordRequestSent=このログインが有効なアカウントである場合、パスワードをリセットするための電子メールが送信されている。 IfEmailExistPasswordRequestSent=このメールが有効なアカウントである場合、パスワードをリセットするためのメールが送信されている。 -ConfirmPasswordReset=パスワードのリセットを確認する +ConfirmPasswordReset=パスワードのリセットを確定する MenuUsersAndGroups=ユーザとグループ LastGroupsCreated=作成された最新の%sグループ LastUsersCreated=作成された最新の%sユーザ diff --git a/htdocs/langs/ja_JP/website.lang b/htdocs/langs/ja_JP/website.lang index f2276a19bd3..5863b45a2a2 100644 --- a/htdocs/langs/ja_JP/website.lang +++ b/htdocs/langs/ja_JP/website.lang @@ -139,7 +139,7 @@ AllowedInFrames=フレームで許可 DefineListOfAltLanguagesInWebsiteProperties=使用可能なすべての言語のリストをWebサイトのプロパティに定義する。 GenerateSitemaps=ウェブサイトサイトマップファイルを生成する ConfirmGenerateSitemaps=確定すると、既存のサイトマップファイルが消去される... -ConfirmSitemapsCreation=サイトマップの生成を確認する +ConfirmSitemapsCreation=サイトマップの生成を確定する SitemapGenerated=サイトマップファイル%sが生成された ImportFavicon=ファビコン ErrorFaviconType=ファビコンはpngを必要とする diff --git a/htdocs/langs/ka_GE/admin.lang b/htdocs/langs/ka_GE/admin.lang index 3971948e5a1..d79adb1e960 100644 --- a/htdocs/langs/ka_GE/admin.lang +++ b/htdocs/langs/ka_GE/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Foundation Version=Version Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=Step %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/ka_GE/bills.lang b/htdocs/langs/ka_GE/bills.lang index 3aaa5465ca0..f7d0155f41e 100644 --- a/htdocs/langs/ka_GE/bills.lang +++ b/htdocs/langs/ka_GE/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Payments reports PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Refunds already done PaymentRule=Payment rule -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Draft PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bank details BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/ka_GE/blockedlog.lang b/htdocs/langs/ka_GE/blockedlog.lang index 0bba5605d0f..12f28737d49 100644 --- a/htdocs/langs/ka_GE/blockedlog.lang +++ b/htdocs/langs/ka_GE/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/ka_GE/errors.lang b/htdocs/langs/ka_GE/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/ka_GE/errors.lang +++ b/htdocs/langs/ka_GE/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/ka_GE/eventorganization.lang b/htdocs/langs/ka_GE/eventorganization.lang index 82951892a32..b4a7279d757 100644 --- a/htdocs/langs/ka_GE/eventorganization.lang +++ b/htdocs/langs/ka_GE/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/ka_GE/holiday.lang b/htdocs/langs/ka_GE/holiday.lang index dceaef59081..3d0ae64be0f 100644 --- a/htdocs/langs/ka_GE/holiday.lang +++ b/htdocs/langs/ka_GE/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/ka_GE/knowledgemanagement.lang b/htdocs/langs/ka_GE/knowledgemanagement.lang index 2426e0e7013..bcdf9740cdd 100644 --- a/htdocs/langs/ka_GE/knowledgemanagement.lang +++ b/htdocs/langs/ka_GE/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/ka_GE/mrp.lang b/htdocs/langs/ka_GE/mrp.lang index 3f1aac53340..74bed0d9186 100644 --- a/htdocs/langs/ka_GE/mrp.lang +++ b/htdocs/langs/ka_GE/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/ka_GE/other.lang b/htdocs/langs/ka_GE/other.lang index 7b509f60ff7..49ff93dd589 100644 --- a/htdocs/langs/ka_GE/other.lang +++ b/htdocs/langs/ka_GE/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/ka_GE/products.lang b/htdocs/langs/ka_GE/products.lang index a8942bd337f..14715670882 100644 --- a/htdocs/langs/ka_GE/products.lang +++ b/htdocs/langs/ka_GE/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/ka_GE/projects.lang b/htdocs/langs/ka_GE/projects.lang index 0d9c7ea34c8..ff542521afe 100644 --- a/htdocs/langs/ka_GE/projects.lang +++ b/htdocs/langs/ka_GE/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/ka_GE/receptions.lang b/htdocs/langs/ka_GE/receptions.lang index 46b2d689609..7f1a97d16a9 100644 --- a/htdocs/langs/ka_GE/receptions.lang +++ b/htdocs/langs/ka_GE/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Canceled StatusReceptionDraft=Draft -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processed StatusReceptionDraftShort=Draft StatusReceptionValidatedShort=Validated @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/kk_KZ/admin.lang b/htdocs/langs/kk_KZ/admin.lang index c057668b5f7..74905691d9d 100644 --- a/htdocs/langs/kk_KZ/admin.lang +++ b/htdocs/langs/kk_KZ/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Қор Version=Нұсқа Publisher=Баспа @@ -343,7 +343,7 @@ StepNb=%s қадамы FindPackageFromWebSite=Сізге қажет мүмкіндіктерді беретін пакетті табыңыз (мысалы, %s ресми веб -сайтында). DownloadPackageFromWebSite=Пакетті жүктеңіз (мысалы, %s ресми сайтынан). UnpackPackageInDolibarrRoot=Бумаланған файлдарды Dolibarr серверінің каталогына ашыңыз/ашыңыз: %s -UnpackPackageInModulesRoot=Сыртқы модульді орналастыру/орнату үшін, оралған файлдарды сыртқы модульдерге арналған сервер каталогына ашыңыз/ашыңыз:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Модульді орналастыру аяқталды. Бетті орнату модульдеріне өту арқылы сіз қолданбадағы модульді қосуыңыз керек: %s . NotExistsDirect=Балама түбірлік каталог бар каталогқа анықталмаған.
InfDirAlt=3 нұсқасынан бастап балама түбірлік каталогты анықтауға болады. Бұл арнайы каталогта, қосылатын модульдерде және реттелетін үлгілерді сақтауға мүмкіндік береді.
Dolibarr түбірінде каталог жасаңыз (мысалы: реттелетін).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Қолданбадан сыртқы модульді HighlightLinesOnMouseHover=Тышқанды жылжыту кезінде кесте сызықтарын бөлектеңіз HighlightLinesColor=Тінтуір өткен кезде сызықтың түсін бөлектеңіз (ерекшелеу үшін 'ffffff' пайдаланыңыз) HighlightLinesChecked=Жолдың түсін тексерген кезде бөлектеңіз (ерекшелеу үшін 'ffffff' пайдаланыңыз) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Бет атауының мәтін түсі LinkColor=Сілтемелердің түсі PressF5AfterChangingThis=Бұл мәнді өзгерткеннен кейін пернетақтадағы CTRL+F5 пернелерін басыңыз немесе шолғыштың кэшін тазалаңыз @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/kk_KZ/bills.lang b/htdocs/langs/kk_KZ/bills.lang index f53faf689b4..e3f9523f522 100644 --- a/htdocs/langs/kk_KZ/bills.lang +++ b/htdocs/langs/kk_KZ/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Төлем есептері PaymentsAlreadyDone=Төлемдер қазірдің өзінде жасалды PaymentsBackAlreadyDone=Қайтару қазірдің өзінде жасалды PaymentRule=Төлем ережесі -PaymentMode=Төлем түрі -DefaultPaymentMode=Төлемнің әдепкі түрі +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Әдепкі банктік шот -PaymentTypeDC=Дебеттік/несиелік карта -PaymentTypePP=PayPal -IdPaymentMode=Төлем түрі (идентификатор) -CodePaymentMode=Төлем түрі (код) -LabelPaymentMode=Төлем түрі (белгісі) -PaymentModeShort=Төлем түрі +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Төлем мерзімі PaymentConditions=Төлем шарттары PaymentConditionsShort=Төлем шарттары @@ -280,6 +279,7 @@ SetMode=Төлем түрін орнатыңыз SetRevenuStamp=Табыс белгісін орнатыңыз Billed=Есепшот RecurringInvoices=Қайталанатын шот -фактуралар +RecurringInvoice=Recurring invoice RepeatableInvoice=Шот -фактураның үлгісі RepeatableInvoices=Үлгілік шот -фактуралар Repeatable=Үлгі @@ -449,6 +449,8 @@ PaymentTypeTRA=Банк жобасы PaymentTypeShortTRA=Жоба PaymentTypeFAC=Фактор PaymentTypeShortFAC=Фактор +PaymentTypeDC=Дебеттік/несиелік карта +PaymentTypePP=PayPal BankDetails=Банк деректемелері BankCode=Банк коды DeskCode=Филиалдың коды @@ -604,3 +606,4 @@ SituationTotalProgress=Жалпы үлгерім %d %% SearchUnpaidInvoicesWithDueDate=Мерзімі бар төленбеген шот -фактураларды іздеңіз = %s NoPaymentAvailable=No payment available for %s PaymentRegisteredAndInvoiceSetToPaid=Payment registered and invoice %s set to paid +SendEmailsRemindersOnInvoiceDueDate=Send reminder by email for unpaid invoices diff --git a/htdocs/langs/kk_KZ/blockedlog.lang b/htdocs/langs/kk_KZ/blockedlog.lang index 87f31b0effe..6b55ad14143 100644 --- a/htdocs/langs/kk_KZ/blockedlog.lang +++ b/htdocs/langs/kk_KZ/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=Бұл модуль міндетті тү OnlyNonValid=Жарамсыз TooManyRecordToScanRestrictFilters=Сканерлеуге/талдауға тым көп жазбалар. Тізімді шектеу сүзгілерімен шектеңіз. RestrictYearToExport=Экспорттауға ай / жылды шектеу +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/kk_KZ/errors.lang b/htdocs/langs/kk_KZ/errors.lang index e04614b108c..e10bb476fff 100644 --- a/htdocs/langs/kk_KZ/errors.lang +++ b/htdocs/langs/kk_KZ/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Бұл контакт бұрынна ErrorCashAccountAcceptsOnlyCashMoney=Бұл банктік шот - бұл қолма -қол ақша шоты, сондықтан ол тек қолма -қол ақша түріндегі төлемдерді қабылдайды. ErrorFromToAccountsMustDiffers=Банктік шоттардың көзі мен мақсаты әр түрлі болуы керек. ErrorBadThirdPartyName=Үшінші тарап атауының нашар мәні +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=%s міндетті болып табылады +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Тұтынушы коды үшін нашар синтаксис ErrorBadBarCodeSyntax=Штрих -код үшін нашар синтаксис. Нашар штрих -код түрін орнатқан шығарсыз немесе нөмірленген сканерленген мәнге сәйкес келмейтін штрих -код маскасын анықтаған боларсыз. ErrorCustomerCodeRequired=Тұтынушы коды қажет @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Төлем шарттары сөздігі ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Сіздің PHP параметрі upload_max_filesize (%s) PHP параметрі post_max_size (%s) қарағанда жоғары. Бұл дәйекті орнату емес. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/kk_KZ/eventorganization.lang b/htdocs/langs/kk_KZ/eventorganization.lang index 8c5f26e348b..f78cda69cec 100644 --- a/htdocs/langs/kk_KZ/eventorganization.lang +++ b/htdocs/langs/kk_KZ/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Біреу конференция ұс EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Үшінші тараптарға стенд ұсынылған кезде автоматты түрде қосылатын санат EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Конференция туралы ұсынысты алғаннан кейін жіберілетін электрондық пошта үлгісі. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Стенд ұсынысын алғаннан кейін жіберілетін электрондық пошта үлгісі. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Қатысушыларға массаждың электрондық поштасының үлгісі -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Динамиктерге массаж электрондық поштасының үлгісі -EVENTORGANIZATION_FILTERATTENDEES_CAT = Қатысушылар картасы/формасы бар үшінші топтың таңдаулы тізімін сүзгіден өткізіңіз -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Келушілердің картасы/формасы бойынша үшінші тараптың таңдаулы тізімін тұтынушы түрі бойынша сүзіңіз +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Қатысушыларға хабарлау EventOrganizationMassEmailSpeakers = Баяндамашылармен байланыс +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Тіркеу бағасы PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Кабинаға жазылу бағасы PriceOfBoothHelp=Кабинаға жазылу бағасы -EventOrganizationICSLink=Оқиғалар үшін ICS байланыстырыңыз +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Конференция немесе стенд туралы ақпарат Attendees=Қатысушылар ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = ICS сілтемесін жүктеңіз -EVENTORGANIZATION_SECUREKEY = Конференцияға ашық тіркеу сілтемесінің қауіпсіз кілті +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Кабинаның орналасқан жері туралы шот -фактура жолы үшін қолданылатын қызмет -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Конференцияға қатысушы жазылымы туралы шот -фактура жолында қолданылатын қызмет +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Дауыстар саны # # Status diff --git a/htdocs/langs/kk_KZ/holiday.lang b/htdocs/langs/kk_KZ/holiday.lang index dde61167246..c6a07415bf7 100644 --- a/htdocs/langs/kk_KZ/holiday.lang +++ b/htdocs/langs/kk_KZ/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Мерекелерді бекіту керек NobodyHasPermissionToValidateHolidays=Мерекені растауға ешкімнің рұқсаты жоқ HolidayBalanceMonthlyUpdate=Мерекелік баланстың ай сайынғы жаңартылуы XIsAUsualNonWorkingDay=%s әдетте жұмыс істемейтін күн болып табылады +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/kk_KZ/knowledgemanagement.lang b/htdocs/langs/kk_KZ/knowledgemanagement.lang index be0d33d308e..6edef9a061a 100644 --- a/htdocs/langs/kk_KZ/knowledgemanagement.lang +++ b/htdocs/langs/kk_KZ/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Мақалаға арналған экстра өр GroupOfTicket=Билеттер тобы YouCanLinkArticleToATicketCategory=Сіз мақаланы билеттер тобына байланыстыра аласыз (сондықтан мақала жаңа билеттерді іріктеу кезінде ұсынылады) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/kk_KZ/mrp.lang b/htdocs/langs/kk_KZ/mrp.lang index 0cbe72c37e1..f3e1865ae88 100644 --- a/htdocs/langs/kk_KZ/mrp.lang +++ b/htdocs/langs/kk_KZ/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=%s есепшотын клондау керек ек ConfirmCloneMo=%s өндірістік тапсырысын клондау керек екеніне сенімдісіз бе? ManufacturingEfficiency=Өндіріс тиімділігі ConsumptionEfficiency=Тұтыну тиімділігі -ValueOfMeansLoss=0.95 мәні өндіріс кезінде орташа 5%% жоғалтуды білдіреді. +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=0.95 мәні өндірілген өнімнің жоғалуының орташа 5%% білдіреді. DeleteBillOfMaterials=Материалды жою DeleteMo=Өндірістік тапсырысты жою diff --git a/htdocs/langs/kk_KZ/other.lang b/htdocs/langs/kk_KZ/other.lang index 40a359591ea..8e2120e47d0 100644 --- a/htdocs/langs/kk_KZ/other.lang +++ b/htdocs/langs/kk_KZ/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=MSGID %s электрондық поштасын TicketCreatedByEmailCollector=Билетті MSGID %s электрондық поштасынан электрондық пошта жинаушы жасаған OpeningHoursFormatDesc=Ашылу және жабылу сағаттарын ажырату үшін - пайдаланыңыз.
Әр түрлі ауқымдарды енгізу үшін бос орынды пайдаланыңыз.
Мысал: 8-12 14-18 SuffixSessionName=Сеанс атауының жұрнағы +LoginWith=Login with %s ##### Export ##### ExportsArea=Экспорттық аймақ diff --git a/htdocs/langs/kk_KZ/products.lang b/htdocs/langs/kk_KZ/products.lang index 86d1c2a381a..6ab839803da 100644 --- a/htdocs/langs/kk_KZ/products.lang +++ b/htdocs/langs/kk_KZ/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/kk_KZ/projects.lang b/htdocs/langs/kk_KZ/projects.lang index 7ee36127a68..73ad960ca01 100644 --- a/htdocs/langs/kk_KZ/projects.lang +++ b/htdocs/langs/kk_KZ/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Айына кіріс InputDetail=Мәліметтерді енгізу TimeAlreadyRecorded=Бұл уақыт/тапсырма үшін жазылған уақыт және пайдаланушы %s ProjectsWithThisUserAsContact=Байланыс ретінде осы пайдаланушымен жобалар +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Бұл пайдаланушыға берілген тапсырмалар ResourceNotAssignedToProject=Жобаға тағайындалмаған ResourceNotAssignedToTheTask=Тапсырмаға тағайындалмаған @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Ескерту: 100%% барл SelectLinesOfTimeSpentToInvoice=Есепке алынбаған уақытты таңдаңыз, содан кейін оларды есепке алу үшін «Шот -фактураны құру» жаппай әрекетін таңдаңыз ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/kk_KZ/receptions.lang b/htdocs/langs/kk_KZ/receptions.lang index b2887042081..6125e4af5ff 100644 --- a/htdocs/langs/kk_KZ/receptions.lang +++ b/htdocs/langs/kk_KZ/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Өнімді қабылдауды реттеу +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Сілт. қабылдау Reception=Қабылдау Receptions=Қабылдаулар @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Бұл тапсырыс бойынша қаб ReceptionsToValidate=Тексеру үшін қабылдаулар StatusReceptionCanceled=Бас тартылды StatusReceptionDraft=Жоба -StatusReceptionValidated=Тексерілген (жөнелтілетін немесе жіберілген өнімдер) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Өңделді StatusReceptionDraftShort=Жоба StatusReceptionValidatedShort=Тексерілді @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Қабылдаулар бойынша жүргі SendReceptionByEMail=Қабылдауды электрондық пошта арқылы жіберіңіз SendReceptionRef=%s қабылдауды тапсыру ActionsOnReception=Қабылдаудағы оқиғалар -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Қабылдау желісі ProductQtyInReceptionAlreadySent=Ашық сатуға тапсырыс бойынша өнім саны жіберілген ProductQtyInSuppliersReceptionAlreadyRecevied=Ашық жеткізуші тапсырысынан алынған өнім саны қазірдің өзінде алынды @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Қабылдауға арналған құжаттар ш NoMorePredefinedProductToDispatch=Алдын ала анықталған өнімдер жіберілмейді ReceptionExist=Қабылдау бар ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/km_KH/admin.lang b/htdocs/langs/km_KH/admin.lang index 3971948e5a1..d79adb1e960 100644 --- a/htdocs/langs/km_KH/admin.lang +++ b/htdocs/langs/km_KH/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Foundation Version=Version Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=Step %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/km_KH/bills.lang b/htdocs/langs/km_KH/bills.lang index 3aaa5465ca0..f7d0155f41e 100644 --- a/htdocs/langs/km_KH/bills.lang +++ b/htdocs/langs/km_KH/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Payments reports PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Refunds already done PaymentRule=Payment rule -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Draft PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bank details BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/km_KH/blockedlog.lang b/htdocs/langs/km_KH/blockedlog.lang index 0bba5605d0f..12f28737d49 100644 --- a/htdocs/langs/km_KH/blockedlog.lang +++ b/htdocs/langs/km_KH/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/km_KH/errors.lang b/htdocs/langs/km_KH/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/km_KH/errors.lang +++ b/htdocs/langs/km_KH/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/km_KH/eventorganization.lang b/htdocs/langs/km_KH/eventorganization.lang index 82951892a32..b4a7279d757 100644 --- a/htdocs/langs/km_KH/eventorganization.lang +++ b/htdocs/langs/km_KH/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/km_KH/holiday.lang b/htdocs/langs/km_KH/holiday.lang index dceaef59081..3d0ae64be0f 100644 --- a/htdocs/langs/km_KH/holiday.lang +++ b/htdocs/langs/km_KH/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/km_KH/knowledgemanagement.lang b/htdocs/langs/km_KH/knowledgemanagement.lang index 2426e0e7013..bcdf9740cdd 100644 --- a/htdocs/langs/km_KH/knowledgemanagement.lang +++ b/htdocs/langs/km_KH/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/km_KH/mrp.lang b/htdocs/langs/km_KH/mrp.lang index 3f1aac53340..74bed0d9186 100644 --- a/htdocs/langs/km_KH/mrp.lang +++ b/htdocs/langs/km_KH/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/km_KH/other.lang b/htdocs/langs/km_KH/other.lang index 7b509f60ff7..49ff93dd589 100644 --- a/htdocs/langs/km_KH/other.lang +++ b/htdocs/langs/km_KH/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/km_KH/products.lang b/htdocs/langs/km_KH/products.lang index a8942bd337f..14715670882 100644 --- a/htdocs/langs/km_KH/products.lang +++ b/htdocs/langs/km_KH/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/km_KH/projects.lang b/htdocs/langs/km_KH/projects.lang index 0d9c7ea34c8..ff542521afe 100644 --- a/htdocs/langs/km_KH/projects.lang +++ b/htdocs/langs/km_KH/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/km_KH/receptions.lang b/htdocs/langs/km_KH/receptions.lang index 46b2d689609..7f1a97d16a9 100644 --- a/htdocs/langs/km_KH/receptions.lang +++ b/htdocs/langs/km_KH/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Canceled StatusReceptionDraft=Draft -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processed StatusReceptionDraftShort=Draft StatusReceptionValidatedShort=Validated @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/kn_IN/admin.lang b/htdocs/langs/kn_IN/admin.lang index eeba60f36b6..064e4d9952e 100644 --- a/htdocs/langs/kn_IN/admin.lang +++ b/htdocs/langs/kn_IN/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=PDF இல் தடித்த குறிப்பு மற்றும் புல்லி -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Foundation Version=Version Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=Step %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/kn_IN/bills.lang b/htdocs/langs/kn_IN/bills.lang index ff95e73af3b..6bad38aa624 100644 --- a/htdocs/langs/kn_IN/bills.lang +++ b/htdocs/langs/kn_IN/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Payments reports PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Refunds already done PaymentRule=Payment rule -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Draft PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=ಬ್ಯಾಂಕ್ ವಿವರಗಳು BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/kn_IN/blockedlog.lang b/htdocs/langs/kn_IN/blockedlog.lang index 0bba5605d0f..12f28737d49 100644 --- a/htdocs/langs/kn_IN/blockedlog.lang +++ b/htdocs/langs/kn_IN/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/kn_IN/errors.lang b/htdocs/langs/kn_IN/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/kn_IN/errors.lang +++ b/htdocs/langs/kn_IN/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/kn_IN/eventorganization.lang b/htdocs/langs/kn_IN/eventorganization.lang index 82951892a32..b4a7279d757 100644 --- a/htdocs/langs/kn_IN/eventorganization.lang +++ b/htdocs/langs/kn_IN/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/kn_IN/holiday.lang b/htdocs/langs/kn_IN/holiday.lang index dceaef59081..3d0ae64be0f 100644 --- a/htdocs/langs/kn_IN/holiday.lang +++ b/htdocs/langs/kn_IN/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/kn_IN/knowledgemanagement.lang b/htdocs/langs/kn_IN/knowledgemanagement.lang index 2426e0e7013..bcdf9740cdd 100644 --- a/htdocs/langs/kn_IN/knowledgemanagement.lang +++ b/htdocs/langs/kn_IN/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/kn_IN/mrp.lang b/htdocs/langs/kn_IN/mrp.lang index 3f1aac53340..74bed0d9186 100644 --- a/htdocs/langs/kn_IN/mrp.lang +++ b/htdocs/langs/kn_IN/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/kn_IN/other.lang b/htdocs/langs/kn_IN/other.lang index d205431b024..78671a00aad 100644 --- a/htdocs/langs/kn_IN/other.lang +++ b/htdocs/langs/kn_IN/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/kn_IN/products.lang b/htdocs/langs/kn_IN/products.lang index 7375a3ac73d..c8ad53d543d 100644 --- a/htdocs/langs/kn_IN/products.lang +++ b/htdocs/langs/kn_IN/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/kn_IN/projects.lang b/htdocs/langs/kn_IN/projects.lang index 0d9c7ea34c8..ff542521afe 100644 --- a/htdocs/langs/kn_IN/projects.lang +++ b/htdocs/langs/kn_IN/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/kn_IN/receptions.lang b/htdocs/langs/kn_IN/receptions.lang index 46b2d689609..7f1a97d16a9 100644 --- a/htdocs/langs/kn_IN/receptions.lang +++ b/htdocs/langs/kn_IN/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Canceled StatusReceptionDraft=Draft -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processed StatusReceptionDraftShort=Draft StatusReceptionValidatedShort=Validated @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/ko_KR/admin.lang b/htdocs/langs/ko_KR/admin.lang index 05e1157450d..59377d0fe73 100644 --- a/htdocs/langs/ko_KR/admin.lang +++ b/htdocs/langs/ko_KR/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Foundation Version=버전 Publisher=배포자 @@ -343,7 +343,7 @@ StepNb=Step %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/ko_KR/bills.lang b/htdocs/langs/ko_KR/bills.lang index 9d437badaa0..fbbe3b4be24 100644 --- a/htdocs/langs/ko_KR/bills.lang +++ b/htdocs/langs/ko_KR/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Payments reports PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Refunds already done PaymentRule=Payment rule -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=초안 PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=은행 계좌 정보 BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/ko_KR/blockedlog.lang b/htdocs/langs/ko_KR/blockedlog.lang index 0bba5605d0f..12f28737d49 100644 --- a/htdocs/langs/ko_KR/blockedlog.lang +++ b/htdocs/langs/ko_KR/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/ko_KR/errors.lang b/htdocs/langs/ko_KR/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/ko_KR/errors.lang +++ b/htdocs/langs/ko_KR/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/ko_KR/eventorganization.lang b/htdocs/langs/ko_KR/eventorganization.lang index b6ff314df98..975ca3e5744 100644 --- a/htdocs/langs/ko_KR/eventorganization.lang +++ b/htdocs/langs/ko_KR/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/ko_KR/holiday.lang b/htdocs/langs/ko_KR/holiday.lang index bc8ab4caf9d..fa8e500cd05 100644 --- a/htdocs/langs/ko_KR/holiday.lang +++ b/htdocs/langs/ko_KR/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/ko_KR/knowledgemanagement.lang b/htdocs/langs/ko_KR/knowledgemanagement.lang index 40927287ee0..de472876c45 100644 --- a/htdocs/langs/ko_KR/knowledgemanagement.lang +++ b/htdocs/langs/ko_KR/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/ko_KR/mrp.lang b/htdocs/langs/ko_KR/mrp.lang index 554277a9559..8a78220984b 100644 --- a/htdocs/langs/ko_KR/mrp.lang +++ b/htdocs/langs/ko_KR/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/ko_KR/other.lang b/htdocs/langs/ko_KR/other.lang index b0e92b32671..427aa9c7f15 100644 --- a/htdocs/langs/ko_KR/other.lang +++ b/htdocs/langs/ko_KR/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/ko_KR/products.lang b/htdocs/langs/ko_KR/products.lang index f49c08fd321..d5cb61ae177 100644 --- a/htdocs/langs/ko_KR/products.lang +++ b/htdocs/langs/ko_KR/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/ko_KR/projects.lang b/htdocs/langs/ko_KR/projects.lang index 76d5a389d81..eecdce54966 100644 --- a/htdocs/langs/ko_KR/projects.lang +++ b/htdocs/langs/ko_KR/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/ko_KR/receptions.lang b/htdocs/langs/ko_KR/receptions.lang index 809185fd616..ded0e6aa33b 100644 --- a/htdocs/langs/ko_KR/receptions.lang +++ b/htdocs/langs/ko_KR/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=취소 됨 StatusReceptionDraft=작성 -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processed StatusReceptionDraftShort=작성 StatusReceptionValidatedShort=확인 함 @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/lo_LA/admin.lang b/htdocs/langs/lo_LA/admin.lang index c0b6344e3d7..95df1b8c140 100644 --- a/htdocs/langs/lo_LA/admin.lang +++ b/htdocs/langs/lo_LA/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=ມູນນິທິ Version=ສະບັບ Publisher=ຜູ້ຕີພິມ @@ -343,7 +343,7 @@ StepNb=ຂັ້ນຕອນ %s FindPackageFromWebSite=ຊອກຫາຊຸດທີ່ສະ ໜອງ ຄຸນສົມບັດທີ່ເຈົ້າຕ້ອງການ (ຕົວຢ່າງຢູ່ໃນເວັບໄຊທ official ທາງການ %s). DownloadPackageFromWebSite=ດາວໂຫລດແພັກເກດ (ຕົວຢ່າງຈາກເວັບໄຊທ official ທາງການ %s). UnpackPackageInDolibarrRoot=ແກະ/ແກະໄຟລ pack ທີ່ບັນຈຸໃສ່ໃນໄດເລກະທໍລີເຊີບເວີ Dolibarr ຂອງເຈົ້າ: %s -UnpackPackageInModulesRoot=ເພື່ອປັບໃຊ້/ຕິດຕັ້ງໂມດູນພາຍນອກ, ແກະ/ແຍກໄຟລ aged ແພັກເກັດໃສ່ໃນໄດເລກະທໍລີເຊີບເວີທີ່ອຸທິດໃຫ້ກັບໂມດູນພາຍນອກ:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=ການ ນຳ ໃຊ້ໂມດູນ ສຳ ເລັດແລ້ວ. ແນວໃດກໍ່ຕາມເຈົ້າຕ້ອງເປີດໃຊ້ແລະຕັ້ງຄ່າໂມດູນໃນໃບສະັກຂອງເຈົ້າໂດຍການເຂົ້າໄປທີ່ໂມດູນການຕັ້ງ ໜ້າ: %s . NotExistsDirect=ບັນຊີລາຍຊື່ຮາກທາງເລືອກບໍ່ໄດ້ກໍານົດໄວ້ໃນບັນຊີລາຍຊື່ທີ່ມີຢູ່ແລ້ວ.
InfDirAlt=ນັບຕັ້ງແຕ່ສະບັບ 3, ມັນເປັນໄປໄດ້ທີ່ຈະກໍານົດລະບົບຮາກທາງເລືອກ. ອັນນີ້ອະນຸຍາດໃຫ້ເຈົ້າເກັບຮັກສາ, ເຂົ້າໄປໃນບັນຊີລາຍຊື່ທີ່ອຸທິດຕົນ, ປລັກອິນແລະແມ່ແບບທີ່ກໍານົດເອງ.
ພຽງແຕ່ສ້າງບັນຊີລາຍການຢູ່ທີ່ຮາກຂອງ Dolibarr (ຕົວຢ່າງ: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=ການຕິດຕັ້ງຫຼືສ້າງໂ HighlightLinesOnMouseHover=ເນັ້ນເສັ້ນຕາຕະລາງເມື່ອການເຄື່ອນຍ້າຍເມົ້າຜ່ານ HighlightLinesColor=ເນັ້ນສີຂອງເສັ້ນເມື່ອເມົ້າຜ່ານ (ໃຊ້ 'ffffff' ໂດຍບໍ່ມີຈຸດເດັ່ນ) HighlightLinesChecked=ເນັ້ນສີຂອງເສັ້ນເມື່ອມັນຖືກກວດກາ (ໃຊ້ 'ffffff' ໂດຍບໍ່ມີຈຸດເດັ່ນ) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=ສີຂໍ້ຄວາມຂອງຫົວຂໍ້ ໜ້າ LinkColor=ສີຂອງການເຊື່ອມຕໍ່ PressF5AfterChangingThis=ກົດ CTRL+F5 ຢູ່ເທິງແປ້ນພິມຫຼືລຶບ cache ຂອງ browser ຂອງເຈົ້າຫຼັງຈາກປ່ຽນຄ່ານີ້ເພື່ອໃຫ້ມັນມີຜົນ @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/lo_LA/bills.lang b/htdocs/langs/lo_LA/bills.lang index 261c6e37bb2..fc1f1b1cc97 100644 --- a/htdocs/langs/lo_LA/bills.lang +++ b/htdocs/langs/lo_LA/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=ລາຍງານການຈ່າຍເງິນ PaymentsAlreadyDone=ການຊໍາລະເງິນສໍາເລັດແລ້ວ PaymentsBackAlreadyDone=ການຄືນເງິນ ສຳ ເລັດແລ້ວ PaymentRule=ກົດລະບຽບການຊໍາລະເງິນ -PaymentMode=ປະເພດການຊໍາລະເງິນ -DefaultPaymentMode=ປະເພດການຈ່າຍເງິນເລີ່ມຕົ້ນ +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=ບັນຊີທະນາຄານເລີ່ມຕົ້ນ -PaymentTypeDC=ບັດເດບິດ/ບັດເຄຣດິດ -PaymentTypePP=PayPal -IdPaymentMode=ປະເພດການຈ່າຍເງິນ (id) -CodePaymentMode=ປະເພດການຈ່າຍເງິນ (ລະຫັດ) -LabelPaymentMode=ປະເພດການຈ່າຍເງິນ (ປ້າຍ ກຳ ກັບ) -PaymentModeShort=ປະເພດການຊໍາລະເງິນ +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=ໃນ​ໄລ​ຍະ​ການ​ຊໍາ​ລະ​ເງິນ PaymentConditions=ເງື່ອນໄຂການຊໍາລະເງິນ PaymentConditionsShort=ເງື່ອນໄຂການຊໍາລະເງິນ @@ -280,6 +279,7 @@ SetMode=ກໍານົດປະເພດການຊໍາລະເງິນ SetRevenuStamp=ກໍານົດສະແຕມລາຍຮັບ Billed=ເກັບເງິນແລ້ວ RecurringInvoices=ໃບຮຽກເກັບເງິນທີ່ເກີດຂຶ້ນຊໍ້າ +RecurringInvoice=Recurring invoice RepeatableInvoice=ໃບແຈ້ງ ໜີ້ ແມ່ແບບ RepeatableInvoices=ໃບແຈ້ງ ໜີ້ ແມ່ແບບ Repeatable=ແມ່ແບບ @@ -449,6 +449,8 @@ PaymentTypeTRA=ຮ່າງ​ຂອງ​ທະ​ນາ​ຄານ PaymentTypeShortTRA=ຮ່າງ PaymentTypeFAC=ປັດໃຈ PaymentTypeShortFAC=ປັດໃຈ +PaymentTypeDC=ບັດເດບິດ/ບັດເຄຣດິດ +PaymentTypePP=PayPal BankDetails=ລາຍລະອຽດຂອງທະນາຄານ BankCode=ລະຫັດທະນາຄານ DeskCode=ລະຫັດສາຂາ @@ -604,3 +606,4 @@ SituationTotalProgress=ຄວາມຄືບ ໜ້າ ທັງaົດ %d %% SearchUnpaidInvoicesWithDueDate=ຄົ້ນຫາໃບຮຽກເກັບເງິນທີ່ບໍ່ໄດ້ຈ່າຍດ້ວຍວັນທີ່ຄົບກໍານົດ = %s NoPaymentAvailable=No payment available for %s PaymentRegisteredAndInvoiceSetToPaid=Payment registered and invoice %s set to paid +SendEmailsRemindersOnInvoiceDueDate=Send reminder by email for unpaid invoices diff --git a/htdocs/langs/lo_LA/blockedlog.lang b/htdocs/langs/lo_LA/blockedlog.lang index 81666adf6bf..62cf631eb2c 100644 --- a/htdocs/langs/lo_LA/blockedlog.lang +++ b/htdocs/langs/lo_LA/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=ລາຍຊື່ປະເທດທີ່ OnlyNonValid=ບໍ່ຖືກຕ້ອງ TooManyRecordToScanRestrictFilters=ມີບັນທຶກຫຼາຍເກີນໄປທີ່ຈະສະແກນ/ວິເຄາະ. ກະລຸນາ ຈຳ ກັດລາຍຊື່ດ້ວຍຕົວກັ່ນຕອງທີ່ເຂັ້ມງວດກວ່າ. RestrictYearToExport=ຈຳ ກັດເດືອນ / ປີເພື່ອສົ່ງອອກ +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/lo_LA/errors.lang b/htdocs/langs/lo_LA/errors.lang index a09902b95c2..be5f507a576 100644 --- a/htdocs/langs/lo_LA/errors.lang +++ b/htdocs/langs/lo_LA/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=ລາຍຊື່ຜູ້ຕິດ ErrorCashAccountAcceptsOnlyCashMoney=ບັນຊີທະນາຄານນີ້ເປັນບັນຊີເງິນສົດ, ສະນັ້ນມັນຮັບເອົາການຊໍາລະດ້ວຍເງິນສົດປະເພດເທົ່ານັ້ນ. ErrorFromToAccountsMustDiffers=ບັນຊີທະນາຄານແຫຼ່ງທີ່ມາແລະເປົ້າmustາຍຕ້ອງແຕກຕ່າງກັນ. ErrorBadThirdPartyName=ຄ່າບໍ່ຖືກຕ້ອງ ສຳ ລັບຊື່ພາກສ່ວນທີສາມ +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=%s ແມ່ນເປັນການບັງຄັບ +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=ໄວຍະກອນບໍ່ດີ ສຳ ລັບລະຫັດລູກຄ້າ ErrorBadBarCodeSyntax=ໄວຍະກອນບໍ່ຖືກຕ້ອງ ສຳ ລັບບາໂຄດ. ບາງທີເຈົ້າອາດຈະຕັ້ງປະເພດບາໂຄດບໍ່ຖືກຕ້ອງຫຼືເຈົ້າໄດ້ກໍານົດ ໜ້າ ກາກບາໂຄດສໍາລັບຕົວເລກທີ່ບໍ່ກົງກັບຄ່າທີ່ສະແກນໄວ້. ErrorCustomerCodeRequired=ຕ້ອງການລະຫັດລູກຄ້າ @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=ບໍ່ຢູ່ໃນວັດຈະນ ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=ພາຣາມິເຕີ PHP ຂອງເຈົ້າ upload_max_filesize (%s) ສູງກວ່າພາລາມິເຕີ PHP post_max_size (%s). ອັນນີ້ບໍ່ແມ່ນການຕັ້ງທີ່ສອດຄ່ອງ. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/lo_LA/eventorganization.lang b/htdocs/langs/lo_LA/eventorganization.lang index d78795fde47..3812ff301c5 100644 --- a/htdocs/langs/lo_LA/eventorganization.lang +++ b/htdocs/langs/lo_LA/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Categoryວດtoູ່ເພື່ອ EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Categoryວດtoູ່ເພື່ອເພີ່ມໃສ່ພາກສ່ວນທີສາມສ້າງໂດຍອັດຕະໂນມັດເມື່ອພວກເຂົາແນະ ນຳ ບູດ EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = ແມ່ແບບຂອງອີເມລ send ເພື່ອສົ່ງຫຼັງຈາກໄດ້ຮັບຄໍາແນະນໍາຂອງກອງປະຊຸມ. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = ແມ່ແບບຂອງອີເມວທີ່ຈະສົ່ງຫຼັງຈາກໄດ້ຮັບຄໍາແນະນໍາຂອງບູດ. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = ແມ່ແບບຂອງອີເມລ act ຂອງການນວດໃຫ້ກັບຜູ້ເຂົ້າຮ່ວມ -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = ແມ່ແບບຂອງອີເມລ act ຂອງການນວດໃຫ້ຜູ້ເວົ້າ -EVENTORGANIZATION_FILTERATTENDEES_CAT = ກັ່ນຕອງລາຍການຄັດເລືອກຂອງພາກສ່ວນທີສາມໃນບັດການສ້າງ/ຜູ້ເຂົ້າຮ່ວມທີ່ມີcategoryວດ -EVENTORGANIZATION_FILTERATTENDEES_TYPE = ກັ່ນຕອງລາຍການຄັດເລືອກຂອງພາກສ່ວນທີສາມຢູ່ໃນບັດ/ຮູບແບບການສ້າງຜູ້ເຂົ້າຮ່ວມທີ່ມີປະເພດຂອງລູກຄ້າ +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = ການສື່ສານກັບຜູ້ເຂົ້າຮ່ວມ EventOrganizationMassEmailSpeakers = ການສື່ສານກັບລໍາໂພງ +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=ລາຄາການລົງທະບຽນ PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=ລາຄາຈອງເພື່ອຢືນບູດ PriceOfBoothHelp=ລາຄາຈອງເພື່ອຢືນບູດ -EventOrganizationICSLink=ເຊື່ອມຕໍ່ ICS ສໍາລັບເຫດການ +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=ຂໍ້ມູນກອງປະຊຸມຫຼືບູດ Attendees=ຜູ້ເຂົ້າຮ່ວມ ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = ດາວໂຫຼດການເຊື່ອມຕໍ່ ICS -EVENTORGANIZATION_SECUREKEY = ກະແຈຄວາມປອດໄພຂອງການລົງທະບຽນສາທາລະນະເຊື່ອມຕໍ່ກັບກອງປະຊຸມ +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = ການບໍລິການທີ່ໃຊ້ສໍາລັບແຖວໃບເກັບເງິນກ່ຽວກັບສະຖານທີ່ບູດ -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = ການບໍລິການທີ່ໃຊ້ສໍາລັບແຖວໃບເກັບເງິນກ່ຽວກັບການສະsubscriptionັກໃຊ້ເຂົ້າຮ່ວມກອງປະຊຸມ +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=ຈໍານວນຄະແນນສຽງ # # Status diff --git a/htdocs/langs/lo_LA/holiday.lang b/htdocs/langs/lo_LA/holiday.lang index 641131f704e..be1bfb4e23a 100644 --- a/htdocs/langs/lo_LA/holiday.lang +++ b/htdocs/langs/lo_LA/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=ວັນພັກເພື່ອອະນຸມັດ NobodyHasPermissionToValidateHolidays=ບໍ່ມີໃຜໄດ້ຮັບອະນຸຍາດໃຫ້ກວດສອບວັນພັກ HolidayBalanceMonthlyUpdate=ການອັບເດດຍອດເງິນໃນວັນພັກປະຈໍາເດືອນ XIsAUsualNonWorkingDay=%s ແມ່ນປົກກະຕິແລ້ວແມ່ນມື້ເຮັດວຽກບໍ່ແມ່ນ +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/lo_LA/knowledgemanagement.lang b/htdocs/langs/lo_LA/knowledgemanagement.lang index 12eada9956d..475ddd287d8 100644 --- a/htdocs/langs/lo_LA/knowledgemanagement.lang +++ b/htdocs/langs/lo_LA/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields ສໍາລັບບົດຄວາມ GroupOfTicket=ກຸ່ມຂອງປີ້ YouCanLinkArticleToATicketCategory=ເຈົ້າສາມາດເຊື່ອມຕໍ່ບົດຄວາມ ໜຶ່ງ ກັບກຸ່ມປີ້ (ສະນັ້ນບົດຄວາມຈະຖືກແນະນໍາໃນລະຫວ່າງຄຸນສົມບັດຂອງປີ້ໃ)່) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/lo_LA/mrp.lang b/htdocs/langs/lo_LA/mrp.lang index 022a7159613..258e31d28f3 100644 --- a/htdocs/langs/lo_LA/mrp.lang +++ b/htdocs/langs/lo_LA/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=ເຈົ້າແນ່ໃຈບໍ່ວ່າເ ConfirmCloneMo=ເຈົ້າແນ່ໃຈບໍ່ວ່າເຈົ້າຕ້ອງການໂຄນຄໍາສັ່ງການຜະລິດ %s? ManufacturingEfficiency=ປະສິດທິພາບການຜະລິດ ConsumptionEfficiency=ປະສິດທິພາບການບໍລິໂພກ -ValueOfMeansLoss=ມູນຄ່າ 0.95 meansາຍເຖິງການສູນເສຍສະເລ່ຍ 5%% ໃນລະຫວ່າງການຜະລິດ +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=ມູນຄ່າ 0.95 meansາຍເຖິງສະເລ່ຍ 5%% ຂອງການສູນເສຍຜະລິດຕະພັນທີ່ຜະລິດອອກມາ DeleteBillOfMaterials=ລຶບບັນຊີລາຍການວັດສະດຸ DeleteMo=ລຶບຄໍາສັ່ງການຜະລິດ diff --git a/htdocs/langs/lo_LA/other.lang b/htdocs/langs/lo_LA/other.lang index 815038a12b8..26fdf397de8 100644 --- a/htdocs/langs/lo_LA/other.lang +++ b/htdocs/langs/lo_LA/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=ໂຄງການສ້າງຂຶ້ນໂດ TicketCreatedByEmailCollector=ປີ້ສ້າງໂດຍຜູ້ເກັບອີເມລ from ຈາກອີເມລ MS MSGID %s OpeningHoursFormatDesc=ໃຊ້ a - ເພື່ອແຍກຊົ່ວໂມງເປີດແລະປິດ.
ໃຊ້ຍະຫວ່າງເພື່ອປ້ອນໄລຍະຕ່າງ different.
ຕົວຢ່າງ: 8-12 14-18 SuffixSessionName=ຄຳ ຕໍ່ທ້າຍ ສຳ ລັບຊື່ເຊດຊັນ +LoginWith=Login with %s ##### Export ##### ExportsArea=ເຂດສົ່ງອອກ diff --git a/htdocs/langs/lo_LA/products.lang b/htdocs/langs/lo_LA/products.lang index 8d34653332e..c6ccdc4adba 100644 --- a/htdocs/langs/lo_LA/products.lang +++ b/htdocs/langs/lo_LA/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/lo_LA/projects.lang b/htdocs/langs/lo_LA/projects.lang index d01843a9b6a..d5660ce0082 100644 --- a/htdocs/langs/lo_LA/projects.lang +++ b/htdocs/langs/lo_LA/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=ການປ້ອນຂໍ້ມູນຕໍ່ເດືອນ InputDetail=ລາຍລະອຽດການປ້ອນຂໍ້ມູນ TimeAlreadyRecorded=ນີ້ແມ່ນເວລາທີ່ໃຊ້ບັນທຶກໄວ້ແລ້ວສໍາລັບ ໜ້າ ວຽກ/ມື້ນີ້ແລະຜູ້ໃຊ້ %s ProjectsWithThisUserAsContact=ໂຄງການທີ່ມີຜູ້ໃຊ້ນີ້ເປັນຜູ້ຕິດຕໍ່ +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=ມອບTasາຍ ໜ້າ ວຽກໃຫ້ຜູ້ໃຊ້ນີ້ແລ້ວ ResourceNotAssignedToProject=ບໍ່ໄດ້ມອບtoາຍໃຫ້ກັບໂຄງການ ResourceNotAssignedToTheTask=ບໍ່ໄດ້ມອບtoາຍ ໜ້າ ທີ່ @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Noteາຍເຫດ: ໂຄງ SelectLinesOfTimeSpentToInvoice=ເລືອກແຖວທີ່ໃຊ້ເວລາທີ່ຍັງບໍ່ໄດ້ຮຽກເກັບເງິນ, ຈາກນັ້ນປະຕິບັດຫຼາຍ bulk ອັນ "ສ້າງໃບແຈ້ງ ໜີ້" ເພື່ອເກັບເງິນເຂົາເຈົ້າ ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/lo_LA/receptions.lang b/htdocs/langs/lo_LA/receptions.lang index b8b235929da..c21744ec76d 100644 --- a/htdocs/langs/lo_LA/receptions.lang +++ b/htdocs/langs/lo_LA/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=ການຕັ້ງຄ່າການຮັບຜະລິດຕະພັນ +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=ອ້າງອີງ ການຕ້ອນຮັບ Reception=ການຕ້ອນຮັບ Receptions=ການຮັບ @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=ການຮັບແລະການຮັບ ReceptionsToValidate=ການຮັບເພື່ອກວດສອບ StatusReceptionCanceled=ຍົກເລີກແລ້ວ StatusReceptionDraft=ຮ່າງ -StatusReceptionValidated=ກວດສອບແລ້ວ (ສິນຄ້າທີ່ຈະຈັດສົ່ງຫຼືຖືກຈັດສົ່ງແລ້ວ) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=ປະມວນຜົນແລ້ວ StatusReceptionDraftShort=ຮ່າງ StatusReceptionValidatedShort=ກວດສອບແລ້ວ @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=ສະຖິຕິທີ່ດໍາເນີນ SendReceptionByEMail=ສົ່ງການຕ້ອນຮັບທາງອີເມລ SendReceptionRef=ການສົ່ງການຕ້ອນຮັບ %s ActionsOnReception=ເຫດການໃນການຕ້ອນຮັບ -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=ສາຍຮັບ ProductQtyInReceptionAlreadySent=ປະລິມານຜະລິດຕະພັນຈາກໃບສັ່ງຂາຍເປີດສົ່ງແລ້ວ ProductQtyInSuppliersReceptionAlreadyRecevied=ປະລິມານຜະລິດຕະພັນຈາກຄໍາສັ່ງເປີດໃຫ້ຜູ້ສະ ໜອງ ໄດ້ຮັບແລ້ວ @@ -46,3 +49,6 @@ ReceptionsReceiptModel=ແມ່ແບບເອກະສານສໍາລັບ NoMorePredefinedProductToDispatch=ບໍ່ມີຜະລິດຕະພັນທີ່ ກຳ ນົດໄວ້ລ່ວງ ໜ້າ ຫຼາຍກວ່າທີ່ຈະສົ່ງ ReceptionExist=ມີການຕ້ອນຮັບຢູ່ ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/lt_LT/admin.lang b/htdocs/langs/lt_LT/admin.lang index 0b98cc789e0..4c95f955423 100644 --- a/htdocs/langs/lt_LT/admin.lang +++ b/htdocs/langs/lt_LT/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Organizacija Version=Versija Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=Žingsnis %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/lt_LT/bills.lang b/htdocs/langs/lt_LT/bills.lang index 8cf5b44197b..14271ea6324 100644 --- a/htdocs/langs/lt_LT/bills.lang +++ b/htdocs/langs/lt_LT/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Mokėjimų ataskaitos PaymentsAlreadyDone=Jau atlikti mokėjimai PaymentsBackAlreadyDone=Refunds already done PaymentRule=Mokėjimo taisyklė -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debetinė / Kreditinė kortelė -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Pateikta sąskaita RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Projektas PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debetinė / Kreditinė kortelė +PaymentTypePP=PayPal BankDetails=Banko duomenys BankCode=Banko kodas DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/lt_LT/blockedlog.lang b/htdocs/langs/lt_LT/blockedlog.lang index f86bbba591f..8279758e315 100644 --- a/htdocs/langs/lt_LT/blockedlog.lang +++ b/htdocs/langs/lt_LT/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/lt_LT/errors.lang b/htdocs/langs/lt_LT/errors.lang index 9559426de52..7155a7694df 100644 --- a/htdocs/langs/lt_LT/errors.lang +++ b/htdocs/langs/lt_LT/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Šis kontaktas jau yra apibrėžtas k ErrorCashAccountAcceptsOnlyCashMoney=Tai banko sąskaita yra pinigų sąskaita, todėl ji priima mokėjimus tik grynaisiais pinigais. ErrorFromToAccountsMustDiffers=Šaltinis ir tikslinės banko sąskaitos turi būti skirtingi. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=%s yra privalomas +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bloga kliento kodo sintaksė ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Kliento kodas reikalingas @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/lt_LT/eventorganization.lang b/htdocs/langs/lt_LT/eventorganization.lang index 88d9a9e03e8..d02b8794379 100644 --- a/htdocs/langs/lt_LT/eventorganization.lang +++ b/htdocs/langs/lt_LT/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/lt_LT/holiday.lang b/htdocs/langs/lt_LT/holiday.lang index e011cadaac2..9df0640e8c6 100644 --- a/htdocs/langs/lt_LT/holiday.lang +++ b/htdocs/langs/lt_LT/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/lt_LT/knowledgemanagement.lang b/htdocs/langs/lt_LT/knowledgemanagement.lang index 1d0aa7e6c3d..ae6d09e3c53 100644 --- a/htdocs/langs/lt_LT/knowledgemanagement.lang +++ b/htdocs/langs/lt_LT/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/lt_LT/mrp.lang b/htdocs/langs/lt_LT/mrp.lang index 4e66578c8e3..67aa79af6ab 100644 --- a/htdocs/langs/lt_LT/mrp.lang +++ b/htdocs/langs/lt_LT/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/lt_LT/other.lang b/htdocs/langs/lt_LT/other.lang index fcb9eed9dfd..110ced16ac7 100644 --- a/htdocs/langs/lt_LT/other.lang +++ b/htdocs/langs/lt_LT/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Eksporto sritis diff --git a/htdocs/langs/lt_LT/products.lang b/htdocs/langs/lt_LT/products.lang index dbee3b4dd62..e6eda77bc6f 100644 --- a/htdocs/langs/lt_LT/products.lang +++ b/htdocs/langs/lt_LT/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/lt_LT/projects.lang b/htdocs/langs/lt_LT/projects.lang index c71eca6251c..8c7a271873c 100644 --- a/htdocs/langs/lt_LT/projects.lang +++ b/htdocs/langs/lt_LT/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projektai su šiuo vartotoju kaip kontaktu. +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Užduotys, priskirtos šiam vartotojui ResourceNotAssignedToProject=Nepriskirtas projektui ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=Pabaigos data negali būti ankstesnė už pradžios datą diff --git a/htdocs/langs/lt_LT/receptions.lang b/htdocs/langs/lt_LT/receptions.lang index a8fe955bb11..ca96b036d0a 100644 --- a/htdocs/langs/lt_LT/receptions.lang +++ b/htdocs/langs/lt_LT/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Priėmimas Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Atšauktas StatusReceptionDraft=Projektas -StatusReceptionValidated=Patvirtinta (produktai siuntimui arba jau išsiųsti) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Apdorotas StatusReceptionDraftShort=Projektas StatusReceptionValidatedShort=Galiojantis @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/lv_LV/accountancy.lang b/htdocs/langs/lv_LV/accountancy.lang index a327ac9cfad..3ee38b2080c 100644 --- a/htdocs/langs/lv_LV/accountancy.lang +++ b/htdocs/langs/lv_LV/accountancy.lang @@ -48,7 +48,7 @@ CountriesNotInEEC=Valstis, kas nav EEK valstīs CountriesInEECExceptMe=Valstis EEK, izņemot %s CountriesExceptMe=Visas valstis, izņemot %s AccountantFiles=Eksportēt pirmdokumentus -ExportAccountingSourceDocHelp=With this tool, you can export the source events (list in CSV and PDFs) that are used to generate your accountancy. +ExportAccountingSourceDocHelp=Izmantojot šo rīku, varat eksportēt avota notikumus (sarakstu CSV un PDF formātā), kas tiek izmantoti jūsu grāmatvedības uzskaitei. ExportAccountingSourceDocHelp2=Lai eksportētu žurnālus, izmantojiet izvēlnes ierakstu %s - %s. VueByAccountAccounting=Skatīt pēc grāmatvedības konta VueBySubAccountAccounting=Skatīt pēc grāmatvedības apakškonta diff --git a/htdocs/langs/lv_LV/admin.lang b/htdocs/langs/lv_LV/admin.lang index d51bef4fdba..94a2b211349 100644 --- a/htdocs/langs/lv_LV/admin.lang +++ b/htdocs/langs/lv_LV/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Treknrakstā atsauce un periods PDF formātā -BoldLabelOnPDF=Treknrakstā etiķete PDF formātā +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Organizācija Version=Versija Publisher=Izdevējs @@ -343,7 +343,7 @@ StepNb=Solis %s FindPackageFromWebSite=Atrodiet papildinājumu, kas nodrošina vajadzīgās funkcijas (piemēram, oficiālajā tīmekļa vietnē %s). DownloadPackageFromWebSite=Lejupielādējiet paketi (piemēram, no oficiālās tīmekļa vietnes %s). UnpackPackageInDolibarrRoot=Atarhivējiet saarhivētos failus savā Dolibarr servera direktorijā: %s -UnpackPackageInModulesRoot=Lai izvietotu/instalētu ārējo moduli, atarhivējiet failus ārējo moduļu servera direktorijā:
%s +UnpackPackageInModulesRoot=Lai izvietotu/instalētu ārēju moduli, arhīva fails ir jāizpako/izpako arhīva failu servera direktorijā, kas paredzēts ārējiem moduļiem:
%s SetupIsReadyForUse=Moduļa izvietošana ir pabeigta. Tomēr savā pieteikumā ir jāiespējo un jāiestata modulis, dodoties uz lapu iestatīšanas moduļiem: %s . NotExistsDirect=Alternatīva saknes direktorijs nav definēta.
InfDirAlt=Kopš 3 versijas, ir iespējams noteikt alternatīvu sakne directory.Tas ļauj jums saglabāt, tajā pašā vietā, papildinājumus un pielāgotas veidnes.
Jums tikai jāizveido direktoriju Dolibarr saknē (piemēram: custom).
@@ -756,7 +756,7 @@ Permission106=Eksportēt sūtījumus Permission109=Dzēst sūtījumus Permission111=Lasīt finanšu kontus Permission112=Izveidot/labot/dzēst un salīdzināt darījumus -Permission113=Setup financial accounts (create, manage categories of bank transactions) +Permission113=Iestatīt finanšu kontus (izveidot, pārvaldīt bankas darījumu kategorijas) Permission114=Vienkāršojiet darījumus Permission115=Eksportēt darījumus un kontu izrakstus Permission116=Pārvietot starp kontiem @@ -893,11 +893,11 @@ Permission701=Lasīt ziedojumus Permission702=Izveidot/mainīt ziedojumus Permission703=Dzēst ziedojumus Permission771=Read expense reports (yours and your subordinates) -Permission772=Create/modify expense reports (for you and your subordinates) +Permission772=Izveidojiet/pārveidojiet izdevumu pārskatus (jums un jūsu padotajiem) Permission773=Dzēst izdevumu pārskatus Permission775=Apstiprināt izdevumu pārskatus Permission776=Apmaksāt izdevumu pārskatus -Permission777=Read all expense reports (even those of user not subordinates) +Permission777=Lasīt visus izdevumu pārskatus (arī lietotāja, kas nav padotie) Permission778=Izveidojiet / mainiet visu izdevumu pārskatus Permission779=Eksportēt izdevumu atskaites Permission1001=Lasīt krājumus @@ -961,11 +961,11 @@ Permission2801=Lietot FTP klientu lasīšanas režīmā (pārlūko un lejupielā Permission2802=Lietot FTP klientu rakstīšanas režīmā (dzēst vai augšupielādēt failus) Permission3200=Lasīt arhivētos notikumus un pirkstu nospiedumus Permission3301=Ģenerējiet jaunus moduļus -Permission4001=Read skill/job/position -Permission4002=Create/modify skill/job/position -Permission4003=Delete skill/job/position -Permission4020=Read evaluations -Permission4021=Create/modify your evaluation +Permission4001=Izlasiet prasmes/darbu/amatu +Permission4002=Izveidot/mainīt prasmes/darbu/amatu +Permission4003=Dzēst prasmi/darbu/amatu +Permission4020=Lasīt vērtējumus +Permission4021=Izveidojiet/pārveidojiet savu vērtējumu Permission4022=Apstipriniet novērtējumu Permission4023=Dzēst novērtējumu Permission4030=Skatiet salīdzināšanas izvēlni @@ -976,9 +976,9 @@ Permission10005=Dzēst vietnes saturu Permission20001=Lasiet atvaļinājuma pieprasījumus (jūsu atvaļinājumu un jūsu padoto atvaļinājumu) Permission20002=Izveidojiet / modificējiet atvaļinājuma pieprasījumus (jūsu atvaļinājumu un jūsu padotajiem) Permission20003=Dzēst atvaļinājumu pieprasījumus -Permission20004=Read all leave requests (even those of user not subordinates) -Permission20005=Create/modify leave requests for everybody (even those of user not subordinates) -Permission20006=Administer leave requests (setup and update balance) +Permission20004=Lasīt visus atvaļinājuma pieprasījumus (arī tos, kas ir lietotāja, kas nav padotie) +Permission20005=Izveidot/mainīt atvaļinājuma pieprasījumus visiem (arī lietotājiem, kas nav padotie) +Permission20006=Administrēt atvaļinājuma pieprasījumus (iestatīt un atjaunināt atlikumu) Permission20007=Apstipriniet atvaļinājuma pieprasījumus Permission23001=Apskatīt ieplānoto darbu Permission23002=Izveidot/atjaunot ieplānoto uzdevumu @@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Lai instalētu vai izveidotu ārēju moduli no lietoju HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Iezīmējiet līnijas krāsu, kad pele iet pāri (izmantojiet 'ffffff', lai nerādītu izcilumu) HighlightLinesChecked=Iezīmējiet līnijas krāsu, kad tā ir pārbaudīta (izmantojiet 'ffffff', lai nerādītu izcilumu) +BtnActionColor=Darbības pogas krāsa +TextBtnActionColor=Darbības pogas teksta krāsa TextTitleColor=Lapas nosaukuma teksta krāsa LinkColor=Linku krāsa PressF5AfterChangingThis=Nospiediet CTRL + F5 uz tastatūras vai dzēsiet pārlūkprogrammas kešatmiņu pēc šīs vērtības mainīšanas, lai tā būtu efektīva @@ -2064,14 +2066,14 @@ EmailCollectorConfirmCollect=Vai vēlaties savākt šīs kolekcijas kolekciju ta NoNewEmailToProcess=Nav apstrādāts jauns e-pasts (atbilstošie filtri) NothingProcessed=Nekas nav paveikts XEmailsDoneYActionsDone=%s kvalificēti e-pasta ziņojumi, %s veiksmīgi apstrādāti e-pasta ziņojumi (par %s ierakstu / veiktajām darbībām) -RecordEvent=Record an event in agenda (with type Email sent or received) -CreateLeadAndThirdParty=Create a lead (and a third party if necessary) -CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation, with no third party otherwise) +RecordEvent=Ierakstiet notikumu dienas kārtībā (ar veidu E-pasts nosūtīts vai saņemts) +CreateLeadAndThirdParty=Izveidojiet potenciālo pirkumu (un, ja nepieciešams, trešo pusi) +CreateTicketAndThirdParty=Izveidojiet biļeti (saistītu ar trešo pusi, ja trešā puse tika ielādēta iepriekšējās darbības rezultātā, bez trešās puses citādi) CodeLastResult=Jaunākais rezultātu kods NbOfEmailsInInbox=E-pasta ziņojumu skaits avota direktorijā LoadThirdPartyFromName=Ielādējiet trešo personu meklēšanu pakalpojumā %s (tikai ielāde) LoadThirdPartyFromNameOrCreate=Ielādējiet trešo personu meklēšanu pakalpojumā %s (izveidojiet, ja nav atrasts) -AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. +AttachJoinedDocumentsToObject=Saglabājiet pievienotos failus objektu dokumentos, ja e-pasta tēmā tiek atrasta objekta atsauce. WithDolTrackingID=Ziņojums no sarunas, kuru aizsāka pirmais e-pasts, kas nosūtīts no Dolibarr WithoutDolTrackingID=Ziņojums no sarunas, kuru aizsāka pirmais e-pasts, kuru NAV nosūtīts no Dolibarr WithDolTrackingIDInMsgId=Ziņojums nosūtīts no Dolibarr @@ -2080,7 +2082,7 @@ CreateCandidature=Izveidot darba pieteikumu FormatZip=Pasta indekss MainMenuCode=Izvēlnes ievades kods (mainmenu) ECMAutoTree=Rādīt automātisko ECM koku -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=Definējiet noteikumus, kas jāizmanto, lai iegūtu vai iestatītu vērtības.
Piemērs darbībām, kurām nepieciešams izvilkt nosaukumu no e-pasta tēmas:
name=EXTRACT:SUBJECT:Ziņojums no uzņēmuma ([^\n] *)
Piemērs darbībām, kas rada objekti:
objproperty1 = SET: vērtība, kas noteikta
objproperty2 = SET: vērtība, ieskaitot vērtības __objproperty1__
objproperty3 = SETIFEMPTY: vērtība, ko izmanto, ja objproperty3 jau nav definēts
objproperty4 = ekstrakts: HEADER :X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:s(uzņēmums [^\\s]*)

Izmantojiet ; char kā atdalītājs, lai iegūtu vai iestatītu vairākas īpašības. OpeningHours=Darba laiks OpeningHoursDesc=Ievadiet šeit sava uzņēmuma pastāvīgo darba laiku. ResourceSetup=Resursu moduļa konfigurēšana @@ -2126,7 +2128,7 @@ LargerThan=Lielāks nekā IfTrackingIDFoundEventWillBeLinked=Ņemiet vērā: ja objekta izsekošanas ID tiek atrasts e-pastā vai ja e-pasts ir atbilde uz e-pastu, kas ir savākts un saistīts ar objektu, izveidotais notikums tiks automātiski saistīts ar zināmo saistīto objektu. WithGMailYouCanCreateADedicatedPassword=Izmantojot GMail kontu, ja esat iespējojis 2 soļu validāciju, ieteicams izveidot īpašu lietojumprogrammas otro paroli, nevis izmantot sava konta caurlaides paroli no https://myaccount.google.com/. EmailCollectorTargetDir=Vēlama rīcība var būt e-pasta pārvietošana citā tagā / direktorijā, kad tas tika veiksmīgi apstrādāts. Vienkārši šeit iestatiet direktorijas nosaukumu, lai izmantotu šo funkciju (nelietojiet nosaukumā īpašās rakstzīmes). Ņemiet vērā, ka jāizmanto arī lasīšanas / rakstīšanas pieteikšanās konts. -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=Varat izmantot šo darbību, lai izmantotu e-pasta saturu, lai atrastu un ielādētu esošu trešo pusi savā datu bāzē. Atrastā (vai izveidotā) trešā puse tiks izmantota turpmākajām darbībām, kurām tā ir nepieciešama.
Piemēram, ja vēlaties izveidot trešo pusi ar nosaukumu, kas izvilkts no virknes 'Vārds: jāatrod vārds', kas atrodas pamattekstā, izmantojiet sūtītāja e-pastu kā e-pastu, parametra lauku varat iestatīt šādi:
'email= HEADER:^No:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
EndPointFor=Beigu punkts %s: %s DeleteEmailCollector=Dzēst e-pasta kolekcionāru ConfirmDeleteEmailCollector=Vai tiešām vēlaties dzēst šo e-pasta kolekcionāru? @@ -2215,4 +2217,6 @@ MissingTranslationForConfKey = Trūkst tulkojuma %s NativeModules=Vietējie moduļi NoDeployedModulesFoundWithThisSearchCriteria=Šiem meklēšanas kritērijiem nav atrasts neviens modulis API_DISABLE_COMPRESSION=Atspējot API atbilžu saspiešanu -EachTerminalHasItsOwnCounter=Each terminal use its own counter. +EachTerminalHasItsOwnCounter=Katrs terminālis izmanto savu skaitītāju. +FillAndSaveAccountIdAndSecret=Vispirms aizpildiet un saglabājiet konta ID un noslēpumu +PreviousHash=Iepriekšējais hash diff --git a/htdocs/langs/lv_LV/bills.lang b/htdocs/langs/lv_LV/bills.lang index 07a87649439..c1c3116e49a 100644 --- a/htdocs/langs/lv_LV/bills.lang +++ b/htdocs/langs/lv_LV/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Maksājumu atskaites PaymentsAlreadyDone=Jau samaksāts PaymentsBackAlreadyDone=Jau veiktas atmaksas PaymentRule=Maksājuma noteikums -PaymentMode=Maksājuma veids -DefaultPaymentMode=Noklusējuma maksājuma veids +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Noklusējuma bankas konts -PaymentTypeDC=Debet karte/ kredīt karte -PaymentTypePP=PayPal -IdPaymentMode=Maksājuma veids (id) -CodePaymentMode=Maksājuma veids (kods) -LabelPaymentMode=Maksājuma veids (etiķete) -PaymentModeShort=Maksājuma veids +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Maksājuma termiņš PaymentConditions=Maksājuma nosacījumi PaymentConditionsShort=Maksājuma nosacījumi @@ -450,6 +449,8 @@ PaymentTypeTRA=Bankas sagatave PaymentTypeShortTRA=Melnraksts PaymentTypeFAC=Faktors PaymentTypeShortFAC=Faktors +PaymentTypeDC=Debet karte/ kredīt karte +PaymentTypePP=PayPal BankDetails=Bankas rekvizīti BankCode=Bankas kods DeskCode=Filiāles kods diff --git a/htdocs/langs/lv_LV/blockedlog.lang b/htdocs/langs/lv_LV/blockedlog.lang index 79ac073bbad..3cd7c235e6c 100644 --- a/htdocs/langs/lv_LV/blockedlog.lang +++ b/htdocs/langs/lv_LV/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=To valstu saraksts, kurās šī moduļa iz OnlyNonValid=Nederīgs TooManyRecordToScanRestrictFilters=Pārāk daudz ierakstu, lai skenētu / analizētu. Lūdzu, ierobežojiet sarakstu ar vairāk ierobežojošiem filtriem. RestrictYearToExport=Ierobežot mēnesi / gads eksportam +BlockedLogEnabled=Ir iespējota sistēma notikumu izsekošanai nemainīgos žurnālos +BlockedLogDisabled=Sistēma notikumu izsekošanai nemainīgos žurnālos ir atspējota pēc ierakstīšanas. Mēs saglabājām īpašu pirkstu nospiedumu, lai izsekotu ķēdei kā pārrautai +BlockedLogDisabledBis=Sistēma notikumu izsekošanai nemainīgos žurnālos ir atspējota. Tas ir iespējams, jo neviens ieraksts vēl nav veikts. diff --git a/htdocs/langs/lv_LV/companies.lang b/htdocs/langs/lv_LV/companies.lang index b24e4a59006..60de56f60d6 100644 --- a/htdocs/langs/lv_LV/companies.lang +++ b/htdocs/langs/lv_LV/companies.lang @@ -157,15 +157,15 @@ ProfId3CL=- ProfId4CL=- ProfId5CL=- ProfId6CL=- -ProfId1CM=Id. prof. 1 (Trade Register) -ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1CM=Id. prof. 1 (Tirdzniecības reģistrs) +ProfId2CM=Id. prof. 2 (nodokļu maksātāja Nr.) +ProfId3CM=Id. prof. 3 (dibināšanas dekrēts) ProfId4CM=- ProfId5CM=- ProfId6CM=- -ProfId1ShortCM=Trade Register -ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation +ProfId1ShortCM=Tirdzniecības reģistrs +ProfId2ShortCM=Nodokļu maksātājs Nr. +ProfId3ShortCM=Radīšanas dekrēts ProfId4ShortCM=- ProfId5ShortCM=- ProfId6ShortCM=- diff --git a/htdocs/langs/lv_LV/errors.lang b/htdocs/langs/lv_LV/errors.lang index e48742d470c..58997394f1d 100644 --- a/htdocs/langs/lv_LV/errors.lang +++ b/htdocs/langs/lv_LV/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Šī kontaktpersona jau ir definēts ErrorCashAccountAcceptsOnlyCashMoney=Šis bankas konts ir naudas konts, lai tā pieņem maksājumus no veida tikai skaidrā naudā. ErrorFromToAccountsMustDiffers=Avota un mērķa banku kontiem jābūt atšķirīgiem. ErrorBadThirdPartyName=Nepareiza trešās puses nosaukuma vērtība +ForbiddenBySetupRules=Aizliegts ar iestatīšanas noteikumiem ErrorProdIdIsMandatory=%s ir obligāti +ErrorAccountancyCodeCustomerIsMandatory=Klienta %s grāmatvedības kods ir obligāts ErrorBadCustomerCodeSyntax=Nepareiza klienta koda sintakse ErrorBadBarCodeSyntax=Slikta svītrkodu sintakse. Iespējams, jūs iestatāt sliktu svītrkodu tipu vai definējāt svītrkoda masku numurēšanai, kas neatbilst skenētajai vērtībai. ErrorCustomerCodeRequired=Klienta kods nepieciešams @@ -273,7 +275,8 @@ ErrorWrongFileName=Faila nosaukumā nedrīkst būt __SOMETHING__ ErrorNotInDictionaryPaymentConditions=Nav Maksājumu nosacījumu vārdnīcā, lūdzu, modificējiet. ErrorIsNotADraft=%s nav melnraksts ErrorExecIdFailed=Nevar izpildīt komandu "id" -ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorBadCharIntoLoginName=Neatļauta rakstzīme pieteikšanās vārdā +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Jūsu PHP parametrs upload_max_filesize (%s) ir augstāks nekā PHP parametrs post_max_size (%s). Šī nav konsekventa iestatīšana. @@ -315,6 +318,7 @@ RequireAtLeastXString = Nepieciešama vismaz %s rakstzīme (s) RequireXStringMax = Nepieciešama maks. %s rakstzīme (s) RequireAtLeastXDigits = Nepieciešams vismaz %s cipars RequireXDigitsMax = Nepieciešams maks. %s cipars +RequireValidNumeric = Nepieciešama skaitliska vērtība RequireValidEmail = E -pasta adrese nav derīga RequireMaxLength = Garumam jābūt mazākam par %s rakstzīmēm RequireMinLength = Garumam jābūt lielākam par %s char (s) diff --git a/htdocs/langs/lv_LV/eventorganization.lang b/htdocs/langs/lv_LV/eventorganization.lang index 5284dc4edfc..3afd7a79508 100644 --- a/htdocs/langs/lv_LV/eventorganization.lang +++ b/htdocs/langs/lv_LV/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Kategorija, ko pievienot trešajām pu EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Kategorija, ko pievienot trešajām pusēm, tiek automātiski izveidota, kad viņi iesaka stendu EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = E-pasta ziņojuma veidne, kas jānosūta pēc konferences ieteikuma saņemšanas. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = E-pasta ziņojuma veidne, kas jānosūta pēc stenda ieteikuma saņemšanas. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = E -pasta veidne, kas jānosūta pēc reģistrācijas stendā. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = E-pasta veidne, kas jānosūta pēc tam, kad ir apmaksāta reģistrācija stendā. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = E -pasta veidne, kas jānosūta pēc reģistrācijas pasākumā, ir apmaksāta. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Masveida dalībnieku e-pasta veidne -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Masu sarunu e-pasta ziņojuma veidne -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filtrējiet trešās puses atlasīto sarakstu dalībnieku izveides kartītē / veidlapā ar kategoriju -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filtrējiet trešās puses atlasīto sarakstu dalībnieku izveidošanas kartītē / veidlapā ar klienta tipu +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = E-pasta veidne, kas jāizmanto, sūtot e-pasta ziņojumus no masveida “Sūtīt e-pasta ziņojumus” runātājiem +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = E-pasta veidne, kas jāizmanto, sūtot e-pasta ziņojumus no dalībnieku saraksta “Sūtīt e-pasta ziņojumus”. +EVENTORGANIZATION_FILTERATTENDEES_CAT = Dalībnieka izveides/pievienošanas veidlapā trešo pušu saraksts tiek ierobežots ar trešām personām šajā kategorijā +EVENTORGANIZATION_FILTERATTENDEES_TYPE = Dalībnieka izveides/pievienošanas veidlapā trešo pušu saraksts tiek ierobežots līdz trešajām personām ar raksturu # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Jūsu kabīnes apmaksa EventOrganizationEmailRegistrationPayment = Reģistrācija pasākumam EventOrganizationMassEmailAttendees = Saziņa ar apmeklētājiem EventOrganizationMassEmailSpeakers = Saziņa ar runātājiem +ToSpeakers=Skaļruņiem # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Reģistrācijas cena PriceOfRegistrationHelp=Cena, kas jāmaksā, lai reģistrētos vai piedalītos pasākumā PriceOfBooth=Abonēšanas cena, lai stāvētu kabīnē PriceOfBoothHelp=Abonēšanas cena, lai stāvētu kabīnē -EventOrganizationICSLink=Saistiet notikumu ICS +EventOrganizationICSLink=Saite ICS konferencēm ConferenceOrBoothInformation=Konferences vai stenda informācija Attendees=Dalībnieki ListOfAttendeesOfEvent=Pasākuma projekta dalībnieku saraksts DownloadICSLink = Lejupielādēt ICS saiti -EVENTORGANIZATION_SECUREKEY = Konferences publiskās reģistrācijas saites drošā atslēga +EVENTORGANIZATION_SECUREKEY = Sēklas, lai nodrošinātu atslēgu publiskajai reģistrācijas lapai, lai ieteiktu konferenci SERVICE_BOOTH_LOCATION = Pakalpojums, kas izmantots rēķinu rindai par kabīnes atrašanās vietu -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Pakalpojums, kas tiek izmantots rēķina rindā par konferences dalībnieka abonementu +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Pakalpojums, kas tiek izmantots rēķina rindai par pasākuma dalībnieka abonementu NbVotes=Balsu skaits # # Status diff --git a/htdocs/langs/lv_LV/holiday.lang b/htdocs/langs/lv_LV/holiday.lang index 3b68c50bd80..5b29fb9dd97 100644 --- a/htdocs/langs/lv_LV/holiday.lang +++ b/htdocs/langs/lv_LV/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Brīvdienas, kas jāapstiprina NobodyHasPermissionToValidateHolidays=Nevienam nav atļaujas apstiprināt brīvdienas HolidayBalanceMonthlyUpdate=Ikmēneša brīvdienu bilances atjauninājums XIsAUsualNonWorkingDay=%s parasti ir NAV darba diena +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Atstāšanas pieprasījumam %s jābūt melnrakstam, tas ir jāatceļ vai jāatsakās dzēst diff --git a/htdocs/langs/lv_LV/knowledgemanagement.lang b/htdocs/langs/lv_LV/knowledgemanagement.lang index 683f695d873..007279c1986 100644 --- a/htdocs/langs/lv_LV/knowledgemanagement.lang +++ b/htdocs/langs/lv_LV/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Raksta paplašinājumi GroupOfTicket=Biļešu grupa YouCanLinkArticleToATicketCategory=Rakstu var saistīt ar biļešu grupu (tāpēc raksts tiks ieteikts jauno biļešu kvalifikācijas iegūšanas laikā) SuggestedForTicketsInGroup=Ieteicams biļetēm, kad grupa ir + +SetObsolete=Iestatīt kā novecojušu +ConfirmCloseKM=Vai apstiprināt, ka šī raksta slēgšana ir novecojusi? +ConfirmReopenKM=Vai vēlaties atjaunot šī raksta statusu "Apstiprināts"? diff --git a/htdocs/langs/lv_LV/main.lang b/htdocs/langs/lv_LV/main.lang index d882716cb76..127cfdc0446 100644 --- a/htdocs/langs/lv_LV/main.lang +++ b/htdocs/langs/lv_LV/main.lang @@ -212,8 +212,8 @@ User=Lietotājs Users=Lietotāji Group=Grupa Groups=Grupas -UserGroup=User group -UserGroups=User groups +UserGroup=Lietotāju grupa +UserGroups=Lietotāju grupas NoUserGroupDefined=Nav definēta neviena lietotāju grupa Password=Parole PasswordRetype=PArole atkārtoti diff --git a/htdocs/langs/lv_LV/mrp.lang b/htdocs/langs/lv_LV/mrp.lang index ac9d56d7d9c..0c06f88010e 100644 --- a/htdocs/langs/lv_LV/mrp.lang +++ b/htdocs/langs/lv_LV/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Vai tiešām vēlaties klonēt materiālu rēķinu % ConfirmCloneMo=Vai tiešām vēlaties klonēt ražošanas pasūtījumu %s? ManufacturingEfficiency=Ražošanas efektivitāte ConsumptionEfficiency=Patēriņa efektivitāte -ValueOfMeansLoss=0,95 vērtība nozīmē vidējo 5%% zudumu ražošanas laikā +ValueOfMeansLoss=Vērtība 0,95 nozīmē vidēji 5%% zaudējumus ražošanas vai demontāžas laikā ValueOfMeansLossForProductProduced=Vērtība 0,95 nozīmē saražotā produkta zaudējumu vidējo vērtību 5%% DeleteBillOfMaterials=Dzēst materiālus DeleteMo=Dzēst ražošanas pasūtījumu diff --git a/htdocs/langs/lv_LV/other.lang b/htdocs/langs/lv_LV/other.lang index 1d7dfd87829..13b78f66cbc 100644 --- a/htdocs/langs/lv_LV/other.lang +++ b/htdocs/langs/lv_LV/other.lang @@ -258,10 +258,10 @@ PassEncoding=Paroles kodēšana PermissionsAdd=Pievienotas atļaujas PermissionsDelete=Atļaujas noņemtas YourPasswordMustHaveAtLeastXChars=Jūsu parolei ir jāsatur vismaz %s simbolus -PasswordNeedAtLeastXUpperCaseChars=The password need at least %s upper case chars -PasswordNeedAtLeastXDigitChars=The password need at least %s numeric chars -PasswordNeedAtLeastXSpecialChars=The password need at least %s special chars -PasswordNeedNoXConsecutiveChars=The password must not have %s consecutive similar chars +PasswordNeedAtLeastXUpperCaseChars=Parolei ir jābūt vismaz %s lielajiem burtiem +PasswordNeedAtLeastXDigitChars=Parolei ir nepieciešamas vismaz %s ciparu rakstzīmes +PasswordNeedAtLeastXSpecialChars=Parolei ir nepieciešamas vismaz %s speciālajam simbolam +PasswordNeedNoXConsecutiveChars=Parolē nedrīkst būt %s līdzīgas rakstzīmes. YourPasswordHasBeenReset=Jūsu parole ir veiksmīgi atiestatīta ApplicantIpAddress=Pieteikuma iesniedzēja IP adrese SMSSentTo=SMS nosūtīta uz %s @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Projekts, ko izveidojis e-pasta savācējs no e-p TicketCreatedByEmailCollector=Biļete, ko izveidojis e-pasta kolekcionārs no e-pasta MSGID %s OpeningHoursFormatDesc=Izmantojiet taustiņu -, lai nodalītu darba un aizvēršanas stundas.
Izmantojiet atstarpi, lai ievadītu dažādus diapazonus.
Piemērs: 8.-12 SuffixSessionName=Sesijas nosaukuma sufikss +LoginWith=Piesakieties ar %s ##### Export ##### ExportsArea=Eksportēšanas sadaļa diff --git a/htdocs/langs/lv_LV/products.lang b/htdocs/langs/lv_LV/products.lang index fd1232dc3d7..fb90f8b5cff 100644 --- a/htdocs/langs/lv_LV/products.lang +++ b/htdocs/langs/lv_LV/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=Šī produkta ražošanai ieteicams izmantot noklusējuma BOM. Š Rank=Rangs SwitchOnSaleStatus=Ieslēgt pārdošanas statusu SwitchOnPurchaseStatus=Ieslēdziet pirkuma statusu +StockMouvementExtraFields= Papildu lauki (akciju kustība) diff --git a/htdocs/langs/lv_LV/projects.lang b/htdocs/langs/lv_LV/projects.lang index 0d26e476146..fca34c7b1ac 100644 --- a/htdocs/langs/lv_LV/projects.lang +++ b/htdocs/langs/lv_LV/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Ievade mēnesī InputDetail=Ievades dati TimeAlreadyRecorded=Šis laiks ir jau ierakstīts šim uzdevumam / dienā un lietotājam %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projekti ar šo kontaktpersonu TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Nav piešķirts projektam ResourceNotAssignedToTheTask=Uzdevumam nav piešķirts @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Piezīme: esošie projekti ar v SelectLinesOfTimeSpentToInvoice=Atlasiet pavadītās laika rindas, kas nav izrakstītas, un pēc tam veiciet lielapjoma darbību “Ģenerēt rēķinu”, lai par tām izrakstītu rēķinus ProjectTasksWithoutTimeSpent=Projekta uzdevumi bez pavadīta laika FormForNewLeadDesc=Paldies, ka aizpildījāt šo veidlapu, lai sazinātos ar mums. Varat arī nosūtīt mums e-pastu tieši uz %s . +ProjectsHavingThisContact=Projekti ar šo kontaktpersonu StartDateCannotBeAfterEndDate=Beigu datums nevar būt pirms sākuma datuma diff --git a/htdocs/langs/lv_LV/receptions.lang b/htdocs/langs/lv_LV/receptions.lang index bc8a8c8e900..55e7edf3314 100644 --- a/htdocs/langs/lv_LV/receptions.lang +++ b/htdocs/langs/lv_LV/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Produkta saņemšanas iestatīšana +ReceptionDescription=Pārdevēja pieņemšanas vadība (izveidot pieņemšanas dokumentus) +ReceptionsSetup=Pārdevēja pieņemšanas iestatīšana RefReception=Ref. uzņemšana Reception=Reģistratūra Receptions=Pieņemšanas diff --git a/htdocs/langs/lv_LV/withdrawals.lang b/htdocs/langs/lv_LV/withdrawals.lang index c1927c42d9c..b0b0760088a 100644 --- a/htdocs/langs/lv_LV/withdrawals.lang +++ b/htdocs/langs/lv_LV/withdrawals.lang @@ -48,7 +48,7 @@ ThirdPartyBankCode=Trešās puses bankas kods NoInvoiceCouldBeWithdrawed=Netika veiksmīgi norakstīts rēķins. Pārbaudiet, vai rēķini ir norādīti uzĦēmumiem ar derīgu IBAN un IBAN ir UMR (unikālas pilnvaras atsauce) ar režīmu %s . WithdrawalCantBeCreditedTwice=Šī izņemšanas kvīts jau ir atzīmēta kā ieskaitīta; to nevar izdarīt divreiz, jo tas potenciāli radītu maksājumu un bankas ierakstu dublikātus. ClassCredited=Klasificēt kreditēts -ClassDebited=Classify debited +ClassDebited=Klasificēt debetēts ClassCreditedConfirm=Vai tiešām vēlaties klasificēt šo atsaukuma kvīti kā kredītu jūsu bankas kontā? TransData=Darījuma datums TransMetod=Darījuma veids diff --git a/htdocs/langs/mk_MK/admin.lang b/htdocs/langs/mk_MK/admin.lang index 06db8f5766f..ee7e4702714 100644 --- a/htdocs/langs/mk_MK/admin.lang +++ b/htdocs/langs/mk_MK/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Foundation Version=Верзија Publisher=Издавач @@ -343,7 +343,7 @@ StepNb=Step %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/mk_MK/bills.lang b/htdocs/langs/mk_MK/bills.lang index ae911dce092..7cf3382f108 100644 --- a/htdocs/langs/mk_MK/bills.lang +++ b/htdocs/langs/mk_MK/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Payments reports PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Refunds already done PaymentRule=Payment rule -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Draft PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bank details BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/mk_MK/blockedlog.lang b/htdocs/langs/mk_MK/blockedlog.lang index 0bba5605d0f..12f28737d49 100644 --- a/htdocs/langs/mk_MK/blockedlog.lang +++ b/htdocs/langs/mk_MK/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/mk_MK/errors.lang b/htdocs/langs/mk_MK/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/mk_MK/errors.lang +++ b/htdocs/langs/mk_MK/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/mk_MK/eventorganization.lang b/htdocs/langs/mk_MK/eventorganization.lang index eb609b19ef0..9c05134759e 100644 --- a/htdocs/langs/mk_MK/eventorganization.lang +++ b/htdocs/langs/mk_MK/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/mk_MK/holiday.lang b/htdocs/langs/mk_MK/holiday.lang index dceaef59081..3d0ae64be0f 100644 --- a/htdocs/langs/mk_MK/holiday.lang +++ b/htdocs/langs/mk_MK/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/mk_MK/knowledgemanagement.lang b/htdocs/langs/mk_MK/knowledgemanagement.lang index 135618aa6c4..24264210ee5 100644 --- a/htdocs/langs/mk_MK/knowledgemanagement.lang +++ b/htdocs/langs/mk_MK/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/mk_MK/mrp.lang b/htdocs/langs/mk_MK/mrp.lang index 3f1aac53340..74bed0d9186 100644 --- a/htdocs/langs/mk_MK/mrp.lang +++ b/htdocs/langs/mk_MK/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/mk_MK/other.lang b/htdocs/langs/mk_MK/other.lang index 7b509f60ff7..49ff93dd589 100644 --- a/htdocs/langs/mk_MK/other.lang +++ b/htdocs/langs/mk_MK/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/mk_MK/products.lang b/htdocs/langs/mk_MK/products.lang index 34f0c7ac8b4..9533fb8a02e 100644 --- a/htdocs/langs/mk_MK/products.lang +++ b/htdocs/langs/mk_MK/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/mk_MK/projects.lang b/htdocs/langs/mk_MK/projects.lang index 0d9c7ea34c8..ff542521afe 100644 --- a/htdocs/langs/mk_MK/projects.lang +++ b/htdocs/langs/mk_MK/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/mk_MK/receptions.lang b/htdocs/langs/mk_MK/receptions.lang index 6d8bbad9868..9378040a9f9 100644 --- a/htdocs/langs/mk_MK/receptions.lang +++ b/htdocs/langs/mk_MK/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Canceled StatusReceptionDraft=Draft -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processed StatusReceptionDraftShort=Draft StatusReceptionValidatedShort=Валидирано @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/mn_MN/admin.lang b/htdocs/langs/mn_MN/admin.lang index 3971948e5a1..d79adb1e960 100644 --- a/htdocs/langs/mn_MN/admin.lang +++ b/htdocs/langs/mn_MN/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Foundation Version=Version Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=Step %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/mn_MN/bills.lang b/htdocs/langs/mn_MN/bills.lang index 3aaa5465ca0..f7d0155f41e 100644 --- a/htdocs/langs/mn_MN/bills.lang +++ b/htdocs/langs/mn_MN/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Payments reports PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Refunds already done PaymentRule=Payment rule -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Draft PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bank details BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/mn_MN/blockedlog.lang b/htdocs/langs/mn_MN/blockedlog.lang index 0bba5605d0f..12f28737d49 100644 --- a/htdocs/langs/mn_MN/blockedlog.lang +++ b/htdocs/langs/mn_MN/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/mn_MN/errors.lang b/htdocs/langs/mn_MN/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/mn_MN/errors.lang +++ b/htdocs/langs/mn_MN/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/mn_MN/eventorganization.lang b/htdocs/langs/mn_MN/eventorganization.lang index 82951892a32..b4a7279d757 100644 --- a/htdocs/langs/mn_MN/eventorganization.lang +++ b/htdocs/langs/mn_MN/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/mn_MN/holiday.lang b/htdocs/langs/mn_MN/holiday.lang index dceaef59081..3d0ae64be0f 100644 --- a/htdocs/langs/mn_MN/holiday.lang +++ b/htdocs/langs/mn_MN/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/mn_MN/knowledgemanagement.lang b/htdocs/langs/mn_MN/knowledgemanagement.lang index 2426e0e7013..bcdf9740cdd 100644 --- a/htdocs/langs/mn_MN/knowledgemanagement.lang +++ b/htdocs/langs/mn_MN/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/mn_MN/mrp.lang b/htdocs/langs/mn_MN/mrp.lang index 3f1aac53340..74bed0d9186 100644 --- a/htdocs/langs/mn_MN/mrp.lang +++ b/htdocs/langs/mn_MN/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/mn_MN/other.lang b/htdocs/langs/mn_MN/other.lang index 7b509f60ff7..49ff93dd589 100644 --- a/htdocs/langs/mn_MN/other.lang +++ b/htdocs/langs/mn_MN/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/mn_MN/products.lang b/htdocs/langs/mn_MN/products.lang index a8942bd337f..14715670882 100644 --- a/htdocs/langs/mn_MN/products.lang +++ b/htdocs/langs/mn_MN/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/mn_MN/projects.lang b/htdocs/langs/mn_MN/projects.lang index 0d9c7ea34c8..ff542521afe 100644 --- a/htdocs/langs/mn_MN/projects.lang +++ b/htdocs/langs/mn_MN/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/mn_MN/receptions.lang b/htdocs/langs/mn_MN/receptions.lang index 46b2d689609..7f1a97d16a9 100644 --- a/htdocs/langs/mn_MN/receptions.lang +++ b/htdocs/langs/mn_MN/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Canceled StatusReceptionDraft=Draft -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processed StatusReceptionDraftShort=Draft StatusReceptionValidatedShort=Validated @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/my_MM/admin.lang b/htdocs/langs/my_MM/admin.lang index 3971948e5a1..d79adb1e960 100644 --- a/htdocs/langs/my_MM/admin.lang +++ b/htdocs/langs/my_MM/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Foundation Version=Version Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=Step %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/my_MM/bills.lang b/htdocs/langs/my_MM/bills.lang index 3aaa5465ca0..f7d0155f41e 100644 --- a/htdocs/langs/my_MM/bills.lang +++ b/htdocs/langs/my_MM/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Payments reports PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Refunds already done PaymentRule=Payment rule -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Draft PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bank details BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/my_MM/blockedlog.lang b/htdocs/langs/my_MM/blockedlog.lang index 44cb183050a..12f28737d49 100644 --- a/htdocs/langs/my_MM/blockedlog.lang +++ b/htdocs/langs/my_MM/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/my_MM/errors.lang b/htdocs/langs/my_MM/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/my_MM/errors.lang +++ b/htdocs/langs/my_MM/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/my_MM/eventorganization.lang b/htdocs/langs/my_MM/eventorganization.lang index 82951892a32..b4a7279d757 100644 --- a/htdocs/langs/my_MM/eventorganization.lang +++ b/htdocs/langs/my_MM/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/my_MM/holiday.lang b/htdocs/langs/my_MM/holiday.lang index dceaef59081..3d0ae64be0f 100644 --- a/htdocs/langs/my_MM/holiday.lang +++ b/htdocs/langs/my_MM/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/my_MM/knowledgemanagement.lang b/htdocs/langs/my_MM/knowledgemanagement.lang index 2426e0e7013..bcdf9740cdd 100644 --- a/htdocs/langs/my_MM/knowledgemanagement.lang +++ b/htdocs/langs/my_MM/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/my_MM/mrp.lang b/htdocs/langs/my_MM/mrp.lang index 3f1aac53340..74bed0d9186 100644 --- a/htdocs/langs/my_MM/mrp.lang +++ b/htdocs/langs/my_MM/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/my_MM/other.lang b/htdocs/langs/my_MM/other.lang index 7b509f60ff7..49ff93dd589 100644 --- a/htdocs/langs/my_MM/other.lang +++ b/htdocs/langs/my_MM/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/my_MM/products.lang b/htdocs/langs/my_MM/products.lang index a8942bd337f..14715670882 100644 --- a/htdocs/langs/my_MM/products.lang +++ b/htdocs/langs/my_MM/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/my_MM/projects.lang b/htdocs/langs/my_MM/projects.lang index 0d9c7ea34c8..ff542521afe 100644 --- a/htdocs/langs/my_MM/projects.lang +++ b/htdocs/langs/my_MM/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/my_MM/receptions.lang b/htdocs/langs/my_MM/receptions.lang index 46b2d689609..7f1a97d16a9 100644 --- a/htdocs/langs/my_MM/receptions.lang +++ b/htdocs/langs/my_MM/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Canceled StatusReceptionDraft=Draft -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processed StatusReceptionDraftShort=Draft StatusReceptionValidatedShort=Validated @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/nb_NO/admin.lang b/htdocs/langs/nb_NO/admin.lang index a2b34bc9f72..fe8f31859c0 100644 --- a/htdocs/langs/nb_NO/admin.lang +++ b/htdocs/langs/nb_NO/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Organisasjon Version=Versjon Publisher=Utgiver @@ -267,8 +267,8 @@ OtherResources=Andre ressurser ExternalResources=Eksterne ressurser SocialNetworks=Sosiale nettverk SocialNetworkId=Sosialt nettverk 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 +ForDocumentationSeeWiki=For bruker- eller utviklerdokumentasjon (dok., vanlige spørsmål...),
, ta en titt på Dolibarr Wiki:
%s +ForAnswersSeeForum=For andre spørsmål/hjelp kan du bruke Dolibarr-forumet:
%s HelpCenterDesc1=Her er noen ressurser for å få hjelp og støtte med Dolibarr. HelpCenterDesc2=Noen av disse ressursene er bare tilgjengelige på engelsk . CurrentMenuHandler=Gjeldende menyen behandler @@ -343,7 +343,7 @@ StepNb=Trinn %s FindPackageFromWebSite=Finn en pakke som gir funksjonene du trenger (for eksempel på den offisielle nettsiden %s). DownloadPackageFromWebSite=Last ned pakke (for eksempel fra den offisielle nettsiden %s). UnpackPackageInDolibarrRoot=Pakk ut filene til serverkatalogen til Dolibarr: %s -UnpackPackageInModulesRoot=For å distribuere/installere en ekstern modul, pakk ut de pakkede filene i serverkatalogen dedikert til eksterne moduler:
%s +UnpackPackageInModulesRoot=For å distribuere/installere en ekstern modul, må du pakke ut arkivfilen i serverkatalogen dedikert til eksterne moduler:
%s SetupIsReadyForUse=Moduldistribusjon er ferdig. Du må imidlertid aktivere og sette opp modulen i programmet ved å gå til siden: %s. NotExistsDirect=Alternativ rotkatalog er ikke definert til en eksisterende katalog.
InfDirAlt=Fra versjon 3 er det mulig å definere en alternativ rotkatalog. Dette gjør det mulig å lagre plug-ins og egendefinerte maler.
Opprett en katalog i roten til Dolibarr (f.eks min katalog).
@@ -355,7 +355,7 @@ LastStableVersion=Siste stabile versjon LastActivationDate=Siste aktiveringsdato LastActivationAuthor=Siste aktiveringsforfatter LastActivationIP=Siste aktivering IP -LastActivationVersion=Latest activation version +LastActivationVersion=Siste aktiveringsversjon UpdateServerOffline=Oppdater serveren offline WithCounter=Administrer en teller GenericMaskCodes=Her kan du legge inn nummereringsmal. I malen kan du bruke følgende tagger:
{000000} tilsvarer et tall som økes ved hver %s. Angi så mange nuller som du ønsker at lengden på telleren skal være. Telleren vil ha ledende nuller i henhold til malens lengde.
{000000+000} samme som forrige, men med en forskyvning til høyre for + tegnet, starter fra første %s.
{000000@x} samme som forrige, men telleren starter fra null når måned x nås (x mellom 1 og 12, eller 0 for de første månedene i året, eller 99 for nullstilling hver måned). Hvis dette valget brukes og x er 2 eller mer kreves også sekvensen {yy}{mm} eller {yyyy}{mm} kreves også.
{dd} dag (01 til 31).
{mm} måned (01 til 12).
{yy}, {yyyy} eller {y} årstall over 2, 4 eller 1 siffer.
@@ -501,10 +501,10 @@ WarningPHPMail=ADVARSEL: Oppsettet for å sende e-post fra applikasjonen bruker WarningPHPMailA=- Å bruke serveren til epostleverandøren øker påliteligheten til eposten din, slik at den øker leveringsevnen uten å bli markert som spam WarningPHPMailB=- Noen e-posttjenesteleverandører (som Yahoo) tillater ikke at du sender en e-post fra en annen server enn deres egen server. Det nåværende oppsettet ditt bruker serveren til applikasjonen til å sende e-post og ikke serveren til e-postleverandøren din, så noen mottakere (den som er kompatibel med den begrensende DMARC-protokollen) vil spørre e-postleverandøren din om de kan godta e-posten din og noen e-postleverandører (som Yahoo) kan svare "nei" fordi serveren ikke er deres. Noen av de sendte e-postene dine blir kanskje ikke akseptert for levering (vær også oppmerksom på e-postleverandørens sendekvote). WarningPHPMailC=- Ved å bruke SMTP-serveren til din egen e-posttjenesteleverandør for å sende e-post vil alle e-postmeldinger som sendes fra applikasjonen bli lagret i "Sendt"-katalogen i postkassen din. -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=Det anbefales derfor også å endre sendingsmetoden for e-post til verdien "SMTP". Hvis du virkelig vil beholde standard "PHP"-metoden for å sende e-poster, bare ignorer denne advarselen, eller fjern den ved å sette MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP konstant til 1 i Hjem - Oppsett - Annet. WarningPHPMail2=Hvis din epost-SMTP-leverandør må begrense epostklienten til noen IP-adresser (svært sjelden), er dette IP-adressen til epost-brukeragenten (MUA) for ERP CRM-programmet: %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 : %s +WarningPHPMailSPF=Hvis domenenavnet i avsenderens e-postadresse er beskyttet av en SPF-post (spør domenenavnsregistratoren), må du legge til følgende IP-er i SPF-posten til DNS-en til domenet ditt: %s . +ActualMailSPFRecordFound=Faktisk SPF-post funnet: %s ClickToShowDescription=Klikk for å vise beskrivelse DependsOn=Denne modulen trenger modulen(ene) RequiredBy=Denne modulen er påkrevd av modul(ene) @@ -521,9 +521,9 @@ Field=Felt ProductDocumentTemplates=Dokumentmaler for å generere produktdokument FreeLegalTextOnExpenseReports=Fri juridisk tekst på utgiftsrapporter WatermarkOnDraftExpenseReports=Vannmerke på utgiftsrapport-maler -ProjectIsRequiredOnExpenseReports=The project is mandatory for entering an expense report -PrefillExpenseReportDatesWithCurrentMonth=Pre-fill start and end dates of new expense report with start and end dates of the current month -ForceExpenseReportsLineAmountsIncludingTaxesOnly=Force the entry of expense report amounts always in amount with taxes +ProjectIsRequiredOnExpenseReports=Prosjektet er obligatorisk for å føre utgiftsrapport +PrefillExpenseReportDatesWithCurrentMonth=Forhåndsutfyll start- og sluttdatoer for ny utgiftsrapport med start- og sluttdatoer for gjeldende måned +ForceExpenseReportsLineAmountsIncludingTaxesOnly=Tving alltid oppføring av utgiftsrapportbeløp i beløp med avgifter AttachMainDocByDefault=Sett dette til 1 hvis du vil legge ved hoveddokumentet til e-post som standard (hvis aktuelt) FilesAttachedToEmail=Legg ved fil SendEmailsReminders=Send agendapåminnelser via e-post @@ -573,7 +573,7 @@ Module53Desc=Administrasjon av tjenester Module54Name=Kontrakter/abonnement Module54Desc=Forvaltning av kontrakter (tjenester eller tilbakevendende abonnementer) Module55Name=Strekkoder -Module55Desc=Barcode or QR code management +Module55Desc=Strek- eller QR-kodehåndtering Module56Name=Betaling med kredittoverføring Module56Desc=Håndtering av betaling til leverandører ved Credit Transfer-ordrer. Den inkluderer generering av SEPA-filer for europeiske land. Module57Name=Betalinger med dirketedebet @@ -613,7 +613,7 @@ Module400Desc=Håndtering av prosjekter, muligheter og/eller oppgaver. Du kan og Module410Name=Webkalender Module410Desc=Integrasjon med webkalender Module500Name=Skatter og spesielle utgifter -Module500Desc=Management of other expenses (sales taxes, social or fiscal taxes, dividends, ...) +Module500Desc=Håndtering av andre utgifter (mva, sosiale eller skattemessige skatter, utbytte, ...) Module510Name=Lønn Module510Desc=Registrer og følg opp ansattebetalinger Module520Name=Lån @@ -756,7 +756,7 @@ Permission106=Eksporter forsendelser Permission109=Slett forsendelser Permission111=Vis kontoutdrag Permission112=Opprett/endre/slett og sammenligne transaksjoner -Permission113=Setup financial accounts (create, manage categories of bank transactions) +Permission113=Sett opp finansielle kontoer (opprett, administrer kategorier av banktransaksjoner) Permission114=Avstem transaksjoner Permission115=Eksportere transaksjoner og kontoutdrag Permission116=Overføringer mellom konti @@ -765,7 +765,7 @@ Permission121=Les tredjeparter lenket til bruker Permission122=Opprett/endre tredjeparter lenket til bruker Permission125=Slett tredjeparter lenket til bruker Permission126=Eksportere tredjeparter -Permission130=Create/modify third parties payment information +Permission130=Opprett/endre betalingsinformasjon for tredjeparter Permission141=Les alle prosjekter og oppgaver (også prosjekter jeg ikke er kontakt for) Permission142=Opprett/endre alle prosjekter og oppgaver (også prosjekter jeg ikke er kontakt for) Permission144=Slett alle prosjekter og oppgaver (også prosjekter jeg ikke er kontakt for) @@ -861,10 +861,10 @@ Permission402=Opprett/endre rabatter Permission403=Valider rabatter Permission404=Slett rabatter Permission430=Bruk Debug Bar -Permission511=Read salaries and payments (yours and subordinates) -Permission512=Create/modify salaries and payments -Permission514=Delete salaries and payments -Permission517=Read salaries and payments everybody +Permission511=Les lønn og utbetalinger (dine og underordnede) +Permission512=Opprette/endre lønn og utbetalinger +Permission514=Slett lønn og utbetalinger +Permission517=Les lønn og betalinger for alle Permission519=Eksporter lønn Permission520=Les lån Permission522=Opprett/endre lån @@ -893,11 +893,11 @@ Permission701=Vis donasjoner Permission702=Opprett/endre donasjoner Permission703=Slett donasjoner Permission771=Les utgiftsrapporter (dine og underordnedes) -Permission772=Create/modify expense reports (for you and your subordinates) +Permission772=Opprett/endre utgiftsrapporter (for deg og dine underordnede) Permission773=Slett utgiftsrapport Permission775=Godkjenn utgiftsrapport Permission776=Betal utgift -Permission777=Read all expense reports (even those of user not subordinates) +Permission777=Les alle utgiftsrapporter (selv de til brukere som ikke er underordnede) Permission778=Lag/endre utgiftsrapporter for alle Permission779=Eksporter utgiftsrapporter Permission1001=Vis beholdning @@ -964,8 +964,8 @@ Permission3301=Generer nye moduler Permission4001=Les ferdighet/jobb/stilling Permission4002=Opprett/endre ferdigheter/jobb/stilling Permission4003=Slett ferdighet/jobb/stilling -Permission4020=Read evaluations -Permission4021=Create/modify your evaluation +Permission4020=Les evalueringer +Permission4021=Opprett/endre evalueringen din Permission4022=Valider evaluering Permission4023=Slett evaluering Permission4030=Se sammenligningsmeny @@ -976,9 +976,9 @@ Permission10005=Slett nettstedsinnhold Permission20001=Les permitteringsforespørsler (dine og dine underordnedes) Permission20002=Opprett/endre permisjonene dine (dine og dine underordnedes) Permission20003=Slett ferieforespørsler -Permission20004=Read all leave requests (even those of user not subordinates) -Permission20005=Create/modify leave requests for everybody (even those of user not subordinates) -Permission20006=Administer leave requests (setup and update balance) +Permission20004=Les alle permisjonsforespørsler (selv de fra brukere som ikke er underordnede) +Permission20005=Opprett/endre permisjonsforespørsler for alle (selv for brukere som ikke er underordnede) +Permission20006=Administrer permisjonsforespørsler (oppsett og oppdater saldo) Permission20007=Godkjenn permisjonforespørsler Permission23001=Les planlagt oppgave Permission23002=Opprett/endre planlagt oppgave @@ -987,7 +987,7 @@ Permission23004=Utfør planlagt oppgave Permission50101=Bruk salgssted (SimplePOS) Permission50151=Bruk salgssted (TakePOS) Permission50152=Rediger salgslinjer -Permission50153=Edit ordered sales lines +Permission50153=Rediger bestilte salgslinjer Permission50201=Les transaksjoner Permission50202=Importer transaksjoner Permission50330=Les Zapier-objekter @@ -1051,7 +1051,7 @@ DictionaryFees=Utgiftsrapport - Typer av utgiftsrapport-linjer DictionarySendingMethods=Leveringsmetoder DictionaryStaff=Antall ansatte DictionaryAvailability=Leveringsforsinkelse -DictionaryOrderMethods=Order methods +DictionaryOrderMethods=Bestillingsmetoder DictionarySource=Tilbud/ordre-opprinnelse DictionaryAccountancyCategory=Personlige grupper for rapporter DictionaryAccountancysystem=Diagram-modeller for kontoer @@ -1062,12 +1062,12 @@ DictionaryMeasuringUnits=Måleenheter DictionarySocialNetworks=Sosiale nettverk DictionaryProspectStatus=Prospektstatus for selskaper DictionaryProspectContactStatus=Prospektstatus for kontakter -DictionaryHolidayTypes=Leave - Types of leave +DictionaryHolidayTypes=Permisjon - Permisjonstyper DictionaryOpportunityStatus=Lead status for prosjekt/lead DictionaryExpenseTaxCat=Utgiftsrapport - Transportkategorier DictionaryExpenseTaxRange=Utgiftsrapport - Rangert etter transportkategori DictionaryTransportMode=Intracomm rapport - Transportmodus -DictionaryBatchStatus=Product lot/serial Quality Control status +DictionaryBatchStatus=Vare lot/serie kvalitetskontrollstatus TypeOfUnit=Type enhet SetupSaved=Innstillinger lagret SetupNotSaved=Oppsettet er ikke lagret @@ -1184,8 +1184,8 @@ DoNotSuggestPaymentMode=Ikke foreslå NoActiveBankAccountDefined=Ingen aktive bankkonti definert OwnerOfBankAccount=Eier av bankkonto %s BankModuleNotActive=Bankkontomodul ikke slått på -ShowBugTrackLink=Show the link "%s" -ShowBugTrackLinkDesc=Keep empty to not display this link, use value 'github' for the link to the Dolibarr project or define directly an url 'https://...' +ShowBugTrackLink=Vis lenken " %s " +ShowBugTrackLinkDesc=Hold tom for ikke å vise denne lenken, bruk verdien 'github' for lenken til Dolibarr-prosjektet eller definer en url direkte 'https://...' Alerts=Varsler DelaysOfToleranceBeforeWarning=Forsinkelse før du viser en advarsel for: DelaysOfToleranceDesc=Angi forsinkelsen før et advarselsikon %s vises på skjermen for det forsinkede elementet. @@ -1211,11 +1211,11 @@ SetupDescription3= %s -> %s

Grunnleggende parameter SetupDescription4=%s -> %s

Denne programvaren er en serie med mange moduler/applikasjoner. Modulene relatert til dine behov må være aktivert og konfigurert. Menyoppføringer vises ved aktivering av disse modulene. SetupDescription5=Annet oppsett menyoppføringer styrer valgfrie parametere. 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. +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. AuditedSecurityEvents=Sikkerhetshendelser som blir revidert NoSecurityEventsAreAduited=Ingen sikkerhetshendelser blir revidert. Du kan aktivere dem fra meny %s -Audit=Security events +Audit=Sikkerhetshendelser InfoDolibarr=Om Dolibarr InfoBrowser=Om nettleser InfoOS=Om OS @@ -1235,7 +1235,7 @@ SystemAreaForAdminOnly=Dette området er kun tilgjengelig for administratorbruke CompanyFundationDesc=Rediger informasjonen til din bedrift/organisasjon. Klikk på "%s" -knappen nederst på siden når du er ferdig. AccountantDesc=Hvis du har en ekstern revisor/regnskapsholder, kan du endre dennes informasjon her. AccountantFileNumber=Regnskapsførerkode -DisplayDesc=Parameters affecting the look and presentation of the application can be modified here. +DisplayDesc=Parametre som påvirker utseendet og presentasjonen av applikasjonen kan endres her. AvailableModules=Tilgjengelige apper/moduler ToActivateModule=Gå til innstillinger for å aktivere moduler. SessionTimeOut=Tidsgrense for økter @@ -1283,11 +1283,11 @@ YouMustRunCommandFromCommandLineAfterLoginToUser=Du må kjøre denne kommandoen YourPHPDoesNotHaveSSLSupport=SSL funksjoner ikke tilgjengelige i din PHP DownloadMoreSkins=Flere skins å laste ned SimpleNumRefModelDesc=Returnerer referansenummeret i formatet %syymm-nnnn der yy er året, mm er måneden og nnnn er et sekvensielt automatisk økende nummer uten nullstilling -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 +SimpleNumRefNoDateModelDesc=Returnerer referansenummeret i formatet %s-nnnn der nnnn er et sekvensielt automatisk økende tall uten tilbakestilling +ShowProfIdInAddress=Vis profesjonell ID med adresser +ShowVATIntaInAddress=Skjul MVA-nummer innen fellesskapet TranslationUncomplete=Delvis oversettelse -MAIN_DISABLE_METEO=Disable weather thumb +MAIN_DISABLE_METEO=Deaktiver værknapp MeteoStdMod=Standardmodus MeteoStdModEnabled=Standard modus aktivert MeteoPercentageMod=Prosentmodus @@ -1347,19 +1347,19 @@ ConditionIsCurrently=Tilstand er for øyeblikket %s YouUseBestDriver=Du bruker driver %s som er den beste driveren som er tilgjengelig for øyeblikket. YouDoNotUseBestDriver=Du bruker driveren %s. Driver %s anbefales. NbOfObjectIsLowerThanNoPb=Du har bare %s %s i databasen. Dette krever ingen spesiell optimalisering. -ComboListOptim=Combo list loading optimization +ComboListOptim=Optimalisering av lasting av kombinasjonslister SearchOptim=Forbedre søket -YouHaveXObjectUseComboOptim=You have %s %s in the database. You can go into setup of module to enable loading of combo list on key pressed event. -YouHaveXObjectUseSearchOptim=You have %s %s in the database. You can add the constant %s to 1 in Home-Setup-Other. -YouHaveXObjectUseSearchOptimDesc=This limits the search to the beginning of strings which makes it possible for the database to use indexes and you should get an immediate response. -YouHaveXObjectAndSearchOptimOn=You have %s %s in the database and constant %s is set to %s in Home-Setup-Other. +YouHaveXObjectUseComboOptim=Du har %s %s i databasen. Du kan gå inn i oppsett av modul for å aktivere lasting av kombinasjonsliste ved tastetrykk hendelse. +YouHaveXObjectUseSearchOptim=Du har %s %s i databasen. Du kan legge til konstanten %s til 1 i Hjem-Oppsett-Annet. +YouHaveXObjectUseSearchOptimDesc=Dette begrenser søket til begynnelsen av strenger som gjør det mulig for databasen å bruke indekser og du bør få et umiddelbar svar. +YouHaveXObjectAndSearchOptimOn=Du har %s %s i databasen og konstant %s er satt til %s i Hjem-Oppsett-Annet. BrowserIsOK=Du bruker nettleseren %s. Denne nettleseren er ok for sikkerhet og ytelse. BrowserIsKO=Du bruker nettleseren %s. Denne nettleseren er kjent for å være et dårlig valg for sikkerhet, ytelse og pålitelighet. Vi anbefaler deg å bruke Firefox, Chrome, Opera eller Safari. PHPModuleLoaded=PHP-komponent %s lastet PreloadOPCode=Forhåndslastet OPCode brukes -AddRefInList=Display Customer/Vendor ref. into combo lists.
Third Parties will appear with a name format of "CC12345 - SC45678 - The Big Company corp." instead of "The Big Company corp". -AddVatInList=Display Customer/Vendor VAT number into combo lists. -AddAdressInList=Display Customer/Vendor adress into combo lists.
Third Parties will appear with a name format of "The Big Company corp. - 21 jump street 123456 Big town - USA" instead of "The Big Company corp". +AddRefInList=Vis Kunde/Leverandør ref. inn i kombinasjonslister.
Tredjeparter vil vises med navneformatet "CC12345 - SC45678 - Firmanavn." i stedet for "Firmanavn". +AddVatInList=Vis kunde-/leverandør-mva-nummer i kombinasjonslister. +AddAdressInList=Vis kunde-/leverandøradresse i kombinasjonslister.
Tredjeparter vil vises med navneformatet "Firmanavn. - Full adresse - Land" i stedet for "Firma". AddEmailPhoneTownInContactList=Vis kontakt-epost (eller telefoner hvis ikke definert) og poststed (velg liste eller kombinasjonsfelt)
Kontakter vises med navneformatet "Ola Nordmann - ola.nordmann@email.com - Bergen" eller "Ola Nordmann - 55 55 55 55 - Bergen "i stedet for"Ola Nordmann". AskForPreferredShippingMethod=Spør etter foretrukket sendingsmetode for tredjeparter FieldEdition=Endre felt %s @@ -1390,7 +1390,7 @@ AccountCodeManager=Alternativer for automatisk generering av kunders/leverandør NotificationsDesc=E-postvarsler kan sendes automatisk for noen Dolibarr-hendelser.
Mottakere av meldinger kan defineres: NotificationsDescUser=* pr. bruker, en bruker om gangen NotificationsDescContact=* per tredjeparts kontakter (kunder eller leverandører), en kontakt om gangen. -NotificationsDescGlobal=* or by setting global email addresses in the setup page of the module. +NotificationsDescGlobal=* eller ved å angi globale e-postadresser på oppsettsiden til modulen. ModelModules=Dokumentmaler DocumentModelOdt=Generer dokumenter fra OpenDocument-maler (.ODT / .ODS-filer fra LibreOffice, OpenOffice, KOffice, TextEdit, ...) WatermarkOnDraft=Vannmerke på utkast @@ -1439,7 +1439,7 @@ WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Spør om Lagerkilde for ordre ##### Suppliers Orders ##### BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Be om bankkonto destinasjon for innkjøpsordre ##### Orders ##### -SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sales order by default if not defined on the order +SuggestedPaymentModesIfNotDefinedInOrder=Foreslått betalingsmodus på salgsordre som standard hvis det ikke er definert på bestillingen OrdersSetup=Salgsordreoppsett OrdersNumberingModules=Nummereringsmodul for ordre OrdersModelModule=Ordremaler @@ -1465,7 +1465,7 @@ MemberMainOptions=Hovedinnstillinger AdherentLoginRequired= Opprett innlogging for hvert medlem AdherentMailRequired=E-post kreves for å lage et nytt medlem MemberSendInformationByMailByDefault=Valg for å sende e-postbekreftelse til medlemmer (validering eller nytt abonnement) er krysset av som standard -MemberCreateAnExternalUserForSubscriptionValidated=Create an external user login for each new member subscription validated +MemberCreateAnExternalUserForSubscriptionValidated=Opprett en ekstern brukerpålogging for hvert nytt medlemsabonnement som valideres VisitorCanChooseItsPaymentMode=Besøkende kan velge blant tilgjengelige betalingsmåter MEMBER_REMINDER_EMAIL=Aktiver automatisk påminnelse via e-post av utløpte abonnementer. Merk: Modul %s må være aktivert og riktig oppsatt for å sende påminnelser. MembersDocModules=Dokumentmaler for dokumenter generert fra medlemsregister @@ -1490,10 +1490,10 @@ LDAPSynchronizeMembersTypes=Organisering av bedriftens medlemstyper i LDAP LDAPPrimaryServer=Primærserver LDAPSecondaryServer=Secondary server LDAPServerPort=Server port -LDAPServerPortExample=Standard or StartTLS: 389, LDAPs: 636 +LDAPServerPortExample=Standard eller StartTLS: 389, LDAP-er: 636 LDAPServerProtocolVersion=Protokollversjon LDAPServerUseTLS=Bruk TLS -LDAPServerUseTLSExample=Your LDAP server use StartTLS +LDAPServerUseTLSExample=LDAP-serveren din bruker StartTLS LDAPServerDn=Server DN LDAPAdminDn=Administrator DN LDAPAdminDnExample=Komplett DN (eks.: cn=admin, dc=eksempel, dc=com eller cn=Administrator, cn=Brukere, dc=eksempel, dc=com for aktiv mappe) @@ -1643,7 +1643,7 @@ ProductSetup=Innstillinger for varemodul ServiceSetup=Oppsett av tjenester-modulen ProductServiceSetup=Oppsett av varer- og tjenester-modulen NumberOfProductShowInSelect=Maksimalt antall varer som skal vises i kombinasjonslister (0 = ingen grense) -ViewProductDescInFormAbility=Display product descriptions in lines of items (otherwise show description in a tooltip popup) +ViewProductDescInFormAbility=Vis produktbeskrivelser i varelinjer (ellers vis beskrivelse i et popup-vindu med verktøytips) OnProductSelectAddProductDesc=Hvordan bruke varebeskrivelsen når du legger til en en vare som en linje i et dokument AutoFillFormFieldBeforeSubmit=Fyll ut beskrivelsesfeltet med varebeskrivelsen automatisk DoNotAutofillButAutoConcat=Ikke fyll inn inndatafeltet med varebeskrivelse. Varebeskrivelsen blir automatisk sammenkoblet til den angitte beskrivelsen. @@ -1707,9 +1707,9 @@ MailingDelay=Sekunder å vente før utsendelse av neste melding NotificationSetup=Oppset av e-postvarsling-modulen NotificationEMailFrom=Avsender-e-post (Fra) for e-postmeldinger sendt av varslingsmodulen FixedEmailTarget=Mottager -NotificationDisableConfirmMessageContact=Hide the list of recipients (subscribed as contact) of notifications into the confirmation message -NotificationDisableConfirmMessageUser=Hide the list of recipients (subscribed as user) of notifications into the confirmation message -NotificationDisableConfirmMessageFix=Hide the list of recipients (subscribed as global email) of notifications into the confirmation message +NotificationDisableConfirmMessageContact=Skjul listen over mottakere (abonnerer som kontakt) med varsler i bekreftelsesmeldingen +NotificationDisableConfirmMessageUser=Skjul listen over mottakere (abonnerer som bruker) av varsler i bekreftelsesmeldingen +NotificationDisableConfirmMessageFix=Skjul listen over mottakere (abonnerer som global e-post) med varsler i bekreftelsesmeldingen ##### Sendings ##### SendingsSetup=Oppsett av forsendelser-modulen SendingsReceiptModel=Modell for forsendelseskvitteringer @@ -1725,10 +1725,10 @@ FreeLegalTextOnDeliveryReceipts=Fritekst for leveringskvitteringer ##### FCKeditor ##### AdvancedEditor=Avansert editor ActivateFCKeditor=Aktiver avansert 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 +FCKeditorForNotePublic=WYSIWIG opprettelse/utgave av feltet "offentlige notater" av elementer +FCKeditorForNotePrivate=WYSIWIG opprettelse/utgave av feltet "private notater" av elementer +FCKeditorForCompany=WYSIWIG opprettelse/utgave av feltbeskrivelsen av elementer (unntatt varer/tjenester) +FCKeditorForProduct=WYSIWIG opprettelse/utgave av feltbeskrivelsen av varer/tjenester FCKeditorForProductDetails=WYSIWIG oppretting/endring av varedetaljer for alle enheter (tilbud, ordre, fakturaer, etc ...). Advarsel: Det er ikke anbefalt å bruke dette alternativet i dette tilfellet, da det kan skape problemer med spesialtegn og sideformatering når du bygger PDF-filer. FCKeditorForMailing= WYSIWIG opprettelse/endring av masse-e-postutsendelser (Verktøy->E-post) FCKeditorForUserSignature=WYSIWIG-opprettelse av signatur @@ -1800,14 +1800,14 @@ AGENDA_DEFAULT_VIEW=Hvilken visning vil du åpne som standard når du velger men AGENDA_REMINDER_BROWSER=Aktiver påminnelse om hendelse i brukerens nettleser (Når påminnelsesdato er nådd, vises en popup i nettleseren. Hver bruker kan deaktivere slike varsler i nettleseren). AGENDA_REMINDER_BROWSER_SOUND=Aktiver lydvarsler AGENDA_REMINDER_EMAIL=Aktiver påminnelse om hendelse via epost (påminnelsesalternativ/forsinkelse kan defineres for hver hendelse). -AGENDA_REMINDER_EMAIL_NOTE=Note: The frequency of the scheduled job %s must be enough to be sure that the remind are sent at the correct moment. +AGENDA_REMINDER_EMAIL_NOTE=Merk: Hyppigheten av den planlagte jobben %s må være nok til å være sikker på at påminnelsen sendes i riktig øyeblikk. AGENDA_SHOW_LINKED_OBJECT=Vis koblet objekt i agendavisning ##### Clicktodial ##### ClickToDialSetup='Click To Dial' modul ClickToDialUrlDesc=Url som kalles når man klikker på telefonpiktogrammet. I URL kan du bruke koder
__ PHONETO __ som blir erstattet med telefonnummeret til personen som skal ringes
__ PHONEFROM __ som blir erstattet med telefonnummeret til den som ringer(din)
__ LOGIN __ som vil bli erstattet med clicktodial login (definert på brukerkort)
__ PASS __ som vil bli erstattet med clicktodial passord (definert på brukerkort). ClickToDialDesc=Denne modulen endrer telefonnumre, når du bruker en datamaskin, til klikkbare lenker. Et klikk vil ringe nummeret. Dette kan brukes til å starte telefonsamtalen når du har en telefon på skrivebordet eller når du for eksempel bruker et CTI-system basert på SIP-protokoll. Merk: Når du bruker en smarttelefon, er telefonnumre alltid klikkbare. ClickToDialUseTelLink=Bruk kun en lenke "tlf:" for telefonnumre -ClickToDialUseTelLinkDesc=Use this method if your users have a softphone or a software interface, installed on the same computer as the browser, and called when you click on a link starting with "tel:" in your browser. If you need a link that start with "sip:" or a full server solution (no need of local software installation), you must set this to "No" and fill the next field. +ClickToDialUseTelLinkDesc=Bruk denne metoden hvis brukerne dine har en softphone eller et programvaregrensesnitt, installert på samme datamaskin som nettleseren, og ringer opp når du klikker på en lenke som begynner med "tel:" i nettleseren din. Hvis du trenger en lenke som starter med "sip:" eller en full serverløsning (ikke behov for lokal programvareinstallasjon), må du sette denne til "Nei" og fylle ut neste felt. ##### Point Of Sale (CashDesk) ##### CashDesk=Utsalgssted CashDeskSetup=Oppsett av modulen Salgssted @@ -1901,7 +1901,7 @@ ExpenseReportsRulesSetup=Oppsett av modul Utgiftsrapporter - Regler ExpenseReportNumberingModules=Utgiftsrapport nummereringsmodul NoModueToManageStockIncrease=Ingen modul i stand til å håndtere automatisk lagerøkning er blitt aktivert. Lagerøkning kan bare gjøres manuelt. YouMayFindNotificationsFeaturesIntoModuleNotification=Du kan finne alternativer for e-postmeldinger ved å aktivere og konfigurere modulen "Varslingen". -TemplatesForNotifications=Templates for notifications +TemplatesForNotifications=Maler for varsler ListOfNotificationsPerUser=Liste over automatiske varsler per bruker * ListOfNotificationsPerUserOrContact=Liste over mulige automatiske varsler (på forretningshendelse) tilgjengelig pr. bruker * eller pr. kontakt ** ListOfFixedNotifications=Liste over faste automatiske varslinger @@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Ved installering eller bygging av en ekstern modul fra HighlightLinesOnMouseHover=Fremhev tabellinjer når musen flyttes over HighlightLinesColor=Fremhev fargen på linjen når musen går over (bruk 'ffffff' for ingen fremheving) HighlightLinesChecked=Fremhev farge på linjen når den er merket (bruk 'ffffff' for ikke noen fremheving) +BtnActionColor=Farge på handlingsknappen +TextBtnActionColor=Tekstfarge på handlingsknappen TextTitleColor=Tekstfarge på sidetittel LinkColor=Farge på lenker PressF5AfterChangingThis=Trykk CTRL+F5 på tastaturet eller tøm nettlesercache når du har endret denne verdien for å få den til å fungere effektivt @@ -1938,11 +1940,11 @@ UnicodeCurrency=Her legger du inn en liste med Ascii-verdier, som representerer ColorFormat=RGB-fargen er i HEX-format, for eksempel: FF0000 PictoHelp=Ikonnavn i dolibarr-format ('image.png' hvis det er i den aktuelle temakatalogen, 'image.png@nom_du_module' hvis det er i katalogen /img/ til en modul) PositionIntoComboList=Plassering av linje i kombinasjonslister -SellTaxRate=Sales tax rate +SellTaxRate=MVA-sats RecuperableOnly=Ja for MVA"Ikke oppfattet, men gjenopprettelig" dedikert til noen steder i Frankrike. Hold verdien til "Nei" i alle andre tilfeller. UrlTrackingDesc=Hvis leverandøren eller transporttjenesten tilbyr en side eller et nettsted for å sjekke status på din forsendelse, kan du skrive det her. Du kan bruke tasten {TrackID} for å sette inn sporingnummer på webstedet. OpportunityPercent=Når du oppretter et lead, må du definere et estimert beløp forprosjekt/lead. I henhold til lead-status kan dette beløpet bli multiplisert med denne faktoren for å vurdere et samlet beløp som alle dine potensielle kunder kan generere. Verdi er en prosentandel (mellom 0 og 100). -TemplateForElement=This mail template is related to what type of object? An email template is available only when using the "Send Email" button from the related object. +TemplateForElement=Denne e-postmalen er relatert til hvilken type objekt? En e-postmal er kun tilgjengelig når du bruker "Send e-post"-knappen fra det relaterte objektet. TypeOfTemplate=Mal-type TemplateIsVisibleByOwnerOnly=Mal er kun synlig for eier VisibleEverywhere=Synlig overalt @@ -2017,15 +2019,15 @@ MAIN_PDF_MARGIN_RIGHT=Høyremarg på PDF MAIN_PDF_MARGIN_TOP=Toppmarg på PDF MAIN_PDF_MARGIN_BOTTOM=Bunnmarg på PDF MAIN_DOCUMENTS_LOGO_HEIGHT=Høyde for logo på PDF -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 -MAIN_PDF_NO_RECIPENT_FRAME=Hide borders on recipent address frame -MAIN_PDF_HIDE_CUSTOMER_CODE=Hide customer code -MAIN_PDF_HIDE_SENDER_NAME=Hide sender/company name in address block -PROPOSAL_PDF_HIDE_PAYMENTTERM=Hide payments conditions -PROPOSAL_PDF_HIDE_PAYMENTMODE=Hide payment mode -MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING=Add electronic sign in PDF +MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Legg til kolonne for bilde på tilbudslinjer +MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Kolonnenbredde hvis et bilde legges til på linjer +MAIN_PDF_NO_SENDER_FRAME=Skjul kanter på rammen rundt avsenderadresse +MAIN_PDF_NO_RECIPENT_FRAME=Skjul kanter på rammen til mottakeradresse +MAIN_PDF_HIDE_CUSTOMER_CODE=Skjul kundekode +MAIN_PDF_HIDE_SENDER_NAME=Skjul avsender/firmanavn i adresseblokk +PROPOSAL_PDF_HIDE_PAYMENTTERM=Skjul betalingsbetingelser +PROPOSAL_PDF_HIDE_PAYMENTMODE=Skjul betalingsmodus +MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING=Legg til elektronisk signatur i PDF NothingToSetup=Det er ikke noe spesifikt oppsett som kreves for denne modulen. SetToYesIfGroupIsComputationOfOtherGroups=Sett til ja hvis denne gruppen er en beregning av andre grupper EnterCalculationRuleIfPreviousFieldIsYes=Angi beregningsregelen hvis forrige felt ble satt til Ja.
For eksempel:
CODEGRP1+CODEGRP2 @@ -2064,14 +2066,14 @@ EmailCollectorConfirmCollect=Vil du kjøre samlingen for denne samleren nå? NoNewEmailToProcess=Ingen ny e-post (matchende filtre) å behandle NothingProcessed=Ingenting gjort XEmailsDoneYActionsDone=%s e-postmeldinger kvalifiserte, %s e-postmeldinger som er vellykket behandlet (for %s-post/handlinger utført) -RecordEvent=Record an event in agenda (with type Email sent or received) -CreateLeadAndThirdParty=Create a lead (and a third party if necessary) -CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation, with no third party otherwise) +RecordEvent=Ta opp en hendelse i agendaen (med typen E-post sendt eller mottatt) +CreateLeadAndThirdParty=Opprett et lead (og en tredjepart om nødvendig) +CreateTicketAndThirdParty=Opprett en billett (knyttet til en tredjepart hvis tredjeparten ble lastet inn av en tidligere operasjon, ellers uten noen annen tredjepart) CodeLastResult=Siste resultatkode NbOfEmailsInInbox=Antall e-poster i kildemappen LoadThirdPartyFromName=Legg inn tredjepartsøk på %s (bare innlasting) LoadThirdPartyFromNameOrCreate=Legg inn tredjepartsøk på %s (opprett hvis ikke funnet) -AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. +AttachJoinedDocumentsToObject=Lagre vedlagte filer i objektdokumenter hvis en ref for et objekt blir funnet i e-postemne. WithDolTrackingID=Melding fra en samtale initiert av en første e-post sendt fra Dolibarr WithoutDolTrackingID=Melding fra en samtale initiert av en første e-post IKKE sendt fra Dolibarr WithDolTrackingIDInMsgId=Melding sendt fra Dolibarr @@ -2080,7 +2082,7 @@ CreateCandidature=Opprett jobbsøknad FormatZip=Postnummer MainMenuCode=Meny-oppføringskode (hovedmeny) ECMAutoTree=Vis ECM-tre automatisk  -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=Definer reglene som skal brukes til å trekke ut eller angi verdier. 1 Eksempel på operasjoner som trenger å trekke ut et navn fra e-postemne:
name=EXTRACT:SUBJECT:Melding fra firma([^\n]*)
Eksempel på operasjoner som oppretter objekter:
objproperty1=SET:sett verdi
objproperty2=SET:en verdi som inkluderer verdien til __objproperty1__
objproperty3=SETIFEMPTY:verdi brukt hvis objproperty3 ikke allerede er definert
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Mitt firmanavn er\\s([^\\s]*)

Bruk semikolon som separator for å hente ut eller sette flere egenskaper. OpeningHours=Åpningstider OpeningHoursDesc=Skriv inn de vanlige åpningstidene for bedriften din. ResourceSetup=Konfigurasjon av ressursmodulen @@ -2112,11 +2114,11 @@ UseDebugBar=Bruk feilsøkingsfeltet DEBUGBAR_LOGS_LINES_NUMBER=Nummer på siste logglinjer å beholde i konsollen WarningValueHigherSlowsDramaticalyOutput=Advarsel, høyere verdier reduserer resultatet dramatisk ModuleActivated=Modul %s er aktivert og bremser grensesnittet -ModuleActivatedWithTooHighLogLevel=Module %s is activated with a too high logging level (try to use a lower level for better performances and security) -ModuleSyslogActivatedButLevelNotTooVerbose=Module %s is activated and log level (%s) is correct (not too verbose) +ModuleActivatedWithTooHighLogLevel=Modul %s er aktivert med et for høyt loggingsnivå (prøv å bruke et lavere nivå for bedre ytelse og sikkerhet) +ModuleSyslogActivatedButLevelNotTooVerbose=Modul %s er aktivert og loggnivå (%s) er riktig (ikke for detaljert) IfYouAreOnAProductionSetThis=Hvis du er i et produksjonsmiljø, bør du sette denne egenskapen til %s. AntivirusEnabledOnUpload=Antivirus aktivert på opplastede filer -SomeFilesOrDirInRootAreWritable=Some files or directories are not in a read-only mode +SomeFilesOrDirInRootAreWritable=Noen filer eller kataloger er ikke i skrivebeskyttet modus EXPORTS_SHARE_MODELS=Eksportmodellene er delt med alle ExportSetup=Oppsett av modul Eksport ImportSetup=Oppsett av importmodul @@ -2126,7 +2128,7 @@ LargerThan=Større enn IfTrackingIDFoundEventWillBeLinked=Merk at hvis en sporings-ID for et objekt blir funnet i epost, eller hvis eposten er et svar på en epostadresse som er samlet og koblet til et objekt, blir den opprettede hendelsen automatisk knyttet til det kjente relaterte objektet. WithGMailYouCanCreateADedicatedPassword=Med en Gmail-konto, hvis du aktiverte 2-trinns validering, anbefales det å opprette et dedikert annet passord for applikasjonen, i stedet for å bruke ditt eget kontopassord fra https://myaccount.google.com/. EmailCollectorTargetDir=Det kan være en ønsket oppførsel å flytte eposten til en annet merke/katalog når den er behandlet. Bare sett navnet på katalogen her for å bruke denne funksjonen (IKKE bruk spesialtegn i navnet). Vær oppmerksom på at du også må bruke en konto med lese-/skrivetillatelse . -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=Du kan bruke denne handlingen til å bruke e-postinnholdet til å finne og laste en eksisterende tredjepart i databasen. Den funnet (eller opprettet) tredjeparten vil bli brukt til følgende handlinger som trenger det.
For eksempel, hvis du vil opprette en tredjepart med et navn hentet fra en streng 'Navn: navn å finne' til stede i brødteksten, bruk avsenderens e-post som e-post, du kan angi parameterfeltet slik:
2'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'3
EndPointFor=Sluttpunkt for %s: %s DeleteEmailCollector=Slett e-postsamler ConfirmDeleteEmailCollector=Er du sikker på at du vil slette denne e-postsamleren? @@ -2140,10 +2142,10 @@ MakeAnonymousPing=Utfør et anonymt Ping '+1' til Dolibarr foundation-serveren ( FeatureNotAvailableWithReceptionModule=Funksjonen er ikke tilgjengelig når modulen Mottak er aktivert EmailTemplate=Mal for e-post EMailsWillHaveMessageID=E-postmeldinger vil være merket 'Referanser' som samsvarer med denne syntaksen -PDF_SHOW_PROJECT=Show project on document +PDF_SHOW_PROJECT=Vis prosjekt på dokument ShowProjectLabel=Prosjektetikett PDF_USE_ALSO_LANGUAGE_CODE=Hvis du vil at tekst i PDF-en din skal dupliseres på 2 forskjellige språk i samme genererte PDF, må du angi dette andre språket, slik at generert PDF vil inneholde 2 forskjellige språk på samme side, det som er valgt når du genererer PDF og dette ( bare få PDF-maler støtter dette). Hold tom for ett språk per PDF. -PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF +PDF_USE_A=Lag PDF-dokumenter med PDF/A-format i stedet for standard-PDF FafaIconSocialNetworksDesc=Skriv inn koden til et FontAwesome-ikon. Hvis du ikke vet hva som er FontAwesome, kan du bruke den generelle verdien fa-adresseboken. RssNote=Merk: Hver definisjon av RSS-feed gir en widget som du må aktivere for å ha den tilgjengelig i dashbordet JumpToBoxes=Gå til Setup -> Widgets @@ -2157,62 +2159,64 @@ SwitchThisForABetterSecurity=Det anbefales å bytte denne verdien til %s for mer DictionaryProductNature= Varens art CountryIfSpecificToOneCountry=Land (hvis spesifikt for et gitt land) YouMayFindSecurityAdviceHere=Du kan finne sikkerhetsrådgivning her -ModuleActivatedMayExposeInformation=This PHP extension may expose sensitive data. If you don't need it, disable it. +ModuleActivatedMayExposeInformation=Denne PHP-utvidelsen kan avsløre sensitive data. Hvis du ikke trenger det, deaktiver det. ModuleActivatedDoNotUseInProduction=En modul designet for utvikling er aktivert. Ikke aktiver det i et produksjonsmiljø. CombinationsSeparator=Skilletegn for varekombinasjoner SeeLinkToOnlineDocumentation=Se lenke til online dokumentasjon i toppmenyen for eksempler SHOW_SUBPRODUCT_REF_IN_PDF=Hvis funksjonen "%s" til modul %s brukes, kan du vise detaljer om undervarer av et sett på PDF. AskThisIDToYourBank=Kontakt banken din for å få denne ID-en AdvancedModeOnly=Tillatelse bare tilgjengelig i avansert tillatelsesmodus -ConfFileIsReadableOrWritableByAnyUsers=The conf file is readable or writable by any users. Give permission to web server user and group only. +ConfFileIsReadableOrWritableByAnyUsers=Conf-filen er lesbar eller skrivbar av alle brukere. Gi tillatelse kun til nettserverbruker og -gruppe. MailToSendEventOrganization=Hendelse organisasjon -MailToPartnership=Partnership -AGENDA_EVENT_DEFAULT_STATUS=Default event status when creating a event from the form +MailToPartnership=Partnerskap +AGENDA_EVENT_DEFAULT_STATUS=Standard hendelsesstatus når du oppretter en hendelse fra skjemaet YouShouldDisablePHPFunctions=Du bør deaktivere PHP-funksjoner -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 +IfCLINotRequiredYouShouldDisablePHPFunctions=Bortsett fra hvis du trenger å kjøre systemkommandoer i tilpasset kode, bør du deaktivere PHP-funksjoner +PHPFunctionsRequiredForCLI=For shell-formål (som planlagt jobbsikkerhetskopiering eller å kjøre et anitivurs-program), må du beholde PHP-funksjoner NoWritableFilesFoundIntoRootDir=Ingen skrivbare filer eller kataloger for de vanlige programmene ble funnet i rotkatalogen din (Bra) RecommendedValueIs=Anbefalt: %s Recommended=Anbefalt -NotRecommended=Not recommended -ARestrictedPath=Some restricted path +NotRecommended=Ikke anbefalt +ARestrictedPath=Noe begrenset sti CheckForModuleUpdate=Se etter oppdateringer for eksterne moduler CheckForModuleUpdateHelp=Denne handlingen kobles til editorer for eksterne moduler for å sjekke om en ny versjon er tilgjengelig. ModuleUpdateAvailable=En oppdatering er tilgjengelig NoExternalModuleWithUpdate=Ingen oppdateringer funnet for eksterne moduler SwaggerDescriptionFile=Swagger API-beskrivelsesfil (for bruk med f.eks redoc) -YouEnableDeprecatedWSAPIsUseRESTAPIsInstead=You enabled deprecated WS API. You should use REST API instead. -RandomlySelectedIfSeveral=Randomly selected if several pictures are available -DatabasePasswordObfuscated=Database password is obfuscated in conf file -DatabasePasswordNotObfuscated=Database password is NOT obfuscated in conf file -APIsAreNotEnabled=APIs modules are not enabled -YouShouldSetThisToOff=You should set this to 0 or off -InstallAndUpgradeLockedBy=Install and upgrades are locked by the file %s -OldImplementation=Old implementation -PDF_SHOW_LINK_TO_ONLINE_PAYMENT=If some online payment modules are enabled (Paypal, Stripe, ...), add a link on the PDF to make the online payment -DashboardDisableGlobal=Disable globally all the thumbs of open objects -BoxstatsDisableGlobal=Disable totally box statistics -DashboardDisableBlocks=Thumbs of open objects (to process or late) on main dashboard -DashboardDisableBlockAgenda=Disable the thumb for agenda -DashboardDisableBlockProject=Disable the thumb for projects -DashboardDisableBlockCustomer=Disable the thumb for customers -DashboardDisableBlockSupplier=Disable the thumb for suppliers -DashboardDisableBlockContract=Disable the thumb for contracts -DashboardDisableBlockTicket=Disable the thumb for tickets -DashboardDisableBlockBank=Disable the thumb for banks -DashboardDisableBlockAdherent=Disable the thumb for memberships -DashboardDisableBlockExpenseReport=Disable the thumb for expense reports -DashboardDisableBlockHoliday=Disable the thumb for leaves -EnabledCondition=Condition to have field enabled (if not enabled, visibility will always be off) -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 -LanguageAndPresentation=Language and presentation -SkinAndColors=Skin and colors -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 -PDF_USE_1A=Generate PDF with PDF/A-1b format -MissingTranslationForConfKey = Missing translation for %s -NativeModules=Native modules -NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria -API_DISABLE_COMPRESSION=Disable compression of API responses -EachTerminalHasItsOwnCounter=Each terminal use its own counter. +YouEnableDeprecatedWSAPIsUseRESTAPIsInstead=Du har aktivert utdatert WS API. Du bør bruke REST API i stedet. +RandomlySelectedIfSeveral=Tilfeldig valgt hvis flere bilder er tilgjengelige +DatabasePasswordObfuscated=Databasepassord er skjult i conf-filen +DatabasePasswordNotObfuscated=Databasepassord er IKKE skjult i conf-filen +APIsAreNotEnabled=API-moduler er ikke aktivert +YouShouldSetThisToOff=Du bør sette dette til 0 eller av +InstallAndUpgradeLockedBy=Installasjon og oppgraderinger er låst av filen %s +OldImplementation=Gammel implementering +PDF_SHOW_LINK_TO_ONLINE_PAYMENT=Hvis noen elektroniske betalingsmoduler er aktivert (Paypal, Stripe, ...), legg til en lenke på PDF-en for å foreta online betaling +DashboardDisableGlobal=Deaktiver alle knapper til åpne objekter globalt +BoxstatsDisableGlobal=Deaktiver boksstatistikk fullstendig +DashboardDisableBlocks=Knapper for åpne objekter (for å behandle eller for sen) på hoveddashbordet +DashboardDisableBlockAgenda=Deaktiver knappen for agenda +DashboardDisableBlockProject=Deaktiver knappen for prosjekter +DashboardDisableBlockCustomer=Deaktiver knappen for kunder +DashboardDisableBlockSupplier=Deaktiver knappen for leverandører +DashboardDisableBlockContract=Deaktiver knappen for kontrakter +DashboardDisableBlockTicket=Deaktiver knappen for billetter +DashboardDisableBlockBank=Deaktiver knappen for banker +DashboardDisableBlockAdherent=Deaktiver knappen for medlemskap +DashboardDisableBlockExpenseReport=Deaktiver knappen for utgiftsrapporter +DashboardDisableBlockHoliday=Deaktiver knappen for permisjoner +EnabledCondition=Betingelse for å ha felt aktivert (hvis ikke aktivert, vil synlighet alltid være av) +IfYouUseASecondTaxYouMustSetYouUseTheMainTax=Hvis du vil bruke en andre avgift, må du også aktivere den første avgiften +IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=Hvis du vil bruke en tredje avgift, må du også aktivere den første avgiften +LanguageAndPresentation=Språk og presentasjon +SkinAndColors=Bakgrunn og farger +IfYouUseASecondTaxYouMustSetYouUseTheMainTax=Hvis du vil bruke en andre avgift, må du også aktivere den første avgiften +IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=Hvis du vil bruke en tredje avgift, må du også aktivere den første avgiften +PDF_USE_1A=Generer PDF med PDF/A-1b-format +MissingTranslationForConfKey = Mangler oversettelse for %s +NativeModules=Standard moduler +NoDeployedModulesFoundWithThisSearchCriteria=Ingen moduler funnet for disse søkekriteriene +API_DISABLE_COMPRESSION=Deaktiver komprimering av API-svar +EachTerminalHasItsOwnCounter=Hver terminal bruker sin egen teller. +FillAndSaveAccountIdAndSecret=Fyll ut og lagre konto-ID og hemmelighet først +PreviousHash=Forrige hash diff --git a/htdocs/langs/nb_NO/banks.lang b/htdocs/langs/nb_NO/banks.lang index 191ba99a968..dd89ad3631b 100644 --- a/htdocs/langs/nb_NO/banks.lang +++ b/htdocs/langs/nb_NO/banks.lang @@ -127,7 +127,7 @@ ConfirmDeleteTransaction=Er du sikker på at du vil slette denne oppføringen? ThisWillAlsoDeleteBankRecord=Dette vil også slette generert bankoppføring BankMovements=Bevegelser PlannedTransactions=Planlagte oppføringer -Graph=Graphs +Graph=Grafer ExportDataset_banque_1=Bankoppføringer og kontoutskrifter ExportDataset_banque_2=Kvittering TransactionOnTheOtherAccount=Transaksjonen på den andre kontoen diff --git a/htdocs/langs/nb_NO/bills.lang b/htdocs/langs/nb_NO/bills.lang index 81032b11a4a..6434c132de9 100644 --- a/htdocs/langs/nb_NO/bills.lang +++ b/htdocs/langs/nb_NO/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Betalingsrapporter PaymentsAlreadyDone=Betalinger allerede utført PaymentsBackAlreadyDone=Refusjon allerede gjort PaymentRule=Betalingsregel -PaymentMode=Betalingstype -DefaultPaymentMode=Standard betalingstype +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Standard bankkonto -PaymentTypeDC=Debet/kredit-kort -PaymentTypePP=PayPal -IdPaymentMode=Betalingstype (ID) -CodePaymentMode=Betalingstype (kode) -LabelPaymentMode=Betalingstype (etikett) -PaymentModeShort=Betalingstype +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Betalingsbetingelser PaymentConditions=Betalingsbetingelser PaymentConditionsShort=Betalingsbetingelser @@ -280,6 +279,7 @@ SetMode=Angi betalingsmåte SetRevenuStamp=Sett stempelmerke Billed=Fakturert RecurringInvoices=Gjentagende fakturaer +RecurringInvoice=Recurring invoice RepeatableInvoice=Fakturamal RepeatableInvoices=Fakturamaler Repeatable=Mal @@ -449,6 +449,8 @@ PaymentTypeTRA=Bankremisse PaymentTypeShortTRA=Kladd PaymentTypeFAC=Faktor PaymentTypeShortFAC=Faktor +PaymentTypeDC=Debet/kredit-kort +PaymentTypePP=PayPal BankDetails=Bankopplysninger BankCode=Bank code (ikke i Norge) DeskCode=Bransjekode @@ -466,7 +468,7 @@ RegulatedOn=Regulert den ChequeNumber=Sjekk nummer ChequeOrTransferNumber=Sjekk/overføringsnummer ChequeBordereau=Sjekk timeplan -ChequeMaker=Check/Transfer sender +ChequeMaker=Sjekk/overføring avsender ChequeBank=Sjekkutsteders bank CheckBank=Sjekk NetToBePaid=Netto til betaling @@ -604,3 +606,4 @@ SituationTotalProgress=Total progresjon%d %% 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 diff --git a/htdocs/langs/nb_NO/blockedlog.lang b/htdocs/langs/nb_NO/blockedlog.lang index 554c86e4f39..c4aebc4e0b3 100644 --- a/htdocs/langs/nb_NO/blockedlog.lang +++ b/htdocs/langs/nb_NO/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Uforanderlige logger ShowAllFingerPrintsMightBeTooLong=Vis alle arkiverte logger (kan være lang) ShowAllFingerPrintsErrorsMightBeTooLong=Vis alle ikke-gyldige arkivlogger (kan være lang) DownloadBlockChain=Last ned fingeravtrykk -KoCheckFingerprintValidity=Arkiverte loggoppføringer er ikke gyldige. Det betyr at noen (en hacker?) Har endret noen data fra denne posten etter at den ble spilt inn, eller har slettet den forrige arkiverte posten (sjekk at linjen med forrige # eksisterer). +KoCheckFingerprintValidity=Arkiverte loggoppføringer er ikke gyldige. Det betyr at noen (en hacker?) Har endret noen data fra denne posten etter at den ble spilt inn, eller har slettet den forrige arkiverte posten (sjekk at linjen med forrige # eksisterer) eller har endret kontrollsummen for den forrige posten. OkCheckFingerprintValidity=Arkivert logg er gyldig. Det betyr at ingen data på denne linjen ble endret og posten følger den forrige. OkCheckFingerprintValidityButChainIsKo=Arkivert logg ser ut til å være gyldig i forhold til den forrige, men kjeden var ødelagt tidligere. AddedByAuthority=Lagret hos ekstern myndighet @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=Liste over land der bruken av denne module OnlyNonValid=Ikke gyldig TooManyRecordToScanRestrictFilters=For mange poster å skanne/analysere. Vennligst begrens listen med mer restriktive filtre. RestrictYearToExport=Begrens måned/år å eksportere +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/nb_NO/boxes.lang b/htdocs/langs/nb_NO/boxes.lang index 7e5fcadac57..191c5b93f60 100644 --- a/htdocs/langs/nb_NO/boxes.lang +++ b/htdocs/langs/nb_NO/boxes.lang @@ -46,9 +46,9 @@ BoxMyLastBookmarks=Bokmerker: siste %s BoxOldestExpiredServices=Eldste aktive utløpte tjenester BoxLastExpiredServices=Siste %s eldste kontakter med aktive, utgåtte tjenseter BoxTitleLastActionsToDo=Siste %s handlinger å utføre -BoxTitleLastContracts=Latest %s contracts which were modified -BoxTitleLastModifiedDonations=Latest %s donations which were modified -BoxTitleLastModifiedExpenses=Latest %s expense reports which were modified +BoxTitleLastContracts=Siste %s kontrakter som ble endret +BoxTitleLastModifiedDonations=Siste %s donasjoner som ble endret +BoxTitleLastModifiedExpenses=Siste %s utgiftsrapporter som ble endret BoxTitleLatestModifiedBoms=Latest %s BOMs which were modified BoxTitleLatestModifiedMos=Latest %s Manufacturing Orders which were modified BoxTitleLastOutstandingBillReached=Kunder med maksimalt utestående overskredet diff --git a/htdocs/langs/nb_NO/categories.lang b/htdocs/langs/nb_NO/categories.lang index 806b89f8c77..c15fc12ff30 100644 --- a/htdocs/langs/nb_NO/categories.lang +++ b/htdocs/langs/nb_NO/categories.lang @@ -3,13 +3,13 @@ Rubrique=Merke/Kategori Rubriques=Merker/Kategorier RubriquesTransactions=Etiketter/Kategorier av transaksjoner categories=merker/kategorier -NoCategoryYet=No tag/category of this type has been created +NoCategoryYet=Ingen tag/kategori av denne typen er opprettet In=I AddIn=Legg til i modify=endre Classify=Klassifiser CategoriesArea=Merker/Kategorier-område -ProductsCategoriesArea=Product/Service tags/categories area +ProductsCategoriesArea=Område for vare/tjeneste etiketter/kategorier SuppliersCategoriesArea=Vendor tags/categories area CustomersCategoriesArea=Customer tags/categories area MembersCategoriesArea=Member tags/categories area diff --git a/htdocs/langs/nb_NO/compta.lang b/htdocs/langs/nb_NO/compta.lang index 6617f074041..b7b006d1ef5 100644 --- a/htdocs/langs/nb_NO/compta.lang +++ b/htdocs/langs/nb_NO/compta.lang @@ -192,9 +192,9 @@ LT2ReportByCustomersES=Rapport over tredjepart IRPF VATReport=Sales tax report VATReportByPeriods=Sales tax report by period VATReportByMonth=Sales tax report by month -VATReportByRates=Sales tax report by rate -VATReportByThirdParties=Sales tax report by third party -VATReportByCustomers=Sales tax report by customer +VATReportByRates=MVA-rapport etter sats +VATReportByThirdParties=MVA-rapport etter tredjepart +VATReportByCustomers=MVA-rapport etter kunde VATReportByCustomersInInputOutputMode=Rapport over innhentet og betalt MVA etter kunde VATReportByQuartersInInputOutputMode=Report by Sales tax rate of the tax collected and paid VATReportShowByRateDetails=Show details of this rate diff --git a/htdocs/langs/nb_NO/contracts.lang b/htdocs/langs/nb_NO/contracts.lang index ca3936ec42b..677f441c74c 100644 --- a/htdocs/langs/nb_NO/contracts.lang +++ b/htdocs/langs/nb_NO/contracts.lang @@ -36,7 +36,7 @@ CloseAContract=Lukk kontrakt ConfirmDeleteAContract=Er du sikker på at du vil slette denne kontrakten og alle tilhørende tjenester? ConfirmValidateContract=Er du sikker på at du vil validere denne kontrakten med navnet %s? ConfirmActivateAllOnContract=Dette åpner alle tjenester (ikke aktiv ennå). Er du sikker på at du vil åpne alle tjenestene? -ConfirmCloseContract=This will close all services (expired or not). Are you sure you want to close this contract? +ConfirmCloseContract=Dette vil stenge alle tjenester (utløpt eller ikke). Er du sikker på at du vil avslutte denne kontrakten? ConfirmCloseService=Er du sikker på at du vil lukke denne tjenesten med dato %s? ValidateAContract=Valider en kontrakt ActivateService=Aktiver tjeneste diff --git a/htdocs/langs/nb_NO/deliveries.lang b/htdocs/langs/nb_NO/deliveries.lang index 31485f7bafa..ba8834987ab 100644 --- a/htdocs/langs/nb_NO/deliveries.lang +++ b/htdocs/langs/nb_NO/deliveries.lang @@ -30,4 +30,4 @@ NonShippable=Kan ikke sendes ShowShippableStatus=Vis status sendingsklar ShowReceiving=Vis leveringskvittering NonExistentOrder=Ikkeeksisterende ordre -StockQuantitiesAlreadyAllocatedOnPreviousLines = Stock quantities already allocated on previous lines +StockQuantitiesAlreadyAllocatedOnPreviousLines = Lagermengder som allerede er tildelt på tidligere linjer diff --git a/htdocs/langs/nb_NO/errors.lang b/htdocs/langs/nb_NO/errors.lang index eee4619a3ea..c9842c73f67 100644 --- a/htdocs/langs/nb_NO/errors.lang +++ b/htdocs/langs/nb_NO/errors.lang @@ -4,14 +4,14 @@ NoErrorCommitIsDone=Ingen feil # Errors ErrorButCommitIsDone=Valider selv om feil ble funnet -ErrorBadEMail=Email %s is incorrect -ErrorBadMXDomain=Email %s seems incorrect (domain has no valid MX record) -ErrorBadUrl=Url %s is incorrect +ErrorBadEMail=E-posten %s er feil +ErrorBadMXDomain=E-posten %s virker feil (domenet har ingen gyldig MX-post) +ErrorBadUrl=URL %s er feil ErrorBadValueForParamNotAString=Feil parameterverdi. Dette skjer vanligvis når en oversettelse mangler. ErrorRefAlreadyExists=Referanse %s eksisterer allerede. ErrorLoginAlreadyExists=brukernavnet %s eksisterer allerede. ErrorGroupAlreadyExists=Gruppen %s eksisterer allerede. -ErrorEmailAlreadyExists=Email %s already exists. +ErrorEmailAlreadyExists=E-post %s eksisterer allerede. ErrorRecordNotFound=Posten ble ikke funnet. ErrorFailToCopyFile=Klarte ikke å kopiere filen '«%s' til '%s'. ErrorFailToCopyDir=Klarte ikke å kopiere katalogen '%s' til '%s'. @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Denne kontaktperson er allerede defin ErrorCashAccountAcceptsOnlyCashMoney=Dette er en kassekonto, så det er kun mulig med kontantinnskudd på den. ErrorFromToAccountsMustDiffers=Kilde- og målkonto må være forskjellig. ErrorBadThirdPartyName=Feil verdi for tredjepartsnavn +ForbiddenBySetupRules=Forbudt av oppsettsregler ErrorProdIdIsMandatory=%s er obligatorisk +ErrorAccountancyCodeCustomerIsMandatory=Regnskapskoden til kunden %s er obligatorisk ErrorBadCustomerCodeSyntax=Ugyldig syntaks for kundekode ErrorBadBarCodeSyntax=Feil syntaks for strekkode. Du kan ha satt en feil strekkodetype eller du kan ha definert en strekkode-maske som ikke passer verdien du har skannet ErrorCustomerCodeRequired=Kundekode påkrevet @@ -47,8 +49,8 @@ ErrorWrongDate=Dato er feil! ErrorFailedToWriteInDir=Kan ikke skrive til mappen %s ErrorFoundBadEmailInFile=Feil e-postsyntaks for %s linjer i filen (for eksempel linje %s med e-post=%s) ErrorUserCannotBeDelete=Brukeren kan ikke slettes. Kanskje det er knyttet til Dolibarr-enheter. -ErrorFieldsRequired=Some required fields have been left blank. -ErrorSubjectIsRequired=The email subject is required +ErrorFieldsRequired=Noen obligatoriske felt er tomme. +ErrorSubjectIsRequired=E-postemnet er obligatorisk ErrorFailedToCreateDir=Kunne ikke opprette mappen. Kontroller at webserverbrukeren har skriverettigheter i dokumentmappen i Dolibarr. Hvis safe_mode er akivert i PHP, sjekk at webserveren eier eller er med i gruppen(eller bruker) for Dolibarr php-filer. ErrorNoMailDefinedForThisUser=Ingen e-post angitt for denne brukeren. ErrorSetupOfEmailsNotComplete=Installasjonen av e-post er ikke fullført @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=PHP-parameteren upload_max_filesize (%s) er høyere enn PHP-parameteren post_max_size (%s). Dette er ikke et konsistent oppsett. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/nb_NO/eventorganization.lang b/htdocs/langs/nb_NO/eventorganization.lang index 8d385d980d7..1550104e1a6 100644 --- a/htdocs/langs/nb_NO/eventorganization.lang +++ b/htdocs/langs/nb_NO/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -69,28 +69,29 @@ EventOrganizationEmailAskConf = Request for conference EventOrganizationEmailAskBooth = Request for booth EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event -EventOrganizationMassEmailAttendees = Communication to attendees +EventOrganizationMassEmailAttendees = Kommunikasjon til deltakere EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event # -AllowUnknownPeopleSuggestConf=Allow people to suggest conferences -AllowUnknownPeopleSuggestConfHelp=Allow unknown people to suggest a conference they want to do +AllowUnknownPeopleSuggestConf=Tillat folk å foreslå konferanser +AllowUnknownPeopleSuggestConfHelp=Tillat ukjente personer å foreslå en konferanse de ønsker å holde AllowUnknownPeopleSuggestBooth=Allow people to apply for a booth AllowUnknownPeopleSuggestBoothHelp=Allow unknown people to apply for a booth -PriceOfRegistration=Price of registration +PriceOfRegistration=Pris for registrering PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations -Attendees=Attendees +Attendees=Deltakere ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status @@ -98,9 +99,9 @@ NbVotes=Number of votes EvntOrgDraft = Kladd EvntOrgSuggested = Suggested EvntOrgConfirmed = Confirmed -EvntOrgNotQualified = Not Qualified +EvntOrgNotQualified = Ikke kvalifisert EvntOrgDone = Utført -EvntOrgCancelled = Cancelled +EvntOrgCancelled = Kansellert # # Public page # @@ -116,7 +117,7 @@ SuggestConference = Suggest a new conference SuggestBooth = Suggest a booth ViewAndVote = View and vote for suggested events PublicAttendeeSubscriptionGlobalPage = Public link for registration to the event -PublicAttendeeSubscriptionPage = Public link for registration to this event only +PublicAttendeeSubscriptionPage = Offentlig lenke for registrering kun til dette arrangementet MissingOrBadSecureKey = The security key is invalid or missing EvntOrgWelcomeMessage = This form allows you to register as a new participant to the event : %s EvntOrgDuration = This conference starts on %s and ends on %s. diff --git a/htdocs/langs/nb_NO/help.lang b/htdocs/langs/nb_NO/help.lang index 4e6bdcd2064..d07c6129081 100644 --- a/htdocs/langs/nb_NO/help.lang +++ b/htdocs/langs/nb_NO/help.lang @@ -1,13 +1,13 @@ # Dolibarr language file - Source file is en_US - help CommunitySupport=Forum/Wiki-support EMailSupport=Epostsupport -RemoteControlSupport=Online support +RemoteControlSupport=Online sanntids/ekstern støtte OtherSupport=Annen support ToSeeListOfAvailableRessources=For å se tilgjengelige ressurser: -HelpCenter=Brukerstøtte -DolibarrHelpCenter=Dolibarr Help and Support Center -ToGoBackToDolibarr=Otherwise, click here to continue to use Dolibarr. -TypeOfSupport=Type of support +HelpCenter=Hjelpesenter +DolibarrHelpCenter=Dolibarr hjelp og støttesenter +ToGoBackToDolibarr=Ellers, klikk her for å fortsette å bruke Dolibarr . +TypeOfSupport=Type støtte TypeSupportCommunauty=Brukergruppe (gratis) TypeSupportCommercial=Kommersiell TypeOfHelp=Type @@ -15,9 +15,9 @@ NeedHelpCenter=Trenger du support? Efficiency=Effektivitet TypeHelpOnly=Kun hjelp TypeHelpDev=Hjelp + Utvikling -TypeHelpDevForm=Help+Development+Training -BackToHelpCenter=Otherwise, go back to Help center home page. -LinkToGoldMember=You can call one of the trainers preselected by Dolibarr for your language (%s) by clicking their Widget (status and maximum price are automatically updated): +TypeHelpDevForm=Hjelp+utvikling+trening +BackToHelpCenter=Ellers,gå tilbake til brukerstøttens hjemmeside . +LinkToGoldMember=Du kan ringe forhåndsvalgt support fra Dolibarr for ditt språk (%s) ved å klikke dennes Widget (status og maksimumspris blir automatisk oppdatert): PossibleLanguages=Støttede språk -SubscribeToFoundation=Help the Dolibarr project, subscribe to the foundation -SeeOfficalSupport=For offisiell Dolibarr support på ditt språk:
%s +SubscribeToFoundation=Hjelp Dolibarr-prosjektet, bli en abonnent +SeeOfficalSupport=For offisiell Dolibarr-støtte på ditt språk:
%s diff --git a/htdocs/langs/nb_NO/holiday.lang b/htdocs/langs/nb_NO/holiday.lang index daac20feb25..2bea6f53125 100644 --- a/htdocs/langs/nb_NO/holiday.lang +++ b/htdocs/langs/nb_NO/holiday.lang @@ -125,7 +125,7 @@ HolidaysCanceledBody=Feriesøknaden din for perioden %s til %s er blitt kanselle FollowedByACounter=1: Denne typen ferie må være etterfulgt av en teller. Telleren økes automatisk eller manuelt, og når ferieforespørselen blir validert, blir den redusert.
0: Ikke etterfulgt av en teller NoLeaveWithCounterDefined=Det er ikke definert noen ferietyper som trenger en teller GoIntoDictionaryHolidayTypes=Gå til Hjem - Oppsett - Ordbøker - Type permisjon for å sette opp forskjellige permisjonstyper. -HolidaySetup=Setup of module Leave +HolidaySetup=Oppsett av modul Permisjon HolidaysNumberingModules=Numbering models for leave requests TemplatePDFHolidays=PDF-mal for permisjonsforespørsler FreeLegalTextOnHolidays=Fritekst på PDF @@ -134,4 +134,6 @@ HolidaysToApprove=Ferier til godkjenning NobodyHasPermissionToValidateHolidays=Ingen har tillatelse til å validere ferier HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/nb_NO/hrm.lang b/htdocs/langs/nb_NO/hrm.lang index a37a8bdd725..db7383f745d 100644 --- a/htdocs/langs/nb_NO/hrm.lang +++ b/htdocs/langs/nb_NO/hrm.lang @@ -20,40 +20,40 @@ Employee=Ansatt NewEmployee=Ny ansatt ListOfEmployees=Liste over ansatte HrmSetup=Oppsett av HRM-modul -HRM_MAXRANK=Maximum rank for a skill -HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created -deplacement=Shift -DateEval=Evaluation date -JobCard=Job card -Job=Jobb -Jobs=Jobs -NewSkill=New Skill -SkillType=Skill type -Skilldets=List of ranks for this skill -Skilldet=Skill level -rank=Rank -ErrNoSkillSelected=No skill selected -ErrSkillAlreadyAdded=This skill is already in the list -SkillHasNoLines=This skill has no lines -skill=Skill -Skills=Skills -SkillCard=Skill card -EmployeeSkillsUpdated=Employee skills have been updated (see "Skills" tab of employee card) -Eval=Evaluation -Evals=Evaluations -NewEval=New evaluation +SkillsManagement=Administrasjon av ferdigheter +HRM_MAXRANK=Maksimalt antall nivåer for å rangere en ferdighet +HRM_DEFAULT_SKILL_DESCRIPTION=Standard beskrivelse av rangeringer når ferdigheter opprettes +deplacement=Skift +DateEval=Evalueringsdato +JobCard=Jobbkort +JobPosition=Jobb +JobsPosition=Jobber +NewSkill=Ny ferdighet +SkillType=Ferdighetstype +Skilldets=Liste over rangeringer for denne ferdigheten +Skilldet=Ferdighetsnivå +rank=Rangering +ErrNoSkillSelected=Ingen ferdighet valgt +ErrSkillAlreadyAdded=Denne ferdigheten er allerede på listen +SkillHasNoLines=Denne ferdigheten har ingen linjer +skill=Ferdighet +Skills=Ferdigheter +SkillCard=Ferdighetskort +EmployeeSkillsUpdated=Ansattes ferdigheter har blitt oppdatert (se fanen "Ferdigheter" på ansattkort) +Eval=Evaluering +Evals=Evalueringer +NewEval=Ny evaluering ValidateEvaluation=Valider evaluering -ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with reference %s? -EvaluationCard=Evaluation card -RequiredRank=Required rank for this job -EmployeeRank=Employee rank for this skill -Position=Posisjon -Positions=Positions -PositionCard=Position card -EmployeesInThisPosition=Employees in this position -group1ToCompare=Usergroup to analyze -group2ToCompare=Second usergroup for comparison -OrJobToCompare=Compare to job skills requirements +ConfirmValidateEvaluation=Er du sikker på at du vil validere denne evalueringen med referansen %s ? +EvaluationCard=Evalueringskort +RequiredRank=Nødvendig rangering for denne jobben +EmployeeRank=Ansatt rangering for denne ferdigheten +EmployeePosition=Ansattstilling +EmployeePositions=Ansattstillinger +EmployeesInThisPosition=Ansatte i denne stillingen +group1ToCompare=Brukergruppe å analysere +group2ToCompare=Andre brukergruppe for sammenligning +OrJobToCompare=Sammenlign med krav til jobbkompetanse difference=Forskjell CompetenceAcquiredByOneOrMore=Competence acquired by one or more users but not requested by the second comparator MaxlevelGreaterThan=Max level greater than the one requested @@ -64,7 +64,7 @@ MaxLevelEqualToShort=Employee level equals to that demand MaxLevelLowerThanShort=Employee level lower than that demand SkillNotAcquired=Skill not acquired by all users and requested by the second comparator legend=Historikk -TypeSkill=Skill type +TypeSkill=Ferdighetstype AddSkill=Add skills to job RequiredSkills=Required skills for this job UserRank=User Rank diff --git a/htdocs/langs/nb_NO/install.lang b/htdocs/langs/nb_NO/install.lang index 88c083aadce..610a81b0135 100644 --- a/htdocs/langs/nb_NO/install.lang +++ b/htdocs/langs/nb_NO/install.lang @@ -21,7 +21,7 @@ ErrorPHPDoesNotSupportCurl=Din PHP-installasjon støtter ikke Curl. ErrorPHPDoesNotSupportCalendar=PHP-installasjonen din støtter ikke php-kalenderutvidelser. ErrorPHPDoesNotSupportUTF8=Din PHP installasjon har ikke støtte for UTF8-funksjoner. Dolibarr vil ikke fungere riktig. Løs dette før du installerer Dolibarr. ErrorPHPDoesNotSupportIntl=PHP-installasjonen støtter ikke Intl-funksjoner. -ErrorPHPDoesNotSupportMbstring=Your PHP installation does not support mbstring functions. +ErrorPHPDoesNotSupportMbstring=PHP-installasjonen din støtter ikke mbstring-funksjoner. ErrorPHPDoesNotSupportxDebug=PHP-installasjonen din støtter ikke utvidede feilsøkingsfunksjoner. ErrorPHPDoesNotSupport=PHP-installasjonen din støtter ikke %s-funksjoner. ErrorDirDoesNotExists=Mappen %s finnes ikke. @@ -207,7 +207,7 @@ MigrationUserPhotoPath=Migrering av foto-stier for brukere MigrationFieldsSocialNetworks=Migrering av felt med brukeres sosiale nettverk (%s) MigrationReloadModule=Last inn modulen %s på nytt MigrationResetBlockedLog=Tilbakestill modul BlockedLog for v7 algoritme -MigrationImportOrExportProfiles=Migration of import or export profiles (%s) +MigrationImportOrExportProfiles=Migrering av import- eller eksportprofiler (%s) ShowNotAvailableOptions=Vis utilgjengelige alternativer 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. diff --git a/htdocs/langs/nb_NO/interventions.lang b/htdocs/langs/nb_NO/interventions.lang index 820444dedae..70e3828eb16 100644 --- a/htdocs/langs/nb_NO/interventions.lang +++ b/htdocs/langs/nb_NO/interventions.lang @@ -65,4 +65,4 @@ InterLineDesc=Intervensjonsbeskrivelse-linje RepeatableIntervention=Intervensjon-mal ToCreateAPredefinedIntervention=Hvis du vil lage et forhåndsdefinert eller tilbakevendende intervensjon, oppretter du en vanlig intervensjon og konverterer den til intervensjonsmal ConfirmReopenIntervention=Er du sikker på at du vil gjenåpne intervensjonen %s ? -GenerateInter=Generate intervention +GenerateInter=Generer intervensjon diff --git a/htdocs/langs/nb_NO/knowledgemanagement.lang b/htdocs/langs/nb_NO/knowledgemanagement.lang index ff7a2a6c702..21668a4b710 100644 --- a/htdocs/langs/nb_NO/knowledgemanagement.lang +++ b/htdocs/langs/nb_NO/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Ekstra felt for artikkel GroupOfTicket=Billettgrupper YouCanLinkArticleToATicketCategory=Du kan koble en artikkel til en billettgruppe (artikkelen vil bli foreslått under kvalifisering av nye billetter) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/nb_NO/main.lang b/htdocs/langs/nb_NO/main.lang index 5bdbce0bf79..790be456d63 100644 --- a/htdocs/langs/nb_NO/main.lang +++ b/htdocs/langs/nb_NO/main.lang @@ -67,7 +67,7 @@ ErrorNoVATRateDefinedForSellerCountry=Feil: Det er ikke definert noen MVA-satser ErrorNoSocialContributionForSellerCountry=Feil! Ingen skatter og avgifter definert for landet '%s' ErrorFailedToSaveFile=Feil: Klarte ikke å lagre filen. ErrorCannotAddThisParentWarehouse=Du prøver å legge til et forelder-lagerhus som allerede er under et eksisterende lager -FieldCannotBeNegative=Field "%s" cannot be negative +FieldCannotBeNegative=Feltet "%s" kan ikke være negativt MaxNbOfRecordPerPage=Maks antall poster per side NotAuthorized=Du er ikke autorisert for å gjøre dette. SetDate=Still dato @@ -88,7 +88,7 @@ FileWasNotUploaded=En fil er valgt som vedlegg, men er ennå ikke lastet opp. Kl NbOfEntries=Antall oppføringer GoToWikiHelpPage=Les online-hjelp (Du må være tilknyttet internett) GoToHelpPage=Les hjelp -DedicatedPageAvailable=Dedicated help page related to your current screen +DedicatedPageAvailable=Dedikert hjelpeside relatert til din nåværende skjerm HomePage=Hjemmeside RecordSaved=Posten er lagret RecordDeleted=Oppføring slettet @@ -115,7 +115,7 @@ ReturnCodeLastAccessInError=Returkode for siste database adgangsfeil InformationLastAccessInError=Informasjom om siste database adgangsfeil DolibarrHasDetectedError=Dolibarr oppdaget en teknisk feil YouCanSetOptionDolibarrMainProdToZero=Du kan lese loggfilen eller angi alternativet $dolibarr_main_prod til '0' i konfigurasjonsfilen din for å få mer informasjon. -InformationToHelpDiagnose=This information can be useful for diagnostic purposes (you can set option $dolibarr_main_prod to '1' to hide sensitive information) +InformationToHelpDiagnose=Denne informasjonen kan være nyttig for diagnostiske formål (du kan sette alternativet $dolibarr_main_prod til '1' for å skjule sensitiv informasjon) MoreInformation=Mer informasjon TechnicalInformation=Teknisk informasjon TechnicalID=Teknisk ID @@ -181,7 +181,7 @@ SaveAndNew=Lagre og ny TestConnection=Test tilkobling ToClone=Klon ConfirmCloneAsk=Er du sikker på at du vil klone objektet %s? -ConfirmClone=Choose the data you want to clone: +ConfirmClone=Velg dataene du vil klone: NoCloneOptionsSpecified=Det er ikke valgt noen data å klone. Of=av Go=Gå @@ -212,8 +212,8 @@ User=Bruker Users=Brukere Group=Gruppe Groups=Grupper -UserGroup=User group -UserGroups=User groups +UserGroup=Brukergruppe +UserGroups=Brukergrupper NoUserGroupDefined=Ingen brukergrupper er definert Password=Passord PasswordRetype=Gjenta passord @@ -249,7 +249,7 @@ DefaultModel=Standard dokumentmal Action=Handling About=Om Number=Antall -NumberByMonth=Total reports by month +NumberByMonth=Totale rapporter per måned AmountByMonth=Beløp etter måned Numero=Nummer Limit=Grense @@ -344,7 +344,7 @@ KiloBytes=Kilobyte MegaBytes=Megabyte GigaBytes=Gigabyte TeraBytes=Terabyte -UserAuthor=Ceated by +UserAuthor=Opprettet av UserModif=Oppdatert av b=b. Kb=Kb @@ -365,7 +365,7 @@ UnitPriceHTCurrency=Enhetspris (ekskl.) (Valuta) UnitPriceTTC=Enhetspris PriceU=Pris PriceUHT=Pris (netto) -PriceUHTCurrency=U.P (net) (currency) +PriceUHTCurrency=U.P (netto) (valuta) PriceUTTC=U.P. (inkl. avgift) Amount=Beløp AmountInvoice=Fakturabeløp @@ -433,7 +433,7 @@ LT1IN=CGST LT2IN=SGST LT1GC=Ekstra cents VATRate=MVA-sats -RateOfTaxN=Rate of tax %s +RateOfTaxN=Avgiftssats %s VATCode=Avgiftsats-kode VATNPR=Avgiftsats NPR DefaultTaxRate=Standard avgiftssats @@ -733,7 +733,7 @@ MenuMembers=Medlemmer MenuAgendaGoogle=Google agenda MenuTaxesAndSpecialExpenses=Avgifter | Spesielle utgifter ThisLimitIsDefinedInSetup=Dolibarr grense (Menu home-setup-security): %s Kb, PHP grense: %s Kb -ThisLimitIsDefinedInSetupAt=Dolibarr limit (Menu %s): %s Kb, PHP limit (Param %s): %s Kb +ThisLimitIsDefinedInSetupAt=Dolibarr-grense (Meny %s): %s Kb, PHP-grense (Param %s): %s Kb NoFileFound=Ingen dokumenter lastet opp CurrentUserLanguage=Gjeldende språk CurrentTheme=Gjeldende tema @@ -807,7 +807,7 @@ LinkToSupplierInvoice=Link til leverandørfaktura LinkToContract=Lenke til kontakt LinkToIntervention=Lenke til intervensjon LinkToTicket=Link til billett -LinkToMo=Link to Mo +LinkToMo=Link til Mo CreateDraft=Lag utkast SetToDraft=Tilbake til kladd ClickToEdit=Klikk for å redigere @@ -851,7 +851,7 @@ XMoreLines=%s linje(r) skjult ShowMoreLines=Vis flere/færre linjer PublicUrl=Offentlig URL AddBox=Legg til boks -SelectElementAndClick=Select an element and click on %s +SelectElementAndClick=Velg et element og klikk på %s PrintFile=Skriv fil %s ShowTransaction=Vis oppføring på bankkonto ShowIntervention=Vis intervensjon @@ -862,8 +862,8 @@ Denied=Avvist ListOf=Liste over %s ListOfTemplates=Liste over maler Gender=Kjønn -Genderman=Male -Genderwoman=Female +Genderman=Mann +Genderwoman=Kvinne Genderother=Annet ViewList=Listevisning ViewGantt=Gantt-visning @@ -909,7 +909,7 @@ ViewFlatList=Vis liste ViewAccountList=Vis hovedbok ViewSubAccountList=Vis underkonto hovedbok RemoveString=Fjern strengen '%s' -SomeTranslationAreUncomplete=Some of the languages offered may be only partially translated or may contain errors. Please help to correct your language by registering at https://transifex.com/projects/p/dolibarr/ to add your improvements. +SomeTranslationAreUncomplete=Noen av språkene som tilbys kan være bare delvis oversatt eller kan inneholde feil. Vennligst hjelp til å rette språket ditt ved å registrere deg på https://transifex.com/projects/p/dolibarr/ for å legge til forbedringene dine.q DirectDownloadLink=Offentlig nedlastingskobling PublicDownloadLinkDesc=Kun koblingen kreves for å laste ned filen DirectDownloadInternalLink=Privat nedlastningskobling @@ -1078,7 +1078,7 @@ ValidFrom=Gyldig fra ValidUntil=Gyldig til NoRecordedUsers=Ingen brukere ToClose=Å lukke -ToRefuse=To refuse +ToRefuse=Å avvise ToProcess=Til behandling ToApprove=Å godkjenne GlobalOpenedElemView=Global visning @@ -1133,34 +1133,34 @@ UpdateForAllLines=Oppdatering for alle linjer OnHold=Venter Civility=Tiltale AffectTag=Påvirk merke -CreateExternalUser=Create external user +CreateExternalUser=Opprett ekstern bruker ConfirmAffectTag=Påvirk bulkmerke ConfirmAffectTagQuestion=Er du sikker på at du vil påvirke merker til valgte %s post(er)? CategTypeNotFound=Ingen merketype funnet for denne post-typen CopiedToClipboard=Kopiert til utklippstavlen -InformationOnLinkToContract=This amount is only the total of all the lines of the contract. No notion of time is taken into consideration. -ConfirmCancel=Are you sure you want to cancel -EmailMsgID=Email MsgID -SetToEnabled=Set to enabled -SetToDisabled=Set to disabled -ConfirmMassEnabling=mass enabling confirmation -ConfirmMassEnablingQuestion=Are you sure you want to enable the %s selected record(s)? -ConfirmMassDisabling=mass disabling confirmation -ConfirmMassDisablingQuestion=Are you sure you want to disable the %s selected record(s)? -RecordsEnabled=%s record(s) enabled -RecordsDisabled=%s record(s) disabled -RecordEnabled=Record enabled -RecordDisabled=Record disabled -Forthcoming=Forthcoming -Currently=Currently -ConfirmMassLeaveApprovalQuestion=Are you sure you want to approve the %s selected record(s)? -ConfirmMassLeaveApproval=Mass leave approval confirmation -RecordAproved=Record approved -RecordsApproved=%s Record(s) approved -Properties=Properties -hasBeenValidated=%s has been validated +InformationOnLinkToContract=Dette beløpet er bare summen av alle linjene i kontrakten. Ingen tidsbruk tas i betraktning. +ConfirmCancel=Er du sikker på at du vil avbryte +EmailMsgID=E-post MsgID +SetToEnabled=Sett til aktivert +SetToDisabled=Sett til deaktivert +ConfirmMassEnabling=bekreftelse av masseaktivering +ConfirmMassEnablingQuestion=Er du sikker på at du vil aktivere %s valgte post(er)? +ConfirmMassDisabling=bekreftelse av masse-deaktivering +ConfirmMassDisablingQuestion=Er du sikker på at du vil deaktivere %s valgte post(er)? +RecordsEnabled=%s-post(er) aktivert +RecordsDisabled=%s post(er) deaktivert +RecordEnabled=Post aktivert +RecordDisabled=Post deaktivert +Forthcoming=Forestående +Currently=Nåværende +ConfirmMassLeaveApprovalQuestion=Er du sikker på at du vil godkjenne %s valgte post(er)? +ConfirmMassLeaveApproval=Bekreftelse av massepermisjoner +RecordAproved=Post godkjent +RecordsApproved=%s Post(er) godkjent +Properties=Egenskaper +hasBeenValidated=%s har blitt validert ClientTZ=Tidssone (bruker) -NotClosedYet=Not yet closed -ClearSignature=Reset signature -CanceledHidden=Canceled hidden -CanceledShown=Canceled shown +NotClosedYet=Ikke lukket ennå +ClearSignature=Tilbakestill signatur +CanceledHidden=Kansellert skjult +CanceledShown=Kansellert vist diff --git a/htdocs/langs/nb_NO/margins.lang b/htdocs/langs/nb_NO/margins.lang index 11f3c7389a8..49566206e4a 100644 --- a/htdocs/langs/nb_NO/margins.lang +++ b/htdocs/langs/nb_NO/margins.lang @@ -22,7 +22,7 @@ ProductService=Vare eller tjeneste AllProducts=Alle varer og tjenester ChooseProduct/Service=Velg vare eller tjenester ForceBuyingPriceIfNull=Tving innkjøps-/kostpris til utsalgspris hvis udefinert -ForceBuyingPriceIfNullDetails=If buying/cost price not provided when we add a new line, and this option is "ON", the margin will be 0%% on the new line (buying/cost price = selling price). If this option is "OFF" (recommended), margin will be equal to the value suggested by default (and may be 100%% if no default value can be found). +ForceBuyingPriceIfNullDetails=Hvis kjøps-/kostpris ikke er oppgitt når vi legger til en ny linje, og dette alternativet er "PÅ", vil marginen være 0%% på den nye linjen (kjøps-/kostpris = salgspris). Hvis dette alternativet er "AV" (anbefalt), vil marginen være lik verdien som er foreslått som standard (og kan være 100%% hvis ingen standardverdi kan bli funnet). MARGIN_METHODE_FOR_DISCOUNT=Margin-metode for globale rabatter UseDiscountAsProduct=Som vare UseDiscountAsService=Som tjeneste diff --git a/htdocs/langs/nb_NO/mrp.lang b/htdocs/langs/nb_NO/mrp.lang index 76472d54610..763cb48fd6f 100644 --- a/htdocs/langs/nb_NO/mrp.lang +++ b/htdocs/langs/nb_NO/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Er du sikker på at du vil klone BOM%s? ConfirmCloneMo=Er du sikker på at du vil klone produksjonsordren %s? ManufacturingEfficiency=Produksjonseffektivitet ConsumptionEfficiency=Forbrukseffektivitet -ValueOfMeansLoss=Verdien på 0,95 betyr et gjennomsnitt på 5%% tap under produksjonen +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Verdi på 0,95 betyr et gjennomsnitt på 5%% tap av produsert produkt DeleteBillOfMaterials=Slett BOM DeleteMo=Slett produksjonsordre diff --git a/htdocs/langs/nb_NO/oauth.lang b/htdocs/langs/nb_NO/oauth.lang index c12bbee8939..f043acab01d 100644 --- a/htdocs/langs/nb_NO/oauth.lang +++ b/htdocs/langs/nb_NO/oauth.lang @@ -23,10 +23,10 @@ TOKEN_DELETE=Slett lagret nøkkel OAUTH_GOOGLE_NAME=OAuth Google service OAUTH_GOOGLE_ID=OAuth Google ID OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Gå til denne siden velg"Credentials" for å opprette OAuth credentials +OAUTH_GOOGLE_DESC=Gå til denne siden og deretter "Påloggingsinformasjon" for å opprette OAuth-legitimasjon OAUTH_GITHUB_NAME=OAuth GitHub service OAUTH_GITHUB_ID=OAuth GitHub ID OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Gå til denne siden velg "Register a new application" for å opprette OAuth credentials +OAUTH_GITHUB_DESC=Gå til denne siden og deretter "Registrer en ny søknad" for å opprette OAuth-legitimasjon OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live diff --git a/htdocs/langs/nb_NO/opensurvey.lang b/htdocs/langs/nb_NO/opensurvey.lang index fb9cc44fd22..82fccd3c6ea 100644 --- a/htdocs/langs/nb_NO/opensurvey.lang +++ b/htdocs/langs/nb_NO/opensurvey.lang @@ -48,8 +48,8 @@ AddEndHour=Legg til sluttime votes=Stemme(r) NoCommentYet=Ingen kommentarer for denne undersøkelsen enda CanComment=Stemmeavgivere kan kommentere i undersøkelsen -YourVoteIsPrivate=This poll is private, nobody can see your vote. -YourVoteIsPublic=This poll is public, anybody with the link can see your vote. +YourVoteIsPrivate=Denne avstemningen er privat, ingen kan se stemmen din. +YourVoteIsPublic=Denne avstemningen er offentlig, alle med lenken kan se stemmen din. CanSeeOthersVote=Stemmeavgivere kan se andres stemmer SelectDayDesc=For hver valgte dag kan du velge møtetidspunkt i følgende format :
- tom,
- "8h", "8H" eller "8:00" for timen møtet starter,
- "8-11", "8h-11h", "8H-11H" eller "8:00-11:00" for å gi møtet start- og sluttime,
- "8h15-11h15", "8H15-11H15" eller "8:15-11:15" for å inkludere minutter BackToCurrentMonth=Tilbake til gjeldende måned diff --git a/htdocs/langs/nb_NO/other.lang b/htdocs/langs/nb_NO/other.lang index 8ac37d51f1a..e41499eddea 100644 --- a/htdocs/langs/nb_NO/other.lang +++ b/htdocs/langs/nb_NO/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Prosjekt opprettet av e-post samler fra e-post MS TicketCreatedByEmailCollector=Supportseddel opprettet av e-post samler fra e-post MSGID %s OpeningHoursFormatDesc=Bruk en bindestrek for å skille åpning og stengetid.
Bruk et mellomrom for å angi forskjellige områder.
Eksempel: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Eksportområde diff --git a/htdocs/langs/nb_NO/partnership.lang b/htdocs/langs/nb_NO/partnership.lang index ab1764c6573..e08cf536e63 100644 --- a/htdocs/langs/nb_NO/partnership.lang +++ b/htdocs/langs/nb_NO/partnership.lang @@ -19,7 +19,7 @@ ModulePartnershipName=Håndtering av partnerskap PartnershipDescription=Modul for Partnerskapshåndtering PartnershipDescriptionLong= Modul for Partnerskapshåndtering -Partnership=Partnership +Partnership=Partnerskap AddPartnership=Add partnership CancelPartnershipForExpiredMembers=Partnership: Cancel partnership of members with expired subscriptions PartnershipCheckBacklink=Partnership: Check referring backlink diff --git a/htdocs/langs/nb_NO/paybox.lang b/htdocs/langs/nb_NO/paybox.lang index 8d214e26355..6150b479614 100644 --- a/htdocs/langs/nb_NO/paybox.lang +++ b/htdocs/langs/nb_NO/paybox.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - paybox PayBoxSetup=Oppsett av PayBox-modul -PayBoxDesc=Denne modulen setter oppmulighet for betaling på Paybox av kunder. Dette kan brukes for gratis betaling eller for betaling på et bestemt Dolibarr objekt (faktura, ordre, ...) +PayBoxDesc=Denne modulen tilbyr sider for å tillate betaling fra kunder på Paybox . Dette kan brukes for en gratis betaling eller for en betaling på et bestemt Dolibarr-objekt (faktura, ordre, ...) FollowingUrlAreAvailableToMakePayments=Følgende nettadresser er tilgjengelige for kundene til å foreta betalinger for Dolibarr objekter PaymentForm=Betalingskjema WelcomeOnPaymentPage=Velkommen til vår online betalingstjeneste @@ -20,7 +20,6 @@ AccountParameter=Kontoparametre UsageParameter=Parametre for bruk InformationToFindParameters=Hjelp til å finne din %s kontoinformasjon PAYBOX_CGI_URL_V2=Url til PAYBOX CGI-modul for betaling -VendorName=Navn på leverandøren CSSUrlForPaymentForm=URL til CSS-stilark for betalingsskjema NewPayboxPaymentReceived=Ny Paybox-betaling mottatt NewPayboxPaymentFailed=Ny Paybox-betaling forsøkt, men feilet diff --git a/htdocs/langs/nb_NO/paypal.lang b/htdocs/langs/nb_NO/paypal.lang index 292390e227b..1949a6a8eac 100644 --- a/htdocs/langs/nb_NO/paypal.lang +++ b/htdocs/langs/nb_NO/paypal.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - paypal PaypalSetup=PayPal moduloppsett -PaypalDesc=Denne modulen tillater betaling av kunder via PayPal . Dette kan brukes til en ad-hoc-betaling eller for en betaling knyttet til et Dolibarr-objekt (faktura, ordre, ...) +PaypalDesc=Denne modulen tillater betaling fra kunder via PayPal . Dette kan brukes for en ad-hoc betaling eller for en betaling knyttet til et Dolibarr-objekt (faktura, ordre, ...) PaypalOrCBDoPayment=Betal med PayPal (kort eller PayPal) PaypalDoPayment=Betal med PayPal PAYPAL_API_SANDBOX=Test-/sandkasse-modus diff --git a/htdocs/langs/nb_NO/products.lang b/htdocs/langs/nb_NO/products.lang index 310af8d837e..e6fb47664dc 100644 --- a/htdocs/langs/nb_NO/products.lang +++ b/htdocs/langs/nb_NO/products.lang @@ -407,6 +407,7 @@ mandatoryPeriodNeedTobeSetMsgValidate=A service requires a start and end period mandatoryHelper=Check this if you want a message to the user when creating / validating an invoice, commercial proposal, sales order without entering a start and end date on lines with this service.
Note that the message is a warning and not a blocking error. DefaultBOM=Default BOM DefaultBOMDesc=The default BOM recommended to use to manufacture this product. This field can be set only if nature of product is '%s'. -Rank=Rank +Rank=Rangering SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/nb_NO/projects.lang b/htdocs/langs/nb_NO/projects.lang index 2936a6696a6..03a762f1e2d 100644 --- a/htdocs/langs/nb_NO/projects.lang +++ b/htdocs/langs/nb_NO/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Forbruk pr. måned InputDetail=Inngangsdetalj TimeAlreadyRecorded=Dette tidsrommet er allerede registrert for denne oppgaven/dag og bruker %s ProjectsWithThisUserAsContact=Prosjekter med denne brukeren som kontakt +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Oppgaver tildelt denne brukeren ResourceNotAssignedToProject=Ikke tildelt til prosjekt ResourceNotAssignedToTheTask=Ikke tildelt oppgaven @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Merk: eksisterende prosjekter m SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=Sluttdato kan ikke være før startdato diff --git a/htdocs/langs/nb_NO/receptions.lang b/htdocs/langs/nb_NO/receptions.lang index 96fef6d8496..6696f50ec6a 100644 --- a/htdocs/langs/nb_NO/receptions.lang +++ b/htdocs/langs/nb_NO/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Oppsett av varemottak +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Mottak ref. Reception=Mottak Receptions=Mottak @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Mottak og kvitteringer for denne bestillingen ReceptionsToValidate=Mottak til validering StatusReceptionCanceled=Kansellert StatusReceptionDraft=Kladd -StatusReceptionValidated=Validert (klar til levering eller allerede levert) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Behandlet StatusReceptionDraftShort=Kladd StatusReceptionValidatedShort=Validert @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistikk utført på validerte mottak. Dato bru SendReceptionByEMail=Send mottak via e-post SendReceptionRef=Innlevering av mottak %s ActionsOnReception=Hendelser i mottak -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Mottakslinje ProductQtyInReceptionAlreadySent=Produktkvantitet fra åpne salgsordre som allerede er sendt ProductQtyInSuppliersReceptionAlreadyRecevied=Varekvantitet fra åpen leverandørordre som allerede er mottatt @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Dokumentmaler for mottak NoMorePredefinedProductToDispatch=Ingen flere forhåndsdefinerte varer som skal sendes ReceptionExist=Et mottak finnes ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/nb_NO/sendings.lang b/htdocs/langs/nb_NO/sendings.lang index 505285ee37a..3e624ddebb5 100644 --- a/htdocs/langs/nb_NO/sendings.lang +++ b/htdocs/langs/nb_NO/sendings.lang @@ -53,7 +53,7 @@ SendShippingByEMail=Send forsendelse via e-post SendShippingRef=Innsending av forsendelse %s ActionsOnShipping=Hendelser for forsendelse LinkToTrackYourPackage=Lenke for å spore pakken -ShipmentCreationIsDoneFromOrder=For the moment, creation of a new shipment is done from the Sales Order record. +ShipmentCreationIsDoneFromOrder=For øyeblikket gjøres opprettelsen av en ny forsendelse fra salgsordreposten. ShipmentLine=Forsendelseslinje ProductQtyInCustomersOrdersRunning=Varemengde fra åpne salgsordrer ProductQtyInSuppliersOrdersRunning=Varemengde fra åpne innkjøpsordrer diff --git a/htdocs/langs/nb_NO/stocks.lang b/htdocs/langs/nb_NO/stocks.lang index f9830c093dd..d439487fb4e 100644 --- a/htdocs/langs/nb_NO/stocks.lang +++ b/htdocs/langs/nb_NO/stocks.lang @@ -155,7 +155,7 @@ StockMustBeEnoughForInvoice=Lagernivå må være høyt nok til å legge varen/tj StockMustBeEnoughForOrder=Lagernivå må være høyt nok til å legge varen/tjenesten til ordre (sjekk er gjort mot dagens virkelige lagernivå når du legger til en linje i ordren i forhold til hva som er regelen for automatisk lagerendring) StockMustBeEnoughForShipment= Lagernivå må være høyt nok til å legge varen/tjenesten til levering (sjekk er gjort mot dagens virkelige lagernivå når du legger til en linje i leveringen i forhold til hva som er regelen for automatisk lagerendring) MovementLabel=Bevegelsesetikett -TypeMovement=Direction of movement +TypeMovement=Bevegelsesretning DateMovement=Dato for bevegelse InventoryCode=Bevegelse eller varelager IsInPackage=Innhold i pakken diff --git a/htdocs/langs/nb_NO/stripe.lang b/htdocs/langs/nb_NO/stripe.lang index 0fba0538905..f617b449aae 100644 --- a/htdocs/langs/nb_NO/stripe.lang +++ b/htdocs/langs/nb_NO/stripe.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - stripe StripeSetup=Stripe-moduloppsett -StripeDesc=Offer your customers an online payment page for payments with credit/debit cards via Stripe. This can be used to allow your customers to make ad-hoc payments or for payments related to a particular Dolibarr object (invoice, order, ...) +StripeDesc=Tilby kundene dine en online betalingsside for betalinger med kreditt-/debetkort via Stripe . Dette kan brukes til å la kundene dine foreta ad-hoc-betalinger eller for betalinger relatert til et bestemt Dolibarr-objekt (faktura, ordre, ...) StripeOrCBDoPayment=Betal med kredittkort eller Stripe FollowingUrlAreAvailableToMakePayments=Følgende nettadresser er tilgjengelige for kundene til å foreta betalinger for Dolibarr objekter PaymentForm=Betalingskjema diff --git a/htdocs/langs/nb_NO/users.lang b/htdocs/langs/nb_NO/users.lang index 15a09524559..51afe8d773e 100644 --- a/htdocs/langs/nb_NO/users.lang +++ b/htdocs/langs/nb_NO/users.lang @@ -98,7 +98,7 @@ NameToCreate=Navn på tredjepart til å lage YourRole=Dine roller YourQuotaOfUsersIsReached=Din kvote på aktive brukere er nådd! NbOfUsers=Number of users -NbOfPermissions=Number of permissions +NbOfPermissions=Antall permisjoner DontDowngradeSuperAdmin=Bare en superadmin kan nedgradere en superadmin HierarchicalResponsible=Veileder HierarchicView=Hierarkisk visning diff --git a/htdocs/langs/nb_NO/withdrawals.lang b/htdocs/langs/nb_NO/withdrawals.lang index c59a984628c..9e291c192bf 100644 --- a/htdocs/langs/nb_NO/withdrawals.lang +++ b/htdocs/langs/nb_NO/withdrawals.lang @@ -135,7 +135,7 @@ SEPARCUR=SEPA CUR SEPAFRST=SEPA FRST ExecutionDate=Utførelsesdato CreateForSepa=Lag direkte debitfil -ICS=Creditor Identifier - ICS +ICS=Kreditoridentifikator - ICS END_TO_END="EndToEndId" SEPA XML-tag - Unik ID tildelt per transaksjon USTRD="Ustrukturert" SEPA XML-tag ADDDAYS=Legg til dager til utførelsesdato diff --git a/htdocs/langs/nb_NO/workflow.lang b/htdocs/langs/nb_NO/workflow.lang index a37942ef2dd..1395daf1ac3 100644 --- a/htdocs/langs/nb_NO/workflow.lang +++ b/htdocs/langs/nb_NO/workflow.lang @@ -14,9 +14,13 @@ descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Klassifiser koblede kilde-kund descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Klassifiser koblede kilde-kundeordre som fakturert(t) når faktura er satt til betalt (og hvis fakturabeløpet er det samme som totalbeløpet av koblede ordrer) descWORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING=Klassifiser koblet kilde-kundeordre til sendt når en forsendelse er validert (og hvis kvantitet som sendes av alle forsendelser, er det samme som i bestillingen som skal oppdateres) descWORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING_CLOSED=Klassifiser koblet kildesalgsordre som sendt når en forsendelse er stengt (og hvis kvantumet som sendes av alle forsendelser er det samme som i ordren som skal oppdateres) -# Autoclassify purchase order +# Autoclassify purchase proposal descWORKFLOW_ORDER_CLASSIFY_BILLED_SUPPLIER_PROPOSAL=Klassifiser tilsluttede kildeleverandørtilbud som fakturert når leverandørfaktura er validert (og hvis fakturabeløp er det samme som totalbeløp på koblede tilbud) +# Autoclassify purchase order descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER=Klassifiser kildekjøpsordre (kjøpsordre) som fakturert når leverandørfakturaen er validert (og hvis fakturabeløp er det samme som totalbeløp på koblede ordre) +descWORKFLOW_ORDER_CLASSIFY_RECEIVED_RECEPTION=Klassifiser koblet kilde-innkjøpsordre som mottatt når et mottak er validert (og hvis antallet mottatt av alle mottak er det samme som i innkjøpsordren som skal oppdateres) +descWORKFLOW_ORDER_CLASSIFY_RECEIVED_RECEPTION_CLOSED=Klassifiser koblet kilde-innkjøpsordre som mottatt når et mottak er stengt (og hvis antallet mottatt av alle mottak er det samme som i innkjøpsordren som skal oppdatere) +# Autoclassify purchase invoice descWORKFLOW_BILL_ON_RECEPTION=Klassifiser mottak til "fakturert" når en koblet leverandørbestilling er validert # Autoclose intervention descWORKFLOW_TICKET_CLOSE_INTERVENTION=Lukk alle intervensjoner knyttet til billetten når en billett er lukket diff --git a/htdocs/langs/ne_NP/admin.lang b/htdocs/langs/ne_NP/admin.lang index 3971948e5a1..d79adb1e960 100644 --- a/htdocs/langs/ne_NP/admin.lang +++ b/htdocs/langs/ne_NP/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Foundation Version=Version Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=Step %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/ne_NP/bills.lang b/htdocs/langs/ne_NP/bills.lang index 3aaa5465ca0..f7d0155f41e 100644 --- a/htdocs/langs/ne_NP/bills.lang +++ b/htdocs/langs/ne_NP/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Payments reports PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Refunds already done PaymentRule=Payment rule -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Draft PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bank details BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/ne_NP/blockedlog.lang b/htdocs/langs/ne_NP/blockedlog.lang index 0bba5605d0f..12f28737d49 100644 --- a/htdocs/langs/ne_NP/blockedlog.lang +++ b/htdocs/langs/ne_NP/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/ne_NP/errors.lang b/htdocs/langs/ne_NP/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/ne_NP/errors.lang +++ b/htdocs/langs/ne_NP/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/ne_NP/eventorganization.lang b/htdocs/langs/ne_NP/eventorganization.lang index 82951892a32..b4a7279d757 100644 --- a/htdocs/langs/ne_NP/eventorganization.lang +++ b/htdocs/langs/ne_NP/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/ne_NP/holiday.lang b/htdocs/langs/ne_NP/holiday.lang index dceaef59081..3d0ae64be0f 100644 --- a/htdocs/langs/ne_NP/holiday.lang +++ b/htdocs/langs/ne_NP/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/ne_NP/knowledgemanagement.lang b/htdocs/langs/ne_NP/knowledgemanagement.lang index 2426e0e7013..bcdf9740cdd 100644 --- a/htdocs/langs/ne_NP/knowledgemanagement.lang +++ b/htdocs/langs/ne_NP/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/ne_NP/mrp.lang b/htdocs/langs/ne_NP/mrp.lang index 3f1aac53340..74bed0d9186 100644 --- a/htdocs/langs/ne_NP/mrp.lang +++ b/htdocs/langs/ne_NP/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/ne_NP/other.lang b/htdocs/langs/ne_NP/other.lang index 7b509f60ff7..49ff93dd589 100644 --- a/htdocs/langs/ne_NP/other.lang +++ b/htdocs/langs/ne_NP/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/ne_NP/products.lang b/htdocs/langs/ne_NP/products.lang index a8942bd337f..14715670882 100644 --- a/htdocs/langs/ne_NP/products.lang +++ b/htdocs/langs/ne_NP/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/ne_NP/projects.lang b/htdocs/langs/ne_NP/projects.lang index 0d9c7ea34c8..ff542521afe 100644 --- a/htdocs/langs/ne_NP/projects.lang +++ b/htdocs/langs/ne_NP/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/ne_NP/receptions.lang b/htdocs/langs/ne_NP/receptions.lang index 46b2d689609..7f1a97d16a9 100644 --- a/htdocs/langs/ne_NP/receptions.lang +++ b/htdocs/langs/ne_NP/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Canceled StatusReceptionDraft=Draft -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processed StatusReceptionDraftShort=Draft StatusReceptionValidatedShort=Validated @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/nl_BE/accountancy.lang b/htdocs/langs/nl_BE/accountancy.lang index 080da3b8334..b4327b3b13b 100644 --- a/htdocs/langs/nl_BE/accountancy.lang +++ b/htdocs/langs/nl_BE/accountancy.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - accountancy -Accountancy=Boekhouding ACCOUNTING_EXPORT_SEPARATORCSV=Kolom scheidingsteken voor exporteren naar bestand ACCOUNTING_EXPORT_DATE=Datum formaat voor exporteren naar bestand ACCOUNTING_EXPORT_PIECE=Exporteren van het aantal stukken @@ -7,7 +6,6 @@ ACCOUNTING_EXPORT_GLOBAL_ACCOUNT=Exporteren met globaal account Selectformat=Selecteer het formaat voor het bestand ACCOUNTING_EXPORT_FORMAT=Selecteer het formaat voor het bestand ACCOUNTING_EXPORT_PREFIX_SPEC=Geef de prefix voor het bestand -Journals=Dagboeken JournalFinancial=Financiële dagboeken BackToChartofaccounts=Geef kaart van accounts terug Selectchartofaccounts=Selecteer actieve grafieken van accounts diff --git a/htdocs/langs/nl_BE/admin.lang b/htdocs/langs/nl_BE/admin.lang index 54125afc299..31f9c63429b 100644 --- a/htdocs/langs/nl_BE/admin.lang +++ b/htdocs/langs/nl_BE/admin.lang @@ -17,6 +17,7 @@ ConfirmPurgeSessions=Ben je zeker dat je alle sessies wil wissen? De connectie v NoSessionListWithThisHandler=Save session handler geconfigureerd in uw PHP staat niet toe dat alle lopende sessies worden getoond. ConfirmLockNewSessions=Weet je zeker dat je elke nieuwe Dolibarr-verbinding wilt beperken tot jezelf? Alleen gebruiker %s kan daarna nog een verbinding maken. Sessions=Gebruikers Sessie +PermissionsOnFile=Machtigingen op bestand %s NoSessionFound=Uw PHP-configuratie lijkt het toevoegen van actieve sessies niet toe te staan. De map die wordt gebruikt om sessies op te slaan ( %s ) kan worden beveiligd (bijvoorbeeld door OS-machtigingen of door PHP-richtlijn open_basedir). DBStoringCharset=Databasekarakterset voor het opslaan van gegevens DBSortingCharset=Databasekarakterset voor het sorteren van gegevens @@ -24,6 +25,7 @@ ClientCharset=Client-tekenset ClientSortingCharset=Klantverzameling WarningOnlyPermissionOfActivatedModules=Hier worden alleen de rechten van geactiveerde modules weergegeven. U kunt andere modules in het menu Home->Instellingen->Modules activeren. DolibarrSetup=Installatie of upgrade van Dolibarr +UserInterface=Gebruikers interface GUISetup=Scherm UploadNewTemplate=Upload nieuwe template(s) RestoreLock=Herstel het bestand %s , met enkel leesrechten, om verder gebruik van de Update / Install-tool uit te schakelen. @@ -39,6 +41,7 @@ UsePreviewTabs=Gebruik voorbeelweergavetabbladen ShowPreview=Toon voorbeelweergave TZHasNoEffect=Datums worden opgeslagen en geretourneerd door de databaseserver alsof ze worden bewaard als verzonden string. De tijdzone heeft alleen effect bij het gebruik van de UNIX_TIMESTAMP-functie (die niet door Dolibarr mag worden gebruikt, dus database TZ zou geen effect mogen hebben, zelfs als deze wordt gewijzigd nadat gegevens zijn ingevoerd). NextValueForDeposit=Volgende waarde (aanbetaling) +AntiVirusCommandExample=Voorbeeld voor ClamAv Daemon (vereist clamav-daemon): /usr/bin/clamdscan
Voorbeeld voor ClamWin (erg langzaam): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe ComptaSetup=Instellingen van de boekhoudkundige module UserSetup=Gebruikersbeheerinstellingen MultiCurrencySetup=Instellingen voor meerdere valuta @@ -84,6 +87,7 @@ NameColumn=Kollomennaam NoLockBeforeInsert=Geen lock-opdrachten rond INSERT FeatureAvailableOnlyOnStable=Functie alleen beschikbaar op officiële stabiele versies BoxesDesc=Widgets zijn componenten die informatie tonen die u kunt toevoegen om sommige pagina's te personaliseren. U kunt kiezen tussen het weergeven van de widget of niet door de doelpagina te selecteren en op 'Activeren' te klikken, of door op de prullenbak te klikken om deze uit te schakelen. +ModulesDesc2=Klik op de knop met het tandwiel %s om de module/toepassing te configureren. ModulesMarketPlaceDesc=Je kan meer modules vinden door te zoeken op andere externe websites, waar je ze kan downloaden ModulesMarketPlaces=Zoek externe app / modules ModulesDevelopYourModule=Ontwikkel je eigen app / modules @@ -92,6 +96,7 @@ GoModuleSetupArea=Ga naar het gedeelte Module-instellingen om een nieuwe module DoliStoreDesc=DoliStore, de officiële markt voor externe Dolibarr ERP / CRM modules WebSiteDesc=Externe websites voor meer add-on (niet-basis) modules ... BoxesActivated=Geactiveerde widgets +ActivatableOn=Activeerbaar op DoNotStoreClearPassword=Versleutel wachtwoorden opgeslagen in database (NIET als platte tekst). Het wordt sterk aanbevolen om deze optie te activeren. ProtectAndEncryptPdfFilesDesc=Een beveiligd PDF document kan gelezen en afgedrukt worden met elke PDF browser of lezer. Echter, bewerken en kopiëren van gegevens in een beveiligd document is niet meer mogelijk. Door het gebruik van deze functionaliteit, is het niet mogelijk om een globaal samengevoegd PDF document te maken van meerdere beveiligde PDF documenten. OfficialWebSite=Officiële website van Dolibarr @@ -140,7 +145,6 @@ ModuleFamilyTechnic=Hulpmiddelen voor multi-modules ModuleFamilyPortal=Websites en andere frontale toepassing ThisIsAlternativeProcessToFollow=Dit is een alternatieve configuratie om handmatig te verwerken: UnpackPackageInDolibarrRoot=Pak de verpakte bestanden uit in uw Dolibarr-servermap: %s -UnpackPackageInModulesRoot=Om een externe module te implementeren / installeren, moet u de verpakte bestanden uitpakken / uitpakken in de servermap voor externe modules:
%s SetupIsReadyForUse=Module-implementatie is voltooid. U moet de module in uw toepassing echter inschakelen en instellen door naar de pagina-instellingsmodules te gaan: %s . NotExistsDirect=De alternatieve hoofdmap is niet gedefinieerd voor een bestaande map.
InfDirAlt=Sinds versie 3 is het mogelijk om een alternatieve rootmap te definiëren. Hiermee kunt u in een speciale map plug-ins en aangepaste sjablonen opslaan.
Maak gewoon een map aan in de root van Dolibarr (bv: aangepast).
@@ -197,6 +201,9 @@ Module40Name=Verkoper Module1780Name=Labels/Categorien Module1780Desc=Label/categorie maken (producten, klanten, leveranciers, contacten of leden) Module3400Name=Sociale Netwerken +Module55000Desc=Creëer online polls, enquêtes of stemmen (zoals Doodle, Studs, RDVz etc...) +Module62000Desc=Onderdelen toevoegen voor Incoterms +Module63000Desc=Beheer middelen (printers, auto's, kamers, ...) voor toewijzing aan evenementen Permission22=Creëer / wijzig offertes Permission24=Valideer offertes Permission32=Creëer / wijzig producten / diensten @@ -238,3 +245,5 @@ MailToThirdparty=Klant AddBoxes=Widgets toevoegen GeneralOptions=Algemene opties ExportSetup=Installatie van module Exporteren +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/nl_BE/companies.lang b/htdocs/langs/nl_BE/companies.lang index 5a83fe04e1c..3fac9814ad5 100644 --- a/htdocs/langs/nl_BE/companies.lang +++ b/htdocs/langs/nl_BE/companies.lang @@ -1,4 +1,6 @@ # Dolibarr language file - Source file is en_US - companies +ConfirmDeleteCompany=Weet u zeker dat u dit bedrijf en alle gerelateerde gegevens wilt verwijderen? +ConfirmDeleteContact=Weet u zeker dat u dit contact en alle gerelateerde gegevens wilt verwijderen? MenuNewThirdParty=Nieuwe derde partij MenuNewProspect=Nieuwe Prospect MenuNewSupplier=Nieuwe verkoper @@ -12,6 +14,10 @@ ThirdParty=Derde partij ThirdParties=Derden ThirdPartySuppliers=Verkopers ThirdPartyType=Soort derde partij +ReportByMonth=Rapportage per maand +ReportByCustomers=Overzicht per klant +ReportByThirdparties=Rapport per derde +ReportByQuarter=Rapport per kwartaal RegisteredOffice=Maarschappelijke zetel NatureOfThirdParty=Aard van derden StateShort=Staat @@ -29,6 +35,10 @@ SupplierCodeModel=Leverancierscode-model ProfId6=Professionele ID 6 ProfId2AR=Prof Id 2 (Inkomsten voor belastingen) ProfId3CH=Prof id 1 (Federaal nummer) +ProfId1CM=Id. prof. 1 (Trade Register) +ProfId2CM=Id. prof. 2 (Taxpayer No.) +ProfId1ShortCM=Trade Register +ProfId2ShortCM=Taxpayer No. ProfId2ES=Prof Id 2 (INSZ-nummer) ProfId1LU=Prof. Id. 1 (R.S.C. Luxemburg) ProfId2LU=Prof. Id. 2 (zakelijke vergunning) @@ -42,7 +52,9 @@ VATReturn=BTW teruggave SupplierRelativeDiscount=Relatieve leverancierskorting HasRelativeDiscountFromSupplier=U heeft een standaardkorting van %s%% van deze verkoper HasNoRelativeDiscountFromSupplier=U heeft standaard geen relatieve korting van deze leverancier +CompanyHasAbsoluteDiscount=Deze klant heeft kortingen (creditnota's of aanbetalingen) voor %s %s CompanyHasCreditNote=Deze afnemer heeft nog creditnota's of eerdere stortingen voor %s %s +HasAbsoluteDiscountFromSupplier=U hebt kortingen beschikbaar ( creditnota's of aanbetalingen) voor %s %s van deze leverancier HasDownPaymentOrCommercialDiscountFromSupplier=U hebt kortingen beschikbaar (commercieel, aanbetalingen) voor %s %s van deze verkoper HasCreditNoteFromSupplier=U hebt creditnota's voor %s %s van deze verkoper CustomerAbsoluteDiscountAllUsers=Absolute klantkortingen (toegekend door alle gebruikers) diff --git a/htdocs/langs/nl_BE/dict.lang b/htdocs/langs/nl_BE/dict.lang index d636070a1a7..d49bc627d91 100644 --- a/htdocs/langs/nl_BE/dict.lang +++ b/htdocs/langs/nl_BE/dict.lang @@ -1,2 +1,3 @@ # Dolibarr language file - Source file is en_US - dict CountryLT=Lithouwen +CivilityMR=Meneer diff --git a/htdocs/langs/nl_NL/accountancy.lang b/htdocs/langs/nl_NL/accountancy.lang index d4e7c5dad98..b6b1d9f1351 100644 --- a/htdocs/langs/nl_NL/accountancy.lang +++ b/htdocs/langs/nl_NL/accountancy.lang @@ -1,5 +1,5 @@ # Dolibarr language file - en_US - Accountancy (Double entries) -Accountancy=Boekhouden +Accountancy=Boekhouding Accounting=Boekhouding ACCOUNTING_EXPORT_SEPARATORCSV=Kolom separator voor export bestand ACCOUNTING_EXPORT_DATE=Datumnotatie voor exportbestand @@ -10,7 +10,7 @@ ACCOUNTING_EXPORT_AMOUNT=Export bedrag ACCOUNTING_EXPORT_DEVISE=Export valuta Selectformat=Selecteer het formaat van het bestand ACCOUNTING_EXPORT_FORMAT=Selecteer het formaat van het bestand -ACCOUNTING_EXPORT_ENDLINE=Selecteer nieuwe regel type +ACCOUNTING_EXPORT_ENDLINE=Selecteer het nieuwe regel type ACCOUNTING_EXPORT_PREFIX_SPEC=Specificeer de prefix voor de bestandsnaam ThisService=Deze dienst ThisProduct=Dit product @@ -18,13 +18,13 @@ DefaultForService=Standaard bij dienst DefaultForProduct=Standaard bij product ProductForThisThirdparty=Product voor deze relatie ServiceForThisThirdparty=Service voor deze relatie -CantSuggest=Geen voorstel -AccountancySetupDoneFromAccountancyMenu=Meeste instellingen boekhouding worden gedaan vanuit menu %s +CantSuggest=Geen suggestie +AccountancySetupDoneFromAccountancyMenu=De meeste instellingen boekhouding worden gedaan vanuit menu %s ConfigAccountingExpert=Configuratie van boekhoud-module (dubbel boekhouden) -Journalization=Journaal -Journals=Verkoopdagboek +Journalization=Journalisatie +Journals=Dagboeken JournalFinancial=Financiëel dagboek -BackToChartofaccounts=Return chart of accounts +BackToChartofaccounts=Rekeningschema retourneren Chartofaccounts=Rekeningschema ChartOfSubaccounts=Grafiek van individuele rekeningen ChartOfIndividualAccountsOfSubsidiaryLedger=Grafiek van individuele rekeningen van het subgrootboek @@ -48,7 +48,7 @@ CountriesNotInEEC=Landen buiten de EU CountriesInEECExceptMe=EU landen behalve %s CountriesExceptMe=Alle landen behalve %s AccountantFiles=Bron-documenten exporteren -ExportAccountingSourceDocHelp=With this tool, you can export the source events (list in CSV and PDFs) that are used to generate your accountancy. +ExportAccountingSourceDocHelp=Met deze tool kunt u de bron events (lijst in CSV en PDF) exporteren die zijn gebruikt om om uw boekhouding te genereren. ExportAccountingSourceDocHelp2=Gebruik het menu-item %s - %s om uw dagboeken te exporteren. VueByAccountAccounting=Overzicht per grootboekrekening VueBySubAccountAccounting=Overzicht op volgorde subrekening @@ -286,7 +286,7 @@ ValidateMovements=Valideer wijzigingen DescValidateMovements=Elke wijziging of verwijdering van inboeken, afletteren en verwijderingen is verboden. Alle boekingen moeten worden gevalideerd, anders is afsluiten niet mogelijk ValidateHistory=Automatisch boeken -AutomaticBindingDone=Automatic bindings done (%s) - Automatic binding not possible for some record (%s) +AutomaticBindingDone=Automatische bindings uitgevoerd (%s) - Automatische binding was niet mogelijk voor record (%s) ErrorAccountancyCodeIsAlreadyUse=Fout. U kunt geen grootboekrekening verwijderen welke in gebruik is. MvtNotCorrectlyBalanced=Boeking is niet in balans. Debet = %s | Credit = %s @@ -387,8 +387,8 @@ 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=Verkoop binnen de EU zonder btw, maar het btw-nummer van een derde partij is niet gedefinieerd. Voor standaardverkoop vallen we terug op het product-grootboekrekening. U kunt indien nodig het btw-nummer van een derde partij of het productaccount aanpassen. -ForbiddenTransactionAlreadyExported=Forbidden: The transaction has been validated and/or exported. -ForbiddenTransactionAlreadyValidated=Forbidden: The transaction has been validated. +ForbiddenTransactionAlreadyExported=Niet toegestaan: De transactie is gevalideerd en/of geëxporteerd. +ForbiddenTransactionAlreadyValidated=Niet toegestaan: De transactie is gevalideerd. ## Dictionary Range=Grootboeknummer van/tot Calculated=Berekend diff --git a/htdocs/langs/nl_NL/admin.lang b/htdocs/langs/nl_NL/admin.lang index daf32190e79..ec295e41fb9 100644 --- a/htdocs/langs/nl_NL/admin.lang +++ b/htdocs/langs/nl_NL/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Stichting Version=Versie Publisher=Auteur @@ -343,7 +343,7 @@ StepNb=Stap %s FindPackageFromWebSite=Zoek een pakket met de functies die u nodig hebt (bijvoorbeeld op de officiële website %s). DownloadPackageFromWebSite=Downloadpakket (bijvoorbeeld van de officiële website %s). UnpackPackageInDolibarrRoot=Pak de ingepakte bestanden uit in uw Dolibarr servermap: %s -UnpackPackageInModulesRoot=Om een externe module te implementeren / installeren, moet u de gezipte bestanden uitpakken in de servermap voor externe modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module-implementatie is voltooid. U moet de module in uw toepassing echter inschakelen en configureren door naar de pagina Instellingen / modules te gaan: %s. NotExistsDirect=De alternatieve hoofdmap is niet gedefinieerd in een bestaande map.
InfDirAlt=Vanaf versie 3 is het mogelijk om een alternatieve root directory te definiëren. Dit stelt je in staat om op dezelfde plaats zowel plug-ins als eigen templates te bewaren.
Maak gewoon een directory op het niveau van de root van Dolibarr (bv met de naam: aanpassing).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Het installeren of bouwen van een externe module vanui HighlightLinesOnMouseHover=Markeer tabellijnen wanneer u er met de muis overheen gaat HighlightLinesColor=Markeer de kleur van de lijn wanneer de muis overgaat (gebruik 'ffffff' voor geen hoogtepunt) HighlightLinesChecked=Markeer de kleur van de lijn wanneer deze is aangevinkt (gebruik 'ffffff' voor geen hoogtepunt) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Tekstkleur van paginatitel LinkColor=Link-kleur PressF5AfterChangingThis=Druk op CTRL + F5 op het toetsenbord of wis de cache van uw browser nadat u deze waarde hebt gewijzigd om deze effectief te maken @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=Geen modules gevonden voor deze zoekcriteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/nl_NL/banks.lang b/htdocs/langs/nl_NL/banks.lang index 38394b73459..10945c6fc8a 100644 --- a/htdocs/langs/nl_NL/banks.lang +++ b/htdocs/langs/nl_NL/banks.lang @@ -181,4 +181,4 @@ BankColorizeMovementName2=Achtergrondkleur voor creditmutatie IfYouDontReconcileDisableProperty=Als u op sommige bankrekeningen geen bankafstemmingen uitvoert, schakelt u de eigenschap "%s" uit om deze waarschuwing te verwijderen. NoBankAccountDefined=Geen bankrekening gedefinieerd NoRecordFoundIBankcAccount=Geen record gevonden in de bankrekening. Vaak gebeurt dit wanneer een record handmatig is verwijderd uit de lijst van banktransacties (bijvoorbeeld tijdens een reconciliatie van de bankrekening). Een andere reden is dat de betaling was vastgelegd terwijl module "%s" was uitgeschakeld. -AlreadyOneBankAccount=Already one bank account defined +AlreadyOneBankAccount=Er is al een bankrekening gedefineerd diff --git a/htdocs/langs/nl_NL/bills.lang b/htdocs/langs/nl_NL/bills.lang index d26b3736feb..a38b6fc19af 100644 --- a/htdocs/langs/nl_NL/bills.lang +++ b/htdocs/langs/nl_NL/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Betalingsverslagen PaymentsAlreadyDone=Betalingen gedaan PaymentsBackAlreadyDone=Al betaalde restitutie PaymentRule=Betalingsvoorwaarde -PaymentMode=Betaalwijze -DefaultPaymentMode=Standaard betalingstype +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Standaard bankrekening -PaymentTypeDC=Debet / Kredietkaart -PaymentTypePP=PayPal -IdPaymentMode=Betaalwijze (id) -CodePaymentMode=Betaalwijze (code) -LabelPaymentMode=Betaalwijze (label) -PaymentModeShort=Betaalwijze +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Betaalvoorwaarde PaymentConditions=Betalingsvoorwaarden PaymentConditionsShort=Betalingsvoorwaarden @@ -280,6 +279,7 @@ SetMode=Stel betalingstype in SetRevenuStamp=Instellen fiscaal stempel Billed=Gefactureerd RecurringInvoices=Terugkerende facturen +RecurringInvoice=Recurring invoice RepeatableInvoice=Sjabloon factuur RepeatableInvoices=Sjabloon facturen Repeatable=Sjabloon @@ -449,6 +449,8 @@ PaymentTypeTRA=Bankcheque PaymentTypeShortTRA=Ontwerp PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debet / Kredietkaart +PaymentTypePP=PayPal BankDetails=Bankgegevens BankCode=Bankcode DeskCode=Filiaalcode @@ -604,3 +606,4 @@ SituationTotalProgress=Totale voortgang %d %% SearchUnpaidInvoicesWithDueDate=Zoek onbetaalde facturen met een vervaldatum = %s NoPaymentAvailable=No payment available for %s PaymentRegisteredAndInvoiceSetToPaid=Payment registered and invoice %s set to paid +SendEmailsRemindersOnInvoiceDueDate=Send reminder by email for unpaid invoices diff --git a/htdocs/langs/nl_NL/blockedlog.lang b/htdocs/langs/nl_NL/blockedlog.lang index 620d908d54c..3d788257f67 100644 --- a/htdocs/langs/nl_NL/blockedlog.lang +++ b/htdocs/langs/nl_NL/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=Lijst van landen waar het gebruik van deze OnlyNonValid=Niet geldig TooManyRecordToScanRestrictFilters=Te veel records om te scannen / analyseren. Beperk de lijst met restrictievere filters. RestrictYearToExport=Beperk maand / jaar om te exporteren +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/nl_NL/companies.lang b/htdocs/langs/nl_NL/companies.lang index 569d6e4f276..cc7e2432b00 100644 --- a/htdocs/langs/nl_NL/companies.lang +++ b/htdocs/langs/nl_NL/companies.lang @@ -157,14 +157,14 @@ ProfId3CL=- ProfId4CL=- ProfId5CL=- ProfId6CL=- -ProfId1CM=Id. prof. 1 (Trade Register) -ProfId2CM=Id. prof. 2 (Taxpayer No.) +ProfId1CM=KVK nummer +ProfId2CM=BTW-id ProfId3CM=Id. prof. 3 (Decree of creation) ProfId4CM=- ProfId5CM=- ProfId6CM=- -ProfId1ShortCM=Trade Register -ProfId2ShortCM=Taxpayer No. +ProfId1ShortCM=Handelsregister +ProfId2ShortCM=BTW ProfId3ShortCM=Decree of creation ProfId4ShortCM=- ProfId5ShortCM=- diff --git a/htdocs/langs/nl_NL/errors.lang b/htdocs/langs/nl_NL/errors.lang index 585fa9717fc..fe70a2010cb 100644 --- a/htdocs/langs/nl_NL/errors.lang +++ b/htdocs/langs/nl_NL/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Deze contactpersoon is al ingesteld a ErrorCashAccountAcceptsOnlyCashMoney=Dit is een kasrekening, dus deze accepteert alleen betalingen van het type kas. ErrorFromToAccountsMustDiffers=De bron- en doelrekening mogen niet dezelfde zijn. ErrorBadThirdPartyName=Onjuiste waarde voor naam van derde partij +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=De %s is verplicht +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Verkeerde syntaxis voor afnemerscode ErrorBadBarCodeSyntax=Onjuiste syntaxis voor streepjescode. Misschien stelt u een slecht barcodetype in of heeft u een barcodemasker gedefinieerd voor nummering dat niet overeenkomt met de gescande waarde. ErrorCustomerCodeRequired=Afnemerscode nodig @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Niet bekend in de gedefinieerde betaalrege ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Uw PHP-parameter upload_max_filesize (%s) is hoger dan PHP-parameter post_max_size (%s). Dit is geen consistente opstelling. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/nl_NL/eventorganization.lang b/htdocs/langs/nl_NL/eventorganization.lang index 83d2f5464df..c25f8289f7d 100644 --- a/htdocs/langs/nl_NL/eventorganization.lang +++ b/htdocs/langs/nl_NL/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Categorie om toe te voegen aan derden, EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Categorie om toe te voegen aan derden, automatisch aangemaakt wanneer ze een stand voorstellen EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Sjabloon van e-mail om te verzenden na ontvangst van een suggestie van een conferentie. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Sjabloon van e-mail om te verzenden na ontvangst van een suggestie van een stand. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Sjabloon van e-mail van massage aan aanwezigen -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Sjabloon van e-mail van massage aan sprekers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter de selectielijst van derden in de kaart/formulier voor het maken van deelnemers met categorie -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter de selectielijst van derden in de kaart/formulier voor het maken van deelnemers met het klanttype +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communicatie naar deelnemers EventOrganizationMassEmailSpeakers = Communicatie naar sprekers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Prijs van registratie PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Abonnementsprijs om een stand te staan PriceOfBoothHelp=Abonnementsprijs om een stand te staan -EventOrganizationICSLink=Link ICS voor evenementen +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Informatie over conferentie of stand Or Attendees=deelnemers ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = ICS-link downloaden -EVENTORGANIZATION_SECUREKEY = Beveiligde sleutel van de openbare registratielink naar een conferentie +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service gebruikt voor de factuurregel over een standlocatie -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service die wordt gebruikt voor de factuurrij over een deelnemersabonnement op een conferentie +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Aantal stemmen # # Status diff --git a/htdocs/langs/nl_NL/holiday.lang b/htdocs/langs/nl_NL/holiday.lang index 11005982ebc..6a53892fd5e 100644 --- a/htdocs/langs/nl_NL/holiday.lang +++ b/htdocs/langs/nl_NL/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Vakanties goed te keuren NobodyHasPermissionToValidateHolidays=Niemand heeft toestemming om vakanties te valideren HolidayBalanceMonthlyUpdate=Maandelijkse update van de vrije dagen XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/nl_NL/knowledgemanagement.lang b/htdocs/langs/nl_NL/knowledgemanagement.lang index 38ee66a1fb2..3a3a2589d96 100644 --- a/htdocs/langs/nl_NL/knowledgemanagement.lang +++ b/htdocs/langs/nl_NL/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extravelden voor Artikel GroupOfTicket=Groep van tickets YouCanLinkArticleToATicketCategory=Je kunt een artikel linken naar een ticket groep (dan wordt dit artikel als suggestie gegeven bij een nieuwe ticket) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Markeer als overbodig +ConfirmCloseKM=Wilt u bevestigen dat het sluiten van dit artikel overbodig is? +ConfirmReopenKM=Wilt u de status terugzetten naar "gevalideerd"? diff --git a/htdocs/langs/nl_NL/mrp.lang b/htdocs/langs/nl_NL/mrp.lang index f853e9e101a..ef6ba4e4315 100644 --- a/htdocs/langs/nl_NL/mrp.lang +++ b/htdocs/langs/nl_NL/mrp.lang @@ -27,12 +27,12 @@ ConfirmCloneBillOfMaterials=Weet u zeker dat u de stuklijst %s wilt klonen? ConfirmCloneMo=Weet u zeker dat u de productieorder %s wilt klonen? ManufacturingEfficiency=Productie-efficiëntie ConsumptionEfficiency=Verbruiksefficiëntie -ValueOfMeansLoss=Waarde van 0,95 betekent een gemiddelde van 5%% verlies tijdens de productie +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Waarde van 0,95 betekent een gemiddelde van 5%% verlies van geproduceerd product DeleteBillOfMaterials=Stuklijst verwijderen DeleteMo=Productieorder verwijderen ConfirmDeleteBillOfMaterials=Weet u zeker dat u deze stuklijst wilt verwijderen? -ConfirmDeleteMo=Are you sure you want to delete this Manufacturing Order? +ConfirmDeleteMo=Weet u zeker dat u deze order wilt verwijderen? MenuMRP=Productieorders NewMO=Nieuwe productieorder QtyToProduce=Te produceren aantal @@ -56,7 +56,7 @@ WarehouseForProduction=Magazijn voor productie CreateMO=Maak productieorder ToConsume=Consumeren ToProduce=Produceren -ToObtain=To obtain +ToObtain=te verkrijgen QtyAlreadyConsumed=Aantal al verbruikt QtyAlreadyProduced=Aantal al geproduceerd QtyRequiredIfNoLoss=Aantal vereist als er geen verlies is (productie-efficiëntie is 100%%) @@ -74,7 +74,7 @@ NoStockChangeOnServices=Geen voorraad aanpassing op deze service ProductQtyToConsumeByMO=Producthoeveelheid nog te consumeren door open MO ProductQtyToProduceByMO=Producthoeveelheid nog te produceren door open MO AddNewConsumeLines=Voeg een nieuwe regel toe om te consumeren -AddNewProduceLines=Add new line to produce +AddNewProduceLines=Voeg nieuwe regel toe ProductsToConsume=Te consumeren producten ProductsToProduce=Te produceren producten UnitCost=De kosten per eenheid @@ -104,6 +104,6 @@ HumanMachine=Mens / Machine WorkstationArea=Werkstationgebied Machines=Machines THMEstimatedHelp=Dit tarief maakt het mogelijk om een prognose van de kosten van het artikel te definiëren -BOM=Bill Of Materials +BOM=Bill of Materials CollapseBOMHelp=You can define the default display of the details of the nomenclature in the configuration of the BOM module -MOAndLines=Manufacturing Orders and lines +MOAndLines=Productieorders en -regels diff --git a/htdocs/langs/nl_NL/other.lang b/htdocs/langs/nl_NL/other.lang index 9719e3313b4..975622be187 100644 --- a/htdocs/langs/nl_NL/other.lang +++ b/htdocs/langs/nl_NL/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project gemaakt door e-mailverzamelaar uit e-mail TicketCreatedByEmailCollector=Ticket gemaakt door e-mailverzamelaar vanuit e-mail MSGID %s OpeningHoursFormatDesc=Gebruik a - om de openings- en sluitingsuren te scheiden.
Gebruik een spatie om verschillende bereiken in te voeren.
Voorbeeld: 8-12 14-18 SuffixSessionName=Achtervoegsel voor sessienaam +LoginWith=Login with %s ##### Export ##### ExportsArea=Uitvoeroverzicht diff --git a/htdocs/langs/nl_NL/productbatch.lang b/htdocs/langs/nl_NL/productbatch.lang index 5ac46036621..e40e26e4177 100644 --- a/htdocs/langs/nl_NL/productbatch.lang +++ b/htdocs/langs/nl_NL/productbatch.lang @@ -42,4 +42,4 @@ HideLots=Verberg kavels #Traceability - qc status OutOfOrder=Buiten gebruik InWorkingOrder=In werkende staat -ToReplace=Replace +ToReplace=vervang diff --git a/htdocs/langs/nl_NL/products.lang b/htdocs/langs/nl_NL/products.lang index 377eca8e65a..34f85416272 100644 --- a/htdocs/langs/nl_NL/products.lang +++ b/htdocs/langs/nl_NL/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/nl_NL/projects.lang b/htdocs/langs/nl_NL/projects.lang index eb929b7a220..9d586de6b52 100644 --- a/htdocs/langs/nl_NL/projects.lang +++ b/htdocs/langs/nl_NL/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per maand InputDetail=Invoerdetail TimeAlreadyRecorded=Dit is de tijdsbesteding die al is vastgelegd voor deze taak / dag en gebruiker %s ProjectsWithThisUserAsContact=Projecten met deze gebruiker als contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Taken toegekend aan gebruiker ResourceNotAssignedToProject=Niet toegewezen aan project ResourceNotAssignedToTheTask=Niet toegewezen aan de taak @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Opmerking: de voortgang van bes SelectLinesOfTimeSpentToInvoice=Selecteer tijdsregels die niet zijn gefactureerd en vervolgens de bulkactie "Factuur genereren" om ze te factureren ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=Einddatum kan niet vóór startdatum liggen diff --git a/htdocs/langs/nl_NL/receptions.lang b/htdocs/langs/nl_NL/receptions.lang index e0c26fe7703..6c056b1c6e3 100644 --- a/htdocs/langs/nl_NL/receptions.lang +++ b/htdocs/langs/nl_NL/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Productontvangst instellen +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ontvangst ref. Reception=Ontvangst Receptions=Ontvangsten @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Ontvangsten en ontvangsten voor deze bestelli ReceptionsToValidate=Ontvangsten om te valideren StatusReceptionCanceled=Geannuleerd StatusReceptionDraft=Ontwerp -StatusReceptionValidated=Gevalideerd (producten te verzenden of reeds verzonden) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Verwerkt StatusReceptionDraftShort=Ontwerp StatusReceptionValidatedShort=Gevalideerd @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistieken uitgevoerd op alleen gevalideerde on SendReceptionByEMail=Ontvangst per e-mail verzenden SendReceptionRef=Indiening van ontvangst %s ActionsOnReception=Gebeurtenissen bij ontvangst -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Ontvangst lijn ProductQtyInReceptionAlreadySent=Producthoeveelheid uit open verkooporder al verzonden ProductQtyInSuppliersReceptionAlreadyRecevied=Hoeveelheid producten van openstaande leverancier bestelling reeds ontvangen @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Documentsjablonen voor ontvangsten NoMorePredefinedProductToDispatch=Geen voorgedefinieerde producten meer om te verzenden ReceptionExist=Ontvangst bestaat reeds ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/pl_PL/admin.lang b/htdocs/langs/pl_PL/admin.lang index e08f20c0b91..6fc8a9744cd 100644 --- a/htdocs/langs/pl_PL/admin.lang +++ b/htdocs/langs/pl_PL/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Fundacja Version=Wersja Publisher=Wydawca @@ -343,7 +343,7 @@ StepNb=Krok %s FindPackageFromWebSite=Znajdź pakiet zapewniający potrzebne funkcje (na przykład na oficjalnej stronie internetowej %s). DownloadPackageFromWebSite=Pobierz pakiet (na przykład z oficjalnej strony internetowej %s). UnpackPackageInDolibarrRoot=Rozpakuj / rozpakuj spakowane pliki do katalogu serwera Dolibarr: %s -UnpackPackageInModulesRoot=By wdrożyć/zainstalować moduł zewnętrzny, rozpakuj dystrybucyjny plik modułu do serwerowego katalogu dla modułów zewnętrznych:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Wdrożenie modułu zostało zakończone. Teraz musisz go włączyć i skonfigurować. W tym celu przejdź do strony ustawień modułów: %s. NotExistsDirect=Alternatywny katalog główny nie jest zdefiniowany w istniejącym katalogu.
InfDirAlt=Od wersji 3 możliwe jest zdefiniowanie alternatywnego katalogu głównego. Pozwala to na przechowywanie w dedykowanym katalogu wtyczek oraz niestandardowych szablonów.
Wystarczy utworzyć katalog w lokalizacji plików Dolibarr (na przykład: niestandardowe).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Instalowanie lub budowanie modułu zewnętrznego z poz HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Podświetl kolor linii, gdy mysz przesuwa się nad linią (użyj „ffffff”, aby nie podświetlać) HighlightLinesChecked=Podświetl kolor linii, gdy ta jest zaznaczona (użyj „ffffff”, aby nie wyróżniać) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Kolor tekstu tytułu strony LinkColor=Kolor odnośników PressF5AfterChangingThis=Naciśnij CTRL+F5 na klawiaturze aby wyczyścić cache w przeglądarce po zmianie tej wartości, aby zobaczyć efekt tej zmiany @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/pl_PL/bills.lang b/htdocs/langs/pl_PL/bills.lang index f836848b28e..017df02ad28 100644 --- a/htdocs/langs/pl_PL/bills.lang +++ b/htdocs/langs/pl_PL/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Raporty płatności PaymentsAlreadyDone=Płatności już wykonane PaymentsBackAlreadyDone=Zwroty już dokonane PaymentRule=Zasady płatności -PaymentMode=Typ płatności -DefaultPaymentMode=Domyślny typ płatności +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Domyślne konto bankowe -PaymentTypeDC=Karta debetowa/kredytowa -PaymentTypePP=PayPal -IdPaymentMode=Typ płatności (identyfikator) -CodePaymentMode=Rodzaj płatności (kod) -LabelPaymentMode=Typ płatności (etykieta) -PaymentModeShort=Typ płatności +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Termin płatności PaymentConditions=Zasady płatności PaymentConditionsShort=Zasady płatności @@ -280,6 +279,7 @@ SetMode=Ustaw typ płatności SetRevenuStamp=Ustaw znaczek skarbowy Billed=Billed RecurringInvoices=Faktury cykliczne +RecurringInvoice=Recurring invoice RepeatableInvoice=Szablon faktury RepeatableInvoices=Szablon faktur Repeatable=Szablon @@ -293,9 +293,9 @@ ExportDataset_invoice_1=Faktury dla klientów i dane do faktur ExportDataset_invoice_2=Faktury i płatności klienta ProformaBill=Proforma Bill: Reduction=Rabat -ReductionShort=Dysk. +ReductionShort=Zniżka Reductions=Rabaty -ReductionsShort=Dysk. +ReductionsShort=Zniżka Discounts=Zniżki AddDiscount=Stwórz zniżkę AddRelativeDiscount=Utwórz powiązaną zniżkę @@ -449,6 +449,8 @@ PaymentTypeTRA=Przekaz bankowy PaymentTypeShortTRA=Szkic PaymentTypeFAC=Współczynnik PaymentTypeShortFAC=Współczynnik +PaymentTypeDC=Karta debetowa/kredytowa +PaymentTypePP=PayPal BankDetails=Szczegóły banku BankCode=Kod banku DeskCode=Kod oddziału @@ -604,3 +606,4 @@ SituationTotalProgress=Całkowity postęp %d %% SearchUnpaidInvoicesWithDueDate=Wyszukaj niezapłacone faktury z terminem płatności = %s NoPaymentAvailable=No payment available for %s PaymentRegisteredAndInvoiceSetToPaid=Payment registered and invoice %s set to paid +SendEmailsRemindersOnInvoiceDueDate=Send reminder by email for unpaid invoices diff --git a/htdocs/langs/pl_PL/blockedlog.lang b/htdocs/langs/pl_PL/blockedlog.lang index dae949d1149..81da8fe21a0 100644 --- a/htdocs/langs/pl_PL/blockedlog.lang +++ b/htdocs/langs/pl_PL/blockedlog.lang @@ -1,54 +1,57 @@ -BlockedLog=Unalterable Logs +BlockedLog=Niezmienione dzienniki Field=Pole -BlockedLogDesc=This module tracks some events into an unalterable log (that you can't modify once recorded) into a block chain, in real time. This module provides compatibility with requirements of laws of some countries (like France with the law Finance 2016 - Norme NF525). -Fingerprints=Archived events and fingerprints -FingerprintsDesc=This is the tool to browse or extract the unalterable logs. Unalterable logs are generated and archived locally into a dedicated table, in real time when you record a business event. You can use this tool to export this archive and save it into an external support (some countries, like France, ask that you do it every year). Note that, there is no feature to purge this log and every change tried to be done directly into this log (by a hacker for example) will be reported with a non-valid fingerprint. If you really need to purge this table because you used your application for a demo/test purpose and want to clean your data to start your production, you can ask your reseller or integrator to reset your database (all your data will be removed). -CompanyInitialKey=Company initial key (hash of genesis block) -BrowseBlockedLog=Unalterable logs -ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) -ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) -DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). -OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. -OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. -AddedByAuthority=Stored into remote authority -NotAddedByAuthorityYet=Not yet stored into remote authority -ShowDetails=Show stored details -logPAYMENT_VARIOUS_CREATE=Payment (not assigned to an invoice) created -logPAYMENT_VARIOUS_MODIFY=Payment (not assigned to an invoice) modified -logPAYMENT_VARIOUS_DELETE=Payment (not assigned to an invoice) logical deletion -logPAYMENT_ADD_TO_BANK=Payment added to bank -logPAYMENT_CUSTOMER_CREATE=Customer payment created -logPAYMENT_CUSTOMER_DELETE=Customer payment logical deletion -logDONATION_PAYMENT_CREATE=Donation payment created -logDONATION_PAYMENT_DELETE=Donation payment logical deletion -logBILL_PAYED=Customer invoice paid -logBILL_UNPAYED=Customer invoice set unpaid +BlockedLogDesc=Ten moduł śledzi niektóre zdarzenia w niezmiennym dzienniku (którego nie można zmodyfikować po zarejestrowaniu) w łańcuch bloków w czasie rzeczywistym. Moduł ten zapewnia zgodność z wymogami praw niektórych krajów (np. We Francji z ustawą Finance 2016 - Norme NF525). +Fingerprints=Zarchiwizowane wydarzenia i odciski palców +FingerprintsDesc=To jest narzędzie do przeglądania lub wyodrębniania niezmienionych dzienników. Niezmienione dzienniki są generowane i archiwizowane lokalnie w dedykowanej tabeli, w czasie rzeczywistym, podczas rejestrowania zdarzenia biznesowego. Możesz użyć tego narzędzia, aby wyeksportować to archiwum i zapisać je na zewnętrznym nośniku (niektóre kraje, takie jak Francja, proszą o robienie tego co roku). Zwróć uwagę, że nie ma funkcji czyszczenia tego dziennika, a każda zmiana, którą próbowano wprowadzić bezpośrednio w tym dzienniku (na przykład przez hakera), zostanie zgłoszona z nieprawidłowym odciskiem palca. Jeśli naprawdę potrzebujesz wyczyścić tę tabelę, ponieważ używałeś aplikacji do celów demonstracyjnych / testowych i chcesz wyczyścić dane, aby rozpocząć produkcję, możesz poprosić sprzedawcę lub integratora o zresetowanie bazy danych (wszystkie dane zostaną usunięte). +CompanyInitialKey=Klucz początkowy firmy (skrót bloku genezy) +BrowseBlockedLog=Niezmienione dzienniki +ShowAllFingerPrintsMightBeTooLong=Pokaż wszystkie zarchiwizowane dzienniki (może być długie) +ShowAllFingerPrintsErrorsMightBeTooLong=Pokaż wszystkie nieprawidłowe dzienniki archiwów (mogą być długie) +DownloadBlockChain=Pobierz odciski palców +KoCheckFingerprintValidity=Zarchiwizowany wpis dziennika jest nieprawidłowy. Oznacza to, że ktoś (haker?) Zmodyfikował niektóre dane tego rekordu po jego nagraniu lub usunął poprzedni zarchiwizowany rekord (sprawdź, czy istnieje wiersz z poprzednim #) lub zmodyfikował sumę kontrolną poprzedniego rekordu. +OkCheckFingerprintValidity=Zarchiwizowany rekord dziennika jest prawidłowy. Dane w tym wierszu nie zostały zmodyfikowane, a wpis następuje po poprzednim. +OkCheckFingerprintValidityButChainIsKo=Zarchiwizowany dziennik wydaje się prawidłowy w porównaniu z poprzednim, ale łańcuch był wcześniej uszkodzony. +AddedByAuthority=Przechowywane w zdalnym urzędzie +NotAddedByAuthorityYet=Nie jest jeszcze przechowywany w zdalnym urzędzie +ShowDetails=Pokaż zapisane szczegóły +logPAYMENT_VARIOUS_CREATE=Utworzono płatność (nieprzypisaną do faktury) +logPAYMENT_VARIOUS_MODIFY=Zmieniono płatność (nie przypisaną do faktury) +logPAYMENT_VARIOUS_DELETE=Logiczne usunięcie płatności (nie przypisanej do faktury) +logPAYMENT_ADD_TO_BANK=Płatność została dodana do banku +logPAYMENT_CUSTOMER_CREATE=Utworzono płatność klienta +logPAYMENT_CUSTOMER_DELETE=Logiczne usunięcie płatności klienta +logDONATION_PAYMENT_CREATE=Utworzono płatność darowizny +logDONATION_PAYMENT_DELETE=Logiczne usunięcie wpłaty darowizny +logBILL_PAYED=Zapłacono fakturę klienta +logBILL_UNPAYED=Faktura klienta ustawiona jako niezapłacona logBILL_VALIDATE=Faktura klienta zatwierdzona -logBILL_SENTBYMAIL=Customer invoice send by mail -logBILL_DELETE=Customer invoice logically deleted -logMODULE_RESET=Module BlockedLog was disabled -logMODULE_SET=Module BlockedLog was enabled -logDON_VALIDATE=Donation validated -logDON_MODIFY=Donation modified -logDON_DELETE=Donation logical deletion -logMEMBER_SUBSCRIPTION_CREATE=Member subscription created -logMEMBER_SUBSCRIPTION_MODIFY=Member subscription modified -logMEMBER_SUBSCRIPTION_DELETE=Member subscription logical deletion -logCASHCONTROL_VALIDATE=Cash desk closing recording -BlockedLogBillDownload=Customer invoice download -BlockedLogBillPreview=Customer invoice preview -BlockedlogInfoDialog=Log Details -ListOfTrackedEvents=List of tracked events -Fingerprint=Fingerprint -DownloadLogCSV=Export archived logs (CSV) -logDOC_PREVIEW=Preview of a validated document in order to print or download -logDOC_DOWNLOAD=Download of a validated document in order to print or send -DataOfArchivedEvent=Full datas of archived event -ImpossibleToReloadObject=Original object (type %s, id %s) not linked (see 'Full datas' column to get unalterable saved data) -BlockedLogAreRequiredByYourCountryLegislation=Unalterable Logs module may be required by the legislation of your country. Disabling this module may render any future transactions invalid with respect to the law and the use of legal software as they can not be validated by a tax audit. -BlockedLogActivatedBecauseRequiredByYourCountryLegislation=Unalterable Logs module was activated because of the legislation of your country. Disabling this module may render any future transactions invalid with respect to the law and the use of legal software as they cannot be validated by a tax audit. -BlockedLogDisableNotAllowedForCountry=List of countries where usage of this module is mandatory (just to prevent to disable the module by error, if your country is in this list, disable of module is not possible without editing this list first. Note also that enabling/disabling this module will keep a track into the unalterable log). -OnlyNonValid=Non-valid -TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. -RestrictYearToExport=Restrict month / year to export +logBILL_SENTBYMAIL=Fakturę dla klienta wysyłamy pocztą +logBILL_DELETE=Faktura klienta została logicznie usunięta +logMODULE_RESET=Moduł BlockedLog został wyłączony +logMODULE_SET=Moduł BlockedLog został włączony +logDON_VALIDATE=Darowizna została zatwierdzona +logDON_MODIFY=Darowizna zmodyfikowana +logDON_DELETE=Logiczne usunięcie darowizny +logMEMBER_SUBSCRIPTION_CREATE=Utworzono subskrypcję członka +logMEMBER_SUBSCRIPTION_MODIFY=Subskrypcja członka zmodyfikowana +logMEMBER_SUBSCRIPTION_DELETE=Logiczne usunięcie subskrypcji członka +logCASHCONTROL_VALIDATE=Rejestracja zamknięcia kasy +BlockedLogBillDownload=Pobieranie faktury dla klienta +BlockedLogBillPreview=Podgląd faktury klienta +BlockedlogInfoDialog=Szczegóły dziennika +ListOfTrackedEvents=Lista śledzonych zdarzeń +Fingerprint=Odcisk palca +DownloadLogCSV=Eksportuj zarchiwizowane dzienniki (CSV) +logDOC_PREVIEW=Podgląd zweryfikowanego dokumentu w celu wydrukowania lub pobrania +logDOC_DOWNLOAD=Pobieranie zweryfikowanego dokumentu w celu wydrukowania lub wysłania +DataOfArchivedEvent=Pełne dane zarchiwizowanego wydarzenia +ImpossibleToReloadObject=Oryginalny obiekt (typ %s, id %s) nie jest połączony (zobacz kolumnę „Pełne dane”, aby uzyskać niezmienione zapisane dane) +BlockedLogAreRequiredByYourCountryLegislation=Moduł niezmiennych logów może być wymagany przez ustawodawstwo twojego kraju. Wyłączenie tego modułu może spowodować, że wszelkie przyszłe transakcje będą nieważne z punktu widzenia prawa i korzystania z legalnego oprogramowania, ponieważ nie mogą one zostać zweryfikowane przez kontrolę podatkową. +BlockedLogActivatedBecauseRequiredByYourCountryLegislation=Moduł Unalterable Logs został aktywowany ze względu na ustawodawstwo Twojego kraju. Wyłączenie tego modułu może spowodować, że wszelkie przyszłe transakcje będą nieważne z punktu widzenia prawa i korzystania z legalnego oprogramowania, ponieważ nie mogą one zostać zweryfikowane przez kontrolę podatkową. +BlockedLogDisableNotAllowedForCountry=Lista krajów, w których użycie tego modułu jest obowiązkowe (aby zapobiec wyłączeniu modułu przez pomyłkę, jeśli Twój kraj znajduje się na tej liście, wyłączenie modułu nie jest możliwe bez uprzedniej edycji tej listy. Pamiętaj również, że włączenie / wyłączenie tego modułu spowoduje śledzić w niezmiennym dzienniku). +OnlyNonValid=Nieważne +TooManyRecordToScanRestrictFilters=Za dużo rekordów do zeskanowania / przeanalizowania. Ogranicz listę za pomocą bardziej restrykcyjnych filtrów. +RestrictYearToExport=Ogranicz miesiąc / rok do eksportu +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/pl_PL/companies.lang b/htdocs/langs/pl_PL/companies.lang index 256188cc40c..54dd52b18f7 100644 --- a/htdocs/langs/pl_PL/companies.lang +++ b/htdocs/langs/pl_PL/companies.lang @@ -343,7 +343,7 @@ PersonalInformations=Prywatne dane osobowe AccountancyCode=Konto księgowe CustomerCode=Kod klienta SupplierCode=Kod sprzedawcy -CustomerCodeShort=Kod klienta +CustomerCodeShort=Numer klienta SupplierCodeShort=Kod sprzedawcy CustomerCodeDesc=Kod klienta, unikalny dla wszystkich klientów SupplierCodeDesc=Kod dostawcy, unikalny dla wszystkich dostawców diff --git a/htdocs/langs/pl_PL/errors.lang b/htdocs/langs/pl_PL/errors.lang index 19d61ab6016..2022a84943f 100644 --- a/htdocs/langs/pl_PL/errors.lang +++ b/htdocs/langs/pl_PL/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Ten kontakt jest już zdefiniowana ja ErrorCashAccountAcceptsOnlyCashMoney=To konto bankowe jest kontem gotówkowym, więc akceptuje jedynie płatności gotówkowe ErrorFromToAccountsMustDiffers=Konta źródłowe i docelowe muszą być inne ErrorBadThirdPartyName=Zła wartość dla nazwy kontrahenta +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=%s jest obowiązkowy +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Zła skadnia dla kodu klienta ErrorBadBarCodeSyntax=Zła składnia kodu kreskowego. Być może ustawiłeś zły typ kodu kreskowego lub zdefiniowałeś maskę kodu kreskowego dla numeracji, która nie pasuje do zeskanowanej wartości. ErrorCustomerCodeRequired=Wymagany kod klienta @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Nie w Słowniku terminów płatności, zmi ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Twój parametr PHP upload_max_filesize (%s) jest wyższy niż parametr PHP post_max_size (%s). To nie jest spójna konfiguracja. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/pl_PL/eventorganization.lang b/htdocs/langs/pl_PL/eventorganization.lang index 3a83fabff4c..5fc50b7e1cd 100644 --- a/htdocs/langs/pl_PL/eventorganization.lang +++ b/htdocs/langs/pl_PL/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Kategoria dodawana do kontrahentów, t EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Kategoria dodawana do kontrahentów, tworzona automatycznie po otrzymaniu sugestii zorganizowania stoiska. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Szablon wiadomości e-mail wysyłany po otrzymaniu sugestii zorganizowania konferencji. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Szablon wiadomości e-mail wysyłany po otrzymaniu sugestii zorganizowania stoiska. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Szablon wiadomości e-mail do wszystkich uczestników -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Szablon wiadomości e-mail do wszystkich prelegentów -EVENTORGANIZATION_FILTERATTENDEES_CAT = Zastosuj kategorię do filtrowania listy wyboru kontrahenta na karcie/formularzu tworzenia uczestników -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Zastosuj typ klienta do filtrowania listy wyboru kontrahenta na karcie/formularzu tworzenia uczestników +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Komunikacja z uczestnikami EventOrganizationMassEmailSpeakers = Komunikacja z prelegentami +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Cena rejestracji PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Cena abonamentu za stoisko PriceOfBoothHelp=Cena abonamentu za stoisko -EventOrganizationICSLink=Łącze ICS dla zdarzeń +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Informacje o konferencji lub stoisku Attendees=Uczestnicy ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Pobierz link do ICS -EVENTORGANIZATION_SECUREKEY = Klucz bezpieczeństwa dla publicznego łącza do rejestracji na konferencję +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Usługa używana do wiersza faktury o lokalizacji stoiska -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Usługa używana w wierszu faktury za subskrypcję uczestnika na konferencję +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Liczba głosów # # Status diff --git a/htdocs/langs/pl_PL/holiday.lang b/htdocs/langs/pl_PL/holiday.lang index 477bad5b7dd..213cee94d5b 100644 --- a/htdocs/langs/pl_PL/holiday.lang +++ b/htdocs/langs/pl_PL/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Wakacje do zatwierdzenia NobodyHasPermissionToValidateHolidays=Nikt nie ma pozwolenia na zatwierdzanie wakacji HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/pl_PL/knowledgemanagement.lang b/htdocs/langs/pl_PL/knowledgemanagement.lang index 4d4512568ab..151ac57072a 100644 --- a/htdocs/langs/pl_PL/knowledgemanagement.lang +++ b/htdocs/langs/pl_PL/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrapola dla artykułu GroupOfTicket=Grupa biletów YouCanLinkArticleToATicketCategory=Możesz powiązać artykuł z grupą biletów (aby artykuł był sugerowany podczas kwalifikacji nowych biletów) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/pl_PL/main.lang b/htdocs/langs/pl_PL/main.lang index 446196ff79b..88b8bc002a5 100644 --- a/htdocs/langs/pl_PL/main.lang +++ b/htdocs/langs/pl_PL/main.lang @@ -402,7 +402,7 @@ TotalHTShort=Razem (wył.) TotalHT100Short=Razem 100%% (wył.) TotalHTShortCurrency=Razem (bez waluty) TotalTTCShort=Ogółem (z VAT) -TotalHT=Total (Bez VAT) +TotalHT=Kwota (Bez VAT) TotalHTforthispage=Razem (bez podatku) dla tej strony Totalforthispage=Suma dla tej strony TotalTTC=Ogółem (z VAT) diff --git a/htdocs/langs/pl_PL/mrp.lang b/htdocs/langs/pl_PL/mrp.lang index e855638b602..dec735baedb 100644 --- a/htdocs/langs/pl_PL/mrp.lang +++ b/htdocs/langs/pl_PL/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Czy na pewno chcesz sklonować zestawienie komponent ConfirmCloneMo=Czy na pewno chcesz sklonować zamówienie produkcyjne %s? ManufacturingEfficiency=Wydajność produkcji ConsumptionEfficiency=Efektywność zużycia -ValueOfMeansLoss=Wartość 0,95 oznacza średnio 5%% straty podczas produkcji +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Wartość 0,95 oznacza średnio 5%% straty wytworzonego produktu DeleteBillOfMaterials=Usuń listę materiałów DeleteMo=Usuń zlecenie produkcyjne diff --git a/htdocs/langs/pl_PL/other.lang b/htdocs/langs/pl_PL/other.lang index f4c7d85819c..dafac57b218 100644 --- a/htdocs/langs/pl_PL/other.lang +++ b/htdocs/langs/pl_PL/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Projekt utworzony przez kolektor poczty e-mail z TicketCreatedByEmailCollector=Bilet utworzony przez zbierającego wiadomości e-mail z wiadomości e-mail MSGID %s OpeningHoursFormatDesc=Użyj - aby oddzielić godziny otwarcia i zamknięcia.
Użyj spacji, aby wprowadzić różne zakresy.
Przykład: 8-12 14-18 SuffixSessionName=Sufiks nazwy sesji +LoginWith=Login with %s ##### Export ##### ExportsArea=Wywóz obszarze diff --git a/htdocs/langs/pl_PL/products.lang b/htdocs/langs/pl_PL/products.lang index a6e338a8eef..3e830a72f46 100644 --- a/htdocs/langs/pl_PL/products.lang +++ b/htdocs/langs/pl_PL/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/pl_PL/projects.lang b/htdocs/langs/pl_PL/projects.lang index 7828d33f15c..c79162bd334 100644 --- a/htdocs/langs/pl_PL/projects.lang +++ b/htdocs/langs/pl_PL/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Wkład miesięcznie InputDetail=Dane wejściowe TimeAlreadyRecorded=Jest to czas już zarejestrowany dla tego zadania / dnia i użytkownika %s ProjectsWithThisUserAsContact=Projekty z tym użytkownika jako kontakt +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Zadania dopisane do tego użytkownika ResourceNotAssignedToProject=Nie przypisane do projektu ResourceNotAssignedToTheTask=Nie dopisane do zadania @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Uwaga: nie będzie to miało wp SelectLinesOfTimeSpentToInvoice=Wybierz wiersze spędzonego czasu, które nie zostały rozliczone, a następnie wykonaj zbiorcze działanie „Wygeneruj fakturę”, aby je rozliczyć ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=Data zakończenia nie może być wcześniejsza niż data rozpoczęcia diff --git a/htdocs/langs/pl_PL/propal.lang b/htdocs/langs/pl_PL/propal.lang index 9b48305733b..af9961abea3 100644 --- a/htdocs/langs/pl_PL/propal.lang +++ b/htdocs/langs/pl_PL/propal.lang @@ -45,7 +45,7 @@ ActionsOnPropal=Działania na wniosek RefProposal=Nr referencyjny oferty handlowej SendPropalByMail=Wyślij propozycję handlowa emailem DatePropal=Data wniosku -DateEndPropal=Data końca obowiązywania +DateEndPropal=Data końca obowiązywania oferty ValidityDuration=Ważność czas SetAcceptedRefused=Zestaw zaakceptowany / odrzucony ErrorPropalNotFound=Propal %s nie znaleziono @@ -81,7 +81,7 @@ DocModelCyanDescription=Kompletny model oferty DefaultModelPropalCreate=Domyślny model kreacji. DefaultModelPropalToBill=Domyślny szablon po zamknięciu wniosku biznesowego ( do zafakturowania) DefaultModelPropalClosed=Domyślny szablon po zamknięciu projektu biznesowego ( weryfikowane ) -ProposalCustomerSignature=Wpisany akceptacji i pieczęć firmy, data i podpis +ProposalCustomerSignature=Akceptacja umowy : podpis i data ProposalsStatisticsSuppliers=Statystyki propozycji dostawców CaseFollowedBy=Przypadek, po którym następuje SignedOnly=Tylko podpisane diff --git a/htdocs/langs/pl_PL/receptions.lang b/htdocs/langs/pl_PL/receptions.lang index 00cd1231574..5f3e785b64c 100644 --- a/htdocs/langs/pl_PL/receptions.lang +++ b/htdocs/langs/pl_PL/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Konfiguracja odbioru produktu +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Nr ref. Przyjęcie Reception=Na proces Receptions=Przyjęcia @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Przyjęcia i pokwitowania za to zamówienie ReceptionsToValidate=Przyjęcia do weryfikacji StatusReceptionCanceled=Anulowany StatusReceptionDraft=Szkic -StatusReceptionValidated=Zatwierdzone (produkty do wysyłki lub już wysłane) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Przetwarzany StatusReceptionDraftShort=Szkic StatusReceptionValidatedShort=Zatwierdzony @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statystyki przeprowadzone tylko na przyjęciach z SendReceptionByEMail=Wyślij odbiór e-mailem SendReceptionRef=Przesłanie odbioru %s ActionsOnReception=Wydarzenia w recepcji -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Linia odbioru ProductQtyInReceptionAlreadySent=Ilość produktu z otwartego zamówienia sprzedaży już wysłanego ProductQtyInSuppliersReceptionAlreadyRecevied=Ilość produktu z otwartego zamówienia dostawcy już otrzymana @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Wzory dokumentów do przyjęć NoMorePredefinedProductToDispatch=Nigdy więcej gotowych produktów do wysyłki ReceptionExist=Recepcja istnieje ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/pt_BR/bills.lang b/htdocs/langs/pt_BR/bills.lang index 03c626761a4..3405b02a0d0 100644 --- a/htdocs/langs/pt_BR/bills.lang +++ b/htdocs/langs/pt_BR/bills.lang @@ -55,11 +55,6 @@ PaymentsReportsForYear=Relatórios de pagamentos por %s PaymentsAlreadyDone=Pagamentos já feitos PaymentsBackAlreadyDone=Reembolsos já realizados PaymentRule=Regra de pagamento -PaymentTypeDC=Cartão de débito / crédito -IdPaymentMode=Tipo de pagamento (id) -CodePaymentMode=Tipo de pagamento (código) -LabelPaymentMode=Tipo de pagamento (etiqueta) -PaymentModeShort=Tipo de pagamento PaymentTerm=Termo de pagamento PaymentAmount=Valor a ser pago PaymentHigherThanReminderToPay=Pagamento superior ao valor a ser pago @@ -278,6 +273,7 @@ PaymentTypeTIP=TIP (Documentos contra Pagamento) PaymentTypeShortTIP=Pagamento TIP PaymentTypeTRA=Cheque administrativo PaymentTypeShortTRA=Minuta +PaymentTypeDC=Cartão de débito / crédito BankDetails=Detalhes bancário BankCode=Código bancário BankAccountNumber=Número da conta diff --git a/htdocs/langs/pt_BR/blockedlog.lang b/htdocs/langs/pt_BR/blockedlog.lang index 0a12ec89ee3..68b870cf136 100644 --- a/htdocs/langs/pt_BR/blockedlog.lang +++ b/htdocs/langs/pt_BR/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Logs nao modificaveis ShowAllFingerPrintsMightBeTooLong=Mostrar todos os Logs Arquivados (pode ser demorado) ShowAllFingerPrintsErrorsMightBeTooLong=Mostrar todos os arquivos de log inválidos (pode demorar) DownloadBlockChain=Baixar impressoes digitais -KoCheckFingerprintValidity=A entrada de log arquivada não é válida. Isso significa que alguém (um hacker?) Modificou alguns dados desse registro depois que ele foi gravado ou apagou o registro arquivado anterior (verifique se existe a linha com o número anterior). +KoCheckFingerprintValidity=A entrada de registro arquivada não é válida. Isso significa que alguém (um hacker?) Modificou alguns dados deste registro depois que ele foi gravado, ou apagou o registro arquivado anterior (verifique se a linha com o anterior # existe) ou modificou a soma de verificação do registro anterior. OkCheckFingerprintValidity=O registro de log arquivado é válido. Os dados nesta linha não foram modificados e a entrada segue a anterior. OkCheckFingerprintValidityButChainIsKo=O log arquivado parece válido em comparação com o anterior, mas a cadeia foi previamente corrompida. AddedByAuthority=Salvo na autoridade remota @@ -18,6 +18,7 @@ logPAYMENT_VARIOUS_MODIFY=Pagamento (não atribuído a uma fatura) modificado logPAYMENT_VARIOUS_DELETE=Pagamento (não atribuído a uma fatura) exclusão lógica logBILL_VALIDATE=Fatura de cliente confirmada logBILL_SENTBYMAIL=Fatura do cliente enviada por email +logCASHCONTROL_VALIDATE=Registro de fechamento de caixa Fingerprint=Impressao digial logDOC_PREVIEW=Pré -visualização de um documento validado para imprimir ou baixar DataOfArchivedEvent=Dados completos do evento arquivado diff --git a/htdocs/langs/pt_BR/mrp.lang b/htdocs/langs/pt_BR/mrp.lang index cad0abff710..e93ba7bf637 100644 --- a/htdocs/langs/pt_BR/mrp.lang +++ b/htdocs/langs/pt_BR/mrp.lang @@ -20,7 +20,6 @@ FreeLegalTextOnMOs=Texto livre no documento do MO WatermarkOnDraftMOs=Marca d'água no rascunho MO ConfirmCloneMo=Tem certeza de que deseja clonar a ordem de fabricação %s? ManufacturingEfficiency=Eficiência de fabricação -ValueOfMeansLoss=Valor de 0,95 significa uma média de 5 %% de perda durante a produção ValueOfMeansLossForProductProduced=Valor de 0,95 significa uma média de 5 %% de perda na produção do produto DeleteBillOfMaterials=Excluir lista de materiais DeleteMo=Excluir ordem de fabricação diff --git a/htdocs/langs/pt_BR/receptions.lang b/htdocs/langs/pt_BR/receptions.lang index 8ab6492fca1..ca9c55038cb 100644 --- a/htdocs/langs/pt_BR/receptions.lang +++ b/htdocs/langs/pt_BR/receptions.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Configurar recepção do produto RefReception=Ref. recebimento Reception=Recebimento Receptions=Recebimentos @@ -21,7 +20,6 @@ ReceptionsAndReceivingForSameOrder=Recebiementos e recibos para este pedido ReceptionsToValidate=Recebimentos a validar StatusReceptionCanceled=Cancelada StatusReceptionDraft=Minuta -StatusReceptionValidated=Validado (produtos a enviar o enviados) StatusReceptionDraftShort=Minuta ReceptionSheet=Carta recebimento ConfirmValidateReception=Tem certeza de que deseja validar esta recepção com a referência %s? diff --git a/htdocs/langs/pt_PT/admin.lang b/htdocs/langs/pt_PT/admin.lang index 7844eb65a1c..185051f8847 100644 --- a/htdocs/langs/pt_PT/admin.lang +++ b/htdocs/langs/pt_PT/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Fundação Version=Versão Publisher=Editor @@ -343,7 +343,7 @@ StepNb=Passo %s FindPackageFromWebSite=Encontre um pacote que forneça os recursos de que você precisa (por exemplo, no site oficial %s). DownloadPackageFromWebSite=Baixe o pacote (por exemplo, do site oficial %s). UnpackPackageInDolibarrRoot=Descompacte / descompacte os arquivos compactados no diretório do servidor Dolibarr: %s -UnpackPackageInModulesRoot=Para implantar / instalar um módulo externo, descompacte / descompacte os arquivos empacotados no diretório do servidor dedicado aos módulos externos:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=A implantação do módulo está concluída. No entanto, você deve ativar e configurar o módulo em seu aplicativo acessando os módulos de configuração de página: %s . NotExistsDirect=O diretório raiz alternativo não está definido para um diretório existente.
InfDirAlt=Desde a versão 3 do Dolibarr que é possível definir um diretório raiz alternativo. Isto permite que você consiga armazenar plug-ins e templates, num diretório dedicado.
Para tal basta criar um dirétorio na raiz do Dolibarr (ex: dedicado).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Instalar ou construir um módulo externo do aplicativo HighlightLinesOnMouseHover=Realçar as linhas da tabela quando o rato passar sobre elas HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Cor do texto do título da página LinkColor=Cor dos links PressF5AfterChangingThis=Pressione CTRL+F5 no teclado ou limpe a cache do navegador depois de mudar este valor de forma a gravar as alterações @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/pt_PT/bills.lang b/htdocs/langs/pt_PT/bills.lang index 5047785fd1a..a8ed55ec0c8 100644 --- a/htdocs/langs/pt_PT/bills.lang +++ b/htdocs/langs/pt_PT/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Relatórios de pagamentos PaymentsAlreadyDone=Pagamentos já efetuados PaymentsBackAlreadyDone=Reembolsos já feitos PaymentRule=Estado do Pagamento -PaymentMode=Tipo de pagamento -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Cartão de débito/crédito -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Termos de pagamento PaymentConditionsShort=Termos de pagamento @@ -280,6 +279,7 @@ SetMode=Definir Tipo de Pagamento SetRevenuStamp=Definir selo fiscal Billed=Faturado RecurringInvoices=Faturas recorrentes +RecurringInvoice=Recurring invoice RepeatableInvoice=Fatura Modelo RepeatableInvoices=Faturas Modelo Repeatable=Modelo @@ -449,6 +449,8 @@ PaymentTypeTRA=Letra bancária PaymentTypeShortTRA=Rascunho PaymentTypeFAC=Fator PaymentTypeShortFAC=Fator +PaymentTypeDC=Cartão de débito/crédito +PaymentTypePP=PayPal BankDetails=Dados bancários BankCode=Código banco DeskCode=Código da Agência @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/pt_PT/blockedlog.lang b/htdocs/langs/pt_PT/blockedlog.lang index 798b7e6a075..24054772339 100644 --- a/htdocs/langs/pt_PT/blockedlog.lang +++ b/htdocs/langs/pt_PT/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Logs inalteráveis ShowAllFingerPrintsMightBeTooLong=Mostrar todos os logs arquivados (podem ser longos) ShowAllFingerPrintsErrorsMightBeTooLong=Mostrar todos os logs de arquivo não válidos (podem ser longos) DownloadBlockChain=Baixe impressões digitais -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=O log arquivado parece válido em comparação com o anterior, mas a cadeia foi corrompida anteriormente. AddedByAuthority=Armazenado em autoridade remota @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=Lista de países onde o uso deste módulo OnlyNonValid=Inválido TooManyRecordToScanRestrictFilters=Muitos registros para digitalizar / analisar. Por favor, restrinja a lista com filtros mais restritivos. RestrictYearToExport=Restringir mês / ano para exportar +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/pt_PT/errors.lang b/htdocs/langs/pt_PT/errors.lang index ea17bdebea8..dc0eb4f58d5 100644 --- a/htdocs/langs/pt_PT/errors.lang +++ b/htdocs/langs/pt_PT/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Este contacto já está definido como ErrorCashAccountAcceptsOnlyCashMoney=Esta conta bancaria é de tipo Caixa e só aceita o método de pagamento de tipo especie. ErrorFromToAccountsMustDiffers=A conta origem e destino devem ser diferentes. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=O %s é obrigatório +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=A sintaxis do código cliente é incorrecta ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Código cliente obrigatório @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/pt_PT/eventorganization.lang b/htdocs/langs/pt_PT/eventorganization.lang index 13e36290bc0..00206456248 100644 --- a/htdocs/langs/pt_PT/eventorganization.lang +++ b/htdocs/langs/pt_PT/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/pt_PT/holiday.lang b/htdocs/langs/pt_PT/holiday.lang index e8e5e878237..f310930968a 100644 --- a/htdocs/langs/pt_PT/holiday.lang +++ b/htdocs/langs/pt_PT/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/pt_PT/knowledgemanagement.lang b/htdocs/langs/pt_PT/knowledgemanagement.lang index 15a8f33126a..25ed72a0dff 100644 --- a/htdocs/langs/pt_PT/knowledgemanagement.lang +++ b/htdocs/langs/pt_PT/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Campos extra para o Artigo GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/pt_PT/mrp.lang b/htdocs/langs/pt_PT/mrp.lang index 6c74aae8d59..9be23acab93 100644 --- a/htdocs/langs/pt_PT/mrp.lang +++ b/htdocs/langs/pt_PT/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Eficiência de manufaturação ConsumptionEfficiency=Eficiência de consumo -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Eliminar Faturas de Materiais DeleteMo=Eliminar Encomenda de Manufaturação diff --git a/htdocs/langs/pt_PT/other.lang b/htdocs/langs/pt_PT/other.lang index 911d9e56e60..46c77acc4bd 100644 --- a/htdocs/langs/pt_PT/other.lang +++ b/htdocs/langs/pt_PT/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Área de Exportações diff --git a/htdocs/langs/pt_PT/products.lang b/htdocs/langs/pt_PT/products.lang index 3a5d63eae2f..1462cc0fe80 100644 --- a/htdocs/langs/pt_PT/products.lang +++ b/htdocs/langs/pt_PT/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/pt_PT/projects.lang b/htdocs/langs/pt_PT/projects.lang index 7735c551f51..f55ae2a20f4 100644 --- a/htdocs/langs/pt_PT/projects.lang +++ b/htdocs/langs/pt_PT/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Detalhe da entrada TimeAlreadyRecorded=Este é o tempo gasto já gravado para esta tarefa / dia e usuário %s ProjectsWithThisUserAsContact=Projetos com este utilizador como contacto +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tarefas atribuídas a este utilizador ResourceNotAssignedToProject=Não atribuído ao projeto ResourceNotAssignedToTheTask=Não atribuído à tarefa @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=A data de fim não pode ser anterior à data de início diff --git a/htdocs/langs/pt_PT/receptions.lang b/htdocs/langs/pt_PT/receptions.lang index 6fb6c17430b..6aea0bcd138 100644 --- a/htdocs/langs/pt_PT/receptions.lang +++ b/htdocs/langs/pt_PT/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. recepção Reception=Recepção Receptions=Recepções @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Recepções e recibos para esta encomenda ReceptionsToValidate=Recepções para validar StatusReceptionCanceled=Cancelado StatusReceptionDraft=Esboço, projeto -StatusReceptionValidated=Validado (produtos a serem enviados ou já enviados) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processado StatusReceptionDraftShort=Esboço, projeto StatusReceptionValidatedShort=Validado @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Estatísticas realizadas em recepções validadas SendReceptionByEMail=Enviar recepção por email SendReceptionRef=Submissão da recepção %s ActionsOnReception=Eventos na recepção -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Linha de recepção ProductQtyInReceptionAlreadySent=Quantidade do produto da encomenda de venda em aberto já enviado ProductQtyInSuppliersReceptionAlreadyRecevied=Quantidade de produtos da encomendao de fornecedor aberto já recebida @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/ro_RO/admin.lang b/htdocs/langs/ro_RO/admin.lang index 2b6ad8dcb8d..31911e48199 100644 --- a/htdocs/langs/ro_RO/admin.lang +++ b/htdocs/langs/ro_RO/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Boldare referinţă şi perioadă în PDF -BoldLabelOnPDF=Boldare etichetă în PDF +BoldRefAndPeriodOnPDF=Tipăreşte referința și perioada produsului în PDF +BoldLabelOnPDF=Tipăreşte boldat eticheta produsului în PDF Foundation=Fundaţie Version=Versiune Publisher=Editor @@ -343,7 +343,7 @@ StepNb=Pasul %s FindPackageFromWebSite=Găsiți un pachet care oferă funcțiile de care aveți nevoie (de exemplu, pe site-ul oficial %s). DownloadPackageFromWebSite=Descărcați pachetul (de exemplu de pe site-ul oficial %s). UnpackPackageInDolibarrRoot=Despachetați/dezarhivați fișierele arhivate în directorul serverului sistemului: %s -UnpackPackageInModulesRoot=Pentru a implementa/instala un modul extern, despachetați/dezarhivați fișierele arhivate în directorul serverului dedicat modulelor externe:
%s +UnpackPackageInModulesRoot=Pentru a implementa/instala un modul extern, trebuie să despachetezi/dezarhivezi fișierul arhivă în directorul de pe server dedicat modulelor externe:
%s SetupIsReadyForUse=Implementarea modulului a fost terminată. Cu toate acestea, trebuie să activați și să configurați modulul în aplicația dvs. accesând modulele de configurare a paginii: %s. NotExistsDirect=Directorul rădăcină alternativ nu este atribuit unui director existent.
InfDirAlt=De la versiunea 3, este posibil să se definească un director rădăcină alternativ. Acest lucru vă permite să stocați, într-un director dedicat, plug-in-uri și șabloane personalizate.
Doar creați un director in rădăcina sistemului (de exemplu: personalizat).
@@ -893,11 +893,11 @@ Permission701=Citeşte donaţii Permission702=Creare/modificare donaţii Permission703=Ştergere donaţii Permission771=Citeşte rapoarte de cheltuieli (ale sale și ale subordonaților săi) -Permission772=Create/modify expense reports (for you and your subordinates) +Permission772=Creare/modificare rapoarte de cheltuieli (pentru sine şi subordonaţi) Permission773=Șterge rapoarte de cheltuieli Permission775=Aprobă rapoarte de cheltuieli Permission776=Plăteşte rapoartele de cheltuieli -Permission777=Read all expense reports (even those of user not subordinates) +Permission777=Citeşte toate rapoartele de cheltuieli (chiar și cele ale utilizatorilor care nu îi sunt subordonați) Permission778=Creare/modificare rapoarte de cheltuieli pentru toţi Permission779=Export rapoarte de cheltuieli Permission1001=Citeşte stocuri @@ -965,7 +965,7 @@ Permission4001=Citeşte abilitate/job/post Permission4002=Creare/modificare abilitate/job/post Permission4003=Şterge abilitate/job/post Permission4020=Citeşte evaluări -Permission4021=Create/modify your evaluation +Permission4021=Creare/modificare evaluare a ta Permission4022=Validare evaluare Permission4023=Ştergere evaluare Permission4030=Vede meniul de comparare @@ -976,9 +976,9 @@ Permission10005=Șterge conținut site web Permission20001=Citeşte cererile de concediu (concediul său și cele ale subordonaților săi) Permission20002=Creare/modificare cereri de concediu (concediul său și cele ale subordonaților săi) Permission20003=Şterge cererile de concediu -Permission20004=Read all leave requests (even those of user not subordinates) -Permission20005=Create/modify leave requests for everybody (even those of user not subordinates) -Permission20006=Administer leave requests (setup and update balance) +Permission20004=Citeşte toate cererile de concediu (chiar şi pe cele ale utilizatorilor care nu-i sunt subordonaţi) +Permission20005=Creare/modificare cereri de concediu la toţi (chiar şi la cei care nu-i sunt subordonaţi) +Permission20006=Administrare cereri de concediu (configurare şi actualizare situaţie) Permission20007=Aprobare cereri de concediu Permission23001=Citeşte Joburi programate Permission23002=Creare/modificare job programat @@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Instalarea sau construirea unui modul extern din aplic HighlightLinesOnMouseHover=Evidențiați liniile tabelului când treceţi cu mouse-ul peste ele HighlightLinesColor=Evidențiere culoare linie la trecerea cu mouse-ul (foloseşte „ffffff” pentru dezactivare) HighlightLinesChecked=Evidențiere culoare linie atunci când este bifată (foloseşte „ffffff” pentru dezactivare) +BtnActionColor=Culoarea butonului de acţiune +TextBtnActionColor=Culoarea textului butonului de acţiune TextTitleColor=Culoarea textului pentru titlul de pagină LinkColor=Culoare link-uri PressF5AfterChangingThis=Apăsați CTRL + F5 sau ștergeți memoria cache a browserului după ce ați modificat această valoare pentru a se aplica @@ -2216,3 +2218,5 @@ NativeModules=Module native NoDeployedModulesFoundWithThisSearchCriteria=Nu s-au găsit module pentru acest criteriu de căutare API_DISABLE_COMPRESSION=Dezactivare compresie răspunsuri API EachTerminalHasItsOwnCounter=Fiecare terminal foloseşte propriul contor. +FillAndSaveAccountIdAndSecret=Completează și salvează mai întâi ID-ul contului și cheia secretă +PreviousHash=Hash anterior diff --git a/htdocs/langs/ro_RO/bills.lang b/htdocs/langs/ro_RO/bills.lang index a20db8b6a66..1e1faff0685 100644 --- a/htdocs/langs/ro_RO/bills.lang +++ b/htdocs/langs/ro_RO/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Rapoarte Plăţi PaymentsAlreadyDone=Plăţi deja efectuate PaymentsBackAlreadyDone=Rambursări efectuate deja PaymentRule=Mod de Plată -PaymentMode=Tipul plăţii -DefaultPaymentMode=Tip de plată implicit +PaymentMode=Metodă de plată +PaymentModes=Metode de plată +DefaultPaymentMode=Metodă de plată implicită DefaultBankAccount=Cont bancar implicit -PaymentTypeDC=Card de debit/credit -PaymentTypePP=PayPal -IdPaymentMode=Tipul plăţii (id) -CodePaymentMode=Tipul plăţii (cod) -LabelPaymentMode=Tipul plăţii (denumire) -PaymentModeShort=Tipul plăţii +IdPaymentMode=Metodă de plată (id) +CodePaymentMode=Metodă de plată (cod) +LabelPaymentMode=Metodă de plată (etichetă) +PaymentModeShort=Metodă de plată PaymentTerm=Termen de plată PaymentConditions=Termeni de plată PaymentConditionsShort=Termeni de plată @@ -450,6 +449,8 @@ PaymentTypeTRA=Schita banca PaymentTypeShortTRA=Schita PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Card de debit/credit +PaymentTypePP=PayPal BankDetails=Coordonate Bancă BankCode=Cod Bancă DeskCode=Codul filialei diff --git a/htdocs/langs/ro_RO/blockedlog.lang b/htdocs/langs/ro_RO/blockedlog.lang index aadcbc5379c..7544c1ac944 100644 --- a/htdocs/langs/ro_RO/blockedlog.lang +++ b/htdocs/langs/ro_RO/blockedlog.lang @@ -1,40 +1,40 @@ -BlockedLog=Înregistrări nemodificate +BlockedLog=Jurnale nemodificabile Field=Câmp BlockedLogDesc=Acest modul urmărește anumite evenimente într-o inregistrare care nu se modifică (pe care nu îl puteți modifica odată înregistrată) într-un lanț bloc, în timp real. Acest modul oferă compatibilitate cu cerințele legilor din unele țări (cum ar fi Franța, cu legea Finance 2016 - Norme NF525). Fingerprints=Evenimente arhivate și amprente digitale FingerprintsDesc=Acesta este instrumentul de navigare sau extragere a înregistrărilor nemodificate. Intrările nemodificate sunt generate și arhivate local într-o masă dedicată, în timp real, atunci când înregistrați un eveniment de afaceri. Puteți utiliza acest instrument pentru a exporta această arhivă și a o salva într-un suport extern (unele țări, cum ar fi Franța, cer să o faceți în fiecare an). Rețineți că nu există nicio caracteristică pentru a elimina acest jurnal și că orice schimbare a încercat să se facă direct în acest jurnal (de exemplu, de către un hacker) va fi raportată cu o amprentă nevalidă. Dacă într-adevăr trebuie să curăţaţi acest tabel deoarece ați folosit aplicația pentru un scop demo / test și doriți să vă curățați datele pentru a începe producția, puteți să întrebați reseller-ul sau integratorul să vă reseteze baza de date (toate datele vor fi eliminate). CompanyInitialKey=Cheia iniţială a companiei (rezultat al blocului de formare) -BrowseBlockedLog=Înregistrări nemodificate +BrowseBlockedLog=Jurnale nemodificabile ShowAllFingerPrintsMightBeTooLong=Arată toate jurnalele arhivate (ar putea fi lungi) ShowAllFingerPrintsErrorsMightBeTooLong=Arată toate jurnalele de arhivă nevalide (ar putea fi lungi) DownloadBlockChain=Descărcați amprentele digitale -KoCheckFingerprintValidity=Înregistrarea din jurnalul arhivat nu este validă. Înseamnă că cineva (un hacker?) A modificat unele date din această înregistrare după ce a fost înregistrată sau a șters înregistrarea anterioară arhivată (verificați că această linie cu # anterior există). -OkCheckFingerprintValidity=Intrarea în jurnal arhivată este validă. Datele de pe această linie nu au fost modificate şi intrarea urmează cele precedente. -OkCheckFingerprintValidityButChainIsKo=Jurnalul arhivat pare valabil în comparație cu cel precedent, dar lanțul a fost corupt anterior. -AddedByAuthority=Stocată în autoritate la distanţă -NotAddedByAuthorityYet=Nu este încă stocată în autoritate la distanță +KoCheckFingerprintValidity=Înregistrarea din jurnalul arhivă nu este validă. Înseamnă că cineva (un hacker?) a modificat unele date ale acestei înregistrări după ce a fost înregistrată sau a șters înregistrarea arhivată anterioară (verificați dacă există linia cu numărul anterior) sau a modificat suma de control a înregistrării anterioare. +OkCheckFingerprintValidity=Intrarea în jurnalul arhivă este validă. Datele de pe această linie nu au fost modificate şi înregistrarea urmează cele precedente. +OkCheckFingerprintValidityButChainIsKo=Jurnalul arhivă pare valid în comparație cu cel precedent, dar lanțul a fost corupt anterior. +AddedByAuthority=Stocat într-o autoritate la distanţă +NotAddedByAuthorityYet=Nu este stocat într-o autoritate la distanţă ShowDetails=Afișați detaliile stocate logPAYMENT_VARIOUS_CREATE=Plată (ne-asignată unei facturi) creată logPAYMENT_VARIOUS_MODIFY=Plată ( ne-asignată unei facturi) modificată logPAYMENT_VARIOUS_DELETE=Ştergere logică plată (ne-asignată unei facturi) -logPAYMENT_ADD_TO_BANK=Plată adăugată la bancă +logPAYMENT_ADD_TO_BANK=Plată adăugată în bancă logPAYMENT_CUSTOMER_CREATE=Plata clientului a fost creată logPAYMENT_CUSTOMER_DELETE=Ștergerea logică a plăţii clientului logDONATION_PAYMENT_CREATE=Plata donaţiei a fost creată logDONATION_PAYMENT_DELETE=Ștergerea logică a plăţii donaţiei logBILL_PAYED=Factura de client plătită -logBILL_UNPAYED=Factura pentru client stabilită neplătită +logBILL_UNPAYED=Factura pentru client setată ca neplătită logBILL_VALIDATE=Factura client validată logBILL_SENTBYMAIL=Factura clientului trimisă prin poștă logBILL_DELETE=Factura clientului a fost ștearsă logic -logMODULE_RESET=Modul BlockedLog a fost dezactivat -logMODULE_SET=Modul BlockedLog a fost activat -logDON_VALIDATE=Donaţia validată -logDON_MODIFY=Donaţia modificată +logMODULE_RESET=Modulul Jurnale Nealterabile a fost dezactivat +logMODULE_SET=Modulul Jurnale Nealterabile a fost activat +logDON_VALIDATE=Donaţie validată +logDON_MODIFY=Donaţie modificată logDON_DELETE=Ştergerea logică a donaţiei -logMEMBER_SUBSCRIPTION_CREATE=Abonamentul de membru a fost creat -logMEMBER_SUBSCRIPTION_MODIFY=Abonamentul de membru a fost modificat -logMEMBER_SUBSCRIPTION_DELETE=Ștergerea logică a abonamentului de membru +logMEMBER_SUBSCRIPTION_CREATE=Cotizaţia de membru a fost creată +logMEMBER_SUBSCRIPTION_MODIFY=Cotizaţia de membru a fost modificată +logMEMBER_SUBSCRIPTION_DELETE=Ștergerea logică a cotizaţiei de membru logCASHCONTROL_VALIDATE= Înregistrare închidere casierie BlockedLogBillDownload=Descărcarea facturii clientului BlockedLogBillPreview=Previzualizarea facturii clientului @@ -46,9 +46,12 @@ logDOC_PREVIEW=Previzualizarea unui document validat pentru imprimare sau descă logDOC_DOWNLOAD=Descărcarea unui document validat pentru imprimare sau trimitere DataOfArchivedEvent=Datele complete ale evenimentului arhivat ImpossibleToReloadObject=Obiect original (tip %s, id %s) nu este legat (vedeți coloana "Date complete" pentru a obține date salvate nemodificate) -BlockedLogAreRequiredByYourCountryLegislation=Modulul înregistrări nemodificate poate fi solicitat de legislația țării dvs. Dezactivarea acestui modul poate face ca orice tranzacție viitoare să nu fie validă în ceea ce privește legea și utilizarea software-ului legal, deoarece acestea nu pot fi validate de un audit fiscal. -BlockedLogActivatedBecauseRequiredByYourCountryLegislation=Modulul înregistrări nemodificate a fost activat de legislația țării dvs. Dezactivarea acestui modul poate face ca orice tranzacție viitoare să nu fie validă în ceea ce privește legea și utilizarea software-ului legal, deoarece acestea nu pot fi validate de un audit fiscal. -BlockedLogDisableNotAllowedForCountry=List de țări în care utilizarea acestui modul este obligatorie (doar pentru a preveni dezactivarea modulului dintr-o eroare, în cazul în care țara dvs. este în această listă, nu este posibilă dezactivarea module nu este posibil fără a edita mai întâi această listă. Rețineți, de asemenea, că activarea / dezactivarea acestui modul va păstra o pistă în jurnalul nemodificat). -OnlyNonValid=Nevalabil -TooManyRecordToScanRestrictFilters=Prea multe înregistrări pentru scanare / analiză. Restricționați lista cu filtre mai restrictive. -RestrictYearToExport=Restricționați luna / an de exportat +BlockedLogAreRequiredByYourCountryLegislation=Modulul Jurnale Nealterabile poate fi impus de legislația țării tale. Dezactivarea acestui modul poate face ca orice tranzacție viitoare să nu fie validată și utilizarea software-ului să nu fie corespunzătoare din punct de vedere legal, deoarece operaţiunile economice efectuate nu pot fi validate de un audit fiscal din perspectiva taxării. +BlockedLogActivatedBecauseRequiredByYourCountryLegislation=Modulul Jurnale Nealterabile a fost activat de legislația țării tale. Dezactivarea acestui modul poate face ca orice tranzacție viitoare să nu fie validă din punct de vedere legal și utilizarea software-ului să fie considerată necorespunzătoare, deoarece acestea nu pot fi validate de un audit fiscal. +BlockedLogDisableNotAllowedForCountry=List de țări în care utilizarea acestui modul este obligatorie (doar pentru a preveni dezactivarea modulului dintr-o eroare, în cazul în care țara dvs. este în această listă, nu este posibilă dezactivarea module nu este posibil fără a edita mai întâi această listă. Rețineți, de asemenea, că activarea / dezactivarea acestui modul va păstra o pistă în jurnalul nemodificabil). +OnlyNonValid=Invalid +TooManyRecordToScanRestrictFilters=Prea multe înregistrări pentru scanare/analiză. Restricționați lista cu filtre mai restrictive. +RestrictYearToExport=Restricționați luna/anul de exportat +BlockedLogEnabled=Sistemul de urmărire a evenimentelor în jurnale inalterabile a fost activat +BlockedLogDisabled=Sistemul de urmărire a evenimentelor în jurnale inalterabile a fost dezactivat după ce au fost efectuate înregistrări. Am salvat o amprentă specială pentru a marca lanțul ca fiind rupt +BlockedLogDisabledBis=Sistemul de urmărire a evenimentelor în jurnale inalterabile a fost dezactivat. Acest lucru este posibil deoarece încă nu au fost create înregistrări. diff --git a/htdocs/langs/ro_RO/companies.lang b/htdocs/langs/ro_RO/companies.lang index 145b639f3eb..d20e2dca917 100644 --- a/htdocs/langs/ro_RO/companies.lang +++ b/htdocs/langs/ro_RO/companies.lang @@ -157,15 +157,15 @@ ProfId3CL=- ProfId4CL=- ProfId5CL=- ProfId6CL=- -ProfId1CM=Id. prof. 1 (Trade Register) -ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) +ProfId1CM=Id. prof. 1 (Registrul Comerţului) +ProfId2CM=Id. prof. 2 (Nr. contribuabil) +ProfId3CM=Id. prof. 3 (Decret de înfiinţare) ProfId4CM=- ProfId5CM=- ProfId6CM=- -ProfId1ShortCM=Trade Register -ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation +ProfId1ShortCM=Registrul Comerţului +ProfId2ShortCM=Nr. contribuabil +ProfId3ShortCM=Decret de înfiinţare ProfId4ShortCM=- ProfId5ShortCM=- ProfId6ShortCM=- diff --git a/htdocs/langs/ro_RO/errors.lang b/htdocs/langs/ro_RO/errors.lang index 019dc6717ea..bb74b86bc27 100644 --- a/htdocs/langs/ro_RO/errors.lang +++ b/htdocs/langs/ro_RO/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Acest contact este deja definit ca pe ErrorCashAccountAcceptsOnlyCashMoney=Acest cont bancar este un cont de numerar, sunt accepate doar plăţi de tip cash. ErrorFromToAccountsMustDiffers=Contul bancar sursă şi contul bancar destinaţie trebuie să fie diferite. ErrorBadThirdPartyName=Valoare greşită pentru numele terțului +ForbiddenBySetupRules=Interzis de regulile de instalare configurare ErrorProdIdIsMandatory=%s este obligatoriu +ErrorAccountancyCodeCustomerIsMandatory=Codul contabil aferent clientului %s este obligatoriu ErrorBadCustomerCodeSyntax=Sintaxă eronată pentru codul de client ErrorBadBarCodeSyntax=Sintaxă greșită pentru codul de bare. Poate s-a setat un tip de cod de bare greșit sau ați definit o mască de numerotare care nu se potrivește cu valoarea scanată. ErrorCustomerCodeRequired=Codul client este obligatoriu @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Nu se află în dicționarul Condiții de ErrorIsNotADraft=%s nu este o schiţă ErrorExecIdFailed=Nu se poate executa comanda "id" ErrorBadCharIntoLoginName=Caracter nepermis în numele de utilizator +ErrorRequestTooLarge=Eroare, cererea este prea mare # 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ă. @@ -315,6 +318,7 @@ RequireAtLeastXString = Necesită cel puţin %s caracter(e) RequireXStringMax = Necesită %s caracter(e) maxim RequireAtLeastXDigits = Necesită cel puţin %s cifr(e) RequireXDigitsMax = Necesită cel puţin %s cifr(e) maxim +RequireValidNumeric = Necesită o valoare numerică RequireValidEmail = Adresa de email nu este validă RequireMaxLength = Lungimea trebuie să fie mai mică de %s caractere RequireMinLength = Lungimea trebuie să fie mai mare de %s caracter(e) diff --git a/htdocs/langs/ro_RO/eventorganization.lang b/htdocs/langs/ro_RO/eventorganization.lang index 47bd1735874..e82c24945da 100644 --- a/htdocs/langs/ro_RO/eventorganization.lang +++ b/htdocs/langs/ro_RO/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Categorie de adăugat terților creaţ EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Categorie de adăugat terților creaţi automat atunci când propun un stand EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Șablon email de trimis după primirea unei sugestii de conferință. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Șablon email de trimis după primirea unei propuneri de stand. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Șablon email de trimis după ce a fost plătită o rezervare a unui stand. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Șablon email de trimis după ce a fost plătită înregistrarea la un stand. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Șablon email de trimis după înregistrarea la un eveniment. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Șablon email newsletter către participanţi -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Șablon email newsletter către speaker-i -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filtrează lista de selecție a terților în formularul/fişa de creare a participanților după tipul de client -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filtrează lista de selecție a terților în formularul/fişa de creare a participanților după tipul de client +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Șablon email de utilizat atunci când se trimit email-uri în masă "Trimite email-uri" către speaker-i +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Șablon email de utilizat atunci când se trimit email-uri în masă "Trimite email-uri" la lista de participanți  +EVENTORGANIZATION_FILTERATTENDEES_CAT = În formularul de creare/adăugare participant, se restricționează lista de terți după categorie +EVENTORGANIZATION_FILTERATTENDEES_TYPE = În formularul pentru a creare/adăugare participant, se restricționează lista terților după natură # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Plată rezervare stand EventOrganizationEmailRegistrationPayment = Înscriere la eveniment EventOrganizationMassEmailAttendees = Comunicare către participanţi EventOrganizationMassEmailSpeakers = Comunicare către speaker-i +ToSpeakers=Către speaker-i # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Preţ înregistrare PriceOfRegistrationHelp=Preț de plătit pentru înregistrare sau participare la eveniment  PriceOfBooth=Preț înscriere pentru stand PriceOfBoothHelp=Preț înscriere pentru stand -EventOrganizationICSLink=Asociere calendar ICS pentru evenimente +EventOrganizationICSLink=Link ICS pentru conferinţe ConferenceOrBoothInformation=Informaţii Conferinţă sau Stand Attendees=Participanți ListOfAttendeesOfEvent=Lista participanților la proiectul eveniment DownloadICSLink = Link descărcare ICS -EVENTORGANIZATION_SECUREKEY = Cheie securizată link public de înregistrare la o conferință +EVENTORGANIZATION_SECUREKEY = Seed de securizare a cheii paginii de înregistrare publică pentru a propune o conferință SERVICE_BOOTH_LOCATION = Serviciu utilizat pentru linia de facturare privind locaţia standului -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Serviciu utilizat pentru linia de facturare pentru o taxă de participare la o conferință +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Serviciu utilizat pentru linia de factură aferentă unui abonament de participare la un eveniment NbVotes=Număr de voturi # # Status diff --git a/htdocs/langs/ro_RO/holiday.lang b/htdocs/langs/ro_RO/holiday.lang index 9994f4663db..1720c366c9f 100644 --- a/htdocs/langs/ro_RO/holiday.lang +++ b/htdocs/langs/ro_RO/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Concedii de aprobat NobodyHasPermissionToValidateHolidays=Nimeni nu are permisiunea de a valida concedii HolidayBalanceMonthlyUpdate=Actualizare lunară a evidenţei concediilor XIsAUsualNonWorkingDay=%s este de obicei o zi NElucrătoare +BlockHolidayIfNegative=Blocare dacă soldul este negativ +LeaveRequestCreationBlockedBecauseBalanceIsNegative=Crearea acestei cereri de concediu este blocată deoarece soldul tău este negativ ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Cererea de concediu %s trebuie să fie schiţă, anulată sau refuzată pentru a fi ștearsă diff --git a/htdocs/langs/ro_RO/knowledgemanagement.lang b/htdocs/langs/ro_RO/knowledgemanagement.lang index b6f254fbeb9..08c8ea84f27 100644 --- a/htdocs/langs/ro_RO/knowledgemanagement.lang +++ b/htdocs/langs/ro_RO/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extracâmpuri articole GroupOfTicket=Grup de tichete YouCanLinkArticleToATicketCategory=Poți conecta un articol la un grup de tichete (astfel încât articolul să fie sugerat în timpul clasificării tichetelor noi) SuggestedForTicketsInGroup=Sugerat pentru tichete atunci când grupul este + +SetObsolete=Setează ca învechit +ConfirmCloseKM=Confirmi închiderea acestui articol ca învechit ? +ConfirmReopenKM=Sigur vrei să readuci acest articol la starea "Validat" ? diff --git a/htdocs/langs/ro_RO/mrp.lang b/htdocs/langs/ro_RO/mrp.lang index e083bd6f664..b6473445811 100644 --- a/htdocs/langs/ro_RO/mrp.lang +++ b/htdocs/langs/ro_RO/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Eşti sigur că vrei să clonezi bonul de consum %s? ConfirmCloneMo=Eşti sigur că vrei să clonezi Comanda de producţie %s ? ManufacturingEfficiency=Eficienţa producţiei ConsumptionEfficiency=Eficienţa consumului -ValueOfMeansLoss=Valoarea de 0,95 înseamnă o medie de 5 %% pierderi în timpul producției +ValueOfMeansLoss=Valoarea de 0.95 înseamnă o pierdere medie de 5%% în timpul producției sau demontării  ValueOfMeansLossForProductProduced= Valoarea de 0,95 înseamnă o medie de 5 %% pierdere din produsul fabricat DeleteBillOfMaterials=Şterge bonuri de consum DeleteMo=Şterge comandă de producţie diff --git a/htdocs/langs/ro_RO/other.lang b/htdocs/langs/ro_RO/other.lang index 80b0cb1c90a..9291e47bab1 100644 --- a/htdocs/langs/ro_RO/other.lang +++ b/htdocs/langs/ro_RO/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Proiect creat de colectorul de email-uri din emai TicketCreatedByEmailCollector=Tichet creat de colectorul de email-uri din email-ul cu MSGID %s OpeningHoursFormatDesc=Foloseşte un - pentru a separa orele de lucru.
Foloseşte un spaţiu pentru a introduce intervale oarare diferite.
Exemplu: 8-12 14-18 SuffixSessionName=Sufix pentru numele sesiunii +LoginWith=Autentificare cu %s ##### Export ##### ExportsArea=Export date diff --git a/htdocs/langs/ro_RO/products.lang b/htdocs/langs/ro_RO/products.lang index c5072aeb7fc..e4f41e550e8 100644 --- a/htdocs/langs/ro_RO/products.lang +++ b/htdocs/langs/ro_RO/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=Bon de consum implicit recomandat pentru fabricarea acestui produ Rank=Rang SwitchOnSaleStatus=Comutare status vânzare SwitchOnPurchaseStatus=Comutare status achiziţie +StockMouvementExtraFields= Câmpuri suplimentare (mişcare de stoc) diff --git a/htdocs/langs/ro_RO/projects.lang b/htdocs/langs/ro_RO/projects.lang index 2d222f5ac78..57416e1d619 100644 --- a/htdocs/langs/ro_RO/projects.lang +++ b/htdocs/langs/ro_RO/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Intrări pe lună InputDetail=Detalii input TimeAlreadyRecorded=Acesta este timpul consumat deja înregistrat pentru acest task/zi și utilizator %s ProjectsWithThisUserAsContact=Proiecte la care acest utilizator este contact +ProjectsWithThisContact=Proiecte cu acest contact TasksWithThisUserAsContact=Task-uri atribuite acestui utilizator ResourceNotAssignedToProject=Nu sunt alocate proiectului ResourceNotAssignedToTheTask=Nu este atribuit task-ului @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Notă: proiectele existente cu SelectLinesOfTimeSpentToInvoice=Selectează linii de timp consumat care nu sunt facturate, apoi iniţiază acțiunea în bloc "Generare factură" pentru a le factura ProjectTasksWithoutTimeSpent=Task-uri proiect fără timp consumat FormForNewLeadDesc=Vă mulțumim că aţi completat formularul pentru a ne contacta. De asemenea, ne puteți trimite un email direct la %s. +ProjectsHavingThisContact=Proiecte care au acest contact StartDateCannotBeAfterEndDate=Data de sfârşit nu poate fi înaintea datei de început diff --git a/htdocs/langs/ro_RO/receptions.lang b/htdocs/langs/ro_RO/receptions.lang index e22cb849c14..5bf7e8ff2fd 100644 --- a/htdocs/langs/ro_RO/receptions.lang +++ b/htdocs/langs/ro_RO/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Setare Recepţie produse +ReceptionDescription=Gestiune recepție furnizor (Creare documente de recepție) +ReceptionsSetup=Configurare Recepţie furnizor RefReception=Ref. recepţie Reception=Recepţie Receptions=Recepţii @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Recepții și avize pentru această comandă ReceptionsToValidate=Recepții de validat StatusReceptionCanceled=Anulată StatusReceptionDraft=Schiţă -StatusReceptionValidated=Validată (produse de livrat sau deja livrate) +StatusReceptionValidated=Validată (produse de primit sau deja primite) +StatusReceptionValidatedToReceive=Validat (produse de recepţionat) +StatusReceptionValidatedReceived=Validată (produse recepţionate) StatusReceptionProcessed=Procesate StatusReceptionDraftShort=Schiţă StatusReceptionValidatedShort=Validată @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statisticile sunt efectuate doar pe recepțiile v SendReceptionByEMail=Trimiteți recepția prin email SendReceptionRef=Predarea recepției %s ActionsOnReception=Evenimente la recepție -ReceptionCreationIsDoneFromOrder=Pentru moment, crearea unei noi recepții se face din secţiunea comenzi de achiziţie. +ReceptionCreationIsDoneFromOrder=Pentru moment, crearea unei noi recepții se face din Comanda de achiziție. ReceptionLine=Linie de recepție ProductQtyInReceptionAlreadySent=Cantitatea de produse din comanda deschisă este deja trimisă ProductQtyInSuppliersReceptionAlreadyRecevied=Cantitatea de produse din comanda de achiziţie deschisă a fost deja primită @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Şabloane documente pentru recepţii NoMorePredefinedProductToDispatch=Nu mai sunt produse predefinite pentru expediere ReceptionExist=O recepţie există ByingPrice=Preţ de achiziţie +ReceptionBackToDraftInDolibarr=Recepţia %s readusă la schiţă +ReceptionClassifyClosedInDolibarr=Recepţia %s a fost clasificată ca Închisă +ReceptionUnClassifyCloseddInDolibarr=Recepţia %s re-deschisă diff --git a/htdocs/langs/ru_RU/admin.lang b/htdocs/langs/ru_RU/admin.lang index b800bb1350d..af785620da5 100644 --- a/htdocs/langs/ru_RU/admin.lang +++ b/htdocs/langs/ru_RU/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Ссылка и период жирным шрифтом в PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Фонд Version=Версия Publisher=Издатель @@ -343,7 +343,7 @@ StepNb=Шаг %s FindPackageFromWebSite=Найдите пакет, который предоставит нужные вам функции (например, на официальном веб-сайте %s). DownloadPackageFromWebSite=Скачать пакет (например, с официального сайта %s). UnpackPackageInDolibarrRoot=Распакуйте упакованные файлы в каталог вашего сервера Dolibarr: %s -UnpackPackageInModulesRoot=Чтобы развернуть/установить внешний модуль, распакуйте/разархивируйте упакованные файлы в каталог сервера, предназначенный для внешних модулей:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Развертывание модуля завершено. Однако вы должны включить и настроить модуль в своем приложении, перейдя на страницу настройки модулей: %s . NotExistsDirect=Альтернативная корневая директория не задана.
InfDirAlt=Начиная с 3-ей версии, можно определить альтернативный корневой каталог. Это позволяет вам хранить в специальном каталоге, плагины и настраиваемые шаблоны.
Просто создайте каталог в корне Dolibarr (например: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Для установки или создания вн HighlightLinesOnMouseHover=Выделите строки таблицы при перемещении мыши HighlightLinesColor=Цвет выделения строки при наведении курсора мыши (используйте 'ffffff', чтобы не выделять) HighlightLinesChecked=Выделите цвет строки, когда она отмечена (используйте 'ffffff', чтобы не выделять) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Цвет текста заголовка страницы LinkColor=Цвет ссылок PressF5AfterChangingThis=Нажмите CTRL + F5 на клавиатуре или очистите кеш браузера после изменения этого значения, чтобы оно было эффективным @@ -2216,3 +2218,5 @@ NativeModules=Родные модули NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/ru_RU/bills.lang b/htdocs/langs/ru_RU/bills.lang index 30fff1b747e..425821d0f0e 100644 --- a/htdocs/langs/ru_RU/bills.lang +++ b/htdocs/langs/ru_RU/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Отчеты о платежах PaymentsAlreadyDone=Платежи уже сделаны PaymentsBackAlreadyDone=Возврат уже произведен PaymentRule=Правила оплаты -PaymentMode=Способ оплаты -DefaultPaymentMode=Тип платежа по умолчанию +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Банковский счет по умолчанию -PaymentTypeDC=Дебетовая/кредитная карта -PaymentTypePP=PayPal -IdPaymentMode=Тип платежа (id) -CodePaymentMode=Тип платежа (код) -LabelPaymentMode=Тип оплаты (этикетка) -PaymentModeShort=Способ оплаты +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Условия оплаты PaymentConditions=Условия оплаты PaymentConditionsShort=Условия оплаты @@ -280,6 +279,7 @@ SetMode=Установить тип оплаты SetRevenuStamp=Установить отметку о доходах Billed=Выставлен RecurringInvoices=Периодические счета-фактуры +RecurringInvoice=Recurring invoice RepeatableInvoice=Шаблоны счёта RepeatableInvoices=Шаблоны счетов Repeatable=Шаблон @@ -449,6 +449,8 @@ PaymentTypeTRA=Банковский тратт PaymentTypeShortTRA=Проект PaymentTypeFAC=Фактор PaymentTypeShortFAC=Фактор +PaymentTypeDC=Дебетовая/кредитная карта +PaymentTypePP=PayPal BankDetails=Банковские реквизиты BankCode=Код банка DeskCode=Номер отдела @@ -604,3 +606,4 @@ SituationTotalProgress=Общий прогресс %d %% SearchUnpaidInvoicesWithDueDate=Поиск неоплаченных счетов со сроком оплаты = %s NoPaymentAvailable=Нет оплаты для %s PaymentRegisteredAndInvoiceSetToPaid=Платеж зарегистрирован, а счет-фактура %s установлен на оплаченный +SendEmailsRemindersOnInvoiceDueDate=Send reminder by email for unpaid invoices diff --git a/htdocs/langs/ru_RU/blockedlog.lang b/htdocs/langs/ru_RU/blockedlog.lang index f9620c40c11..1cd2965e2db 100644 --- a/htdocs/langs/ru_RU/blockedlog.lang +++ b/htdocs/langs/ru_RU/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=Список стран, в которых OnlyNonValid=Недействительный TooManyRecordToScanRestrictFilters=Слишком много записей для сканирования / анализа. Пожалуйста, ограничьте список более строгими фильтрами. RestrictYearToExport=Ограничить экспорт по месяцам/годам +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/ru_RU/errors.lang b/htdocs/langs/ru_RU/errors.lang index 1b6cd56b68f..a5ea90335e0 100644 --- a/htdocs/langs/ru_RU/errors.lang +++ b/htdocs/langs/ru_RU/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Этот контакт уже опр ErrorCashAccountAcceptsOnlyCashMoney=Этот банковский счет определен как счет для наличных, так что он принимает только наличные платежи. ErrorFromToAccountsMustDiffers=Источник и цели банковского счета должны быть разными. ErrorBadThirdPartyName=Неверное значение для стороннего имени +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=%s является обязательным +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Плохо синтаксис для заказчика код ErrorBadBarCodeSyntax=Неверный синтаксис штрих-кода. Возможно, вы установили неверный тип штрих-кода или определили маску штрих-кода для нумерации, которая не соответствует отсканированному значению. ErrorCustomerCodeRequired=Требуется код клиента @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Нет в Словаре условий о ErrorIsNotADraft=%s это не черновик ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Ваш параметр PHP upload_max_filesize (%s) выше, чем параметр PHP post_max_size (%s). Это непоследовательная установка. @@ -315,6 +318,7 @@ RequireAtLeastXString = Требуется не менее %s символа(о RequireXStringMax = Требуется не более %s символов. RequireAtLeastXDigits = Требуется не менее %s цифр RequireXDigitsMax = Требуется не более %s цифр +RequireValidNumeric = Requires a numeric value RequireValidEmail = Адрес электронной почты недействителен RequireMaxLength = Длина не должна превышать %s символов. RequireMinLength = Длина должна быть больше, чем %s симв. diff --git a/htdocs/langs/ru_RU/eventorganization.lang b/htdocs/langs/ru_RU/eventorganization.lang index 3a4ccbc0cd4..d887083e509 100644 --- a/htdocs/langs/ru_RU/eventorganization.lang +++ b/htdocs/langs/ru_RU/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Категория для добавл EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Категория для добавления к третьим сторонам автоматически создается, когда они предлагают выставку EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Шаблон электронного письма для отправки после получения предложения о конференции. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Шаблон электронного письма для отправки после получения предложения о выставке. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Шаблон электронного письма для отправки после оплаты регистрации на выставку. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Шаблон электронного письма для отправки после оплаты регистрации на мероприятие. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Шаблон письма с массовым обращением к участникам -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Шаблон письма с массовым письмом спикерам -EVENTORGANIZATION_FILTERATTENDEES_CAT = Фильтрация списка выбора третьей стороны в карточке/форме создания участников с категорией -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Фильтрация списка выбора третьей стороны в карточке/форме создания участников с указанием типа клиента +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Оплата вашей выставки EventOrganizationEmailRegistrationPayment = Регистрация на мероприятие EventOrganizationMassEmailAttendees = Общение с участниками EventOrganizationMassEmailSpeakers = Общение со спикерами +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Стоимость регистрации PriceOfRegistrationHelp=Стоимость регистрации или участия в мероприятии PriceOfBooth=Стоимость подписки на выставку PriceOfBoothHelp=Стоимость подписки на выставку -EventOrganizationICSLink=Свяжите ICS для событий +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Информация о конференции или выставке Attendees=Участники ListOfAttendeesOfEvent=Список участников событийного проекта DownloadICSLink = Ссылка для скачивания ICS -EVENTORGANIZATION_SECUREKEY = Защищенный ключ общедоступной регистрационной ссылки на конференцию +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Услуга, используемая для строки счета-фактуры о местонахождении выставки -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Служба, используемая для строки счета-фактуры о подписке участника на конференцию +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Количество голосов # # Status diff --git a/htdocs/langs/ru_RU/holiday.lang b/htdocs/langs/ru_RU/holiday.lang index 6a17f52b04f..dec460ea8b5 100644 --- a/htdocs/langs/ru_RU/holiday.lang +++ b/htdocs/langs/ru_RU/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Праздники утвердить NobodyHasPermissionToValidateHolidays=Ни у кого нет разрешения подтверждать праздники HolidayBalanceMonthlyUpdate=Ежемесячное обновление праздничного баланса XIsAUsualNonWorkingDay=%s обычно НЕ рабочий день +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/ru_RU/knowledgemanagement.lang b/htdocs/langs/ru_RU/knowledgemanagement.lang index 818fd3fdc69..c61b930e8f7 100644 --- a/htdocs/langs/ru_RU/knowledgemanagement.lang +++ b/htdocs/langs/ru_RU/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Дополнительные поля для зап GroupOfTicket=Группа тикетов YouCanLinkArticleToATicketCategory=Вы можете привязать запись к группе тикетов (чтобы запись предлагалась во время квалификации новых тикетов) SuggestedForTicketsInGroup=Предлагается для тикетов, когда группа + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/ru_RU/mrp.lang b/htdocs/langs/ru_RU/mrp.lang index cf36489726b..420cd88994e 100644 --- a/htdocs/langs/ru_RU/mrp.lang +++ b/htdocs/langs/ru_RU/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Вы уверены, что хотите клони ConfirmCloneMo=Вы действительно хотите клонировать заказ на производство %s? ManufacturingEfficiency=Эффективность производства ConsumptionEfficiency=Эффективность потребления -ValueOfMeansLoss=Значение 0.95 означает в среднем 5%% потерь во время производства. +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Значение 0.95 означает в среднем 5%% потерь произведенного продукта. DeleteBillOfMaterials=Удалить перечень элементов DeleteMo=Удалить производственный заказ diff --git a/htdocs/langs/ru_RU/other.lang b/htdocs/langs/ru_RU/other.lang index 40585d03afd..62d9acc6860 100644 --- a/htdocs/langs/ru_RU/other.lang +++ b/htdocs/langs/ru_RU/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Проект создан сборщиком пи TicketCreatedByEmailCollector=Тикет создан сборщиком электронной почты из электронного адреса MSGID %s OpeningHoursFormatDesc=Используйте - для разделения часов открытия и закрытия.
Используйте пробел для ввода различных диапазонов.
Пример: 8-12 14-18 SuffixSessionName=Суффикс имени сеанса +LoginWith=Login with %s ##### Export ##### ExportsArea=Экспорт области diff --git a/htdocs/langs/ru_RU/products.lang b/htdocs/langs/ru_RU/products.lang index 80be5bc8342..2dd938b567f 100644 --- a/htdocs/langs/ru_RU/products.lang +++ b/htdocs/langs/ru_RU/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=Спецификация материалов по умолчан Rank=Ранг SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/ru_RU/projects.lang b/htdocs/langs/ru_RU/projects.lang index 860d58fb678..1a4260181ba 100644 --- a/htdocs/langs/ru_RU/projects.lang +++ b/htdocs/langs/ru_RU/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Ввод в месяц InputDetail=Детализация ввода TimeAlreadyRecorded=Это время, уже зарегистрированное для этой задачи/день, и пользователь %s ProjectsWithThisUserAsContact=Проекты с этим пользователем в качестве контакта +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Задачи, возложенные на этого пользователя ResourceNotAssignedToProject=Не привязан к проекту ResourceNotAssignedToTheTask=Не назначен на задачу @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Примечание: суще SelectLinesOfTimeSpentToInvoice=Выберите строки затраченного времени, за которые не выставлены счета, затем выполните массовое действие "Сгенерировать счет-фактуру", чтобы выставить их. ProjectTasksWithoutTimeSpent=Задачи проекта без затрат времени FormForNewLeadDesc=Спасибо, заполните следующую форму, чтобы связаться с нами. Вы также можете отправить нам электронное письмо прямо на адрес %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=Дата окончания не может быть раньше даты начала diff --git a/htdocs/langs/ru_RU/receptions.lang b/htdocs/langs/ru_RU/receptions.lang index 214ed100e30..5fc7dd40e87 100644 --- a/htdocs/langs/ru_RU/receptions.lang +++ b/htdocs/langs/ru_RU/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Настройка поступления товаров +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ссылка поступление Reception=Поступление Receptions=Поступлдения @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Квитанции и чеки по этом ReceptionsToValidate=Поступления для проверки StatusReceptionCanceled=Отменена StatusReceptionDraft=Черновик -StatusReceptionValidated=Утверждена (продукты для отправки или уже отправлены) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Обработано StatusReceptionDraftShort=Черновик StatusReceptionValidatedShort=Утверждена @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Статистика по поступления SendReceptionByEMail=Отправить получение по электронной почте SendReceptionRef=Подача поступления %s ActionsOnReception=События на поступление -ReceptionCreationIsDoneFromOrder=На данный момент создание нового поступления выполняется из записи «Заказ на поставку». +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Линия поступления ProductQtyInReceptionAlreadySent=Количество товара из уже отправленного открытого заказа на продажу ProductQtyInSuppliersReceptionAlreadyRecevied=Количество продукта из открытого заказа поставщика уже получено @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Шаблоны документов для поступл NoMorePredefinedProductToDispatch=Больше нет готовых продуктов для отправки ReceptionExist=Поступление существует ByingPrice=Цена покупки +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/ru_UA/admin.lang b/htdocs/langs/ru_UA/admin.lang new file mode 100644 index 00000000000..e4705c82130 --- /dev/null +++ b/htdocs/langs/ru_UA/admin.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - admin +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/sk_SK/admin.lang b/htdocs/langs/sk_SK/admin.lang index 8d1d457f641..0f8bd32536e 100644 --- a/htdocs/langs/sk_SK/admin.lang +++ b/htdocs/langs/sk_SK/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Nadácia Version=Verzia Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=Krok %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Zvýrazniť riadok pre prechode kurzora HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/sk_SK/bills.lang b/htdocs/langs/sk_SK/bills.lang index 50d74fa5bb0..e4a198742f0 100644 --- a/htdocs/langs/sk_SK/bills.lang +++ b/htdocs/langs/sk_SK/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Platby správy PaymentsAlreadyDone=Platby neurobili PaymentsBackAlreadyDone=Refunds already done PaymentRule=Platba pravidlo -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Účtované RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Šablóna faktúry RepeatableInvoices=Šablóna faktúr Repeatable=Šablóna @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Návrh PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bankové spojenie BankCode=Kód banky DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/sk_SK/blockedlog.lang b/htdocs/langs/sk_SK/blockedlog.lang index 05233648848..449b8429a75 100644 --- a/htdocs/langs/sk_SK/blockedlog.lang +++ b/htdocs/langs/sk_SK/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/sk_SK/errors.lang b/htdocs/langs/sk_SK/errors.lang index a0bbae8b8bf..cbb983f03f0 100644 --- a/htdocs/langs/sk_SK/errors.lang +++ b/htdocs/langs/sk_SK/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Tento kontakt je už definovaný ako ErrorCashAccountAcceptsOnlyCashMoney=Tento bankový účet peňažný účet, takže prijíma platby typu iba v hotovosti. ErrorFromToAccountsMustDiffers=Zdrojovej a cieľovej bankové účty musí byť iný. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=%s je povinné +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntaxe pre zákazníka kódu ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Zákazník požadoval kód @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/sk_SK/eventorganization.lang b/htdocs/langs/sk_SK/eventorganization.lang index 4524e29d279..0f68b62079f 100644 --- a/htdocs/langs/sk_SK/eventorganization.lang +++ b/htdocs/langs/sk_SK/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/sk_SK/holiday.lang b/htdocs/langs/sk_SK/holiday.lang index 5a9d68eaf2a..23087db2f90 100644 --- a/htdocs/langs/sk_SK/holiday.lang +++ b/htdocs/langs/sk_SK/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/sk_SK/knowledgemanagement.lang b/htdocs/langs/sk_SK/knowledgemanagement.lang index e59c6931e7c..a703cc41b4d 100644 --- a/htdocs/langs/sk_SK/knowledgemanagement.lang +++ b/htdocs/langs/sk_SK/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/sk_SK/mrp.lang b/htdocs/langs/sk_SK/mrp.lang index 03566fdadf6..5fba4aaa7ba 100644 --- a/htdocs/langs/sk_SK/mrp.lang +++ b/htdocs/langs/sk_SK/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/sk_SK/other.lang b/htdocs/langs/sk_SK/other.lang index cabe1096ec7..41e3d141a56 100644 --- a/htdocs/langs/sk_SK/other.lang +++ b/htdocs/langs/sk_SK/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Vývoz plocha diff --git a/htdocs/langs/sk_SK/products.lang b/htdocs/langs/sk_SK/products.lang index 0edb0fa5262..b5529fbb749 100644 --- a/htdocs/langs/sk_SK/products.lang +++ b/htdocs/langs/sk_SK/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/sk_SK/projects.lang b/htdocs/langs/sk_SK/projects.lang index 9c9aad52dc3..427c3d7af26 100644 --- a/htdocs/langs/sk_SK/projects.lang +++ b/htdocs/langs/sk_SK/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=Dátum ukončenia nemôže byť pred dátumom začatia diff --git a/htdocs/langs/sk_SK/receptions.lang b/htdocs/langs/sk_SK/receptions.lang index f0e888bfa79..220885375f0 100644 --- a/htdocs/langs/sk_SK/receptions.lang +++ b/htdocs/langs/sk_SK/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Recepcia Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Zrušený StatusReceptionDraft=Návrh -StatusReceptionValidated=Overené (výrobky na odoslanie alebo už dodané) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Spracované StatusReceptionDraftShort=Návrh StatusReceptionValidatedShort=Overené @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/sl_SI/admin.lang b/htdocs/langs/sl_SI/admin.lang index 231e2d99291..6ee90a1853c 100644 --- a/htdocs/langs/sl_SI/admin.lang +++ b/htdocs/langs/sl_SI/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Ustanova Version=Različica Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=Korak %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Osvetli vrstice tabele, preko katerih je šla miška HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/sl_SI/bills.lang b/htdocs/langs/sl_SI/bills.lang index dc3899fb1a9..353b78b08ef 100644 --- a/htdocs/langs/sl_SI/bills.lang +++ b/htdocs/langs/sl_SI/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Poročila o plačilih PaymentsAlreadyDone=Izvršena plačila PaymentsBackAlreadyDone=Izvedena vračila PaymentRule=Pravilo plačila -PaymentMode=Tip plačila -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debetna/Kreditna kartica -PaymentTypePP=PayPal -IdPaymentMode=Tip plačila (id) -CodePaymentMode=Tip plačila (šifra) -LabelPaymentMode=Tip plačila (oznaka) -PaymentModeShort=Tip plačila +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Plačilni pogoj PaymentConditions=Plačilni pogoji PaymentConditionsShort=Plačilni pogoji @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Zaračunano RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Predloga računa RepeatableInvoices=Predloga računov Repeatable=Predloga @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Osnutek PaymentTypeFAC=Faktor PaymentTypeShortFAC=Faktor +PaymentTypeDC=Debetna/Kreditna kartica +PaymentTypePP=PayPal BankDetails=Podatki o banki BankCode=Koda banke DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/sl_SI/blockedlog.lang b/htdocs/langs/sl_SI/blockedlog.lang index cb5b53c1bd8..215867fc4b1 100644 --- a/htdocs/langs/sl_SI/blockedlog.lang +++ b/htdocs/langs/sl_SI/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/sl_SI/errors.lang b/htdocs/langs/sl_SI/errors.lang index 3f9a76f753b..a27b6fceea6 100644 --- a/htdocs/langs/sl_SI/errors.lang +++ b/htdocs/langs/sl_SI/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Ta kontakt je že definiran kot konta ErrorCashAccountAcceptsOnlyCashMoney=Ta bančni račun je gotovinski, zato so možna samo gotovinska plačila. ErrorFromToAccountsMustDiffers=Plačilni in ciljni bančni račun morata biti različna. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Napačna koda kupca ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Obvezna koda kupca @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/sl_SI/eventorganization.lang b/htdocs/langs/sl_SI/eventorganization.lang index d004c3c09b0..570eacd6cb8 100644 --- a/htdocs/langs/sl_SI/eventorganization.lang +++ b/htdocs/langs/sl_SI/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/sl_SI/holiday.lang b/htdocs/langs/sl_SI/holiday.lang index 76b23ccf212..2f664b4b125 100644 --- a/htdocs/langs/sl_SI/holiday.lang +++ b/htdocs/langs/sl_SI/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/sl_SI/knowledgemanagement.lang b/htdocs/langs/sl_SI/knowledgemanagement.lang index 4661c84bd54..3ff355d3635 100644 --- a/htdocs/langs/sl_SI/knowledgemanagement.lang +++ b/htdocs/langs/sl_SI/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/sl_SI/mrp.lang b/htdocs/langs/sl_SI/mrp.lang index 1d2b1cb8314..0cbcc1d2bc8 100644 --- a/htdocs/langs/sl_SI/mrp.lang +++ b/htdocs/langs/sl_SI/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/sl_SI/other.lang b/htdocs/langs/sl_SI/other.lang index 764a76c6c4c..eccf4a08c37 100644 --- a/htdocs/langs/sl_SI/other.lang +++ b/htdocs/langs/sl_SI/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Področje izvoza diff --git a/htdocs/langs/sl_SI/products.lang b/htdocs/langs/sl_SI/products.lang index 658370cdcbc..b82a8300e02 100644 --- a/htdocs/langs/sl_SI/products.lang +++ b/htdocs/langs/sl_SI/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/sl_SI/projects.lang b/htdocs/langs/sl_SI/projects.lang index 7dce2e1815d..3b61be3bbea 100644 --- a/htdocs/langs/sl_SI/projects.lang +++ b/htdocs/langs/sl_SI/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/sl_SI/receptions.lang b/htdocs/langs/sl_SI/receptions.lang index f4ee39e53c8..641b2803acc 100644 --- a/htdocs/langs/sl_SI/receptions.lang +++ b/htdocs/langs/sl_SI/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=V obdelavi Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Preklicano StatusReceptionDraft=Osnutek -StatusReceptionValidated=Potrjeno (proizvodi za pošiljanje ali že poslani) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Obdelani StatusReceptionDraftShort=Osnutek StatusReceptionValidatedShort=Potrjen @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/sq_AL/admin.lang b/htdocs/langs/sq_AL/admin.lang index 4c1fc92e29b..9ceec93e86e 100644 --- a/htdocs/langs/sq_AL/admin.lang +++ b/htdocs/langs/sq_AL/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Foundation Version=Versioni Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=Step %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/sq_AL/bills.lang b/htdocs/langs/sq_AL/bills.lang index 496c7f1eb8e..92126323242 100644 --- a/htdocs/langs/sq_AL/bills.lang +++ b/htdocs/langs/sq_AL/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Payments reports PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Refunds already done PaymentRule=Payment rule -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Draft PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bank details BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/sq_AL/blockedlog.lang b/htdocs/langs/sq_AL/blockedlog.lang index 0bba5605d0f..12f28737d49 100644 --- a/htdocs/langs/sq_AL/blockedlog.lang +++ b/htdocs/langs/sq_AL/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/sq_AL/errors.lang b/htdocs/langs/sq_AL/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/sq_AL/errors.lang +++ b/htdocs/langs/sq_AL/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/sq_AL/eventorganization.lang b/htdocs/langs/sq_AL/eventorganization.lang index 82951892a32..b4a7279d757 100644 --- a/htdocs/langs/sq_AL/eventorganization.lang +++ b/htdocs/langs/sq_AL/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/sq_AL/holiday.lang b/htdocs/langs/sq_AL/holiday.lang index 986daecd415..184bcf2b82a 100644 --- a/htdocs/langs/sq_AL/holiday.lang +++ b/htdocs/langs/sq_AL/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/sq_AL/knowledgemanagement.lang b/htdocs/langs/sq_AL/knowledgemanagement.lang index 59567968a93..50436a6c2be 100644 --- a/htdocs/langs/sq_AL/knowledgemanagement.lang +++ b/htdocs/langs/sq_AL/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/sq_AL/mrp.lang b/htdocs/langs/sq_AL/mrp.lang index 0579c8844bf..b709b0dce02 100644 --- a/htdocs/langs/sq_AL/mrp.lang +++ b/htdocs/langs/sq_AL/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/sq_AL/other.lang b/htdocs/langs/sq_AL/other.lang index 87977779117..12dafabbee8 100644 --- a/htdocs/langs/sq_AL/other.lang +++ b/htdocs/langs/sq_AL/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/sq_AL/products.lang b/htdocs/langs/sq_AL/products.lang index cf8a0e48932..e8929189136 100644 --- a/htdocs/langs/sq_AL/products.lang +++ b/htdocs/langs/sq_AL/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/sq_AL/projects.lang b/htdocs/langs/sq_AL/projects.lang index edf3df924f6..59b4918bd52 100644 --- a/htdocs/langs/sq_AL/projects.lang +++ b/htdocs/langs/sq_AL/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/sq_AL/receptions.lang b/htdocs/langs/sq_AL/receptions.lang index 2e448cb7d7d..f13e4e65f67 100644 --- a/htdocs/langs/sq_AL/receptions.lang +++ b/htdocs/langs/sq_AL/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Anulluar StatusReceptionDraft=Draft -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processed StatusReceptionDraftShort=Draft StatusReceptionValidatedShort=Validated @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/sr_RS/admin.lang b/htdocs/langs/sr_RS/admin.lang index 1467aaa2f49..5c19513a263 100644 --- a/htdocs/langs/sr_RS/admin.lang +++ b/htdocs/langs/sr_RS/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Osnova Version=Verzija Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=Step %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Boja linkova PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/sr_RS/bills.lang b/htdocs/langs/sr_RS/bills.lang index 37711bb6134..fb5d78533d8 100644 --- a/htdocs/langs/sr_RS/bills.lang +++ b/htdocs/langs/sr_RS/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Izveštaj o plaćanjima PaymentsAlreadyDone=Plaćanje već izvršeno PaymentsBackAlreadyDone=Refunds already done PaymentRule=Pravilo za plaćanje -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Nacrt PaymentTypeFAC=Faktor PaymentTypeShortFAC=Faktor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bank details BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/sr_RS/blockedlog.lang b/htdocs/langs/sr_RS/blockedlog.lang index 977e3f9d5c0..62240040041 100644 --- a/htdocs/langs/sr_RS/blockedlog.lang +++ b/htdocs/langs/sr_RS/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/sr_RS/errors.lang b/htdocs/langs/sr_RS/errors.lang index 9f749b63643..ce3cbc6b148 100644 --- a/htdocs/langs/sr_RS/errors.lang +++ b/htdocs/langs/sr_RS/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Kontakt je već definisan kao kontakt ErrorCashAccountAcceptsOnlyCashMoney=Ovaj bankovni raču je keš račun i prihvata samo keš uplate. ErrorFromToAccountsMustDiffers=Izvorni i ciljani bankovni račun moraju biti različiti. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=%s je obavezno +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Pogrešna sintaksa koda klijenta ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Kod klijenta je obavezan @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/sr_RS/eventorganization.lang b/htdocs/langs/sr_RS/eventorganization.lang index 23f8f9ef706..c20ced3773f 100644 --- a/htdocs/langs/sr_RS/eventorganization.lang +++ b/htdocs/langs/sr_RS/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/sr_RS/holiday.lang b/htdocs/langs/sr_RS/holiday.lang index f0676a86b00..c755ad5cfac 100644 --- a/htdocs/langs/sr_RS/holiday.lang +++ b/htdocs/langs/sr_RS/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/sr_RS/knowledgemanagement.lang b/htdocs/langs/sr_RS/knowledgemanagement.lang index 801f15e99c4..3abbbbbbde1 100644 --- a/htdocs/langs/sr_RS/knowledgemanagement.lang +++ b/htdocs/langs/sr_RS/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/sr_RS/mrp.lang b/htdocs/langs/sr_RS/mrp.lang index 994d2416fde..b3fb904ae07 100644 --- a/htdocs/langs/sr_RS/mrp.lang +++ b/htdocs/langs/sr_RS/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/sr_RS/other.lang b/htdocs/langs/sr_RS/other.lang index d0f857f07d4..2cff1f8384a 100644 --- a/htdocs/langs/sr_RS/other.lang +++ b/htdocs/langs/sr_RS/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Oblast exporta diff --git a/htdocs/langs/sr_RS/products.lang b/htdocs/langs/sr_RS/products.lang index 8d71e24c135..ce21333c0a3 100644 --- a/htdocs/langs/sr_RS/products.lang +++ b/htdocs/langs/sr_RS/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/sr_RS/projects.lang b/htdocs/langs/sr_RS/projects.lang index 9967b06dbc2..5ee78601358 100644 --- a/htdocs/langs/sr_RS/projects.lang +++ b/htdocs/langs/sr_RS/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projekti sa ovim korisnikom u kontaktima +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Zadaci ovog korisnika ResourceNotAssignedToProject=Nije dodeljen projektu ResourceNotAssignedToTheTask=Nije dodeljen zadatku @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=Kraj ne može biti pre početka diff --git a/htdocs/langs/sr_RS/receptions.lang b/htdocs/langs/sr_RS/receptions.lang index b4a154f11fc..d38c8ea37ae 100644 --- a/htdocs/langs/sr_RS/receptions.lang +++ b/htdocs/langs/sr_RS/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Poništeno StatusReceptionDraft=Nacrt -StatusReceptionValidated=Potvrđeno (proizvodi za isporuku ili već isporučeni) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Procesuirano StatusReceptionDraftShort=Nacrt StatusReceptionValidatedShort=Potvrđen @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/sv_SE/admin.lang b/htdocs/langs/sv_SE/admin.lang index ad46f5de669..f9d711c0215 100644 --- a/htdocs/langs/sv_SE/admin.lang +++ b/htdocs/langs/sv_SE/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Stiftelse Version=Version Publisher=Utgivare @@ -343,7 +343,7 @@ StepNb=Steg %s FindPackageFromWebSite=Hitta ett paket som innehåller de funktioner du behöver (till exempel på den officiella webbplatsen %s). DownloadPackageFromWebSite=Ladda ner paketet (till exempel från den officiella hemsidan %s). UnpackPackageInDolibarrRoot=Packa upp / packa upp de förpackade filerna i din Dolibarr-serverns katalog: %s -UnpackPackageInModulesRoot=För att distribuera / installera en extern modul, packa upp / pakka ut de förpackade filerna i serverns katalog som är dedikerad till externa moduler:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Modulutbyggnad är klar. Du måste dock aktivera och konfigurera modulen i din applikation genom att gå till modulerna för inställning av sidor: %s . NotExistsDirect=Den alternativa rotkatalogen är inte definierad till en befintlig katalog.
InfDirAlt=Sedan version 3 är det möjligt att definiera en alternativ rotkatalog. Detta gör att du kan lagra, till en dedikerad katalog, plugin-moduler och anpassade mallar.
Skapa bara en katalog i roten till Dolibarr (t ex: anpassad).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installera eller bygga en extern modul från programme HighlightLinesOnMouseHover=Markera tabelllinjer när musen flytta passerar över HighlightLinesColor=Markera färg på linjen när musen passerar över (använd 'ffffff' för ingen höjdpunkt) HighlightLinesChecked=Markera färg på linjen när den är markerad (använd 'ffffff' för ingen höjdpunkt) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Textfärg på sidtitel LinkColor=Färg på länkar PressF5AfterChangingThis=Tryck CTRL + F5 på tangentbordet eller rensa webbläsarens cacheminne när du har ändrat det här värdet för att få det effektivt @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/sv_SE/bills.lang b/htdocs/langs/sv_SE/bills.lang index f99badbc3c4..808c8ee481d 100644 --- a/htdocs/langs/sv_SE/bills.lang +++ b/htdocs/langs/sv_SE/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Betalningar rapporter PaymentsAlreadyDone=Betalningar redan gjort PaymentsBackAlreadyDone=Återbetalningar redan gjorda PaymentRule=Betalningsregel -PaymentMode=Betalnings typ -DefaultPaymentMode=Standardbetalningstyp +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Standard bankkonto -PaymentTypeDC=Debet / Kreditkort -PaymentTypePP=PayPal -IdPaymentMode=Betalningstyp (id) -CodePaymentMode=Betalningstyp (kod) -LabelPaymentMode=Betalningstyp (etikett) -PaymentModeShort=Betalnings typ +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Betalningsvillkor PaymentConditions=Betalningsvillkor PaymentConditionsShort=Betalningsvillkor @@ -280,6 +279,7 @@ SetMode=Ange betalningstyp SetRevenuStamp=Ställ in intäktsstämpel Billed=Fakturerade RecurringInvoices=Återkommande fakturor +RecurringInvoice=Recurring invoice RepeatableInvoice=Fakturamall RepeatableInvoices=Fakturamallar Repeatable=Mall @@ -449,6 +449,8 @@ PaymentTypeTRA=Bankutkast PaymentTypeShortTRA=Utkast PaymentTypeFAC=Faktor PaymentTypeShortFAC=Faktor +PaymentTypeDC=Debet / Kreditkort +PaymentTypePP=PayPal BankDetails=Bankuppgifter BankCode=Bankkod DeskCode=Gren-kod @@ -604,3 +606,4 @@ SituationTotalProgress=Total framsteg %d %% SearchUnpaidInvoicesWithDueDate=Sök efter obetalda fakturor med förfallodatum = %s NoPaymentAvailable=No payment available for %s PaymentRegisteredAndInvoiceSetToPaid=Payment registered and invoice %s set to paid +SendEmailsRemindersOnInvoiceDueDate=Send reminder by email for unpaid invoices diff --git a/htdocs/langs/sv_SE/blockedlog.lang b/htdocs/langs/sv_SE/blockedlog.lang index f56915b65a1..3dfa8134d68 100644 --- a/htdocs/langs/sv_SE/blockedlog.lang +++ b/htdocs/langs/sv_SE/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=Lista över länder där användningen av OnlyNonValid=Icke giltigt TooManyRecordToScanRestrictFilters=För många poster att skanna / analysera. Begränsa listan med mer restriktiva filter. RestrictYearToExport=Begränsa månad / år att exportera +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/sv_SE/errors.lang b/htdocs/langs/sv_SE/errors.lang index 065595d1b4c..6eac66b349a 100644 --- a/htdocs/langs/sv_SE/errors.lang +++ b/htdocs/langs/sv_SE/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Denna kontakt redan har definierats s ErrorCashAccountAcceptsOnlyCashMoney=Detta bankkonto är en kontant-konto, så det tar emot betalningar av typ kontanter endast. ErrorFromToAccountsMustDiffers=Källa och mål bankkonton måste vara olika. ErrorBadThirdPartyName=Dåligt värde för tredje parts namn +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=%s är obligatoriskt +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Dålig syntax för kundkod ErrorBadBarCodeSyntax=Dålig syntax för streckkod. Kan du ställa in en dålig streckkodstyp eller du definierade en streckkodsmask för numrering som inte matchar värdet skannat. ErrorCustomerCodeRequired=Kunden som erfordras @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Inte i ordningen för betalningsvillkor, ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # 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. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/sv_SE/eventorganization.lang b/htdocs/langs/sv_SE/eventorganization.lang index 5075df2f146..c16dec9ca59 100644 --- a/htdocs/langs/sv_SE/eventorganization.lang +++ b/htdocs/langs/sv_SE/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Kategori som automatiskt kan läggas t EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Kategori som ska läggas till tredje part automatiskt skapas när de föreslår en monter EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Mall för e-post att skicka efter att ha fått ett förslag på en konferens. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Mall för e-post att skicka efter att ha fått ett förslag på en monter. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Mall för e-post för massaktion till attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Mall för e-post för massaktion till högtalare -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filtrera tredje parts vallista i deltagarnas skapande kort / formulär med kategori -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filtrera tredje parts vallista i deltagarnas skapande kort / formulär med kundtyp +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Kommunikation till deltagarna EventOrganizationMassEmailSpeakers = Kommunikation till högtalarna +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Pris för registrering PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Prenumerationspris för att stå en monter PriceOfBoothHelp=Prenumerationspris för att stå en monter -EventOrganizationICSLink=Länka ICS för evenemang +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Information om konferens eller monter Attendees=Deltagare ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Ladda ner ICS-länk -EVENTORGANIZATION_SECUREKEY = Säker nyckel till länken till offentlig registrering till en konferens +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Tjänst som används för fakturaraden om en monterplats -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Tjänst som används för fakturaraden om en deltagarprenumeration på en konferens +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Röstetal # # Status diff --git a/htdocs/langs/sv_SE/holiday.lang b/htdocs/langs/sv_SE/holiday.lang index 7d34aae6f2d..f216ac98992 100644 --- a/htdocs/langs/sv_SE/holiday.lang +++ b/htdocs/langs/sv_SE/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Semester att godkänna NobodyHasPermissionToValidateHolidays=Ingen har tillstånd att godkänna helgdagar HolidayBalanceMonthlyUpdate=Månadsuppdatering av semestersaldot XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/sv_SE/knowledgemanagement.lang b/htdocs/langs/sv_SE/knowledgemanagement.lang index d2519b503b9..de1b5b17445 100644 --- a/htdocs/langs/sv_SE/knowledgemanagement.lang +++ b/htdocs/langs/sv_SE/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafält för artikel GroupOfTicket=Grupp av biljetter YouCanLinkArticleToATicketCategory=Du kan länka en artikel till en biljettgrupp (så artikeln kommer att föreslås under kvalificeringen av nya biljetter) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/sv_SE/mrp.lang b/htdocs/langs/sv_SE/mrp.lang index 46f7da7c420..9eb01f8e0aa 100644 --- a/htdocs/langs/sv_SE/mrp.lang +++ b/htdocs/langs/sv_SE/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Är du säker på att du vill klona materialräkning ConfirmCloneMo=Är du säker på att du vill klona tillverkningsordern %s? ManufacturingEfficiency=Tillverkningseffektivitet ConsumptionEfficiency=Förbrukningseffektivitet -ValueOfMeansLoss=Värdet 0,95 betyder i genomsnitt 5%% förlust under produktionen +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Värdet 0,95 betyder i genomsnitt 5%% förlust av producerad produkt DeleteBillOfMaterials=Ta bort materiallista DeleteMo=Ta bort tillverkningsorder diff --git a/htdocs/langs/sv_SE/other.lang b/htdocs/langs/sv_SE/other.lang index f7ea3aedcb0..b7d29a856ec 100644 --- a/htdocs/langs/sv_SE/other.lang +++ b/htdocs/langs/sv_SE/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Projekt skapat av e-post samlare från email MSGI TicketCreatedByEmailCollector=Biljett skapad av e-post samlare från email MSGID %s OpeningHoursFormatDesc=Använd "-" för att separera öppettider.
Använd mellanslag för flera tidpunkter.
Exempel: 8-12 14-18 SuffixSessionName=Suffix för sessionens namn +LoginWith=Login with %s ##### Export ##### ExportsArea=Export område diff --git a/htdocs/langs/sv_SE/products.lang b/htdocs/langs/sv_SE/products.lang index f98eb413516..94f608e7855 100644 --- a/htdocs/langs/sv_SE/products.lang +++ b/htdocs/langs/sv_SE/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=Standard BOM som rekommenderas att använda för att tillverka de Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/sv_SE/projects.lang b/htdocs/langs/sv_SE/projects.lang index bb97259695c..2a65f8922ba 100644 --- a/htdocs/langs/sv_SE/projects.lang +++ b/htdocs/langs/sv_SE/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Ingång per månad InputDetail=Inmatningsdetalj TimeAlreadyRecorded=Det här är den tid som redan spelats in för den här uppgiften / dag och användare %s ProjectsWithThisUserAsContact=Projekt med denna användare som kontakt +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Uppgifter som tilldelats den här användaren ResourceNotAssignedToProject=Ej tilldelat till projekt ResourceNotAssignedToTheTask=Ej tilldelad uppgiften @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Obs: befintliga projekt med all SelectLinesOfTimeSpentToInvoice=Välj rader med tid som inte har fakturerats och sedan massåtgärden "Generera faktura" för att fakturera dem ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=Slutdatum kan inte vara före startdatum diff --git a/htdocs/langs/sv_SE/receptions.lang b/htdocs/langs/sv_SE/receptions.lang index bdd8589f358..3e7eb7455e0 100644 --- a/htdocs/langs/sv_SE/receptions.lang +++ b/htdocs/langs/sv_SE/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Konfiguration av produktmottagning +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Den process Receptions=mottagningar @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Mottagningar och kvitton för denna beställn ReceptionsToValidate=Mottaganden att validera StatusReceptionCanceled=Annullerad StatusReceptionDraft=Utkast -StatusReceptionValidated=Bekräftat (produkter till ett fartyg eller som redan sänts) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Bearbetad StatusReceptionDraftShort=Utkast StatusReceptionValidatedShort=Bekräftade @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistik som utförs på mottagningar är endast SendReceptionByEMail=Skicka mottagning via e-post SendReceptionRef=Inlämning av mottagning %s ActionsOnReception=Händelser i receptionen -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Mottagningslinje ProductQtyInReceptionAlreadySent=Produktkvantitet från öppen försäljningsorder redan skickad ProductQtyInSuppliersReceptionAlreadyRecevied=Produktkvantitet från öppen leverantörsorder redan mottagen @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Dokumentmallar för mottagningar NoMorePredefinedProductToDispatch=Inga fler fördefinierade produkter att skicka ReceptionExist=Det finns en mottagning ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/sw_SW/admin.lang b/htdocs/langs/sw_SW/admin.lang index 3971948e5a1..d79adb1e960 100644 --- a/htdocs/langs/sw_SW/admin.lang +++ b/htdocs/langs/sw_SW/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Foundation Version=Version Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=Step %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/sw_SW/bills.lang b/htdocs/langs/sw_SW/bills.lang index 3aaa5465ca0..f7d0155f41e 100644 --- a/htdocs/langs/sw_SW/bills.lang +++ b/htdocs/langs/sw_SW/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Payments reports PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Refunds already done PaymentRule=Payment rule -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Draft PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bank details BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/sw_SW/blockedlog.lang b/htdocs/langs/sw_SW/blockedlog.lang index 0bba5605d0f..12f28737d49 100644 --- a/htdocs/langs/sw_SW/blockedlog.lang +++ b/htdocs/langs/sw_SW/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/sw_SW/errors.lang b/htdocs/langs/sw_SW/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/sw_SW/errors.lang +++ b/htdocs/langs/sw_SW/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/sw_SW/eventorganization.lang b/htdocs/langs/sw_SW/eventorganization.lang index 82951892a32..b4a7279d757 100644 --- a/htdocs/langs/sw_SW/eventorganization.lang +++ b/htdocs/langs/sw_SW/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/sw_SW/holiday.lang b/htdocs/langs/sw_SW/holiday.lang index dceaef59081..3d0ae64be0f 100644 --- a/htdocs/langs/sw_SW/holiday.lang +++ b/htdocs/langs/sw_SW/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/sw_SW/knowledgemanagement.lang b/htdocs/langs/sw_SW/knowledgemanagement.lang index 2426e0e7013..bcdf9740cdd 100644 --- a/htdocs/langs/sw_SW/knowledgemanagement.lang +++ b/htdocs/langs/sw_SW/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/sw_SW/mrp.lang b/htdocs/langs/sw_SW/mrp.lang index 3f1aac53340..74bed0d9186 100644 --- a/htdocs/langs/sw_SW/mrp.lang +++ b/htdocs/langs/sw_SW/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/sw_SW/other.lang b/htdocs/langs/sw_SW/other.lang index 7b509f60ff7..49ff93dd589 100644 --- a/htdocs/langs/sw_SW/other.lang +++ b/htdocs/langs/sw_SW/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/sw_SW/products.lang b/htdocs/langs/sw_SW/products.lang index a8942bd337f..14715670882 100644 --- a/htdocs/langs/sw_SW/products.lang +++ b/htdocs/langs/sw_SW/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/sw_SW/projects.lang b/htdocs/langs/sw_SW/projects.lang index 0d9c7ea34c8..ff542521afe 100644 --- a/htdocs/langs/sw_SW/projects.lang +++ b/htdocs/langs/sw_SW/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/sw_SW/receptions.lang b/htdocs/langs/sw_SW/receptions.lang index 46b2d689609..7f1a97d16a9 100644 --- a/htdocs/langs/sw_SW/receptions.lang +++ b/htdocs/langs/sw_SW/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Canceled StatusReceptionDraft=Draft -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processed StatusReceptionDraftShort=Draft StatusReceptionValidatedShort=Validated @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/ta_IN/admin.lang b/htdocs/langs/ta_IN/admin.lang index 77b8da1b660..a39ec49d666 100644 --- a/htdocs/langs/ta_IN/admin.lang +++ b/htdocs/langs/ta_IN/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=PDF இல் தடித்த குறிப்பு மற்றும் காலம் -BoldLabelOnPDF=PDF இல் தடிமனான லேபிள் +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=அறக்கட்டளை Version=பதிப்பு Publisher=பதிப்பகத்தார் @@ -343,7 +343,7 @@ StepNb=படி %s FindPackageFromWebSite=உங்களுக்குத் தேவையான அம்சங்களை வழங்கும் தொகுப்பைக் கண்டறியவும் (உதாரணமாக %s என்ற அதிகாரப்பூர்வ இணையதளத்தில்). DownloadPackageFromWebSite=தொகுப்பைப் பதிவிறக்கவும் (உதாரணமாக %s அதிகாரப்பூர்வ இணையதளத்தில் இருந்து). UnpackPackageInDolibarrRoot=தொகுக்கப்பட்ட கோப்புகளை உங்கள் Dolibarr சர்வர் கோப்பகத்தில் திறக்கவும்/அன்சிப் செய்யவும்: %s -UnpackPackageInModulesRoot=வெளிப்புற தொகுதிகளை வரிசைப்படுத்த/நிறுவ, வெளிப்புற தொகுதிகளுக்கு அர்ப்பணிக்கப்பட்ட சர்வர் கோப்பகத்தில் தொகுக்கப்பட்ட கோப்புகளை திறக்க/அன்சிப் செய்யவும்:
%s a09a4b730f17f17 +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=தொகுதி வரிசைப்படுத்தல் முடிந்தது. இருப்பினும் பக்க அமைவு தொகுதிகளுக்குச் சென்று உங்கள் பயன்பாட்டில் தொகுதியை இயக்கி அமைக்க வேண்டும்: %s . NotExistsDirect=மாற்று ரூட் அடைவு ஏற்கனவே உள்ள கோப்பகத்திற்கு வரையறுக்கப்படவில்லை.
InfDirAlt=பதிப்பு 3 இல் இருந்து, ஒரு மாற்று ரூட் கோப்பகத்தை வரையறுக்க முடியும். இது ஒரு பிரத்யேக கோப்பகம், செருகுநிரல்கள் மற்றும் தனிப்பயன் டெம்ப்ளேட்டுகளில் சேமிக்க உங்களை அனுமதிக்கிறது.
Dolibarrன் மூலத்தில் ஒரு கோப்பகத்தை உருவாக்கவும் (எ.கா: தனிப்பயன்).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=பயன்பாட்டிலிருந்து HighlightLinesOnMouseHover=மவுஸ் நகர்த்தும்போது அட்டவணை வரிகளை முன்னிலைப்படுத்தவும் HighlightLinesColor=மவுஸ் கடந்து செல்லும் போது கோட்டின் நிறத்தை முன்னிலைப்படுத்தவும் (சிறப்பம்சமாக இல்லாமல் 'ffffff' ஐப் பயன்படுத்தவும்) HighlightLinesChecked=கோட்டின் நிறத்தை தேர்வு செய்யும்போது அதைத் தனிப்படுத்தவும் (சிறப்பம்சமாக இல்லாமல் 'ffffff' ஐப் பயன்படுத்தவும்) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=பக்க தலைப்பின் உரை நிறம் LinkColor=இணைப்புகளின் நிறம் PressF5AfterChangingThis=விசைப்பலகையில் CTRL+F5 ஐ அழுத்தவும் அல்லது இந்த மதிப்பை மாற்றிய பின் உங்கள் உலாவி தற்காலிக சேமிப்பை அழிக்கவும் @@ -2216,3 +2218,5 @@ NativeModules=சொந்த தொகுதிகள் NoDeployedModulesFoundWithThisSearchCriteria=இந்தத் தேடல் அளவுகோல்களுக்கான தொகுதிகள் எதுவும் இல்லை API_DISABLE_COMPRESSION=API பதில்களின் சுருக்கத்தை முடக்கு EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/ta_IN/bills.lang b/htdocs/langs/ta_IN/bills.lang index 0ae86ffd897..45c25cd6ff4 100644 --- a/htdocs/langs/ta_IN/bills.lang +++ b/htdocs/langs/ta_IN/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=கட்டண அறிக்கைகள் PaymentsAlreadyDone=ஏற்கனவே பணம் செலுத்தப்பட்டது PaymentsBackAlreadyDone=பணத்தைத் திரும்பப்பெறுதல் ஏற்கனவே முடிந்துவிட்டது PaymentRule=பணம் செலுத்தும் விதி -PaymentMode=கட்டணம் வகை -DefaultPaymentMode=இயல்புநிலை கட்டண வகை +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=இயல்புநிலை வங்கி கணக்கு -PaymentTypeDC=டெபிட்/கிரெடிட் கார்டு -PaymentTypePP=பேபால் -IdPaymentMode=கட்டண வகை (ஐடி) -CodePaymentMode=கட்டண வகை (குறியீடு) -LabelPaymentMode=கட்டண வகை (லேபிள்) -PaymentModeShort=கட்டணம் வகை +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=கட்டணம் செலுத்தும் காலம் PaymentConditions=கட்டண வரையறைகள் PaymentConditionsShort=கட்டண வரையறைகள் @@ -450,6 +449,8 @@ PaymentTypeTRA=வங்கி வரைவு PaymentTypeShortTRA=வரைவு PaymentTypeFAC=காரணி PaymentTypeShortFAC=காரணி +PaymentTypeDC=டெபிட்/கிரெடிட் கார்டு +PaymentTypePP=பேபால் BankDetails=வங்கி விவரங்கள் BankCode=வங்கி குறியீடு DeskCode=கிளை குறியீடு diff --git a/htdocs/langs/ta_IN/blockedlog.lang b/htdocs/langs/ta_IN/blockedlog.lang index 2390b37d3f2..9641c84e0b9 100644 --- a/htdocs/langs/ta_IN/blockedlog.lang +++ b/htdocs/langs/ta_IN/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=இந்த தொகுதியின OnlyNonValid=செல்லாதது TooManyRecordToScanRestrictFilters=ஸ்கேன்/பகுப்பாய்வு செய்ய பல பதிவுகள் உள்ளன. மேலும் கட்டுப்படுத்தப்பட்ட வடிப்பான்களுடன் பட்டியலைக் கட்டுப்படுத்தவும். RestrictYearToExport=ஏற்றுமதி செய்ய மாதம் / வருடத்தை கட்டுப்படுத்தவும் +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/ta_IN/errors.lang b/htdocs/langs/ta_IN/errors.lang index ed0ade790d8..04fa1d14975 100644 --- a/htdocs/langs/ta_IN/errors.lang +++ b/htdocs/langs/ta_IN/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=இந்த தொடர்பு ErrorCashAccountAcceptsOnlyCashMoney=இந்த வங்கிக் கணக்கு ஒரு பணக் கணக்கு, எனவே இது பண வகையை மட்டுமே செலுத்தும். ErrorFromToAccountsMustDiffers=வங்கிக் கணக்குகளின் மூலமும் இலக்குகளும் வேறுபட்டதாக இருக்க வேண்டும். ErrorBadThirdPartyName=மூன்றாம் தரப்பு பெயருக்கு மோசமான மதிப்பு +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=%s கட்டாயம் +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=வாடிக்கையாளர் குறியீட்டிற்கான தவறான தொடரியல் ErrorBadBarCodeSyntax=பார்கோடுக்கான தவறான தொடரியல். நீங்கள் மோசமான பார்கோடு வகையை அமைத்திருக்கலாம் அல்லது ஸ்கேன் செய்யப்பட்ட மதிப்புடன் பொருந்தாத எண்களுக்கு பார்கோடு முகமூடியை வரையறுத்திருக்கலாம். ErrorCustomerCodeRequired=வாடிக்கையாளர் குறியீடு தேவை @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=கட்டண விதிமுறை ErrorIsNotADraft=%s ஒரு வரைவு அல்ல ErrorExecIdFailed="id" கட்டளையை இயக்க முடியவில்லை ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=உங்கள் PHP அளவுரு upload_max_filesize (%s) PHP அளவுரு post_max_size (%s) ஐ விட அதிகமாக உள்ளது. இது ஒரு நிலையான அமைப்பு அல்ல. @@ -315,6 +318,7 @@ RequireAtLeastXString = குறைந்தது %s எழுத்து(க RequireXStringMax = அதிகபட்சம் %s எழுத்து(கள்) தேவை RequireAtLeastXDigits = குறைந்தபட்சம் %s இலக்கம்(கள்) தேவை RequireXDigitsMax = அதிகபட்சம் %s இலக்கம்(கள்) தேவை +RequireValidNumeric = Requires a numeric value RequireValidEmail = மின்னஞ்சல் முகவரி தவறானது RequireMaxLength = நீளம் %s எழுத்துகளுக்குக் குறைவாக இருக்க வேண்டும் RequireMinLength = நீளம் %s char(s) ஐ விட அதிகமாக இருக்க வேண்டும் diff --git a/htdocs/langs/ta_IN/eventorganization.lang b/htdocs/langs/ta_IN/eventorganization.lang index 8369bf51353..a8e9c41e0a9 100644 --- a/htdocs/langs/ta_IN/eventorganization.lang +++ b/htdocs/langs/ta_IN/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = மூன்றாம் தரப் EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = மூன்றாம் தரப்பினரிடம் சேர்ப்பதற்கான வகை, ஒரு சாவடியைப் பரிந்துரைக்கும் போது தானாகவே உருவாக்கப்படும் EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = மாநாட்டின் பரிந்துரையைப் பெற்ற பிறகு அனுப்ப வேண்டிய மின்னஞ்சலின் டெம்ப்ளேட். EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = சாவடியின் பரிந்துரையைப் பெற்ற பிறகு அனுப்ப வேண்டிய மின்னஞ்சலின் டெம்ப்ளேட். -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = ஒரு சாவடிக்கு பதிவு செய்த பிறகு அனுப்ப வேண்டிய மின்னஞ்சலின் டெம்ப்ளேட் பணம் செலுத்தப்பட்டது. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = ஒரு நிகழ்வுக்குப் பதிவுசெய்த பிறகு அனுப்ப வேண்டிய மின்னஞ்சலின் டெம்ப்ளேட் பணம் செலுத்தப்பட்டது. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = பங்கேற்பாளர்களுக்கான படுகொலைக்கான மின்னஞ்சல் டெம்ப்ளேட் -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = ஸ்பீக்கர்களுக்குப் படுகொலை செய்யும் மின்னஞ்சல் டெம்ப்ளேட் -EVENTORGANIZATION_FILTERATTENDEES_CAT = பங்கேற்பாளர்கள் உருவாக்கும் அட்டை/படிவத்தில் மூன்றாம் தரப்பினரின் தேர்ந்தெடுக்கப்பட்ட பட்டியலை வகையுடன் வடிகட்டவும் -EVENTORGANIZATION_FILTERATTENDEES_TYPE = மூன்றாம் தரப்பினரின் தேர்ந்தெடுக்கப்பட்ட பட்டியலை பங்கேற்பாளர்கள் உருவாக்கும் அட்டை/படிவத்தில் வாடிக்கையாளர் வகையுடன் வடிகட்டவும் +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = உங்கள் சாவடியின EventOrganizationEmailRegistrationPayment = நிகழ்வுக்கான பதிவு EventOrganizationMassEmailAttendees = பங்கேற்பாளர்களுக்கான தொடர்பு EventOrganizationMassEmailSpeakers = பேச்சாளர்களுக்கு தொடர்பு +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=பதிவு விலை PriceOfRegistrationHelp=பதிவு செய்ய அல்லது நிகழ்வில் பங்கேற்க கட்டணம் செலுத்த வேண்டும் PriceOfBooth=ஒரு சாவடியில் நிற்க சந்தா விலை PriceOfBoothHelp=ஒரு சாவடியில் நிற்க சந்தா விலை -EventOrganizationICSLink=நிகழ்வுகளுக்கான இணைப்பு ICS +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=மாநாடு அல்லது பூத் தகவல்கள் Attendees=பங்கேற்பாளர்கள் ListOfAttendeesOfEvent=நிகழ்ச்சித் திட்டத்தின் பங்கேற்பாளர்களின் பட்டியல் DownloadICSLink = ICS இணைப்பைப் பதிவிறக்கவும் -EVENTORGANIZATION_SECUREKEY = மாநாட்டிற்கான பொது பதிவு இணைப்பின் பாதுகாப்பான திறவுகோல் +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = ஒரு சாவடி இருப்பிடத்தைப் பற்றிய விலைப்பட்டியல் வரிசையில் பயன்படுத்தப்படும் சேவை -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = மாநாட்டில் பங்கேற்பவர் சந்தாவைப் பற்றிய விலைப்பட்டியல் வரிசையில் பயன்படுத்தப்படும் சேவை +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=வாக்குகளின் எண்ணிக்கை # # Status diff --git a/htdocs/langs/ta_IN/holiday.lang b/htdocs/langs/ta_IN/holiday.lang index ba15a10ea56..cb88a2d1041 100644 --- a/htdocs/langs/ta_IN/holiday.lang +++ b/htdocs/langs/ta_IN/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=அனுமதிக்க வேண்டிய விடு NobodyHasPermissionToValidateHolidays=விடுமுறை நாட்களை சரிபார்க்க யாருக்கும் அனுமதி இல்லை HolidayBalanceMonthlyUpdate=விடுமுறை இருப்பின் மாதாந்திர புதுப்பிப்பு XIsAUsualNonWorkingDay=%s என்பது பொதுவாக வேலை செய்யாத நாளாகும் +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=விடுப்பு கோரிக்கை %s வரைவாக இருக்க வேண்டும், ரத்து செய்யப்பட வேண்டும் அல்லது நீக்கப்பட மறுக்கப்பட வேண்டும் diff --git a/htdocs/langs/ta_IN/knowledgemanagement.lang b/htdocs/langs/ta_IN/knowledgemanagement.lang index cd3d0df73ce..414eebbea0f 100644 --- a/htdocs/langs/ta_IN/knowledgemanagement.lang +++ b/htdocs/langs/ta_IN/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = கட்டுரைக்கான கூடு GroupOfTicket=டிக்கெட்டுகளின் குழு YouCanLinkArticleToATicketCategory=நீங்கள் ஒரு கட்டுரையை டிக்கெட் குழுவுடன் இணைக்கலாம் (எனவே புதிய டிக்கெட்டுகளின் தகுதியின் போது கட்டுரை பரிந்துரைக்கப்படும்) SuggestedForTicketsInGroup=குழுவாக இருக்கும்போது டிக்கெட்டுகளுக்கு பரிந்துரைக்கப்படுகிறது + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/ta_IN/mrp.lang b/htdocs/langs/ta_IN/mrp.lang index ac46dada9d9..29c220b444b 100644 --- a/htdocs/langs/ta_IN/mrp.lang +++ b/htdocs/langs/ta_IN/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=%s மெட்டீரியல்களின் ConfirmCloneMo=%s உற்பத்தி ஆர்டரை நிச்சயமாக குளோன் செய்ய விரும்புகிறீர்களா? ManufacturingEfficiency=உற்பத்தி திறன் ConsumptionEfficiency=நுகர்வு திறன் -ValueOfMeansLoss=0.95 இன் மதிப்பு என்பது உற்பத்தியின் போது சராசரியாக 5%% இழப்பு +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=0.95 இன் மதிப்பு என்பது உற்பத்தி செய்யப்பட்ட பொருளின் சராசரி இழப்பு 5%% DeleteBillOfMaterials=பொருட்களின் மசோதாவை நீக்கவும் DeleteMo=உற்பத்தி ஆர்டரை நீக்கு diff --git a/htdocs/langs/ta_IN/other.lang b/htdocs/langs/ta_IN/other.lang index 8f84eeaee80..eb761084e38 100644 --- a/htdocs/langs/ta_IN/other.lang +++ b/htdocs/langs/ta_IN/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=MSGID %s என்ற மின்னஞ்சல TicketCreatedByEmailCollector=MSGID %s மின்னஞ்சலில் இருந்து மின்னஞ்சல் சேகரிப்பாளரால் உருவாக்கப்பட்ட டிக்கெட் OpeningHoursFormatDesc=திறக்கும் மற்றும் மூடும் நேரத்தைப் பிரிக்க a - ஐப் பயன்படுத்தவும்.
வெவ்வேறு வரம்புகளை உள்ளிட ஸ்பேஸைப் பயன்படுத்தவும்.
எடுத்துக்காட்டு: 8-12 14-18 SuffixSessionName=அமர்வு பெயருக்கான பின்னொட்டு +LoginWith=Login with %s ##### Export ##### ExportsArea=ஏற்றுமதி பகுதி diff --git a/htdocs/langs/ta_IN/products.lang b/htdocs/langs/ta_IN/products.lang index 1ed66a61dad..93368950736 100644 --- a/htdocs/langs/ta_IN/products.lang +++ b/htdocs/langs/ta_IN/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=இந்த தயாரிப்பைத் தயாரிக Rank=தரவரிசை SwitchOnSaleStatus=விற்பனை நிலையை இயக்கவும் SwitchOnPurchaseStatus=கொள்முதல் நிலையை இயக்கவும் +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/ta_IN/projects.lang b/htdocs/langs/ta_IN/projects.lang index 10eedc997a0..8072dd3b0a8 100644 --- a/htdocs/langs/ta_IN/projects.lang +++ b/htdocs/langs/ta_IN/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=மாதத்திற்கு உள்ளீடு InputDetail=உள்ளீடு விவரம் TimeAlreadyRecorded=இந்தப் பணி/நாள் மற்றும் பயனர் %s க்காக ஏற்கனவே பதிவுசெய்யப்பட்ட நேரம் இது ProjectsWithThisUserAsContact=இந்தப் பயனரைத் தொடர்பு கொண்ட திட்டப்பணிகள் +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=இந்தப் பயனருக்கு ஒதுக்கப்பட்ட பணிகள் ResourceNotAssignedToProject=திட்டத்திற்கு ஒதுக்கப்படவில்லை ResourceNotAssignedToTheTask=பணிக்கு ஒதுக்கப்படவில்லை @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=குறிப்பு: 100%% SelectLinesOfTimeSpentToInvoice=கட்டணம் செலுத்தப்படாத நேரத்தைத் தேர்ந்தெடுத்து, அவற்றை பில் செய்ய மொத்த நடவடிக்கை "இன்வாய்ஸை உருவாக்கு" ProjectTasksWithoutTimeSpent=நேரத்தை செலவழிக்காமல் திட்ட பணிகள் FormForNewLeadDesc=எங்களை தொடர்பு கொள்ள பின்வரும் படிவத்தை நிரப்பியதற்கு நன்றி. நீங்கள் எங்களுக்கு நேரடியாக %s க்கு மின்னஞ்சல் அனுப்பலாம். +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/ta_IN/receptions.lang b/htdocs/langs/ta_IN/receptions.lang index fa6db12cacf..93d4066699c 100644 --- a/htdocs/langs/ta_IN/receptions.lang +++ b/htdocs/langs/ta_IN/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=தயாரிப்பு வரவேற்பு அமைப்பு +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. வரவேற்பு Reception=வரவேற்பு Receptions=வரவேற்புகள் diff --git a/htdocs/langs/tg_TJ/admin.lang b/htdocs/langs/tg_TJ/admin.lang index 56aa688f8f1..5c70912b20e 100644 --- a/htdocs/langs/tg_TJ/admin.lang +++ b/htdocs/langs/tg_TJ/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Бунёд Version=Версия Publisher=Ношир @@ -343,7 +343,7 @@ StepNb=Қадами %s FindPackageFromWebSite=Бастаро пайдо кунед, ки хусусиятҳои ба шумо лозимро таъмин кунад (масалан дар вебсайти расмии %s). DownloadPackageFromWebSite=Бастаро зеркашӣ кунед (масалан аз вебсайти расмии %s). UnpackPackageInDolibarrRoot=Файлҳои басташударо дар феҳристи сервери Dolibarr кушоед/кушоед: %s -UnpackPackageInModulesRoot=Барои ҷойгир кардан/насб кардани модули беруна, файлҳои басташударо дар феҳристи серверҳои бахшида ба модулҳои беруна кушоед/кушоед:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Ҷойгиркунии модул ба охир расид. Аммо шумо бояд модулро дар замимаи худ тавассути рафтан ба модулҳои танзимоти саҳифа фаъол ва танзим кунед: %s . NotExistsDirect=Феҳристи решаи алтернативӣ ба директорияи мавҷуда муайян карда нашудааст.
InfDirAlt=Аз версияи 3, феҳристи алтернативии решаро муайян кардан мумкин аст. Ин ба шумо имкон медиҳад, ки дар феҳристи махсус, плагинҳо ва қолабҳои фармоишӣ захира кунед.
Танҳо дар решаи Dolibarr феҳрист эҷод кунед (масалан: фармоишӣ).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Насб кардан ё сохтани модули HighlightLinesOnMouseHover=Ҳангоми гузаштан аз болои муш хатҳои ҷадвалро равшан кунед HighlightLinesColor=Ҳангоми гузаштани муш ранги сатрро равшан кунед ('ffffff' -ро истифода баред, то равшан набошад) HighlightLinesChecked=Ҳангоме ки он тафтиш карда мешавад, ранги хатро қайд кунед ('ffffff' -ро истифода баред, то равшан накунед) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Ранги матни сарлавҳаи саҳифа LinkColor=Ранги пайвандҳо PressF5AfterChangingThis=CTRL+F5 -ро дар клавиатура пахш кунед ё кэши браузери худро пас аз тағир додани ин арзиш барои самаранокӣ тоза кунед @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/tg_TJ/bills.lang b/htdocs/langs/tg_TJ/bills.lang index 3b278b66565..ff02ada6a16 100644 --- a/htdocs/langs/tg_TJ/bills.lang +++ b/htdocs/langs/tg_TJ/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Ҳисоботи пардохт PaymentsAlreadyDone=Пардохтҳо аллакай анҷом дода шудаанд PaymentsBackAlreadyDone=Баргардонидани аллакай анҷом дода шудааст PaymentRule=Тартиби пардохт -PaymentMode=Навъи пардохт -DefaultPaymentMode=Навъи пешфарзии пардохт +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Ҳисоби бонкии пешфарз -PaymentTypeDC=Корти дебетӣ/кредитӣ -PaymentTypePP=PayPal -IdPaymentMode=Навъи пардохт (ID) -CodePaymentMode=Навъи пардохт (рамз) -LabelPaymentMode=Навъи пардохт (тамға) -PaymentModeShort=Навъи пардохт +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Мӯҳлати пардохт PaymentConditions=Шартҳои пардохт PaymentConditionsShort=Шартҳои пардохт @@ -280,6 +279,7 @@ SetMode=Навъи пардохтро таъин кунед SetRevenuStamp=Мӯҳри даромадро таъин кунед Billed=Ҳисоб карда мешавад RecurringInvoices=Ҳисобномаҳои такрорӣ +RecurringInvoice=Recurring invoice RepeatableInvoice=Шаблон фактура RepeatableInvoices=Шаблон фактураҳо Repeatable=Шаблон @@ -449,6 +449,8 @@ PaymentTypeTRA=Лоиҳаи бонк PaymentTypeShortTRA=Лоиҳа PaymentTypeFAC=Омил PaymentTypeShortFAC=Омил +PaymentTypeDC=Корти дебетӣ/кредитӣ +PaymentTypePP=PayPal BankDetails=Тафсилоти бонк BankCode=Рамзи бонк DeskCode=Рамзи филиал @@ -604,3 +606,4 @@ SituationTotalProgress=Пешравии куллӣ %d %% SearchUnpaidInvoicesWithDueDate=Ҳисобнома -фактураҳои пардохтнашударо бо мӯҳлати ниҳоӣ = %s ҷустуҷӯ кунед NoPaymentAvailable=No payment available for %s PaymentRegisteredAndInvoiceSetToPaid=Payment registered and invoice %s set to paid +SendEmailsRemindersOnInvoiceDueDate=Send reminder by email for unpaid invoices diff --git a/htdocs/langs/tg_TJ/blockedlog.lang b/htdocs/langs/tg_TJ/blockedlog.lang index 4100fcbedff..d09e2b12f52 100644 --- a/htdocs/langs/tg_TJ/blockedlog.lang +++ b/htdocs/langs/tg_TJ/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=Рӯйхати кишварҳое, ки и OnlyNonValid=Беэътибор TooManyRecordToScanRestrictFilters=Сабтҳои зиёде барои скан/таҳлил. Лутфан рӯйхатро бо филтрҳои маҳдудкунанда маҳдуд кунед. RestrictYearToExport=Маҳдуд кардани моҳ / сол барои содирот +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/tg_TJ/errors.lang b/htdocs/langs/tg_TJ/errors.lang index a9447cabe90..b861ec4b276 100644 --- a/htdocs/langs/tg_TJ/errors.lang +++ b/htdocs/langs/tg_TJ/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Ин тамос аллакай ҳам ErrorCashAccountAcceptsOnlyCashMoney=Ин суратҳисоби бонкӣ суратҳисоби нақдӣ мебошад, аз ин рӯ он танҳо намудҳои пули нақдро қабул мекунад. ErrorFromToAccountsMustDiffers=Манбаъ ва ҳадафҳои суратҳисобҳои бонкӣ бояд гуногун бошанд. ErrorBadThirdPartyName=Арзиши бад барои номи шахси сеюм +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=%s ҳатмӣ аст +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Синтаксиси бад барои коди муштарӣ ErrorBadBarCodeSyntax=Синтаксиси бад барои штрих -код. Шояд шумо як намуди штрих -кодро муқаррар кардаед ё барои рақамгузорӣ ниқоби штрих -кодро муайян кардаед, ки ба арзиши сканшуда мувофиқат намекунад. ErrorCustomerCodeRequired=Рамзи муштарӣ лозим аст @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Дар луғати шартҳои пар ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Параметри PHP -и шумо upload_max_filesize (%s) аз параметрҳои PHP post_max_size (%s) баландтар аст. Ин танзимоти пайдарпай нест. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/tg_TJ/eventorganization.lang b/htdocs/langs/tg_TJ/eventorganization.lang index 15421b1d529..cb9a53dada5 100644 --- a/htdocs/langs/tg_TJ/eventorganization.lang +++ b/htdocs/langs/tg_TJ/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Категория барои илов EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Категория барои ба шахсони сеюм илова кардан ба таври худкор ҳангоми пешниҳоди стенд офарида мешавад EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Шаблон почтаи электронӣ барои фиристодани пас аз гирифтани пешниҳоди конфронс. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Шаблон почтаи электронӣ барои фиристодани пас аз пешниҳоди стенд. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Шаблон почтаи оммавӣ барои иштирокчиён -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Шаблон почтаи оммавӣ ба баромадкунандагон -EVENTORGANIZATION_FILTERATTENDEES_CAT = Филтр кардани рӯйхати интихобкардаи тарафи сеюм дар корт/варақаи иштироккунандагон бо категория -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Филтр кардани рӯйхати интихобкардаи тарафи сеюм дар корт/форма барои иштироккунандагон бо намуди муштарӣ +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Алоқа ба иштирокчиён EventOrganizationMassEmailSpeakers = Муошират бо баромадкунандагон +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Нархи бақайдгирӣ PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Нархи обуна барои стенд PriceOfBoothHelp=Нархи обуна барои стенд -EventOrganizationICSLink=ICS -ро барои рӯйдодҳо пайваст кунед +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Маълумот дар бораи конфронс ё Бут Attendees=Иштирокчиён ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Истиноди ICS -ро зеркашӣ кунед -EVENTORGANIZATION_SECUREKEY = Калиди бехатарии истиноди бақайдгирии оммавӣ ба конфронс +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Хидмате, ки барои сатри ҳисобнома -фактура дар бораи макони дӯкон истифода мешавад -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Хидмате, ки дар сатри ҳисобнома -фактура дар бораи обунаи иштирокчии конфронс истифода мешавад +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Шумораи овозҳо # # Status diff --git a/htdocs/langs/tg_TJ/holiday.lang b/htdocs/langs/tg_TJ/holiday.lang index c134a9d4f2e..0b03fd4cea4 100644 --- a/htdocs/langs/tg_TJ/holiday.lang +++ b/htdocs/langs/tg_TJ/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Рухсатӣ барои тасдиқ NobodyHasPermissionToValidateHolidays=Ҳеҷ кас иҷозати таътилро надорад HolidayBalanceMonthlyUpdate=Навсозии ҳармоҳаи тавозуни истироҳат XIsAUsualNonWorkingDay=%s одатан рӯзи корӣ нест +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/tg_TJ/knowledgemanagement.lang b/htdocs/langs/tg_TJ/knowledgemanagement.lang index 601642f0ed9..6d40f2f2022 100644 --- a/htdocs/langs/tg_TJ/knowledgemanagement.lang +++ b/htdocs/langs/tg_TJ/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Майдони экзотикӣ барои мақо GroupOfTicket=Гурӯҳи чиптаҳо YouCanLinkArticleToATicketCategory=Шумо метавонед мақоларо ба гурӯҳи чиптаҳо пайваст кунед (аз ин рӯ мақола ҳангоми тахассуси чиптаҳои нав пешниҳод карда мешавад) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/tg_TJ/mrp.lang b/htdocs/langs/tg_TJ/mrp.lang index 43f7de1a39c..fa1ecdac6f0 100644 --- a/htdocs/langs/tg_TJ/mrp.lang +++ b/htdocs/langs/tg_TJ/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Шумо мутмаин ҳастед, ки вара ConfirmCloneMo=Шумо мутмаин ҳастед, ки фармони истеҳсолотро %s клон кардан мехоҳед? ManufacturingEfficiency=Самаранокии истеҳсолот ConsumptionEfficiency=Самаранокии истеъмол -ValueOfMeansLoss=Арзиши 0.95 ба ҳисоби миёна талафоти 5%% ҳангоми истеҳсолот аст +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Арзиши 0.95 маънои ба ҳисоби миёна 5%% талафи маҳсулоти истеҳсолшударо дорад DeleteBillOfMaterials=Билли маводро нест кунед DeleteMo=Фармоиши истеҳсолиро нест кунед diff --git a/htdocs/langs/tg_TJ/other.lang b/htdocs/langs/tg_TJ/other.lang index 05bca74085d..45f11e07cc9 100644 --- a/htdocs/langs/tg_TJ/other.lang +++ b/htdocs/langs/tg_TJ/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Лоиҳа аз ҷониби коллекторҳ TicketCreatedByEmailCollector=Чипта аз ҷониби коллекторҳои почтаи электронӣ аз почтаи MSGID %s сохта шудааст OpeningHoursFormatDesc=Барои ҷудо кардани соатҳои кушодан ва пӯшидани a - истифода баред.
Барои ворид кардани диапазонҳои гуногун фосила истифода баред.
Мисол: 8-12 14-18 SuffixSessionName=Суффикс барои номи сессия +LoginWith=Login with %s ##### Export ##### ExportsArea=Минтақаи содирот diff --git a/htdocs/langs/tg_TJ/products.lang b/htdocs/langs/tg_TJ/products.lang index 699e8d90e32..b93148d333a 100644 --- a/htdocs/langs/tg_TJ/products.lang +++ b/htdocs/langs/tg_TJ/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/tg_TJ/projects.lang b/htdocs/langs/tg_TJ/projects.lang index c74382a2d35..74c0be54a7b 100644 --- a/htdocs/langs/tg_TJ/projects.lang +++ b/htdocs/langs/tg_TJ/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Воридшавӣ дар як моҳ InputDetail=Тафсилоти вуруд TimeAlreadyRecorded=Ин вақти сарфшудаест, ки барои ин вазифа/рӯз сабт шудааст ва корбар %s ProjectsWithThisUserAsContact=Лоиҳаҳо бо ин корбар ҳамчун тамос +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Вазифаҳое, ки ба ин корбар таъин шудаанд ResourceNotAssignedToProject=Ба лоиҳа таъин нашудааст ResourceNotAssignedToTheTask=Ба вазифа таъин нашудааст @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Эзоҳ: лоиҳаҳои ма SelectLinesOfTimeSpentToInvoice=Хатҳои вақти сарфшударо ҳисоб накунед, пас амали оммавии "Ҳисобнома -фактура" -ро барои ҳисоб кардани онҳо интихоб кунед ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/tg_TJ/receptions.lang b/htdocs/langs/tg_TJ/receptions.lang index 64cd47c67be..a0b54b77a28 100644 --- a/htdocs/langs/tg_TJ/receptions.lang +++ b/htdocs/langs/tg_TJ/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Танзими қабули маҳсулот +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Реф. қабул Reception=Қабулгоҳ Receptions=Қабулгоҳҳо @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Қабулҳо ва квитансияҳо б ReceptionsToValidate=Қабулҳо барои тасдиқ StatusReceptionCanceled=Бекор карда шуд StatusReceptionDraft=Лоиҳа -StatusReceptionValidated=Санҷидашуда (маҳсулоте, ки фиристода мешавад ё аллакай фиристода шудааст) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Коркард StatusReceptionDraftShort=Лоиҳа StatusReceptionValidatedShort=Санҷида шуд @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Оморҳое, ки дар қабулгоҳҳо SendReceptionByEMail=Қабулро тавассути почтаи электронӣ фиристед SendReceptionRef=Пешниҳоди қабул %s ActionsOnReception=Чорабиниҳо дар қабул -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Хати қабул ProductQtyInReceptionAlreadySent=Миқдори маҳсулот аз фармоиши фурӯши кушода аллакай фиристода шудааст ProductQtyInSuppliersReceptionAlreadyRecevied=Миқдори маҳсулот аз фармоиши таҳвилгари кушод аллакай гирифта шудааст @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Шаблонҳои ҳуҷҷатҳо барои қабул NoMorePredefinedProductToDispatch=Дигар маҳсулоти пешакӣ таъиншуда фиристода намешавад ReceptionExist=Қабулгоҳ мавҷуд аст ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/th_TH/admin.lang b/htdocs/langs/th_TH/admin.lang index 6333b23ba53..e4311437a46 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=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=มูลนิธิ Version=เวอร์ชั่น Publisher=ผู้เผยแพร่ @@ -51,7 +51,7 @@ ClientSortingCharset=Client collation WarningModuleNotActive=โมดูล %s ต้องเปิดใช้งาน WarningOnlyPermissionOfActivatedModules=สิทธิ์เฉพาะที่เกี่ยวข้องกับการเปิดใช้งานโมดูลจะแสดงที่นี่ คุณสามารถเปิดใช้งานโมดูลอื่น ๆ ในหน้าแรก> Setup-> หน้าโมดูล DolibarrSetup=ติดตั้ง Dolibarr หรืออัพเกรด -InternalUser=ผู้ใช้งานภายใน +InternalUser=ผู้ใช้ภายใน ExternalUser=ผู้ใช้ภายนอก InternalUsers=ผู้ใช้ภายใน ExternalUsers=ผู้ใช้ภายนอก @@ -90,7 +90,7 @@ AllowToSelectProjectFromOtherCompany=On document of a third party, can choose a TimesheetPreventAfterFollowingMonths=Prevent recording time spent after the following number of months JavascriptDisabled=ปิดใช้งาน JavaScript UsePreviewTabs=ใช้แท็บตัวอย่าง -ShowPreview=แสดงตัวอย่าง +ShowPreview=โชว์พรีวิว ShowHideDetails=แสดง-ซ่อนรายละเอียด PreviewNotAvailable=ตัวอย่างที่ไม่สามารถใช้ได้ ThemeCurrentlyActive=รูปแบบที่ใช้งานอยู่ในปัจจุบัน @@ -131,15 +131,15 @@ OtherSetup=ตั้งค่าอื่น ๆ CurrentValueSeparatorDecimal=คั่นทศนิยม CurrentValueSeparatorThousand=คั่นหลักพัน Destination=ปลายทาง -IdModule=โมดูล ID -IdPermissions=ID สิทธิ์ +IdModule=ไอดีโมดูล +IdPermissions=ไอดีสิทธิ์ LanguageBrowserParameter=พารามิเตอร์ %s LocalisationDolibarrParameters=พารามิเตอร์การแปลเป็นภาษาท้องถิ่น ClientHour=เวลาไคลเอ็นต์ (ผู้ใช้) OSTZ=โซนเวลาของระบบปฏิบัติการเซิร์ฟเวอร์ -PHPTZ=โซนเวลา PHP เซิร์ฟเวอร์ +PHPTZ=โซนเวลาของเซิร์ฟเวอร์ PHP DaylingSavingTime=Daylight saving time -CurrentHour=PHP เวลา (เซิร์ฟเวอร์) +CurrentHour=เวลาของ PHP (เซิร์ฟเวอร์) CurrentSessionTimeOut=หมดเวลาการใช้งานปัจจุบัน YouCanEditPHPTZ=ในการตั้งค่าเขตเวลา PHP อื่น (ไม่จำเป็น) คุณสามารถลองเพิ่มไฟล์ .htaccess ด้วยบรรทัดเช่น "SetEnv TZ Europe/Paris" HoursOnThisPageAreOnServerTZ=คำเตือน ตรงกันข้ามกับหน้าจออื่นๆ ชั่วโมงในหน้านี้ไม่ได้อยู่ในเขตเวลาท้องถิ่นของคุณ แต่เป็นเขตเวลาของเซิร์ฟเวอร์ @@ -186,14 +186,14 @@ ImportPostgreSqlDesc=ที่จะนำเข้าแฟ้มสำรอ ImportMySqlCommand=% s% s %s
to %s -Updated=Updated -AchatTelechargement=Buy / Download +Updated=อัพเดต +AchatTelechargement=ซื้อ / ดาวน์โหลด GoModuleSetupArea=To deploy/install a new module, go to the Module setup area: %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. @@ -284,8 +284,8 @@ Content=Content ContentForLines=Content to display for each product or service (from variable __LINES__ of Content) NoticePeriod=ระยะเวลาการแจ้งให้ทราบล่วงหน้า NewByMonth=New by month -Emails=Emails -EMailsSetup=Emails setup +Emails=อีเมล +EMailsSetup=การตั้งค่าอีเมล EMailsDesc=This page allows you to set parameters or options for email sending. EmailSenderProfiles=Emails sender profiles EMailsSenderProfileDesc=You can keep this section empty. If you enter some emails here, they will be added to the list of possible senders into the combobox when your write a new email. @@ -313,8 +313,8 @@ MAIN_DISABLE_ALL_SMS=Disable all SMS sending (for test purposes or demos) MAIN_SMS_SENDMODE=วิธีการที่จะใช้ในการส่ง SMS MAIN_MAIL_SMS_FROM=Default sender phone number for SMS sending MAIN_MAIL_DEFAULT_FROMTYPE=Default sender email for manual sending (User email or Company email) -UserEmail=User email -CompanyEmail=Company Email +UserEmail=อีเมลผู้ใช้ +CompanyEmail=อีเมลบริษัท FeatureNotAvailableOnLinux=คุณลักษณะที่ไม่สามารถใช้ได้บน Unix เหมือนระบบ ทดสอบโปรแกรม sendmail ในประเทศของคุณ FixOnTransifex=Fix the translation on the online translation platform of project SubmitTranslation=If the translation for this language is not complete or you find errors, you can correct this by editing files in directory langs/%s and submit your change to www.transifex.com/dolibarr-association/dolibarr/ @@ -326,7 +326,7 @@ ModuleFamilyCrm=Customer Relationship Management (CRM) ModuleFamilySrm=Vendor Relationship Management (VRM) ModuleFamilyProducts=Product Management (PM) ModuleFamilyHr=Human Resource Management (HR) -ModuleFamilyProjects=โครงการ / ทำงานร่วมกัน +ModuleFamilyProjects=โปรเจค / งานทำงานร่วมกัน ModuleFamilyOther=อื่น ๆ ModuleFamilyTechnic=เครื่องมือโมดูลหลาย ModuleFamilyExperimental=โมดูลทดลอง @@ -343,7 +343,7 @@ StepNb=ขั้นตอนที่ %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -439,7 +439,7 @@ Unique=เป็นเอกลักษณ์ Boolean=Boolean (one checkbox) ExtrafieldPhone = โทรศัพท์ ExtrafieldPrice = ราคา -ExtrafieldMail = อีเมล์ +ExtrafieldMail = อีเมล ExtrafieldUrl = Url ExtrafieldSelect = เลือกรายการ ExtrafieldSelectList = เลือกจากตาราง @@ -470,9 +470,9 @@ LinkToTest=ลิงค์ที่สร้างขึ้นสำห KeepEmptyToUseDefault=ให้ว่างเพื่อใช้ค่าเริ่มต้น KeepThisEmptyInMostCases=In most cases, you can keep this field empy. DefaultLink=เริ่มต้นการเชื่อมโยง -SetAsDefault=Set as default +SetAsDefault=ตั้งเป็นค่าเริ่มต้น ValueOverwrittenByUserSetup=คำเตือนค่านี้อาจถูกเขียนทับโดยการตั้งค่าของผู้ใช้เฉพาะ (ผู้ใช้แต่ละคนสามารถตั้งค่า URL clicktodial ของตัวเอง) -ExternalModule=External module +ExternalModule=โมดูลภายนอก InstalledInto=Installed into directory %s BarcodeInitForThirdparties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=init บาร์โค้ดมวลหรือตั้งค่าสำหรับผลิตภัณฑ์หรือบริการ @@ -566,7 +566,7 @@ Module50Name=ผลิตภัณฑ์ Module50Desc=Management of Products Module51Name=จดหมายจำนวนมาก Module51Desc=กระดาษมวลจัดการทางไปรษณีย์ -Module52Name=หุ้น +Module52Name=สต็อก Module52Desc=Stock management Module53Name=บริการ Module53Desc=Management of Services @@ -578,7 +578,7 @@ Module56Name=Payment by credit transfer Module56Desc=Management of payment of suppliers by Credit Transfer orders. It includes generation of SEPA file for European countries. Module57Name=Payments by Direct Debit Module57Desc=Management of Direct Debit orders. It includes generation of SEPA file for European countries. -Module58Name=ClickToDial +Module58Name=คลิกเพื่อโทร Module58Desc=บูรณาการของระบบ ClickToDial (ดอกจัน, ... ) Module60Name=Stickers Module60Desc=Management of stickers @@ -588,7 +588,7 @@ Module75Name=ค่าใช้จ่ายและบันทึกการ Module75Desc=ค่าใช้จ่ายและการจัดการบันทึกการเดินทาง Module80Name=การจัดส่ง Module80Desc=Shipments and delivery note management -Module85Name=Banks & Cash +Module85Name=บัญชีและเงินสด Module85Desc=การบริหารจัดการของธนาคารหรือบัญชีเงินสด Module100Name=External Site Module100Desc=Add a link to an external website as a main menu icon. Website is shown in a frame under the top menu. @@ -604,7 +604,7 @@ Module250Name=การนำเข้าข้อมูล Module250Desc=Tool to import data into Dolibarr (with assistance) Module310Name=สมาชิก Module310Desc=มูลนิธิการจัดการสมาชิก -Module320Name=RSS Feed +Module320Name=ฟีด RSS Module320Desc=Add a RSS feed to Dolibarr pages Module330Name=Bookmarks & Shortcuts Module330Desc=Create shortcuts, always accessible, to the internal or external pages to which you frequently access @@ -670,9 +670,9 @@ Module10000Name=Websites Module10000Desc=Create websites (public) with a WYSIWYG editor. This is a webmaster or developer oriented CMS (it is better to know HTML and CSS language). Just setup your web server (Apache, Nginx, ...) to point to the dedicated Dolibarr directory to have it online on the internet with your own domain name. Module20000Name=Leave Request Management Module20000Desc=Define and track employee leave requests -Module39000Name=Product Lots +Module39000Name=ล็อตของผลิตภัณฑ์ Module39000Desc=Lots, serial numbers, eat-by/sell-by date management for products -Module40000Name=Multicurrency +Module40000Name=หลายสกุลเงิน Module40000Desc=Use alternative currencies in prices and documents Module50000Name=PayBox Module50000Desc=Offer customers a PayBox online payment page (credit/debit cards). This can be used to allow your customers to make ad-hoc payments or payments related to a specific Dolibarr object (invoice, order etc...) @@ -712,7 +712,7 @@ Permission25=ส่งข้อเสนอในเชิงพาณิชย Permission26=ข้อเสนอในเชิงพาณิชย์ปิด Permission27=ลบข้อเสนอในเชิงพาณิชย์ Permission28=ข้อเสนอในเชิงพาณิชย์เพื่อการส่งออก -Permission31=อ่านผลิตภัณฑ์ +Permission31=ดูผลิตภัณฑ์ Permission32=สร้าง / แก้ไขผลิตภัณฑ์ Permission34=ลบผลิตภัณฑ์ Permission36=ดู / จัดการผลิตภัณฑ์ที่ซ่อน @@ -729,7 +729,7 @@ Permission67=การแทรกแซงการส่งออก Permission68=Send interventions by email Permission69=Validate interventions Permission70=Invalidate interventions -Permission71=อ่านสมาชิก +Permission71=ดูสมาชิก Permission72=สร้าง / แก้ไขสมาชิก Permission74=ลบสมาชิก Permission75=ชนิดติดตั้งของการเป็นสมาชิก @@ -747,14 +747,14 @@ Permission91=อ่านภาษีทางสังคมหรือทา Permission92=สร้าง / แก้ไขภาษีทางสังคมหรือทางการคลังและภาษีมูลค่าเพิ่ม Permission93=ลบภาษีทางสังคมหรือทางการคลังและภาษีมูลค่าเพิ่ม Permission94=ส่งออกสังคมหรือภาษีการคลัง -Permission95=อ่านรายงาน +Permission95=ดูรายงาน Permission101=อ่านตอบรับ Permission102=สร้าง / แก้ไขตอบรับ Permission104=ตรวจสอบตอบรับ Permission105=Send sendings by email Permission106=ตอบรับการส่งออก Permission109=ลบตอบรับ -Permission111=อ่านบัญชีการเงิน +Permission111=ดูบัญชีการเงิน Permission112=สร้าง / แก้ไข / ลบและเปรียบเทียบการทำธุรกรรม Permission113=Setup financial accounts (create, manage categories of bank transactions) Permission114=Reconcile transactions @@ -768,9 +768,9 @@ Permission126=บุคคลที่สามส่งออก Permission130=Create/modify third parties payment information Permission141=Read all projects and tasks (also private projects for which I am not a contact) Permission142=Create/modify all projects and tasks (also private projects for which I am not a contact) -Permission144=ลบทุกโครงการและงาน (ยังเป็นโครงการส่วนตัวฉันไม่ได้ติดต่อเพื่อขอ) -Permission146=อ่านให้บริการ -Permission147=อ่านสถิติ +Permission144=ลบทุกโปรเจคและงาน (รวมถึงโปรเจคส่วนตัวที่ฉันไม่ได้รับการติดต่อ) +Permission146=ดูผู้ให้บริการ +Permission147=ดูสถิติ Permission151=Read direct debit payment orders Permission152=Create/modify a direct debit payment orders Permission153=Send/Transmit direct debit payment orders @@ -784,9 +784,9 @@ Permission167=Export contracts Permission171=Read trips and expenses (yours and your subordinates) Permission172=สร้าง / แก้ไขการเดินทางและค่าใช้จ่าย Permission173=ลบการเดินทางและค่าใช้จ่าย -Permission174=อ่านการเดินทางและค่าใช้จ่ายทั้งหมด +Permission174=ดูการเดินทางและค่าใช้จ่ายทั้งหมด Permission178=ส่งออกการเดินทางและค่าใช้จ่าย -Permission180=อ่านซัพพลายเออร์ +Permission180=ดูซัพพลายเออร์ Permission181=Read purchase orders Permission182=Create/modify purchase orders Permission183=Validate purchase orders @@ -819,8 +819,8 @@ Permission241=อ่านประเภท Permission242=สร้าง / แก้ไขประเภท Permission243=ลบประเภท Permission244=ดูเนื้อหาของหมวดหมู่ที่ซ่อนอยู่ -Permission251=อ่านผู้ใช้และกลุ่มอื่น ๆ -PermissionAdvanced251=อ่านผู้ใช้อื่น ๆ +Permission251=ดูผู้ใช้และกลุ่มอื่น ๆ +PermissionAdvanced251=ดูผู้ใช้อื่น ๆ Permission252=อ่านสิทธิ์ของผู้อื่น Permission253=Create/modify other users, groups and permissions PermissionAdvanced253=สร้าง / แก้ไขผู้ใช้ภายใน / ภายนอกและการอนุญาต @@ -830,29 +830,29 @@ Permission256=ลบหรือปิดการใช้งานผู้ใ Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is a sale representative).
Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.).
Not effective for projects (only rules on project permissions, visibility and assignment matters). Permission263=Extend access to all third parties WITHOUT their objects (not only third parties for which the user is a sale representative).
Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.).
Not effective for projects (only rules on project permissions, visibility and assignment matters). Permission271=อ่าน CA -Permission272=อ่านใบแจ้งหนี้ +Permission272=ดูใบแจ้งหนี้ Permission273=ใบแจ้งหนี้ฉบับ Permission281=อ่านรายชื่อผู้ติดต่อ Permission282=สร้าง / แก้ไขรายชื่อ Permission283=ลบรายชื่อ Permission286=รายชื่อที่ส่งออก -Permission291=อ่านภาษี +Permission291=ดูภาษี Permission292=กำหนดสิทธิในการเก็บภาษีศุลกากร Permission293=Modify customer's tariffs Permission300=Read barcodes Permission301=Create/modify barcodes Permission302=Delete barcodes -Permission311=อ่านบริการ +Permission311=ดูบริการ Permission312=กำหนดบริการ / สมัครสมาชิกที่จะทำสัญญา -Permission331=อ่านบุ๊คมาร์ค +Permission331=ดูบุ๊คมาร์ค Permission332=สร้าง / แก้ไขบุ๊คมาร์ค Permission333=ลบบุ๊คมาร์ค Permission341=อ่านสิทธิ์ของตัวเอง Permission342=สร้าง / แก้ไขข้อมูลของผู้ใช้ของตัวเอง Permission343=แก้ไขรหัสผ่านของตัวเอง Permission344=ปรับเปลี่ยนสิทธิ์ของตัวเอง -Permission351=อ่านกลุ่ม -Permission352=อ่านสิทธิ์กลุ่ม +Permission351=ดูกลุ่ม +Permission352=ดูสิทธิ์กลุ่ม Permission353=สร้าง / แก้ไขกลุ่ม Permission354=ลบหรือกลุ่มปิดการใช้งาน Permission358=ผู้ใช้ส่งออก @@ -866,12 +866,12 @@ Permission512=Create/modify salaries and payments Permission514=Delete salaries and payments Permission517=Read salaries and payments everybody Permission519=เงินเดือนส่งออก -Permission520=อ่านสินเชื่อ +Permission520=ดูสินเชื่อ Permission522=สร้าง / แก้ไขการให้กู้ยืมเงิน Permission524=ลบเงินให้สินเชื่อ Permission525=เครื่องคิดเลขสินเชื่อเข้าถึง Permission527=เงินให้กู้ยืมเพื่อการส่งออก -Permission531=อ่านบริการ +Permission531=ดูบริการ Permission532=สร้าง / แก้ไขบริการ Permission534=ลบบริการ Permission536=ดู / จัดการบริการซ่อน @@ -953,7 +953,7 @@ Permission2411=อ่านการกระทำ (เหตุการณ์ Permission2412=สร้าง / แก้ไขการกระทำ (เหตุการณ์หรืองาน) ของบุคคลอื่น Permission2413=ลบการกระทำ (เหตุการณ์หรืองาน) ของบุคคลอื่น Permission2414=Export actions/tasks of others -Permission2501=อ่าน / ดาวน์โหลดเอกสาร +Permission2501=ดู/ดาวน์โหลด เอกสาร Permission2502=ดาวน์โหลดเอกสาร Permission2503=ส่งเอกสารหรือลบ Permission2515=ไดเรกทอรีเอกสารการติดตั้ง @@ -1006,8 +1006,8 @@ Permission51001=Read assets Permission51002=Create/Update assets Permission51003=Delete assets Permission51005=Setup types of asset -Permission54001=พิมพ์ -Permission55001=อ่านโพลล์ +Permission54001=ปริ้นท์ +Permission55001=ดูโพลล์ Permission55002=สร้าง / แก้ไขโพลล์ Permission59001=อ่านอัตรากำไรขั้นต้นในเชิงพาณิชย์ Permission59002=กำหนดอัตรากำไรขั้นต้นในเชิงพาณิชย์ @@ -1027,7 +1027,7 @@ Permission941603=Validate receipts Permission941604=Send receipts by email Permission941605=Export receipts Permission941606=Delete receipts -DictionaryCompanyType=Third-party types +DictionaryCompanyType=ประเภทบุคคลที่สาม DictionaryCompanyJuridicalType=Third-party legal entities DictionaryProspectLevel=Prospect potential level for companies DictionaryProspectContactLevel=Prospect potential level for contacts @@ -1040,8 +1040,8 @@ DictionaryActions=Types of agenda events DictionarySocialContributions=Types of social or fiscal taxes DictionaryVAT=ภาษีมูลค่าเพิ่มราคาหรืออัตราภาษีการขาย DictionaryRevenueStamp=Amount of tax stamps -DictionaryPaymentConditions=Payment Terms -DictionaryPaymentModes=Payment Modes +DictionaryPaymentConditions=เงื่อนไขการชำระเงิน +DictionaryPaymentModes=วิธีชำระเงิน DictionaryTypeContact=ติดต่อเรา / ที่อยู่ประเภท DictionaryTypeOfContainer=Website - Type of website pages/containers DictionaryEcotaxe=Ecotax (WEEE) @@ -1049,7 +1049,7 @@ DictionaryPaperFormat=รูปแบบกระดาษ DictionaryFormatCards=Card formats DictionaryFees=Expense report - Types of expense report lines DictionarySendingMethods=วิธีการจัดส่งสินค้า -DictionaryStaff=Number of Employees +DictionaryStaff=จำนวนพนักงาน DictionaryAvailability=ความล่าช้าในการจัดส่งสินค้า DictionaryOrderMethods=Order methods DictionarySource=แหล่งที่มาของข้อเสนอ / การสั่งซื้อ @@ -1068,9 +1068,9 @@ DictionaryExpenseTaxCat=Expense report - Transportation categories DictionaryExpenseTaxRange=Expense report - Range by transportation category DictionaryTransportMode=Intracomm report - Transport mode DictionaryBatchStatus=Product lot/serial Quality Control status -TypeOfUnit=Type of unit +TypeOfUnit=ประเภทของหน่วย SetupSaved=การตั้งค่าที่บันทึกไว้ -SetupNotSaved=Setup not saved +SetupNotSaved=ยังไม่ได้บันทึกการตั้งค่า BackToModuleList=Back to Module list BackToDictionaryList=Back to Dictionaries list TypeOfRevenueStamp=Type of tax stamp @@ -1081,17 +1081,17 @@ VATIsUsedExampleFR=In France, it means companies or organizations having a real VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. ##### Local Taxes ##### TypeOfSaleTaxes=Type of sales tax -LTRate=ประเมิน +LTRate=เรท LocalTax1IsNotUsed=อย่าใช้ภาษีที่สอง LocalTax1IsUsedDesc=Use a second type of tax (other than first one) LocalTax1IsNotUsedDesc=Do not use other type of tax (other than first one) -LocalTax1Management=ประเภทที่สองของภาษี +LocalTax1Management=ภาษีประเภทที่สอง LocalTax1IsUsedExample= LocalTax1IsNotUsedExample= -LocalTax2IsNotUsed=อย่าใช้ภาษีที่สาม +LocalTax2IsNotUsed=ไม่ใช้ภาษีที่สาม LocalTax2IsUsedDesc=Use a third type of tax (other than first one) LocalTax2IsNotUsedDesc=Do not use other type of tax (other than first one) -LocalTax2Management=ชนิดที่สามของภาษี +LocalTax2Management=ภาษีประเภทที่สาม LocalTax2IsUsedExample= LocalTax2IsNotUsedExample= LocalTax1ManagementES=การบริหารจัดการเรื่อง @@ -1147,21 +1147,21 @@ Tables=ตาราง TableName=ชื่อตาราง NbOfRecord=No. of records Host=เซิร์ฟเวอร์ -DriverType=ชนิดตัวขับ +DriverType=ประเภทไดร์เวอร์ SummarySystem=สรุปข้อมูลระบบ SummaryConst=รายชื่อของพารามิเตอร์การตั้งค่า Dolibarr MenuCompanySetup=Company/Organization DefaultMenuManager= ผู้จัดการเมนูมาตรฐาน DefaultMenuSmartphoneManager=ผู้จัดการเมนูมาร์ทโฟน -Skin=ธีมผิว -DefaultSkin=ธีมเริ่มต้นผิว +Skin=ธีม +DefaultSkin=ธีมเริ่มต้น MaxSizeList=ความยาวสูงสุดสำหรับรายชื่อ DefaultMaxSizeList=Default max length for lists DefaultMaxSizeShortList=Default max length for short lists (i.e. in customer card) MessageOfDay=ข้อความของวัน MessageLogin=ข้อความหน้าเข้าสู่ระบบ -LoginPage=Login page -BackgroundImageLogin=Background image +LoginPage=หน้าล็อคอิน +BackgroundImageLogin=ภาพพื้นหลัง PermanentLeftSearchForm=แบบฟอร์มการค้นหาถาวรบนเมนูด้านซ้าย DefaultLanguage=Default language EnableMultilangInterface=Enable multilanguage support for customer or vendor relationships @@ -1170,8 +1170,8 @@ CompanyInfo=Company/Organization CompanyIds=Company/Organization identities CompanyName=ชื่อ CompanyAddress=ที่อยู่ -CompanyZip=ไปรษณีย์ -CompanyTown=ตัวเมือง +CompanyZip=รหัสไปรษณีย์ +CompanyTown=เมือง CompanyCountry=ประเทศ CompanyCurrency=สกุลเงินหลัก CompanyObject=เป้าหมายของ บริษัท @@ -1180,7 +1180,7 @@ Logo=เครื่องหมาย LogoDesc=Main logo of company. Will be used into generated documents (PDF, ...) LogoSquarred=Logo (squarred) LogoSquarredDesc=Must be a squarred icon (width = height). This logo will be used as the favorite icon or other need like for the top menu bar (if not disabled into display setup). -DoNotSuggestPaymentMode=ไม่แนะนำ +DoNotSuggestPaymentMode=อย่าแนะนำ NoActiveBankAccountDefined=ไม่มีบัญชีธนาคารที่ใช้งานที่กำหนดไว้ OwnerOfBankAccount=เจ้าของบัญชีธนาคารของ% s BankModuleNotActive=โมดูลบัญชีธนาคารไม่ได้เปิดใช้ @@ -1315,7 +1315,7 @@ ExtraFieldsCustomerInvoices=คุณลักษณะเสริม (ใบ ExtraFieldsCustomerInvoicesRec=Complementary attributes (templates invoices) ExtraFieldsSupplierOrders=คุณลักษณะเสริม (คำสั่งซื้อ) ExtraFieldsSupplierInvoices=คุณลักษณะเสริม (ใบแจ้งหนี้) -ExtraFieldsProject=คุณลักษณะเสริม (โครงการ) +ExtraFieldsProject=คุณลักษณะเสริม (โปรเจค) ExtraFieldsProjectTask=คุณลักษณะเสริม (งาน) ExtraFieldsSalaries=Complementary attributes (salaries) ExtraFieldHasWrongValue=s Attribute% มีค่าที่ไม่ถูกต้อง @@ -1867,8 +1867,8 @@ YouCanDownloadFreeDatFileTo=คุณสามารถดาวน์โห YouCanDownloadAdvancedDatFileTo=นอกจากนี้คุณยังสามารถดาวน์โหลดรุ่นที่สมบูรณ์มากขึ้นมีการปรับปรุงของ Maxmind GeoIP ประเทศที่ไฟล์% s TestGeoIPResult=ทดสอบการแปลง IP -> ประเทศ ##### Projects ##### -ProjectsNumberingModules=จำนวนโมดูลโครงการ -ProjectsSetup=โครงการติดตั้งโมดูล +ProjectsNumberingModules=โมดูลการรันเลขโปรเจค +ProjectsSetup=การตั้งค่าโมดูลโปรเจค ProjectsModelModule=โครงการรายงานรูปแบบเอกสาร TasksNumberingModules=งานจำนวนโมดูล TaskModelModule=รายงานงานรูปแบบเอกสาร @@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=เน้นเส้นตารางเมื่อเลื่อนเมาส์ผ่านไป HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -1967,7 +1969,7 @@ MailToSendReception=Receptions MailToThirdparty=บุคคลที่สาม MailToMember=สมาชิก MailToUser=ผู้ใช้ -MailToProject=โครงการ +MailToProject=โปรเจค MailToTicket=Tickets ByDefaultInList=Show by default on list view YouUseLastStableVersion=You use the latest stable version @@ -2077,11 +2079,11 @@ WithoutDolTrackingID=Message from a conversation initiated by a first email NOT WithDolTrackingIDInMsgId=Message sent from Dolibarr WithoutDolTrackingIDInMsgId=Message NOT sent from Dolibarr CreateCandidature=Create job application -FormatZip=ไปรษณีย์ +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. -OpeningHours=Opening hours +OpeningHours=เวลาเปิดทำการ OpeningHoursDesc=Enter here the regular opening hours of your company. ResourceSetup=Configuration of Resource module UseSearchToSelectResource=Use a search form to choose a resource (rather than a drop-down list). @@ -2121,8 +2123,8 @@ EXPORTS_SHARE_MODELS=Export models are share with everybody ExportSetup=Setup of module Export ImportSetup=Setup of module Import InstanceUniqueID=Unique ID of the instance -SmallerThan=Smaller than -LargerThan=Larger than +SmallerThan=เล็กกว่า +LargerThan=ใหญ่กว่า 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. @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/th_TH/bills.lang b/htdocs/langs/th_TH/bills.lang index 5f63261cb30..bb9e2954087 100644 --- a/htdocs/langs/th_TH/bills.lang +++ b/htdocs/langs/th_TH/bills.lang @@ -81,18 +81,17 @@ PaymentsReports=รายงานการชำระเงิน PaymentsAlreadyDone=การชำระเงินที่ทำมาแล้ว PaymentsBackAlreadyDone=Refunds already done PaymentRule=กฎการชำระเงิน -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term -PaymentConditions=Payment Terms -PaymentConditionsShort=Payment Terms +PaymentConditions=เงื่อนไขการชำระเงิน +PaymentConditionsShort=เงื่อนไขการชำระเงิน PaymentAmount=จำนวนเงินที่ชำระ PaymentHigherThanReminderToPay=การชำระเงินที่สูงกว่าการแจ้งเตือนที่จะต้องจ่าย HelpPaymentHigherThanReminderToPay=Attention, the payment amount of one or more bills is higher than the outstanding amount to pay.
Edit your entry, otherwise confirm and consider creating a credit note for the excess received for each overpaid invoice. @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=การเรียกเก็บเงิน RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=แม่แบบใบแจ้งหนี้ RepeatableInvoices=แม่แบบใบแจ้งหนี้ Repeatable=แบบ @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=ร่าง PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=ธนาคารรายละเอียด BankCode=รหัสธนาคาร DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/th_TH/blockedlog.lang b/htdocs/langs/th_TH/blockedlog.lang index 1b2467dcb5e..1a4764a6779 100644 --- a/htdocs/langs/th_TH/blockedlog.lang +++ b/htdocs/langs/th_TH/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/th_TH/errors.lang b/htdocs/langs/th_TH/errors.lang index 20500c3ae4b..43200416193 100644 --- a/htdocs/langs/th_TH/errors.lang +++ b/htdocs/langs/th_TH/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=ติดต่อนี้ถูก ErrorCashAccountAcceptsOnlyCashMoney=บัญชีธนาคารนี้เป็นบัญ​​ชีเงินสดดังนั้นจึงยอมรับการชำระเงินของเงินสดชนิดเดียว ErrorFromToAccountsMustDiffers=แหล่งที่มาและเป้าหมายบัญชีธนาคารจะต้องแตกต่าง ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=% s มีผลบังคับใช้ +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=ไวยากรณ์ร้ายสำหรับรหัสลูกค้า ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=รหัสลูกค้าจำเป็นต้องใช้ @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/th_TH/eventorganization.lang b/htdocs/langs/th_TH/eventorganization.lang index 1c38580407c..61a2a694908 100644 --- a/htdocs/langs/th_TH/eventorganization.lang +++ b/htdocs/langs/th_TH/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/th_TH/holiday.lang b/htdocs/langs/th_TH/holiday.lang index 781cf611d5b..17f16cda631 100644 --- a/htdocs/langs/th_TH/holiday.lang +++ b/htdocs/langs/th_TH/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/th_TH/knowledgemanagement.lang b/htdocs/langs/th_TH/knowledgemanagement.lang index f105d28e447..4ec4117603d 100644 --- a/htdocs/langs/th_TH/knowledgemanagement.lang +++ b/htdocs/langs/th_TH/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/th_TH/mrp.lang b/htdocs/langs/th_TH/mrp.lang index c0f9df7d49d..e9fede8795d 100644 --- a/htdocs/langs/th_TH/mrp.lang +++ b/htdocs/langs/th_TH/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/th_TH/other.lang b/htdocs/langs/th_TH/other.lang index 78e16b1da28..b903a2571ac 100644 --- a/htdocs/langs/th_TH/other.lang +++ b/htdocs/langs/th_TH/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=พื้นที่การส่งออก diff --git a/htdocs/langs/th_TH/products.lang b/htdocs/langs/th_TH/products.lang index d58a0c9f5fa..186300a6afe 100644 --- a/htdocs/langs/th_TH/products.lang +++ b/htdocs/langs/th_TH/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/th_TH/projects.lang b/htdocs/langs/th_TH/projects.lang index 0c3b122f3a8..8c7db9c4d61 100644 --- a/htdocs/langs/th_TH/projects.lang +++ b/htdocs/langs/th_TH/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=โครงการที่มีผู้ใช้เป็นการติดต่อนี้ +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks ได้รับมอบหมายให้ผู้ใช้รายนี้ ResourceNotAssignedToProject=ไม่ได้กำหนดโครงการ ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=วันที่สิ้นสุดไม่สามารถก่อนวันเริ่มต้น diff --git a/htdocs/langs/th_TH/receptions.lang b/htdocs/langs/th_TH/receptions.lang index a53da314fd7..1c13c8ebf5b 100644 --- a/htdocs/langs/th_TH/receptions.lang +++ b/htdocs/langs/th_TH/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=ยกเลิก StatusReceptionDraft=ร่าง -StatusReceptionValidated=การตรวจสอบ (สินค้าจะจัดส่งหรือจัดส่งแล้ว) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=การประมวลผล StatusReceptionDraftShort=ร่าง StatusReceptionValidatedShort=ผ่านการตรวจสอบ @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/tr_TR/admin.lang b/htdocs/langs/tr_TR/admin.lang index 7ff32df0afa..890b8e15648 100644 --- a/htdocs/langs/tr_TR/admin.lang +++ b/htdocs/langs/tr_TR/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Dernek Version=Sürüm Publisher=Yayıncı @@ -343,7 +343,7 @@ StepNb=Adım %s FindPackageFromWebSite=İhtiyacınız olan özellikleri size sunan bir paket bulun (örneğin resmi web sitesinde: %s). DownloadPackageFromWebSite=Paketi indir (örneğin resmi web sitesinden %s). UnpackPackageInDolibarrRoot=Paketlenmiş dosyaları Dolibarr sunucu dizininizde açın/çıkarın: %s -UnpackPackageInModulesRoot=Harici bir modülü almak/kurmak için sıkıştırılmış dosyaları harici modüller için ayrılmış olan sunucu dizininde açın/çıkarın:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Modül dağıtımı bitti. Bununla birlikte, %s modül ayar sayfasına giderek modülü uygulamanızda etkinleştirmeli ve kurmalısınız. NotExistsDirect=Alternatif kök dizin varolan bir dizine tanımlanmamış.
InfDirAlt=Sürüm 3 ten beri bir alternatif kök dizin tanımlanabiliyor. Bu sizin ayrılmış bir dizine, eklentiler ve özel şablonlar depolamanızı sağlar.
Yalnızca Dolibarr kökünde bir dizin oluşturun (örn. özel).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Uygulamadan harici bir modül kurmak veya oluşturmak, HighlightLinesOnMouseHover=Tablo satırlarını fare üzerine geldiğinde vurgula HighlightLinesColor=Fare üzerinden geçerken satırı vurgulama rengi (vurgulama rengi istemiyorsanız 'ffffff' kullanın) HighlightLinesChecked=Bir satır işaretlendiğinde bu satırı vurgulama rengi (vurgulama rengi istemiyorsanız 'ffffff' kullanın) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Sayfa başlığının metin rengi LinkColor=Bağlantıların rengi PressF5AfterChangingThis=Bu değeri değiştirdikten sonra geçerli olabilmesi için klavyede CTRL+F5 tuşlarına basın veya tarayıcınızın önbelleğini temizleyin @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/tr_TR/bills.lang b/htdocs/langs/tr_TR/bills.lang index 3ae226491c7..bcd6e03332f 100644 --- a/htdocs/langs/tr_TR/bills.lang +++ b/htdocs/langs/tr_TR/bills.lang @@ -81,13 +81,14 @@ PaymentsReports=Ödeme raporları PaymentsAlreadyDone=Halihazırda yapılmış ödemeler PaymentsBackAlreadyDone=Geri ödemeler zaten yapıldı PaymentRule=Ödeme kuralı -PaymentMode=Ödeme Türü -DefaultPaymentMode=Varsayılan Ödeme Türü +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Varsayılan Banka Hesabı -IdPaymentMode=Ödeme Türü (id) -CodePaymentMode=Ödeme Türü (kod) -LabelPaymentMode=Ödeme Türü (etiket) -PaymentModeShort=Ödeme Türü +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Ödeme Şartı PaymentConditions=Ödeme koşulları PaymentConditionsShort=Ödeme Koşulları diff --git a/htdocs/langs/tr_TR/blockedlog.lang b/htdocs/langs/tr_TR/blockedlog.lang index 14db1cc265b..4d2af1b6bf8 100644 --- a/htdocs/langs/tr_TR/blockedlog.lang +++ b/htdocs/langs/tr_TR/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Taramak/analiz etmek için çok fazla kayıt var. Lütfen listeyi daha fazla kısıtlayıcı filtre ile kısaltın. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/tr_TR/errors.lang b/htdocs/langs/tr_TR/errors.lang index bab7e754151..37622276db8 100644 --- a/htdocs/langs/tr_TR/errors.lang +++ b/htdocs/langs/tr_TR/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Bu kişi zaten bu tür için kişi ol ErrorCashAccountAcceptsOnlyCashMoney=Bu banka hesabı kasa hesabı lduğundan yalnızca nakit ödemeleri kabul eder. ErrorFromToAccountsMustDiffers=Kaynak ve hedef banka hesapları farklı olmalıdır. ErrorBadThirdPartyName=Üçüncü parti adı için hatalı değer +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=Bu %s zorunludur +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Hatalı müşteri kodu ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Müşteri kodu gereklidir @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=PHP'nizdeki upload_max_filesize (%s) parametresi, post_max_size (%s) PHP parametresinden daha yüksek. Bu tutarlı bir kurulum değil. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/tr_TR/eventorganization.lang b/htdocs/langs/tr_TR/eventorganization.lang index 71271713dca..5fcb2b8cf27 100644 --- a/htdocs/langs/tr_TR/eventorganization.lang +++ b/htdocs/langs/tr_TR/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/tr_TR/holiday.lang b/htdocs/langs/tr_TR/holiday.lang index bec2346306f..45bd42c217c 100644 --- a/htdocs/langs/tr_TR/holiday.lang +++ b/htdocs/langs/tr_TR/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Onaylanacak izinler NobodyHasPermissionToValidateHolidays=Hiçkimsenin tatilleri onaylamaya izini yoktur. HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/tr_TR/knowledgemanagement.lang b/htdocs/langs/tr_TR/knowledgemanagement.lang index 2783bbcd6dd..57c9563dad8 100644 --- a/htdocs/langs/tr_TR/knowledgemanagement.lang +++ b/htdocs/langs/tr_TR/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/tr_TR/mrp.lang b/htdocs/langs/tr_TR/mrp.lang index 62b9345e372..88cebca662f 100644 --- a/htdocs/langs/tr_TR/mrp.lang +++ b/htdocs/langs/tr_TR/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=%s Üretim Emrini klonlamak istediğinizden emin misiniz? ManufacturingEfficiency=Üretim verimliliği ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Üretim Emri Sil diff --git a/htdocs/langs/tr_TR/other.lang b/htdocs/langs/tr_TR/other.lang index 492da87d74e..5bb258a0921 100644 --- a/htdocs/langs/tr_TR/other.lang +++ b/htdocs/langs/tr_TR/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Dışa aktarma alanı diff --git a/htdocs/langs/tr_TR/products.lang b/htdocs/langs/tr_TR/products.lang index d0cbe351c80..f64d49a2c5e 100644 --- a/htdocs/langs/tr_TR/products.lang +++ b/htdocs/langs/tr_TR/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/tr_TR/projects.lang b/htdocs/langs/tr_TR/projects.lang index a16e26f8bb1..c1528c0ede8 100644 --- a/htdocs/langs/tr_TR/projects.lang +++ b/htdocs/langs/tr_TR/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Giriş detayı TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=İlgili olarak bu kullanıcı olan projeler +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Bu kullanıcıya atanmış görevler ResourceNotAssignedToProject=Projeye atanmamış ResourceNotAssignedToTheTask=Bu göreve atanmamış @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=Bitiş tarihi başlama tarihinden önce olamaz diff --git a/htdocs/langs/tr_TR/receptions.lang b/htdocs/langs/tr_TR/receptions.lang index 760527c8515..8ffadaeb474 100644 --- a/htdocs/langs/tr_TR/receptions.lang +++ b/htdocs/langs/tr_TR/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Kabul Receptions=Resepsiyonlar @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=İptal edildi StatusReceptionDraft=Ödeme emri -StatusReceptionValidated=Doğrulanmış (sevkedilecek ürünler veya halihazırda sevkedilmişler) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=İşlenmiş StatusReceptionDraftShort=Ödeme emri StatusReceptionValidatedShort=Doğrulandı @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/uk_UA/admin.lang b/htdocs/langs/uk_UA/admin.lang index d4c6acdca46..23782246b85 100644 --- a/htdocs/langs/uk_UA/admin.lang +++ b/htdocs/langs/uk_UA/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Установа Version=Версія Publisher=Видавець @@ -343,7 +343,7 @@ StepNb=Крок %s FindPackageFromWebSite=Знайдіть пакет, який надає необхідні функції (наприклад, на офіційному веб-сайті %s). DownloadPackageFromWebSite=Завантажте пакет (наприклад, з офіційного веб-сайту %s). UnpackPackageInDolibarrRoot=Розпакуйте/розархівуйте упаковані файли у каталог на сервері Dolibarr: %s -UnpackPackageInModulesRoot=Щоб розгорнути/встановити зовнішній модуль, розпакуйте / розархівуйте його файли в каталог сервера, призначений для зовнішніх модулів:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Розгортання модуля закінчено. Однак ви повинні ввімкнути та налаштувати модуль у вашому додатку, перейшовши на сторінку налаштування модулів: %s . NotExistsDirect=Альтернативний кореневий каталог не визначений для існуючого каталогу.
InfDirAlt=Починаючи з версії 3, можна визначити альтернативну кореневу директорію. Це дозволяє зберігати у спеціалізованому каталозі, плагіни та спеціальні шаблони.
Просто створіть каталог у корені Dolibarr (наприклад: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/uk_UA/bills.lang b/htdocs/langs/uk_UA/bills.lang index 7c8c5a28c5c..613b8129e81 100644 --- a/htdocs/langs/uk_UA/bills.lang +++ b/htdocs/langs/uk_UA/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Звіти про платежі PaymentsAlreadyDone=Платежі вже зроблені PaymentsBackAlreadyDone=Refunds already done PaymentRule=Правила оплати -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Виставлений RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Шаблон рахунку RepeatableInvoices=Шаблони рахунків Repeatable=Шаблон @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Проект PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Банківські реквізити BankCode=Код банку DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/uk_UA/blockedlog.lang b/htdocs/langs/uk_UA/blockedlog.lang index 0bba5605d0f..12f28737d49 100644 --- a/htdocs/langs/uk_UA/blockedlog.lang +++ b/htdocs/langs/uk_UA/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/uk_UA/errors.lang b/htdocs/langs/uk_UA/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/uk_UA/errors.lang +++ b/htdocs/langs/uk_UA/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/uk_UA/eventorganization.lang b/htdocs/langs/uk_UA/eventorganization.lang index 8fa4b94bf82..0d43ff770a7 100644 --- a/htdocs/langs/uk_UA/eventorganization.lang +++ b/htdocs/langs/uk_UA/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/uk_UA/holiday.lang b/htdocs/langs/uk_UA/holiday.lang index a11de61f74d..33b266ce272 100644 --- a/htdocs/langs/uk_UA/holiday.lang +++ b/htdocs/langs/uk_UA/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/uk_UA/knowledgemanagement.lang b/htdocs/langs/uk_UA/knowledgemanagement.lang index 6ccdee13b2f..e838c2d1c83 100644 --- a/htdocs/langs/uk_UA/knowledgemanagement.lang +++ b/htdocs/langs/uk_UA/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/uk_UA/mrp.lang b/htdocs/langs/uk_UA/mrp.lang index 3f1aac53340..74bed0d9186 100644 --- a/htdocs/langs/uk_UA/mrp.lang +++ b/htdocs/langs/uk_UA/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/uk_UA/other.lang b/htdocs/langs/uk_UA/other.lang index d42e491c187..8353ab79931 100644 --- a/htdocs/langs/uk_UA/other.lang +++ b/htdocs/langs/uk_UA/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/uk_UA/products.lang b/htdocs/langs/uk_UA/products.lang index 0516f45815b..500157307e1 100644 --- a/htdocs/langs/uk_UA/products.lang +++ b/htdocs/langs/uk_UA/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/uk_UA/projects.lang b/htdocs/langs/uk_UA/projects.lang index 34853ec418f..9965dbf4c88 100644 --- a/htdocs/langs/uk_UA/projects.lang +++ b/htdocs/langs/uk_UA/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/uk_UA/receptions.lang b/htdocs/langs/uk_UA/receptions.lang index 5f90a854e5f..40d87c6e986 100644 --- a/htdocs/langs/uk_UA/receptions.lang +++ b/htdocs/langs/uk_UA/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Canceled StatusReceptionDraft=Проект -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Оброблений StatusReceptionDraftShort=Проект StatusReceptionValidatedShort=Підтверджений @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/ur_PK/admin.lang b/htdocs/langs/ur_PK/admin.lang index c74265952bb..5f76e6cef5b 100644 --- a/htdocs/langs/ur_PK/admin.lang +++ b/htdocs/langs/ur_PK/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=پی ڈی ایف میں بولڈ حوالہ اور مدت -BoldLabelOnPDF=پی ڈی ایف میں بولڈ لیبل +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=فاؤنڈیشن Version=ورژن Publisher=پبلشر @@ -343,7 +343,7 @@ StepNb=مرحلہ %s FindPackageFromWebSite=ایک ایسا پیکیج تلاش کریں جو آپ کو مطلوبہ خصوصیات فراہم کرتا ہو (مثال کے طور پر سرکاری ویب سائٹ %s پر)۔ DownloadPackageFromWebSite=پیکیج ڈاؤن لوڈ کریں (مثال کے طور پر سرکاری ویب سائٹ %s سے)۔ UnpackPackageInDolibarrRoot=پیک شدہ فائلوں کو اپنی ڈولیبر سرور ڈائرکٹری میں کھولیں/ان زپ کریں: %s -UnpackPackageInModulesRoot=بیرونی ماڈیول کو تعینات کرنے/انسٹال کرنے کے لیے، پیک شدہ فائلوں کو بیرونی ماڈیولز کے لیے وقف سرور ڈائرکٹری میں کھولیں/ان زپ کریں:
%s a09a4b78010 +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=ماڈیول کی تعیناتی ختم ہو گئی ہے۔ تاہم آپ کو صفحہ سیٹ اپ ماڈیولز: %s پر جا کر اپنی درخواست میں ماڈیول کو فعال اور سیٹ اپ کرنا ہوگا۔ NotExistsDirect=متبادل روٹ ڈائرکٹری موجودہ ڈائرکٹری سے متعین نہیں ہے۔
InfDirAlt=ورژن 3 کے بعد سے، متبادل روٹ ڈائریکٹری کی وضاحت ممکن ہے۔ یہ آپ کو ایک وقف شدہ ڈائرکٹری، پلگ ان اور حسب ضرورت ٹیمپلیٹس میں ذخیرہ کرنے کی اجازت دیتا ہے۔
بس Dolibarr کے روٹ پر ایک ڈائرکٹری بنائیں (جیسے: کسٹم)۔
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=ایپلیکیشن سے کسی بیرونی ماڈیو HighlightLinesOnMouseHover=جب ماؤس کی حرکت گزر جاتی ہے تو ٹیبل لائنوں کو نمایاں کریں۔ HighlightLinesColor=ماؤس کے اوپر سے گزرنے پر لائن کا رنگ نمایاں کریں (کسی ہائی لائٹ کے لیے 'ffffff' استعمال کریں) HighlightLinesChecked=جب لائن کو چیک کیا جائے تو اس کے رنگ کو ہائی لائٹ کریں (کسی ہائی لائٹ کے لیے 'ffffff' استعمال کریں) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=صفحہ کے عنوان کا متن کا رنگ LinkColor=لنکس کا رنگ PressF5AfterChangingThis=کی بورڈ پر CTRL+F5 دبائیں یا اس قدر کو تبدیل کرنے کے بعد اپنا براؤزر کیش صاف کریں تاکہ اسے موثر بنایا جاسکے @@ -2216,3 +2218,5 @@ NativeModules=مقامی ماڈیولز NoDeployedModulesFoundWithThisSearchCriteria=تلاش کے ان معیارات کے لیے کوئی ماڈیول نہیں ملا API_DISABLE_COMPRESSION=API جوابات کے کمپریشن کو غیر فعال کریں۔ EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/ur_PK/bills.lang b/htdocs/langs/ur_PK/bills.lang index e11fa404609..159c25a8a47 100644 --- a/htdocs/langs/ur_PK/bills.lang +++ b/htdocs/langs/ur_PK/bills.lang @@ -81,13 +81,14 @@ PaymentsReports=ادائیگی کی رپورٹس PaymentsAlreadyDone=ادائیگیاں ہو چکی ہیں۔ PaymentsBackAlreadyDone=ریفنڈز پہلے ہی ہو چکے ہیں۔ PaymentRule=ادائیگی کا اصول -PaymentMode=ادائیگی کی قسم -DefaultPaymentMode=پہلے سے طے شدہ ادائیگی کی قسم +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=ڈیفالٹ بینک اکاؤنٹ -IdPaymentMode=ادائیگی کی قسم (id) -CodePaymentMode=ادائیگی کی قسم (کوڈ) -LabelPaymentMode=ادائیگی کی قسم (لیبل) -PaymentModeShort=ادائیگی کی قسم +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=ادائیگی کی شرط PaymentConditions=ادائیگی کی شرائط PaymentConditionsShort=ادائیگی کی شرائط diff --git a/htdocs/langs/ur_PK/blockedlog.lang b/htdocs/langs/ur_PK/blockedlog.lang index e1287289172..261c4985240 100644 --- a/htdocs/langs/ur_PK/blockedlog.lang +++ b/htdocs/langs/ur_PK/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=ان ممالک کی فہرست جہاں OnlyNonValid=غیر درست TooManyRecordToScanRestrictFilters=اسکین/تجزیہ کرنے کے لیے بہت زیادہ ریکارڈز۔ براہ کرم مزید پابندی والے فلٹرز کے ساتھ فہرست کو محدود کریں۔ RestrictYearToExport=ایکسپورٹ کرنے کے لیے مہینے/سال کو محدود کریں۔ +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/ur_PK/errors.lang b/htdocs/langs/ur_PK/errors.lang index c3ff20c67c9..905d70ab7fb 100644 --- a/htdocs/langs/ur_PK/errors.lang +++ b/htdocs/langs/ur_PK/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=یہ رابطہ پہلے ہی اس ق ErrorCashAccountAcceptsOnlyCashMoney=یہ بینک اکاؤنٹ ایک کیش اکاؤنٹ ہے، اس لیے یہ صرف قسم کی نقدی کی ادائیگی قبول کرتا ہے۔ ErrorFromToAccountsMustDiffers=ذرائع اور اہداف کے بینک اکاؤنٹس مختلف ہونے چاہئیں۔ ErrorBadThirdPartyName=فریق ثالث کے نام کی خراب قدر +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=%s لازمی ہے۔ +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=کسٹمر کوڈ کے لیے خراب نحو ErrorBadBarCodeSyntax=بارکوڈ کے لیے خراب نحو۔ ہوسکتا ہے کہ آپ نے برا کوڈ کی قسم سیٹ کی ہو یا آپ نے نمبرنگ کے لیے بارکوڈ ماسک کی وضاحت کی ہو جو اسکین کردہ ویلیو سے مماثل نہ ہو۔ ErrorCustomerCodeRequired=کسٹمر کوڈ درکار ہے۔ @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=ادائیگی کی شرائط ڈکشنر ErrorIsNotADraft=%s ڈرافٹ نہیں ہے۔ ErrorExecIdFailed=کمانڈ "id" پر عمل نہیں کیا جا سکتا ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=آپ کا پی ایچ پی پیرامیٹر upload_max_filesize (%s) PHP پیرامیٹر post_max_size (%s) سے زیادہ ہے۔ یہ ایک مستقل سیٹ اپ نہیں ہے۔ @@ -315,6 +318,7 @@ RequireAtLeastXString = کم از کم %s حروف کی ضرورت ہے RequireXStringMax = زیادہ سے زیادہ %s حروف کی ضرورت ہے۔ RequireAtLeastXDigits = کم از کم %s ہندسوں کی ضرورت ہے RequireXDigitsMax = زیادہ سے زیادہ %s ہندسوں کی ضرورت ہے۔ +RequireValidNumeric = Requires a numeric value RequireValidEmail = ای میل ایڈریس درست نہیں ہے۔ RequireMaxLength = لمبائی %s حروف سے کم ہونی چاہیے۔ RequireMinLength = لمبائی %s char(s) سے زیادہ ہونی چاہیے diff --git a/htdocs/langs/ur_PK/eventorganization.lang b/htdocs/langs/ur_PK/eventorganization.lang index 16d4ea5798a..8229da5d7ab 100644 --- a/htdocs/langs/ur_PK/eventorganization.lang +++ b/htdocs/langs/ur_PK/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = فریق ثالث میں شامل کر EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = تیسری پارٹیوں میں شامل کرنے کے لیے زمرہ خود بخود بن جاتا ہے جب وہ بوتھ تجویز کرتے ہیں۔ EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = کانفرنس کی تجویز موصول ہونے کے بعد بھیجنے کے لیے ای میل کا سانچہ۔ EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = بوتھ کی تجویز موصول ہونے کے بعد بھیجنے کے لیے ای میل کا سانچہ۔ -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = بوتھ پر رجسٹریشن کے بعد بھیجنے کے لیے ای میل کا ٹیمپلیٹ ادا ہو چکا ہے۔ +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = کسی تقریب میں رجسٹریشن کے بعد بھیجنے کے لیے ای میل کا ٹیمپلیٹ ادا ہو چکا ہے۔ -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = حاضرین کو اجتماعی ای میل کا سانچہ -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = مقررین کو مساج کرنے کے ای میل کا سانچہ -EVENTORGANIZATION_FILTERATTENDEES_CAT = زمرہ کے ساتھ شرکاء کے تخلیق کارڈ/فارم میں تھرڈ پارٹی کی منتخب فہرست کو فلٹر کریں۔ -EVENTORGANIZATION_FILTERATTENDEES_TYPE = گاہک کی قسم کے ساتھ شرکاء کے تخلیق کارڈ/فارم میں تیسرے فریق کی منتخب فہرست کو فلٹر کریں۔ +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = اپنے بوتھ کی ادائیگی EventOrganizationEmailRegistrationPayment = ایک تقریب کے لیے رجسٹریشن EventOrganizationMassEmailAttendees = شرکاء کے لیے مواصلت EventOrganizationMassEmailSpeakers = مقررین سے مواصلت +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=رجسٹریشن کی قیمت PriceOfRegistrationHelp=رجسٹر کرنے یا ایونٹ میں شرکت کے لیے ادا کرنے کی قیمت PriceOfBooth=ایک بوتھ کھڑا کرنے کے لیے سبسکرپشن کی قیمت PriceOfBoothHelp=ایک بوتھ کھڑے کرنے کے لئے سبسکرپشن کی قیمت -EventOrganizationICSLink=واقعات کے لیے ICS لنک کریں۔ +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=کانفرنس یا بوتھ کی معلومات Attendees=حاضرین ListOfAttendeesOfEvent=ایونٹ پروجیکٹ کے شرکاء کی فہرست DownloadICSLink = ICS لنک ڈاؤن لوڈ کریں۔ -EVENTORGANIZATION_SECUREKEY = ایک کانفرنس سے عوامی رجسٹریشن لنک کی محفوظ کلید +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = بوتھ کے مقام کے بارے میں انوائس قطار کے لیے استعمال کی جانے والی سروس -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = کانفرنس میں شرکت کرنے والے کی رکنیت کے بارے میں انوائس قطار کے لیے استعمال ہونے والی خدمت +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=ووٹوں کی تعداد # # Status diff --git a/htdocs/langs/ur_PK/holiday.lang b/htdocs/langs/ur_PK/holiday.lang index ce82371e754..da01ba7ce46 100644 --- a/htdocs/langs/ur_PK/holiday.lang +++ b/htdocs/langs/ur_PK/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=منظوری کے لیے چھٹیاں NobodyHasPermissionToValidateHolidays=کسی کو بھی تعطیلات کی توثیق کرنے کی اجازت نہیں ہے۔ HolidayBalanceMonthlyUpdate=چھٹیوں کے بیلنس کی ماہانہ اپ ڈیٹ XIsAUsualNonWorkingDay=%s عام طور پر غیر کام کا دن ہوتا ہے۔ +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=چھوڑنے کی درخواست %s کو مسودہ، منسوخ یا حذف کرنے سے انکار کیا جانا چاہیے diff --git a/htdocs/langs/ur_PK/knowledgemanagement.lang b/htdocs/langs/ur_PK/knowledgemanagement.lang index 501a088d2e9..edcaf0493cc 100644 --- a/htdocs/langs/ur_PK/knowledgemanagement.lang +++ b/htdocs/langs/ur_PK/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = آرٹیکل کے لیے ایکسٹرا فیلڈز GroupOfTicket=ٹکٹوں کا گروپ YouCanLinkArticleToATicketCategory=آپ کسی مضمون کو ٹکٹ گروپ سے جوڑ سکتے ہیں (لہذا نئے ٹکٹوں کی اہلیت کے دوران مضمون تجویز کیا جائے گا) SuggestedForTicketsInGroup=جب گروپ ہوتا ہے تو ٹکٹوں کے لیے تجویز کیا جاتا ہے۔ + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/ur_PK/mrp.lang b/htdocs/langs/ur_PK/mrp.lang index d9158d60f19..5da87a94d0c 100644 --- a/htdocs/langs/ur_PK/mrp.lang +++ b/htdocs/langs/ur_PK/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=کیا آپ واقعی مواد کے بل کو کل ConfirmCloneMo=کیا آپ واقعی مینوفیکچرنگ آرڈر %s کو کلون کرنا چاہتے ہیں؟ ManufacturingEfficiency=مینوفیکچرنگ کی کارکردگی ConsumptionEfficiency=کھپت کی کارکردگی -ValueOfMeansLoss=0.95 کی قدر کا مطلب ہے پیداوار کے دوران نقصان کا اوسط 5%% +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=0.95 کی قدر کا مطلب ہے پیدا شدہ مصنوعات کے نقصان کا اوسط 5%% DeleteBillOfMaterials=مواد کا بل حذف کریں۔ DeleteMo=مینوفیکچرنگ آرڈر کو حذف کریں۔ diff --git a/htdocs/langs/ur_PK/other.lang b/htdocs/langs/ur_PK/other.lang index f72d7d97c85..8ea3e43b1cb 100644 --- a/htdocs/langs/ur_PK/other.lang +++ b/htdocs/langs/ur_PK/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=ای میل MSGID %s سے ای میل کلکٹر TicketCreatedByEmailCollector=ای میل MSGID %s سے ای میل کلکٹر کے ذریعہ تیار کردہ ٹکٹ OpeningHoursFormatDesc=کھلنے اور بند ہونے کے اوقات کو الگ کرنے کے لیے - کا استعمال کریں۔
مختلف حدود میں داخل ہونے کے لیے اسپیس کا استعمال کریں۔
مثال: 8-12 14-18 SuffixSessionName=سیشن کے نام کے لیے لاحقہ +LoginWith=Login with %s ##### Export ##### ExportsArea=برآمدات کا علاقہ diff --git a/htdocs/langs/ur_PK/products.lang b/htdocs/langs/ur_PK/products.lang index e5e075a46f5..4f65a215f19 100644 --- a/htdocs/langs/ur_PK/products.lang +++ b/htdocs/langs/ur_PK/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=پہلے سے طے شدہ BOM اس پروڈکٹ کو تیار ک Rank=رینک SwitchOnSaleStatus=فروخت کی حالت پر سوئچ کریں۔ SwitchOnPurchaseStatus=خریداری کی حیثیت کو آن کریں۔ +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/ur_PK/projects.lang b/htdocs/langs/ur_PK/projects.lang index 5342ff3c30e..304a2e0ad22 100644 --- a/htdocs/langs/ur_PK/projects.lang +++ b/htdocs/langs/ur_PK/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=ان پٹ فی مہینہ InputDetail=ان پٹ کی تفصیل TimeAlreadyRecorded=یہ اس کام/دن اور صارف %s کے لیے پہلے ہی ریکارڈ شدہ وقت ہے ProjectsWithThisUserAsContact=اس صارف کے ساتھ پروجیکٹس بطور رابطہ +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=اس صارف کو تفویض کردہ کام ResourceNotAssignedToProject=پروجیکٹ کو تفویض نہیں کیا گیا۔ ResourceNotAssignedToTheTask=کام کے لیے تفویض نہیں کیا گیا ہے۔ @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=نوٹ: 100%% پر تمام ٹ SelectLinesOfTimeSpentToInvoice=گزارے گئے وقت کی لائنیں منتخب کریں جن کا بل نہیں ہے، پھر ان کو بل کرنے کے لیے بڑی تعداد میں "انوائس تیار کریں" ProjectTasksWithoutTimeSpent=بغیر وقت کے پروجیکٹ کے کام FormForNewLeadDesc=ہم سے رابطہ کرنے کے لیے درج ذیل فارم کو پُر کرنے کا شکریہ۔ آپ ہمیں براہ راست %s پر ای میل بھی بھیج سکتے ہیں۔ +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/ur_PK/receptions.lang b/htdocs/langs/ur_PK/receptions.lang index 539caccac5a..05d84f5a860 100644 --- a/htdocs/langs/ur_PK/receptions.lang +++ b/htdocs/langs/ur_PK/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=پروڈکٹ ریسپشن سیٹ اپ +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=حوالہ استقبالیہ Reception=استقبالیہ Receptions=استقبالیہ diff --git a/htdocs/langs/uz_UZ/admin.lang b/htdocs/langs/uz_UZ/admin.lang index 1995cf39739..ad2754ae46d 100644 --- a/htdocs/langs/uz_UZ/admin.lang +++ b/htdocs/langs/uz_UZ/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Jamg'arma Version=Versiya Publisher=Nashriyotchi @@ -343,7 +343,7 @@ StepNb=%s qadam FindPackageFromWebSite=Sizga kerakli xususiyatlarni taqdim etadigan paketni toping (masalan, rasmiy veb-sayt %s). DownloadPackageFromWebSite=To'plamni yuklab oling (masalan, rasmiy veb-sayt %s dan). UnpackPackageInDolibarrRoot=Paketlangan fayllarni Dolibarr server katalogiga oching / oching: %s -UnpackPackageInModulesRoot=Tashqi modulni joylashtirish / o'rnatish uchun paketlangan fayllarni tashqi modullarga bag'ishlangan server katalogiga oching / oching:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Modulni joylashtirish tugallandi. Biroq, sahifani o'rnatish modullariga o'tib, sizning ilovangizdagi modulni yoqishingiz va sozlashingiz kerak: %s . NotExistsDirect=Mavjud katalog uchun muqobil ildiz katalogi aniqlanmagan.
InfDirAlt=3-versiyadan boshlab muqobil ildiz katalogini aniqlash mumkin. Bu sizga maxsus katalog, plaginlar va maxsus andozalarni saqlashga imkon beradi.
Faqat Dolibarrning ildizida katalog yarating (masalan: maxsus).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Tashqi modulni dasturdan o'rnatish yoki yaratish uchun HighlightLinesOnMouseHover=Sichqoncha harakati o'tib ketganda jadval satrlarini ajratib ko'rsatish HighlightLinesColor=Sichqoncha o'tib ketganda chiziq rangini belgilang (ajratish uchun 'ffffff' dan foydalaning) HighlightLinesChecked=Tekshirilganda chiziq rangini ajratib ko'rsatish (ajratish uchun 'ffffff' dan foydalaning) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Sahifa sarlavhasining matni rangi LinkColor=Havolalarning rangi PressF5AfterChangingThis=Klaviaturada CTRL + F5 tugmachalarini bosing yoki ushbu qiymatni o'zgartirgandan so'ng brauzer keshini tozalang @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/uz_UZ/bills.lang b/htdocs/langs/uz_UZ/bills.lang index db629ba248b..c05ebdff8b1 100644 --- a/htdocs/langs/uz_UZ/bills.lang +++ b/htdocs/langs/uz_UZ/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=To'lovlar to'g'risida hisobotlar PaymentsAlreadyDone=To'lovlar allaqachon amalga oshirilgan PaymentsBackAlreadyDone=Pulni qaytarish allaqachon amalga oshirilgan PaymentRule=To'lov qoidasi -PaymentMode=To'lov turi -DefaultPaymentMode=Standart to'lov turi +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Standart bank hisobvarag'i -PaymentTypeDC=Debet / kredit karta -PaymentTypePP=PayPal -IdPaymentMode=To'lov turi (id) -CodePaymentMode=To'lov turi (kod) -LabelPaymentMode=To'lov turi (yorliq) -PaymentModeShort=To'lov turi +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=To'lov muddati PaymentConditions=To'lov shartlari PaymentConditionsShort=To'lov shartlari @@ -280,6 +279,7 @@ SetMode=To'lov turini o'rnating SetRevenuStamp=Daromad shtampini o'rnating Billed=Hisob-kitob RecurringInvoices=Takroriy hisob-fakturalar +RecurringInvoice=Recurring invoice RepeatableInvoice=Shablon hisob-fakturasi RepeatableInvoices=Shablon hisob-fakturalari Repeatable=Andoza @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank loyihasi PaymentTypeShortTRA=Qoralama PaymentTypeFAC=Faktor PaymentTypeShortFAC=Faktor +PaymentTypeDC=Debet / kredit karta +PaymentTypePP=PayPal BankDetails=Bank tafsilotlari BankCode=Bank kodi DeskCode=Filial kodi @@ -604,3 +606,4 @@ SituationTotalProgress=Jami taraqqiyot %d %% SearchUnpaidInvoicesWithDueDate=Belgilangan sana = %s bilan to'lanmagan hisob-fakturalarni qidiring NoPaymentAvailable=%s uchun to'lov yo'q PaymentRegisteredAndInvoiceSetToPaid=To'lov qayd etildi va %s hisob -fakturasi to'langan deb belgilandi +SendEmailsRemindersOnInvoiceDueDate=Send reminder by email for unpaid invoices diff --git a/htdocs/langs/uz_UZ/blockedlog.lang b/htdocs/langs/uz_UZ/blockedlog.lang index 478a7fdc873..5ed9327f094 100644 --- a/htdocs/langs/uz_UZ/blockedlog.lang +++ b/htdocs/langs/uz_UZ/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=Ushbu moduldan foydalanish majburiy bo'lga OnlyNonValid=Yaroqsiz TooManyRecordToScanRestrictFilters=Skanerlash / tahlil qilish uchun juda ko'p yozuvlar. Iltimos, cheklovli filtrlar bilan ro'yxatni cheklang. RestrictYearToExport=Eksport qilish uchun oyni / yilni cheklang +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/uz_UZ/errors.lang b/htdocs/langs/uz_UZ/errors.lang index c5dc68717fc..b337c73d0d6 100644 --- a/htdocs/langs/uz_UZ/errors.lang +++ b/htdocs/langs/uz_UZ/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Ushbu kontakt allaqachon ushbu turdag ErrorCashAccountAcceptsOnlyCashMoney=Ushbu bank hisobvarag'i kassa hisobvarag'i hisoblanadi, shuning uchun u faqat naqd turdagi to'lovlarni qabul qiladi. ErrorFromToAccountsMustDiffers=Bank hisob raqamlarining manbalari va maqsadlari boshqacha bo'lishi kerak. ErrorBadThirdPartyName=Uchinchi tomon nomi uchun noto'g'ri qiymat +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=%s majburiydir +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Mijoz kodi uchun noto'g'ri sintaksis ErrorBadBarCodeSyntax=Shtrixli kod uchun noto'g'ri sintaksis. Ehtimol, siz shtrix-kodning yomon turini o'rnatdingiz yoki skanerlangan qiymatga mos kelmaydigan raqamlash uchun shtrix-niqobni aniqladingiz. ErrorCustomerCodeRequired=Mijoz kodi talab qilinadi @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=To'lov shartlari lug'atida yo'q, iltimos o ErrorIsNotADraft=%s qoralama emas ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=PHP parametringiz upload_max_filesize (%s) PHP post_max_size (%s) parametridan yuqori. Bu izchil o'rnatish emas. @@ -315,6 +318,7 @@ RequireAtLeastXString = Kamida %s belgi kerak RequireXStringMax = Maksimal %s belgidan iborat bo'lishi kerak RequireAtLeastXDigits = Kamida %s ta raqamni talab qiladi RequireXDigitsMax = Maksimal %s raqam (lar) ni talab qiladi +RequireValidNumeric = Requires a numeric value RequireValidEmail = E -pochta manzili yaroqsiz RequireMaxLength = Uzunligi %s belgidan kam bo'lishi kerak RequireMinLength = Uzunlik %s char (lar) dan oshishi kerak diff --git a/htdocs/langs/uz_UZ/eventorganization.lang b/htdocs/langs/uz_UZ/eventorganization.lang index 079de2867d1..34a3bc9eec6 100644 --- a/htdocs/langs/uz_UZ/eventorganization.lang +++ b/htdocs/langs/uz_UZ/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Kimdir konferentsiya taklif qilganda a EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Uchinchi shaxslarga qo'shiladigan toifani, ular stendni taklif qilganda avtomatik ravishda yaratiladi EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Konferentsiya taklifini olgandan so'ng yuborish uchun elektron pochta shablonini. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Stend taklifini olgandan keyin yuborish uchun elektron pochta shablonini. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Stendga ro'yxatdan o'tgandan so'ng yuboriladigan elektron pochta shabloni to'langan. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Tadbirga ro'yxatdan o'tgandan so'ng yuboriladigan elektron pochta shablonini. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Ishtirokchilarga ommaviy massaj elektron pochta shablonini -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Spikerlarga ommaviy elektron pochta orqali yuborilgan shablon -EVENTORGANIZATION_FILTERATTENDEES_CAT = Uchinchi tomonning tanlangan ro'yxatini ishtirokchilarni yaratish kartasida / toifadagi katakchasida filtrlang -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Uchinchi tomonning tanlangan ro'yxatini ishtirokchilarni yaratish kartasida / mijozning turiga qarab shaklda filtrlang +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Stendingizning to'lovi EventOrganizationEmailRegistrationPayment = Tadbir uchun ro'yxatdan o'tish EventOrganizationMassEmailAttendees = Ishtirokchilar bilan aloqa EventOrganizationMassEmailSpeakers = Spikerlar bilan aloqa +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Ro'yxatdan o'tish narxi PriceOfRegistrationHelp=Ro'yxatdan o'tish yoki tadbirda qatnashish uchun to'lanadigan narx PriceOfBooth=Stendda turish uchun obuna narxi PriceOfBoothHelp=Stendda turish uchun obuna narxi -EventOrganizationICSLink=Voqealar uchun ICS-ni bog'lang +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Konferentsiya yoki stend ma'lumotlari Attendees=Ishtirokchilar ListOfAttendeesOfEvent=Loyiha ishtirokchilari ro'yxati DownloadICSLink = ICS havolasini yuklab oling -EVENTORGANIZATION_SECUREKEY = Konferentsiyaga ochiq ro'yxatdan o'tishning havfli kaliti +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Stend joylashgan joy haqida hisob-faktura qatori uchun ishlatiladigan xizmat -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Konferentsiyaga qatnashuvchi obuna haqida hisob-faktura satrida ishlatiladigan xizmat +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Ovozlar soni # # Status diff --git a/htdocs/langs/uz_UZ/holiday.lang b/htdocs/langs/uz_UZ/holiday.lang index 85f438908f2..c604879c579 100644 --- a/htdocs/langs/uz_UZ/holiday.lang +++ b/htdocs/langs/uz_UZ/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Bayramlarni tasdiqlash NobodyHasPermissionToValidateHolidays=Bayramlarni tasdiqlash uchun hech kimning ruxsati yo'q HolidayBalanceMonthlyUpdate=Dam olish balansining oylik yangilanishi XIsAUsualNonWorkingDay=%s odatda NON ish kuni hisoblanadi +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/uz_UZ/knowledgemanagement.lang b/htdocs/langs/uz_UZ/knowledgemanagement.lang index 7ba41e15ab0..afee3d77e80 100644 --- a/htdocs/langs/uz_UZ/knowledgemanagement.lang +++ b/htdocs/langs/uz_UZ/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Maqola uchun qo'shimcha joylar GroupOfTicket=Chiptalar guruhi YouCanLinkArticleToATicketCategory=Siz maqolani chiptalar guruhiga bog'lashingiz mumkin (shuning uchun maqola yangi chiptalarni saralash paytida taklif qilinadi) SuggestedForTicketsInGroup=Guruh bo'lganda chiptalar taklif etiladi + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/uz_UZ/mrp.lang b/htdocs/langs/uz_UZ/mrp.lang index df7436a345c..32a43cbc558 100644 --- a/htdocs/langs/uz_UZ/mrp.lang +++ b/htdocs/langs/uz_UZ/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=%s materiallar hisobini klonlamoqchimisiz? ConfirmCloneMo=%s ishlab chiqarish buyurtmasini klonlamoqchimisiz? ManufacturingEfficiency=Ishlab chiqarish samaradorligi ConsumptionEfficiency=Iste'mol samaradorligi -ValueOfMeansLoss=0,95 qiymati ishlab chiqarish jarayonida o'rtacha 5%% yo'qotishlarni anglatadi +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=0,95 qiymati ishlab chiqarilgan mahsulotning o'rtacha 5%% yo'qolishini anglatadi DeleteBillOfMaterials=Materiallar varaqasini o'chirish DeleteMo=Ishlab chiqarish buyurtmasini o'chirib tashlang diff --git a/htdocs/langs/uz_UZ/other.lang b/htdocs/langs/uz_UZ/other.lang index aad53130d72..7db253ec775 100644 --- a/htdocs/langs/uz_UZ/other.lang +++ b/htdocs/langs/uz_UZ/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=MSGID %s elektron pochtasidan elektron pochta yig TicketCreatedByEmailCollector=MSGID %s elektron pochtasidan elektron pochta yig'uvchisi tomonidan yaratilgan chipta OpeningHoursFormatDesc=Ochilish va yopilish soatlarini ajratish uchun a - dan foydalaning.
Turli xil intervallarni kiritish uchun bo'sh joydan foydalaning.
Misol: 8-12 14-18 SuffixSessionName=Sessiya nomi uchun qo'shimchalar +LoginWith=Login with %s ##### Export ##### ExportsArea=Eksport maydoni diff --git a/htdocs/langs/uz_UZ/products.lang b/htdocs/langs/uz_UZ/products.lang index 5d7b2652ec5..15a5592a500 100644 --- a/htdocs/langs/uz_UZ/products.lang +++ b/htdocs/langs/uz_UZ/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=Standart BOM ushbu mahsulotni ishlab chiqarishda foydalanishni ta Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/uz_UZ/projects.lang b/htdocs/langs/uz_UZ/projects.lang index 76d5ab7807e..09f4e88dcbb 100644 --- a/htdocs/langs/uz_UZ/projects.lang +++ b/htdocs/langs/uz_UZ/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Oyiga kiritish InputDetail=Kirish tafsiloti TimeAlreadyRecorded=Bu allaqachon ushbu vazifa uchun yozilgan vaqt va foydalanuvchi %s ProjectsWithThisUserAsContact=Ushbu foydalanuvchi bilan aloqa sifatida loyihalar +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Ushbu foydalanuvchiga berilgan vazifalar ResourceNotAssignedToProject=Loyihaga tayinlanmagan ResourceNotAssignedToTheTask=Vazifaga tayinlanmagan @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Izoh: 100%% da barcha vazifalar SelectLinesOfTimeSpentToInvoice=Hisob-kitob qilinmagan sarflangan vaqtni tanlang, so'ngra hisob-kitob qilish uchun "Hisob-fakturani yaratish" ommaviy harakati ProjectTasksWithoutTimeSpent=Vaqt sarflamasdan loyiha vazifalari FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/uz_UZ/receptions.lang b/htdocs/langs/uz_UZ/receptions.lang index 7550400a171..ef79361ae28 100644 --- a/htdocs/langs/uz_UZ/receptions.lang +++ b/htdocs/langs/uz_UZ/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Mahsulotni qabul qilishni sozlash +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. ziyofat Reception=Qabul qilish Receptions=Qabullar @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Ushbu buyurtma uchun qabul va tushum ReceptionsToValidate=Tasdiqlash uchun qabullar StatusReceptionCanceled=Bekor qilindi StatusReceptionDraft=Qoralama -StatusReceptionValidated=Tasdiqlangan (jo'natiladigan yoki allaqachon jo'natilgan mahsulotlar) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Qayta ishlangan StatusReceptionDraftShort=Qoralama StatusReceptionValidatedShort=Tasdiqlangan @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Qabullarda o'tkazilgan statistika faqat tasdiqlan SendReceptionByEMail=Qabulni elektron pochta orqali yuboring SendReceptionRef=Qabulni yuborish %s ActionsOnReception=Qabul qilish tadbirlari -ReceptionCreationIsDoneFromOrder=Hozircha, yangi qabulxonani yaratish Xarid buyurtmasi yozuvidan amalga oshiriladi. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Qabul qilish liniyasi ProductQtyInReceptionAlreadySent=Ochiq savdo buyurtmasidan mahsulot miqdori allaqachon yuborilgan ProductQtyInSuppliersReceptionAlreadyRecevied=Ochiq etkazib beruvchilar buyurtmasidan olingan mahsulot miqdori allaqachon qabul qilingan @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Qabul qilish uchun hujjat shablonlari NoMorePredefinedProductToDispatch=Yuborish uchun oldindan belgilangan mahsulotlar yo'q ReceptionExist=Qabulxona mavjud ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/vi_VN/admin.lang b/htdocs/langs/vi_VN/admin.lang index 2381109ce14..c60dc0acf38 100644 --- a/htdocs/langs/vi_VN/admin.lang +++ b/htdocs/langs/vi_VN/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Tổ chức Version=Phiên bản Publisher=Người xuất bản @@ -343,7 +343,7 @@ StepNb=Bước %s FindPackageFromWebSite=Tìm gói cung cấp các tính năng bạn cần (ví dụ: trên trang web chính thức %s). DownloadPackageFromWebSite=Tải xuống gói (ví dụ từ trang web chính thức %s). UnpackPackageInDolibarrRoot=Unpack / unzip các tệp được đóng gói vào thư mục máy chủ Dolibarr:%s -UnpackPackageInModulesRoot=Để triển khai / cài đặt một mô-đun bên ngoài, unpack/unzip các tệp được đóng gói vào thư mục máy chủ dành riêng cho các mô-đun bên ngoài:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Triển khai mô-đun kết thúc. Tuy nhiên, bạn phải bật và thiết lập mô-đun trong ứng dụng của mình bằng cách đi tới các mô-đun thiết lập trang: %s . NotExistsDirect=Thư mục gốc thay thế không được xác định cho một thư mục hiện có.
InfDirAlt=Kể từ phiên bản 3, có thể xác định một thư mục gốc thay thế. Điều này cho phép bạn lưu trữ, vào một thư mục chuyên dụng, các trình cắm và các mẫu tùy chỉnh.
Chỉ cần tạo một thư mục ở thư mục gốc của Dolibarr (ví dụ: tùy chỉnh).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Cài đặt hoặc xây dựng một mô-đun bên ngo HighlightLinesOnMouseHover=Tô sáng các dòng bảng khi chuột di chuyển qua HighlightLinesColor=Tô sáng màu của dòng khi chuột đi qua (sử dụng 'ffffff' để không làm nổi bật) HighlightLinesChecked=Tô sáng màu của dòng khi được chọn (sử dụng 'ffffff' để không tô sáng) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Màu văn bản của tiêu đề trang LinkColor=Màu của liên kết PressF5AfterChangingThis=Nhấn CTRL + F5 trên bàn phím hoặc xóa bộ nhớ cache của trình duyệt sau khi thay đổi giá trị này để có hiệu lực @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/vi_VN/bills.lang b/htdocs/langs/vi_VN/bills.lang index e65139eb425..fd61ed063de 100644 --- a/htdocs/langs/vi_VN/bills.lang +++ b/htdocs/langs/vi_VN/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Báo cáo thanh toán PaymentsAlreadyDone=Đã thanh toán PaymentsBackAlreadyDone=Đã thanh toán lại PaymentRule=Quy tắc thanh toán -PaymentMode=Hình thức thanh toán -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Thẻ tín dụng/Ghi nợ -PaymentTypePP=PayPal -IdPaymentMode=Hình thức thanh toán (id) -CodePaymentMode=Hình thức thanh toán (mã) -LabelPaymentMode=Hình thức thanh toán (nhãn) -PaymentModeShort=Hình thức thanh toán +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Điều khoản thanh toán PaymentConditions=Điều khoản thanh toán PaymentConditionsShort=Điều khoản thanh toán @@ -280,6 +279,7 @@ SetMode=Thiết lập loại thanh toán SetRevenuStamp=Đặt tem doanh thu Billed=Đã ra hóa đơn RecurringInvoices=Hóa đơn định kỳ +RecurringInvoice=Recurring invoice RepeatableInvoice=Hóa đơn mẫu RepeatableInvoices=Hoá đơn mẫu Repeatable=Mẫu @@ -449,6 +449,8 @@ PaymentTypeTRA=Dự thảo ngân hàng PaymentTypeShortTRA=Dự thảo PaymentTypeFAC=Tác nhân PaymentTypeShortFAC=Tác nhân +PaymentTypeDC=Thẻ tín dụng/Ghi nợ +PaymentTypePP=PayPal BankDetails=Chi tiết ngân hàng BankCode=Mã ngân hàng DeskCode=Mã chi nhánh @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/vi_VN/blockedlog.lang b/htdocs/langs/vi_VN/blockedlog.lang index 9b3a20f1438..7b24279fe84 100644 --- a/htdocs/langs/vi_VN/blockedlog.lang +++ b/htdocs/langs/vi_VN/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Nhật ký không thể thay đổi ShowAllFingerPrintsMightBeTooLong=Hiển thị tất cả các nhật ký lưu trữ (có thể dài) ShowAllFingerPrintsErrorsMightBeTooLong=Hiển thị tất cả các nhật ký lưu trữ không hợp lệ (có thể dài) DownloadBlockChain=Tải dấu vân tay -KoCheckFingerprintValidity=Lưu trữ nhật ký không hợp lệ. Nó có nghĩa là ai đó (một hacker?) Đã sửa đổi một số dữ liệu của lần này sau khi nó được ghi lại hoặc đã xóa bản ghi lưu trữ trước đó (kiểm tra dòng đó với # tồn tại trước đó). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Bản ghi nhật ký lưu trữ là hợp lệ. Dữ liệu trên dòng này không được sửa đổi và mục nhập theo sau. OkCheckFingerprintValidityButChainIsKo=Nhật ký lưu trữ có vẻ hợp lệ so với trước đó nhưng chuỗi đã bị hỏng trước đó. AddedByAuthority=Lưu trữ vào ủy quyền từ xa @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=Danh sách các quốc gia nơi sử dụn OnlyNonValid=Không hợp lệ TooManyRecordToScanRestrictFilters=Quá nhiều bản ghi để quét / phân tích. Vui lòng hạn chế liệt kê với các bộ lọc hạn chế hơn. RestrictYearToExport=Hạn chế tháng / năm để xuất dữ liệu +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/vi_VN/errors.lang b/htdocs/langs/vi_VN/errors.lang index 941f98abc63..1b8c6ca61b9 100644 --- a/htdocs/langs/vi_VN/errors.lang +++ b/htdocs/langs/vi_VN/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Liên hệ này đã được xác đ ErrorCashAccountAcceptsOnlyCashMoney=Tài khoản ngân hàng Đây là một tài khoản tiền mặt, vì vậy nó chấp nhận thanh toán các loại chỉ tiền mặt. ErrorFromToAccountsMustDiffers=Nguồn tài khoản ngân hàng và các mục tiêu phải khác. ErrorBadThirdPartyName=Giá trị xấu cho tên của bên thứ ba +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=% S là bắt buộc +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad cú pháp cho mã khách hàng ErrorBadBarCodeSyntax=Cú pháp tồi cho mã vạch. Có thể bạn đặt loại mã vạch tồi hoặc bạn đã định nghĩa mặt nạ mã vạch để đánh số không khớp với giá trị được quét. ErrorCustomerCodeRequired=Mã khách hàng yêu cầu @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Tham số PHP của bạn upload_max_filesize (%s) cao hơn tham số PHP post_max_size (%s). Đây không phải là một thiết lập phù hợp. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/vi_VN/eventorganization.lang b/htdocs/langs/vi_VN/eventorganization.lang index 93a154e73c1..3b4abf4bb83 100644 --- a/htdocs/langs/vi_VN/eventorganization.lang +++ b/htdocs/langs/vi_VN/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/vi_VN/holiday.lang b/htdocs/langs/vi_VN/holiday.lang index da1844d1443..a004e3a5064 100644 --- a/htdocs/langs/vi_VN/holiday.lang +++ b/htdocs/langs/vi_VN/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Ngày lễ để phê duyệt NobodyHasPermissionToValidateHolidays=Không ai được phép xác nhận ngày nghỉ lễ HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/vi_VN/knowledgemanagement.lang b/htdocs/langs/vi_VN/knowledgemanagement.lang index 39a0e5c0cc7..fbae30aad45 100644 --- a/htdocs/langs/vi_VN/knowledgemanagement.lang +++ b/htdocs/langs/vi_VN/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/vi_VN/mrp.lang b/htdocs/langs/vi_VN/mrp.lang index df4f814f444..d9006590c30 100644 --- a/htdocs/langs/vi_VN/mrp.lang +++ b/htdocs/langs/vi_VN/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Bạn có chắc chắn muốn sao chép Đơn hàng sản xuất %s không? ManufacturingEfficiency=Hiệu quả sản xuất ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Giá trị 0,95 có nghĩa là trung bình mất 5%% trong quá trình sản xuất +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Xóa hóa đơn vật liệu DeleteMo=Xóa đơn hàng sản xuất diff --git a/htdocs/langs/vi_VN/other.lang b/htdocs/langs/vi_VN/other.lang index b4fd55dad59..c53ba8f9928 100644 --- a/htdocs/langs/vi_VN/other.lang +++ b/htdocs/langs/vi_VN/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Dự án được tạo bởi trình thu thập e TicketCreatedByEmailCollector=Vé được tạo bởi trình thu thập email từ email MSGID %s OpeningHoursFormatDesc=Sử dụng một - để tách giờ mở và đóng cửa.
Sử dụng một khoảng trắng để nhập các phạm vi khác nhau.
Ví dụ: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Khu vực xuất khẩu diff --git a/htdocs/langs/vi_VN/products.lang b/htdocs/langs/vi_VN/products.lang index cae63a25046..a7b84c95a9f 100644 --- a/htdocs/langs/vi_VN/products.lang +++ b/htdocs/langs/vi_VN/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/vi_VN/projects.lang b/htdocs/langs/vi_VN/projects.lang index 94499eaf1c2..ea0500c7c74 100644 --- a/htdocs/langs/vi_VN/projects.lang +++ b/htdocs/langs/vi_VN/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Lượng nhập liệu theo tháng InputDetail=Chi tiết đầu vào TimeAlreadyRecorded=Đây là thời gian đã qua được ghi nhận cho nhiệm vụ/ ngày này và người dùng %s ProjectsWithThisUserAsContact=Dự án với người dùng này là người liên lạc +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Nhiệm vụ được giao cho người dùng này ResourceNotAssignedToProject=Không được giao cho dự án ResourceNotAssignedToTheTask=Không được giao nhiệm vụ @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=Ngày kết thúc không thể trước ngày bắt đầu diff --git a/htdocs/langs/vi_VN/receptions.lang b/htdocs/langs/vi_VN/receptions.lang index 6a1a514c8d0..bc4b3d3628c 100644 --- a/htdocs/langs/vi_VN/receptions.lang +++ b/htdocs/langs/vi_VN/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Thiết lập tiếp nhận sản phẩm +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Tham chiếu tiếp nhận Reception=Tiếp nhận Receptions=Tiếp nhận @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Tiếp nhận và biên nhận cho đơn hàn ReceptionsToValidate=Tiếp nhận để xác nhận StatusReceptionCanceled=Đã hủy StatusReceptionDraft=Dự thảo -StatusReceptionValidated=Xác nhận (sản phẩm để vận chuyển hoặc đã được vận chuyển) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Đã xử lý StatusReceptionDraftShort=Dự thảo StatusReceptionValidatedShort=Đã xác nhận @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Thống kê được tiến hành chỉ trên cá SendReceptionByEMail=Gửi tiếp nhận qua email SendReceptionRef=Đệ trình tiếp nhận %s ActionsOnReception=Sự kiện trên tiếp nhận -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Dòng tiếp nhận ProductQtyInReceptionAlreadySent=Số lượng sản phẩm từ đơn bán hàng mở đã được gửi ProductQtyInSuppliersReceptionAlreadyRecevied=Số lượng sản phẩm từ đơn đặt hàng nhà cung cấp mở đã nhận được @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Mẫu tài liệu cho tiếp nhận NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/zh_CN/admin.lang b/htdocs/langs/zh_CN/admin.lang index 6dbe7d3f075..4dcc33dae13 100644 --- a/htdocs/langs/zh_CN/admin.lang +++ b/htdocs/langs/zh_CN/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=机构 Version=版本 Publisher=出版者 @@ -343,7 +343,7 @@ StepNb=第 %s 步 FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=未设置可选备用根目录。
InfDirAlt=自 v3 版本开始,Dolibarr 可以定义备用根目录地址。这令您可以将插件和自定义模板保存至同一位置。
您只需在Dolibarr的根目录下创建一个目录(例如custom)。
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=从应用程序安装或构建外部模块需要将模 HighlightLinesOnMouseHover=当鼠标经过表格明细时高亮显示 HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=页面标题的文字颜色 LinkColor=颜色链接 PressF5AfterChangingThis=在键盘上按CTRL + F5或更改此值后清除浏览器缓存以使其生效 @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/zh_CN/bills.lang b/htdocs/langs/zh_CN/bills.lang index ac1ef210e24..a575254c7dd 100644 --- a/htdocs/langs/zh_CN/bills.lang +++ b/htdocs/langs/zh_CN/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=付款报表 PaymentsAlreadyDone=付款已完成 PaymentsBackAlreadyDone=Refunds already done PaymentRule=付款规则 -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=借记卡/信用卡 -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=设置印花税 Billed=帐单 RecurringInvoices=定期发票 +RecurringInvoice=Recurring invoice RepeatableInvoice=模板发票 RepeatableInvoices=模板发票 Repeatable=模板 @@ -449,6 +449,8 @@ PaymentTypeTRA=银行账单草稿 PaymentTypeShortTRA=草稿 PaymentTypeFAC=因素 PaymentTypeShortFAC=因素 +PaymentTypeDC=借记卡/信用卡 +PaymentTypePP=PayPal BankDetails=银行详情 BankCode=银行代码 DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/zh_CN/blockedlog.lang b/htdocs/langs/zh_CN/blockedlog.lang index 37ec67f2a06..c501fb4621f 100644 --- a/htdocs/langs/zh_CN/blockedlog.lang +++ b/htdocs/langs/zh_CN/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/zh_CN/errors.lang b/htdocs/langs/zh_CN/errors.lang index 456eaf5df69..1783be09f3a 100644 --- a/htdocs/langs/zh_CN/errors.lang +++ b/htdocs/langs/zh_CN/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=这个联络已定义为这种类型 ErrorCashAccountAcceptsOnlyCashMoney=这是一个银行帐户的现金帐户,所以只接受现金支付的类型。 ErrorFromToAccountsMustDiffers=源和目标的银行帐户必须是不同的。 ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=%s 是强制性的 +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=错误的客户编号 ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=客户编号需要 @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/zh_CN/eventorganization.lang b/htdocs/langs/zh_CN/eventorganization.lang index d509d15869c..6fd538f1ad2 100644 --- a/htdocs/langs/zh_CN/eventorganization.lang +++ b/htdocs/langs/zh_CN/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/zh_CN/holiday.lang b/htdocs/langs/zh_CN/holiday.lang index 79e9fa5142c..492299e752b 100644 --- a/htdocs/langs/zh_CN/holiday.lang +++ b/htdocs/langs/zh_CN/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/zh_CN/knowledgemanagement.lang b/htdocs/langs/zh_CN/knowledgemanagement.lang index faebea3c477..e7884d5be4e 100644 --- a/htdocs/langs/zh_CN/knowledgemanagement.lang +++ b/htdocs/langs/zh_CN/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/zh_CN/mrp.lang b/htdocs/langs/zh_CN/mrp.lang index 9de8ddfdb06..afbb5672376 100644 --- a/htdocs/langs/zh_CN/mrp.lang +++ b/htdocs/langs/zh_CN/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/zh_CN/other.lang b/htdocs/langs/zh_CN/other.lang index 273f71a86b6..ade0db35aa6 100644 --- a/htdocs/langs/zh_CN/other.lang +++ b/htdocs/langs/zh_CN/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=导出区 diff --git a/htdocs/langs/zh_CN/products.lang b/htdocs/langs/zh_CN/products.lang index e7fdaa22607..bd485326d4a 100644 --- a/htdocs/langs/zh_CN/products.lang +++ b/htdocs/langs/zh_CN/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/zh_CN/projects.lang b/htdocs/langs/zh_CN/projects.lang index b73315ca664..03644f2a7f9 100644 --- a/htdocs/langs/zh_CN/projects.lang +++ b/htdocs/langs/zh_CN/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=输入细节 TimeAlreadyRecorded=这是此任务/日和用户%s已记录的时间 ProjectsWithThisUserAsContact=项目的用户作为联系人 +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=任务分配给这个用户 ResourceNotAssignedToProject=未分配到项目 ResourceNotAssignedToTheTask=未分配给任务 @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=结束日期不能早过开始日期啊,时光不能倒流呀魂淡 diff --git a/htdocs/langs/zh_CN/receptions.lang b/htdocs/langs/zh_CN/receptions.lang index 7213fd16303..2061cb326db 100644 --- a/htdocs/langs/zh_CN/receptions.lang +++ b/htdocs/langs/zh_CN/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=论过程 Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=已取消 StatusReceptionDraft=草稿 -StatusReceptionValidated=验证(产品出货或已经出货) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=处理完毕 StatusReceptionDraftShort=草稿 StatusReceptionValidatedShort=批准 @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/zh_HK/admin.lang b/htdocs/langs/zh_HK/admin.lang index 3971948e5a1..d79adb1e960 100644 --- a/htdocs/langs/zh_HK/admin.lang +++ b/htdocs/langs/zh_HK/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Bold reference and period in PDF -BoldLabelOnPDF=Bold label in PDF +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=Foundation Version=Version Publisher=Publisher @@ -343,7 +343,7 @@ StepNb=Step %s FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). DownloadPackageFromWebSite=Download package (for example from the official web site %s). UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. NotExistsDirect=The alternative root directory is not defined to an existing directory.
InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title LinkColor=Color of links PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective @@ -2216,3 +2218,5 @@ NativeModules=Native modules NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash diff --git a/htdocs/langs/zh_HK/bills.lang b/htdocs/langs/zh_HK/bills.lang index 3aaa5465ca0..f7d0155f41e 100644 --- a/htdocs/langs/zh_HK/bills.lang +++ b/htdocs/langs/zh_HK/bills.lang @@ -81,15 +81,14 @@ PaymentsReports=Payments reports PaymentsAlreadyDone=Payments already done PaymentsBackAlreadyDone=Refunds already done PaymentRule=Payment rule -PaymentMode=Payment Type -DefaultPaymentMode=Default Payment Type +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=Default Bank Account -PaymentTypeDC=Debit/Credit Card -PaymentTypePP=PayPal -IdPaymentMode=Payment Type (id) -CodePaymentMode=Payment Type (code) -LabelPaymentMode=Payment Type (label) -PaymentModeShort=Payment Type +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=Payment Term PaymentConditions=Payment Terms PaymentConditionsShort=Payment Terms @@ -280,6 +279,7 @@ SetMode=Set Payment Type SetRevenuStamp=Set revenue stamp Billed=Billed RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice RepeatableInvoice=Template invoice RepeatableInvoices=Template invoices Repeatable=Template @@ -449,6 +449,8 @@ PaymentTypeTRA=Bank draft PaymentTypeShortTRA=Draft PaymentTypeFAC=Factor PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal BankDetails=Bank details BankCode=Bank code DeskCode=Branch code @@ -604,3 +606,4 @@ SituationTotalProgress=Total progress %d %% 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 diff --git a/htdocs/langs/zh_HK/blockedlog.lang b/htdocs/langs/zh_HK/blockedlog.lang index 0bba5605d0f..12f28737d49 100644 --- a/htdocs/langs/zh_HK/blockedlog.lang +++ b/htdocs/langs/zh_HK/blockedlog.lang @@ -8,7 +8,7 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=List of countries where usage of this modu OnlyNonValid=Non-valid TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/zh_HK/errors.lang b/htdocs/langs/zh_HK/errors.lang index eabc784e6aa..e05f9dc7a2a 100644 --- a/htdocs/langs/zh_HK/errors.lang +++ b/htdocs/langs/zh_HK/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as co ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=Bad syntax for customer code ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. ErrorCustomerCodeRequired=Customer code required @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please mo ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. @@ -315,6 +318,7 @@ RequireAtLeastXString = Requires at least %s character(s) RequireXStringMax = Requires %s character(s) max RequireAtLeastXDigits = Requires at least %s digit(s) RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value RequireValidEmail = Email address is not valid RequireMaxLength = Length must be less than %s chars RequireMinLength = Length must be more than %s char(s) diff --git a/htdocs/langs/zh_HK/eventorganization.lang b/htdocs/langs/zh_HK/eventorganization.lang index 82951892a32..b4a7279d757 100644 --- a/htdocs/langs/zh_HK/eventorganization.lang +++ b/htdocs/langs/zh_HK/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties autom EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email of massaction to attendes -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email of massaction to speakers -EVENTORGANIZATION_FILTERATTENDEES_CAT = Filter thirdpartie's select list in attendees creation card/form with category -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Filter thirdpartie's select list in attendees creation card/form with customer type +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = Payment of your booth EventOrganizationEmailRegistrationPayment = Registration for an event EventOrganizationMassEmailAttendees = Communication to attendees EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=Price of registration PriceOfRegistrationHelp=Price to pay to register or participate in the event PriceOfBooth=Subscription price to stand a booth PriceOfBoothHelp=Subscription price to stand a booth -EventOrganizationICSLink=Link ICS for events +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=Conference Or Booth informations Attendees=Attendees ListOfAttendeesOfEvent=List of attendees of the event project DownloadICSLink = Download ICS link -EVENTORGANIZATION_SECUREKEY = Secure Key of the public registration link to a conference +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to a conference +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=Number of votes # # Status diff --git a/htdocs/langs/zh_HK/holiday.lang b/htdocs/langs/zh_HK/holiday.lang index dceaef59081..3d0ae64be0f 100644 --- a/htdocs/langs/zh_HK/holiday.lang +++ b/htdocs/langs/zh_HK/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=Holidays to approve NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays HolidayBalanceMonthlyUpdate=Monthly update of holiday balance XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/zh_HK/knowledgemanagement.lang b/htdocs/langs/zh_HK/knowledgemanagement.lang index 2426e0e7013..bcdf9740cdd 100644 --- a/htdocs/langs/zh_HK/knowledgemanagement.lang +++ b/htdocs/langs/zh_HK/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = Extrafields for Article GroupOfTicket=Group of tickets YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/zh_HK/mrp.lang b/htdocs/langs/zh_HK/mrp.lang index 3f1aac53340..74bed0d9186 100644 --- a/htdocs/langs/zh_HK/mrp.lang +++ b/htdocs/langs/zh_HK/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? ManufacturingEfficiency=Manufacturing efficiency ConsumptionEfficiency=Consumption efficiency -ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the production +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product DeleteBillOfMaterials=Delete Bill Of Materials DeleteMo=Delete Manufacturing Order diff --git a/htdocs/langs/zh_HK/other.lang b/htdocs/langs/zh_HK/other.lang index 7b509f60ff7..49ff93dd589 100644 --- a/htdocs/langs/zh_HK/other.lang +++ b/htdocs/langs/zh_HK/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=Project created by email collector from email MSG TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 SuffixSessionName=Suffix for session name +LoginWith=Login with %s ##### Export ##### ExportsArea=Exports area diff --git a/htdocs/langs/zh_HK/products.lang b/htdocs/langs/zh_HK/products.lang index a8942bd337f..14715670882 100644 --- a/htdocs/langs/zh_HK/products.lang +++ b/htdocs/langs/zh_HK/products.lang @@ -410,3 +410,4 @@ DefaultBOMDesc=The default BOM recommended to use to manufacture this product. T Rank=Rank SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/zh_HK/projects.lang b/htdocs/langs/zh_HK/projects.lang index 0d9c7ea34c8..ff542521afe 100644 --- a/htdocs/langs/zh_HK/projects.lang +++ b/htdocs/langs/zh_HK/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=Input per month InputDetail=Input detail TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=Tasks assigned to this user ResourceNotAssignedToProject=Not assigned to project ResourceNotAssignedToTheTask=Not assigned to the task @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with al SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them ProjectTasksWithoutTimeSpent=Project tasks without time spent FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=End date cannot be before start date diff --git a/htdocs/langs/zh_HK/receptions.lang b/htdocs/langs/zh_HK/receptions.lang index 46b2d689609..7f1a97d16a9 100644 --- a/htdocs/langs/zh_HK/receptions.lang +++ b/htdocs/langs/zh_HK/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=Product Reception setup +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=Ref. reception Reception=Reception Receptions=Receptions @@ -23,7 +24,9 @@ ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order ReceptionsToValidate=Receptions to validate StatusReceptionCanceled=Canceled StatusReceptionDraft=Draft -StatusReceptionValidated=Validated (products to ship or already shipped) +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) StatusReceptionProcessed=Processed StatusReceptionDraftShort=Draft StatusReceptionValidatedShort=Validated @@ -36,7 +39,7 @@ StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated SendReceptionByEMail=Send reception by email SendReceptionRef=Submission of reception %s ActionsOnReception=Events on reception -ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order record. +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. ReceptionLine=Reception line ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received @@ -46,3 +49,6 @@ ReceptionsReceiptModel=Document templates for receptions NoMorePredefinedProductToDispatch=No more predefined products to dispatch ReceptionExist=A reception exists ByingPrice=Bying price +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/zh_TW/accountancy.lang b/htdocs/langs/zh_TW/accountancy.lang index 94e15da06b1..beb44dc103c 100644 --- a/htdocs/langs/zh_TW/accountancy.lang +++ b/htdocs/langs/zh_TW/accountancy.lang @@ -88,7 +88,7 @@ AccountancyAreaDescAnalyze=步驟%s:新增或編輯現有交易並生成報告 AccountancyAreaDescClosePeriod=步驟%s:關帳期,因此我們之後無法進行修改。 TheJournalCodeIsNotDefinedOnSomeBankAccount=設定中的強制性步驟尚未完成(未為所有銀行帳戶定義會計代碼日記帳) -Selectchartofaccounts=選擇有效的會計科目表 +Selectchartofaccounts=會計項目表選擇有效的會計科目表 ChangeAndLoad=修改並載入 Addanaccount=新增會計科目 AccountAccounting=會計科目 @@ -168,7 +168,7 @@ ACCOUNTING_PURCHASE_JOURNAL=採購日記帳 ACCOUNTING_MISCELLANEOUS_JOURNAL=雜項日記帳 ACCOUNTING_EXPENSEREPORT_JOURNAL=費用報表日記帳 ACCOUNTING_SOCIAL_JOURNAL=交際/社交日記帳 -ACCOUNTING_HAS_NEW_JOURNAL=有新日記帳 +ACCOUNTING_HAS_NEW_JOURNAL=有新的日記帳 ACCOUNTING_RESULT_PROFIT=結果會計科目(利潤) ACCOUNTING_RESULT_LOSS=結果會計科目(虧損) @@ -339,7 +339,7 @@ Modelcsv_normal=典型匯出 Modelcsv_CEGID=匯出為CEGID ExpertComptabilité Modelcsv_COALA=匯出為Sage Coala Modelcsv_bob50=匯出為Sage BOB 50 -Modelcsv_ciel=Export for Sage50, Ciel Compta or Compta Evo. (Format XIMPORT) +Modelcsv_ciel=匯出Sage50, Ciel Compta或Compta Evo.(XIMPORT格式) Modelcsv_quadratus=匯出為Quadratus QuadraCompta Modelcsv_ebp=匯出為EBP Modelcsv_cogilog=匯出為Cogilog @@ -413,17 +413,17 @@ ImportAccountingEntriesFECFormat=會計科目 - FEC 格式 FECFormatJournalCode=代碼日記簿(日記簿代碼) FECFormatJournalLabel=標籤日記簿 (JournalLib) FECFormatEntryNum=件數 (EcritureNum) -FECFormatEntryDate=Piece date (EcritureDate) -FECFormatGeneralAccountNumber=General account number (CompteNum) -FECFormatGeneralAccountLabel=General account label (CompteLib) -FECFormatSubledgerAccountNumber=Subledger account number (CompAuxNum) -FECFormatSubledgerAccountLabel=Subledger account number (CompAuxLib) -FECFormatPieceRef=Piece ref (PieceRef) -FECFormatPieceDate=Piece date creation (PieceDate) -FECFormatLabelOperation=Label operation (EcritureLib) +FECFormatEntryDate=記件日期 (EcritureDate) +FECFormatGeneralAccountNumber=通用帳號 (CompteNum) +FECFormatGeneralAccountLabel=通用帳號標籤 (CompteLib) +FECFormatSubledgerAccountNumber=子分類帳帳號 (CompAuxNum) +FECFormatSubledgerAccountLabel=子分類帳帳號 (CompAuxLib) +FECFormatPieceRef=計件參考 (PieceRef) +FECFormatPieceDate=記件日期建立 (PieceDate) +FECFormatLabelOperation=標籤操作(EcritureLib) FECFormatDebit=借記(借記) FECFormatCredit=貸記(貸記) -FECFormatReconcilableCode=Reconcilable code (EcritureLet) +FECFormatReconcilableCode=可協調代碼 (EcritureLet) FECFormatReconcilableDate=可對帳日期 FECFormatValidateDate=驗證日期 FECFormatMulticurrencyAmount=多國幣別金額(貨幣金額) diff --git a/htdocs/langs/zh_TW/admin.lang b/htdocs/langs/zh_TW/admin.lang index ed7f2ed4ea0..5cf0f3303c9 100644 --- a/htdocs/langs/zh_TW/admin.lang +++ b/htdocs/langs/zh_TW/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=PDF 中的粗體參考和句點 -BoldLabelOnPDF=PDF 中的粗體標籤 +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF Foundation=基金會 Version=版本 Publisher=發佈者 @@ -343,7 +343,7 @@ StepNb=步驟 %s FindPackageFromWebSite=尋找所需功能的軟體包(例如在官方網站%s上)。 DownloadPackageFromWebSite=下載軟體包(例如從官方網站%s)。 UnpackPackageInDolibarrRoot=將打包的文件解開/解壓縮到您的Dolibarr伺服器資料夾中: %s -UnpackPackageInModulesRoot=要部署/安裝外部模組,請將打包的檔案解開/解壓縮到專用於外部模組的伺服器資料夾中:
%s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s SetupIsReadyForUse=模組部署完成。但是,您必須轉到頁面設定模組%s來啟用和設定應用程式中的模組。 NotExistsDirect=替代根資料夾的資訊沒有定義到已存在的資料夾中。
InfDirAlt=從第3版起,可定義替代根資料夾。此允許您儲存到指定資料夾、插件及客製化範本。
只要在 dolibarr 的根資料夾內建立資料夾(例如: 客戶)。
@@ -1917,6 +1917,8 @@ ConfFileMustContainCustom=從應用程式安裝或建構外部模組需要將模 HighlightLinesOnMouseHover=滑鼠經過時會顯示表格行 HighlightLinesColor=滑鼠經過時突出顯示行的顏色(使用“ ffffff”表示沒有突出顯示) HighlightLinesChecked=選中時突出顯示行的顏色(使用"ffffff"表示不突出顯示) +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button TextTitleColor=頁面標題的文字顏色 LinkColor=連結的顏色 PressF5AfterChangingThis=更改此值使其生效後,按鍵盤上的CTRL + F5或清除瀏覽器暫存。 @@ -2216,3 +2218,5 @@ NativeModules=原生模組 NoDeployedModulesFoundWithThisSearchCriteria=未找到符合這些搜索條件的模組 API_DISABLE_COMPRESSION=停用API回應壓縮 EachTerminalHasItsOwnCounter=每個終端機使用自己的櫃台。 +FillAndSaveAccountIdAndSecret=先填寫並保存帳號ID和密碼 +PreviousHash=Previous hash diff --git a/htdocs/langs/zh_TW/bills.lang b/htdocs/langs/zh_TW/bills.lang index 94430b99a96..c01280f6b99 100644 --- a/htdocs/langs/zh_TW/bills.lang +++ b/htdocs/langs/zh_TW/bills.lang @@ -81,13 +81,14 @@ PaymentsReports=付款報告 PaymentsAlreadyDone=付款已完成 PaymentsBackAlreadyDone=退款已完成 PaymentRule=付款條件 -PaymentMode=付款類型 -DefaultPaymentMode=預設付款類型 +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method DefaultBankAccount=預設銀行帳戶 -IdPaymentMode=付款類型 (id) -CodePaymentMode=付款類型(編碼) -LabelPaymentMode=付款類型(標籤) -PaymentModeShort=付款類型 +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method PaymentTerm=付款條件 PaymentConditions=付款條件 PaymentConditionsShort=付款條件 diff --git a/htdocs/langs/zh_TW/blockedlog.lang b/htdocs/langs/zh_TW/blockedlog.lang index 829d2667a78..87b47889293 100644 --- a/htdocs/langs/zh_TW/blockedlog.lang +++ b/htdocs/langs/zh_TW/blockedlog.lang @@ -52,3 +52,6 @@ BlockedLogDisableNotAllowedForCountry=強制使用此模組的國家/地區清 OnlyNonValid=無效的 TooManyRecordToScanRestrictFilters=記錄太多,無法掃描/分析。請使用更嚴格的過濾條件來限制清單。 RestrictYearToExport=限制月/年匯出 +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/zh_TW/errors.lang b/htdocs/langs/zh_TW/errors.lang index 68944fc7696..ef381e5ecb3 100644 --- a/htdocs/langs/zh_TW/errors.lang +++ b/htdocs/langs/zh_TW/errors.lang @@ -27,7 +27,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=此聯絡人已被定義為以下類 ErrorCashAccountAcceptsOnlyCashMoney=這是一個現金帳戶的銀行帳戶,所以只接受現金支付的類型。 ErrorFromToAccountsMustDiffers=來源和目標的銀行帳戶必須是不同的。 ErrorBadThirdPartyName=合作方名稱的值不正確 +ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=%s是強制性的 +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory ErrorBadCustomerCodeSyntax=客戶代碼語法錯誤 ErrorBadBarCodeSyntax=條碼語法錯誤。可能是您設定了錯誤的條碼類型,或者您定義了與掃描值不匹配的條碼遮罩編號。 ErrorCustomerCodeRequired=需要客戶代碼 @@ -274,6 +276,7 @@ ErrorNotInDictionaryPaymentConditions=不在支付條款類別中,請修改。 ErrorIsNotADraft=%s 不是草案狀態 ErrorExecIdFailed=無法執行命令“id” ErrorBadCharIntoLoginName=登錄名稱中的未核准字元 +ErrorRequestTooLarge=Error, request too large # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=您的PHP參數upload_max_filesize(%s)高於PHP參數post_max_size(%s)。這不是相同的設定。 @@ -315,6 +318,7 @@ RequireAtLeastXString = 至少需要%s個字元 RequireXStringMax = 最多 %s 個字元 RequireAtLeastXDigits = 需要至少%s位數 RequireXDigitsMax = 最多%s位數 +RequireValidNumeric = Requires a numeric value RequireValidEmail = 電子郵件地址無效 RequireMaxLength = 長度需要小於%s個字元 RequireMinLength = 長度必須大於%s個字元 diff --git a/htdocs/langs/zh_TW/eventorganization.lang b/htdocs/langs/zh_TW/eventorganization.lang index f459f2adab2..964b48116b1 100644 --- a/htdocs/langs/zh_TW/eventorganization.lang +++ b/htdocs/langs/zh_TW/eventorganization.lang @@ -42,12 +42,12 @@ EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = 有人建議會議時自動建立增 EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = 當合作方推薦展位時自動建立增加到合作方的類別 EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = 收到會議建議後要發送的電子郵件模板。 EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = 收到展位建議後要發送的電子郵件模板。 -EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = 支付展位註冊費用後發送的電子郵件模板。 +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = 支付報名費後發送的電子郵件模板。 -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = 向參與者發送的批次電子郵件模板 -EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = 發送給演講者的批次電子郵件模板 -EVENTORGANIZATION_FILTERATTENDEES_CAT = 使用類別過濾參與者建立卡/表單中的合作方選擇清單 -EVENTORGANIZATION_FILTERATTENDEES_TYPE = 使用客戶類型過濾參與者建立卡/表單中合作方選擇清單 +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature # # Object @@ -71,6 +71,7 @@ EventOrganizationEmailBoothPayment = 展位付款 EventOrganizationEmailRegistrationPayment = 活動報名 EventOrganizationMassEmailAttendees = 與參與者交流 EventOrganizationMassEmailSpeakers = 與演講者交流 +ToSpeakers=致演講者 # # Event @@ -83,14 +84,14 @@ PriceOfRegistration=註冊價格 PriceOfRegistrationHelp=註冊或參加活動的費用 PriceOfBooth=展位認購價 PriceOfBoothHelp=展位認購價 -EventOrganizationICSLink=為活動連結 ICS +EventOrganizationICSLink=Link ICS for conferences ConferenceOrBoothInformation=會議或展位資訊 Attendees=參與者 ListOfAttendeesOfEvent=活動項目參與者名單 DownloadICSLink = 下載 ICS連結 -EVENTORGANIZATION_SECUREKEY = 會議的公共註冊連結安全金鑰 +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference SERVICE_BOOTH_LOCATION = 關於展位位置發票行的服務 -SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = 關於參與者訂閱會議發票行的服務 +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event NbVotes=票數 # # Status diff --git a/htdocs/langs/zh_TW/holiday.lang b/htdocs/langs/zh_TW/holiday.lang index 8a98b2b27d1..868e06f0268 100644 --- a/htdocs/langs/zh_TW/holiday.lang +++ b/htdocs/langs/zh_TW/holiday.lang @@ -134,4 +134,6 @@ HolidaysToApprove=可批准假期 NobodyHasPermissionToValidateHolidays=沒有人有權限驗證假期 HolidayBalanceMonthlyUpdate=每月更新假期餘額 XIsAUsualNonWorkingDay=%s通常為非工作日 +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=休假 %s 為草案、取消或拒絕,將被刪除 diff --git a/htdocs/langs/zh_TW/knowledgemanagement.lang b/htdocs/langs/zh_TW/knowledgemanagement.lang index 6f540d67039..83fa3e35f01 100644 --- a/htdocs/langs/zh_TW/knowledgemanagement.lang +++ b/htdocs/langs/zh_TW/knowledgemanagement.lang @@ -48,3 +48,7 @@ KnowledgeRecordExtraFields = 文章的補充屬性 GroupOfTicket=服務單群組 YouCanLinkArticleToATicketCategory=您可以將文章連結至服務單群組(因此在新服務單的有效期間將建議該文章) SuggestedForTicketsInGroup=為此群組服務單建議 + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/zh_TW/modulebuilder.lang b/htdocs/langs/zh_TW/modulebuilder.lang index ef382c35088..913db96eff9 100644 --- a/htdocs/langs/zh_TW/modulebuilder.lang +++ b/htdocs/langs/zh_TW/modulebuilder.lang @@ -83,14 +83,14 @@ ListOfMenusEntries=選單條目清單 ListOfDictionariesEntries=分類條目清單 ListOfPermissionsDefined=已定義權限清單 SeeExamples=在這裡查看範例 -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) +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=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=以PDF顯示 IsAMeasureDesc=可以將可累積欄位的值以總和放入清單中嗎? (例如:1 或 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. -LanguageDefDesc=Enter in this files, all the key and the translation for each language file. +SearchAllDesc=欄位是否用於快速搜尋工具進行搜尋? (範例:1 或 0) +SpecDefDesc=在此處輸入您想與模組一起提供的所有尚未由其他分頁卡定義的文件。您可以使用 .md 或更好的豐富的 .asciidoc 語法。 +LanguageDefDesc=在此檔案中輸入每個語言檔案的所有密鑰和翻譯。 MenusDefDesc=在此定義模組提供的選單 DictionariesDefDesc=在此定義您模組提供的字典 PermissionsDefDesc=在此定義模組提供的新權限 @@ -98,9 +98,9 @@ MenusDefDescTooltip=The menus provided by your module/application are defined in 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). -TriggerDefDesc=Define in the trigger file the code that you want to execute when a business event external to your module is executed (events triggered by other modules). -SeeIDsInUse=See IDs in use in your installation -SeeReservedIDsRangeHere=See range of reserved IDs +TriggerDefDesc=在觸發器檔案中定義當執行模組外部的業務事件(由其他模組觸發的事件)時要執行的代碼。 +SeeIDsInUse=查看安裝中使用的 ID +SeeReservedIDsRangeHere=查看保留 ID 的範圍 ToolkitForDevelopers=Dolibarr 開發人員工具集 TryToUseTheModuleBuilder=如果您具有SQL和PHP的知識,則可以使用本機模組建構器精靈。
啟用模組 %s 並通過點擊右上方選單上的 使用精靈。
警告:這是高級開發人員功能,請不要在生產 網站上進行實驗! SeeTopRightMenu=請參閱右上方選單中的 @@ -132,7 +132,7 @@ IncludeRefGenerationHelp=如果要包含代碼以自動管理參考的產生成 IncludeDocGeneration=我想從項目產生一些文件 IncludeDocGenerationHelp=如果選中此選項,將產生一些代碼以在記錄上增加“產生文件”框。 ShowOnCombobox=在組合框中顯示數值 -KeyForTooltip=Key for tooltip +KeyForTooltip=工具提示金鑰 CSSClass=編輯/建立表單的 CSS CSSViewClass=讀取表單的 CSS CSSListClass=清單的 CSS @@ -144,4 +144,4 @@ AsciiToPdfConverter=ASCII到PDF轉換器 TableNotEmptyDropCanceled=表不為空。刪除已被取消。 ModuleBuilderNotAllowed=模組建構器可使用,但不允許您的用戶使用。 ImportExportProfiles=匯入和匯出設定檔 -ValidateModBuilderDesc=Put 1 if this field need to be validated with $this->validateField() or 0 if validation required +ValidateModBuilderDesc=如果需要使用 $this->validateField() 驗證此欄位,則輸入 1;如果需要驗證,則輸入 0 diff --git a/htdocs/langs/zh_TW/mrp.lang b/htdocs/langs/zh_TW/mrp.lang index 4e0a50be74a..1c07e85c477 100644 --- a/htdocs/langs/zh_TW/mrp.lang +++ b/htdocs/langs/zh_TW/mrp.lang @@ -27,7 +27,7 @@ ConfirmCloneBillOfMaterials=您確定要複製物料清單%s嗎? ConfirmCloneMo=您確定要複製製造訂單%s嗎? ManufacturingEfficiency=製造效率 ConsumptionEfficiency=消費效率 -ValueOfMeansLoss=數值0.95表示生產期間平均損失5%% +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly ValueOfMeansLossForProductProduced=值0.95表示損失平均5%%的生產產品 DeleteBillOfMaterials=刪除物料清單 DeleteMo=刪除製造訂單 diff --git a/htdocs/langs/zh_TW/other.lang b/htdocs/langs/zh_TW/other.lang index 5cf15672a5d..9b7b349d31b 100644 --- a/htdocs/langs/zh_TW/other.lang +++ b/htdocs/langs/zh_TW/other.lang @@ -272,6 +272,7 @@ ProjectCreatedByEmailCollector=電子郵件收集器從電子郵件MSGID %s建 TicketCreatedByEmailCollector=電子郵件收集器從電子郵件MSGID %s建立的服務單 OpeningHoursFormatDesc=使用-分隔營業開始時間和營業結束時間。
使用空格輸入不同的範圍。
範例:8-12 14-18 SuffixSessionName=程序名稱的後綴 +LoginWith=使用 %s 登入 ##### Export ##### ExportsArea=出口地區 diff --git a/htdocs/langs/zh_TW/products.lang b/htdocs/langs/zh_TW/products.lang index 181045182ce..3df9decbaec 100644 --- a/htdocs/langs/zh_TW/products.lang +++ b/htdocs/langs/zh_TW/products.lang @@ -275,7 +275,7 @@ BarCodeDataForProduct=產品%s的條碼資訊: BarCodeDataForThirdparty=合作方%s的條碼資訊: ResetBarcodeForAllRecords=為所有記錄定義條碼值(這將重置已經用新值定義的條碼值) PriceByCustomer=每個客戶的價格不同 -PriceCatalogue=每個產品/服務的單次銷售價格 +PriceCatalogue=每個產品/服務的單一銷售價格 PricingRule=售價規則 AddCustomerPrice=依客戶新增價格 ForceUpdateChildPriceSoc=為客戶子公司設定相同的價格 @@ -410,3 +410,4 @@ DefaultBOMDesc=推薦用於製造此產品的預設的物料清單。僅當產 Rank=等級 SwitchOnSaleStatus=開啟銷售狀態 SwitchOnPurchaseStatus=開啟採購狀態 +StockMouvementExtraFields= Extra Fields (stock mouvement) diff --git a/htdocs/langs/zh_TW/projects.lang b/htdocs/langs/zh_TW/projects.lang index 5c0e66147a2..b89b97cd164 100644 --- a/htdocs/langs/zh_TW/projects.lang +++ b/htdocs/langs/zh_TW/projects.lang @@ -197,6 +197,7 @@ InputPerMonth=每月輸入 InputDetail=輸入詳細訊息 TimeAlreadyRecorded=這是為此任務/天和用戶%s已經記錄的花費時間 ProjectsWithThisUserAsContact=與此用戶聯絡人的專案 +ProjectsWithThisContact=Projects with this contact TasksWithThisUserAsContact=分配給此用戶的任務 ResourceNotAssignedToProject=未分配給專案 ResourceNotAssignedToTheTask=未分配給任務 @@ -284,4 +285,5 @@ PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=注意:所有任務進度為 SelectLinesOfTimeSpentToInvoice=選擇未計費的時間行,然後批次操作“產生發票”來計費 ProjectTasksWithoutTimeSpent=無需時間花費的專案任務 FormForNewLeadDesc=感謝您填寫以下表單與我們聯繫。您也可以直接發送電子郵件至 %s 。 +ProjectsHavingThisContact=Projects having this contact StartDateCannotBeAfterEndDate=結束日期不能早於開始日期 diff --git a/htdocs/langs/zh_TW/receptions.lang b/htdocs/langs/zh_TW/receptions.lang index 90931821daa..72d9ea35cf2 100644 --- a/htdocs/langs/zh_TW/receptions.lang +++ b/htdocs/langs/zh_TW/receptions.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - receptions -ReceptionsSetup=產品收貨設定 +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup RefReception=收貨參考 Reception=收貨 Receptions=收貨(s) diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 71ed5f9a7e2..20aedafd16a 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -1434,7 +1434,7 @@ class User extends CommonObject $this->db->free($resqltochecklogin); } } - if ($this->email !== '') { + if (!empty($this->email)) { $sqltochecklogin = "SELECT COUNT(*) as nb FROM ".MAIN_DB_PREFIX."user WHERE entity IN (".$this->db->sanitize((int) $this->entity).", 0) AND email = '".$this->db->escape($this->email)."'"; $resqltochecklogin = $this->db->query($sqltochecklogin); if ($resqltochecklogin) { @@ -1823,7 +1823,7 @@ class User extends CommonObject } } } - if (!empty($this->oldcopy) && $this->email !== '' && $this->oldcopy->email != $this->email) { + if (!empty($this->oldcopy) && !empty($this->email) && $this->oldcopy->email != $this->email) { $sqltochecklogin = "SELECT COUNT(*) as nb FROM ".MAIN_DB_PREFIX."user WHERE entity IN (".$this->db->sanitize((int) $this->entity).", 0) AND email = '".$this->db->escape($this->email)."'"; $resqltochecklogin = $this->db->query($sqltochecklogin); if ($resqltochecklogin) { From fafe41294a2a2cf8e949aacdcfbdfcf4e5c4e846 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 7 Feb 2022 14:29:59 +0100 Subject: [PATCH 013/225] Clean install --- htdocs/install/mysql/data/llx_const.sql | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/install/mysql/data/llx_const.sql b/htdocs/install/mysql/data/llx_const.sql index d7193d87a49..61c7336f48b 100644 --- a/htdocs/install/mysql/data/llx_const.sql +++ b/htdocs/install/mysql/data/llx_const.sql @@ -36,7 +36,6 @@ insert into llx_const (name, value, type, note, visible, entity) values ('MAIN_N insert into llx_const (name, value, type, note, visible, entity) values ('MAIN_FEATURES_LEVEL','0','chaine','Level of features to show: -1=stable+deprecated, 0=stable only (default), 1=stable+experimental, 2=stable+experimental+development',1,0); insert into llx_const (name, value, type, note, visible, entity) values ('MAILING_LIMIT_SENDBYWEB','25','chaine','Number of targets to defined packet size when sending mass email',1,0); insert into llx_const (name, value, type, note, visible, entity) values ('MAIN_ENABLE_LOG_TO_HTML','0','chaine','If this option is set to 1, it is possible to see log output at end of HTML sources by adding paramater logtohtml=1 on URL. Module log must also be enabled.',1,0); -insert into llx_const (name, value, type, note, visible, entity) values ('MAIN_SECURITY_CSRF_WITH_TOKEN','0','chaine','If this option is set to 1, a CSRF protection using an antiCSRF token is added.',1,0); -- Hidden and common to all entities insert into llx_const (name, value, type, note, visible, entity) values ('SYSLOG_HANDLERS','["mod_syslog_file"]','chaine','Which logger to use',0,0); From ee52cac3baddce7a91310b930e4b33c9520d2ddd Mon Sep 17 00:00:00 2001 From: Adrien Raze Date: Mon, 7 Feb 2022 14:34:27 +0100 Subject: [PATCH 014/225] NEW : Template supplier invoices --- .github/CONTRIBUTING.md | 5 +- .github/ISSUE_TEMPLATE/bug_report.md | 35 - .github/ISSUE_TEMPLATE/bug_report.yml | 71 + .github/ISSUE_TEMPLATE/feature_request.md | 27 - .github/ISSUE_TEMPLATE/feature_request.yml | 35 + .travis.yml | 8 +- ChangeLog | 53 +- README.md | 1 + SECURITY.md | 9 +- build/docker/Dockerfile | 16 +- build/docker/docker-compose.yml | 1 + .../Intracommreport-ManuelDebXml.pdf | Bin 225572 -> 0 bytes .../iso-normes/QR code for invoices.txt | 13 + dev/resources/iso-normes/address_format.txt | 2 + .../facturx-zugferd/README.txt | 0 ...ormat PDF A.pdf => format PDF - PDF A.pdf} | Bin ...> format_FEC - Lien_outil_de_test_agréé.pdf} | Bin ..._file.txt => format_FEC - fie example.txt} | 0 .../Intracommreport-ManuelDebXml.pdf} | Bin .../Intracommreport-ManuelDesXML.pdf | Bin .../intracommreport/schema_deb.xsd | 0 dev/resources/iso-normes/locales.txt | 2 + .../{ => iso-normes}/sepa/pain.001.001.03.xsd | 0 .../{ => iso-normes}/sepa/pain.008.001.02.xsd | 0 .../sepa/sample-credit-transfer.xml | 0 .../sepa/sample-direct-debit.xml | 0 dev/resources/{ => iso-normes}/sepa/text.txt | 0 dev/resources/iso-normes/world_tax_rates.txt | 3 + dev/setup/apache/virtualhost | 145 +- dev/tools/fixdosfiles.sh | 6 +- dev/tools/optimize_images.sh | 7 +- doc/images/appicon_128.png | Bin 6398 -> 1665 bytes doc/images/appicon_16.png | Bin 2147 -> 338 bytes doc/images/appicon_32.png | Bin 2835 -> 549 bytes doc/images/appicon_64.png | Bin 4913 -> 946 bytes doc/images/background_dolibarr.jpg | Bin 175643 -> 167014 bytes doc/images/dolibarr_256x256_black.png | Bin 1846 -> 1715 bytes doc/images/dolibarr_256x256_color.png | Bin 5078 -> 3464 bytes doc/images/dolibarr_256x256_white.png | Bin 4257 -> 3254 bytes doc/images/dolibarr_512x512_color.png | Bin 10576 -> 8533 bytes doc/images/dolibarr_logo.png | Bin 14133 -> 10312 bytes doc/images/dolibarr_screenshot11_1024x768.jpg | Bin 74017 -> 67099 bytes .../dolibarr_screenshot12_1920x1080.jpg | Bin 223838 -> 216262 bytes doc/images/dolibarr_screenshot1_1280x800.jpg | Bin 146634 -> 140952 bytes doc/images/dolibarr_screenshot1_1920x1080.jpg | Bin 287622 -> 278100 bytes doc/images/dolibarr_screenshot2_1280x800.jpg | Bin 167850 -> 159669 bytes doc/images/dolibarr_screenshot3_1280x800.png | Bin 116379 -> 132113 bytes doc/images/dolibarr_screenshot5_1280x800.jpg | Bin 138488 -> 135317 bytes doc/images/invoice.png | Bin 64306 -> 54939 bytes htdocs/accountancy/admin/account.php | 21 +- htdocs/accountancy/admin/card.php | 4 +- htdocs/accountancy/admin/journals_list.php | 4 +- htdocs/accountancy/admin/productaccount.php | 4 +- htdocs/accountancy/bookkeeping/balance.php | 4 +- htdocs/accountancy/bookkeeping/card.php | 2 +- htdocs/accountancy/bookkeeping/list.php | 2 +- .../accountancy/bookkeeping/listbyaccount.php | 6 +- .../bookkeeping/listbysubaccount.php | 6 +- .../thirdparty_lettering_customer.php | 6 +- .../thirdparty_lettering_supplier.php | 4 +- .../class/accountancyexport.class.php | 14 +- .../class/accountingaccount.class.php | 83 +- .../accountancy/class/bookkeeping.class.php | 20 +- htdocs/accountancy/closure/index.php | 64 +- htdocs/accountancy/customer/index.php | 35 +- htdocs/accountancy/customer/list.php | 3 +- htdocs/accountancy/expensereport/index.php | 77 +- htdocs/accountancy/expensereport/lines.php | 3 +- htdocs/accountancy/supplier/index.php | 16 +- htdocs/accountancy/supplier/list.php | 2 +- htdocs/adherents/agenda.php | 10 +- htdocs/adherents/card.php | 50 +- htdocs/adherents/cartes/carte.php | 12 +- htdocs/adherents/class/adherent.class.php | 7 +- .../adherents/class/adherent_type.class.php | 31 +- .../adherents/class/adherentstats.class.php | 2 +- htdocs/adherents/class/api_members.class.php | 5 +- .../class/api_memberstypes.class.php | 5 +- .../class/api_subscriptions.class.php | 5 +- htdocs/adherents/class/subscription.class.php | 11 +- htdocs/adherents/document.php | 14 +- htdocs/adherents/list.php | 4 +- htdocs/adherents/note.php | 6 +- htdocs/adherents/partnership.php | 21 - htdocs/adherents/subscription.php | 16 +- htdocs/adherents/subscription/list.php | 4 +- htdocs/adherents/type.php | 22 +- htdocs/admin/accountant.php | 2 +- htdocs/admin/agenda.php | 1 + htdocs/admin/agenda_other.php | 24 +- htdocs/admin/agenda_reminder.php | 2 + htdocs/admin/barcode.php | 1 + htdocs/admin/bom.php | 2 + htdocs/admin/commande.php | 33 +- htdocs/admin/const.php | 2 - htdocs/admin/contract.php | 2 + htdocs/admin/dav.php | 4 +- htdocs/admin/defaultvalues.php | 6 +- htdocs/admin/delivery.php | 2 + htdocs/admin/dict.php | 69 +- htdocs/admin/dolistore/css/dolistore.css | 1 - htdocs/admin/emailcollector_card.php | 19 +- htdocs/admin/eventorganization.php | 10 +- htdocs/admin/expedition.php | 2 + htdocs/admin/expensereport.php | 2 + htdocs/admin/facture.php | 2 + htdocs/admin/facture_situation.php | 246 +- htdocs/admin/fckeditor.php | 3 +- htdocs/admin/fichinter.php | 2 + htdocs/admin/holiday.php | 2 + htdocs/admin/hrm.php | 2 + htdocs/admin/ihm.php | 21 + htdocs/admin/import.php | 5 +- htdocs/admin/index.php | 17 +- htdocs/admin/knowledgemanagement.php | 3 +- htdocs/admin/limits.php | 4 +- htdocs/admin/mails_templates.php | 52 +- htdocs/admin/modulehelp.php | 3 +- htdocs/admin/modules.php | 20 +- htdocs/admin/mrp.php | 2 + htdocs/admin/notification.php | 133 +- htdocs/admin/oauth.php | 22 +- htdocs/admin/oauthlogintokens.php | 67 +- htdocs/admin/pdf.php | 62 +- htdocs/admin/propal.php | 2 + htdocs/admin/reception_setup.php | 2 + htdocs/admin/security.php | 2 +- htdocs/admin/supplier_order.php | 2 + htdocs/admin/supplier_payment.php | 2 + htdocs/admin/supplier_proposal.php | 2 + htdocs/admin/system/filecheck.php | 6 +- htdocs/admin/system/index.php | 119 - htdocs/admin/system/modules.php | 4 +- htdocs/admin/ticket.php | 2 + htdocs/admin/tools/dolibarr_export.php | 4 +- htdocs/admin/tools/export_files.php | 4 +- htdocs/admin/tools/listevents.php | 76 +- htdocs/admin/tools/listsessions.php | 4 +- htdocs/admin/translation.php | 9 +- htdocs/admin/triggers.php | 8 +- htdocs/admin/user.php | 2 + htdocs/admin/usergroup.php | 2 + htdocs/admin/workstation.php | 1 + htdocs/api/admin/index.php | 29 +- htdocs/api/class/api.class.php | 88 +- htdocs/api/class/api_documents.class.php | 3 + htdocs/api/class/api_login.class.php | 6 +- htdocs/api/class/api_setup.class.php | 176 +- htdocs/api/index.php | 28 +- htdocs/asset/class/asset_type.class.php | 6 +- htdocs/asset/document.php | 4 +- htdocs/asset/type.php | 4 +- htdocs/blockedlog/class/blockedlog.class.php | 8 +- htdocs/bom/bom_agenda.php | 4 +- htdocs/bom/bom_card.php | 31 +- htdocs/bom/bom_document.php | 4 +- htdocs/bom/class/api_boms.class.php | 5 +- htdocs/bom/class/bom.class.php | 51 +- htdocs/bom/lib/bom.lib.php | 2 +- htdocs/bom/tpl/objectline_create.tpl.php | 4 +- htdocs/bom/tpl/objectline_view.tpl.php | 40 +- htdocs/bookmarks/bookmarks.lib.php | 2 +- htdocs/bookmarks/list.php | 12 +- .../categories/class/api_categories.class.php | 5 +- htdocs/categories/class/categorie.class.php | 12 +- htdocs/categories/index.php | 9 +- htdocs/comm/action/card.php | 72 +- htdocs/comm/action/class/actioncomm.class.php | 97 +- .../action/class/actioncommreminder.class.php | 4 +- .../action/class/api_agendaevents.class.php | 5 +- .../comm/action/class/cactioncomm.class.php | 4 +- htdocs/comm/action/document.php | 10 +- htdocs/comm/action/index.php | 55 +- htdocs/comm/action/list.php | 17 +- htdocs/comm/action/pertype.php | 12 +- htdocs/comm/action/peruser.php | 12 +- htdocs/comm/action/rapport/index.php | 6 +- htdocs/comm/card.php | 10 +- htdocs/comm/contact.php | 4 +- htdocs/comm/mailing/card.php | 22 +- htdocs/comm/mailing/cibles.php | 11 +- .../html.formadvtargetemailing.class.php | 4 +- htdocs/comm/mailing/class/mailing.class.php | 10 +- htdocs/comm/mailing/list.php | 4 +- htdocs/comm/propal/card.php | 16 +- .../comm/propal/class/api_proposals.class.php | 111 +- htdocs/comm/propal/class/propal.class.php | 71 +- htdocs/comm/propal/document.php | 4 +- htdocs/comm/propal/list.php | 93 +- htdocs/comm/prospect/index.php | 2 +- htdocs/comm/remise.php | 27 +- htdocs/commande/card.php | 2 + htdocs/commande/class/api_orders.class.php | 5 +- htdocs/commande/class/commande.class.php | 33 +- htdocs/commande/customer.php | 4 +- htdocs/commande/document.php | 4 +- htdocs/commande/list.php | 133 +- .../bank/account_statement_document.php | 4 +- htdocs/compta/bank/bankentries_list.php | 110 +- htdocs/compta/bank/card.php | 8 +- htdocs/compta/bank/class/account.class.php | 10 +- .../bank/class/api_bankaccounts.class.php | 10 +- htdocs/compta/bank/document.php | 4 +- htdocs/compta/bank/info.php | 7 +- htdocs/compta/bank/line.php | 40 +- htdocs/compta/bank/list.php | 4 +- htdocs/compta/bank/releve.php | 15 +- htdocs/compta/bank/various_payment/card.php | 10 +- htdocs/compta/bank/various_payment/list.php | 4 +- .../compta/cashcontrol/cashcontrol_card.php | 4 +- htdocs/compta/charges/index.php | 4 +- htdocs/compta/clients.php | 4 +- htdocs/compta/deplacement/index.php | 4 +- htdocs/compta/deplacement/list.php | 4 +- htdocs/compta/facture/card-rec.php | 5 +- htdocs/compta/facture/card.php | 90 +- .../facture/class/api_invoices.class.php | 5 +- .../facture/class/facture-rec.class.php | 23 +- htdocs/compta/facture/class/facture.class.php | 121 +- htdocs/compta/facture/document.php | 4 +- htdocs/compta/facture/index.php | 11 +- htdocs/compta/facture/info.php | 16 +- .../compta/facture/invoicetemplate_list.php | 4 +- htdocs/compta/facture/list.php | 54 +- htdocs/compta/facture/prelevement.php | 6 +- htdocs/compta/index.php | 4 +- htdocs/compta/paiement.php | 28 +- htdocs/compta/paiement/card.php | 2 +- htdocs/compta/paiement/cheque/list.php | 4 +- .../compta/paiement/class/paiement.class.php | 2 +- htdocs/compta/paiement/list.php | 5 +- htdocs/compta/paymentbybanktransfer/index.php | 9 +- htdocs/compta/prelevement/card.php | 44 +- .../class/bonprelevement.class.php | 182 +- htdocs/compta/prelevement/demandes.php | 4 +- htdocs/compta/prelevement/index.php | 9 +- htdocs/compta/prelevement/orders_list.php | 2 +- htdocs/compta/resultat/clientfourn.php | 286 +- htdocs/compta/resultat/index.php | 66 +- htdocs/compta/sociales/card.php | 30 +- htdocs/compta/sociales/document.php | 4 +- htdocs/compta/sociales/list.php | 28 +- htdocs/compta/sociales/payments.php | 42 +- htdocs/compta/stats/cabyprodserv.php | 4 +- htdocs/compta/stats/cabyuser.php | 4 +- htdocs/compta/stats/casoc.php | 4 +- .../stats/supplier_turnover_by_prodserv.php | 4 +- .../stats/supplier_turnover_by_thirdparty.php | 4 +- htdocs/compta/tva/card.php | 5 +- htdocs/compta/tva/document.php | 4 +- htdocs/compta/tva/list.php | 4 +- htdocs/compta/tva/payments.php | 4 +- htdocs/compta/tva/quadri_detail.php | 8 +- htdocs/contact/agenda.php | 10 +- htdocs/contact/card.php | 19 +- htdocs/contact/class/contact.class.php | 21 +- htdocs/contact/consumption.php | 32 +- htdocs/contact/document.php | 10 +- htdocs/contact/list.php | 2 +- htdocs/contact/note.php | 6 +- htdocs/contact/perso.php | 6 +- htdocs/contact/project.php | 117 + htdocs/contrat/agenda.php | 6 +- htdocs/contrat/card.php | 13 +- htdocs/contrat/class/api_contracts.class.php | 5 +- htdocs/contrat/class/contrat.class.php | 2 +- htdocs/contrat/document.php | 4 +- htdocs/contrat/list.php | 4 +- htdocs/contrat/services_list.php | 4 +- htdocs/core/actions_massactions.inc.php | 6 +- htdocs/core/actions_setmoduleoptions.inc.php | 41 +- htdocs/core/ajax/check_notifications.php | 6 +- htdocs/core/ajax/onlineSign.php | 138 +- htdocs/core/ajax/row.php | 2 + htdocs/core/ajax/selectsearchbox.php | 48 +- htdocs/core/bookmarks_page.php | 18 +- .../box_accountancy_last_manual_entries.php | 2 +- htdocs/core/boxes/box_activity.php | 8 +- htdocs/core/boxes/box_commandes.php | 2 +- htdocs/core/boxes/box_comptes.php | 9 +- .../core/boxes/box_dolibarr_state_board.php | 14 +- htdocs/core/boxes/box_factures_fourn.php | 2 +- htdocs/core/boxes/box_factures_fourn_imp.php | 2 +- .../core/boxes/box_funnel_of_prospection.php | 6 +- .../boxes/box_members_last_subscriptions.php | 4 +- .../box_members_subscriptions_by_year.php | 16 +- htdocs/core/boxes/box_produits.php | 2 +- .../core/boxes/box_produits_alerte_stock.php | 25 +- htdocs/core/boxes/box_propales.php | 2 +- htdocs/core/boxes/box_scheduled_jobs.php | 2 +- htdocs/core/boxes/box_supplier_orders.php | 2 +- ...box_supplier_orders_awaiting_reception.php | 2 +- htdocs/core/boxes/box_validated_projects.php | 5 +- htdocs/core/class/CSMSFile.class.php | 10 +- htdocs/core/class/ccountry.class.php | 10 +- htdocs/core/class/comment.class.php | 12 +- .../core/class/commondocgenerator.class.php | 2 +- htdocs/core/class/commonincoterm.class.php | 8 +- htdocs/core/class/commoninvoice.class.php | 105 +- htdocs/core/class/commonobject.class.php | 552 +- htdocs/core/class/commonobjectline.class.php | 2 +- htdocs/core/class/conf.class.php | 6 +- htdocs/core/class/coreobject.class.php | 2 +- htdocs/core/class/cproductnature.class.php | 14 +- htdocs/core/class/cstate.class.php | 10 +- htdocs/core/class/ctypent.class.php | 10 +- htdocs/core/class/ctyperesource.class.php | 20 +- htdocs/core/class/cunits.class.php | 16 +- htdocs/core/class/defaultvalues.class.php | 6 +- htdocs/core/class/discount.class.php | 70 +- htdocs/core/class/doleditor.class.php | 2 +- htdocs/core/class/dolreceiptprinter.class.php | 57 +- .../core/class/emailsenderprofile.class.php | 25 +- htdocs/core/class/events.class.php | 10 +- htdocs/core/class/extrafields.class.php | 46 +- htdocs/core/class/fiscalyear.class.php | 22 +- htdocs/core/class/hookmanager.class.php | 2 +- htdocs/core/class/html.form.class.php | 463 +- .../core/class/html.formaccounting.class.php | 20 +- htdocs/core/class/html.formactions.class.php | 8 +- htdocs/core/class/html.formadmin.class.php | 24 +- htdocs/core/class/html.formbarcode.class.php | 2 +- htdocs/core/class/html.formcompany.class.php | 20 +- htdocs/core/class/html.formcontract.class.php | 8 +- .../class/html.formexpensereport.class.php | 2 +- htdocs/core/class/html.formfile.class.php | 36 +- .../class/html.formintervention.class.php | 6 +- htdocs/core/class/html.formmail.class.php | 53 +- htdocs/core/class/html.formmargin.class.php | 2 +- htdocs/core/class/html.formorder.class.php | 2 +- htdocs/core/class/html.formother.class.php | 91 +- htdocs/core/class/html.formprojet.class.php | 29 +- htdocs/core/class/html.formpropal.class.php | 2 +- htdocs/core/class/html.formsetup.class.php | 231 +- .../class/html.formsocialcontrib.class.php | 4 +- htdocs/core/class/html.formticket.class.php | 13 +- htdocs/core/class/html.formwebsite.class.php | 9 +- htdocs/core/class/infobox.class.php | 10 +- htdocs/core/class/ldap.class.php | 3 +- htdocs/core/class/link.class.php | 18 +- htdocs/core/class/menubase.class.php | 18 +- htdocs/core/class/notify.class.php | 44 +- htdocs/core/class/openid.class.php | 49 +- htdocs/core/class/translate.class.php | 30 +- htdocs/core/class/utils.class.php | 39 +- htdocs/core/class/validate.class.php | 29 +- htdocs/core/customreports.php | 89 +- htdocs/core/db/Database.interface.php | 2 +- htdocs/core/db/DoliDB.class.php | 15 + htdocs/core/db/mysqli.class.php | 19 +- htdocs/core/db/pgsql.class.php | 2 +- htdocs/core/db/sqlite3.class.php | 3 +- htdocs/core/get_info.php | 8 +- htdocs/core/get_menudiv.php | 3 +- htdocs/core/js/lib_head.js.php | 32 +- htdocs/core/js/lib_notification.js.php | 2 +- htdocs/core/js/lib_photosresize.js | 42 +- htdocs/core/lib/admin.lib.php | 3 +- htdocs/core/lib/ajax.lib.php | 18 +- htdocs/core/lib/bank.lib.php | 4 +- htdocs/core/lib/company.lib.php | 54 +- htdocs/core/lib/contact.lib.php | 162 + htdocs/core/lib/files.lib.php | 36 +- htdocs/core/lib/functions.lib.php | 350 +- htdocs/core/lib/functions2.lib.php | 2 +- htdocs/core/lib/geturl.lib.php | 29 +- htdocs/core/lib/images.lib.php | 4 +- htdocs/core/lib/invoice.lib.php | 54 +- htdocs/core/lib/modulebuilder.lib.php | 2 + htdocs/core/lib/oauth.lib.php | 10 +- htdocs/core/lib/payments.lib.php | 46 +- htdocs/core/lib/pdf.lib.php | 28 +- htdocs/core/lib/price.lib.php | 2 +- htdocs/core/lib/product.lib.php | 18 +- htdocs/core/lib/project.lib.php | 55 +- htdocs/core/lib/security.lib.php | 120 +- htdocs/core/lib/security2.lib.php | 2 +- htdocs/core/lib/sendings.lib.php | 2 +- htdocs/core/lib/signature.lib.php | 41 +- htdocs/core/lib/stock.lib.php | 5 + htdocs/core/lib/tax.lib.php | 277 +- htdocs/core/lib/usergroups.lib.php | 137 +- htdocs/core/login/functions_dolibarr.php | 3 +- htdocs/core/menus/init_menu_auguria.sql | 4 +- htdocs/core/menus/standard/eldy.lib.php | 19 +- htdocs/core/menus/standard/eldy_menu.php | 2 +- htdocs/core/modules/DolibarrModules.class.php | 14 +- .../bank/doc/pdf_sepamandate.modules.php | 20 +- .../barcode/mod_barcode_product_standard.php | 3 +- .../bom/doc/doc_generic_bom_odt.modules.php | 3 +- .../doc/doc_generic_order_odt.modules.php | 5 +- .../commande/doc/pdf_einstein.modules.php | 25 +- .../commande/doc/pdf_eratosthene.modules.php | 56 +- .../doc/doc_generic_contract_odt.modules.php | 5 +- .../delivery/doc/pdf_storm.modules.php | 3 + .../delivery/doc/pdf_typhon.modules.php | 3 + .../doc/doc_generic_shipment_odt.modules.php | 5 +- .../doc/pdf_standard.modules.php | 2 + .../doc/doc_generic_invoice_odt.modules.php | 19 +- .../modules/facture/doc/pdf_crabe.modules.php | 70 +- .../facture/doc/pdf_sponge.modules.php | 73 +- .../modules/facture/mod_facture_terre.php | 7 +- .../core/modules/facture/modules_facture.php | 6 +- .../modules/mailings/contacts1.modules.php | 78 +- .../core/modules/mailings/fraise.modules.php | 39 +- .../modules/mailings/partnership.modules.php | 264 + .../core/modules/mailings/pomme.modules.php | 12 +- .../modules/mailings/thirdparties.modules.php | 31 +- .../thirdparties_services_expired.modules.php | 6 +- .../doc/doc_generic_member_odt.class.php | 5 +- htdocs/core/modules/modAccounting.class.php | 4 +- htdocs/core/modules/modApi.class.php | 2 - htdocs/core/modules/modBom.class.php | 5 - htdocs/core/modules/modCommande.class.php | 14 +- htdocs/core/modules/modDataPolicy.class.php | 2 - htdocs/core/modules/modDav.class.php | 2 - htdocs/core/modules/modDeplacement.class.php | 5 + htdocs/core/modules/modDon.class.php | 5 + .../modules/modEventOrganization.class.php | 7 +- htdocs/core/modules/modFacture.class.php | 10 +- htdocs/core/modules/modFckeditor.class.php | 4 +- htdocs/core/modules/modFicheinter.class.php | 9 +- htdocs/core/modules/modFournisseur.class.php | 28 +- htdocs/core/modules/modHoliday.class.php | 2 +- .../core/modules/modIntracommreport.class.php | 22 + .../modules/modKnowledgeManagement.class.php | 2 +- htdocs/core/modules/modLoan.class.php | 5 + htdocs/core/modules/modMrp.class.php | 5 - .../core/modules/modMultiCurrency.class.php | 1 - htdocs/core/modules/modPartnership.class.php | 2 +- htdocs/core/modules/modPrinting.class.php | 1 - htdocs/core/modules/modProduct.class.php | 2 +- htdocs/core/modules/modPropale.class.php | 14 +- htdocs/core/modules/modReception.class.php | 2 +- htdocs/core/modules/modRecruitment.class.php | 2 +- htdocs/core/modules/modResource.class.php | 15 - htdocs/core/modules/modSociete.class.php | 23 +- htdocs/core/modules/modStock.class.php | 12 +- htdocs/core/modules/modTakePos.class.php | 2 - htdocs/core/modules/modUser.class.php | 2 +- htdocs/core/modules/modWorkstation.class.php | 4 +- htdocs/core/modules/modZapier.class.php | 6 +- .../movement/doc/pdf_standard.modules.php | 4 +- .../mrp/doc/doc_generic_mo_odt.modules.php | 3 +- .../modules/oauth/google_oauthcallback.php | 104 +- .../doc/doc_generic_product_odt.modules.php | 10 +- .../product/doc/pdf_standard.modules.php | 11 +- .../product/mod_codeproduct_elephant.php | 3 +- .../doc/doc_generic_project_odt.modules.php | 3 +- .../task/doc/doc_generic_task_odt.modules.php | 3 +- .../doc/doc_generic_proposal_odt.modules.php | 12 +- .../modules/propale/doc/pdf_azur.modules.php | 94 +- .../modules/propale/doc/pdf_cyan.modules.php | 38 +- .../doc/doc_generic_reception_odt.modules.php | 7 +- htdocs/core/modules/security/generate/README | 13 +- .../generate/modGeneratePassNone.class.php | 23 +- .../generate/modGeneratePassPerso.class.php | 113 +- .../modGeneratePassStandard.class.php | 24 +- .../security/generate/modules_genpassword.php | 17 +- .../societe/doc/doc_generic_odt.modules.php | 12 +- .../societe/mod_codeclient_elephant.php | 3 +- .../societe/mod_codecompta_aquarium.php | 3 +- .../societe/mod_codecompta_digitaria.php | 3 +- .../doc/doc_generic_stock_odt.modules.php | 5 +- .../stock/doc/pdf_standard.modules.php | 65 +- .../doc/pdf_canelle.modules.php | 1 + ...doc_generic_supplier_order_odt.modules.php | 3 +- .../supplier_order/doc/pdf_cornas.modules.php | 42 +- .../doc/pdf_muscadet.modules.php | 42 +- .../doc/pdf_standard.modules.php | 5 +- ..._generic_supplier_proposal_odt.modules.php | 3 +- .../doc/pdf_aurore.modules.php | 42 +- .../takepos/mod_takepos_ref_simple.php | 33 +- .../doc/doc_generic_ticket_odt.modules.php | 5 +- .../user/doc/doc_generic_user_odt.modules.php | 5 +- .../doc/doc_generic_usergroup_odt.modules.php | 3 +- .../workstation/mod_workstation_advanced.php | 0 .../workstation/mod_workstation_standard.php | 0 .../workstation/modules_workstation.php | 0 htdocs/core/photos_resize.php | 18 +- htdocs/core/tpl/admin_extrafields_add.tpl.php | 2 +- htdocs/core/tpl/card_presend.tpl.php | 10 +- htdocs/core/tpl/commonfields_view.tpl.php | 48 +- htdocs/core/tpl/list_print_total.tpl.php | 8 +- htdocs/core/tpl/login.tpl.php | 37 +- htdocs/core/tpl/massactions_pre.tpl.php | 65 +- htdocs/core/tpl/notes.tpl.php | 18 +- htdocs/core/tpl/object_discounts.tpl.php | 4 +- htdocs/core/tpl/objectline_create.tpl.php | 24 +- htdocs/core/tpl/objectline_edit.tpl.php | 10 +- htdocs/core/tpl/objectline_title.tpl.php | 2 +- htdocs/core/tpl/objectline_view.tpl.php | 10 +- htdocs/core/tpl/passwordforgotten.tpl.php | 21 +- ...terface_50_modAgenda_ActionsAuto.class.php | 6 +- htdocs/cron/list.php | 4 +- htdocs/delivery/card.php | 4 +- htdocs/document.php | 2 +- htdocs/don/card.php | 9 +- htdocs/don/class/api_donations.class.php | 5 +- htdocs/don/class/don.class.php | 56 +- htdocs/don/list.php | 4 +- htdocs/ecm/dir_add_card.php | 4 +- htdocs/ecm/dir_card.php | 4 +- htdocs/ecm/file_card.php | 4 +- htdocs/ecm/file_note.php | 4 +- htdocs/ecm/index.php | 4 +- htdocs/ecm/index_auto.php | 4 +- htdocs/ecm/search.php | 4 +- .../class/emailcollector.class.php | 57 +- .../class/conferenceorbooth.class.php | 7 +- .../conferenceorbooth_card.php | 136 +- .../conferenceorbooth_contact.php | 151 +- .../conferenceorbooth_document.php | 102 +- .../conferenceorbooth_list.php | 74 +- .../conferenceorboothattendee_card.php | 2 +- .../conferenceorboothattendee_list.php | 17 +- .../conferenceorboothattendee_note.php | 3 +- .../core/actions_massactions_mail.inc.php | 2 +- ...ventorganization_conferenceorbooth.lib.php | 6 +- .../tpl/massactions_mail_pre.tpl.php | 126 - htdocs/expedition/card.php | 15 +- .../expedition/class/api_shipments.class.php | 5 +- htdocs/expedition/class/expedition.class.php | 9 +- htdocs/expedition/document.php | 4 +- htdocs/expedition/list.php | 4 +- htdocs/expensereport/card.php | 31 +- .../class/api_expensereports.class.php | 5 +- .../class/expensereport.class.php | 6 +- .../class/paymentexpensereport.class.php | 11 +- htdocs/expensereport/index.php | 4 +- htdocs/exports/export.php | 9 +- htdocs/externalsite/admin/index.php | 9 +- htdocs/externalsite/frames.php | 2 +- htdocs/fichinter/card-rec.php | 2 +- .../class/api_interventions.class.php | 5 +- htdocs/fichinter/class/fichinter.class.php | 4 +- htdocs/fichinter/class/fichinterrec.class.php | 4 +- htdocs/fichinter/list.php | 2 + htdocs/filefunc.inc.php | 2 +- htdocs/fourn/ajax/getSupplierPrices.php | 30 +- htdocs/fourn/card.php | 62 +- .../class/api_supplier_invoices.class.php | 5 +- .../fourn/class/api_supplier_orders.class.php | 188 +- .../class/fournisseur.commande.class.php | 49 +- .../class/fournisseur.facture-rec.class.php | 2193 +++ .../fourn/class/fournisseur.facture.class.php | 288 +- .../fourn/class/fournisseur.product.class.php | 9 +- htdocs/fourn/class/paiementfourn.class.php | 3 +- htdocs/fourn/commande/card.php | 48 +- htdocs/fourn/commande/dispatch.php | 5 +- htdocs/fourn/commande/document.php | 4 +- htdocs/fourn/commande/info.php | 4 +- htdocs/fourn/commande/list.php | 18 +- htdocs/fourn/contact.php | 4 +- htdocs/fourn/facture/card-rec.php | 1644 ++ htdocs/fourn/facture/card.php | 287 +- htdocs/fourn/facture/document.php | 4 +- htdocs/fourn/facture/index.php | 21 +- htdocs/fourn/facture/list-rec.php | 922 + htdocs/fourn/facture/list.php | 6 +- htdocs/fourn/facture/paiement.php | 52 +- htdocs/fourn/paiement/document.php | 4 +- htdocs/fourn/paiement/list.php | 29 +- htdocs/fourn/product/list.php | 3 +- htdocs/ftp/index.php | 4 +- htdocs/holiday/card.php | 108 +- htdocs/holiday/class/holiday.class.php | 33 + htdocs/holiday/document.php | 17 - htdocs/holiday/list.php | 10 +- htdocs/holiday/month_report.php | 9 +- htdocs/hrm/admin/admin_establishment.php | 4 +- htdocs/hrm/class/evaluation.class.php | 2 +- htdocs/hrm/class/position.class.php | 4 +- htdocs/hrm/class/skill.class.php | 2 +- htdocs/hrm/class/skillrank.class.php | 4 +- htdocs/hrm/compare.php | 16 +- htdocs/hrm/core/tpl/objectline_view.tpl.php | 2 +- htdocs/hrm/establishment/info.php | 4 +- htdocs/hrm/evaluation_agenda.php | 4 +- htdocs/hrm/evaluation_card.php | 28 +- htdocs/hrm/evaluation_document.php | 4 +- htdocs/hrm/job_agenda.php | 4 +- htdocs/hrm/job_document.php | 4 +- htdocs/hrm/lib/hrm_skillrank.lib.php | 6 +- htdocs/hrm/position.php | 1 - htdocs/hrm/position_agenda.php | 4 +- htdocs/hrm/position_card.php | 2 +- htdocs/hrm/position_document.php | 4 +- htdocs/hrm/skill_agenda.php | 4 +- htdocs/hrm/skill_card.php | 6 +- htdocs/hrm/skill_document.php | 4 +- htdocs/hrm/skill_tab.php | 4 +- .../includes/OAuth/OAuth2/Service/Google.php | 318 +- .../OAuth/OAuth2/Service/WordPress.php | 110 + htdocs/includes/odtphp/Segment.php | 520 +- htdocs/includes/odtphp/odf.php | 4 +- htdocs/includes/stripe/stripe-php/build.php | 12 +- .../stripe/stripe-php/update_certs.php | 6 +- .../EmailValidator/EmailLexer.php | 74 +- .../EmailValidator/EmailParser.php | 39 +- .../EmailValidator/EmailValidator.php | 10 +- .../Exception/DomainAcceptsNoMail.php | 9 + .../Exception/ExpectingQPair.php | 2 +- .../Exception/LocalOrReservedDomain.php | 9 + .../EmailValidator/Exception/NoDNSRecord.php | 2 - .../Exception/UnclosedComment.php | 2 +- .../EmailValidator/Parser/DomainPart.php | 125 +- .../EmailValidator/Parser/LocalPart.php | 25 +- .../EmailValidator/Parser/Parser.php | 40 +- .../Validation/DNSCheckValidation.php | 129 +- .../Exception/EmptyValidationList.php | 3 + .../Validation/MultipleErrors.php | 8 +- .../Validation/MultipleValidationWithAnd.php | 22 +- .../Validation/NoRFCWarningsValidation.php | 5 +- .../Validation/RFCValidation.php | 4 +- .../Validation/SpoofCheckValidation.php | 8 +- .../EmailValidator/Warning/QuotedPart.php | 4 + .../EmailValidator/Warning/QuotedString.php | 4 + .../EmailValidator/Warning/Warning.php | 23 +- .../Doctrine/Common/Lexer/AbstractLexer.php | 5 + .../swiftmailer/lib/classes/Swift.php | 9 +- .../lib/classes/Swift/AddressEncoder.php | 25 + .../AddressEncoder/IdnAddressEncoder.php | 50 + .../AddressEncoder/Utf8AddressEncoder.php | 36 + .../classes/Swift/AddressEncoderException.php | 32 + .../lib/classes/Swift/Attachment.php | 11 +- .../AbstractFilterableInputStream.php | 15 +- .../Swift/ByteStream/ArrayByteStream.php | 20 +- .../Swift/ByteStream/FileByteStream.php | 14 +- .../ByteStream/TemporaryFileByteStream.php | 14 +- .../GenericFixedWidthReader.php | 2 +- .../Swift/CharacterReader/UsAsciiReader.php | 4 +- .../Swift/CharacterReader/Utf8Reader.php | 22 +- .../SimpleCharacterReaderFactory.php | 34 +- .../lib/classes/Swift/CharacterStream.php | 2 - .../CharacterStream/ArrayCharacterStream.php | 40 +- .../CharacterStream/NgCharacterStream.php | 17 +- .../lib/classes/Swift/DependencyContainer.php | 62 +- .../lib/classes/Swift/EmbeddedFile.php | 4 +- .../classes/Swift/Encoder/Base64Encoder.php | 2 +- .../lib/classes/Swift/Encoder/QpEncoder.php | 34 +- .../classes/Swift/Encoder/Rfc2231Encoder.php | 8 +- .../lib/classes/Swift/Events/CommandEvent.php | 9 +- .../classes/Swift/Events/CommandListener.php | 2 - .../classes/Swift/Events/EventDispatcher.php | 25 +- .../lib/classes/Swift/Events/EventObject.php | 2 - .../classes/Swift/Events/ResponseEvent.php | 5 +- .../classes/Swift/Events/ResponseListener.php | 2 - .../lib/classes/Swift/Events/SendEvent.php | 5 +- .../lib/classes/Swift/Events/SendListener.php | 4 - .../Swift/Events/SimpleEventDispatcher.php | 56 +- .../Swift/Events/TransportChangeListener.php | 8 - .../Swift/Events/TransportExceptionEvent.php | 3 - .../Events/TransportExceptionListener.php | 2 - .../lib/classes/Swift/FailoverTransport.php | 6 +- .../lib/classes/Swift/FileSpool.php | 8 +- .../lib/classes/Swift/Filterable.php | 3 +- .../lib/classes/Swift/InputByteStream.php | 4 +- .../lib/classes/Swift/IoException.php | 5 +- .../lib/classes/Swift/KeyCache.php | 7 +- .../classes/Swift/KeyCache/ArrayKeyCache.php | 33 +- .../classes/Swift/KeyCache/DiskKeyCache.php | 36 +- .../Swift/KeyCache/KeyCacheInputStream.php | 4 - .../classes/Swift/KeyCache/NullKeyCache.php | 12 +- .../KeyCache/SimpleKeyCacheInputStream.php | 4 - .../classes/Swift/LoadBalancedTransport.php | 6 +- .../swiftmailer/lib/classes/Swift/Mailer.php | 8 +- .../Swift/Mailer/ArrayRecipientIterator.php | 4 +- .../lib/classes/Swift/MemorySpool.php | 2 +- .../swiftmailer/lib/classes/Swift/Message.php | 45 +- .../lib/classes/Swift/Mime/Attachment.php | 15 +- .../ContentEncoder/Base64ContentEncoder.php | 21 +- .../ContentEncoder/NativeQpContentEncoder.php | 20 +- .../ContentEncoder/NullContentEncoder.php | 79 + .../ContentEncoder/PlainContentEncoder.php | 24 +- .../Mime/ContentEncoder/QpContentEncoder.php | 10 +- .../ContentEncoder/QpContentEncoderProxy.php | 6 +- .../Mime/ContentEncoder/RawContentEncoder.php | 9 +- .../lib/classes/Swift/Mime/EmbeddedFile.php | 8 +- .../classes/Swift/Mime/EncodingObserver.php | 2 - .../lib/classes/Swift/Mime/Header.php | 2 +- .../HeaderEncoder/Base64HeaderEncoder.php | 2 +- .../Mime/HeaderEncoder/QpHeaderEncoder.php | 6 +- .../Swift/Mime/Headers/AbstractHeader.php | 61 +- .../classes/Swift/Mime/Headers/DateHeader.php | 2 - .../Mime/Headers/IdentificationHeader.php | 25 +- .../Swift/Mime/Headers/MailboxHeader.php | 25 +- .../Swift/Mime/Headers/OpenDKIMHeader.php | 4 +- .../Mime/Headers/ParameterizedHeader.php | 28 +- .../classes/Swift/Mime/Headers/PathHeader.php | 15 +- .../Swift/Mime/Headers/UnstructuredHeader.php | 3 +- .../lib/classes/Swift/Mime/IdGenerator.php | 7 +- .../lib/classes/Swift/Mime/MimePart.php | 23 +- .../Swift/Mime/SimpleHeaderFactory.php | 24 +- .../classes/Swift/Mime/SimpleHeaderSet.php | 88 +- .../lib/classes/Swift/Mime/SimpleMessage.php | 65 +- .../classes/Swift/Mime/SimpleMimeEntity.php | 99 +- .../lib/classes/Swift/MimePart.php | 4 +- .../lib/classes/Swift/NullTransport.php | 4 +- .../classes/Swift/Plugins/AntiFloodPlugin.php | 4 - .../Swift/Plugins/BandwidthMonitorPlugin.php | 18 +- .../classes/Swift/Plugins/DecoratorPlugin.php | 28 +- .../Swift/Plugins/ImpersonatePlugin.php | 4 - .../classes/Swift/Plugins/LoggerPlugin.php | 24 +- .../Swift/Plugins/Loggers/ArrayLogger.php | 6 +- .../classes/Swift/Plugins/MessageLogger.php | 14 +- .../Swift/Plugins/PopBeforeSmtpPlugin.php | 37 +- .../Swift/Plugins/RedirectingPlugin.php | 26 +- .../lib/classes/Swift/Plugins/Reporter.php | 5 +- .../classes/Swift/Plugins/ReporterPlugin.php | 10 +- .../Swift/Plugins/Reporters/HitReporter.php | 11 +- .../Swift/Plugins/Reporters/HtmlReporter.php | 5 +- .../classes/Swift/Plugins/ThrottlerPlugin.php | 6 +- .../lib/classes/Swift/Preferences.php | 2 +- .../lib/classes/Swift/SendmailTransport.php | 4 +- .../swiftmailer/lib/classes/Swift/Signer.php | 1 - .../lib/classes/Swift/Signers/BodySigner.php | 2 - .../lib/classes/Swift/Signers/DKIMSigner.php | 78 +- .../classes/Swift/Signers/DomainKeySigner.php | 46 +- .../classes/Swift/Signers/HeaderSigner.php | 4 - .../classes/Swift/Signers/OpenDKIMSigner.php | 28 +- .../lib/classes/Swift/Signers/SMimeSigner.php | 485 +- .../lib/classes/Swift/SmtpTransport.php | 17 +- .../lib/classes/Swift/SpoolTransport.php | 6 +- .../ByteArrayReplacementFilter.php | 44 +- .../StringReplacementFilterFactory.php | 6 +- .../lib/classes/Swift/SwiftException.php | 5 +- .../lib/classes/Swift/Transport.php | 7 +- .../Swift/Transport/AbstractSmtpTransport.php | 164 +- .../Esmtp/Auth/CramMd5Authenticator.php | 28 +- .../Esmtp/Auth/LoginAuthenticator.php | 18 +- .../Esmtp/Auth/NTLMAuthenticator.php | 123 +- .../Esmtp/Auth/PlainAuthenticator.php | 16 +- .../Esmtp/Auth/XOAuth2Authenticator.php | 14 +- .../Swift/Transport/Esmtp/AuthHandler.php | 47 +- .../Swift/Transport/Esmtp/Authenticator.php | 9 +- .../Transport/Esmtp/EightBitMimeHandler.php | 113 + .../Swift/Transport/Esmtp/SmtpUtf8Handler.php | 107 + .../classes/Swift/Transport/EsmtpHandler.php | 4 +- .../Swift/Transport/EsmtpTransport.php | 101 +- .../Swift/Transport/FailoverTransport.php | 15 +- .../lib/classes/Swift/Transport/IoBuffer.php | 2 - .../Swift/Transport/LoadBalancedTransport.php | 23 +- .../classes/Swift/Transport/NullTransport.php | 11 +- .../Swift/Transport/SendmailTransport.php | 31 +- .../lib/classes/Swift/Transport/SmtpAgent.php | 2 +- .../Swift/Transport/SpoolTransport.php | 7 +- .../classes/Swift/Transport/StreamBuffer.php | 65 +- .../lib/classes/Swift/TransportException.php | 5 +- .../lib/dependency_maps/cache_deps.php | 4 +- .../lib/dependency_maps/mime_deps.php | 62 +- .../lib/dependency_maps/transport_deps.php | 56 +- .../includes/swiftmailer/lib/mime_types.php | 4 +- .../lib/swiftmailer_generate_mimes_config.php | 43 +- .../fonts/ae_fonts_2.0/ChangeLog.9745.BAK | 863 - .../freefont-20120503/ChangeLog.10070.BAK | 14707 ---------------- htdocs/index.php | 46 +- htdocs/install/check.php | 53 +- htdocs/install/default.css | 6 +- .../mysql/data/llx_20_c_departements.sql | 4 +- .../mysql/data/llx_accounting_account_de.sql | 30 +- .../mysql/data/llx_c_action_trigger.sql | 34 +- htdocs/install/mysql/data/llx_c_tva.sql | 2 +- .../install/mysql/migration/12.0.0-13.0.0.sql | 6 +- .../install/mysql/migration/13.0.0-14.0.0.sql | 20 +- .../install/mysql/migration/14.0.0-15.0.0.sql | 49 +- .../install/mysql/migration/15.0.0-16.0.0.sql | 225 + htdocs/install/mysql/migration/repair.sql | 3 + .../install/mysql/tables/llx_c_actioncomm.sql | 3 +- .../mysql/tables/llx_c_availability.sql | 3 +- .../mysql/tables/llx_c_barcode_type.sql | 3 +- .../mysql/tables/llx_c_chargesociales.sql | 3 +- .../install/mysql/tables/llx_c_civility.sql | 3 +- htdocs/install/mysql/tables/llx_c_country.sql | 3 +- .../install/mysql/tables/llx_c_currencies.sql | 3 +- .../install/mysql/tables/llx_c_effectif.sql | 3 +- .../mysql/tables/llx_c_exp_tax_cat.sql | 3 +- .../mysql/tables/llx_c_holiday_types.sql | 1 + .../mysql/tables/llx_c_hrm_department.sql | 3 +- .../mysql/tables/llx_c_hrm_function.sql | 3 +- .../mysql/tables/llx_c_input_method.sql | 3 +- .../mysql/tables/llx_c_input_reason.sql | 3 +- .../mysql/tables/llx_c_lead_status.sql | 3 +- .../install/mysql/tables/llx_c_paiement.sql | 3 +- .../mysql/tables/llx_c_paper_format.sql | 3 +- .../mysql/tables/llx_c_partnership_type.sql | 3 +- .../mysql/tables/llx_c_product_nature.sql | 4 +- .../tables/llx_c_productbatch_qcstatus.sql | 3 +- .../install/mysql/tables/llx_c_propalst.sql | 3 +- .../tables/llx_c_prospectcontactlevel.sql | 3 +- .../mysql/tables/llx_c_prospectlevel.sql | 3 +- .../mysql/tables/llx_c_recruitment_origin.sql | 3 +- .../mysql/tables/llx_c_shipment_mode.sql | 3 +- .../tables/llx_c_shipment_package_type.sql | 2 +- htdocs/install/mysql/tables/llx_c_stcomm.sql | 3 +- .../mysql/tables/llx_c_stcommcontact.sql | 3 +- .../mysql/tables/llx_c_type_contact.sql | 3 +- .../mysql/tables/llx_c_type_container.sql | 3 +- .../install/mysql/tables/llx_c_type_fees.sql | 3 +- .../mysql/tables/llx_c_type_resource.sql | 3 +- htdocs/install/mysql/tables/llx_c_typent.sql | 3 +- htdocs/install/mysql/tables/llx_c_units.sql | 3 +- .../llx_categorie_knowledgemanagement.key.sql | 2 +- ...nt.sql => llx_deplacement-deplacement.sql} | 0 .../tables/{llx_don.sql => llx_don-don.sql} | 0 ...ey.sql => llx_don_extrafields-don.key.sql} | 0 ...fields.sql => llx_don_extrafields-don.sql} | 0 ...organization_conferenceorboothattendee.sql | 2 +- ..._conferenceorboothattendee_extrafields.sql | 2 +- .../mysql/tables/llx_facture_fourn.sql | 1 + ..._facture_fourn_det_rec.extrafields.key.sql | 20 + ...llx_facture_fourn_det_rec.extrafields.sql} | 21 +- .../tables/llx_facture_fourn_det_rec.key.sql | 18 + .../tables/llx_facture_fourn_det_rec.sql | 61 + .../llx_facture_fourn_rec.extrafields.key.sql | 19 + .../llx_facture_fourn_rec.extrafields.sql | 7 + .../tables/llx_facture_fourn_rec.key.sql | 29 + .../install/mysql/tables/llx_facture_rec.sql | 2 +- .../mysql/tables/llx_hrm_evaluation-hrm.sql | 2 +- .../llx_hrm_evaluation_extrafields-hrm.sql | 2 +- .../tables/llx_hrm_evaluationdet-hrm.sql | 2 +- .../llx_hrm_evaluationdet_extrafields-hrm.sql | 2 +- .../install/mysql/tables/llx_hrm_job-hrm.sql | 2 +- .../tables/llx_hrm_job_extrafields-hrm.sql | 2 +- .../mysql/tables/llx_hrm_job_user-hrm.sql | 4 +- .../mysql/tables/llx_hrm_skill-hrm.sql | 2 +- .../tables/llx_hrm_skill_extrafields-hrm.sql | 2 +- ...> llx_intracommreport-intracommreport.sql} | 2 +- ...ry.key.sql => llx_inventory-stock.key.sql} | 0 ..._inventory.sql => llx_inventory-stock.sql} | 0 ...key.sql => llx_inventorydet-stock.key.sql} | 0 ...torydet.sql => llx_inventorydet-stock.sql} | 0 ...owledgerecord-knowledgemanagement.key.sql} | 0 ...t_knowledgerecord-knowledgemanagement.sql} | 2 +- ...d_extrafields-knowledgemanagement.key.sql} | 0 ...ecord_extrafields-knowledgemanagement.sql} | 2 +- .../{llx_loan.sql => llx_loan-loan.sql} | 0 ...chedule.sql => llx_loan_schedule-loan.sql} | 0 htdocs/install/mysql/tables/llx_mrp_mo.sql | 5 +- ...ql => llx_partnership-partnership.key.sql} | 0 ...ip.sql => llx_partnership-partnership.sql} | 2 +- ...rtnership_extrafields-partnership.key.sql} | 0 ...x_partnership_extrafields-partnership.sql} | 0 .../install/mysql/tables/llx_payment_vat.sql | 2 +- .../tables/llx_product_fournisseur_price.sql | 2 +- ...lx_product_perentity-multicompany.key.sql} | 0 ...=> llx_product_perentity-multicompany.sql} | 0 .../mysql/tables/llx_projet_task_time.sql | 1 + ...ecruitmentcandidature-recruitment.key.sql} | 0 ...nt_recruitmentcandidature-recruitment.sql} | 0 ...ndidature_extrafields-recruitment.key.sql} | 0 ...ntcandidature_extrafields-recruitment.sql} | 0 ...ecruitmentjobposition-recruitment.key.sql} | 0 ...nt_recruitmentjobposition-recruitment.sql} | 0 ...bposition_extrafields-recruitment.key.sql} | 0 ...ntjobposition_extrafields-recruitment.sql} | 0 ...lx_societe_perentity-multicompany.key.sql} | 0 ...=> llx_societe_perentity-multicompany.sql} | 0 .../install/mysql/tables/llx_societe_rib.sql | 4 +- .../mysql/tables/llx_stock_mouvement.sql | 2 +- .../llx_stock_mouvement_extrafields.sql | 24 + ...rkstation_workstation-workstation.key.sql} | 0 ...x_workstation_workstation-workstation.sql} | 2 +- ...tion_workstation_resource-workstation.sql} | 2 +- ...ion_workstation_usergroup-workstation.sql} | 2 +- ...key.sql => llx_zapier_hook-zapier.key.sql} | 0 ...er_hook.sql => llx_zapier_hook-zapier.sql} | 0 htdocs/install/repair.php | 10 +- htdocs/install/step5.php | 4 +- htdocs/install/upgrade.php | 8 +- htdocs/intracommreport/card.php | 16 +- htdocs/intracommreport/list.php | 8 +- .../class/api_knowledgemanagement.class.php | 5 +- .../class/knowledgerecord.class.php | 6 +- .../knowledgerecord_agenda.php | 4 +- .../knowledgerecord_card.php | 57 +- .../knowledgerecord_document.php | 4 +- htdocs/langs/am_ET/accountancy.lang | 8 +- htdocs/langs/am_ET/admin.lang | 67 +- htdocs/langs/am_ET/banks.lang | 3 +- htdocs/langs/am_ET/bookmarks.lang | 2 +- htdocs/langs/am_ET/companies.lang | 14 +- htdocs/langs/am_ET/compta.lang | 7 +- htdocs/langs/am_ET/errors.lang | 3 + htdocs/langs/am_ET/holiday.lang | 3 +- htdocs/langs/am_ET/install.lang | 1 + htdocs/langs/am_ET/main.lang | 13 +- htdocs/langs/am_ET/modulebuilder.lang | 4 +- htdocs/langs/am_ET/other.lang | 4 + htdocs/langs/am_ET/partnership.lang | 2 +- htdocs/langs/am_ET/productbatch.lang | 3 +- htdocs/langs/am_ET/products.lang | 6 +- htdocs/langs/am_ET/projects.lang | 1 + htdocs/langs/am_ET/stocks.lang | 19 +- htdocs/langs/am_ET/stripe.lang | 3 +- htdocs/langs/am_ET/withdrawals.lang | 8 +- htdocs/langs/ar_DZ/accountancy.lang | 8 +- htdocs/langs/ar_DZ/admin.lang | 67 +- htdocs/langs/ar_DZ/banks.lang | 3 +- htdocs/langs/ar_DZ/bookmarks.lang | 2 +- htdocs/langs/ar_DZ/companies.lang | 14 +- htdocs/langs/ar_DZ/compta.lang | 7 +- htdocs/langs/ar_DZ/errors.lang | 3 + htdocs/langs/ar_DZ/holiday.lang | 3 +- htdocs/langs/ar_DZ/install.lang | 1 + htdocs/langs/ar_DZ/main.lang | 13 +- htdocs/langs/ar_DZ/modulebuilder.lang | 4 +- htdocs/langs/ar_DZ/other.lang | 4 + htdocs/langs/ar_DZ/partnership.lang | 2 +- htdocs/langs/ar_DZ/productbatch.lang | 3 +- htdocs/langs/ar_DZ/products.lang | 6 +- htdocs/langs/ar_DZ/projects.lang | 1 + htdocs/langs/ar_DZ/stocks.lang | 19 +- htdocs/langs/ar_DZ/stripe.lang | 2 +- htdocs/langs/ar_DZ/withdrawals.lang | 8 +- htdocs/langs/ar_IQ/main.lang | 1 - htdocs/langs/ar_JO/accountancy.lang | 8 +- htdocs/langs/ar_JO/admin.lang | 69 +- htdocs/langs/ar_JO/banks.lang | 3 +- htdocs/langs/ar_JO/bookmarks.lang | 2 +- htdocs/langs/ar_JO/companies.lang | 14 +- htdocs/langs/ar_JO/compta.lang | 7 +- htdocs/langs/ar_JO/errors.lang | 3 + htdocs/langs/ar_JO/holiday.lang | 3 +- htdocs/langs/ar_JO/install.lang | 1 + htdocs/langs/ar_JO/main.lang | 13 +- htdocs/langs/ar_JO/modulebuilder.lang | 4 +- htdocs/langs/ar_JO/other.lang | 4 + htdocs/langs/ar_JO/partnership.lang | 2 +- htdocs/langs/ar_JO/productbatch.lang | 3 +- htdocs/langs/ar_JO/products.lang | 6 +- htdocs/langs/ar_JO/projects.lang | 1 + htdocs/langs/ar_JO/stocks.lang | 19 +- htdocs/langs/ar_JO/stripe.lang | 2 +- htdocs/langs/ar_JO/withdrawals.lang | 8 +- htdocs/langs/ar_SA/accountancy.lang | 8 +- htdocs/langs/ar_SA/admin.lang | 67 +- htdocs/langs/ar_SA/banks.lang | 3 +- htdocs/langs/ar_SA/bookmarks.lang | 2 +- htdocs/langs/ar_SA/companies.lang | 14 +- htdocs/langs/ar_SA/compta.lang | 23 +- htdocs/langs/ar_SA/errors.lang | 3 + htdocs/langs/ar_SA/holiday.lang | 3 +- htdocs/langs/ar_SA/install.lang | 1 + htdocs/langs/ar_SA/main.lang | 13 +- htdocs/langs/ar_SA/modulebuilder.lang | 4 +- htdocs/langs/ar_SA/other.lang | 4 + htdocs/langs/ar_SA/partnership.lang | 2 +- htdocs/langs/ar_SA/productbatch.lang | 3 +- htdocs/langs/ar_SA/products.lang | 6 +- htdocs/langs/ar_SA/projects.lang | 1 + htdocs/langs/ar_SA/stocks.lang | 19 +- htdocs/langs/ar_SA/stripe.lang | 3 +- htdocs/langs/ar_SA/withdrawals.lang | 8 +- htdocs/langs/az_AZ/accountancy.lang | 8 +- htdocs/langs/az_AZ/admin.lang | 67 +- htdocs/langs/az_AZ/banks.lang | 3 +- htdocs/langs/az_AZ/bookmarks.lang | 2 +- htdocs/langs/az_AZ/companies.lang | 14 +- htdocs/langs/az_AZ/compta.lang | 7 +- htdocs/langs/az_AZ/errors.lang | 3 + htdocs/langs/az_AZ/holiday.lang | 3 +- htdocs/langs/az_AZ/install.lang | 1 + htdocs/langs/az_AZ/main.lang | 13 +- htdocs/langs/az_AZ/modulebuilder.lang | 4 +- htdocs/langs/az_AZ/other.lang | 4 + htdocs/langs/az_AZ/partnership.lang | 2 +- htdocs/langs/az_AZ/productbatch.lang | 3 +- htdocs/langs/az_AZ/products.lang | 6 +- htdocs/langs/az_AZ/projects.lang | 1 + htdocs/langs/az_AZ/stocks.lang | 19 +- htdocs/langs/az_AZ/stripe.lang | 3 +- htdocs/langs/az_AZ/withdrawals.lang | 8 +- htdocs/langs/bg_BG/accountancy.lang | 8 +- htdocs/langs/bg_BG/admin.lang | 67 +- htdocs/langs/bg_BG/banks.lang | 3 +- htdocs/langs/bg_BG/bookmarks.lang | 2 +- htdocs/langs/bg_BG/companies.lang | 14 +- htdocs/langs/bg_BG/compta.lang | 7 +- htdocs/langs/bg_BG/errors.lang | 3 + htdocs/langs/bg_BG/holiday.lang | 3 +- htdocs/langs/bg_BG/install.lang | 1 + htdocs/langs/bg_BG/main.lang | 13 +- htdocs/langs/bg_BG/modulebuilder.lang | 4 +- htdocs/langs/bg_BG/other.lang | 4 + htdocs/langs/bg_BG/partnership.lang | 2 +- htdocs/langs/bg_BG/productbatch.lang | 3 +- htdocs/langs/bg_BG/products.lang | 6 +- htdocs/langs/bg_BG/projects.lang | 1 + htdocs/langs/bg_BG/stocks.lang | 19 +- htdocs/langs/bg_BG/stripe.lang | 3 +- htdocs/langs/bg_BG/withdrawals.lang | 8 +- htdocs/langs/bn_BD/accountancy.lang | 8 +- htdocs/langs/bn_BD/admin.lang | 67 +- htdocs/langs/bn_BD/banks.lang | 3 +- htdocs/langs/bn_BD/bookmarks.lang | 2 +- htdocs/langs/bn_BD/companies.lang | 14 +- htdocs/langs/bn_BD/compta.lang | 7 +- htdocs/langs/bn_BD/errors.lang | 3 + htdocs/langs/bn_BD/holiday.lang | 3 +- htdocs/langs/bn_BD/install.lang | 1 + htdocs/langs/bn_BD/main.lang | 13 +- htdocs/langs/bn_BD/modulebuilder.lang | 4 +- htdocs/langs/bn_BD/other.lang | 4 + htdocs/langs/bn_BD/partnership.lang | 2 +- htdocs/langs/bn_BD/productbatch.lang | 3 +- htdocs/langs/bn_BD/products.lang | 6 +- htdocs/langs/bn_BD/projects.lang | 1 + htdocs/langs/bn_BD/stocks.lang | 19 +- htdocs/langs/bn_BD/stripe.lang | 3 +- htdocs/langs/bn_BD/withdrawals.lang | 8 +- htdocs/langs/bn_IN/accountancy.lang | 8 +- htdocs/langs/bn_IN/admin.lang | 67 +- htdocs/langs/bn_IN/banks.lang | 3 +- htdocs/langs/bn_IN/bookmarks.lang | 2 +- htdocs/langs/bn_IN/companies.lang | 14 +- htdocs/langs/bn_IN/compta.lang | 7 +- htdocs/langs/bn_IN/errors.lang | 3 + htdocs/langs/bn_IN/holiday.lang | 3 +- htdocs/langs/bn_IN/install.lang | 1 + htdocs/langs/bn_IN/main.lang | 13 +- htdocs/langs/bn_IN/modulebuilder.lang | 4 +- htdocs/langs/bn_IN/other.lang | 4 + htdocs/langs/bn_IN/partnership.lang | 2 +- htdocs/langs/bn_IN/productbatch.lang | 3 +- htdocs/langs/bn_IN/products.lang | 6 +- htdocs/langs/bn_IN/projects.lang | 1 + htdocs/langs/bn_IN/stocks.lang | 19 +- htdocs/langs/bn_IN/stripe.lang | 3 +- htdocs/langs/bn_IN/withdrawals.lang | 8 +- htdocs/langs/bs_BA/accountancy.lang | 8 +- htdocs/langs/bs_BA/admin.lang | 67 +- htdocs/langs/bs_BA/banks.lang | 3 +- htdocs/langs/bs_BA/bookmarks.lang | 2 +- htdocs/langs/bs_BA/companies.lang | 14 +- htdocs/langs/bs_BA/compta.lang | 7 +- htdocs/langs/bs_BA/errors.lang | 3 + htdocs/langs/bs_BA/holiday.lang | 3 +- htdocs/langs/bs_BA/install.lang | 1 + htdocs/langs/bs_BA/main.lang | 13 +- htdocs/langs/bs_BA/modulebuilder.lang | 4 +- htdocs/langs/bs_BA/other.lang | 4 + htdocs/langs/bs_BA/partnership.lang | 2 +- htdocs/langs/bs_BA/productbatch.lang | 3 +- htdocs/langs/bs_BA/products.lang | 6 +- htdocs/langs/bs_BA/projects.lang | 1 + htdocs/langs/bs_BA/stocks.lang | 19 +- htdocs/langs/bs_BA/stripe.lang | 3 +- htdocs/langs/bs_BA/withdrawals.lang | 8 +- htdocs/langs/ca_ES/accountancy.lang | 8 +- htdocs/langs/ca_ES/admin.lang | 67 +- htdocs/langs/ca_ES/banks.lang | 3 +- htdocs/langs/ca_ES/bookmarks.lang | 2 +- htdocs/langs/ca_ES/companies.lang | 14 +- htdocs/langs/ca_ES/compta.lang | 7 +- htdocs/langs/ca_ES/errors.lang | 3 + htdocs/langs/ca_ES/holiday.lang | 3 +- htdocs/langs/ca_ES/install.lang | 1 + htdocs/langs/ca_ES/main.lang | 13 +- htdocs/langs/ca_ES/modulebuilder.lang | 4 +- htdocs/langs/ca_ES/other.lang | 4 + htdocs/langs/ca_ES/partnership.lang | 2 +- htdocs/langs/ca_ES/productbatch.lang | 3 +- htdocs/langs/ca_ES/products.lang | 6 +- htdocs/langs/ca_ES/projects.lang | 1 + htdocs/langs/ca_ES/stocks.lang | 19 +- htdocs/langs/ca_ES/stripe.lang | 2 +- htdocs/langs/ca_ES/withdrawals.lang | 8 +- htdocs/langs/cs_CZ/accountancy.lang | 12 +- htdocs/langs/cs_CZ/admin.lang | 67 +- htdocs/langs/cs_CZ/banks.lang | 3 +- htdocs/langs/cs_CZ/bookmarks.lang | 2 +- htdocs/langs/cs_CZ/companies.lang | 14 +- htdocs/langs/cs_CZ/compta.lang | 7 +- htdocs/langs/cs_CZ/errors.lang | 3 + htdocs/langs/cs_CZ/holiday.lang | 3 +- htdocs/langs/cs_CZ/install.lang | 1 + htdocs/langs/cs_CZ/main.lang | 13 +- htdocs/langs/cs_CZ/modulebuilder.lang | 4 +- htdocs/langs/cs_CZ/other.lang | 4 + htdocs/langs/cs_CZ/partnership.lang | 2 +- htdocs/langs/cs_CZ/productbatch.lang | 3 +- htdocs/langs/cs_CZ/products.lang | 6 +- htdocs/langs/cs_CZ/projects.lang | 1 + htdocs/langs/cs_CZ/stocks.lang | 19 +- htdocs/langs/cs_CZ/stripe.lang | 3 +- htdocs/langs/cs_CZ/withdrawals.lang | 8 +- htdocs/langs/da_DK/accountancy.lang | 28 +- htdocs/langs/da_DK/admin.lang | 71 +- htdocs/langs/da_DK/banks.lang | 3 +- htdocs/langs/da_DK/bookmarks.lang | 2 +- htdocs/langs/da_DK/companies.lang | 14 +- htdocs/langs/da_DK/compta.lang | 7 +- htdocs/langs/da_DK/errors.lang | 3 + htdocs/langs/da_DK/holiday.lang | 3 +- htdocs/langs/da_DK/install.lang | 1 + htdocs/langs/da_DK/main.lang | 13 +- htdocs/langs/da_DK/modulebuilder.lang | 4 +- htdocs/langs/da_DK/other.lang | 4 + htdocs/langs/da_DK/partnership.lang | 2 +- htdocs/langs/da_DK/productbatch.lang | 3 +- htdocs/langs/da_DK/products.lang | 6 +- htdocs/langs/da_DK/projects.lang | 1 + htdocs/langs/da_DK/stocks.lang | 15 +- htdocs/langs/da_DK/stripe.lang | 3 +- htdocs/langs/da_DK/withdrawals.lang | 8 +- htdocs/langs/de_AT/admin.lang | 4 +- htdocs/langs/de_AT/modulebuilder.lang | 2 - htdocs/langs/de_CH/accountancy.lang | 21 +- htdocs/langs/de_CH/admin.lang | 42 +- htdocs/langs/de_CH/banks.lang | 4 +- htdocs/langs/de_CH/bookmarks.lang | 1 - htdocs/langs/de_CH/companies.lang | 1 - htdocs/langs/de_CH/main.lang | 5 +- htdocs/langs/de_CH/modulebuilder.lang | 2 - htdocs/langs/de_CH/other.lang | 3 + htdocs/langs/de_CH/productbatch.lang | 1 - htdocs/langs/de_CH/projects.lang | 2 + htdocs/langs/de_CH/stocks.lang | 1 + htdocs/langs/de_DE/accountancy.lang | 12 +- htdocs/langs/de_DE/admin.lang | 107 +- htdocs/langs/de_DE/banks.lang | 3 +- htdocs/langs/de_DE/bills.lang | 8 +- htdocs/langs/de_DE/bookmarks.lang | 2 +- htdocs/langs/de_DE/boxes.lang | 2 +- htdocs/langs/de_DE/categories.lang | 2 +- htdocs/langs/de_DE/companies.lang | 14 +- htdocs/langs/de_DE/compta.lang | 7 +- htdocs/langs/de_DE/errors.lang | 3 + htdocs/langs/de_DE/holiday.lang | 3 +- htdocs/langs/de_DE/install.lang | 1 + htdocs/langs/de_DE/main.lang | 33 +- htdocs/langs/de_DE/modulebuilder.lang | 4 +- htdocs/langs/de_DE/mrp.lang | 6 +- htdocs/langs/de_DE/orders.lang | 8 +- htdocs/langs/de_DE/other.lang | 18 +- htdocs/langs/de_DE/partnership.lang | 2 +- htdocs/langs/de_DE/productbatch.lang | 3 +- htdocs/langs/de_DE/products.lang | 8 +- htdocs/langs/de_DE/projects.lang | 1 + htdocs/langs/de_DE/stocks.lang | 21 +- htdocs/langs/de_DE/stripe.lang | 2 +- htdocs/langs/de_DE/users.lang | 2 +- htdocs/langs/de_DE/withdrawals.lang | 6 +- htdocs/langs/de_DE/workflow.lang | 10 +- htdocs/langs/el_CY/admin.lang | 3 - htdocs/langs/el_CY/propal.lang | 2 - htdocs/langs/el_GR/accountancy.lang | 144 +- htdocs/langs/el_GR/admin.lang | 147 +- htdocs/langs/el_GR/agenda.lang | 48 +- htdocs/langs/el_GR/assets.lang | 2 + htdocs/langs/el_GR/banks.lang | 37 +- htdocs/langs/el_GR/bills.lang | 88 +- htdocs/langs/el_GR/bookmarks.lang | 4 +- htdocs/langs/el_GR/companies.lang | 14 +- htdocs/langs/el_GR/compta.lang | 7 +- htdocs/langs/el_GR/errors.lang | 5 +- htdocs/langs/el_GR/holiday.lang | 3 +- htdocs/langs/el_GR/install.lang | 1 + htdocs/langs/el_GR/main.lang | 13 +- htdocs/langs/el_GR/modulebuilder.lang | 4 +- htdocs/langs/el_GR/other.lang | 4 + htdocs/langs/el_GR/partnership.lang | 2 +- htdocs/langs/el_GR/productbatch.lang | 43 +- htdocs/langs/el_GR/products.lang | 6 +- htdocs/langs/el_GR/projects.lang | 1 + htdocs/langs/el_GR/stocks.lang | 19 +- htdocs/langs/el_GR/stripe.lang | 7 +- htdocs/langs/el_GR/withdrawals.lang | 8 +- htdocs/langs/en_AE/accountancy.lang | 3 - htdocs/langs/en_AE/admin.lang | 4 +- htdocs/langs/en_AE/cashdesk.lang | 2 - htdocs/langs/en_AE/compta.lang | 8 - htdocs/langs/en_AE/errors.lang | 2 - htdocs/langs/en_AE/eventorganization.lang | 2 - htdocs/langs/en_AE/members.lang | 3 - htdocs/langs/en_AE/modulebuilder.lang | 2 - htdocs/langs/en_AE/mrp.lang | 2 - htdocs/langs/en_AE/orders.lang | 2 - htdocs/langs/en_AE/printing.lang | 7 - htdocs/langs/en_AE/products.lang | 3 - htdocs/langs/en_AE/propal.lang | 2 - htdocs/langs/en_AE/sendings.lang | 2 - htdocs/langs/en_AE/stocks.lang | 3 - htdocs/langs/en_AE/ticket.lang | 2 - htdocs/langs/en_AE/trips.lang | 6 - htdocs/langs/en_AU/admin.lang | 4 +- htdocs/langs/en_AU/companies.lang | 6 + htdocs/langs/en_AU/compta.lang | 1 - htdocs/langs/en_AU/modulebuilder.lang | 2 - htdocs/langs/en_AU/propal.lang | 2 - htdocs/langs/en_AU/ticket.lang | 2 - htdocs/langs/en_CA/admin.lang | 4 +- htdocs/langs/en_CA/companies.lang | 6 + htdocs/langs/en_CA/modulebuilder.lang | 2 - htdocs/langs/en_CA/propal.lang | 2 - htdocs/langs/en_CA/ticket.lang | 2 - htdocs/langs/en_GB/accountancy.lang | 1 - htdocs/langs/en_GB/admin.lang | 4 +- htdocs/langs/en_GB/companies.lang | 6 + htdocs/langs/en_GB/modulebuilder.lang | 2 - htdocs/langs/en_GB/ticket.lang | 2 - htdocs/langs/en_GB/withdrawals.lang | 1 - htdocs/langs/en_IN/admin.lang | 4 +- htdocs/langs/en_IN/companies.lang | 6 + htdocs/langs/en_IN/modulebuilder.lang | 2 - htdocs/langs/en_IN/ticket.lang | 2 - htdocs/langs/en_SG/admin.lang | 4 +- htdocs/langs/en_SG/modulebuilder.lang | 2 - htdocs/langs/en_SG/propal.lang | 2 - htdocs/langs/en_SG/ticket.lang | 2 - htdocs/langs/en_US/accountancy.lang | 4 +- htdocs/langs/en_US/admin.lang | 59 +- htdocs/langs/en_US/banks.lang | 3 +- htdocs/langs/en_US/bills.lang | 17 +- htdocs/langs/en_US/blockedlog.lang | 3 + htdocs/langs/en_US/bookmarks.lang | 2 +- htdocs/langs/en_US/companies.lang | 12 + htdocs/langs/en_US/compta.lang | 5 +- htdocs/langs/en_US/errors.lang | 5 + htdocs/langs/en_US/eventorganization.lang | 17 +- htdocs/langs/en_US/holiday.lang | 2 + htdocs/langs/en_US/install.lang | 1 + htdocs/langs/en_US/knowledgemanagement.lang | 6 +- htdocs/langs/en_US/main.lang | 6 +- htdocs/langs/en_US/mrp.lang | 2 +- htdocs/langs/en_US/other.lang | 7 +- htdocs/langs/en_US/products.lang | 1 + htdocs/langs/en_US/projects.lang | 3 + htdocs/langs/en_US/receptions.lang | 3 +- htdocs/langs/en_US/stocks.lang | 12 +- htdocs/langs/en_US/withdrawals.lang | 6 +- htdocs/langs/en_ZA/accountancy.lang | 3 - htdocs/langs/en_ZA/admin.lang | 4 +- htdocs/langs/en_ZA/cashdesk.lang | 2 - htdocs/langs/en_ZA/compta.lang | 8 - htdocs/langs/en_ZA/errors.lang | 2 - htdocs/langs/en_ZA/eventorganization.lang | 2 - htdocs/langs/en_ZA/main.lang | 24 +- htdocs/langs/en_ZA/members.lang | 3 - htdocs/langs/en_ZA/modulebuilder.lang | 2 - htdocs/langs/en_ZA/mrp.lang | 2 - htdocs/langs/en_ZA/orders.lang | 2 - htdocs/langs/en_ZA/printing.lang | 7 - htdocs/langs/en_ZA/products.lang | 3 - htdocs/langs/en_ZA/propal.lang | 2 - htdocs/langs/en_ZA/sendings.lang | 2 - htdocs/langs/en_ZA/stocks.lang | 3 - htdocs/langs/en_ZA/ticket.lang | 2 - htdocs/langs/en_ZA/trips.lang | 6 - htdocs/langs/es_AR/admin.lang | 10 +- htdocs/langs/es_AR/bookmarks.lang | 1 - htdocs/langs/es_AR/companies.lang | 1 - htdocs/langs/es_AR/holiday.lang | 1 - htdocs/langs/es_AR/main.lang | 2 - htdocs/langs/es_AR/projects.lang | 2 + htdocs/langs/es_AR/withdrawals.lang | 3 +- htdocs/langs/es_BO/admin.lang | 4 +- htdocs/langs/es_BO/propal.lang | 2 - htdocs/langs/es_CL/accountancy.lang | 1 - htdocs/langs/es_CL/admin.lang | 17 +- htdocs/langs/es_CL/banks.lang | 2 - htdocs/langs/es_CL/bookmarks.lang | 1 - htdocs/langs/es_CL/companies.lang | 1 - htdocs/langs/es_CL/compta.lang | 1 - htdocs/langs/es_CL/holiday.lang | 1 - htdocs/langs/es_CL/main.lang | 2 - htdocs/langs/es_CL/modulebuilder.lang | 2 - htdocs/langs/es_CL/projects.lang | 1 + htdocs/langs/es_CL/stocks.lang | 3 +- htdocs/langs/es_CL/stripe.lang | 1 - htdocs/langs/es_CL/withdrawals.lang | 2 - htdocs/langs/es_CO/accountancy.lang | 1 - htdocs/langs/es_CO/admin.lang | 54 +- htdocs/langs/es_CO/banks.lang | 3 +- htdocs/langs/es_CO/bills.lang | 5 + htdocs/langs/es_CO/bookmarks.lang | 1 - htdocs/langs/es_CO/companies.lang | 3 +- htdocs/langs/es_CO/compta.lang | 6 +- htdocs/langs/es_CO/errors.lang | 7 + htdocs/langs/es_CO/help.lang | 1 - htdocs/langs/es_CO/holiday.lang | 2 +- htdocs/langs/es_CO/hrm.lang | 7 + htdocs/langs/es_CO/main.lang | 17 +- htdocs/langs/es_CO/modulebuilder.lang | 2 +- htdocs/langs/es_CO/oauth.lang | 4 +- htdocs/langs/es_CO/other.lang | 1 + htdocs/langs/es_CO/paybox.lang | 1 - htdocs/langs/es_CO/paypal.lang | 1 - htdocs/langs/es_CO/products.lang | 1 + htdocs/langs/es_CO/projects.lang | 7 + htdocs/langs/es_CO/receptions.lang | 4 +- htdocs/langs/es_CO/salaries.lang | 2 +- htdocs/langs/es_CO/stocks.lang | 5 +- htdocs/langs/es_CO/stripe.lang | 1 - htdocs/langs/es_CO/website.lang | 4 +- htdocs/langs/es_CO/withdrawals.lang | 3 +- htdocs/langs/es_CO/workflow.lang | 1 + htdocs/langs/es_DO/admin.lang | 4 +- htdocs/langs/es_DO/propal.lang | 2 - htdocs/langs/es_EC/accountancy.lang | 1 - htdocs/langs/es_EC/admin.lang | 16 +- htdocs/langs/es_EC/banks.lang | 1 - htdocs/langs/es_EC/bookmarks.lang | 1 - htdocs/langs/es_EC/companies.lang | 1 - htdocs/langs/es_EC/compta.lang | 2 - htdocs/langs/es_EC/holiday.lang | 1 - htdocs/langs/es_EC/main.lang | 2 - htdocs/langs/es_EC/modulebuilder.lang | 2 - htdocs/langs/es_EC/other.lang | 1 + htdocs/langs/es_EC/projects.lang | 3 + htdocs/langs/es_EC/stocks.lang | 3 +- htdocs/langs/es_EC/stripe.lang | 1 - htdocs/langs/es_EC/withdrawals.lang | 3 +- htdocs/langs/es_ES/accountancy.lang | 8 +- htdocs/langs/es_ES/admin.lang | 77 +- htdocs/langs/es_ES/banks.lang | 3 +- htdocs/langs/es_ES/bills.lang | 10 +- htdocs/langs/es_ES/bookmarks.lang | 4 +- htdocs/langs/es_ES/companies.lang | 14 +- htdocs/langs/es_ES/compta.lang | 7 +- htdocs/langs/es_ES/errors.lang | 3 + htdocs/langs/es_ES/help.lang | 2 +- htdocs/langs/es_ES/holiday.lang | 3 +- htdocs/langs/es_ES/hrm.lang | 12 +- htdocs/langs/es_ES/install.lang | 1 + htdocs/langs/es_ES/ldap.lang | 4 + htdocs/langs/es_ES/main.lang | 11 +- htdocs/langs/es_ES/modulebuilder.lang | 4 +- htdocs/langs/es_ES/oauth.lang | 4 +- htdocs/langs/es_ES/other.lang | 10 +- htdocs/langs/es_ES/partnership.lang | 4 +- htdocs/langs/es_ES/paybox.lang | 3 +- htdocs/langs/es_ES/paypal.lang | 2 +- htdocs/langs/es_ES/productbatch.lang | 3 +- htdocs/langs/es_ES/products.lang | 6 +- htdocs/langs/es_ES/projects.lang | 3 +- htdocs/langs/es_ES/receptions.lang | 9 +- htdocs/langs/es_ES/salaries.lang | 3 +- htdocs/langs/es_ES/stocks.lang | 23 +- htdocs/langs/es_ES/stripe.lang | 2 +- htdocs/langs/es_ES/website.lang | 4 +- htdocs/langs/es_ES/withdrawals.lang | 8 +- htdocs/langs/es_ES/workflow.lang | 6 +- htdocs/langs/es_GT/admin.lang | 4 +- htdocs/langs/es_GT/propal.lang | 2 - htdocs/langs/es_HN/admin.lang | 4 +- htdocs/langs/es_HN/propal.lang | 2 - htdocs/langs/es_MX/admin.lang | 7 +- htdocs/langs/es_MX/banks.lang | 14 + htdocs/langs/es_MX/bookmarks.lang | 1 - htdocs/langs/es_MX/companies.lang | 1 - htdocs/langs/es_MX/main.lang | 1 + htdocs/langs/es_MX/productbatch.lang | 1 - htdocs/langs/es_MX/stocks.lang | 1 + htdocs/langs/es_MX/withdrawals.lang | 1 + htdocs/langs/es_PA/admin.lang | 4 +- htdocs/langs/es_PA/propal.lang | 2 - htdocs/langs/es_PE/admin.lang | 4 +- htdocs/langs/es_PE/projects.lang | 1 + htdocs/langs/es_PY/admin.lang | 4 +- htdocs/langs/es_PY/propal.lang | 2 - htdocs/langs/es_US/admin.lang | 4 +- htdocs/langs/es_US/propal.lang | 2 - htdocs/langs/es_UY/admin.lang | 4 +- htdocs/langs/es_UY/propal.lang | 2 - htdocs/langs/es_VE/admin.lang | 4 +- htdocs/langs/es_VE/stocks.lang | 1 + htdocs/langs/et_EE/accountancy.lang | 8 +- htdocs/langs/et_EE/admin.lang | 67 +- htdocs/langs/et_EE/banks.lang | 3 +- htdocs/langs/et_EE/bookmarks.lang | 2 +- htdocs/langs/et_EE/companies.lang | 14 +- htdocs/langs/et_EE/compta.lang | 7 +- htdocs/langs/et_EE/errors.lang | 3 + htdocs/langs/et_EE/holiday.lang | 3 +- htdocs/langs/et_EE/install.lang | 1 + htdocs/langs/et_EE/main.lang | 13 +- htdocs/langs/et_EE/modulebuilder.lang | 4 +- htdocs/langs/et_EE/other.lang | 4 + htdocs/langs/et_EE/partnership.lang | 2 +- htdocs/langs/et_EE/productbatch.lang | 3 +- htdocs/langs/et_EE/products.lang | 6 +- htdocs/langs/et_EE/projects.lang | 1 + htdocs/langs/et_EE/stocks.lang | 19 +- htdocs/langs/et_EE/stripe.lang | 3 +- htdocs/langs/et_EE/withdrawals.lang | 8 +- htdocs/langs/eu_ES/accountancy.lang | 8 +- htdocs/langs/eu_ES/admin.lang | 67 +- htdocs/langs/eu_ES/banks.lang | 3 +- htdocs/langs/eu_ES/bookmarks.lang | 2 +- htdocs/langs/eu_ES/companies.lang | 14 +- htdocs/langs/eu_ES/compta.lang | 7 +- htdocs/langs/eu_ES/errors.lang | 3 + htdocs/langs/eu_ES/holiday.lang | 3 +- htdocs/langs/eu_ES/install.lang | 1 + htdocs/langs/eu_ES/main.lang | 13 +- htdocs/langs/eu_ES/modulebuilder.lang | 4 +- htdocs/langs/eu_ES/other.lang | 4 + htdocs/langs/eu_ES/partnership.lang | 2 +- htdocs/langs/eu_ES/productbatch.lang | 3 +- htdocs/langs/eu_ES/products.lang | 6 +- htdocs/langs/eu_ES/projects.lang | 1 + htdocs/langs/eu_ES/stocks.lang | 19 +- htdocs/langs/eu_ES/stripe.lang | 3 +- htdocs/langs/eu_ES/withdrawals.lang | 8 +- htdocs/langs/fa_IR/accountancy.lang | 8 +- htdocs/langs/fa_IR/admin.lang | 67 +- htdocs/langs/fa_IR/banks.lang | 3 +- htdocs/langs/fa_IR/bookmarks.lang | 2 +- htdocs/langs/fa_IR/companies.lang | 14 +- htdocs/langs/fa_IR/compta.lang | 7 +- htdocs/langs/fa_IR/errors.lang | 3 + htdocs/langs/fa_IR/holiday.lang | 3 +- htdocs/langs/fa_IR/install.lang | 1 + htdocs/langs/fa_IR/main.lang | 13 +- htdocs/langs/fa_IR/modulebuilder.lang | 4 +- htdocs/langs/fa_IR/other.lang | 4 + htdocs/langs/fa_IR/partnership.lang | 2 +- htdocs/langs/fa_IR/productbatch.lang | 3 +- htdocs/langs/fa_IR/products.lang | 6 +- htdocs/langs/fa_IR/projects.lang | 1 + htdocs/langs/fa_IR/stocks.lang | 19 +- htdocs/langs/fa_IR/stripe.lang | 3 +- htdocs/langs/fa_IR/withdrawals.lang | 8 +- htdocs/langs/fi_FI/accountancy.lang | 8 +- htdocs/langs/fi_FI/admin.lang | 67 +- htdocs/langs/fi_FI/banks.lang | 3 +- htdocs/langs/fi_FI/bookmarks.lang | 2 +- htdocs/langs/fi_FI/companies.lang | 14 +- htdocs/langs/fi_FI/compta.lang | 7 +- htdocs/langs/fi_FI/errors.lang | 3 + htdocs/langs/fi_FI/holiday.lang | 3 +- htdocs/langs/fi_FI/install.lang | 1 + htdocs/langs/fi_FI/main.lang | 13 +- htdocs/langs/fi_FI/modulebuilder.lang | 4 +- htdocs/langs/fi_FI/other.lang | 4 + htdocs/langs/fi_FI/partnership.lang | 2 +- htdocs/langs/fi_FI/productbatch.lang | 3 +- htdocs/langs/fi_FI/products.lang | 6 +- htdocs/langs/fi_FI/projects.lang | 1 + htdocs/langs/fi_FI/stocks.lang | 19 +- htdocs/langs/fi_FI/stripe.lang | 3 +- htdocs/langs/fi_FI/withdrawals.lang | 8 +- htdocs/langs/fr_BE/admin.lang | 2 - htdocs/langs/fr_BE/propal.lang | 2 - htdocs/langs/fr_CA/accountancy.lang | 1 - htdocs/langs/fr_CA/admin.lang | 3 - htdocs/langs/fr_CA/banks.lang | 2 - htdocs/langs/fr_CA/compta.lang | 1 - htdocs/langs/fr_CA/projects.lang | 1 + htdocs/langs/fr_CA/stocks.lang | 2 - htdocs/langs/fr_CA/withdrawals.lang | 1 - htdocs/langs/fr_CH/admin.lang | 2 - htdocs/langs/fr_CH/propal.lang | 2 - htdocs/langs/fr_CI/admin.lang | 3 - htdocs/langs/fr_CI/propal.lang | 2 - htdocs/langs/fr_CM/admin.lang | 3 - htdocs/langs/fr_CM/propal.lang | 2 - htdocs/langs/fr_FR/accountancy.lang | 10 +- htdocs/langs/fr_FR/admin.lang | 85 +- htdocs/langs/fr_FR/banks.lang | 3 +- htdocs/langs/fr_FR/bills.lang | 6 +- htdocs/langs/fr_FR/bookmarks.lang | 2 +- htdocs/langs/fr_FR/cashdesk.lang | 4 +- htdocs/langs/fr_FR/categories.lang | 2 +- htdocs/langs/fr_FR/companies.lang | 26 +- htdocs/langs/fr_FR/compta.lang | 15 +- htdocs/langs/fr_FR/cron.lang | 2 +- htdocs/langs/fr_FR/errors.lang | 6 +- htdocs/langs/fr_FR/eventorganization.lang | 30 +- htdocs/langs/fr_FR/help.lang | 2 +- htdocs/langs/fr_FR/holiday.lang | 3 +- htdocs/langs/fr_FR/hrm.lang | 36 +- htdocs/langs/fr_FR/install.lang | 1 + htdocs/langs/fr_FR/languages.lang | 2 +- htdocs/langs/fr_FR/ldap.lang | 4 + htdocs/langs/fr_FR/main.lang | 13 +- htdocs/langs/fr_FR/margins.lang | 2 +- htdocs/langs/fr_FR/modulebuilder.lang | 4 +- htdocs/langs/fr_FR/oauth.lang | 4 +- htdocs/langs/fr_FR/other.lang | 8 +- htdocs/langs/fr_FR/partnership.lang | 2 +- htdocs/langs/fr_FR/paybox.lang | 3 +- htdocs/langs/fr_FR/paypal.lang | 2 +- htdocs/langs/fr_FR/printing.lang | 2 +- htdocs/langs/fr_FR/productbatch.lang | 3 +- htdocs/langs/fr_FR/products.lang | 10 +- htdocs/langs/fr_FR/projects.lang | 7 +- htdocs/langs/fr_FR/propal.lang | 2 +- htdocs/langs/fr_FR/receptions.lang | 7 +- htdocs/langs/fr_FR/salaries.lang | 5 +- htdocs/langs/fr_FR/stocks.lang | 19 +- htdocs/langs/fr_FR/stripe.lang | 5 +- htdocs/langs/fr_FR/suppliers.lang | 7 + htdocs/langs/fr_FR/ticket.lang | 4 +- htdocs/langs/fr_FR/trips.lang | 8 +- htdocs/langs/fr_FR/website.lang | 4 +- htdocs/langs/fr_FR/withdrawals.lang | 8 +- htdocs/langs/fr_GA/admin.lang | 2 - htdocs/langs/fr_GA/propal.lang | 2 - htdocs/langs/gl_ES/accountancy.lang | 18 +- htdocs/langs/gl_ES/admin.lang | 79 +- htdocs/langs/gl_ES/banks.lang | 5 +- htdocs/langs/gl_ES/bookmarks.lang | 2 +- htdocs/langs/gl_ES/boxes.lang | 2 +- htdocs/langs/gl_ES/companies.lang | 14 +- htdocs/langs/gl_ES/compta.lang | 7 +- htdocs/langs/gl_ES/errors.lang | 3 + htdocs/langs/gl_ES/holiday.lang | 3 +- htdocs/langs/gl_ES/install.lang | 1 + htdocs/langs/gl_ES/main.lang | 13 +- htdocs/langs/gl_ES/modulebuilder.lang | 4 +- htdocs/langs/gl_ES/other.lang | 4 + htdocs/langs/gl_ES/partnership.lang | 2 +- htdocs/langs/gl_ES/productbatch.lang | 3 +- htdocs/langs/gl_ES/products.lang | 6 +- htdocs/langs/gl_ES/projects.lang | 1 + htdocs/langs/gl_ES/stocks.lang | 19 +- htdocs/langs/gl_ES/stripe.lang | 2 +- htdocs/langs/gl_ES/withdrawals.lang | 8 +- htdocs/langs/he_IL/accountancy.lang | 8 +- htdocs/langs/he_IL/admin.lang | 67 +- htdocs/langs/he_IL/banks.lang | 3 +- htdocs/langs/he_IL/bookmarks.lang | 2 +- htdocs/langs/he_IL/companies.lang | 14 +- htdocs/langs/he_IL/compta.lang | 7 +- htdocs/langs/he_IL/errors.lang | 3 + htdocs/langs/he_IL/holiday.lang | 3 +- htdocs/langs/he_IL/install.lang | 1 + htdocs/langs/he_IL/main.lang | 13 +- htdocs/langs/he_IL/modulebuilder.lang | 4 +- htdocs/langs/he_IL/other.lang | 4 + htdocs/langs/he_IL/partnership.lang | 2 +- htdocs/langs/he_IL/productbatch.lang | 3 +- htdocs/langs/he_IL/products.lang | 6 +- htdocs/langs/he_IL/projects.lang | 1 + htdocs/langs/he_IL/stocks.lang | 19 +- htdocs/langs/he_IL/stripe.lang | 3 +- htdocs/langs/he_IL/withdrawals.lang | 8 +- htdocs/langs/hi_IN/accountancy.lang | 8 +- htdocs/langs/hi_IN/admin.lang | 67 +- htdocs/langs/hi_IN/banks.lang | 3 +- htdocs/langs/hi_IN/bookmarks.lang | 2 +- htdocs/langs/hi_IN/companies.lang | 14 +- htdocs/langs/hi_IN/compta.lang | 7 +- htdocs/langs/hi_IN/errors.lang | 3 + htdocs/langs/hi_IN/holiday.lang | 3 +- htdocs/langs/hi_IN/install.lang | 1 + htdocs/langs/hi_IN/main.lang | 13 +- htdocs/langs/hi_IN/modulebuilder.lang | 4 +- htdocs/langs/hi_IN/other.lang | 4 + htdocs/langs/hi_IN/partnership.lang | 2 +- htdocs/langs/hi_IN/productbatch.lang | 3 +- htdocs/langs/hi_IN/products.lang | 6 +- htdocs/langs/hi_IN/projects.lang | 1 + htdocs/langs/hi_IN/stocks.lang | 19 +- htdocs/langs/hi_IN/stripe.lang | 3 +- htdocs/langs/hi_IN/withdrawals.lang | 8 +- htdocs/langs/hr_HR/accountancy.lang | 8 +- htdocs/langs/hr_HR/admin.lang | 67 +- htdocs/langs/hr_HR/banks.lang | 3 +- htdocs/langs/hr_HR/bookmarks.lang | 2 +- htdocs/langs/hr_HR/companies.lang | 14 +- htdocs/langs/hr_HR/compta.lang | 7 +- htdocs/langs/hr_HR/errors.lang | 3 + htdocs/langs/hr_HR/holiday.lang | 3 +- htdocs/langs/hr_HR/install.lang | 1 + htdocs/langs/hr_HR/main.lang | 13 +- htdocs/langs/hr_HR/modulebuilder.lang | 4 +- htdocs/langs/hr_HR/other.lang | 4 + htdocs/langs/hr_HR/partnership.lang | 2 +- htdocs/langs/hr_HR/productbatch.lang | 3 +- htdocs/langs/hr_HR/products.lang | 6 +- htdocs/langs/hr_HR/projects.lang | 1 + htdocs/langs/hr_HR/stocks.lang | 19 +- htdocs/langs/hr_HR/stripe.lang | 3 +- htdocs/langs/hr_HR/withdrawals.lang | 8 +- htdocs/langs/hu_HU/accountancy.lang | 8 +- htdocs/langs/hu_HU/admin.lang | 67 +- htdocs/langs/hu_HU/banks.lang | 3 +- htdocs/langs/hu_HU/bookmarks.lang | 2 +- htdocs/langs/hu_HU/companies.lang | 14 +- htdocs/langs/hu_HU/compta.lang | 7 +- htdocs/langs/hu_HU/errors.lang | 3 + htdocs/langs/hu_HU/holiday.lang | 3 +- htdocs/langs/hu_HU/install.lang | 1 + htdocs/langs/hu_HU/main.lang | 13 +- htdocs/langs/hu_HU/modulebuilder.lang | 4 +- htdocs/langs/hu_HU/other.lang | 4 + htdocs/langs/hu_HU/partnership.lang | 2 +- htdocs/langs/hu_HU/productbatch.lang | 3 +- htdocs/langs/hu_HU/products.lang | 6 +- htdocs/langs/hu_HU/projects.lang | 1 + htdocs/langs/hu_HU/stocks.lang | 19 +- htdocs/langs/hu_HU/stripe.lang | 3 +- htdocs/langs/hu_HU/withdrawals.lang | 8 +- htdocs/langs/id_ID/accountancy.lang | 8 +- htdocs/langs/id_ID/admin.lang | 69 +- htdocs/langs/id_ID/banks.lang | 3 +- htdocs/langs/id_ID/bookmarks.lang | 2 +- htdocs/langs/id_ID/companies.lang | 14 +- htdocs/langs/id_ID/compta.lang | 7 +- htdocs/langs/id_ID/errors.lang | 3 + htdocs/langs/id_ID/holiday.lang | 3 +- htdocs/langs/id_ID/install.lang | 1 + htdocs/langs/id_ID/main.lang | 13 +- htdocs/langs/id_ID/modulebuilder.lang | 4 +- htdocs/langs/id_ID/other.lang | 4 + htdocs/langs/id_ID/partnership.lang | 2 +- htdocs/langs/id_ID/productbatch.lang | 3 +- htdocs/langs/id_ID/products.lang | 6 +- htdocs/langs/id_ID/projects.lang | 1 + htdocs/langs/id_ID/stocks.lang | 19 +- htdocs/langs/id_ID/stripe.lang | 3 +- htdocs/langs/id_ID/withdrawals.lang | 8 +- htdocs/langs/is_IS/accountancy.lang | 8 +- htdocs/langs/is_IS/admin.lang | 67 +- htdocs/langs/is_IS/banks.lang | 3 +- htdocs/langs/is_IS/bookmarks.lang | 2 +- htdocs/langs/is_IS/companies.lang | 14 +- htdocs/langs/is_IS/compta.lang | 7 +- htdocs/langs/is_IS/errors.lang | 3 + htdocs/langs/is_IS/holiday.lang | 3 +- htdocs/langs/is_IS/install.lang | 1 + htdocs/langs/is_IS/main.lang | 13 +- htdocs/langs/is_IS/modulebuilder.lang | 4 +- htdocs/langs/is_IS/other.lang | 4 + htdocs/langs/is_IS/partnership.lang | 2 +- htdocs/langs/is_IS/productbatch.lang | 3 +- htdocs/langs/is_IS/products.lang | 6 +- htdocs/langs/is_IS/projects.lang | 1 + htdocs/langs/is_IS/stocks.lang | 19 +- htdocs/langs/is_IS/stripe.lang | 3 +- htdocs/langs/is_IS/withdrawals.lang | 8 +- htdocs/langs/it_CH/admin.lang | 2 - htdocs/langs/it_CH/propal.lang | 2 - htdocs/langs/it_IT/accountancy.lang | 8 +- htdocs/langs/it_IT/admin.lang | 67 +- htdocs/langs/it_IT/assets.lang | 4 +- htdocs/langs/it_IT/banks.lang | 19 +- htdocs/langs/it_IT/blockedlog.lang | 2 +- htdocs/langs/it_IT/bookmarks.lang | 4 +- htdocs/langs/it_IT/categories.lang | 12 +- htdocs/langs/it_IT/commercial.lang | 5 +- htdocs/langs/it_IT/companies.lang | 14 +- htdocs/langs/it_IT/compta.lang | 7 +- htdocs/langs/it_IT/contracts.lang | 2 +- htdocs/langs/it_IT/cron.lang | 10 +- htdocs/langs/it_IT/deliveries.lang | 2 +- htdocs/langs/it_IT/dict.lang | 2 +- htdocs/langs/it_IT/donations.lang | 2 +- htdocs/langs/it_IT/ecm.lang | 12 +- htdocs/langs/it_IT/errors.lang | 5 +- htdocs/langs/it_IT/exports.lang | 4 +- htdocs/langs/it_IT/externalsite.lang | 2 +- htdocs/langs/it_IT/ftp.lang | 18 +- htdocs/langs/it_IT/help.lang | 2 +- htdocs/langs/it_IT/holiday.lang | 3 +- htdocs/langs/it_IT/install.lang | 3 +- htdocs/langs/it_IT/interventions.lang | 2 +- htdocs/langs/it_IT/languages.lang | 18 +- htdocs/langs/it_IT/ldap.lang | 4 + htdocs/langs/it_IT/mails.lang | 16 +- htdocs/langs/it_IT/main.lang | 29 +- htdocs/langs/it_IT/margins.lang | 2 +- htdocs/langs/it_IT/modulebuilder.lang | 16 +- htdocs/langs/it_IT/oauth.lang | 4 +- htdocs/langs/it_IT/opensurvey.lang | 4 +- htdocs/langs/it_IT/orders.lang | 10 +- htdocs/langs/it_IT/other.lang | 4 + htdocs/langs/it_IT/partnership.lang | 2 +- htdocs/langs/it_IT/paybox.lang | 3 +- htdocs/langs/it_IT/paypal.lang | 2 +- htdocs/langs/it_IT/printing.lang | 12 +- htdocs/langs/it_IT/productbatch.lang | 3 +- htdocs/langs/it_IT/products.lang | 7 +- htdocs/langs/it_IT/projects.lang | 1 + htdocs/langs/it_IT/propal.lang | 18 +- htdocs/langs/it_IT/receptions.lang | 13 +- htdocs/langs/it_IT/salaries.lang | 15 +- htdocs/langs/it_IT/sendings.lang | 4 +- htdocs/langs/it_IT/stocks.lang | 19 +- htdocs/langs/it_IT/stripe.lang | 3 +- htdocs/langs/it_IT/supplier_proposal.lang | 4 + htdocs/langs/it_IT/trips.lang | 12 +- htdocs/langs/it_IT/users.lang | 10 +- htdocs/langs/it_IT/website.lang | 20 +- htdocs/langs/it_IT/withdrawals.lang | 28 +- htdocs/langs/it_IT/workflow.lang | 10 +- htdocs/langs/it_IT/zapier.lang | 4 +- htdocs/langs/ja_JP/accountancy.lang | 30 +- htdocs/langs/ja_JP/admin.lang | 271 +- htdocs/langs/ja_JP/agenda.lang | 2 +- htdocs/langs/ja_JP/banks.lang | 3 +- htdocs/langs/ja_JP/bills.lang | 16 +- htdocs/langs/ja_JP/bookmarks.lang | 2 +- htdocs/langs/ja_JP/boxes.lang | 6 +- htdocs/langs/ja_JP/cashdesk.lang | 6 +- htdocs/langs/ja_JP/commercial.lang | 4 +- htdocs/langs/ja_JP/companies.lang | 24 +- htdocs/langs/ja_JP/compta.lang | 61 +- htdocs/langs/ja_JP/contracts.lang | 4 +- htdocs/langs/ja_JP/cron.lang | 2 +- htdocs/langs/ja_JP/deliveries.lang | 2 +- htdocs/langs/ja_JP/errors.lang | 9 +- htdocs/langs/ja_JP/exports.lang | 2 +- htdocs/langs/ja_JP/help.lang | 2 +- htdocs/langs/ja_JP/holiday.lang | 5 +- htdocs/langs/ja_JP/hrm.lang | 16 +- htdocs/langs/ja_JP/install.lang | 5 +- htdocs/langs/ja_JP/intracommreport.lang | 10 +- htdocs/langs/ja_JP/main.lang | 39 +- htdocs/langs/ja_JP/margins.lang | 4 +- htdocs/langs/ja_JP/modulebuilder.lang | 4 +- htdocs/langs/ja_JP/mrp.lang | 4 +- htdocs/langs/ja_JP/oauth.lang | 4 +- htdocs/langs/ja_JP/orders.lang | 12 +- htdocs/langs/ja_JP/other.lang | 4 + htdocs/langs/ja_JP/partnership.lang | 4 +- htdocs/langs/ja_JP/paybox.lang | 2 +- htdocs/langs/ja_JP/paypal.lang | 2 +- htdocs/langs/ja_JP/productbatch.lang | 3 +- htdocs/langs/ja_JP/products.lang | 20 +- htdocs/langs/ja_JP/projects.lang | 7 +- htdocs/langs/ja_JP/recruitment.lang | 22 +- htdocs/langs/ja_JP/stocks.lang | 55 +- htdocs/langs/ja_JP/stripe.lang | 2 +- htdocs/langs/ja_JP/ticket.lang | 4 +- htdocs/langs/ja_JP/trips.lang | 24 +- htdocs/langs/ja_JP/website.lang | 4 +- htdocs/langs/ja_JP/withdrawals.lang | 10 +- htdocs/langs/ka_GE/accountancy.lang | 8 +- htdocs/langs/ka_GE/admin.lang | 67 +- htdocs/langs/ka_GE/banks.lang | 3 +- htdocs/langs/ka_GE/bookmarks.lang | 2 +- htdocs/langs/ka_GE/companies.lang | 14 +- htdocs/langs/ka_GE/compta.lang | 7 +- htdocs/langs/ka_GE/errors.lang | 3 + htdocs/langs/ka_GE/holiday.lang | 3 +- htdocs/langs/ka_GE/install.lang | 1 + htdocs/langs/ka_GE/main.lang | 13 +- htdocs/langs/ka_GE/modulebuilder.lang | 4 +- htdocs/langs/ka_GE/other.lang | 4 + htdocs/langs/ka_GE/partnership.lang | 2 +- htdocs/langs/ka_GE/productbatch.lang | 3 +- htdocs/langs/ka_GE/products.lang | 6 +- htdocs/langs/ka_GE/projects.lang | 1 + htdocs/langs/ka_GE/stocks.lang | 19 +- htdocs/langs/ka_GE/stripe.lang | 3 +- htdocs/langs/ka_GE/withdrawals.lang | 8 +- htdocs/langs/kk_KZ/accountancy.lang | 8 +- htdocs/langs/kk_KZ/admin.lang | 67 +- htdocs/langs/kk_KZ/banks.lang | 3 +- htdocs/langs/kk_KZ/bookmarks.lang | 2 +- htdocs/langs/kk_KZ/companies.lang | 14 +- htdocs/langs/kk_KZ/compta.lang | 7 +- htdocs/langs/kk_KZ/errors.lang | 3 + htdocs/langs/kk_KZ/holiday.lang | 3 +- htdocs/langs/kk_KZ/install.lang | 1 + htdocs/langs/kk_KZ/main.lang | 13 +- htdocs/langs/kk_KZ/modulebuilder.lang | 4 +- htdocs/langs/kk_KZ/other.lang | 4 + htdocs/langs/kk_KZ/partnership.lang | 2 +- htdocs/langs/kk_KZ/productbatch.lang | 3 +- htdocs/langs/kk_KZ/products.lang | 6 +- htdocs/langs/kk_KZ/projects.lang | 1 + htdocs/langs/kk_KZ/stocks.lang | 19 +- htdocs/langs/kk_KZ/stripe.lang | 2 +- htdocs/langs/kk_KZ/withdrawals.lang | 8 +- htdocs/langs/km_KH/accountancy.lang | 8 +- htdocs/langs/km_KH/admin.lang | 67 +- htdocs/langs/km_KH/banks.lang | 3 +- htdocs/langs/km_KH/bookmarks.lang | 2 +- htdocs/langs/km_KH/companies.lang | 14 +- htdocs/langs/km_KH/compta.lang | 7 +- htdocs/langs/km_KH/errors.lang | 3 + htdocs/langs/km_KH/holiday.lang | 3 +- htdocs/langs/km_KH/install.lang | 1 + htdocs/langs/km_KH/main.lang | 13 +- htdocs/langs/km_KH/modulebuilder.lang | 4 +- htdocs/langs/km_KH/other.lang | 4 + htdocs/langs/km_KH/partnership.lang | 2 +- htdocs/langs/km_KH/productbatch.lang | 3 +- htdocs/langs/km_KH/products.lang | 6 +- htdocs/langs/km_KH/projects.lang | 1 + htdocs/langs/km_KH/stocks.lang | 19 +- htdocs/langs/km_KH/stripe.lang | 3 +- htdocs/langs/km_KH/withdrawals.lang | 8 +- htdocs/langs/kn_IN/accountancy.lang | 8 +- htdocs/langs/kn_IN/admin.lang | 67 +- htdocs/langs/kn_IN/banks.lang | 3 +- htdocs/langs/kn_IN/bookmarks.lang | 2 +- htdocs/langs/kn_IN/companies.lang | 14 +- htdocs/langs/kn_IN/compta.lang | 7 +- htdocs/langs/kn_IN/errors.lang | 3 + htdocs/langs/kn_IN/holiday.lang | 3 +- htdocs/langs/kn_IN/install.lang | 1 + htdocs/langs/kn_IN/main.lang | 13 +- htdocs/langs/kn_IN/modulebuilder.lang | 4 +- htdocs/langs/kn_IN/other.lang | 4 + htdocs/langs/kn_IN/partnership.lang | 2 +- htdocs/langs/kn_IN/productbatch.lang | 3 +- htdocs/langs/kn_IN/products.lang | 6 +- htdocs/langs/kn_IN/projects.lang | 1 + htdocs/langs/kn_IN/stocks.lang | 19 +- htdocs/langs/kn_IN/stripe.lang | 3 +- htdocs/langs/kn_IN/withdrawals.lang | 8 +- htdocs/langs/ko_KR/accountancy.lang | 8 +- htdocs/langs/ko_KR/admin.lang | 181 +- htdocs/langs/ko_KR/banks.lang | 3 +- htdocs/langs/ko_KR/bookmarks.lang | 2 +- htdocs/langs/ko_KR/companies.lang | 14 +- htdocs/langs/ko_KR/compta.lang | 7 +- htdocs/langs/ko_KR/errors.lang | 3 + htdocs/langs/ko_KR/holiday.lang | 3 +- htdocs/langs/ko_KR/install.lang | 1 + htdocs/langs/ko_KR/main.lang | 13 +- htdocs/langs/ko_KR/modulebuilder.lang | 4 +- htdocs/langs/ko_KR/other.lang | 4 + htdocs/langs/ko_KR/partnership.lang | 2 +- htdocs/langs/ko_KR/productbatch.lang | 3 +- htdocs/langs/ko_KR/products.lang | 6 +- htdocs/langs/ko_KR/projects.lang | 1 + htdocs/langs/ko_KR/stocks.lang | 19 +- htdocs/langs/ko_KR/stripe.lang | 3 +- htdocs/langs/ko_KR/users.lang | 2 +- htdocs/langs/ko_KR/withdrawals.lang | 8 +- htdocs/langs/lo_LA/accountancy.lang | 8 +- htdocs/langs/lo_LA/admin.lang | 67 +- htdocs/langs/lo_LA/banks.lang | 3 +- htdocs/langs/lo_LA/bookmarks.lang | 2 +- htdocs/langs/lo_LA/companies.lang | 14 +- htdocs/langs/lo_LA/compta.lang | 7 +- htdocs/langs/lo_LA/errors.lang | 3 + htdocs/langs/lo_LA/holiday.lang | 3 +- htdocs/langs/lo_LA/install.lang | 1 + htdocs/langs/lo_LA/main.lang | 13 +- htdocs/langs/lo_LA/modulebuilder.lang | 4 +- htdocs/langs/lo_LA/other.lang | 4 + htdocs/langs/lo_LA/partnership.lang | 2 +- htdocs/langs/lo_LA/productbatch.lang | 3 +- htdocs/langs/lo_LA/products.lang | 6 +- htdocs/langs/lo_LA/projects.lang | 1 + htdocs/langs/lo_LA/stocks.lang | 19 +- htdocs/langs/lo_LA/stripe.lang | 2 +- htdocs/langs/lo_LA/withdrawals.lang | 8 +- htdocs/langs/lt_LT/accountancy.lang | 8 +- htdocs/langs/lt_LT/admin.lang | 67 +- htdocs/langs/lt_LT/banks.lang | 3 +- htdocs/langs/lt_LT/bookmarks.lang | 2 +- htdocs/langs/lt_LT/companies.lang | 14 +- htdocs/langs/lt_LT/compta.lang | 7 +- htdocs/langs/lt_LT/errors.lang | 3 + htdocs/langs/lt_LT/holiday.lang | 3 +- htdocs/langs/lt_LT/install.lang | 1 + htdocs/langs/lt_LT/main.lang | 13 +- htdocs/langs/lt_LT/modulebuilder.lang | 4 +- htdocs/langs/lt_LT/other.lang | 4 + htdocs/langs/lt_LT/partnership.lang | 2 +- htdocs/langs/lt_LT/productbatch.lang | 3 +- htdocs/langs/lt_LT/products.lang | 6 +- htdocs/langs/lt_LT/projects.lang | 1 + htdocs/langs/lt_LT/stocks.lang | 19 +- htdocs/langs/lt_LT/stripe.lang | 3 +- htdocs/langs/lt_LT/withdrawals.lang | 8 +- htdocs/langs/lv_LV/accountancy.lang | 8 +- htdocs/langs/lv_LV/admin.lang | 67 +- htdocs/langs/lv_LV/banks.lang | 3 +- htdocs/langs/lv_LV/bills.lang | 6 +- htdocs/langs/lv_LV/bookmarks.lang | 2 +- htdocs/langs/lv_LV/cashdesk.lang | 2 +- htdocs/langs/lv_LV/companies.lang | 14 +- htdocs/langs/lv_LV/compta.lang | 7 +- htdocs/langs/lv_LV/errors.lang | 3 + htdocs/langs/lv_LV/help.lang | 2 +- htdocs/langs/lv_LV/holiday.lang | 3 +- htdocs/langs/lv_LV/hrm.lang | 12 +- htdocs/langs/lv_LV/install.lang | 1 + htdocs/langs/lv_LV/ldap.lang | 18 +- htdocs/langs/lv_LV/main.lang | 13 +- htdocs/langs/lv_LV/modulebuilder.lang | 4 +- htdocs/langs/lv_LV/oauth.lang | 4 +- htdocs/langs/lv_LV/other.lang | 4 + htdocs/langs/lv_LV/partnership.lang | 4 +- htdocs/langs/lv_LV/paybox.lang | 3 +- htdocs/langs/lv_LV/paypal.lang | 2 +- htdocs/langs/lv_LV/productbatch.lang | 3 +- htdocs/langs/lv_LV/products.lang | 6 +- htdocs/langs/lv_LV/projects.lang | 1 + htdocs/langs/lv_LV/receptions.lang | 9 +- htdocs/langs/lv_LV/salaries.lang | 1 + htdocs/langs/lv_LV/stocks.lang | 17 +- htdocs/langs/lv_LV/stripe.lang | 7 +- htdocs/langs/lv_LV/ticket.lang | 2 +- htdocs/langs/lv_LV/website.lang | 4 +- htdocs/langs/lv_LV/withdrawals.lang | 8 +- htdocs/langs/lv_LV/workflow.lang | 6 +- htdocs/langs/mk_MK/accountancy.lang | 8 +- htdocs/langs/mk_MK/admin.lang | 67 +- htdocs/langs/mk_MK/banks.lang | 3 +- htdocs/langs/mk_MK/bookmarks.lang | 2 +- htdocs/langs/mk_MK/companies.lang | 14 +- htdocs/langs/mk_MK/compta.lang | 7 +- htdocs/langs/mk_MK/errors.lang | 3 + htdocs/langs/mk_MK/holiday.lang | 3 +- htdocs/langs/mk_MK/install.lang | 1 + htdocs/langs/mk_MK/main.lang | 13 +- htdocs/langs/mk_MK/modulebuilder.lang | 4 +- htdocs/langs/mk_MK/other.lang | 4 + htdocs/langs/mk_MK/partnership.lang | 2 +- htdocs/langs/mk_MK/productbatch.lang | 3 +- htdocs/langs/mk_MK/products.lang | 6 +- htdocs/langs/mk_MK/projects.lang | 1 + htdocs/langs/mk_MK/stocks.lang | 19 +- htdocs/langs/mk_MK/stripe.lang | 3 +- htdocs/langs/mk_MK/withdrawals.lang | 8 +- htdocs/langs/mn_MN/accountancy.lang | 8 +- htdocs/langs/mn_MN/admin.lang | 67 +- htdocs/langs/mn_MN/banks.lang | 3 +- htdocs/langs/mn_MN/bookmarks.lang | 2 +- htdocs/langs/mn_MN/companies.lang | 14 +- htdocs/langs/mn_MN/compta.lang | 7 +- htdocs/langs/mn_MN/errors.lang | 3 + htdocs/langs/mn_MN/holiday.lang | 3 +- htdocs/langs/mn_MN/install.lang | 1 + htdocs/langs/mn_MN/main.lang | 13 +- htdocs/langs/mn_MN/modulebuilder.lang | 4 +- htdocs/langs/mn_MN/other.lang | 4 + htdocs/langs/mn_MN/partnership.lang | 2 +- htdocs/langs/mn_MN/productbatch.lang | 3 +- htdocs/langs/mn_MN/products.lang | 6 +- htdocs/langs/mn_MN/projects.lang | 1 + htdocs/langs/mn_MN/stocks.lang | 19 +- htdocs/langs/mn_MN/stripe.lang | 3 +- htdocs/langs/mn_MN/withdrawals.lang | 8 +- htdocs/langs/my_MM/accountancy.lang | 8 +- htdocs/langs/my_MM/admin.lang | 67 +- htdocs/langs/my_MM/banks.lang | 3 +- htdocs/langs/my_MM/bookmarks.lang | 2 +- htdocs/langs/my_MM/companies.lang | 14 +- htdocs/langs/my_MM/compta.lang | 7 +- htdocs/langs/my_MM/errors.lang | 3 + htdocs/langs/my_MM/holiday.lang | 3 +- htdocs/langs/my_MM/install.lang | 1 + htdocs/langs/my_MM/main.lang | 13 +- htdocs/langs/my_MM/modulebuilder.lang | 4 +- htdocs/langs/my_MM/other.lang | 4 + htdocs/langs/my_MM/partnership.lang | 2 +- htdocs/langs/my_MM/productbatch.lang | 3 +- htdocs/langs/my_MM/products.lang | 6 +- htdocs/langs/my_MM/projects.lang | 1 + htdocs/langs/my_MM/stocks.lang | 19 +- htdocs/langs/my_MM/stripe.lang | 2 +- htdocs/langs/my_MM/withdrawals.lang | 8 +- htdocs/langs/nb_NO/accountancy.lang | 8 +- htdocs/langs/nb_NO/admin.lang | 67 +- htdocs/langs/nb_NO/banks.lang | 3 +- htdocs/langs/nb_NO/bookmarks.lang | 2 +- htdocs/langs/nb_NO/companies.lang | 14 +- htdocs/langs/nb_NO/compta.lang | 7 +- htdocs/langs/nb_NO/errors.lang | 3 + htdocs/langs/nb_NO/holiday.lang | 3 +- htdocs/langs/nb_NO/install.lang | 1 + htdocs/langs/nb_NO/main.lang | 13 +- htdocs/langs/nb_NO/modulebuilder.lang | 4 +- htdocs/langs/nb_NO/other.lang | 4 + htdocs/langs/nb_NO/partnership.lang | 2 +- htdocs/langs/nb_NO/productbatch.lang | 3 +- htdocs/langs/nb_NO/products.lang | 6 +- htdocs/langs/nb_NO/projects.lang | 1 + htdocs/langs/nb_NO/stocks.lang | 19 +- htdocs/langs/nb_NO/stripe.lang | 5 +- htdocs/langs/nb_NO/withdrawals.lang | 8 +- htdocs/langs/ne_NP/accountancy.lang | 8 +- htdocs/langs/ne_NP/admin.lang | 67 +- htdocs/langs/ne_NP/banks.lang | 3 +- htdocs/langs/ne_NP/bookmarks.lang | 2 +- htdocs/langs/ne_NP/companies.lang | 14 +- htdocs/langs/ne_NP/compta.lang | 7 +- htdocs/langs/ne_NP/errors.lang | 3 + htdocs/langs/ne_NP/holiday.lang | 3 +- htdocs/langs/ne_NP/install.lang | 1 + htdocs/langs/ne_NP/main.lang | 13 +- htdocs/langs/ne_NP/modulebuilder.lang | 4 +- htdocs/langs/ne_NP/other.lang | 4 + htdocs/langs/ne_NP/partnership.lang | 2 +- htdocs/langs/ne_NP/productbatch.lang | 3 +- htdocs/langs/ne_NP/products.lang | 6 +- htdocs/langs/ne_NP/projects.lang | 1 + htdocs/langs/ne_NP/stocks.lang | 19 +- htdocs/langs/ne_NP/stripe.lang | 3 +- htdocs/langs/ne_NP/withdrawals.lang | 8 +- htdocs/langs/nl_BE/admin.lang | 3 - htdocs/langs/nl_BE/companies.lang | 1 - htdocs/langs/nl_BE/compta.lang | 1 - htdocs/langs/nl_NL/accountancy.lang | 36 +- htdocs/langs/nl_NL/admin.lang | 203 +- htdocs/langs/nl_NL/banks.lang | 3 +- htdocs/langs/nl_NL/bookmarks.lang | 2 +- htdocs/langs/nl_NL/companies.lang | 14 +- htdocs/langs/nl_NL/compta.lang | 7 +- htdocs/langs/nl_NL/errors.lang | 3 + htdocs/langs/nl_NL/holiday.lang | 3 +- htdocs/langs/nl_NL/install.lang | 1 + htdocs/langs/nl_NL/main.lang | 25 +- htdocs/langs/nl_NL/modulebuilder.lang | 4 +- htdocs/langs/nl_NL/other.lang | 4 + htdocs/langs/nl_NL/partnership.lang | 2 +- htdocs/langs/nl_NL/productbatch.lang | 7 +- htdocs/langs/nl_NL/products.lang | 6 +- htdocs/langs/nl_NL/projects.lang | 1 + htdocs/langs/nl_NL/stocks.lang | 19 +- htdocs/langs/nl_NL/stripe.lang | 3 +- htdocs/langs/nl_NL/withdrawals.lang | 8 +- htdocs/langs/nl_NL/workflow.lang | 8 +- htdocs/langs/pl_PL/accountancy.lang | 8 +- htdocs/langs/pl_PL/admin.lang | 67 +- htdocs/langs/pl_PL/banks.lang | 3 +- htdocs/langs/pl_PL/bookmarks.lang | 2 +- htdocs/langs/pl_PL/companies.lang | 14 +- htdocs/langs/pl_PL/compta.lang | 7 +- htdocs/langs/pl_PL/errors.lang | 3 + htdocs/langs/pl_PL/holiday.lang | 3 +- htdocs/langs/pl_PL/install.lang | 1 + htdocs/langs/pl_PL/main.lang | 13 +- htdocs/langs/pl_PL/modulebuilder.lang | 4 +- htdocs/langs/pl_PL/other.lang | 4 + htdocs/langs/pl_PL/partnership.lang | 2 +- htdocs/langs/pl_PL/productbatch.lang | 13 +- htdocs/langs/pl_PL/products.lang | 6 +- htdocs/langs/pl_PL/projects.lang | 1 + htdocs/langs/pl_PL/stocks.lang | 19 +- htdocs/langs/pl_PL/stripe.lang | 93 +- htdocs/langs/pl_PL/withdrawals.lang | 8 +- htdocs/langs/pt_AO/propal.lang | 2 - htdocs/langs/pt_BR/accountancy.lang | 1 - htdocs/langs/pt_BR/admin.lang | 51 +- htdocs/langs/pt_BR/agenda.lang | 3 + htdocs/langs/pt_BR/banks.lang | 5 +- htdocs/langs/pt_BR/bookmarks.lang | 1 - htdocs/langs/pt_BR/companies.lang | 4 + htdocs/langs/pt_BR/compta.lang | 2 - htdocs/langs/pt_BR/errors.lang | 5 + htdocs/langs/pt_BR/holiday.lang | 1 - htdocs/langs/pt_BR/install.lang | 1 + htdocs/langs/pt_BR/knowledgemanagement.lang | 2 + htdocs/langs/pt_BR/main.lang | 10 +- htdocs/langs/pt_BR/modulebuilder.lang | 1 - htdocs/langs/pt_BR/other.lang | 6 + htdocs/langs/pt_BR/partnership.lang | 1 + htdocs/langs/pt_BR/productbatch.lang | 1 - htdocs/langs/pt_BR/projects.lang | 3 + htdocs/langs/pt_BR/stocks.lang | 9 +- htdocs/langs/pt_BR/stripe.lang | 3 +- htdocs/langs/pt_BR/ticket.lang | 36 +- htdocs/langs/pt_BR/withdrawals.lang | 2 +- htdocs/langs/pt_PT/accountancy.lang | 8 +- htdocs/langs/pt_PT/admin.lang | 67 +- htdocs/langs/pt_PT/banks.lang | 3 +- htdocs/langs/pt_PT/bookmarks.lang | 2 +- htdocs/langs/pt_PT/companies.lang | 14 +- htdocs/langs/pt_PT/compta.lang | 7 +- htdocs/langs/pt_PT/errors.lang | 3 + htdocs/langs/pt_PT/holiday.lang | 3 +- htdocs/langs/pt_PT/install.lang | 1 + htdocs/langs/pt_PT/main.lang | 13 +- htdocs/langs/pt_PT/modulebuilder.lang | 4 +- htdocs/langs/pt_PT/other.lang | 4 + htdocs/langs/pt_PT/partnership.lang | 2 +- htdocs/langs/pt_PT/productbatch.lang | 3 +- htdocs/langs/pt_PT/products.lang | 6 +- htdocs/langs/pt_PT/projects.lang | 1 + htdocs/langs/pt_PT/stocks.lang | 19 +- htdocs/langs/pt_PT/stripe.lang | 3 +- htdocs/langs/pt_PT/withdrawals.lang | 8 +- htdocs/langs/ro_RO/accountancy.lang | 48 +- htdocs/langs/ro_RO/admin.lang | 85 +- htdocs/langs/ro_RO/banks.lang | 27 +- htdocs/langs/ro_RO/bills.lang | 4 +- htdocs/langs/ro_RO/bookmarks.lang | 2 +- htdocs/langs/ro_RO/companies.lang | 16 +- htdocs/langs/ro_RO/compta.lang | 29 +- htdocs/langs/ro_RO/dict.lang | 78 +- htdocs/langs/ro_RO/errors.lang | 5 +- htdocs/langs/ro_RO/holiday.lang | 3 +- htdocs/langs/ro_RO/install.lang | 1 + htdocs/langs/ro_RO/main.lang | 19 +- htdocs/langs/ro_RO/modulebuilder.lang | 4 +- htdocs/langs/ro_RO/other.lang | 4 + htdocs/langs/ro_RO/partnership.lang | 2 +- htdocs/langs/ro_RO/productbatch.lang | 3 +- htdocs/langs/ro_RO/products.lang | 6 +- htdocs/langs/ro_RO/projects.lang | 3 +- htdocs/langs/ro_RO/stocks.lang | 17 +- htdocs/langs/ro_RO/stripe.lang | 71 +- htdocs/langs/ro_RO/withdrawals.lang | 8 +- htdocs/langs/ru_RU/accountancy.lang | 8 +- htdocs/langs/ru_RU/admin.lang | 67 +- htdocs/langs/ru_RU/banks.lang | 3 +- htdocs/langs/ru_RU/bookmarks.lang | 2 +- htdocs/langs/ru_RU/companies.lang | 14 +- htdocs/langs/ru_RU/compta.lang | 7 +- htdocs/langs/ru_RU/errors.lang | 3 + htdocs/langs/ru_RU/holiday.lang | 3 +- htdocs/langs/ru_RU/install.lang | 1 + htdocs/langs/ru_RU/main.lang | 13 +- htdocs/langs/ru_RU/modulebuilder.lang | 4 +- htdocs/langs/ru_RU/other.lang | 4 + htdocs/langs/ru_RU/partnership.lang | 2 +- htdocs/langs/ru_RU/productbatch.lang | 3 +- htdocs/langs/ru_RU/products.lang | 6 +- htdocs/langs/ru_RU/projects.lang | 1 + htdocs/langs/ru_RU/stocks.lang | 19 +- htdocs/langs/ru_RU/stripe.lang | 2 +- htdocs/langs/ru_RU/withdrawals.lang | 8 +- htdocs/langs/ru_UA/admin.lang | 3 - htdocs/langs/ru_UA/propal.lang | 2 - htdocs/langs/sk_SK/accountancy.lang | 8 +- htdocs/langs/sk_SK/admin.lang | 67 +- htdocs/langs/sk_SK/banks.lang | 3 +- htdocs/langs/sk_SK/bookmarks.lang | 2 +- htdocs/langs/sk_SK/companies.lang | 14 +- htdocs/langs/sk_SK/compta.lang | 7 +- htdocs/langs/sk_SK/errors.lang | 3 + htdocs/langs/sk_SK/holiday.lang | 3 +- htdocs/langs/sk_SK/install.lang | 1 + htdocs/langs/sk_SK/main.lang | 13 +- htdocs/langs/sk_SK/modulebuilder.lang | 4 +- htdocs/langs/sk_SK/other.lang | 4 + htdocs/langs/sk_SK/partnership.lang | 2 +- htdocs/langs/sk_SK/productbatch.lang | 3 +- htdocs/langs/sk_SK/products.lang | 6 +- htdocs/langs/sk_SK/projects.lang | 1 + htdocs/langs/sk_SK/stocks.lang | 19 +- htdocs/langs/sk_SK/stripe.lang | 3 +- htdocs/langs/sk_SK/withdrawals.lang | 8 +- htdocs/langs/sl_SI/accountancy.lang | 8 +- htdocs/langs/sl_SI/admin.lang | 67 +- htdocs/langs/sl_SI/banks.lang | 3 +- htdocs/langs/sl_SI/bookmarks.lang | 2 +- htdocs/langs/sl_SI/companies.lang | 14 +- htdocs/langs/sl_SI/compta.lang | 7 +- htdocs/langs/sl_SI/errors.lang | 3 + htdocs/langs/sl_SI/holiday.lang | 3 +- htdocs/langs/sl_SI/install.lang | 1 + htdocs/langs/sl_SI/main.lang | 13 +- htdocs/langs/sl_SI/modulebuilder.lang | 4 +- htdocs/langs/sl_SI/other.lang | 4 + htdocs/langs/sl_SI/partnership.lang | 2 +- htdocs/langs/sl_SI/productbatch.lang | 3 +- htdocs/langs/sl_SI/products.lang | 6 +- htdocs/langs/sl_SI/projects.lang | 1 + htdocs/langs/sl_SI/stocks.lang | 19 +- htdocs/langs/sl_SI/stripe.lang | 3 +- htdocs/langs/sl_SI/withdrawals.lang | 8 +- htdocs/langs/sq_AL/accountancy.lang | 8 +- htdocs/langs/sq_AL/admin.lang | 67 +- htdocs/langs/sq_AL/banks.lang | 3 +- htdocs/langs/sq_AL/bookmarks.lang | 2 +- htdocs/langs/sq_AL/companies.lang | 14 +- htdocs/langs/sq_AL/compta.lang | 7 +- htdocs/langs/sq_AL/errors.lang | 3 + htdocs/langs/sq_AL/holiday.lang | 3 +- htdocs/langs/sq_AL/install.lang | 1 + htdocs/langs/sq_AL/main.lang | 13 +- htdocs/langs/sq_AL/modulebuilder.lang | 4 +- htdocs/langs/sq_AL/other.lang | 4 + htdocs/langs/sq_AL/partnership.lang | 2 +- htdocs/langs/sq_AL/productbatch.lang | 3 +- htdocs/langs/sq_AL/products.lang | 6 +- htdocs/langs/sq_AL/projects.lang | 1 + htdocs/langs/sq_AL/stocks.lang | 19 +- htdocs/langs/sq_AL/stripe.lang | 3 +- htdocs/langs/sq_AL/withdrawals.lang | 8 +- htdocs/langs/sr_RS/accountancy.lang | 8 +- htdocs/langs/sr_RS/admin.lang | 67 +- htdocs/langs/sr_RS/banks.lang | 3 +- htdocs/langs/sr_RS/bookmarks.lang | 2 +- htdocs/langs/sr_RS/companies.lang | 14 +- htdocs/langs/sr_RS/compta.lang | 7 +- htdocs/langs/sr_RS/errors.lang | 3 + htdocs/langs/sr_RS/holiday.lang | 3 +- htdocs/langs/sr_RS/install.lang | 1 + htdocs/langs/sr_RS/main.lang | 13 +- htdocs/langs/sr_RS/modulebuilder.lang | 4 +- htdocs/langs/sr_RS/other.lang | 4 + htdocs/langs/sr_RS/partnership.lang | 2 +- htdocs/langs/sr_RS/productbatch.lang | 3 +- htdocs/langs/sr_RS/products.lang | 6 +- htdocs/langs/sr_RS/projects.lang | 1 + htdocs/langs/sr_RS/stocks.lang | 19 +- htdocs/langs/sr_RS/stripe.lang | 3 +- htdocs/langs/sr_RS/withdrawals.lang | 8 +- htdocs/langs/sv_SE/accountancy.lang | 8 +- htdocs/langs/sv_SE/admin.lang | 67 +- htdocs/langs/sv_SE/banks.lang | 3 +- htdocs/langs/sv_SE/bookmarks.lang | 2 +- htdocs/langs/sv_SE/companies.lang | 14 +- htdocs/langs/sv_SE/compta.lang | 7 +- htdocs/langs/sv_SE/errors.lang | 3 + htdocs/langs/sv_SE/holiday.lang | 3 +- htdocs/langs/sv_SE/install.lang | 1 + htdocs/langs/sv_SE/main.lang | 13 +- htdocs/langs/sv_SE/modulebuilder.lang | 4 +- htdocs/langs/sv_SE/other.lang | 4 + htdocs/langs/sv_SE/partnership.lang | 2 +- htdocs/langs/sv_SE/productbatch.lang | 3 +- htdocs/langs/sv_SE/products.lang | 6 +- htdocs/langs/sv_SE/projects.lang | 1 + htdocs/langs/sv_SE/stocks.lang | 19 +- htdocs/langs/sv_SE/stripe.lang | 2 +- htdocs/langs/sv_SE/withdrawals.lang | 8 +- htdocs/langs/sw_SW/accountancy.lang | 8 +- htdocs/langs/sw_SW/admin.lang | 67 +- htdocs/langs/sw_SW/banks.lang | 3 +- htdocs/langs/sw_SW/bookmarks.lang | 2 +- htdocs/langs/sw_SW/companies.lang | 14 +- htdocs/langs/sw_SW/compta.lang | 7 +- htdocs/langs/sw_SW/errors.lang | 3 + htdocs/langs/sw_SW/holiday.lang | 3 +- htdocs/langs/sw_SW/install.lang | 1 + htdocs/langs/sw_SW/main.lang | 13 +- htdocs/langs/sw_SW/modulebuilder.lang | 4 +- htdocs/langs/sw_SW/other.lang | 4 + htdocs/langs/sw_SW/partnership.lang | 2 +- htdocs/langs/sw_SW/productbatch.lang | 3 +- htdocs/langs/sw_SW/products.lang | 6 +- htdocs/langs/sw_SW/projects.lang | 1 + htdocs/langs/sw_SW/stocks.lang | 19 +- htdocs/langs/sw_SW/stripe.lang | 3 +- htdocs/langs/sw_SW/withdrawals.lang | 8 +- htdocs/langs/ta_IN/accountancy.lang | 437 + htdocs/langs/ta_IN/admin.lang | 2218 +++ htdocs/langs/ta_IN/agenda.lang | 174 + htdocs/langs/ta_IN/assets.lang | 67 + htdocs/langs/ta_IN/banks.lang | 184 + htdocs/langs/ta_IN/bills.lang | 608 + htdocs/langs/ta_IN/blockedlog.lang | 54 + htdocs/langs/ta_IN/bookmarks.lang | 22 + htdocs/langs/ta_IN/boxes.lang | 120 + htdocs/langs/ta_IN/cashdesk.lang | 136 + htdocs/langs/ta_IN/categories.lang | 100 + htdocs/langs/ta_IN/commercial.lang | 81 + htdocs/langs/ta_IN/companies.lang | 495 + htdocs/langs/ta_IN/compta.lang | 300 + htdocs/langs/ta_IN/contracts.lang | 104 + htdocs/langs/ta_IN/cron.lang | 91 + htdocs/langs/ta_IN/deliveries.lang | 33 + htdocs/langs/ta_IN/dict.lang | 359 + htdocs/langs/ta_IN/donations.lang | 35 + htdocs/langs/ta_IN/ecm.lang | 49 + htdocs/langs/ta_IN/errors.lang | 330 + htdocs/langs/ta_IN/eventorganization.lang | 166 + htdocs/langs/ta_IN/exports.lang | 137 + htdocs/langs/ta_IN/externalsite.lang | 5 + htdocs/langs/ta_IN/ftp.lang | 14 + htdocs/langs/ta_IN/help.lang | 23 + htdocs/langs/ta_IN/holiday.lang | 137 + htdocs/langs/ta_IN/hrm.lang | 81 + htdocs/langs/ta_IN/install.lang | 219 + htdocs/langs/ta_IN/interventions.lang | 68 + htdocs/langs/ta_IN/intracommreport.lang | 40 + htdocs/langs/ta_IN/knowledgemanagement.lang | 50 + htdocs/langs/ta_IN/languages.lang | 114 + htdocs/langs/ta_IN/ldap.lang | 31 + htdocs/langs/ta_IN/link.lang | 11 + htdocs/langs/ta_IN/loan.lang | 34 + htdocs/langs/ta_IN/mailmanspip.lang | 27 + htdocs/langs/ta_IN/mails.lang | 180 + htdocs/langs/ta_IN/main.lang | 1166 ++ htdocs/langs/ta_IN/margins.lang | 45 + htdocs/langs/ta_IN/members.lang | 220 + htdocs/langs/ta_IN/modulebuilder.lang | 147 + htdocs/langs/ta_IN/mrp.lang | 109 + htdocs/langs/ta_IN/multicurrency.lang | 38 + htdocs/langs/ta_IN/oauth.lang | 32 + htdocs/langs/ta_IN/opensurvey.lang | 63 + htdocs/langs/ta_IN/orders.lang | 196 + htdocs/langs/ta_IN/other.lang | 304 + htdocs/langs/ta_IN/partnership.lang | 92 + htdocs/langs/ta_IN/paybox.lang | 30 + htdocs/langs/ta_IN/paypal.lang | 36 + htdocs/langs/ta_IN/printing.lang | 54 + htdocs/langs/ta_IN/productbatch.lang | 45 + htdocs/langs/ta_IN/products.lang | 412 + htdocs/langs/ta_IN/projects.lang | 287 + htdocs/langs/ta_IN/propal.lang | 99 + htdocs/langs/ta_IN/receiptprinter.lang | 82 + htdocs/langs/ta_IN/receptions.lang | 53 + htdocs/langs/ta_IN/recruitment.lang | 76 + htdocs/langs/ta_IN/resource.lang | 39 + htdocs/langs/ta_IN/salaries.lang | 27 + htdocs/langs/ta_IN/sendings.lang | 76 + htdocs/langs/ta_IN/sms.lang | 51 + htdocs/langs/ta_IN/stocks.lang | 273 + htdocs/langs/ta_IN/stripe.lang | 71 + htdocs/langs/ta_IN/supplier_proposal.lang | 58 + htdocs/langs/ta_IN/suppliers.lang | 49 + htdocs/langs/ta_IN/ticket.lang | 324 + htdocs/langs/ta_IN/trips.lang | 150 + htdocs/langs/ta_IN/users.lang | 126 + htdocs/langs/ta_IN/website.lang | 147 + htdocs/langs/ta_IN/withdrawals.lang | 156 + htdocs/langs/ta_IN/workflow.lang | 30 + htdocs/langs/ta_IN/zapier.lang | 21 + htdocs/langs/tg_TJ/accountancy.lang | 8 +- htdocs/langs/tg_TJ/admin.lang | 67 +- htdocs/langs/tg_TJ/banks.lang | 3 +- htdocs/langs/tg_TJ/bookmarks.lang | 2 +- htdocs/langs/tg_TJ/companies.lang | 14 +- htdocs/langs/tg_TJ/compta.lang | 7 +- htdocs/langs/tg_TJ/errors.lang | 3 + htdocs/langs/tg_TJ/holiday.lang | 3 +- htdocs/langs/tg_TJ/install.lang | 1 + htdocs/langs/tg_TJ/main.lang | 13 +- htdocs/langs/tg_TJ/modulebuilder.lang | 4 +- htdocs/langs/tg_TJ/other.lang | 4 + htdocs/langs/tg_TJ/partnership.lang | 2 +- htdocs/langs/tg_TJ/productbatch.lang | 3 +- htdocs/langs/tg_TJ/products.lang | 6 +- htdocs/langs/tg_TJ/projects.lang | 1 + htdocs/langs/tg_TJ/stocks.lang | 19 +- htdocs/langs/tg_TJ/stripe.lang | 2 +- htdocs/langs/tg_TJ/withdrawals.lang | 8 +- htdocs/langs/th_TH/accountancy.lang | 8 +- htdocs/langs/th_TH/admin.lang | 67 +- htdocs/langs/th_TH/banks.lang | 3 +- htdocs/langs/th_TH/bookmarks.lang | 2 +- htdocs/langs/th_TH/companies.lang | 14 +- htdocs/langs/th_TH/compta.lang | 7 +- htdocs/langs/th_TH/errors.lang | 3 + htdocs/langs/th_TH/holiday.lang | 3 +- htdocs/langs/th_TH/install.lang | 1 + htdocs/langs/th_TH/main.lang | 13 +- htdocs/langs/th_TH/modulebuilder.lang | 4 +- htdocs/langs/th_TH/other.lang | 4 + htdocs/langs/th_TH/partnership.lang | 2 +- htdocs/langs/th_TH/productbatch.lang | 3 +- htdocs/langs/th_TH/products.lang | 6 +- htdocs/langs/th_TH/projects.lang | 1 + htdocs/langs/th_TH/stocks.lang | 19 +- htdocs/langs/th_TH/stripe.lang | 3 +- htdocs/langs/th_TH/withdrawals.lang | 8 +- htdocs/langs/tr_TR/accountancy.lang | 10 +- htdocs/langs/tr_TR/admin.lang | 99 +- htdocs/langs/tr_TR/banks.lang | 3 +- htdocs/langs/tr_TR/bills.lang | 10 +- htdocs/langs/tr_TR/bookmarks.lang | 2 +- htdocs/langs/tr_TR/categories.lang | 4 +- htdocs/langs/tr_TR/companies.lang | 18 +- htdocs/langs/tr_TR/compta.lang | 7 +- htdocs/langs/tr_TR/errors.lang | 3 + htdocs/langs/tr_TR/holiday.lang | 3 +- htdocs/langs/tr_TR/install.lang | 1 + htdocs/langs/tr_TR/intracommreport.lang | 12 +- htdocs/langs/tr_TR/knowledgemanagement.lang | 8 +- htdocs/langs/tr_TR/main.lang | 15 +- htdocs/langs/tr_TR/modulebuilder.lang | 6 +- htdocs/langs/tr_TR/other.lang | 4 + htdocs/langs/tr_TR/partnership.lang | 12 +- htdocs/langs/tr_TR/printing.lang | 6 +- htdocs/langs/tr_TR/productbatch.lang | 3 +- htdocs/langs/tr_TR/products.lang | 6 +- htdocs/langs/tr_TR/projects.lang | 1 + htdocs/langs/tr_TR/propal.lang | 2 +- htdocs/langs/tr_TR/receiptprinter.lang | 4 +- htdocs/langs/tr_TR/stocks.lang | 19 +- htdocs/langs/tr_TR/stripe.lang | 3 +- htdocs/langs/tr_TR/users.lang | 10 +- htdocs/langs/tr_TR/withdrawals.lang | 8 +- htdocs/langs/uk_UA/accountancy.lang | 8 +- htdocs/langs/uk_UA/admin.lang | 67 +- htdocs/langs/uk_UA/banks.lang | 3 +- htdocs/langs/uk_UA/bookmarks.lang | 2 +- htdocs/langs/uk_UA/companies.lang | 14 +- htdocs/langs/uk_UA/compta.lang | 7 +- htdocs/langs/uk_UA/errors.lang | 3 + htdocs/langs/uk_UA/holiday.lang | 3 +- htdocs/langs/uk_UA/install.lang | 1 + htdocs/langs/uk_UA/main.lang | 13 +- htdocs/langs/uk_UA/modulebuilder.lang | 4 +- htdocs/langs/uk_UA/other.lang | 4 + htdocs/langs/uk_UA/partnership.lang | 2 +- htdocs/langs/uk_UA/productbatch.lang | 3 +- htdocs/langs/uk_UA/products.lang | 6 +- htdocs/langs/uk_UA/projects.lang | 1 + htdocs/langs/uk_UA/stocks.lang | 19 +- htdocs/langs/uk_UA/stripe.lang | 3 +- htdocs/langs/uk_UA/withdrawals.lang | 8 +- htdocs/langs/ur_PK/accountancy.lang | 437 + htdocs/langs/ur_PK/admin.lang | 2218 +++ htdocs/langs/ur_PK/agenda.lang | 174 + htdocs/langs/ur_PK/assets.lang | 67 + htdocs/langs/ur_PK/banks.lang | 184 + htdocs/langs/ur_PK/bills.lang | 608 + htdocs/langs/ur_PK/blockedlog.lang | 54 + htdocs/langs/ur_PK/bookmarks.lang | 22 + htdocs/langs/ur_PK/boxes.lang | 120 + htdocs/langs/ur_PK/cashdesk.lang | 136 + htdocs/langs/ur_PK/categories.lang | 100 + htdocs/langs/ur_PK/commercial.lang | 81 + htdocs/langs/ur_PK/companies.lang | 495 + htdocs/langs/ur_PK/compta.lang | 300 + htdocs/langs/ur_PK/contracts.lang | 104 + htdocs/langs/ur_PK/cron.lang | 91 + htdocs/langs/ur_PK/deliveries.lang | 33 + htdocs/langs/ur_PK/dict.lang | 359 + htdocs/langs/ur_PK/donations.lang | 35 + htdocs/langs/ur_PK/ecm.lang | 49 + htdocs/langs/ur_PK/errors.lang | 330 + htdocs/langs/ur_PK/eventorganization.lang | 166 + htdocs/langs/ur_PK/exports.lang | 137 + htdocs/langs/ur_PK/externalsite.lang | 5 + htdocs/langs/ur_PK/ftp.lang | 14 + htdocs/langs/ur_PK/help.lang | 23 + htdocs/langs/ur_PK/holiday.lang | 137 + htdocs/langs/ur_PK/hrm.lang | 81 + htdocs/langs/ur_PK/install.lang | 219 + htdocs/langs/ur_PK/interventions.lang | 68 + htdocs/langs/ur_PK/intracommreport.lang | 40 + htdocs/langs/ur_PK/knowledgemanagement.lang | 50 + htdocs/langs/ur_PK/languages.lang | 114 + htdocs/langs/ur_PK/ldap.lang | 31 + htdocs/langs/ur_PK/link.lang | 11 + htdocs/langs/ur_PK/loan.lang | 34 + htdocs/langs/ur_PK/mailmanspip.lang | 27 + htdocs/langs/ur_PK/mails.lang | 180 + htdocs/langs/ur_PK/main.lang | 1166 ++ htdocs/langs/ur_PK/margins.lang | 45 + htdocs/langs/ur_PK/members.lang | 220 + htdocs/langs/ur_PK/modulebuilder.lang | 147 + htdocs/langs/ur_PK/mrp.lang | 109 + htdocs/langs/ur_PK/multicurrency.lang | 38 + htdocs/langs/ur_PK/oauth.lang | 32 + htdocs/langs/ur_PK/opensurvey.lang | 63 + htdocs/langs/ur_PK/orders.lang | 196 + htdocs/langs/ur_PK/other.lang | 304 + htdocs/langs/ur_PK/partnership.lang | 92 + htdocs/langs/ur_PK/paybox.lang | 30 + htdocs/langs/ur_PK/paypal.lang | 36 + htdocs/langs/ur_PK/printing.lang | 54 + htdocs/langs/ur_PK/productbatch.lang | 45 + htdocs/langs/ur_PK/products.lang | 412 + htdocs/langs/ur_PK/projects.lang | 287 + htdocs/langs/ur_PK/propal.lang | 99 + htdocs/langs/ur_PK/receiptprinter.lang | 82 + htdocs/langs/ur_PK/receptions.lang | 53 + htdocs/langs/ur_PK/recruitment.lang | 76 + htdocs/langs/ur_PK/resource.lang | 39 + htdocs/langs/ur_PK/salaries.lang | 27 + htdocs/langs/ur_PK/sendings.lang | 76 + htdocs/langs/ur_PK/sms.lang | 51 + htdocs/langs/ur_PK/stocks.lang | 273 + htdocs/langs/ur_PK/stripe.lang | 71 + htdocs/langs/ur_PK/supplier_proposal.lang | 58 + htdocs/langs/ur_PK/suppliers.lang | 49 + htdocs/langs/ur_PK/ticket.lang | 324 + htdocs/langs/ur_PK/trips.lang | 150 + htdocs/langs/ur_PK/users.lang | 126 + htdocs/langs/ur_PK/website.lang | 147 + htdocs/langs/ur_PK/withdrawals.lang | 156 + htdocs/langs/ur_PK/workflow.lang | 30 + htdocs/langs/ur_PK/zapier.lang | 21 + htdocs/langs/uz_UZ/accountancy.lang | 8 +- htdocs/langs/uz_UZ/admin.lang | 67 +- htdocs/langs/uz_UZ/banks.lang | 3 +- htdocs/langs/uz_UZ/bookmarks.lang | 2 +- htdocs/langs/uz_UZ/companies.lang | 14 +- htdocs/langs/uz_UZ/compta.lang | 7 +- htdocs/langs/uz_UZ/errors.lang | 3 + htdocs/langs/uz_UZ/holiday.lang | 3 +- htdocs/langs/uz_UZ/install.lang | 1 + htdocs/langs/uz_UZ/main.lang | 13 +- htdocs/langs/uz_UZ/modulebuilder.lang | 4 +- htdocs/langs/uz_UZ/other.lang | 4 + htdocs/langs/uz_UZ/partnership.lang | 2 +- htdocs/langs/uz_UZ/productbatch.lang | 3 +- htdocs/langs/uz_UZ/products.lang | 6 +- htdocs/langs/uz_UZ/projects.lang | 1 + htdocs/langs/uz_UZ/stocks.lang | 19 +- htdocs/langs/uz_UZ/stripe.lang | 2 +- htdocs/langs/uz_UZ/withdrawals.lang | 8 +- htdocs/langs/vi_VN/accountancy.lang | 8 +- htdocs/langs/vi_VN/admin.lang | 67 +- htdocs/langs/vi_VN/banks.lang | 3 +- htdocs/langs/vi_VN/bookmarks.lang | 2 +- htdocs/langs/vi_VN/companies.lang | 14 +- htdocs/langs/vi_VN/compta.lang | 7 +- htdocs/langs/vi_VN/errors.lang | 3 + htdocs/langs/vi_VN/holiday.lang | 3 +- htdocs/langs/vi_VN/install.lang | 1 + htdocs/langs/vi_VN/main.lang | 13 +- htdocs/langs/vi_VN/modulebuilder.lang | 4 +- htdocs/langs/vi_VN/other.lang | 4 + htdocs/langs/vi_VN/partnership.lang | 2 +- htdocs/langs/vi_VN/productbatch.lang | 3 +- htdocs/langs/vi_VN/products.lang | 6 +- htdocs/langs/vi_VN/projects.lang | 1 + htdocs/langs/vi_VN/stocks.lang | 19 +- htdocs/langs/vi_VN/stripe.lang | 3 +- htdocs/langs/vi_VN/withdrawals.lang | 8 +- htdocs/langs/zh_CN/accountancy.lang | 8 +- htdocs/langs/zh_CN/admin.lang | 79 +- htdocs/langs/zh_CN/banks.lang | 3 +- htdocs/langs/zh_CN/bookmarks.lang | 2 +- htdocs/langs/zh_CN/companies.lang | 14 +- htdocs/langs/zh_CN/compta.lang | 7 +- htdocs/langs/zh_CN/errors.lang | 3 + htdocs/langs/zh_CN/holiday.lang | 3 +- htdocs/langs/zh_CN/install.lang | 1 + htdocs/langs/zh_CN/main.lang | 13 +- htdocs/langs/zh_CN/modulebuilder.lang | 4 +- htdocs/langs/zh_CN/other.lang | 4 + htdocs/langs/zh_CN/partnership.lang | 2 +- htdocs/langs/zh_CN/productbatch.lang | 3 +- htdocs/langs/zh_CN/products.lang | 6 +- htdocs/langs/zh_CN/projects.lang | 1 + htdocs/langs/zh_CN/stocks.lang | 19 +- htdocs/langs/zh_CN/stripe.lang | 3 +- htdocs/langs/zh_CN/withdrawals.lang | 8 +- htdocs/langs/zh_HK/accountancy.lang | 8 +- htdocs/langs/zh_HK/admin.lang | 67 +- htdocs/langs/zh_HK/banks.lang | 3 +- htdocs/langs/zh_HK/bookmarks.lang | 2 +- htdocs/langs/zh_HK/companies.lang | 14 +- htdocs/langs/zh_HK/compta.lang | 7 +- htdocs/langs/zh_HK/errors.lang | 3 + htdocs/langs/zh_HK/holiday.lang | 3 +- htdocs/langs/zh_HK/install.lang | 1 + htdocs/langs/zh_HK/main.lang | 13 +- htdocs/langs/zh_HK/modulebuilder.lang | 4 +- htdocs/langs/zh_HK/other.lang | 4 + htdocs/langs/zh_HK/partnership.lang | 2 +- htdocs/langs/zh_HK/productbatch.lang | 3 +- htdocs/langs/zh_HK/products.lang | 6 +- htdocs/langs/zh_HK/projects.lang | 1 + htdocs/langs/zh_HK/stocks.lang | 19 +- htdocs/langs/zh_HK/stripe.lang | 3 +- htdocs/langs/zh_HK/withdrawals.lang | 8 +- htdocs/langs/zh_TW/accountancy.lang | 56 +- htdocs/langs/zh_TW/admin.lang | 199 +- htdocs/langs/zh_TW/banks.lang | 15 +- htdocs/langs/zh_TW/bills.lang | 38 +- htdocs/langs/zh_TW/bookmarks.lang | 2 +- htdocs/langs/zh_TW/cashdesk.lang | 4 +- htdocs/langs/zh_TW/commercial.lang | 8 +- htdocs/langs/zh_TW/companies.lang | 14 +- htdocs/langs/zh_TW/compta.lang | 59 +- htdocs/langs/zh_TW/errors.lang | 5 +- htdocs/langs/zh_TW/eventorganization.lang | 148 +- htdocs/langs/zh_TW/exports.lang | 4 +- htdocs/langs/zh_TW/help.lang | 2 +- htdocs/langs/zh_TW/holiday.lang | 3 +- htdocs/langs/zh_TW/hrm.lang | 12 +- htdocs/langs/zh_TW/install.lang | 1 + htdocs/langs/zh_TW/intracommreport.lang | 24 +- htdocs/langs/zh_TW/knowledgemanagement.lang | 32 +- htdocs/langs/zh_TW/ldap.lang | 46 +- htdocs/langs/zh_TW/loan.lang | 2 +- htdocs/langs/zh_TW/mails.lang | 8 +- htdocs/langs/zh_TW/main.lang | 27 +- htdocs/langs/zh_TW/members.lang | 130 +- htdocs/langs/zh_TW/modulebuilder.lang | 56 +- htdocs/langs/zh_TW/mrp.lang | 6 +- htdocs/langs/zh_TW/oauth.lang | 4 +- htdocs/langs/zh_TW/opensurvey.lang | 4 +- htdocs/langs/zh_TW/other.lang | 10 +- htdocs/langs/zh_TW/partnership.lang | 8 +- htdocs/langs/zh_TW/paybox.lang | 5 +- htdocs/langs/zh_TW/paypal.lang | 66 +- htdocs/langs/zh_TW/productbatch.lang | 7 +- htdocs/langs/zh_TW/products.lang | 24 +- htdocs/langs/zh_TW/projects.lang | 13 +- htdocs/langs/zh_TW/propal.lang | 16 +- htdocs/langs/zh_TW/receptions.lang | 13 +- htdocs/langs/zh_TW/salaries.lang | 5 +- htdocs/langs/zh_TW/sendings.lang | 2 +- htdocs/langs/zh_TW/stocks.lang | 39 +- htdocs/langs/zh_TW/stripe.lang | 7 +- htdocs/langs/zh_TW/ticket.lang | 4 +- htdocs/langs/zh_TW/trips.lang | 10 +- htdocs/langs/zh_TW/website.lang | 4 +- htdocs/langs/zh_TW/withdrawals.lang | 14 +- htdocs/langs/zh_TW/workflow.lang | 6 +- htdocs/langs/zh_TW/zapier.lang | 4 +- htdocs/loan/document.php | 4 +- .../mailmanspip/class/mailmanspip.class.php | 27 +- htdocs/main.inc.php | 106 +- htdocs/margin/customerMargins.php | 4 +- htdocs/margin/tabs/productMargins.php | 4 +- htdocs/margin/tabs/thirdpartyMargins.php | 4 +- htdocs/master.inc.php | 3 +- htdocs/modulebuilder/index.php | 2 +- htdocs/modulebuilder/template/admin/setup.php | 96 +- .../template/class/api_mymodule.class.php | 5 +- .../core/modules/modMyModule.class.php | 1 + .../doc/doc_generic_myobject_odt.modules.php | 17 +- .../mymodule/mod_myobject_advanced.php | 10 +- .../template/lib/mymodule.lib.php | 2 +- .../template/myobject_agenda.php | 4 +- .../modulebuilder/template/myobject_card.php | 20 +- .../template/myobject_document.php | 4 +- .../modulebuilder/template/myobject_list.php | 2 +- .../template/scripts/mymodule.php | 1 - htdocs/mrp/class/api_mos.class.php | 5 +- htdocs/mrp/class/mo.class.php | 35 +- htdocs/mrp/index.php | 3 +- htdocs/mrp/js/lib_dispatch.js.php | 38 +- htdocs/mrp/mo_agenda.php | 4 +- htdocs/mrp/mo_document.php | 4 +- htdocs/mrp/mo_movements.php | 39 +- htdocs/mrp/mo_production.php | 30 +- htdocs/mrp/tpl/originproductline.tpl.php | 10 + htdocs/multicurrency/multicurrency_rate.php | 4 +- .../partnership/class/partnership.class.php | 12 +- htdocs/partnership/partnership_agenda.php | 4 +- htdocs/partnership/partnership_document.php | 4 +- htdocs/paybox/admin/paybox.php | 4 +- htdocs/paypal/lib/paypal.lib.php | 13 +- htdocs/product/admin/product.php | 2 + .../admin/stock_mouvement_extrafields.php | 123 + htdocs/product/agenda.php | 4 +- htdocs/product/ajax/products.php | 6 +- .../service/actions_card_service.class.php | 9 + htdocs/product/card.php | 24 +- htdocs/product/class/api_products.class.php | 63 +- .../product/class/html.formproduct.class.php | 24 +- htdocs/product/class/product.class.php | 352 +- htdocs/product/class/productbatch.class.php | 28 +- .../class/productcustomerprice.class.php | 28 +- .../class/productfournisseurprice.class.php | 20 +- .../class/propalmergepdfproduct.class.php | 16 +- htdocs/product/document.php | 4 +- .../class/price_expression.class.php | 14 +- .../class/price_global_variable.class.php | 12 +- .../price_global_variable_updater.class.php | 18 +- .../class/price_parser.class.php | 8 +- htdocs/product/fournisseurs.php | 9 +- htdocs/product/index.php | 5 +- htdocs/product/inventory/card.php | 3 +- .../inventory/class/inventory.class.php | 32 +- htdocs/product/inventory/inventory.php | 184 +- htdocs/product/list.php | 11 +- htdocs/product/popuprop.php | 8 +- htdocs/product/price.php | 206 +- htdocs/product/reassort.php | 127 +- htdocs/product/reassortlot.php | 100 +- htdocs/product/stats/bom.php | 41 +- htdocs/product/stats/card.php | 9 +- htdocs/product/stats/commande.php | 4 +- htdocs/product/stats/contrat.php | 4 +- htdocs/product/stats/facture.php | 4 +- htdocs/product/stats/facture_fournisseur.php | 4 +- htdocs/product/stats/mo.php | 4 +- htdocs/product/stock/card.php | 4 +- .../stock/class/api_stockmovements.class.php | 22 +- .../stock/class/api_warehouses.class.php | 9 +- htdocs/product/stock/class/entrepot.class.php | 36 +- .../stock/class/mouvementstock.class.php | 40 +- .../product/stock/class/productlot.class.php | 16 +- .../class/productstockentrepot.class.php | 32 +- htdocs/product/stock/movement_card.php | 6 +- htdocs/product/stock/movement_list.php | 396 +- htdocs/product/stock/productlot_document.php | 4 +- htdocs/product/stock/replenish.php | 2 +- htdocs/product/stock/replenishorders.php | 26 +- htdocs/product/stock/stockatdate.php | 17 +- .../product/stock/tpl/extrafields_add.tpl.php | 51 + .../product/stock/tpl/stockcorrection.tpl.php | 3 + .../product/stock/tpl/stocktransfer.tpl.php | 3 + htdocs/product/stock/valo.php | 4 +- htdocs/projet/activity/perday.php | 4 +- htdocs/projet/activity/perweek.php | 4 +- htdocs/projet/card.php | 8 +- htdocs/projet/class/api_projects.class.php | 12 +- htdocs/projet/class/api_tasks.class.php | 12 +- htdocs/projet/class/project.class.php | 2 +- htdocs/projet/class/task.class.php | 113 +- htdocs/projet/contact.php | 4 +- htdocs/projet/document.php | 4 +- htdocs/projet/element.php | 31 +- htdocs/projet/index.php | 4 +- htdocs/projet/list.php | 73 +- htdocs/projet/tasks.php | 10 +- htdocs/projet/tasks/document.php | 4 +- htdocs/projet/tasks/list.php | 4 +- htdocs/projet/tasks/note.php | 2 +- htdocs/projet/tasks/task.php | 1 + htdocs/projet/tasks/time.php | 190 +- htdocs/public/members/public_list.php | 4 +- htdocs/public/onlinesign/newonlinesign.php | 141 +- htdocs/public/payment/newpayment.php | 92 +- htdocs/public/test/test_csrf.php | 17 +- htdocs/public/test/test_exec.php | 16 +- htdocs/public/ticket/create_ticket.php | 10 +- htdocs/public/ticket/index.php | 8 +- htdocs/public/ticket/list.php | 32 +- htdocs/public/ticket/view.php | 26 +- htdocs/reception/card.php | 246 +- htdocs/reception/class/reception.class.php | 11 +- htdocs/reception/document.php | 7 +- htdocs/reception/list.php | 2 +- htdocs/recruitment/admin/setup.php | 1 + .../recruitment/admin/setup_candidatures.php | 1 + .../class/api_recruitment.class.php | 647 + ...ric_recruitmentjobposition_odt.modules.php | 10 +- .../recruitmentcandidature_agenda.php | 4 +- .../recruitmentcandidature_card.php | 2 + .../recruitmentcandidature_document.php | 4 +- .../recruitmentjobposition_agenda.php | 4 +- .../recruitmentjobposition_document.php | 4 +- htdocs/resource/agenda.php | 4 +- htdocs/resource/class/dolresource.class.php | 31 + htdocs/resource/element_resource.php | 10 +- htdocs/resource/list.php | 2 +- htdocs/salaries/card.php | 100 +- htdocs/salaries/class/salariesstats.class.php | 24 +- htdocs/salaries/document.php | 2 +- htdocs/salaries/info.php | 2 +- htdocs/salaries/paiement_salary.php | 4 +- htdocs/salaries/payment_salary/card.php | 4 +- htdocs/salaries/payments.php | 7 +- htdocs/societe/admin/societe.php | 32 + htdocs/societe/agenda.php | 4 +- htdocs/societe/ajax/company.php | 4 +- htdocs/societe/card.php | 22 +- htdocs/societe/class/api_contacts.class.php | 5 +- .../societe/class/api_thirdparties.class.php | 5 +- .../class/companybankaccount.class.php | 42 +- .../class/companypaymentmode.class.php | 4 + htdocs/societe/class/societe.class.php | 34 +- htdocs/societe/consumption.php | 18 +- htdocs/societe/document.php | 4 +- htdocs/societe/list.php | 7 +- htdocs/societe/notify/card.php | 4 +- htdocs/societe/paymentmodes.php | 2 +- htdocs/societe/price.php | 4 +- htdocs/societe/societecontact.php | 4 +- htdocs/societe/website.php | 6 +- htdocs/stripe/charge.php | 4 +- htdocs/stripe/class/stripe.class.php | 3 - htdocs/stripe/payout.php | 4 +- htdocs/stripe/transaction.php | 4 +- .../class/api_supplier_proposals.class.php | 5 +- .../class/supplier_proposal.class.php | 8 + htdocs/supplier_proposal/document.php | 4 +- htdocs/supplier_proposal/list.php | 20 +- htdocs/takepos/ajax/ajax.php | 21 +- htdocs/takepos/css/pos.css.php | 2 +- htdocs/takepos/index.php | 129 +- htdocs/takepos/invoice.php | 58 +- htdocs/takepos/phone.php | 2 +- htdocs/theme/dolibarr.png | Bin 1711 -> 1451 bytes htdocs/theme/dolibarr_256x256_color.png | Bin 5078 -> 3464 bytes htdocs/theme/dolibarr_512x512_white.png | Bin 8921 -> 9121 bytes htdocs/theme/dolibarr_logo.png | Bin 14133 -> 10312 bytes htdocs/theme/dolibarr_logo_bw.png | Bin 564 -> 581 bytes htdocs/theme/dolibarr_preferred_partner.png | Bin 12136 -> 8381 bytes htdocs/theme/dolistore_logo.png | Bin 13413 -> 9666 bytes htdocs/theme/eldy/btn.inc.php | 15 +- htdocs/theme/eldy/ckeditor/config.js | 2 +- htdocs/theme/eldy/dropdown.inc.php | 13 +- htdocs/theme/eldy/global.inc.php | 298 +- htdocs/theme/eldy/info-box.inc.php | 21 +- htdocs/theme/eldy/manifest.json.php | 2 +- htdocs/theme/eldy/style.css.php | 14 +- htdocs/theme/eldy/theme_vars.inc.php | 3 + htdocs/theme/md/btn.inc.php | 19 +- htdocs/theme/md/ckeditor/config.js | 2 +- htdocs/theme/md/dropdown.inc.php | 7 +- htdocs/theme/md/info-box.inc.php | 3 + htdocs/theme/md/main_menu_fa_icons.inc.php | 2 +- htdocs/theme/md/style.css.php | 233 +- htdocs/theme/md/theme_vars.inc.php | 7 +- htdocs/ticket/agenda.php | 3 +- htdocs/ticket/card.php | 37 +- htdocs/ticket/class/actions_ticket.class.php | 3 + htdocs/ticket/class/api_tickets.class.php | 5 +- htdocs/ticket/class/ticket.class.php | 6 +- htdocs/ticket/class/ticketstats.class.php | 4 +- htdocs/ticket/contact.php | 3 +- htdocs/ticket/document.php | 6 +- htdocs/ticket/index.php | 6 +- htdocs/ticket/list.php | 103 +- htdocs/ticket/messaging.php | 4 +- htdocs/user/card.php | 19 +- htdocs/user/class/api_users.class.php | 16 +- htdocs/user/class/user.class.php | 186 +- htdocs/user/class/userbankaccount.class.php | 8 +- htdocs/user/class/usergroup.class.php | 24 +- htdocs/user/document.php | 4 +- htdocs/user/notify/card.php | 4 +- htdocs/user/perms.php | 68 + htdocs/user/vcard.php | 29 +- htdocs/viewimage.php | 7 +- htdocs/website/class/website.class.php | 6 +- htdocs/website/index.php | 185 +- .../workstation/class/workstation.class.php | 8 +- htdocs/workstation/lib/workstation.lib.php | 0 .../lib/workstation_workstation.lib.php | 0 htdocs/workstation/workstation_agenda.php | 4 +- htdocs/workstation/workstation_card.php | 15 +- htdocs/workstation/workstation_document.php | 4 +- htdocs/workstation/workstation_list.php | 26 +- htdocs/workstation/workstation_note.php | 0 htdocs/zapier/class/api_zapier.class.php | 5 +- package.json | 2 +- scripts/emailings/mailing-send.php | 11 + test/phpunit/CodingPhpTest.php | 56 +- test/phpunit/CodingSqlTest.php | 4 + test/phpunit/ProductTest.php | 2 +- test/phpunit/SecurityTest.php | 19 +- test/phpunit/UserTest.php | 119 +- test/phpunit/testvirus.txt | 4 +- 2815 files changed, 56596 insertions(+), 30626 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml delete mode 100644 dev/resources/iso-normes/Intracommreport-ManuelDebXml.pdf create mode 100644 dev/resources/iso-normes/QR code for invoices.txt rename dev/resources/{ => iso-normes}/facturx-zugferd/README.txt (100%) rename dev/resources/iso-normes/{14-pourquoi le format PDF A.pdf => format PDF - PDF A.pdf} (100%) rename dev/resources/iso-normes/{format_FEC-Lien_outil_de_test_agréé.pdf => format_FEC - Lien_outil_de_test_agréé.pdf} (100%) rename dev/resources/iso-normes/{sample_FEC_file.txt => format_FEC - fie example.txt} (100%) rename dev/resources/{intracommreport/manuelDebXml1.2.pdf => iso-normes/intracommreport/Intracommreport-ManuelDebXml.pdf} (100%) rename dev/resources/iso-normes/{ => intracommreport}/Intracommreport-ManuelDesXML.pdf (100%) rename dev/resources/{ => iso-normes}/intracommreport/schema_deb.xsd (100%) rename dev/resources/{ => iso-normes}/sepa/pain.001.001.03.xsd (100%) rename dev/resources/{ => iso-normes}/sepa/pain.008.001.02.xsd (100%) rename dev/resources/{ => iso-normes}/sepa/sample-credit-transfer.xml (100%) rename dev/resources/{ => iso-normes}/sepa/sample-direct-debit.xml (100%) rename dev/resources/{ => iso-normes}/sepa/text.txt (100%) mode change 100755 => 100644 doc/images/dolibarr_logo.png delete mode 100644 htdocs/admin/system/index.php mode change 100755 => 100644 htdocs/admin/workstation.php mode change 100755 => 100644 htdocs/compta/tva/card.php create mode 100644 htdocs/contact/project.php create mode 100644 htdocs/core/modules/mailings/partnership.modules.php mode change 100755 => 100644 htdocs/core/modules/modWorkstation.class.php mode change 100755 => 100644 htdocs/core/modules/workstation/mod_workstation_advanced.php mode change 100755 => 100644 htdocs/core/modules/workstation/mod_workstation_standard.php mode change 100755 => 100644 htdocs/core/modules/workstation/modules_workstation.php delete mode 100644 htdocs/eventorganization/tpl/massactions_mail_pre.tpl.php create mode 100644 htdocs/fourn/class/fournisseur.facture-rec.class.php create mode 100644 htdocs/fourn/facture/card-rec.php mode change 100755 => 100644 htdocs/fourn/facture/card.php create mode 100644 htdocs/fourn/facture/list-rec.php create mode 100755 htdocs/includes/OAuth/OAuth2/Service/WordPress.php mode change 100755 => 100644 htdocs/includes/stripe/stripe-php/build.php mode change 100755 => 100644 htdocs/includes/stripe/stripe-php/update_certs.php create mode 100644 htdocs/includes/swiftmailer/egulias/email-validator/EmailValidator/Exception/DomainAcceptsNoMail.php create mode 100644 htdocs/includes/swiftmailer/egulias/email-validator/EmailValidator/Exception/LocalOrReservedDomain.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/AddressEncoder.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/AddressEncoder/IdnAddressEncoder.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/AddressEncoder/Utf8AddressEncoder.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/AddressEncoderException.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/NullContentEncoder.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/EightBitMimeHandler.php create mode 100644 htdocs/includes/swiftmailer/lib/classes/Swift/Transport/Esmtp/SmtpUtf8Handler.php delete mode 100644 htdocs/includes/tecnickcom/tcpdf/fonts/ae_fonts_2.0/ChangeLog.9745.BAK delete mode 100644 htdocs/includes/tecnickcom/tcpdf/fonts/freefont-20120503/ChangeLog.10070.BAK create mode 100644 htdocs/install/mysql/migration/15.0.0-16.0.0.sql rename htdocs/install/mysql/tables/{llx_deplacement.sql => llx_deplacement-deplacement.sql} (100%) rename htdocs/install/mysql/tables/{llx_don.sql => llx_don-don.sql} (100%) rename htdocs/install/mysql/tables/{llx_don_extrafields.key.sql => llx_don_extrafields-don.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_don_extrafields.sql => llx_don_extrafields-don.sql} (100%) create mode 100644 htdocs/install/mysql/tables/llx_facture_fourn_det_rec.extrafields.key.sql rename htdocs/install/mysql/tables/{llx_online_signatures.sql => llx_facture_fourn_det_rec.extrafields.sql} (58%) create mode 100644 htdocs/install/mysql/tables/llx_facture_fourn_det_rec.key.sql create mode 100644 htdocs/install/mysql/tables/llx_facture_fourn_det_rec.sql create mode 100644 htdocs/install/mysql/tables/llx_facture_fourn_rec.extrafields.key.sql create mode 100644 htdocs/install/mysql/tables/llx_facture_fourn_rec.extrafields.sql create mode 100644 htdocs/install/mysql/tables/llx_facture_fourn_rec.key.sql rename htdocs/install/mysql/tables/{llx_intracommreport.sql => llx_intracommreport-intracommreport.sql} (94%) rename htdocs/install/mysql/tables/{llx_inventory.key.sql => llx_inventory-stock.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_inventory.sql => llx_inventory-stock.sql} (100%) rename htdocs/install/mysql/tables/{llx_inventorydet.key.sql => llx_inventorydet-stock.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_inventorydet.sql => llx_inventorydet-stock.sql} (100%) rename htdocs/install/mysql/tables/{llx_knowledgemanagement_knowledgerecord.key.sql => llx_knowledgemanagement_knowledgerecord-knowledgemanagement.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_knowledgemanagement_knowledgerecord.sql => llx_knowledgemanagement_knowledgerecord-knowledgemanagement.sql} (94%) rename htdocs/install/mysql/tables/{llx_knowledgemanagement_knowledgerecord_extrafields.key.sql => llx_knowledgemanagement_knowledgerecord_extrafields-knowledgemanagement.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_knowledgemanagement_knowledgerecord_extrafields.sql => llx_knowledgemanagement_knowledgerecord_extrafields-knowledgemanagement.sql} (91%) rename htdocs/install/mysql/tables/{llx_loan.sql => llx_loan-loan.sql} (100%) rename htdocs/install/mysql/tables/{llx_loan_schedule.sql => llx_loan_schedule-loan.sql} (100%) rename htdocs/install/mysql/tables/{llx_partnership.key.sql => llx_partnership-partnership.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_partnership.sql => llx_partnership-partnership.sql} (95%) rename htdocs/install/mysql/tables/{llx_partnership_extrafields.key.sql => llx_partnership_extrafields-partnership.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_partnership_extrafields.sql => llx_partnership_extrafields-partnership.sql} (100%) rename htdocs/install/mysql/tables/{llx_product_perentity.key.sql => llx_product_perentity-multicompany.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_product_perentity.sql => llx_product_perentity-multicompany.sql} (100%) rename htdocs/install/mysql/tables/{llx_recruitment_recruitmentcandidature.key.sql => llx_recruitment_recruitmentcandidature-recruitment.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_recruitment_recruitmentcandidature.sql => llx_recruitment_recruitmentcandidature-recruitment.sql} (100%) rename htdocs/install/mysql/tables/{llx_recruitment_recruitmentcandidature_extrafields.key.sql => llx_recruitment_recruitmentcandidature_extrafields-recruitment.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_recruitment_recruitmentcandidature_extrafields.sql => llx_recruitment_recruitmentcandidature_extrafields-recruitment.sql} (100%) rename htdocs/install/mysql/tables/{llx_recruitment_recruitmentjobposition.key.sql => llx_recruitment_recruitmentjobposition-recruitment.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_recruitment_recruitmentjobposition.sql => llx_recruitment_recruitmentjobposition-recruitment.sql} (100%) rename htdocs/install/mysql/tables/{llx_recruitment_recruitmentjobposition_extrafields.key.sql => llx_recruitment_recruitmentjobposition_extrafields-recruitment.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_recruitment_recruitmentjobposition_extrafields.sql => llx_recruitment_recruitmentjobposition_extrafields-recruitment.sql} (100%) rename htdocs/install/mysql/tables/{llx_societe_perentity.key.sql => llx_societe_perentity-multicompany.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_societe_perentity.sql => llx_societe_perentity-multicompany.sql} (100%) create mode 100644 htdocs/install/mysql/tables/llx_stock_mouvement_extrafields.sql rename htdocs/install/mysql/tables/{llx_workstation_workstation.key.sql => llx_workstation_workstation-workstation.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_workstation_workstation.sql => llx_workstation_workstation-workstation.sql} (94%) rename htdocs/install/mysql/tables/{llx_workstation_workstation_resource.sql => llx_workstation_workstation_resource-workstation.sql} (92%) rename htdocs/install/mysql/tables/{llx_workstation_workstation_usergroup.sql => llx_workstation_workstation_usergroup-workstation.sql} (92%) rename htdocs/install/mysql/tables/{llx_zapier_hook.key.sql => llx_zapier_hook-zapier.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_zapier_hook.sql => llx_zapier_hook-zapier.sql} (100%) delete mode 100644 htdocs/langs/de_AT/modulebuilder.lang delete mode 100644 htdocs/langs/de_CH/modulebuilder.lang delete mode 100644 htdocs/langs/el_CY/admin.lang delete mode 100644 htdocs/langs/el_CY/propal.lang delete mode 100644 htdocs/langs/en_AE/accountancy.lang delete mode 100644 htdocs/langs/en_AE/cashdesk.lang delete mode 100644 htdocs/langs/en_AE/compta.lang delete mode 100644 htdocs/langs/en_AE/errors.lang delete mode 100644 htdocs/langs/en_AE/eventorganization.lang delete mode 100644 htdocs/langs/en_AE/members.lang delete mode 100644 htdocs/langs/en_AE/modulebuilder.lang delete mode 100644 htdocs/langs/en_AE/mrp.lang delete mode 100644 htdocs/langs/en_AE/orders.lang delete mode 100644 htdocs/langs/en_AE/printing.lang delete mode 100644 htdocs/langs/en_AE/products.lang delete mode 100644 htdocs/langs/en_AE/propal.lang delete mode 100644 htdocs/langs/en_AE/sendings.lang delete mode 100644 htdocs/langs/en_AE/stocks.lang delete mode 100644 htdocs/langs/en_AE/ticket.lang delete mode 100644 htdocs/langs/en_AE/trips.lang delete mode 100644 htdocs/langs/en_AU/modulebuilder.lang delete mode 100644 htdocs/langs/en_AU/propal.lang delete mode 100644 htdocs/langs/en_AU/ticket.lang delete mode 100644 htdocs/langs/en_CA/modulebuilder.lang delete mode 100644 htdocs/langs/en_CA/propal.lang delete mode 100644 htdocs/langs/en_CA/ticket.lang delete mode 100644 htdocs/langs/en_GB/modulebuilder.lang delete mode 100644 htdocs/langs/en_GB/ticket.lang delete mode 100644 htdocs/langs/en_IN/modulebuilder.lang delete mode 100644 htdocs/langs/en_IN/ticket.lang delete mode 100644 htdocs/langs/en_SG/modulebuilder.lang delete mode 100644 htdocs/langs/en_SG/propal.lang delete mode 100644 htdocs/langs/en_SG/ticket.lang delete mode 100644 htdocs/langs/en_ZA/accountancy.lang delete mode 100644 htdocs/langs/en_ZA/cashdesk.lang delete mode 100644 htdocs/langs/en_ZA/compta.lang delete mode 100644 htdocs/langs/en_ZA/errors.lang delete mode 100644 htdocs/langs/en_ZA/eventorganization.lang delete mode 100644 htdocs/langs/en_ZA/members.lang delete mode 100644 htdocs/langs/en_ZA/modulebuilder.lang delete mode 100644 htdocs/langs/en_ZA/mrp.lang delete mode 100644 htdocs/langs/en_ZA/orders.lang delete mode 100644 htdocs/langs/en_ZA/printing.lang delete mode 100644 htdocs/langs/en_ZA/products.lang delete mode 100644 htdocs/langs/en_ZA/propal.lang delete mode 100644 htdocs/langs/en_ZA/sendings.lang delete mode 100644 htdocs/langs/en_ZA/stocks.lang delete mode 100644 htdocs/langs/en_ZA/ticket.lang delete mode 100644 htdocs/langs/en_ZA/trips.lang delete mode 100644 htdocs/langs/es_BO/propal.lang delete mode 100644 htdocs/langs/es_DO/propal.lang delete mode 100644 htdocs/langs/es_GT/propal.lang delete mode 100644 htdocs/langs/es_HN/propal.lang delete mode 100644 htdocs/langs/es_PA/propal.lang delete mode 100644 htdocs/langs/es_PY/propal.lang delete mode 100644 htdocs/langs/es_US/propal.lang delete mode 100644 htdocs/langs/es_UY/propal.lang delete mode 100644 htdocs/langs/fr_BE/propal.lang delete mode 100644 htdocs/langs/fr_CH/propal.lang delete mode 100644 htdocs/langs/fr_CI/admin.lang delete mode 100644 htdocs/langs/fr_CI/propal.lang delete mode 100644 htdocs/langs/fr_CM/admin.lang delete mode 100644 htdocs/langs/fr_CM/propal.lang delete mode 100644 htdocs/langs/fr_GA/propal.lang delete mode 100644 htdocs/langs/it_CH/admin.lang delete mode 100644 htdocs/langs/it_CH/propal.lang delete mode 100644 htdocs/langs/pt_AO/propal.lang create mode 100644 htdocs/langs/pt_BR/knowledgemanagement.lang delete mode 100644 htdocs/langs/ru_UA/admin.lang delete mode 100644 htdocs/langs/ru_UA/propal.lang create mode 100644 htdocs/langs/ta_IN/accountancy.lang create mode 100644 htdocs/langs/ta_IN/admin.lang create mode 100644 htdocs/langs/ta_IN/agenda.lang create mode 100644 htdocs/langs/ta_IN/assets.lang create mode 100644 htdocs/langs/ta_IN/banks.lang create mode 100644 htdocs/langs/ta_IN/bills.lang create mode 100644 htdocs/langs/ta_IN/blockedlog.lang create mode 100644 htdocs/langs/ta_IN/bookmarks.lang create mode 100644 htdocs/langs/ta_IN/boxes.lang create mode 100644 htdocs/langs/ta_IN/cashdesk.lang create mode 100644 htdocs/langs/ta_IN/categories.lang create mode 100644 htdocs/langs/ta_IN/commercial.lang create mode 100644 htdocs/langs/ta_IN/companies.lang create mode 100644 htdocs/langs/ta_IN/compta.lang create mode 100644 htdocs/langs/ta_IN/contracts.lang create mode 100644 htdocs/langs/ta_IN/cron.lang create mode 100644 htdocs/langs/ta_IN/deliveries.lang create mode 100644 htdocs/langs/ta_IN/dict.lang create mode 100644 htdocs/langs/ta_IN/donations.lang create mode 100644 htdocs/langs/ta_IN/ecm.lang create mode 100644 htdocs/langs/ta_IN/errors.lang create mode 100644 htdocs/langs/ta_IN/eventorganization.lang create mode 100644 htdocs/langs/ta_IN/exports.lang create mode 100644 htdocs/langs/ta_IN/externalsite.lang create mode 100644 htdocs/langs/ta_IN/ftp.lang create mode 100644 htdocs/langs/ta_IN/help.lang create mode 100644 htdocs/langs/ta_IN/holiday.lang create mode 100644 htdocs/langs/ta_IN/hrm.lang create mode 100644 htdocs/langs/ta_IN/install.lang create mode 100644 htdocs/langs/ta_IN/interventions.lang create mode 100644 htdocs/langs/ta_IN/intracommreport.lang create mode 100644 htdocs/langs/ta_IN/knowledgemanagement.lang create mode 100644 htdocs/langs/ta_IN/languages.lang create mode 100644 htdocs/langs/ta_IN/ldap.lang create mode 100644 htdocs/langs/ta_IN/link.lang create mode 100644 htdocs/langs/ta_IN/loan.lang create mode 100644 htdocs/langs/ta_IN/mailmanspip.lang create mode 100644 htdocs/langs/ta_IN/mails.lang create mode 100644 htdocs/langs/ta_IN/main.lang create mode 100644 htdocs/langs/ta_IN/margins.lang create mode 100644 htdocs/langs/ta_IN/members.lang create mode 100644 htdocs/langs/ta_IN/modulebuilder.lang create mode 100644 htdocs/langs/ta_IN/mrp.lang create mode 100644 htdocs/langs/ta_IN/multicurrency.lang create mode 100644 htdocs/langs/ta_IN/oauth.lang create mode 100644 htdocs/langs/ta_IN/opensurvey.lang create mode 100644 htdocs/langs/ta_IN/orders.lang create mode 100644 htdocs/langs/ta_IN/other.lang create mode 100644 htdocs/langs/ta_IN/partnership.lang create mode 100644 htdocs/langs/ta_IN/paybox.lang create mode 100644 htdocs/langs/ta_IN/paypal.lang create mode 100644 htdocs/langs/ta_IN/printing.lang create mode 100644 htdocs/langs/ta_IN/productbatch.lang create mode 100644 htdocs/langs/ta_IN/products.lang create mode 100644 htdocs/langs/ta_IN/projects.lang create mode 100644 htdocs/langs/ta_IN/propal.lang create mode 100644 htdocs/langs/ta_IN/receiptprinter.lang create mode 100644 htdocs/langs/ta_IN/receptions.lang create mode 100644 htdocs/langs/ta_IN/recruitment.lang create mode 100644 htdocs/langs/ta_IN/resource.lang create mode 100644 htdocs/langs/ta_IN/salaries.lang create mode 100644 htdocs/langs/ta_IN/sendings.lang create mode 100644 htdocs/langs/ta_IN/sms.lang create mode 100644 htdocs/langs/ta_IN/stocks.lang create mode 100644 htdocs/langs/ta_IN/stripe.lang create mode 100644 htdocs/langs/ta_IN/supplier_proposal.lang create mode 100644 htdocs/langs/ta_IN/suppliers.lang create mode 100644 htdocs/langs/ta_IN/ticket.lang create mode 100644 htdocs/langs/ta_IN/trips.lang create mode 100644 htdocs/langs/ta_IN/users.lang create mode 100644 htdocs/langs/ta_IN/website.lang create mode 100644 htdocs/langs/ta_IN/withdrawals.lang create mode 100644 htdocs/langs/ta_IN/workflow.lang create mode 100644 htdocs/langs/ta_IN/zapier.lang create mode 100644 htdocs/langs/ur_PK/accountancy.lang create mode 100644 htdocs/langs/ur_PK/admin.lang create mode 100644 htdocs/langs/ur_PK/agenda.lang create mode 100644 htdocs/langs/ur_PK/assets.lang create mode 100644 htdocs/langs/ur_PK/banks.lang create mode 100644 htdocs/langs/ur_PK/bills.lang create mode 100644 htdocs/langs/ur_PK/blockedlog.lang create mode 100644 htdocs/langs/ur_PK/bookmarks.lang create mode 100644 htdocs/langs/ur_PK/boxes.lang create mode 100644 htdocs/langs/ur_PK/cashdesk.lang create mode 100644 htdocs/langs/ur_PK/categories.lang create mode 100644 htdocs/langs/ur_PK/commercial.lang create mode 100644 htdocs/langs/ur_PK/companies.lang create mode 100644 htdocs/langs/ur_PK/compta.lang create mode 100644 htdocs/langs/ur_PK/contracts.lang create mode 100644 htdocs/langs/ur_PK/cron.lang create mode 100644 htdocs/langs/ur_PK/deliveries.lang create mode 100644 htdocs/langs/ur_PK/dict.lang create mode 100644 htdocs/langs/ur_PK/donations.lang create mode 100644 htdocs/langs/ur_PK/ecm.lang create mode 100644 htdocs/langs/ur_PK/errors.lang create mode 100644 htdocs/langs/ur_PK/eventorganization.lang create mode 100644 htdocs/langs/ur_PK/exports.lang create mode 100644 htdocs/langs/ur_PK/externalsite.lang create mode 100644 htdocs/langs/ur_PK/ftp.lang create mode 100644 htdocs/langs/ur_PK/help.lang create mode 100644 htdocs/langs/ur_PK/holiday.lang create mode 100644 htdocs/langs/ur_PK/hrm.lang create mode 100644 htdocs/langs/ur_PK/install.lang create mode 100644 htdocs/langs/ur_PK/interventions.lang create mode 100644 htdocs/langs/ur_PK/intracommreport.lang create mode 100644 htdocs/langs/ur_PK/knowledgemanagement.lang create mode 100644 htdocs/langs/ur_PK/languages.lang create mode 100644 htdocs/langs/ur_PK/ldap.lang create mode 100644 htdocs/langs/ur_PK/link.lang create mode 100644 htdocs/langs/ur_PK/loan.lang create mode 100644 htdocs/langs/ur_PK/mailmanspip.lang create mode 100644 htdocs/langs/ur_PK/mails.lang create mode 100644 htdocs/langs/ur_PK/main.lang create mode 100644 htdocs/langs/ur_PK/margins.lang create mode 100644 htdocs/langs/ur_PK/members.lang create mode 100644 htdocs/langs/ur_PK/modulebuilder.lang create mode 100644 htdocs/langs/ur_PK/mrp.lang create mode 100644 htdocs/langs/ur_PK/multicurrency.lang create mode 100644 htdocs/langs/ur_PK/oauth.lang create mode 100644 htdocs/langs/ur_PK/opensurvey.lang create mode 100644 htdocs/langs/ur_PK/orders.lang create mode 100644 htdocs/langs/ur_PK/other.lang create mode 100644 htdocs/langs/ur_PK/partnership.lang create mode 100644 htdocs/langs/ur_PK/paybox.lang create mode 100644 htdocs/langs/ur_PK/paypal.lang create mode 100644 htdocs/langs/ur_PK/printing.lang create mode 100644 htdocs/langs/ur_PK/productbatch.lang create mode 100644 htdocs/langs/ur_PK/products.lang create mode 100644 htdocs/langs/ur_PK/projects.lang create mode 100644 htdocs/langs/ur_PK/propal.lang create mode 100644 htdocs/langs/ur_PK/receiptprinter.lang create mode 100644 htdocs/langs/ur_PK/receptions.lang create mode 100644 htdocs/langs/ur_PK/recruitment.lang create mode 100644 htdocs/langs/ur_PK/resource.lang create mode 100644 htdocs/langs/ur_PK/salaries.lang create mode 100644 htdocs/langs/ur_PK/sendings.lang create mode 100644 htdocs/langs/ur_PK/sms.lang create mode 100644 htdocs/langs/ur_PK/stocks.lang create mode 100644 htdocs/langs/ur_PK/stripe.lang create mode 100644 htdocs/langs/ur_PK/supplier_proposal.lang create mode 100644 htdocs/langs/ur_PK/suppliers.lang create mode 100644 htdocs/langs/ur_PK/ticket.lang create mode 100644 htdocs/langs/ur_PK/trips.lang create mode 100644 htdocs/langs/ur_PK/users.lang create mode 100644 htdocs/langs/ur_PK/website.lang create mode 100644 htdocs/langs/ur_PK/withdrawals.lang create mode 100644 htdocs/langs/ur_PK/workflow.lang create mode 100644 htdocs/langs/ur_PK/zapier.lang create mode 100644 htdocs/product/admin/stock_mouvement_extrafields.php create mode 100644 htdocs/product/stock/tpl/extrafields_add.tpl.php create mode 100644 htdocs/recruitment/class/api_recruitment.class.php mode change 100755 => 100644 htdocs/salaries/card.php mode change 100755 => 100644 htdocs/theme/dolibarr_logo.png mode change 100755 => 100644 htdocs/theme/dolibarr_preferred_partner.png mode change 100644 => 100755 htdocs/ticket/card.php mode change 100755 => 100644 htdocs/workstation/class/workstation.class.php mode change 100755 => 100644 htdocs/workstation/lib/workstation.lib.php mode change 100755 => 100644 htdocs/workstation/lib/workstation_workstation.lib.php mode change 100755 => 100644 htdocs/workstation/workstation_agenda.php mode change 100755 => 100644 htdocs/workstation/workstation_card.php mode change 100755 => 100644 htdocs/workstation/workstation_document.php mode change 100755 => 100644 htdocs/workstation/workstation_list.php mode change 100755 => 100644 htdocs/workstation/workstation_note.php diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 68fe9de68d6..d7463d62172 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -26,8 +26,9 @@ Default **language here is english**. So please prepare your contributions in en 1. [Fork](https://help.github.com/articles/fork-a-repo) the [GitHub repository](https://github.com/Dolibarr/dolibarr). 2. Clone your fork. 3. Choose a branch(See the [Branches](#branches) section below). -4. Commit and push your changes. -5. [Make a pull request](https://help.github.com/articles/creating-a-pull-request). +4. Read our developer documentation on the [Dolibarr Wiki](https://wiki.dolibarr.org/index.php?title=Developer_documentation). +5. Commit and push your changes. +6. [Make a pull request](https://help.github.com/articles/creating-a-pull-request). ### Branches diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 432f30f2332..00000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -name: Bug report -about: Create a report to help us fix something that is broken -title: '' -labels: Bug -assignees: '' - ---- - -# Instructions -*This is a template to help you report good issues. You may use [Github Markdown](https://help.github.com/articles/getting-started-with-writing-and-formatting-on-github/) syntax to format your issue report.* -*Please:* -- *replace the bracket enclosed texts with meaningful information* -- *remove any unused sub-section* - - -# Bug -[*Short description*] - -## Environment -- **Version**: [*Affected Dolibarr version(s)*] -- **OS**: [*Server OS type and version*] -- **Web server**: [*Webserver type and version*] -- **PHP**: [*PHP version*] -- **Database**: [*Database type and version*] -- **URL(s)**: [*Affected URL(s)*] - -## Expected and actual behavior -[*Verbose description*] - -## Steps to reproduce the behavior -[*Verbose description*] - -## [Attached files](https://help.github.com/articles/issue-attachments) (Screenshots, screencasts, dolibarr.log, debugging informations…) -[*Files*] diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 00000000000..d7dc3d584e3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,71 @@ +name: Bug report +description: Create a report to help us fix something that is broken +labels: ["Bug"] + +body: + - type: markdown + attributes: + value: | + This is a template to help you report good issues. You may use [Github Markdown](https://help.github.com/articles/getting-started-with-writing-and-formatting-on-github/) syntax to format your issue report. + + - type: textarea + id: bug + attributes: + label: Bug + description: Please give a short description of the bug + validations: + required: true + + - type: input + id: environment-version + attributes: + label: Environment Version + description: Affected Dolibarr version(s) + + - type: input + id: environment-os + attributes: + label: Environment OS + description: Server OS type and version + + - type: input + id: environment-webserver + attributes: + label: Environment Web server + description: Webserver type and version + + - type: input + id: environment-php + attributes: + label: Environment PHP + description: PHP version + + - type: input + id: environment-database + attributes: + label: Environment Database + description: Database type and version + + - type: input + id: environment-urls + attributes: + label: Environment URL(s) + description: Affected URL(s) + + - type: textarea + id: expected-behaviour + attributes: + label: Expected and actual behavior + description: Verbose description + + - type: textarea + id: reproduce + attributes: + label: Steps to reproduce the behavior + description: Verbose description + + - type: textarea + id: files + attributes: + label: Attached files + description: Screenshots, screencasts, dolibarr.log, debugging informations diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 32e2deff2c1..00000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -name: Feature request -about: Suggest a new idea for this project -title: '' -labels: Feature request -assignees: '' - ---- - -# Instructions -*This is a template to help you report good issues. You may use [Github Markdown](https://help.github.com/articles/getting-started-with-writing-and-formatting-on-github/) syntax to format your issue report.* -*Please:* -- *replace the bracket enclosed texts with meaningful information* -- *remove any unused sub-section* - - -# Feature Request -[*Short description*] - -## Use case -[*Verbose description*] - -## Suggested implementation -[*Verbose description*] - -## Suggested steps -[*List of tasks to achieve goal*] diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 00000000000..885f3472d18 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,35 @@ +name: Feature request +description: Suggest a new idea for this project +labels: ["Feature request"] + +body: + - type: markdown + attributes: + value: | + This is a template to help you report good issues. You may use [Github Markdown](https://help.github.com/articles/getting-started-with-writing-and-formatting-on-github/) syntax to format your issue report. + + - type: textarea + id: feature-request + attributes: + label: Feature Request + description: Short description + validations: + required: true + + - type: textarea + id: use-case + attributes: + label: Use case + description: Verbose description + + - type: textarea + id: suggested-implementation + attributes: + label: Suggested implementation + description: Verbose description + + - type: textarea + id: suggested-steps + attributes: + label: Suggested steps + description: List of tasks to achieve goal diff --git a/.travis.yml b/.travis.yml index b48a3667bb0..5d7eb7a1678 100644 --- a/.travis.yml +++ b/.travis.yml @@ -57,7 +57,7 @@ jobs: php: nightly env: DB=mysql - stage: PHP Dev - if: type = push AND branch = 14.0 + if: type = push AND branch = 15.0 php: nightly env: DB=mysql @@ -411,6 +411,12 @@ script: php upgrade.php 13.0.0 14.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade13001400.log php upgrade2.php 13.0.0 14.0.0 > $TRAVIS_BUILD_DIR/upgrade13001400-2.log php step5.php 13.0.0 14.0.0 > $TRAVIS_BUILD_DIR/upgrade13001400-3.log + php upgrade.php 14.0.0 15.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade14001500.log + php upgrade2.php 14.0.0 15.0.0 > $TRAVIS_BUILD_DIR/upgrade14001500-2.log + php step5.php 14.0.0 15.0.0 > $TRAVIS_BUILD_DIR/upgrade14001500-3.log + php upgrade.php 15.0.0 16.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade15001600.log + php upgrade2.php 15.0.0 16.0.0 > $TRAVIS_BUILD_DIR/upgrade15001600-2.log + php step5.php 15.0.0 16.0.0 > $TRAVIS_BUILD_DIR/upgrade15001600-3.log ls -alrt $TRAVIS_BUILD_DIR/ - | diff --git a/ChangeLog b/ChangeLog index 5bab0419c54..a9a42c8d878 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,10 +12,9 @@ NEW: Online proposal signature NEW: Can define some max limit on expense report (per period, per type or expense, ...) NEW: Allow the use of __NEWREF__ to get for example the new reference a draft order will get after validation. NEW: Add option to disable globaly some notifications emails. -NEW: #18326 Workflow: Close order on shipment closing. NEW: #18401 Add __NEWREF__ subtitute to get new object reference. NEW: #18403 Add __URL_SHIPMENT__ substitute to get the URL of a shipment -NEW: #18689 REST API module: add api key generate / modify right. +NEW: #18689 REST API module: add api key generate / modify permission. NEW: #18663 Make "L'Annuaire des Entreprises" the default provider for SIREN verification for French thirdparties. NEW: #18046 Add tags on ticket/categories NEW: #18326 Workflow: Close order on shipment closing. @@ -109,6 +108,13 @@ NEW: External backups can be downloaded from the "About info page". NEW: Add massaction to switch status on sale / on purchase of a product. + Modules +NEW: Stable module Knowledge Management +NEW: Experimental module Event Organization Management +NEW: Experimental module Workstations Management +NEW: Development of module Partnership Management + + For developers: --------------- @@ -116,6 +122,7 @@ NEW: Introduce method hasRight NEW: Can use textarea field into a confirm popup. NEW: Can use the result_mode of mysqli driver. Save memory for list count NEW: #18319 REST API - Shipment: Add 'close' action / endpoint / POST method. +NEW: Add API /approve and /makeOrder for purchase orders. NEW: add action trigger for member excluded NEW: add option MAIN_IBAN_IS_NEVER_MANDATORY, MAIN_IBAN_NOT_MANDATORY, PROPAL_NOT_BILLABLE, PROPAL_REOPEN_UNSIGNED_ONLY, PROPOSAL_ARE_NOT_BILLABLE, TICKETS_MESSAGE_FORCE_MAIL NEW: Add code codebar column on serial/lot structure @@ -134,9 +141,12 @@ NEW: Use lang selector when using a field key 'lang' in modulebuilder NEW: we need to be able to put more filters on deleteByParentField() function NEW: make it easier to set the `keyword`, `keywords` and `description` attributes of an ecm file object NEW: Experimental feature to manage user sessions in database - +NEW: Hidden option API_DISABLE_COMPRESSION is now visible in API setup page. +NEW: Add hook printUnderHeaderPDFline on invoice PDF templates (can be used for example to add a barcode or more information on header of invoices). Following changes may create regressions for some external modules, but were necessary to make Dolibarr better: +* ALL EXTERNAL MODULES THAT WERE NOT CORRECTLY DEVELOPPED WILL NOT WORK ON V15 (All modules that forgot to manage the security token field + into forms will be broken. The security token field is expected since Dolibarr v9 but a lot of external modules did not implement it). * Update hook 'printOriginObjectLine', removed check on product type and special code. Need now reshook. * Old deprecated module "SimplePOS" has been completely removed. Use module "TakePOS" is you need a Point Of Sale. * The method static ActionComm::getActions($db, ...) is no more static. Use $actioncomm->getActions(...) instead (without $db param). @@ -147,8 +157,45 @@ Following changes may create regressions for some external modules, but were nec * Class file expeditionbatch.class.php renamed to expeditionlinebatch.class.php * ExpeditionLineBatch::fetchAll is not static anymore and first parameter $db is removed * ExtraFields->showOutputField parameter 4 'extrafieldsobjectkey' is now required +* CommonObject method add_object_linked now sets targettype to 'mymodule_myobject' instead of 'myobject', + you can use hook 'setLinkedObjectSourceTargetType' to set your usual targettype +***** ChangeLog for 14.0.5 compared to 14.0.4 ***** + +FIX: 13.0: printFieldListWhere called twice on same query +FIX: 14.0.4 fatal error on cron list. +FIX: #19476 +FIX: #19564 +FIX: #19651 +FIX: Accountancy - SQL error on subledger account search in journal +FIX: apply eldy's suggestion to not overwrite existing extrafields of $line +FIX: Can't close a down payment if paid with credit notes. +FIX: better compatibility with multicompany +FIX: contact card: bad colspan value for separator extrafield in creation/modification form +FIX: discounts are applied both when fetching the best supplier price and when displaying it +FIX: double display for contact categorie on societe create card +FIX: fatal error on cron list. +FIX: holiday list: only mass delete if leave request is not in draft, canceled or refused, like in card +FIX: holiday mass deletion: correct return of record deleted +FIX: Holiday month report +FIX: info tab on customer invoice record not found +FIX: line extrafields are inoperative in dispatch cards even when they exist +FIX: list of categories in stats of supplier invoices +FIX: missing default value for more comprehensive +FIX: multicurrency: fields in discount unitialized when creating deposit +FIX: Navigation on bank transaction list +FIX: Can't edit a bank transaction due to bad permission check. +FIX: Option MAIN_DIRECT_STATUS_UPDATE broken. Ajax on/off not saving value in DB after updating to version >=12 +FIX: postgresql compatibility, "" as is not authorized +FIX: printFieldListWhere called twice (at different locations) for the same SQL query, can result in syntax errors +FIX: select too large into addrights (pb of missing parenthesis) +FIX: set optional from post, we can't untick boolean field on product card +FIX: Take into consideration work leave over serveral months +FIX: test if method exist on wrong object +FIX: title for nature of third party in company list +FIX: Urgent onglet contact inaccessible depuis une facture +FIX: wrong syntax of sql request ***** ChangeLog for 14.0.4 compared to 14.0.3 ***** diff --git a/README.md b/README.md index b0f7a2c3761..4e120a4cb91 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ ![Build status](https://img.shields.io/travis/Dolibarr/dolibarr/develop.svg) [![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%205.6-8892BF.svg?style=flat-square)](https://php.net/) [![GitHub release](https://img.shields.io/github/v/release/Dolibarr/dolibarr)](https://github.com/Dolibarr/dolibarr) +[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/5521/badge)](https://bestpractices.coreinfrastructure.org/projects/5521) Dolibarr ERP & CRM is a modern software package that helps manage your organization's activity (contacts, suppliers, invoices, orders, stocks, agenda…). diff --git a/SECURITY.md b/SECURITY.md index 9c28e2874b9..cadd4a23791 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -6,13 +6,14 @@ This file contains some policies about the security reports on Dolibarr ERP CRM | Version | Supported | | ---------- | ---------------------- | -| <= 14.0.1 | :x: | -| >= 14.0.2+ | :white_check_mark: except CSRF attacks| +| <= 14.0.4 | :x: | +| >= 14.0.5+ | :white_check_mark: except CSRF attacks| | >= develop | :white_check_mark: | ## Reporting a Vulnerability -To report a vulnerability, please use GitHub security advisory at [https://github.com/Dolibarr/dolibarr/security/advisories/new](https://github.com/Dolibarr/dolibarr/security/advisories/new) (if you have permissions) or alternatively send an email to security@dolibarr.org (for everybody) +To report a vulnerability, for a private report, please use GitHub security advisory at [https://github.com/Dolibarr/dolibarr/security/advisories/new](https://github.com/Dolibarr/dolibarr/security/advisories/new) (if you have permissions). +Alternatively send an email to security@dolibarr.org (for everybody) ## Hunting vulnerabilities on Dolibarr @@ -66,7 +67,7 @@ Scope is the web application (back office) and the APIs. * Remote code execution (RCE) * Local files access and manipulation (LFI, RFI, XXE, SSRF, XSPA) * Code injections (HTML, JS, SQL, PHP, ...) -* Cross-Site Scripting (XSS), except from setup page of module "External web site" (allowing any content here, editable by admin user only, is accepted on purpose or into module "Web site" when permission to edit website content is allowed). +* Cross-Site Scripting (XSS), except from setup page of module "External web site" (allowing any content here, editable by admin user only, is accepted on purpose) and except into module "Web site" when permission to edit website content is allowed (injecting any data in this case is allowed too). * Cross-Site Requests Forgery (CSRF) with real security impact (when using GET URLs, CSRF are qualified only for creating, updating or deleting data from pages restricted to admin users) * Open redirect * Broken authentication & session management diff --git a/build/docker/Dockerfile b/build/docker/Dockerfile index eb8e3ade6dc..ead2a8af1c5 100644 --- a/build/docker/Dockerfile +++ b/build/docker/Dockerfile @@ -39,15 +39,13 @@ RUN chmod +x /usr/local/bin/docker-run.sh RUN pecl install xdebug && docker-php-ext-enable xdebug RUN echo 'zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so"' >> ${PHP_INI_DIR}/php.ini -RUN echo 'xdebug.remote_autostart=1' >> ${PHP_INI_DIR}/php.ini -RUN echo 'xdebug.remote_enable=1' >> ${PHP_INI_DIR}/php.ini -RUN echo 'xdebug.default_enable=1' >> ${PHP_INI_DIR}/php.ini -#RUN echo 'xdebug.remote_host=docker.host' >> ${PHP_INI_DIR}/php.ini -RUN echo 'xdebug.remote_port=9000' >> ${PHP_INI_DIR}/php.ini -RUN echo 'xdebug.remote_connect_back=1' >> ${PHP_INI_DIR}/php.ini -RUN echo 'xdebug.profiler_enable=0' >> ${PHP_INI_DIR}/php.ini -RUN echo 'xdebug.remote_log="/tmp/xdebug.log"' >> ${PHP_INI_DIR}/php.ini -#RUN echo 'localhost docker.host' >> /etc/hosts +RUN echo 'xdebug.mode=debug' >> ${PHP_INI_DIR}/php.ini +RUN echo 'xdebug.start_with_request=yes' >> ${PHP_INI_DIR}/php.ini +RUN echo 'xdebug.client_host=host.docker.internal' >> ${PHP_INI_DIR}/php.ini +RUN echo 'xdebug.client_port=9003' >> ${PHP_INI_DIR}/php.ini +RUN echo 'xdebug.discover_client_host=true' >> ${PHP_INI_DIR}/php.ini +#RUN echo 'xdebug.log="/tmp/xdebug.log"' >> ${PHP_INI_DIR}/php.ini +RUN echo 'xdebug.idekey="netbeans-xdebug"' >> ${PHP_INI_DIR}/php.ini # set up sendmail config, to use maildev RUN echo "account default" > /etc/msmtprc diff --git a/build/docker/docker-compose.yml b/build/docker/docker-compose.yml index b72118de5fb..8994043cd8a 100644 --- a/build/docker/docker-compose.yml +++ b/build/docker/docker-compose.yml @@ -48,6 +48,7 @@ services: - external-pod extra_hosts: - "localhost.localdomain:127.0.0.1" + - "host.docker.internal:host-gateway" mail: image: maildev/maildev diff --git a/dev/resources/iso-normes/Intracommreport-ManuelDebXml.pdf b/dev/resources/iso-normes/Intracommreport-ManuelDebXml.pdf deleted file mode 100644 index fef9f48f53e999ebf0239534d5ced7d68b1b1533..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225572 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

K)#IHq1+HK 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�H>a4y93rXXnz{~q=3R*h+oHUl3n z6aYkAd22f!tbYJ#3QyTwIP4%~W}>+C`IkfHM0t!#)a+cZ2m=sDhoAupOG+tS3c!Hq|h%u7uqs zsTAk>h^sW`UC;2Db_WoHp44}^eA3^3)_oK+dnmb(+=8Vp=r<|zWycNGvIP^9-7MT= z@Jp-*n~!7;3>P4L=V$OHo=T)wp~Y-}XF7uPj9m-n5MFq#+YfYeMs&B@0AWj;W%`al0KNGiH3TjVbM1G42qeI46 z$eT$d2kEZ<$WO5VpnjklUfwFjyZKmw!#D-%D47dMK((yh+Q~ag{j!(m=TUn&|0Nt= z(IY3E;%v~m1F*zLaAqK10LOcm1i}G=w2gw0EbzI<&59&Vx}tKdfuTDIS2jbsHQ8FagR3cYLC?mF5XRvFtbT z^97|G4I%=_Iq#o--ku!y!E%?_0(7c+Aaob6KS;a8CB&7 z1UGxX7M~GrCo$Jsx55$l>`8GQVXY&@oYj#Ilcomk0&Nj=y&g3ev*1O0kR9op2tp|} zh#L)yENKwP?&i`yvsFIOYV*YnTXLV{AC$MHHBaRHZMn2k|yTqN&aO)h>F`Wued z#icH)4mp515SFnDV5p??Zcb#%E%d!5`+dpPj=GC$Zk7vKQ31x?-o+I%5`C`jces8b zDBKlq4~e@$K~Tw{0hb$*y!!V+&{Vk>{wu1d_b3&QIVY7In9sNPvAR6h2d+d_IU<%9 z0n6f+vpcxSFNWicb$EjF`j#s-pU)J=I{DhpA9M2EE@d?#ac7pf?(=0V%W0j3zCnGM z8=4g&?O-{6%0J;KPfU`@w^MqR9YucuT%|4<{+&twr8#2f`Xhz^$8o^FC=C8Ou>GSC z_@54J|0~nsc;$Jsa1H5AO+csc<`BAmPN*%+{&sm3PEc3hZVu!YWIhO@zAL&2;x%{ ztkA5A@eWt}tQ?3bfwzmRu1?rb%-pBPUGpsXk$CRcomaLo(cF`*f&zr2zcMCQObG{? zU@vd@1C6BHh0>@912*0Zd%771NE7CRt%pV8U-3JCPu(D<0|Y=*puUV zy@GE3UwrUVg}HOeVk<1?p*k1!1M&c2xXAGM3Y4R`o1K{N6+C+HBq^6K%lSL6Sij&L zJiK%!e__0zZy0^7ByxU%~zGvjjkI~ zsp4sJ1Y5JIaQZJLHDT{5P-e(?_XdvSQ4__+UQKkd`W3AnTXv1-;F=MXrT1b}qQ`=!2X)4s{)OkD#-P zA%0DQ>oj$cnW5Rl?DXd9Y~55%T_WLz37P|eS7n3D)`W=G{uf%DI(pdD0Y@qyvrfhRzl5k(71lNqAWWZ#)k} zy} zQztxzdK*UT-HF4|zQrz${(@oEnqqqWLL2o49hN}Zu;U6s2Xp6{1%ZvhgKFgWpz_zc zHJeYDNO5)=^5ydc9|_vT?>0-&kvFky_Rc%>Nw%sg+c}yimi778vt%lZoh#t`;@D&* zRUYTm_vRjJqrzgp45M~~6X|Y#qP}Zi;EAY2`2B+e-h=@P9o)N|pF1)u_ z(44O|^SkD-)fz#mgt3bz&yBtH<-_fo zD-oYfN@bWZbl`^FDsKyekWs1WUZWt=6e1>m&3Yvf;i~r?N!sZ}He(MsSGHRi0Tid( zJ|oGkxA*q@Hb(FOVK#j9COMadod3+u@NZK^ za{W<8{V#!AvNG~#VifV4*U%aR#Fc~~xljy*GXMSu)Rsw)(cF`UmqDIJ0sYg`RYu@7 zc1)`jr#G&aHoeLlj*1!ag`G=3H585#<(DG5%A-YW$WU9gncv$RYGe8djI%Y9zLi)6#Njc4cir9448~g2v$prCM#h9$tJ^lP$MOuKf6;&? z$fC}BU?gt-LZ0=(GF@Tfp17pv8|s(VFvR--%@)?I@59i<_cKkRTUfklT}JYxKI+hc zuvRFD)a-ajK1e=`sN~i3Euu+BxM%1=uOX$cLs^J3Cw)W1FVX5TVddTSah_%YIl#tg zjYQ&Iq^pj7wNqDN4y|8NLCmmvZ*O_iOiOH%qEg?uCuUbhSQHynunWRw?pl?o(c#y^ zG>s5*2A|rAg3(1ukB}bOU+jB5vYez^0!aPBF4v$1UP)qw)ce)&4t!_mfwV|JI07X~ z^(f9dQo2K@@WjM>4)%;0z6X3x}F22 z?{#UT+`*6(#Z{`(04vTd;`Vt%<*oQFT>upilU+AlY$l4gEV4bw3BhAhBRY6p*PY3Y z73Jr#4M@F?^ho~>Hq+oj`k@u$fg&gKGv}7Vwd-_8!}M^v{@fR{5N?&ih+X;s!`b9% zUZIHg8(8I7dv{xojppiSF)!rfpy(r#*!&;gWKMs@Xti;Ky^Wan5v>FbHVadFJkNcF zHpai~I1Tm4rJ|CtQw~PK^vK%B#PWcAu5ba>bx{>%x_k%zUfX!~^;I`v@Li6$FM#3_ zLRg#;9X`1G>K?4&eQ@pHS>sohc8E{~>TmA(x-YDX?DRt)Q!Jm@HGqkd>9OX#5eY64_Li6xydFlZf zA_=%W?uE4QA&2OE4-!s#>`Jlq{D}*|PzKdP)J9`%G_+er(j^~eW!-SqV1xLMyV)&< zVrNQV78y`Wn1fXku-fhTe6w*fw$d}k$AS5xdh=vN)Uxkrul_U-7Jh4M3e^n?4QS3a zLIXIvgGJ#J&pPBd!0<=EBWi%{T&IL$>0~uFWy60kHrtVcH}g5%LeTSXglz2VKY`*@ zLz=Ca7EaT+coDfF(IDPBTt~D}k(O=z1{3}z*e>>EVB!4>m=zf3{RebnK;Re0GfZX& z(kTQi@Hn}A%I>LoF5yIuwMynOhE}Af<(HzafxEW-)f$me48gXM06k`X6lNz;bB!v0 zes)@8$IXNM@+`!fy20&51N^d&3<96iz5_yg5oH4Ha6ydRbN@jUq?ve_HsMs zmL2dV149v&dSdbwrG27~)2Ph#ho$163H2(25+Krs!S#mNRg*m340@>>hmNT1mOR;d zhHpq{;Pm>FJKctV=qx>2Cl0^XgWc@-G>;W+RVb#R<$G zmwqrh%g!dvj4r(|beXY0W2iNar&y}2Y8T|7B@ddDQi!6jDPelM+BSu0RlsM;$N&nJ zWkk)MAGO4Ps&win^?F!%49>HsEv0bsYR{dSsI0R-J={(bmw6@4nQ8HKRJWuEiI)8p z7QY#aT;Z@|d|Mbtwh^Vt%hLSeQC_?1Ja~@c}5Z62vicVTtyYn@@7DfSF7-^7nc3@9Reb6G96|44P7p!#BZNB8gsI~N)J5$b8 zT5H3rSI6pn_EBy_2`f3QLYe(h8*F?~5-+>EAD_}JY~L8#kt-BOM4Ljjd5NCZfHJ|( zl(7d_o=%3Ofr`?OAw^K~0@Ifa4pv!K1SU%xzRi-=FV^NW?Iq`ena}*3-AowgE&8Wa zjl=MsJyj{K0?&dg2+T;jTl_rivZ3GKo<9pB zbw5%c**vj3FnI*!$L!x#P8NgtdJRZNY#DQ@>t=h7iiPIs@;}2;4?Uzsfo7b zv?&$f`h17)IDDr3&a!aZTaWTVO^ne~n8fE&B!QOmwv_Sd#*4!)@p6?tLASG|y%%2M z%Vr4w*tm?~gxwnEc(D-e&?&u?jmg8Kr5xjJ1$ZA~Nwz+-&v&o~6^tbHVkCj<=|fxL z_!jCm!2oHS5C-y7u~N@pAvqdwoI45QYCXM?kJE~45nevuIvTI&2+=uT228aKUUk5kB1jpfk>t5eagL85D0-*lx0#`8ci!2EC zJspY5G^GP@Ta-AD6AT*u9`s5X;Pe71_G!-*ijX+*J_I&A70%Qp*tkLT!zv{)%Zm8# z77^_=pQ9EFZk@#AxSNzvaa@^yK$v8JjM0Ou=o#X>? zd_SyER<)~?M1kUH=UB?~8ouGUuwJ|35U&R*-kl6JAX|X$LOjt6`WJ4qJu<7|Pwp#J zHQW(I0oJDDe9kr_eyc^7d>vP;bxHU^U!X}IPqxO=i3I!SS6-KBa-dE%mI34;?1o7~ z%0RS&yP9>;H0#PcgV(-xQV?^E{svHze z{%)82%UK0N;s5PF<@yVo|405)P!x=mnU#g53-P~&;oSe1jP2Sdai9Roy0bT>dd1nJ zNG`-+jQ8@3%hesIpS>AmjI+kYNn@qRU$JC1)0szBUVJORFbPNU=>xK(wuDGKR|@qN zo=N)&7#f#O8j{Bbwj8??77nH<4Ljy%#LaKQM(wrTH?)qwJX^^&#n;m~4Z&yZDA#Mr zD*PzxZQ9B_t-sD$BpJy-(9N=dFb~;>N4bY@|5N zyj`4GRY;ClF;?j@8``$43^V-`VIU{+qKJw(3!cSELhd`KJUZS2BkWDvVdMd+kOb|0 zlLFavzkTTP0fEXram9(qr(c(F9Ov?@R>s^#_77PdmVK#2WZPK{hg%gtAP%d2w)|IO zB=(Du#mi!a?;Vuv7ahXcT1tjHp~}lEz;AVcPz;b4g_0KmE3Jb^(MNYEkgV8r|aVWXL37t ztqiJjN!4YB78d@4@M8G&Tt9NnM*<^F*N5@kP)o*4;bEA@K!7{SGol4k)Wna9tENwx zA=hh-B<}bYvs%Vs+oz%^LhSLa2qG?5+ovrln~WfHK>gAYL^NVcuJt#D|Hm4CGZYT4 ze_@~h;-&o`*(a!w%|Gq_-vthH|E9G6+c>Z^+o&L7#1IhuL}eG68V9aZ~!C3Mup&KI6MDBYrWrqq(;Rk`1H!$9!-iMdIT);Ph%ygLQU z%tPT zQt34c7HS!ZDz1Yr`3%RP(rhYJS^+)&!TBzMcz?9dh)An^TM+};g5|mU{W>uZcL_8G zkqXXAh%LLuzlar-EI1oAdQy6Yb=&EXjjpi4^fgDtF3TxaZ34dQC7^7@*pY8^$@d1b zASseaY{s&*>ZvA3N{aRgW%p|7(%X%|h)(7F~HZM znwq}!J(*SaK`*pmqPx`~5Loi%uA0OxG}EwWzZ<>?XB)d(V&*HU~4Y>XaSNu;_Vpb03 z|I8x)FAfo1qsdZY#JW2nwWWx}J@3)&d=fYkxN@D_j;rb^!!T*dgrUh zOF%+ptaADeCC|I~5JkolwZ?c~xHRYNaQCMeAoocS{3 zQ%?e>K(%9`eV%KEBMlI|%(>#26#En;6uZN9w8H^Q2GGNN8uv=FXJ&b^-+7jiiVWVh zh^cgBsC4d)D$i+8cOu@F1={&Vj-E`wj|%@-Y$1?5bj++CV#v8%hozaglzI=_u$4Ol z@BXz<$}Mqtkeb*^+(`*u&C#w=_x-bkDLKXxD}6M&6%&;iwLZaSs~%7~38hs{UBSdq z1l2@8{9VbF`^!SD=Zam7yrO-wQv)sH0IJwh`Q*4A?y-EYioU0TWjx7%=Y$rJdR~5< zFk!kAdLkd9VI>AH@YIb4d|-uGFu2esbm;;yx}G#<)0QO{5n6c&Srkt(jv)G8=h%@8 zySNmkp-x>oGk{&&=`3cc6|r_jPzQ@BzAutg_KQG%cUGsid!&9CE4Z7Z@yW7cX!v|cc;7G?*6{fP0XZLe z2WfDib5F%Fab-*V(M*6#@vEoS7~hjdQh|q-xGVi$w8)Rh3tn(lt-<-Lr|<3? z_0$*Kcr(vk^rx&=8a7mb7DKU(QEj+Z8_tUOMSKsX(KOm6sa|0vx7JC~%eC^3FkFS= zkZA4l@c7^8;O3I^4IwD8CCHh#tC4W`GJJj*je0OPG!5&qCh>Alwu8d;J|7);15Ks* z2}`>(!P<9q;?EIF00>+SBgwF2=^! zP2%?tVbSUhJd7b5R(Cyr`*OWPxoE}uPc^Gte{r}lGqJJ#QFVWV0=fRJB?nzk(f3*N@6?|I;OsQXGeV+sVZ~9iVYMySPh!lger!DQ`cY~a5N9$&$@BppZkTvH#1*k?}}T6 zv&Jm^_lwKv0)*f)k}doyu@`n-du6F&uWN5=6rLSoKehHdD^ovth*k*eNn^{-+cubO zDJWU;A7~Wo;JD_uE+u`Kvi+5$eokbW&d?x2qvTvC!;-0Vsny6GtVNy1s*fPELIIVDHS`pn>aO^W)3n!DSHi6MVkY@`)F zXF?Q3ZQ^Zn1jg@3gZVba<8t;=ug8rfH@8^@tOhsp-q* z)&N(1e z5N8}uo`}cZy&X*MfXCLT884*v6awvGq4yUr37FLLw7?!aGvhb5q0VQ`>sJKNjhTlX zu-?W`e@a2yiZ(L{-f%h?fjd_0?YO^p|VnTHr|}G}SScTMEIL zG0{WVlv|nugxV?TVZI!HcF|6pY3jt`#*Q2jJEmpYXkEKN668$S)ZB5~3|0Trr0s`c zj^YJv6Go~_@vK_a4{iJsCBZJl<4EuhBXs0+Y7k$JBPJbx2!{0l)J9?tv&~FL@u5TCQ zHDa;`OI;2>vGr?k{kenfc!`Ke+yHJh*?4DgLVi5UxLg%KtW| zNVaqW9e@NlzK1Ds7LJ+A+fzs5Np3Hu*m-luY+dPFT+eoiW}UV%ZXQYz_( z^q=I6@P9n@(?v2tuNl!d%;ROE6x27mC3ReSxErYt0-_cOxl;lPe|*)aRc|<^+serm zI(6m^DzjL+35+KiXN(2nW44K)CwlD`f8sQWelCEqXkjsAlQ;4$ zObk3x@&5Gc)3k>%R$GTBA>}-wd8i|+h`vMmlX+g14ri~zvYT259M8zms#?PfJi_w0Gt7Te%qAq}oxt_GXYoD~-;c+ThR0CpV-FyzsNVCpJJ6L`E zIP_!QF)mT**5P_T{%|YYplW@5?~t^uT%K(2Z|xwWhIWO1wjwKdWPWPLPtGXflX;QK zBYNQxUk`-GNj|WtdE(Frt$OC!Ir`*Od%RREI9IF7N9gx``~|IRVDjj|4dhr)628B) z8a^FjYjLzB^1Uu~eq3UXaHjUQg*;*R?<HXkByWv7P%Crg}4?UN=#!E>XP0?OwsvJex^r zk->sv;Rxdd{CGs{BUR)QqvjwU3T6OdP86oSTt*9z;PzMQZ_+@0`8&FPJ)PNHVa-%N zE2vma5x$Y_FG%8I<(P5aisg4=%!<^rtIEUv{l$w^@a!^_Yk|uw@(**fPo$wslI0Ff zk_0s+5){{=E1E?g%?a4uWES(Li%Y@7}?*cTLN?49S9!J{Aw!kxc?_4BN=K#kvkly?a!ZGkoA#Do1}b*g%Zz*A$OTVeDVFb<*@Xl<(ceL zHWcXd<%Vibp(0enFix)KN&~D`d>$K~4a=%;v05gx&H35NAD^DjlP*R#UdpAgT3j9; zPO@5ijbVf3Sc)x=Tp!2Uc>TdG8N6SXwQ#`P!+O{6=8>u!y%uM_Y%UaePYZ2mrktOe zp7d|BYrPvJ#_x+FRgy4g#zDSfAvEZ9N;px{rywk&rC&)tC)hwaV12pW+ zHwbpU9a^lQzPy1G#aIyJNYx)u10qiI`f!>+J#*9@Z!rh9cJ^M+9hN*n&RWzkQ43`% z20y=;C!0@hhYTI@ZISyRI(-mW@){(Uw2yMHuy1b&aj=V_-UmmFwjB<7qI0vD18J(; zVFhK9YDcE-FBpwNI!UQEN1yHZ+VPlfCGl**2y=xHAa-cx4w!7SzkWafADS-y=7O_~ z^tB+dhoF$(4pgu@?vDl8*@yan)}#{Utn zY)5zf(TIUKMAZv>h2BrV#KU`KFW$00_m1ppOT}fs4?~2T`?IE)MKjMvL!(E|hXxWoDSxu~G z?XG+7Pe>jg)%Zag;Oyrs8Con#$J*L>T-smZ2K)OrtEy<&5B4d_X%kFrNEBrCuzTXF z(&>_h`-(B;p(oG=#B1zR+U1{DWkNQ|1X4dNO$%0WGSrk?nU3(y4c79wfTV3d`BS#kwvB&BsHe<96QauT~22l3g$i?1G7-|=H%|1{& zqEtNl@owfJ)?(xEf&bNuL*Hu_EPr-7<#!=u_{+=4OFF>5di`p;)Hgg+eblLFv=Is7 z#GXBRs?Zm#sWG;$tM4M(8X61Yh<$DI}FKEE8q^`4d%9c;RWvxR#lCpY_lw&J*^ZiRphEs3&;8zc!Zg={GFIE53iLWMF}2 zN<3TP<9`8T=r}Fa6L3-w>s51y9ODP{Rj5MfhybhLIiD?*W)M03`>Q7=DSXm*n7y(WWtrx>P8jMx~;qBDW2g>(Uke^ z_X@Hk`3)mHByN9$?vzg}RN9I%IZGWlQ8~mQ`~oLI+mO*-=x6BM*_7%&)FWy()_zU= z+0p_wSbmGf>cBx&KIg`CCt9e4(V5vnvyWF!q8P4ox4tL${k}R6(3GTISnJcl zXJv$XOOfg%*1=praw6GJZkpBB;wGUneuT2XVum4X0<(KsMGvi?@>}xP4_BweN?#rC zx-*{BTs!i<056G|GgSR&TS2cKu~$yPrq(DQD3d=zRhFbh5pZkvWr z^7q@VWj4Siy6|=v?;3PI3dsnW(F3rWLVesR?euY*t{m0N2Lqnb!;d(71jKR20<-Gjc_sd$-~#Ue&m?$=q3<<$gqsZ4%byMK zc@zeM-T2Fc?;j9mM2=zf>X3Lu=w=iqO*7IDsj(f``-g6MuA(Yr^l;}fnp|Ak1iJt3 z^v1EQh2sfup4r=C=Eeydg)Ia3h~DDiFYdTJZzD%xETm~S z($S>tUq^0aaK?Ax2Tw*?+2Y@8E*1$Ki??>&4q;sz?;MNCf+!oOPMY^KBIJyS5VC*s z23I{8wI^@JFmOyNp`Dm;j|gGl2}mNjGmOW1`+nl^9eQ4TMbi__2bF zjUGhBFT{R$XJ`sro(|1*;eiGzyi=#U1VxnfxYImc@=^M!LCR5OCA7%jNG_08)sV2dMAO58 z_AE}pV1%YU-_^mg!7?C5QFx$}vmTD(Iq^3=+Z2Fc7m$BV;;r{~&dlz597r0_wRc*! zp3OZO!r8c2)+MH{el|H6C!?1JBX8&7-`Fk?v`4_98t8s;$yd`kX8l#GR{LV?KtOqg zVRe2R&5PMGKL?iKC)Xv)*IhS+6vn4*N;O~fGNx#VexeAr%N9U6)5O+(8;-~5o72Q} zh=B+(5mR!d>>itvXgVcw`8Y|(>pESyCK|;DDVGOeia!6wh;8B#uT0aq79HBqnDNT& zX1L;TPS`L{aSZ7I52N;l`E28ufzZ-5ipLN3{pzd94iq9Ep)APK{IuFy2O9Vz*qa#GBz+V z^v6SS(wm35YHIS`|G|BL(`QA$kn~>{;0&+Guk=KDWc#!&}j@g*4~0lzP_OKKO8z>oQ&&K zR{6_!6PL{#&x}`y$x{!>fVK$I3AmE2F!BSLhA!Z88HF0@qX0T7IMkqBR?ljJv{HEv zIvK9a%&T6Rn_LD{iF5XQj9vtnFF<|PKZ6e^7+^Mk2@#P451!>~1^7AmKctH2ZwkY~ zWVfBxxpITNaArMeG@>oHt;M?rs>A0doGRy$-hK}jCqT~)R0G|rUT#@p`CN+~#9F=) z&4fH(AY)u?w?$RkJm$ZaW=*|G0F`T?#zb(^$O)Tas^-E(NNQaMyk!<2(`1YwgN$%4 zV7ODhPyUq2h?(IPQMz-4>lQ)uDrI?e5HO@%yK)4u2A?pg4DD_v)uZKk{WQ&Q==wPj z-FA&AV4s^T6bijruJ`v)5mhCej(ZFvW=UTrnR%9~qheD4$4T!O|0Mdj=ZpUm7ci(vHVX4v?+4a8K?7ZC?S!Fbe1rh+| zCol+KZeYu6W+bijb^xxt9=2i~$_`KLC0={0oRvpcyKwnhy+PNy87o ztbY5u#DvE17eM)!&vhz*JKgef3j@br$7%0#-VqfRp7;3m%ov(-a6GRVsjOxjgoP5g zgnBKJc&Qw9e2|B?0Egx*r?Ji(B>v|oru%woQ#014L-ul_TF@mZzN%zc-ANj=svq7@ z%zPrB{d#`JbydDfLxcX`$=h~1hzo;OkFpZo?!QqBAKsMR4Id?kuEdV{UYl#7GQ2|R zdHngOqg7br*G3UNn~)Wjo2nVW(e0FgYAzYTR6ttZbxP*`p6vGcd$!63yD zI$jrWK}sN9Vx$^z=2-x+8@h#N1s?lRuQ28dK4&fq)0>WK%eO^Ag`rKFS4=L}J(|QW zh5)Om4Kj4+^ALppjQSr<^W#QAl!*b3aEG_Sz(?oe0m#K-=}FKQfBT+Q_M=DXG9`kk zeFT}ObuW9uX;vq%7B>&K7XsdJu%zwTqmQyT(Z?}!h>x=D6`#KPAaLO-EEu0ML1+)> zZd8GJ{L8oa$D{kFV?n^vZsYkTruG(;^l`@gV&qbjaJrl-t5_SIYcI06f6;-ubl5ra@r$x#a(=5@JdKj|udtRG`Q!h&6@J8ZS8=5rR8=wh zJoOGDv_5t)Ef;Z#U$iGbn;{)vj*)rOI!%5X+tFu_$7@|-;e(Gl8JY@pvi{?$$c$251&7SfW4v&QD(M*PmU5 zN|+t=?%CRSW#DA=)b?Q{jeKkRmd@EQW&z0?D8HrQcA-!oRG=AR&m8v%vNU{>E->!- zGFm*)7MKd3nyP_d*+WtpZiDrFv=hZ~imqx11DOy$lm;1;Kmr`4*6Z|7XSy+r?53wQ zU}ko@K%#Gd2G_qi>A)tT{%K#9M_ScXe{%mNEU+0puWi5Aw{q1s6pkHEeLDAV+xLa6 z8Z?H~DiG4ceED&?W}|N3{lj^TZ>nA&ai^>uVzlr*e~$nRrt)M`9eEE2yCxI>pkREHt+2*GY71 zV}tr-UG&tl3#$tCEd9g|Mkhk5g(BZTGQA&sYD`Yt}GITr`(3~ zbNHNjS&!E_Z={jNZ`O?4+eyF@4J=S8Jfbe+z;dJ!p?!Cc<=2negSj4Z^>PzO4}qeY z+i2j|EV>ju-~so{Pz9llh=csE^#FNmGV^DNkNxyj2Kgn}roX10T1IR+a;!&kp5x_P zxthOO-t<2g#;JWy_Ykgl&7N#n=h5YEtt8nqECgjo3IVw#hoek zh7t(7U*GKhBNvD~<=32B{RMn zF!D+-x|EDpMB_y<)s@pa?eMqOrE6e*L5;_^v~zdFq9yp&re$qC)%A+fn0%fH8(AXQ z-{+3%c6|jdYAHh(ITJETc%Ht>y19F1FO_anh~iCH;$`j0@g%IDqj)#Q z3njTZbN^;%gIrz+j(8m96hsF{;WK6E#Ta9F(IHUtAbT9Vo)gu!CvVk z^C^lvuK~*L|M(588+_#^Do96o`CYMuJLW>;O;^F0h$?yTO^!(#q3)kEcn*|f$!s^<5^)H-O zK+V{BiQ{_6DkvR!-r?S?2*Z_0y>rM_AtB)PFW#iPbBs4AaIm-?hvhlQ$>Z0cs2voB zxjSxmqZxmYP!JKJ3m_YU|T^zOkS#i-U%&F zKs^`k_;rvB%ZL(5mJTT7XV&PnXt4NFO9?WpSS+_L(&Td(CauAN;2FcH8aP8U1gfkx zQj;`g{fX_frjun~RZ~la-=AEQzB)>$B$~l{%#&u%7!tY*0~tU%RP(2!o0uucukX?1$|5UZ{4!p5cdE_V{Ypb8k#t*U z+PvIbU=C90Wnx@k-ZX#4i^l4SO@w0W(skn>YOCMV8y8i490~pt?vQOQ zevC-Al#gO}r~ZA%lsC!&Y@Py3q0;uwmm}x}%A_n{8@rW?zITDk+dCCI^Fnq}a@kqG z5=I_}1IyhPT~cs%JNToXA<+^>caixGX+~k65|uE}HqiHqG${nj+Bk>uv+KK-XAfOk z+=|MGonE=1W*!T-yka>HNNx?-I_*>wQx*`#(u+YF@NwDd?lJA8WRh-H2#6{!4xZO% z+h6j_!WGlGQNGmkkVOgOje2dpefg|Jqnzr~Ax01R#ho&T&Ae5{C%5eZ+z%jUb|$>Z5KH04TvUCR*|f zuap+~_x-d}NkS!0#-)<{0N}%A-l`#!#tfX*??7k}()9oH24VkZ`91MF;(aOA4riVC z-k-YWQspW$yU$=dj=lF?OmX0GM3Uq=T?iJMu@Li5WPfPt!B9D1Lh#&a$7RGVQa-#7 zJ7Ts(s+ESzt8IPbBgl>Xwri>B9$hE9JwpJFoynR|Iof_BMUYnHuvbTo{IP~ULGCT9daj?iWZHn2r)TP-iC}^ChL3()CeBUoX!M#Ez79} zMinx=yV+{@#ky>bm8l~hs|-m5S5orc8{>=;M)tGC@iKNr{!sPLbIj)FrMOm_adJc} zzU1X9{)Y~5b*wn0tGBuesrpd_%`$gnD>tPPPoSM-2+y0%GK>aQG-5^|Wia?1SaE!I zZjQF+IAI*+48x(#`shenN<8WVYPeme z(Cv~+MUc2-o&}LW?>0g+!J?!Se5`F&X4x$?tySEAMp(4I zrqJNU4r%YbVGc~S@Q5V|Ai)q+X`Ou|!ys^J6Fev;?7=)h-v4&m?Bz>}1(D$u6nEf; zW{`O?5L&wtq30?ZL4I7tDW7}dj^kCevN1TvI=}%NX6PbvPSr3GZU-!}x8V`}gyg_- zp}r{Zc6nls(BbnDnvbWvf|ao}gM6vF5=Ar>A*i2ZnGW&kJ%ICvm_yw1(1>-&(1)Ug z!9vcx6%hKh)UNZ>$Vj63JMEDDYCgP^iBh=^_u!lNmRz5_&7D$~2i?Y?;2Ng&`FlH9 z)#qWBaGbq{`Zo9RS!J;r?sCm~!8yuPr#-H`83je1z@cShV|(=!@~;* zGi-*%hH$_;Oldr%ZWtz5(I1O%)yG5>b>jzl#^4)j>IBS!RIR5P3azmR$MN2K z(kA6?ZbpJjoOUDI^(;nTNPk|fKl86uWYV3fpDi zrMW|QToL14JcuBjBmfOTz**aFOutfxwx7IU4;E4kxu9pF z$4k^%btE`oYPR@(PIS&y$wCYmnl@K8Qx-SyLW}JS_u&^HDve#Ibb+eVii%UEoN1nU zli>D=Q2Q6j3XmUSfc3^w5G>kX6TEQm_|6?%pYHFt#vd{5Y8kz!evWw?<@kU~>Eylq z+|nc%b-+*Ya6sjG+!TGxyXe7lw<}k4&Vus!&FV~^mx$Jn6poM`teH0|MF#DOXAYfPSZiyCaM4 zv)E17*)t21?jalk(?#=BPO}!v?n6=G;t>rE%Z<_EVkPBJkLir^W)D)y7#_{q1!d}UE_=-gar%QqZLvD{f5nUVDnnfe_g;Qj$9$XUWm zCss}PeQTE^z?}_RWv$}Lc1}}~m61{UTZRer%2|X_9ZF8AT6@6Q6^$g%>+5r)BGSGD z@6=pT%WKM#g&>+nz@^pu%T?s7VUc-+>jmdj#lgYa_lAYXx)J3{`7Hhl4B4rp-1Ms~ z!)dMx08?zl^GxHWvZbQ+)Y19EqRV3n+yI2FZ;V*Oa?z!0Nyi29BHh2~8VBJX&K-ps?2U?KD*-=8f|ZT$T(Mb^PX<*C_W_b|aTz0H zi?=1;pd<7=eJvq)0ys(XwAj}R(8!`arG`0+^M+Ijw z>4wPjh2jI3l!u-j<%7C`FAJAvJvWV-C6kI*x49U(*OyZ?bYqDzNsEr5B62LL8okQj z^ZsC_0TQ-_f#w1N*Ido31&eE)7i2Gppq&O36^u$Q@tE-aosOH0v zt}o6Y2rHorZp-uFJj75XiKd$)(mhL!q9POnRv}t{2y7wm>*L5k7g!TB z7vEAuwdf)aC*KspM3nG*pYOh#YsTpO>8|;AWYKh7R}aE2CMv=2V=**LvfzWQ1gxib z38+4hEOw(Oqlv145z?T(aL@o8gR&AzE1R6v%Xo(BqT#{tMil}~;)Q?q9EKr$1#7pZ zNDVl{K|J?B6uQxG;jHUT=&c_<*O3%aXf=3TEjH9f?MqXv@^I zmB}X@D$x+|wb9QFV|I|^81Dq8+ApAJP*ltQ;PcoJcS-d|5!^OcXb_tFVjL#@WVG#B z(zy_Fb1mc(QY={HlnTb7ufY=ykP3%QG%Ewny?Y3`qd-X#Gm+c&CpUkj|2ewXdB1Z$ z)rf^i3k5N-J|Df+d;mP?h)}F{Zd?heDOILJzJMyrI9HEuI{cRgx{BOEIs`GOYYimt z)6#I9(f5M@3s6FQEI}aN!i=gp51fwiSV|gOnz&1z+rDhtos~PHT!Ibq65I-1Pbo9$ zba;cbtTYt^L6WG8Xp2H|tWD-fd)CE=;#j0xX_OST(woBYblks zvsSa5)repEOdsZyhvu<)Z^|R9IVJ)B16C!E%R-%8Erq~fJ-}2hVn8<|sW(`x?U^*@ z;h>sZiyp1yo(nfI3TDS-nV|tghg4Is7pJ6l53-=$$1>iD>##j|ZbiZL4G)^A7+V#% zDS;r6`jtpsPxo?aHYso+^FF6C?aUwO`JvEmEe(U`GGg`dJ+b*^)uC8tKBuw5QU7Em zXdO{kk;M*^7MY}DQjFw9dF9%|`gLi6cNH67=_rzgS+^e%_QtJ#NPKGQ`;y&vT`u@M z2V1eXBx6Q}^fh=r9phg;^h1rKN4Xz&>u|qw=ibC+W&F~eh#@+eme1!_libmpk{8#} zN;H(}02d-ypCPaYVhCDII*mv9VXi8E^8mb{Na&opaDRH86@JKrA)bDna?VP)B$TS{ zY|XMiW}Mg3T*LwCD3px*vt{6Koq~T*I|hC9M;z67}c+ROy4a;)C9F;Xp_3h zo`q%(nccq!S$Ttw-Vc)1)Sp0;xu3(omW*xY+?IZ|h5;n{Ob4Q@ zC5?X~#w5EIfX!C6{Sx_JKs(Gg!Ax>PG4nl3?ZWGK`qTO4_aqYE2N+F;WPUvv`o;-_ zWVRFx3<@}I%Mk0IvaIBqSbLJhdd@DVu1!8ewTgq8MAG5`&_?2`?_gKElaK$&K>U@O z&CJI6uQC;8rvDqt8Wyg9w(jBP{4X+NnVJ4y%0M#=5}LaomB7qjLqAbP zKKPxzdTE4`SX2mq@e~06V-Z!apPyS32*6Z*abUo}F8Q-zKL|-Zq0l$4*_4qlaBu5r zTZRyTae#xv3DE@=D)}1g7^y|5SXKlO5;w77J&q#S4Z?cRMv~W~Fa}-xoI3}zRq@*3 z+emfeBb>xogr`tQ*n6_Gcg$ne87EWl^_3^$ea?*6mocNt|1%Y5xk93IR}5@=;Q%&5IA)&PCAB!{EX0 z$t^Z1k#5R_h?`27Ha7hV@O71bKnHy?WO}xi9bXY^Ue#Q6(po^pQy8HCS$#4wM=SAU zWbatQG%7L7x}ft=mpPlJ3dK-)!jfU5=uERf12z@nc{1&z$7tpPtemg9dLPdh;W_1s z^@0!8*UEBRZt$Z6<;4{$7A$Z{3NyrP&?e{wkutWUfqsQu0@OR--K1`qoiua#h=~kA zD_Is(6t-eN6^ZR19GHe=#5q%f!MCF=#?85Z^dP=Jp-HS#EhPzrbI0)DHMNjFEvK)u z4=U_}DwO{T2FAp|Z-)#9w&^a^10m!K|Lwl-y8P4!MgLvD3#Wg)9C!l6(%nkbOft%+Wp@ zF-(=tVHTA+ypG9KXAdgG5Jbm~Qle!Ve)88VpL6%w(#c-dD4;8&4@-zRb83c{Gfw@X zD=o$7FfyE590N~+$b-8lN<$RZ;ZRT&2g$ZKKux{eo%cxn1;9OKTsi!0YexAuW?yh& zORjP;9gGLS%+OPn@|+8ae+WZkJSZbF*|(Ynq_sjBm|=5Hu<`!`j9M z#WZ2r=k^2CsYXZehOZx~^4R+Q-nmlphZn>=ucr{ivWxxI7AM(aXpAXBWwf!Njhlnm zMFCs8surPX%(SsTFk0xDXlSqju#?K-@d}%GMW>^av#L8@=Yd}eti*cmX1x!?wnsc1 zSc(HW=m(&wu(urszi!g<$GZt%d>)S!No$aNVi7JNUhL zMB2H0C*B1JIsULmFNB%6k2_9dC&U!yAL8exI$!gjDUpHHM?*Pf#fA>}WeNcSHW%&7 zt|&|`3ZCZULcUG*ZV`QM^_b^t*9L8dl^n0^N%3*!BRq*{K?Ef=6=$Ilx)lDf4Wtbt z*BJDQgx?uu;$heGPK5xZ^@B^kg*SUhs^Z)?-N7pb)OKO@xiCw6fNZCD$d3snT^+=Tg$2Kl_CbYyAC^aFtP*K zxxqRukh(>-t!YOcj0HRV(yn6Oh=SyiLy*4B(U(hu-(=mLvlLWup|I5j{?*8qN!#1< zoVbeB5cZ%wApG>j`e3*Rxrv%9_}Qngj$SS$`1^)2n;Lftx2Z(@r3MUHx~n!! z-pPYpJZtW&>wswTgN-<9@J`dA6z$KwEzj%luRB0pX*q+~%efy87`??vI?Gh#|9m+nYSU43S81VA?cUS{pXXP{tK zf~~Q$w?*bb&vh?D==W`1i-v+^On$-HTNl1n6gPj{RlVo(2w|FBGb|oeg8;0N(KFPE zGwbU0ytOj3ONxSDc)P`(lJ7^fQ*zZ^*&FH8qGn9Vm_&U%kyv74!L6kY-lx_f11Z9{ zuNA>p-Ka7+oCrsqu3%sE#4yTiTqlQ8>ov6$%)j-nCnB>sI)Y%l;EYt%9xc8c`j2ME z$5oJH$ei?ajPL!9t=lDZ#ToBnWLS-70mfmc!)(J=B?!lGa-LX;WCD_#1m7OoC|?nf zYp1lNnlhh=uTxx03K{wkL)fiF07Q@{+UzIZbGz-Rr_R$k#cPM2r)q7IG)S4UYI!nf z!%cFda!*W$i0$>6KBGUrW*3)|MXFAr?J-~0d~s#McXHruhDvRrHvF}-F7hJevr~#% zWmM+mrSGHeCi-%9?SMIDC6;jiRqcpw zY;g_AslmndtMj7e(HW?~_E#FR-=$DpjPoY|Xd{+^e7(QB6c zuI=WiahXb3NB!w<wZS5sJ9FvCWdQCH;l!hc4@td+b9lDD3dj=il1o4c= z_GGBpjIUj1^He?%K)Yx4{K4HR=crVRf;Z7tMG?*W4@nK*i=dcjAvIPG6Lu}8%EYVy zB9UfQ8gQs+bKA1#H#0Rl3z$R?2~hb*%`!^d`httyA?&zCO|-^^vv~?RP@(3qk5@D% zvuVgv{H(s2P(1hJVB>WGaV4WZWT4#T3kro;OqJ$-0v{!)x~YaT`?3W|O}`AjDU$#D z0>_-KApFbeVm2UO0>;`IOw#i!*4m05f00N>O4M+dcqaBEN;3c!;+xn{jw?S^#IMJu zM#s4?@X5U=0DtNBFW~vG?qm_=PXZKWm2;Bxi6hq1E7;JNW6ML#dytZtnTVYfu*^=* zgaqA^1uR*(hp7C7C*Dv*IFbrd3KgFmZiqer0FdkmRmB1xPy{AH43r1LyWMh9XzQQQJ>IC1*@_YIn#VpvZ^O`-G6?p?;(8#v?Ip zL*4gxW@)B=lgZbtk!U8z2{w#*)m@mcq={S-d2qe?Lz2##^@`QHtDn}Q&}qHyIrG~8 z&@d&09Co4LZG{X(BDOKYw$I%;S~#C$bGA3I z^SuM((4N)(KC!7k_x%r;>nlf;z!;AX&Iv1D0|cQ80vx783T80(Z~N*4Df|(LycyuZ zY|7b8)9Q|L`sY2(Z#0#{v&P>xt<@x8so8e}f{51#`HpeWqg;K+i)5V*Hr_qlYF#~- z+vW_XvI;j2tPc%s9pXdJz#Mpi}2(w1X#PV}Xzw`z7lH$8bdIUdFq}E&*hf#l4 zOAMZWm31J8)uRv-=-Me5^v|Kc=~vp7%h&nMY`CkWY1{raQu}g6rraYKzd0fGw~6I^G%SWdB1=WZ#L#mf=B9Rm z^Nx1V_HC0k3X2i$@qUi104$%yN!wv1f~FMZ)7c)3-ZW|w3u4f8hzi<$f{axA0wz)g zgCwpRyPZ~ZIZBlBd1wVSC!DjlTW2b+f9Z!|*}{@S)`)e5VI8OijPkwDKg7l=T|y|e zf84nA%gMz>M5%cpn5R55f_~Ukf9+I#j45#$x)a%x2(pY~2hG+!z85|R@9U|0{;ayM z&ACF=oGyE?ES_z{DE_I@C}V#EfgE5oq!~h=P_+zWbB=5t;cHo*6r^}1^(`o+RJm-q zVPHJxq7&%}i>o%t{lP|KtWfGV&pslV!_}*9>s*#auIo!#CynRd#-to$^iWtGP=WMD(QP zkL>_f%?qNAglX@>3B0Gai|l7z1XQwjwwG*iAK9bl+UM%J;eMA9Q7RvGPE=D?;Y{WtL#U#j?IXzn(-Ai)<4(gld*?5I0$8f*aO@N6PSk_gO&poiI}W zoUmc2C!@E)cKgJjYX5@k4s8ROTRB{&isxg>s&5HHPZu|C+(F<6zI+0N>$8B+PL~-y zIO`S&W;JdC-RjZZ`RQm&xYZX)vU$#?hYP%~#g{8B$FC9m8u>d!@EnYK8R&)xqxnpj zzcYy?-46(rO5ucf#uZCJm$YaCH06BU+Es%a*M5!X7JMMPM)!tt>nVQ|Ry5~TAqxvY zG)09Ubnf(6Yi++b_Kne*rd!jo*|BY#9ox2TJ005{+w9o3ZQDl2 zPQJ{%YtES;v(EP-e}a{)mE_sieO2w+yNV^I{1d7I6@D)ARD9Z6h=&CN(LPBvDbX zdFx7eXz!Zd8*8ZQdO4QN+@Atk5G{x|qM>>Ty{M5i3LJMmZ3H!O!$X^o7%`@!wL2(1 zR7~`o#=($twaBv0MFJLX@3i+Kl(RD;D-((*kLGwa#{!|M#=caK&`q?Q7WE25xJc=0 zBfYE^@jFHE3ykC#<$5jlCZe-$DLhz*O8`BCJwqC~+Gsm#W15cpK5v zZbC~!SngbHW6WR?xe*`*IlYUlY<-B==(2&R%&@N{0-8A9l_42!guh!tBgaL=p|#h9 zTz7mM&)_mbLHUu(EBqr6FK9n+Hm9OumrHN}LSyg5Bna#QQ4F3Mc1Q(a@L31D4nqe3 z27_%QfOWD8Kz`Dy&s><9UwUfNPpxmG4B= z5LdA?$8NCTiJ()YA4;+sQXN8&<|Rk&f~rei>o?7<#cJq*LUL&_?4;XWFUvtjlx@Q>Q5$3ED+ ze)0k&Icv9B`vs2a0n{vh4w$uHb6zk;Y)4hi-Fu*b}_~3cvi^ z$r?O5^4TajoCT6|NcvH}fg*9SLkI2~pC34wCwF#36FX)-`ZDGmygUc z8zOZ$D<|J1Vv1Wj7DQy82qnK~6D9NA+@6pf~5ARTA0!p!`v1|@}H*#i>) zyO^zBb(vL^}AFNKWSZRl$!WC+DaK+GYWUTX8ZHP3_P4 z6hDjb;6a7lq?oI6g=ECjmc9k1RHYD^p~18+G|rK^QczuXBw&5m-{#<5#Y_U2h96np zwHWl60lg#orYPchH_cJqO_Ju&^Md*B<-I9nI;1c-OCfdxQKHumv&omJDdlT^l`eWJ zZx6jLcOLr|vL(E5xa&bAcuSdYO_}pHi!l9^)8kqmKA|{ID5qfjQEF`k)`U$1>vyzx z8T%Z2iS53HR;U-$A5*RKm{Id7nj)4b3l@7iZVS<-i$5Y|7|n! z#Ss4o*9qId)ReD#MZnz2QO?*w(AL_{*2dVz37`F6tbpPF(v3*g|AS5j{Xr)m3^vAx zAq0a=D;mGtkCKA%ZvY!F@6*ySze2YzWp;9*@Mv^{s+Mc7+Rg&hD#IQ9FP~Q%X+8$O zDbL7zB?(=m-pN^CA&W^xiXOWZre@?s@c$gVKZBr6Oz#o4)o=i2ssa@n?2a;LUyh3K zT@x+bEF7G5TwF-J~If%R`C!tmFm#@~1! z!+*yb?hoGg<;&mksCta8w_3hS_{|LBcySzr;b%ZRpaX=%C>Xju(Ch9WRwMmM9wk`= zA^r5_D&ih74K?BWDc_y4UGcc)Fj{X%u4*FS9%^3iUN8SE9jlY=XYc9bTz1=B9~{D? z*HW?AQpi>-+vBv~3GTdCxMzS2~u>vER{J4(~hPRUWs@p_z;WTiRM~ zw%?BqtZw?atC+(q5_)RD;W{K>5ieq(ZQt?rqpR`QP8e{UKdGOb+1FeKeUqF`vv@Lo zDI=qu=0YAoOK|;f1R*R8Q53`7UGPwUi96KjK00_?S6BEpS4`@c;>$;KyjC9e*6_y~ zVC1W{EF1{%d4~P)U_pTL4I-xm0556qAUILhn4B=?p{z{LeM#GdXKy}*+h|?V=b58@ zp4N5vgJ=f3GFoGI?0&Pw+eYiWTPmcH2#Yk{l8Rk@s0=8gNF$pF=ASLqcUTTK>|8m# z_^{nQKN3I*Az;rp{J|y=>X!78v#`G?gNK%Vs-_I+B#}MwsaJxX+C#IsVr#tv&J@51 zx6AxE2;3Y?sYx3J>B)8d?OA!-bs{Wy4)Ya9(-Gpuox;7mKhd)S$Iq=6fx^@5<7_)$ z!)&g1g$n<8F-C&x?K~jq(HALN_DQ_!{khj7MTT-KUdK`sUHSg`qJw(7^bg@S30X`- zMy-mHbE=QU#}#pNMta^EDkbLnMDf{CD_Y=W z*hdVGMziPPaRhgsT|3_b=5v$gfMpf^%SqSvvAHCUg;_>tU0SYrDyjNzsVsz5Rp|Pv|yQv-TqaO*_htdB2^ttfFyUJVB&1DBbG>` zRT@{x&X1RdiiWQ^K@!tG(9EwPK?HV9oeT+wBntu=r-20yyq3UnATmd{tV1?qMEOBb zT^bfMHv25diA29~Z_6AjKHYqMRVU@XM*Y>dW1&$^{FT+a0v1ptft4eCLb^p(PIeJ3 zijQ5mXcvrI(>vRG6PCX0whDe<=LR=*=pb}e?Pp~Ta-pWv30+B~pzXD@I90QJgro>b zIvEbyHEr$5gT*Q79RX(#i!Y*xV?E7y~j7qBa{z-L~KN{pWYNxQvm!3a2 zY`EAunBbF0=@(KGm0}j+~w9R%YisTpxUn zk0%sO@JgsBJU3nht4?UqgN+crzJ{@t5c?|2#(|2i$_OC#ow8MUlY(U~GVCfNRllh9p0OrKFLl6f_sG=hpq=0R|J`DA! zfR)UHu`9NS6_WC?cncu>fPYo$wTg|YT-DD4AhgDx6e-!Z_B~R*0YUf$ORpA#ufR1f zg;_+es~q`PdsB+eVIO>Hb8PR zYLI;;tbNa@@P5t1F~?8dy03u=sTRh4eGOYd79cha;8-ycostDG?=FbE{fsBh{rhJJ zOc+G0mWLYhlIM+vqUDFofN97 z2ui_7!lbjmrp-B{t33|a53j{QM>?QReDj)C&FMvl-s{@(^W6T&tK+ZcAOkZ8`@dm0 z!~X<^bFlu4to~jUeh&5G#U2=S?FcLP=MnKiWKP1^TVe>><2S$P(5*(aermoEN!7n6OG&U6%w-smCMGXq) z&y=uXntEj1?r}`TP&1n*}Efwp80=POzJzUVD&Xr(0>)Sp%a? zp=RE)W}w2Q@0$m!+0tU(*NMCr$nzG8zq$1y@uTF3{N#58W?(mEfTJ(i!lSd0Qoo|*BU06_vM|eN zjWV2H2AU}?X%e(x;H~h?WP!Aqw^1bZP7#ZAK@|k4u(|pud_f%J-mx#T{&s8l!G`n>l@C>7>`0;fL>rE){F2z-cb-*E#VX0~sl=GczJA+}#V51BW z{D5xNpUB5|0FI=~Ey^B2KE3v@*s440aJn}lwP^C4imUePF!CNn|s8qPSmYtP2^C%R^fbEk(-;5rF!O_ zPv_p|hK%c7h{}K<_F~|NWW52F2k?9PpfJ9&Z@`}(PCuARrGmIz{n30QLl({sF!}wH zAK%foqwr_0)t)z$N>m^x-JAeoubwr3AS7bVAP!1ZQ()qfiNU70L4W7N-Zo4u%D3y( zHg z{RRd44lwK#8frxrpaO{A4#uxB-~Y>Rsn7?*>w{(VHAJJp5`bkxi2B6Q!i{(#K#gX1 z7#KvjmBtqrqm^si_uzcr5IPMZ(gW>qF*8sHYOBlNG-osoKl9jD{SPw9iPA1=Nbo}Q z_(U@ztbNx(0;Y_!cezC!I7l(_kN`;X{NWM;$c5~=W|W6%$`5Nfs(cAveraZrJTRT{ zlI_ovufWeDIS6?KKK}}ff#%Jjp!Cl@?fVvN_}(39UL9%Su7+g9U>mw!P$gFGGV5bc z`=03UZVvp4IVl{HqNT|jqLp#@;`=alUw0KtM97Fm3_X60Iw%Xs#Ijou-2H5Djpz>y zK1*eX*AE+B_-m~0BN#5Rz_b?6Zug+g|Z zPiA&!Akl0Hyl~DoFF!pv5PV6iKxqR2|3H}(0!^{Bo3GfL(3OF=teUo}*F?`q*L=hqqnIOV|&X#kCwxsr$ehgMvXxKGOX z)0!g{{EoVTFwFpgCgKvW4c;Ugs%OQI@lEMPPp|g`nrd(uqlg&%50XQswucmn+IfIp zd5R#|@5_aD`zLwive?8fPa8g{fHvm*&ld<5~ z^l;Jl6g>t=-yk-1$&vqV{2s{*z`3armPG84ao2R7(otX+4w+x>$EGC$=MRpJNAPnp zM33?t0GU%lzzVRwKFLixO86{Cl`w~s(Kw6@;2@Y!@o1D_iQ6NL#i|gd83MxM_ z1PLRp4kL7Wg(C!2)iRBV$NqIcc@XvALfTcqDk+UeoXperrgGHi5XE~9LI}`SzMYv? zHuF=&#pmy13OR7%#M~sC?#e12I6|HMV#RcgSj*rcFOdnV(l3ldFlFzZ8%b*X?A*k^ zCvF{~3r*E$jXc`btt%{6dLU~}#;5*4dCxLk{Y^^XLauX}-~?42-wWeG2b=g+@tP$o^l3S5D!Gk zi^yrb=l*wjr2~+C@d@*D>|ZGJJ%KI-~?P}+Nj=Qc2O;7TJ4^Z53Lt?L=avnm(Dw? zxS|35?DHdf*M4kE*!ee-*YGia*167S)$3b zd4q@BS-1(S@gdG0cKB}EkiYs1463iQRpOAvXTQBDcE~l7sBXxefsAx-K7*X##S2pp z_+Ems-oBr_2Ie567cI;RZ%dlo^GSgU`|tFWau=>wNK}1qyMdUzpLrvB*n0qWOp|HB z8zp!reyxc$|3OR;7eUM<7lGVVRFE7j=BvbO$vS^?JY8?4LQzS6cIc0f5V#ktRedgT zL`XAue-nE`wFkzU5Zz$GLLpkjh7Es_)@8uPt}rgRQ>~xawR&gxsLN-_J1Pew-kg9l ztLn^!{Ww;Q$^cvzP?%o3uQ&{DBT7+c~%7g-)4_kM~!V{*KiMcq`yM zVe(!C1P9ACGIOrMw+U6)?qAYkL>OY}=5}x(#i`K+iTQY=WDdN29T$EJ?UH292zXEp zC9m=Fg+b9?6M4@Z)9)J6KQLf&{gqqRyT z;7pddCzm4njp^f)ed9-A6}fI+=23V@1f5tDJELurmSL%-axkCT^iH(lPsfbbxBUod zXADoWH=54K!jw5);rG=`?NVzHQ{Usj3eTF!7J)+nr!@Q@7;Ay~bn@}Ty1)#)w7PGt z0ZPhXT*K)QlX9_(vVF(J2QC^m1NxG@RS9UffRC?KlAD-^p?VSSc#cz=U@U&r zn7G$59D5+$Jpz`>kpZlB1hNS&-D-N` z$w*;9khW;Pn-9riot8-uJObPkC$A$n|0WmoN8kRfa;+YW04IpMt&3WDh#alcV5P!f zq+VHI#TmzAWNG~Uu>3WVrQU*k%r#?5w7STJnS!W;sWyOErJKlf7C%i^WPc<#=? zyRD8-wOf(4V?`absWFnp#9sSa+hC!7veG-kHp2jOODVlF*Na*2MrWxHT@X}T_-riA z@rwAK0-uI<^Q_iM7-oHRg9}^P>S(a$ZsE{ShPq6>u-z2s+w=O9E@CNE_lQ|$jPg6k z?uya<<+VWHH(scs-Wq&XUeF6J8uqLPuGsf-Z>c$tP3*MOiN5uT#vegf>^vf)I?IT~ z8|@d+9Uf%E#VeIQMvtW1#k{C#G3TdT4fln8eC2~twm7i;I?gkJhGHX2M=!#rqt_wD z5l;*zCwYlCq680ySiGzSOb1gRoTtTos_-OY8-vdU-aJHy!XZ%_cZOG+LZz945!un$ ztQdX8ceg$tseMWR$Rhs|H<_4O|IQ-+M@{N~2S5Es7RmU3kvvoM|Il)R+P;Ezh6iSy zPXqOZv-HH)GOyny#QcA7H^^kmDh}B%!zc5UA4HQ7dSv7&q7l7zcG1WpKakr0dOQg0 zT~vZEOyImyL3SBVG@h1D^Mze$wbqo#RCi}zsIS8nM3R;jX9=vRGB?f7cbw~TlmqRHvV|5N#NuLe?N@VVr zetrDwZRDVVi_DT|BGZ#;dwByOHJCWF)C_K!#77zt9{v;9ojj-5nOaN9^ube}GcmIX z|6H=uB|Oew?-Q|LfTmb#)fgu4L$g9p^a1cc`$DZw5Kx=P-QPT;--ww#o00_#PgX0t zKe%X?LEGxj ztvuU5IW&*TAzn#Uq>H}GglsIwX<5xdVlRz(^q)i6}uWRe`*uxU~(DS%F>>?=(@t zp#aWiWI;NLsGU*WbV?vAB-uQiMn+cMMi4U_q}nn_OL*W*d4>r2sbk=@n>i6xQ80`QHh(A1t-=ET`_M73H?MC^8^)&-aJ zYV}OH%wc2_+B7f!P^q*sUt+G|Vu9ONl>OL#W**CT!$!9#W!@Cy32Z8aX`=uGsb5(p zCX0Sl++*k_)k@?O_TPIIyR6F;u{>S)J!;LT{fe=rCeAgn7OGIVu^`3lzVZYqAiUF- zK1u~HT~C@G{l&$TFA;xHa`!#k`jTOx<<`O^VLQSR*><>%)TVA%_rB@;?swz-{8-s* zFinSG{F>L1HY*J=%?aRUzsCL06vwA?Q!+@lPFV)El}K(X0VXL*ZV5TO@y<9pM};JH z(SaKk9?r-gg%^Z(h~Q31F?uAxz)Ts*E*Z=ta{0Ww*uDL2_7<;mIbdaqWJ)9&2*0)9 z(S=#M+pstuHr4$mde`62_XdznfQtN&r|4gTA`>8^Q_!{Zk?TAzK>PG-&Exqb{nGZs3Jvy7|NikdJAKa?IJ9kffM@3ZMf33z zl9PVpJ|_DS46M7ON8j>s5KiBAy}A(gE28;pLzhRgb|XE2V{~IABZM9D=AO}4U%Zp| zOW*a|LGeAuQQt1mtOdaS8Efc0iG4g$y@ce;CrE+}6{)-+G)|L%)%Z?>sEnchyQWka zFz>&lAdW97XuB7fIQH~JksYQ>Ys;2)X#(6C^_~2^b1R6}V_n@CkBd)#ON12Rp~Q3; z1-1=9t&PhL8K5RO04Rjaz#o}+8Z-ttZm{Dgd0UeFibOBZHEZwoE^ZhzX})PLc}!h< zn48U-;l(I!p47!}PZp_TV!D%E5VG0|P|Uck783Dc2@b9t(?sEwHu9f*dQYv>7YX0p zzx^D47A(+{n2Z#oltt_z7m*L!uwuVXeK-}MN*6~bd+^!>i=BFef68Ij#kHLT5=VSx zHaorX;s^pRfrT_*qQmD{qSsU+@ay|PQ36COY6HAnx|WVKLVe#QkQU5fmS4DIDh3D@ zFb4$|ec>?Dn0w0601;IeU)|dzLD{FaIY^T`e66mv5=jMf;TSEMvr;~hx2G%D8LUA%8o@byDG79v_)l%c-aup?mRsl*COMaIV zEQeNc=p=_Ef5b{JXQ;M)KBW*WZDj!A(X;)H09?rr8~c!?-^IcSEEX25a|Ma1lQ4$I znc;_)W(y|sD5kUvu)w0+%DF{mzp53&r>mur;xW(Jvs|jkja`~%HCt5AFlGl%OSw?7 z%8{r&O;YQ6iIzNc)h#85SyG+eTO*juINLNs0@THIgr-#5F~ctj;9Cm6YwEtX(w3*~ zaU@G=>z5|+Vr?aKmzG4zYo6B99qB92jk?8=f(j#H?{(0M+F$w$gChv9F&E$K#iE2I zPMzAs$F^LQ;vMCtaRo*5x>_oFQ{olw*q3W6Lv}+YMBOU-(s1g{7&C|`a3E8nt>ciG zTzCd^+MX@QG>Xn#vI(T(Ww6<@J;mrPEX#%w?2ONj8Yd9&$i5yRe5?-ATEIU{_G-r5 zv##8mJ-yUy4tlc?$s1?24v&#~Du;o+k}RsqEG`Z@%XADFS)Y_GIvDwItMf{a5DGI+ zQO_CGl~OLKCR2=cS+rgbDX1kT#)%EFrf;uqDQ@Z=Hv*J3JF!3At07z|t*&<*2oDb2 z{6sU6J>YD$ASp=COitFUXyL;li&wqan7=qC9Soqr@vI}<@kyDz*uJ_uElnKMte8(I z)epAUs4qq3u#JGd(x>G*ExSuepRUq%$SAAgD@$X-QNlPg5_D70EHg)*H#X(3nS#ZQtw-;hdqR=`0$IkFF|6>OyelQ>YRI42W zf|rjo@8Pfpw=I%aAr`37J)eP#0Ldn*onQDdIeu9Y-*NHK^T%c%f?}}jU3;aD9^db* zHx^v{vPNHFi9UHg6>GroP-e*CQi>dnu3ku5weNmt=vEO51JppZ9{3Dgx!-J|*;Q)_ z%8Gn11fBgWS1V2Acw1jUMV60C)fSXBy9H6OS}maUO3N3O75N%E4?^KLiYL>CIS6eT zdhF!8mEL0tN4?(@l83Jp)ai|SbhFv6Iz7SeHlDL-_kfmA!5bsqKGF8aVC8mL3`r3M z5Gg}*@jsw}a=qsM@nZRFpn!pe@oy-f@qdEP{D@m|>4E#PbM<0_#m1gKbbeiA@D}lc!I%R?JIbzNLU1t) z@umVRH`;%Ajt6VZNDg z`w|MVV8f#lo>6nubS`s5dzB|NXAxyXSw;NPhPO@U(%~UfPm08or^F}+vj=CZs-2NP zu9fOl=Mq$phLu4z&FHYA!5?Uqnbc*nt##;mdYM}=OmH!p^zG|!xOBhdy{GCXt&8BQ zm9eOxl-2#oKGgh#u{%~`tDU;5oKRzk)t{@eRSHDvOlRj=Org~YdaSOxErBQHyrh6L zlXuxS!ahU;;wq%Iwm4Xymk-*Zfmq&wLXe6w^nP=B0i^NxW5NfO`4P)^`y*%fIpoab z3HYpgzWpDI?Jw@g%=GUaEC$BE-$4monadEj6dnpoOR@YiPQbN_M(*YY zP4+h*z_Ufc#stH(c*4kCdTE7Sm{B4@EFS)fNv)@XHm$m_@S0+hP*|&*5D{x#Z9+(? z@*}c?p^EoDRnmHg>u;^rxpSUKnIs*Kc&2<^#>#slT|c9S>1Tj)qjmAxPD&>-sxfn2 zQ~z=J+${G{^O4JGo9v*~8>G04@FiUu`uwm4;d8B@bH>gVSNWZOsXGz4q-v%m&>S%jfS7 zR!p&--N!NAws&*zP-`oL(_^=n4tLi;Fe%5ETSHqtfOA+l*+w=Ohz|R{|5}wHgLA5i z9~+4@p)-x=fUyU?xpoKW6XU^~h^3*o0vvAm4ouoX47Tli&T(jOQV^TFgyEYJ41{dL zrXq-xvIfG&U1*5_i-FTH{OUjl%nit>*ngVw!R0imYyZ590ZZCgXvYm9CFkuk0VOg7Eb^ zgmiJvB5mvQZu322TBY#&o;EIpJ69(}JlzaOGNKkL)o79`tPhonIpQ2yLH_nQ{bg!X zWd%Sw``#j@51ZJb6pCZkJC`?>vnF66zTW zvu-(GxSVv?K~R2~Gru@iJHe!0du4g*6nds^wHSEYn8QU5t%*w%1z{!kCNicjEfKTT zlzb#n;CN|W(bO$iT+l!-rk^rLP`6+6cWZNQ9sws`TD|}Oxq>Xmoe&rVRyH#&f%q4S;^_EI_iC@&S_LJWUrx}{1 zi>{TC>}3LfV-?u}i|r->WvNTU?(yE4AYsMnh~pkC&H_n`8F!+lpt00+($}s1LyEDm zMmYhdbC-7C>xj^B6|m4E_DlgidBY_3sfAsY?S*IBakNOie9W51!9F0g?qIKvhr!?s zs+gT?A&UOcnrXOAaCx!glJolGDBSW}ZFdzoyk{+`_HDoBib1lvD?hw@b6RmbdjSjj zMSXT>a?z{A*5lp#Jl}0T>K6`^(V72^W83*@<2@>!;xg7^)0vHoqkYaRm!I zUf8JZ40O){+}|4TwSVHf1XwTMM8#K5**$|bF&d|FuTZC`CGpPpZIWwt&lsxa6hQMK zSi{*@d>~w|3~IWh3T0RDw&lzC5h7T`-@cqCNg?agjsltQs+OXv9Oe$=X>IH)-ic1H zhU0CmME9JXKA9R3An7xvrt*oX_|7s_^ZJb39V`#veRpZn`xCgpe!AtKo?w4Im;UIM zF?=<%{`iJJK89jo`Ww+#a&meKPL=-WX_c)1L0S<5d?^`S3D615MgGufC8ep7*+;I)5 zDarwNXt#YC7AoP8?ZtV6@qk5Jcu;=qj&di#7FlJo3BSvp0wni9?Y1ryc9Kpq_RTiN zU&7E&xu>Nux8XC3Bq^fOP3^^t_`!tqV86=Lx%c!G5Y=HAzbB$WOE*f#i+tps3TEHmAX@}bD;hz!JwUq1)AD3%5S@Ef=%O3#-}1kLq}}fA zjgT*qGErw5k7{nAVLE!xmLt$HF+qJ_i7+s(K-;jL$dg>`8|ZSeecHA8qHNry;KYix zElR%vh^5dbiInP66dD-lxR9)gp(n7fDD+ZiJP7!xITbAw37kSO`mcFXDjr$iexO=Y z3ue+y-=?MuFHP3nR@K?uwtqADwOb@S!~pDpIbJ7a4cZwWaTI|c!J0#-DES5ov$_E~Xwf!uX|T_B3prwW{`&+5CVY{1#u zuW@Gx)*q9_#{S;zZN~K<{rxe6X79#fT+yGaf7aHQ-QCs!yra6(*gu}7zo-o>%ilWB zOn=Q)|M$=)`+si?j_J=C?EmFaQk#kXLYtbOpZOv_~_mSb8Ne`ICJ;~?4tor5X3~5 zelRFvvv-;!a*%c>r5(0cs_{i^>)mzB*cnnwrQP?M6h{N1TtPxsAD0_kX9QJF-(*93 zdvQ4g%Ohq;j=2?TO}dnHdDPC*3esT8{p0ECS zx=!XrUMUr!E-8Pwnxh9joArD+r(eF6xIM4<0|xmT_h$4}bT0P16C#wq2F|A%PW;E>{fiW_F#L@wG5tlL{?_ni`jhDVf1vDv`dHIzYT37>E9Yp&c6r_VDPTITc7N15V?&Q@jJWm)wl;|3JGK0XBT=;(4OWo^K zsrdIO$yf*~VPj7f&a)H@<5u6bqVN`&v zwQqW4P0Ik^%?#k&Ggi07x{@#e#Jxaof(An^Vd{{Mf9aa@HAo{bu88Gs0nW zA20BuQbEHwCG2cyW@-mhI2l~3`+PMEHrqC(6X*8hSOQ!urM=7Uol!%(nd^;d&GjO} zjOkK{$ppUTGznV$47XI7VqeHY1+6IA!`FBlbw8 zy`fzrrY~S@)yQvbzPVh;R;!T!DIrn1$^9qCbS2l8BzN+(EsVzXWF>W5?pHA9V}2%l zMG*$;9KNwa*_?3i8U^6iYMV``Gs6SJySkG+#gtjFBxsNxkz{o643lO_|2xgch{Rqq zVUtjhfyN3L+=&%(j>JlK9Z0%8f--%JjrgfT%78aPsns@vyRsQa!^0r0!)nr?Q_QT| z%)xAEB4XLn$(})Q4bmhcUZ)L8P)`BNd7<@8-A4DFYVRz0yiTO04+-Ura!YDuRpsE~ zpnGkWZd65Pl2ds^O?iqrhYe@J`vzq-0%d@OPY|PlLK<6bx^dvqybYrm9HlZKWISxL zWvHh!7?(TY;v0LhVUpzZk^x$8DCPxh(=%E-=K`-jFXLmg*? zlIaVhvl_$kJTr<=Jwlq=Ne3|5aeHnIk~P-zfpnqZ`Ncb?fv{=^l^vOfeDd7v{(O1Y z$y-9xmVhVG;~E{p{7F%4SF5r4fhp)aD2*i5_uGp?Y3RJvq36~{P#qfOk)WMC}cU8`mp-t@5IKaD7f8SH(!snJa45?H7j~WF<^WW5=xm&9tq{VPb?V<|W zVh4^{lX#!LUA`~o>Sl_?p)FcDgA2Xcvf1NCN*V@v@ENiTlfEK%3K?(DOi`0!lip8B zbB~~(odaEXT*sYs6nA1bAutU$gtw_2rWQjcEXQ z#{(?@{jFdC+$1B&h=>N?2_Ry+Tr&JCSi8~B=S%@KtpQ3XEo#yLu3s?1a{M|AR?R#l zt&3k^^v=L`4T7OI!T3szP|6^ybyNXrR)3KyILh23`B#%F^M9?8^L6M9SO7`YE<_`g z!Rl3I$3jF!i6$!z6$whY<4&ny+4bn=uKDT>?znB>Mp8uV*)^_;7qw*j9=|5{@==m;%^*mTbRok{GBt9t_@A2T29IRoyAH+!nnF>Qo09b~R>8hkmxA!3fliSAjmMvEi+{p3-`8q@FX%$X;Y#b2 zB$NlMB-4tx*0@1^wRdgjf3>9|j8%#KODfIgwXpDl)M9Soa#J)HRd@Aj1>E^!K2?yZ z5wb|#L{%ClTYS`LA}jxMg{io%JxlsY>N@hE7k6aybO($fYnYI19gel2w!8>h=c>-)@qITTR$54 zy7Dv35zC829~7nh)nAyDna-2)nu;`IuX$r64iakmb#?X0mITRV&=oi3afB5dGo_JS z&&HWw*#Ri@=KAoX<&qx}^wi16H+dZ;EE-A+ zehpt6!PUmzRCol}JS5?&M+`vPSa&)Z9#JhwCm9LXIV8fL#>Zj`u_RSiD4+?lnnyd# zYlq{Ds`LX91G|oR2;dcFy!ZTg_6)a_gUhdb&pFL-MH~Oz%&WMtc^c16J5hprLO9-$ z>ueZ~RG3Wl@>@~ss?G6vpaTB^X_yGy87@DXTTtc$3?O5Yo z_Jb=w0r<~~>Sp^5903N4_fKc&&$9l5KC}MaIEU%4siyx9{Ac3$7n5fFkCqM0{}<1u z%oT?-e3;;qS6-zxw1}7^dShhk&~XTsOywpP^HY(A0q6 zp)a9Du0;JV!5$08%Z~@=S48}j&of^I-QJI^@&O=rLW)p`T8_2$N!`@0y8Rbc4gscp zTTM|$#E81Ljmk^%z{GOvYFv!iDGxZU57rD(=}fXR2)Iu@O3hjLiIo^1ub%$vkHe=lW;3^#+>u&^^rb|M=}#iy~ntdL?+ra zX`5oOt%cRBQF;B8wHS&th$Pp7^+0KZS>!a4UZYP$fvNo7N}wv*m96=2kAq#REqb6t z0%6LeTO%C*_;n-___0<@lZY}dlH|IQ&?X%QZ-`i=7m-pO*jJB-hPnH{aiTd@7Ft9k zpUu~gJUww+3s%1XU{`f*W8hlmyo4e7NtB-rYcB{Y!%9sOGfK1g9jwaGWR(6QX>1f< zc*+sCAmXZ!SRumlUpTT;b2_CR#whbP;FwQ^EfwE`b>NG~wKXa@Fo-~d+3yjNI zf_%-SOcE7Z0aO*A5p|}ezD?P?Z8et}V^^kfW`(w4p=-G{Wz!3NUj=K7iEGIya|gTy@tptvCOsc8NNirtA8i&dl>F_ z&CBB}2o?3jImK=91X>pnc?`*aLoPbIW`eW=3|Fr9}NBl1ChjzH%*irfQg?aaEF5wC$+9>{e`^(f}>NIKpg%JPM125R^>u5J>6@x_g7b0ZZN z0+hN8KaRP0I#h~9qQ9|diIvUA@ZXwYw(=?7etZo5($gXrzcOv4kh1wsXQIsw&EY^O zqM{5qEnT~ZlKC)9@v}X&x#FNj1(R|Lv2O{LnGT%%RBoZY2TCPfSY`bx^M}4yUEfrv zITO`UzOu^naC93$e@#ZoX@GK-5#%TcY09RC*KaMNVZO^$?y{ds8U9q)mB-+C8|fWG_6#q*CW`nKypNHC|JWA3OY`a*pvT+!d6#}!Fext(_%s8$#OAdlj^cTk zqBaw)7vgoE_=a}0-P056<3i}WpjCs>WjEN~9c*ynV11lV9veiux-lWf9$kG{*&p|S z5Q_;*p;mE4hH8}hMaHTRR0YNLB33yRGo6ly3#f*t+{GxI2L0B@2z z4wA%{lfS~ZYE26X^DL$Nmp*yiDys$&aZmoAR@p}V*d{F+L}LIbAZ0_oWR}Qdbp?S? z3wk6QyeT3c+4(dES%!6#`X|PqE9;C3m6)bRuVwO;TGI|htBepTdN??MKVSS`c)DpC z1r1vGW(K)6I+D)%iI?kB@<;!EXQ&!Qv#wV6Bv`zb7^6s*F4WXp_j#%S{6E^>0yvIk zSrZm;j9QBJ0*kWN(@z3H?Pmy}wS zr!;w{`%+CO-IImh%lf(;0aD^r{C)Oo=#|s8<{;ibMec2 zMc7<1-}=c=Rby z9|Zg(%KNi3!ote-H~ST~KlYOU6PU-$$xZZMOC_Rz*fJqv6t%Usbx^T0G&W)UXyRgF zY@#e7@<-?PQB?J#iLvcxlRrUM*w|P&1O#CI9YpkP@of`;BrPr_4gh(-8<6)G;B5sU z3IGEI{e8R_@b?1(3IYNg90KOU2S_M57&tgs7+6?%1QaBA1Y`tQSR@Q2WK=YCbaXgG zOe_pEEEF_!wBMD0fW7|)90D2w0vZh-79Q>Yy1exOkf8wNfI2V`5&$SN2pBTRTOR-y z000F8`OWTs$_FrTNC*(ncOuq1;eV$AKtRF4-j(ujU?2ccBrv4+yYy8YbntY?ZbY4X zVcLuOw9RQO;aFF66O@hXZr5KLkIP(EcYIb2EI}BY){-{w2Ua0u#s@g>oD_hi6p#+P z?mV_6WoF)ZAHX`Akf&-i{=y#h)N6^{tKHRsw|VxT-+^g2^11z`(NNPGuLpUMQ26Wm z3}oW`KivLx^7~FmkN}{+%lqB@oA}NuBnSim1^xYzqM-`Cvkmo51AzctUR;>2&1|s= zH2Hj7W7`WC6)F?-x3hi>`g_B;8fd%nY#EGaroqL)W_9_pKW7RB5k8>*{?6;m6}n%~ zqMLw>)56Di^^KEk8=dq!aJ~$VMtQnr4l|AZ)!ZdH7ZErGTREky+1ll;x(Z&Nr zx6I&U#$u!Ulp3%1&z|hOaI+o21Q}aG&i5v{kpLiIpkUxo;1FQ{YWBTFWN;J!Dlr-f zvmpelu#&w)?l*K&mKr1xWxsBfxJxoNq4=qP|IZ)=L2X*|sT-38S4+%g3{DD5(`MSx zVGUDsMa4m5-@BeK*Vk<)koWSjfi9IUvMu2vMu)s2IaiXzF(|ocO(50Byi_ISdR%|( z*M;{^G|ENq@ocRznaOIlm&X>pbpwnriXMhmw$r2G!?zN7{TXgw&XJD0XfB!Wh-Jz{ z{(~be0{1sPT1zx&{*+vrmfkZ*A#Z>w)gs2DjPL1t>rVrCs z8FUQ-N7ubqV#*oc3msl#5>{5IP)e90J;!+&Ef1U(3)Xq|aOS%24>HY8mZeQ8G z=M9Ftb*?RjXMqYC3RqHx-KU*}pIVQC1G ze$_SZ2OS=oX0=BV6 z^wyqb3bEUlPj3LQV4TARTwOU$TW)!luYuresHH_0;cf9ZvqP}dAY^gQ9go8Gc|Q5pFewv zf69)l8`x_+>aEzH4NhK{6jF9YO-lole|`AjxHQq&TDznhj@(K@!VYc^DULF&dSwY? zuUSkDz7MNPLcg`j%d|4up&X&StRC0`vVv;)j9lz7J|5N6}}v< zYdtIhh3$noyg`+$MIKwzo_bpaXX|3+;Tg~37RQU486ls_Fe0r`T|$le__@`h%TNva zOC~!kQjyR)X+O82>QP}n+6hacKd01Xw1&~XMN-_Hw8wV_pdFT)h<1^jNFVhiXXwvp z4K*H%5(u8rlANe%FVbYJ7NE&zXXUJ_k-`i}bj9SO8O0hHC-`kX<79Msprx>U9gR7u zQ#RCIFoS8DCcbJ>*{`D_kRVm^R;O7ykxVeR7_7Y@l|o<~+y6(~(%MDn|35N`*Pg$I zC%F3tc%Pw3k={|rZ;221BlJO#iJ64~hD!EvHAsG!LVxCB5J6&~3LBZdM})xEPW5yp zj%bWZGctuyluHGB{?aOLA^GqTu9Xa>eKXGlMN;>%D=6Ej&51g2+WH(~DKu%CV?NI8 zU$lW6UO%T%rOLU&`gGm^r@$6nQX2~lS4`LuKH#ShC9Bvo%;If-|6#KHj-5%C9Bs@w zuOE&n)q>@WmRx3ctEo<9Tw{F%Z&Y`(J6k29N;7NWA8w%PkZJR6D(Eu%H~(EJ)bzh9 z9a{B;r#Y)nR^^?ztK`dh*FxLZ^%rmF=}KaE>BQ27^<-FIS+Smz)F?t=#%ht)f(nHe z6=k0i^*7bodgcH4KrV!yNnbNS7Wax&an+Xek&kRb&6Vl81lsNA$Q^35J*{L!76%DJ zvp6w~3QDHb+^vZJXGNqTOd32*4N6d9qR)zhksSHCOxQ?BYodUV*fOF+DM)CfbuP3l z#Rd^)VH(N0BxE0v2B2TCjR+UL(IOZHQmDK-rW|s-XkF`j5a2vzsi;q3;a@fS+&B73 zDU`*Rm`BO1Sg~IzGkF5%0~2o}e=@pjvL(ThM7j>?L>5Ggs|6ya9jHfBvLx(He}KH% zilt(YL;iu2TimTgb>OL_BdCHOnd-C$@v$q*x7Cct%Q#yeb+Au%!i!*zN<6{WDR&P_ zBbPZ2ib&ah$X0g~CAQBm^rOy!NHw*A445GrN^`FtbQ-A0qKnBc)gTX&a2%D^1jbEw zELB4SYtI${+4EkAHn{LUhFH3A3dtXm@DvOe_rLqL!`XhTU2_2sS^ zvT{QMy#U^Px>~-(CLbP+9eRaam_i6KS9nrIiN)o9{c;6~AjsyX%GU}@YiTcT>@L*` z8ySTV_QE*}gL)(dR+d^`+!Y*Uk}+LwT&kP2TInd+2;%nWwA#uu zTVoatS|5GDx_gR1v}P9*?;U>t(o5a|8;`#4aOE#F{}+lwQX1O8xPz^G@_N0RcmoU| zdcE>pP5k?KA8};wFzkI91Mwe>{l3O|A96~U!hX5$khyyciRnM64~gPE6SNb`=!V#g zKDmySt#u$3*llYmsp(-I5+Rq+)+Dz1Gc$_pWBpVcCG8KCq0O+-sp(m5 z>~EkFt*$%7{FkBNC>Jl^-?<=v=K>TQ^3R}uM}+_4!cW*RF1O~=e(Db! zzwscFGXRlcm%gslWDGVd&`cvv~K< zs?AAg>n%=SDoE{X5x^HkIrn)>V?CYsVJ9~fZD^w0n9}8jTrIz6cbesy% zTI3rxQJUAF=_oaNzoxx-{Uuh$~hUq=8`LMSaHU^dXLhC`Zp;+`!AAJ zyN2vDr)(ceF33kHGLddtl-(6({|Htn0|_2;kR(qJI@Q|2b#BK;`&|H8Ys8Mu7*$!iSqnLSv3xX!N zWql2~H$Tl=qC{OCZkDL%;LbQ^V#zc@G z9oQ%R!5CbG4h!)Rjx`J=i3UUZ^4m001^AqXh{en?$v_c`MIwS@Cax0kV}n`*qO08s6J_p#e2AM} z*o%uSlxB;MRU=EuI+36*5;G3%*4B6e2n?1xV_ET74#T@!Dkx=*sQ-(!@`ptGo773o zFYZZ?RhWq$O$uRSYz=rKshKq_KPsc*xX-`AKCL$bI;nF-@+U=AgPn#CD1EIhqRUy? zPM9^ToeH;@(%5Elx)ta`tfj>lM;Zs#2Iy)1MH>E#q(0B_FB0f@cx`}f_-`)6|1h}n z7lYX2%7gD4AlV6TOaG_<`eP{dH_?qN0LugL9jJMaupw zAnMxKK8f_sVvzw8Uh?8i>+#(Db}BzxwhJN73|8w^=7#YM&tlWqz=o@!_ssLy#O;(2 zCWf!zYYVTQ>(}NOxl^rHJzuMJog9!EowxUZs5u|_uuikz1ELDxMV@3Ig8k(No0Zk@ z%iavqF|jSd{d}i*aKRBVnEkXf&!YE4 zwFMilPm_I{hcu_gU{t3ogWx?N&WJ6)6V+2A;Rs7cD%lxkg8VY*;u8jwYyckrH{MMuv1QF?_2m)*4H%JcR{LS!4i`cT>9;Gm!Q{1#5rMpa!Z-Vg{7_iBtI?yb7N?_z;`>hYLi&&{ zYthy(8)HN*Fl0}u#mLZjE-|UVXBR)M{;}Dskx|cINr>-hFJm$`cA^{kR6WrQh#1hp z9@0h>Ennk&f)g$2LpGxHx|PVNrTLoG(dAN3snOteNEn1VHptL-dhVc0fZj_;Ds9Qr zJ!^ZIXC(XSi`iABe?uPBJr z;;m0u#vRQxC370O`n-k;MlpetDT?^*Qe)(6{urS?cmtmGJN$P{P+poZdvr$GJ3xn zT0+(&p+M=+$e}{hY*~27HMwugz*BRTkEI-%%z7}MdPzY?_cmeN^KePtA9yt~|Jq{Q zqxn=Y5D0eV+z*al_}XOL(|GoY5Vg^{3J-Nzzd*u#JPAYfZkxULd=wP-^c!<)xS&K1 zx3w{*b~?lj6%+c;`gI3R$9p zz*})g@ExxyjoS=-Gn%ha6_2GE;b&D_wV%>DM$j;|9}@JGk5A8c5lCF5LMUA_otGtq z7SF5Gg7LB?I?3R-nZZ9D3vL%JQ; zXZ%;`XDuU%shK95BLfP#qdCvbeS^XcMMb?OQ9)Wrc-)V_o3S&$1XaZzCSUcn7?Yw-brsNR$TBSR5-S( zKB}Qd3HUEl`q3G0+*T`U0PWSr#`MJ#B=CYAz}(0dq_27z=ee&x7DEkfc0$ic4@0sxm3pdJVoU3`UqlsJUty3M z`i*Fs9wO((8I}w_iNKDeKDSn?zy^Y6CP+y*-v+|$Pz&wjvZ`X4J~EWv;+|rjvn!}> zazuTLkG~$ZEiE8BF5F)-9fko&GfHC3&7G;C_${ZeP22#4L6pE3+TV|A|P&)+tj#zaql_Ji*}+)<)JgSj*0nbgu= zaDGd|=pj$ed=_;RGI86kr8~d5%autR`g*D=hVe=24ue42Yo$>V_3lL#LnET5P zb{}%J-Nx0GhPO#8p9OkO=<;rt)|Ka+`IC4!s}8FYtPuy3>JY19lcgPs8knUxC>%fn zMVp{;6d5x_d>IH*W-gnyw!=5Uv3Z!$b?X(5KOup3lxYH?5z?2!&IVye&*}A z!}Pa5aw8;2l={_vLJKa?FP8#DpH|+=_2HGpxpaMK=H>yi0yydQ2LwY z^?z@A$NnF?A=dw+-4Of#OWY$(&18QexV|Ssn3hz8iO3fgO&SYxte*v)r>T{6bFkZ2 z4-xNaTj+F93v`JCluq*9#FAR(d^c=f`I6q)ROjXgxQlTDz#!w>MX80@*h zy7(sO*}fhG9GIrwB(fJwRy;TbU78++ju9uoNd}ybz^3}C%48jro#)3&HP{K~w>L0N;n?wAn@v06;(%_|T)%!9R%6l@c;$xO8 z41YDPMBy!eaGduYg5eXB_8PS6hC1mH3FO6$HEUEbM~k}#dnDae(1C4 z-mssBwcxSnP{NygwkH#7%7MOfOy0Tw@lJGcX1?jpCxc`5}#dkDgL zUy>#w`~}mKfYv;YHnR%p6oS4Tbc0t*;i|Zl@NHRJz3SE{h;I24p=H{;HQqQqoJ_V@ciivI6G0~3UL2}Vrjyw^(KWo43s$-&^*- zjOG4po{C!=I+^@y`}DuIOx-dXG-b+8IFQz}_2Znk@^PZ*G?C!K6xt8Zd;A!rUA=`c zgVyEVd=7}0YIh{Z_maQvr0iE*;12D>75Q$wa;GKa)-kx4c^>0uJk2a@Z1}uxU2_WZ zegK;ieD;00I=g*3Y2?n+pQPaz-2Z!)#w0bGe$s=&{ zhzaR2KXPVXxldu1_kh*I5*u>|0vEG;RhD)S1E&u%*nx|Pb(5^~6`xK9;fUX{fb&I+ z9RPjvgDCq)4v?aEwZD0b{~TT^fgaI19SEN@8Hbimz)hR!l|7H+os#enp`$H%u5xKAfXo^!dTJ707 z_{@}&UOJ%#o#HQ%bqODX2b+_J;IneQq2Z*5$Ym?`qatd1-1*mu)LpKIQ(%ewq9znH_OC1!fHR zA48ys67rY_T`HR&3BD6ge-$Bxpb^Q;3bYQVqBYt6ss*OQHYDzhq|48<>8LkyZ&zQ^ z{?i}dEU5=EAC`%(abfQfYhtAtclR-h`jtwIuO~lFrn6g(L3`R$Mx&PTJ>jhAa46N+ zD9D?b3m)YkpW>6G_)c#00}W&oAhQ>FB*I79@i8tA7nyXdry|YH%7bL$g!0niEsq?w zR@I!w9v$4#hb7sDz84Cup5?1qQnrIkz~Yr$r`(^)6yt;hEAEB9XPVmM$-$ut9&&sp z>fIe(pXsA3UqPOVCRlW|Hj&=D*o9@+^_rp=_7DD38U8-51=+Z--sD z*?CSht$LnN;~iG|DcZMh!GIb-NHqHyWqUIpynvM?FFyP%sMC~<9BHH)nB4@5^2ka+ zja>7^GETXYFQgym3?Ci%(Wcj5y~piw4ic9 zF6C3T6NQ?ovz0 zvikuDn#P9uT3oqNIm`8SQvDLu&%lKumY++j^5VcNkF}~zX=rZ~ zdp!jWG>2J?a@ip*1885qYbApf%xg70xlTGOP8)G2i(Gg`8L(?PP~BXAHuN8lLOk%A zx+mZ>&OJ85_w7B@+fKUbth6e;^0$u6YJzZVB{i2|4i6`tUu`6tI;>D8M87vHSI5}v zU=XJ1hZ$C;nGt$Kfc2CjxNYpFe)xd)akc$Jyc@29t=g5phelbW=#bO<$ zpx=!lzS@PZSJY#^luwD!BnPyGT%}=Xi{T(w`IDp&VzN57P0m@e{4tvWx>lC3ANZ3= zBof_^a{BsXl6H>o)8~4?ePI@<6X?{Y&%2*g`>yV+Ooid(S`91mgqdO zWhKU9{9jgKQgjNw9mj7fDbHoEvmIG|h?PiHhS0^Nk+y0gs$QnQvOGUBGJ-l@bUU$H z2FVif5_8(L>033hw`pj z7ntXPrE`b#1jCaGDjY#COtoSuxZ_IYLSN6>ZXp`)kcyKmcha&fAXl!6Cg6pLyI){5 z5^M=&^9J*iQfMMLM5aV5nSOJc!Ffs&mF8rKvl1VwU+;pD<%z$JWx=(kL$M~o8cxCU zQq6T<@d>`${aZ6eP3XpCmDj;nKYC54AMH;d2^R%V9*B^qCDX@EjBgIEd223K1noM8 zR=j0|y$x2`P4FWMTgf$Qogu&aXWeuP;gg#kkuB>KUo@;|icDfJPO`o)5MbiFqxwqJ zZ>f)T7?1&*DZ>Ju9~Oj>yRzZ$o)cqE?3wpRjs&lr-dg`rKK?OOV&-J|n@b1#Kd7(R z|3~U84Vj2lE~L)8s!MmncA6wQ%}K1*wV99(2pk8f7IMu+QKFX9jSY{%Mn2<_+g*E2 zIG>ZUDuPm)p;^Tj&qwvN;YnT8^kwymfYypmUxALdyvN~MK3KFHSh4TRD9V>F8KW;ep*aIvKR*0i_Rv$Ka!#(GKJq2d*1mKVAgUipRi z3F%ds!<=Zg_32jtZmvCh^vCTb;x-t(HLch;t^LmrvtR(`Y0kKiC3W_c?$46D_KVu4 z;lDm~hhVpUovFfD%<&;)V{uTr=%4@ceZANcx|S!ngU0kwAGR>zes!JoN8$?!s35&Y z;UFO{(AnfQ&(0yXAV*!suW$Hpke(aqu$?;OdXUz`i+ z%Bnk+p7N@I%IvoOH=VP8!Q5ppuff}V;`v+gd(qhZlEv{r?N#rF4OwnV2|O;8ws;5 z=g5!MOHLtB%wXeocni!Dnsnl=yCoeNXmW)HXsWG1&13p4v$skRxqV3zQ=z1Vi2t=YZ0(RG$H?Osl}qz^mc;fTXNW}fZox`Vkoym z|KcJ&XOXDbXnja_w{YOEUW|}r6x`2+=tXfp&+fwtLv; z<*M{q5p{AzK=V7{4CFc|Q0NR$`ee&-Ht%Px>9Ib#f{4$3#3+=I9d>LZhyrX5>;w6A zZ$=4z>2D~duv8U^n&vv^JGojP_K#E0e{?ELfA@%I|C>(bKN$TlmB@dC(dV?fqjxyq zIwn5d>li4<#goHA!M#U86}5$hn-rbWZi4Wjn(Vl~qm7TJ=dGSALWZ{ShN?=O)E1TyEvI=uxbh5(vO2#YCemYTF^i#8;-$3i~7+1-ci}+*SVD7 z&_PMCCNVisaC3h&dX41Z1>|n??LaUmzTuEIyJO#%`=hbjGrww2klxa&%?1-m#a3<3eAvKH)%rmWw+)3MVYVQ5a@(&*TrF^ zFpqSH=Gt_flwx|B$9$iq4o=q|gbb9Z{#ag>S;pJd7Fs?K@CC2_gMLs&1TB%aNA2<< zDrn>;9j4u{)js-r%>X`pt8Yr*hkS3*J}`d(D^VK@TRaod7l4fZYCaE6CU&=TBO0h#19}l)TL|G}&Sa!4tPffq+K6P)`(p zOGHy!5vFuVSs3V@fT}&n`H~w`-^^lhJeU!-H1U!&7FPw!$wPX69()oTeSV`Cx$r@i zQHW9LCdqR&`B;igk_1uer2KEhRlO`-8YkGHQ@+V|5#;v! zfLHYsEhzgpI7W6-slh~UHm-3D+UxSo>@875Q4}uXj~3R*1#W4g+35@xQ1Ya%4IM_TMgv=Ol)lU7R+Rl;vaGr>-|G&*@*D&(%Mj@@&4mWUbhkM-MzJ87k`=WDvdp- zT=5t4IRY_<%xXsVu z6+_$heW}=0P{#7;R^lQyBD6VE3yfK`f@NRAMlc?G+@z-wg5$N^TjIx4(C$)5VTKGd zPPJ*)Ov)6p7X5K55F?9o7hlW!Tz0!uoT|IqBR?JouOSEfkOcF$D4ufK9dh<_4bLS9 z^hBJRwX_aKA5+~u%p$W6`PGok(ELJo{pf4ep>&df>fI=U(q?q4vooTs(Swze@T-g? zDv$P-=HzB!>|-mn*dXDYghw9Ym`yi0QW-4&tW8gYF4m~uW2wwaK3 zEuphkUgifyo<`1Vxw}FqxQBd?pKtsHqzv`46T4k_2-IoM8fxjC$tYsNhXU`pU#QK( zTuY6tngj;|n)V1BZIeSP7t7BEeyuk7v+gDT`96 z6m6@Zdm+C<{@P${#Tk?HOkW0+#K@7g@ob`0g!H6SMS*>K2w*)2Pg7S2kcDRNyrQ+} zouV{7@T^OipbOZOATg=ZmVAogK?Ny3(;{@DQFfN}$TTW*K@xW6tlvdk7QW_mN_Jfp zIz5eoKU+hPa$DqXmBK(V{?<|IUzD#?gFisidK~p07nceiLDqI3!te{#LvCS%<$fRT z0aY1e%2hvD9oHAGY@|!Id40qE z$te(3-^s@KfQd?U+D6)ISn{|7;bPn_;9mTDbzv>=yY|0mv@L@1n@fXFTCZwXg7e)q;LBmH#!2KO+5wriYcyFVCn&w~7sQi{m?0f?%0{ zNkkcuu5=x#^8zoh9(q4ip3&gPDl36d-V}bk&Ze$1uP>IKB`@OyDUx|xm9(hP0vWqF z43IUOvfkZJyoRRyU7ujL@j1;9V<)Afq?ObBcGXis0XwyWn$HAf0{Xs z1zZZQ8lUip(Ll5+=i8UufiIV4PVPT;wl9|B+Ul3MH0746)p>$Y17~CXVUvnO2)}go zZko}JC>0*xHfyLbHPN3tTl#!Kl!2N9D;<0o8h}I&SuuA?D~|yINm=<-P1NX@$mMD{ zSOfIL7J;lp9}|hrgv<+9I}d?7ybGp*o)50(4!!k?g@=9*h-tR+?TqcV-xN>P=mX(O zg43X(Fr?LEJjqBZ#7OBHq|Cv$;3)EN*w@vN2r9y>Ae`!$dV+1;E_U!l=4y^GT25I} z9AcO>h)5wz9GZ+KW(5Weh1CvG18XO{51EUnqZLq%kw1<+Xx(bd+Lt6Fm*&=@p!nds z;(K$l0NaRPagxxkmFp4ZC#S&|9iti{xU ziuO0BdhB1KUQB8|#iTfh#~+tEN*ypOM?xmJWpIm}SQ-pGL^Usy;yq1(V>!=WxojK@ zWe`VbXP%lB8sk+?=l;I*d6{$`$b_sDukOU{lV5@tm}_zfo^_G14b8q|IK_^9q(fLc z`|;>Cq)MHjkW;S4md4TIpxZ^!XK^M;BJx~||kI{fFSdk)aP74($~vP8yag76be!StVPE2( z$6M2+L<)V~>+f%116m~zdqZDQK_G{CM8or4+WN-M2x9f(yS1}sW%$xLC7_TInF2?v&wUfvz z^idlVOK;dRbN5!gsDz#HJDgkvu@qT_f{K-zO}~Lj)#($lY|)PYiwd~9?8kvTR$q1k z%7pBGjucca0?`Q)zzkIP&3+^yZU=u@&<)tdEh+`0sG+R0D`fS(2g2{UZ|C1X zui${JB})k5wcv+uRKLof5y6w!zuLVFCuEIMLfiTvXjpbIL`O{t zFmE^IVGzNZL8_+xLZB0$HN}SGg$S`Ye+gzdFUK{t{&qCyme6y-ucNs^o3;3rZJt~t zaD0y~`NMN}X68gd!?PuFvCcA7<7p<5sv#!PIt-{6hxNKRD=4e$MQ3dwX%~CU`*Pr1 zLG+uU)V6WjSfN?xu4Z?A3HUnHOwny4$C&n6Blv1hn?A0u+I(t7*Y%42i>>F0`6oK- zIQ};JMz0q&3GvMa6KnzWSa--{9ZUO%Y_Y^;uXG~2JBi(l{9;A_lkC_8`^#p^DkYcf zo(zP{TcME)Q#-UDXKcvp7p*p{g3@5Nl{1+Ols4C zM-@F{yp(3QXQ^8k!JqD`-_={DK{#h<9g8Ub8JvN#y0Bc$WX2XLX8pnA`>}DH4XELk zW@#}QI?PAyz$$ow|Ffl_kHOyixpdN1##Ba5YkvCeB_++S~H85fK9C?^^K7)jP)Q~7huYm=Md(jgzzfs366trN00Gi-ODC_qfZ z)R7tkcmEPJYs>YHoGL%PO@nYvl40EPYymAbT%xUwUfTYRx3_!GUfn~;`>T-9g4^=9 zasFGLQy5kCIjQs*iwPbN%Yg<1M^$or{*V{=zBW7FzRX5d&Y+jmnS15NS6G1V#HW~* z`bfKZ7R$|CHK)Yvhh7|ts#1ZPMhv7ATZloYuAYs3=VNlGpDFaV*#^AZCsbR<$ZyLf zFyegUAtk$LpBT_SRW%*21}n$z?InAgBl4O)&2dbTW=EUmsYo9^hPa~&Lx#mwagG&v zw^?dQ5ggNNqR!JnZx`7nQ2;dCC{jcAF?}{8EdFtv{ZaFBa{hgo{XwLE8)lq;nFRa; z^!>DKilpHxmcb-}g#S+daK-e{^v1)U{0?SIl|dRM(d^wa1fdC);pSXbr^hWgv;_ zx%h{Qf^ID>LW1T_Vo`yEk~0)c)+YuwDr%YAi=g098F2X}Pbbzxz+@;-JAwvb+~xE8 z=_{bF-0_lflf7hmUOe2bPbieFrDdjNW)9qOZ(N+R_b%u~%9?}MNb35|wRY3GtU6(f z9AZKlK0S^tNS?c1`GgXRh5FvbcSn8FCH3|s7kSJk%CFdP+e?<=@p--dPWqWYdh!#H zp~G!0Si7=q)PJ%mK~Z9+Aoeoph@Nj1vCI27Q5YH=Fxc~d0gLr zQgkEW*|SQ^^<|TF^+_wxrJ<|i`h7vK`)vC?o4L!IP^9NO;+NJ(AUqXMz@!H55FuWt z+oeL4Pkhi5Y!19`Z15J5AnM14-7G`yD0y2Z;3!6!K^<=fLzBey|7vmW=g17xjcsrt%9O(D`}GPd zgHVnU$X(C^Dptst%{|PMa~V@gDZ=a|xE%EDkgHOHF&DZXia&f=iLn)NOrk1}G7iF~ zyNVb=Op($9?uQ)|b1|-aHRRdHiyYWVrbht2nAB{5Pt2L30w&JKFRB?2Se5*T(P;sS z!(VwOW2RW|rQ6|5h&#VZ8AGhM8=Hcx0}8fZv>@W`@FgW$Gewd^fd$ z733bYmx~Xh6*~W|DksE{ZCzwwvS=|B_I~Bwp35ib?VCI9@_az07$@M1H?H`_(;>7I z(!!2Mf3KTCJs(w&y3jhpHB|c>wG;T=rVpQ={%69e-9j1GaqNXrLNilE`r`nMa}mZK zUinSDL_f}I!&@ANLESuy)K+YdW)S|+=p21vULVArSL#RJ%Ag&@(UjB*)-qFq^asH5 zH&NnQ|8dc>DT;b*-H=YOxq|*?|t~9H@Yw0!;6>(rwY~>pIV(>G*d*G7NT1^&KG`YE6+9JnXj+fI z26pMdxEw_g;`9Bho|x^oyGcqWFsPBq{gKVHPav~v!54nUls=%}L-qTswgopQ2D<~d zBw6HS!;TDE)1pRg>{bWx4A+eWjKEGkTxfYg2SiUnZt)T9@i_A=z8d@OGmPCeRQ;6l z0r8DH$1I{KdN*w?@)3+G^q#RQyvX*ke~e+JHER@lGNuYR&M8>QN#X^8B=p+}0fc>+ zq!nuOm05Y@95sL!Y7Zp^z+0p?pk&2h_SAr9e;9z_Qs0`hEAPeJlG$1em$;f0vH8Dm`5{1Q;eYH7U7S2nNm9n;Nhmp z*}<{&j+&K*1C@WL3qHLa6uwWIEU+oIjF(4uc| z>qyB?ESIvcJSGZEsrRwTa|yb2IOD8WuoRrm+HUY-^hNe1eS;LtivVeOq`vli(1ApoKMCBn4|v#=|Rs(T8w@C6O9jWsn3N;OZt;K;ux#hjE^bZ&2K`E z{E>G$`v^KCo!$I_0tTd`zS}$ZJ~=ocKS>ydbq3LX?g-fz*&)eo6SIYWk5+xA^FfRu zjU+Vw9)rnBky^prADQlVgKui`3~43wk{`u2-fYL{n4#JI`q49x-T+Q@d*KjrbQ`a0 z{L~i58-!_7fC7ZA0=9U_)(#A13QXuiLG~?B(RyqJ*ajFUFr7K{N)$EOXP<>>{t1HT zedsd#HS0a0HrQUOZ4R!P_$6e{lgw8i7IQrP=-Nf7*=aDF6`1Fqu|PkJ%AlrK{KK~i zzvH{j?>Q&c;Hm6>@pwZm=_jDWY=G-K1}=^qmR0`H^SSedXGr=V1c6)@kHlYpZREoG z9X#{4Z-gx8c$ZD}>fmV6gP0KbQxat8eO2Z9B2i@sxdv{N1?#pxLJt`Bd>h@H>>c?k zK@XXAPt$6>4>Akl==wTZ!RngZz=}Ab^OfV932O|<%Nk!DCVQ?8(8shud<(~~zcU;W zMDX#G7v|&{#G!7E1T)_Tx+Bum8X>Dff9~rP>m?9^|y2N5~%O>>= zRxzqksRX?l>dXq$@xc*p1bA%spIC{lg;K_KpcC&X50Ul2>dn9**kb^v>pygRc5^zY zcl$LZJA~?BiJjNO_be^WxosS^BIw8Dg8IEgy&1Gqq-YyTK9dkci1*Z@!OVj{3sfE2 z^WwXt8#JWKi3jKnSh3@c7$lyDJ0VIM|MX*KAkeHP5E5 z`H^2IQ>yqY-j}9CUAnYL#z@#w)F!Qd7Co*X!BsrpzWuRXAk?>jb(%3sZu%Ythp@n& zwa)~bAhxwnhPQy3kH|U7*|yWkb3uqwwQ0coFw{xMdN6;AAOQKBcxaS6Nq}dy8ABm* z|IA!#h%gT;o8>6x(J9WAIFA%;|Dwi1E4*>X!Hu)?qe+Wk0zohS2`Oe&?qECf`&L~J z!XuE`W≤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 Error 404 diff --git a/dev/resources/sepa/pain.001.001.03.xsd b/dev/resources/iso-normes/sepa/pain.001.001.03.xsd similarity index 100% rename from dev/resources/sepa/pain.001.001.03.xsd rename to dev/resources/iso-normes/sepa/pain.001.001.03.xsd diff --git a/dev/resources/sepa/pain.008.001.02.xsd b/dev/resources/iso-normes/sepa/pain.008.001.02.xsd similarity index 100% rename from dev/resources/sepa/pain.008.001.02.xsd rename to dev/resources/iso-normes/sepa/pain.008.001.02.xsd diff --git a/dev/resources/sepa/sample-credit-transfer.xml b/dev/resources/iso-normes/sepa/sample-credit-transfer.xml similarity index 100% rename from dev/resources/sepa/sample-credit-transfer.xml rename to dev/resources/iso-normes/sepa/sample-credit-transfer.xml diff --git a/dev/resources/sepa/sample-direct-debit.xml b/dev/resources/iso-normes/sepa/sample-direct-debit.xml similarity index 100% rename from dev/resources/sepa/sample-direct-debit.xml rename to dev/resources/iso-normes/sepa/sample-direct-debit.xml diff --git a/dev/resources/sepa/text.txt b/dev/resources/iso-normes/sepa/text.txt similarity index 100% rename from dev/resources/sepa/text.txt rename to dev/resources/iso-normes/sepa/text.txt diff --git a/dev/resources/iso-normes/world_tax_rates.txt b/dev/resources/iso-normes/world_tax_rates.txt index c007474e5fd..508446b618a 100644 --- a/dev/resources/iso-normes/world_tax_rates.txt +++ b/dev/resources/iso-normes/world_tax_rates.txt @@ -1,3 +1,6 @@ +VAT Rates +--------- + http://www.taxrates.cc/index.html https://en.wikipedia.org/wiki/List_of_countries_by_tax_rates diff --git a/dev/setup/apache/virtualhost b/dev/setup/apache/virtualhost index c3a2dff3e43..8c7682fe3d9 100644 --- a/dev/setup/apache/virtualhost +++ b/dev/setup/apache/virtualhost @@ -1,62 +1,93 @@ -#php_admin_value sendmail_path "/usr/sbin/sendmail -t -i" -#php_admin_value mail.force_extra_parameters "-f postmaster@mydomain.com" -php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f postmaster@mydomain.com" -php_admin_value open_basedir /tmp/:/home/../htdocs + #php_admin_value sendmail_path "/usr/sbin/sendmail -t -i" + #php_admin_value mail.force_extra_parameters "-f postmaster@mydomain.com" + php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f postmaster@mydomain.com" + php_admin_value open_basedir /tmp/:/home/.../htdocs:/home/.../dolibarr_documents: + + ServerName myvirtualalias + ServerAlias myvirtualalias + + UseCanonicalName On + + KeepAlive On + KeepAliveTimeout 5 + MaxKeepAliveRequests 20 + + AddDefaultCharset UTF-8 + + DocumentRoot "/home/.../htdocs" + + + AllowOverride None + Options -Indexes -MultiViews +FollowSymLinks -ExecCGI + Require all granted -ServerName myvirtualalias -ServerAlias myvirtualalias + # To restrict access by a HTTP basic auth + #AuthType Basic + #AuthName "Authenticate to backoffice" + #AuthUserFile /etc/apache2/.htpasswd + #require valid-user + + + # Leaving /public and /api, /dav, .well_known but also wrappers for document and viewimage accessible to everyone + + AuthType None + Require all granted + Satisfy any + + + AuthType None + Require all granted + Satisfy any + + + AuthType None + Require all granted + Satisfy any + + + AuthType None + Require all granted + Satisfy any + + + AuthType None + Require all granted + Satisfy any + -UseCanonicalName On - -AddDefaultCharset UTF-8 - -DocumentRoot "/home/.../htdocs" - - - AllowOverride None - Options -Indexes -MultiViews +FollowSymLinks -ExecCGI - Require all granted - - - - Deny from all - RemoveHandler .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml - AddType application/x-httpd-php-source .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml - - - -ErrorLog /var/log/apache2/myvirtualalias_error_log -TransferLog /var/log/apache2/myvirtualalias_access_log - -# Compress returned resources of type php pages, text file export, css and javascript -AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript - -AddType text/javascript .jgz -AddEncoding gzip .jgz -ExpiresActive On -ExpiresByType image/x-icon A2592000 -ExpiresByType image/gif A2592000 -ExpiresByType image/png A2592000 -ExpiresByType image/jpeg A2592000 -ExpiresByType text/css A2592000 -ExpiresByType text/javascript A2592000 -ExpiresByType application/x-javascript A2592000 -ExpiresByType application/javascript A2592000 - -SSLEngine On - -# A self-signed (snakeoil) certificate can be created by installing -# the ssl-cert package. See -# /usr/share/doc/apache2.2-common/README.Debian.gz for more info. -# If both key and certificate are stored in the same file, only the -# SSLCertificateFile directive is needed. -SSLCertificateFile /etc/letsencrypt/live/www.mydomain.com/cert.pem -SSLCertificateKeyFile /etc/letsencrypt/live/www.mydomain.com/privkey.pem -SSLCertificateChainFile /etc/letsencrypt/live/www.mydomain.com/chain.pem - -#RewriteEngine on -#RewriteCond %{SERVER_PORT} ^80$ -#RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R] + + ErrorLog /var/log/apache2/myvirtualalias_error_log + TransferLog /var/log/apache2/myvirtualalias_access_log + + # Compress returned resources of type php pages, text file export, css and javascript + AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript + + AddType text/javascript .jgz + AddEncoding gzip .jgz + ExpiresActive On + ExpiresByType image/x-icon A2592000 + ExpiresByType image/gif A2592000 + ExpiresByType image/png A2592000 + ExpiresByType image/jpeg A2592000 + ExpiresByType text/css A2592000 + ExpiresByType text/javascript A2592000 + ExpiresByType application/x-javascript A2592000 + ExpiresByType application/javascript A2592000 + + SSLEngine On + + # A self-signed (snakeoil) certificate can be created by installing + # the ssl-cert package. See + # /usr/share/doc/apache2.2-common/README.Debian.gz for more info. + # If both key and certificate are stored in the same file, only the + # SSLCertificateFile directive is needed. + SSLCertificateFile /etc/letsencrypt/live/www.mydomain.com/cert.pem + SSLCertificateKeyFile /etc/letsencrypt/live/www.mydomain.com/privkey.pem + SSLCertificateChainFile /etc/letsencrypt/live/www.mydomain.com/chain.pem + + #RewriteEngine on + #RewriteCond %{SERVER_PORT} ^80$ + #RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R] diff --git a/dev/tools/fixdosfiles.sh b/dev/tools/fixdosfiles.sh index 6fd152127fb..4be867aea98 100755 --- a/dev/tools/fixdosfiles.sh +++ b/dev/tools/fixdosfiles.sh @@ -17,14 +17,14 @@ fi # To detec if [ "x$1" = "xlist" ] then - find . \( -iname "functions" -o -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" -o -iname "*.pml" \) -exec file "{}" + | grep -v 'documents\/website' | grep -v 'documents\/mdedias' | grep CRLF -# find . \( -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" \) -exec file "{}" + | grep -v 'documents\/website' | grep -v 'documents\/mdedias' | grep -v 'htdocs\/includes' | grep CRLF + find . \( -iname "functions" -o -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" -o -iname "*.pml" \) -exec file "{}" + | grep -v 'custom\/' | grep -v 'documents\/website' | grep -v 'documents\/medias' | grep -v 'documents\/sellyoursaas' | grep CRLF +# find . \( -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" \) -exec file "{}" + | grep -v 'custom\/' | grep -v 'documents\/website' | grep -v 'documents\/medias' | grep -v 'documents\/sellyoursaas' | grep -v 'htdocs\/includes' | grep CRLF fi # To convert if [ "x$1" = "xfix" ] then - for fic in `find . \( -iname "functions" -o -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" -o -iname "*.pml" \) -exec file "{}" + | grep -v 'documents\/website' | grep -v 'documents\/mdedias' | grep CRLF | awk -F':' '{ print $1 }' ` + for fic in `find . \( -iname "functions" -o -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" -o -iname "*.pml" \) -exec file "{}" + | grep -v 'custom\/' | grep -v 'documents\/website' | grep -v 'documents\/medias' | grep -v 'documents\/sellyoursaas' | grep CRLF | awk -F':' '{ print $1 }' ` do echo "Fix file $fic" dos2unix "$fic" diff --git a/dev/tools/optimize_images.sh b/dev/tools/optimize_images.sh index 2f8a84c57e7..dd538c5e1aa 100755 --- a/dev/tools/optimize_images.sh +++ b/dev/tools/optimize_images.sh @@ -14,7 +14,8 @@ max_output_size=0 usage() { cat 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 P7J!nxnp~}{dFcNEgPsf~ diff --git a/doc/images/appicon_16.png b/doc/images/appicon_16.png index a199f94a07f97580603867ea749e4f42eab98cf2..d5a9cda239acc82c3c60a515c18568486bd7ac1d 100644 GIT binary patch delta 322 zcmaDXaEWPxWIZzj1A~Sxe=v}m5a1Kys$dzV2tv_nHc@IeKr%+h0f^%C0yB+V5{zRC zP2!5oJd&-vQfz%v-9s`x!*b%b?@ic!Fr%Qpw7R3Js;Z%NVnf@+#= zXO2F6eEj6u6CiZ%)S2_=&R@Q8>FU#GFJ8QORsZ7Us~0a{zyI*@o*wu z`Th6rzkmP!|NpPV-n0(rxLQva#}J9jxo1vF9dr<2c(|k9nEU|dhLT-oClH= zco%Z}STkklJrD}tpyPMonQbhy3|pGos$VU|_rgO(LuIS&KV>?9WtIPXfLUKs(3$_o S{dAy97(8A5T-G@yGywo|ew~s4 delta 2145 zcmV-n2%h)S0^<;n8Gi-<001BJ|6u?C1p0bZSaechcOYk(Y0oJS+Iqihf1+uV1!2$Y(~ zLc-hy5U#gw8JQ1BM(x)-LXJexb^v>I>9GWWeA?a(Kzk3+Cy=j}c|`x#dH|pE>6ZsA z!@&rRmjmQqgMYsuzFSys7V+l+sy04t=R9LH9i#8vWfy>GI38uqh0dG_Y6PZxz5lezhZ z6bPYlc=HS3s~r06o&Ug9!JuC-D>j&I*(!>s58sl-vp~+H-XTOLwxa+LVQmj%NWg#% zB%T7<$Q+4)qk^Ce%UK*3FhJgOgOTh+0-MOnb8XCtv}DZLkp~Rvkm0aOI)m2|Zja6%^xp9+*G|@tfO;)u-|U)_>@*#*3*b7jLYg*Ti_KpqWnmSAn1;l$JmqHl<1R+G6j7DdLvSDxqF@73m?D){dy3Z5MPs&Twq z)_*?MWmdQ*NMCc1hx3|kuUbM_Bk-`AOl-PPo9iOF=OY#dlJW%sZY)bH^^9;@rhjp-NG_Zu z&d|Im9em+O?XZ1;M76JpKBuZd_At3v``D`>S-r5yJRA9rZQXCJ0a>ZzHn3R>@TZ`g zpOiu@W4CLLxM7rSpS?K;%jFH-qc7R$uTkESdn(#<#* z!}c8ak;}DTprn%n`k0a5PUIMV8GkuHan8C-GjJf5cqKtO;e;c-eWjTFHp1edN;l(7 zvcHiJU+`=|v|dRT*w7<3kM+rLI39=a#bn@M=d0 z6W_qLUIb<_xDIW6o2&ZMLv1+Tk(He3%I(qdg1fDGApNjRhs2YXUA?>uw|{2yCNRIO z{|Acj{|~Nje*=9m*+7m4Td@ED0fcEoLr_UWLm+T+Z)Rz1WdHzpoPCi!NW(xJ#a~lP zMJo<=5OK)RI$01E(M_vRgbJlrXw|{w(l2PzkfgXc3a$kQKNhPFF3!3-xC(;c2Z)=S zlcI~1_`jskBF2N`e!RQ)xPN;G2#pF;&8{&()hr{Oh>O|Wsu+Al073L3iW!NS`dliN zgy;CWhmWs!F`ngp?$6Pu$vPFEh{ z_D+n@$PD43Ne+(^C>9I-9XJ16C3{0g79jlIY+EiFw*DGmSm#U)RwR$7@rN{PqgGWoI(Ip!AEzOVA{ zI{=_*I`QKqqZ6}Sr81_y5naJCBXT$#prPIl!0lazHdiYMh-}4q)AN;YA-a3||JV2d XFMh0>+9|B@bU2R^6~NV@$&QY z`1$no_4W4l_kZ{J`TF|%{QUj>{r>*`{{R2~|NqtG{civO0NzPNK~y-)&Cq98!Y~wo z;U*%Z$PmI%fdjJl6qG$>2`Z)k|F1xLTV_JP@_y>=ea^{Aga@63`vHy!6n=&u2GMv9 z%JQN0u;#P439<12?S zaB^>EX>4U6ba`-PAZ2)IW&i+q+T~YUk}RhV{AU$j0+JAd>Ik|E=%`KAbd#q*ijxIpULQs@%{i@%q$rrmYq4in z`|awuCmvVs|6(+6W7i{m56=V15T&VDNSIwn;<=Y=j_iMuhE~trFposgPr?BWNxeNm zK;CTcrH%19KyQNl(hKjS|LDC7KDT>Z-o-NCF+%6l2c(|||AhEyVR?AOZy)4Wgg*p% zty$LcYj-VWL^R)wis2iD6)CA`$;C=3wY17rpn+O*wOVSet#N2rsKHjl{DzUvU3%);bGKf4?QMWQ zBMlvS*eIipHhIc~Ow2rOmRV1Pf(ltoErzRD+_l_qagd1l*T1A?vtfJ zaqz9}^X>1o;r})8uQY_P_7=E}I#ajAGa+vI#4MMlK7o(#{_~1js8@ zSX?=DPxN+nrwj^IAjlSR2sf~@=C1siH?y}no0G*MvAJ6H0NwGv)XlU{vfQg%7O%)Q#v*Gaq02L`GVI|4&~)-{+@qIdEv(ce z_j1CT#w@=h;4(u%k;Xt^w;mD6TsWNPm2OKBKq*|5hDA3VBSU%6SM(bx$n^}_f;hr@ zn&iQ%7TdeqFf?dTBe$7GG?{(+8iInTI*zUZT1=?7nnF_MHw!8ni2u+l zLLH^c2Y17d{Qtsztm~oFC;xlCgIj+=f?cP%LK2YWRCXBl@e~xluK-USIL=J&6wK*8 z2fu2`9j5Bi;K zEF+zWi`m?&7<@$lLG&Vu8Ht(tTq>1>=lHsZkFR$zp5=Y+&(WvkO$PWx;#sB}7V!r0 z)TX6#-X{*TlB5uy6OS5nLE=ZQ%PzlhE;=mm%&?J3&l87<#bO7`9n4CGN<2v%QB;lc zg{;d8=Pk}^rN&zK74HLUADQV%r~4Ah-)O>$d%UY}?Hf!2b+fX>EVC0Zf0A zUT@*Z%x0}MXtk|8;gpQcbK0Pkn?O*vrT7U)@Xdu#3E^a03FSIHaT z;1C!oQueyXySqDk`}a(%zaNl~ak2XskIMF-^t2Ma0{(TPxc00077Nkl9{qKQ#ST=)arx^lrr{J^*}Xd1fkBQDTH z5{gy`+9oxqlwztw;fn$g0(clVs6TlD&RA>3b!{1lE`JXEk@{e?L_)V5}eyFU%;v3hj8L(PeEUiNG1^u zf5V55i*P=Afk0giOpg5kv8l|!?8dthmplP-uwAW&x!DABvk5(iyK!-163M^#YGXYb z5AFds(v)n={HY@>0>W`*#(BF|Fmxcqop83Dni5RRR@nicD2 zTXEs+NwC(Aoa+F91D$pNca*sTF>Ah@Tfpg|Yw*mx70uDsXwci)u9OF)U&rvRF-eZ; zu$10}Z{COSGo2RYbXv{UyaJMxx22*2y4V&_DwQb5uS7~O;QU~pBLK@gHDuRU|}+i^bZXfnXYG6k(& zTT9^j&4)^wu<$M^2m)^3dw|8|h;kJu^!Q9B1E=dLZj3$u*GN`O-_M^Di^VZAdLN_X zlf}=3#enBmF*QAd;k)Aq@$vr~N?&=r$ZTxn#6w@h@c9F9x}E?6K#&BuWgfHMdANN+ l`2$Rw<4on(tRkSS_yzCqt`3ls>C^xK002ovPDHLkV1gB_S+M{B diff --git a/doc/images/appicon_64.png b/doc/images/appicon_64.png index a08d91a0cb711639a9f00f93865cb32076e853fd..90b2e52ff0697cfa49b0943a3540e82eee23933a 100644 GIT binary patch delta 935 zcmV;Y16cgACb9>R8Gi!+005o0f$RVP0mx8HR7D^;St2@GBRW|lI$9$-TO>MJBs*Fq zJ6a_>TO~YOB|KavJX$6^TP8eQDMex`Mq({NUM@pnFH&nUS8Xy|aWzI^HDPr+N@P1r zWIb|&KX-;kQ))(ql1GS?OOKmPS#M30pHEwGRi>_2Vs%%juzy#nvRGqxS*)~KuC-cZ zc3Q8tTCcZTu()2gyqS4i*sIaE0va7DOtgp7Lu(qwRwym(Yt+BVR zvADIkzPP)vge%g@Zt z($Lb?(bLz{)!Ee6+11zD*xKFM+uhpR-rDQ!+U)J!-+$rX;N#-s<>Tb$%(- z>F4O`=;`a}>g?+4?d$CA?CkFB?eFgI@bB>P@Amib@$&KV^YQZZ^7Hic_4fAm_xAex z_xJeu`TF|({rmg-{Qdp?{r>;||6~YeHUIztrAb6VR9M69)YVf0K^(wwR1DlzvAa95 z&MwBl?td0r5xctp&%i(h_5NK!@Yoa7+r1Ya_&)A$_A_%kw<`(|n8*#d0oMck8x`DI zn(8Zq#q2yJAw4T4F7S6i{Kz=z;dG@h!!nM}r!3`!VFF*BPbNkbQ`T~W2mppLwo>24 z69J}j7Dz(@h~)JbplA0}dB`6Az>ACpGKm1Di+=@@$biFA+x~)3GJsjM3MDa+5MYkF zWmMT<9V7yc^>V36PfP_n=g zpMO3ma(=)VTz3Af z9s3CcnxQaY0}2CfV}$|6TF4g|bq2h3KtaH(0y+Qy$&&*B2S8U19KrzJRZ&0y@Uc|| z06CzYE(G9z!25)@*AJ#>`kL0BZO-*(`yc|q2O!A}xB=GyJ^|NcQ?h>E28sXx002ov JPDHLkV1jrg=-&VU literal 4913 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 diff --git a/doc/images/background_dolibarr.jpg b/doc/images/background_dolibarr.jpg index 6c4cc11460d334442b8f53e41054c333a626db18..ec101a0654ce64648194b9c2a96ec682f24fc25c 100644 GIT binary patch literal 167014 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 udn^(ImjSe3RTfr3SAjB%r4W^0LZjDg&-d}M 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

*%$d=^R+SaEEr^dx%s)V1Pj!hTf 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 literal 175643 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 z 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 z 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 M0e$3v%zu;r2ThWJWdHyG diff --git a/doc/images/dolibarr_256x256_black.png b/doc/images/dolibarr_256x256_black.png index d89b44bf6caff60b61b8961d8163282aacb50817..1abe4e2c7d527dd99e9330842353cd34bee45441 100644 GIT binary patch literal 1715 zcmeAS@N?(olHy`uVBq!ia0vp^H6YBv3?%0qQ0ZY{U@{Ew32_B-N5NdfOV7;8%`Ye_E-5RosI024sjaJTXlib0ZENr7?CI_6 zpD=OK(+1BxM|DQZQFP3+`VW2frEz*pE!By^qI5g z&R@8A>B`mXH*Vg#efQq|2M-@TdHU@6ibgGV_H89%a^bFf1>tkvkz4cYS@k1MQ{`zivD zcRa3*cazCxmMqMwk*6}<|f0gBw1MV^k|2E&F%m8cH5>2 z9=~qoCiA`E(cUUInPQ7VcLU|VN~H?lV~1pnW`0^f{rc@=caHu3%ktq){k;Drr+Xqr zWAk3VlzUvhVUQXot5TP}14FkKjp#2J_^UC)hi#&*4q1(%4lh9`^7BwuF_TuS@f6i$_6&YFXi2;eX#TR2|3jYq@?xvIQq6eAgC?FN$8m z)jhpyeWu{X-K9c>&i_^f{Ebvv|L=D&1sclsV#zSERT zJflMzCV_|S*E^l&Yo9;Xs000KFNklT;jDIFRh>FI<81)ZhkSOvG zL=%lh6H%)uMhuDwz8{HNOe%#~N!S2NTirsXVyU#2mfi09$C*u*vNLmM=FFaZZ-3w9 zWbVw|d-iwdyXQX7`P~W3X%GLyqnN?o&Swwf5cXjwcH!Un*MjMt*wI<8)l6uY@KKn? z6t-d#cXnRykbnMZT0sb}##a0Zw{%`7HS~82;lr^@68}g11l!7nQ=Jf=he=$In{j*L zSb7q|^K%z&zy{n~IF?13i!zpS2*1Hwv8=L$k0IB07Y=ix>iJ8T6Zym`DD*BSDbYY1;9 z7vihKEPoino69Bm_@E2LL0hw#l@8*5U3GyF-h6i9ENLJ`Ut*Kqd`^)r%v5q2!rQ_5 z_-K_GW0T$<4oI8!$zC%>3vUlA@il#Jw1n_>aW3B8YlhgQw~za=UYG0b(ZbuusrYcW zFQbLGlRbE*)c^f4LkB0F4tSKEp5B7)f{G47ofFA4);rXev@I4_sFKcmf=^%RWpAepx^GXNMhp7;r zmvc)8(1#r%JRe6%Ly+oBwD63)LQ0ucXYLN+`M9`r0DYLlJs~^~XXumivIb0HUkJ~` zrRtp#3;sfkJjub!9hOI>rfedFkAKRsQXaG>{EnMxMxb?NLKOXXOonwB!myiC-AA#K@7le=O^lZWLY;>;464v=|BeL7xNP#ygJXtwK|y;8pM>8 zs2H(Hufp;8v@{gBX|mx4=_(tdh4HPXKJhgBvqwxKOZ$kLvc|P7R$$ws5IF?bF z)HxlSCxoYd+g z^_ge2bR}$+wEsP+Q;r#LXtm-RJb3trO%#5r^sw}xJG1!0Vqe5*Sv$E7_bm2B2yY*U zq|A_u62jZZHMpzWmm$1e?0?ngrcMZN7ne(UU%L{*+ru6BQoor(csrQEdsTSMRtRqg zpR?c=XfHx|^VuvtM6VJdyxHu*+YFH3HH0^pS-i`DnIA)VbGZ~Z54unYZzk8`s$muk z;mzZBQm@&$elspc2yYg*N=XL}4qHJ8Zw|NNbvh$Rh9!hIgWK_1JbyH5MIpTY{2s5u z?i`hc@OtwjTp(l8{SaPH=5VF-xatErD{f*Z#E8BOh)sHZ z_%2>zjIxOqUI!k)hon)SV<%d8S+2(mERk$Ncq#shS4#Wq#|;M>Cn0=k*@+M0Ea`&E zk`w#zrQtz*9$&`(l7E4O@bR)0U&IDAd4OFA&(ExsChKb4D2?^14Iw-qf0IUSZou}k zp>!vN56_%*k>scNA-0qary3!AFt*_q=?MFmxW8yLLlD9j=MZ*CEqF_(Y|=o%hqD~7 zDIG)??(OpVF6j!@3MrS`ay(JGrtqZBJSTKsS7DjdVSh%tuPb~&N_ewRI&$8De|F0D g&g*@h`CG^T0d7#lLq$*5PXGV_07*qoM6N<$f=Ib|_5c6? diff --git a/doc/images/dolibarr_256x256_color.png b/doc/images/dolibarr_256x256_color.png index 417387d6a27ce85f3ba64399804845b63da235c8..b2d567d68312cc724dd2dac057225528b8446ac1 100644 GIT binary patch literal 3464 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 literal 5078 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 JR$TD7_dj2Rw;BKd literal 4257 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 literal 10576 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 x{`yb@eqAP1bZEJgFX{{><_*BSr- diff --git a/doc/images/dolibarr_logo.png b/doc/images/dolibarr_logo.png old mode 100755 new mode 100644 index 9a0781ce2ea7820d09f3b00131a313120e804e8a..63bd8ac3392507e70b68783715b79d070a24de49 GIT binary patch literal 10312 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

3AECbgJ2mg3 zX$3Mf;<|RhgB1`y)hJ@Px{CCV;9Vq*&On*I#Gz!l2;wpbecLg`KP~RobF_7M=OAYQA`W^KI2dC%^H5MO8iSY5+TJ+B7LJ z-io!y0I|Sivkb_lRIv61>DGhodp096db3pKBmjKo#{&_1g1%eJINtoy<>8GU15%&L zTlGn@_pUyx1a@9X%(xf7t9zj-?b&eP^!kt%4KF>F>1rEHJfwkWwe**tl2m=A88>Us z3Cj|H;#_txYhJYXgzD^4^{jh}qtE&do-%`r$k9_o@2?h%+f*-a2h;*=IwRBSzRt%- zPd8+a4Nn~9L8ymgIM`Msl1TSHskBwtUiSYrIjp<{Kr>-nyR|}*4mD+pKNjO$e=U9) zwMkKR{19q#IcLA-Afc8_fVS;d?A}?IXiZI%E%+g#geajs`1EV!fvy}%bfkpkt`e3> zG`_gA2$J!%u2jY~cI3+I2KY7rj>*PsR20=$@1iuDwgtu+hPn*x(t)!yNe;5(ZwEvN zZ{QP?u+Emt(B-^c9=6AT)VIu-EcI>QWc06W3rMRaGQVebXyMk%QJAIMjY@vZ{HMrI zNz{@-MhOf$>~%IB?Kf$Pc&AA{Yi@zeLYEV`ahWIuFcH83Sr%5R4bkKqA`iI2%V6It56=@}L0 z0bAx3U!xjxe+LucQ@9g7l-db!DMgM;DnRvlAVRC~1#GQqY5dWB5$QY??=UuY2prJk2myWix z)1jC8&z%x=P7iBtf{O%LpyN;V-j=7@6$`A~^eqcd4o<5vGxfu+ zi6k^6ev`pn&*y`B{_epD<-_ch=t*mEZ=S5dOgkPQ5qrz~ogbE1UPs)|_I{tHXICq7 zME^cTjgi&U$Mt+jgp>-sRr?jUd{F@+rb6G zG|d&2Msyd~d{X**_qB7(GgV{5`i-m%G>g;(q2y?wK@|XA6%;f249(1YxMUNo0T_Gc z8QbQCYN3N@**T#P+V5``Q|>F@|0OrJV7P34#q9Z$dd1}s4V=s@dE+x`v2h0gorZP0 zL#W>xj!EPfJ*&vW+*fi6EL!v&_9Mm@)hZFxxg@c7+C(7#Owv!dXq(M~oMOpEYuBaG z@kvpq-m|hcZ*Z0QJq+tR?edPh{qji^=n+{u}BDCeaRUu}o2^%wg`kW*Y zNe$^Qz6ufGRS1;(C@NiANshCzx$5kGq9%TuDgp6I5Ada|6o?2s5;Km2p^b6MjJ7U+Zsr;sV#(Ez1v4yWUG zm%hw|I9a(UvQyu;-t{n8o(n<;?T}E?;$-xVZ}ee2l%S0>RY-}Q#V-VEcZ>QSdCtMo zg~Z)lNe8vjg4#!nT43iomC0-VO>3i6-I!Xa3STtp^zkI7HeGW%MHEYc@$0&M@@RSC zp%!XEg1l8-`jRFuhwxpWLD$&+VzH{lpPJXK8K_2y9WD+ zvV5yDIDjBx3bYih`I4|=g0}`EUdSBHtR|h4CrnWRvOJ^NEVk%FmKVb=_sLbmRK7C| zHA^0)B-#OpirbWJ5BVB}>F{UA>h?Y$>!*K=6%W<&pINDq4#0&Jhm>Q`1RmUZqheYe zW$K(WO8{u*uBZGz&8Ht*m4A}H;q{U#%=+|q)k2PfFdYGixQmtj`>d~Zbz^jR)5Wbg z;~!O@(jEcvd;WkbcCw9)bE~~#!l}8r6~|`YJe&oH*bAhDElciEj&$xm+;jU#0_|vF zx~?bX($Z3cP%PJW&~p#x2eHL`rj}NE0)sg@#V=Jd`!A&xpsjd>XvEUesL3H(orI^bSyeYs9-Cn>yRZ8z8)N zf2Q}{n+>V^JH`<5_$Se=4Uk%HZ!f%%#PVfin%u;9+M!8k6|BZqw)T~%FNre0+e zrOjhFA-44cY>#N7M?sz?-59q3|D5&D=?F1nW-FvFb^XQSTJG;TP{uA2Z7R6G=3Jr+ z$T}s?(rUI{!%e*^r8E1g6~SgCp_Rt|CcwbK;Yssb24~j&MYh59-lwxc!hasX4l|LP zFB=YmT2O^t{>2>nVlqmP!OnO6@*;x18b1kk!AN=B*=`EqYM2bFA}P3*tX0f`A}%H^ z!pod|otHu|in*{i&%K^cn;RpBbw&J4bPt(6G3|ohq_p*>O7XDU96MLZ36I5YF0g(t zH0%#0T_&J+Gw4ADMtP0ppY0i&axL7(W1|+#g!Y5AOG>!sz->hNAzqW~RIVPY5lHFc zP{X8e&&)7JrS}VmoVg&3^;T&U2)l0+Nl9!!^D->b7+AgUv8I}Nd5)LeC}LjP8hS%_ z-CKPa8``0$7z0q->y)8To`0?8u~5moJN*^2iPT= zQ`Z$v;TYpW?MMXCV#DKO(vGD`-itMSpQ-X#^L6^U{u9`S9OZ26tNAC|E)DH_HY>UkHB{1K4>;Nq^*Z!${ZH~C-w9eb*VeqUcYJD=$SX-)<}ogi|M-pY*0<45!@ z{LdjW1hY$hT;E!QXNA>BEWM`%@*7Sc8*e$aVPZI4N!Fg??U~iM@N^TaNH9nvl3!Ux zVsOtm!%b`^xV1JUM}9*M01bfT{!Vn7(`o&2)@r-ZRhdptU)*OZe8f9A@mm~ItFe)8 zxLld=p-n{yq#l<2DG+SHCS_fyJ2!AI3uC#$0yt$9jQhX_tVv$uiM8Hqq9@WfV60?0!Ep__cB~X5sY6p zE0k$K>Pom+H+wu`JNf)akL7fNoYCbe0s8z8RaLey=~`}#5(_62y?p67Zza)F@h=%W z?dQGx@00R(?}UkB8hb zBoOvn=%=I{M&m!fk`?f@(Pa=2NI&o#GC1%#(GNO|!`MHcIa;THcLu-+pvvjD^;ohV z&rt&4u|Wtq!6B;j_AZqJE9d;RyT4EMqv`1)1r1e6L7}c6*Y5oK7<=DKoN_bz&0V`) znp%*PR0o|-grN77?KvSN-hd>M>1^OjV2rIXCAf$HoDB?IIpMn>+{HaR%7?zrBN~^xK~rZ%a^S}3eKD>NB{~2 zLYu2ixR?U(7PZc)Bs>rySzlf^ka(WmHIwRbnNeXCMFb){pjz7cd1oTRpe2>a{NcKm z2xY>Q&ZT~gTBInpw`*>#^gjduEK@i&s$JbkiE0ifg)|G*F%0bNMxH>|!Dkt1oiEjr zwp(Tscy8khhb~L~R5eXaj5q5`5VJ$#BFDH$4d!Y2x?X{N#+l(B5UPhi=mA-T6nO0( zsCs*^t|&h3&D0m}_Mx?BgNL&;IuUHeHXc|Toga(K^L49Fp@irbQs^r_WcPHF*yl~u zH}@B7_7C{dN5jt;G!A|Q%rgbaUkmU}gSqaR+v@${a`!dd)O~d`EIZCIAzrdyIk;PH zUUV0+e;UO061?z_QG?_%L_4+avQXOF&en~bj(9!jqQhMlF?J;|pS6@utu6nvACw+} zewe{@?#{-_az>dcS|lQ>eYLcNXRWdKic!2W4vp>nyUO~ z3Fqfp@g6xuiyHEs?qWHQlyMODvw>8nkH=+x2SaIRJDXgeDgSY(BLM*2gV5;o3w8jx zc=`R}%*mP*5q?G+By(>$M_qf@YqYQB^R<8B%R8~$hj}tsxu8vm#eA4gT#Ri;Ewr|i z2otqbPhq8K?Q8_Q0BCjqvH6AGSzGD?8tGGzfh_yG%mj<}vI}!+po1a5m`a`zM;?P6yBR0d(@jUYgBIsl5ogUW`qVjE9`56%2`Q*eT&93FGBP=5!8z(btuPChjM#G zw_6ZpBh2|?UuN$1f0sG~?+V2BDvO|6cnBVb_@rKaYj+6E}XCtzC|1LlD0zFnG z|8j_Va2st(bzKoFJa!oJ7ZcoJ3U_{GP(QO87UKV0!%J{&DPn|K`M%_%SLdBIzU20W z-ao3Gn@q$4Rrf;v({z&weemFNj{Cxj=b^h{zAXohf6Nucf~8u)q?VViQ!TJ+O8c$t zR;`4aaVPeSg4mn*Uj;55^_l!}e$JBAb^J^l*n@j{uq z6vKqrYmchO&%Gnd!~Tm6(8k_grO_z`likF86P-zl@a#6-&yHZ35Ppzwkpj1jlJr7& z-3`078=>Vcsu^yUqC9wE;g7fo80H{f-NjvyM~--yEgq_0ycXQx)R}z`fJ#AD`uY9J z&B30X#qM*u4p(AoZK<~HdVeHVnKV=x|6?!Onl|URcqwFUWBIL(w1ls=GH50Ro_{5DRhD`e@V4w$@v$N`C6v{?Z;UM?yViXVR$626B9<;yu)-pbz)0_3UPE zW$&^em2Jht%6+RR9Z0}SlyH%T)Pf0LYf_iAU31@qmC^^!lK%>v5ERNoIpT}q!BxDE ztCGTY)v?Ja-2hGdj5k!d!@65CGKJsv15m80sYB~y(dI4H&T-S%iVl!v8*Vkn^^LP| z<$GarTS@6#Sm$$NQM@a@LIAb<^&^7R7L2yiy|Y*pyRGnyuw-zsx~zocUjfyU!tYGw zy0rG=s;o@$m+yoiG7_lm)kNLBDGy2g=Ra~V#y<^*7E?qO2-knFUyDnB#CFhdwsrW) zyv&^1zy`=Y0=kbPXI{s`@eUU`+y^JqR!jo1eqE@|!gWB4J2t)%v!bk?s0j+k9tl3koN; z2sWIf9X@VE6cz&S;t39T_iD8Pi>7L2&xlbJ$ zEnkQCtO(Hc6^^2pS#FUVDFM4nj|}Yiv2Pz@;c|x5lfedc3Dyj))QQ)t%;J zgwU{qm1j3?7^~@#G@l*SS@t(lCiMq9!klbM9iw0IT?z=7Z0c6nWoio7aCMraCTL&N zt^d>GcI^LMJC$-8I5zh43Ssf|)#i`%ct$B#68YLgH3RAJo0Vfa2SvA`a$V3XnA3Ooi;*nG@5&#yOKs%? z?w}HE&m_w|d*hWDe6$BiL1CvEMqHN4M|S&|!E%l5Ao|HB&lYaj$@bgvbj1n-{4Lb~ f*0VBkMMN>7;Uq&(YJmTTAmEw2s$3b|H1K}_FjO1< literal 14133 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 TvjmVYoIxqbs7TjHehdCT65RR{ diff --git a/doc/images/dolibarr_screenshot11_1024x768.jpg b/doc/images/dolibarr_screenshot11_1024x768.jpg index 65c246353a7ee7a4f14db1d2ed9b96307926f49c..8e8c013631f292794e53df78f31caf2c73451959 100644 GIT binary patch literal 67099 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 literal 74017 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 diff --git a/doc/images/dolibarr_screenshot12_1920x1080.jpg b/doc/images/dolibarr_screenshot12_1920x1080.jpg index 72ae74cb00fe942e2ca390eba095ee7b2e6d114c..c063cca6726c26cfb943c9ddc70b9b8ae1c16ffa 100644 GIT binary patch delta 25 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 diff --git a/doc/images/dolibarr_screenshot1_1280x800.jpg b/doc/images/dolibarr_screenshot1_1280x800.jpg index c732bc437096c65f83faccc0f94170b22768b4cd..ac238d39c1f8d5e022217ad3a690ccee819cd100 100644 GIT binary patch literal 140952 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

    TMpr=C4~b=d24m0EtS+K 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 literal 146634 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ⅇ*)XDsT^o4|R?Px2(2zD2Konn0b}HpR&em^w=G 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

    Ra7FLp)VS503@vkD713Hnoa>3CG&7eT4?Jy( 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 z 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

    DADVRxtfVDS_k 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

    0Y?kPQuSZEQ&zYWI=)UR} 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 A$N&HU literal 287622 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

    wChY+8qH0F! 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 #nM=m`$o?c~15jE)^d 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 ~oz100} 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ƕK|b}!Pc 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

    ht`O`uY`8Z)(tJBe3NuM6G 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

    ^9>@=%P&mP|~ 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 diff --git a/doc/images/dolibarr_screenshot5_1280x800.jpg b/doc/images/dolibarr_screenshot5_1280x800.jpg index de0d8151e031ab877747c2935abe7701141c57fc..6eea0a2f02936c757f5403c168a1c67678f2d3d3 100644 GIT binary patch literal 135317 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Ę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 BA`}1s literal 138488 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

    JS`+M#HVm;wl-a{1@nk+J7&3 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 U3B{86@K0wM08pY*?0evU0bicoRsaA1 diff --git a/htdocs/accountancy/admin/account.php b/htdocs/accountancy/admin/account.php index c2ac133069d..48d8ab23d96 100644 --- a/htdocs/accountancy/admin/account.php +++ b/htdocs/accountancy/admin/account.php @@ -363,7 +363,7 @@ if ($resql) { $newcardbutton .= dolGetButtonTitle($langs->trans("New"), $langs->trans("Addanaccount"), 'fa fa-plus-circle', './card.php?action=create'); include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php'; - print_barre_liste($langs->trans('ListAccounts'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_accountancy', 0, $newcardbutton, '', $limit, 0, 0, 1); + print_barre_liste($langs->trans('ListAccounts'), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'accounting_account', 0, $newcardbutton, '', $limit, 0, 0, 1); // Box to select active chart of account print $langs->trans("Selectchartofaccounts")." : "; @@ -404,6 +404,11 @@ if ($resql) { $moreforfilter = ''; + $accountstatic = new AccountingAccount($db); + $accountparent = new AccountingAccount($db); + $totalarray = array(); + $totalarray['nbfield'] = 0; + print '

    '; print ''."\n"; @@ -466,11 +471,6 @@ if ($resql) { print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); print "\n"; - $accountstatic = new AccountingAccount($db); - $accountparent = new AccountingAccount($db); - $totalarray = array(); - $totalarray['nbfield'] = 0; - $i = 0; while ($i < min($num, $limit)) { $obj = $db->fetch_object($resql); @@ -615,8 +615,13 @@ if ($resql) { } if ($num == 0) { - $totalarray['nbfield']++; - print ''; + $colspan = 1; + foreach ($arrayfields as $key => $val) { + if (!empty($val['checked'])) { + $colspan++; + } + } + print ''; } print "
    '.$langs->trans("None").'
    '.$langs->trans("None").'
    "; diff --git a/htdocs/accountancy/admin/card.php b/htdocs/accountancy/admin/card.php index 9430bf33439..91d8257ea7f 100644 --- a/htdocs/accountancy/admin/card.php +++ b/htdocs/accountancy/admin/card.php @@ -417,13 +417,13 @@ if ($action == 'create') { print '
    '; if (!empty($user->rights->accounting->chartofaccount)) { - print ''.$langs->trans('Modify').''; + print 'id.'">'.$langs->trans('Modify').''; } else { print ''.$langs->trans('Modify').''; } if (!empty($user->rights->accounting->chartofaccount)) { - print ''.$langs->trans('Delete').''; + print 'id.'">'.$langs->trans('Delete').''; } else { print ''.$langs->trans('Delete').''; } diff --git a/htdocs/accountancy/admin/journals_list.php b/htdocs/accountancy/admin/journals_list.php index 8af707c4626..7f000290e1c 100644 --- a/htdocs/accountancy/admin/journals_list.php +++ b/htdocs/accountancy/admin/journals_list.php @@ -58,8 +58,8 @@ $listoffset = GETPOST('listoffset', 'alpha'); $listlimit = GETPOST('listlimit', 'int') > 0 ?GETPOST('listlimit', 'int') : 1000; $active = 1; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; diff --git a/htdocs/accountancy/admin/productaccount.php b/htdocs/accountancy/admin/productaccount.php index 8503f3acfd6..847891c949b 100644 --- a/htdocs/accountancy/admin/productaccount.php +++ b/htdocs/accountancy/admin/productaccount.php @@ -80,8 +80,8 @@ if (empty($accounting_product_mode)) { } $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : (empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION) ? $conf->liste_limit : $conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION); -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; diff --git a/htdocs/accountancy/bookkeeping/balance.php b/htdocs/accountancy/bookkeeping/balance.php index 10bce8bf896..3c2e8763fe1 100644 --- a/htdocs/accountancy/bookkeeping/balance.php +++ b/htdocs/accountancy/bookkeeping/balance.php @@ -237,7 +237,7 @@ if ($action != 'export_csv') { print ''; $parameters = array(); - $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook + $reshook = $hookmanager->executeHooks('addMoreActionsButtonsList', $parameters, $object, $action); // Note that $action and $object may have been modified by hook if (empty($reshook)) { $button = 'global->ACCOUNTING_EXPORT_FORMAT.')" />'; @@ -417,7 +417,7 @@ if ($action != 'export_csv') { // Show first line of a break print ''; - print ''.$line->numero_compte.($root_account_description ? ' - '.$root_account_description : '').''; + print ''.$line->numero_compte.($root_account_description ? ' - '.$root_account_description : '').''; print ''; $displayed_account = $root_account_number; diff --git a/htdocs/accountancy/bookkeeping/card.php b/htdocs/accountancy/bookkeeping/card.php index 195f7fcb26b..dd6a789b9f9 100644 --- a/htdocs/accountancy/bookkeeping/card.php +++ b/htdocs/accountancy/bookkeeping/card.php @@ -674,7 +674,7 @@ if ($action == 'create') { $resultfetch = $accountingaccount->fetch(null, $line->numero_compte, true); print ''; if ($resultfetch > 0) { - $accountingaccount->getNomUrl(0, 1, 1, '', 0); + print $accountingaccount->getNomUrl(0, 1, 1, '', 0); } else { print $line->numero_compte.' ('.$langs->trans("AccountRemovedFromCurrentChartOfAccount").')'; } diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index 8b2ba49d1bc..a90400cfd7a 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -766,7 +766,7 @@ if (count($filter)) { } $parameters = array(); -$reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook +$reshook = $hookmanager->executeHooks('addMoreActionsButtonsList', $parameters, $object, $action); // Note that $action and $object may have been modified by hook if (empty($reshook)) { // Button re-export if (!empty($conf->global->ACCOUNTING_REEXPORT)) { diff --git a/htdocs/accountancy/bookkeeping/listbyaccount.php b/htdocs/accountancy/bookkeeping/listbyaccount.php index 22ba2d3f0b1..837a372a32d 100644 --- a/htdocs/accountancy/bookkeeping/listbyaccount.php +++ b/htdocs/accountancy/bookkeeping/listbyaccount.php @@ -473,7 +473,7 @@ print ''; print ''; $parameters = array(); -$reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook +$reshook = $hookmanager->executeHooks('addMoreActionsButtonsList', $parameters, $object, $action); // Note that $action and $object may have been modified by hook if (empty($reshook)) { $newcardbutton = dolGetButtonTitle($langs->trans('ViewFlatList'), '', 'fa fa-list paddingleft imgforviewmode', DOL_URL_ROOT.'/accountancy/bookkeeping/list.php?'.$param); $newcardbutton .= dolGetButtonTitle($langs->trans('GroupByAccountAccounting'), '', 'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT.'/accountancy/bookkeeping/listbyaccount.php?'.$param, '', 1, array('morecss' => 'marginleftonly btnTitleSelected')); @@ -711,8 +711,8 @@ while ($i < min($num, $limit)) { } // Show the break account - print ""; - print ''; + print ''; + print ''; if ($line->numero_compte != "" && $line->numero_compte != '-1') { print length_accountg($line->numero_compte).' : '.$object->get_compte_desc($line->numero_compte); } else { diff --git a/htdocs/accountancy/bookkeeping/listbysubaccount.php b/htdocs/accountancy/bookkeeping/listbysubaccount.php index 101a8897bb5..c6fb95d5ab7 100644 --- a/htdocs/accountancy/bookkeeping/listbysubaccount.php +++ b/htdocs/accountancy/bookkeeping/listbysubaccount.php @@ -473,7 +473,7 @@ print ''; print ''; $parameters = array(); -$reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook +$reshook = $hookmanager->executeHooks('addMoreActionsButtonsList', $parameters, $object, $action); // Note that $action and $object may have been modified by hook if (empty($reshook)) { $newcardbutton = dolGetButtonTitle($langs->trans('ViewFlatList'), '', 'fa fa-list paddingleft imgforviewmode', DOL_URL_ROOT.'/accountancy/bookkeeping/list.php?'.$param); $newcardbutton .= dolGetButtonTitle($langs->trans('GroupByAccountAccounting'), '', 'fa fa-stream paddingleft imgforviewmode', DOL_URL_ROOT.'/accountancy/bookkeeping/listbyaccount.php?'.$param, '', 1, array('morecss' => 'marginleftonly')); @@ -713,8 +713,8 @@ while ($i < min($num, $limit)) { } // Show the break account - print ""; - print ''; + print ''; + print ''; if ($line->subledger_account != "" && $line->subledger_account != '-1') { print $line->subledger_label.' : '.length_accounta($line->subledger_account); } else { diff --git a/htdocs/accountancy/bookkeeping/thirdparty_lettering_customer.php b/htdocs/accountancy/bookkeeping/thirdparty_lettering_customer.php index 29a0171fe08..a563b653ac1 100644 --- a/htdocs/accountancy/bookkeeping/thirdparty_lettering_customer.php +++ b/htdocs/accountancy/bookkeeping/thirdparty_lettering_customer.php @@ -48,8 +48,8 @@ $socid = GETPOSTINT("socid"); // if ($user->socid) $socid=$user->socid; $limit = GETPOSTISSET('limit') ? GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == - 1) { $page = 0; @@ -157,7 +157,7 @@ $sql = "SELECT bk.rowid, bk.doc_date, bk.doc_type, bk.doc_ref, "; $sql .= " bk.subledger_account, bk.numero_compte , bk.label_compte, bk.debit, "; $sql .= " bk.credit, bk.montant, bk.sens, bk.code_journal, bk.piece_num, bk.lettering_code"; $sql .= " FROM ".MAIN_DB_PREFIX."accounting_bookkeeping as bk"; -$sql .= " WHERE (bk.subledger_account = '".$db->escape($object->code_compta)."' AND bk.numero_compte = '".$db->escape($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER)."' )"; +$sql .= " WHERE (bk.subledger_account = '".$db->escape($object->code_compta)."' AND bk.numero_compte = '".$db->escape($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER)."' )"; /* if (dol_strlen($search_date_start) || dol_strlen($search_date_end)) { diff --git a/htdocs/accountancy/bookkeeping/thirdparty_lettering_supplier.php b/htdocs/accountancy/bookkeeping/thirdparty_lettering_supplier.php index d62a1e9fc25..5c315bee9fc 100644 --- a/htdocs/accountancy/bookkeeping/thirdparty_lettering_supplier.php +++ b/htdocs/accountancy/bookkeeping/thirdparty_lettering_supplier.php @@ -48,8 +48,8 @@ $socid = GETPOSTINT("socid"); $limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == - 1) { $page = 0; diff --git a/htdocs/accountancy/class/accountancyexport.class.php b/htdocs/accountancy/class/accountancyexport.class.php index 07d28b7abdb..0d0d013a69f 100644 --- a/htdocs/accountancy/class/accountancyexport.class.php +++ b/htdocs/accountancy/class/accountancyexport.class.php @@ -915,7 +915,7 @@ class AccountancyExport print "Montantdevise".$separator; print "Idevise".$separator; print "DateLimitReglmt".$separator; - print "NumFacture".$separator; + print "NumFacture"; print $end_line; foreach ($objectLines as $line) { @@ -997,13 +997,13 @@ class AccountancyExport print $line->multicurrency_amount . $separator; // FEC:Idevise - print $line->multicurrency_code.$separator; + print $line->multicurrency_code . $separator; // FEC_suppl:DateLimitReglmt - print $date_limit_payment; + print $date_limit_payment . $separator; // FEC_suppl:NumFacture - print dol_trunc(self::toAnsi($refInvoice), 17, 'right', 'UTF-8', 1) . $separator; + print dol_trunc(self::toAnsi($refInvoice), 17, 'right', 'UTF-8', 1); print $end_line; } @@ -1042,7 +1042,7 @@ class AccountancyExport print "Montantdevise".$separator; print "Idevise".$separator; print "DateLimitReglmt".$separator; - print "NumFacture".$separator; + print "NumFacture"; print $end_line; foreach ($objectLines as $line) { @@ -1127,10 +1127,10 @@ class AccountancyExport print $line->multicurrency_code . $separator; // FEC_suppl:DateLimitReglmt - print $date_limit_payment; + print $date_limit_payment . $separator; // FEC_suppl:NumFacture - print dol_trunc(self::toAnsi($refInvoice), 17, 'right', 'UTF-8', 1) . $separator; + print dol_trunc(self::toAnsi($refInvoice), 17, 'right', 'UTF-8', 1); print $end_line; diff --git a/htdocs/accountancy/class/accountingaccount.class.php b/htdocs/accountancy/class/accountingaccount.class.php index 730e52c805a..a4dcac8c1ad 100644 --- a/htdocs/accountancy/class/accountingaccount.class.php +++ b/htdocs/accountancy/class/accountingaccount.class.php @@ -29,6 +29,7 @@ require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; + /** * Class to manage accounting accounts */ @@ -108,6 +109,11 @@ class AccountingAccount extends CommonObject */ public $account_category; + /** + * @var int Label category account + */ + public $account_category_label; + /** * @var int Status */ @@ -148,6 +154,11 @@ class AccountingAccount extends CommonObject */ private $accountingaccount_codetotid_cache = array(); + + const STATUS_ENABLED = 1; + const STATUS_DISABLED = 0; + + /** * Constructor * @@ -158,7 +169,7 @@ class AccountingAccount extends CommonObject global $conf; $this->db = $db; - $this->next_prev_filter = "fk_pcg_version IN (SELECT pcg_version FROM ".MAIN_DB_PREFIX."accounting_system WHERE rowid=".((int) $conf->global->CHARTOFACCOUNTS).")"; // Used to add a filter in Form::showrefnav method + $this->next_prev_filter = "fk_pcg_version IN (SELECT pcg_version FROM ".MAIN_DB_PREFIX."accounting_system WHERE rowid = ".((int) $conf->global->CHARTOFACCOUNTS).")"; // Used to add a filter in Form::showrefnav method } /** @@ -166,7 +177,7 @@ class AccountingAccount extends CommonObject * * @param int $rowid Id * @param string $account_number Account number - * @param int|boolean $limittocurrentchart 1 or true=Load record only if it is into current active char of account + * @param int|boolean $limittocurrentchart 1 or true=Load record only if it is into current active chart of account * @param string $limittoachartaccount 'ABC'=Load record only if it is into chart account with code 'ABC' (better and faster than previous parameter if you have chart of account code). * @return int <0 if KO, 0 if not found, Id of record if OK and found */ @@ -187,13 +198,14 @@ class AccountingAccount extends CommonObject $sql .= " AND a.entity = ".$conf->entity; } if (!empty($limittocurrentchart)) { - $sql .= ' AND a.fk_pcg_version IN (SELECT pcg_version FROM '.MAIN_DB_PREFIX.'accounting_system WHERE rowid='.$this->db->escape($conf->global->CHARTOFACCOUNTS).')'; + $sql .= ' AND a.fk_pcg_version IN (SELECT pcg_version FROM '.MAIN_DB_PREFIX.'accounting_system WHERE rowid = '.((int) $conf->global->CHARTOFACCOUNTS).')'; } if (!empty($limittoachartaccount)) { $sql .= " AND a.fk_pcg_version = '".$this->db->escape($limittoachartaccount)."'"; } - dol_syslog(get_class($this)."::fetch", LOG_DEBUG); + dol_syslog(get_class($this)."::fetch rowid=".$rowid." account_number=".$account_number, LOG_DEBUG); + $result = $this->db->query($sql); if ($result) { $obj = $this->db->fetch_object($result); @@ -495,7 +507,7 @@ class AccountingAccount extends CommonObject $url .= '&save_lastsearch_values=1'; } - $picto = 'billr'; + $picto = 'accounting_account'; $label = ''; if (empty($this->labelshort) || $withcompletelabel == 1) { @@ -555,7 +567,7 @@ class AccountingAccount extends CommonObject /** * Information on record * - * @param int $id of record + * @param int $id ID of record * @return void */ public function info($id) @@ -685,49 +697,22 @@ class AccountingAccount extends CommonObject public function LibStatut($status, $mode = 0) { // phpcs:enable - global $langs; - $langs->loadLangs(array("users")); - - if ($mode == 0) { - if ($status == 1) { - return $langs->trans('Enabled'); - } elseif ($status == 0) { - return $langs->trans('Disabled'); - } - } elseif ($mode == 1) { - if ($status == 1) { - return $langs->trans('Enabled'); - } elseif ($status == 0) { - return $langs->trans('Disabled'); - } - } elseif ($mode == 2) { - if ($status == 1) { - return img_picto($langs->trans('Enabled'), 'statut4') . ' ' . $langs->trans('Enabled'); - } elseif ($status == 0) { - return img_picto($langs->trans('Disabled'), 'statut5') . ' ' . $langs->trans('Disabled'); - } - } elseif ($mode == 3) { - if ($status == 1) { - return img_picto($langs->trans('Enabled'), 'statut4'); - } elseif ($status == 0) { - return img_picto($langs->trans('Disabled'), 'statut5'); - } - } elseif ($mode == 4) { - if ($status == 1) { - return img_picto($langs->trans('Enabled'), 'statut4') . ' ' . $langs->trans('Enabled'); - } elseif ($status == 0) { - return img_picto($langs->trans('Disabled'), 'statut5') . ' ' . $langs->trans('Disabled'); - } - } elseif ($mode == 5) { - if ($status == 1) { - return $langs->trans('Enabled') . ' ' . img_picto($langs->trans('Enabled'), 'statut4'); - } elseif ($status == 0) { - return $langs->trans('Disabled') . ' ' . img_picto($langs->trans('Disabled'), 'statut5'); - } + if (empty($this->labelStatus) || empty($this->labelStatusShort)) { + global $langs; + $langs->load("users"); + $this->labelStatus[self::STATUS_ENABLED] = $langs->transnoentitiesnoconv('Enabled'); + $this->labelStatus[self::STATUS_DISABLED] = $langs->transnoentitiesnoconv('Disabled'); + $this->labelStatusShort[self::STATUS_ENABLED] = $langs->transnoentitiesnoconv('Enabled'); + $this->labelStatusShort[self::STATUS_DISABLED] = $langs->transnoentitiesnoconv('Disabled'); } - } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + $statusType = 'status4'; + if ($status == self::STATUS_DISABLED) { + $statusType = 'status5'; + } + + return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status], '', $statusType, $mode); + } /** * Return Suggest accounting accounts to bind @@ -866,8 +851,8 @@ class AccountingAccount extends CommonObject // Level 3 (define $code_t): Search suggested account for this thirdparty (similar code exists in page index.php to make automatic binding) if (!empty($conf->global->ACCOUNTANCY_USE_PRODUCT_ACCOUNT_ON_THIRDPARTY)) { - if (!empty($buyer->code_compta)) { - $code_t = $buyer->code_compta; + if (!empty($buyer->code_compta_product)) { + $code_t = $buyer->code_compta_product; $suggestedid = $accountingAccount['thirdparty']; $suggestedaccountingaccountfor = 'thridparty'; } diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index 9cda04f6155..e96cf9e0997 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -1013,7 +1013,7 @@ class BookKeeping extends CommonObject } elseif ($key == 't.numero_compte>=' || $key == 't.numero_compte<=' || $key == 't.subledger_account>=' || $key == 't.subledger_account<=') { $sqlwhere[] = $key.'\''.$this->db->escape($value).'\''; } elseif ($key == 't.fk_doc' || $key == 't.fk_docdet' || $key == 't.piece_num') { - $sqlwhere[] = $key.'='.$value; + $sqlwhere[] = $key.'='.((int) $value); } elseif ($key == 't.subledger_account' || $key == 't.numero_compte') { $sqlwhere[] = $key.' LIKE \''.$this->db->escape($value).'%\''; } elseif ($key == 't.date_creation>=' || $key == 't.date_creation<=') { @@ -2114,15 +2114,26 @@ class BookKeepingLine public $montant; /** - * @var float Amount + * @var float Amount */ public $amount; + /** + * @var float Multicurrency amount + */ + public $multicurrency_amount; + + /** + * @var float Multicurrency code + */ + public $multicurrency_code; + /** * @var string Sens */ public $sens; public $lettering_code; + public $date_lettering; /** * @var int ID @@ -2153,4 +2164,9 @@ class BookKeepingLine * @var integer|string $date_validation; */ public $date_validation; + + /** + * @var integer|string $date_lim_reglement; + */ + public $date_lim_reglement; } diff --git a/htdocs/accountancy/closure/index.php b/htdocs/accountancy/closure/index.php index fdcc6f54ab3..6b578bcab71 100644 --- a/htdocs/accountancy/closure/index.php +++ b/htdocs/accountancy/closure/index.php @@ -31,7 +31,8 @@ require_once DOL_DOCUMENT_ROOT.'/accountancy/class/bookkeeping.class.php'; // Load translation files required by the page $langs->loadLangs(array("compta", "bills", "other", "accountancy")); -$socid = GETPOST('socid', 'int'); +$validatemonth = GETPOST('validatemonth', 'int'); +$validateyear = GETPOST('validateyear', 'int'); $action = GETPOST('action', 'aZ09'); @@ -68,52 +69,47 @@ if (empty($user->rights->accounting->fiscalyear->write)) { } + /* * Actions */ +$now = dol_now(); + if ($action == 'validate_movements_confirm' && !empty($user->rights->accounting->fiscalyear->write)) { - $result = $object->fetchAll(); + $date_start = dol_mktime(0, 0, 0, GETPOST('date_startmonth', 'int'), GETPOST('date_startday', 'int'), GETPOST('date_startyear', 'int')); + $date_end = dol_mktime(23, 59, 59, GETPOST('date_endmonth', 'int'), GETPOST('date_endday', 'int'), GETPOST('date_endyear', 'int')); - if ($result < 0) { - setEventMessages($object->error, $object->errors, 'errors'); - } else { - // Specify as export : update field date_validated on selected month/year - $error = 0; - $db->begin(); + $error = 0; - $date_start = dol_mktime(0, 0, 0, GETPOST('date_startmonth', 'int'), GETPOST('date_startday', 'int'), GETPOST('date_startyear', 'int')); - $date_end = dol_mktime(23, 59, 59, GETPOST('date_endmonth', 'int'), GETPOST('date_endday', 'int'), GETPOST('date_endyear', 'int')); + $db->begin(); - if (is_array($object->lines)) { - foreach ($object->lines as $movement) { - $now = dol_now(); + // Specify as export : update field date_validated on selected month/year + $sql = " UPDATE ".MAIN_DB_PREFIX."accounting_bookkeeping"; + $sql .= " SET date_validated = '".$db->idate($now)."'"; + $sql .= " WHERE entity = " . ((int) $conf->entity); + $sql .= " AND doc_date >= '" . $db->idate($date_start) . "'"; + $sql .= " AND doc_date <= '" . $db->idate($date_end) . "'"; + $sql .= " AND date_validated IS NULL"; - $sql = " UPDATE ".MAIN_DB_PREFIX."accounting_bookkeeping"; - $sql .= " SET date_validated = '".$db->idate($now)."'"; - $sql .= " WHERE rowid = ".((int) $movement->id); - $sql .= " AND doc_date >= '" . $db->idate($date_start) . "'"; - $sql .= " AND doc_date <= '" . $db->idate($date_end) . "'"; + dol_syslog("/accountancy/closure/index.php action=validate_movement_confirm -> Set movements as validated", LOG_DEBUG); + $result = $db->query($sql); + if (!$result) { + $error++; + } - dol_syslog("/accountancy/closure/index.php :: Function validate_movement_confirm Specify movements as validated", LOG_DEBUG); - $result = $db->query($sql); - if (!$result) { - $error++; - break; - } - } - } + if (!$error) { + $db->commit(); + + setEventMessages($langs->trans("AllMovementsWereRecordedAsValidated"), null, 'mesgs'); - if (!$error) { - $db->commit(); - setEventMessages($langs->trans("AllMovementsWereRecordedAsValidated"), null, 'mesgs'); - } else { - $error++; - $db->rollback(); - setEventMessages($langs->trans("NotAllMovementsCouldBeRecordedAsValidated"), null, 'errors'); - } header("Location: ".$_SERVER['PHP_SELF']."?year=".$year_start); exit; + } else { + $db->rollback(); + + setEventMessages($langs->trans("NotAllMovementsCouldBeRecordedAsValidated"), null, 'errors'); + $action = ''; } } diff --git a/htdocs/accountancy/customer/index.php b/htdocs/accountancy/customer/index.php index e2ed822e35a..7ce226f99d8 100644 --- a/htdocs/accountancy/customer/index.php +++ b/htdocs/accountancy/customer/index.php @@ -120,6 +120,7 @@ if (($action == 'clean' || $action == 'validatehistory') && $user->rights->accou if ($action == 'validatehistory') { $error = 0; $nbbinddone = 0; + $notpossible = 0; $db->begin(); @@ -152,18 +153,17 @@ if ($action == 'validatehistory') { $sql .= " co.code as country_code, co.label as country_label,"; $sql .= " s.tva_intra,"; if (!empty($conf->global->MAIN_COMPANY_PERENTITY_SHARED)) { - $sql .= " spe.accountancy_code_sell as company_code_sell"; + $sql .= " spe.accountancy_code_sell as company_code_sell"; // accounting code for product but stored on thirdparty } else { - $sql .= " s.accountancy_code_sell as company_code_sell"; + $sql .= " s.accountancy_code_sell as company_code_sell"; // accounting code for product but stored on thirdparty } - $sql .= " FROM ".MAIN_DB_PREFIX."facture as f"; $sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = f.fk_soc"; if (!empty($conf->global->MAIN_COMPANY_PERENTITY_SHARED)) { $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "societe_perentity as spe ON spe.fk_soc = s.rowid AND spe.entity = " . ((int) $conf->entity); } $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as co ON co.rowid = s.fk_pays "; - $sql .= " INNER JOIN ".MAIN_DB_PREFIX."facturedet as l ON f.rowid = l.fk_facture"; + $sql .= " INNER JOIN ".MAIN_DB_PREFIX."facturedet as l ON f.rowid = l.fk_facture"; // the main table $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON p.rowid = l.fk_product"; if (!empty($conf->global->MAIN_PRODUCT_PERENTITY_SHARED)) { $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product_perentity as ppe ON ppe.fk_product = p.rowid AND ppe.entity = " . ((int) $conf->entity); @@ -174,8 +174,7 @@ if ($action == 'validatehistory') { $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa2 ON " . $alias_product_perentity . ".accountancy_code_sell_intra = aa2.account_number AND aa2.active = 1 AND aa2.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa2.entity = ".$conf->entity; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa3 ON " . $alias_product_perentity . ".accountancy_code_sell_export = aa3.account_number AND aa3.active = 1 AND aa3.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa3.entity = ".$conf->entity; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa4 ON " . $alias_societe_perentity . ".accountancy_code_sell = aa4.account_number AND aa4.active = 1 AND aa4.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa4.entity = ".$conf->entity; - $sql .= " WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0"; - $sql .= " AND l.product_type <= 2"; + $sql .= " WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0 AND l.product_type <= 2 AND f.entity = ".((int) $conf->entity); if (!empty($conf->global->ACCOUNTING_DATE_START_BINDING)) { $sql .= " AND f.datef >= '".$db->idate($conf->global->ACCOUNTING_DATE_START_BINDING)."'"; } @@ -216,7 +215,7 @@ if ($action == 'validatehistory') { $thirdpartystatic->email = $objp->email; $thirdpartystatic->country_code = $objp->country_code; $thirdpartystatic->tva_intra = $objp->tva_intra; - $thirdpartystatic->code_compta = $objp->company_code_sell; + $thirdpartystatic->code_compta_product = $objp->company_code_sell; // The accounting account for product stored on thirdparty object (for level3 suggestion) $product_static->ref = $objp->product_ref; $product_static->id = $objp->product_id; @@ -256,7 +255,7 @@ if ($action == 'validatehistory') { $suggestedid = 0; $return=$accountingAccount->getAccountingCodeToBind($thirdpartystatic, $mysoc, $product_static, $facture_static, $facture_static_det, $accountingAccountArray, 'customer'); - if (!is_array($return) && $return<0) { + if (!is_array($return) && $return < 0) { setEventMessage($accountingAccount->error, 'errors'); } else { $suggestedid = $return['suggestedid']; @@ -282,17 +281,22 @@ if ($action == 'validatehistory') { } else { $nbbinddone++; } + } else { + $notpossible++; } $i++; } + if ($num_lines > 10000) { + $notpossible += ($num_lines - 10000); + } } if ($error) { $db->rollback(); } else { $db->commit(); - setEventMessages($langs->trans('AutomaticBindingDone', $nbbinddone), null, 'mesgs'); + setEventMessages($langs->trans('AutomaticBindingDone', $nbbinddone, $notpossible), null, 'mesgs'); } } @@ -628,16 +632,22 @@ if ($conf->global->MAIN_FEATURES_LEVEL > 0) { // This part of code looks strange print ''.$langs->trans('MonthShort'.str_pad($j, 2, '0', STR_PAD_LEFT)).''; } print ''.$langs->trans("Total").''; - $sql = "SELECT '".$db->escape($langs->trans("Vide"))."' AS marge,"; for ($i = 1; $i <= 12; $i++) { $j = $i + ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1) - 1; if ($j > 12) { $j -= 12; } - $sql .= " SUM(".$db->ifsql("MONTH(f.datef)=".$j, "(fd.total_ht-(fd.qty * fd.buy_price_ht))", "0").") AS month".str_pad($j, 2, "0", STR_PAD_LEFT).","; + $sql .= " SUM(".$db->ifsql("MONTH(f.datef)=".$j, + " (".$db->ifsql("fd.total_ht < 0", + " (-1 * (abs(fd.total_ht) - (fd.buy_price_ht * fd.qty * (fd.situation_percent / 100))))", + " (fd.total_ht - (fd.buy_price_ht * fd.qty * (fd.situation_percent / 100)))").")", + 0).") AS month".str_pad($j, 2, '0', STR_PAD_LEFT).","; } - $sql .= " SUM((fd.total_ht-(fd.qty * fd.buy_price_ht))) as total"; + $sql .= " SUM(".$db->ifsql("fd.total_ht < 0", + " (-1 * (abs(fd.total_ht) - (fd.buy_price_ht * fd.qty * (fd.situation_percent / 100))))", + " (fd.total_ht - (fd.buy_price_ht * fd.qty * (fd.situation_percent / 100)))").") as total"; + $sql .= " FROM ".MAIN_DB_PREFIX."facturedet as fd"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."facture as f ON f.rowid = fd.fk_facture"; $sql .= " WHERE f.datef >= '".$db->idate($search_date_start)."'"; @@ -654,7 +664,6 @@ if ($conf->global->MAIN_FEATURES_LEVEL > 0) { // This part of code looks strange } else { $sql .= " AND f.type IN (".Facture::TYPE_STANDARD.", ".Facture::TYPE_REPLACEMENT.", ".Facture::TYPE_CREDIT_NOTE.", ".Facture::TYPE_DEPOSIT.", ".Facture::TYPE_SITUATION.")"; } - dol_syslog('htdocs/accountancy/customer/index.php'); $resql = $db->query($sql); if ($resql) { diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php index 582877d3599..56f904e79ef 100644 --- a/htdocs/accountancy/customer/list.php +++ b/htdocs/accountancy/customer/list.php @@ -539,13 +539,14 @@ if ($result) { $thirdpartystatic->client = $objp->client; $thirdpartystatic->fournisseur = $objp->fournisseur; $thirdpartystatic->code_client = $objp->code_client; + $thirdpartystatic->code_compta = $objp->code_compta_client; // For backward compatibility $thirdpartystatic->code_compta_client = $objp->code_compta_client; $thirdpartystatic->code_fournisseur = $objp->code_fournisseur; $thirdpartystatic->code_compta_fournisseur = $objp->code_compta_fournisseur; $thirdpartystatic->email = $objp->email; $thirdpartystatic->country_code = $objp->country_code; $thirdpartystatic->tva_intra = $objp->tva_intra; - $thirdpartystatic->code_compta_company = $objp->company_code_sell; + $thirdpartystatic->code_compta_product = $objp->company_code_sell; // The accounting account for product stored on thirdparty object (for level3 suggestion) $product_static->ref = $objp->product_ref; $product_static->id = $objp->product_id; diff --git a/htdocs/accountancy/expensereport/index.php b/htdocs/accountancy/expensereport/index.php index 0987afb0c6a..37abd56a21d 100644 --- a/htdocs/accountancy/expensereport/index.php +++ b/htdocs/accountancy/expensereport/index.php @@ -99,42 +99,69 @@ if (($action == 'clean' || $action == 'validatehistory') && $user->rights->accou if ($action == 'validatehistory') { $error = 0; + $nbbinddone = 0; + $notpossible = 0; + $db->begin(); // Now make the binding - if ($db->type == 'pgsql') { - $sql1 = "UPDATE ".MAIN_DB_PREFIX."expensereport_det"; - $sql1 .= " SET fk_code_ventilation = accnt.rowid"; - $sql1 .= " FROM ".MAIN_DB_PREFIX."c_type_fees as t, ".MAIN_DB_PREFIX."accounting_account as accnt , ".MAIN_DB_PREFIX."accounting_system as syst"; - $sql1 .= " WHERE ".MAIN_DB_PREFIX."expensereport_det.fk_c_type_fees = t.id AND accnt.fk_pcg_version = syst.pcg_version AND syst.rowid = ".((int) $conf->global->CHARTOFACCOUNTS).' AND accnt.entity = '.((int) $conf->entity); - $sql1 .= " AND accnt.active = 1 AND t.accountancy_code = accnt.account_number"; - $sql1 .= " AND ".MAIN_DB_PREFIX."expensereport_det.fk_code_ventilation = 0"; - if ($validatemonth && $validateyear) { - $sql1 .= dolSqlDateFilter('date', 0, $validatemonth, $validateyear); - } - } else { - $sql1 = "UPDATE ".MAIN_DB_PREFIX."expensereport_det as erd, ".MAIN_DB_PREFIX."c_type_fees as t, ".MAIN_DB_PREFIX."accounting_account as accnt , ".MAIN_DB_PREFIX."accounting_system as syst"; - $sql1 .= " SET erd.fk_code_ventilation = accnt.rowid"; - $sql1 .= " WHERE erd.fk_c_type_fees = t.id AND accnt.fk_pcg_version = syst.pcg_version AND syst.rowid = ".((int) $conf->global->CHARTOFACCOUNTS).' AND accnt.entity = '.((int) $conf->entity); - $sql1 .= " AND accnt.active = 1 AND t.accountancy_code=accnt.account_number"; - $sql1 .= " AND erd.fk_code_ventilation = 0"; - if ($validatemonth && $validateyear) { - $sql1 .= dolSqlDateFilter('erd.date', 0, $validatemonth, $validateyear); - } + $sql1 = "SELECT erd.rowid, accnt.rowid as suggestedid"; + $sql1 .= " FROM ".MAIN_DB_PREFIX."expensereport_det as erd"; + $sql1 .= " LEFT JOIN ".MAIN_DB_PREFIX."c_type_fees as t ON erd.fk_c_type_fees = t.id"; + $sql1 .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as accnt ON t.accountancy_code = accnt.account_number AND accnt.active = 1 AND accnt.entity =".((int) $conf->entity); + $sql1 .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_system as syst ON accnt.fk_pcg_version = syst.pcg_version AND syst.rowid = ".((int) $conf->global->CHARTOFACCOUNTS).' AND syst.active = 1,'; + $sql1 .= " ".MAIN_DB_PREFIX."expensereport as er"; + $sql1 .= " WHERE erd.fk_expensereport = er.rowid AND er.entity = ".((int) $conf->entity); + $sql1 .= " AND er.fk_statut IN (".ExpenseReport::STATUS_APPROVED.", ".ExpenseReport::STATUS_CLOSED.") AND erd.fk_code_ventilation <= 0"; + if ($validatemonth && $validateyear) { + $sql1 .= dolSqlDateFilter('erd.date', 0, $validatemonth, $validateyear); } dol_syslog('htdocs/accountancy/expensereport/index.php'); - $resql1 = $db->query($sql1); - if (!$resql1) { + $result = $db->query($sql1); + if (!$result) { $error++; - $db->rollback(); setEventMessages($db->lasterror(), null, 'errors'); } else { - $nbbinddone = $db->affected_rows($resql1); + $num_lines = $db->num_rows($result); + $i = 0; + while ($i < min($num_lines, 10000)) { // No more than 10000 at once + $objp = $db->fetch_object($result); + + $lineid = $objp->rowid; + $suggestedid = $objp->suggestedid; + + if ($suggestedid > 0) { + $sqlupdate = "UPDATE ".MAIN_DB_PREFIX."expensereport_det"; + $sqlupdate .= " SET fk_code_ventilation = ".((int) $suggestedid); + $sqlupdate .= " WHERE fk_code_ventilation <= 0 AND rowid = ".((int) $lineid); + + $resqlupdate = $db->query($sqlupdate); + if (!$resqlupdate) { + $error++; + setEventMessages($db->lasterror(), null, 'errors'); + break; + } else { + $nbbinddone++; + } + } else { + $notpossible++; + } + + $i++; + } + if ($num_lines > 10000) { + $notpossible += ($num_lines - 10000); + } + } + + if ($error) { + $db->rollback(); + } else { $db->commit(); - setEventMessages($langs->trans('AutomaticBindingDone', $nbbinddone), null, 'mesgs'); + setEventMessages($langs->trans('AutomaticBindingDone', $nbbinddone, $notpossible), null, 'mesgs'); } } @@ -157,7 +184,7 @@ print '
    '; $y = $year_current; -$buttonbind = ''.$langs->trans("ValidateHistory").''; +$buttonbind = ''.$langs->trans("ValidateHistory").''; print_barre_liste(img_picto('', 'unlink', 'class="paddingright fa-color-unset"').$langs->trans("OverviewOfAmountOfLinesNotBound"), '', '', '', '', '', '', -1, '', '', 0, $buttonbind, '', 0, 1, 1); diff --git a/htdocs/accountancy/expensereport/lines.php b/htdocs/accountancy/expensereport/lines.php index b262f85367a..fb3bf1a6e04 100644 --- a/htdocs/accountancy/expensereport/lines.php +++ b/htdocs/accountancy/expensereport/lines.php @@ -394,11 +394,12 @@ if ($result) { print ''.vatrate($objp->tva_tx.($objp->vat_src_code ? ' ('.$objp->vat_src_code.')' : '')).''; // Accounting account affected - print ''; + print ''; print $accountingaccountstatic->getNomUrl(0, 1, 1, '', 1); print ' '; print img_edit(); print ''; + print ''; print ""; diff --git a/htdocs/accountancy/supplier/index.php b/htdocs/accountancy/supplier/index.php index 1a0c8909829..70434a470f1 100644 --- a/htdocs/accountancy/supplier/index.php +++ b/htdocs/accountancy/supplier/index.php @@ -118,6 +118,7 @@ if (($action == 'clean' || $action == 'validatehistory') && $user->rights->accou if ($action == 'validatehistory') { $error = 0; $nbbinddone = 0; + $notpossible = 0; $db->begin(); @@ -154,7 +155,6 @@ if ($action == 'validatehistory') { } else { $sql .= " s.accountancy_code_buy as company_code_buy"; } - $sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f"; $sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = f.fk_soc"; if (!empty($conf->global->MAIN_COMPANY_PERENTITY_SHARED)) { @@ -172,8 +172,7 @@ if ($action == 'validatehistory') { $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa2 ON " . $alias_product_perentity . ".accountancy_code_buy_intra = aa2.account_number AND aa2.active = 1 AND aa2.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa2.entity = ".$conf->entity; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa3 ON " . $alias_product_perentity . ".accountancy_code_buy_export = aa3.account_number AND aa3.active = 1 AND aa3.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa3.entity = ".$conf->entity; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa4 ON " . $alias_societe_perentity . ".accountancy_code_buy = aa4.account_number AND aa4.active = 1 AND aa4.fk_pcg_version = '".$db->escape($chartaccountcode)."' AND aa4.entity = ".$conf->entity; - $sql .= " WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0"; - $sql .= " AND l.product_type <= 2"; + $sql .= " WHERE f.fk_statut > 0 AND l.fk_code_ventilation <= 0 AND l.product_type <= 2 AND f.entity = ".((int) $conf->entity); if (!empty($conf->global->ACCOUNTING_DATE_START_BINDING)) { $sql .= " AND f.datef >= '".$db->idate($conf->global->ACCOUNTING_DATE_START_BINDING)."'"; } @@ -212,7 +211,7 @@ if ($action == 'validatehistory') { $thirdpartystatic->email = $objp->email; $thirdpartystatic->country_code = $objp->country_code; $thirdpartystatic->tva_intra = $objp->tva_intra; - $thirdpartystatic->code_compta = $objp->company_code_sell; + $thirdpartystatic->code_compta_product = $objp->company_code_buy; // The accounting account for product stored on thirdparty object (for level3 suggestion) $product_static->ref = $objp->product_ref; $product_static->id = $objp->product_id; @@ -231,7 +230,7 @@ if ($action == 'validatehistory') { $facture_static->ref = $objp->ref; $facture_static->id = $objp->facid; $facture_static->type = $objp->ftype; - $facture_static->datef = $objp->datef; + $facture_static->date = $objp->datef; $facture_static_det->id = $objp->rowid; $facture_static_det->total_ht = $objp->total_ht; @@ -278,17 +277,22 @@ if ($action == 'validatehistory') { } else { $nbbinddone++; } + } else { + $notpossible++; } $i++; } + if ($num_lines > 10000) { + $notpossible += ($num_lines - 10000); + } } if ($error) { $db->rollback(); } else { $db->commit(); - setEventMessages($langs->trans('AutomaticBindingDone', $nbbinddone), null, 'mesgs'); + setEventMessages($langs->trans('AutomaticBindingDone', $nbbinddone, $notpossible), null, 'mesgs'); } } diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php index f88c1dd8ccc..6364ce914c6 100644 --- a/htdocs/accountancy/supplier/list.php +++ b/htdocs/accountancy/supplier/list.php @@ -547,7 +547,7 @@ if ($result) { $thirdpartystatic->email = $objp->email; $thirdpartystatic->country_code = $objp->country_code; $thirdpartystatic->tva_intra = $objp->tva_intra; - $thirdpartystatic->code_compta_company = $objp->company_code_buy; + $thirdpartystatic->code_compta_product = $objp->company_code_buy; // The accounting account for product stored on thirdparty object (for level3 suggestion) $product_static->ref = $objp->product_ref; $product_static->id = $objp->product_id; diff --git a/htdocs/adherents/agenda.php b/htdocs/adherents/agenda.php index 3f7114380f3..cb942ba3176 100644 --- a/htdocs/adherents/agenda.php +++ b/htdocs/adherents/agenda.php @@ -39,8 +39,8 @@ $langs->loadLangs(array("companies", "members")); $id = GETPOST('id', 'int') ?GETPOST('id', 'int') : GETPOST('rowid', 'int'); $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; @@ -136,7 +136,11 @@ if ($object->id > 0) { $linkback = ''.$langs->trans("BackToList").''; - dol_banner_tab($object, 'rowid', $linkback); + $morehtmlref = ''; + $morehtmlref .= img_picto($langs->trans("Download").' '.$langs->trans("VCard"), 'vcard.png', 'class="valignmiddle marginleftonly paddingrightonly"'); + $morehtmlref .= ''; + + dol_banner_tab($object, 'rowid', $linkback, 1, 'rowid', 'ref', $morehtmlref); print '
    '; diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php index 9dcb514cc36..a2e3779d52b 100644 --- a/htdocs/adherents/card.php +++ b/htdocs/adherents/card.php @@ -918,12 +918,8 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { // When used in standard mode // ----------------------------------------- + // Create mode if ($action == 'create') { - /* ************************************************************************** */ - /* */ - /* Creation mode */ - /* */ - /* ************************************************************************** */ $object->canvas = $canvas; $object->state_id = GETPOST('state_id', 'int'); @@ -953,7 +949,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print load_fiche_titre($langs->trans("NewMember"), '', $object->picto); if ($conf->use_javascript_ajax) { - print "\n".''; print ''; } - print ''; + print ''; print ' '; print ''; print ''; @@ -1339,14 +1339,15 @@ if ($resql) { $labeltoshow = $langs->trans($reg[1]); } else { if ($objp->label == '(payment_salary)') { - $labeltoshow = dol_trunc($langs->trans("SalaryPayment", 40)); + $labeltoshow = $langs->trans("SalaryPayment"); } else { $labeltoshow = dol_escape_htmltag($objp->label); $titletoshow = $objp->label; } } - print ''; - print $labeltoshow; // Already escaped + + + print ''; // Add info about links after description $cachebankaccount = array(); @@ -1355,70 +1356,70 @@ if ($resql) { if ($links[$key]['type'] == 'withdraw') { $banktransferstatic->id = $links[$key]['url_id']; $banktransferstatic->ref = $links[$key]['label']; - print ' '.$banktransferstatic->getNomUrl(0); + print $banktransferstatic->getNomUrl(0).' '; } elseif ($links[$key]['type'] == 'payment') { $paymentstatic->id = $links[$key]['url_id']; $paymentstatic->ref = $links[$key]['url_id']; // FIXME This is id, not ref of payment $paymentstatic->date = $db->jdate($objp->do); - print ' '.$paymentstatic->getNomUrl(2); + print $paymentstatic->getNomUrl(2).' '; } elseif ($links[$key]['type'] == 'payment_supplier') { $paymentsupplierstatic->id = $links[$key]['url_id']; $paymentsupplierstatic->ref = $links[$key]['url_id']; // FIXME This is id, not ref of payment - print ' '.$paymentsupplierstatic->getNomUrl(2); + print $paymentsupplierstatic->getNomUrl(2).' '; } elseif ($links[$key]['type'] == 'payment_sc') { $paymentscstatic->id = $links[$key]['url_id']; $paymentscstatic->ref = $links[$key]['url_id']; $paymentscstatic->label = $links[$key]['label']; - print ' '.$paymentscstatic->getNomUrl(2); + print $paymentscstatic->getNomUrl(2).' '; } elseif ($links[$key]['type'] == 'payment_vat') { $paymentvatstatic->id = $links[$key]['url_id']; $paymentvatstatic->ref = $links[$key]['url_id']; - print ' '.$paymentvatstatic->getNomUrl(2); + print $paymentvatstatic->getNomUrl(2).' '; } elseif ($links[$key]['type'] == 'payment_salary') { $paymentsalstatic->id = $links[$key]['url_id']; $paymentsalstatic->ref = $links[$key]['url_id']; $paymentsalstatic->label = $links[$key]['label']; - print ' '.$paymentsalstatic->getNomUrl(2); + print $paymentsalstatic->getNomUrl(2).' '; } elseif ($links[$key]['type'] == 'payment_loan') { print ''; print ' '.img_object($langs->trans('ShowPayment'), 'payment').' '; - print ''; + print ' '; } elseif ($links[$key]['type'] == 'payment_donation') { $paymentdonationstatic->id = $links[$key]['url_id']; $paymentdonationstatic->ref = $links[$key]['url_id']; - print ' '.$paymentdonationstatic->getNomUrl(2); + print $paymentdonationstatic->getNomUrl(2).' '; } elseif ($links[$key]['type'] == 'payment_expensereport') { $paymentexpensereportstatic->id = $links[$key]['url_id']; $paymentexpensereportstatic->ref = $links[$key]['url_id']; - print ' '.$paymentexpensereportstatic->getNomUrl(2); + print $paymentexpensereportstatic->getNomUrl(2).' '; } elseif ($links[$key]['type'] == 'payment_various') { $paymentvariousstatic->id = $links[$key]['url_id']; $paymentvariousstatic->ref = $links[$key]['url_id']; - print ' '.$paymentvariousstatic->getNomUrl(2); + print $paymentvariousstatic->getNomUrl(2).' '; } elseif ($links[$key]['type'] == 'banktransfert') { // Do not show link to transfer since there is no transfer card (avoid confusion). Can already be accessed from transaction detail. if ($objp->amount > 0) { $banklinestatic->fetch($links[$key]['url_id']); $bankstatic->id = $banklinestatic->fk_account; $bankstatic->label = $banklinestatic->bank_account_ref; - print ' ('.$langs->trans("TransferFrom").' '; + print $langs->trans("TransferFrom").' '; print $bankstatic->getNomUrl(1, 'transactions'); print ' '.$langs->trans("toward").' '; $bankstatic->id = $objp->bankid; $bankstatic->label = $objp->bankref; print $bankstatic->getNomUrl(1, ''); - print ')'; + print ' - '; } else { $bankstatic->id = $objp->bankid; $bankstatic->label = $objp->bankref; - print ' ('.$langs->trans("TransferFrom").' '; + print $langs->trans("TransferFrom").' '; print $bankstatic->getNomUrl(1, ''); print ' '.$langs->trans("toward").' '; $banklinestatic->fetch($links[$key]['url_id']); $bankstatic->id = $banklinestatic->fk_account; $bankstatic->label = $banklinestatic->bank_account_ref; print $bankstatic->getNomUrl(1, 'transactions'); - print ')'; + print ' - '; } //var_dump($links); } elseif ($links[$key]['type'] == 'company') { @@ -1430,22 +1431,22 @@ if ($resql) { // Information is already shown using the payment_salary link. No need of this link. } else { // Show link with label $links[$key]['label'] - if (!empty($objp->label) && !empty($links[$key]['label'])) { - print ' - '; - } print ''; if (preg_match('/^\((.*)\)$/i', $links[$key]['label'], $reg)) { // Label generique car entre parentheses. On l'affiche en le traduisant if ($reg[1] == 'paiement') { $reg[1] = 'Payment'; } - print ' '.$langs->trans($reg[1]); + print $langs->trans($reg[1]); } else { - print ' '.$links[$key]['label']; + print $links[$key]['label']; } - print ''; + print ''.($labeltoshow ? ' - ' : ''); } } + + print $labeltoshow; // Already escaped + print ''; if (!$i) { $totalarray['nbfield']++; @@ -1488,7 +1489,7 @@ if ($resql) { // Payment type if (!empty($arrayfields['type']['checked'])) { - print ''; + print ''; $labeltype = ($langs->trans("PaymentTypeShort".$objp->fk_type) != "PaymentTypeShort".$objp->fk_type) ? $langs->trans("PaymentTypeShort".$objp->fk_type) : $langs->getLabelFromKey($db, $objp->fk_type, 'c_paiement', 'code', 'libelle', '', 1); if ($labeltype == 'SOLD') { print ' '; //$langs->trans("InitialBankBalance"); @@ -1514,9 +1515,9 @@ if ($resql) { print ''; $companylinked_id = 0; - $userlinked_id = 0; + $userlinked_id = 0; - //payment line type to define user display and user or company linked + //payment line type to define user display and user or company linked foreach ($links as $key => $value) { if ($links[$key]['type'] == 'payment_sc') { $type_link = 'payment_sc'; @@ -1663,20 +1664,20 @@ if ($resql) { } } - // Action edit/delete + // Action edit/delete and select print ''; // Transaction reconciliated or edit link if ($objp->conciliated && $bankaccount->canBeConciliated() > 0) { // If line not conciliated and account can be conciliated - print ''; + print ''; print img_edit(); print ''; } else { if ($user->rights->banque->modifier || $user->rights->banque->consolidate) { - print ''; + print ''; print img_edit(); print ''; } else { - print ''; + print ''; print img_view(); print ''; } @@ -1686,24 +1687,19 @@ if ($resql) { } } if ($user->rights->banque->modifier) { - print 'rowid.'&id='.$objp->bankid.'&page='.$page.'">'; + print 'rowid.'&page='.$page.$param.($sortfield ? '&sortfield='.$sortfield : '').($sortorder ? '&sortorder='.$sortorder : '').'">'; print img_delete('', 'class="marginleftonly"'); print ''; } } - print ''; - if (!$i) { - $totalarray['nbfield']++; - } // Action column - print ''; if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined $selected = 0; if (in_array($obj->rowid, $arrayofselected)) { $selected = 1; } - print ''; + print ''; } print ''; if (!$i) { diff --git a/htdocs/compta/bank/card.php b/htdocs/compta/bank/card.php index 9f000786b7f..5d2bb71109b 100644 --- a/htdocs/compta/bank/card.php +++ b/htdocs/compta/bank/card.php @@ -1060,19 +1060,19 @@ if ($action == 'create') { // IBAN print ''.$langs->trans($ibankey).''; - print ''; + print ''; print ''.$langs->trans($bickey).''; - print ''; + print ''; if ($conf->prelevement->enabled) { print ''.$langs->trans("ICS").' ('.$langs->trans("StandingOrder").')'; - print ''; + print ''; } if ($conf->paymentbybanktransfer->enabled) { print ''.$langs->trans("ICS").' ('.$langs->trans("BankTransfer").')'; - print ''; + print ''; } print ''.$langs->trans("BankAccountDomiciliation").''; diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index 685c78f5f1b..c2745b31426 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -132,11 +132,19 @@ class Account extends CommonObject public $bic; /** - * IBAN number (International Bank Account Number). Stored into iban_prefix field into database + * IBAN number (International Bank Account Number). Stored into iban_prefix field into database (TODO Rename field in database) * @var string */ public $iban; + /** + * IBAN number + * + * @var string + * @deprecated see $iban + */ + public $iban_prefix; + /** * Name of account holder * @var string diff --git a/htdocs/compta/bank/class/api_bankaccounts.class.php b/htdocs/compta/bank/class/api_bankaccounts.class.php index fd7ed1838f2..23d4c2eefbb 100644 --- a/htdocs/compta/bank/class/api_bankaccounts.class.php +++ b/htdocs/compta/bank/class/api_bankaccounts.class.php @@ -81,8 +81,9 @@ class BankAccounts extends DolibarrApi } // Add sql filters if ($sqlfilters) { - if (!DolibarrApi::_checkFilters($sqlfilters)) { - throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters); + $errormessage = ''; + if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); } $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; @@ -438,8 +439,9 @@ class BankAccounts extends DolibarrApi // Add sql filters if ($sqlfilters) { - if (!DolibarrApi::_checkFilters($sqlfilters)) { - throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters); + $errormessage = ''; + if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); } $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; diff --git a/htdocs/compta/bank/document.php b/htdocs/compta/bank/document.php index 389c8195f37..78d45beadf3 100644 --- a/htdocs/compta/bank/document.php +++ b/htdocs/compta/bank/document.php @@ -50,8 +50,8 @@ if ($user->socid) { // Get parameters $limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; diff --git a/htdocs/compta/bank/info.php b/htdocs/compta/bank/info.php index e8514c1e96e..1bbab933e7b 100644 --- a/htdocs/compta/bank/info.php +++ b/htdocs/compta/bank/info.php @@ -30,16 +30,19 @@ require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $langs->loadLangs(array('banks', 'categories', 'companies')); $id = GETPOST("rowid", 'int'); +$accountid = (GETPOST('id', 'int') ? GETPOST('id', 'int') : GETPOST('account', 'int')); $ref = GETPOST('ref', 'alpha'); // Security check $fieldvalue = (!empty($id) ? $id : (!empty($ref) ? $ref : '')); + $fieldtype = (!empty($ref) ? 'ref' : 'rowid'); if ($user->socid) { $socid = $user->socid; } -$result = restrictedArea($user, 'banque', $fieldvalue, 'bank_account', '', '', $fieldtype); -if (empty($user->rights->banque->lire) && !$user->rights->banque->consolidate) { + +$result = restrictedArea($user, 'banque', $accountid, 'bank_account'); +if (empty($user->rights->banque->lire) && empty($user->rights->banque->consolidate)) { accessforbidden(); } diff --git a/htdocs/compta/bank/line.php b/htdocs/compta/bank/line.php index f86c50f31cc..bc70d27ba70 100644 --- a/htdocs/compta/bank/line.php +++ b/htdocs/compta/bank/line.php @@ -51,7 +51,8 @@ if (!empty($conf->salaries->enabled)) { } -$id = (GETPOST('id', 'int') ? GETPOST('id', 'int') : GETPOST('account', 'int')); +$id = GETPOST('rowid', 'int'); +$accountid = (GETPOST('id', 'int') ? GETPOST('id', 'int') : GETPOST('account', 'int')); $ref = GETPOST('ref', 'alpha'); $action = GETPOST('action', 'aZ09'); $confirm = GETPOST('confirm', 'alpha'); @@ -67,8 +68,9 @@ $socid = 0; if ($user->socid) { $socid = $user->socid; } -$result = restrictedArea($user, 'banque', $fieldvalue, 'bank_account', '', '', $fieldtype); -if (empty($user->rights->banque->lire) && !$user->rights->banque->consolidate) { + +$result = restrictedArea($user, 'banque', $accountid, 'bank_account'); +if (empty($user->rights->banque->lire) && empty($user->rights->banque->consolidate)) { accessforbidden(); } @@ -78,6 +80,7 @@ $hookmanager->initHooks(array('bankline')); /* * Actions */ + $parameters = array('socid' => $socid); $reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) { @@ -256,16 +259,20 @@ $form = new Form($db); llxHeader('', $langs->trans("BankTransaction")); +$arrayselected = array(); + $c = new Categorie($db); $cats = $c->containing($rowid, Categorie::TYPE_BANK_LINE); -foreach ($cats as $cat) { - $arrayselected[] = $cat->id; +if (is_array($cats)) { + foreach ($cats as $cat) { + $arrayselected[] = $cat->id; + } } $head = bankline_prepare_head($rowid); -$sql = "SELECT b.rowid,b.dateo as do,b.datev as dv, b.amount, b.label, b.rappro,"; +$sql = "SELECT b.rowid, b.dateo as do, b.datev as dv, b.amount, b.label, b.rappro,"; $sql .= " b.num_releve, b.fk_user_author, b.num_chq, b.fk_type, b.fk_account, b.fk_bordereau as receiptid,"; $sql .= " b.emetteur,b.banque"; $sql .= " FROM ".MAIN_DB_PREFIX."bank as b"; @@ -299,6 +306,7 @@ if ($result) { print ''; print ''; print ''; + print ''; print ''; print dol_get_fiche_head($head, 'bankline', $langs->trans('LineRecord'), 0, 'accountline', 0); @@ -490,9 +498,9 @@ if ($result) { print $form->selectDate($db->jdate($objp->do), 'dateo', '', '', '', 'update', 1, 0, $objp->rappro); if (!$objp->rappro) { print '   '; - print ''; + print ''; print img_edit_remove()." "; - print ''; + print ''; print img_edit_add().""; } print ''; @@ -510,9 +518,9 @@ if ($result) { print $form->selectDate($db->jdate($objp->dv), 'datev', '', '', '', 'update', 1, 0, $objp->rappro); if (!$objp->rappro) { print '   '; - print ''; + print ''; print img_edit_remove()." "; - print ''; + print ''; print img_edit_add().""; } print ''; @@ -569,11 +577,15 @@ if ($result) { // Bank line print ''.$form->editfieldkey('RubriquesTransactions', 'custcats', '', $object, 0).''; $cate_arbo = $form->select_all_categories(Categorie::TYPE_BANK_LINE, null, 'parent', null, null, 1); + $arrayselected = array(); + $c = new Categorie($db); $cats = $c->containing($bankline->id, Categorie::TYPE_BANK_LINE); - foreach ($cats as $cat) { - $arrayselected[] = $cat->id; + if (is_array($cats)) { + foreach ($cats as $cat) { + $arrayselected[] = $cat->id; + } } print img_picto('', 'category', 'class="paddingright"').$form->multiselectarray('custcats', $cate_arbo, $arrayselected, null, null, null, null, "90%"); print ""; @@ -649,10 +661,10 @@ if ($result) { } print ''; - print "".$langs->trans("BankLineConciliated").""; + print ''; if ($user->rights->banque->consolidate) { print ''; - print 'rappro ? ' checked="checked"' : '')).'">'; + print 'rappro ? ' checked="checked"' : '')).'">'; print ''; } else { print ''.yn($objp->rappro).''; diff --git a/htdocs/compta/bank/list.php b/htdocs/compta/bank/list.php index ea656141639..6815a8d664b 100644 --- a/htdocs/compta/bank/list.php +++ b/htdocs/compta/bank/list.php @@ -79,8 +79,8 @@ if (!$allowed) { $diroutputmassaction = $conf->bank->dir_output.'/temp/massgeneration/'.$user->id; $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; diff --git a/htdocs/compta/bank/releve.php b/htdocs/compta/bank/releve.php index ae676209571..3417f05c817 100644 --- a/htdocs/compta/bank/releve.php +++ b/htdocs/compta/bank/releve.php @@ -78,8 +78,8 @@ if ($user->rights->banque->consolidate && $action == 'dvprev' && !empty($dvid)) $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); $pageplusone = GETPOST("pageplusone", 'int'); if ($pageplusone) { @@ -331,8 +331,8 @@ if (empty($numref)) { } else { print ''; print ''; - print ''; - print ''; + print ''; + print ''; } print ''; @@ -347,7 +347,7 @@ if (empty($numref)) { $balancestart[$objp->numr] = $obj->amount; $db->free($resql); } - print ''.price($balancestart[$objp->numr], '', $langs, 1, -1, -1, $conf->currency).''; + print ''.price($balancestart[$objp->numr], '', $langs, 1, -1, -1, empty($object->currency_code)?$conf->currency:$object->currency_code).''; // Calculate end amount $sql = "SELECT sum(b.amount) as amount"; @@ -360,11 +360,11 @@ if (empty($numref)) { $content[$objp->numr] = $obj->amount; $db->free($resql); } - print ''.price(($balancestart[$objp->numr] + $content[$objp->numr]), '', $langs, 1, -1, -1, $conf->currency).''; + print ''.price(($balancestart[$objp->numr] + $content[$objp->numr]), '', $langs, 1, -1, -1, empty($object->currency_code)?$conf->currency:$object->currency_code).''; print ''; if ($user->rights->banque->consolidate && $action != 'editbankreceipt') { - print 'numr).'">'.img_edit().''; + print 'numr).'">'.img_edit().''; } print ''; @@ -669,6 +669,7 @@ if (empty($numref)) { var current = $(this); current.click(function() { + console.log("We click on ajaxforbankoperationchange"); var url = "'.$urlajax.'&"+current.attr("href").split("?")[1]; $.get(url, function(data) { diff --git a/htdocs/compta/bank/various_payment/card.php b/htdocs/compta/bank/various_payment/card.php index 72188cdbb4a..0003570fd02 100644 --- a/htdocs/compta/bank/various_payment/card.php +++ b/htdocs/compta/bank/various_payment/card.php @@ -334,11 +334,7 @@ foreach ($bankcateg->fetchAll() as $bankcategory) { $options[$bankcategory->id] = $bankcategory->label; } -/* ************************************************************************** */ -/* */ -/* Create mode */ -/* */ -/* ************************************************************************** */ +// Create mode if ($action == 'create') { // Update fields properties in realtime if (!empty($conf->use_javascript_ajax)) { @@ -350,6 +346,7 @@ if ($action == 'create') { }); function setPaymentType() { + console.log("setPaymentType"); var code = $("#selectpaymenttype option:selected").val(); if (code == \'CHQ\' || code == \'VIR\') { @@ -415,7 +412,8 @@ if ($action == 'create') { if (!empty($conf->banque->enabled)) { print ''; print $form->editfieldkey('BankAccount', 'selectaccountid', '', $object, 0, 'string', '', 1).''; - print img_picto('', 'bank_account', 'class="pictofixedwidth"').$form->select_comptes($accountid, "accountid", 0, '', 2, '', 0, '', 1); // Affiche liste des comptes courant + print img_picto('', 'bank_account', 'class="pictofixedwidth"'); + print $form->select_comptes($accountid, "accountid", 0, '', 2, '', 0, '', 1); // Show list of main accounts (comptes courants) print ''; } diff --git a/htdocs/compta/bank/various_payment/list.php b/htdocs/compta/bank/various_payment/list.php index fec2d025c7a..bbec4f23fc6 100644 --- a/htdocs/compta/bank/various_payment/list.php +++ b/htdocs/compta/bank/various_payment/list.php @@ -77,8 +77,8 @@ if (empty($search_datev_end)) { $search_datev_end = GETPOST("search_datev_end", 'int'); } -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; diff --git a/htdocs/compta/cashcontrol/cashcontrol_card.php b/htdocs/compta/cashcontrol/cashcontrol_card.php index 2f3004ae1d6..149710c975b 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_card.php +++ b/htdocs/compta/cashcontrol/cashcontrol_card.php @@ -46,8 +46,8 @@ $smonth = (GETPOSTISSET('closemonth') ?GETPOST('closemonth', 'int') : dol_print_ $sday = (GETPOSTISSET('closeday') ?GETPOST('closeday', 'int') : dol_print_date($now, "%d")); $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; diff --git a/htdocs/compta/charges/index.php b/htdocs/compta/charges/index.php index be7c88c0a1a..07c1176b9d2 100644 --- a/htdocs/compta/charges/index.php +++ b/htdocs/compta/charges/index.php @@ -62,8 +62,8 @@ if (!$year) { $search_account = GETPOST('search_account', 'int'); $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; diff --git a/htdocs/compta/clients.php b/htdocs/compta/clients.php index b39364690a6..bc1d3790280 100644 --- a/htdocs/compta/clients.php +++ b/htdocs/compta/clients.php @@ -45,8 +45,8 @@ $langs->load("companies"); $mode = GETPOST("mode"); $limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; diff --git a/htdocs/compta/deplacement/index.php b/htdocs/compta/deplacement/index.php index d588b7bff80..8af897378f5 100644 --- a/htdocs/compta/deplacement/index.php +++ b/htdocs/compta/deplacement/index.php @@ -38,8 +38,8 @@ if ($user->socid) { $result = restrictedArea($user, 'deplacement', '', ''); $limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; diff --git a/htdocs/compta/deplacement/list.php b/htdocs/compta/deplacement/list.php index e7593406ad6..9f92cecc4a7 100644 --- a/htdocs/compta/deplacement/list.php +++ b/htdocs/compta/deplacement/list.php @@ -45,8 +45,8 @@ $search_ref = GETPOST('search_ref', 'int'); $search_name = GETPOST('search_name', 'alpha'); $search_company = GETPOST('search_company', 'alpha'); // $search_amount=GETPOST('search_amount','alpha'); -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; if (empty($page) || $page == -1) { diff --git a/htdocs/compta/facture/card-rec.php b/htdocs/compta/facture/card-rec.php index 2e6ac4b6174..3909d9437b4 100644 --- a/htdocs/compta/facture/card-rec.php +++ b/htdocs/compta/facture/card-rec.php @@ -71,8 +71,8 @@ $year_date_when = GETPOST('year_date_when'); $month_date_when = GETPOST('month_date_when'); $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; @@ -1354,6 +1354,7 @@ if ($action == 'create') { $dateexample = $object->date_when; } + // Help of substitution key $substitutionarray = getCommonSubstitutionArray($langs, 2, null, $object); $substitutionarray['__INVOICE_PREVIOUS_MONTH__'] = $langs->trans("PreviousMonthOfInvoice").' ('.$langs->trans("Example").': '.dol_print_date(dol_time_plus_duree($dateexample, -1, 'm'), '%m').')'; diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index c50f7a4e8e8..da438af9e01 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -130,6 +130,7 @@ $usercanread = $user->rights->facture->lire; $usercancreate = $user->rights->facture->creer; $usercanissuepayment = $user->rights->facture->paiement; $usercandelete = $user->rights->facture->supprimer; +$usercancreatecontract = $user->rights->contrat->creer; $usercanvalidate = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancreate) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->facture->invoice_advance->validate))); $usercansend = (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->facture->invoice_advance->send))); $usercanreopen = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancreate) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->facture->invoice_advance->reopen))); @@ -264,6 +265,8 @@ if (empty($reshook)) { $result = $object->deleteline(GETPOST('lineid', 'int')); if ($result > 0) { + // reorder lines + $object->line_order(true); // Define output language $outputlangs = $langs; $newlang = ''; @@ -607,7 +610,7 @@ if (empty($reshook)) { // Check parameters // Check for mandatory fields in thirdparty (defined into setup) - $array_to_check = array('IDPROF1', 'IDPROF2', 'IDPROF3', 'IDPROF4', 'IDPROF5', 'IDPROF6', 'EMAIL'); + $array_to_check = array('IDPROF1', 'IDPROF2', 'IDPROF3', 'IDPROF4', 'IDPROF5', 'IDPROF6', 'EMAIL', 'ACCOUNTANCY_CODE_CUSTOMER'); foreach ($array_to_check as $key) { $keymin = strtolower($key); $i = (int) preg_replace('/[^0-9]/', '', $key); @@ -635,6 +638,14 @@ if (empty($reshook)) { setEventMessages($langs->trans("ErrorBadEMail", $object->thirdparty->email).' ('.$langs->trans("ForbiddenBySetupRules").')', null, 'errors'); } } + if ($key == 'ACCOUNTANCY_CODE_CUSTOMER') { + // Check for mandatory + if (!empty($conf->global->SOCIETE_ACCOUNTANCY_CODE_CUSTOMER_INVOICE_MANDATORY) && empty($object->thirdparty->code_compta)) { + $langs->load("errors"); + $error++; + setEventMessages($langs->trans("ErrorAccountancyCodeCustomerIsMandatory", $object->thirdparty->name).' ('.$langs->trans("ForbiddenBySetupRules").')', null, 'errors'); + } + } } } @@ -987,10 +998,13 @@ if (empty($reshook)) { $object->fetch($id); if ($object->statut == Facture::STATUS_VALIDATED && $object->paye == 0) { $paiement = new Paiement($db); - $result = $paiement->fetch(GETPOST('paiement_id')); + $result = $paiement->fetch(GETPOST('paiement_id', 'int')); if ($result > 0) { $result = $paiement->delete(); // If fetch ok and found - header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); + if ($result >= 0) { + header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); + exit; + } } if ($result < 0) { setEventMessages($paiement->error, $paiement->errors, 'errors'); @@ -1121,6 +1135,8 @@ if (empty($reshook)) { $facture_source->fetchPreviousNextSituationInvoice(); } } + + $id = $object->create($user); if ($id < 0) { $error++; @@ -1248,6 +1264,7 @@ if (empty($reshook)) { $line->multicurrency_total_tva = -$line->multicurrency_total_tva; $line->multicurrency_total_ttc = -$line->multicurrency_total_ttc; + $line->context['createcreditnotefrominvoice'] = 1; $result = $line->insert(0, 1); // When creating credit note with same lines than source, we must ignore error if discount alreayd linked $object->lines[] = $line; // insert new line in current object @@ -2886,6 +2903,7 @@ if ($action == 'create') { } $currency_code = $conf->currency; + $fk_account = 0; // Load objectsrc $remise_absolue = 0; @@ -3411,6 +3429,10 @@ if ($action == 'create') { $optionsav .= '
    '; print '
    '; -$tmp = getCustomerInvoiceLatestEditTable($maxLatestEditCount, $socid); +$tmp = getCustomerInvoiceLatestEditTable($max, $socid); if ($tmp) { print $tmp; print '
    '; } -$tmp = getCustomerInvoiceUnpaidOpenTable($max, $socid); +$tmp = getCustomerInvoiceUnpaidOpenTable($maxOpenCount, $socid); if ($tmp) { print $tmp; print '
    '; diff --git a/htdocs/compta/facture/info.php b/htdocs/compta/facture/info.php index f8dd1418000..60efaf36e3d 100644 --- a/htdocs/compta/facture/info.php +++ b/htdocs/compta/facture/info.php @@ -39,6 +39,7 @@ $id = GETPOST("facid", "int"); $ref = GETPOST("ref", 'alpha'); $object = new Facture($db); + $extrafields = new ExtraFields($db); // Fetch optionals attributes and labels @@ -62,14 +63,6 @@ $result = restrictedArea($user, 'facture', $object->id, '', '', 'fk_soc', $field * View */ -if (empty($object->id)) { - llxHeader(); - $langs->load('errors'); - echo '
    '.$langs->trans("ErrorRecordNotFound").'
    '; - llxFooter(); - exit; -} - $form = new Form($db); $title = $langs->trans('InvoiceCustomer')." - ".$langs->trans('Info'); @@ -77,6 +70,13 @@ $help_url = "EN:Customers_Invoices|FR:Factures_Clients|ES:Facturas_a_clientes"; llxHeader('', $title, $help_url); +if (empty($object->id)) { + $langs->load('errors'); + echo '
    '.$langs->trans("ErrorRecordNotFound").'
    '; + llxFooter(); + exit; +} + $object->fetch_thirdparty(); $object->info($object->id); diff --git a/htdocs/compta/facture/invoicetemplate_list.php b/htdocs/compta/facture/invoicetemplate_list.php index d785ccbce93..a07d95094dd 100644 --- a/htdocs/compta/facture/invoicetemplate_list.php +++ b/htdocs/compta/facture/invoicetemplate_list.php @@ -96,8 +96,8 @@ $search_unit_frequency = GETPOST('search_unit_frequency', 'alpha'); $search_status = GETPOST('search_status', 'int'); $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 7456a13146d..f526220c071 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -147,8 +147,8 @@ if ($option == 'late') { $filtre = GETPOST('filtre', 'alpha'); $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page < 0 || GETPOST('button_search', 'alpha') || GETPOST('button_removefilter', 'alpha')) { $page = 0; @@ -1621,6 +1621,18 @@ if ($resql) { $totalarray['val'] = array(); $totalarray['val']['f.total_ht'] = 0; $totalarray['val']['f.total_ttc'] = 0; + + $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); @@ -1706,7 +1718,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); } @@ -1736,7 +1748,7 @@ if ($resql) { print ''; if ($contextpage == 'poslist') { - print $obj->ref; + print dol_escape_htmltag($obj->ref); } else { print $facturestatic->getNomUrl(1, '', 200, 0, '', 0, 1); } @@ -1758,7 +1770,7 @@ if ($resql) { // Customer ref if (!empty($arrayfields['f.ref_client']['checked'])) { print ''; - print $obj->ref_client; + print dol_escape_htmltag($obj->ref_client); print ''; if (!$i) { $totalarray['nbfield']++; @@ -1823,7 +1835,7 @@ if ($resql) { if (!empty($arrayfields['p.title']['checked'])) { print ''; if ($obj->project_id > 0) { - print $projectstatic->title; + print dol_escape_htmltag($projectstatic->title); } print ''; if (!$i) { @@ -1835,9 +1847,9 @@ if ($resql) { if (!empty($arrayfields['s.nom']['checked'])) { print ''; if ($contextpage == 'poslist') { - print $companystatic->name; + print dol_escape_htmltag($companystatic->name); } else { - print $companystatic->getNomUrl(1, 'customer'); + print $companystatic->getNomUrl(1, 'customer', 0, 0, -1, empty($arrayfields['s.name_alias']['checked']) ? 0 : 1); } print ''; if (!$i) { @@ -1846,8 +1858,8 @@ if ($resql) { } // Alias if (!empty($arrayfields['s.name_alias']['checked'])) { - print ''; - print dol_escape_htmltag((!empty($obj->name_alias) ? $obj->name_alias : '')); + print ''; + print dol_escape_htmltag($companystatic->name_alias); print ''; if (!$i) { $totalarray['nbfield']++; @@ -1903,10 +1915,10 @@ if ($resql) { // Staff if (!empty($arrayfields['staff.code']['checked'])) { print ''; - if (!is_array($staffArray) || count($staffArray) == 0) { - $staffArray = $formcompany->effectif_array(1); + if (!is_array($conf->cache['staff']) || count($conf->cache['staff']) == 0) { + $conf->cache['staff'] = $formcompany->effectif_array(1); } - print $staffArray[$obj->staff_code]; + print $conf->cache['staff'][$obj->staff_code]; print ''; if (!$i) { $totalarray['nbfield']++; @@ -1955,7 +1967,7 @@ if ($resql) { // Amount HT if (!empty($arrayfields['f.total_ht']['checked'])) { - print ''.price($obj->total_ht)."\n"; + print ''.price($obj->total_ht)."\n"; if (!$i) { $totalarray['nbfield']++; } @@ -2085,11 +2097,11 @@ if ($resql) { } if (!empty($arrayfields['f.retained_warranty']['checked'])) { - print ''.(!empty($obj->retained_warranty) ?price($obj->retained_warranty).'%' : ' ').''; + print ''.(!empty($obj->retained_warranty) ? price($obj->retained_warranty).'%' : ' ').''; } if (!empty($arrayfields['dynamount_payed']['checked'])) { - print ''.(!empty($totalpay) ?price($totalpay, 0, $langs) : ' ').''; // TODO Use a denormalized field + print ''.(!empty($totalpay) ? price($totalpay, 0, $langs) : ' ').''; // TODO Use a denormalized field if (!$i) { $totalarray['nbfield']++; } @@ -2116,7 +2128,7 @@ if ($resql) { // Currency if (!empty($arrayfields['f.multicurrency_code']['checked'])) { - print ''.$obj->multicurrency_code.' - '.$langs->trans('Currency'.$obj->multicurrency_code)."\n"; + print ''.dol_escape_htmltag($obj->multicurrency_code).' - '.$langs->trans('Currency'.$obj->multicurrency_code)."\n"; if (!$i) { $totalarray['nbfield']++; } @@ -2194,7 +2206,7 @@ if ($resql) { $totalarray['nbfield']++; } } - // total mark rate + // Total mark rate if (!empty($arrayfields['total_mark_rate']['checked'])) { print ''.(($marginInfo['total_mark_rate'] == '') ? '' : price($marginInfo['total_mark_rate'], null, null, null, null, 2).'%').''; if (!$i) { @@ -2210,7 +2222,7 @@ if ($resql) { print $hookmanager->resPrint; // Date creation if (!empty($arrayfields['f.datec']['checked'])) { - print ''; + print ''; print dol_print_date($db->jdate($obj->date_creation), 'dayhour', 'tzuser'); print ''; if (!$i) { @@ -2219,7 +2231,7 @@ if ($resql) { } // Date modification if (!empty($arrayfields['f.tms']['checked'])) { - print ''; + print ''; print dol_print_date($db->jdate($obj->date_update), 'dayhour', 'tzuser'); print ''; if (!$i) { @@ -2228,7 +2240,7 @@ if ($resql) { } // Date closing if (!empty($arrayfields['f.date_closing']['checked'])) { - print ''; + print ''; print dol_print_date($db->jdate($obj->date_closing), 'dayhour', 'tzuser'); print ''; if (!$i) { diff --git a/htdocs/compta/facture/prelevement.php b/htdocs/compta/facture/prelevement.php index d815fad4ba6..cd34a027651 100644 --- a/htdocs/compta/facture/prelevement.php +++ b/htdocs/compta/facture/prelevement.php @@ -52,8 +52,10 @@ if ($user->socid) { $socid = $user->socid; } +$moreparam = ''; if ($type == 'bank-transfer') { $object = new FactureFournisseur($db); + $moreparam = '&type='.$type; } else { $object = new Facture($db); } @@ -221,7 +223,7 @@ $form = new Form($db); $now = dol_now(); if ($type == 'bank-transfer') { - $title = $langs->trans('InvoiceSupplier')." - ".$langs->trans('CreditTransfer'); + $title = $langs->trans('SupplierInvoice')." - ".$langs->trans('CreditTransfer'); $helpurl = ""; } else { $title = $langs->trans('InvoiceCustomer')." - ".$langs->trans('StandingOrders'); @@ -384,7 +386,7 @@ if ($object->id > 0) { $object->totalpaye = $totalpaye; // To give a chance to dol_banner_tab to use already paid amount to show correct status - dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref, '', 0, '', ''); + dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref, $moreparam, 0, '', ''); print '
    '; print '
    '; diff --git a/htdocs/compta/index.php b/htdocs/compta/index.php index 332f68c1293..c68a686d2bf 100644 --- a/htdocs/compta/index.php +++ b/htdocs/compta/index.php @@ -210,11 +210,11 @@ if (!empty($conf->facture->enabled) && !empty($user->rights->facture->lire)) { print ''; print $tmpinvoice->getNomUrl(1, ''); print ''; - print ''; if ($tmpinvoice->hasDelay()) { + print ''; print img_warning($langs->trans("Late")); + print ''; } - print ''; print ''; $filename = dol_sanitizeFileName($obj->ref); $filedir = $conf->facture->dir_output.'/'.dol_sanitizeFileName($obj->ref); diff --git a/htdocs/compta/paiement.php b/htdocs/compta/paiement.php index b68374b84b9..635727233d3 100644 --- a/htdocs/compta/paiement.php +++ b/htdocs/compta/paiement.php @@ -48,7 +48,7 @@ $paymentnum = GETPOST('num_paiement', 'alpha'); $socid = GETPOST('socid', 'int'); $sortfield = GETPOST('sortfield', 'aZ09comma'); -$sortorder = GETPOST('sortorder', 'alpha'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); $amounts = array(); @@ -726,7 +726,31 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie print ''; // Remain to take or to pay back - print ''.price($sign * $remaintopay).''; + print ''; + print price($sign * $remaintopay); + if (!empty($conf->prelevement->enabled)) { + $numdirectdebitopen = 0; + $totaldirectdebit = 0; + $sql = "SELECT COUNT(pfd.rowid) as nb, SUM(pfd.amount) as amount"; + $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd"; + $sql .= " WHERE fk_facture = ".((int) $objp->facid); + $sql .= " AND pfd.traite = 0"; + $sql .= " AND pfd.ext_payment_id IS NULL"; + + $result_sql = $db->query($sql); + if ($result_sql) { + $obj = $db->fetch_object($result_sql); + $numdirectdebitopen = $obj->nb; + $totaldirectdebit = $obj->amount; + } else { + dol_print_error($db); + } + if ($numdirectdebitopen) { + $langs->load("withdrawals"); + print img_warning($langs->trans("WarningSomeDirectDebitOrdersAlreadyExists", $numdirectdebitopen, price(price2num($totaldirectdebit, 'MT'), 0, $langs, 1, -1, -1, $conf->currency)), '', 'classfortooltip'); + } + } + print ''; //$test= price(price2num($objp->total_ttc - $paiement - $creditnotes - $deposits)); // Amount diff --git a/htdocs/compta/paiement/card.php b/htdocs/compta/paiement/card.php index ab6f0f5e574..93fdd415513 100644 --- a/htdocs/compta/paiement/card.php +++ b/htdocs/compta/paiement/card.php @@ -295,7 +295,7 @@ print ''; if (!empty($conf->banque->enabled)) { if ($object->fk_account > 0) { if ($object->type_code == 'CHQ' && $bankline->fk_bordereau > 0) { - dol_include_once('/compta/paiement/cheque/class/remisecheque.class.php'); + include_once DOL_DOCUMENT_ROOT.'/compta/paiement/cheque/class/remisecheque.class.php'; $bordereau = new RemiseCheque($db); $bordereau->fetch($bankline->fk_bordereau); diff --git a/htdocs/compta/paiement/cheque/list.php b/htdocs/compta/paiement/cheque/list.php index f4d6c9e2686..d12caf36bbe 100644 --- a/htdocs/compta/paiement/cheque/list.php +++ b/htdocs/compta/paiement/cheque/list.php @@ -45,8 +45,8 @@ $search_account = GETPOST('search_account', 'int'); $search_amount = GETPOST('search_amount', 'alpha'); $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; diff --git a/htdocs/compta/paiement/class/paiement.class.php b/htdocs/compta/paiement/class/paiement.class.php index aab54e4ef81..2a8522ab05b 100644 --- a/htdocs/compta/paiement/class/paiement.class.php +++ b/htdocs/compta/paiement/class/paiement.class.php @@ -483,7 +483,7 @@ class Paiement extends CommonObject // Verifier si paiement porte pas sur une facture classee // Si c'est le cas, on refuse la suppression - $billsarray = $this->getBillsArray('fk_statut > 1'); + $billsarray = $this->getBillsArray('f.fk_statut > 1'); if (is_array($billsarray)) { if (count($billsarray)) { $this->error = "ErrorDeletePaymentLinkedToAClosedInvoiceNotPossible"; diff --git a/htdocs/compta/paiement/list.php b/htdocs/compta/paiement/list.php index 0d928cf188f..3732e76b880 100644 --- a/htdocs/compta/paiement/list.php +++ b/htdocs/compta/paiement/list.php @@ -71,8 +71,8 @@ $search_amount = GETPOST("search_amount", 'alpha'); // alpha because we must be $search_status = GETPOST('search_status', 'intcomma'); $limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { @@ -340,7 +340,6 @@ print ''; print ''; print ''; print ''; -print ''; print ''; print_barre_liste($langs->trans("ReceivedCustomersPayments"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, 'bill', 0, '', '', $limit, 0, 0, 1); diff --git a/htdocs/compta/paymentbybanktransfer/index.php b/htdocs/compta/paymentbybanktransfer/index.php index b939c59a053..63cd091652a 100644 --- a/htdocs/compta/paymentbybanktransfer/index.php +++ b/htdocs/compta/paymentbybanktransfer/index.php @@ -43,6 +43,8 @@ if ($user->socid) { } $result = restrictedArea($user, 'paymentbybanktransfer', '', ''); +$usercancreate = $user->rights->paymentbybanktransfer->create; + /* * Actions @@ -62,7 +64,12 @@ if (prelevement_check_config('bank-transfer') < 0) { setEventMessages($langs->trans("ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv("PaymentByBankTransfer")), null, 'errors'); } -print load_fiche_titre($langs->trans("SuppliersStandingOrdersArea")); +$newcardbutton = ''; +if ($usercancreate) { + $newcardbutton .= dolGetButtonTitle($langs->trans('NewStandingOrder'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/compta/prelevement/create.php?type=bank-transfer'); +} + +print load_fiche_titre($langs->trans("SuppliersStandingOrdersArea"), $newcardbutton); print '
    '; diff --git a/htdocs/compta/prelevement/card.php b/htdocs/compta/prelevement/card.php index 2dce916af2f..3812d72f405 100644 --- a/htdocs/compta/prelevement/card.php +++ b/htdocs/compta/prelevement/card.php @@ -99,22 +99,7 @@ if (empty($reshook)) { } } - // Seems to not be used and replaced with $action == 'infocredit' - if ($action == 'confirm_credite' && GETPOST('confirm', 'alpha') == 'yes') { - if ($object->statut == 2) { - $res = -1; - setEventMessages('WithdrawalCantBeCreditedTwice', array(), 'errors'); - } else { - $res = $object->set_credite(); - } - - if ($res >= 0) { - header("Location: card.php?id=".$id); - exit; - } - } - - if ($action == 'infotrans' && $user->rights->prelevement->bons->send) { + if ($action == 'infotrans' && (($user->rights->prelevement->bons->send && $object->type != 'bank-transfer') || ($user->rights->paymentbybanktransfer->send && $object->type == 'bank-transfer'))) { require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $dt = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int')); @@ -147,10 +132,10 @@ if (empty($reshook)) { } // Set direct debit order to credited, create payment and close invoices - if ($action == 'infocredit' && $user->rights->prelevement->bons->credit) { + if ($action == 'infocredit' && (($user->rights->prelevement->bons->credit && $object->type != 'bank-transfer') || ($user->rights->paymentbybanktransfer->debit && $object->type == 'bank-transfer'))) { $dt = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int')); - if ($object->statut == 2) { + if (($object->type != 'bank-transfer' && $object->statut == BonPrelevement::STATUS_CREDITED) || ($object->type == 'bank-transfer' && $object->statut == BonPrelevement::STATUS_DEBITED)) { $error = 1; setEventMessages('WithdrawalCantBeCreditedTwice', array(), 'errors'); } else { @@ -181,12 +166,6 @@ if ($id > 0 || $ref) { print '
    '.$object->getErrorString(GETPOST('error', 'alpha')).'
    '; } - /*if ($action == 'credite') - { - print $form->formconfirm("card.php?id=".$object->id,$langs->trans("ClassCredited"),$langs->trans("ClassCreditedConfirm"),"confirm_credite",'',1,1); - - }*/ - $linkback = ''.$langs->trans("BackToList").''; dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref'); @@ -303,6 +282,7 @@ if ($id > 0 || $ref) { } if (!empty($object->date_trans) && $object->date_credit == 0 && $user->rights->prelevement->bons->credit && $action == 'setcredited') { + $btnLabel = ($object->type == 'bank-transfer') ? $langs->trans("ClassDebited") : $langs->trans("ClassCredited"); print '
    '; print ''; print ''; @@ -314,25 +294,27 @@ if ($id > 0 || $ref) { print ''; print ''; print '
    '.$langs->trans("ThisWillAlsoAddPaymentOnInvoice").'
    '; - print '
    '; + print '
    '; print '
    '; print '
    '; } - // Actions if ($action != 'settransmitted' && $action != 'setcredited') { print "\n".'
    '."\n"; - if (empty($object->date_trans) && $user->rights->prelevement->bons->send) { - print ''.$langs->trans("SetToStatusSent").''; + if (empty($object->date_trans)) { + if ($object->type == 'bank-transfer') print dolGetButtonAction($langs->trans("SetToStatusSent"), '', 'default', 'card.php?action=settransmitted&token='.newToken().'&id='.$object->id, '', $user->rights->paymentbybanktransfer->send); + else print dolGetButtonAction($langs->trans("SetToStatusSent"), '', 'default', 'card.php?action=settransmitted&token='.newToken().'&id='.$object->id, '', $user->rights->prelevement->bons->send); } if (!empty($object->date_trans) && $object->date_credit == 0) { - print ''.$langs->trans("ClassCredited").''; + if ($object->type == 'bank-transfer') print dolGetButtonAction($langs->trans("ClassDebited"), '', 'default', 'card.php?action=setcredited&token='.newToken().'&id='.$object->id, '', $user->rights->paymentbybanktransfer->debit); + else print dolGetButtonAction($langs->trans("ClassCredited"), '', 'default', 'card.php?action=setcredited&token='.newToken().'&id='.$object->id, '', $user->rights->prelevement->bons->credit); } - print ''.$langs->trans("Delete").''; + if ($object->type == 'bank-transfer') print dolGetButtonAction($langs->trans("Delete"), '', 'delete', 'card.php?action=delete&token='.newToken().'&id='.$object->id, '', $user->rights->paymentbybanktransfer->create); + else print dolGetButtonAction($langs->trans("Delete"), '', 'delete', 'card.php?action=delete&token='.newToken().'&id='.$object->id, '', $user->rights->prelevement->bons->creer); print '
    '; } @@ -457,6 +439,8 @@ if ($id > 0 || $ref) { } if ($num > 0) { + $total = price2num($total, 'MT'); + print ''; print ''.$langs->trans("Total").''; print ' '; diff --git a/htdocs/compta/prelevement/class/bonprelevement.class.php b/htdocs/compta/prelevement/class/bonprelevement.class.php index 68b924e2e4d..e5697ab3cb3 100644 --- a/htdocs/compta/prelevement/class/bonprelevement.class.php +++ b/htdocs/compta/prelevement/class/bonprelevement.class.php @@ -332,74 +332,6 @@ class BonPrelevement extends CommonObject } } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Set credite and set status of linked invoices. Still used ?? - * - * @return int <0 if KO, >=0 if OK - */ - public function set_credite() - { - // phpcs:enable - global $user, $conf; - - $error = 0; - - if ($this->db->begin()) { - $sql = " UPDATE ".MAIN_DB_PREFIX."prelevement_bons"; - $sql .= " SET statut = ".self::STATUS_TRANSFERED; - $sql .= " WHERE rowid = ".((int) $this->id); - $sql .= " AND entity = ".((int) $conf->entity); - - $result = $this->db->query($sql); - if (!$result) { - dol_syslog(get_class($this)."::set_credite Erreur 1"); - $error++; - } - - if (!$error) { - $facs = array(); - $facs = $this->getListInvoices(); - - $num = count($facs); - for ($i = 0; $i < $num; $i++) { - /* Tag invoice as paid */ - dol_syslog(get_class($this)."::set_credite set_paid fac ".$facs[$i]); - $fac = new Facture($this->db); - $fac->fetch($facs[$i]); - $result = $fac->setPaid($user); - } - } - - if (!$error) { - $sql = " UPDATE ".MAIN_DB_PREFIX."prelevement_lignes"; - $sql .= " SET statut = 2"; - $sql .= " WHERE fk_prelevement_bons = ".((int) $this->id); - - if (!$this->db->query($sql)) { - dol_syslog(get_class($this)."::set_credite Erreur 1"); - $error++; - } - } - - /* - * End of procedure - */ - if (!$error) { - $this->db->commit(); - return 0; - } else { - $this->db->rollback(); - dol_syslog(get_class($this)."::set_credite ROLLBACK "); - - return -1; - } - } else { - dol_syslog(get_class($this)."::set_credite Ouverture transaction SQL impossible "); - return -2; - } - } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** * Set direct debit or credit transfer order to "paid" status. @@ -1551,7 +1483,7 @@ class BonPrelevement extends CommonObject fputs($this->file, ' '.$i.''.$CrLf); fputs($this->file, ' '.$this->total.''.$CrLf); fputs($this->file, ' '.$CrLf); - fputs($this->file, ' '.dolEscapeXML(strtoupper($this->raison_sociale)).''.$CrLf); + fputs($this->file, ' '.dolEscapeXML(strtoupper(dol_string_unaccent($this->raison_sociale))).''.$CrLf); fputs($this->file, ' '.$CrLf); fputs($this->file, ' '.$CrLf); fputs($this->file, ' '.$CrLf); @@ -1667,7 +1599,7 @@ class BonPrelevement extends CommonObject fputs($this->file, ' '.$i.''.$CrLf); fputs($this->file, ' '.$this->total.''.$CrLf); fputs($this->file, ' '.$CrLf); - fputs($this->file, ' '.dolEscapeXML(strtoupper($this->raison_sociale)).''.$CrLf); + fputs($this->file, ' '.dolEscapeXML(strtoupper(dol_string_unaccent($this->raison_sociale))).''.$CrLf); fputs($this->file, ' '.$CrLf); fputs($this->file, ' '.$CrLf); fputs($this->file, ' '.$CrLf); @@ -1917,16 +1849,16 @@ class BonPrelevement extends CommonObject $XML_DEBITOR .= ' '.$CrLf; $XML_DEBITOR .= ' '.$CrLf; $XML_DEBITOR .= ' '.$CrLf; - $XML_DEBITOR .= ' '.dolEscapeXML(strtoupper($row_nom)).''.$CrLf; + $XML_DEBITOR .= ' '.dolEscapeXML(strtoupper(dol_string_unaccent($row_nom))).''.$CrLf; $XML_DEBITOR .= ' '.$CrLf; $XML_DEBITOR .= ' '.$row_country_code.''.$CrLf; $addressline1 = strtr($row_address, array(CHR(13) => ", ", CHR(10) => "")); $addressline2 = strtr($row_zip.(($row_zip && $row_town) ? ' ' : ''.$row_town), array(CHR(13) => ", ", CHR(10) => "")); if (trim($addressline1)) { - $XML_DEBITOR .= ' '.dolEscapeXML(dol_trunc($addressline1, 70, 'right', 'UTF-8', 1)).''.$CrLf; + $XML_DEBITOR .= ' '.dolEscapeXML(dol_trunc(dol_string_unaccent($addressline1), 70, 'right', 'UTF-8', 1)).''.$CrLf; } if (trim($addressline2)) { - $XML_DEBITOR .= ' '.dolEscapeXML(dol_trunc($addressline2, 70, 'right', 'UTF-8', 1)).''.$CrLf; + $XML_DEBITOR .= ' '.dolEscapeXML(dol_trunc(dol_string_unaccent($addressline2), 70, 'right', 'UTF-8', 1)).''.$CrLf; } $XML_DEBITOR .= ' '.$CrLf; $XML_DEBITOR .= ' '.$CrLf; @@ -1968,16 +1900,16 @@ class BonPrelevement extends CommonObject $XML_CREDITOR .= ' '.$CrLf; $XML_CREDITOR .= ' '.$CrLf; $XML_CREDITOR .= ' '.$CrLf; - $XML_CREDITOR .= ' '.dolEscapeXML(strtoupper($row_nom)).''.$CrLf; + $XML_CREDITOR .= ' '.dolEscapeXML(strtoupper(dol_string_unaccent($row_nom))).''.$CrLf; $XML_CREDITOR .= ' '.$CrLf; $XML_CREDITOR .= ' '.$row_country_code.''.$CrLf; $addressline1 = strtr($row_address, array(CHR(13) => ", ", CHR(10) => "")); $addressline2 = strtr($row_zip.(($row_zip && $row_town) ? ' ' : ''.$row_town), array(CHR(13) => ", ", CHR(10) => "")); if (trim($addressline1)) { - $XML_CREDITOR .= ' '.dolEscapeXML(dol_trunc($addressline1, 70, 'right', 'UTF-8', 1)).''.$CrLf; + $XML_CREDITOR .= ' '.dolEscapeXML(dol_trunc(dol_string_unaccent($addressline1), 70, 'right', 'UTF-8', 1)).''.$CrLf; } if (trim($addressline2)) { - $XML_CREDITOR .= ' '.dolEscapeXML(dol_trunc($addressline2, 70, 'right', 'UTF-8', 1)).''.$CrLf; + $XML_CREDITOR .= ' '.dolEscapeXML(dol_trunc(dol_string_unaccent($addressline2), 70, 'right', 'UTF-8', 1)).''.$CrLf; } $XML_CREDITOR .= ' '.$CrLf; $XML_CREDITOR .= ' '.$CrLf; @@ -2140,16 +2072,16 @@ class BonPrelevement extends CommonObject $XML_SEPA_INFO .= ' '.$CrLf; $XML_SEPA_INFO .= ' '.$dateTime_ETAD.''.$CrLf; $XML_SEPA_INFO .= ' '.$CrLf; - $XML_SEPA_INFO .= ' '.dolEscapeXML(strtoupper($this->raison_sociale)).''.$CrLf; + $XML_SEPA_INFO .= ' '.dolEscapeXML(strtoupper(dol_string_unaccent($this->raison_sociale))).''.$CrLf; $XML_SEPA_INFO .= ' '.$CrLf; $XML_SEPA_INFO .= ' '.$country[1].''.$CrLf; $addressline1 = strtr($configuration->global->MAIN_INFO_SOCIETE_ADDRESS, array(CHR(13) => ", ", CHR(10) => "")); $addressline2 = strtr($configuration->global->MAIN_INFO_SOCIETE_ZIP.(($configuration->global->MAIN_INFO_SOCIETE_ZIP || ' '.$configuration->global->MAIN_INFO_SOCIETE_TOWN) ? ' ' : '').$configuration->global->MAIN_INFO_SOCIETE_TOWN, array(CHR(13) => ", ", CHR(10) => "")); if ($addressline1) { - $XML_SEPA_INFO .= ' '.dolEscapeXML($addressline1).''.$CrLf; + $XML_SEPA_INFO .= ' '.dolEscapeXML(dol_trunc(dol_string_unaccent($addressline1), 70, 'right', 'UTF-8', 1)).''.$CrLf; } if ($addressline2) { - $XML_SEPA_INFO .= ' '.dolEscapeXML($addressline2).''.$CrLf; + $XML_SEPA_INFO .= ' '.dolEscapeXML(dol_trunc(dol_string_unaccent($addressline2), 70, 'right', 'UTF-8', 1)).''.$CrLf; } $XML_SEPA_INFO .= ' '.$CrLf; $XML_SEPA_INFO .= ' '.$CrLf; @@ -2164,11 +2096,11 @@ class BonPrelevement extends CommonObject $XML_SEPA_INFO .= ' '.$CrLf; $XML_SEPA_INFO .= ' '.$CrLf; /* $XML_SEPA_INFO .= ' '.$CrLf; - $XML_SEPA_INFO .= ' '.$this->raison_sociale.''.$CrLf; + $XML_SEPA_INFO .= ' '.dolEscapeXML(strtoupper(dol_string_unaccent($this->raison_sociale))).''.$CrLf; $XML_SEPA_INFO .= ' '.$CrLf; $XML_SEPA_INFO .= ' '.$country[1].''.$CrLf; - $XML_SEPA_INFO .= ' '.$conf->global->MAIN_INFO_SOCIETE_ADDRESS.''.$CrLf; - $XML_SEPA_INFO .= ' '.$conf->global->MAIN_INFO_SOCIETE_ZIP.' '.$conf->global->MAIN_INFO_SOCIETE_TOWN.''.$CrLf; + $XML_SEPA_INFO .= ' '.dolEscapeXML(dol_string_unaccent($conf->global->MAIN_INFO_SOCIETE_ADDRESS.'').$CrLf; + $XML_SEPA_INFO .= ' '.dolEscapeXML(dol_string_unaccent($conf->global->MAIN_INFO_SOCIETE_ZIP.' '.$conf->global->MAIN_INFO_SOCIETE_TOWN).''.$CrLf; $XML_SEPA_INFO .= ' '.$CrLf; $XML_SEPA_INFO .= ' '.$CrLf;*/ $XML_SEPA_INFO .= ' SLEV'.$CrLf; // Field "Responsible of fees". Must be SLEV @@ -2206,16 +2138,16 @@ class BonPrelevement extends CommonObject */ $XML_SEPA_INFO .= ' '.dol_print_date($dateTime_ETAD, 'dayrfc').''.$CrLf; $XML_SEPA_INFO .= ' '.$CrLf; - $XML_SEPA_INFO .= ' '.dolEscapeXML(strtoupper($this->raison_sociale)).''.$CrLf; + $XML_SEPA_INFO .= ' '.dolEscapeXML(strtoupper(dol_string_unaccent($this->raison_sociale))).''.$CrLf; $XML_SEPA_INFO .= ' '.$CrLf; $XML_SEPA_INFO .= ' '.$country[1].''.$CrLf; $addressline1 = strtr($configuration->global->MAIN_INFO_SOCIETE_ADDRESS, array(CHR(13) => ", ", CHR(10) => "")); $addressline2 = strtr($configuration->global->MAIN_INFO_SOCIETE_ZIP.(($configuration->global->MAIN_INFO_SOCIETE_ZIP || ' '.$configuration->global->MAIN_INFO_SOCIETE_TOWN) ? ' ' : '').$configuration->global->MAIN_INFO_SOCIETE_TOWN, array(CHR(13) => ", ", CHR(10) => "")); if ($addressline1) { - $XML_SEPA_INFO .= ' '.dolEscapeXML($addressline1).''.$CrLf; + $XML_SEPA_INFO .= ' '.dolEscapeXML(dol_trunc(dol_string_unaccent($addressline1), 70, 'right', 'UTF-8', 1)).''.$CrLf; } if ($addressline2) { - $XML_SEPA_INFO .= ' '.dolEscapeXML($addressline2).''.$CrLf; + $XML_SEPA_INFO .= ' '.dolEscapeXML(dol_trunc(dol_string_unaccent($addressline2), 70, 'right', 'UTF-8', 1)).''.$CrLf; } $XML_SEPA_INFO .= ' '.$CrLf; $XML_SEPA_INFO .= ' '.$CrLf; @@ -2230,11 +2162,11 @@ class BonPrelevement extends CommonObject $XML_SEPA_INFO .= ' '.$CrLf; $XML_SEPA_INFO .= ' '.$CrLf; /* $XML_SEPA_INFO .= ' '.$CrLf; - $XML_SEPA_INFO .= ' '.$this->raison_sociale.''.$CrLf; + $XML_SEPA_INFO .= ' '.dolEscapeXML(strtoupper(dol_string_unaccent($this->raison_sociale))).''.$CrLf; $XML_SEPA_INFO .= ' '.$CrLf; $XML_SEPA_INFO .= ' '.$country[1].''.$CrLf; - $XML_SEPA_INFO .= ' '.$conf->global->MAIN_INFO_SOCIETE_ADDRESS.''.$CrLf; - $XML_SEPA_INFO .= ' '.$conf->global->MAIN_INFO_SOCIETE_ZIP.' '.$conf->global->MAIN_INFO_SOCIETE_TOWN.''.$CrLf; + $XML_SEPA_INFO .= ' '.dolEscapeXML(dol_string_unaccent($conf->global->MAIN_INFO_SOCIETE_ADDRESS).''.$CrLf; + $XML_SEPA_INFO .= ' '.dolEscapeXML(dol_string_unaccent($conf->global->MAIN_INFO_SOCIETE_ZIP.' '.$conf->global->MAIN_INFO_SOCIETE_TOWN).''.$CrLf; $XML_SEPA_INFO .= ' '.$CrLf; $XML_SEPA_INFO .= ' '.$CrLf;*/ $XML_SEPA_INFO .= ' SLEV'.$CrLf; // Field "Responsible of fees". Must be SLEV @@ -2368,4 +2300,78 @@ class BonPrelevement extends CommonObject return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status], '', $statusType, $mode); } + + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Load indicators for dashboard (this->nbtodo and this->nbtodolate) + * + * @param User $user Objet user + * @param string $mode Mode 'direct_debit' or 'credit_transfer' + * @return WorkboardResponse|int <0 if KO, WorkboardResponse if OK + */ + public function load_board($user, $mode) + { + // phpcs:enable + global $conf, $langs; + + if ($user->socid) { + return -1; // protection pour eviter appel par utilisateur externe + } + + /* + if ($mode == 'direct_debit') { + $sql = "SELECT b.rowid, f.datedue as datefin"; + $sql .= " FROM ".MAIN_DB_PREFIX."facture as f"; + $sql .= " WHERE f.entity IN (".getEntity('facture').")"; + $sql .= " AND f.total_ttc > 0"; + } else { + $sql = "SELECT b.rowid, f.datedue as datefin"; + $sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f"; + $sql .= " WHERE f.entity IN (".getEntity('facture_fourn').")"; + $sql .= " AND f.total_ttc > 0"; + } + + $resql = $this->db->query($sql); + if ($resql) { + $langs->load("banks"); + $now = dol_now(); + + $response = new WorkboardResponse(); + if ($mode == 'direct_debit') { + $response->warning_delay = $conf->prelevement->warning_delay / 60 / 60 / 24; + $response->label = $langs->trans("PendingDirectDebitToComplete"); + $response->labelShort = $langs->trans("PendingDirectDebitToCompleteShort"); + $response->url = DOL_URL_ROOT.'/compta/prelevement/index.php?leftmenu=checks&mainmenu=bank'; + } else { + $response->warning_delay = $conf->paymentbybanktransfer->warning_delay / 60 / 60 / 24; + $response->label = $langs->trans("PendingCreditTransferToComplete"); + $response->labelShort = $langs->trans("PendingCreditTransferToCompleteShort"); + $response->url = DOL_URL_ROOT.'/compta/paymentbybanktransfer/index.php?leftmenu=checks&mainmenu=bank'; + } + $response->img = img_object('', "payment"); + + while ($obj = $this->db->fetch_object($resql)) { + $response->nbtodo++; + + if ($this->db->jdate($obj->datefin) < ($now - $conf->withdraw->warning_delay)) { + $response->nbtodolate++; + } + } + + $response->nbtodo = 0; + $response->nbtodolate = 0; + // Return workboard only if quantity is not 0 + if ($response->nbtodo) { + return $response; + } else { + return 0; + } + } else { + dol_print_error($this->db); + $this->error = $this->db->error(); + return -1; + } + */ + return 0; + } } diff --git a/htdocs/compta/prelevement/demandes.php b/htdocs/compta/prelevement/demandes.php index 5ac0c07ede7..86f1bcf583c 100644 --- a/htdocs/compta/prelevement/demandes.php +++ b/htdocs/compta/prelevement/demandes.php @@ -49,8 +49,8 @@ $search_societe = GETPOST('search_societe', 'alpha'); // Load variable for pagination $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1 || GETPOST('button_search', 'alpha') || GETPOST('button_removefilter', 'alpha') || (empty($toselect) && $massaction === '0')) { $page = 0; diff --git a/htdocs/compta/prelevement/index.php b/htdocs/compta/prelevement/index.php index 92ae9b827e0..4aef7e8b9e4 100644 --- a/htdocs/compta/prelevement/index.php +++ b/htdocs/compta/prelevement/index.php @@ -43,6 +43,8 @@ if ($user->socid) { } $result = restrictedArea($user, 'prelevement', '', 'bons'); +$usercancreate = $user->rights->prelevement->bons->creer; + /* * Actions @@ -62,7 +64,12 @@ if (prelevement_check_config() < 0) { setEventMessages($langs->trans("ErrorModuleSetupNotComplete", $langs->transnoentitiesnoconv("PaymentByDirectDebit")), null, 'errors'); } -print load_fiche_titre($langs->trans("CustomersStandingOrdersArea")); +$newcardbutton = ''; +if ($usercancreate) { + $newcardbutton .= dolGetButtonTitle($langs->trans('NewStandingOrder'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/compta/prelevement/create.php?type='); +} + +print load_fiche_titre($langs->trans("CustomersStandingOrdersArea"), $newcardbutton); print '
    '; diff --git a/htdocs/compta/prelevement/orders_list.php b/htdocs/compta/prelevement/orders_list.php index be7c72907fd..c80acb39f8e 100644 --- a/htdocs/compta/prelevement/orders_list.php +++ b/htdocs/compta/prelevement/orders_list.php @@ -212,7 +212,7 @@ if ($result) { print ''.price($obj->amount)."\n"; print ''; - print $bon->LibStatut($obj->statut, 3); + print $bon->LibStatut($obj->statut, 5); print ''; print ''."\n"; diff --git a/htdocs/compta/resultat/clientfourn.php b/htdocs/compta/resultat/clientfourn.php index b5aca49aaae..342360bd454 100644 --- a/htdocs/compta/resultat/clientfourn.php +++ b/htdocs/compta/resultat/clientfourn.php @@ -49,11 +49,11 @@ $date_startyear = GETPOST('date_startyear', 'int'); $date_endmonth = GETPOST('date_endmonth', 'int'); $date_endday = GETPOST('date_endday', 'int'); $date_endyear = GETPOST('date_endyear', 'int'); -$showaccountdetail = GETPOST('showaccountdetail', 'aZ09') ?GETPOST('showaccountdetail', 'aZ09') : 'no'; +$showaccountdetail = GETPOST('showaccountdetail', 'aZ09') ? GETPOST('showaccountdetail', 'aZ09') : 'yes'; $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; @@ -210,9 +210,9 @@ if ($modecompta == "CREANCES-DETTES") { $calcmode .= '
    ('.$langs->trans("SeeReportInDueDebtMode", '{s1}', '{s2}').')'; $calcmode = str_replace(array('{s1}', '{s2}'), array('', ''), $calcmode); $period = $form->selectDate($date_start, 'date_start', 0, 0, 0, '', 1, 0).' - '.$form->selectDate($date_end, 'date_end', 0, 0, 0, '', 1, 0); - $arraylist = array('no'=>$langs->trans("No"), 'yes'=>$langs->trans("AccountWithNonZeroValues"), 'all'=>$langs->trans("All")); + $arraylist = array('no'=>$langs->trans("CustomerCode"), 'yes'=>$langs->trans("AccountWithNonZeroValues"), 'all'=>$langs->trans("All")); $period .= '     '.$langs->trans("DetailByAccount").' '.$form->selectarray('showaccountdetail', $arraylist, $showaccountdetail, 0); - $periodlink = ($year_start ? "".img_previous()." ".img_next()."" : ""); + $periodlink = ($year_start ? "".img_previous()." ".img_next()."" : ""); $description = $langs->trans("RulesResultBookkeepingPredefined"); $description .= ' ('.$langs->trans("SeePageForSetup", DOL_URL_ROOT.'/accountancy/admin/account.php?mainmenu=accountancy&leftmenu=accountancy_admin', $langs->transnoentitiesnoconv("Accountancy").' / '.$langs->transnoentitiesnoconv("Setup").' / '.$langs->transnoentitiesnoconv("Chartofaccounts")).')'; $builddate = dol_now(); @@ -221,7 +221,7 @@ if ($modecompta == "CREANCES-DETTES") { $hselected = 'report'; -report_header($name, '', $period, $periodlink, $description, $builddate, $exportlink, array('modecompta'=>$modecompta), $calcmode); +report_header($name, '', $period, $periodlink, $description, $builddate, $exportlink, array('modecompta'=>$modecompta, 'showaccountdetail'=>$showaccountdetail), $calcmode); if (!empty($conf->accounting->enabled) && $modecompta != 'BOOKKEEPING') { print info_admin($langs->trans("WarningReportNotReliable"), 0, 0, 1); @@ -280,7 +280,10 @@ if ($modecompta == 'BOOKKEEPING') { $charofaccountstring = $conf->global->CHARTOFACCOUNTS; $charofaccountstring = dol_getIdFromCode($db, $conf->global->CHARTOFACCOUNTS, 'accounting_system', 'rowid', 'pcg_version'); - $sql = "SELECT f.thirdparty_code as name, -1 as socid, aa.pcg_type, SUM(f.credit - f.debit) as amount"; + $sql = "SELECT -1 as socid, aa.pcg_type, SUM(f.credit - f.debit) as amount"; + if ($showaccountdetail == 'no') { + $sql .= ", f.thirdparty_code as name"; + } $sql .= " FROM ".MAIN_DB_PREFIX."accounting_bookkeeping as f"; $sql .= ", ".MAIN_DB_PREFIX."accounting_account as aa"; $sql .= " WHERE f.numero_compte = aa.account_number"; @@ -290,11 +293,13 @@ if ($modecompta == 'BOOKKEEPING') { if (!empty($date_start) && !empty($date_end)) { $sql .= " AND f.doc_date >= '".$db->idate($date_start)."' AND f.doc_date <= '".$db->idate($date_end)."'"; } - $sql .= " GROUP BY pcg_type DESC, name, socid"; + $sql .= " GROUP BY pcg_type DESC"; + if ($showaccountdetail == 'no') { + $sql .= ", name, socid"; // group by "accounting group" (INCOME/EXPENSE), then "customer". + } $sql .= $db->order($sortfield, $sortorder); $oldpcgtype = ''; - $oldpcgsubtype = ''; dol_syslog("get bookkeeping entries", LOG_DEBUG); $result = $db->query($sql); @@ -305,16 +310,30 @@ if ($modecompta == 'BOOKKEEPING') { while ($i < $num) { $objp = $db->fetch_object($result); - if ($objp->pcg_type != $oldpcgtype) { - print ''.$objp->pcg_type.''; - $oldpcgtype = $objp->pcg_type; + if ($showaccountdetail == 'no') { + if ($objp->pcg_type != $oldpcgtype) { + print ''.$objp->pcg_type.''; + $oldpcgtype = $objp->pcg_type; + } } - print ''; - print ' '; - print ''.$objp->pcg_type.($objp->name ? ' ('.$objp->name.')' : '')."\n"; - print ''.price($objp->amount)."\n"; - print "\n"; + if ($showaccountdetail == 'no') { + print ''; + print ''; + print ''; + print $objp->pcg_type; + print ($objp->name ? ' ('.$objp->name.')' : ' ('.$langs->trans("Unknown").')'); + print "\n"; + print ''.price($objp->amount)."\n"; + print "\n"; + } else { + print ''; + print ''; + print $objp->pcg_type; + print "\n"; + print ''.price($objp->amount)."\n"; + print "\n"; + } $total_ht += (isset($objp->amount) ? $objp->amount : 0); $total_ttc += (isset($objp->amount) ? $objp->amount : 0); @@ -333,7 +352,7 @@ if ($modecompta == 'BOOKKEEPING') { if ($showaccountdetail != 'no') { $tmppredefinedgroupwhere = "pcg_type = '".$db->escape($objp->pcg_type)."'"; $tmppredefinedgroupwhere .= " AND fk_pcg_version = '".$db->escape($charofaccountstring)."'"; - //$tmppredefinedgroupwhere.= " AND thirdparty_code = '".$db->escape($objp->name)."'"; + //$tmppredefinedgroupwhere .= " AND thirdparty_code = '".$db->escape($objp->name)."'"; // Get cpts of category/group $cpts = $AccCat->getCptsCat(0, $tmppredefinedgroupwhere); @@ -361,7 +380,7 @@ if ($modecompta == 'BOOKKEEPING') { $i++; } } else { - print ''.$langs->trans("NoRecordFound").''; + print ''.$langs->trans("NoRecordFound").''; } } else { dol_print_error($db); @@ -418,12 +437,15 @@ if ($modecompta == 'BOOKKEEPING') { while ($i < $num) { $objp = $db->fetch_object($result); - print ' '; + print ''; + print ' '; print "".$langs->trans("Bills").' '.$objp->name."\n"; + print ''; if ($modecompta == 'CREANCES-DETTES') { - print ''.price($objp->amount_ht)."\n"; + print ''.price($objp->amount_ht).""; } + print "\n"; print ''.price($objp->amount_ttc)."\n"; $total_ht += (isset($objp->amount_ht) ? $objp->amount_ht : 0); @@ -463,12 +485,15 @@ if ($modecompta == 'BOOKKEEPING') { $objp = $db->fetch_object($result); - print ' '; + print ''; + print ' '; print "".$langs->trans("Bills")." ".$langs->trans("Other")." (".$langs->trans("PaymentsNotLinkedToInvoice").")\n"; + print ''; if ($modecompta == 'CREANCES-DETTES') { - print ''.price($objp->amount_ht)."\n"; + print ''.price($objp->amount_ht)."\n"; } + print ''; print ''.price($objp->amount_ttc)."\n"; $total_ht += (isset($objp->amount_ht) ? $objp->amount_ht : 0); @@ -485,7 +510,8 @@ if ($modecompta == 'BOOKKEEPING') { } if ($total_ttc == 0) { - print ' '; + print ''; + print ' '; print ''.$langs->trans("None").''; print ''; } @@ -494,10 +520,14 @@ if ($modecompta == 'BOOKKEEPING') { $total_ttc_income += $total_ttc; print ''; + print ''; + print ''; + print ''; if ($modecompta == 'CREANCES-DETTES') { - print ''.price($total_ht).''; + print price($total_ht); } - print ''.price($total_ttc).''; + print ''; + print ''.price($total_ttc).''; print ''; /* @@ -554,13 +584,16 @@ if ($modecompta == 'BOOKKEEPING') { $subtotal_ht += $obj->amount; $subtotal_ttc += $obj->amount; - print ' '; + print ''; + print ' '; print "".$langs->trans("Donation")." name."&search_name=".$obj->firstname." ".$obj->lastname."\">".$obj->name." ".$obj->firstname." ".$obj->lastname."\n"; + print ''; if ($modecompta == 'CREANCES-DETTES') { - print ''.price($obj->amount).''; + print ''.price($obj->amount).''; } + print ''; print ''.price($obj->amount).''; print ''; $i++; @@ -578,10 +611,14 @@ if ($modecompta == 'BOOKKEEPING') { $total_ttc_income += $subtotal_ttc; print ''; + print ''; + print ''; + print ''; if ($modecompta == 'CREANCES-DETTES') { - print ''.price($subtotal_ht).''; + print price($subtotal_ht); } - print ''.price($subtotal_ttc).''; + print ''; + print ''.price($subtotal_ttc).''; print ''; } @@ -636,12 +673,15 @@ if ($modecompta == 'BOOKKEEPING') { while ($i < $num) { $objp = $db->fetch_object($result); - print ' '; - print "".$langs->trans("Bills")." socid."\">".$objp->name."\n"; + print ''; + print ' '; + print "".$langs->trans("Bills").' '.$objp->name.''."\n"; + print ''; if ($modecompta == 'CREANCES-DETTES') { - print ''.price(-$objp->amount_ht)."\n"; + print ''.price(-$objp->amount_ht).""; } + print "\n"; print ''.price(-$objp->amount_ttc)."\n"; $total_ht -= (isset($objp->amount_ht) ? $objp->amount_ht : 0); @@ -653,7 +693,8 @@ if ($modecompta == 'BOOKKEEPING') { $i++; } } else { - print ' '; + print ''; + print ' '; print ''.$langs->trans("None").''; print ''; } @@ -667,10 +708,14 @@ if ($modecompta == 'BOOKKEEPING') { $total_ttc_outcome += $subtotal_ttc; print ''; + print ''; + print ''; + print ''; if ($modecompta == 'CREANCES-DETTES') { - print ''.price(-$subtotal_ht).''; + print price(-$subtotal_ht); } - print ''.price(-$subtotal_ttc).''; + print ''; + print ''.price(-$subtotal_ttc).''; print ''; @@ -681,7 +726,7 @@ if ($modecompta == 'BOOKKEEPING') { print ''.$langs->trans("SocialContributionsNondeductibles").''; if ($modecompta == 'CREANCES-DETTES') { - $sql = "SELECT c.id, c.libelle as label, sum(cs.amount) as amount"; + $sql = "SELECT c.id, c.libelle as label, c.accountancy_code, sum(cs.amount) as amount"; $sql .= " FROM ".MAIN_DB_PREFIX."c_chargesociales as c"; $sql .= ", ".MAIN_DB_PREFIX."chargesociales as cs"; $sql .= " WHERE cs.fk_type = c.id"; @@ -690,7 +735,7 @@ if ($modecompta == 'BOOKKEEPING') { $sql .= " AND cs.date_ech >= '".$db->idate($date_start)."' AND cs.date_ech <= '".$db->idate($date_end)."'"; } } elseif ($modecompta == 'RECETTES-DEPENSES') { - $sql = "SELECT c.id, c.libelle as label, sum(p.amount) as amount"; + $sql = "SELECT c.id, c.libelle as label, c.accountancy_code, sum(p.amount) as amount"; $sql .= " FROM ".MAIN_DB_PREFIX."c_chargesociales as c"; $sql .= ", ".MAIN_DB_PREFIX."chargesociales as cs"; $sql .= ", ".MAIN_DB_PREFIX."paiementcharge as p"; @@ -702,7 +747,7 @@ if ($modecompta == 'BOOKKEEPING') { } } $sql .= " AND cs.entity = ".$conf->entity; - $sql .= " GROUP BY c.libelle, c.id"; + $sql .= " GROUP BY c.libelle, c.id, c.accountancy_code"; $newsortfield = $sortfield; if ($newsortfield == 's.nom, s.rowid') { $newsortfield = 'c.libelle, c.id'; @@ -732,17 +777,29 @@ if ($modecompta == 'BOOKKEEPING') { $subtotal_ht += $obj->amount; $subtotal_ttc += $obj->amount; - print ' '; - print ''.$obj->label.''; - if ($modecompta == 'CREANCES-DETTES') { - print ''.price(-$obj->amount).''; + $titletoshow = ''; + if ($obj->accountancy_code) { + $titletoshow = $langs->trans("AccountingCode").': '.$obj->accountancy_code; + $tmpaccountingaccount = new AccountingAccount($db); + $tmpaccountingaccount->fetch(0, $obj->accountancy_code, 1); + $titletoshow .= ' - '.$langs->trans("AccountingCategory").': '.$tmpaccountingaccount->pcg_type; } + + print ''; + print ' '; + print 'accountancy_code ? ' title="'.dol_escape_htmltag($titletoshow).'"' : '').'>'.dol_escape_htmltag($obj->label).''; + print ''; + if ($modecompta == 'CREANCES-DETTES') { + print ''.price(-$obj->amount).''; + } + print ''; print ''.price(-$obj->amount).''; print ''; $i++; } } else { - print ' '; + print ''; + print ' '; print ''.$langs->trans("None").''; print ''; } @@ -754,10 +811,14 @@ if ($modecompta == 'BOOKKEEPING') { $total_ttc_outcome += $subtotal_ttc; print ''; + print ''; + print ''; + print ''; if ($modecompta == 'CREANCES-DETTES') { - print ''.price(-$subtotal_ht).''; + print price(-$subtotal_ht); } - print ''.price(-$subtotal_ttc).''; + print ''; + print ''.price(-$subtotal_ttc).''; print ''; @@ -768,7 +829,7 @@ if ($modecompta == 'BOOKKEEPING') { print ''.$langs->trans("SocialContributionsDeductibles").''; if ($modecompta == 'CREANCES-DETTES') { - $sql = "SELECT c.id, c.libelle as label, sum(cs.amount) as amount"; + $sql = "SELECT c.id, c.libelle as label, c.accountancy_code, sum(cs.amount) as amount"; $sql .= " FROM ".MAIN_DB_PREFIX."c_chargesociales as c"; $sql .= ", ".MAIN_DB_PREFIX."chargesociales as cs"; $sql .= " WHERE cs.fk_type = c.id"; @@ -778,7 +839,7 @@ if ($modecompta == 'BOOKKEEPING') { } $sql .= " AND cs.entity = ".$conf->entity; } elseif ($modecompta == 'RECETTES-DEPENSES') { - $sql = "SELECT c.id, c.libelle as label, sum(p.amount) as amount"; + $sql = "SELECT c.id, c.libelle as label, c.accountancy_code, sum(p.amount) as amount"; $sql .= " FROM ".MAIN_DB_PREFIX."c_chargesociales as c"; $sql .= ", ".MAIN_DB_PREFIX."chargesociales as cs"; $sql .= ", ".MAIN_DB_PREFIX."paiementcharge as p"; @@ -790,7 +851,7 @@ if ($modecompta == 'BOOKKEEPING') { } $sql .= " AND cs.entity = ".$conf->entity; } - $sql .= " GROUP BY c.libelle, c.id"; + $sql .= " GROUP BY c.libelle, c.id, c.accountancy_code"; $newsortfield = $sortfield; if ($newsortfield == 's.nom, s.rowid') { $newsortfield = 'c.libelle, c.id'; @@ -819,17 +880,29 @@ if ($modecompta == 'BOOKKEEPING') { $subtotal_ht += $obj->amount; $subtotal_ttc += $obj->amount; - print ' '; - print ''.$obj->label.''; - if ($modecompta == 'CREANCES-DETTES') { - print ''.price(-$obj->amount).''; + $titletoshow = ''; + if ($obj->accountancy_code) { + $titletoshow = $langs->trans("AccountingCode").': '.$obj->accountancy_code; + $tmpaccountingaccount = new AccountingAccount($db); + $tmpaccountingaccount->fetch(0, $obj->accountancy_code, 1); + $titletoshow .= ' - '.$langs->trans("AccountingCategory").': '.$tmpaccountingaccount->pcg_type; } + + print ''; + print ' '; + print 'accountancy_code ? ' title="'.dol_escape_htmltag($titletoshow).'"' : '').'>'.dol_escape_htmltag($obj->label).''; + print ''; + if ($modecompta == 'CREANCES-DETTES') { + print ''.price(-$obj->amount).''; + } + print ''; print ''.price(-$obj->amount).''; print ''; $i++; } } else { - print ' '; + print ''; + print ' '; print ''.$langs->trans("None").''; print ''; } @@ -841,10 +914,14 @@ if ($modecompta == 'BOOKKEEPING') { $total_ttc_outcome += $subtotal_ttc; print ''; + print ''; + print ''; + print ''; if ($modecompta == 'CREANCES-DETTES') { - print ''.price(-$subtotal_ht).''; + print price(-$subtotal_ht); } - print ''.price(-$subtotal_ttc).''; + print ''; + print ''.price(-$subtotal_ttc).''; print ''; @@ -857,7 +934,8 @@ if ($modecompta == 'BOOKKEEPING') { if ($modecompta == 'CREANCES-DETTES' || $modecompta == 'RECETTES-DEPENSES') { if ($modecompta == 'CREANCES-DETTES') { - $column = 'p.datev'; + //$column = 's.dateep'; // We use the date of salary + $column = 'p.datep'; } else { $column = 'p.datep'; } @@ -866,13 +944,14 @@ if ($modecompta == 'BOOKKEEPING') { $sql .= " FROM ".MAIN_DB_PREFIX."payment_salary as p"; $sql .= " INNER JOIN ".MAIN_DB_PREFIX."salary as s ON s.rowid=p.fk_salary"; $sql .= " INNER JOIN ".MAIN_DB_PREFIX."user as u ON u.rowid=s.fk_user"; - $sql .= " WHERE p.entity IN (".getEntity('payment_salary').")"; + $sql .= " WHERE s.entity IN (".getEntity('salary').")"; if (!empty($date_start) && !empty($date_end)) { $sql .= " AND $column >= '".$db->idate($date_start)."' AND $column <= '".$db->idate($date_end)."'"; } $sql .= " GROUP BY u.rowid, u.firstname, u.lastname, s.fk_user, p.label, dm"; // For backward compatibility with old module salary + $column = 'p.datep'; $sql .= " UNION "; $sql .= " SELECT u.rowid, u.firstname, u.lastname, p.fk_user as fk_user, p.label as label, date_format($column,'%Y-%m') as dm, sum(p.amount) as amount"; $sql .= " FROM ".MAIN_DB_PREFIX."payment_salary as p"; @@ -918,16 +997,18 @@ if ($modecompta == 'BOOKKEEPING') { $userstatic->fetch($obj->fk_user); print "".$langs->trans("Salary")." getFullName($langs))."\">".$obj->firstname." ".$obj->lastname."\n"; - + print ''; if ($modecompta == 'CREANCES-DETTES') { - print ''.price(-$obj->amount).''; + print ''.price(-$obj->amount).''; } + print ''; print ''.price(-$obj->amount).''; print ''; $i++; } } else { - print ' '; + print ''; + print ' '; print ''.$langs->trans("None").''; print ''; } @@ -939,10 +1020,14 @@ if ($modecompta == 'BOOKKEEPING') { $total_ttc_outcome += $subtotal_ttc; print ''; + print ''; + print ''; + print ''; if ($modecompta == 'CREANCES-DETTES') { - print ''.price(-$subtotal_ht).''; + print price(-$subtotal_ht); } - print ''.price(-$subtotal_ttc).''; + print ''; + print ''.price(-$subtotal_ttc).''; print ''; } @@ -1001,18 +1086,20 @@ if ($modecompta == 'BOOKKEEPING') { $subtotal_ht += $obj->amount_ht; $subtotal_ttc += $obj->amount_ttc; - print ' '; - + print ''; + print ' '; print "".$langs->trans("ExpenseReport")." userid."\">".$obj->firstname." ".$obj->lastname."\n"; - + print ''; if ($modecompta == 'CREANCES-DETTES') { - print ''.price(-$obj->amount_ht).''; + print ''.price(-$obj->amount_ht).''; } + print ''; print ''.price(-$obj->amount_ttc).''; print ''; } } else { - print ' '; + print ''; + print ' '; print ''.$langs->trans("None").''; print ''; } @@ -1024,10 +1111,14 @@ if ($modecompta == 'BOOKKEEPING') { $total_ttc_outcome += $subtotal_ttc; print ''; + print ''; + print ''; + print ''; if ($modecompta == 'CREANCES-DETTES') { - print ''.price(-$subtotal_ht).''; + print price(-$subtotal_ht); } - print ''.price(-$subtotal_ttc).''; + print ''; + print ''.price(-$subtotal_ttc).''; print ''; } @@ -1064,11 +1155,14 @@ if ($modecompta == 'BOOKKEEPING') { $total_ht_outcome += $obj->amount; $total_ttc_outcome += $obj->amount; } - print ' '; + print ''; + print ' '; print "".$langs->trans("Debit")."\n"; + print ''; if ($modecompta == 'CREANCES-DETTES') { - print ''.price(-$obj->amount).''; + print ''.price(-$obj->amount).''; } + print ''; print ''.price(-$obj->amount)."\n"; print "\n"; @@ -1083,9 +1177,11 @@ if ($modecompta == 'BOOKKEEPING') { } print ' '; print "".$langs->trans("Credit")."\n"; + print ''; if ($modecompta == 'CREANCES-DETTES') { - print ''.price($obj->amount).''; + print ''.price($obj->amount).''; } + print ''; print ''.price($obj->amount)."\n"; print "\n"; @@ -1093,10 +1189,14 @@ if ($modecompta == 'BOOKKEEPING') { $total_ht += $subtotal_ht; $total_ttc += $subtotal_ttc; print ''; + print ''; + print ''; + print ''; if ($modecompta == 'CREANCES-DETTES') { - print ''.price($subtotal_ht).''; + print price($subtotal_ht); } - print ''.price($subtotal_ttc).''; + print ''; + print ''.price($subtotal_ttc).''; print ''; } else { dol_print_error($db); @@ -1148,10 +1248,14 @@ if ($modecompta == 'BOOKKEEPING') { $total_ttc_income += $subtotal_ttc; print ''; + print ''; + print ''; + print ''; if ($modecompta == 'CREANCES-DETTES') { - print ''.price($subtotal_ht).''; + print price($subtotal_ht); } - print ''.price($subtotal_ttc).''; + print ''; + print ''.price($subtotal_ttc).''; print ''; } else { dol_print_error($db); @@ -1219,7 +1323,8 @@ if ($modecompta == 'BOOKKEEPING') { $total_ht_outcome -= 0; $total_ttc_outcome -= $amount; - print ' '; + print ''; + print ' '; print "".$langs->trans("VATToPay")."\n"; print ' '."\n"; print ''.price($amount)."\n"; @@ -1277,7 +1382,8 @@ if ($modecompta == 'BOOKKEEPING') { $total_ht_income += 0; $total_ttc_income += $amount; - print ' '; + print ''; + print ' '; print ''.$langs->trans("VATToCollect")."\n"; print ' '."\n"; print ''.price($amount)."\n"; @@ -1331,11 +1437,10 @@ if ($modecompta == 'BOOKKEEPING') { $total_ht_outcome -= 0; $total_ttc_outcome -= $amount; - print ' '; + print ''; + print ' '; print "".$langs->trans("VATPaid")."\n"; - if ($modecompta == 'CREANCES-DETTES') { - print ''."\n"; - } + print ''."\n"; print ''.price($amount)."\n"; print "\n"; @@ -1387,11 +1492,10 @@ if ($modecompta == 'BOOKKEEPING') { $total_ht_income += 0; $total_ttc_income += $amount; - print ' '; + print ''; + print ' '; print "".$langs->trans("VATCollected")."\n"; - if ($modecompta == 'CREANCES-DETTES') { - print ''."\n"; - } + print ''."\n"; print ''.price($amount)."\n"; print "\n"; } @@ -1399,10 +1503,10 @@ if ($modecompta == 'BOOKKEEPING') { if ($mysoc->tva_assuj != '0') { // Assujetti print ''; - if ($modecompta == 'CREANCES-DETTES') { - print ' '; - } - print ''.price(price2num($subtotal_ttc, 'MT')).''; + print ''; + print ''; + print ' '; + print ''.price(price2num($subtotal_ttc, 'MT')).''; print ''; } } diff --git a/htdocs/compta/resultat/index.php b/htdocs/compta/resultat/index.php index 2d4ea6fc9e0..6aab9093c05 100644 --- a/htdocs/compta/resultat/index.php +++ b/htdocs/compta/resultat/index.php @@ -60,11 +60,11 @@ $date_end = dol_mktime(23, 59, 59, $date_endmonth, $date_endday, $date_endyear); // We define date_start and date_end if (empty($date_start) || empty($date_end)) { // We define date_start and date_end - $q = GETPOST("q") ?GETPOST("q") : 0; + $q = GETPOST("q") ? GETPOST("q", 'int') : 0; if ($q == 0) { // We define date_start and date_end $year_end = $year_start + ($nbofyear - 1); - $month_start = GETPOST("month") ?GETPOST("month") : ($conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1); + $month_start = GETPOST("month") ? GETPOST("month", 'int') : ($conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1); if (!GETPOST('month')) { if (!GETPOST("year") && $month_start > $month_current) { $year_start--; @@ -140,6 +140,11 @@ $form = new Form($db); $exportlink = ''; +$encaiss = array(); +$encaiss_ttc = array(); +$decaiss = array(); +$decaiss_ttc = array(); + // Affiche en-tete du rapport if ($modecompta == 'CREANCES-DETTES') { $name = $langs->trans("ReportInOut").', '.$langs->trans("ByYear"); @@ -152,7 +157,7 @@ if ($modecompta == 'CREANCES-DETTES') { } $period = $form->selectDate($date_start, 'date_start', 0, 0, 0, '', 1, 0).' - '.$form->selectDate($date_end, 'date_end', 0, 0, 0, '', 1, 0); $periodlink = ($year_start ? "".img_previous()." ".img_next()."" : ""); - $description = $langs->trans("RulesAmountWithTaxIncluded"); + $description = $langs->trans("RulesAmountWithTaxExcluded"); $description .= '
    '.$langs->trans("RulesResultDue"); if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) { $description .= "
    ".$langs->trans("DepositsAreNotIncluded"); @@ -237,10 +242,9 @@ if (!empty($conf->facture->enabled) && ($modecompta == 'CREANCES-DETTES' || $mod $sql .= " AND p.datep >= '".$db->idate($date_start)."' AND p.datep <= '".$db->idate($date_end)."'"; } } - $sql .= " AND f.entity IN (".getEntity('invoice').")"; if ($socid) { - $sql .= " AND f.fk_soc = $socid"; + $sql .= " AND f.fk_soc = ".((int) $socid); } $sql .= " GROUP BY dm"; $sql .= " ORDER BY dm"; @@ -344,8 +348,8 @@ if (!empty($conf->facture->enabled) && ($modecompta == 'CREANCES-DETTES' || $mod $sql .= " AND p.datep >= '".$db->idate($date_start)."' AND p.datep <= '".$db->idate($date_end)."'"; } } + $sql .= " AND f.entity IN (".getEntity('supplier_invoice').")"; - $sql .= " AND f.entity = ".$conf->entity; if ($socid) { $sql .= " AND f.fk_soc = ".((int) $socid); } @@ -413,10 +417,10 @@ if (!empty($conf->tax->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecom while ($i < $num) { $obj = $db->fetch_object($result); - if (!isset($decaiss[$obj->dm])) { + /*if (!isset($decaiss[$obj->dm])) { $decaiss[$obj->dm] = 0; } - $decaiss[$obj->dm] += $obj->amount; + $decaiss[$obj->dm] += $obj->amount;*/ if (!isset($decaiss_ttc[$obj->dm])) { $decaiss_ttc[$obj->dm] = 0; @@ -438,7 +442,7 @@ if (!empty($conf->tax->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecom } else { $sql .= " AND f.type IN (0,1,2,3)"; } - $sql .= " AND f.entity = ".$conf->entity; + $sql .= " AND f.entity IN (".getEntity('supplier_invoice').")"; if (!empty($date_start) && !empty($date_end)) { $sql .= " AND f.datef >= '".$db->idate($date_start)."' AND f.datef <= '".$db->idate($date_end)."'"; } @@ -453,10 +457,10 @@ if (!empty($conf->tax->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecom while ($i < $num) { $obj = $db->fetch_object($result); - if (!isset($encaiss[$obj->dm])) { + /*if (!isset($encaiss[$obj->dm])) { $encaiss[$obj->dm] = 0; } - $encaiss[$obj->dm] += $obj->amount; + $encaiss[$obj->dm] += $obj->amount;*/ if (!isset($encaiss_ttc[$obj->dm])) { $encaiss_ttc[$obj->dm] = 0; @@ -474,7 +478,7 @@ if (!empty($conf->tax->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecom $sql = "SELECT sum(t.amount) as amount, date_format(t.datev,'%Y-%m') as dm"; $sql .= " FROM ".MAIN_DB_PREFIX."tva as t"; $sql .= " WHERE amount > 0"; - $sql .= " AND t.entity = ".$conf->entity; + $sql .= " AND t.entity IN (".getEntity('vat').")"; if (!empty($date_start) && !empty($date_end)) { $sql .= " AND t.datev >= '".$db->idate($date_start)."' AND t.datev <= '".$db->idate($date_end)."'"; } @@ -489,10 +493,10 @@ if (!empty($conf->tax->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecom while ($i < $num) { $obj = $db->fetch_object($result); - if (!isset($decaiss[$obj->dm])) { + /*if (!isset($decaiss[$obj->dm])) { $decaiss[$obj->dm] = 0; } - $decaiss[$obj->dm] += $obj->amount; + $decaiss[$obj->dm] += $obj->amount;*/ if (!isset($decaiss_ttc[$obj->dm])) { $decaiss_ttc[$obj->dm] = 0; @@ -509,7 +513,7 @@ if (!empty($conf->tax->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecom $sql = "SELECT sum(t.amount) as amount, date_format(t.datev,'%Y-%m') as dm"; $sql .= " FROM ".MAIN_DB_PREFIX."tva as t"; $sql .= " WHERE amount < 0"; - $sql .= " AND t.entity = ".$conf->entity; + $sql .= " AND t.entity IN (".getEntity('vat').")"; if (!empty($date_start) && !empty($date_end)) { $sql .= " AND t.datev >= '".$db->idate($date_start)."' AND t.datev <= '".$db->idate($date_end)."'"; } @@ -524,10 +528,10 @@ if (!empty($conf->tax->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecom while ($i < $num) { $obj = $db->fetch_object($result); - if (!isset($encaiss[$obj->dm])) { + /*if (!isset($encaiss[$obj->dm])) { $encaiss[$obj->dm] = 0; } - $encaiss[$obj->dm] += -$obj->amount; + $encaiss[$obj->dm] += -$obj->amount;*/ if (!isset($encaiss_ttc[$obj->dm])) { $encaiss_ttc[$obj->dm] = 0; @@ -572,7 +576,7 @@ if (!empty($conf->tax->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecom } } - $sql .= " AND cs.entity = ".$conf->entity; + $sql .= " AND cs.entity IN (".getEntity('social_contributions').")"; $sql .= " GROUP BY c.libelle, dm"; dol_syslog("get social contributions", LOG_DEBUG); @@ -611,7 +615,8 @@ if (!empty($conf->tax->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecom if (!empty($conf->salaries->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecompta == "RECETTES-DEPENSES")) { if ($modecompta == 'CREANCES-DETTES') { - $column = 'p.datev'; + //$column = 's.dateep'; // we use the date of salary + $column = 'p.datep'; } if ($modecompta == "RECETTES-DEPENSES") { $column = 'p.datep'; @@ -620,8 +625,9 @@ if (!empty($conf->salaries->enabled) && ($modecompta == 'CREANCES-DETTES' || $mo $subtotal_ht = 0; $subtotal_ttc = 0; $sql = "SELECT p.label as nom, date_format(".$column.",'%Y-%m') as dm, sum(p.amount) as amount"; - $sql .= " FROM ".MAIN_DB_PREFIX."payment_salary as p"; - $sql .= " WHERE p.entity IN (".getEntity('payment_salary').")"; + $sql .= " FROM ".MAIN_DB_PREFIX."payment_salary as p, ".MAIN_DB_PREFIX."salary as s"; + $sql .= " WHERE p.fk_salary = s.rowid"; + $sql .= " AND s.entity IN (".getEntity('salary').")"; if (!empty($date_start) && !empty($date_end)) { $sql .= " AND ".$column." >= '".$db->idate($date_start)."' AND ".$column." <= '".$db->idate($date_end)."'"; } @@ -786,7 +792,8 @@ if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY) && !empty($conf->ba // decaiss $sql = "SELECT date_format(p.datep, '%Y-%m') AS dm, SUM(p.amount) AS amount FROM ".MAIN_DB_PREFIX."payment_various as p"; - $sql .= ' WHERE p.sens = 0'; + $sql .= " WHERE p.entity IN (".getEntity('variouspayment').")"; + $sql .= ' AND p.sens = 0'; if (!empty($date_start) && !empty($date_end)) { $sql .= " AND p.datep >= '".$db->idate($date_start)."' AND p.datep <= '".$db->idate($date_end)."'"; } @@ -816,7 +823,8 @@ if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY) && !empty($conf->ba // encaiss $sql = "SELECT date_format(p.datep, '%Y-%m') AS dm, SUM(p.amount) AS amount FROM ".MAIN_DB_PREFIX."payment_various AS p"; - $sql .= ' WHERE p.sens = 1'; + $sql .= " WHERE p.entity IN (".getEntity('variouspayment').")"; + $sql .= ' AND p.sens = 1'; if (!empty($date_start) && !empty($date_end)) { $sql .= " AND p.datep >= '".$db->idate($date_start)."' AND p.datep <= '".$db->idate($date_end)."'"; } @@ -852,8 +860,10 @@ if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY) && !empty($conf->ba */ if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_LOAN) && !empty($conf->loan->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecompta == "RECETTES-DEPENSES")) { - $sql = "SELECT date_format(p.datep, '%Y-%m') AS dm, SUM(p.amount_capital + p.amount_insurance + p.amount_interest) AS amount FROM ".MAIN_DB_PREFIX."payment_loan AS p"; - $sql .= ' WHERE 1 = 1'; + $sql = "SELECT date_format(p.datep, '%Y-%m') AS dm, SUM(p.amount_capital + p.amount_insurance + p.amount_interest) AS amount"; + $sql .= " FROM ".MAIN_DB_PREFIX."payment_loan AS p, ".MAIN_DB_PREFIX."loan as l"; + $sql .= " WHERE l.entity IN (".getEntity('variouspayment').")"; + $sql .= " AND p.fk_loan = l.rowid"; if (!empty($date_start) && !empty($date_end)) { $sql .= " AND p.datep >= '".$db->idate($date_start)."' AND p.datep <= '".$db->idate($date_end)."'"; } @@ -1025,7 +1035,7 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) { $case = strftime("%Y-%m", dol_mktime(12, 0, 0, $mois_modulo, 1, $annee_decalage)); print ' '; - if ($modecompta == 'BOOKKEEPING') { + if ($modecompta == 'CREANCES-DETTES' || $modecompta == 'BOOKKEEPING') { if (isset($decaiss[$case]) && $decaiss[$case] != 0) { print ''.price(price2num($decaiss[$case], 'MT')).''; if (!isset($totsorties[$annee])) { @@ -1045,7 +1055,7 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) { print ""; print ' '; - if ($modecompta == 'BOOKKEEPING') { + if ($modecompta == 'CREANCES-DETTES' || $modecompta == 'BOOKKEEPING') { if (isset($encaiss[$case])) { print ''.price(price2num($encaiss[$case], 'MT')).''; if (!isset($totentrees[$annee])) { @@ -1072,7 +1082,7 @@ for ($mois = 1 + $nb_mois_decalage; $mois <= 12 + $nb_mois_decalage; $mois++) { $nbcols = 0; print ''; -if ($modecompta == 'BOOKKEEPING') { +if ($modecompta == 'CREANCES-DETTES' || $modecompta == 'BOOKKEEPING') { print $langs->trans("Total"); } else { print $langs->trans("TotalTTC"); diff --git a/htdocs/compta/sociales/card.php b/htdocs/compta/sociales/card.php index 98ebe32f970..0ea9b1ba30d 100644 --- a/htdocs/compta/sociales/card.php +++ b/htdocs/compta/sociales/card.php @@ -62,6 +62,9 @@ $label = GETPOST('label', 'alpha'); $actioncode = GETPOST('actioncode'); $fk_user = GETPOST('userid', 'int'); +// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context +$hookmanager->initHooks(array('taxcard', 'globalcard')); + // Initialize technical objects $object = new ChargeSociales($db); $extrafields = new ExtraFields($db); @@ -97,7 +100,7 @@ $result = restrictedArea($user, 'tax', $object->id, 'chargesociales', 'charges') * Actions */ -$parameters = array(); +$parameters = array('socid' => $socid); $reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) { setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); @@ -446,6 +449,8 @@ if ($id > 0) { $object = new ChargeSociales($db); $result = $object->fetch($id); + $formconfirm = ''; + if ($result > 0) { $head = tax_prepare_head($object); @@ -464,25 +469,36 @@ if ($id > 0) { $formquestion[] = array('type' => 'text', 'name' => 'amount', 'label' => $langs->trans("Amount"), 'value' => price($object->amount), 'morecss' => 'width100'); } - print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneTax', $object->ref), 'confirm_clone', $formquestion, 'yes', 1, 280); + $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneTax', $object->ref), 'confirm_clone', $formquestion, 'yes', 1, 280); } if ($action == 'paid') { $text = $langs->trans('ConfirmPaySocialContribution'); - print $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$object->id, $langs->trans('PaySocialContribution'), $text, "confirm_paid", '', '', 2); + $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$object->id, $langs->trans('PaySocialContribution'), $text, "confirm_paid", '', '', 2); } // Confirmation of the removal of the Social Contribution if ($action == 'delete') { $text = $langs->trans('ConfirmDeleteSocialContribution'); - print $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$object->id, $langs->trans('DeleteSocialContribution'), $text, 'confirm_delete', '', '', 2); + $formconfirm = $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$object->id, $langs->trans('DeleteSocialContribution'), $text, 'confirm_delete', '', '', 2); } if ($action == 'edit') { print "
    id&action=update\" method=\"post\">"; print ''; } + // Call Hook formConfirm + $parameters = array('formConfirm' => $formconfirm, 'lineid' => $lineid); + $reshook = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified by hook + if (empty($reshook)) { + $formconfirm .= $hookmanager->resPrint; + } elseif ($reshook > 0) { + $formconfirm = $hookmanager->resPrint; + } + + // Print form confirm + print $formconfirm; print dol_get_fiche_head($head, 'card', $langs->trans("SocialContribution"), -1, 'bill'); @@ -600,7 +616,7 @@ if ($id > 0) { print ''; print ""; } else { - print ''.$langs->trans("AmountTTC").''.price($object->amount, 0, $langs, 1, -1, -1, $conf->currency).''; + print ''.$langs->trans("AmountTTC").''.price($object->amount, 0, $langs, 1, -1, -1, $conf->currency).''; } // Mode of payment @@ -741,8 +757,8 @@ if ($id > 0) { print ''; } - print ''.$langs->trans("AlreadyPaid")." :".price($totalpaye)."\n"; - print ''.$langs->trans("AmountExpected")." :".price($object->amount)."\n"; + print ''.$langs->trans("AlreadyPaid").' :'.price($totalpaye)."\n"; + print ''.$langs->trans("AmountExpected").' :'.price($object->amount)."\n"; $resteapayer = $object->amount - $totalpaye; $cssforamountpaymentcomplete = 'amountpaymentcomplete'; diff --git a/htdocs/compta/sociales/document.php b/htdocs/compta/sociales/document.php index 66800c4d449..6918b2c84ee 100644 --- a/htdocs/compta/sociales/document.php +++ b/htdocs/compta/sociales/document.php @@ -47,8 +47,8 @@ $confirm = GETPOST('confirm', 'alpha'); // Get parameters $limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; diff --git a/htdocs/compta/sociales/list.php b/htdocs/compta/sociales/list.php index f4ef22d1fd5..8d63e52256e 100644 --- a/htdocs/compta/sociales/list.php +++ b/htdocs/compta/sociales/list.php @@ -68,14 +68,13 @@ $search_date_limit_endyear = GETPOST('search_date_limit_endyear', 'int'); $search_date_limit_start = dol_mktime(0, 0, 0, $search_date_limit_startmonth, $search_date_limit_startday, $search_date_limit_startyear); $search_date_limit_end = dol_mktime(23, 59, 59, $search_date_limit_endmonth, $search_date_limit_endday, $search_date_limit_endyear); $search_project_ref = GETPOST('search_project_ref', 'alpha'); -$search_project = GETPOST('search_project', 'alpha'); $search_users = GETPOST('search_users'); $search_type = GETPOST('search_type', 'int'); $search_account = GETPOST('search_account', 'int'); $limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST("sortorder", 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { @@ -176,7 +175,6 @@ if (empty($reshook)) { $search_date_limit_start = ''; $search_date_limit_end = ''; $search_project_ref = ''; - $search_project = ''; $search_users = ''; $search_type = ''; $search_account = ''; @@ -200,11 +198,11 @@ if (!empty($conf->projet->enabled)) { llxHeader('', $langs->trans("SocialContributions")); $sql = "SELECT cs.rowid, cs.fk_type as type, cs.fk_user,"; -$sql .= " cs.amount, cs.date_ech, cs.libelle as label, cs.paye, cs.periode,"; +$sql .= " cs.amount, cs.date_ech, cs.libelle as label, cs.paye, cs.periode, cs.fk_account,"; if (!empty($conf->projet->enabled)) { $sql .= " p.rowid as project_id, p.ref as project_ref, p.title as project_label,"; } -$sql .= " c.libelle as type_label, cs.fk_account,"; +$sql .= " c.libelle as type_label, c.accountancy_code as type_accountancy_code,"; $sql .= " ba.label as blabel, ba.ref as bref, ba.number as bnumber, ba.account_number, ba.iban_prefix as iban, ba.bic, ba.currency_code, ba.clos,"; $sql .= " SUM(pc.amount) as alreadypayed, pay.code as payment_code"; $sql .= " FROM ".MAIN_DB_PREFIX."c_chargesociales as c,"; @@ -231,7 +229,7 @@ if (!empty($conf->projet->enabled)) { } } if (!empty($search_users)) { - $sql .= ' AND cs.fk_user IN('.implode(', ', $search_users).')'; + $sql .= ' AND cs.fk_user IN ('.$db->sanitize(implode(', ', $search_users)).')'; } if (!empty($search_type) && $search_type > 0) { $sql .= ' AND cs.fk_mode_reglement='.((int) $search_type); @@ -260,7 +258,7 @@ if ($search_date_limit_end) { if ($search_typeid > 0) { $sql .= " AND cs.fk_type = ".((int) $search_typeid); } -$sql .= " GROUP BY cs.rowid, cs.fk_type, cs.fk_user, cs.amount, cs.date_ech, cs.libelle, cs.paye, cs.periode, c.libelle, cs.fk_account, ba.label, ba.ref, ba.number, ba.account_number, ba.iban_prefix, ba.bic, ba.currency_code, ba.clos, pay.code, u.lastname"; +$sql .= " GROUP BY cs.rowid, cs.fk_type, cs.fk_user, cs.amount, cs.date_ech, cs.libelle, cs.paye, cs.periode, cs.fk_account, c.libelle, c.accountancy_code, ba.label, ba.ref, ba.number, ba.account_number, ba.iban_prefix, ba.bic, ba.currency_code, ba.clos, pay.code, u.lastname"; if (!empty($conf->projet->enabled)) { $sql .= ", p.rowid, p.ref, p.title"; } @@ -455,7 +453,7 @@ if (!empty($arrayfields['cs.periode']['checked'])) { // Filter: Project ref if (!empty($arrayfields['p.ref']['checked'])) { print ''; - print ''; + print ''; print ''; } @@ -561,6 +559,7 @@ while ($i < min($num, $limit)) { $chargesociale_static->ref = $obj->rowid; $chargesociale_static->label = $obj->label; $chargesociale_static->type_label = $obj->type_label; + if (!empty($conf->projet->enabled)) { $projectstatic->id = $obj->project_id; $projectstatic->ref = $obj->project_ref; @@ -595,7 +594,12 @@ while ($i < min($num, $limit)) { // Type if (!empty($arrayfields['cs.fk_type']['checked'])) { - print ''.dol_escape_htmltag($obj->type_label).''; + $typelabeltoshow = $obj->type_label; + $typelabelpopup = $obj->type_label; + if (!empty($conf->accounting->enabled)) { + $typelabelpopup .= ' - '.$langs->trans("AccountancyCode").': '.$obj->type_accountancy_code; + } + print ''.dol_escape_htmltag($typelabeltoshow).''; if (!$i) { $totalarray['nbfield']++; } @@ -651,7 +655,9 @@ while ($i < min($num, $limit)) { // Type if (!empty($arrayfields['cs.fk_mode_reglement']['checked'])) { print ''; - if (!empty($obj->payment_code)) print $langs->trans("PaymentTypeShort".$obj->payment_code); + if (!empty($obj->payment_code)) { + print $langs->trans("PaymentTypeShort".$obj->payment_code); + } print ''; if (!$i) { $totalarray['nbfield']++; diff --git a/htdocs/compta/sociales/payments.php b/htdocs/compta/sociales/payments.php index b2ee4ffce5e..f5cbcc47502 100644 --- a/htdocs/compta/sociales/payments.php +++ b/htdocs/compta/sociales/payments.php @@ -50,8 +50,8 @@ $year = GETPOST("year", 'int'); $search_sc_type = GETPOST('search_sc_type', 'int'); $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page < 0) { $page = 0; @@ -66,7 +66,7 @@ if (!$sortorder) { $sortorder = "DESC"; } -// Security check +// Security check140px if ($user->socid) { $socid = $user->socid; } @@ -135,8 +135,8 @@ print ''; print ''; print ''; -$sql = "SELECT c.id, c.libelle as label,"; -$sql .= " cs.rowid, cs.libelle, cs.fk_type as type, cs.periode, cs.date_ech, cs.amount as total,"; +$sql = "SELECT c.id, c.libelle as type_label,"; +$sql .= " cs.rowid, cs.libelle as label_sc, cs.fk_type as type, cs.periode, cs.date_ech, cs.amount as total, cs.paye,"; $sql .= " pc.rowid as pid, pc.datep, pc.amount as totalpaye, pc.num_paiement as num_payment, pc.fk_bank,"; $sql .= " pct.code as payment_code,"; $sql .= " u.rowid uid, u.lastname, u.firstname, u.email, u.login, u.admin,"; @@ -231,8 +231,8 @@ print ''; print_liste_field_titre("RefPayment", $_SERVER["PHP_SELF"], "pc.rowid", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("SocialContribution", $_SERVER["PHP_SELF"], "c.libelle", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("TypeContrib", $_SERVER["PHP_SELF"], "cs.fk_type", "", $param, '', $sortfield, $sortorder); -print_liste_field_titre("PeriodEndDate", $_SERVER["PHP_SELF"], "cs.periode", "", $param, 'width="140px"', $sortfield, $sortorder); -print_liste_field_titre("DatePayment", $_SERVER["PHP_SELF"], "pc.datep", "", $param, 'align="center"', $sortfield, $sortorder); +print_liste_field_titre("PeriodEndDate", $_SERVER["PHP_SELF"], "cs.periode", "", $param, '', $sortfield, $sortorder, 'center '); +print_liste_field_titre("DatePayment", $_SERVER["PHP_SELF"], "pc.datep", "", $param, '', $sortfield, $sortorder, 'center '); print_liste_field_titre("Employee", $_SERVER["PHP_SELF"], "u.rowid", "", $param, "", $sortfield, $sortorder); print_liste_field_titre("PaymentMode", $_SERVER["PHP_SELF"], "pct.code", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Numero", $_SERVER["PHP_SELF"], "pc.num_paiement", "", $param, '', $sortfield, $sortorder, '', 'ChequeOrTransferNumber'); @@ -257,26 +257,34 @@ $totalpaye = 0; while ($i < min($num, $limit)) { $obj = $db->fetch_object($resql); - print ''; - // Ref payment + $payment_sc_static->id = $obj->pid; $payment_sc_static->ref = $obj->pid; - print ''.$payment_sc_static->getNomUrl(1)."\n"; - // Label - print ''; + $payment_sc_static->date = $db->jdate($obj->datep); + $socialcontrib->id = $obj->rowid; - $socialcontrib->ref = empty($obj->libelle) ? $obj->label : $obj->libelle; - $socialcontrib->label = empty($obj->libelle) ? $obj->label : $obj->libelle; - print $socialcontrib->getNomUrl(1, '20'); + $socialcontrib->ref = empty($obj->label_sc) ? $obj->type_label : $obj->label_sc; + $socialcontrib->paye = $obj->paye; + // $obj->label_sc is label of social contribution (may be empty) + // $obj->type_label is label of type of social contribution + $socialcontrib->label = empty($obj->label_sc) ? $obj->type_label : $obj->label_sc; + $socialcontrib->type_label = $obj->type_label; + + print ''; + // Ref payment + print ''.$payment_sc_static->getNomUrl(1)."\n"; + // Label + print ''; + print $socialcontrib->getNomUrl(1, ''); print ''; // Type - print ''.$obj->label.''; + print ''.$obj->label.''; // Date $date = $obj->periode; if (empty($date)) { $date = $obj->date_ech; } - print ''.dol_print_date($date, 'day').''; + print ''.dol_print_date($date, 'day').''; // Date payment print ''.dol_print_date($db->jdate($obj->datep), 'day').''; diff --git a/htdocs/compta/stats/cabyprodserv.php b/htdocs/compta/stats/cabyprodserv.php index 021bffe40b4..084516c52df 100644 --- a/htdocs/compta/stats/cabyprodserv.php +++ b/htdocs/compta/stats/cabyprodserv.php @@ -52,8 +52,8 @@ if (GETPOST("modecompta")) { $modecompta = GETPOST("modecompta"); } -$sortorder = GETPOST("sortorder", 'aZ09'); -$sortfield = GETPOST("sortfield", 'aZ09'); +$sortorder = GETPOST("sortorder", 'aZ09comma'); +$sortfield = GETPOST("sortfield", 'aZ09comma'); if (!$sortorder) { $sortorder = "asc"; } diff --git a/htdocs/compta/stats/cabyuser.php b/htdocs/compta/stats/cabyuser.php index 8e3169f1e8c..35d5028e938 100644 --- a/htdocs/compta/stats/cabyuser.php +++ b/htdocs/compta/stats/cabyuser.php @@ -51,8 +51,8 @@ if (GETPOST("modecompta")) { $modecompta = GETPOST("modecompta"); } -$sortorder = GETPOST("sortorder", 'aZ09'); -$sortfield = GETPOST("sortfield", 'aZ09'); +$sortorder = GETPOST("sortorder", 'aZ09comma'); +$sortfield = GETPOST("sortfield", 'aZ09comma'); if (!$sortorder) { $sortorder = "asc"; } diff --git a/htdocs/compta/stats/casoc.php b/htdocs/compta/stats/casoc.php index 10f7956c6b7..76dbc56beef 100644 --- a/htdocs/compta/stats/casoc.php +++ b/htdocs/compta/stats/casoc.php @@ -44,8 +44,8 @@ if (GETPOST("modecompta")) { $modecompta = GETPOST("modecompta"); } -$sortorder = GETPOST("sortorder", 'aZ09'); -$sortfield = GETPOST("sortfield", 'aZ09'); +$sortorder = GETPOST("sortorder", 'aZ09comma'); +$sortfield = GETPOST("sortfield", 'aZ09comma'); if (!$sortorder) { $sortorder = "asc"; } diff --git a/htdocs/compta/stats/supplier_turnover_by_prodserv.php b/htdocs/compta/stats/supplier_turnover_by_prodserv.php index 4e92325a323..f36383ad94b 100644 --- a/htdocs/compta/stats/supplier_turnover_by_prodserv.php +++ b/htdocs/compta/stats/supplier_turnover_by_prodserv.php @@ -36,8 +36,8 @@ if (GETPOST("modecompta")) { $modecompta = GETPOST("modecompta"); } -$sortorder = GETPOST("sortorder", 'aZ09'); -$sortfield = GETPOST("sortfield", 'aZ09'); +$sortorder = GETPOST("sortorder", 'aZ09comma'); +$sortfield = GETPOST("sortfield", 'aZ09comma'); if (!$sortorder) { $sortorder = "asc"; } diff --git a/htdocs/compta/stats/supplier_turnover_by_thirdparty.php b/htdocs/compta/stats/supplier_turnover_by_thirdparty.php index 0ea8418381d..0be2df11190 100644 --- a/htdocs/compta/stats/supplier_turnover_by_thirdparty.php +++ b/htdocs/compta/stats/supplier_turnover_by_thirdparty.php @@ -38,8 +38,8 @@ if (GETPOST("modecompta")) { $modecompta = GETPOST("modecompta"); } -$sortorder = GETPOST("sortorder", 'aZ09'); -$sortfield = GETPOST("sortfield", 'aZ09'); +$sortorder = GETPOST("sortorder", 'aZ09comma'); +$sortfield = GETPOST("sortfield", 'aZ09comma'); if (!$sortorder) { $sortorder = "asc"; } diff --git a/htdocs/compta/tva/card.php b/htdocs/compta/tva/card.php old mode 100755 new mode 100644 index 530d18d17f9..317838009c7 --- a/htdocs/compta/tva/card.php +++ b/htdocs/compta/tva/card.php @@ -196,7 +196,8 @@ if ($action == 'add' && !$cancel) { } $object->amount = $amount; $object->label = GETPOST("label", 'alpha'); - $object->note = GETPOST("note", 'none'); + $object->note = GETPOST("note", 'restricthtml'); + $object->note_private = GETPOST("note", 'restricthtml'); if (empty($object->datep)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("DatePayment")), null, 'errors'); @@ -236,7 +237,7 @@ if ($action == 'add' && !$cancel) { $paiement->amounts = array($object->id=>$amount); // Tableau de montant $paiement->paiementtype = GETPOST("type_payment", 'alphanohtml'); $paiement->num_payment = GETPOST("num_payment", 'alphanohtml'); - $paiement->note = GETPOST("note", 'none'); + $paiement->note = GETPOST("note", 'restricthtml'); if (!$error) { $paymentid = $paiement->create($user, (int) GETPOST('closepaidtva')); diff --git a/htdocs/compta/tva/document.php b/htdocs/compta/tva/document.php index 67de87d0c21..a0573cf2812 100644 --- a/htdocs/compta/tva/document.php +++ b/htdocs/compta/tva/document.php @@ -48,8 +48,8 @@ $confirm = GETPOST('confirm', 'alpha'); // Get parameters $limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; diff --git a/htdocs/compta/tva/list.php b/htdocs/compta/tva/list.php index 8c12dbfd704..f1731420852 100644 --- a/htdocs/compta/tva/list.php +++ b/htdocs/compta/tva/list.php @@ -56,8 +56,8 @@ $search_amount = GETPOST('search_amount', 'alpha'); $search_status = GETPOST('search_status', 'int'); $limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST('sortfield', 'alpha'); -$sortorder = GETPOST('sortorder', 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST('page', 'int'); if (empty($page) || $page == -1) { diff --git a/htdocs/compta/tva/payments.php b/htdocs/compta/tva/payments.php index 57e70e70a3d..488882c2649 100644 --- a/htdocs/compta/tva/payments.php +++ b/htdocs/compta/tva/payments.php @@ -46,8 +46,8 @@ if (!$year && $mode != 'tvaonly') { } $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; diff --git a/htdocs/compta/tva/quadri_detail.php b/htdocs/compta/tva/quadri_detail.php index 4b44959bc1a..15c45d6055b 100644 --- a/htdocs/compta/tva/quadri_detail.php +++ b/htdocs/compta/tva/quadri_detail.php @@ -6,7 +6,7 @@ * Copyright (C) 2014 Ferran Marcet * Copyright (C) 2018-2021 Frédéric France * Copyright (C) 2019 Eric Seigne - * Copyright (C) 2021 Open-Dsi + * Copyright (C) 2021-2022 Open-Dsi * * 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 @@ -47,7 +47,7 @@ $langs->loadLangs(array("other", "compta", "banks", "bills", "companies", "produ $refresh = (GETPOSTISSET('submit') || GETPOSTISSET('vat_rate_show') || GETPOSTISSET('invoice_type')) ? true : false; $invoice_type = GETPOSTISSET('invoice_type') ? GETPOST('invoice_type', 'alpha') : ''; -$vat_rate_show = GETPOSTISSET('vat_rate_show') ? GETPOST('vat_rate_show', 'int') : -1; +$vat_rate_show = GETPOSTISSET('vat_rate_show') ? GETPOST('vat_rate_show', 'alphanohtml') : -1; include DOL_DOCUMENT_ROOT.'/compta/tva/initdatesforvat.inc.php'; @@ -409,7 +409,7 @@ if (!is_array($x_coll) || !is_array($x_paye)) { print ''; print $langs->trans('Rate') . ' : ' . vatrate($rate) . '%'; print ' - ' . img_picto('', 'chevron-down', 'class="paddingrightonly"') . $langs->trans('VATReportShowByRateDetails') . ''; @@ -643,7 +643,7 @@ if (!is_array($x_coll) || !is_array($x_paye)) { print ''; print $langs->trans('Rate') . ' : ' . vatrate($rate) . '%'; print ' - ' . img_picto('', 'chevron-down', 'class="paddingrightonly"') . $langs->trans('VATReportShowByRateDetails') . ''; diff --git a/htdocs/contact/agenda.php b/htdocs/contact/agenda.php index 293c4f11aa3..0eed6ba6219 100644 --- a/htdocs/contact/agenda.php +++ b/htdocs/contact/agenda.php @@ -88,8 +88,8 @@ if ($user->socid) { $result = restrictedArea($user, 'contact', $id, 'socpeople&societe', '', '', 'rowid', 0); // If we create a contact with no company (shared contacts), no check on write permission $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; @@ -212,7 +212,11 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { $linkback = ''.$langs->trans("BackToList").''; - $morehtmlref = '
    '; + $morehtmlref = ''; + $morehtmlref .= img_picto($langs->trans("Download").' '.$langs->trans("VCard"), 'vcard.png', 'class="valignmiddle marginleftonly paddingrightonly"'); + $morehtmlref .= ''; + + $morehtmlref .= '
    '; if (empty($conf->global->SOCIETE_DISABLE_CONTACTS)) { $objsoc = new Societe($db); $objsoc->fetch($object->socid); diff --git a/htdocs/contact/card.php b/htdocs/contact/card.php index 45923910633..bd0d694eb57 100644 --- a/htdocs/contact/card.php +++ b/htdocs/contact/card.php @@ -532,6 +532,8 @@ if (empty($reshook)) { * View */ +$form = new Form($db); +$formcompany = new FormCompany($db); $title = (!empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("Contacts") : $langs->trans("ContactsAddresses")); if (!empty($conf->global->MAIN_HTML_TITLE) && preg_match('/contactnameonly/', $conf->global->MAIN_HTML_TITLE) && $object->lastname) { @@ -540,9 +542,6 @@ if (!empty($conf->global->MAIN_HTML_TITLE) && preg_match('/contactnameonly/', $c $help_url = 'EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas'; llxHeader('', $title, $help_url); -$form = new Form($db); -$formcompany = new FormCompany($db); - $countrynotdefined = $langs->trans("ErrorSetACountryFirst").' ('.$langs->trans("SeeAbove").')'; $objsoc = new Societe($db); @@ -1284,7 +1283,11 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { $linkback = ''.$langs->trans("BackToList").''; - $morehtmlref = '
    '; + $morehtmlref = ''; + $morehtmlref .= img_picto($langs->trans("Download").' '.$langs->trans("VCard"), 'vcard.png', 'class="valignmiddle marginleftonly paddingrightonly"'); + $morehtmlref .= ''; + + $morehtmlref .= '
    '; if (empty($conf->global->SOCIETE_DISABLE_CONTACTS)) { $objsoc->fetch($object->socid); // Thirdparty @@ -1462,14 +1465,6 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { } print ''; - print ''; - print $langs->trans("VCard").''; - print ''; - print img_picto($langs->trans("Download"), 'vcard.png', 'class="paddingrightonly"'); - print $langs->trans("Download"); - print ''; - print ''; - print ""; print '
    '; diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index fa1dfb93c7a..bb3f2ae035d 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -1389,24 +1389,25 @@ class Contact extends CommonObject * Return name of contact with link (and eventually picto) * Use $this->id, $this->lastname, $this->firstname, this->civility_id * - * @param int $withpicto Include picto with link + * @param int $withpicto Include picto with link (1=picto + name, 2=picto only, -1=photo+name, -2=photo only) * @param string $option Where the link point to * @param int $maxlen Max length of * @param string $moreparam Add more param into URL * @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking * @param int $notooltip 1=Disable tooltip + * @param string $morecss Add more css on link * @return string String with URL */ - public function getNomUrl($withpicto = 0, $option = '', $maxlen = 0, $moreparam = '', $save_lastsearch_value = -1, $notooltip = 0) + public function getNomUrl($withpicto = 0, $option = '', $maxlen = 0, $moreparam = '', $save_lastsearch_value = -1, $notooltip = 0, $morecss = '') { global $conf, $langs, $hookmanager; $result = ''; $label = ''; - if (!empty($this->photo) && class_exists('Form')) { - $label .= '
    '; - $label .= Form::showphoto('contact', $this, 0, 40, 0, '', 'mini', 0); // Important, we must force height so image will have height tags and if image is inside a tooltip, the tooltip manager can calculate height and position correctly the tooltip. - $label .= '
    '; + $label .= '
    '; + $label .= Form::showphoto('contact', $this, 0, 40, 0, 'photoref', 'mini', 0); // Important, we must force height so image will have height tags and if image is inside a tooltip, the tooltip manager can calculate height and position correctly the tooltip. + $label .= '
    '; + //$label .= '
    '; } $label .= img_picto('', $this->picto).' '.$langs->trans("Contact").''; @@ -1453,7 +1454,7 @@ class Contact extends CommonObject $linkclose .= ' alt="'.dol_escape_htmltag($label, 1).'"'; } $linkclose .= ' title="'.dol_escape_htmltag($label, 1).'"'; - $linkclose .= ' class="classfortooltip"'; + $linkclose .= ' class="classfortooltip'.($morecss ? ' '.$morecss : '').'"'; /* $hookmanager->initHooks(array('contactdao')); @@ -1474,14 +1475,14 @@ class Contact extends CommonObject $result .= $linkstart; if ($withpicto) { - if ($withpicto == -2) { - $result .= ''.Form::showphoto('contact', $this, 0, 0, 0, 'userphoto'.($withpicto == -3 ? 'small' : ''), 'mini', 0, 1).''; + if ($withpicto < 0) { + $result .= ''.Form::showphoto('contact', $this, 0, 0, 0, 'userphoto'.($withpicto == -3 ? 'small' : ''), 'mini', 0, 1).''; } else { $result .= img_object(($notooltip ? '' : $label), ( $this->picto ? $this->picto : 'generic'), ($notooltip ? (($withpicto != 2) ? 'class="paddingright"' : '') : 'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip ? 0 : 1); } } if ($withpicto != 2 && $withpicto != -2) { - $result .= ($maxlen ?dol_trunc($this->getFullName($langs), $maxlen) : $this->getFullName($langs)); + $result .= ''.($maxlen ? dol_trunc($this->getFullName($langs), $maxlen) : $this->getFullName($langs)).''; } $result .= $linkend; diff --git a/htdocs/contact/consumption.php b/htdocs/contact/consumption.php index bb610baa4b0..631bf932640 100644 --- a/htdocs/contact/consumption.php +++ b/htdocs/contact/consumption.php @@ -20,7 +20,7 @@ */ /** - * \file htdocs/societe/consumption.php + * \file htdocs/contact/consumption.php * \ingroup societe * \brief Add a tab on thirpdarty view to list all products/services bought or sells by thirdparty */ @@ -32,10 +32,10 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php'; require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; -// Security check +$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') + $id = GETPOST('id', 'int'); -$result = restrictedArea($user, 'contact', $id, 'socpeople&societe'); $object = new Contact($db); if ($id > 0) { $object->fetch($id); @@ -47,8 +47,8 @@ $socid = $object->thirdparty->id; // Sort & Order fields $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; @@ -86,6 +86,8 @@ $langs->loadLangs(array("companies", "bills", "orders", "suppliers", "propal", " // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context $hookmanager->initHooks(array('consumptioncontact')); +$result = restrictedArea($user, 'contact', $object->id, 'socpeople&societe'); + /* * Actions @@ -120,7 +122,11 @@ print dol_get_fiche_head($head, 'consumption', $langs->trans("ContactsAddresses" $linkback = ''.$langs->trans("BackToList").''; -$morehtmlref = '
    '; +$morehtmlref = ''; +$morehtmlref .= img_picto($langs->trans("Download").' '.$langs->trans("VCard"), 'vcard.png', 'class="valignmiddle marginleftonly paddingrightonly"'); +$morehtmlref .= ''; + +$morehtmlref .= '
    '; if (empty($conf->global->SOCIETE_DISABLE_CONTACTS)) { $objsoc->fetch($socid); // Thirdparty @@ -196,7 +202,7 @@ if ($type_element == 'fichinter') { // Customer : show products from invoices $sql_select = 'SELECT f.rowid as doc_id, f.ref as doc_number, \'1\' as doc_type, f.datec as dateprint, f.fk_statut as status, tc.libelle as type_contact_label, '; $tables_from = MAIN_DB_PREFIX.'fichinterdet d'; $tables_from .= ' LEFT JOIN '.MAIN_DB_PREFIX.'fichinter as f ON d.fk_fichinter=f.rowid'; - $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX.'element_contact ec ON ec.element_id=f.rowid AND ec.fk_socpeople='.$object->id; + $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX.'element_contact ec ON ec.element_id=f.rowid AND ec.fk_socpeople = '.((int) $object->id); $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX."c_type_contact tc ON (ec.fk_c_type_contact=tc.rowid and tc.element='fichinter' and tc.source='external' and tc.active=1)"; $where = ' WHERE f.entity IN ('.getEntity('ficheinter').')'; $dateprint = 'f.datec'; @@ -208,7 +214,7 @@ if ($type_element == 'fichinter') { // Customer : show products from invoices $tables_from = MAIN_DB_PREFIX.'facturedet d'; $tables_from .= ' LEFT JOIN '.MAIN_DB_PREFIX.'facture as f ON d.fk_facture=f.rowid'; $tables_from .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product p ON d.fk_product=p.rowid'; - $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX.'element_contact ec ON ec.element_id=f.rowid AND ec.fk_socpeople='.$object->id; + $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX.'element_contact ec ON ec.element_id=f.rowid AND ec.fk_socpeople = '.((int) $object->id); $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX."c_type_contact tc ON (ec.fk_c_type_contact=tc.rowid and tc.element='facture' and tc.source='external' and tc.active=1)"; $where = " WHERE f.entity IN (".getEntity('invoice').")"; $dateprint = 'f.datef'; @@ -221,7 +227,7 @@ if ($type_element == 'fichinter') { // Customer : show products from invoices $tables_from = MAIN_DB_PREFIX.'propaldet d'; $tables_from .= ' LEFT JOIN '.MAIN_DB_PREFIX.'propal as c ON d.fk_propal=c.rowid'; $tables_from .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product p ON d.fk_product=p.rowid'; - $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX.'element_contact ec ON ec.element_id=c.rowid AND ec.fk_socpeople='.$object->id; + $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX.'element_contact ec ON ec.element_id=c.rowid AND ec.fk_socpeople = '.((int) $object->id); $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX."c_type_contact tc ON (ec.fk_c_type_contact=tc.rowid and tc.element='propal' and tc.source='external' and tc.active=1)"; $where = ' WHERE c.entity IN ('.getEntity('propal').')'; $datePrint = 'c.datep'; @@ -234,7 +240,7 @@ if ($type_element == 'fichinter') { // Customer : show products from invoices $tables_from = MAIN_DB_PREFIX.'commandedet d'; $tables_from .= ' LEFT JOIN '.MAIN_DB_PREFIX.'commande as c ON d.fk_commande=c.rowid'; $tables_from .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product p ON d.fk_product=p.rowid'; - $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX.'element_contact ec ON ec.element_id=c.rowid AND ec.fk_socpeople='.$object->id; + $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX.'element_contact ec ON ec.element_id=c.rowid AND ec.fk_socpeople = '.((int) $object->id); $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX."c_type_contact tc ON (ec.fk_c_type_contact=tc.rowid and tc.element='commande' and tc.source='external' and tc.active=1)"; $where = ' WHERE c.entity IN ('.getEntity('order').')'; $dateprint = 'c.date_commande'; @@ -247,7 +253,7 @@ if ($type_element == 'fichinter') { // Customer : show products from invoices $tables_from = MAIN_DB_PREFIX.'facture_fourn_det d'; $tables_from .= ' LEFT JOIN '.MAIN_DB_PREFIX.'facture_fourn as f ON d.fk_facture_fourn=f.rowid'; $tables_from .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product p ON d.fk_product=p.rowid'; - $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX.'element_contact ec ON ec.element_id=f.rowid AND ec.fk_socpeople='.$object->id; + $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX.'element_contact ec ON ec.element_id=f.rowid AND ec.fk_socpeople = '.((int) $object->id); $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX."c_type_contact tc ON (ec.fk_c_type_contact=tc.rowid and tc.element='invoice_supplier' and tc.source='external' and tc.active=1)"; $where = ' WHERE f.entity IN ('.getEntity($documentstatic->element).')'; $dateprint = 'f.datef'; @@ -272,7 +278,7 @@ if ($type_element == 'fichinter') { // Customer : show products from invoices $tables_from = MAIN_DB_PREFIX.'commande_fournisseurdet d'; $tables_from .= ' LEFT JOIN '.MAIN_DB_PREFIX.'commande_fournisseur as c ON d.fk_commande=c.rowid'; $tables_from .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product p ON d.fk_product=p.rowid'; - $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX.'element_contact ec ON ec.element_id=c.rowid AND ec.fk_socpeople='.$object->id; + $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX.'element_contact ec ON ec.element_id=c.rowid AND ec.fk_socpeople = '.((int) $object->id); $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX."c_type_contact tc ON (ec.fk_c_type_contact=tc.rowid and tc.element='order_supplier' and tc.source='external' and tc.active=1)"; $where = ' WHERE c.entity IN ('.getEntity($documentstatic->element).')'; $dateprint = 'c.date_valid'; @@ -286,7 +292,7 @@ if ($type_element == 'fichinter') { // Customer : show products from invoices $tables_from = MAIN_DB_PREFIX.'contratdet d'; $tables_from .= ' LEFT JOIN '.MAIN_DB_PREFIX.'contrat as c ON d.fk_contrat=c.rowid'; $tables_from .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product p ON d.fk_product=p.rowid'; - $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX.'element_contact ec ON ec.element_id=c.rowid AND ec.fk_socpeople='.$object->id; + $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX.'element_contact ec ON ec.element_id=c.rowid AND ec.fk_socpeople = '.((int) $object->id); $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX."c_type_contact tc ON (ec.fk_c_type_contact=tc.rowid and tc.element='contrat' and tc.source='external' and tc.active=1)"; $where = ' WHERE c.entity IN ('.getEntity('contrat').')'; $dateprint = 'c.date_valid'; diff --git a/htdocs/contact/document.php b/htdocs/contact/document.php index 1870e7b8d9c..3fac8adea15 100644 --- a/htdocs/contact/document.php +++ b/htdocs/contact/document.php @@ -51,8 +51,8 @@ if (!empty($canvas)) { // Get parameters $limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; @@ -130,7 +130,11 @@ if ($object->id) { $linkback = ''.$langs->trans("BackToList").''; - $morehtmlref = '
    '; + $morehtmlref = ''; + $morehtmlref .= img_picto($langs->trans("Download").' '.$langs->trans("VCard"), 'vcard.png', 'class="valignmiddle marginleftonly paddingrightonly"'); + $morehtmlref .= ''; + + $morehtmlref .= '
    '; if (empty($conf->global->SOCIETE_DISABLE_CONTACTS)) { $objsoc = new Societe($db); $objsoc->fetch($object->socid); diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index ec886ce1d4e..66561730829 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -1169,7 +1169,7 @@ while ($i < min($num, $limit)) { } // EMail if (!empty($arrayfields['p.email']['checked'])) { - print ''.dol_print_email($obj->email, $obj->rowid, $obj->socid, 'AC_EMAIL', 18, 0, 1).''; + print ''.dol_print_email($obj->email, $obj->rowid, $obj->socid, 'AC_EMAIL', 18, 0, 1).''; if (!$i) { $totalarray['nbfield']++; } diff --git a/htdocs/contact/note.php b/htdocs/contact/note.php index 7c722d31211..a3bfb861b0f 100644 --- a/htdocs/contact/note.php +++ b/htdocs/contact/note.php @@ -96,7 +96,11 @@ if ($id > 0) { $linkback = ''.$langs->trans("BackToList").''; - $morehtmlref = '
    '; + $morehtmlref = ''; + $morehtmlref .= img_picto($langs->trans("Download").' '.$langs->trans("VCard"), 'vcard.png', 'class="valignmiddle marginleftonly paddingrightonly"'); + $morehtmlref .= ''; + + $morehtmlref .= '
    '; if (empty($conf->global->SOCIETE_DISABLE_CONTACTS)) { $objsoc = new Societe($db); $objsoc->fetch($object->socid); diff --git a/htdocs/contact/perso.php b/htdocs/contact/perso.php index 285f71cae48..e90f8b46bd0 100644 --- a/htdocs/contact/perso.php +++ b/htdocs/contact/perso.php @@ -215,7 +215,11 @@ if ($action == 'edit') { $linkback = ''.$langs->trans("BackToList").''; - $morehtmlref = '
    '; + $morehtmlref = ''; + $morehtmlref .= img_picto($langs->trans("Download").' '.$langs->trans("VCard"), 'vcard.png', 'class="valignmiddle marginleftonly paddingrightonly"'); + $morehtmlref .= ''; + + $morehtmlref .= '
    '; if (empty($conf->global->SOCIETE_DISABLE_CONTACTS)) { $objsoc = new Societe($db); $objsoc->fetch($object->socid); diff --git a/htdocs/contact/project.php b/htdocs/contact/project.php new file mode 100644 index 00000000000..b05709f019a --- /dev/null +++ b/htdocs/contact/project.php @@ -0,0 +1,117 @@ + + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** + * \file htdocs/contact/project.php + * \ingroup contact + * \brief Page of third party projects + */ + +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; + +$langs->loadLangs(array("contacts", "companies", "projects")); + +// Security check +$id = GETPOST('id', 'int'); +$result = restrictedArea($user, 'contact', $id, 'socpeople&societe'); + +// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context +$hookmanager->initHooks(array('projectcontact')); + +/* + * Actions + */ + +$parameters = array('id' => $id); +$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks +if ($reshook < 0) { + setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); +} + +/* + * View + */ + +$form = new Form($db); + +if ($id) { + require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; + require_once DOL_DOCUMENT_ROOT.'/core/lib/contact.lib.php'; + + $object = new Contact($db); + + $result = $object->fetch($id); + if (empty($object->thirdparty)) { + $object->fetch_thirdparty(); + } + $socid = $object->thirdparty->id; + $title = $langs->trans("Projects"); + if (! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/thirdpartynameonly/', $conf->global->MAIN_HTML_TITLE) && $object->name) { + $title = $object->name." - ".$title; + } + llxHeader('', $title); + + if (! empty($conf->notification->enabled)) { + $langs->load("mails"); + } + $head = contact_prepare_head($object); + + print dol_get_fiche_head($head, 'project', $langs->trans("Contact"), -1, 'contact'); + + $linkback = ''.$langs->trans("BackToList").''; + + $morehtmlref = '
    '; + if (empty($conf->global->SOCIETE_DISABLE_CONTACTS) && !empty($socid)) { + $object->thirdparty->fetch($socid); + // Thirdparty + $morehtmlref .= $langs->trans('ThirdParty').' : '; + if ($object->thirdparty->id > 0) { + $morehtmlref .= $object->thirdparty->getNomUrl(1, 'contact'); + } else { + $morehtmlref .= $langs->trans("ContactNotLinkedToCompany"); + } + } + $morehtmlref .= '
    '; + + dol_banner_tab($object, 'id', $linkback, ($user->socid ? 0 : 1), 'rowid', 'nom', $morehtmlref); + + print '
    '; + + print '
    '; + print ''; + + // Civility + print ''; + + print '
    '.$langs->trans("UserTitle").''; + print $object->getCivilityLabel(); + print '
    '; + + print '
    '; + + print dol_get_fiche_end(); + print '
    '; + + // Projects list + $result = show_contacts_projects($conf, $langs, $db, $object, $_SERVER["PHP_SELF"].'?id='.$object->id, 1); +} + +// End of page +llxFooter(); +$db->close(); diff --git a/htdocs/contrat/agenda.php b/htdocs/contrat/agenda.php index eeeccddd671..d654ac38d9f 100644 --- a/htdocs/contrat/agenda.php +++ b/htdocs/contrat/agenda.php @@ -57,8 +57,8 @@ if ($user->socid) { $result = restrictedArea($user, 'contrat', $id, ''); $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; @@ -245,6 +245,8 @@ if ($id > 0) { $newcardbutton = ''; if (!empty($conf->agenda->enabled)) { if (!empty($user->rights->agenda->myactions->create) || !empty($user->rights->agenda->allactions->create)) { + $backtopage = $_SERVER['PHP_SELF'].'?id='.$object->id; + $out = '&origin='.$object->element.'&originid='.$object->id.'&backtopage='.urlencode($backtopage); $newcardbutton .= dolGetButtonTitle($langs->trans('AddAction'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out); } } diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index c52b57e305f..3febcc868a0 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -40,6 +40,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/modules/contract/modules_contract.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; if (!empty($conf->propal->enabled)) { require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; } @@ -248,6 +249,10 @@ if (empty($reshook)) { if ($element == 'propal') { $element = 'comm/propal'; $subelement = 'propal'; } + if ($element == 'invoice' || $element == 'facture') { + $element = 'compta/facture'; + $subelement = 'facture'; + } $object->origin = $origin; $object->origin_id = $originid; @@ -1040,6 +1045,10 @@ if ($action == 'create') { if ($element == 'propal') { $element = 'comm/propal'; $subelement = 'propal'; } + if ($element == 'invoice' || $element == 'facture') { + $element = 'compta/facture'; + $subelement = 'facture'; + } dol_include_once('/'.$element.'/class/'.$subelement.'.class.php'); @@ -1537,11 +1546,11 @@ if ($action == 'create') { // Margin if (!empty($conf->margin->enabled) && !empty($conf->global->MARGIN_SHOW_ON_CONTRACT)) { - print ''.price($objp->pa_ht).''; + print ''.price($objp->pa_ht).''; } // Icon move, update et delete (statut contrat 0=brouillon,1=valide,2=ferme) - print ''; + print ''; if ($user->rights->contrat->creer && count($arrayothercontracts) && ($object->statut >= 0)) { print ''; print ''; diff --git a/htdocs/contrat/class/api_contracts.class.php b/htdocs/contrat/class/api_contracts.class.php index ea7886f022c..5e534f3e43c 100644 --- a/htdocs/contrat/class/api_contracts.class.php +++ b/htdocs/contrat/class/api_contracts.class.php @@ -147,8 +147,9 @@ class Contracts extends DolibarrApi } // Add sql filters if ($sqlfilters) { - if (!DolibarrApi::_checkFilters($sqlfilters)) { - throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters); + $errormessage = ''; + if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); } $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index 27e8cc6bf95..b2c9543453b 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -387,7 +387,7 @@ class Contrat extends CommonObject if ($contratline->statut != ContratLigne::STATUS_OPEN) { $contratline->context = $this->context; - $result = $contratline->active_line($user, $date_start, -1, $comment); + $result = $contratline->active_line($user, $date_start, -1, $comment); // This call trigger LINECONTRACT_ACTIVATE if ($result < 0) { $error++; $this->error = $contratline->error; diff --git a/htdocs/contrat/document.php b/htdocs/contrat/document.php index b4cf2fc1fbf..953fd0002d2 100644 --- a/htdocs/contrat/document.php +++ b/htdocs/contrat/document.php @@ -55,8 +55,8 @@ $result = restrictedArea($user, 'contrat', $id); // Get parameters $limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index ed980f9e86e..e6446e3585b 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -79,8 +79,8 @@ $search_date_end = dol_mktime(23, 59, 59, $search_date_endmonth, $search_date_en $optioncss = GETPOST('optioncss', 'alpha'); $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; diff --git a/htdocs/contrat/services_list.php b/htdocs/contrat/services_list.php index 31621ba420a..39dfe336a31 100644 --- a/htdocs/contrat/services_list.php +++ b/htdocs/contrat/services_list.php @@ -39,8 +39,8 @@ $optioncss = GETPOST('optioncss', 'aZ09'); $massaction = GETPOST('massaction', 'alpha'); $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; -$sortfield = GETPOST("sortfield", 'alpha'); -$sortorder = GETPOST("sortorder", 'alpha'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +$sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page == -1) { $page = 0; diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index 913c0cb768e..602897d34f9 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -81,7 +81,7 @@ if (!$error && $massaction == 'confirm_presend') { $listofobjectref = array(); $contactidtosend = array(); $attachedfilesThirdpartyObj = array(); - $oneemailperrecipient = (GETPOST('oneemailperrecipient') == 'on' ? 1 : 0); + $oneemailperrecipient = (GETPOST('oneemailperrecipient', 'int') ? 1 : 0); if (!$error) { $thirdparty = new Societe($db); @@ -657,8 +657,8 @@ if ($massaction == 'confirm_createbills') { // Create bills from orders. // If we want one invoice per order or if there is no first invoice yet for this thirdparty. $objecttmp->socid = $cmd->socid; $objecttmp->type = $objecttmp::TYPE_STANDARD; - $objecttmp->cond_reglement_id = ($cmd->cond_reglement_id || $cmd->thirdparty->cond_reglement_id); - $objecttmp->mode_reglement_id = ($cmd->mode_reglement_id || $cmd->thirdparty->mode_reglement_id); + $objecttmp->cond_reglement_id = !empty($cmd->cond_reglement_id) ? $cmd->cond_reglement_id : $cmd->thirdparty->cond_reglement_id; + $objecttmp->mode_reglement_id = !empty($cmd->mode_reglement_id) ? $cmd->mode_reglement_id : $cmd->thirdparty->mode_reglement_id; $objecttmp->fk_project = $cmd->fk_project; $objecttmp->multicurrency_code = $cmd->multicurrency_code; diff --git a/htdocs/core/actions_setmoduleoptions.inc.php b/htdocs/core/actions_setmoduleoptions.inc.php index 43ddd23f13d..fbf526fd58e 100644 --- a/htdocs/core/actions_setmoduleoptions.inc.php +++ b/htdocs/core/actions_setmoduleoptions.inc.php @@ -29,13 +29,13 @@ // $formSetup may be defined -if ($action == 'update' && !empty($formSetup) && is_object($formSetup)) { +if ($action == 'update' && !empty($formSetup) && is_object($formSetup) && !empty($user->admin)) { $formSetup->saveConfFromPost(); return; } -if ($action == 'update' && is_array($arrayofparameters)) { +if ($action == 'update' && is_array($arrayofparameters) && !empty($user->admin)) { $db->begin(); foreach ($arrayofparameters as $key => $val) { @@ -72,8 +72,37 @@ if ($action == 'update' && is_array($arrayofparameters)) { } } +if ($action == 'deletefile' && $modulepart == 'doctemplates' && !empty($user->admin)) { + include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + $keyforuploaddir = GETPOST('keyforuploaddir', 'aZ09'); + + $listofdir = explode(',', preg_replace('/[\r\n]+/', ',', trim(getDolGlobalString($keyforuploaddir)))); + foreach ($listofdir as $key => $tmpdir) { + $tmpdir = preg_replace('/DOL_DATA_ROOT\/*/', '', $tmpdir); // Clean string if we found a hardcoded DOL_DATA_ROOT + if (!$tmpdir) { + unset($listofdir[$key]); + continue; + } + $tmpdir = DOL_DATA_ROOT.'/'.$tmpdir; // Complete with DOL_DATA_ROOT. Only files into DOL_DATA_ROOT can be reach/set + if (!is_dir($tmpdir)) { + if (empty($nomessageinsetmoduleoptions)) { + setEventMessages($langs->trans("ErrorDirNotFound", $tmpdir), null, 'warnings'); + } + } else { + $upload_dir = $tmpdir; + break; // So we take the first directory found into setup $conf->global->$keyforuploaddir + } + } + + $filetodelete = $tmpdir.'/'.GETPOST('file'); + $result = dol_delete_file($filetodelete); + if ($result > 0) { + setEventMessages($langs->trans("FileWasRemoved", GETPOST('file')), null, 'mesgs'); + } +} + // Define constants for submodules that contains parameters (forms with param1, param2, ... and value1, value2, ...) -if ($action == 'setModuleOptions') { +if ($action == 'setModuleOptions' && !empty($user->admin)) { $db->begin(); // Process common param fields @@ -97,20 +126,22 @@ if ($action == 'setModuleOptions') { if (GETPOST('upload', 'alpha') && GETPOST('keyforuploaddir', 'aZ09')) { include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $keyforuploaddir = GETPOST('keyforuploaddir', 'aZ09'); - $listofdir = explode(',', preg_replace('/[\r\n]+/', ',', trim($conf->global->$keyforuploaddir))); + $listofdir = explode(',', preg_replace('/[\r\n]+/', ',', trim(getDolGlobalString($keyforuploaddir)))); foreach ($listofdir as $key => $tmpdir) { $tmpdir = trim($tmpdir); - $tmpdir = preg_replace('/DOL_DATA_ROOT/', DOL_DATA_ROOT, $tmpdir); + $tmpdir = preg_replace('/DOL_DATA_ROOT\/*/', '', $tmpdir); // Clean string if we found a hardcoded DOL_DATA_ROOT if (!$tmpdir) { unset($listofdir[$key]); continue; } + $tmpdir = DOL_DATA_ROOT.'/'.$tmpdir; // Complete with DOL_DATA_ROOT. Only files into DOL_DATA_ROOT can be reach/set if (!is_dir($tmpdir)) { if (empty($nomessageinsetmoduleoptions)) { setEventMessages($langs->trans("ErrorDirNotFound", $tmpdir), null, 'warnings'); } } else { $upload_dir = $tmpdir; + break; // So we take the first directory found into setup $conf->global->$keyforuploaddir } } if ($upload_dir) { diff --git a/htdocs/core/ajax/check_notifications.php b/htdocs/core/ajax/check_notifications.php index bbbc95a19c5..a5efb52e787 100644 --- a/htdocs/core/ajax/check_notifications.php +++ b/htdocs/core/ajax/check_notifications.php @@ -170,8 +170,10 @@ if (empty($_SESSION['auto_check_events_not_before']) || $time >= $_SESSION['auto $event['code'] = $obj->code; $event['label'] = $obj->label; $event['location'] = $obj->location; - $event['reminder_date_formated'] = dol_print_date($db->jdate($obj->dateremind), 'standard'); - $event['event_date_start_formated'] = dol_print_date($db->jdate($obj->datep), 'standard'); + $event['reminder_date_formated_tzserver'] = dol_print_date($db->jdate($obj->dateremind), 'standard', 'tzserver'); + $event['event_date_start_formated_tzserver'] = dol_print_date($db->jdate($obj->datep), 'standard', 'tzserver'); + $event['reminder_date_formated'] = dol_print_date($db->jdate($obj->dateremind), 'standard', 'tzuser'); + $event['event_date_start_formated'] = dol_print_date($db->jdate($obj->datep), 'standard', 'tzuser'); $eventfound[$obj->id_agenda] = $event; } diff --git a/htdocs/core/ajax/onlineSign.php b/htdocs/core/ajax/onlineSign.php index 488b5051ea5..5110918541f 100644 --- a/htdocs/core/ajax/onlineSign.php +++ b/htdocs/core/ajax/onlineSign.php @@ -51,11 +51,30 @@ if (!defined('NOBROWSERNOTIF')) { include '../../main.inc.php'; $action = GETPOST('action', 'aZ09'); + $signature = GETPOST('signaturebase64'); $ref = GETPOST('ref', 'aZ09'); $mode = GETPOST('mode', 'aZ09'); +$SECUREKEY = GETPOST("securekey"); // Secure key + $error = 0; $response = ""; + +$type = $mode; + +// Check securitykey +$securekeyseed = ''; +if ($type == 'proposal') { + $securekeyseed = $conf->global->PROPOSAL_ONLINE_SIGNATURE_SECURITY_TOKEN; +} + +if (!dol_verifyHash($securekeyseed.$type.$ref, $SECUREKEY, '0')) { + http_response_code(403); + print 'Bad value for securitykey. Value provided '.dol_escape_htmltag($SECUREKEY).' does not match expected value for ref='.dol_escape_htmltag($ref); + exit(-1); +} + + /* * Actions */ @@ -71,62 +90,91 @@ if ($action == "importSignature") { if (!empty($signature) && $signature[0] == "image/png;base64") { $signature = $signature[1]; $data = base64_decode($signature); - $upload_dir = DOL_DATA_ROOT."/".$mode."/".$ref."/"; - $date = dol_print_date(dol_now(), "%Y%m%d%H%M%S"); - $filename = "signatures/".$date."_signature.png"; - if (!is_dir($upload_dir."signatures/")) { - if (!mkdir($upload_dir."signatures/")) { - $response ="error mkdir"; - $error++; + + if ($mode == "propale" || $mode == 'proposal') { + require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; + require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php'; + $object = new Propal($db); + $object->fetch(0, $ref); + + $upload_dir = !empty($conf->propal->multidir_output[$object->entity])?$conf->propal->multidir_output[$object->entity]:$conf->propal->dir_output; + $upload_dir .= '/'.dol_sanitizeFileName($object->ref).'/'; + + $date = dol_print_date(dol_now(), "%Y%m%d%H%M%S"); + $filename = "signatures/".$date."_signature.png"; + if (!is_dir($upload_dir."signatures/")) { + if (!dol_mkdir($upload_dir."signatures/")) { + $response ="Error mkdir. Failed to create dir ".$upload_dir."signatures/"; + $error++; + } } - } - if (!$error) { - $return = file_put_contents($upload_dir.$filename, $data); - if ($return == false) { - $response = 'error file_put_content'; - } else { - if ($mode == "propale") { - require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; - require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php'; - $object = new Propal($db); - $object->fetch(0, $ref); - $pdf = pdf_getInstance(); - $pdf->Open(); - $pdf->AddPage(); - $pagecount = $pdf->setSourceFile($upload_dir.$ref.".pdf"); + if (!$error) { + $return = file_put_contents($upload_dir.$filename, $data); + if ($return == false) { + $error++; + $response = 'Error file_put_content: failed to create signature file.'; + } + } - $tppl = $pdf->importPage(1); - $pdf->useTemplate($tppl); - $pdf->Image($upload_dir.$filename, 129, 239.6, 60, 15); - $pdf->Close(); - $pdf->Output($upload_dir.$ref."_signed-".$date.".pdf", "F"); + if (!$error) { + $newpdffilename = $upload_dir.$ref."_signed-".$date.".pdf"; - $sql = "UPDATE ".MAIN_DB_PREFIX."propal"; - $sql .= " SET fk_statut = ".((int) $object::STATUS_SIGNED).", note_private = '".$object->note_private."', date_signature='".$db->idate(dol_now())."'"; - $sql .= " WHERE rowid = ".((int) $object->id); + $pdf = pdf_getInstance(); + $pdf->Open(); + $pdf->AddPage(); + $pagecount = $pdf->setSourceFile($upload_dir.$ref.".pdf"); // original PDF - dol_syslog(__METHOD__, LOG_DEBUG); - $resql = $db->query($sql); - if (!$resql) { - $error++; - } else { - $num = $db->affected_rows($resql); - } + $tppl = $pdf->importPage(1); + $pdf->useTemplate($tppl); + $pdf->Image($upload_dir.$filename, 129, 239.6, 60, 15); // FIXME Position will be wrong with non A4 format. Use a value from width and height of page minus relative offset. + $pdf->Close(); + $pdf->Output($newpdffilename, "F"); - if (!$error) { - $db->commit(); - $response = "success"; - setEventMessage("PropalSigned"); - } else { - $db->rollback(); - $response = "error sql"; - } + $db->begin(); + + // Index the new file and update the last_main_doc property of object. + $object->indexFile($newpdffilename, 1); + + $online_sign_ip = getUserRemoteIP(); + $online_sign_name = ''; // TODO Ask name on form to sign + + $sql = "UPDATE ".MAIN_DB_PREFIX."propal"; + $sql .= " SET fk_statut = ".((int) $object::STATUS_SIGNED).", note_private = '".$db->escape($object->note_private)."',"; + $sql .= " date_signature = '".$db->idate(dol_now())."',"; + $sql .= " online_sign_ip = '".$db->escape($online_sign_ip)."'"; + if ($online_sign_name) { + $sql .= ", online_sign_name = '".$db->escape($online_sign_name)."'"; + } + $sql .= " WHERE rowid = ".((int) $object->id); + + dol_syslog(__METHOD__, LOG_DEBUG); + $resql = $db->query($sql); + if (!$resql) { + $error++; + } else { + $num = $db->affected_rows($resql); + } + + if (!$error) { + $db->commit(); + $response = "success"; + setEventMessages("PropalSigned", null, 'warnings'); + } else { + $db->rollback(); + $error++; + $response = "error sql"; } } } } else { + $error++; $response = 'error signature_not_found'; } } + +if ($error) { + http_response_code(501); +} + echo $response; diff --git a/htdocs/core/ajax/row.php b/htdocs/core/ajax/row.php index 0b1106ca20a..9853faa8585 100644 --- a/htdocs/core/ajax/row.php +++ b/htdocs/core/ajax/row.php @@ -95,6 +95,8 @@ if (GETPOST('roworder', 'alpha', 3) && GETPOST('table_element_line', 'aZ09', 3) $perm = 1; } elseif ($table_element_line == 'facture_fourn_det' && $user->rights->fournisseur->facture->creer) { $perm = 1; + } elseif ($table_element_line == 'facture_fourn_det_rec' && $user->rights->fournisseur->facture->creer) { + $perm = 1; } elseif ($table_element_line == 'ecm_files' && $fk_element == 'fk_product' && (!empty($user->rights->produit->creer) || !empty($user->rights->service->creer))) { $perm = 1; } elseif ($table_element_line == 'ecm_files' && $fk_element == 'fk_ticket' && !empty($user->rights->ticket->write)) { diff --git a/htdocs/core/ajax/selectsearchbox.php b/htdocs/core/ajax/selectsearchbox.php index 1814b476d06..ae4f7c41515 100644 --- a/htdocs/core/ajax/selectsearchbox.php +++ b/htdocs/core/ajax/selectsearchbox.php @@ -65,58 +65,58 @@ $arrayresult = array(); // Define $searchform if (!empty($conf->adherent->enabled) && empty($conf->global->MAIN_SEARCHFORM_ADHERENT_DISABLED) && $user->rights->adherent->lire) { - $arrayresult['searchintomember'] = array('position'=>8, 'shortcut'=>'M', 'img'=>'object_member', 'label'=>$langs->trans("SearchIntoMembers", $search_boxvalue), 'text'=>img_picto('', 'object_member').' '.$langs->trans("SearchIntoMembers", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/adherents/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintomember'] = array('position'=>8, 'shortcut'=>'M', 'img'=>'object_member', 'label'=>$langs->trans("SearchIntoMembers", $search_boxvalue), 'text'=>img_picto('', 'object_member', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoMembers", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/adherents/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } if (((!empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))) && empty($conf->global->MAIN_SEARCHFORM_SOCIETE_DISABLED) && $user->rights->societe->lire) { - $arrayresult['searchintothirdparty'] = array('position'=>10, 'shortcut'=>'T', 'img'=>'object_company', 'label'=>$langs->trans("SearchIntoThirdparties", $search_boxvalue), 'text'=>img_picto('', 'object_company').' '.$langs->trans("SearchIntoThirdparties", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/societe/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintothirdparty'] = array('position'=>10, 'shortcut'=>'T', 'img'=>'object_company', 'label'=>$langs->trans("SearchIntoThirdparties", $search_boxvalue), 'text'=>img_picto('', 'object_company', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoThirdparties", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/societe/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } if (!empty($conf->societe->enabled) && empty($conf->global->MAIN_SEARCHFORM_CONTACT_DISABLED) && $user->rights->societe->lire) { - $arrayresult['searchintocontact'] = array('position'=>15, 'shortcut'=>'A', 'img'=>'object_contact', 'label'=>$langs->trans("SearchIntoContacts", $search_boxvalue), 'text'=>img_picto('', 'object_contact').' '.$langs->trans("SearchIntoContacts", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/contact/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintocontact'] = array('position'=>15, 'shortcut'=>'A', 'img'=>'object_contact', 'label'=>$langs->trans("SearchIntoContacts", $search_boxvalue), 'text'=>img_picto('', 'object_contact', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoContacts", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/contact/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } if (((!empty($conf->product->enabled) && $user->rights->produit->lire) || (!empty($conf->service->enabled) && $user->rights->service->lire)) && empty($conf->global->MAIN_SEARCHFORM_PRODUITSERVICE_DISABLED)) { - $arrayresult['searchintoproduct'] = array('position'=>30, 'shortcut'=>'P', 'img'=>'object_product', 'label'=>$langs->trans("SearchIntoProductsOrServices", $search_boxvalue), 'text'=>img_picto('', 'object_product').' '.$langs->trans("SearchIntoProductsOrServices", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/product/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintoproduct'] = array('position'=>30, 'shortcut'=>'P', 'img'=>'object_product', 'label'=>$langs->trans("SearchIntoProductsOrServices", $search_boxvalue), 'text'=>img_picto('', 'object_product', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoProductsOrServices", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/product/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); // search on lot/serial numbers if ( ! empty($conf->productbatch->enabled) ) { - $arrayresult['searchintobatch'] = array('position'=>32, 'shortcut'=>'B', 'img'=>'object_lot', 'label'=>$langs->trans("SearchIntoBatch", $search_boxvalue), 'text'=>img_picto('', 'object_lot').' '.$langs->trans("SearchIntoBatch", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/product/stock/productlot_list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintobatch'] = array('position'=>32, 'shortcut'=>'B', 'img'=>'object_lot', 'label'=>$langs->trans("SearchIntoBatch", $search_boxvalue), 'text'=>img_picto('', 'object_lot', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoBatch", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/product/stock/productlot_list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } } if (!empty($conf->mrp->enabled) && $user->rights->mrp->read && empty($conf->global->MAIN_SEARCHFORM_MRP_DISABLED)) { - $arrayresult['searchintomo'] = array('position'=>35, 'shortcut'=>'', 'img'=>'object_mrp', 'label'=>$langs->trans("SearchIntoMO", $search_boxvalue), 'text'=>img_picto('', 'object_mrp').' '.$langs->trans("SearchIntoMO", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/mrp/mo_list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintomo'] = array('position'=>35, 'shortcut'=>'', 'img'=>'object_mrp', 'label'=>$langs->trans("SearchIntoMO", $search_boxvalue), 'text'=>img_picto('', 'object_mrp', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoMO", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/mrp/mo_list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : '')); } if (!empty($conf->projet->enabled) && empty($conf->global->MAIN_SEARCHFORM_PROJECT_DISABLED) && $user->rights->projet->lire) { - $arrayresult['searchintoprojects'] = array('position'=>40, 'shortcut'=>'Q', 'img'=>'object_project', 'label'=>$langs->trans("SearchIntoProjects", $search_boxvalue), 'text'=>img_picto('', 'object_project').' '.$langs->trans("SearchIntoProjects", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/projet/list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintoprojects'] = array('position'=>40, 'shortcut'=>'Q', 'img'=>'object_project', 'label'=>$langs->trans("SearchIntoProjects", $search_boxvalue), 'text'=>img_picto('', 'object_project', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoProjects", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/projet/list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : '')); } if (!empty($conf->projet->enabled) && empty($conf->global->MAIN_SEARCHFORM_TASK_DISABLED) && $user->rights->projet->lire) { - $arrayresult['searchintotasks'] = array('position'=>45, 'img'=>'object_projecttask', 'label'=>$langs->trans("SearchIntoTasks", $search_boxvalue), 'text'=>img_picto('', 'object_projecttask').' '.$langs->trans("SearchIntoTasks", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/projet/tasks/list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintotasks'] = array('position'=>45, 'img'=>'object_projecttask', 'label'=>$langs->trans("SearchIntoTasks", $search_boxvalue), 'text'=>img_picto('', 'object_projecttask', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoTasks", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/projet/tasks/list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : '')); } if (!empty($conf->propal->enabled) && empty($conf->global->MAIN_SEARCHFORM_CUSTOMER_PROPAL_DISABLED) && $user->rights->propal->lire) { - $arrayresult['searchintopropal'] = array('position'=>60, 'img'=>'object_propal', 'label'=>$langs->trans("SearchIntoCustomerProposals", $search_boxvalue), 'text'=>img_picto('', 'object_propal').' '.$langs->trans("SearchIntoCustomerProposals", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/comm/propal/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintopropal'] = array('position'=>60, 'img'=>'object_propal', 'label'=>$langs->trans("SearchIntoCustomerProposals", $search_boxvalue), 'text'=>img_picto('', 'object_propal', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoCustomerProposals", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/comm/propal/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } if (!empty($conf->commande->enabled) && empty($conf->global->MAIN_SEARCHFORM_CUSTOMER_ORDER_DISABLED) && $user->rights->commande->lire) { - $arrayresult['searchintoorder'] = array('position'=>70, 'img'=>'object_order', 'label'=>$langs->trans("SearchIntoCustomerOrders", $search_boxvalue), 'text'=>img_picto('', 'object_order').' '.$langs->trans("SearchIntoCustomerOrders", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/commande/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintoorder'] = array('position'=>70, 'img'=>'object_order', 'label'=>$langs->trans("SearchIntoCustomerOrders", $search_boxvalue), 'text'=>img_picto('', 'object_order', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoCustomerOrders", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/commande/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } if (!empty($conf->expedition->enabled) && empty($conf->global->MAIN_SEARCHFORM_CUSTOMER_SHIPMENT_DISABLED) && $user->rights->expedition->lire) { - $arrayresult['searchintoshipment'] = array('position'=>80, 'img'=>'object_shipment', 'label'=>$langs->trans("SearchIntoCustomerShipments", $search_boxvalue), 'text'=>img_picto('', 'object_shipment').' '.$langs->trans("SearchIntoCustomerShipments", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/expedition/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintoshipment'] = array('position'=>80, 'img'=>'object_shipment', 'label'=>$langs->trans("SearchIntoCustomerShipments", $search_boxvalue), 'text'=>img_picto('', 'object_shipment', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoCustomerShipments", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/expedition/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } if (!empty($conf->facture->enabled) && empty($conf->global->MAIN_SEARCHFORM_CUSTOMER_INVOICE_DISABLED) && $user->rights->facture->lire) { - $arrayresult['searchintoinvoice'] = array('position'=>90, 'img'=>'object_bill', 'label'=>$langs->trans("SearchIntoCustomerInvoices", $search_boxvalue), 'text'=>img_picto('', 'object_bill').' '.$langs->trans("SearchIntoCustomerInvoices", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/compta/facture/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintoinvoice'] = array('position'=>90, 'img'=>'object_bill', 'label'=>$langs->trans("SearchIntoCustomerInvoices", $search_boxvalue), 'text'=>img_picto('', 'object_bill', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoCustomerInvoices", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/compta/facture/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } if (!empty($conf->supplier_proposal->enabled) && empty($conf->global->MAIN_SEARCHFORM_SUPPLIER_PROPAL_DISABLED) && $user->rights->supplier_proposal->lire) { - $arrayresult['searchintosupplierpropal'] = array('position'=>100, 'img'=>'object_supplier_proposal', 'label'=>$langs->trans("SearchIntoSupplierProposals", $search_boxvalue), 'text'=>img_picto('', 'object_supplier_proposal').' '.$langs->trans("SearchIntoSupplierProposals", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/supplier_proposal/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintosupplierpropal'] = array('position'=>100, 'img'=>'object_supplier_proposal', 'label'=>$langs->trans("SearchIntoSupplierProposals", $search_boxvalue), 'text'=>img_picto('', 'object_supplier_proposal', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoSupplierProposals", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/supplier_proposal/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->commande->lire) || (!empty($conf->supplier_order->enabled) && $user->rights->supplier_order->lire)) && empty($conf->global->MAIN_SEARCHFORM_SUPPLIER_ORDER_DISABLED)) { - $arrayresult['searchintosupplierorder'] = array('position'=>110, 'img'=>'object_supplier_order', 'label'=>$langs->trans("SearchIntoSupplierOrders", $search_boxvalue), 'text'=>img_picto('', 'object_supplier_order').' '.$langs->trans("SearchIntoSupplierOrders", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/fourn/commande/list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintosupplierorder'] = array('position'=>110, 'img'=>'object_supplier_order', 'label'=>$langs->trans("SearchIntoSupplierOrders", $search_boxvalue), 'text'=>img_picto('', 'object_supplier_order', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoSupplierOrders", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/fourn/commande/list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : '')); } if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->facture->lire) || (!empty($conf->supplier_invoice->enabled) && $user->rights->supplier_invoice->lire)) && empty($conf->global->MAIN_SEARCHFORM_SUPPLIER_INVOICE_DISABLED)) { - $arrayresult['searchintosupplierinvoice'] = array('position'=>120, 'img'=>'object_supplier_invoice', 'label'=>$langs->trans("SearchIntoSupplierInvoices", $search_boxvalue), 'text'=>img_picto('', 'object_supplier_invoice').' '.$langs->trans("SearchIntoSupplierInvoices", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/fourn/facture/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintosupplierinvoice'] = array('position'=>120, 'img'=>'object_supplier_invoice', 'label'=>$langs->trans("SearchIntoSupplierInvoices", $search_boxvalue), 'text'=>img_picto('', 'object_supplier_invoice', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoSupplierInvoices", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/fourn/facture/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } // Customer payments @@ -125,7 +125,7 @@ if (!empty($conf->facture->enabled) && empty($conf->global->MAIN_SEARCHFORM_CUST 'position'=>170, 'img'=>'object_payment', 'label'=>$langs->trans("SearchIntoCustomerPayments", $search_boxvalue), - 'text'=>img_picto('', 'object_payment').' '.$langs->trans("SearchIntoCustomerPayments", $search_boxvalue), + 'text'=>img_picto('', 'object_payment', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoCustomerPayments", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/compta/paiement/list.php?leftmenu=customers_bills_payment'.($search_boxvalue ? '&sall='.urlencode($search_boxvalue) : '')); } @@ -135,7 +135,7 @@ if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_S 'position'=>175, 'img'=>'object_payment', 'label'=>$langs->trans("SearchIntoVendorPayments", $search_boxvalue), - 'text'=>img_picto('', 'object_payment').' '.$langs->trans("SearchIntoVendorPayments", $search_boxvalue), + 'text'=>img_picto('', 'object_payment', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoVendorPayments", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/fourn/paiement/list.php?leftmenu=suppliers_bills_payment'.($search_boxvalue ? '&sall='.urlencode($search_boxvalue) : '')); } @@ -145,29 +145,29 @@ if (!empty($conf->banque->enabled) && empty($conf->global->MAIN_SEARCHFORM_MISC_ 'position'=>180, 'img'=>'object_payment', 'label'=>$langs->trans("SearchIntoMiscPayments", $search_boxvalue), - 'text'=>img_picto('', 'object_payment').' '.$langs->trans("SearchIntoMiscPayments", $search_boxvalue), + 'text'=>img_picto('', 'object_payment', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoMiscPayments", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/compta/bank/various_payment/list.php?leftmenu=tax_various'.($search_boxvalue ? '&sall='.urlencode($search_boxvalue) : '')); } if (!empty($conf->contrat->enabled) && empty($conf->global->MAIN_SEARCHFORM_CONTRACT_DISABLED) && $user->rights->contrat->lire) { - $arrayresult['searchintocontract'] = array('position'=>130, 'img'=>'object_contract', 'label'=>$langs->trans("SearchIntoContracts", $search_boxvalue), 'text'=>img_picto('', 'object_contract').' '.$langs->trans("SearchIntoContracts", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/contrat/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintocontract'] = array('position'=>130, 'img'=>'object_contract', 'label'=>$langs->trans("SearchIntoContracts", $search_boxvalue), 'text'=>img_picto('', 'object_contract', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoContracts", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/contrat/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } if (!empty($conf->ficheinter->enabled) && empty($conf->global->MAIN_SEARCHFORM_FICHINTER_DISABLED) && $user->rights->ficheinter->lire) { - $arrayresult['searchintointervention'] = array('position'=>140, 'img'=>'object_intervention', 'label'=>$langs->trans("SearchIntoInterventions", $search_boxvalue), 'text'=>img_picto('', 'object_intervention').' '.$langs->trans("SearchIntoInterventions", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/fichinter/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintointervention'] = array('position'=>140, 'img'=>'object_intervention', 'label'=>$langs->trans("SearchIntoInterventions", $search_boxvalue), 'text'=>img_picto('', 'object_intervention', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoInterventions", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/fichinter/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } if (!empty($conf->ticket->enabled) && empty($conf->global->MAIN_SEARCHFORM_TICKET_DISABLED) && $user->rights->ticket->read) { - $arrayresult['searchintotickets'] = array('position'=>145, 'img'=>'object_ticket', 'label'=>$langs->trans("SearchIntoTickets", $search_boxvalue), 'text'=>img_picto('', 'object_ticket').' '.$langs->trans("SearchIntoTickets", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/ticket/list.php?mainmenu=ticket'.($search_boxvalue ? '&sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintotickets'] = array('position'=>145, 'img'=>'object_ticket', 'label'=>$langs->trans("SearchIntoTickets", $search_boxvalue), 'text'=>img_picto('', 'object_ticket', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoTickets", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/ticket/list.php?mainmenu=ticket'.($search_boxvalue ? '&sall='.urlencode($search_boxvalue) : '')); } // HR if (!empty($conf->user->enabled) && empty($conf->global->MAIN_SEARCHFORM_USER_DISABLED) && $user->rights->user->user->lire) { - $arrayresult['searchintouser'] = array('position'=>200, 'shortcut'=>'U', 'img'=>'object_user', 'label'=>$langs->trans("SearchIntoUsers", $search_boxvalue), 'text'=>img_picto('', 'object_user').' '.$langs->trans("SearchIntoUsers", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/user/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintouser'] = array('position'=>200, 'shortcut'=>'U', 'img'=>'object_user', 'label'=>$langs->trans("SearchIntoUsers", $search_boxvalue), 'text'=>img_picto('', 'object_user', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoUsers", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/user/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } if (!empty($conf->expensereport->enabled) && empty($conf->global->MAIN_SEARCHFORM_EXPENSEREPORT_DISABLED) && $user->rights->expensereport->lire) { - $arrayresult['searchintoexpensereport'] = array('position'=>210, 'img'=>'object_trip', 'label'=>$langs->trans("SearchIntoExpenseReports", $search_boxvalue), 'text'=>img_picto('', 'object_trip').' '.$langs->trans("SearchIntoExpenseReports", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/expensereport/list.php?mainmenu=hrm'.($search_boxvalue ? '&sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintoexpensereport'] = array('position'=>210, 'img'=>'object_trip', 'label'=>$langs->trans("SearchIntoExpenseReports", $search_boxvalue), 'text'=>img_picto('', 'object_trip', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoExpenseReports", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/expensereport/list.php?mainmenu=hrm'.($search_boxvalue ? '&sall='.urlencode($search_boxvalue) : '')); } if (!empty($conf->holiday->enabled) && empty($conf->global->MAIN_SEARCHFORM_HOLIDAY_DISABLED) && $user->rights->holiday->read) { - $arrayresult['searchintoleaves'] = array('position'=>220, 'img'=>'object_holiday', 'label'=>$langs->trans("SearchIntoLeaves", $search_boxvalue), 'text'=>img_picto('', 'object_holiday').' '.$langs->trans("SearchIntoLeaves", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/holiday/list.php?mainmenu=hrm'.($search_boxvalue ? '&sall='.urlencode($search_boxvalue) : '')); + $arrayresult['searchintoleaves'] = array('position'=>220, 'img'=>'object_holiday', 'label'=>$langs->trans("SearchIntoLeaves", $search_boxvalue), 'text'=>img_picto('', 'object_holiday', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoLeaves", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/holiday/list.php?mainmenu=hrm'.($search_boxvalue ? '&sall='.urlencode($search_boxvalue) : '')); } // Execute hook addSearchEntry diff --git a/htdocs/core/bookmarks_page.php b/htdocs/core/bookmarks_page.php index 9c3b5abb266..dde8df5f82e 100644 --- a/htdocs/core/bookmarks_page.php +++ b/htdocs/core/bookmarks_page.php @@ -111,12 +111,20 @@ if (empty($conf->bookmark->enabled)) { if ($i == 0) { $bookmarkList .= '
    '.$langs->trans("NoBookmarks").''; $bookmarkList .= '

    '; - - $newcardbutton = ''; - $newcardbutton .= dolGetButtonTitle($langs->trans('New'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/bookmarks/card.php?action=create&backtopage='.urlencode(DOL_URL_ROOT.'/bookmarks/list.php'), '', !empty($user->rights->bookmark->creer)); - - $bookmarkList .= '
    '.$newcardbutton.'
    '; } + + $newcardbutton = ''; + $newcardbutton .= dolGetButtonTitle($langs->trans('New'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/bookmarks/card.php?action=create&backtopage='.urlencode(DOL_URL_ROOT.'/bookmarks/list.php'), '', !empty($user->rights->bookmark->creer)); + + // Url to list bookmark + $bookmarkList .= '
    '; + $bookmarkList .= '
    '; + $bookmarkList .= img_picto('', 'bookmark', 'class="paddingright"').$langs->trans('Bookmarks').''; + $bookmarkList .= '
    '; + $bookmarkList .= '
    '; + + $bookmarkList .= '
    '.$newcardbutton.'
    '; + $bookmarkList .= '
    '; diff --git a/htdocs/core/boxes/box_accountancy_last_manual_entries.php b/htdocs/core/boxes/box_accountancy_last_manual_entries.php index b1e4a637046..96abd8699f3 100644 --- a/htdocs/core/boxes/box_accountancy_last_manual_entries.php +++ b/htdocs/core/boxes/box_accountancy_last_manual_entries.php @@ -134,7 +134,7 @@ class box_accountancy_last_manual_entries extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => 'class="nowraponall right"', + 'td' => 'class="nowraponall right amount"', 'text' => price($amount, 0, $langs, 0, -1, -1, $conf->currency), ); diff --git a/htdocs/core/boxes/box_activity.php b/htdocs/core/boxes/box_activity.php index 487c2170a4a..371a7a0dbed 100644 --- a/htdocs/core/boxes/box_activity.php +++ b/htdocs/core/boxes/box_activity.php @@ -174,7 +174,7 @@ class box_activity extends ModeleBoxes $totalnb += $data[$j]->nb; $this->info_box_contents[$line][3] = array( - 'td' => 'class="nowraponall right"', + 'td' => 'class="nowraponall right amount"', 'text' => price($data[$j]->Mnttot, 1, $langs, 0, 0, -1, $conf->currency), ); $this->info_box_contents[$line][4] = array( @@ -262,7 +262,7 @@ class box_activity extends ModeleBoxes $totalnb += $data[$j]->nb; $this->info_box_contents[$line][3] = array( - 'td' => 'class="nowraponall right"', + 'td' => 'class="nowraponall right amount"', 'text' => price($data[$j]->Mnttot, 1, $langs, 0, 0, -1, $conf->currency), ); $this->info_box_contents[$line][4] = array( @@ -350,7 +350,7 @@ class box_activity extends ModeleBoxes ); $this->info_box_contents[$line][3] = array( - 'td' => 'class="nowraponall right"', + 'td' => 'class="nowraponall right amount"', 'text' => price($data[$j]->Mnttot, 1, $langs, 0, 0, -1, $conf->currency) ); @@ -433,7 +433,7 @@ class box_activity extends ModeleBoxes ); $totalnb += $data[$j]->nb; $this->info_box_contents[$line][3] = array( - 'td' => 'class="nowraponall right"', + 'td' => 'class="nowraponall right amount"', 'text' => price($data[$j]->Mnttot, 1, $langs, 0, 0, -1, $conf->currency), ); $this->info_box_contents[$line][4] = array( diff --git a/htdocs/core/boxes/box_commandes.php b/htdocs/core/boxes/box_commandes.php index abf9baf06f3..ae939afe25c 100644 --- a/htdocs/core/boxes/box_commandes.php +++ b/htdocs/core/boxes/box_commandes.php @@ -163,7 +163,7 @@ class box_commandes extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => 'class="nowraponall right"', + 'td' => 'class="nowraponall right amount"', 'text' => price($objp->total_ht, 0, $langs, 0, -1, -1, $conf->currency), ); diff --git a/htdocs/core/boxes/box_comptes.php b/htdocs/core/boxes/box_comptes.php index f42b7a2ef7c..5570051a065 100644 --- a/htdocs/core/boxes/box_comptes.php +++ b/htdocs/core/boxes/box_comptes.php @@ -141,8 +141,11 @@ class box_comptes extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => 'class="right nowraponall"', - 'text' => price($solde, 0, $langs, 1, -1, -1, $objp->currency_code) + 'td' => 'class="nowraponall right amount"', + 'text' => '' + .price($solde, 0, $langs, 1, -1, -1, $objp->currency_code) + .'', + 'asis' => 1, ); $line++; @@ -161,7 +164,7 @@ class box_comptes extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => 'class="liste_total right nowraponall"', + 'td' => 'class="liste_total nowraponall right amount"', 'text' => price($solde, 0, $langs, 0, -1, -1, $key) ); $line++; diff --git a/htdocs/core/boxes/box_dolibarr_state_board.php b/htdocs/core/boxes/box_dolibarr_state_board.php index 21bf58b859f..0381b493448 100644 --- a/htdocs/core/boxes/box_dolibarr_state_board.php +++ b/htdocs/core/boxes/box_dolibarr_state_board.php @@ -105,7 +105,8 @@ class box_dolibarr_state_board extends ModeleBoxes 'supplier_invoices', 'contracts', 'interventions', - 'ticket' + 'ticket', + 'dolresource' ); $conditions = array( 'users' => $user->rights->user->user->lire, @@ -132,7 +133,8 @@ class box_dolibarr_state_board extends ModeleBoxes 'projects' => !empty($conf->projet->enabled) && $user->rights->projet->lire, 'expensereports' => !empty($conf->expensereport->enabled) && $user->rights->expensereport->lire, 'holidays' => !empty($conf->holiday->enabled) && $user->rights->holiday->read, - 'ticket' => !empty($conf->ticket->enabled) && $user->rights->ticket->read + 'ticket' => !empty($conf->ticket->enabled) && $user->rights->ticket->read, + 'dolresource' => !empty($conf->resource->enabled) && $user->rights->resource->read ); $classes = array( 'users' => 'User', @@ -156,6 +158,7 @@ class box_dolibarr_state_board extends ModeleBoxes 'expensereports' => 'ExpenseReport', 'holidays' => 'Holiday', 'ticket' => 'Ticket', + 'dolresource' => 'Dolresource' ); $includes = array( 'users' => DOL_DOCUMENT_ROOT . "/user/class/user.class.php", @@ -178,7 +181,8 @@ class box_dolibarr_state_board extends ModeleBoxes 'projects' => DOL_DOCUMENT_ROOT . "/projet/class/project.class.php", 'expensereports' => DOL_DOCUMENT_ROOT . "/expensereport/class/expensereport.class.php", 'holidays' => DOL_DOCUMENT_ROOT . "/holiday/class/holiday.class.php", - 'ticket' => DOL_DOCUMENT_ROOT . "/ticket/class/ticket.class.php" + 'ticket' => DOL_DOCUMENT_ROOT . "/ticket/class/ticket.class.php", + 'dolresource' => DOL_DOCUMENT_ROOT . "/resource/class/dolresource.class.php" ); $links = array( 'users' => DOL_URL_ROOT . '/user/list.php', @@ -201,7 +205,8 @@ class box_dolibarr_state_board extends ModeleBoxes 'projects' => DOL_URL_ROOT . '/projet/list.php?mainmenu=project', 'expensereports' => DOL_URL_ROOT . '/expensereport/list.php?mainmenu=hrm&leftmenu=expensereport', 'holidays' => DOL_URL_ROOT . '/holiday/list.php?mainmenu=hrm&leftmenu=holiday', - 'ticket' => DOL_URL_ROOT . '/ticket/list.php?leftmenu=ticket' + 'ticket' => DOL_URL_ROOT . '/ticket/list.php?leftmenu=ticket', + 'dolresource' => DOL_URL_ROOT . '/resource/list.php?mainmenu=tools', ); $titres = array( 'users' => "Users", @@ -225,6 +230,7 @@ class box_dolibarr_state_board extends ModeleBoxes 'expensereports' => "ExpenseReports", 'holidays' => "Holidays", 'ticket' => "Ticket", + 'dolresource' => "Resources", ); $langfile = array( 'customers' => "companies", diff --git a/htdocs/core/boxes/box_factures_fourn.php b/htdocs/core/boxes/box_factures_fourn.php index ae905d5d468..42a945b9289 100644 --- a/htdocs/core/boxes/box_factures_fourn.php +++ b/htdocs/core/boxes/box_factures_fourn.php @@ -183,7 +183,7 @@ class box_factures_fourn extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => 'class="right nowraponall"', + 'td' => 'class="nowraponall right amount"', 'text' => price($objp->total_ht, 0, $langs, 0, -1, -1, $conf->currency), ); diff --git a/htdocs/core/boxes/box_factures_fourn_imp.php b/htdocs/core/boxes/box_factures_fourn_imp.php index cfef8801414..a421706e855 100644 --- a/htdocs/core/boxes/box_factures_fourn_imp.php +++ b/htdocs/core/boxes/box_factures_fourn_imp.php @@ -170,7 +170,7 @@ class box_factures_fourn_imp extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => 'class="nowraponall right"', + 'td' => 'class="nowraponall right amount"', 'text' => price($objp->total_ht, 0, $langs, 0, -1, -1, $conf->currency), ); diff --git a/htdocs/core/boxes/box_funnel_of_prospection.php b/htdocs/core/boxes/box_funnel_of_prospection.php index 89ed2215732..cdaa9298f63 100644 --- a/htdocs/core/boxes/box_funnel_of_prospection.php +++ b/htdocs/core/boxes/box_funnel_of_prospection.php @@ -219,7 +219,7 @@ class box_funnel_of_prospection extends ModeleBoxes if (!$conf->use_javascript_ajax) { $stringtoprint .= ''; $stringtoprint .= ''.$labelStatus.''; - $stringtoprint .= ''.price((isset($valsamount[$status]) ? (float) $valsamount[$status] : 0), 0, '', 1, -1, -1, $conf->currency).''; + $stringtoprint .= ''.price((isset($valsamount[$status]) ? (float) $valsamount[$status] : 0), 0, '', 1, -1, -1, $conf->currency).''; $stringtoprint .= "\n"; } } @@ -277,7 +277,7 @@ class box_funnel_of_prospection extends ModeleBoxes ); $this->info_box_contents[$line][] = array( 'tr' => 'class="oddeven"', - 'td' => 'class="right "', + 'td' => 'class="nowraponall right amount"', 'maxlength' => 500, 'text' => price($totalamount, 0, '', 1, -1, -1, $conf->currency) ); @@ -290,7 +290,7 @@ class box_funnel_of_prospection extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => 'class="right "', + 'td' => 'class="nowraponall right amount"', 'maxlength' => 500, 'text' => price(price2num($ponderated_opp_amount, 'MT'), 0, '', 1, -1, -1, $conf->currency) ); diff --git a/htdocs/core/boxes/box_members_last_subscriptions.php b/htdocs/core/boxes/box_members_last_subscriptions.php index 949edd567f3..930b4d3a874 100644 --- a/htdocs/core/boxes/box_members_last_subscriptions.php +++ b/htdocs/core/boxes/box_members_last_subscriptions.php @@ -152,8 +152,8 @@ class box_members_last_subscriptions extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => 'class="right" width="18"', - 'text' => ''.price($obj->subscription).'', + 'td' => 'class="nowraponall right amount" width="18"', + 'text' => price($obj->subscription), ); $this->info_box_contents[$line][] = array( diff --git a/htdocs/core/boxes/box_members_subscriptions_by_year.php b/htdocs/core/boxes/box_members_subscriptions_by_year.php index 73c71521603..e7bf916d236 100644 --- a/htdocs/core/boxes/box_members_subscriptions_by_year.php +++ b/htdocs/core/boxes/box_members_subscriptions_by_year.php @@ -179,12 +179,12 @@ class box_members_subscriptions_by_year extends ModeleBoxes 'text' => $Number[$key], ); $this->info_box_contents[$line][] = array( - 'td' => 'class="right"', - 'text' => ''.price($value).'', + 'td' => 'class="nowraponall right amount"', + 'text' => price($value), ); $this->info_box_contents[$line][] = array( - 'td' => 'class="right"', - 'text' => ''.price(price2num($value / $Number[$key], 'MT')).'', + 'td' => 'class="nowraponall right amount"', + 'text' => price(price2num($value / $Number[$key], 'MT')), ); $line++; } @@ -204,12 +204,12 @@ class box_members_subscriptions_by_year extends ModeleBoxes 'text' => $numb, ); $this->info_box_contents[$line][] = array( - 'td' => 'class="liste_total right"', - 'text' => ''.price($tot).'', + 'td' => 'class="liste_total nowraponall right amount"', + 'text' => price($tot), ); $this->info_box_contents[$line][] = array( - 'td' => 'class="liste_total right"', - 'text' => ''.price(price2num($numb > 0 ? ($tot / $numb) : 0, 'MT')).'', + 'td' => 'class="liste_total nowraponall right amount"', + 'text' => price(price2num($numb > 0 ? ($tot / $numb) : 0, 'MT')), ); } } else { diff --git a/htdocs/core/boxes/box_produits.php b/htdocs/core/boxes/box_produits.php index d039881445e..9a0c76503d0 100644 --- a/htdocs/core/boxes/box_produits.php +++ b/htdocs/core/boxes/box_produits.php @@ -180,7 +180,7 @@ class box_produits extends ModeleBoxes } } $this->info_box_contents[$line][] = array( - 'td' => 'class="right"', + 'td' => 'class="nowraponall right amount"', 'text' => $price, ); diff --git a/htdocs/core/boxes/box_produits_alerte_stock.php b/htdocs/core/boxes/box_produits_alerte_stock.php index 5e7ec72d0e1..e074cb76198 100644 --- a/htdocs/core/boxes/box_produits_alerte_stock.php +++ b/htdocs/core/boxes/box_produits_alerte_stock.php @@ -94,12 +94,12 @@ class box_produits_alerte_stock extends ModeleBoxes $sql .= " FROM ".MAIN_DB_PREFIX."product as p"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as s on p.rowid = s.fk_product"; $sql .= ' WHERE p.entity IN ('.getEntity($productstatic->element).')'; - $sql .= " AND p.tosell = 1 AND p.seuil_stock_alerte > 0"; + $sql .= " AND p.seuil_stock_alerte > 0"; if (empty($user->rights->produit->lire)) { - $sql .= ' AND p.fk_product_type != 0'; + $sql .= ' AND p.fk_product_type <> 0'; } if (empty($user->rights->service->lire)) { - $sql .= ' AND p.fk_product_type != 1'; + $sql .= ' AND p.fk_product_type <> 1'; } // Add where from hooks if (is_object($hookmanager)) { @@ -163,7 +163,7 @@ class box_produits_alerte_stock extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => 'class="tdoverflowmax150 maxwidth150onsmartphone"', + 'td' => 'class="tdoverflowmax100 maxwidth150onsmartphone"', 'text' => $objp->label, ); @@ -186,18 +186,13 @@ class box_produits_alerte_stock extends ModeleBoxes } } - $this->info_box_contents[$line][] = array( - 'td' => 'class="right nowraponall"', - 'text' => $price, - ); + /*$this->info_box_contents[$line][] = array( + 'td' => 'class="nowraponall right amount"', + 'text' => $price.' '.$price_base_type, + );*/ $this->info_box_contents[$line][] = array( - 'td' => 'class="right"', - 'text' => $price_base_type, - ); - - $this->info_box_contents[$line][] = array( - 'td' => 'class="center"', + 'td' => 'class="center nowraponall"', 'text' => price2num($objp->total_stock, 'MS').' / '.$objp->seuil_stock_alerte, 'text2'=>img_warning($langs->transnoentitiesnoconv("StockLowerThanLimit", $objp->seuil_stock_alerte)), ); @@ -210,7 +205,7 @@ class box_produits_alerte_stock extends ModeleBoxes $this->info_box_contents[$line][] = array( 'td' => 'class="right" width="18"', - 'text' => ''.$productstatic->LibStatut($objp->tobuy, 3, 0).'', + 'text' => ''.$productstatic->LibStatut($objp->tobuy, 3, 1).'', 'asis' => 1 ); diff --git a/htdocs/core/boxes/box_propales.php b/htdocs/core/boxes/box_propales.php index 51d313b7254..f3f9496325f 100644 --- a/htdocs/core/boxes/box_propales.php +++ b/htdocs/core/boxes/box_propales.php @@ -160,7 +160,7 @@ class box_propales extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => 'class="right nowraponall"', + 'td' => 'class="nowraponall right amount"', 'text' => price($objp->total_ht, 0, $langs, 0, -1, -1, $conf->currency), ); diff --git a/htdocs/core/boxes/box_scheduled_jobs.php b/htdocs/core/boxes/box_scheduled_jobs.php index 53cf5c79571..94695034cce 100644 --- a/htdocs/core/boxes/box_scheduled_jobs.php +++ b/htdocs/core/boxes/box_scheduled_jobs.php @@ -170,7 +170,7 @@ class box_scheduled_jobs extends ModeleBoxes ); $this->info_box_contents[$line][] = array( 'td' => 'class="center"', - 'textnoformat' => ($nbjobsinerror ? '
    '.$nbjobsinerror.'
    ' : '
    0
    ') + 'textnoformat' => ($nbjobsinerror ? '
    '.$nbjobsinerror.'
    ' : '
    0
    ') ); } else { $this->info_box_contents[0][0] = array( diff --git a/htdocs/core/boxes/box_supplier_orders.php b/htdocs/core/boxes/box_supplier_orders.php index 2cc34a9255b..89fd7850c5c 100644 --- a/htdocs/core/boxes/box_supplier_orders.php +++ b/htdocs/core/boxes/box_supplier_orders.php @@ -147,7 +147,7 @@ class box_supplier_orders extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => 'class="right nowraponall"', + 'td' => 'class="nowraponall right amount"', 'text' => price($objp->total_ht, 0, $langs, 0, -1, -1, $conf->currency), ); diff --git a/htdocs/core/boxes/box_supplier_orders_awaiting_reception.php b/htdocs/core/boxes/box_supplier_orders_awaiting_reception.php index f9d2de4b7fc..9a40c3f9aec 100644 --- a/htdocs/core/boxes/box_supplier_orders_awaiting_reception.php +++ b/htdocs/core/boxes/box_supplier_orders_awaiting_reception.php @@ -151,7 +151,7 @@ class box_supplier_orders_awaiting_reception extends ModeleBoxes ); $this->info_box_contents[$line][] = array( - 'td' => 'class="right nowraponall"', + 'td' => 'class="nowraponall right amount"', 'text' => price($objp->total_ht, 0, $langs, 0, -1, -1, $conf->currency), ); diff --git a/htdocs/core/boxes/box_validated_projects.php b/htdocs/core/boxes/box_validated_projects.php index 574ee7b7d80..e57bb1f14d9 100644 --- a/htdocs/core/boxes/box_validated_projects.php +++ b/htdocs/core/boxes/box_validated_projects.php @@ -26,6 +26,7 @@ */ include_once DOL_DOCUMENT_ROOT."/core/boxes/modules_boxes.php"; + /** * Class to manage the box to show last projet */ @@ -63,7 +64,7 @@ class box_validated_projects extends ModeleBoxes $langs->loadLangs(array('boxes', 'projects')); $this->db = $db; - $this->boxlabel = "ProjectsWithTask"; + $this->boxlabel = "ProjectTasksWithoutTimeSpent"; $this->hidden = !($user->rights->projet->lire); @@ -116,7 +117,7 @@ class box_validated_projects extends ModeleBoxes $sql .= " INNER JOIN ".MAIN_DB_PREFIX."element_contact as ec ON ec.element_id = t.rowid AND fk_c_type_contact IN (-1, -2, -3)"; $sql .= " WHERE p.fk_statut = 1"; // Only open projects if ($projectsListId) { - $sql .= ' AND p.rowid IN ('.$this->db->sanitize($projectsListId).')'; // Only project are allowed + $sql .= ' AND p.rowid IN ('.$this->db->sanitize($projectsListId).')'; // Only projects that are allowed } $sql .= " AND t.rowid NOT IN (SELECT fk_task FROM ".MAIN_DB_PREFIX."projet_task_time WHERE fk_user = ".((int) $user->id).")"; $sql .= " GROUP BY p.rowid, p.ref, p.fk_soc, p.dateo"; diff --git a/htdocs/core/class/CSMSFile.class.php b/htdocs/core/class/CSMSFile.class.php index 8d5bcf7dc50..3f082ba6d53 100644 --- a/htdocs/core/class/CSMSFile.class.php +++ b/htdocs/core/class/CSMSFile.class.php @@ -29,8 +29,9 @@ /** * Class to send SMS - * Usage: $smsfile = new CSMSFile($subject,$sendto,$replyto,$message,$filepath,$mimetype,$filename,$cc,$ccc,$deliveryreceipt,$msgishtml,$errors_to); - * $smsfile->sendfile(); + * Usage: $smsfile = new CSMSFile($subject,$sendto,$replyto,$message,$filepath,$mimetype,$filename,$cc,$ccc,$deliveryreceipt,$msgishtml,$errors_to); + * $smsfile->socid=...; $smsfile->contact_id=...; $smsfile->member_id=...; $smsfile->fk_project=...; + * $smsfile->sendfile(); */ class CSMSFile { @@ -48,7 +49,8 @@ class CSMSFile public $nostop; public $socid; - public $contactid; + public $contact_id; + public $member_id; public $fk_project; @@ -135,6 +137,7 @@ class CSMSFile $sms->socid = $this->socid; $sms->contact_id = $this->contact_id; + $sms->member_id = $this->member_id; $sms->project = $this->fk_project; $res = $sms->SmsSend(); @@ -167,6 +170,7 @@ class CSMSFile $sms->socid = $this->socid; $sms->contact_id = $this->contact_id; + $sms->member_id = $this->member_id; $sms->fk_project = $this->fk_project; $res = $sms->SmsSend(); diff --git a/htdocs/core/class/ccountry.class.php b/htdocs/core/class/ccountry.class.php index 4f448845e80..7b46b0a08b0 100644 --- a/htdocs/core/class/ccountry.class.php +++ b/htdocs/core/class/ccountry.class.php @@ -111,7 +111,7 @@ class Ccountry // extends CommonObject // Put here code to add control on parameters values // Insert request - $sql = "INSERT INTO ".MAIN_DB_PREFIX."c_country("; + $sql = "INSERT INTO ".$this->db->prefix()."c_country("; $sql .= "rowid,"; $sql .= "code,"; $sql .= "code_iso,"; @@ -135,7 +135,7 @@ class Ccountry // extends CommonObject } if (!$error) { - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."c_country"); + $this->id = $this->db->last_insert_id($this->db->prefix()."c_country"); } // Commit or rollback @@ -169,7 +169,7 @@ class Ccountry // extends CommonObject $sql .= " t.code_iso,"; $sql .= " t.label,"; $sql .= " t.active"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_country as t"; + $sql .= " FROM ".$this->db->prefix()."c_country as t"; if ($id) { $sql .= " WHERE t.rowid = ".((int) $id); } elseif ($code) { @@ -235,7 +235,7 @@ class Ccountry // extends CommonObject // Put here code to add control on parameters values // Update request - $sql = "UPDATE ".MAIN_DB_PREFIX."c_country SET"; + $sql = "UPDATE ".$this->db->prefix()."c_country SET"; $sql .= " code=".(isset($this->code) ? "'".$this->db->escape($this->code)."'" : "null").","; $sql .= " code_iso=".(isset($this->code_iso) ? "'".$this->db->escape($this->code_iso)."'" : "null").","; $sql .= " label=".(isset($this->label) ? "'".$this->db->escape($this->label)."'" : "null").","; @@ -278,7 +278,7 @@ class Ccountry // extends CommonObject global $conf, $langs; $error = 0; - $sql = "DELETE FROM ".MAIN_DB_PREFIX."c_country"; + $sql = "DELETE FROM ".$this->db->prefix()."c_country"; $sql .= " WHERE rowid=".((int) $this->id); $this->db->begin(); diff --git a/htdocs/core/class/comment.class.php b/htdocs/core/class/comment.class.php index c2dd055522e..937ca6f7875 100644 --- a/htdocs/core/class/comment.class.php +++ b/htdocs/core/class/comment.class.php @@ -113,7 +113,7 @@ class Comment extends CommonObject $error = 0; // Insert request - $sql = "INSERT INTO ".MAIN_DB_PREFIX.$this->table_element." ("; + $sql = "INSERT INTO ".$this->db->prefix().$this->table_element." ("; $sql .= "description"; $sql .= ", datec"; $sql .= ", fk_element"; @@ -146,7 +146,7 @@ class Comment extends CommonObject } if (!$error) { - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.$this->table_element); + $this->id = $this->db->last_insert_id($this->db->prefix().$this->table_element); if (!$notrigger) { // Call trigger @@ -195,7 +195,7 @@ class Comment extends CommonObject $sql .= " c.fk_user_modif,"; $sql .= " c.entity,"; $sql .= " c.import_key"; - $sql .= " FROM ".MAIN_DB_PREFIX.$this->table_element." as c"; + $sql .= " FROM ".$this->db->prefix().$this->table_element." as c"; $sql .= " WHERE c.rowid = ".((int) $id); dol_syslog(get_class($this)."::fetch", LOG_DEBUG); @@ -254,7 +254,7 @@ class Comment extends CommonObject // Update request - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element." SET"; + $sql = "UPDATE ".$this->db->prefix().$this->table_element." SET"; $sql .= " description=".(isset($this->description) ? "'".$this->db->escape($this->description)."'" : "null").","; $sql .= " datec=".($this->datec != '' ? "'".$this->db->idate($this->datec)."'" : 'null').","; $sql .= " fk_element=".(isset($this->fk_element) ? $this->fk_element : "null").","; @@ -315,7 +315,7 @@ class Comment extends CommonObject $this->db->begin(); - $sql = "DELETE FROM ".MAIN_DB_PREFIX.$this->table_element; + $sql = "DELETE FROM ".$this->db->prefix().$this->table_element; $sql .= " WHERE rowid=".((int) $this->id); $resql = $this->db->query($sql); @@ -364,7 +364,7 @@ class Comment extends CommonObject if (!empty($element_type) && !empty($fk_element)) { $sql = "SELECT"; $sql .= " c.rowid"; - $sql .= " FROM ".MAIN_DB_PREFIX.$this->table_element." as c"; + $sql .= " FROM ".$this->db->prefix().$this->table_element." as c"; $sql .= " WHERE c.fk_element = ".((int) $fk_element); $sql .= " AND c.element_type = '".$this->db->escape($element_type)."'"; $sql .= " AND c.entity = ".$conf->entity; diff --git a/htdocs/core/class/commondocgenerator.class.php b/htdocs/core/class/commondocgenerator.class.php index 5d0242657ef..8a0ce49ce00 100644 --- a/htdocs/core/class/commondocgenerator.class.php +++ b/htdocs/core/class/commondocgenerator.class.php @@ -653,7 +653,7 @@ abstract class CommonDocGenerator if ($columns != "") { $columns = substr($columns, 0, strlen($columns) - 2); - $resql = $this->db->query("SELECT ".$columns." FROM ".MAIN_DB_PREFIX."product_fournisseur_price_extrafields AS ex INNER JOIN ".MAIN_DB_PREFIX."product_fournisseur_price AS f ON ex.fk_object = f.rowid WHERE f.ref_fourn = '".$this->db->escape($line->ref_supplier)."'"); + $resql = $this->db->query("SELECT ".$columns." FROM ".$this->db->prefix()."product_fournisseur_price_extrafields AS ex INNER JOIN ".$this->db->prefix()."product_fournisseur_price AS f ON ex.fk_object = f.rowid WHERE f.ref_fourn = '".$this->db->escape($line->ref_supplier)."'"); if ($this->db->num_rows($resql) > 0) { $resql = $this->db->fetch_object($resql); diff --git a/htdocs/core/class/commonincoterm.class.php b/htdocs/core/class/commonincoterm.class.php index d0485acc5a9..e74d1428781 100644 --- a/htdocs/core/class/commonincoterm.class.php +++ b/htdocs/core/class/commonincoterm.class.php @@ -60,7 +60,7 @@ trait CommonIncoterm $this->label_incoterms = ''; if (!empty($this->fk_incoterms)) { - $sql = "SELECT code FROM ".MAIN_DB_PREFIX."c_incoterms WHERE rowid = ".(int) $this->fk_incoterms; + $sql = "SELECT code FROM ".$this->db->prefix()."c_incoterms WHERE rowid = ".(int) $this->fk_incoterms; $result = $this->db->query($sql); if ($result) { $res = $this->db->fetch_object($result); @@ -80,7 +80,7 @@ trait CommonIncoterm */ public function getIncotermsForPDF() { - $sql = "SELECT code FROM ".MAIN_DB_PREFIX."c_incoterms WHERE rowid = ".(int) $this->fk_incoterms; + $sql = "SELECT code FROM ".$this->db->prefix()."c_incoterms WHERE rowid = ".(int) $this->fk_incoterms; $resql = $this->db->query($sql); if ($resql) { $num = $this->db->num_rows($resql); @@ -106,7 +106,7 @@ trait CommonIncoterm public function setIncoterms($id_incoterm, $location) { if ($this->id && $this->table_element) { - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element; + $sql = "UPDATE ".$this->db->prefix().$this->table_element; $sql .= " SET fk_incoterms = ".($id_incoterm > 0 ? ((int) $id_incoterm) : "null"); $sql .= ", location_incoterms = ".($id_incoterm > 0 ? "'".$this->db->escape($location)."'" : "null"); $sql .= " WHERE rowid = ".((int) $this->id); @@ -116,7 +116,7 @@ trait CommonIncoterm $this->fk_incoterms = $id_incoterm; $this->location_incoterms = $location; - $sql = "SELECT libelle as label_incoterms FROM ".MAIN_DB_PREFIX."c_incoterms WHERE rowid = ".(int) $this->fk_incoterms; + $sql = "SELECT libelle as label_incoterms FROM ".$this->db->prefix()."c_incoterms WHERE rowid = ".(int) $this->fk_incoterms; $res = $this->db->query($sql); if ($res) { $obj = $this->db->fetch_object($res); diff --git a/htdocs/core/class/commoninvoice.class.php b/htdocs/core/class/commoninvoice.class.php index c7a5beae245..29fd230a61b 100644 --- a/htdocs/core/class/commoninvoice.class.php +++ b/htdocs/core/class/commoninvoice.class.php @@ -130,8 +130,8 @@ abstract class CommonInvoice extends CommonObject $field = 'fk_facturefourn'; } - $sql = 'SELECT sum(amount) as amount, sum(multicurrency_amount) as multicurrency_amount'; - $sql .= ' FROM '.MAIN_DB_PREFIX.$table; + $sql = "SELECT sum(amount) as amount, sum(multicurrency_amount) as multicurrency_amount"; + $sql .= " FROM ".$this->db->prefix().$table; $sql .= " WHERE ".$field." = ".((int) $this->id); dol_syslog(get_class($this)."::getSommePaiement", LOG_DEBUG); @@ -168,6 +168,7 @@ abstract class CommonInvoice extends CommonObject $discountstatic = new DiscountAbsolute($this->db); $result = $discountstatic->getSumDepositsUsed($this, $multicurrency); + if ($result >= 0) { return $result; } else { @@ -225,10 +226,10 @@ abstract class CommonInvoice extends CommonObject { $idarray = array(); - $sql = 'SELECT rowid'; - $sql .= " FROM ".MAIN_DB_PREFIX.$this->table_element; + $sql = "SELECT rowid"; + $sql .= " FROM ".$this->db->prefix().$this->table_element; $sql .= " WHERE fk_facture_source = ".((int) $this->id); - $sql .= ' AND type = 2'; + $sql .= " AND type = 2"; $resql = $this->db->query($sql); if ($resql) { $num = $this->db->num_rows($resql); @@ -252,10 +253,10 @@ abstract class CommonInvoice extends CommonObject */ public function getIdReplacingInvoice($option = '') { - $sql = 'SELECT rowid'; - $sql .= " FROM ".MAIN_DB_PREFIX.$this->table_element; + $sql = "SELECT rowid"; + $sql .= " FROM ".$this->db->prefix().$this->table_element; $sql .= " WHERE fk_facture_source = ".((int) $this->id); - $sql .= ' AND type < 2'; + $sql .= " AND type < 2"; if ($option == 'validated') { $sql .= ' AND fk_statut = 1'; } @@ -264,7 +265,7 @@ abstract class CommonInvoice extends CommonObject // and another no, priority is given to the valid one. // Should not happen (unless concurrent access and 2 people have created a // replacement invoice for the same invoice at the same time) - $sql .= ' ORDER BY fk_statut DESC'; + $sql .= " ORDER BY fk_statut DESC"; $resql = $this->db->query($sql); if ($resql) { @@ -307,7 +308,7 @@ abstract class CommonInvoice extends CommonObject } $sql = "SELECT p.ref, pf.amount, pf.multicurrency_amount, p.fk_paiement, p.datep, p.num_paiement as num, t.code".$field3; - $sql .= " FROM ".MAIN_DB_PREFIX.$table." as pf, ".MAIN_DB_PREFIX.$table2." as p, ".MAIN_DB_PREFIX."c_paiement as t"; + $sql .= " FROM ".$this->db->prefix().$table." as pf, ".$this->db->prefix().$table2." as p, ".$this->db->prefix()."c_paiement as t"; $sql .= " WHERE pf.".$field." = ".((int) $this->id); $sql .= " AND pf.".$field2." = p.rowid"; $sql .= ' AND p.fk_paiement = t.id'; @@ -336,12 +337,12 @@ abstract class CommonInvoice extends CommonObject $sql = ''; if ($this->element == 'facture' || $this->element == 'invoice') { $sql = "SELECT rc.amount_ttc as amount, rc.multicurrency_amount_ttc as multicurrency_amount, rc.datec as date, f.ref as ref, rc.description as type"; - $sql .= ' FROM '.MAIN_DB_PREFIX.'societe_remise_except as rc, '.MAIN_DB_PREFIX.'facture as f'; + $sql .= ' FROM '.$this->db->prefix().'societe_remise_except as rc, '.$this->db->prefix().'facture as f'; $sql .= ' WHERE rc.fk_facture_source=f.rowid AND rc.fk_facture = '.((int) $this->id); $sql .= ' AND (f.type = 2 OR f.type = 0 OR f.type = 3)'; // Find discount coming from credit note or excess received or deposits (payments from deposits are always null except if FACTURE_DEPOSITS_ARE_JUST_PAYMENTS is set) } elseif ($this->element == 'facture_fourn' || $this->element == 'invoice_supplier') { $sql = "SELECT rc.amount_ttc as amount, rc.multicurrency_amount_ttc as multicurrency_amount, rc.datec as date, f.ref as ref, rc.description as type"; - $sql .= ' FROM '.MAIN_DB_PREFIX.'societe_remise_except as rc, '.MAIN_DB_PREFIX.'facture_fourn as f'; + $sql .= ' FROM '.$this->db->prefix().'societe_remise_except as rc, '.$this->db->prefix().'facture_fourn as f'; $sql .= ' WHERE rc.fk_invoice_supplier_source=f.rowid AND rc.fk_invoice_supplier = '.((int) $this->id); $sql .= ' AND (f.type = 2 OR f.type = 0 OR f.type = 3)'; // Find discount coming from credit note or excess received or deposits (payments from deposits are always null except if FACTURE_DEPOSITS_ARE_JUST_PAYMENTS is set) } @@ -461,7 +462,7 @@ abstract class CommonInvoice extends CommonObject $type = 'supplier_invoice'; } - $sql = " SELECT COUNT(ab.rowid) as nb FROM ".MAIN_DB_PREFIX."accounting_bookkeeping as ab WHERE ab.doc_type='".$this->db->escape($type)."' AND ab.fk_doc = ".((int) $this->id); + $sql = " SELECT COUNT(ab.rowid) as nb FROM ".$this->db->prefix()."accounting_bookkeeping as ab WHERE ab.doc_type='".$this->db->escape($type)."' AND ab.fk_doc = ".((int) $this->id); $resql = $this->db->query($sql); if ($resql) { $obj = $this->db->fetch_object($resql); @@ -600,8 +601,8 @@ abstract class CommonInvoice extends CommonObject $cdr_type = 0; $cdr_decalage = 0; - $sqltemp = 'SELECT c.type_cdr, c.nbjour, c.decalage'; - $sqltemp .= ' FROM '.MAIN_DB_PREFIX.'c_payment_term as c'; + $sqltemp = "SELECT c.type_cdr, c.nbjour, c.decalage"; + $sqltemp .= " FROM ".$this->db->prefix()."c_payment_term as c"; if (is_numeric($cond_reglement)) { $sqltemp .= " WHERE c.rowid=".((int) $cond_reglement); } else { @@ -696,15 +697,15 @@ abstract class CommonInvoice extends CommonObject $bac = new CompanyBankAccount($this->db); $bac->fetch(0, $this->socid); - $sql = 'SELECT count(*)'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'prelevement_facture_demande'; + $sql = "SELECT count(*)"; + $sql .= " FROM ".$this->db->prefix()."prelevement_facture_demande"; if ($type == 'bank-transfer') { - $sql .= ' WHERE fk_facture_fourn = '.((int) $this->id); + $sql .= " WHERE fk_facture_fourn = ".((int) $this->id); } else { - $sql .= ' WHERE fk_facture = '.((int) $this->id); + $sql .= " WHERE fk_facture = ".((int) $this->id); } - $sql .= ' AND ext_payment_id IS NULL'; // To exclude record done for some online payments - $sql .= ' AND traite = 0'; + $sql .= " AND ext_payment_id IS NULL"; // To exclude record done for some online payments + $sql .= " AND traite = 0"; dol_syslog(get_class($this)."::demande_prelevement", LOG_DEBUG); $resql = $this->db->query($sql); @@ -727,7 +728,7 @@ abstract class CommonInvoice extends CommonObject } if (is_numeric($amount) && $amount != 0) { - $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'prelevement_facture_demande('; + $sql = 'INSERT INTO '.$this->db->prefix().'prelevement_facture_demande('; if ($type == 'bank-transfer') { $sql .= 'fk_facture_fourn, '; } else { @@ -799,7 +800,7 @@ abstract class CommonInvoice extends CommonObject public function demande_prelevement_delete($fuser, $did) { // phpcs:enable - $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'prelevement_facture_demande'; + $sql = 'DELETE FROM '.$this->db->prefix().'prelevement_facture_demande'; $sql .= ' WHERE rowid = '.((int) $did); $sql .= ' AND traite = 0'; if ($this->db->query($sql)) { @@ -810,6 +811,64 @@ abstract class CommonInvoice extends CommonObject return -1; } } + + + /** + * Build string for ZATCA QR Code (Arabi Saudia) + * + * @return string String for ZATCA QR Code + */ + public function buildZATCAQRString() + { + global $conf; + + $tmplang = new Translate('', $conf); + $tmplang->setDefaultLang('en_US'); + $tmplang->load("main"); + + $datestring = dol_print_date($this->date, 'dayhourrfc'); + $pricewithtaxstring = price($this->total_ttc, 0, $tmplang, 0, -1, 2); + $pricetaxstring = price($this->total_tva, 0, $tmplang, 0, -1, 2); + + /* + $name = implode(unpack("H*", $this->thirdparty->name)); + $vatnumber = implode(unpack("H*", $this->thirdparty->tva_intra)); + $date = implode(unpack("H*", $datestring)); + $pricewithtax = implode(unpack("H*", price2num($pricewithtaxstring, 2))); + $pricetax = implode(unpack("H*", $pricetaxstring)); + + var_dump(strlen($this->thirdparty->name)); + var_dump(str_pad(dechex('9'), 2, '0', STR_PAD_LEFT)); + var_dump($this->thirdparty->name); + var_dump(implode(unpack("H*", $this->thirdparty->name))); + var_dump(price($this->total_tva, 0, $tmplang, 0, -1, 2)); + + $s = '01'.str_pad(dechex(strlen($this->thirdparty->name)), 2, '0', STR_PAD_LEFT).$name; + $s .= '02'.str_pad(dechex(strlen($this->thirdparty->tva_intra)), 2, '0', STR_PAD_LEFT).$vatnumber; + $s .= '03'.str_pad(dechex(strlen($datestring)), 2, '0', STR_PAD_LEFT).$date; + $s .= '04'.str_pad(dechex(strlen($pricewithtaxstring)), 2, '0', STR_PAD_LEFT).$pricewithtax; + $s .= '05'.str_pad(dechex(strlen($pricetaxstring)), 2, '0', STR_PAD_LEFT).$pricetax; + $s .= ''; // Hash of xml invoice + $s .= ''; // ecda signature + $s .= ''; // ecda public key + $s .= ''; // ecda signature of public key stamp + */ + + // Using TLV format + $s = pack('C1', 1).pack('C1', strlen($this->thirdparty->name)).$this->thirdparty->name; + $s .= pack('C1', 2).pack('C1', strlen($this->thirdparty->tva_intra)).$this->thirdparty->tva_intra; + $s .= pack('C1', 3).pack('C1', strlen($datestring)).$this->date; + $s .= pack('C1', 4).pack('C1', strlen($pricewithtaxstring)).$pricewithtaxstring; + $s .= pack('C1', 5).pack('C1', strlen($pricetaxstring)).$pricetaxstring; + $s .= ''; // Hash of xml invoice + $s .= ''; // ecda signature + $s .= ''; // ecda public key + $s .= ''; // ecda signature of public key stamp + + $s = base64_encode($s); + + return $s; + } } diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index a83cfae3000..fe6364e279f 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -536,7 +536,7 @@ abstract class CommonObject global $db, $conf; $sql = "SELECT rowid, ref, ref_ext"; - $sql .= " FROM ".MAIN_DB_PREFIX.$element; + $sql .= " FROM ".$db->prefix().$element; $sql .= " WHERE entity IN (".getEntity($element).")"; if ($id > 0) { @@ -1041,7 +1041,7 @@ abstract class CommonObject } else { // We look for id type_contact $sql = "SELECT tc.rowid"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_type_contact as tc"; + $sql .= " FROM ".$this->db->prefix()."c_type_contact as tc"; $sql .= " WHERE tc.element='".$this->db->escape($this->element)."'"; $sql .= " AND tc.source='".$this->db->escape($source)."'"; $sql .= " AND tc.code='".$this->db->escape($type_contact)."' AND tc.active=1"; @@ -1079,7 +1079,7 @@ abstract class CommonObject $this->db->begin(); // Insert into database - $sql = "INSERT INTO ".MAIN_DB_PREFIX."element_contact"; + $sql = "INSERT INTO ".$this->db->prefix()."element_contact"; $sql .= " (element_id, fk_socpeople, datecreate, statut, fk_c_type_contact) "; $sql .= " VALUES (".$this->id.", ".((int) $fk_socpeople)." , "; $sql .= "'".$this->db->idate($datecreate)."'"; @@ -1148,7 +1148,7 @@ abstract class CommonObject { // phpcs:enable // Insert into database - $sql = "UPDATE ".MAIN_DB_PREFIX."element_contact set"; + $sql = "UPDATE ".$this->db->prefix()."element_contact set"; $sql .= " statut = ".$statut; if ($type_contact_id) { $sql .= ", fk_c_type_contact = ".((int) $type_contact_id); @@ -1182,7 +1182,7 @@ abstract class CommonObject $this->db->begin(); - $sql = "DELETE FROM ".MAIN_DB_PREFIX."element_contact"; + $sql = "DELETE FROM ".$this->db->prefix()."element_contact"; $sql .= " WHERE rowid = ".((int) $rowid); dol_syslog(get_class($this)."::delete_contact", LOG_DEBUG); @@ -1215,17 +1215,20 @@ abstract class CommonObject public function delete_linked_contact($source = '', $code = '') { // phpcs:enable + $listId = ''; $temp = array(); $typeContact = $this->liste_type_contact($source, '', 0, 0, $code); - foreach ($typeContact as $key => $value) { - array_push($temp, $key); + if (!empty($typeContact)) { + foreach ($typeContact as $key => $value) { + array_push($temp, $key); + } + $listId = implode(",", $temp); } - $listId = implode(",", $temp); - $sql = "DELETE FROM ".MAIN_DB_PREFIX."element_contact"; + $sql = "DELETE FROM ".$this->db->prefix()."element_contact"; $sql .= " WHERE element_id = ".((int) $this->id); - if ($listId) { + if (!empty($listId)) { $sql .= " AND fk_c_type_contact IN (".$this->db->sanitize($listId).")"; } @@ -1264,16 +1267,16 @@ abstract class CommonObject } $sql .= ", t.civility as civility, t.lastname as lastname, t.firstname, t.email"; $sql .= ", tc.source, tc.element, tc.code, tc.libelle"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_type_contact tc"; - $sql .= ", ".MAIN_DB_PREFIX."element_contact ec"; + $sql .= " FROM ".$this->db->prefix()."c_type_contact tc"; + $sql .= ", ".$this->db->prefix()."element_contact ec"; if ($source == 'internal') { - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."user t on ec.fk_socpeople = t.rowid"; + $sql .= " LEFT JOIN ".$this->db->prefix()."user t on ec.fk_socpeople = t.rowid"; } if ($source == 'external' || $source == 'thirdparty') { - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople t on ec.fk_socpeople = t.rowid"; + $sql .= " LEFT JOIN ".$this->db->prefix()."socpeople t on ec.fk_socpeople = t.rowid"; } $sql .= " WHERE ec.element_id = ".((int) $this->id); - $sql .= " AND ec.fk_c_type_contact=tc.rowid"; + $sql .= " AND ec.fk_c_type_contact = tc.rowid"; $sql .= " AND tc.element = '".$this->db->escape($this->element)."'"; if ($code) { $sql .= " AND tc.code = '".$this->db->escape($code)."'"; @@ -1345,7 +1348,7 @@ abstract class CommonObject { $sql = "SELECT ec.datecreate, ec.statut, ec.fk_socpeople, ec.fk_c_type_contact,"; $sql .= " tc.code, tc.libelle"; - $sql .= " FROM (".MAIN_DB_PREFIX."element_contact as ec, ".MAIN_DB_PREFIX."c_type_contact as tc)"; + $sql .= " FROM (".$this->db->prefix()."element_contact as ec, ".$this->db->prefix()."c_type_contact as tc)"; $sql .= " WHERE ec.rowid =".((int) $rowid); $sql .= " AND ec.fk_c_type_contact=tc.rowid"; $sql .= " AND tc.element = '".$this->db->escape($this->element)."'"; @@ -1390,7 +1393,7 @@ abstract class CommonObject $tab = array(); $sql = "SELECT DISTINCT tc.rowid, tc.code, tc.libelle, tc.position"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_type_contact as tc"; + $sql .= " FROM ".$this->db->prefix()."c_type_contact as tc"; $sql .= " WHERE tc.element='".$this->db->escape($this->element)."'"; if ($activeonly == 1) { $sql .= " AND tc.active=1"; // only the active types @@ -1450,7 +1453,7 @@ abstract class CommonObject $tab = array(); $sql = "SELECT DISTINCT tc.rowid, tc.code, tc.libelle, tc.position, tc.element"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_type_contact as tc"; + $sql .= " FROM ".$this->db->prefix()."c_type_contact as tc"; $sqlWhere = array(); if (!empty($element)) { @@ -1548,14 +1551,14 @@ abstract class CommonObject } $sql = "SELECT ec.fk_socpeople"; - $sql .= " FROM ".MAIN_DB_PREFIX."element_contact as ec,"; + $sql .= " FROM ".$this->db->prefix()."element_contact as ec,"; if ($source == 'internal') { - $sql .= " ".MAIN_DB_PREFIX."user as c,"; + $sql .= " ".$this->db->prefix()."user as c,"; } if ($source == 'external') { - $sql .= " ".MAIN_DB_PREFIX."socpeople as c,"; + $sql .= " ".$this->db->prefix()."socpeople as c,"; } - $sql .= " ".MAIN_DB_PREFIX."c_type_contact as tc"; + $sql .= " ".$this->db->prefix()."c_type_contact as tc"; $sql .= " WHERE ec.element_id = ".((int) $id); $sql .= " AND ec.fk_socpeople = c.rowid"; if ($source == 'internal') { @@ -1662,8 +1665,8 @@ abstract class CommonObject * Looks for an object with ref matching the wildcard provided * It does only work when $this->table_ref_field is set * - * @param string $ref Wildcard - * @return int >1 = OK, 0 = Not found or table_ref_field not defined, <0 = KO + * @param string $ref Wildcard + * @return int >1 = OK, 0 = Not found or table_ref_field not defined, <0 = KO */ public function fetchOneLike($ref) { @@ -1671,7 +1674,7 @@ abstract class CommonObject return 0; } - $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX.$this->table_element." WHERE ".$this->table_ref_field." LIKE '".$this->db->escape($ref)."' LIMIT 1"; + $sql = "SELECT rowid FROM ".$this->db->prefix().$this->table_element." WHERE ".$this->table_ref_field." LIKE '".$this->db->escape($ref)."' LIMIT 1"; $query = $this->db->query($sql); @@ -1713,7 +1716,7 @@ abstract class CommonObject if ($idtype > 0) { if (empty($this->barcode_type) || empty($this->barcode_type_code) || empty($this->barcode_type_label) || empty($this->barcode_type_coder)) { // If data not already loaded $sql = "SELECT rowid, code, libelle as label, coder"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_barcode_type"; + $sql .= " FROM ".$this->db->prefix()."c_barcode_type"; $sql .= " WHERE rowid = ".((int) $idtype); dol_syslog(get_class($this).'::fetch_barcode', LOG_DEBUG); $resql = $this->db->query($sql); @@ -1850,7 +1853,7 @@ abstract class CommonObject $result = false; - $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX.$table; + $sql = "SELECT rowid FROM ".$this->db->prefix().$table; $sql .= " WHERE ".$field." = '".$this->db->escape($key)."'"; if (!empty($element)) { $sql .= " AND entity IN (".getEntity($element).")"; @@ -1883,7 +1886,7 @@ abstract class CommonObject { $result = false; if (!empty($id) && !empty($field) && !empty($table)) { - $sql = "SELECT ".$field." FROM ".MAIN_DB_PREFIX.$table; + $sql = "SELECT ".$field." FROM ".$this->db->prefix().$table; $sql .= " WHERE rowid = ".((int) $id); dol_syslog(get_class($this).'::getValueFrom', LOG_DEBUG); @@ -1941,7 +1944,7 @@ abstract class CommonObject $fk_user_field = 'fk_user_mod'; } - $sql = "UPDATE ".MAIN_DB_PREFIX.$table." SET "; + $sql = "UPDATE ".$this->db->prefix().$table." SET "; if ($format == 'text') { $sql .= $field." = '".$this->db->escape($value)."'"; @@ -2041,20 +2044,20 @@ abstract class CommonObject } $restrictiononfksoc = empty($this->restrictiononfksoc) ? 0 : $this->restrictiononfksoc; $sql = "SELECT MAX(te.".$fieldid.")"; - $sql .= " FROM ".(empty($nodbprefix) ?MAIN_DB_PREFIX:'').$this->table_element." as te"; + $sql .= " FROM ".(empty($nodbprefix) ?$this->db->prefix():'').$this->table_element." as te"; if ($this->element == 'user' && !empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) { - $sql .= ",".MAIN_DB_PREFIX."usergroup_user as ug"; + $sql .= ",".$this->db->prefix()."usergroup_user as ug"; } if (isset($this->ismultientitymanaged) && !is_numeric($this->ismultientitymanaged)) { $tmparray = explode('@', $this->ismultientitymanaged); - $sql .= ", ".MAIN_DB_PREFIX.$tmparray[1]." as ".($tmparray[1] == 'societe' ? 's' : 'parenttable'); // If we need to link to this table to limit select to entity + $sql .= ", ".$this->db->prefix().$tmparray[1]." as ".($tmparray[1] == 'societe' ? 's' : 'parenttable'); // If we need to link to this table to limit select to entity } elseif ($restrictiononfksoc == 1 && $this->element != 'societe' && empty($user->rights->societe->client->voir) && !$socid) { - $sql .= ", ".MAIN_DB_PREFIX."societe as s"; // If we need to link to societe to limit select to socid + $sql .= ", ".$this->db->prefix()."societe as s"; // If we need to link to societe to limit select to socid } elseif ($restrictiononfksoc == 2 && $this->element != 'societe' && empty($user->rights->societe->client->voir) && !$socid) { - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON te.fk_soc = s.rowid"; // If we need to link to societe to limit select to socid + $sql .= " LEFT JOIN ".$this->db->prefix()."societe as s ON te.fk_soc = s.rowid"; // If we need to link to societe to limit select to socid } if ($restrictiononfksoc && empty($user->rights->societe->client->voir) && !$socid) { - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON ".$aliastablesociete.".rowid = sc.fk_soc"; + $sql .= " LEFT JOIN ".$this->db->prefix()."societe_commerciaux as sc ON ".$aliastablesociete.".rowid = sc.fk_soc"; } $sql .= " WHERE te.".$fieldid." < '".$this->db->escape($fieldid == 'rowid' ? $this->id : $this->ref)."'"; // ->ref must always be defined (set to id if field does not exists) if ($restrictiononfksoc == 1 && empty($user->rights->societe->client->voir) && !$socid) { @@ -2111,20 +2114,20 @@ abstract class CommonObject $this->ref_previous = $row[0]; $sql = "SELECT MIN(te.".$fieldid.")"; - $sql .= " FROM ".(empty($nodbprefix) ?MAIN_DB_PREFIX:'').$this->table_element." as te"; + $sql .= " FROM ".(empty($nodbprefix) ?$this->db->prefix():'').$this->table_element." as te"; if ($this->element == 'user' && !empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) { - $sql .= ",".MAIN_DB_PREFIX."usergroup_user as ug"; + $sql .= ",".$this->db->prefix()."usergroup_user as ug"; } if (isset($this->ismultientitymanaged) && !is_numeric($this->ismultientitymanaged)) { $tmparray = explode('@', $this->ismultientitymanaged); - $sql .= ", ".MAIN_DB_PREFIX.$tmparray[1]." as ".($tmparray[1] == 'societe' ? 's' : 'parenttable'); // If we need to link to this table to limit select to entity + $sql .= ", ".$this->db->prefix().$tmparray[1]." as ".($tmparray[1] == 'societe' ? 's' : 'parenttable'); // If we need to link to this table to limit select to entity } elseif ($restrictiononfksoc == 1 && $this->element != 'societe' && empty($user->rights->societe->client->voir) && !$socid) { - $sql .= ", ".MAIN_DB_PREFIX."societe as s"; // If we need to link to societe to limit select to socid + $sql .= ", ".$this->db->prefix()."societe as s"; // If we need to link to societe to limit select to socid } elseif ($restrictiononfksoc == 2 && $this->element != 'societe' && empty($user->rights->societe->client->voir) && !$socid) { - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON te.fk_soc = s.rowid"; // If we need to link to societe to limit select to socid + $sql .= " LEFT JOIN ".$this->db->prefix()."societe as s ON te.fk_soc = s.rowid"; // If we need to link to societe to limit select to socid } if ($restrictiononfksoc && empty($user->rights->societe->client->voir) && !$socid) { - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON ".$aliastablesociete.".rowid = sc.fk_soc"; + $sql .= " LEFT JOIN ".$this->db->prefix()."societe_commerciaux as sc ON ".$aliastablesociete.".rowid = sc.fk_soc"; } $sql .= " WHERE te.".$fieldid." > '".$this->db->escape($fieldid == 'rowid' ? $this->id : $this->ref)."'"; // ->ref must always be defined (set to id if field does not exists) if ($restrictiononfksoc == 1 && empty($user->rights->societe->client->voir) && !$socid) { @@ -2223,7 +2226,7 @@ abstract class CommonObject return -1; } - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element; + $sql = "UPDATE ".$this->db->prefix().$this->table_element; if (!empty($this->fields['fk_project'])) { // Common case if ($projectid) { $sql .= " SET fk_project = ".((int) $projectid); @@ -2266,7 +2269,12 @@ abstract class CommonObject */ public function setPaymentMethods($id) { + global $user; + + $error = 0; $notrigger = 0; + dol_syslog(get_class($this).'::setPaymentMethods('.$id.')'); + if ($this->statut >= 0 || $this->element == 'societe') { // TODO uniformize field name $fieldname = 'fk_mode_reglement'; @@ -2283,7 +2291,7 @@ abstract class CommonObject $fieldname = 'fk_typepayment'; } - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element; + $sql = "UPDATE ".$this->db->prefix().$this->table_element; $sql .= " SET ".$fieldname." = ".(($id > 0 || $id == '0') ? ((int) $id) : 'NULL'); $sql .= ' WHERE rowid='.((int) $this->id); @@ -2293,6 +2301,19 @@ abstract class CommonObject if (get_class($this) == 'Fournisseur') { $this->mode_reglement_supplier_id = $id; } + // Triggers + if (!$error && !$notrigger) { + // Call triggers + if (get_class($this) == 'Commande') { + $result = $this->call_trigger('ORDER_MODIFY', $user); + } else { + $result = $this->call_trigger(strtoupper(get_class($this)).'_MODIFY', $user); + } + if ($result < 0) { + $error++; + } + // End call triggers + } return 1; } else { dol_syslog(get_class($this).'::setPaymentMethods Error '.$this->db->error()); @@ -2318,7 +2339,7 @@ abstract class CommonObject if ($this->statut >= 0 || $this->element == 'societe') { $fieldname = 'multicurrency_code'; - $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; + $sql = 'UPDATE '.$this->db->prefix().$this->table_element; $sql .= " SET ".$fieldname." = '".$this->db->escape($code)."'"; $sql .= ' WHERE rowid='.((int) $this->id); @@ -2356,7 +2377,7 @@ abstract class CommonObject if ($this->statut >= 0 || $this->element == 'societe') { $fieldname = 'multicurrency_tx'; - $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; + $sql = 'UPDATE '.$this->db->prefix().$this->table_element; $sql .= " SET ".$fieldname." = ".((float) $rate); $sql .= ' WHERE rowid='.((int) $this->id); @@ -2564,7 +2585,7 @@ abstract class CommonObject $fieldname = 'cond_reglement_supplier'; } - $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; + $sql = 'UPDATE '.$this->db->prefix().$this->table_element; $sql .= " SET ".$fieldname." = ".(($id > 0 || $id == '0') ? ((int) $id) : 'NULL'); $sql .= ' WHERE rowid='.((int) $this->id); @@ -2606,7 +2627,7 @@ abstract class CommonObject $fieldname = 'transport_mode_supplier'; } - $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; + $sql = 'UPDATE '.$this->db->prefix().$this->table_element; $sql .= " SET ".$fieldname." = ".(($id > 0 || $id == '0') ? ((int) $id) : 'NULL'); $sql .= ' WHERE rowid='.((int) $this->id); @@ -2641,7 +2662,7 @@ abstract class CommonObject if ($this->statut >= 0 || $this->element == 'societe') { $fieldname = 'retained_warranty_fk_cond_reglement'; - $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; + $sql = 'UPDATE '.$this->db->prefix().$this->table_element; $sql .= " SET ".$fieldname." = ".((int) $id); $sql .= ' WHERE rowid='.((int) $this->id); @@ -2674,7 +2695,7 @@ abstract class CommonObject $fieldname = 'fk_address'; } - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element." SET ".$fieldname." = ".((int) $id); + $sql = "UPDATE ".$this->db->prefix().$this->table_element." SET ".$fieldname." = ".((int) $id); $sql .= " WHERE rowid = ".((int) $this->id)." AND fk_statut = 0"; if ($this->db->query($sql)) { @@ -2719,7 +2740,7 @@ abstract class CommonObject } dol_syslog(get_class($this).'::setShippingMethod('.$shipping_method_id.')'); - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element; + $sql = "UPDATE ".$this->db->prefix().$this->table_element; $sql .= " SET fk_shipping_method = ".((int) $shipping_method_id); $sql .= " WHERE rowid=".((int) $this->id); $resql = $this->db->query($sql); @@ -2766,7 +2787,7 @@ abstract class CommonObject } dol_syslog(get_class($this).'::setWarehouse('.$warehouse_id.')'); - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element; + $sql = "UPDATE ".$this->db->prefix().$this->table_element; $sql .= " SET fk_warehouse = ".((int) $warehouse_id); $sql .= " WHERE rowid=".((int) $this->id); @@ -2797,7 +2818,7 @@ abstract class CommonObject $newmodelpdf = dol_trunc($modelpdf, 255); - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element; + $sql = "UPDATE ".$this->db->prefix().$this->table_element; $sql .= " SET model_pdf = '".$this->db->escape($newmodelpdf)."'"; $sql .= " WHERE rowid = ".((int) $this->id); @@ -2843,7 +2864,7 @@ abstract class CommonObject } dol_syslog(get_class($this).'::setBankAccount('.$fk_account.')'); - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element; + $sql = "UPDATE ".$this->db->prefix().$this->table_element; $sql .= " SET fk_account = ".((int) $fk_account); $sql .= " WHERE rowid=".((int) $this->id); @@ -2900,7 +2921,7 @@ abstract class CommonObject // Count number of lines to reorder (according to choice $renum) $nl = 0; - $sql = "SELECT count(rowid) FROM ".MAIN_DB_PREFIX.$this->table_element_line; + $sql = "SELECT count(rowid) FROM ".$this->db->prefix().$this->table_element_line; $sql .= " WHERE ".$this->fk_element." = ".((int) $this->id); if (!$renum) { $sql .= ' AND rang = 0'; @@ -2922,7 +2943,7 @@ abstract class CommonObject $rows = array(); // We first search all lines that are parent lines (for multilevel details lines) - $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX.$this->table_element_line; + $sql = "SELECT rowid FROM ".$this->db->prefix().$this->table_element_line; $sql .= " WHERE ".$this->fk_element." = ".((int) $this->id); if ($fk_parent_line) { $sql .= ' AND fk_parent_line IS NULL'; @@ -2970,7 +2991,7 @@ abstract class CommonObject { $rows = array(); - $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX.$this->table_element_line; + $sql = "SELECT rowid FROM ".$this->db->prefix().$this->table_element_line; $sql .= " WHERE ".$this->fk_element." = ".((int) $this->id); $sql .= ' AND fk_parent_line = '.((int) $id); $sql .= ' ORDER BY rang ASC'; @@ -3048,7 +3069,7 @@ abstract class CommonObject $fieldposition = 'position'; } - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element_line." SET ".$fieldposition." = ".((int) $rang); + $sql = "UPDATE ".$this->db->prefix().$this->table_element_line." SET ".$fieldposition." = ".((int) $rang); $sql .= ' WHERE rowid = '.((int) $rowid); dol_syslog(get_class($this)."::updateRangOfLine", LOG_DEBUG); @@ -3094,11 +3115,11 @@ abstract class CommonObject $fieldposition = 'position'; } - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element_line." SET ".$fieldposition." = ".((int) $rang); + $sql = "UPDATE ".$this->db->prefix().$this->table_element_line." SET ".$fieldposition." = ".((int) $rang); $sql .= " WHERE ".$this->fk_element." = ".((int) $this->id); $sql .= ' AND rang = '.((int) ($rang - 1)); if ($this->db->query($sql)) { - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element_line." SET ".$fieldposition." = ".((int) ($rang - 1)); + $sql = "UPDATE ".$this->db->prefix().$this->table_element_line." SET ".$fieldposition." = ".((int) ($rang - 1)); $sql .= ' WHERE rowid = '.((int) $rowid); if (!$this->db->query($sql)) { dol_print_error($this->db); @@ -3125,11 +3146,11 @@ abstract class CommonObject $fieldposition = 'position'; } - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element_line." SET ".$fieldposition." = ".((int) $rang); + $sql = "UPDATE ".$this->db->prefix().$this->table_element_line." SET ".$fieldposition." = ".((int) $rang); $sql .= " WHERE ".$this->fk_element." = ".((int) $this->id); $sql .= ' AND rang = '.((int) ($rang + 1)); if ($this->db->query($sql)) { - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element_line." SET ".$fieldposition." = ".((int) ($rang + 1)); + $sql = "UPDATE ".$this->db->prefix().$this->table_element_line." SET ".$fieldposition." = ".((int) ($rang + 1)); $sql .= ' WHERE rowid = '.((int) $rowid); if (!$this->db->query($sql)) { dol_print_error($this->db); @@ -3148,7 +3169,7 @@ abstract class CommonObject */ public function getRangOfLine($rowid) { - $sql = "SELECT rang FROM ".MAIN_DB_PREFIX.$this->table_element_line; + $sql = "SELECT rang FROM ".$this->db->prefix().$this->table_element_line; $sql .= " WHERE rowid = ".((int) $rowid); dol_syslog(get_class($this)."::getRangOfLine", LOG_DEBUG); @@ -3167,7 +3188,7 @@ abstract class CommonObject */ public function getIdOfLine($rang) { - $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX.$this->table_element_line; + $sql = "SELECT rowid FROM ".$this->db->prefix().$this->table_element_line; $sql .= " WHERE ".$this->fk_element." = ".((int) $this->id); $sql .= " AND rang = ".((int) $rang); $resql = $this->db->query($sql); @@ -3194,7 +3215,7 @@ abstract class CommonObject // Search the last rang with fk_parent_line if ($fk_parent_line) { - $sql = "SELECT max(".$positionfield.") FROM ".MAIN_DB_PREFIX.$this->table_element_line; + $sql = "SELECT max(".$positionfield.") FROM ".$this->db->prefix().$this->table_element_line; $sql .= " WHERE ".$this->fk_element." = ".((int) $this->id); $sql .= " AND fk_parent_line = ".((int) $fk_parent_line); @@ -3210,7 +3231,7 @@ abstract class CommonObject } } else { // If not, search the last rang of element - $sql = "SELECT max(".$positionfield.") FROM ".MAIN_DB_PREFIX.$this->table_element_line; + $sql = "SELECT max(".$positionfield.") FROM ".$this->db->prefix().$this->table_element_line; $sql .= " WHERE ".$this->fk_element." = ".((int) $this->id); dol_syslog(get_class($this)."::line_max", LOG_DEBUG); @@ -3237,7 +3258,7 @@ abstract class CommonObject return -1; } - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element; + $sql = "UPDATE ".$this->db->prefix().$this->table_element; $sql .= " SET ref_ext = '".$this->db->escape($ref_ext)."'"; $sql .= " WHERE ".(isset($this->table_rowid) ? $this->table_rowid : 'rowid')." = ".((int) $this->id); @@ -3288,7 +3309,7 @@ abstract class CommonObject } else { $fieldusermod = "fk_user_modif"; } - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element; + $sql = "UPDATE ".$this->db->prefix().$this->table_element; $sql .= " SET note".$newsuffix." = ".(!empty($note) ? ("'".$this->db->escape($note)."'") : "NULL"); $sql .= ", ".$fieldusermod." = ".((int) $user->id); $sql .= " WHERE rowid = ".((int) $this->id); @@ -3357,7 +3378,7 @@ abstract class CommonObject $MODULE = "MODULE_DISALLOW_UPDATE_PRICE_ORDER"; } elseif ($this->element == 'facture' || $this->element == 'invoice') { $MODULE = "MODULE_DISALLOW_UPDATE_PRICE_INVOICE"; - } elseif ($this->element == 'facture_fourn' || $this->element == 'supplier_invoice' || $this->element == 'invoice_supplier') { + } elseif ($this->element == 'facture_fourn' || $this->element == 'supplier_invoice' || $this->element == 'invoice_supplier' || $this->element == 'invoice_supplier_rec') { $MODULE = "MODULE_DISALLOW_UPDATE_PRICE_SUPPLIER_INVOICE"; } elseif ($this->element == 'order_supplier' || $this->element == 'supplier_order') { $MODULE = "MODULE_DISALLOW_UPDATE_PRICE_SUPPLIER_ORDER"; @@ -3402,6 +3423,9 @@ abstract class CommonObject $fieldtva = 'tva'; $fieldup = 'pu_ht'; } + if ($this->element == 'invoice_supplier_rec') { + $fieldup = 'pu_ht'; + } if ($this->element == 'expensereport') { $fieldup = 'value_unit'; } @@ -3412,7 +3436,7 @@ abstract class CommonObject $sql .= ', situation_percent'; } $sql .= ', multicurrency_total_ht, multicurrency_total_tva, multicurrency_total_ttc'; - $sql .= " FROM ".MAIN_DB_PREFIX.$this->table_element_line; + $sql .= " FROM ".$this->db->prefix().$this->table_element_line; $sql .= " WHERE ".$this->fk_element." = ".((int) $this->id); if ($exclspec) { $product_field = 'product_type'; @@ -3460,7 +3484,7 @@ abstract class CommonObject //var_dump($diff_when_using_price_ht.' '.$diff_on_current_total); if ($diff_when_using_price_ht && $diff_on_current_total) { - $sqlfix = "UPDATE ".MAIN_DB_PREFIX.$this->table_element_line." SET ".$fieldtva." = ".price2num((float) $tmpcal[1]).", total_ttc = ".price2num((float) $tmpcal[2])." WHERE rowid = ".((int) $obj->rowid); + $sqlfix = "UPDATE ".$this->db->prefix().$this->table_element_line." SET ".$fieldtva." = ".price2num((float) $tmpcal[1]).", total_ttc = ".price2num((float) $tmpcal[2])." WHERE rowid = ".((int) $obj->rowid); dol_syslog('We found unconsistent data into detailed line (diff_when_using_price_ht = '.$diff_when_using_price_ht.' and diff_on_current_total = '.$diff_on_current_total.') for line rowid = '.$obj->rowid." (total vat of line calculated=".$tmpcal[1].", database=".$obj->total_tva."). We fix the total_vat and total_ttc of line by running sqlfix = ".$sqlfix, LOG_WARNING); $resqlfix = $this->db->query($sqlfix); if (!$resqlfix) { @@ -3504,7 +3528,7 @@ abstract class CommonObject dol_print_error('', $errmsg); exit; } - $sqlfix = "UPDATE ".MAIN_DB_PREFIX.$this->table_element_line." SET ".$fieldtva." = ".price2num($obj->total_tva - $diff).", total_ttc = ".price2num($obj->total_ttc - $diff)." WHERE rowid = ".((int) $obj->rowid); + $sqlfix = "UPDATE ".$this->db->prefix().$this->table_element_line." SET ".$fieldtva." = ".price2num($obj->total_tva - $diff).", total_ttc = ".price2num($obj->total_ttc - $diff)." WHERE rowid = ".((int) $obj->rowid); dol_syslog('We found a difference of '.$diff.' for line rowid = '.$obj->rowid.". We fix the total_vat and total_ttc of line by running sqlfix = ".$sqlfix); $resqlfix = $this->db->query($sqlfix); if (!$resqlfix) { @@ -3552,7 +3576,7 @@ abstract class CommonObject if ($this->element == 'facture' || $this->element == 'facturerec') { $fieldtva = 'total_tva'; } - if ($this->element == 'facture_fourn' || $this->element == 'invoice_supplier') { + if ($this->element == 'facture_fourn' || $this->element == 'invoice_supplier' || $this->element == 'invoice_supplier_rec') { $fieldtva = 'total_tva'; } if ($this->element == 'propal') { @@ -3572,7 +3596,7 @@ abstract class CommonObject } if (empty($nodatabaseupdate)) { - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element.' SET'; + $sql = "UPDATE ".$this->db->prefix().$this->table_element.' SET'; $sql .= " ".$fieldht." = ".((float) price2num($this->total_ht)).","; $sql .= " ".$fieldtva." = ".((float) price2num($this->total_tva)).","; $sql .= " ".$fieldlocaltax1." = ".((float) price2num($this->total_localtax1)).","; @@ -3653,7 +3677,7 @@ abstract class CommonObject $this->db->begin(); $error = 0; - $sql = "INSERT INTO " . MAIN_DB_PREFIX . "element_element ("; + $sql = "INSERT INTO " . $this->db->prefix() . "element_element ("; $sql .= "fk_source"; $sql .= ", sourcetype"; $sql .= ", fk_target"; @@ -3694,23 +3718,23 @@ abstract class CommonObject /** * Fetch array of objects linked to current object (object of enabled modules only). Links are loaded into * this->linkedObjectsIds array + - * this->linkedObjects array if $loadalsoobjects = 1 + * this->linkedObjects array if $loadalsoobjects = 1 or $loadalsoobjects = type * Possible usage for parameters: * - all parameters empty -> we look all link to current object (current object can be source or target) - * - source id+type -> will get target list linked to source - * - target id+type -> will get source list linked to target - * - source id+type + target type -> will get target list of the type - * - target id+type + target source -> will get source list of the type + * - source id+type -> will get list of targets linked to source + * - target id+type -> will get list of sources linked to target + * - source id+type + target type -> will get list of targets of the type linked to source + * - target id+type + source type -> will get list of sources of the type linked to target * - * @param int $sourceid Object source id (if not defined, id of object) - * @param string $sourcetype Object source type (if not defined, element name of object) - * @param int $targetid Object target id (if not defined, id of object) - * @param string $targettype Object target type (if not defined, elemennt name of object) - * @param string $clause 'OR' or 'AND' clause used when both source id and target id are provided - * @param int $alsosametype 0=Return only links to object that differs from source type. 1=Include also link to objects of same type. - * @param string $orderby SQL 'ORDER BY' clause - * @param int $loadalsoobjects Load also array this->linkedObjects (Use 0 to increase performances) - * @return int <0 if KO, >0 if OK + * @param int $sourceid Object source id (if not defined, id of object) + * @param string $sourcetype Object source type (if not defined, element name of object) + * @param int $targetid Object target id (if not defined, id of object) + * @param string $targettype Object target type (if not defined, element name of object) + * @param string $clause 'OR' or 'AND' clause used when both source id and target id are provided + * @param int $alsosametype 0=Return only links to object that differs from source type. 1=Include also link to objects of same type. + * @param string $orderby SQL 'ORDER BY' clause + * @param int|string $loadalsoobjects Load also array this->linkedObjects. Use 0 to increase performances, Use 1 to load all, Use value of type ('facture', 'facturerec', ...) to load only a type of object. + * @return int <0 if KO, >0 if OK * @see add_object_linked(), updateObjectLinked(), deleteObjectLinked() */ public function fetchObjectLinked($sourceid = null, $sourcetype = '', $targetid = null, $targettype = '', $clause = 'OR', $alsosametype = 1, $orderby = 'sourcetype', $loadalsoobjects = 1) @@ -3760,8 +3784,8 @@ abstract class CommonObject }*/ // Links between objects are stored in table element_element - $sql = 'SELECT rowid, fk_source, sourcetype, fk_target, targettype'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'element_element'; + $sql = "SELECT rowid, fk_source, sourcetype, fk_target, targettype"; + $sql .= " FROM ".$this->db->prefix()."element_element"; $sql .= " WHERE "; if ($justsource || $justtarget) { if ($justsource) { @@ -3779,7 +3803,7 @@ abstract class CommonObject $sql .= "(fk_source = ".((int) $sourceid)." AND sourcetype = '".$this->db->escape($sourcetype)."')"; $sql .= " ".$clause." (fk_target = ".((int) $targetid)." AND targettype = '".$this->db->escape($targettype)."')"; } - $sql .= ' ORDER BY '.$orderby; + $sql .= " ORDER BY ".$orderby; dol_syslog(get_class($this)."::fetchObjectLink", LOG_DEBUG); $resql = $this->db->query($sql); @@ -3892,10 +3916,9 @@ abstract class CommonObject $module = 'mrp'; } - - // Here $module, $classfile and $classname are set + // Here $module, $classfile and $classname are set, we can use them. if ($conf->$module->enabled && (($element != $this->element) || $alsosametype)) { - if ($loadalsoobjects) { + if ($loadalsoobjects && (is_numeric($loadalsoobjects) || ($loadalsoobjects === $objecttype))) { dol_include_once('/'.$classpath.'/'.$classfile.'.class.php'); //print '/'.$classpath.'/'.$classfile.'.class.php '.class_exists($classname); if (class_exists($classname)) { @@ -3948,7 +3971,7 @@ abstract class CommonObject $this->db->begin(); $error = 0; - $sql = "UPDATE " . MAIN_DB_PREFIX . "element_element SET "; + $sql = "UPDATE " . $this->db->prefix() . "element_element SET "; if ($updatesource) { $sql .= "fk_source = " . ((int) $sourceid); $sql .= ", sourcetype = '" . $this->db->escape($sourcetype) . "'"; @@ -4037,7 +4060,7 @@ abstract class CommonObject } if (!$error) { - $sql = "DELETE FROM " . MAIN_DB_PREFIX . "element_element"; + $sql = "DELETE FROM " . $this->db->prefix() . "element_element"; $sql .= " WHERE"; if ($rowid > 0) { $sql .= " rowid = " . ((int) $rowid); @@ -4089,7 +4112,7 @@ abstract class CommonObject global $db; - $sql = "SELECT ".$field_select." FROM ".MAIN_DB_PREFIX.$table_element." WHERE ".$field_where." = ".((int) $fk_object_where); + $sql = "SELECT ".$field_select." FROM ".$db->prefix().$table_element." WHERE ".$field_where." = ".((int) $fk_object_where); $resql = $db->query($sql); $TRes = array(); @@ -4118,7 +4141,7 @@ abstract class CommonObject global $db; - $sql = "DELETE FROM ".MAIN_DB_PREFIX.$table_element." WHERE ".$field_where." = ".((int) $fk_object_where); + $sql = "DELETE FROM ".$db->prefix().$table_element." WHERE ".$field_where." = ".((int) $fk_object_where); $resql = $db->query($sql); if (empty($resql)) { @@ -4171,7 +4194,7 @@ abstract class CommonObject $fieldstatus = 'status'; } - $sql = "UPDATE ".MAIN_DB_PREFIX.$elementTable; + $sql = "UPDATE ".$this->db->prefix().$elementTable; $sql .= " SET ".$fieldstatus." = ".((int) $status); // If status = 1 = validated, update also fk_user_valid // TODO Replace the test on $elementTable by doing a test on existence of the field in $this->fields @@ -4272,7 +4295,7 @@ abstract class CommonObject $ref = trim($ref); $sql = "SELECT rowid, canvas"; - $sql .= " FROM ".MAIN_DB_PREFIX.$this->table_element; + $sql .= " FROM ".$this->db->prefix().$this->table_element; $sql .= " WHERE entity IN (".getEntity($this->element).")"; if (!empty($id)) { $sql .= " AND rowid = ".((int) $id); @@ -4305,7 +4328,7 @@ abstract class CommonObject */ public function getSpecialCode($lineid) { - $sql = "SELECT special_code FROM ".MAIN_DB_PREFIX.$this->table_element_line; + $sql = "SELECT special_code FROM ".$this->db->prefix().$this->table_element_line; $sql .= " WHERE rowid = ".((int) $lineid); $resql = $this->db->query($sql); if ($resql) { @@ -4347,7 +4370,7 @@ abstract class CommonObject foreach ($arraytoscan as $table => $elementname) { //print $id.'-'.$table.'-'.$elementname.'
    '; // Check if third party can be deleted - $sql = "SELECT COUNT(*) as nb from ".MAIN_DB_PREFIX.$table; + $sql = "SELECT COUNT(*) as nb from ".$this->db->prefix().$table; $sql .= " WHERE ".$this->fk_element." = ".((int) $id); $resql = $this->db->query($sql); if ($resql) { @@ -4423,7 +4446,7 @@ abstract class CommonObject $total_discount = 0.00; $sql = "SELECT subprice as pu_ht, qty, remise_percent, total_ht"; - $sql .= " FROM ".MAIN_DB_PREFIX.$this->table_element_line; + $sql .= " FROM ".$this->db->prefix().$this->table_element_line; $sql .= " WHERE ".$this->fk_element." = ".((int) $this->id); dol_syslog(get_class($this).'::getTotalDiscount', LOG_DEBUG); @@ -4563,7 +4586,7 @@ abstract class CommonObject $extraparams = (!empty($this->extraparams) ? json_encode($this->extraparams) : null); - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element; + $sql = "UPDATE ".$this->db->prefix().$this->table_element; $sql .= " SET extraparams = ".(!empty($extraparams) ? "'".$this->db->escape($extraparams)."'" : "null"); $sql .= " WHERE rowid = ".((int) $this->id); @@ -4862,7 +4885,7 @@ abstract class CommonObject */ public function printOriginLinesList($restrictlist = '', $selectedLines = array()) { - global $langs, $hookmanager, $conf, $form; + global $langs, $hookmanager, $conf, $form, $action; print ''; print ''.$langs->trans('Ref').''; @@ -4888,7 +4911,7 @@ abstract class CommonObject if (is_object($hookmanager)) { // Old code is commented on preceding line. $parameters = array('line'=>$line, 'i'=>$i, 'restrictlist'=>$restrictlist, 'selectedLines'=> $selectedLines); if (!empty($line->fk_parent_line)) { $parameters['fk_parent_line'] = $line->fk_parent_line; } - $reshook = $hookmanager->executeHooks('printOriginObjectSubLine', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + $reshook = $hookmanager->executeHooks('printOriginObjectLine', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks } if (empty($reshook)) { $this->printOriginLine($line, '', $restrictlist, '/core/tpl', $selectedLines); @@ -5058,7 +5081,7 @@ abstract class CommonObject // phpcs:enable $this->db->begin(); - $sql = "INSERT INTO ".MAIN_DB_PREFIX."element_resources ("; + $sql = "INSERT INTO ".$this->db->prefix()."element_resources ("; $sql .= "resource_id"; $sql .= ", resource_type"; $sql .= ", element_id"; @@ -5101,7 +5124,7 @@ abstract class CommonObject $this->db->begin(); - $sql = "DELETE FROM ".MAIN_DB_PREFIX."element_resources"; + $sql = "DELETE FROM ".$this->db->prefix()."element_resources"; $sql .= " WHERE rowid = ".((int) $rowid); dol_syslog(get_class($this)."::delete_resource", LOG_DEBUG); @@ -5292,103 +5315,14 @@ abstract class CommonObject // Index file in database if (!empty($obj->result['fullpath'])) { $destfull = $obj->result['fullpath']; - $upload_dir = dirname($destfull); - $destfile = basename($destfull); - $rel_dir = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $upload_dir); - if (!preg_match('/[\\/]temp[\\/]|[\\/]thumbs|\.meta$/', $rel_dir)) { // If not a tmp dir - $filename = basename($destfile); - $rel_dir = preg_replace('/[\\/]$/', '', $rel_dir); - $rel_dir = preg_replace('/^[\\/]/', '', $rel_dir); - - include_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmfiles.class.php'; - $ecmfile = new EcmFiles($this->db); - $result = $ecmfile->fetch(0, '', ($rel_dir ? $rel_dir.'/' : '').$filename); - - // Set the public "share" key - $setsharekey = false; - if ($this->element == 'propal') { - $useonlinesignature = $conf->global->MAIN_FEATURES_LEVEL; // Replace this with 1 when feature to make online signature is ok - if ($useonlinesignature) { - $setsharekey = true; - } - if (!empty($conf->global->PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD)) { - $setsharekey = true; - } - } - if ($this->element == 'commande' && !empty($conf->global->ORDER_ALLOW_EXTERNAL_DOWNLOAD)) { - $setsharekey = true; - } - if ($this->element == 'facture' && !empty($conf->global->INVOICE_ALLOW_EXTERNAL_DOWNLOAD)) { - $setsharekey = true; - } - if ($this->element == 'bank_account' && !empty($conf->global->BANK_ACCOUNT_ALLOW_EXTERNAL_DOWNLOAD)) { - $setsharekey = true; - } - if ($this->element == 'contrat' && !empty($conf->global->CONTRACT_ALLOW_EXTERNAL_DOWNLOAD)) { - $setsharekey = true; - } - if ($this->element == 'supplier_proposal' && !empty($conf->global->SUPPLIER_PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD)) { - $setsharekey = true; - } - - if ($setsharekey) { - if (empty($ecmfile->share)) { // Because object not found or share not set yet - require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; - $ecmfile->share = getRandomPassword(true); - } - } - - if ($result > 0) { - $ecmfile->label = md5_file(dol_osencode($destfull)); // hash of file content - $ecmfile->fullpath_orig = ''; - $ecmfile->gen_or_uploaded = 'generated'; - $ecmfile->description = ''; // indexed content - $ecmfile->keywords = ''; // keyword content - $result = $ecmfile->update($user); - if ($result < 0) { - setEventMessages($ecmfile->error, $ecmfile->errors, 'warnings'); - } - } else { - $ecmfile->entity = $conf->entity; - $ecmfile->filepath = $rel_dir; - $ecmfile->filename = $filename; - $ecmfile->label = md5_file(dol_osencode($destfull)); // hash of file content - $ecmfile->fullpath_orig = ''; - $ecmfile->gen_or_uploaded = 'generated'; - $ecmfile->description = ''; // indexed content - $ecmfile->keywords = ''; // keyword content - $ecmfile->src_object_type = $this->table_element; // $this->table_name is 'myobject' or 'mymodule_myobject'. - $ecmfile->src_object_id = $this->id; - - $result = $ecmfile->create($user); - if ($result < 0) { - setEventMessages($ecmfile->error, $ecmfile->errors, 'warnings'); - } - } - - /*$this->result['fullname']=$destfull; - $this->result['filepath']=$ecmfile->filepath; - $this->result['filename']=$ecmfile->filename;*/ - //var_dump($obj->update_main_doc_field);exit; - - // Update the last_main_doc field into main object (if document generator has property ->update_main_doc_field set) - $update_main_doc_field = 0; - if (!empty($obj->update_main_doc_field)) { - $update_main_doc_field = 1; - } - if ($update_main_doc_field && !empty($this->table_element)) { - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element." SET last_main_doc = '".$this->db->escape($ecmfile->filepath."/".$ecmfile->filename)."'"; - $sql .= " WHERE rowid = ".((int) $this->id); - - $resql = $this->db->query($sql); - if (!$resql) { - dol_print_error($this->db); - } else { - $this->last_main_doc = $ecmfile->filepath.'/'.$ecmfile->filename; - } - } + // Update the last_main_doc field into main object (if document generator has property ->update_main_doc_field set) + $update_main_doc_field = 0; + if (!empty($obj->update_main_doc_field)) { + $update_main_doc_field = 1; } + + $this->indexFile($destfull, $update_main_doc_field); } else { dol_syslog('Method ->write_file was called on object '.get_class($obj).' and return a success but the return array ->result["fullpath"] was not set.', LOG_WARNING); } @@ -5417,6 +5351,115 @@ abstract class CommonObject } } + /** + * Index a file into the ECM database + * + * @param string $destfull Full path of file to index + * @param int $update_main_doc_field Update field main_doc file into table of object + * @return int <0 if KO, >0 if OK + */ + public function indexFile($destfull, $update_main_doc_field) + { + global $conf, $user; + + $upload_dir = dirname($destfull); + $destfile = basename($destfull); + $rel_dir = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $upload_dir); + + if (!preg_match('/[\\/]temp[\\/]|[\\/]thumbs|\.meta$/', $rel_dir)) { // If not a tmp dir + $filename = basename($destfile); + $rel_dir = preg_replace('/[\\/]$/', '', $rel_dir); + $rel_dir = preg_replace('/^[\\/]/', '', $rel_dir); + + include_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmfiles.class.php'; + $ecmfile = new EcmFiles($this->db); + $result = $ecmfile->fetch(0, '', ($rel_dir ? $rel_dir.'/' : '').$filename); + + // Set the public "share" key + $setsharekey = false; + if ($this->element == 'propal' || $this->element == 'proposal') { + if (!isset($conf->global->PROPOSAL_ALLOW_ONLINESIGN) || !empty($conf->global->PROPOSAL_ALLOW_ONLINESIGN)) { + $setsharekey = true; // feature to make online signature is not set or set to on (default) + } + if (!empty($conf->global->PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD)) { + $setsharekey = true; + } + } + if ($this->element == 'commande' && !empty($conf->global->ORDER_ALLOW_EXTERNAL_DOWNLOAD)) { + $setsharekey = true; + } + if ($this->element == 'facture' && !empty($conf->global->INVOICE_ALLOW_EXTERNAL_DOWNLOAD)) { + $setsharekey = true; + } + if ($this->element == 'bank_account' && !empty($conf->global->BANK_ACCOUNT_ALLOW_EXTERNAL_DOWNLOAD)) { + $setsharekey = true; + } + if ($this->element == 'contrat' && !empty($conf->global->CONTRACT_ALLOW_EXTERNAL_DOWNLOAD)) { + $setsharekey = true; + } + if ($this->element == 'supplier_proposal' && !empty($conf->global->SUPPLIER_PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD)) { + $setsharekey = true; + } + + if ($setsharekey) { + if (empty($ecmfile->share)) { // Because object not found or share not set yet + require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; + $ecmfile->share = getRandomPassword(true); + } + } + + if ($result > 0) { + $ecmfile->label = md5_file(dol_osencode($destfull)); // hash of file content + $ecmfile->fullpath_orig = ''; + $ecmfile->gen_or_uploaded = 'generated'; + $ecmfile->description = ''; // indexed content + $ecmfile->keywords = ''; // keyword content + $result = $ecmfile->update($user); + if ($result < 0) { + setEventMessages($ecmfile->error, $ecmfile->errors, 'warnings'); + return -1; + } + } else { + $ecmfile->entity = $conf->entity; + $ecmfile->filepath = $rel_dir; + $ecmfile->filename = $filename; + $ecmfile->label = md5_file(dol_osencode($destfull)); // hash of file content + $ecmfile->fullpath_orig = ''; + $ecmfile->gen_or_uploaded = 'generated'; + $ecmfile->description = ''; // indexed content + $ecmfile->keywords = ''; // keyword content + $ecmfile->src_object_type = $this->table_element; // $this->table_name is 'myobject' or 'mymodule_myobject'. + $ecmfile->src_object_id = $this->id; + + $result = $ecmfile->create($user); + if ($result < 0) { + setEventMessages($ecmfile->error, $ecmfile->errors, 'warnings'); + return -1; + } + } + + /*$this->result['fullname']=$destfull; + $this->result['filepath']=$ecmfile->filepath; + $this->result['filename']=$ecmfile->filename;*/ + //var_dump($obj->update_main_doc_field);exit; + + if ($update_main_doc_field && !empty($this->table_element)) { + $sql = "UPDATE ".$this->db->prefix().$this->table_element." SET last_main_doc = '".$this->db->escape($ecmfile->filepath."/".$ecmfile->filename)."'"; + $sql .= " WHERE rowid = ".((int) $this->id); + + $resql = $this->db->query($sql); + if (!$resql) { + dol_print_error($this->db); + return -1; + } else { + $this->last_main_doc = $ecmfile->filepath.'/'.$ecmfile->filename; + } + } + } + + return 1; + } + /** * Build thumb * @todo Move this into files.lib.php @@ -5565,7 +5608,7 @@ abstract class CommonObject // Request to get translation values for object $sql = "SELECT rowid, property, lang , value"; - $sql .= " FROM ".MAIN_DB_PREFIX."object_lang"; + $sql .= " FROM ".$this->db->prefix()."object_lang"; $sql .= " WHERE type_object = '".$this->db->escape($element)."'"; $sql .= " AND fk_object = ".((int) $this->id); @@ -5770,7 +5813,7 @@ abstract class CommonObject $sql .= ", ".$name; } } - $sql .= " FROM ".MAIN_DB_PREFIX.$table_element."_extrafields"; + $sql .= " FROM ".$this->db->prefix().$table_element."_extrafields"; $sql .= " WHERE fk_object = ".((int) $rowid); //dol_syslog(get_class($this)."::fetch_optionals get extrafields data for ".$this->table_element, LOG_DEBUG); // Too verbose @@ -5844,7 +5887,7 @@ abstract class CommonObject dol_syslog(get_class($this)."::deleteExtraFields delete", LOG_DEBUG); - $sql_del = "DELETE FROM ".MAIN_DB_PREFIX.$table_element."_extrafields WHERE fk_object = ".((int) $this->id); + $sql_del = "DELETE FROM ".$this->db->prefix().$table_element."_extrafields WHERE fk_object = ".((int) $this->id); $resql = $this->db->query($sql_del); if (!$resql) { @@ -6044,10 +6087,10 @@ abstract class CommonObject dol_syslog(get_class($this)."::insertExtraFields delete then insert", LOG_DEBUG); - $sql_del = "DELETE FROM ".MAIN_DB_PREFIX.$table_element."_extrafields WHERE fk_object = ".((int) $this->id); + $sql_del = "DELETE FROM ".$this->db->prefix().$table_element."_extrafields WHERE fk_object = ".((int) $this->id); $this->db->query($sql_del); - $sql = "INSERT INTO ".MAIN_DB_PREFIX.$table_element."_extrafields (fk_object"; + $sql = "INSERT INTO ".$this->db->prefix().$table_element."_extrafields (fk_object"; foreach ($new_array_options as $key => $value) { $attributeKey = substr($key, 8); // Remove 'options_' prefix // Add field of attribut @@ -6090,6 +6133,7 @@ abstract class CommonObject } $sql .= ")"; + $resql = $this->db->query($sql); if (!$resql) { $this->error = $this->db->lasterror(); @@ -6194,13 +6238,13 @@ abstract class CommonObject foreach ($new_array_languages as $key => $langcodearray) { // $key = 'name', 'town', ... foreach ($langcodearray as $langcode => $value) { - $sql_del = "DELETE FROM ".MAIN_DB_PREFIX."object_lang"; + $sql_del = "DELETE FROM ".$this->db->prefix()."object_lang"; $sql_del .= " WHERE fk_object = ".((int) $this->id)." AND property = '".$this->db->escape($key)."' AND type_object = '".$this->db->escape($table_element)."'"; $sql_del .= " AND lang = '".$this->db->escape($langcode)."'"; $this->db->query($sql_del); if ($value !== '') { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."object_lang (fk_object, property, type_object, lang, value"; + $sql = "INSERT INTO ".$this->db->prefix()."object_lang (fk_object, property, type_object, lang, value"; $sql .= ") VALUES (".$this->id.", '".$this->db->escape($key)."', '".$this->db->escape($table_element)."', '".$this->db->escape($langcode)."', '".$this->db->escape($value)."'"; $sql .= ")"; @@ -6384,7 +6428,7 @@ abstract class CommonObject $linealreadyfound = 0; // Check if there is already a line for this object (in most cases, it is, but sometimes it is not, for example when extra field has been created after), so we must keep this overload) - $sql = "SELECT COUNT(rowid) as nb FROM ".MAIN_DB_PREFIX.$this->table_element."_extrafields WHERE fk_object = ".((int) $this->id); + $sql = "SELECT COUNT(rowid) as nb FROM ".$this->db->prefix().$this->table_element."_extrafields WHERE fk_object = ".((int) $this->id); $resql = $this->db->query($sql); if ($resql) { $tmpobj = $this->db->fetch_object($resql); @@ -6395,9 +6439,9 @@ abstract class CommonObject if ($linealreadyfound) { if ($this->array_options["options_".$key] === null) { - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element."_extrafields SET ".$key." = null"; + $sql = "UPDATE ".$this->db->prefix().$this->table_element."_extrafields SET ".$key." = null"; } else { - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element."_extrafields SET ".$key." = '".$this->db->escape($this->array_options["options_".$key])."'"; + $sql = "UPDATE ".$this->db->prefix().$this->table_element."_extrafields SET ".$key." = '".$this->db->escape($this->array_options["options_".$key])."'"; } $sql .= " WHERE fk_object = ".((int) $this->id); } else { @@ -6726,7 +6770,7 @@ abstract class CommonObject $sqlwhere = ''; $sql = "SELECT ".$keyList; - $sql .= " FROM ".MAIN_DB_PREFIX.$InfoFieldList[0]; + $sql .= " FROM ".$this->db->prefix().$InfoFieldList[0]; if (!empty($InfoFieldList[4])) { // can use SELECT request if (strpos($InfoFieldList[4], '$SEL$') !== false) { @@ -6742,7 +6786,7 @@ abstract class CommonObject //We have to join on extrafield table if (strpos($InfoFieldList[4], 'extra') !== false) { - $sql .= " as main, ".MAIN_DB_PREFIX.$InfoFieldList[0]."_extrafields as extra"; + $sql .= " as main, ".$this->db->prefix().$InfoFieldList[0]."_extrafields as extra"; $sqlwhere .= " WHERE extra.fk_object=main.".$InfoFieldList[2]." AND ".$InfoFieldList[4]; } else { $sqlwhere .= " WHERE ".$InfoFieldList[4]; @@ -6878,7 +6922,7 @@ abstract class CommonObject $sqlwhere = ''; $sql = "SELECT ".$keyList; - $sql .= ' FROM '.MAIN_DB_PREFIX.$InfoFieldList[0]; + $sql .= ' FROM '.$this->db->prefix().$InfoFieldList[0]; if (!empty($InfoFieldList[4])) { // can use SELECT request if (strpos($InfoFieldList[4], '$SEL$') !== false) { @@ -6894,7 +6938,7 @@ abstract class CommonObject // We have to join on extrafield table if (strpos($InfoFieldList[4], 'extra') !== false) { - $sql .= ' as main, '.MAIN_DB_PREFIX.$InfoFieldList[0].'_extrafields as extra'; + $sql .= ' as main, '.$this->db->prefix().$InfoFieldList[0].'_extrafields as extra'; $sqlwhere .= " WHERE extra.fk_object=main.".$InfoFieldList[2]." AND ".$InfoFieldList[4]; } else { $sqlwhere .= " WHERE ".$InfoFieldList[4]; @@ -7239,7 +7283,7 @@ abstract class CommonObject } $sql = "SELECT ".$keyList; - $sql .= ' FROM '.MAIN_DB_PREFIX.$InfoFieldList[0]; + $sql .= ' FROM '.$this->db->prefix().$InfoFieldList[0]; if (strpos($InfoFieldList[4], 'extra') !== false) { $sql .= ' as main'; } @@ -7322,7 +7366,7 @@ abstract class CommonObject } $sql = "SELECT ".$keyList; - $sql .= ' FROM '.MAIN_DB_PREFIX.$InfoFieldList[0]; + $sql .= ' FROM '.$this->db->prefix().$InfoFieldList[0]; if (strpos($InfoFieldList[4], 'extra') !== false) { $sql .= ' as main'; } @@ -7575,7 +7619,7 @@ abstract class CommonObject } else { return true; } } elseif (in_array($type, array('double', 'real', 'price'))) { // is numeric - if (!$validate->isDuration($fieldValue)) { + if (!$validate->isNumeric($fieldValue)) { $this->setFieldError($fieldKey, $validate->error); return false; } else { return true; } @@ -7615,7 +7659,7 @@ abstract class CommonObject $selectkey = $InfoFieldList[2]; } - if (!isInDb($value_arr, $InfoFieldList[0], $selectkey)) { + if (!$validate->isInDb($value_arr, $InfoFieldList[0], $selectkey)) { $this->setFieldError($fieldKey, $validate->error); return false; } else { return true; } @@ -7766,7 +7810,8 @@ abstract class CommonObject } } - $out .= $extrafields->showSeparator($key, $this, ($colspan + 1), $display_type); + // if colspan=0 or 1, the second column is not extended, so the separator must be on 2 columns + $out .= $extrafields->showSeparator($key, $this, ($colspan ? $colspan + 1 : 2), $display_type); } else { $class = (!empty($extrafields->attributes[$this->table_element]['hidden'][$key]) ? 'hideobject ' : ''); $csstyle = ''; @@ -7865,6 +7910,7 @@ abstract class CommonObject $html_id = !empty($this->id) ? $this->element.'_extras_'.$key.'_'.$this->id : ''; if ($display_type == 'card') { + // a first td column was already output (and may be another on before if MAIN_VIEW_LINE_NUMBER set), so this td is the next one $out .= ''; } elseif ($display_type == 'line') { $out .= '
    '; @@ -7993,6 +8039,8 @@ abstract class CommonObject $element = $this->element; if ($element == 'facturerec') { $element = 'facture'; + } elseif ($element == 'invoice_supplier_rec') { + return $user->rights->fournisseur->facture; } return $user->rights->{$element}; @@ -8013,7 +8061,7 @@ abstract class CommonObject public static function commonReplaceThirdparty(DoliDB $db, $origin_id, $dest_id, array $tables, $ignoreerrors = 0) { foreach ($tables as $table) { - $sql = 'UPDATE '.MAIN_DB_PREFIX.$table.' SET fk_soc = '.((int) $dest_id).' WHERE fk_soc = '.((int) $origin_id); + $sql = 'UPDATE '.$db->prefix().$table.' SET fk_soc = '.((int) $dest_id).' WHERE fk_soc = '.((int) $origin_id); if (!$db->query($sql)) { if ($ignoreerrors) { @@ -8100,7 +8148,7 @@ abstract class CommonObject * @param string $sdir Directory to scan (full absolute path) * @param int $size 0=original size, 1='small' use thumbnail if possible * @param int $nbmax Nombre maximum de photos (0=pas de max) - * @param int $nbbyrow Number of image per line or -1 to use div. Used only if size=1. + * @param int $nbbyrow Number of image per line or -1 to use div separator or 0 to use no separator. Used only if size=1 or 'small'. * @param int $showfilename 1=Show filename * @param int $showaction 1=Show icon with action links (resize, delete) * @param int $maxHeight Max height of original image when size='small' (so we can use original even if small requested). If 0, always use 'small' thumb image. @@ -8219,26 +8267,28 @@ abstract class CommonObject $alt = ''; } + $addphotorefcss = 1; + if ($usesharelink) { if ($val['share']) { if (empty($maxHeight) || $photo_vignette && $imgarray['height'] > $maxHeight) { $return .= ''; - $return .= ''; + $return .= ''; } else { $return .= ''; - $return .= ''; + $return .= ''; } } else { $return .= ''; - $return .= ''; + $return .= ''; } } else { if (empty($maxHeight) || $photo_vignette && $imgarray['height'] > $maxHeight) { $return .= ''; - $return .= ''; + $return .= ''; } else { $return .= ''; - $return .= ''; + $return .= ''; } } @@ -8735,12 +8785,12 @@ abstract class CommonObject $this->db->begin(); if (!$error) { - $sql = "INSERT INTO ".MAIN_DB_PREFIX.$this->table_element; + $sql = "INSERT INTO ".$this->db->prefix().$this->table_element; $sql .= " (".implode(", ", $keys).')'; $sql .= " VALUES (".implode(", ", $values).")"; // $values can contains 'abc' or 123 $res = $this->db->query($sql); - if ($res === false) { + if (!$res) { $error++; if ($this->db->lasterrno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $this->errors[] = "ErrorRefAlreadyExists"; @@ -8751,13 +8801,13 @@ abstract class CommonObject } if (!$error) { - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.$this->table_element); + $this->id = $this->db->last_insert_id($this->db->prefix().$this->table_element); } // If we have a field ref with a default value of (PROV) if (!$error) { if (key_exists('ref', $this->fields) && $this->fields['ref']['notnull'] > 0 && key_exists('default', $this->fields['ref']) && $this->fields['ref']['default'] == '(PROV)') { - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element." SET ref = '(PROV".((int) $this->id).")' WHERE (ref = '(PROV)' OR ref = '') AND rowid = ".((int) $this->id); + $sql = "UPDATE ".$this->db->prefix().$this->table_element." SET ref = '(PROV".((int) $this->id).")' WHERE (ref = '(PROV)' OR ref = '') AND rowid = ".((int) $this->id); $resqlupdate = $this->db->query($sql); if ($resqlupdate === false) { @@ -8842,7 +8892,7 @@ abstract class CommonObject } $sql = "SELECT ".$fieldlist; - $sql .= " FROM ".MAIN_DB_PREFIX.$this->table_element.' as t'; + $sql .= " FROM ".$this->db->prefix().$this->table_element.' as t'; if (!empty($id)) { $sql .= ' WHERE t.rowid = '.((int) $id); @@ -8897,7 +8947,7 @@ abstract class CommonObject $objectline = new $objectlineclassname($this->db); $sql = "SELECT ".$objectline->getFieldList('l'); - $sql .= " FROM ".MAIN_DB_PREFIX.$objectline->table_element." as l"; + $sql .= " FROM ".$this->db->prefix().$objectline->table_element." as l"; $sql .= " WHERE l.fk_".$this->db->escape($this->element)." = ".((int) $this->id); if ($morewhere) { $sql .= $morewhere; @@ -8987,12 +9037,12 @@ abstract class CommonObject }*/ } - $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element.' SET '.implode(', ', $tmp).' WHERE rowid='.((int) $this->id); + $sql = 'UPDATE '.$this->db->prefix().$this->table_element.' SET '.implode(', ', $tmp).' WHERE rowid='.((int) $this->id); $this->db->begin(); if (!$error) { $res = $this->db->query($sql); - if ($res === false) { + if (!$res) { $error++; $this->errors[] = $this->db->lasterror(); } @@ -9044,7 +9094,7 @@ abstract class CommonObject if ($forcechilddeletion) { // Force also delete of childtables that should lock deletion in standard case when option force is off foreach ($this->childtables as $table) { - $sql = "DELETE FROM ".MAIN_DB_PREFIX.$table." WHERE ".$this->fk_element." = ".((int) $this->id); + $sql = "DELETE FROM ".$this->db->prefix().$table." WHERE ".$this->fk_element." = ".((int) $this->id); $resql = $this->db->query($sql); if (!$resql) { $this->error = $this->db->lasterror(); @@ -9098,7 +9148,7 @@ abstract class CommonObject } } else { // Delete record in child table - $sql = "DELETE FROM ".MAIN_DB_PREFIX.$table." WHERE ".$this->fk_element." = ".((int) $this->id); + $sql = "DELETE FROM ".$this->db->prefix().$table." WHERE ".$this->fk_element." = ".((int) $this->id); $resql = $this->db->query($sql); if (!$resql) { @@ -9138,7 +9188,7 @@ abstract class CommonObject } if (!$error) { - $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.' WHERE rowid='.((int) $this->id); + $sql = 'DELETE FROM '.$this->db->prefix().$this->table_element.' WHERE rowid='.((int) $this->id); $resql = $this->db->query($sql); if (!$resql) { @@ -9177,7 +9227,7 @@ abstract class CommonObject if (!empty($parentId) && !empty($parentField)) { $this->db->begin(); - $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX.$this->table_element; + $sql = "SELECT rowid FROM ".$this->db->prefix().$this->table_element; $sql .= " WHERE ".$parentField." = ".(int) $parentId; // Manage filters @@ -9262,7 +9312,7 @@ abstract class CommonObject $this->db->begin(); - $sql = "DELETE FROM ".MAIN_DB_PREFIX.$this->table_element_line; + $sql = "DELETE FROM ".$this->db->prefix().$this->table_element_line; $sql .= " WHERE rowid = ".((int) $idline); dol_syslog(get_class($this)."::deleteLineCommon", LOG_DEBUG); @@ -9316,7 +9366,7 @@ abstract class CommonObject $statusfield = 'fk_statut'; } - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element; + $sql = "UPDATE ".$this->db->prefix().$this->table_element; $sql .= " SET ".$statusfield." = ".((int) $status); $sql .= " WHERE rowid = ".((int) $this->id); @@ -9553,8 +9603,8 @@ abstract class CommonObject require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; $categorystatic = new Categorie($this->db); - $sql = "INSERT INTO ".MAIN_DB_PREFIX."categorie_".(empty($categorystatic->MAP_CAT_TABLE[$type]) ? $type : $categorystatic->MAP_CAT_TABLE[$type])." (fk_categorie, fk_product)"; - $sql .= " SELECT fk_categorie, $toId FROM ".MAIN_DB_PREFIX."categorie_".(empty($categorystatic->MAP_CAT_TABLE[$type]) ? $type : $categorystatic->MAP_CAT_TABLE[$type]); + $sql = "INSERT INTO ".$this->db->prefix()."categorie_".(empty($categorystatic->MAP_CAT_TABLE[$type]) ? $type : $categorystatic->MAP_CAT_TABLE[$type])." (fk_categorie, fk_product)"; + $sql .= " SELECT fk_categorie, $toId FROM ".$this->db->prefix()."categorie_".(empty($categorystatic->MAP_CAT_TABLE[$type]) ? $type : $categorystatic->MAP_CAT_TABLE[$type]); $sql .= " WHERE fk_product = ".((int) $fromId); if (!$this->db->query($sql)) { @@ -9602,8 +9652,8 @@ abstract class CommonObject } // Delete ecm_files extrafields - $sql = "DELETE FROM ".MAIN_DB_PREFIX."ecm_files_extrafields WHERE fk_object IN ("; - $sql .= " SELECT rowid FROM ".MAIN_DB_PREFIX."ecm_files WHERE filename LIKE '".$this->db->escape($this->ref)."%'"; + $sql = "DELETE FROM ".$this->db->prefix()."ecm_files_extrafields WHERE fk_object IN ("; + $sql .= " SELECT rowid FROM ".$this->db->prefix()."ecm_files WHERE filename LIKE '".$this->db->escape($this->ref)."%'"; $sql .= " AND filepath = '".$this->db->escape($element)."/".$this->db->escape($this->ref)."' AND entity = ".((int) $conf->entity); // No need of getEntity here $sql .= ")"; @@ -9614,7 +9664,7 @@ abstract class CommonObject } // Delete ecm_files - $sql = "DELETE FROM ".MAIN_DB_PREFIX."ecm_files"; + $sql = "DELETE FROM ".$this->db->prefix()."ecm_files"; $sql .= " WHERE filename LIKE '".$this->db->escape($this->ref)."%'"; $sql .= " AND filepath = '".$this->db->escape($element)."/".$this->db->escape($this->ref)."' AND entity = ".((int) $conf->entity); // No need of getEntity here @@ -9627,8 +9677,8 @@ abstract class CommonObject // Delete in database with mode 1 if ($mode == 1) { - $sql = 'DELETE FROM '.MAIN_DB_PREFIX."ecm_files_extrafields"; - $sql .= " WHERE fk_object IN (SELECT rowid FROM ".MAIN_DB_PREFIX."ecm_files WHERE src_object_type = '".$this->db->escape($this->table_element.(empty($this->module) ? "" : "@".$this->module))."' AND src_object_id = ".((int) $this->id).")"; + $sql = 'DELETE FROM '.$this->db->prefix()."ecm_files_extrafields"; + $sql .= " WHERE fk_object IN (SELECT rowid FROM ".$this->db->prefix()."ecm_files WHERE src_object_type = '".$this->db->escape($this->table_element.(empty($this->module) ? "" : "@".$this->module))."' AND src_object_id = ".((int) $this->id).")"; $resql = $this->db->query($sql); if (!$resql) { $this->error = $this->db->lasterror(); @@ -9636,7 +9686,7 @@ abstract class CommonObject return false; } - $sql = 'DELETE FROM '.MAIN_DB_PREFIX."ecm_files"; + $sql = 'DELETE FROM '.$this->db->prefix()."ecm_files"; $sql .= " WHERE src_object_type = '".$this->db->escape($this->table_element.(empty($this->module) ? "" : "@".$this->module))."' AND src_object_id = ".((int) $this->id); $resql = $this->db->query($sql); if (!$resql) { diff --git a/htdocs/core/class/commonobjectline.class.php b/htdocs/core/class/commonobjectline.class.php index d93d0b67ff9..487482a9b3c 100644 --- a/htdocs/core/class/commonobjectline.class.php +++ b/htdocs/core/class/commonobjectline.class.php @@ -93,7 +93,7 @@ abstract class CommonObjectLine extends CommonObject $label_type = 'code'; } - $sql = "SELECT ".$label_type.", code from ".MAIN_DB_PREFIX."c_units where rowid = ".((int) $this->fk_unit); + $sql = "SELECT ".$label_type.", code from ".$this->db->prefix()."c_units where rowid = ".((int) $this->fk_unit); $resql = $this->db->query($sql); if ($resql && $this->db->num_rows($resql) > 0) { diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 581de47178c..c7d01cab586 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -258,7 +258,7 @@ class Conf // Define all global constants into $this->global->key=value $sql = "SELECT ".$db->decrypt('name')." as name,"; $sql .= " ".$db->decrypt('value')." as value, entity"; - $sql .= " FROM ".MAIN_DB_PREFIX."const"; + $sql .= " FROM ".$db->prefix()."const"; $sql .= " WHERE entity IN (0,".$this->entity.")"; $sql .= " ORDER BY entity"; // This is to have entity 0 first, then entity 1 that overwrite. @@ -889,10 +889,6 @@ class Conf $this->global->MAIN_SIZE_SHORTLIST_LIMIT = 3; } - if (!isset($this->global->THEME_HIDE_BORDER_ON_INPUT)) { - $this->global->THEME_HIDE_BORDER_ON_INPUT = 0; - } - // Save inconsistent option if (empty($this->global->AGENDA_USE_EVENT_TYPE) && (!isset($this->global->AGENDA_DEFAULT_FILTER_TYPE) || $this->global->AGENDA_DEFAULT_FILTER_TYPE == 'AC_NON_AUTO')) { $this->global->AGENDA_DEFAULT_FILTER_TYPE = '0'; // 'AC_NON_AUTO' does not exists when AGENDA_DEFAULT_FILTER_TYPE is not on. diff --git a/htdocs/core/class/coreobject.class.php b/htdocs/core/class/coreobject.class.php index 33510186646..91b176f899d 100644 --- a/htdocs/core/class/coreobject.class.php +++ b/htdocs/core/class/coreobject.class.php @@ -183,7 +183,7 @@ class CoreObject extends CommonObject $this->{$className} = array(); - $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX.$childTable." WHERE ".$this->fk_element." = ".((int) $this->id); + $sql = "SELECT rowid FROM ".$this->db->prefix().$childTable." WHERE ".$this->fk_element." = ".((int) $this->id); $res = $this->db->query($sql); if ($res) { diff --git a/htdocs/core/class/cproductnature.class.php b/htdocs/core/class/cproductnature.class.php index 5b343b21dbc..d0c8a5d3933 100644 --- a/htdocs/core/class/cproductnature.class.php +++ b/htdocs/core/class/cproductnature.class.php @@ -102,7 +102,7 @@ class CProductNature // extends CommonObject global $conf, $langs; // Insert request - $sql = "INSERT INTO ".MAIN_DB_PREFIX.$this->table_element."("; + $sql = "INSERT INTO ".$this->db->prefix().$this->table_element."("; $sql .= "rowid,"; $sql .= "code,"; $sql .= "label,"; @@ -125,7 +125,7 @@ class CProductNature // extends CommonObject $this->db->rollback(); return -1; } else { - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.$this->table_element); + $this->id = $this->db->last_insert_id($this->db->prefix().$this->table_element); $this->db->commit(); return $this->id; } @@ -148,7 +148,7 @@ class CProductNature // extends CommonObject $sql .= " t.code,"; $sql .= " t.label,"; $sql .= " t.active"; - $sql .= " FROM ".MAIN_DB_PREFIX.$this->table_element." as t"; + $sql .= " FROM ".$this->db->prefix().$this->table_element." as t"; $sql_where = array(); if ($id) { $sql_where[] = " t.rowid = ".((int) $id); @@ -197,12 +197,12 @@ class CProductNature // extends CommonObject dol_syslog(__METHOD__, LOG_DEBUG); - $sql = 'SELECT'; + $sql = "SELECT"; $sql .= " t.rowid,"; $sql .= " t.code,"; $sql .= " t.label,"; $sql .= " t.active"; - $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t'; + $sql .= " FROM ".$this->db->prefix().$this->table_element." as t"; // Manage filter $sqlwhere = array(); if (count($filter) > 0) { @@ -267,7 +267,7 @@ class CProductNature // extends CommonObject global $conf, $langs; // Update request - $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element." SET"; + $sql = "UPDATE ".$this->db->prefix().$this->table_element." SET"; $sql .= " code=".(isset($this->code) ? ((int) $this->code) : "null").","; $sql .= " label=".(isset($this->label) ? "'".$this->db->escape(trim($this->label))."'" : "null").","; $sql .= " active=".(isset($this->active) ? ((int) $this->active) : "null"); @@ -302,7 +302,7 @@ class CProductNature // extends CommonObject global $conf, $langs; $error = 0; - $sql = "DELETE FROM ".MAIN_DB_PREFIX.$this->table_element; + $sql = "DELETE FROM ".$this->db->prefix().$this->table_element; $sql .= " WHERE rowid=".(int) $this->id; $this->db->begin(); diff --git a/htdocs/core/class/cstate.class.php b/htdocs/core/class/cstate.class.php index 2b9b1d6880e..36c3cb2c0fe 100644 --- a/htdocs/core/class/cstate.class.php +++ b/htdocs/core/class/cstate.class.php @@ -106,7 +106,7 @@ class Cstate // extends CommonObject // Put here code to add control on parameters values // Insert request - $sql = "INSERT INTO ".MAIN_DB_PREFIX."c_departements("; + $sql = "INSERT INTO ".$this->db->prefix()."c_departements("; $sql .= "rowid,"; $sql .= "code_departement,"; $sql .= "nom,"; @@ -128,7 +128,7 @@ class Cstate // extends CommonObject } if (!$error) { - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."c_departements"); + $this->id = $this->db->last_insert_id($this->db->prefix()."c_departements"); } // Commit or rollback @@ -161,7 +161,7 @@ class Cstate // extends CommonObject $sql .= " t.code_departement,"; $sql .= " t.nom,"; $sql .= " t.active"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_departements as t"; + $sql .= " FROM ".$this->db->prefix()."c_departements as t"; if ($id) { $sql .= " WHERE t.rowid = ".((int) $id); } elseif ($code) { @@ -219,7 +219,7 @@ class Cstate // extends CommonObject // Put here code to add control on parameters values // Update request - $sql = "UPDATE ".MAIN_DB_PREFIX."c_departements SET"; + $sql = "UPDATE ".$this->db->prefix()."c_departements SET"; $sql .= " code_departement=".(isset($this->code_departement) ? "'".$this->db->escape($this->code_departement)."'" : "null").","; $sql .= " nom=".(isset($this->nom) ? "'".$this->db->escape($this->nom)."'" : "null").","; $sql .= " active=".(isset($this->active) ? $this->active : "null").""; @@ -260,7 +260,7 @@ class Cstate // extends CommonObject global $conf, $langs; $error = 0; - $sql = "DELETE FROM ".MAIN_DB_PREFIX."c_departements"; + $sql = "DELETE FROM ".$this->db->prefix()."c_departements"; $sql .= " WHERE rowid=".((int) $this->id); $this->db->begin(); diff --git a/htdocs/core/class/ctypent.class.php b/htdocs/core/class/ctypent.class.php index c8421c54b1f..6de7de7d5cb 100644 --- a/htdocs/core/class/ctypent.class.php +++ b/htdocs/core/class/ctypent.class.php @@ -105,7 +105,7 @@ class Ctypent // extends CommonObject // Put here code to add control on parameters values // Insert request - $sql = "INSERT INTO ".MAIN_DB_PREFIX."c_typent("; + $sql = "INSERT INTO ".$this->db->prefix()."c_typent("; $sql .= "id,"; $sql .= "code,"; @@ -135,7 +135,7 @@ class Ctypent // extends CommonObject } if (!$error) { - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."c_typent"); + $this->id = $this->db->last_insert_id($this->db->prefix()."c_typent"); } // Commit or rollback @@ -170,7 +170,7 @@ class Ctypent // extends CommonObject $sql .= " t.fk_country as country_id,"; $sql .= " t.active,"; $sql .= " t.module"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_typent as t"; + $sql .= " FROM ".$this->db->prefix()."c_typent as t"; if ($id) { $sql .= " WHERE t.id = ".((int) $id); } elseif ($code) { @@ -232,7 +232,7 @@ class Ctypent // extends CommonObject // Put here code to add control on parameters values // Update request - $sql = "UPDATE ".MAIN_DB_PREFIX."c_typent SET"; + $sql = "UPDATE ".$this->db->prefix()."c_typent SET"; $sql .= " code=".(isset($this->code) ? "'".$this->db->escape($this->code)."'" : "null").","; $sql .= " libelle=".(isset($this->libelle) ? "'".$this->db->escape($this->libelle)."'" : "null").","; $sql .= " active=".(isset($this->active) ? $this->active : "null").","; @@ -275,7 +275,7 @@ class Ctypent // extends CommonObject global $conf, $langs; $error = 0; - $sql = "DELETE FROM ".MAIN_DB_PREFIX."c_typent"; + $sql = "DELETE FROM ".$this->db->prefix()."c_typent"; $sql .= " WHERE id=".$this->id; $this->db->begin(); diff --git a/htdocs/core/class/ctyperesource.class.php b/htdocs/core/class/ctyperesource.class.php index 891bf6bea10..32fe3164ad8 100644 --- a/htdocs/core/class/ctyperesource.class.php +++ b/htdocs/core/class/ctyperesource.class.php @@ -99,7 +99,7 @@ class Ctyperesource // Put here code to add control on parameters values // Insert request - $sql = 'INSERT INTO '.MAIN_DB_PREFIX.$this->table_element.'('; + $sql = 'INSERT INTO '.$this->db->prefix().$this->table_element.'('; $sql .= 'code,'; $sql .= 'label'; @@ -125,7 +125,7 @@ class Ctyperesource } if (!$error) { - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.$this->table_element); + $this->id = $this->db->last_insert_id($this->db->prefix().$this->table_element); // Uncomment this and change MYOBJECT to your own tag if you // want this action to call a trigger. @@ -163,12 +163,12 @@ class Ctyperesource { dol_syslog(__METHOD__, LOG_DEBUG); - $sql = 'SELECT'; - $sql .= ' t.rowid,'; + $sql = "SELECT"; + $sql .= " t.rowid,"; $sql .= " t.code,"; $sql .= " t.label,"; $sql .= " t.active"; - $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t'; + $sql .= " FROM ".$this->db->prefix().$this->table_element." as t"; if ($id) { $sql .= " WHERE t.id = ".((int) $id); } elseif ($code) { @@ -228,12 +228,12 @@ class Ctyperesource { dol_syslog(__METHOD__, LOG_DEBUG); - $sql = 'SELECT'; - $sql .= ' t.rowid,'; + $sql = "SELECT"; + $sql .= " t.rowid,"; $sql .= " t.code,"; $sql .= " t.label,"; $sql .= " t.active"; - $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t'; + $sql .= " FROM ".$this->db->prefix().$this->table_element." as t"; // Manage filter $sqlwhere = array(); @@ -307,7 +307,7 @@ class Ctyperesource // Put here code to add a control on parameters values // Update request - $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element.' SET'; + $sql = 'UPDATE '.$this->db->prefix().$this->table_element.' SET'; $sql .= ' code = '.(isset($this->code) ? "'".$this->db->escape($this->code)."'" : "null").','; $sql .= ' label = '.(isset($this->label) ? "'".$this->db->escape($this->label)."'" : "null").','; @@ -376,7 +376,7 @@ class Ctyperesource // If you need to delete child tables to, you can insert them here if (!$error) { - $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element; + $sql = 'DELETE FROM '.$this->db->prefix().$this->table_element; $sql .= ' WHERE rowid='.((int) $this->id); $resql = $this->db->query($sql); diff --git a/htdocs/core/class/cunits.class.php b/htdocs/core/class/cunits.class.php index 7219f901c9f..d7571b8ca90 100644 --- a/htdocs/core/class/cunits.class.php +++ b/htdocs/core/class/cunits.class.php @@ -112,7 +112,7 @@ class CUnits // extends CommonObject // Put here code to add control on parameters values // Insert request - $sql = "INSERT INTO ".MAIN_DB_PREFIX."c_units("; + $sql = "INSERT INTO ".$this->db->prefix()."c_units("; $sql .= "rowid,"; $sql .= "code,"; $sql .= "label,"; @@ -138,7 +138,7 @@ class CUnits // extends CommonObject } if (!$error) { - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."c_units"); + $this->id = $this->db->last_insert_id($this->db->prefix()."c_units"); } // Commit or rollback @@ -178,7 +178,7 @@ class CUnits // extends CommonObject $sql .= " t.unit_type,"; $sql .= " t.scale,"; $sql .= " t.active"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_units as t"; + $sql .= " FROM ".$this->db->prefix()."c_units as t"; $sql_where = array(); if ($id) { $sql_where[] = " t.rowid = ".((int) $id); @@ -237,7 +237,7 @@ class CUnits // extends CommonObject dol_syslog(__METHOD__, LOG_DEBUG); - $sql = 'SELECT'; + $sql = "SELECT"; $sql .= " t.rowid,"; $sql .= " t.code,"; $sql .= " t.sortorder,"; @@ -246,7 +246,7 @@ class CUnits // extends CommonObject $sql .= " t.unit_type,"; $sql .= " t.scale,"; $sql .= " t.active"; - $sql .= ' FROM '.MAIN_DB_PREFIX.'c_units as t'; + $sql .= " FROM ".$this->db->prefix()."c_units as t"; // Manage filter $sqlwhere = array(); if (count($filter) > 0) { @@ -343,7 +343,7 @@ class CUnits // extends CommonObject // Put here code to add control on parameters values // Update request - $sql = "UPDATE ".MAIN_DB_PREFIX."c_units SET"; + $sql = "UPDATE ".$this->db->prefix()."c_units SET"; $sql .= " code=".(isset($this->code) ? "'".$this->db->escape($this->code)."'" : "null").","; $sql .= " sortorder=".(isset($this->sortorder) ? "'".$this->db->escape($this->sortorder)."'" : "null").","; $sql .= " label=".(isset($this->label) ? "'".$this->db->escape($this->label)."'" : "null").","; @@ -389,7 +389,7 @@ class CUnits // extends CommonObject global $conf, $langs; $error = 0; - $sql = "DELETE FROM ".MAIN_DB_PREFIX."c_units"; + $sql = "DELETE FROM ".$this->db->prefix()."c_units"; $sql .= " WHERE rowid=".((int) $this->id); $this->db->begin(); @@ -471,7 +471,7 @@ class CUnits // extends CommonObject { $base = 10; // TODO : add base col into unit dictionary table - $unit = $this->db->getRow('SELECT scale, unit_type from '.MAIN_DB_PREFIX.'c_units WHERE rowid = '.intval($id)); + $unit = $this->db->getRow("SELECT scale, unit_type from ".$this->db->prefix()."c_units WHERE rowid = ".intval($id)); if ($unit) { // TODO : if base exist in unit dictionary table remove this convertion exception and update convertion infos in database exemple time hour currently scale 3600 will become scale 2 base 60 if ($unit->unit_type == 'time') { diff --git a/htdocs/core/class/defaultvalues.class.php b/htdocs/core/class/defaultvalues.class.php index f6edb58207c..278b5d5e0e6 100644 --- a/htdocs/core/class/defaultvalues.class.php +++ b/htdocs/core/class/defaultvalues.class.php @@ -259,10 +259,10 @@ class DefaultValues extends CommonObject $records = array(); - $sql = 'SELECT '; + $sql = "SELECT "; $sql .= $this->getFieldList(); - $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t'; - $sql .= ' WHERE 1 = 1'; + $sql .= " FROM ".$this->db->prefix().$this->table_element." as t"; + $sql .= " WHERE 1 = 1"; // Manage filter $sqlwhere = array(); if (count($filter) > 0) { diff --git a/htdocs/core/class/discount.class.php b/htdocs/core/class/discount.class.php index 46789352bd7..7939965828a 100644 --- a/htdocs/core/class/discount.class.php +++ b/htdocs/core/class/discount.class.php @@ -139,9 +139,9 @@ class DiscountAbsolute $sql .= " sr.datec,"; $sql .= " f.ref as ref_facture_source, f.type as type_facture_source,"; $sql .= " fsup.ref as ref_invoice_supplier_source, fsup.type as type_invoice_supplier_source"; - $sql .= " FROM ".MAIN_DB_PREFIX."societe_remise_except as sr"; - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."facture as f ON sr.fk_facture_source = f.rowid"; - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."facture_fourn as fsup ON sr.fk_invoice_supplier_source = fsup.rowid"; + $sql .= " FROM ".$this->db->prefix()."societe_remise_except as sr"; + $sql .= " LEFT JOIN ".$this->db->prefix()."facture as f ON sr.fk_facture_source = f.rowid"; + $sql .= " LEFT JOIN ".$this->db->prefix()."facture_fourn as fsup ON sr.fk_invoice_supplier_source = fsup.rowid"; $sql .= " WHERE sr.entity IN (".getEntity('invoice').")"; if ($rowid) { $sql .= " AND sr.rowid = ".((int) $rowid); @@ -251,7 +251,7 @@ class DiscountAbsolute } // Insert request - $sql = "INSERT INTO ".MAIN_DB_PREFIX."societe_remise_except"; + $sql = "INSERT INTO ".$this->db->prefix()."societe_remise_except"; $sql .= " (entity, datec, fk_soc, discount_type, fk_user, description,"; $sql .= " amount_ht, amount_tva, amount_ttc, tva_tx, vat_src_code,"; $sql .= " multicurrency_amount_ht, multicurrency_amount_tva, multicurrency_amount_ttc,"; @@ -267,7 +267,7 @@ class DiscountAbsolute dol_syslog(get_class($this)."::create", LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."societe_remise_except"); + $this->id = $this->db->last_insert_id($this->db->prefix()."societe_remise_except"); return $this->id; } else { $this->error = $this->db->lasterror().' - sql='.$sql; @@ -289,7 +289,7 @@ class DiscountAbsolute // Check if we can remove the discount if ($this->fk_facture_source) { $sql = "SELECT COUNT(rowid) as nb"; - $sql .= " FROM ".MAIN_DB_PREFIX."societe_remise_except"; + $sql .= " FROM ".$this->db->prefix()."societe_remise_except"; $sql .= " WHERE (fk_facture_line IS NOT NULL"; // Not used as absolute simple discount $sql .= " OR fk_facture IS NOT NULL)"; // Not used as credit note and not used as deposit $sql .= " AND fk_facture_source = ".((int) $this->fk_facture_source); @@ -312,7 +312,7 @@ class DiscountAbsolute // Check if we can remove the discount if ($this->fk_invoice_supplier_source) { $sql = "SELECT COUNT(rowid) as nb"; - $sql .= " FROM ".MAIN_DB_PREFIX."societe_remise_except"; + $sql .= " FROM ".$this->db->prefix()."societe_remise_except"; $sql .= " WHERE (fk_invoice_supplier_line IS NOT NULL"; // Not used as absolute simple discount $sql .= " OR fk_invoice_supplier IS NOT NULL)"; // Not used as credit note and not used as deposit $sql .= " AND fk_invoice_supplier_source = ".((int) $this->fk_invoice_supplier_source); @@ -335,7 +335,7 @@ class DiscountAbsolute $this->db->begin(); // Delete but only if not used - $sql = "DELETE FROM ".MAIN_DB_PREFIX."societe_remise_except "; + $sql = "DELETE FROM ".$this->db->prefix()."societe_remise_except "; if ($this->fk_facture_source) { $sql .= " WHERE fk_facture_source = ".((int) $this->fk_facture_source); // Delete all lines of same serie } elseif ($this->fk_invoice_supplier_source) { @@ -353,7 +353,7 @@ class DiscountAbsolute if ($result) { // If source of discount was a credit note or deposit, we change source statut. if ($this->fk_facture_source) { - $sql = "UPDATE ".MAIN_DB_PREFIX."facture"; + $sql = "UPDATE ".$this->db->prefix()."facture"; $sql .= " set paye=0, fk_statut=1"; $sql .= " WHERE (type = 2 or type = 3) AND rowid = ".((int) $this->fk_facture_source); @@ -368,7 +368,7 @@ class DiscountAbsolute return -1; } } elseif ($this->fk_invoice_supplier_source) { - $sql = "UPDATE ".MAIN_DB_PREFIX."facture_fourn"; + $sql = "UPDATE ".$this->db->prefix()."facture_fourn"; $sql .= " set paye=0, fk_statut=1"; $sql .= " WHERE (type = 2 or type = 3) AND rowid = ".((int) $this->fk_invoice_supplier_source); @@ -418,7 +418,7 @@ class DiscountAbsolute return -2; } - $sql = "UPDATE ".MAIN_DB_PREFIX."societe_remise_except"; + $sql = "UPDATE ".$this->db->prefix()."societe_remise_except"; if (!empty($this->discount_type)) { if ($rowidline) { $sql .= " SET fk_invoice_supplier_line = ".((int) $rowidline); @@ -464,7 +464,7 @@ class DiscountAbsolute public function unlink_invoice() { // phpcs:enable - $sql = "UPDATE ".MAIN_DB_PREFIX."societe_remise_except"; + $sql = "UPDATE ".$this->db->prefix()."societe_remise_except"; if (!empty($this->discount_type)) { $sql .= " SET fk_invoice_supplier_line = NULL, fk_invoice_supplier = NULL"; } else { @@ -501,7 +501,7 @@ class DiscountAbsolute dol_syslog(get_class($this)."::getAvailableDiscounts discount_type=".$discount_type, LOG_DEBUG); $sql = "SELECT SUM(rc.amount_ttc) as amount, SUM(rc.multicurrency_amount_ttc) as multicurrency_amount"; - $sql .= " FROM ".MAIN_DB_PREFIX."societe_remise_except as rc"; + $sql .= " FROM ".$this->db->prefix()."societe_remise_except as rc"; $sql .= " WHERE rc.entity = ".$conf->entity; $sql .= " AND rc.discount_type=".((int) $discount_type); if (!empty($discount_type)) { @@ -553,15 +553,15 @@ class DiscountAbsolute dol_syslog(get_class($this)."::getSumDepositsUsed", LOG_DEBUG); if ($invoice->element == 'facture' || $invoice->element == 'invoice') { - $sql = 'SELECT sum(rc.amount_ttc) as amount, sum(rc.multicurrency_amount_ttc) as multicurrency_amount'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'societe_remise_except as rc, '.MAIN_DB_PREFIX.'facture as f'; - $sql .= ' WHERE rc.fk_facture_source=f.rowid AND rc.fk_facture = '.((int) $invoice->id); - $sql .= ' AND f.type = 3'; + $sql = "SELECT sum(rc.amount_ttc) as amount, sum(rc.multicurrency_amount_ttc) as multicurrency_amount"; + $sql .= " FROM ".$this->db->prefix()."societe_remise_except as rc, ".$this->db->prefix()."facture as f"; + $sql .= " WHERE rc.fk_facture_source=f.rowid AND rc.fk_facture = ".((int) $invoice->id); + $sql .= " AND f.type = 3"; } elseif ($invoice->element == 'invoice_supplier') { - $sql = 'SELECT sum(rc.amount_ttc) as amount, sum(rc.multicurrency_amount_ttc) as multicurrency_amount'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'societe_remise_except as rc, '.MAIN_DB_PREFIX.'facture_fourn as f'; - $sql .= ' WHERE rc.fk_invoice_supplier_source=f.rowid AND rc.fk_invoice_supplier = '.((int) $invoice->id); - $sql .= ' AND f.type = 3'; + $sql = "SELECT sum(rc.amount_ttc) as amount, sum(rc.multicurrency_amount_ttc) as multicurrency_amount"; + $sql .= " FROM ".$this->db->prefix()."societe_remise_except as rc, ".$this->db->prefix()."facture_fourn as f"; + $sql .= " WHERE rc.fk_invoice_supplier_source=f.rowid AND rc.fk_invoice_supplier = ".((int) $invoice->id); + $sql .= " AND f.type = 3"; } else { $this->error = get_class($this)."::getSumDepositsUsed was called with a bad object as a first parameter"; dol_print_error($this->error); @@ -594,15 +594,15 @@ class DiscountAbsolute dol_syslog(get_class($this)."::getSumCreditNotesUsed", LOG_DEBUG); if ($invoice->element == 'facture' || $invoice->element == 'invoice') { - $sql = 'SELECT sum(rc.amount_ttc) as amount, sum(rc.multicurrency_amount_ttc) as multicurrency_amount'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'societe_remise_except as rc, '.MAIN_DB_PREFIX.'facture as f'; - $sql .= ' WHERE rc.fk_facture_source=f.rowid AND rc.fk_facture = '.((int) $invoice->id); - $sql .= " AND f.type IN (".$this->db->sanitize($invoice::TYPE_STANDARD.", ".$invoice::TYPE_CREDIT_NOTE.", ".$invoice::TYPE_SITUATION).')'; // Find discount coming from credit note or excess received + $sql = "SELECT sum(rc.amount_ttc) as amount, sum(rc.multicurrency_amount_ttc) as multicurrency_amount"; + $sql .= " FROM ".$this->db->prefix()."societe_remise_except as rc, ".$this->db->prefix()."facture as f"; + $sql .= " WHERE rc.fk_facture_source=f.rowid AND rc.fk_facture = ".((int) $invoice->id); + $sql .= " AND f.type IN (".$this->db->sanitize($invoice::TYPE_STANDARD.", ".$invoice::TYPE_CREDIT_NOTE.", ".$invoice::TYPE_SITUATION).")"; // Find discount coming from credit note or excess received } elseif ($invoice->element == 'invoice_supplier') { - $sql = 'SELECT sum(rc.amount_ttc) as amount, sum(rc.multicurrency_amount_ttc) as multicurrency_amount'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'societe_remise_except as rc, '.MAIN_DB_PREFIX.'facture_fourn as f'; - $sql .= ' WHERE rc.fk_invoice_supplier_source=f.rowid AND rc.fk_invoice_supplier = '.((int) $invoice->id); - $sql .= " AND f.type IN (".$this->db->sanitize($invoice::TYPE_STANDARD.", ".$invoice::TYPE_CREDIT_NOTE).')'; // Find discount coming from credit note or excess paid + $sql = "SELECT sum(rc.amount_ttc) as amount, sum(rc.multicurrency_amount_ttc) as multicurrency_amount"; + $sql .= " FROM ".$this->db->prefix()."societe_remise_except as rc, ".$this->db->prefix()."facture_fourn as f"; + $sql .= " WHERE rc.fk_invoice_supplier_source=f.rowid AND rc.fk_invoice_supplier = ".((int) $invoice->id); + $sql .= " AND f.type IN (".$this->db->sanitize($invoice::TYPE_STANDARD.", ".$invoice::TYPE_CREDIT_NOTE).")"; // Find discount coming from credit note or excess paid } else { $this->error = get_class($this)."::getSumCreditNotesUsed was called with a bad object as a first parameter"; dol_print_error($this->error); @@ -634,13 +634,13 @@ class DiscountAbsolute dol_syslog(get_class($this)."::getSumCreditNotesUsed", LOG_DEBUG); if ($invoice->element == 'facture' || $invoice->element == 'invoice') { - $sql = 'SELECT sum(rc.amount_ttc) as amount, sum(rc.multicurrency_amount_ttc) as multicurrency_amount'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'societe_remise_except as rc'; - $sql .= ' WHERE rc.fk_facture IS NULL AND rc.fk_facture_source = '.((int) $invoice->id); + $sql = "SELECT sum(rc.amount_ttc) as amount, sum(rc.multicurrency_amount_ttc) as multicurrency_amount"; + $sql .= " FROM ".$this->db->prefix()."societe_remise_except as rc"; + $sql .= " WHERE rc.fk_facture IS NULL AND rc.fk_facture_source = ".((int) $invoice->id); } elseif ($invoice->element == 'invoice_supplier') { - $sql = 'SELECT sum(rc.amount_ttc) as amount, sum(rc.multicurrency_amount_ttc) as multicurrency_amount'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'societe_remise_except as rc'; - $sql .= ' WHERE rc.fk_invoice_supplier IS NULL AND rc.fk_invoice_supplier_source = '.((int) $invoice->id); + $sql = "SELECT sum(rc.amount_ttc) as amount, sum(rc.multicurrency_amount_ttc) as multicurrency_amount"; + $sql .= " FROM ".$this->db->prefix()."societe_remise_except as rc"; + $sql .= " WHERE rc.fk_invoice_supplier IS NULL AND rc.fk_invoice_supplier_source = ".((int) $invoice->id); } else { $this->error = get_class($this)."::getSumCreditNotesUsed was called with a bad object as a first parameter"; dol_print_error($this->error); diff --git a/htdocs/core/class/doleditor.class.php b/htdocs/core/class/doleditor.class.php index 92761109afa..927674942e7 100644 --- a/htdocs/core/class/doleditor.class.php +++ b/htdocs/core/class/doleditor.class.php @@ -156,7 +156,7 @@ class DolEditor $skin = 'moono-lisa'; // default with ckeditor 4.6 : moono-lisa } - $pluginstodisable = 'flash'; + $pluginstodisable = 'elementspath,save,flash'; if (!empty($conf->dol_optimize_smallscreen)) { $pluginstodisable .= ',scayt,wsc,find,undo'; } diff --git a/htdocs/core/class/dolreceiptprinter.class.php b/htdocs/core/class/dolreceiptprinter.class.php index 2062f1b351c..7653fd24437 100644 --- a/htdocs/core/class/dolreceiptprinter.class.php +++ b/htdocs/core/class/dolreceiptprinter.class.php @@ -61,6 +61,7 @@ * Replaced by month number * Replaced by day number * Replaced by day number + * Replaced by current date * Replaced by object id * Replaced by object ref * Replaced by customer firstname @@ -186,6 +187,7 @@ class dolReceiptPrinter extends Printer 'dol_value_month' => 'DOL_VALUE_MONTH', 'dol_value_day' => 'DOL_VALUE_DAY', 'dol_value_day_letters' => 'DOL_VALUE_DAY', + 'dol_value_currentdate' => 'DOL_VALUE_CURRENTDATE', 'dol_print_payment' => 'DOL_PRINT_PAYMENT', 'dol_print_logo' => 'DOL_PRINT_LOGO', 'dol_print_logo_old' => 'DOL_PRINT_LOGO_OLD', @@ -221,6 +223,7 @@ class dolReceiptPrinter extends Printer 'dol_value_mysoc_idprof6' => 'ProfId6', 'dol_value_mysoc_tva_intra' => 'VATIntra', 'dol_value_mysoc_capital' => 'Capital', + 'dol_value_mysoc_url' => 'Web', 'dol_value_vendor_lastname' => 'VendorLastname', 'dol_value_vendor_firstname' => 'VendorFirstname', 'dol_value_vendor_mail' => 'VendorEmail', @@ -239,9 +242,9 @@ class dolReceiptPrinter extends Printer $error = 0; $line = 0; $obj = array(); - $sql = 'SELECT rowid, name, fk_type, fk_profile, parameter'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'printer_receipt'; - $sql .= ' WHERE entity = '.$conf->entity; + $sql = "SELECT rowid, name, fk_type, fk_profile, parameter"; + $sql .= " FROM ".$this->db->prefix()."printer_receipt"; + $sql .= " WHERE entity = ".$conf->entity; $resql = $this->db->query($sql); if ($resql) { $num = $this->db->num_rows($resql); @@ -307,9 +310,9 @@ class dolReceiptPrinter extends Printer $error = 0; $line = 0; $obj = array(); - $sql = 'SELECT rowid, name, template'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'printer_receipt_template'; - $sql .= ' WHERE entity = '.$conf->entity; + $sql = "SELECT rowid, name, template"; + $sql .= " FROM ".$this->db->prefix()."printer_receipt_template"; + $sql .= " WHERE entity = ".$conf->entity; $resql = $this->db->query($sql); if ($resql) { $num = $this->db->num_rows($resql); @@ -388,7 +391,7 @@ class dolReceiptPrinter extends Printer { global $conf; $error = 0; - $sql = "INSERT INTO ".MAIN_DB_PREFIX."printer_receipt"; + $sql = "INSERT INTO ".$this->db->prefix()."printer_receipt"; $sql .= " (name, fk_type, fk_profile, parameter, entity)"; $sql .= " VALUES ('".$this->db->escape($name)."', ".((int) $type).", ".((int) $profile).", '".$this->db->escape($parameter)."', ".((int) $conf->entity).")"; $resql = $this->db->query($sql); @@ -414,7 +417,7 @@ class dolReceiptPrinter extends Printer global $conf; $error = 0; - $sql = "UPDATE ".MAIN_DB_PREFIX."printer_receipt"; + $sql = "UPDATE ".$this->db->prefix()."printer_receipt"; $sql .= " SET name='".$this->db->escape($name)."'"; $sql .= ", fk_type=".((int) $type); $sql .= ", fk_profile=".((int) $profile); @@ -439,7 +442,7 @@ class dolReceiptPrinter extends Printer { global $conf; $error = 0; - $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'printer_receipt'; + $sql = 'DELETE FROM '.$this->db->prefix().'printer_receipt'; $sql .= ' WHERE rowid='.((int) $printerid); $resql = $this->db->query($sql); if (!$resql) { @@ -460,7 +463,7 @@ class dolReceiptPrinter extends Printer { global $conf; $error = 0; - $sql = "INSERT INTO ".MAIN_DB_PREFIX."printer_receipt_template"; + $sql = "INSERT INTO ".$this->db->prefix()."printer_receipt_template"; $sql .= " (name, template, entity) VALUES ('".$this->db->escape($name)."'"; $sql .= ", '".$this->db->escape($template)."', ".$conf->entity.")"; $resql = $this->db->query($sql); @@ -481,7 +484,7 @@ class dolReceiptPrinter extends Printer { global $conf; $error = 0; - $sql = 'DELETE FROM '.MAIN_DB_PREFIX.'printer_receipt_template'; + $sql = 'DELETE FROM '.$this->db->prefix().'printer_receipt_template'; $sql .= " WHERE rowid = ".((int) $templateid); $sql .= " AND entity = ".$conf->entity; $resql = $this->db->query($sql); @@ -505,7 +508,7 @@ class dolReceiptPrinter extends Printer global $conf; $error = 0; - $sql = "UPDATE ".MAIN_DB_PREFIX."printer_receipt_template"; + $sql = "UPDATE ".$this->db->prefix()."printer_receipt_template"; $sql .= " SET name='".$this->db->escape($name)."'"; $sql .= ", template='".$this->db->escape($template)."'"; $sql .= " WHERE rowid=".((int) $templateid); @@ -584,6 +587,7 @@ class dolReceiptPrinter extends Printer $this->template = str_replace('{dol_value_month}', dol_print_date($object->date, '%m'), $this->template); $this->template = str_replace('{dol_value_day}', dol_print_date($object->date, '%d'), $this->template); $this->template = str_replace('{dol_value_day_letters}', $langs->trans("Day".dol_print_date($object->date, '%m')[1]), $this->template); + $this->template = str_replace('{dol_value_currentdate}', dol_print_date(dol_now(), 'dayhour'), $this->template); $this->template = str_replace('{dol_value_customer_firstname}', $object->thirdparty->firstname, $this->template); $this->template = str_replace('{dol_value_customer_lastname}', $object->thirdparty->lastname, $this->template); @@ -607,6 +611,7 @@ class dolReceiptPrinter extends Printer $this->template = str_replace('{dol_value_mysoc_idprof6}', $mysoc->idprof6, $this->template); $this->template = str_replace('{dol_value_mysoc_tva_intra}', $mysoc->tva_intra, $this->template); $this->template = str_replace('{dol_value_mysoc_capital}', $mysoc->capital, $this->template); + $this->template = str_replace('{dol_value_mysoc_url}', $mysoc->url, $this->template); $this->template = str_replace('{dol_value_vendor_firstname}', $user->firstname, $this->template); $this->template = str_replace('{dol_value_vendor_lastname}', $user->lastname, $this->template); @@ -672,9 +677,9 @@ class dolReceiptPrinter extends Printer $vatarray[$line->tva_tx] += $line->total_tva; } foreach ($vatarray as $vatkey => $vatvalue) { - $spacestoadd = $nbcharactbyline - strlen($vatkey) - 12; - $spaces = str_repeat(' ', $spacestoadd > 0 ? $spacestoadd : 0); - $this->printer->text($spaces.$vatkey.'% '.str_pad(price($vatvalue), 10, ' ', STR_PAD_LEFT)."\n"); + $spacestoadd = $nbcharactbyline - strlen($vatkey) - 12; + $spaces = str_repeat(' ', $spacestoadd > 0 ? $spacestoadd : 0); + $this->printer->text($spaces.$vatkey.'% '.str_pad(price($vatvalue), 10, ' ', STR_PAD_LEFT)."\n"); } break; case 'DOL_PRINT_OBJECT_TAX1': @@ -802,8 +807,8 @@ class dolReceiptPrinter extends Printer case 'DOL_PRINT_PAYMENT': $sql = "SELECT p.pos_change as pos_change, p.datep as date, p.fk_paiement, p.num_paiement as num, pf.amount as amount, pf.multicurrency_amount,"; $sql .= " cp.code"; - $sql .= " FROM ".MAIN_DB_PREFIX."paiement_facture as pf, ".MAIN_DB_PREFIX."paiement as p"; - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as cp ON p.fk_paiement = cp.id"; + $sql .= " FROM ".$this->db->prefix()."paiement_facture as pf, ".$this->db->prefix()."paiement as p"; + $sql .= " LEFT JOIN ".$this->db->prefix()."c_paiement as cp ON p.fk_paiement = cp.id"; $sql .= " WHERE pf.fk_paiement = p.rowid AND pf.fk_facture = ".((int) $object->id); $sql .= " ORDER BY p.datep"; $resql = $this->db->query($sql); @@ -829,7 +834,7 @@ class dolReceiptPrinter extends Printer } break; case 'DOL_VALUE_PLACE': - $sql = "SELECT floor, label FROM ".MAIN_DB_PREFIX."takepos_floor_tables where rowid=".((int) str_replace(")", "", str_replace("(PROV-POS".$_SESSION["takeposterminal"]."-", "", $object->ref))); + $sql = "SELECT floor, label FROM ".$this->db->prefix()."takepos_floor_tables where rowid=".((int) str_replace(")", "", str_replace("(PROV-POS".$_SESSION["takeposterminal"]."-", "", $object->ref))); $resql = $this->db->query($sql); $obj = $this->db->fetch_object($resql); if ($obj) { @@ -868,10 +873,10 @@ class dolReceiptPrinter extends Printer { global $conf; $error = 0; - $sql = 'SELECT template'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'printer_receipt_template'; - $sql .= ' WHERE rowid = '.((int) $templateid); - $sql .= ' AND entity = '.$conf->entity; + $sql = "SELECT template"; + $sql .= " FROM ".$this->db->prefix()."printer_receipt_template"; + $sql .= " WHERE rowid = ".((int) $templateid); + $sql .= " AND entity = ".$conf->entity; $resql = $this->db->query($sql); if ($resql) { $obj = $this->db->fetch_array($resql); @@ -905,10 +910,10 @@ class dolReceiptPrinter extends Printer return; } $error = 0; - $sql = 'SELECT rowid, name, fk_type, fk_profile, parameter'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'printer_receipt'; - $sql .= ' WHERE rowid = '.((int) $printerid); - $sql .= ' AND entity = '.((int) $conf->entity); + $sql = "SELECT rowid, name, fk_type, fk_profile, parameter"; + $sql .= " FROM ".$this->db->prefix()."printer_receipt"; + $sql .= " WHERE rowid = ".((int) $printerid); + $sql .= " AND entity = ".((int) $conf->entity); $resql = $this->db->query($sql); if ($resql) { $obj = $this->db->fetch_array($resql); diff --git a/htdocs/core/class/emailsenderprofile.class.php b/htdocs/core/class/emailsenderprofile.class.php index bb47e71aea8..517fc953830 100644 --- a/htdocs/core/class/emailsenderprofile.class.php +++ b/htdocs/core/class/emailsenderprofile.class.php @@ -347,36 +347,17 @@ class EmailSenderProfile extends CommonObject */ public function info($id) { - $sql = 'SELECT rowid, date_creation as datec, tms as datem,'; - $sql .= ' fk_user_creat, fk_user_modif'; - $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t'; - $sql .= ' WHERE t.rowid = '.((int) $id); + $sql = "SELECT rowid, date_creation as datec, tms as datem"; + $sql .= " FROM ".$this->db->prefix().$this->table_element." as t"; + $sql .= " WHERE t.rowid = ".((int) $id); $result = $this->db->query($sql); if ($result) { if ($this->db->num_rows($result)) { $obj = $this->db->fetch_object($result); $this->id = $obj->rowid; - if ($obj->fk_user_author) { - $cuser = new User($this->db); - $cuser->fetch($obj->fk_user_author); - $this->user_creation = $cuser; - } - - if ($obj->fk_user_valid) { - $vuser = new User($this->db); - $vuser->fetch($obj->fk_user_valid); - $this->user_validation = $vuser; - } - - if ($obj->fk_user_cloture) { - $cluser = new User($this->db); - $cluser->fetch($obj->fk_user_cloture); - $this->user_cloture = $cluser; - } $this->date_creation = $this->db->jdate($obj->datec); $this->date_modification = $this->db->jdate($obj->datem); - $this->date_validation = $this->db->jdate($obj->datev); } $this->db->free($result); diff --git a/htdocs/core/class/events.class.php b/htdocs/core/class/events.class.php index c8799ebbd5e..104f1567d44 100644 --- a/htdocs/core/class/events.class.php +++ b/htdocs/core/class/events.class.php @@ -152,7 +152,7 @@ class Events // extends CommonObject } // Insert request - $sql = "INSERT INTO ".MAIN_DB_PREFIX."events("; + $sql = "INSERT INTO ".$this->db->prefix()."events("; $sql .= "type,"; $sql .= "entity,"; $sql .= "ip,"; @@ -175,7 +175,7 @@ class Events // extends CommonObject dol_syslog(get_class($this)."::create", LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."events"); + $this->id = $this->db->last_insert_id($this->db->prefix()."events"); return $this->id; } else { $this->error = "Error ".$this->db->lasterror(); @@ -202,7 +202,7 @@ class Events // extends CommonObject // Put here code to add control on parameters values // Update request - $sql = "UPDATE ".MAIN_DB_PREFIX."events SET"; + $sql = "UPDATE ".$this->db->prefix()."events SET"; $sql .= " type='".$this->db->escape($this->type)."',"; $sql .= " dateevent='".$this->db->idate($this->dateevent)."',"; $sql .= " description='".$this->db->escape($this->description)."'"; @@ -237,7 +237,7 @@ class Events // extends CommonObject $sql .= " t.ip,"; $sql .= " t.user_agent,"; $sql .= " t.prefix_session"; - $sql .= " FROM ".MAIN_DB_PREFIX."events as t"; + $sql .= " FROM ".$this->db->prefix()."events as t"; $sql .= " WHERE t.rowid = ".((int) $id); dol_syslog(get_class($this)."::fetch", LOG_DEBUG); @@ -274,7 +274,7 @@ class Events // extends CommonObject */ public function delete($user) { - $sql = "DELETE FROM ".MAIN_DB_PREFIX."events"; + $sql = "DELETE FROM ".$this->db->prefix()."events"; $sql .= " WHERE rowid=".((int) $this->id); dol_syslog(get_class($this)."::delete", LOG_DEBUG); diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 56b81dd5114..abd2c7dd502 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -265,10 +265,10 @@ class ExtraFields 'default' => $default_value ); - $result = $this->db->DDLAddField(MAIN_DB_PREFIX.$table, $attrname, $field_desc); + $result = $this->db->DDLAddField($this->db->prefix().$table, $attrname, $field_desc); if ($result > 0) { if ($unique) { - $sql = "ALTER TABLE ".MAIN_DB_PREFIX.$table." ADD UNIQUE INDEX uk_".$table."_".$attrname." (".$attrname.")"; + $sql = "ALTER TABLE ".$this->db->prefix().$table." ADD UNIQUE INDEX uk_".$table."_".$attrname." (".$attrname.")"; $resql = $this->db->query($sql, 1, 'dml'); } return 1; @@ -353,7 +353,7 @@ class ExtraFields $params = ''; } - $sql = "INSERT INTO ".MAIN_DB_PREFIX."extrafields("; + $sql = "INSERT INTO ".$this->db->prefix()."extrafields("; $sql .= " name,"; $sql .= " label,"; $sql .= " type,"; @@ -447,7 +447,7 @@ class ExtraFields if (!$error) { $sql = "SELECT COUNT(rowid) as nb"; - $sql .= " FROM ".MAIN_DB_PREFIX."extrafields"; + $sql .= " FROM ".$this->db->prefix()."extrafields"; $sql .= " WHERE elementtype = '".$this->db->escape($elementtype)."'"; $sql .= " AND name = '".$this->db->escape($attrname)."'"; //$sql.= " AND entity IN (0,".$conf->entity.")"; Do not test on entity here. We want to see if there is still on field remaning in other entities before deleting field in table @@ -455,7 +455,7 @@ class ExtraFields if ($resql) { $obj = $this->db->fetch_object($resql); if ($obj->nb <= 0) { - $result = $this->db->DDLDropField(MAIN_DB_PREFIX.$table, $attrname); // This also drop the unique key + $result = $this->db->DDLDropField($this->db->prefix().$table, $attrname); // This also drop the unique key if ($result < 0) { $this->error = $this->db->lasterror(); $this->errors[] = $this->db->lasterror(); @@ -492,7 +492,7 @@ class ExtraFields } if (isset($attrname) && $attrname != '' && preg_match("/^\w[a-zA-Z0-9-_]*$/", $attrname)) { - $sql = "DELETE FROM ".MAIN_DB_PREFIX."extrafields"; + $sql = "DELETE FROM ".$this->db->prefix()."extrafields"; $sql .= " WHERE name = '".$this->db->escape($attrname)."'"; $sql .= " AND entity IN (0,".$conf->entity.')'; $sql .= " AND elementtype = '".$this->db->escape($elementtype)."'"; @@ -597,7 +597,7 @@ class ExtraFields } if ($type != 'separate') { // No table update when separate type - $result = $this->db->DDLUpdateField(MAIN_DB_PREFIX.$table, $attrname, $field_desc); + $result = $this->db->DDLUpdateField($this->db->prefix().$table, $attrname, $field_desc); } if ($result > 0 || $type == 'separate') { if ($label) { @@ -606,9 +606,9 @@ class ExtraFields if ($result > 0) { $sql = ''; if ($unique) { - $sql = "ALTER TABLE ".MAIN_DB_PREFIX.$table." ADD UNIQUE INDEX uk_".$table."_".$attrname." (".$attrname.")"; + $sql = "ALTER TABLE ".$this->db->prefix().$table." ADD UNIQUE INDEX uk_".$table."_".$attrname." (".$attrname.")"; } else { - $sql = "ALTER TABLE ".MAIN_DB_PREFIX.$table." DROP INDEX uk_".$table."_".$attrname; + $sql = "ALTER TABLE ".$this->db->prefix().$table." DROP INDEX uk_".$table."_".$attrname; } dol_syslog(get_class($this).'::update', LOG_DEBUG); $resql = $this->db->query($sql, 1, 'dml'); @@ -699,20 +699,20 @@ class ExtraFields if ($entity === '' || $entity != '0') { // We dont want on all entities, we delete all and current - $sql_del = "DELETE FROM ".MAIN_DB_PREFIX."extrafields"; + $sql_del = "DELETE FROM ".$this->db->prefix()."extrafields"; $sql_del .= " WHERE name = '".$this->db->escape($attrname)."'"; $sql_del .= " AND entity IN (0, ".($entity === '' ? $conf->entity : $entity).")"; $sql_del .= " AND elementtype = '".$this->db->escape($elementtype)."'"; } else { // We want on all entities ($entities = '0'), we delete on all only (we keep setup specific to each entity) - $sql_del = "DELETE FROM ".MAIN_DB_PREFIX."extrafields"; + $sql_del = "DELETE FROM ".$this->db->prefix()."extrafields"; $sql_del .= " WHERE name = '".$this->db->escape($attrname)."'"; $sql_del .= " AND entity = 0"; $sql_del .= " AND elementtype = '".$this->db->escape($elementtype)."'"; } $resql1 = $this->db->query($sql_del); - $sql = "INSERT INTO ".MAIN_DB_PREFIX."extrafields("; + $sql = "INSERT INTO ".$this->db->prefix()."extrafields("; $sql .= " name,"; // This is code $sql .= " entity,"; $sql .= " label,"; @@ -804,15 +804,12 @@ class ExtraFields if ($elementtype == 'order_supplier') { $elementtype = 'commande_fournisseur'; } - if ($elementtype == 'stock_mouvement') { - $elementtype = 'movement'; - } $array_name_label = array(); // We should not have several time this request. If we have, there is some optimization to do by calling a simple $extrafields->fetch_optionals() in top of code and not into subcode $sql = "SELECT rowid, name, label, type, size, elementtype, fieldunique, fieldrequired, param, pos, alwayseditable, perms, langs, list, printable, totalizable, fielddefault, fieldcomputed, entity, enabled, help"; - $sql .= " FROM ".MAIN_DB_PREFIX."extrafields"; + $sql .= " FROM ".$this->db->prefix()."extrafields"; //$sql.= " WHERE entity IN (0,".$conf->entity.")"; // Filter is done later if ($elementtype) { $sql .= " WHERE elementtype = '".$this->db->escape($elementtype)."'"; // Filed with object->table_element @@ -925,6 +922,7 @@ class ExtraFields // Old usage $label = $this->attribute_label[$key]; $type = $this->attribute_type[$key]; + $list = $this->attribute_list[$key]; $hidden = (empty($list) ? 1 : 0); // If empty, we are sure it is hidden, otherwise we show. If it depends on mode (view/create/edit form or list, this must be filtered by caller) } @@ -1138,7 +1136,7 @@ class ExtraFields $sqlwhere = ''; $sql = "SELECT ".$keyList; - $sql .= ' FROM '.MAIN_DB_PREFIX.$InfoFieldList[0]; + $sql .= ' FROM '.$this->db->prefix().$InfoFieldList[0]; if (!empty($InfoFieldList[4])) { // can use curent entity filter if (strpos($InfoFieldList[4], '$ENTITY$') !== false) { @@ -1157,7 +1155,7 @@ class ExtraFields } //We have to join on extrafield table if (strpos($InfoFieldList[4], 'extra') !== false) { - $sql .= ' as main, '.MAIN_DB_PREFIX.$InfoFieldList[0].'_extrafields as extra'; + $sql .= ' as main, '.$this->db->prefix().$InfoFieldList[0].'_extrafields as extra'; $sqlwhere .= " WHERE extra.fk_object=main.".$InfoFieldList[2]." AND ".$InfoFieldList[4]; } else { $sqlwhere .= " WHERE ".$InfoFieldList[4]; @@ -1306,7 +1304,7 @@ class ExtraFields $sqlwhere = ''; $sql = "SELECT ".$keyList; - $sql .= ' FROM '.MAIN_DB_PREFIX.$InfoFieldList[0]; + $sql .= ' FROM '.$this->db->prefix().$InfoFieldList[0]; if (!empty($InfoFieldList[4])) { // can use SELECT request if (strpos($InfoFieldList[4], '$SEL$') !== false) { @@ -1369,7 +1367,7 @@ class ExtraFields // We have to join on extrafield table if (strpos($InfoFieldList[4], 'extra.') !== false) { - $sql .= ' as main, '.MAIN_DB_PREFIX.$InfoFieldList[0].'_extrafields as extra'; + $sql .= ' as main, '.$this->db->prefix().$InfoFieldList[0].'_extrafields as extra'; $sqlwhere .= " WHERE extra.fk_object=main.".$InfoFieldList[2]." AND ".$InfoFieldList[4]; } else { $sqlwhere .= " WHERE ".$InfoFieldList[4]; @@ -1594,7 +1592,7 @@ class ExtraFields } $sql = "SELECT ".$keyList; - $sql .= ' FROM '.MAIN_DB_PREFIX.$InfoFieldList[0]; + $sql .= ' FROM '.$this->db->prefix().$InfoFieldList[0]; if (!empty($InfoFieldList[4]) && strpos($InfoFieldList[4], 'extra') !== false) { $sql .= ' as main'; } @@ -1698,7 +1696,7 @@ class ExtraFields } $sql = "SELECT ".$keyList; - $sql .= " FROM ".MAIN_DB_PREFIX.$InfoFieldList[0]; + $sql .= " FROM ".$this->db->prefix().$InfoFieldList[0]; if (strpos($InfoFieldList[4], 'extra') !== false) { $sql .= ' as main'; } @@ -1946,8 +1944,8 @@ class ExtraFields if (!empty($onlykey) && $onlykey != '@GETPOSTISSET' && $key != $onlykey) { continue; } - if (!empty($onlykey) && $onlykey == '@GETPOSTISSET' && !GETPOSTISSET('options_'.$key) && $this->attributes[$object->table_element]['type'][$key] != 'boolean') { - //when unticking boolean field, it's not set in POST + + if (!empty($onlykey) && $onlykey == '@GETPOSTISSET' && !GETPOSTISSET('options_'.$key) && (! in_array($this->attributes[$object->table_element]['type'][$key], array('boolean', 'chkbxlst')))) { continue; } diff --git a/htdocs/core/class/fiscalyear.class.php b/htdocs/core/class/fiscalyear.class.php index 0edae298f46..772c67ff282 100644 --- a/htdocs/core/class/fiscalyear.class.php +++ b/htdocs/core/class/fiscalyear.class.php @@ -134,7 +134,7 @@ class Fiscalyear extends CommonObject $this->db->begin(); - $sql = "INSERT INTO ".MAIN_DB_PREFIX."accounting_fiscalyear ("; + $sql = "INSERT INTO ".$this->db->prefix()."accounting_fiscalyear ("; $sql .= "label"; $sql .= ", date_start"; $sql .= ", date_end"; @@ -155,7 +155,7 @@ class Fiscalyear extends CommonObject dol_syslog(get_class($this)."::create", LOG_DEBUG); $result = $this->db->query($sql); if ($result) { - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."accounting_fiscalyear"); + $this->id = $this->db->last_insert_id($this->db->prefix()."accounting_fiscalyear"); $result = $this->update($user); if ($result > 0) { @@ -191,7 +191,7 @@ class Fiscalyear extends CommonObject $this->db->begin(); - $sql = "UPDATE ".MAIN_DB_PREFIX."accounting_fiscalyear"; + $sql = "UPDATE ".$this->db->prefix()."accounting_fiscalyear"; $sql .= " SET label = '".$this->db->escape($this->label)."'"; $sql .= ", date_start = '".$this->db->idate($this->date_start)."'"; $sql .= ", date_end = ".($this->date_end ? "'".$this->db->idate($this->date_end)."'" : "null"); @@ -221,7 +221,7 @@ class Fiscalyear extends CommonObject public function fetch($id) { $sql = "SELECT rowid, label, date_start, date_end, statut"; - $sql .= " FROM ".MAIN_DB_PREFIX."accounting_fiscalyear"; + $sql .= " FROM ".$this->db->prefix()."accounting_fiscalyear"; $sql .= " WHERE rowid = ".((int) $id); dol_syslog(get_class($this)."::fetch", LOG_DEBUG); @@ -253,7 +253,7 @@ class Fiscalyear extends CommonObject { $this->db->begin(); - $sql = "DELETE FROM ".MAIN_DB_PREFIX."accounting_fiscalyear WHERE rowid = ".((int) $id); + $sql = "DELETE FROM ".$this->db->prefix()."accounting_fiscalyear WHERE rowid = ".((int) $id); dol_syslog(get_class($this)."::delete", LOG_DEBUG); $result = $this->db->query($sql); @@ -414,10 +414,10 @@ class Fiscalyear extends CommonObject */ public function info($id) { - $sql = 'SELECT fy.rowid, fy.datec, fy.fk_user_author, fy.fk_user_modif,'; - $sql .= ' fy.tms'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'accounting_fiscalyear as fy'; - $sql .= ' WHERE fy.rowid = '.((int) $id); + $sql = "SELECT fy.rowid, fy.datec, fy.fk_user_author, fy.fk_user_modif,"; + $sql .= " fy.tms"; + $sql .= " FROM ".$this->db->prefix()."accounting_fiscalyear as fy"; + $sql .= " WHERE fy.rowid = ".((int) $id); dol_syslog(get_class($this)."::fetch info", LOG_DEBUG); $result = $this->db->query($sql); @@ -464,7 +464,7 @@ class Fiscalyear extends CommonObject } $sql = "SELECT count(DISTINCT piece_num) as nb"; - $sql .= " FROM ".MAIN_DB_PREFIX."accounting_bookkeeping"; + $sql .= " FROM ".$this->db->prefix()."accounting_bookkeeping"; $sql .= " WHERE entity IN (".getEntity('bookkeeping', 0).")"; $sql .= " AND doc_date >= '".$this->db->idate($datestart)."' and doc_date <= '".$this->db->idate($dateend)."'"; @@ -498,7 +498,7 @@ class Fiscalyear extends CommonObject } $sql = "SELECT count(rowid) as nb"; - $sql .= " FROM ".MAIN_DB_PREFIX."accounting_bookkeeping "; + $sql .= " FROM ".$this->db->prefix()."accounting_bookkeeping "; $sql .= " WHERE entity IN (".getEntity('bookkeeping', 0).")"; $sql .= " AND doc_date >= '".$this->db->idate($datestart)."' and doc_date <= '".$this->db->idate($dateend)."'"; diff --git a/htdocs/core/class/hookmanager.class.php b/htdocs/core/class/hookmanager.class.php index d1b1e08710e..a40ec3e30c3 100644 --- a/htdocs/core/class/hookmanager.class.php +++ b/htdocs/core/class/hookmanager.class.php @@ -111,7 +111,7 @@ class HookManager if (in_array($context, $arrayhooks) || in_array('all', $arrayhooks)) { // We instantiate action class only if initialized hook is handled by module // Include actions class overwriting hooks - if (empty($this->hooks[$context][$module]) || !is_object($this->hooks[$context][$module])) { // If set to an object value, class was already loaded + if (empty($this->hooks[$context][$module]) || !is_object($this->hooks[$context][$module])) { // If set to an object value, class was already loaded so we do nothing. $path = '/'.$module.'/class/'; $actionfile = 'actions_'.$module.'.class.php'; diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 1d63bbaf332..3375e9f7cc4 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -204,7 +204,7 @@ class Form */ public function editfieldval($text, $htmlname, $value, $object, $perm, $typeofdata = 'string', $editvalue = '', $extObject = null, $custommsg = null, $moreparam = '', $notabletag = 0, $formatfunc = '', $paramid = 'id') { - global $conf, $langs, $db; + global $conf, $langs; $ret = ''; @@ -886,7 +886,7 @@ class Form $atleastonefavorite = 0; $sql = "SELECT rowid, code as code_iso, code_iso as code_iso3, label, favorite, eec"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_country"; + $sql .= " FROM ".$this->db->prefix()."c_country"; $sql .= " WHERE active > 0"; //$sql.= " ORDER BY code ASC"; @@ -1009,7 +1009,7 @@ class Form $incotermArray = array(); $sql = "SELECT rowid, code"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_incoterms"; + $sql .= " FROM ".$this->db->prefix()."c_incoterms"; $sql .= " WHERE active > 0"; $sql .= " ORDER BY code ASC"; @@ -1088,7 +1088,7 @@ class Form public function select_type_of_lines($selected = '', $htmlname = 'type', $showempty = 0, $hidetext = 0, $forceall = 0) { // phpcs:enable - global $db, $langs, $user, $conf; + global $langs, $conf; // If product & services are enabled or both disabled. if ($forceall == 1 || (empty($forceall) && !empty($conf->product->enabled) && !empty($conf->service->enabled)) @@ -1155,7 +1155,7 @@ class Form $langs->load("trips"); $sql = "SELECT c.code, c.label"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_type_fees as c"; + $sql .= " FROM ".$this->db->prefix()."c_type_fees as c"; $sql .= " WHERE active > 0"; $resql = $this->db->query($sql); @@ -1344,12 +1344,12 @@ class Form $sql .= ", s.address, s.zip, s.town"; $sql .= ", dictp.code as country_code"; } - $sql .= " FROM ".MAIN_DB_PREFIX."societe as s"; + $sql .= " FROM ".$this->db->prefix()."societe as s"; if (!empty($conf->global->COMPANY_SHOW_ADDRESS_SELECTLIST)) { - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as dictp ON dictp.rowid = s.fk_pays"; + $sql .= " LEFT JOIN ".$this->db->prefix()."c_country as dictp ON dictp.rowid = s.fk_pays"; } if (empty($user->rights->societe->client->voir) && !$user->socid) { - $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= ", ".$this->db->prefix()."societe_commerciaux as sc"; } $sql .= " WHERE s.entity IN (".getEntity('societe').")"; if (!empty($user->socid)) { @@ -1523,7 +1523,7 @@ class Form // On recherche les remises $sql = "SELECT re.rowid, re.amount_ht, re.amount_tva, re.amount_ttc,"; $sql .= " re.description, re.fk_facture_source"; - $sql .= " FROM ".MAIN_DB_PREFIX."societe_remise_except as re"; + $sql .= " FROM ".$this->db->prefix()."societe_remise_except as re"; $sql .= " WHERE re.fk_soc = ".(int) $socid; $sql .= " AND re.entity = ".$conf->entity; if ($filter) { @@ -1668,9 +1668,9 @@ class Form if ($showsoc > 0 || !empty($conf->global->CONTACT_SHOW_EMAIL_PHONE_TOWN_SELECTLIST)) { $sql .= ", s.nom as company, s.town AS company_town"; } - $sql .= " FROM ".MAIN_DB_PREFIX."socpeople as sp"; + $sql .= " FROM ".$this->db->prefix()."socpeople as sp"; if ($showsoc > 0 || !empty($conf->global->CONTACT_SHOW_EMAIL_PHONE_TOWN_SELECTLIST)) { - $sql .= " LEFT OUTER JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid=sp.fk_soc"; + $sql .= " LEFT OUTER JOIN ".$this->db->prefix()."societe as s ON s.rowid=sp.fk_soc"; } $sql .= " WHERE sp.entity IN (".getEntity('socpeople').")"; if ($socid > 0 || $socid == -1) { @@ -1690,11 +1690,16 @@ class Form $out .= 'global->PRODUCT_SEARCH_AUTOFOCUS) ? 'autofocus' : '').' />'; + $out .= 'global->PRODUCT_SEARCH_AUTOFOCUS) ? 'autofocus' : '').' />'; if ($hidelabel == 3) { $out .= img_picto($langs->trans("Search"), 'search'); } @@ -2362,6 +2367,69 @@ class Form } } + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + + /** + * Return list of BOM for customer in Ajax if Ajax activated or go to select_produits_list + * + * @param int $selected Preselected BOM id + * @param string $htmlname Name of HTML select field (must be unique in page). + * @param int $limit Limit on number of returned lines + * @param int $status Sell status -1=Return all bom, 0=Draft BOM, 1=Validated BOM + * @param int $type type of the BOM (-1=Return all BOM, 0=Return disassemble BOM, 1=Return manufacturing BOM) + * @param string $showempty '' to not show empty line. Translation key to show an empty line. '1' show empty line with no text. + * @param string $morecss Add more css on select + * @param string $nooutput No print, return the output into a string + * @param int $forcecombo Force to use combo box + * @return void|string + */ + public function select_bom($selected = '', $htmlname = 'bom_id', $limit = 0, $status = 1, $type = 1, $showempty = '1', $morecss = '', $nooutput = '', $forcecombo = 0) + { + // phpcs:enable + global $conf, $user, $langs, $db; + + require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; + + $error = 0; + $out = ''; + + if (!$forcecombo) { + include_once DOL_DOCUMENT_ROOT.'/core/lib/ajax.lib.php'; + $out .= ajax_combobox($htmlname, $events, getDolGlobalInt("PRODUIT_USE_SEARCH_TO_SELECT")); + } + + $out .= ''; + $out.= ''; + $out.= ''; if ($user->admin && empty($noinfoadmin)) { - print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); + $out.= info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); } - print ajax_combobox($htmlname); + $out.= ajax_combobox($htmlname); + return $out; } @@ -4092,7 +4184,7 @@ class Form // phpcs:enable global $langs; - $num = count($this->cache_transport_mode); + $num = count($this->cache_transport_mode); // TODO Use $conf->cache['payment_mode'] instead of $this->cache_transport_mode if ($num > 0) { return $num; // Cache already loaded } @@ -4102,7 +4194,7 @@ class Form $this->cache_transport_mode = array(); $sql = "SELECT rowid, code, label, active"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_transport_mode"; + $sql .= " FROM ".$this->db->prefix()."c_transport_mode"; $sql .= " WHERE entity IN (".getEntity('c_transport_mode').")"; $resql = $this->db->query($sql); @@ -4220,7 +4312,7 @@ class Form $langs->load("deliveries"); $sql = "SELECT rowid, code, libelle as label"; - $sql .= " FROM ".MAIN_DB_PREFIX."c_shipment_mode"; + $sql .= " FROM ".$this->db->prefix()."c_shipment_mode"; $sql .= " WHERE active > 0"; if ($filtre) { $sql .= " AND ".$filtre; @@ -4273,7 +4365,7 @@ class Form */ public function formSelectShippingMethod($page, $selected = '', $htmlname = 'shipping_method_id', $addempty = 0) { - global $langs, $db; + global $langs; $langs->load("deliveries"); @@ -4286,7 +4378,7 @@ class Form print ''; } else { if ($selected) { - $code = $langs->getLabelFromKey($db, $selected, 'c_shipment_mode', 'rowid', 'code'); + $code = $langs->getLabelFromKey($this->db, $selected, 'c_shipment_mode', 'rowid', 'code'); print $langs->trans("SendingMethod".strtoupper($code)); } else { print " "; @@ -4308,9 +4400,9 @@ class Form $langs->load('bills'); - $opt = ''; - $sql = 'SELECT rowid, ref, situation_cycle_ref, situation_counter, situation_final, fk_soc'; - $sql .= ' FROM '.MAIN_DB_PREFIX.'facture'; + $opt = ''; + $sql = "SELECT rowid, ref, situation_cycle_ref, situation_counter, situation_final, fk_soc"; + $sql .= ' FROM '.$this->db->prefix().'facture'; $sql .= ' WHERE entity IN ('.getEntity('invoice').')'; $sql .= ' AND situation_counter >= 1'; $sql .= ' AND fk_soc = '.(int) $socid; @@ -4365,7 +4457,7 @@ class Form $return = 'trans("FormatDateShortJavaInput").'\'); "'; // FormatDateShortInput for dol_print_date / FormatDateShortJavaInput that is same for javascript + $retstring .= ' onChange="dpChangeDay(\''.dol_escape_js($prefix).'\',\''.dol_escape_js($langs->trans("FormatDateShortJavaInput")).'\'); "'; // FormatDateShortInput for dol_print_date / FormatDateShortJavaInput that is same for javascript $retstring .= '>'; // Icone calendrier @@ -6544,7 +6636,7 @@ class Form unset($TDurationTypes[$value]); } - $retstring = ''; foreach ($TDurationTypes as $key => $typeduration) { $retstring .= '\n"; - $optJson = array('key'=>$outkey, 'value'=>$outref, 'type'=>$outtypem); + $optJson = array('key'=>$outkey, 'value'=>$outref, 'type'=>$outtype); } @@ -7140,7 +7228,7 @@ class Form */ public function selectMembersList($selected = '', $htmlname = 'adherentid', $filtertype = '', $limit = 20, $filterkey = '', $status = 1, $outputmode = 0, $showempty = '1', $forcecombo = 0, $morecss = '') { - global $langs, $conf, $user, $db; + global $langs, $conf; $out = ''; $outarray = array(); @@ -7149,7 +7237,7 @@ class Form $sql = "SELECT "; $sql .= $selectFields; - $sql .= " FROM ".MAIN_DB_PREFIX."adherent as p"; + $sql .= " FROM ".$this->db->prefix()."adherent as p"; $sql .= ' WHERE p.entity IN ('.getEntity('adherent').')'; // Add criteria on ref/label @@ -7224,7 +7312,7 @@ class Form if (empty($outputmode)) return $out; return $outarray; } else { - dol_print_error($db); + dol_print_error($this->db); } } @@ -7241,8 +7329,6 @@ class Form */ protected function constructMemberListOption(&$objp, &$opt, &$optJson, $selected, $filterkey = '') { - global $langs, $conf, $user, $db; - $outkey = ''; $outval = ''; $outref = ''; @@ -7265,7 +7351,7 @@ class Form $outval .= $objRef; $opt .= "\n"; - $optJson = array('key'=>$outkey, 'value'=>$outref, 'type'=>$outtypem); + $optJson = array('key'=>$outkey, 'value'=>$outref, 'type'=>$outtype); } /** @@ -7451,15 +7537,15 @@ class Form $num = 0; // Search data - $sql = "SELECT t.rowid, ".$fieldstoshow." FROM ".MAIN_DB_PREFIX.$objecttmp->table_element." as t"; + $sql = "SELECT t.rowid, ".$fieldstoshow." FROM ".$this->db->prefix().$objecttmp->table_element." as t"; if (isset($objecttmp->ismultientitymanaged)) { if (!is_numeric($objecttmp->ismultientitymanaged)) { $tmparray = explode('@', $objecttmp->ismultientitymanaged); - $sql .= " INNER JOIN ".MAIN_DB_PREFIX.$tmparray[1]." as parenttable ON parenttable.rowid = t.".$tmparray[0]; + $sql .= " INNER JOIN ".$this->db->prefix().$tmparray[1]." as parenttable ON parenttable.rowid = t.".$tmparray[0]; } if ($objecttmp->ismultientitymanaged === 'fk_soc@societe') { if (empty($user->rights->societe->client->voir) && !$user->socid) { - $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + $sql .= ", ".$this->db->prefix()."societe_commerciaux as sc"; } } } @@ -7990,6 +8076,31 @@ class Form } } + // Try also magic suggest + $out .= ''."\n"; - if (is_array($array) && !empty($array)) { - if ($value_as_key) { - $array = array_combine($array, $array); - } - - if (!empty($array)) { - foreach ($array as $key => $value) { - $newval = ($translate ? $langs->trans($value) : $value); - $newval = ($key_in_label ? $key.' - '.$newval : $newval); - - $out .= '
    '; + + print "
    \n"; + } + + return $i; +} diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index 7b5cc92c75d..c70ea041e0a 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -2270,13 +2270,13 @@ function dol_most_recent_file($dir, $regexfilter = '', $excludefilter = array('( /** * Security check when accessing to a document (used by document.php, viewimage.php and webservices to get documents). - * TODO Replace code that set $accesallowed by a call to restrictedArea() + * TODO Replace code that set $accessallowed by a call to restrictedArea() * * @param string $modulepart Module of document ('module', 'module_user_temp', 'module_user' or 'module_temp'). Exemple: 'medias', 'invoice', 'logs', 'tax-vat', ... * @param string $original_file Relative path with filename, relative to modulepart. * @param string $entity Restrict onto entity (0=no restriction) * @param User $fuser User object (forced) - * @param string $refname Ref of object to check permission for external users (autodetect if not provided) + * @param string $refname Ref of object to check permission for external users (autodetect if not provided) or for hierarchy * @param string $mode Check permission for 'read' or 'write' * @return mixed Array with access information : 'accessallowed' & 'sqlprotectagainstexternals' & 'original_file' (as a full path name) * @see restrictedArea() @@ -2423,6 +2423,30 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, $accessallowed = 1; } $original_file = $conf->fournisseur->facture->dir_output.'/'.$original_file; + } elseif (($modulepart == 'holiday') && !empty($conf->holiday->dir_output)) { + if ($fuser->rights->holiday->{$read} || preg_match('/^specimen/i', $original_file)) { + $accessallowed = 1; + // If we known $id of holiday, call checkUserAccessToObject to check permission on properties and hierarchy of leave request + if ($refname && !preg_match('/^specimen/i', $original_file)) { + include_once DOL_DOCUMENT_ROOT.'/holiday/class/holiday.class.php'; + $tmpholiday = new Holiday($db); + $tmpholiday->fetch('', $refname); + $accessallowed = checkUserAccessToObject($user, array('holiday'), $tmpholiday, 'holiday', '', '', 'rowid', ''); + } + } + $original_file = $conf->holiday->dir_output.'/'.$original_file; + } elseif (($modulepart == 'expensereport') && !empty($conf->expensereport->dir_output)) { + if ($fuser->rights->expensereport->{$lire} || preg_match('/^specimen/i', $original_file)) { + $accessallowed = 1; + // If we known $id of expensereport, call checkUserAccessToObject to check permission on properties and hierarchy of expense report + if ($refname && !preg_match('/^specimen/i', $original_file)) { + include_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php'; + $tmpexpensereport = new ExpenseReport($db); + $tmpexpensereport->fetch('', $refname); + $accessallowed = checkUserAccessToObject($user, array('expensereport'), $tmpexpensereport, 'expensereport', '', '', 'rowid', ''); + } + } + $original_file = $conf->expensereport->dir_output.'/'.$original_file; } elseif (($modulepart == 'apercuexpensereport') && !empty($conf->expensereport->dir_output)) { // Wrapping pour les apercu supplier invoice if ($fuser->rights->expensereport->{$lire}) { @@ -2686,7 +2710,7 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, include_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php'; $tmptask = new Task($db); $tmptask->fetch('', $refname); - $accessallowed = checkUserAccessToObject($user, array('projet_task'), $tmptask->id, 'projet&project', '', '', 'rowid', ''); + $accessallowed = checkUserAccessToObject($user, array('projet_task'), $tmptask->id, 'projet_task&project', '', '', 'rowid', ''); } } $original_file = $conf->projet->dir_output.'/'.$original_file; @@ -2971,9 +2995,9 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, } $ret = array( - 'accessallowed' => $accessallowed, - 'sqlprotectagainstexternals'=>$sqlprotectagainstexternals, - 'original_file'=>$original_file + 'accessallowed' => ($accessallowed ? 1 : 0), + 'sqlprotectagainstexternals' => $sqlprotectagainstexternals, + 'original_file' => $original_file ); return $ret; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 94148722862..4439a38509b 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -17,6 +17,7 @@ * Copyright (C) 2019 Thibault Foucart * Copyright (C) 2020 Open-Dsi * Copyright (C) 2021 Gauthier VERDOL + * Copyright (C) 2022 Anthony Berton * * 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 @@ -641,7 +642,7 @@ function GETPOST($paramname, $check = 'alphanohtml', $method = 0, $filter = null } // Check rule - if (preg_match('/^array/', $check)) { // If 'array' or 'array:restricthtml' or 'array:aZ09' + if (preg_match('/^array/', $check)) { // If 'array' or 'array:restricthtml' or 'array:aZ09' or 'array:intcomma' if (!is_array($out) || empty($out)) { $out = array(); } else { @@ -782,7 +783,7 @@ function checkVal($out = '', $check = 'alphanohtml', $filter = null, $options = // keep lines feed } break; - case 'alphawithlgt': // No " and no ../ but we keep balanced < > tags with no special chars inside. Can be used for email string like "Name " + case 'alphawithlgt': // No " and no ../ but we keep balanced < > tags with no special chars inside. Can be used for email string like "Name ". Less secured than 'alphanohtml' if (!is_array($out)) { $out = trim($out); do { @@ -828,7 +829,10 @@ function checkVal($out = '', $check = 'alphanohtml', $filter = null, $options = // We replace chars from a/A to z/Z encoded with numeric HTML entities with the real char so we won't loose the chars at the next step (preg_replace). // No need to use a loop here, this step is not to sanitize (this is done at next step, this is to try to save chars, even if they are // using a non coventionnel way to be encoded, to not have them sanitized just after) - $out = preg_replace_callback('/&#(x?[0-9][0-9a-f]+;?)/i', 'realCharForNumericEntities', $out); + //$out = preg_replace_callback('/&#(x?[0-9][0-9a-f]+;?)/i', 'realCharForNumericEntities', $out); + $out = preg_replace_callback('/&#(x?[0-9][0-9a-f]+;?)/i', function ($m) { + return realCharForNumericEntities($m); }, $out); + // Now we remove all remaining HTML entities starting with a number. We don't want such entities. $out = preg_replace('/&#x?[0-9]+/i', '', $out); // For example if we have javascript with an entities without the ; to hide the 'a' of 'javascript'. @@ -838,7 +842,7 @@ function checkVal($out = '', $check = 'alphanohtml', $filter = null, $options = // We should also exclude non expected HTML attributes and clean content of some attributes. if (!empty($conf->global->MAIN_RESTRICTHTML_REMOVE_ALSO_BAD_ATTRIBUTES)) { // Warning, the function may add a LF so we are forced to trim to compare with old $out without having always a difference and an infinit loop. - $out = trim(dol_string_onlythesehtmlattributes($out)); + $out = dol_string_onlythesehtmlattributes($out); } // Restore entity ' into ' (restricthtml is for html content so we can use html entity) @@ -1169,23 +1173,34 @@ function dol_sanitizeUrl($stringtoclean, $type = 1) */ function dol_string_unaccent($str) { + global $conf; + if (utf8_check($str)) { + if (extension_loaded('intl') && !empty($conf->global->MAIN_UNACCENT_USE_TRANSLITERATOR)) { + $transliterator = \Transliterator::createFromRules(':: Any-Latin; :: Latin-ASCII; :: NFD; :: [:Nonspacing Mark:] Remove; :: NFC;', \Transliterator::FORWARD); + return $transliterator->transliterate($str); + } // See http://www.utf8-chartable.de/ $string = rawurlencode($str); $replacements = array( '%C3%80' => 'A', '%C3%81' => 'A', '%C3%82' => 'A', '%C3%83' => 'A', '%C3%84' => 'A', '%C3%85' => 'A', + '%C3%87' => 'C', '%C3%88' => 'E', '%C3%89' => 'E', '%C3%8A' => 'E', '%C3%8B' => 'E', '%C3%8C' => 'I', '%C3%8D' => 'I', '%C3%8E' => 'I', '%C3%8F' => 'I', + '%C3%91' => 'N', '%C3%92' => 'O', '%C3%93' => 'O', '%C3%94' => 'O', '%C3%95' => 'O', '%C3%96' => 'O', + '%C5%A0' => 'S', '%C3%99' => 'U', '%C3%9A' => 'U', '%C3%9B' => 'U', '%C3%9C' => 'U', + '%C3%9D' => 'Y', '%C5%B8' => 'y', '%C3%A0' => 'a', '%C3%A1' => 'a', '%C3%A2' => 'a', '%C3%A3' => 'a', '%C3%A4' => 'a', '%C3%A5' => 'a', '%C3%A7' => 'c', '%C3%A8' => 'e', '%C3%A9' => 'e', '%C3%AA' => 'e', '%C3%AB' => 'e', '%C3%AC' => 'i', '%C3%AD' => 'i', '%C3%AE' => 'i', '%C3%AF' => 'i', '%C3%B1' => 'n', '%C3%B2' => 'o', '%C3%B3' => 'o', '%C3%B4' => 'o', '%C3%B5' => 'o', '%C3%B6' => 'o', + '%C5%A1' => 's', '%C3%B9' => 'u', '%C3%BA' => 'u', '%C3%BB' => 'u', '%C3%BC' => 'u', - '%C3%BF' => 'y' + '%C3%BD' => 'y', '%C3%BF' => 'y' ); $string = strtr($string, $replacements); return rawurldecode($string); @@ -1217,8 +1232,8 @@ function dol_string_unaccent($str) * * @param string $str String to clean * @param string $newstr String to replace forbidden chars with - * @param array|string $badcharstoreplace List of forbidden characters to replace - * @param array|string $badcharstoremove List of forbidden characters to remove + * @param array|string $badcharstoreplace Array of forbidden characters to replace. Use '' to keep default list. + * @param array|string $badcharstoremove Array of forbidden characters to remove. Use '' to keep default list. * @return string Cleaned string * * @see dol_sanitizeFilename(), dol_string_unaccent(), dol_string_nounprintableascii() @@ -1530,6 +1545,7 @@ function dol_syslog($message, $level = LOG_INFO, $ident = 0, $suffixinfilename = // This is when PHP session is ran outside a web server, like from Linux command line (Not always defined, but usefull if OS defined it). $data['ip'] = '???@'.$_SERVER['LOGNAME']; } + // Loop on each log handler and send output foreach ($conf->loghandlers as $loghandlerinstance) { if ($restricttologhandler && $loghandlerinstance->code != $restricttologhandler) { @@ -1612,7 +1628,7 @@ function dol_fiche_head($links = array(), $active = '0', $title = '', $notab = 0 /** * Show tabs of a record * - * @param array $links Array of tabs + * @param array $links Array of tabs. Note that label into $links[$i][1] must be already HTML escaped. * @param string $active Active tab name * @param string $title Title * @param int $notab -1 or 0=Add tab header, 1=no tab header (if you set this to 1, using print dol_get_fiche_end() to close tab is not required), -2=Add tab header with no seaparation under tab (to start a tab just after) @@ -1650,7 +1666,11 @@ function dol_get_fiche_head($links = array(), $active = '', $title = '', $notab $limittitle = 30; $out .= ''; if ($picto) { - $out .= img_picto($title, ($pictoisfullpath ? '' : 'object_').$picto, '', $pictoisfullpath, 0, 0, '', 'imgTabTitle').' '; + $noprefix = $pictoisfullpath; + if (strpos($picto, 'fontawesome_') !== false) { + $noprefix = 1; + } + $out .= img_picto($title, ($noprefix ? '' : 'object_').$picto, '', $pictoisfullpath, 0, 0, '', 'imgTabTitle').' '; } $out .= ''.dol_escape_htmltag(dol_trunc($title, $limittitle)).''; $out .= ''; @@ -1697,8 +1717,8 @@ function dol_get_fiche_head($links = array(), $active = '', $title = '', $notab } if ($i < $limittoshow || $isactive) { - // Add a new entry - $out .= '
    '; + // Output entry with a visible tab + $out .= '
    '; if (isset($links[$i][2]) && $links[$i][2] == 'image') { if (!empty($links[$i][0])) { @@ -1710,7 +1730,8 @@ function dol_get_fiche_head($links = array(), $active = '', $title = '', $notab //print "x $i $active ".$links[$i][2]." z"; $out .= '
    '; if (!empty($links[$i][0])) { - $out .= ''; + $titletoshow = preg_replace('/<.*$/', '', $links[$i][1]); + $out .= ''; } $out .= $links[$i][1]; if (!empty($links[$i][0])) { @@ -1722,7 +1743,7 @@ function dol_get_fiche_head($links = array(), $active = '', $title = '', $notab $out .= '
    '; } else { - // The popup with the other tabs + // Add entry into the combo popup with the other tabs if (!$popuptab) { $popuptab = 1; $outmore .= '
    '; // The css used to hide/show popup @@ -1759,7 +1780,7 @@ function dol_get_fiche_head($links = array(), $active = '', $title = '', $notab $tabsname = str_replace("@", "", $picto); } $out .= '
    '; - $out .= ''.$langs->trans("More").'... ('.$nbintab.')'; // Do not use "reposition" class in the "More". + $out .= ''; // Do not use "reposition" class in the "More". $out .= '
    '; $out .= $outmore; $out .= '
    '; @@ -1882,7 +1903,7 @@ function dol_banner_tab($object, $paramid, $morehtml = '', $shownav = 1, $fieldi if ($object->element == 'product') { $width = 80; - $cssclass = 'photoref'; + $cssclass = 'photowithmargin photoref'; $showimage = $object->is_photo_available($conf->product->multidir_output[$entity]); $maxvisiblephotos = (isset($conf->global->PRODUCT_MAX_VISIBLE_PHOTO) ? $conf->global->PRODUCT_MAX_VISIBLE_PHOTO : 5); if ($conf->browser->layout == 'phone') { @@ -1984,7 +2005,7 @@ function dol_banner_tab($object, $paramid, $morehtml = '', $shownav = 1, $fieldi } } } elseif (!$phototoshow) { // example if modulepart = 'societe' or 'photo' - $phototoshow .= $form->showphoto($modulepart, $object, 0, 0, 0, 'photoref', 'small', 1, 0, $maxvisiblephotos); + $phototoshow .= $form->showphoto($modulepart, $object, 0, 0, 0, 'photowithmargin photoref', 'small', 1, 0, $maxvisiblephotos); } if ($phototoshow) { @@ -2004,10 +2025,14 @@ function dol_banner_tab($object, $paramid, $morehtml = '', $shownav = 1, $fieldi $width = 14; $cssclass = 'photorefcenter'; $picto = $object->picto; + $prefix = 'object_'; if ($object->element == 'project' && !$object->public) { $picto = 'project'; // instead of projectpub } - $nophoto = img_picto('No photo', 'object_'.$picto); + if (strpos($picto, 'fontawesome_') !== false) { + $prefix = ''; + } + $nophoto = img_picto('No photo', $prefix.$picto); } $morehtmlleft .= ''; $morehtmlleft .= '
    '; @@ -2865,15 +2890,15 @@ function dol_print_socialnetworks($value, $cid, $socid, $type, $dictsocialnetwor // Use dictionary definition for picto $dictsocialnetworks[$type]['icon'] $htmllink .= ''; if ($type == 'skype') { - $htmllink .= $value; + $htmllink .= dol_escape_htmltag($value); $htmllink .= ' '; $htmllink .= ''; + $htmllink .= dol_string_nospecial($value, '_', '', array('@')); + $htmllink .= '?call" alt="'.$langs->trans("Call").' '.$value.'" title="'.dol_escape_htmltag($langs->trans("Call").' '.$value).'">'; $htmllink .= ''; $htmllink .= ''; + $htmllink .= dol_string_nospecial($value, '_', '', array('@')); + $htmllink .= '?chat" alt="'.$langs->trans("Chat").' '.$value.'" title="'.dol_escape_htmltag($langs->trans("Chat").' '.$value).'">'; $htmllink .= ''; $htmllink .= ''; if (($cid || $socid) && !empty($conf->agenda->enabled) && $user->rights->agenda->myactions->create) { @@ -2887,9 +2912,9 @@ function dol_print_socialnetworks($value, $cid, $socid, $type, $dictsocialnetwor } else { if (!empty($dictsocialnetworks[$type]['url'])) { $link = str_replace('{socialid}', $value, $dictsocialnetworks[$type]['url']); - $htmllink .= ' '.$value.''; + $htmllink .= ' '.dol_escape_htmltag($value).''; } else { - $htmllink .= $value; + $htmllink .= dol_escape_htmltag($value); } } $htmllink .= '
    '; @@ -2900,6 +2925,38 @@ function dol_print_socialnetworks($value, $cid, $socid, $type, $dictsocialnetwor return $htmllink; } +/** + * Format profIDs according to country + * + * @param string $profID Value of profID to format + * @param string $profIDtype Type of profID to format ('1', '2', '3', '4', '5', '6' or 'VAT') + * @param string $countrycode Country code to use for formatting + * @param int $addcpButton Add button to copy to clipboard (1 => show only on hoover ; 2 => always display ) + * @param string $separ Separation between numbers for a better visibility example : xxx xxx xxx xxxxx + * @return string Formated profID + */ +function dol_print_profids($profID, $profIDtype, $countrycode = '', $addcpButton = 1, $separ = ' ') +{ + global $mysoc; + + if (empty($profID) || empty($profIDtype)) { + return ''; + } + if (empty($countrycode)) $countrycode = $mysoc->country_code; + $newProfID = $profID; + $id = substr($profIDtype, -1); + $ret = ''; + if (strtoupper($countrycode) == 'FR') { + // France + if ($id == 1 && dol_strlen($newProfID) == 9) $newProfID = substr($newProfID, 0, 3).$separ.substr($newProfID, 3, 3).$separ.substr($newProfID, 6, 3); + if ($id == 2 && dol_strlen($newProfID) == 14) $newProfID = substr($newProfID, 0, 3).$separ.substr($newProfID, 3, 3).$separ.substr($newProfID, 6, 3).$separ.substr($newProfID, 9, 5); + if ($profIDtype === 'VAT' && dol_strlen($newProfID) == 13) $newProfID = substr($newProfID, 0, 4).$separ.substr($newProfID, 4, 3).$separ.substr($newProfID, 7, 3).$separ.substr($newProfID, 10, 3); + } + if (!empty($addcpButton)) $ret = showValueWithClipboardCPButton(dol_escape_htmltag($profID), ($addcpButton == 1 ? 1 : 0), $newProfID); + else $ret = $newProfID; + return $ret; +} + /** * Format phone numbers according to country * @@ -3592,6 +3649,7 @@ function dol_trunc($string, $size = 40, $trunc = 'right', $stringencoding = 'UTF * Example: picto.png if picto.png is stored into htdocs/theme/mytheme/img * Example: picto.png@mymodule if picto.png is stored into htdocs/mymodule/img * Example: /mydir/mysubdir/picto.png if picto.png is stored into htdocs/mydir/mysubdir (pictoisfullpath must be set to 1) + * Example: fontawesome_envelope-open-text_fas_red_1em if you want to use fontaweseome icons: fontawesome__\n
    \n\n


    \n\n \n\n
    \n \n',1,'2020-10-07 13:13:26',NULL,'2020-12-10 12:28:18',NULL,12,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(8,5,'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,'2020-12-10 12:28:18',NULL,12,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(9,5,'footer','','Footer','Footer','','\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,12,'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,12,'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,12,'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,12,'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,12,'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,12,'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,12,'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,12,'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,12,'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,12,'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 (1,5,'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,'2020-12-10 12:28:18',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(2,5,'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,'2020-12-10 12:28:18',NULL,NULL,'blogpost','en',NULL,'','',NULL,'image/template-corporate/background_dolibarr.jpg','',0,NULL,NULL),(3,5,'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,'2020-12-10 12:28:18',NULL,NULL,'blogpost','en',NULL,'','',NULL,'image/template-corporate/background_rough-horn.jpg','',0,NULL,NULL),(4,5,'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,'2021-01-03 18:01:53',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(5,5,'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,'2020-12-10 12:28:18',NULL,NULL,'page','fr',NULL,'','',NULL,'','',0,NULL,NULL),(6,5,'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,'2020-12-10 12:28:18',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(7,5,'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,'2020-12-10 12:28:18',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(8,5,'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,'2020-12-10 12:28:18',NULL,NULL,'page','en',NULL,'','',NULL,'','',0,NULL,NULL),(9,5,'footer','','Footer','Footer','','\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),(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); /*!40000 ALTER TABLE `llx_website_page` ENABLE KEYS */; UNLOCK TABLES; @@ -12732,6 +13194,31 @@ LOCK TABLES `llx_workstation_workstation_resource` WRITE; /*!40000 ALTER TABLE `llx_workstation_workstation_resource` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Table structure for table `llx_workstation_workstation_usergroup` +-- + +DROP TABLE IF EXISTS `llx_workstation_workstation_usergroup`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `llx_workstation_workstation_usergroup` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `fk_usergroup` int(11) DEFAULT NULL, + `fk_workstation` int(11) DEFAULT NULL, + PRIMARY KEY (`rowid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `llx_workstation_workstation_usergroup` +-- + +LOCK TABLES `llx_workstation_workstation_usergroup` WRITE; +/*!40000 ALTER TABLE `llx_workstation_workstation_usergroup` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_workstation_workstation_usergroup` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Table structure for table `llx_zapier_hook` -- @@ -12773,4 +13260,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2021-07-11 19:54:10 +-- Dump completed on 2022-02-07 15:44:10 From 228142684b5c2eecde9965bd7e03c70b3b445348 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Mon, 7 Feb 2022 16:33:27 +0100 Subject: [PATCH 023/225] fix: if capital is not numeric just display input value --- 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 3d0422b1205..5963b1bc57f 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -1064,7 +1064,7 @@ function pdf_pagefoot(&$pdf, $outputlangs, $paramfreetext, $fromcompany, $marge_ if (is_numeric($tmpamounttoshow) && $tmpamounttoshow > 0) { $line3 .= ($line3 ? " - " : "").$outputlangs->transnoentities("CapitalOf", price($tmpamounttoshow, 0, $outputlangs, 0, 0, 0, $conf->currency)); } else { - $line3 .= ($line3 ? " - " : "").$outputlangs->transnoentities("CapitalOf", $tmpamounttoshow, $outputlangs); + $line3 .= ($line3 ? " - " : "").$outputlangs->transnoentities("CapitalOf", $fromcompany->capital, $outputlangs); } } // Prof Id 1 From 30779be77e7f35eae1feedc2fc2f1019d00974f8 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Mon, 7 Feb 2022 16:36:47 +0100 Subject: [PATCH 024/225] fix: if capital is not numeric just display input value --- 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 5963b1bc57f..20b2608e3b9 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -1063,7 +1063,7 @@ function pdf_pagefoot(&$pdf, $outputlangs, $paramfreetext, $fromcompany, $marge_ $tmpamounttoshow = price2num($fromcompany->capital); // This field is a free string if (is_numeric($tmpamounttoshow) && $tmpamounttoshow > 0) { $line3 .= ($line3 ? " - " : "").$outputlangs->transnoentities("CapitalOf", price($tmpamounttoshow, 0, $outputlangs, 0, 0, 0, $conf->currency)); - } else { + } elseif (!empty($fromcompany->capital)) { $line3 .= ($line3 ? " - " : "").$outputlangs->transnoentities("CapitalOf", $fromcompany->capital, $outputlangs); } } From e672b6f6e0f2cd1e134841e4b918a2dda760f29b Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Mon, 7 Feb 2022 16:41:45 +0100 Subject: [PATCH 025/225] fix: in some case index do not exists and return an error --- 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 f8e5726d344..feb0fd54b15 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -699,7 +699,7 @@ class ExtraFields if ($unique) { $sql = "ALTER TABLE ".MAIN_DB_PREFIX.$table." ADD UNIQUE INDEX uk_".$table."_".$attrname." (".$attrname.")"; } else { - $sql = "ALTER TABLE ".MAIN_DB_PREFIX.$table." DROP INDEX uk_".$table."_".$attrname; + $sql = "ALTER TABLE ".MAIN_DB_PREFIX.$table." DROP INDEX IF EXISTS uk_".$table."_".$attrname; } dol_syslog(get_class($this).'::update', LOG_DEBUG); $resql = $this->db->query($sql, 1, 'dml'); From b6b5eb633b716077a3435c51fd86973eb141a410 Mon Sep 17 00:00:00 2001 From: Thomas Negre Date: Mon, 7 Feb 2022 17:38:32 +0100 Subject: [PATCH 026/225] only update last_msg_date if a message is really sent. --- ...nterface_50_modTicket_TicketEmail.class.php | 8 +++++--- htdocs/ticket/class/ticket.class.php | 18 +++++++++++------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php b/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php index 13d6676a8e3..dfd83022393 100644 --- a/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php +++ b/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php @@ -280,9 +280,11 @@ class InterfaceTicketEmail extends DolibarrTriggers dol_syslog($mailfile->error, LOG_DEBUG); } else { $result = $mailfile->sendfile(); - // update last_msg_sent date - $object->date_last_msg_sent = dol_now(); - $object->update($user); + if ($result) { + // update last_msg_sent date + $object->date_last_msg_sent = dol_now(); + $object->update($user); + } } if (!empty($conf->global->TICKET_DISABLE_MAIL_AUTOCOPY_TO)) { $conf->global->MAIN_MAIL_AUTOCOPY_TO = $old_MAIN_MAIL_AUTOCOPY_TO; diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index f246fb546c3..14c1e0719a3 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -2756,13 +2756,14 @@ class Ticket extends CommonObject // altairis: dont try to send email when no recipient if (!empty($sendto)) { - $this->sendTicketMessageByEmail($subject, $message, '', $sendto, $listofpaths, $listofmimes, $listofnames); + $result = $this->sendTicketMessageByEmail($subject, $message, '', $sendto, $listofpaths, $listofmimes, $listofnames); + if ($result) { + // update last_msg_sent date + $object->date_last_msg_sent = dol_now(); + $object->update($user); + } } } - - // update last_msg_sent date - $object->date_last_msg_sent = dol_now(); - $object->update($user); } } } @@ -2793,7 +2794,7 @@ class Ticket extends CommonObject * @param array $filename_list List of files to attach (full path of filename on file system) * @param array $mimetype_list List of MIME type of attached files * @param array $mimefilename_list List of attached file name in message - * @return void + * @return boolean True if mail sent to at least one receiver, false otherwise */ public function sendTicketMessageByEmail($subject, $message, $send_internal_cc = 0, $array_receiver = array(), $filename_list = array(), $mimetype_list = array(), $mimefilename_list = array()) { @@ -2801,7 +2802,7 @@ class Ticket extends CommonObject if ($conf->global->TICKET_DISABLE_ALL_MAILS) { dol_syslog(get_class($this).'::sendTicketMessageByEmail: Emails are disable into ticket setup by option TICKET_DISABLE_ALL_MAILS', LOG_WARNING); - return ''; + return false; } $langs->load("mails"); @@ -2820,6 +2821,7 @@ class Ticket extends CommonObject } $from = $conf->global->TICKET_NOTIFICATION_EMAIL_FROM; + $is_sent = false; if (is_array($array_receiver) && count($array_receiver) > 0) { foreach ($array_receiver as $key => $receiver) { $deliveryreceipt = 0; @@ -2841,6 +2843,7 @@ class Ticket extends CommonObject $result = $mailfile->sendfile(); if ($result) { setEventMessages($langs->trans('MailSuccessfulySent', $mailfile->getValidAddress($from, 2), $mailfile->getValidAddress($receiver, 2)), null, 'mesgs'); + $is_sent = true; } else { $langs->load("other"); if ($mailfile->error) { @@ -2859,6 +2862,7 @@ class Ticket extends CommonObject $langs->load("other"); setEventMessages($langs->trans('ErrorMailRecipientIsEmptyForSendTicketMessage'), null, 'warnings'); } + return $is_sent; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps From c496e6eb51502791708e377c8230d28acb999291 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 7 Feb 2022 20:53:13 +0100 Subject: [PATCH 027/225] doc --- 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 20b2608e3b9..1755378f7d4 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -1060,7 +1060,7 @@ function pdf_pagefoot(&$pdf, $outputlangs, $paramfreetext, $fromcompany, $marge_ } // Capital if ($fromcompany->capital) { - $tmpamounttoshow = price2num($fromcompany->capital); // This field is a free string + $tmpamounttoshow = price2num($fromcompany->capital); // This field is a free string or a float if (is_numeric($tmpamounttoshow) && $tmpamounttoshow > 0) { $line3 .= ($line3 ? " - " : "").$outputlangs->transnoentities("CapitalOf", price($tmpamounttoshow, 0, $outputlangs, 0, 0, 0, $conf->currency)); } elseif (!empty($fromcompany->capital)) { From 3f2c04a53c8dc700a7dae44f0688812af8ae9690 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Tue, 8 Feb 2022 08:46:15 +0100 Subject: [PATCH 028/225] fix sql error return --- htdocs/core/class/extrafields.class.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index feb0fd54b15..9f0514fc282 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -703,6 +703,10 @@ class ExtraFields } dol_syslog(get_class($this).'::update', LOG_DEBUG); $resql = $this->db->query($sql, 1, 'dml'); + if ($resql < 0) { + $this->error = $this->db->lasterror(); + return -1; + } return 1; } else { $this->error = $this->db->lasterror(); From 2e71c21208b294b0940a23b968e8669fe36d46f5 Mon Sep 17 00:00:00 2001 From: lvessiller Date: Tue, 8 Feb 2022 09:25:53 +0100 Subject: [PATCH 029/225] NEW thumbnail field in product list --- htdocs/product/list.php | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 778565dd2cb..9242c92ff4b 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -204,6 +204,7 @@ $arrayfields = array( 'p.rowid'=>array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-2, 'noteditable'=>1, 'notnull'=> 1, 'index'=>1, 'position'=>1, 'comment'=>'Id', 'css'=>'left'), 'p.ref'=>array('label'=>"Ref", 'checked'=>1, 'position'=>10), //'pfp.ref_fourn'=>array('label'=>$langs->trans("RefSupplier"), 'checked'=>1, 'enabled'=>(! empty($conf->barcode->enabled))), + 'thumbnail'=>array('label'=>'Photo', 'checked'=>0, 'position'=>10), 'p.label'=>array('label'=>"Label", 'checked'=>1, 'position'=>10), 'p.fk_product_type'=>array('label'=>"Type", 'checked'=>0, 'enabled'=>(!empty($conf->product->enabled) && !empty($conf->service->enabled)), 'position'=>11), 'p.barcode'=>array('label'=>"Gencod", 'checked'=>1, 'enabled'=>(!empty($conf->barcode->enabled)), 'position'=>12), @@ -872,6 +873,11 @@ if ($resql) { print ''; print ''; } + // Thumbnail + if (!empty($arrayfields['thumbnail']['checked'])) { + print ''; + print ''; + } if (!empty($arrayfields['p.label']['checked'])) { print ''; print ''; @@ -1122,6 +1128,9 @@ if ($resql) { if (!empty($arrayfields['pfp.ref_fourn']['checked'])) { print_liste_field_titre($arrayfields['pfp.ref_fourn']['label'], $_SERVER["PHP_SELF"], "pfp.ref_fourn", "", $param, "", $sortfield, $sortorder); } + if (!empty($arrayfields['thumbnail']['checked'])) { + print_liste_field_titre($arrayfields['thumbnail']['label'], $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, 'center '); + } if (!empty($arrayfields['p.label']['checked'])) { print_liste_field_titre($arrayfields['p.label']['label'], $_SERVER["PHP_SELF"], "p.label", "", $param, "", $sortfield, $sortorder); } @@ -1369,6 +1378,22 @@ if ($resql) { } } + // Thumbnail + if (!empty($arrayfields['thumbnail']['checked'])) { + $product_thumbnail_html = ''; + if (!empty($product_static->entity)) { + $product_thumbnail = $product_static->show_photos('product', $conf->product->multidir_output[$product_static->entity], 1, 1, 0, 0, 0, 80); + if ($product_static->nbphoto > 0) { + $product_thumbnail_html = $product_thumbnail; + } + } + + print '' . $product_thumbnail_html . ''; + if (!$i) { + $totalarray['nbfield']++; + } + } + // Label if (!empty($arrayfields['p.label']['checked'])) { print ''.$obj->label.''; From a91bdad8de6501a94d6f965f418cf838409022e6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 8 Feb 2022 12:01:48 +0100 Subject: [PATCH 030/225] Fix responsive --- htdocs/contrat/card.php | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 2bde3f3174a..216702da9ed 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -1123,18 +1123,16 @@ if ($action == 'create') { // Ligne info remises tiers print ''.$langs->trans('Discounts').''; if ($soc->remise_percent) { - print $langs->trans("CompanyHasRelativeDiscount", $soc->remise_percent); + print $langs->trans("CompanyHasRelativeDiscount", $soc->remise_percent).' '; } else { - print $langs->trans("CompanyHasNoRelativeDiscount"); + print ''.$langs->trans("CompanyHasNoRelativeDiscount").'. '; } - print '. '; $absolute_discount = $soc->getAvailableDiscounts(); if ($absolute_discount) { - print $langs->trans("CompanyHasAbsoluteDiscount", price($absolute_discount), $langs->trans("Currency".$conf->currency)); + print $langs->trans("CompanyHasAbsoluteDiscount", price($absolute_discount), $langs->trans("Currency".$conf->currency)).'.'; } else { - print $langs->trans("CompanyHasNoAbsoluteDiscount"); + print ''.$langs->trans("CompanyHasNoAbsoluteDiscount").'.'; } - print '.'; print ''; } @@ -1361,18 +1359,16 @@ if ($action == 'create') { // Line info of thirdparty discounts print ''.$langs->trans('Discount').''; if ($object->thirdparty->remise_percent) { - print $langs->trans("CompanyHasRelativeDiscount", $object->thirdparty->remise_percent); + print $langs->trans("CompanyHasRelativeDiscount", $object->thirdparty->remise_percent).'. '; } else { - print $langs->trans("CompanyHasNoRelativeDiscount"); + print ''.$langs->trans("CompanyHasNoRelativeDiscount").'. '; } $absolute_discount = $object->thirdparty->getAvailableDiscounts(); - print '. '; if ($absolute_discount) { - print $langs->trans("CompanyHasAbsoluteDiscount", price($absolute_discount), $langs->trans("Currency".$conf->currency)); + print $langs->trans("CompanyHasAbsoluteDiscount", price($absolute_discount), $langs->trans("Currency".$conf->currency)).'.'; } else { - print $langs->trans("CompanyHasNoAbsoluteDiscount"); + print ''.$langs->trans("CompanyHasNoAbsoluteDiscount").'.'; } - print '.'; print ''; // Date From e0a3820b9c41b65068b4302f58f0a3796e1cf140 Mon Sep 17 00:00:00 2001 From: Christian Foellmann Date: Wed, 9 Feb 2022 08:01:24 +0100 Subject: [PATCH 031/225] fix double VAT line in commande PDF template --- .../commande/doc/pdf_eratosthene.modules.php | 29 ------------------- 1 file changed, 29 deletions(-) diff --git a/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php b/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php index 210ef249ac2..d30107fcbfb 100644 --- a/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php @@ -1216,35 +1216,6 @@ class pdf_eratosthene extends ModelePDFCommandes } //} - // VAT - foreach ($this->tva_array as $tvakey => $tvaval) { - if ($tvakey != 0) { // On affiche pas taux 0 - $this->atleastoneratenotnull++; - - $index++; - $pdf->SetXY($col1x, $tab2_top + $tab2_hl * $index); - - $tvacompl = ''; - if (preg_match('/\*/', $tvakey)) { - $tvakey = str_replace('*', '', $tvakey); - $tvacompl = " (".$outputlangs->transnoentities("NonPercuRecuperable").")"; - } - $totalvat = $outputlangs->transcountrynoentities("TotalVAT", $mysoc->country_code).(is_object($outputlangsbis) ? ' / '.$outputlangsbis->transcountrynoentities("TotalVAT", $mysoc->country_code) : ''); - $totalvat .= ' '; - if (getDolGlobalString('PDF_VAT_LABEL_IS_CODE_OR_RATE') == 'rateonly') { - $totalvat .= vatrate($tvaval['vatrate'], 1).$tvacompl; - } elseif (getDolGlobalString('PDF_VAT_LABEL_IS_CODE_OR_RATE') == 'codeonly') { - $totalvat .= $tvaval['vatcode'].$tvacompl; - } else { - $totalvat .= vatrate($tvaval['vatrate'], 1).($tvaval['vatcode'] ? ' ('.$tvaval['vatcode'].')' : '').$tvacompl; - } - $pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1); - - $pdf->SetXY($col2x, $tab2_top + $tab2_hl * $index); - $pdf->MultiCell($largcol2, $tab2_hl, price(price2num($tvaval['amount'], 'MT'), 0, $outputlangs), 0, 'R', 1); - } - } - // VAT foreach ($this->tva_array as $tvakey => $tvaval) { if ($tvakey != 0) { // On affiche pas taux 0 From 4c6fd42e3ae458bf05dd3fdd1bcf6b483f789e83 Mon Sep 17 00:00:00 2001 From: atm-greg Date: Wed, 9 Feb 2022 09:47:48 +0100 Subject: [PATCH 032/225] fix with eldy recommendations --- htdocs/fourn/facture/card.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 57d0ae6a1a0..596c55b53ad 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -527,13 +527,14 @@ if (empty($reshook)) { $i = 0; foreach ($object->lines as $line) { if ($line->product_type < 9 && $line->total_ht != 0) { // Remove lines with product_type greater than or equal to 9 and no need to create discount if amount is null + $keyforvatrate = $line->tva_tx.($line->vat_src_code ? ' ('.$line->vat_src_code.')' : ''); - $amount_ht[$line->tva_tx] += $line->total_ht; - $amount_tva[$line->tva_tx] += $line->total_tva; - $amount_ttc[$line->tva_tx] += $line->total_ttc; - $multicurrency_amount_ht[$line->tva_tx] += $line->multicurrency_total_ht; - $multicurrency_amount_tva[$line->tva_tx] += $line->multicurrency_total_tva; - $multicurrency_amount_ttc[$line->tva_tx] += $line->multicurrency_total_ttc; + $amount_ht[$keyforvatrate] += $line->total_ht; + $amount_tva[$keyforvatrate] += $line->total_tva; + $amount_ttc[$keyforvatrate] += $line->total_ttc; + $multicurrency_amount_ht[$keyforvatrate] += $line->multicurrency_total_ht; + $multicurrency_amount_tva[$keyforvatrate] += $line->multicurrency_total_tva; + $multicurrency_amount_ttc[$keyforvatrate] += $line->multicurrency_total_ttc; $i++; } } From 194959c61c4e0fa34836d7af8cc30d268e4d396a Mon Sep 17 00:00:00 2001 From: Adrien Raze Date: Wed, 9 Feb 2022 10:03:30 +0100 Subject: [PATCH 033/225] FIX : Fixing PR returns --- htdocs/core/modules/modFournisseur.class.php | 1 - htdocs/langs/en_US/errors.lang | 1 + htdocs/langs/en_US/suppliers.lang | 7 +++++++ htdocs/langs/fr_FR/errors.lang | 1 - htdocs/langs/fr_FR/suppliers.lang | 9 +-------- 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/htdocs/core/modules/modFournisseur.class.php b/htdocs/core/modules/modFournisseur.class.php index 8e3033bf8ee..8bd801e0daa 100644 --- a/htdocs/core/modules/modFournisseur.class.php +++ b/htdocs/core/modules/modFournisseur.class.php @@ -131,7 +131,6 @@ class modFournisseur extends DolibarrModules $arraydate = dol_getdate(dol_now()); $datestart = dol_mktime(23, 0, 0, $arraydate['mon'], $arraydate['mday'], $arraydate['year']); - include DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture-rec.class.php'; $this->cronjobs = array( 0 => array( 'label'=>'RecurringSupplierInvoices', diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index cbce9a6a264..98d83aa9453 100644 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -9,6 +9,7 @@ ErrorBadMXDomain=Email %s seems incorrect (domain has no valid MX record) ErrorBadUrl=Url %s is incorrect ErrorBadValueForParamNotAString=Bad value for your parameter. It appends generally when translation is missing. ErrorRefAlreadyExists=Reference %s already exists. +ErrorTitleAlreadyExists=Title %s already exists. ErrorLoginAlreadyExists=Login %s already exists. ErrorGroupAlreadyExists=Group %s already exists. ErrorEmailAlreadyExists=Email %s already exists. diff --git a/htdocs/langs/en_US/suppliers.lang b/htdocs/langs/en_US/suppliers.lang index ca9ee174d29..15da3f0638a 100644 --- a/htdocs/langs/en_US/suppliers.lang +++ b/htdocs/langs/en_US/suppliers.lang @@ -47,3 +47,10 @@ BuyerName=Buyer name AllProductServicePrices=All product / service prices AllProductReferencesOfSupplier=All references of vendor BuyingPriceNumShort=Vendor prices +RepeatableSupplierInvoice=Template supplier invoice +RepeatableSupplierInvoices=Template supplier invoices +RepeatableSupplierInvoicesList=Template supplier invoices +RecurringSupplierInvoices=Recurring supplier invoices +ToCreateAPredefinedSupplierInvoice=In order to create template supplier invoice, you must create a standard invoice, then, without validating it, click on the "%s" button. +GeneratedFromSupplierTemplate=Generated from supplier invoice template %s +SupplierInvoiceGeneratedFromTemplate=Supplier invoice %s Generated from supplier invoice template %s \ No newline at end of file diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang index 4b28204fa4b..6d4967c00b6 100644 --- a/htdocs/langs/fr_FR/errors.lang +++ b/htdocs/langs/fr_FR/errors.lang @@ -9,7 +9,6 @@ ErrorBadMXDomain=L'email %s semble incorrect (domaine n'a pas d'enregistrement M ErrorBadUrl=L'URL '%s' est invalide ErrorBadValueForParamNotAString=Mauvaise valeur de paramètre. Ceci arrive lors d'une tentative de traduction d'une clé non renseignée. ErrorRefAlreadyExists=La référence %s existe déjà. -ErrorTitleAlreadyExists=Le titre %s existe déjà. ErrorLoginAlreadyExists=L'identifiant %s existe déjà. ErrorGroupAlreadyExists=Le groupe %s existe déjà. ErrorEmailAlreadyExists=L'e-mail %s existe déjà. diff --git a/htdocs/langs/fr_FR/suppliers.lang b/htdocs/langs/fr_FR/suppliers.lang index 92047c798ee..dd5402d66ae 100644 --- a/htdocs/langs/fr_FR/suppliers.lang +++ b/htdocs/langs/fr_FR/suppliers.lang @@ -46,11 +46,4 @@ ReputationForThisProduct=Réputation BuyerName=Nom de l'acheteur AllProductServicePrices=Tous les prix du produits / service AllProductReferencesOfSupplier=Toutes les références du fournisseur -BuyingPriceNumShort=Prix fournisseurs -RepeatableSupplierInvoice=Facture fournisseur modèle -RepeatableSupplierInvoices=Factures fournisseurs modèles -RepeatableSupplierInvoicesList=Factures fournisseurs modèles -RecurringSupplierInvoices=Factures fournisseurs récurrentes -ToCreateAPredefinedSupplierInvoice=Pour créer un modèle de facture fournisseur, créez une facture fournisseur standard puis, sans la valider, cliquez sur le bouton "%s". -GeneratedFromSupplierTemplate=Généré à partir du modèle de facture fournisseur %s -SupplierInvoiceGeneratedFromTemplate=Facture fournisseur %s générée depuis la facture fournisseur modèle récurrente %s \ No newline at end of file +BuyingPriceNumShort=Prix fournisseurs \ No newline at end of file From e4c1978e12efef49615d75320568da96f8bb31c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9=20Courtier?= Date: Wed, 9 Feb 2022 12:24:33 +0100 Subject: [PATCH 034/225] Change of SQL request when fetching CommandeFournisseurLigne --- htdocs/fourn/class/fournisseur.commande.class.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index dbb454ef800..1c9a86838b7 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -460,13 +460,17 @@ class CommandeFournisseur extends CommonOrder $sql .= " l.date_start, l.date_end,"; $sql .= ' l.fk_multicurrency, l.multicurrency_code, l.multicurrency_subprice, l.multicurrency_total_ht, l.multicurrency_total_tva, l.multicurrency_total_ttc'; if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) - $sql .= ", pfp.rowid as fk_pfp, pfp.packaging"; + $sql .= ", pfp.rowid as fk_pfp, pfp.packaging, MAX(pfp.quantity) as max_qty"; $sql .= " FROM ".MAIN_DB_PREFIX."commande_fournisseurdet as l"; $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON l.fk_product = p.rowid'; if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON l.fk_product = pfp.fk_product and l.ref = pfp.ref_fourn"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON l.fk_product = pfp.fk_product and l.ref = pfp.ref_fourn AND pfp.fk_soc = ".((int) $this->socid); $sql .= " WHERE l.fk_commande = ".$this->id; if ($only_product) $sql .= ' AND p.fk_product_type = 0'; + if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) { + $sql.= " AND l.qty >= pfp.quantity "; + $sql.= " GROUP BY l.rowid HAVING max_qty = MAX(pfp.quantity) "; + } $sql .= " ORDER BY l.rang, l.rowid"; //print $sql; @@ -3488,12 +3492,15 @@ class CommandeFournisseurLigne extends CommonOrderLine $sql .= ' cd.date_start, cd.date_end, cd.fk_unit,'; $sql .= ' cd.multicurrency_subprice, cd.multicurrency_total_ht, cd.multicurrency_total_tva, cd.multicurrency_total_ttc'; if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) - $sql .= ", pfp.rowid as fk_pfp, pfp.packaging"; + $sql .= ", pfp.rowid as fk_pfp, pfp.packaging, MAX(pfp.quantity) as max_qty"; $sql .= ' FROM '.MAIN_DB_PREFIX.'commande_fournisseurdet as cd'; $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON cd.fk_product = p.rowid'; if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON cd.fk_product = pfp.fk_product and cd.ref = pfp.ref_fourn"; $sql .= ' WHERE cd.rowid = '.$rowid; + if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) { + $sql .= " AND cd.qty >= pfp.quantity GROUP BY cd.rowid HAVING max_qty = MAX(pfp.quantity)"; + } $result = $this->db->query($sql); if ($result) { From 3653e8244b792e09755b10a01e83996f55a9880d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 Feb 2022 13:22:23 +0100 Subject: [PATCH 035/225] NEW Implement the generic method for Kaban views --- htdocs/core/class/commonobject.class.php | 13 +- .../tpl/extrafields_list_search_title.tpl.php | 3 + .../modulebuilder/template/myobject_list.php | 175 ++++++++----- .../recruitmentjobposition_list.php | 246 +++++++++++------- htdocs/theme/eldy/info-box.inc.php | 4 + htdocs/theme/md/info-box.inc.php | 4 + 6 files changed, 282 insertions(+), 163 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 35db7816738..2f8adb0225f 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -681,13 +681,20 @@ abstract class CommonObject */ public function getKanbanView($option = '') { - $return = '
    '; + $return = '
    '; $return .= '
    '; $return .= ''; - $return .= ''; // Can be image + $return .= img_picto('', $this->picto); + //$return .= ''; // Can be image $return .= ''; $return .= '
    '; - $return .= ''.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).''; + $return .= ''.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).''; + if (property_exists($this, 'label')) { + $return .= '
    '.$this->label.''; + } + if (method_exists($this, 'getLibStatut')) { + $return .= '
    '.$this->getLibStatut(5).'
    '; + } $return .= '
    '; $return .= '
    '; $return .= '
    '; diff --git a/htdocs/core/tpl/extrafields_list_search_title.tpl.php b/htdocs/core/tpl/extrafields_list_search_title.tpl.php index 0a61e51d33d..2283d111cbc 100644 --- a/htdocs/core/tpl/extrafields_list_search_title.tpl.php +++ b/htdocs/core/tpl/extrafields_list_search_title.tpl.php @@ -37,6 +37,9 @@ if (!empty($extrafieldsobjectkey)) { // $extrafieldsobject is the $object->table $tooltip = empty($extrafields->attributes[$extrafieldsobjectkey]['help'][$key]) ? '' : $extrafields->attributes[$extrafieldsobjectkey]['help'][$key]; print getTitleFieldOfList($extrafields->attributes[$extrafieldsobjectkey]['label'][$key], 0, $_SERVER["PHP_SELF"], $sortonfield, "", $param, ($align ? 'align="'.$align.'" data-titlekey="'.$key.'"' : 'data-titlekey="'.$key.'"'), $sortfield, $sortorder, '', $disablesortlink, $tooltip)."\n"; + if (isset($totalarray) && isset($totalarray['nbfield'])) { + $totalarray['nbfield']++; + } } } } diff --git a/htdocs/modulebuilder/template/myobject_list.php b/htdocs/modulebuilder/template/myobject_list.php index ced309b4eff..79e11006116 100644 --- a/htdocs/modulebuilder/template/myobject_list.php +++ b/htdocs/modulebuilder/template/myobject_list.php @@ -96,7 +96,8 @@ $cancel = GETPOST('cancel', 'alpha'); // We click on a Cancel button $toselect = GETPOST('toselect', 'array'); // Array of ids of elements selected into a list $contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'myobjectlist'; // To manage different context of search $backtopage = GETPOST('backtopage', 'alpha'); // Go back to a dedicated page -$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') +$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') +$mode = GETPOST('mode', 'aZ'); $id = GETPOST('id', 'int'); @@ -174,6 +175,7 @@ foreach ($object->fields as $key => $val) { include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; $object->fields = dol_sort_array($object->fields, 'position'); +//$arrayfields['anotherfield'] = array('type'=>'integer', 'label'=>'AnotherField', 'checked'=>1, 'enabled'=>1, 'position'=>90, 'csslist'=>'right'); $arrayfields = dol_sort_array($arrayfields, 'position'); $permissiontoread = $user->rights->mymodule->myobject->read; @@ -190,7 +192,7 @@ if ($user->socid > 0) accessforbidden(); //if ($user->socid > 0) accessforbidden(); //$socid = 0; 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); +//restrictedArea($user, $object->element, 0, $object->table_element, '', 'fk_soc', 'rowid', $isdraft); //if (empty($conf->mymodule->enabled)) accessforbidden(); //if (!$permissiontoread) accessforbidden(); @@ -274,7 +276,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); +//$sql .= ", COUNT(rc.rowid) as anotherfield"; $sql .= " FROM ".MAIN_DB_PREFIX.$object->table_element." as t"; +//$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."anothertable as rc ON rc.parent = t.rowid"; 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)"; } @@ -300,7 +304,7 @@ foreach ($search as $key => $val) { $mode_search = 2; } if ($search[$key] != '') { - $sql .= natural_search($key, $search[$key], (($key == 'status') ? 2 : $mode_search)); + $sql .= natural_search('t.'.$key, $search[$key], (($key == 'status') ? 2 : $mode_search)); } } else { if (preg_match('/(_dtstart|_dtend)$/', $key) && $search[$key] != '') { @@ -369,6 +373,7 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { $resql = $db->query($sqlforcount); $objforcount = $db->fetch_object($resql); $nbtotalofrecords = $objforcount->nbtotalofrecords; + if (($page * $limit) > $nbtotalofrecords) { // if total of record found is smaller than page * limit, goto and load page 0 $page = 0; $offset = 0; @@ -423,6 +428,9 @@ llxHeader('', $title, $help_url, '', 0, 0, $morejs, $morecss, '', ''); $arrayofselected = is_array($toselect) ? $toselect : array(); $param = ''; +if (!empty($mode)) { + $param .= '&mode='.urlencode($mode); +} if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) { $param .= '&contextpage='.urlencode($contextpage); } @@ -476,8 +484,14 @@ print ''; print ''; print ''; print ''; +print ''; -$newcardbutton = dolGetButtonTitle($langs->trans('New'), '', 'fa fa-plus-circle', dol_buildpath('/mymodule/myobject_card.php', 1).'?action=create&backtopage='.urlencode($_SERVER['PHP_SELF']), '', $permissiontoadd); + +$newcardbutton = ''; +$newcardbutton .= dolGetButtonTitle($langs->trans('ViewKanban'), '', 'fa fa-th-list imgforviewmode', $_SERVER["PHP_SELF"].'?mode=kanban'.preg_replace('/^&mode=[^&]+/', '', $param), '', ($mode == 'kanban' ? 2 : 1), array('morecss'=>'reposition')); +$newcardbutton .= dolGetButtonTitle($langs->trans('ViewList'), '', 'fa fa-list-alt imgforviewmode', $_SERVER["PHP_SELF"].'?mode=common'.preg_replace('/^&mode=[^&]+/', '', $param), '', ((empty($mode) || $mode == 'common') ? 2 : 1), array('morecss'=>'reposition')); +$newcardbutton .= dolGetButtonTitleSeparator(); +$newcardbutton .= dolGetButtonTitle($langs->trans('New'), '', 'fa fa-plus-circle', dol_buildpath('/mymodule/myobject_card.php', 1).'?action=create&backtopage='.urlencode($_SERVER['PHP_SELF']), '', $permissiontoadd); print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'object_'.$object->picto, 0, $newcardbutton, '', $limit, 0, 0, 1); @@ -566,6 +580,9 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php'; $parameters = array('arrayfields'=>$arrayfields); $reshook = $hookmanager->executeHooks('printFieldListOption', $parameters, $object); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; +/*if (!empty($arrayfields['anotherfield']['checked'])) { + print ''; +}*/ // Action column print ''; $searchpicto = $form->showFilterButtons(); @@ -573,6 +590,8 @@ print $searchpicto; print ''; print ''."\n"; +$totalarray = array(); +$totalarray['nbfield'] = 0; // Fields title label // -------------------------------------------------------------------- @@ -590,16 +609,22 @@ foreach ($object->fields as $key => $val) { } if (!empty($arrayfields['t.'.$key]['checked'])) { print getTitleFieldOfList($arrayfields['t.'.$key]['label'], 0, $_SERVER['PHP_SELF'], 't.'.$key, '', $param, ($cssforfield ? 'class="'.$cssforfield.'"' : ''), $sortfield, $sortorder, ($cssforfield ? $cssforfield.' ' : ''))."\n"; + $totalarray['nbfield']++; } } // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php'; // Hook fields -$parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$sortfield, 'sortorder'=>$sortorder); +$parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$sortfield, 'sortorder'=>$sortorder, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; +/*if (!empty($arrayfields['anotherfield']['checked'])) { + print ''.$langs->trans("AnotherField").''; + $totalarray['nbfield']++; +}*/ // Action column -print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ')."\n"; +print getTitleFieldOfList(($mode != 'kanban' ? $selectedfields : ''), 0, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ')."\n"; +$totalarray['nbfield']++; print ''."\n"; @@ -617,9 +642,10 @@ if (isset($extrafields->attributes[$object->table_element]['computed']) && is_ar // Loop on record // -------------------------------------------------------------------- $i = 0; -$totalarray = array(); +$savnbfield = $totalarray['nbfield']; $totalarray['nbfield'] = 0; -while ($i < ($limit ? min($num, $limit) : $num)) { +$imaxinloop = ($limit ? min($num, $limit) : $num); +while ($i < $imaxinloop) { $obj = $db->fetch_object($resql); if (empty($obj)) { break; // Should not happen @@ -628,75 +654,92 @@ while ($i < ($limit ? min($num, $limit) : $num)) { // Store properties in $object $object->setVarsFromFetchObj($obj); - // Show here line of result - print ''; - foreach ($object->fields as $key => $val) { - $cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']); - if (in_array($val['type'], array('date', 'datetime', 'timestamp'))) { - $cssforfield .= ($cssforfield ? ' ' : '').'center'; - } elseif ($key == 'status') { - $cssforfield .= ($cssforfield ? ' ' : '').'center'; + if ($mode == 'kanban') { + if ($i == 0) { + print ''; + print '
    '; } - - if (in_array($val['type'], array('timestamp'))) { - $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; - } elseif ($key == 'ref') { - $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; + // Output Kanban + print $object->getKanbanView(''); + if ($i == ($imaxinloop - 1)) { + print '
    '; + print ''; } - - if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && !in_array($key, array('rowid', 'status')) && empty($val['arrayofkeyval'])) { - $cssforfield .= ($cssforfield ? ' ' : '').'right'; - } - //if (in_array($key, array('fk_soc', 'fk_user', 'fk_warehouse'))) $cssforfield = 'tdoverflowmax100'; - - if (!empty($arrayfields['t.'.$key]['checked'])) { - print ''; - if ($key == 'status') { - print $object->getLibStatut(5); - } elseif ($key == 'rowid') { - print $object->showOutputField($val, $key, $object->id, ''); - } else { - print $object->showOutputField($val, $key, $object->$key, ''); + } else { + // Show here line of result + $j = 0; + print ''; + foreach ($object->fields as $key => $val) { + $cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']); + if (in_array($val['type'], array('date', 'datetime', 'timestamp'))) { + $cssforfield .= ($cssforfield ? ' ' : '').'center'; + } elseif ($key == 'status') { + $cssforfield .= ($cssforfield ? ' ' : '').'center'; } - print ''; - if (!$i) { - $totalarray['nbfield']++; + + if (in_array($val['type'], array('timestamp'))) { + $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; + } elseif ($key == 'ref') { + $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; } - if (!empty($val['isameasure']) && $val['isameasure'] == 1) { + + if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && !in_array($key, array('rowid', 'status')) && empty($val['arrayofkeyval'])) { + $cssforfield .= ($cssforfield ? ' ' : '').'right'; + } + //if (in_array($key, array('fk_soc', 'fk_user', 'fk_warehouse'))) $cssforfield = 'tdoverflowmax100'; + + if (!empty($arrayfields['t.'.$key]['checked'])) { + print ''; + if ($key == 'status') { + print $object->getLibStatut(5); + } elseif ($key == 'rowid') { + print $object->showOutputField($val, $key, $object->id, ''); + } else { + print $object->showOutputField($val, $key, $object->$key, ''); + } + print ''; if (!$i) { - $totalarray['pos'][$totalarray['nbfield']] = 't.'.$key; + $totalarray['nbfield']++; } - if (!isset($totalarray['val'])) { - $totalarray['val'] = array(); + if (!empty($val['isameasure']) && $val['isameasure'] == 1) { + if (!$i) { + $totalarray['pos'][$totalarray['nbfield']] = 't.'.$key; + } + if (!isset($totalarray['val'])) { + $totalarray['val'] = array(); + } + if (!isset($totalarray['val']['t.'.$key])) { + $totalarray['val']['t.'.$key] = 0; + } + $totalarray['val']['t.'.$key] += $object->$key; } - if (!isset($totalarray['val']['t.'.$key])) { - $totalarray['val']['t.'.$key] = 0; - } - $totalarray['val']['t.'.$key] += $object->$key; } } - } - // Extra fields - include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; - // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'object'=>$object, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); - $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - // Action column - print ''; - if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined - $selected = 0; - if (in_array($object->id, $arrayofselected)) { - $selected = 1; + // Extra fields + include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; + // Fields from hook + $parameters = array('arrayfields'=>$arrayfields, 'object'=>$object, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); + $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + /*if (!empty($arrayfields['anotherfield']['checked'])) { + print ''.$obj->anotherfield.''; + }*/ + // Action column + print ''; + if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($object->id, $arrayofselected)) { + $selected = 1; + } + print ''; + } + print ''; + if (!$i) { + $totalarray['nbfield']++; } - print ''; - } - print ''; - if (!$i) { - $totalarray['nbfield']++; - } - print ''."\n"; + print ''."\n"; + } $i++; } diff --git a/htdocs/recruitment/recruitmentjobposition_list.php b/htdocs/recruitment/recruitmentjobposition_list.php index f0935bc8798..907ed9e2be0 100644 --- a/htdocs/recruitment/recruitmentjobposition_list.php +++ b/htdocs/recruitment/recruitmentjobposition_list.php @@ -94,6 +94,7 @@ $toselect = GETPOST('toselect', 'array'); // Array of ids of elements selected $contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'recruitmentjobpositionlist'; // To manage different context of search $backtopage = GETPOST('backtopage', 'alpha'); // Go back to a dedicated page $optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') +$mode = GETPOST('mode', 'aZ'); $id = GETPOST('id', 'int'); @@ -132,12 +133,16 @@ if (!$sortorder) { } // Initialize array of search criterias -$search_all = GETPOST('search_all', 'alphanohtml') ? GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml'); +$search_all = GETPOST('search_all', 'alphanohtml'); $search = array(); foreach ($object->fields as $key => $val) { if (GETPOST('search_'.$key, 'alpha') !== '') { $search[$key] = GETPOST('search_'.$key, 'alpha'); } + if (preg_match('/^(date|timestamp|datetime)/', $val['type'])) { + $search[$key.'_dtstart'] = dol_mktime(0, 0, 0, GETPOST('search_'.$key.'_dtstartmonth', 'int'), GETPOST('search_'.$key.'_dtstartday', 'int'), GETPOST('search_'.$key.'_dtstartyear', 'int')); + $search[$key.'_dtend'] = dol_mktime(23, 59, 59, GETPOST('search_'.$key.'_dtendmonth', 'int'), GETPOST('search_'.$key.'_dtendday', 'int'), GETPOST('search_'.$key.'_dtendyear', 'int')); + } } // List of fields to search into when doing a "search in all" @@ -178,7 +183,7 @@ $permissiontodelete = $user->rights->recruitment->recruitmentjobposition->delete //if ($user->socid > 0) accessforbidden(); //if ($user->socid > 0) $socid = $user->socid; //$isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0); -$result = restrictedArea($user, 'recruitment', 0, 'recruitment_recruitmentjobposition', 'recruitmentjobposition'); +restrictedArea($user, 'recruitment', 0, 'recruitment_recruitmentjobposition', 'recruitmentjobposition'); @@ -208,8 +213,12 @@ if (empty($reshook)) { if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers foreach ($object->fields as $key => $val) { $search[$key] = ''; + if (preg_match('/^(date|timestamp|datetime)/', $val['type'])) { + $search[$key.'_dtstart'] = ''; + $search[$key.'_dtend'] = ''; + } } - $toselect = ''; + $toselect = array(); $search_array_options = array(); } if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha') @@ -237,6 +246,8 @@ $now = dol_now(); //$help_url="EN:Module_RecruitmentJobPosition|FR:Module_RecruitmentJobPosition_FR|ES:Módulo_RecruitmentJobPosition"; $help_url = ''; $title = $langs->trans('ListOfPositionsToBeFilled'); +$morejs = array(); +$morecss = array(); // Build and execute select @@ -283,7 +294,7 @@ foreach ($search as $key => $val) { $mode_search = 2; } if ($search[$key] != '') { - $sql .= natural_search($key, $search[$key], (($key == 'status') ? 2 : $mode_search)); + $sql .= natural_search('t.'.$key, $search[$key], (($key == 'status') ? 2 : $mode_search)); } } else { if (preg_match('/(_dtstart|_dtend)$/', $key) && $search[$key] != '') { @@ -323,39 +334,52 @@ if (!empty($extrafields->attributes[$object->table_element]['label'])) { } // Add where from hooks $parameters = array(); -$reshook = $hookmanager->executeHooks('printFieldListGroupBy', $parameters); // Note that $action and $object may have been modified by hook +$reshook = $hookmanager->executeHooks('printFieldListGroupBy', $parameters, $object); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; $sql = preg_replace('/,\s*$/', '', $sql); -$sql .= $db->order($sortfield, $sortorder); - // Count total nb of records $nbtotalofrecords = ''; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { + /* This old and fast method to get and count full list returns all record so use a high amount of memory. */ $resql = $db->query($sql); $nbtotalofrecords = $db->num_rows($resql); + /* The slow method does not consume memory on mysql (not tested on pgsql) */ + /*$resql = $db->query($sql, 0, 'auto', 1); + while ($db->fetch_object($resql)) { + $nbtotalofrecords++; + }*/ + /* The fast and low memory method to get and count full list converts the sql into a sql count */ + /* + $sqlforcount = preg_replace('/^SELECT[a-z0-9\._\s\(\),]+FROM/i', 'SELECT COUNT(*) as nbtotalofrecords FROM', $sql); + print $sqlforcount; + $resql = $db->query($sqlforcount); + $objforcount = $db->fetch_object($resql); + $nbtotalofrecords = $objforcount->nbtotalofrecords; + */ + if (($page * $limit) > $nbtotalofrecords) { // if total of record found is smaller than page * limit, 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 ($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 && !$page) { $obj = $db->fetch_object($resql); @@ -368,11 +392,14 @@ if ($num == 1 && !empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $ // Output page // -------------------------------------------------------------------- -llxHeader('', $title, $help_url); +llxHeader('', $title, $help_url, '', 0, 0, $morejs, $morecss, '', ''); $arrayofselected = is_array($toselect) ? $toselect : array(); $param = ''; +if (!empty($mode)) { + $param .= '&mode='.urlencode($mode); +} if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) { $param .= '&contextpage='.urlencode($contextpage); } @@ -382,9 +409,11 @@ if ($limit > 0 && $limit != $conf->liste_limit) { foreach ($search as $key => $val) { if (is_array($search[$key]) && count($search[$key])) { foreach ($search[$key] as $skey) { - $param .= '&search_'.$key.'[]='.urlencode($skey); + if ($skey != '') { + $param .= '&search_'.$key.'[]='.urlencode($skey); + } } - } else { + } elseif ($search[$key] != '') { $param .= '&search_'.$key.'='.urlencode($search[$key]); } } @@ -424,8 +453,13 @@ print ''; print ''; //print ''; print ''; +print ''; -$newcardbutton = dolGetButtonTitle($langs->trans('New'), '', 'fa fa-plus-circle', dol_buildpath('/recruitment/recruitmentjobposition_card.php', 1).'?action=create&backtopage='.urlencode($_SERVER['PHP_SELF']), '', $permissiontoadd); +$newcardbutton = ''; +$newcardbutton .= dolGetButtonTitle($langs->trans('ViewKanban'), '', 'fa fa-th-list imgforviewmode', $_SERVER["PHP_SELF"].'?mode=kanban'.preg_replace('/^&mode=[^&]+/', '', $param), '', ($mode == 'kanban' ? 2 : 1), array('morecss'=>'reposition')); +$newcardbutton .= dolGetButtonTitle($langs->trans('ViewList'), '', 'fa fa-list-alt imgforviewmode', $_SERVER["PHP_SELF"].'?mode=common'.preg_replace('/^&mode=[^&]+/', '', $param), '', ((empty($mode) || $mode == 'common') ? 2 : 1), array('morecss'=>'reposition')); +$newcardbutton .= dolGetButtonTitleSeparator(); +$newcardbutton .= dolGetButtonTitle($langs->trans('New'), '', 'fa fa-plus-circle', dol_buildpath('/recruitment/recruitmentjobposition_card.php', 1).'?action=create&backtopage='.urlencode($_SERVER['PHP_SELF']), '', $permissiontoadd); print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'object_'.$object->picto, 0, $newcardbutton, '', $limit, 0, 0, 1); @@ -490,8 +524,6 @@ foreach ($object->fields as $key => $val) { print $form->selectarray('search_'.$key, $val['arrayofkeyval'], (isset($search[$key]) ? $search[$key] : ''), $val['notnull'], 0, 0, '', 1, 0, 0, '', 'maxwidth100', 1); } elseif ((strpos($val['type'], 'integer:') === 0) || (strpos($val['type'], 'sellist:') === 0)) { print $object->showInputField($val, $key, (isset($search[$key]) ? $search[$key] : ''), '', '', 'search_', 'maxwidth125', 1); - } elseif (!preg_match('/^(date|timestamp|datetime)/', $val['type'])) { - print ''; } elseif (preg_match('/^(date|timestamp|datetime)/', $val['type'])) { print '
    '; print $form->selectDate($search[$key.'_dtstart'] ? $search[$key.'_dtstart'] : '', "search_".$key."_dtstart", 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('From')); @@ -499,6 +531,12 @@ foreach ($object->fields as $key => $val) { print '
    '; print $form->selectDate($search[$key.'_dtend'] ? $search[$key.'_dtend'] : '', "search_".$key."_dtend", 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('to')); print '
    '; + } elseif ($key == 'lang') { + require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php'; + $formadmin = new FormAdmin($db); + print $formadmin->select_language($search[$key], 'search_lang', 0, null, 1, 0, 0, 'minwidth150 maxwidth200', 2); + } else { + print ''; } print ''; } @@ -520,6 +558,8 @@ print $searchpicto; print ''; print ''."\n"; +$totalarray = array(); +$totalarray['nbfield'] = 0; // Fields title label // -------------------------------------------------------------------- @@ -537,19 +577,22 @@ foreach ($object->fields as $key => $val) { } if (!empty($arrayfields['t.'.$key]['checked'])) { print getTitleFieldOfList($arrayfields['t.'.$key]['label'], 0, $_SERVER['PHP_SELF'], 't.'.$key, '', $param, ($cssforfield ? 'class="'.$cssforfield.'"' : ''), $sortfield, $sortorder, ($cssforfield ? $cssforfield.' ' : ''))."\n"; + $totalarray['nbfield']++; } } // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php'; // Hook fields -$parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$sortfield, 'sortorder'=>$sortorder); +$parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$sortfield, 'sortorder'=>$sortorder, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; if (!empty($arrayfields['nbapplications']['checked'])) { - print ''.$langs->trans("Applications").''; + print ''.$langs->trans("Applications").''; + $totalarray['nbfield']++; } // Action column -print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ')."\n"; +print getTitleFieldOfList(($mode != 'kanban' ? $selectedfields : ''), 0, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ')."\n"; +$totalarray['nbfield']++; print ''."\n"; @@ -567,9 +610,10 @@ if (isset($extrafields->attributes[$object->table_element]['computed']) && is_ar // Loop on record // -------------------------------------------------------------------- $i = 0; -$totalarray = array(); +$savnbfield = $totalarray['nbfield']; $totalarray['nbfield'] = 0; -while ($i < ($limit ? min($num, $limit) : $num)) { +$imaxinloop = ($limit ? min($num, $limit) : $num); +while ($i < $imaxinloop) { $obj = $db->fetch_object($resql); if (empty($obj)) { break; // Should not happen @@ -578,78 +622,92 @@ while ($i < ($limit ? min($num, $limit) : $num)) { // Store properties in $object $object->setVarsFromFetchObj($obj); - // Show here line of result - print ''; - foreach ($object->fields as $key => $val) { - $cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']); - if (in_array($val['type'], array('date', 'datetime', 'timestamp'))) { - $cssforfield .= ($cssforfield ? ' ' : '').'center'; - } elseif ($key == 'status') { - $cssforfield .= ($cssforfield ? ' ' : '').'center'; + if ($mode == 'kanban') { + if ($i == 0) { + print ''; + print '
    '; } - - if (in_array($val['type'], array('timestamp'))) { - $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; - } elseif ($key == 'ref') { - $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; + // Output Kanban + print $object->getKanbanView(''); + if ($i == ($imaxinloop - 1)) { + print '
    '; + print ''; } - - if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && !in_array($key, array('rowid', 'status')) && empty($val['arrayofkeyval'])) { - $cssforfield .= ($cssforfield ? ' ' : '').'right'; - } - //if (in_array($key, array('fk_soc', 'fk_user', 'fk_warehouse'))) $cssforfield = 'tdoverflowmax100'; - - if (!empty($arrayfields['t.'.$key]['checked'])) { - print ''; - if ($key == 'status') { - print $object->getLibStatut(5); - } elseif ($key == 'rowid') { - print $object->showOutputField($val, $key, $object->id, ''); - } else { - print $object->showOutputField($val, $key, $object->$key, ''); + } else { + // Show here line of result + $j = 0; + print ''; + foreach ($object->fields as $key => $val) { + $cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']); + if (in_array($val['type'], array('date', 'datetime', 'timestamp'))) { + $cssforfield .= ($cssforfield ? ' ' : '').'center'; + } elseif ($key == 'status') { + $cssforfield .= ($cssforfield ? ' ' : '').'center'; } - print ''; - if (!$i) { - $totalarray['nbfield']++; + + if (in_array($val['type'], array('timestamp'))) { + $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; + } elseif ($key == 'ref') { + $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; } - if (!empty($val['isameasure']) && $val['isameasure'] == 1) { + + if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && !in_array($key, array('rowid', 'status')) && empty($val['arrayofkeyval'])) { + $cssforfield .= ($cssforfield ? ' ' : '').'right'; + } + //if (in_array($key, array('fk_soc', 'fk_user', 'fk_warehouse'))) $cssforfield = 'tdoverflowmax100'; + + if (!empty($arrayfields['t.'.$key]['checked'])) { + print ''; + if ($key == 'status') { + print $object->getLibStatut(5); + } elseif ($key == 'rowid') { + print $object->showOutputField($val, $key, $object->id, ''); + } else { + print $object->showOutputField($val, $key, $object->$key, ''); + } + print ''; if (!$i) { - $totalarray['pos'][$totalarray['nbfield']] = 't.'.$key; + $totalarray['nbfield']++; } - if (!isset($totalarray['val'])) { - $totalarray['val'] = array(); + if (!empty($val['isameasure']) && $val['isameasure'] == 1) { + if (!$i) { + $totalarray['pos'][$totalarray['nbfield']] = 't.'.$key; + } + if (!isset($totalarray['val'])) { + $totalarray['val'] = array(); + } + if (!isset($totalarray['val']['t.'.$key])) { + $totalarray['val']['t.'.$key] = 0; + } + $totalarray['val']['t.'.$key] += $object->$key; } - if (!isset($totalarray['val']['t.'.$key])) { - $totalarray['val']['t.'.$key] = 0; - } - $totalarray['val']['t.'.$key] += $object->$key; } } - } - // Extra fields - include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; - // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'object'=>$object, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); - $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - if (!empty($arrayfields['nbapplications']['checked'])) { - print ''.$obj->nbapplications.''; - } - // Action column - print ''; - if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined - $selected = 0; - if (in_array($object->id, $arrayofselected)) { - $selected = 1; + // Extra fields + include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; + // Fields from hook + $parameters = array('arrayfields'=>$arrayfields, 'object'=>$object, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); + $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + if (!empty($arrayfields['nbapplications']['checked'])) { + print ''.$obj->nbapplications.''; + } + // Action column + print ''; + if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($object->id, $arrayofselected)) { + $selected = 1; + } + print ''; + } + print ''; + if (!$i) { + $totalarray['nbfield']++; } - print ''; - } - print ''; - if (!$i) { - $totalarray['nbfield']++; - } - print ''."\n"; + print ''."\n"; + } $i++; } @@ -665,7 +723,7 @@ if ($num == 0) { $colspan++; } } - print ''.$langs->trans("NoRecordFound").''; + print ''.$langs->trans("NoRecordFound").''; } diff --git a/htdocs/theme/eldy/info-box.inc.php b/htdocs/theme/eldy/info-box.inc.php index 716ca7eac27..8e4df027809 100644 --- a/htdocs/theme/eldy/info-box.inc.php +++ b/htdocs/theme/eldy/info-box.inc.php @@ -437,6 +437,10 @@ if (GETPOSTISSET('THEME_SATURATE_RATIO')) { /*justify-content: space-between;*/ } +.box-flex-grow-zero{ + flex-grow: 0 !important; +} + .box-flex-item{ flex-grow : 1; flex-shrink: 1; diff --git a/htdocs/theme/md/info-box.inc.php b/htdocs/theme/md/info-box.inc.php index 33dde512fc0..1ea21ac44d1 100644 --- a/htdocs/theme/md/info-box.inc.php +++ b/htdocs/theme/md/info-box.inc.php @@ -470,6 +470,10 @@ if (GETPOSTISSET('THEME_SATURATE_RATIO')) { /*justify-content: space-between;*/ } +.box-flex-grow-zero{ + flex-grow: 0 !important; +} + .box-flex-item{ flex-grow : 1; flex-shrink: 1; From 7c78934d08b2eba79efe6c79e1b82ed80dd2fd55 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 Feb 2022 13:22:38 +0100 Subject: [PATCH 036/225] FIX rtl languages --- htdocs/theme/eldy/btn.inc.php | 4 ++-- htdocs/theme/eldy/global.inc.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/theme/eldy/btn.inc.php b/htdocs/theme/eldy/btn.inc.php index d5a3f51e125..45ed3889a13 100644 --- a/htdocs/theme/eldy/btn.inc.php +++ b/htdocs/theme/eldy/btn.inc.php @@ -278,8 +278,8 @@ a.btnTitle.btnTitleSelected { display: block; } -div.pagination li:first-child a.btnTitle{ - margin-left: 10px; +div.pagination li:first-child a.btnTitle, div.pagination li.paginationafterarrows a.btnTitle { + margin-: 10px; } .button-title-separator{ diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 7a6df8e8beb..3d750cbcc38 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -3713,7 +3713,7 @@ div.refidno form { } div.pagination { - float: right; + float: ; } div.pagination a { font-weight: normal; From 7055d326e4a5e481bb67c976629d523640f8d1b5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 Feb 2022 13:22:38 +0100 Subject: [PATCH 037/225] FIX rtl languages --- htdocs/theme/eldy/btn.inc.php | 4 ++-- htdocs/theme/eldy/global.inc.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/theme/eldy/btn.inc.php b/htdocs/theme/eldy/btn.inc.php index af8f26b9a24..f639fb9eea1 100644 --- a/htdocs/theme/eldy/btn.inc.php +++ b/htdocs/theme/eldy/btn.inc.php @@ -281,8 +281,8 @@ a.btnTitle.btnTitleSelected { display: block; } -div.pagination li:first-child a.btnTitle{ - margin-left: 10px; +div.pagination li:first-child a.btnTitle, div.pagination li.paginationafterarrows a.btnTitle { + margin-: 10px; } .button-title-separator{ diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index f25efc97168..e1532b338b6 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -3713,7 +3713,7 @@ div.refidno form { } div.pagination { - float: right; + float: ; } div.pagination a { font-weight: normal; From 47800aebfac28d632c5a95fa70b6d6e572a58858 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 Feb 2022 15:21:25 +0100 Subject: [PATCH 038/225] Fix phpunit and mode save after opening a ref --- htdocs/core/lib/functions.lib.php | 12 ++++++++---- htdocs/main.inc.php | 19 ++++++++++++++----- .../modulebuilder/template/myobject_list.php | 6 +++--- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 4439a38509b..0c7bb3f08dc 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -353,12 +353,14 @@ function GETPOSTISSET($paramname) } } } - // If there is saved contextpage, page or limit + // If there is saved contextpage, limit, page or mode if ($paramname == 'contextpage' && !empty($_SESSION['lastsearch_contextpage_'.$relativepathstring])) { $isset = true; + } elseif ($paramname == 'limit' && !empty($_SESSION['lastsearch_limit_'.$relativepathstring])) { + $isset = true; } elseif ($paramname == 'page' && !empty($_SESSION['lastsearch_page_'.$relativepathstring])) { $isset = true; - } elseif ($paramname == 'limit' && !empty($_SESSION['lastsearch_limit_'.$relativepathstring])) { + } elseif ($paramname == 'mode' && !empty($_SESSION['lastsearch_mode_'.$relativepathstring])) { $isset = true; } } else { @@ -448,10 +450,12 @@ function GETPOST($paramname, $check = 'alphanohtml', $method = 0, $filter = null // If there is saved contextpage, page or limit if ($paramname == 'contextpage' && !empty($_SESSION['lastsearch_contextpage_'.$relativepathstring])) { $out = $_SESSION['lastsearch_contextpage_'.$relativepathstring]; - } elseif ($paramname == 'page' && !empty($_SESSION['lastsearch_page_'.$relativepathstring])) { - $out = $_SESSION['lastsearch_page_'.$relativepathstring]; } elseif ($paramname == 'limit' && !empty($_SESSION['lastsearch_limit_'.$relativepathstring])) { $out = $_SESSION['lastsearch_limit_'.$relativepathstring]; + } elseif ($paramname == 'page' && !empty($_SESSION['lastsearch_page_'.$relativepathstring])) { + $out = $_SESSION['lastsearch_page_'.$relativepathstring]; + } elseif ($paramname == 'mode' && !empty($_SESSION['lastsearch_mode_'.$relativepathstring])) { + $out = $_SESSION['lastsearch_mode_'.$relativepathstring]; } } elseif (!isset($_GET['sortfield'])) { // Else, retrieve default values if we are not doing a sort diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 0547eba7782..2d977e5a288 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -934,7 +934,7 @@ if (!defined('NOLOGIN')) { $relativepathstring = preg_replace('/^custom\//', '', $relativepathstring); //var_dump($relativepathstring); - // We click on a link that leave a page we have to save search criteria, contextpage, limit and page. We save them from tmp to no tmp + // We click on a link that leave a page we have to save search criteria, contextpage, limit and page and mode. We save them from tmp to no tmp if (!empty($_SESSION['lastsearch_values_tmp_'.$relativepathstring])) { $_SESSION['lastsearch_values_'.$relativepathstring] = $_SESSION['lastsearch_values_tmp_'.$relativepathstring]; unset($_SESSION['lastsearch_values_tmp_'.$relativepathstring]); @@ -943,13 +943,17 @@ if (!defined('NOLOGIN')) { $_SESSION['lastsearch_contextpage_'.$relativepathstring] = $_SESSION['lastsearch_contextpage_tmp_'.$relativepathstring]; unset($_SESSION['lastsearch_contextpage_tmp_'.$relativepathstring]); } + if (!empty($_SESSION['lastsearch_limit_tmp_'.$relativepathstring]) && $_SESSION['lastsearch_limit_tmp_'.$relativepathstring] != $conf->liste_limit) { + $_SESSION['lastsearch_limit_'.$relativepathstring] = $_SESSION['lastsearch_limit_tmp_'.$relativepathstring]; + unset($_SESSION['lastsearch_limit_tmp_'.$relativepathstring]); + } if (!empty($_SESSION['lastsearch_page_tmp_'.$relativepathstring]) && $_SESSION['lastsearch_page_tmp_'.$relativepathstring] > 0) { $_SESSION['lastsearch_page_'.$relativepathstring] = $_SESSION['lastsearch_page_tmp_'.$relativepathstring]; unset($_SESSION['lastsearch_page_tmp_'.$relativepathstring]); } - if (!empty($_SESSION['lastsearch_limit_tmp_'.$relativepathstring]) && $_SESSION['lastsearch_limit_tmp_'.$relativepathstring] != $conf->liste_limit) { - $_SESSION['lastsearch_limit_'.$relativepathstring] = $_SESSION['lastsearch_limit_tmp_'.$relativepathstring]; - unset($_SESSION['lastsearch_limit_tmp_'.$relativepathstring]); + if (!empty($_SESSION['lastsearch_mode_tmp_'.$relativepathstring])) { + $_SESSION['lastsearch_mode_'.$relativepathstring] = $_SESSION['lastsearch_mode_tmp_'.$relativepathstring]; + unset($_SESSION['lastsearch_mode_tmp_'.$relativepathstring]); } } @@ -3110,7 +3114,7 @@ if (!function_exists("llxFooter")) { { global $conf, $db, $langs, $user, $mysoc, $object, $hookmanager; global $delayedhtmlcontent; - global $contextpage, $page, $limit; + global $contextpage, $page, $limit, $mode; global $dolibarr_distrib; $ext = 'layout='.$conf->browser->layout.'&version='.urlencode(DOL_VERSION); @@ -3150,6 +3154,7 @@ if (!function_exists("llxFooter")) { unset($_SESSION['lastsearch_contextpage_tmp_'.$relativepathstring]); unset($_SESSION['lastsearch_page_tmp_'.$relativepathstring]); unset($_SESSION['lastsearch_limit_tmp_'.$relativepathstring]); + unset($_SESSION['lastsearch_mode_tmp_'.$relativepathstring]); if (!empty($contextpage)) { $_SESSION['lastsearch_contextpage_tmp_'.$relativepathstring] = $contextpage; @@ -3160,10 +3165,14 @@ if (!function_exists("llxFooter")) { if (!empty($limit) && $limit != $conf->liste_limit) { $_SESSION['lastsearch_limit_tmp_'.$relativepathstring] = $limit; } + if (!empty($mode)) { + $_SESSION['lastsearch_mode_tmp_'.$relativepathstring] = $mode; + } unset($_SESSION['lastsearch_contextpage_'.$relativepathstring]); unset($_SESSION['lastsearch_page_'.$relativepathstring]); unset($_SESSION['lastsearch_limit_'.$relativepathstring]); + unset($_SESSION['lastsearch_mode_'.$relativepathstring]); } // Core error message diff --git a/htdocs/modulebuilder/template/myobject_list.php b/htdocs/modulebuilder/template/myobject_list.php index 79e11006116..f45072bc607 100644 --- a/htdocs/modulebuilder/template/myobject_list.php +++ b/htdocs/modulebuilder/template/myobject_list.php @@ -304,17 +304,17 @@ foreach ($search as $key => $val) { $mode_search = 2; } if ($search[$key] != '') { - $sql .= natural_search('t.'.$key, $search[$key], (($key == 'status') ? 2 : $mode_search)); + $sql .= natural_search("t.".$db->escape($key), $search[$key], (($key == 'status') ? 2 : $mode_search)); } } else { if (preg_match('/(_dtstart|_dtend)$/', $key) && $search[$key] != '') { $columnName = preg_replace('/(_dtstart|_dtend)$/', '', $key); if (preg_match('/^(date|timestamp|datetime)/', $object->fields[$columnName]['type'])) { if (preg_match('/_dtstart$/', $key)) { - $sql .= " AND t.".$columnName." >= '".$db->idate($search[$key])."'"; + $sql .= " AND t.".$db->escape($columnName)." >= '".$db->idate($search[$key])."'"; } if (preg_match('/_dtend$/', $key)) { - $sql .= " AND t." . $columnName . " <= '" . $db->idate($search[$key]) . "'"; + $sql .= " AND t.".$db->escape($columnName)." <= '" . $db->idate($search[$key])."'"; } } } From 558db1b935bd5dc632deb5539f57ce12c8fdad15 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 Feb 2022 15:29:21 +0100 Subject: [PATCH 039/225] Fix #yogosha8845 --- htdocs/core/lib/geturl.lib.php | 2 +- htdocs/paypal/lib/paypal.lib.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/geturl.lib.php b/htdocs/core/lib/geturl.lib.php index 3eb8448fcde..8d992250cbb 100644 --- a/htdocs/core/lib/geturl.lib.php +++ b/htdocs/core/lib/geturl.lib.php @@ -87,7 +87,7 @@ function getURLContent($url, $postorget = 'GET', $param = '', $followlocation = // Turning off the server and peer verification(TrustManager Concept). curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, ($ssl_verifypeer ? true : false)); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, ($ssl_verifypeer ? true : false)); // Restrict use to some protocols only $protocols = 0; diff --git a/htdocs/paypal/lib/paypal.lib.php b/htdocs/paypal/lib/paypal.lib.php index 01f8ea2c72f..79003956f12 100644 --- a/htdocs/paypal/lib/paypal.lib.php +++ b/htdocs/paypal/lib/paypal.lib.php @@ -511,7 +511,7 @@ function hash_call($methodName, $nvpStr) //turning off the server and peer verification(TrustManager Concept). curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, ($ssl_verifypeer ? true : false)); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, ($ssl_verifypeer ? true : false)); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, empty($conf->global->MAIN_USE_CONNECT_TIMEOUT) ? 5 : $conf->global->MAIN_USE_CONNECT_TIMEOUT); curl_setopt($ch, CURLOPT_TIMEOUT, empty($conf->global->MAIN_USE_RESPONSE_TIMEOUT) ? 30 : $conf->global->MAIN_USE_RESPONSE_TIMEOUT); From 9e667e015597258eb2003ed067b0956017281431 Mon Sep 17 00:00:00 2001 From: Quentin VIAL-GOUTEYRON Date: Wed, 9 Feb 2022 15:55:21 +0100 Subject: [PATCH 040/225] NEW Needed nets bom --- htdocs/bom/bom_net_needs.php | 354 +++++++++++++++++++++++++++++++++ htdocs/bom/class/bom.class.php | 55 +++++ htdocs/bom/lib/bom.lib.php | 5 + htdocs/langs/en_US/mrp.lang | 3 + 4 files changed, 417 insertions(+) create mode 100644 htdocs/bom/bom_net_needs.php diff --git a/htdocs/bom/bom_net_needs.php b/htdocs/bom/bom_net_needs.php new file mode 100644 index 00000000000..399aa8aa739 --- /dev/null +++ b/htdocs/bom/bom_net_needs.php @@ -0,0 +1,354 @@ + + * Copyright (C) 2019 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** + * \file htdocs/bom/bom_net_needs.php + * \ingroup bom + * \brief Page to create/edit/view bom + */ + +// Load Dolibarr environment +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; +require_once DOL_DOCUMENT_ROOT.'/bom/class/bom.class.php'; +require_once DOL_DOCUMENT_ROOT.'/bom/lib/bom.lib.php'; + +// Load translation files required by the page +$langs->loadLangs(array("mrp", "other")); + +// Get parameters +$id = GETPOST('id', 'int'); +$ref = GETPOST('ref', 'alpha'); +$action = GETPOST('action', 'aZ09'); +$confirm = GETPOST('confirm', 'alpha'); +$cancel = GETPOST('cancel', 'aZ09'); +$contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'bomnet_needs'; // To manage different context of search +$backtopage = GETPOST('backtopage', 'alpha'); + + + +// Initialize technical objects +$object = new BOM($db); +$extrafields = new ExtraFields($db); +$diroutputmassaction = $conf->bom->dir_output.'/temp/massgeneration/'.$user->id; +$hookmanager->initHooks(array('bomnetneeds')); // Note that conf->hooks_modules contains array +// Fetch optionals attributes and labels +$extrafields->fetch_name_optionals_label($object->table_element); +$search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_'); + +// Initialize array of search criterias +$search_all = GETPOST("search_all", 'alpha'); +$search = array(); +foreach ($object->fields as $key => $val) { + if (GETPOST('search_'.$key, 'alpha')) { + $search[$key] = GETPOST('search_'.$key, 'alpha'); + } +} + +if (empty($action) && empty($id) && empty($ref)) { + $action = 'view'; +} + +// Load object +include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once. +if ($object->id > 0) { + $object->calculateCosts(); +} + + + +// Security check - Protection if external user +//if ($user->socid > 0) accessforbidden(); +//if ($user->socid > 0) $socid = $user->socid; +$isdraft = (($object->status == $object::STATUS_DRAFT) ? 1 : 0); +$result = restrictedArea($user, 'bom', $object->id, 'bom_bom', '', '', 'rowid', $isdraft); + +$permissionnote = $user->rights->bom->write; // Used by the include of actions_setnotes.inc.php +$permissiondellink = $user->rights->bom->write; // Used by the include of actions_dellink.inc.php +$permissiontoadd = $user->rights->bom->write; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php +$permissiontodelete = $user->rights->bom->delete || ($permissiontoadd && isset($object->status) && $object->status == $object::STATUS_DRAFT); +$upload_dir = $conf->bom->multidir_output[isset($object->entity) ? $object->entity : 1]; + + +/* + * Actions + */ + +$parameters = array(); +$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks +if ($reshook < 0) { + setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); +} + +if (empty($reshook)) { + $error = 0; + + $backurlforlist = DOL_URL_ROOT.'/bom/bom_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.'/bom/bom_net_needs.php?id='.($id > 0 ? $id : '__ID__'); + } + } + } + if($action == 'treeview') $object->getNetNeedsTree($TChildBom,1); + else $object->getNetNeeds($TChildBom, 1); + +} + + +/* + * View + */ + +$form = new Form($db); +$formfile = new FormFile($db); + + +$title = $langs->trans('BOM'); +$help_url ='EN:Module_BOM'; +llxHeader('', $title, $help_url); + + +// Part to edit record +if (($id || $ref) && $action == 'edit') { + print load_fiche_titre($langs->trans("BillOfMaterials"), '', 'cubes'); + + print '
    '; + print ''; + print ''; + print ''; + print ''; + + print dol_get_fiche_head(); + + //$object->fields['keyfield']['disabled'] = 1; + + print ''."\n"; + + // Common attributes + include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_edit.tpl.php'; + + // Other attributes + include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_edit.tpl.php'; + + print '
    '; + + print dol_get_fiche_end(); + + print $form->buttonsSaveCancel("Create"); + + print '
    '; +} + +// Part to show record +if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'create'))) { + $head = bomPrepareHead($object); + print dol_get_fiche_head($head, 'net_needs', $langs->trans("BillOfMaterials"), -1, 'bom'); + + $formconfirm = ''; + + // Call Hook formConfirm + $parameters = array('formConfirm' => $formconfirm, 'lineid' => $lineid); + $reshook = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified by hook + if (empty($reshook)) { + $formconfirm .= $hookmanager->resPrint; + } elseif ($reshook > 0) { + $formconfirm = $hookmanager->resPrint; + } + + // Print form confirm + print $formconfirm; + + + // Object card + // ------------------------------------------------------------ + $linkback = ''.$langs->trans("BackToList").''; + + $morehtmlref = '
    '; + + $morehtmlref .= '
    '; + + + dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref); + + + print '
    '; + print '
    '; + print '
    '; + print ''."\n"; + + // Common attributes + $keyforbreak = 'duration'; + include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_view.tpl.php'; + + print ''; + print ''; + + // Other attributes + include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_view.tpl.php'; + + print '
    '.$form->textwithpicto($langs->trans("TotalCost"), $langs->trans("BOMTotalCost")).''.price($object->total_cost).'
    '.$langs->trans("UnitCost").''.price($object->unit_cost).'
    '; + print '
    '; + print '
    '; + + print '
    '; + + print dol_get_fiche_end(); + + + + /* + * Lines + */ + print ''; + print "\n"; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + if(! empty($TChildBom)) { + if($action == 'treeview') { + foreach($TChildBom as $fk_bom => $TProduct) { + $repeatChar = ' '; + if(! empty($TProduct['bom'])) { + if($TProduct['parentid'] != $object->id) print ''; + else print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + } + if(! empty($TProduct['product'])) { + foreach($TProduct['product'] as $fk_product => $TInfos) { + $prod = new Product($db); + $prod->fetch($fk_product); + $prod->load_virtual_stock(); + if(empty($prod->stock_reel)) $prod->stock_reel = 0; + if($fk_bom != $object->id) print ''; + else print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + } + } + } + } + else { + foreach($TChildBom as $fk_product => $qty) { + $prod = new Product($db); + $prod->fetch($fk_product); + $prod->load_virtual_stock(); + if(empty($prod->stock_reel)) $prod->stock_reel = 0; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + } + } + } + print ''; + print '
    '.$langs->trans('Product'); + if(! empty($conf->global->BOM_SUB_BOM) && $action == 'treeview') { + print '   '.img_picto('', 'folder-open', 'class="paddingright"').$langs->trans("ExpandAll").'  '; + print ''.img_picto('', 'folder', 'class="paddingright"').$langs->trans("UndoExpandAll").' '; + } + print ''.$langs->trans('Quantity').''.$langs->trans('PhysicalStock').''.$langs->trans('VirtualStock').'
    '.str_repeat($repeatChar, $TProduct['level']).$TProduct['bom']->getNomUrl(1); + print ' '; + print img_picto('', 'folder-open'); + print ''; + print ''.$TProduct['qty'].'
    '.str_repeat($repeatChar, $TInfos['level']).$prod->getNomUrl(1).''.$TInfos['qty'].''.$prod->stock_reel.''.$prod->stock_theorique.'
    '.$prod->getNomUrl(1).''.$qty.''.$prod->stock_reel.''.$prod->stock_theorique.'
    '; + + + + /* + * ButAction + */ + print '
    '."\n"; + $parameters = array(); + $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook + if($reshook < 0) { + setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); + } + + if(empty($reshook)) { + if($action != 'treeview') print ''.$langs->trans("DisplayInTreeStructure").''."\n"; + else print ''.$langs->trans("BackToStandardView").''."\n"; + } + + print '
    '; + + + ?> + + + + close(); diff --git a/htdocs/bom/class/bom.class.php b/htdocs/bom/class/bom.class.php index 5f732c47300..7acc2749fad 100644 --- a/htdocs/bom/class/bom.class.php +++ b/htdocs/bom/class/bom.class.php @@ -1085,6 +1085,7 @@ class BOM extends CommonObject $res = $bom_child->fetch($line->fk_bom_child); if ($res>0) { $bom_child->calculateCosts(); + $line->childBom[] = $bom_child; $this->total_cost += $bom_child->total_cost; } else { $this->error = $bom_child->error; @@ -1101,6 +1102,55 @@ class BOM extends CommonObject } } } + + /** + * Get Net needs by product + * + * @param array $TNetNeeds + * @param int $qty + * @return void + */ + public function getNetNeeds(&$TNetNeeds = array(), $qty = 0) { + if(! empty($this->lines)) { + foreach($this->lines as $line) { + if(! empty($line->childBom)) { + foreach($line->childBom as $childBom) $childBom->getNetNeeds($TNetNeeds, $line->qty*$qty); + } + else { + $TNetNeeds[$line->fk_product] += $line->qty*$qty; + } + } + } + } + + /** + * Get Net needs Tree by product or bom + * + * @param array $TNetNeeds + * @param int $qty + * @param int $level + * @return void + */ + public function getNetNeedsTree(&$TNetNeeds = array(), $qty = 0, $level = 0) { + if(! empty($this->lines)) { + foreach($this->lines as $line) { + if(! empty($line->childBom)) { + foreach($line->childBom as $childBom) { + $TNetNeeds[$childBom->id]['bom'] = $childBom; + $TNetNeeds[$childBom->id]['parentid'] = $this->id; + $TNetNeeds[$childBom->id]['qty'] = $line->qty*$qty; + $TNetNeeds[$childBom->id]['level'] = $level; + $childBom->getNetNeedsTree($TNetNeeds, $line->qty*$qty, $level+1); + } + } + else { + $TNetNeeds[$this->id]['product'][$line->fk_product]['qty'] += $line->qty * $qty; + $TNetNeeds[$this->id]['product'][$line->fk_product]['level'] = $level; + } + } + } + } + } @@ -1227,6 +1277,11 @@ class BOMLine extends CommonObjectLine public $unit_cost = 0; + /** + * @var Bom array of Bom in line + */ + public $childBom = array(); + /** * Constructor * diff --git a/htdocs/bom/lib/bom.lib.php b/htdocs/bom/lib/bom.lib.php index 805ba304c1d..954959d5d7a 100644 --- a/htdocs/bom/lib/bom.lib.php +++ b/htdocs/bom/lib/bom.lib.php @@ -84,6 +84,11 @@ function bomPrepareHead($object) $head[$h][2] = 'card'; $h++; + $head[$h][0] = DOL_URL_ROOT."/bom/bom_net_needs.php?id=".$object->id; + $head[$h][1] = $langs->trans("BOMNetNeeds"); + $head[$h][2] = 'net_needs'; + $h++; + if (isset($object->fields['note_public']) || isset($object->fields['note_private'])) { $nbNote = 0; if (!empty($object->note_private)) { diff --git a/htdocs/langs/en_US/mrp.lang b/htdocs/langs/en_US/mrp.lang index 74bed0d9186..ca902380935 100644 --- a/htdocs/langs/en_US/mrp.lang +++ b/htdocs/langs/en_US/mrp.lang @@ -107,3 +107,6 @@ THMEstimatedHelp=This rate makes it possible to define a forecast cost of the it BOM=Bill Of Materials CollapseBOMHelp=You can define the default display of the details of the nomenclature in the configuration of the BOM module MOAndLines=Manufacturing Orders and lines +BOMNetNeeds=Net Needs +DisplayInTreeStructure=Display in tree structure +BackToStandardView=Back to standard view \ No newline at end of file From 44e9b13f30384298ae2825c5f8f03c1ac1da2d78 Mon Sep 17 00:00:00 2001 From: lvessiller Date: Wed, 9 Feb 2022 16:37:41 +0100 Subject: [PATCH 041/225] NEW barcode rule to insert product in takepos --- htdocs/langs/en_US/cashdesk.lang | 2 + htdocs/langs/fr_FR/cashdesk.lang | 2 + htdocs/takepos/admin/setup.php | 12 +++++ htdocs/takepos/ajax/ajax.php | 92 ++++++++++++++++++++++++++++++++ htdocs/takepos/index.php | 10 ++-- htdocs/takepos/invoice.php | 3 +- 6 files changed, 115 insertions(+), 6 deletions(-) diff --git a/htdocs/langs/en_US/cashdesk.lang b/htdocs/langs/en_US/cashdesk.lang index 5792e015040..a5d4e9062e4 100644 --- a/htdocs/langs/en_US/cashdesk.lang +++ b/htdocs/langs/en_US/cashdesk.lang @@ -134,3 +134,5 @@ PrintWithoutDetailsButton=Add "Print without details" button PrintWithoutDetailsLabelDefault=Line label by default on printing without details PrintWithoutDetails=Print without details YearNotDefined=Year is not defined +TakeposBarcodeRuleToInsertProduct=Barcode rule to insert product +TakeposBarcodeRuleToInsertProductDesc=Format rule "ref:NB+qu:NB+qd:NB+other:NB" where NB is the number of characters to compose a part of the barcode with :
    • ref : product reference
    • qu : quantity (units)
    • qd : quantity (decimals)
    • other : others characters
    diff --git a/htdocs/langs/fr_FR/cashdesk.lang b/htdocs/langs/fr_FR/cashdesk.lang index 31218616e1c..c101e8c7931 100644 --- a/htdocs/langs/fr_FR/cashdesk.lang +++ b/htdocs/langs/fr_FR/cashdesk.lang @@ -134,3 +134,5 @@ PrintWithoutDetailsButton=Affiche le bouton "Générer sans les détails" PrintWithoutDetailsLabelDefault=Libellé de ligne par défaut à l'impression sans détails PrintWithoutDetails=Générer sans les détails YearNotDefined=L'année n'est pas définie +TakeposBarcodeRuleToInsertProduct=Règle sur le code-barre pour insérer un produit +TakeposBarcodeRuleToInsertProductDesc=Règle sous la forme "ref:NB+qu:NB+qd:NB+other:NB" où NB correpond au nombre de caractères composant la partie du code-barre avec :
    • ref : la référence du produit
    • qu : la quantité (unités)
    • qd : la quantité (décimales)
    • other : autres caractères
    diff --git a/htdocs/takepos/admin/setup.php b/htdocs/takepos/admin/setup.php index 870fe1844ad..e631776490a 100644 --- a/htdocs/takepos/admin/setup.php +++ b/htdocs/takepos/admin/setup.php @@ -82,6 +82,9 @@ if ($action == 'set') { $res = dolibarr_set_const($db, "TAKEPOS_SUMUP_AFFILIATE", GETPOST('TAKEPOS_SUMUP_AFFILIATE', 'alpha'), 'chaine', 0, '', $conf->entity); $res = dolibarr_set_const($db, "TAKEPOS_SUMUP_APPID", GETPOST('TAKEPOS_SUMUP_APPID', 'alpha'), 'chaine', 0, '', $conf->entity); } + if (!empty($conf->barcode->enabled)) { + $res = dolibarr_set_const($db, 'TAKEPOS_BARCODE_RULE_TO_INSERT_PRODUCT', GETPOST('TAKEPOS_BARCODE_RULE_TO_INSERT_PRODUCT', 'alpha'), 'chaine', 0, '', $conf->entity); + } dol_syslog("admin/cashdesk: level ".GETPOST('level', 'alpha')); @@ -384,6 +387,15 @@ print ''; print ajax_constantonoff("TAKEPOS_SHOW_HT", array(), $conf->entity, 0, 0, 1, 0); print "\n"; +// Barcode rule to insert product +if (!empty($conf->barcode->enabled)) { + print ''; + print $form->textwithpicto($langs->trans("TakeposBarcodeRuleToInsertProduct"), $langs->trans("TakeposBarcodeRuleToInsertProductDesc")); + print ''; + print ''; + print "\n"; +} + // Numbering module //print ''; //print $langs->trans("BillsNumberingModule"); diff --git a/htdocs/takepos/ajax/ajax.php b/htdocs/takepos/ajax/ajax.php index 58c1906cd42..84a057fde22 100644 --- a/htdocs/takepos/ajax/ajax.php +++ b/htdocs/takepos/ajax/ajax.php @@ -98,6 +98,98 @@ if ($action == 'getProducts') { exit; } + if (!empty($conf->barcode->enabled) && !empty($conf->global->TAKEPOS_BARCODE_RULE_TO_INSERT_PRODUCT)) { + $barcode_rules = $conf->global->TAKEPOS_BARCODE_RULE_TO_INSERT_PRODUCT; + $barcode_rules_list = array(); + + // get barcode rules + $barcode_char_nb = 0; + $barcode_rules_arr = explode('+', $barcode_rules); + foreach ($barcode_rules_arr as $barcode_rules_values) { + $barcode_rules_values_arr = explode(':', $barcode_rules_values); + if (count($barcode_rules_values_arr) == 2) { + $char_nb = intval($barcode_rules_values_arr[1]); + $barcode_rules_list[] = array('code' => $barcode_rules_values_arr[0], 'char_nb' => $char_nb); + $barcode_char_nb += $char_nb; + } + } + + $barcode_value_list = array(); + $barcode_offset = 0; + $barcode_length = dol_strlen($term); + if ($barcode_length == $barcode_char_nb) { + $rows = array(); + + // split term with barcode rules + foreach ($barcode_rules_list as $barcode_rule_arr) { + $code = $barcode_rule_arr['code']; + $char_nb = $barcode_rule_arr['char_nb']; + $barcode_value_list[$code] = substr($term, $barcode_offset, $char_nb); + $barcode_offset += $char_nb; + } + + if (isset($barcode_value_list['ref'])) { + //search product from reference + $sql = "SELECT rowid, ref, label, tosell, tobuy, barcode, price"; + $sql .= " FROM " . $db->prefix() . "product as p"; + $sql .= " WHERE entity IN (" . getEntity('product') . ")"; + $sql .= " AND ref = '" . $db->escape($barcode_value_list['ref']) . "'"; + + $resql = $db->query($sql); + if ($resql && $db->num_rows($resql) == 1) { + if ($obj = $db->fetch_object($resql)) { + $qty = 1; + if (isset($barcode_value_list['qu'])) { + $qty_str = $barcode_value_list['qu']; + if (isset($barcode_value_list['qd'])) { + $qty_str .= '.' . $barcode_value_list['qd']; + } + $qty = floatval($qty_str); + } + + $ig = '../public/theme/common/nophoto.png'; + if (empty($conf->global->TAKEPOS_HIDE_PRODUCT_IMAGES)) { + $objProd = new Product($db); + $objProd->fetch($obj->rowid); + $image = $objProd->show_photos('product', $conf->product->multidir_output[$objProd->entity], 'small', 1); + + $match = array(); + preg_match('@src="([^"]+)"@', $image, $match); + $file = array_pop($match); + + if ($file != '') { + if (!defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE')) { + $ig = $file.'&cache=1'; + } else { + $ig = $file.'&cache=1&publictakepos=1&modulepart=product'; + } + } + } + + $rows[] = array( + 'rowid' => $obj->rowid, + 'ref' => $obj->ref, + 'label' => $obj->label, + 'tosell' => $obj->tosell, + 'tobuy' => $obj->tobuy, + 'barcode' => $obj->barcode, + 'price' => $obj->price, + 'object' => 'product', + 'img' => $ig, + 'qty' => $qty, + ); + } + $db->free($resql); + } + } + + if (count($rows) == 1) { + echo json_encode($rows); + exit(); + } + } + } + // Define $filteroncategids, the filter on category ID if there is a Root category defined. $filteroncategids = ''; if ($conf->global->TAKEPOS_ROOT_CATEGORY_ID > 0) { // A root category is defined, we must filter on products inside this category tree diff --git a/htdocs/takepos/index.php b/htdocs/takepos/index.php index 0b159e96a38..24a30b8ea7e 100644 --- a/htdocs/takepos/index.php +++ b/htdocs/takepos/index.php @@ -430,7 +430,7 @@ function MoreProducts(moreorless) { ClearSearch(); } -function ClickProduct(position) { +function ClickProduct(position, qty = 1) { console.log("ClickProduct"); $('#proimg'+position).animate({opacity: '0.5'}, 1); $('#proimg'+position).animate({opacity: '1'}, 100); @@ -440,10 +440,10 @@ function ClickProduct(position) { } else{ idproduct=$('#prodiv'+position).data('rowid'); - console.log("Click on product at position "+position+" for idproduct "+idproduct); + console.log("Click on product at position "+position+" for idproduct "+idproduct+", qty="+qty); if (idproduct=="") return; // Call page invoice.php to generate the section with product lines - $("#poslines").load("invoice.php?action=addline&token=&place="+place+"&idproduct="+idproduct+"&selectedline="+selectedline, function() { + $("#poslines").load("invoice.php?action=addline&token=&place="+place+"&idproduct="+idproduct+"&selectedline="+selectedline+"&qty="+qty, function() { global->TAKEPOS_CUSTOMER_DISPLAY)) echo "CustomerDisplay();";?> }); } @@ -619,9 +619,9 @@ function Search2(keyCodeForEnter) { console.log("There is only 1 answer with barcode matching the search, so we change the thirdparty "+data[0]['rowid']); ChangeThirdparty(data[0]['rowid']); } - else if ($('#search').val() == data[0]['barcode'] && 'product' == data[0]['object']) { + else if ('product' == data[0]['object']) { console.log("There is only 1 answer with barcode matching the search, so we add the product in basket"); - ClickProduct(0); + ClickProduct(0, data[0]['qty']); } } if (eventKeyCode == keyCodeForEnter){ diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index f1d4f62587f..8564a3de137 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -505,6 +505,7 @@ if ($action == "addline") { $datapriceofproduct = $prod->getSellPrice($mysoc, $customer, 0); + $qty = GETPOSTISSET('qty') ? GETPOST('qty', 'int') : 1; $price = $datapriceofproduct['pu_ht']; $price_ttc = $datapriceofproduct['pu_ttc']; //$price_min = $datapriceofproduct['price_min']; @@ -550,7 +551,7 @@ if ($action == "addline") { } if ($idoflineadded <= 0) { $invoice->fetch_thirdparty(); - $idoflineadded = $invoice->addline($prod->description, $price, 1, $tva_tx, $localtax1_tx, $localtax2_tx, $idproduct, $customer->remise_percent, '', 0, 0, 0, '', $price_base_type, $price_ttc, $prod->type, -1, 0, '', 0, (!empty($parent_line)) ? $parent_line : '', null, '', '', 0, 100, '', null, 0); + $idoflineadded = $invoice->addline($prod->description, $price, $qty, $tva_tx, $localtax1_tx, $localtax2_tx, $idproduct, $customer->remise_percent, '', 0, 0, 0, '', $price_base_type, $price_ttc, $prod->type, -1, 0, '', 0, (!empty($parent_line)) ? $parent_line : '', null, '', '', 0, 100, '', null, 0); if (!empty($conf->global->TAKEPOS_CUSTOMER_DISPLAY)) { $CUSTOMER_DISPLAY_line1 = $prod->label; $CUSTOMER_DISPLAY_line2 = price($price_ttc); From 25497018c7044c3ab145b001c4661cf8c6cefd40 Mon Sep 17 00:00:00 2001 From: lvessiller Date: Wed, 9 Feb 2022 16:49:40 +0100 Subject: [PATCH 042/225] FIX group by qty in update line --- htdocs/takepos/invoice.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index 8564a3de137..66a75ef7050 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -539,7 +539,7 @@ if ($action == "addline") { foreach ($invoice->lines as $line) { if ($line->product_ref == $prod->ref) { if ($line->special_code==4) continue; // If this line is sended to printer create new line - $result = $invoice->updateline($line->id, $line->desc, $line->subprice, $line->qty + 1, $line->remise_percent, $line->date_start, $line->date_end, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, 'HT', $line->info_bits, $line->product_type, $line->fk_parent_line, 0, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->situation_percent, $line->fk_unit); + $result = $invoice->updateline($line->id, $line->desc, $line->subprice, $line->qty + $qty, $line->remise_percent, $line->date_start, $line->date_end, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, 'HT', $line->info_bits, $line->product_type, $line->fk_parent_line, 0, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->situation_percent, $line->fk_unit); if ($result < 0) { dol_htmloutput_errors($invoice->error, $invoice->errors, 1); } else { From 7e9a50a113fca815d9d211cf7b74a8a9b9a9fe5e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 Feb 2022 16:58:13 +0100 Subject: [PATCH 043/225] Fix phpcs --- htdocs/recruitment/recruitmentjobposition_list.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/recruitment/recruitmentjobposition_list.php b/htdocs/recruitment/recruitmentjobposition_list.php index 907ed9e2be0..b1916080efa 100644 --- a/htdocs/recruitment/recruitmentjobposition_list.php +++ b/htdocs/recruitment/recruitmentjobposition_list.php @@ -294,17 +294,17 @@ foreach ($search as $key => $val) { $mode_search = 2; } if ($search[$key] != '') { - $sql .= natural_search('t.'.$key, $search[$key], (($key == 'status') ? 2 : $mode_search)); + $sql .= natural_search("t.".$db->escape($key), $search[$key], (($key == 'status') ? 2 : $mode_search)); } } else { if (preg_match('/(_dtstart|_dtend)$/', $key) && $search[$key] != '') { $columnName = preg_replace('/(_dtstart|_dtend)$/', '', $key); if (preg_match('/^(date|timestamp|datetime)/', $object->fields[$columnName]['type'])) { if (preg_match('/_dtstart$/', $key)) { - $sql .= " AND t.".$columnName." >= '".$db->idate($search[$key])."'"; + $sql .= " AND t.".$db->escape($columnName)." >= '".$db->idate($search[$key])."'"; } if (preg_match('/_dtend$/', $key)) { - $sql .= " AND t." . $columnName . " <= '" . $db->idate($search[$key]) . "'"; + $sql .= " AND t.".$db->escape($columnName)." <= '" . $db->idate($search[$key])."'"; } } } From ce1a08baf67c3d4cc8ba90e8422afffa049c8b7d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 Feb 2022 16:58:35 +0100 Subject: [PATCH 044/225] Fix phpcs --- htdocs/modulebuilder/template/myobject_list.php | 4 ++-- htdocs/recruitment/recruitmentjobposition_list.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/modulebuilder/template/myobject_list.php b/htdocs/modulebuilder/template/myobject_list.php index f45072bc607..ee4d4b73026 100644 --- a/htdocs/modulebuilder/template/myobject_list.php +++ b/htdocs/modulebuilder/template/myobject_list.php @@ -314,7 +314,7 @@ foreach ($search as $key => $val) { $sql .= " AND t.".$db->escape($columnName)." >= '".$db->idate($search[$key])."'"; } if (preg_match('/_dtend$/', $key)) { - $sql .= " AND t.".$db->escape($columnName)." <= '" . $db->idate($search[$key])."'"; + $sql .= " AND t.".$db->escape($columnName)." <= '".$db->idate($search[$key])."'"; } } } @@ -334,7 +334,7 @@ $sql .= $hookmanager->resPrint; /* If a group by is required $sql .= " GROUP BY "; foreach($object->fields as $key => $val) { - $sql .= "t.".$key.", "; + $sql .= "t.".$db->escape($key).", "; } // Add fields from extrafields if (!empty($extrafields->attributes[$object->table_element]['label'])) { diff --git a/htdocs/recruitment/recruitmentjobposition_list.php b/htdocs/recruitment/recruitmentjobposition_list.php index b1916080efa..a61665de070 100644 --- a/htdocs/recruitment/recruitmentjobposition_list.php +++ b/htdocs/recruitment/recruitmentjobposition_list.php @@ -324,7 +324,7 @@ $sql .= $hookmanager->resPrint; /* If a group by is required */ $sql .= " GROUP BY "; foreach ($object->fields as $key => $val) { - $sql .= "t.".$key.", "; + $sql .= "t.".$db->escape($key).", "; } // Add fields from extrafields if (!empty($extrafields->attributes[$object->table_element]['label'])) { From c7f99f140e30e00d3ce095632818e9c634fb600d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 Feb 2022 17:41:32 +0100 Subject: [PATCH 045/225] Fix remove validator --- dev/dolibarr_changes.txt | 4 ++++ .../restler/framework/Luracast/Restler/explorer/index.html | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/dev/dolibarr_changes.txt b/dev/dolibarr_changes.txt index 7ce22e790c3..d4a9b725524 100644 --- a/dev/dolibarr_changes.txt +++ b/dev/dolibarr_changes.txt @@ -205,6 +205,8 @@ with with foreach ($value[1] as $k => $v) { + + JSGANTT: -------- * Replace in function JSGantt.taskLink @@ -233,11 +235,13 @@ JCROP: * Remove analytics tag into file index.html + JQUERYFILETREE: --------------- * Remove directory htdocs/includes/jquery/plugins/jqueryFileTree/connectors + RESTLER: -------- diff --git a/htdocs/includes/restler/framework/Luracast/Restler/explorer/index.html b/htdocs/includes/restler/framework/Luracast/Restler/explorer/index.html index 7fedb694c17..5b7ca132af3 100644 --- a/htdocs/includes/restler/framework/Luracast/Restler/explorer/index.html +++ b/htdocs/includes/restler/framework/Luracast/Restler/explorer/index.html @@ -68,7 +68,7 @@ if(window.SwaggerTranslator) { window.SwaggerTranslator.translate(); } - + addApiKeyAuthorization(); }, onFailure: function(data) { @@ -83,7 +83,9 @@ showRequestHeaders: false, showOperationIds: false, displayOperationIds: false, - displayRequestDuration: true + displayRequestDuration: true, + /* @CHANGE LDR Add validatorUrl */ + validatorUrl: null }); function addApiKeyAuthorization(){ From 0d68846b3ad58bb60e316431991f735c6fcc9f3e Mon Sep 17 00:00:00 2001 From: lvessiller Date: Wed, 9 Feb 2022 17:44:48 +0100 Subject: [PATCH 046/225] FIX add filter on categories --- htdocs/takepos/ajax/ajax.php | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/htdocs/takepos/ajax/ajax.php b/htdocs/takepos/ajax/ajax.php index 84a057fde22..9b44e536a2b 100644 --- a/htdocs/takepos/ajax/ajax.php +++ b/htdocs/takepos/ajax/ajax.php @@ -98,6 +98,19 @@ if ($action == 'getProducts') { exit; } + // Define $filteroncategids, the filter on category ID if there is a Root category defined. + $filteroncategids = ''; + if ($conf->global->TAKEPOS_ROOT_CATEGORY_ID > 0) { // A root category is defined, we must filter on products inside this category tree + $object = new Categorie($db); + //$result = $object->fetch($conf->global->TAKEPOS_ROOT_CATEGORY_ID); + $arrayofcateg = $object->get_full_arbo('product', $conf->global->TAKEPOS_ROOT_CATEGORY_ID, 1); + if (is_array($arrayofcateg) && count($arrayofcateg) > 0) { + foreach ($arrayofcateg as $val) { + $filteroncategids .= ($filteroncategids ? ', ' : '').$val['id']; + } + } + } + if (!empty($conf->barcode->enabled) && !empty($conf->global->TAKEPOS_BARCODE_RULE_TO_INSERT_PRODUCT)) { $barcode_rules = $conf->global->TAKEPOS_BARCODE_RULE_TO_INSERT_PRODUCT; $barcode_rules_list = array(); @@ -134,6 +147,10 @@ if ($action == 'getProducts') { $sql .= " FROM " . $db->prefix() . "product as p"; $sql .= " WHERE entity IN (" . getEntity('product') . ")"; $sql .= " AND ref = '" . $db->escape($barcode_value_list['ref']) . "'"; + if ($filteroncategids) { + $sql .= " AND EXISTS (SELECT cp.fk_product FROM " . $db->prefix() . "categorie_product as cp WHERE cp.fk_product = p.rowid AND cp.fk_categorie IN (".$db->sanitize($filteroncategids)."))"; + } + $sql .= " AND tosell = 1"; $resql = $db->query($sql); if ($resql && $db->num_rows($resql) == 1) { @@ -190,19 +207,6 @@ if ($action == 'getProducts') { } } - // Define $filteroncategids, the filter on category ID if there is a Root category defined. - $filteroncategids = ''; - if ($conf->global->TAKEPOS_ROOT_CATEGORY_ID > 0) { // A root category is defined, we must filter on products inside this category tree - $object = new Categorie($db); - //$result = $object->fetch($conf->global->TAKEPOS_ROOT_CATEGORY_ID); - $arrayofcateg = $object->get_full_arbo('product', $conf->global->TAKEPOS_ROOT_CATEGORY_ID, 1); - if (is_array($arrayofcateg) && count($arrayofcateg) > 0) { - foreach ($arrayofcateg as $val) { - $filteroncategids .= ($filteroncategids ? ', ' : '').$val['id']; - } - } - } - $sql = 'SELECT rowid, ref, label, tosell, tobuy, barcode, price' ; // Add fields from hooks $parameters=array(); From fe01f75e970bdb14d6c610e7d8d4444e3013469b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 Feb 2022 17:50:26 +0100 Subject: [PATCH 047/225] Fix API_ENDPOINT_RULES with api of external modules --- htdocs/api/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/api/index.php b/htdocs/api/index.php index 70aeae96447..da194f12655 100644 --- a/htdocs/api/index.php +++ b/htdocs/api/index.php @@ -304,7 +304,7 @@ if (!empty($reg[1]) && ($reg[1] != 'explorer' || ($reg[2] != '/swagger.json' && foreach ($listofendpoints as $endpointrule) { $tmparray = explode(':', $endpointrule); - if ($classfile == $tmparray[0] && $tmparray[1] == 1) { + if (($classfile == $tmparray[0] || $classfile.'api' == $tmparray[0]) && $tmparray[1] == 1) { $endpointisallowed = true; break; } From 5a37b2c6493573ca087db0d5ecac6a310fd678c7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 Feb 2022 18:10:21 +0100 Subject: [PATCH 048/225] Fix API call --- htdocs/api/index.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/htdocs/api/index.php b/htdocs/api/index.php index da194f12655..ae84e61ea32 100644 --- a/htdocs/api/index.php +++ b/htdocs/api/index.php @@ -61,6 +61,13 @@ if (preg_match('/\/explorer\/swagger\.json/', $_SERVER["PHP_SELF"])) { header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE'); header('Access-Control-Allow-Headers: Content-Type, Authorization, api_key, DOLAPIKEY'); } +// When we request url to get an API, we accept Cross site so we can make js API call inside another website +if (preg_match('/\/api\/index\.php/', $_SERVER["PHP_SELF"])) { + header('Access-Control-Allow-Origin: *'); + header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE'); + header('Access-Control-Allow-Headers: Content-Type, Authorization, api_key, DOLAPIKEY'); +} + $res = 0; if (!$res && file_exists("../main.inc.php")) { From 0b63ac638e638bddf8183b83338ba684424166a8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 Feb 2022 21:12:06 +0100 Subject: [PATCH 049/225] FIX API caan now be used in a preflight mode by Ajax. --- htdocs/api/index.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/htdocs/api/index.php b/htdocs/api/index.php index ae84e61ea32..420338f2a9d 100644 --- a/htdocs/api/index.php +++ b/htdocs/api/index.php @@ -55,6 +55,15 @@ if (!empty($_SERVER['HTTP_DOLAPIENTITY'])) { define("DOLENTITY", (int) $_SERVER['HTTP_DOLAPIENTITY']); } +// Response for preflight requests (used by browser when into a CORS context) +if (!empty($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'OPTIONS' && !empty($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) { + header('Access-Control-Allow-Origin: *'); + header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE'); + header('Access-Control-Allow-Headers: Content-Type, Authorization, api_key, DOLAPIKEY'); + http_response_code(204); + exit; +} + // When we request url to get the json file, we accept Cross site so we can include the descriptor into an external tool. if (preg_match('/\/explorer\/swagger\.json/', $_SERVER["PHP_SELF"])) { header('Access-Control-Allow-Origin: *'); From cc8af7b1d0361f790b1fc79b094d312ec887501b Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Thu, 10 Feb 2022 09:19:14 +0100 Subject: [PATCH 050/225] FIX not active value are not hidden (missing filter of field) (#20032) * FIX not active value are not hidden (missing filter of field) * FIX wrong category table and wrong object id --- htdocs/core/class/html.form.class.php | 6 +++++- .../class/knowledgerecord.class.php | 4 ++-- htdocs/knowledgemanagement/knowledgerecord_card.php | 12 ++++++------ 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 3375e9f7cc4..09225f97158 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -7379,7 +7379,11 @@ class Form $objecttmp = null; - $InfoFieldList = explode(":", $objectdesc); + $InfoFieldList = explode(":", $objectdesc, 4); + $vartmp = $InfoFieldList[3]; + $InfoFieldList[4] = preg_replace('/^.*:(\w*)$/', '\1', $vartmp); // take the sort field + $InfoFieldList[3] = preg_replace('/:\w*$/', '', $vartmp); // take the filter field + $classname = $InfoFieldList[0]; $classpath = $InfoFieldList[1]; $addcreatebuttonornot = empty($InfoFieldList[2]) ? 0 : $InfoFieldList[2]; diff --git a/htdocs/knowledgemanagement/class/knowledgerecord.class.php b/htdocs/knowledgemanagement/class/knowledgerecord.class.php index b241cb2d9e9..8b1635273cd 100644 --- a/htdocs/knowledgemanagement/class/knowledgerecord.class.php +++ b/htdocs/knowledgemanagement/class/knowledgerecord.class.php @@ -115,7 +115,7 @@ class KnowledgeRecord extends CommonObject 'import_key' => array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>'1', 'position'=>1000, 'notnull'=>-1, 'visible'=>-2,), 'model_pdf' => array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>'1', 'position'=>1010, 'notnull'=>-1, 'visible'=>0,), //'url' => array('type'=>'varchar(255)', 'label'=>'URL', 'enabled'=>'1', 'position'=>55, 'notnull'=>0, 'visible'=>-1, 'csslist'=>'tdoverflow200', 'help'=>'UrlForInfoPage'), - 'fk_c_ticket_category' => array('type'=>'integer:CTicketCategory:ticket/class/cticketcategory.class.php:0::pos', 'label'=>'SuggestedForTicketsInGroup', 'enabled'=>'$conf->ticket->enabled', 'position'=>512, 'notnull'=>0, 'visible'=>-1, 'help'=>'YouCanLinkArticleToATicketCategory', 'csslist'=>'minwidth200 tdoverflowmax250'), + 'fk_c_ticket_category' => array('type'=>'integer:CTicketCategory:ticket/class/cticketcategory.class.php:0:(t.active:=:1):pos', 'label'=>'SuggestedForTicketsInGroup', 'enabled'=>'$conf->ticket->enabled', 'position'=>512, 'notnull'=>0, 'visible'=>-1, 'help'=>'YouCanLinkArticleToATicketCategory', 'csslist'=>'minwidth200 tdoverflowmax250'), 'status' => array('type'=>'integer', 'label'=>'Status', 'enabled'=>'1', 'position'=>1000, 'notnull'=>1, 'visible'=>5, 'default'=>0, 'index'=>1, 'arrayofkeyval'=>array('0'=>'Draft', '1'=>'Validated', '9'=>'Obsolete'),), ); public $rowid; @@ -459,7 +459,7 @@ class KnowledgeRecord extends CommonObject public function delete(User $user, $notrigger = false) { $error = 0; - $sql = "DELETE FROM ".MAIN_DB_PREFIX."categorie_member WHERE fk_member = ".((int) $this->rowid); + $sql = "DELETE FROM ".MAIN_DB_PREFIX."categorie_knowledgemanagement WHERE fk_knowledgemanagement = ".((int) $this->id); dol_syslog(get_class($this)."::delete", LOG_DEBUG); $resql = $this->db->query($sql); if (!$resql) { diff --git a/htdocs/knowledgemanagement/knowledgerecord_card.php b/htdocs/knowledgemanagement/knowledgerecord_card.php index a388175dbcf..2fcf05a4393 100644 --- a/htdocs/knowledgemanagement/knowledgerecord_card.php +++ b/htdocs/knowledgemanagement/knowledgerecord_card.php @@ -175,10 +175,10 @@ if ($action == 'create') { print '
    '; print ''; print ''; - if ($backtopage) { + if (!empty($backtopage)) { print ''; } - if ($backtopageforcancel) { + if (!empty($backtopageforcancel)) { print ''; } @@ -192,7 +192,7 @@ if ($action == 'create') { // Common attributes include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_add.tpl.php'; - if ($conf->categorie->enabled) { + if (!empty($conf->categorie->enabled)) { $cate_arbo = $form->select_all_categories(Categorie::TYPE_KNOWLEDGEMANAGEMENT, '', 'parent', 64, 0, 1); if (count($cate_arbo)) { @@ -225,10 +225,10 @@ if (($id || $ref) && $action == 'edit') { print ''; print ''; print ''; - if ($backtopage) { + if (!empty($backtopage)) { print ''; } - if ($backtopageforcancel) { + if (!empty($backtopageforcancel)) { print ''; } @@ -239,7 +239,7 @@ if (($id || $ref) && $action == 'edit') { // Common attributes include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_edit.tpl.php'; - if ($conf->categorie->enabled) { + if (!empty($conf->categorie->enabled)) { $cate_arbo = $form->select_all_categories(Categorie::TYPE_KNOWLEDGEMANAGEMENT, '', 'parent', 64, 0, 1); if (count($cate_arbo)) { From 793e43c7c6583807f0ea4d818796adc76bb99249 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 09:29:11 +0100 Subject: [PATCH 051/225] Update fournisseur.commande.class.php --- htdocs/fourn/class/fournisseur.commande.class.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 89222b4d55e..8642ea6d8eb 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -463,8 +463,9 @@ class CommandeFournisseur extends CommonOrder $sql .= ", pfp.rowid as fk_pfp, pfp.packaging, MAX(pfp.quantity) as max_qty"; $sql .= " FROM ".MAIN_DB_PREFIX."commande_fournisseurdet as l"; $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON l.fk_product = p.rowid'; - if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON l.fk_product = pfp.fk_product and l.ref = pfp.ref_fourn AND pfp.fk_soc = ".$this->socid; + if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) { + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON pfp.entity IN (".getEntity('product_fournisseur_price').") AND l.fk_product = pfp.fk_product and l.ref = pfp.ref_fourn AND pfp.fk_soc = ".((int) $this->socid); + } $sql .= " WHERE l.fk_commande = ".$this->id; if ($only_product) $sql .= ' AND p.fk_product_type = 0'; if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) { From 8dffa020b45e575f758004e7a063b5de54b119ed Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Thu, 10 Feb 2022 09:54:09 +0100 Subject: [PATCH 052/225] FIX broken feature, wrong div name --- htdocs/compta/bank/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/bank/card.php b/htdocs/compta/bank/card.php index 989ab236a1c..5a8ac046ce4 100644 --- a/htdocs/compta/bank/card.php +++ b/htdocs/compta/bank/card.php @@ -326,7 +326,7 @@ if ($action == 'create') { if ($conf->use_javascript_ajax) { print "\n".' lines)) { - foreach($this->lines as $line) { - if(! empty($line->childBom)) { - foreach($line->childBom as $childBom) $childBom->getNetNeeds($TNetNeeds, $line->qty*$qty); - } - else { + public function getNetNeeds(&$TNetNeeds = array(), $qty = 0) + { + if (! empty($this->lines)) { + foreach ($this->lines as $line) { + if (! empty($line->childBom)) { + foreach ($line->childBom as $childBom) $childBom->getNetNeeds($TNetNeeds, $line->qty*$qty); + } else { $TNetNeeds[$line->fk_product] += $line->qty*$qty; } } @@ -1131,26 +1131,25 @@ class BOM extends CommonObject * @param int $level * @return void */ - public function getNetNeedsTree(&$TNetNeeds = array(), $qty = 0, $level = 0) { - if(! empty($this->lines)) { - foreach($this->lines as $line) { - if(! empty($line->childBom)) { - foreach($line->childBom as $childBom) { + public function getNetNeedsTree(&$TNetNeeds = array(), $qty = 0, $level = 0) + { + if (! empty($this->lines)) { + foreach ($this->lines as $line) { + if (! empty($line->childBom)) { + foreach ($line->childBom as $childBom) { $TNetNeeds[$childBom->id]['bom'] = $childBom; $TNetNeeds[$childBom->id]['parentid'] = $this->id; $TNetNeeds[$childBom->id]['qty'] = $line->qty*$qty; $TNetNeeds[$childBom->id]['level'] = $level; $childBom->getNetNeedsTree($TNetNeeds, $line->qty*$qty, $level+1); } - } - else { + } else { $TNetNeeds[$this->id]['product'][$line->fk_product]['qty'] += $line->qty * $qty; $TNetNeeds[$this->id]['product'][$line->fk_product]['level'] = $level; } } } } - } From dd0202de47a702d9ad100c66c2250c8d7b78d9e4 Mon Sep 17 00:00:00 2001 From: Quentin VIAL-GOUTEYRON Date: Thu, 10 Feb 2022 10:46:04 +0100 Subject: [PATCH 060/225] fix comment doc --- htdocs/bom/class/bom.class.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/bom/class/bom.class.php b/htdocs/bom/class/bom.class.php index 75cf0e3a65e..17d17edad8d 100644 --- a/htdocs/bom/class/bom.class.php +++ b/htdocs/bom/class/bom.class.php @@ -1106,8 +1106,8 @@ class BOM extends CommonObject /** * Get Net needs by product * - * @param array $TNetNeeds - * @param int $qty + * @param array $TNetNeeds Array of ChildBom and infos linked to + * @param int $qty qty needed * @return void */ public function getNetNeeds(&$TNetNeeds = array(), $qty = 0) @@ -1126,9 +1126,9 @@ class BOM extends CommonObject /** * Get Net needs Tree by product or bom * - * @param array $TNetNeeds - * @param int $qty - * @param int $level + * @param array $TNetNeeds Array of ChildBom and infos linked to + * @param int $qty qty needed + * @param int $level level of recursivity * @return void */ public function getNetNeedsTree(&$TNetNeeds = array(), $qty = 0, $level = 0) From a40f76c1d8cf9f8a5163f39bb933287e48bb742b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 11:15:59 +0100 Subject: [PATCH 061/225] Merge --- .../class/fournisseur.facture-rec.class.php | 86 +++++++++---------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.facture-rec.class.php b/htdocs/fourn/class/fournisseur.facture-rec.class.php index 7ab795271bc..a03bd57a193 100644 --- a/htdocs/fourn/class/fournisseur.facture-rec.class.php +++ b/htdocs/fourn/class/fournisseur.facture-rec.class.php @@ -228,10 +228,10 @@ class FactureFournisseurRec extends CommonInvoice /** * Create a predefined supplier invoice * - * @param User $user User object - * @param int $facFournId - * @param int $notrigger No trigger - * @return int <0 if KO, id of invoice created if OK + * @param User $user User object + * @param int $facFournId Id invoice + * @param int $notrigger No trigger + * @return int <0 if KO, id of invoice created if OK */ public function create($user, $facFournId, $notrigger = 0) { @@ -833,26 +833,26 @@ class FactureFournisseurRec extends CommonInvoice * Add a line to recursive supplier invoice * * @param int $fk_product Product/Service ID predefined - * @param string $ref - * @param string $label - * @param string $desc Description de la ligne - * @param double $pu_ht - * @param int $pu_ttc - * @param double $qty Quantite - * @param int $remise_percent Percentage discount of the line - * @param double $txtva Taux de tva force, sinon -1 - * @param int $txlocaltax1 Local tax 1 rate (deprecated) - * @param int $txlocaltax2 Local tax 2 rate (deprecated) + * @param string $ref Ref + * @param string $label Label + * @param string $desc Description de la ligne + * @param double $pu_ht Unit price + * @param double $pu_ttc Unit price with tax + * @param double $qty Quantity + * @param int $remise_percent Percentage discount of the line + * @param double $txtva Taux de tva force, sinon -1 + * @param int $txlocaltax1 Local tax 1 rate (deprecated) + * @param int $txlocaltax2 Local tax 2 rate (deprecated) * @param string $price_base_type HT or TTC - * @param int $type Type of line (0=product, 1=service) - * @param int $date_start - * @param int $date_end - * @param int $info_bits VAT npr or not ? - * @param int $special_code Special code - * @param int $rang Position of line - * @param string $fk_unit Unit - * @param int $pu_ht_devise Unit price in currency - * @return int <0 if KO, Id of line if OK + * @param int $type Type of line (0=product, 1=service) + * @param int $date_start Date start + * @param int $date_end Date end + * @param int $info_bits VAT npr or not ? + * @param int $special_code Special code + * @param int $rang Position of line + * @param string $fk_unit Unit + * @param int $pu_ht_devise Unit price in currency + * @return int <0 if KO, Id of line if OK * @throws Exception */ public function addline($fk_product, $ref, $label, $desc, $pu_ht, $pu_ttc, $qty, $remise_percent, $txtva, $txlocaltax1 = 0, $txlocaltax2 = 0, $price_base_type = 'HT', $type = 0, $date_start = 0, $date_end = 0, $info_bits = 0, $special_code = 0, $rang = -1, $fk_unit = null, $pu_ht_devise = 0) @@ -1020,27 +1020,27 @@ class FactureFournisseurRec extends CommonInvoice /** * Update a line to supplier invoice template * - * @param $rowid - * @param int $fk_product Product/Service ID predefined - * @param $ref - * @param string $label Label of the line - * @param string $desc Description de la ligne - * @param double $pu_ht Prix unitaire HT (> 0 even for credit note) - * @param double $qty Quantite - * @param int $remise_percent Percentage discount of the line - * @param double $txtva Taux de tva force, sinon -1 - * @param int $txlocaltax1 Local tax 1 rate (deprecated) - * @param int $txlocaltax2 Local tax 2 rate (deprecated) + * @param $rowid ID + * @param int $fk_product Product/Service ID predefined + * @param $ref Ref + * @param string $label Label of the line + * @param string $desc Description de la ligne + * @param double $pu_ht Prix unitaire HT (> 0 even for credit note) + * @param double $qty Quantity + * @param int $remise_percent Percentage discount of the line + * @param double $txtva Taux de tva force, sinon -1 + * @param int $txlocaltax1 Local tax 1 rate (deprecated) + * @param int $txlocaltax2 Local tax 2 rate (deprecated) * @param string $price_base_type HT or TTC - * @param int $type Type of line (0=product, 1=service) - * @param int $date_start - * @param int $date_end - * @param int $info_bits Bits of type of lines - * @param int $special_code Special code - * @param int $rang Position of line - * @param string $fk_unit Unit - * @param int $pu_ht_devise Unit price in currency - * @return int <0 if KO, Id of line if OK + * @param int $type Type of line (0=product, 1=service) + * @param int $date_start Date start + * @param int $date_end Date end + * @param int $info_bits Bits of type of lines + * @param int $special_code Special code + * @param int $rang Position of line + * @param string $fk_unit Unit + * @param int $pu_ht_devise Unit price in currency + * @return int <0 if KO, Id of line if OK * @throws Exception */ public function updateline($rowid, $fk_product, $ref, $label, $desc, $pu_ht, $qty, $remise_percent, $txtva, $txlocaltax1 = 0, $txlocaltax2 = 0, $price_base_type = 'HT', $type = 0, $date_start = 0, $date_end = 0, $info_bits = 0, $special_code = 0, $rang = -1, $fk_unit = null, $pu_ht_devise = 0) From 760b8caa31bf60a4520853269bad49da1f21f4f4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 11:26:36 +0100 Subject: [PATCH 062/225] Fix migration --- htdocs/install/mysql/migration/14.0.0-15.0.0.sql | 2 ++ 1 file changed, 2 insertions(+) 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 9af52c8700a..4d4248c1ac0 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 @@ -100,6 +100,8 @@ UPDATE llx_facture_fourn SET multicurrency_total_ht = -multicurrency_total_ht WH UPDATE llx_facture_fourn SET multicurrency_total_tva = -multicurrency_total_tva WHERE ((multicurrency_total_tva < 0 and total_tva > 0) OR (multicurrency_total_tva > 0 and total_tva < 0)); UPDATE llx_facture_fourn SET multicurrency_total_ttc = -multicurrency_total_ttc WHERE ((multicurrency_total_ttc < 0 and total_ttc > 0) OR (multicurrency_total_ttc > 0 and total_ttc < 0)); +ALTER TABLE llx_propaldet ADD COLUMN import_key varchar(14); + -- v15 From f7875125929fd774509ad9f67e551745cbf9d9fa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 12:30:29 +0100 Subject: [PATCH 063/225] Fix buttons --- htdocs/fourn/facture/paiement.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/fourn/facture/paiement.php b/htdocs/fourn/facture/paiement.php index d65b3010367..79a554faa13 100644 --- a/htdocs/fourn/facture/paiement.php +++ b/htdocs/fourn/facture/paiement.php @@ -776,11 +776,11 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie // Save + Cancel Buttons if ($action != 'add_paiement') { - print '
    '.$langs->trans("ClosePaidInvoicesAutomatically"); - print '

     

    '; - print '
    '; - print '

     

    '; - print '
    '; + print '
    '; + print ' '.$langs->trans("ClosePaidInvoicesAutomatically").'
    '; + print ''; + print '   '; + print '
    '; } // Form to confirm payment From 954938cd7523e33ca747c4ecb4f95a63cdec9266 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 12:33:28 +0100 Subject: [PATCH 064/225] Fix buttons --- htdocs/fourn/facture/paiement.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/facture/paiement.php b/htdocs/fourn/facture/paiement.php index 79a554faa13..848e1a01173 100644 --- a/htdocs/fourn/facture/paiement.php +++ b/htdocs/fourn/facture/paiement.php @@ -777,7 +777,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie // Save + Cancel Buttons if ($action != 'add_paiement') { print '
    '; - print ' '.$langs->trans("ClosePaidInvoicesAutomatically").'
    '; + print '
    '; print ''; print '   '; print '
    '; From 1d6a7ebe037272a692694c4e9289a1ad3ff4c432 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 13:01:47 +0100 Subject: [PATCH 065/225] Fix pb with bulk payment feature --- htdocs/compta/facture/card.php | 4 +- htdocs/compta/facture/list.php | 105 +++++++++++++++++++-------------- htdocs/langs/en_US/bills.lang | 2 + 3 files changed, 66 insertions(+), 45 deletions(-) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index 1cacc53bb90..f2b26c73242 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -4938,14 +4938,14 @@ if ($action == 'create') { // List of payments already done print '
    '; - print ''; + print '
    '; print ''; print ''; print ''; print ''; if (!empty($conf->banque->enabled)) { - print ''; + print ''; } print ''; print ''; diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index c244229c5f8..0e3acc45d25 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -178,6 +178,7 @@ $diroutputmassaction = $conf->facture->dir_output.'/temp/massgeneration/'.$user- $object = new Facture($db); $now = dol_now(); +$error = 0; // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context $object = new Facture($db); @@ -376,61 +377,78 @@ if (empty($reshook)) { include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; } -if ($action == 'makepayment_confirm' && $user->rights->facture->paiement) { +if ($action == 'makepayment_confirm' && !empty($user->rights->facture->paiement)) { require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'; $arrayofselected = is_array($toselect) ? $toselect : array(); if (!empty($arrayofselected)) { $bankid = GETPOST('bankid', 'int'); $paiementid = GETPOST('paiementid', 'int'); $paiementdate = dol_mktime(12, 0, 0, GETPOST('datepaimentmonth', 'int'), GETPOST('datepaimentday', 'int'), GETPOST('datepaimentyear', 'year')); - foreach ($arrayofselected as $toselectid) { - $errorpayment = 0; - $facture = new Facture($db); - $result = $facture->fetch($toselectid); - if ($result < 0) { - setEventMessage($facture->error, 'errors'); - $errorpayment++; - } else { - if ($facture->type != Facture::TYPE_CREDIT_NOTE && $facture->statut == 1 && $facture->paye == 0) { - $paiementAmount = $facture->getSommePaiement(); - $totalcreditnotes = $facture->getSumCreditNotesUsed(); - $totaldeposits = $facture->getSumDepositsUsed(); - $totalpay = $paiementAmount + $totalcreditnotes + $totaldeposits; - $remaintopay = price2num($facture->total_ttc - $totalpay); - if ($remaintopay != 0) { - $resultBank = $facture->setBankAccount($bankid); - if ($resultBank < 0) { - setEventMessage($facture->error, 'errors'); - $errorpayment++; - } else { - $paiement = new Paiement($db); - $paiement->datepaye = $paiementdate; - $paiement->amounts[$facture->id] = $remaintopay; // Array with all payments dispatching with invoice id - $paiement->multicurrency_amounts[$facture->id] = $remaintopay; - $paiement->paiementid = $paiementid; - $paiement_id = $paiement->create($user, 1, $facture->thirdparty); - if ($paiement_id < 0) { - setEventMessage($facture->ref.' '.$paiement->error, 'errors'); + if (empty($paiementdate)) { + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), null, 'errors'); + $error++; + $action = 'makepayment'; + } + + if (!$error) { + foreach ($arrayofselected as $toselectid) { + $errorpayment = 0; + $facture = new Facture($db); + $result = $facture->fetch($toselectid); + + $db->begin(); + + if ($result < 0) { + setEventMessage($facture->error, 'errors'); + $errorpayment++; + } else { + if ($facture->type != Facture::TYPE_CREDIT_NOTE && $facture->statut == Facture::STATUS_VALIDATED && $facture->paye == 0) { + $paiementAmount = $facture->getSommePaiement(); + $totalcreditnotes = $facture->getSumCreditNotesUsed(); + $totaldeposits = $facture->getSumDepositsUsed(); + $totalpay = $paiementAmount + $totalcreditnotes + $totaldeposits; + $remaintopay = price2num($facture->total_ttc - $totalpay); + if ($remaintopay != 0) { + $resultBank = $facture->setBankAccount($bankid); + if ($resultBank < 0) { + setEventMessages($facture->error, null, 'errors'); $errorpayment++; } else { - $result = $paiement->addPaymentToBank($user, 'payment', '', $bankid, '', ''); - if ($result < 0) { - setEventMessages($facture->ref.' '.$paiement->error, $paiement->errors, 'errors'); + $paiement = new Paiement($db); + $paiement->datepaye = $paiementdate; + $paiement->amounts[$facture->id] = $remaintopay; // Array with all payments dispatching with invoice id + $paiement->multicurrency_amounts[$facture->id] = $remaintopay; + $paiement->paiementid = $paiementid; + $paiement_id = $paiement->create($user, 1, $facture->thirdparty); + if ($paiement_id < 0) { + $langs->load("errors"); + setEventMessages($facture->ref.' '.$langs->trans($paiement->error), $paiement->errors, 'errors'); $errorpayment++; + } else { + $result = $paiement->addPaymentToBank($user, 'payment', '', $bankid, '', ''); + if ($result < 0) { + $langs->load("errors"); + setEventMessages($facture->ref.' '.$langs->trans($paiement->error), $paiement->errors, 'errors'); + $errorpayment++; + } } } + } else { + setEventMessage($langs->trans('NoPaymentAvailable', $facture->ref), 'warnings'); + $errorpayment++; } } else { - setEventMessage($langs->trans('NoPaymentAvailable', $facture->ref), 'warnings'); + setEventMessage($langs->trans('BulkPaymentNotPossibleForInvoice', $facture->ref), 'warnings'); $errorpayment++; } - } else { - setEventMessage($langs->trans('NoPaymentAvailable', $facture->ref), 'warnings'); - $errorpayment++; } - } - if (empty($errorpayment)) { - setEventMessage($langs->trans('PaymentRegisteredAndInvoiceSetToPaid', $facture->ref)); + + if (empty($errorpayment)) { + setEventMessage($langs->trans('PaymentRegisteredAndInvoiceSetToPaid', $facture->ref)); + $db->commit(); + } else { + $db->rollback(); + } } } } @@ -1039,8 +1057,9 @@ if ($resql) { 'builddoc'=>img_picto('', 'pdf', 'class="pictofixedwidth"').$langs->trans("PDFMerge"), 'presend'=>img_picto('', 'email', 'class="pictofixedwidth"').$langs->trans("SendByMail"), ); - if ($user->rights->facture->paiement) { - $arrayofmassactions['makepayment'] = $langs->trans("RegisterPaymentAndClasiffiedPayed"); + + if (!empty($user->rights->facture->paiement)) { + $arrayofmassactions['makepayment'] = img_picto('', 'payment', 'class="pictofixedwidth"').$langs->trans("MakePaymentAndClassifyPayed"); } if ($conf->prelevement->enabled && !empty($user->rights->prelevement->bons->creer)) { $langs->load("withdrawals"); @@ -1097,12 +1116,12 @@ if ($resql) { // 'text' => $langs->trans("ConfirmClone"), // array('type' => 'checkbox', 'name' => 'clone_content', 'label' => $langs->trans("CloneMainAttributes"), 'value' => 1), // array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value' => 1), - array('type' => 'date', 'name' => 'datepaiment', 'label' => $langs->trans("Date")), + array('type' => 'date', 'name' => 'datepaiment', 'label' => $langs->trans("Date"), 'datenow' => 1), array('type' => 'other', 'name' => 'paiementid', 'label' => $langs->trans("PaymentMode"), 'value' => $form->select_types_paiements(GETPOST('search_paymentmode'), 'paiementid', '', 0, 0, 1, 0, 1, '', 1)), array('type' => 'other', 'name' => 'bankid', 'label' => $langs->trans("BankAccount"), 'value'=>$form->select_comptes('', 'bankid', 0, '', 0, '', 0, '', 1)), //array('type' => 'other', 'name' => 'invoicesid', 'label' => '', 'value'=>''), ); - $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans('RegisterPaymentAndClasiffiedPayed'), $langs->trans('RegisterPaymentAndClasiffiedPayed', $object->ref), 'makepayment_confirm', $formquestion, 1, 0, 200, 500, 1); + $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans('MakePaymentAndClassifyPayed'), $langs->trans('EnterPaymentReceivedFromCustomer'), 'makepayment_confirm', $formquestion, 1, 0, 200, 500, 1); print $formconfirm; } diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index f7d0155f41e..851323cadd9 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -607,3 +607,5 @@ 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) \ No newline at end of file From ff3fbd1cf8d07090be130202d774f150c43e05ae Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 13:06:51 +0100 Subject: [PATCH 066/225] Fix preselected field --- htdocs/compta/prelevement/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/prelevement/card.php b/htdocs/compta/prelevement/card.php index 3812d72f405..d4311abe112 100644 --- a/htdocs/compta/prelevement/card.php +++ b/htdocs/compta/prelevement/card.php @@ -290,7 +290,7 @@ if ($id > 0 || $ref) { print ''; print ''; print ''; print '
    '.($object->type == Facture::TYPE_CREDIT_NOTE ? $langs->trans("PaymentsBack") : $langs->trans('Payments')).''.$langs->trans('Date').''.$langs->trans('Type').''.$langs->trans('BankAccount').''.$langs->trans('BankAccount').''.$langs->trans('Amount').' 
    '.$langs->trans("NotifyCredit").'
    '.$langs->trans('CreditDate').''; - print $form->selectDate('', '', '', '', '', "infocredit", 1, 1); + print $form->selectDate(-1, '', '', '', '', "infocredit", 1, 1); print '
    '; print '
    '.$langs->trans("ThisWillAlsoAddPaymentOnInvoice").'
    '; From d2af490b33de4e3bf84541305c46f91e97be377d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 13:12:00 +0100 Subject: [PATCH 067/225] Fix missing key on a new table --- .../install/mysql/migration/15.0.0-16.0.0.sql | 3 ++- .../llx_stock_mouvement_extrafields.key.sql | 21 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 htdocs/install/mysql/tables/llx_stock_mouvement_extrafields.key.sql 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 addba742afb..9226326d7f0 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 @@ -96,6 +96,8 @@ CREATE TABLE llx_stock_mouvement_extrafields ( import_key varchar(14) )ENGINE=innodb; +ALTER TABLE llx_stock_mouvement_extrafields ADD INDEX idx_stock_mouvement_extrafields (fk_object); + -- Facture fourn rec CREATE TABLE llx_facture_fourn_rec @@ -142,7 +144,6 @@ CREATE TABLE llx_facture_fourn_rec nb_gen_max integer DEFAULT NULL, auto_validate integer DEFAULT 0, generate_pdf integer DEFAULT 1 - )ENGINE=innodb; ALTER TABLE llx_facture_fourn_rec ADD UNIQUE INDEX uk_facture_fourn_rec_ref (titre, entity); diff --git a/htdocs/install/mysql/tables/llx_stock_mouvement_extrafields.key.sql b/htdocs/install/mysql/tables/llx_stock_mouvement_extrafields.key.sql new file mode 100644 index 00000000000..61909435b00 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_stock_mouvement_extrafields.key.sql @@ -0,0 +1,21 @@ +-- ============================================================================ +-- Copyright (C) 2002-2004 Rodolphe Quiedeville +-- Copyright (C) 2004-2005 Laurent Destailleur +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . +-- +-- ============================================================================ + + +ALTER TABLE llx_stock_mouvement_extrafields ADD INDEX idx_stock_mouvement_extrafields (fk_object); From c4c15fc105b4559968eee365d7fb8aa87a157a30 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 13:16:51 +0100 Subject: [PATCH 068/225] Fix warnings --- htdocs/compta/ajaxpayment.php | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/htdocs/compta/ajaxpayment.php b/htdocs/compta/ajaxpayment.php index d22e1a0182a..bdeeb072e97 100644 --- a/htdocs/compta/ajaxpayment.php +++ b/htdocs/compta/ajaxpayment.php @@ -56,19 +56,23 @@ $currentInvId = $_POST['imgClicked']; // from DOM elements : imgId (equals invoi $amountPayment = $amountPayment != '' ? (is_numeric(price2num($amountPayment)) ? price2num($amountPayment) : '') : ''; // keep void if not a valid entry // Clean checkamounts -foreach ($amounts as $key => $value) { - $value = price2num($value); - $amounts[$key] = $value; - if (empty($value)) { - unset($amounts[$key]); +if (is_array($amounts)) { + foreach ($amounts as $key => $value) { + $value = price2num($value); + $amounts[$key] = $value; + if (empty($value)) { + unset($amounts[$key]); + } } } // Clean remains -foreach ($remains as $key => $value) { - $value = price2num($value); - $remains[$key] = (($invoice_type) == 2 ?-1 : 1) * $value; - if (empty($value)) { - unset($remains[$key]); +if (is_array($remains)) { + foreach ($remains as $key => $value) { + $value = price2num($value); + $remains[$key] = (($invoice_type) == 2 ?-1 : 1) * $value; + if (empty($value)) { + unset($remains[$key]); + } } } From 024f12aa9b0bae18525a5e2990883fe43ec04489 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 13:18:21 +0100 Subject: [PATCH 069/225] Fix php5.6 --- htdocs/fourn/class/fournisseur.facture.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 37d4ee2b11e..656d9468327 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -791,7 +791,7 @@ class FactureFournisseur extends CommonInvoice $_facrec->lines[$i]->ref_supplier, $_facrec->lines[$i]->special_code, 0, - 0, + 0 ); if ($result_insert < 0) { $error++; From 535c04e86e8608c1e6d5514eb3b5b26e43a9bcd3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 14:18:13 +0100 Subject: [PATCH 070/225] Fix region of LIVORNO --- htdocs/install/mysql/data/llx_20_c_departements.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/data/llx_20_c_departements.sql b/htdocs/install/mysql/data/llx_20_c_departements.sql index 4fc9ec26366..47f51f33986 100644 --- a/htdocs/install/mysql/data/llx_20_c_departements.sql +++ b/htdocs/install/mysql/data/llx_20_c_departements.sql @@ -586,7 +586,7 @@ insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom) values (307, 'LT', NULL, NULL, NULL, 'LATINA'); insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom) values (313, 'LE', NULL, NULL, NULL, 'LECCE'); insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom) values (309, 'LC', NULL, NULL, NULL, 'LECCO'); -insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom) values (314, 'LI', NULL, NULL, NULL, 'LIVORNO'); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom) values (316, 'LI', NULL, NULL, NULL, 'LIVORNO'); insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom) values (309, 'LO', NULL, NULL, NULL, 'LODI'); insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom) values (316, 'LU', NULL, NULL, NULL, 'LUCCA'); insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom) values (310, 'MC', NULL, NULL, NULL, 'MACERATA'); From e0377d788cc698178a21f56df5657e39aac2146e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 14:34:04 +0100 Subject: [PATCH 071/225] Send position x,y of cursor into an ACE editors on POST form --- htdocs/core/class/doleditor.class.php | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/htdocs/core/class/doleditor.class.php b/htdocs/core/class/doleditor.class.php index 927674942e7..da98719d828 100644 --- a/htdocs/core/class/doleditor.class.php +++ b/htdocs/core/class/doleditor.class.php @@ -287,6 +287,8 @@ class DolEditor $out .= '">'; $out .= htmlspecialchars($this->content); $out .= ''; + $out .= ''; + $out .= ''; $out .= ''; @@ -315,11 +317,23 @@ class DolEditor $out .= 'jQuery(document).ready(function() { jQuery(".buttonforacesave").click(function() { console.log("We click on savefile button for component '.$this->htmlname.'"); - var aceEditor = window.ace.edit("'.$this->htmlname.'aceeditorid") - console.log(aceEditor.getSession().getValue()); - jQuery("#'.$this->htmlname.'").val(aceEditor.getSession().getValue()); - /*if (jQuery("#'.$this->htmlname.'").html().length > 0) return true; - else return false;*/ + var aceEditor = window.ace.edit("'.$this->htmlname.'aceeditorid"); + if (aceEditor) { + var cursorPos = aceEditor.getCursorPosition(); + console.log(cursorPos); + if (cursorPos) { + jQuery("#'.$this->htmlname.'_x").val(cursorPos.row); + jQuery("#'.$this->htmlname.'_y").val(cursorPos.column); + } + //console.log(aceEditor.getSession().getValue()); + // Inject content of editor into the original HTML field. + jQuery("#'.$this->htmlname.'").val(aceEditor.getSession().getValue()); + /*if (jQuery("#'.$this->htmlname.'").html().length > 0) return true; + else return false;*/ + } else { + console.log("Failed to retrieve js object ACE from its name"); + return false; + } }); })'; $out .= ''."\n"; From cd955930b6ead7a8bcd2e99623d6917bdd06401c Mon Sep 17 00:00:00 2001 From: Quentin VIAL-GOUTEYRON Date: Thu, 10 Feb 2022 15:00:55 +0100 Subject: [PATCH 072/225] change bt link --- htdocs/bom/bom_net_needs.php | 39 +++--------------------------------- htdocs/langs/en_US/mrp.lang | 4 ++-- 2 files changed, 5 insertions(+), 38 deletions(-) diff --git a/htdocs/bom/bom_net_needs.php b/htdocs/bom/bom_net_needs.php index e9f408498f0..4b2d5cdecab 100644 --- a/htdocs/bom/bom_net_needs.php +++ b/htdocs/bom/bom_net_needs.php @@ -128,36 +128,6 @@ $help_url ='EN:Module_BOM'; llxHeader('', $title, $help_url); -// Part to edit record -if (($id || $ref) && $action == 'edit') { - print load_fiche_titre($langs->trans("BillOfMaterials"), '', 'cubes'); - - print ''; - print ''; - print ''; - print ''; - print ''; - - print dol_get_fiche_head(); - - //$object->fields['keyfield']['disabled'] = 1; - - print ''."\n"; - - // Common attributes - include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_edit.tpl.php'; - - // Other attributes - include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_edit.tpl.php'; - - print '
    '; - - print dol_get_fiche_end(); - - print $form->buttonsSaveCancel("Create"); - - print ''; -} // Part to show record if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'create'))) { @@ -214,7 +184,10 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print dol_get_fiche_end(); + $viewlink = dolGetButtonTitle($langs->trans('GroupByProduct'), '', 'fa fa-list-alt imgforviewmode', $_SERVER['PHP_SELF'].'?id='.$object->id.'&token='.newToken(), '', 1, array('morecss' => 'reposition '.($action !== 'treeview' ? 'btnTitleSelected':''))); + $viewlink .= dolGetButtonTitle($langs->trans('TreeStructure'), '', 'fa fa-stream imgforviewmode', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=treeview&token='.newToken(), '', 1, array('morecss' => 'reposition marginleftonly '.($action == 'treeview' ? 'btnTitleSelected':''))); + print load_fiche_titre($langs->trans("BillOfMaterials"), $viewlink, 'cubes'); /* * Lines @@ -304,12 +277,6 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if ($reshook < 0) { setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); } - - if (empty($reshook)) { - if ($action != 'treeview') print ''.$langs->trans("DisplayInTreeStructure").''."\n"; - else print ''.$langs->trans("BackToStandardView").''."\n"; - } - print '
    '; diff --git a/htdocs/langs/en_US/mrp.lang b/htdocs/langs/en_US/mrp.lang index ca902380935..4dc74122ea9 100644 --- a/htdocs/langs/en_US/mrp.lang +++ b/htdocs/langs/en_US/mrp.lang @@ -108,5 +108,5 @@ BOM=Bill Of Materials CollapseBOMHelp=You can define the default display of the details of the nomenclature in the configuration of the BOM module MOAndLines=Manufacturing Orders and lines BOMNetNeeds=Net Needs -DisplayInTreeStructure=Display in tree structure -BackToStandardView=Back to standard view \ No newline at end of file +TreeStructure=Tree structure +GroupByProduct=Group by product \ No newline at end of file From 2b65ba4a457304f0df86544a3d741cffa2bf7dce Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 15:03:41 +0100 Subject: [PATCH 073/225] FIX insert free price using price without tax on order --- htdocs/fourn/commande/card.php | 48 ++++++++++++++++++++-------------- htdocs/fourn/facture/card.php | 7 ++++- 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index ec4ea692f78..35e5257fce0 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -88,7 +88,7 @@ $datelivraison = dol_mktime(GETPOST('liv_hour', 'int'), GETPOST('liv_min', 'int' // Security check -if ($user->socid) { +if (!empty($user->socid)) { $socid = $user->socid; } @@ -162,6 +162,8 @@ if (!empty($conf->projet->enabled)) { $caneditproject = empty($conf->global->SUPPLIER_ORDER_FORBID_EDIT_PROJECT) || ($object->statut == CommandeFournisseur::STATUS_DRAFT && preg_match('/^[\(]?PROV/i', $object->ref)); } +$error = 0; + /* * Actions @@ -181,7 +183,7 @@ if (empty($reshook)) { if (empty($id) && (($action != 'add' && $action != 'create') || $cancel)) { $backtopage = $backurlforlist; } else { - $backtopage = DOL_URL_ROOT.'/fourn/commande/card.php?id='.($id > 0 ? $id : '__ID__'); + $backtopage = DOL_URL_ROOT.'/fourn/commande/card.php?id='.((!empty($id) && $id > 0) ? $id : '__ID__'); } } } @@ -410,22 +412,27 @@ if (empty($reshook)) { // Set if we used free entry or predefined product $predef = ''; $product_desc = (GETPOSTISSET('dp_desc') ? GETPOST('dp_desc', 'restricthtml') : ''); + $price_ht = price2num(GETPOST('price_ht'), 'MU', 2); + $price_ht_devise = price2num(GETPOST('multicurrency_price_ht'), 'CU', 2); $date_start = dol_mktime(GETPOST('date_start'.$predef.'hour'), GETPOST('date_start'.$predef.'min'), GETPOST('date_start'.$predef.'sec'), GETPOST('date_start'.$predef.'month'), GETPOST('date_start'.$predef.'day'), GETPOST('date_start'.$predef.'year')); $date_end = dol_mktime(GETPOST('date_end'.$predef.'hour'), GETPOST('date_end'.$predef.'min'), GETPOST('date_end'.$predef.'sec'), GETPOST('date_end'.$predef.'month'), GETPOST('date_end'.$predef.'day'), GETPOST('date_end'.$predef.'year')); $prod_entry_mode = GETPOST('prod_entry_mode'); if ($prod_entry_mode == 'free') { $idprod = 0; - $price_ht = price2num(GETPOST('price_ht'), 'MU', 2); - $tva_tx = (GETPOST('tva_tx') ? GETPOST('tva_tx') : 0); } else { $idprod = GETPOST('idprod', 'int'); - $price_ht = price2num(GETPOST('price_ht'), 'MU', 2); - $tva_tx = ''; } + $tva_tx = (GETPOST('tva_tx') ? GETPOST('tva_tx') : 0); // Can be '1.2' or '1.2 (CODE)' + + $price_ttc = price2num(GETPOST('price_ttc'), 'MU', 2); + $price_ttc_devise = price2num(GETPOST('multicurrency_price_ttc'), 'CU', 2); $qty = price2num(GETPOST('qty'.$predef, 'alpha'), 'MS'); - $remise_percent = price2num(GETPOST('remise_percent'.$predef), 2); - $price_ht_devise = price2num(GETPOST('multicurrency_price_ht'), 'CU', 2); + + $remise_percent = (GETPOSTISSET('remise_percent'.$predef) ? price2num(GETPOST('remise_percent'.$predef, 'alpha'), '', 2) : 0); + if (empty($remise_percent)) { + $remise_percent = 0; + } // Extrafields $extralabelsline = $extrafields->fetch_name_optionals_label($object->table_element_line); @@ -530,7 +537,7 @@ if (empty($reshook)) { } //If text set in desc is the same as product descpription (as now it's preloaded) whe add it only one time - if ($product_desc==$desc && !empty($conf->global->PRODUIT_AUTOFILL_DESC)) { + if (trim($product_desc) == trim($desc) && !empty($conf->global->PRODUIT_AUTOFILL_DESC)) { $product_desc=''; } @@ -541,11 +548,17 @@ if (empty($reshook)) { $desc = dol_concatdesc($desc, $product_desc, '', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION)); } + $ref_supplier = $productsupplier->ref_supplier; + $type = $productsupplier->type; - if ($price_ht != '' || $price_ht_devise != '') { + if (GETPOST('price_ht') != '' || GETPOST('price_ht_devise') != '') { $price_base_type = 'HT'; $pu = price2num($price_ht, 'MU'); - $pu_ht_devise = price2num($price_ht_devise, 'MU'); + $pu_ht_devise = price2num($price_ht_devise, 'CU'); + } elseif (GETPOST('price_ttc') != '' || GETPOST('price_ttc_devise') != '') { + $price_base_type = 'TTC'; + $pu = price2num($price_ttc, 'MU'); + $pu_ht_devise = price2num($price_ttc_devise, 'CU'); } else { $price_base_type = ($productsupplier->fourn_price_base_type ? $productsupplier->fourn_price_base_type : 'HT'); if (empty($object->multicurrency_code) || ($productsupplier->fourn_multicurrency_code != $object->multicurrency_code)) { // If object is in a different currency and price not in this currency @@ -554,13 +567,9 @@ if (empty($reshook)) { } else { $pu = $productsupplier->fourn_pu; $pu_ht_devise = $productsupplier->fourn_multicurrency_unitprice; - /*var_dump($pu); - var_dump($pu_ht_devise);exit;*/ } } - $ref_supplier = $productsupplier->ref_supplier; - $tva_tx = get_default_tva($object->thirdparty, $mysoc, $productsupplier->id, GETPOST('idprodfournprice', 'alpha')); $tva_npr = get_default_npr($object->thirdparty, $mysoc, $productsupplier->id, GETPOST('idprodfournprice', 'alpha')); if (empty($tva_tx)) { @@ -621,22 +630,22 @@ if (empty($reshook)) { $fk_unit = GETPOST('units', 'alpha'); if (!preg_match('/\((.*)\)/', $tva_tx)) { - $tva_tx = price2num($tva_tx); // When vat is text input field + $tva_tx = price2num($tva_tx); // $txtva can have format '5,1' or '5.1' or '5.1(XXX)', we must clean only if '5,1' } // Local Taxes $localtax1_tx = get_localtax($tva_tx, 1, $mysoc, $object->thirdparty); $localtax2_tx = get_localtax($tva_tx, 2, $mysoc, $object->thirdparty); - if ($price_ht !== '') { + if (GETPOST('price_ht') != '' || GETPOST('price_ht_devise') != '') { $pu_ht = price2num($price_ht, 'MU'); // $pu_ht must be rounded according to settings } else { $pu_ttc = price2num(GETPOST('price_ttc'), 'MU'); $pu_ht = price2num($pu_ttc / (1 + ($tva_tx / 100)), 'MU'); // $pu_ht must be rounded according to settings } $price_base_type = 'HT'; - $pu_ht_devise = price2num($price_ht_devise, 'MU'); - + $pu_ht_devise = price2num($price_ht_devise, 'CU'); + // var_dump($pu_ht.' '.$tva_tx.' '.$pu_ttc.' '.$price_base_type.' '.$pu_ht_devise); exit; $result = $object->addline($desc, $pu_ht, $qty, $tva_tx, $localtax1_tx, $localtax2_tx, 0, 0, $ref_supplier, $remise_percent, $price_base_type, $pu_ttc, $type, '', '', $date_start, $date_end, $array_options, $fk_unit, $pu_ht_devise); } @@ -687,6 +696,7 @@ if (empty($reshook)) { unset($_POST['np_markRate']); unset($_POST['dp_desc']); unset($_POST['idprodfournprice']); + unset($_POST['units']); unset($_POST['date_starthour']); unset($_POST['date_startmin']); diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index f7fc4b028e2..3889ab026a0 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -1336,6 +1336,7 @@ if (empty($reshook)) { setEventMessages($object->error, $object->errors, 'errors'); } } elseif ($action == 'addline' && $usercancreate) { + // Add a product line $db->begin(); $ret = $object->fetch($id); @@ -1368,7 +1369,11 @@ if (empty($reshook)) { $price_ttc = price2num(GETPOST('price_ttc'), 'MU', 2); $price_ttc_devise = price2num(GETPOST('multicurrency_price_ttc'), 'CU', 2); $qty = price2num(GETPOST('qty'.$predef, 'alpha'), 'MS'); - $remise_percent = price2num(GETPOST('remise_percent'.$predef), 2); + + $remise_percent = (GETPOSTISSET('remise_percent'.$predef) ? price2num(GETPOST('remise_percent'.$predef, 'alpha'), '', 2) : 0); + if (empty($remise_percent)) { + $remise_percent = 0; + } // Extrafields $extralabelsline = $extrafields->fetch_name_optionals_label($object->table_element_line); From 9e17fe8f4e95d458ebb3dc3de23606b2c49fa171 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 15:16:59 +0100 Subject: [PATCH 074/225] Fix bad cancelation --- htdocs/fourn/facture/paiement.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/htdocs/fourn/facture/paiement.php b/htdocs/fourn/facture/paiement.php index 848e1a01173..6dc609041c8 100644 --- a/htdocs/fourn/facture/paiement.php +++ b/htdocs/fourn/facture/paiement.php @@ -47,6 +47,9 @@ $langs->loadLangs(array('companies', 'bills', 'banks', 'compta')); $action = GETPOST('action', 'alpha'); $confirm = GETPOST('confirm', 'alpha'); $optioncss = GETPOST('optioncss', 'alpha'); +$cancel = GETPOST('cancel', 'alpha'); +$backtopage = GETPOST('backtopage', 'alpha'); +$backtopageforcancel = GETPOST('backtopageforcancel', 'alpha'); $facid = GETPOST('facid', 'int'); $socid = GETPOST('socid', 'int'); @@ -110,6 +113,18 @@ $arrayfields = array(); * Actions */ +if ($cancel) { + if (!empty($backtopageforcancel)) { + header("Location: ".$backtopageforcancel); + exit; + } elseif (!empty($backtopage)) { + header("Location: ".$backtopage); + exit; + } + header("Location: ".DOL_URL_ROOT.'/fourn/facture/list.php'); + exit; +} + if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All tests are required to be compatible with all browsers $search_ref = ""; $search_account = ""; @@ -779,7 +794,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie print '
    '; print '
    '; print ''; - print '   '; + print '   '; print '
    '; } From 10d2e0cec0830b441d4b883c8948f90ff8b34dfb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 16:27:40 +0100 Subject: [PATCH 075/225] Fix link to reconcile --- htdocs/compta/bank/bankentries_list.php | 4 ++-- htdocs/compta/bank/list.php | 2 +- htdocs/compta/bank/releve.php | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/compta/bank/bankentries_list.php b/htdocs/compta/bank/bankentries_list.php index c05f0f4530c..524d8c79d4a 100644 --- a/htdocs/compta/bank/bankentries_list.php +++ b/htdocs/compta/bank/bankentries_list.php @@ -544,7 +544,7 @@ if ($id > 0 || !empty($ref)) { if ($user->rights->banque->consolidate) { $newparam = $param; $newparam = preg_replace('/search_conciliated=\d+/i', '', $newparam); - $buttonreconcile = ''.$titletoconciliatemanual.''; + $buttonreconcile = ''.$titletoconciliatemanual.''; } else { $buttonreconcile = ''.$titletoconciliatemanual.''; } @@ -554,7 +554,7 @@ if ($id > 0 || !empty($ref)) { if ($user->rights->banque->consolidate) { $newparam = $param; $newparam = preg_replace('/search_conciliated=\d+/i', '', $newparam); - $buttonreconcile .= ' '.$titletoconciliateauto.''; + $buttonreconcile .= ' '.$titletoconciliateauto.''; } else { $buttonreconcile .= ' '.$titletoconciliateauto.''; } diff --git a/htdocs/compta/bank/list.php b/htdocs/compta/bank/list.php index 6815a8d664b..9b9781b31a0 100644 --- a/htdocs/compta/bank/list.php +++ b/htdocs/compta/bank/list.php @@ -626,7 +626,7 @@ foreach ($accounts as $key => $type) { if ($result < 0) { setEventMessages($objecttmp->error, $objecttmp->errors, 'errors'); } else { - print ''; + print ''; print ''; print $result->nbtodo; print ''; diff --git a/htdocs/compta/bank/releve.php b/htdocs/compta/bank/releve.php index 3417f05c817..d21717473ff 100644 --- a/htdocs/compta/bank/releve.php +++ b/htdocs/compta/bank/releve.php @@ -275,7 +275,7 @@ if (empty($numref)) { // If not cash account and can be reconciliate if ($user->rights->banque->consolidate) { - $buttonreconcile = ''.$titletoconciliatemanual.''; + $buttonreconcile = ''.$titletoconciliatemanual.''; } else { $buttonreconcile = ''.$titletoconciliatemanual.''; } @@ -286,7 +286,7 @@ if (empty($numref)) { if ($user->rights->banque->consolidate) { $newparam = $param; $newparam = preg_replace('/search_conciliated=\d+/i', '', $newparam); - $buttonreconcile .= ' '.$titletoconciliateauto.''; + $buttonreconcile .= ' '.$titletoconciliateauto.''; } else { $buttonreconcile .= ' '.$titletoconciliateauto.''; } From 2c6b6ce4d1e2f773f07fd96c0f01b7801ef6553e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 16:35:50 +0100 Subject: [PATCH 076/225] Fix sql syntax error --- .../class/fournisseur.facture-rec.class.php | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.facture-rec.class.php b/htdocs/fourn/class/fournisseur.facture-rec.class.php index a03bd57a193..57717c6f186 100644 --- a/htdocs/fourn/class/fournisseur.facture-rec.class.php +++ b/htdocs/fourn/class/fournisseur.facture-rec.class.php @@ -1120,12 +1120,12 @@ class FactureFournisseurRec extends CommonInvoice $product_type = $product->type; } - $sql = 'UPDATE ' . MAIN_DB_PREFIX . 'facture_fourn_det_rec SET '; - $sql .= 'fk_facture_fourn= ' . $facid;; - $sql .= ', fk_product=' . (! empty($fk_product) ? "'" . $this->db->escape($fk_product) . "'" : 'null'); - $sql .= ", ref='" . $this->db->escape($ref) . "'"; - $sql .= ", label='" . $this->db->escape($label) . "'"; - $sql .= ", description='" . $this->db->escape($desc) . "'"; + $sql = 'UPDATE ' . MAIN_DB_PREFIX . 'facture_fourn_det_rec SET'; + $sql .= ' fk_facture_fourn = ' . ((int) $facid); + $sql .= ', fk_product = ' . ($fk_product > 0 ? ((int) $fk_product) : 'null'); + $sql .= ", ref = '" . $this->db->escape($ref) . "'"; + $sql .= ", label = '" . $this->db->escape($label) . "'"; + $sql .= ", description = '" . $this->db->escape($desc) . "'"; $sql .= ', pu_ht=' . price2num($pu_ht); $sql .= ', qty=' . price2num($qty); $sql .= ", remise_percent='" . price2num($remise_percent) . "'"; @@ -2123,20 +2123,20 @@ class FactureFournisseurLigneRec extends CommonObjectLine $sql .= ' fk_facture_fourn = ' . (int) $this->fk_facture_fourn; $sql .= ', fk_parent_line = ' . (int) $this->fk_parent; $sql .= ', fk_product = ' . (int) $this->fk_product; - $sql .= ', ref = ' . (! empty($this->ref) ? "'" . $this->db->escape($this->ref) . "'" : 'null') . "'"; - $sql .= ", label ='" . (! empty($this->label) ? "'" . $this->db->escape($this->label) . "'" : 'null') . "'"; - $sql .= ", description ='" . $this->db->escape($this->description) . "'"; - $sql .= ', pu_ht =' . price2num($this->pu_ht); - $sql .= ', pu_ttc =' . price2num($this->pu_ttc); - $sql .= ', qty =' . price2num($this->qty); - $sql .= ", remise_percent ='" . price2num($this->remise_percent) . "'"; - $sql .= ', fk_remise_except =' . (int) $this->fk_remise_except; - $sql .= ", vat_src_code ='" . $this->db->escape($this->vat_src_code) . "'"; + $sql .= ', ref = ' . (! empty($this->ref) ? "'" . $this->db->escape($this->ref) . "'" : 'null'); + $sql .= ", label = " . (! empty($this->label) ? "'" . $this->db->escape($this->label) . "'" : 'null'); + $sql .= ", description = '" . $this->db->escape($this->description) . "'"; + $sql .= ', pu_ht = ' . price2num($this->pu_ht); + $sql .= ', pu_ttc = ' . price2num($this->pu_ttc); + $sql .= ', qty = ' . price2num($this->qty); + $sql .= ", remise_percent = '" . price2num($this->remise_percent) . "'"; + $sql .= ', fk_remise_except = ' . (int) $this->fk_remise_except; + $sql .= ", vat_src_code = '" . $this->db->escape($this->vat_src_code) . "'"; $sql .= ', tva_tx =' . price2num($this->tva_tx); - $sql .= ', localtax1_tx =' . price2num($this->localtax1_tx); - $sql .= ", localtax1_type ='" . $this->db->escape($this->localtax1_type) . "'"; - $sql .= ', localtax2_tx =' . price2num($this->localtax2_tx); - $sql .= ", localtax2_type ='" . $this->db->escape($this->localtax2_type) . "'"; + $sql .= ', localtax1_tx = ' . price2num($this->localtax1_tx); + $sql .= ", localtax1_type = '" . $this->db->escape($this->localtax1_type) . "'"; + $sql .= ', localtax2_tx = ' . price2num($this->localtax2_tx); + $sql .= ", localtax2_type = '" . $this->db->escape($this->localtax2_type) . "'"; if (empty($this->skip_update_total)) { $sql .= ', total_ht =' . price2num($this->total_ht); $sql .= ', total_tva =' . price2num($this->total_tva); From d819d427c303c74b31695131a2e73045675fddba Mon Sep 17 00:00:00 2001 From: Quentin VIAL-GOUTEYRON Date: Thu, 10 Feb 2022 16:46:19 +0100 Subject: [PATCH 077/225] FIX sort amount ht --- htdocs/compta/stats/cabyprodserv.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/stats/cabyprodserv.php b/htdocs/compta/stats/cabyprodserv.php index ba09d7e6551..67267288b7a 100644 --- a/htdocs/compta/stats/cabyprodserv.php +++ b/htdocs/compta/stats/cabyprodserv.php @@ -375,7 +375,7 @@ if ($modecompta == 'CREANCES-DETTES') $_SERVER["PHP_SELF"], "amount", "", - $classslink, + $paramslink, 'class="right"', $sortfield, $sortorder From fc36849093a7dc1ac5880069d1fb0709ad5f9902 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 17:31:55 +0100 Subject: [PATCH 078/225] css --- htdocs/theme/eldy/global.inc.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index e1532b338b6..147cd2fe8f9 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -259,7 +259,8 @@ input:invalid, select:invalid, input.--error , select.--error { section.setupsection { padding: 20px; - background-color: var(--colorbacktitle1); + /* background-color: var(--colorbacktitle1); */ + background-color: #f0f0f0; border-radius: 5px; } From 39bd5dd6dce2b5eb8e380c6ce7724a107411515f Mon Sep 17 00:00:00 2001 From: Thomas Negre Date: Thu, 3 Feb 2022 12:08:39 +0100 Subject: [PATCH 079/225] ticket config : add TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND option to config panel --- htdocs/admin/ticket.php | 27 ++++++++++++++++++++++++--- htdocs/langs/en_US/main.lang | 1 + htdocs/langs/en_US/ticket.lang | 3 +++ htdocs/langs/fr_FR/main.lang | 1 + htdocs/langs/fr_FR/ticket.lang | 3 +++ 5 files changed, 32 insertions(+), 3 deletions(-) diff --git a/htdocs/admin/ticket.php b/htdocs/admin/ticket.php index f4e5b4f3fad..1805f5de34d 100644 --- a/htdocs/admin/ticket.php +++ b/htdocs/admin/ticket.php @@ -178,8 +178,14 @@ if ($action == 'setvarother') { $error++; } - $param_auto_assign = GETPOST('TICKET_AUTO_ASSIGN_USER_CREATE', 'alpha'); - $res = dolibarr_set_const($db, 'TICKET_AUTO_ASSIGN_USER_CREATE', $param_auto_assign, 'chaine', 0, '', $conf->entity); + $param_auto_assign = GETPOST('TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND', 'alpha'); + $res = dolibarr_set_const($db, 'TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND', $param_auto_assign, 'chaine', 0, '', $conf->entity); + if (!($res > 0)) { + $error++; + } + + $param_auto_read = GETPOST('TICKET_AUTO_ASSIGN_USER_CREATE', 'alpha'); + $res = dolibarr_set_const($db, 'TICKET_AUTO_ASSIGN_USER_CREATE', $param_auto_read, 'chaine', 0, '', $conf->entity); if (!($res > 0)) { $error++; } @@ -470,7 +476,7 @@ if (!$conf->use_javascript_ajax) { print ''; } -print load_fiche_titre($langs->trans("Other"), '', ''); +print load_fiche_titre($langs->trans("Workflow"), '', ''); print ''; print ''; @@ -479,6 +485,21 @@ print ''; print ''; print "\n"; +// Auto mark ticket read when created from backoffice +print ''; +print ''; +print ''; +print ''; + // Auto assign ticket at user who created it print ''; print ''; @@ -1518,20 +1536,21 @@ if ($id > 0) { // Date start - end print ''; @@ -1972,7 +1991,8 @@ if ($id > 0) { if (empty($object->fulldayevent)) { print dol_print_date($object->datep, 'dayhour', 'tzuser'); } else { - print dol_print_date($object->datep, 'day', 'tzuser'); + $tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT'); + print dol_print_date($object->datep, 'day', ($tzforfullday ? $tzforfullday : 'tzuser')); } if ($object->percentage == 0 && $object->datep && $object->datep < ($now - $delay_warning)) { print img_warning($langs->trans("Late")); @@ -1985,7 +2005,8 @@ if ($id > 0) { if (empty($object->fulldayevent)) { print dol_print_date($object->datef, 'dayhour', 'tzuser'); } else { - print dol_print_date($object->datef, 'day', 'tzuser'); + $tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT'); + print dol_print_date($object->datef, 'day', ($tzforfullday ? $tzforfullday : 'tzuser')); } if ($object->percentage > 0 && $object->percentage < 100 && $object->datef && $object->datef < ($now - $delay_warning)) { print img_warning($langs->trans("Late")); diff --git a/htdocs/comm/action/document.php b/htdocs/comm/action/document.php index c69d396cf26..3de00e9cb6f 100644 --- a/htdocs/comm/action/document.php +++ b/htdocs/comm/action/document.php @@ -201,7 +201,8 @@ if ($object->id > 0) { if (empty($object->fulldayevent)) { print dol_print_date($object->datep, 'dayhour', 'tzuser'); } else { - print dol_print_date($object->datep, 'day', 'tzuser'); + $tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT'); + print dol_print_date($object->datep, 'day', ($tzforfullday ? $tzforfullday : 'tzuser')); } if ($object->percentage == 0 && $object->datep && $object->datep < ($now - $delay_warning)) { print img_warning($langs->trans("Late")); @@ -214,7 +215,8 @@ if ($object->id > 0) { if (empty($object->fulldayevent)) { print dol_print_date($object->datef, 'dayhour', 'tzuser'); } else { - print dol_print_date($object->datef, 'day', 'tzuser'); + $tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT'); + print dol_print_date($object->datef, 'day', ($tzforfullday ? $tzforfullday : 'tzuser')); } if ($object->percentage > 0 && $object->percentage < 100 && $object->datef && $object->datef < ($now - $delay_warning)) { print img_warning($langs->trans("Late")); diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php index 72e50d9292d..81df122f1a9 100644 --- a/htdocs/comm/action/index.php +++ b/htdocs/comm/action/index.php @@ -545,7 +545,8 @@ if ($user->rights->agenda->myactions->create || $user->rights->agenda->allaction $newparam .= '&month='.((int) $month).'&year='.((int) $tmpforcreatebutton['year']).'&mode='.urlencode($mode); //$param='month='.$monthshown.'&year='.$year; - $hourminsec = '100000'; + $hourminsec = dol_print_date(dol_mktime(10, 0, 0, 1, 1, 1970, 'gmt'), '%H', 'gmt').'0000'; // Set $hourminsec to '100000' to auto set hour to 10:00 at creation + $newcardbutton .= dolGetButtonTitle($langs->trans("AddAction"), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/comm/action/card.php?action=create&datep='.sprintf("%04d%02d%02d", $tmpforcreatebutton['year'], $tmpforcreatebutton['mon'], $tmpforcreatebutton['mday']).$hourminsec.'&backtopage='.urlencode($_SERVER["PHP_SELF"].($newparam ? '?'.$newparam : ''))); } @@ -812,17 +813,17 @@ if ($resql) { // event->datep and event->datef must be GMT date. if ($event->fulldayevent) { - // TODO... - $event->datep = $db->jdate($obj->datep); - $event->datef = $db->jdate($obj->datep2); + $tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT'); + $event->datep = $db->jdate($obj->datep, $tzforfullday ? 'tzuser' : 'tzserver'); // If saved in $tzforfullday = gmt, we must invert date to be in user tz + $event->datef = $db->jdate($obj->datep2, $tzforfullday ? 'tzuser' : 'tzserver'); } else { // Example: $obj->datep = '1970-01-01 01:00:00', jdate will return 0 if TZ of PHP server is Europe/Berlin (+1) - $event->datep = $db->jdate($obj->datep); - $event->datef = $db->jdate($obj->datep2); + $event->datep = $db->jdate($obj->datep, 'tzserver'); + $event->datef = $db->jdate($obj->datep2, 'tzserver'); } //$event->datep_formated_gmt = dol_print_date($event->datep, 'dayhour', 'gmt'); - //var_dump($obj->datep); - //var_dump($event->datep); + //var_dump($obj->id.' '.$obj->datep.' '.dol_print_date($obj->datep, 'dayhour', 'gmt')); + //var_dump($obj->id.' '.$event->datep.' '.dol_print_date($event->datep, 'dayhour', 'gmt')); $event->type_code = $obj->type_code; $event->type_label = $obj->type_label; diff --git a/htdocs/comm/action/list.php b/htdocs/comm/action/list.php index de961b5517e..e2b412e15db 100644 --- a/htdocs/comm/action/list.php +++ b/htdocs/comm/action/list.php @@ -693,7 +693,7 @@ $tmpforcreatebutton = dol_getdate(dol_now(), true); $newparam = '&month='.str_pad($month, 2, "0", STR_PAD_LEFT).'&year='.$tmpforcreatebutton['year']; //$param='month='.$monthshown.'&year='.$year; -$hourminsec = '100000'; +$hourminsec = dol_print_date(dol_mktime(10, 0, 0, 1, 1, 1970, 'gmt'), '%H', 'gmt').'0000'; // Set $hourminsec to '100000' to auto set hour to 10:00 at creation $url = DOL_URL_ROOT.'/comm/action/card.php?action=create'; $url .= '&datep='.sprintf("%04d%02d%02d", $tmpforcreatebutton['year'], $tmpforcreatebutton['mon'], $tmpforcreatebutton['mday']).$hourminsec; @@ -953,7 +953,12 @@ while ($i < min($num, $limit)) { // Start date if (!empty($arrayfields['a.datep']['checked'])) { print ''; } diff --git a/htdocs/resource/element_resource.php b/htdocs/resource/element_resource.php index d0ca6416390..068dba8c50a 100644 --- a/htdocs/resource/element_resource.php +++ b/htdocs/resource/element_resource.php @@ -383,7 +383,8 @@ if (!$ret) { if (empty($act->fulldayevent)) { print dol_print_date($act->datep, 'dayhour', 'tzuser'); } else { - print dol_print_date($act->datep, 'day', 'tzuser'); + $tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT'); + print dol_print_date($act->datep, 'day', ($tzforfullday ? $tzforfullday : 'tzuser')); } if ($act->percentage == 0 && $act->datep && $act->datep < ($now - $delay_warning)) { print img_warning($langs->trans("Late")); @@ -396,7 +397,8 @@ if (!$ret) { if (empty($act->fulldayevent)) { print dol_print_date($act->datef, 'dayhour', 'tzuser'); } else { - print dol_print_date($act->datef, 'day', 'tzuser'); + $tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT'); + print dol_print_date($act->datef, 'day', ($tzforfullday ? $tzforfullday : 'tzuser')); } if ($act->percentage > 0 && $act->percentage < 100 && $act->datef && $act->datef < ($now - $delay_warning)) { print img_warning($langs->trans("Late")); From c552030b69863a34404e3e00d3045ff4d7e95818 Mon Sep 17 00:00:00 2001 From: Marc GUENNEUGUES Date: Fri, 11 Feb 2022 15:18:38 +0100 Subject: [PATCH 095/225] Fix urlencode breaking links in Market Place page --- htdocs/admin/dolistore/class/dolistore.class.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/admin/dolistore/class/dolistore.class.php b/htdocs/admin/dolistore/class/dolistore.class.php index 546ef1d57a6..f672cf05a52 100644 --- a/htdocs/admin/dolistore/class/dolistore.class.php +++ b/htdocs/admin/dolistore/class/dolistore.class.php @@ -267,9 +267,9 @@ class Dolistore // add image or default ? if ($product->id_default_image != '') { - $image_url = DOL_URL_ROOT.'/admin/dolistore/ajax/image.php?id_product='.((int) $product->id).'&id_image='.((int) $product->id_default_image); - $images = ''; - $images .= ''; + $image_url = DOL_URL_ROOT.'/admin/dolistore/ajax/image.php?id_product='.urlencode(((int) $product->id)).'&id_image='.urlencode(((int) $product->id_default_image)); + $images = ''; + $images .= ''; } else { $images = ''; } @@ -277,11 +277,11 @@ class Dolistore // free or pay ? if ($product->price > 0) { $price = '

    '.price(price2num($product->price, 'MT'), 0, $langs, 1, -1, -1, 'EUR').' '.$langs->trans("HT").'

    '; - $download_link = ''; + $download_link = ''; } else { $price = '

    '.$langs->trans('Free').'

    '; - $download_link = ''; - $download_link .= '

    '; + $download_link = ''; + $download_link .= '

    '; } // Set and check version From 56f5b471bc9262a1ccd5118653a742c85458f83c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 11 Feb 2022 15:30:45 +0100 Subject: [PATCH 096/225] Fix menu "New" when using paranoiac MAIN_SECURITY_CSRF_WITH_TOKEN = 3 --- htdocs/barcode/printsheet.php | 10 +++++----- htdocs/main.inc.php | 4 +++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/htdocs/barcode/printsheet.php b/htdocs/barcode/printsheet.php index 5128cd56164..8663d50e66a 100644 --- a/htdocs/barcode/printsheet.php +++ b/htdocs/barcode/printsheet.php @@ -374,24 +374,24 @@ jQuery(document).ready(function() { '; // Checkbox to select from free text -print ' '.$langs->trans("FillBarCodeTypeAndValueManually").'   '; +print ''; print '
    '; if (!empty($user->rights->produit->lire) || !empty($user->rights->service->lire)) { - print ' '.$langs->trans("FillBarCodeTypeAndValueFromProduct").'   '; + print ''; print '
    '; print '
    '; $form->select_produits(GETPOST('productid', 'int'), 'productid', '', '', 0, -1, 2, '', 0, array(), 0, '1', 0, 'minwidth400imp', 1); - print '   '; + print '   '; print '
    '; } if (!empty($user->rights->societe->lire)) { - print ' '.$langs->trans("FillBarCodeTypeAndValueFromThirdParty").'   '; + print ''; print '
    '; print '
    '; print $form->select_company(GETPOST('socid', 'int'), 'socid', '', 'SelectThirdParty', 0, 0, array(), 0, 'minwidth300'); - print '   '; + print '   '; print '
    '; } diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 2d977e5a288..8dd5c45642f 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -475,7 +475,9 @@ if ((!defined('NOCSRFCHECK') && empty($dolibarr_nocsrfcheck) && getDolGlobalInt( $sensitiveget = false; if ((GETPOSTISSET('massaction') || GETPOST('action', 'aZ09')) && getDolGlobalInt('MAIN_SECURITY_CSRF_WITH_TOKEN') >= 3) { // All GET actions and mass actions are processed as sensitive. - $sensitiveget = true; + if (GETPOSTISSET('massaction') || !in_array(GETPOST('action', 'aZ09'), array('create', 'file_manager'))) { // We exclude the case action='create' and action='file_manager' that are legitimate + $sensitiveget = true; + } } elseif (getDolGlobalInt('MAIN_SECURITY_CSRF_WITH_TOKEN') >= 2) { // Few GET actions coded with a &token into url are processed as sensitive. $arrayofactiontoforcetokencheck = array( From b623b88674a6dab395d3397e467b3084ccfd0542 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 11 Feb 2022 18:06:39 +0100 Subject: [PATCH 097/225] css --- htdocs/admin/confexped.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/confexped.php b/htdocs/admin/confexped.php index b218a245c99..c2ca271e5ea 100644 --- a/htdocs/admin/confexped.php +++ b/htdocs/admin/confexped.php @@ -107,7 +107,7 @@ print '
    '; print ''; print ''; @@ -376,20 +437,6 @@ if ($mode == 'overwrite') { } if ($mode == 'searchkey') { - $langcode = GETPOSTISSET('langcode') ? GETPOST('langcode') : $langs->defaultlang; - - $newlang = new Translate('', $conf); - $newlang->setDefaultLang($langcode); - - $newlangfileonly = new Translate('', $conf); - $newlangfileonly->setDefaultLang($langcode); - - $recordtoshow = array(); - - // Search modules dirs - $modulesdir = dolGetModulesDirs(); - - $nbtotaloffiles = 0; $nbempty = 0; /*var_dump($langcode); var_dump($transkey); @@ -403,41 +450,10 @@ if ($mode == 'searchkey') { if (empty($transvalue)) { $nbempty++; } + if ($action == 'search' && ($nbempty > 999)) { // 999 to disable this setEventMessages($langs->trans("WarningAtLeastKeyOrTranslationRequired"), null, 'warnings'); } else { - // Search into dir of modules (the $modulesdir is already a list that loop on $conf->file->dol_document_root) - $i = 0; - foreach ($modulesdir as $keydir => $tmpsearchdir) { - $searchdir = $tmpsearchdir; // $searchdir can be '.../htdocs/core/modules/' or '.../htdocs/custom/mymodule/core/modules/' - - // Directory of translation files - $dir_lang = dirname(dirname($searchdir))."/langs/".$langcode; // The 2 dirname is to go up in dir for 2 levels - $dir_lang_osencoded = dol_osencode($dir_lang); - - $filearray = dol_dir_list($dir_lang_osencoded, 'files', 0, '', '', $sortfield, (strtolower($sortorder) == 'asc' ?SORT_ASC:SORT_DESC), 1); - foreach ($filearray as $file) { - $tmpfile = preg_replace('/.lang/i', '', basename($file['name'])); - $moduledirname = (basename(dirname(dirname($dir_lang)))); - - $langkey = $tmpfile; - if ($i > 0) { - $langkey .= '@'.$moduledirname; - } - //var_dump($i.' - '.$keydir.' - '.$dir_lang_osencoded.' -> '.$moduledirname . ' / ' . $tmpfile.' -> '.$langkey); - - $result = $newlang->load($langkey, 0, 0, '', 0); // Load translation files + database overwrite - $result = $newlangfileonly->load($langkey, 0, 0, '', 1); // Load translation files only - if ($result < 0) { - print 'Failed to load language file '.$tmpfile.'
    '."\n"; - } else { - $nbtotaloffiles++; - } - //print 'After loading lang '.$langkey.', newlang has '.count($newlang->tab_translate).' records
    '."\n"; - } - $i++; - } - // Now search into translation array foreach ($newlang->tab_translate as $key => $val) { if ($transkey && !preg_match('/'.preg_quote($transkey, '/').'/i', $key)) { @@ -532,8 +548,12 @@ if ($mode == 'searchkey') { break; } print ''; + print ''."\n"; +print 'global->MAIN_INFO_ACCOUNTANT_NAME) ? ' autofocus="autofocus"' : '').'>'."\n"; // Address print ''."\n"; + print 'global->MAIN_INFO_OPENINGHOURS_MONDAY) ? ' autofocus="autofocus"' : '').'>'."\n"; print ''; + $totalarray['nbfield'] = 0; foreach ($object->fields as $key => $val) { $cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']); if (in_array($val['type'], array('date', 'datetime', 'timestamp'))) { From f2d5e43381948ae6a4a53996e2d9034dd7da7ed6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 14 Feb 2022 12:25:48 +0100 Subject: [PATCH 116/225] Fix showempty for select_salesrepresentatives --- htdocs/core/class/html.formother.class.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php index c47646419aa..22cdde32b1b 100644 --- a/htdocs/core/class/html.formother.class.php +++ b/htdocs/core/class/html.formother.class.php @@ -460,7 +460,7 @@ class FormOther * @param string $htmlname Name of combo list (example: 'search_sale') * @param User $user Object user * @param int $showstatus 0=show user status only if status is disabled, 1=always show user status into label, -1=never show user status - * @param int|string $showempty 1=show also an empty value + * @param int|string $showempty 1=show also an empty value or text to show for empty * @param string $morecss More CSS * @param int $norepresentative Show also an entry "Not categorized" * @return string Html combo list code @@ -489,12 +489,12 @@ class FormOther $out .= ''; + print ''; print ''; @@ -665,7 +665,7 @@ if ($result) { print ''; // VAT Num - print ''; + print ''; // Found accounts print ''; - print ''; + print ''; + print ''; // Found accounts print ''; - print ''; + print ''; print ''; // VAT Num - print ''; + print ''; // Found accounts print ''; - print ''; print ''; // VAT Num - print ''; + print ''; // Found accounts print ''; + $cursormonth = $j; + if ($cursormonth > 12) { + $cursormonth -= 12; + } + $cursoryear = ($cursormonth < ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1)) ? $y + 1 : $y; + $tmp = dol_getdate(dol_get_last_day($cursoryear, $cursormonth, 'gmt'), false, 'gmt'); + + print ''; } print ''; diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index 893f448bbf8..a44c819aa78 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -294,7 +294,7 @@ Balancing=Balancing FicheVentilation=Binding card GeneralLedgerIsWritten=Transactions are written in the Ledger GeneralLedgerSomeRecordWasNotRecorded=Some of the transactions could not be journalized. If there is no other error message, this is probably because they were already journalized. -NoNewRecordSaved=No more record to journalize +NoNewRecordSaved=No more record to transfer ListOfProductsWithoutAccountingAccount=List of products not bound to any accounting account ChangeBinding=Change the binding Accounted=Accounted in ledger From 9173eec8acb186c8683025307730fc1ea58922bc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 14 Feb 2022 23:02:43 +0100 Subject: [PATCH 129/225] Fix input lost --- htdocs/product/fournisseurs.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/fournisseurs.php b/htdocs/product/fournisseurs.php index 98ab414a8c3..3bf563c82f7 100644 --- a/htdocs/product/fournisseurs.php +++ b/htdocs/product/fournisseurs.php @@ -612,7 +612,7 @@ if ($id > 0 || $ref) { $default_vat = $object->tva_tx; } } - $vattosuggest = (GETPOST("tva_tx") ?vatrate(GETPOST("tva_tx")) : ($default_vat != '' ?vatrate($default_vat) : '')); + $vattosuggest = (GETPOSTISSET("tva_tx") ? vatrate(GETPOST("tva_tx")) : ($default_vat != '' ?vatrate($default_vat) : '')); $vattosuggest = preg_replace('/\s*\(.*\)$/', '', $vattosuggest); print ''; print ''; From 533bf15b869fda5bd14d8c0797e320560b8254b0 Mon Sep 17 00:00:00 2001 From: lvessiller Date: Tue, 15 Feb 2022 09:54:40 +0100 Subject: [PATCH 130/225] NEW add triiger and event on totally received status --- htdocs/reception/class/reception.class.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/htdocs/reception/class/reception.class.php b/htdocs/reception/class/reception.class.php index 7efcb2360dc..bb54a8164cd 100644 --- a/htdocs/reception/class/reception.class.php +++ b/htdocs/reception/class/reception.class.php @@ -640,9 +640,18 @@ class Reception extends CommonObject if ($status < 0) { $error++; } else { - $ret = $this->setStatut($status, $this->origin_id, 'commande_fournisseur'); - if (!$ret) { - $error++; + $trigger_key = ''; + if ($status == CommandeFournisseur::STATUS_RECEIVED_COMPLETELY) { + $ret = $this->commandeFournisseur->Livraison($user, dol_now(), 'tot', ''); + if ($ret < 0) { + $error++; + $this->errors = array_merge($this->errors, $this->commandeFournisseur->errors); + } + } else { + $ret = $this->setStatut($status, $this->origin_id, 'commande_fournisseur', $trigger_key); + if ($ret < 0) { + $error++; + } } } From af0000d568ca1cb552c3eece2d91a3e99a1402b9 Mon Sep 17 00:00:00 2001 From: Vincent Dieltiens Date: Tue, 15 Feb 2022 09:51:28 +0100 Subject: [PATCH 131/225] Fixes expensereport downloads --- htdocs/core/lib/security.lib.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/security.lib.php b/htdocs/core/lib/security.lib.php index 4a20fbf96f2..ccdfa261fc8 100644 --- a/htdocs/core/lib/security.lib.php +++ b/htdocs/core/lib/security.lib.php @@ -892,8 +892,10 @@ function checkUserAccessToObject($user, array $featuresarray, $object = 0, $tabl } if ($feature == 'expensereport') { $useridtocheck = $object->fk_user_author; - if (!in_array($useridtocheck, $childids)) { - return false; + if (!$user->rights->expensereport->readall) { + if (!in_array($useridtocheck, $childids)) { + return false; + } } } } From 6c6c854eae8553c7abb416dfb53caeb7f1d0ff70 Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Tue, 15 Feb 2022 10:23:43 +0100 Subject: [PATCH 132/225] fix parent line on create with origin --- htdocs/commande/card.php | 2 +- htdocs/compta/facture/card.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index e00ff6a1763..640b990a3cb 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -401,7 +401,7 @@ if (empty($reshook)) } // Defined the new fk_parent_line - if ($result > 0 && $lines[$i]->product_type == 9) { + if ($result > 0) { $fk_parent_line = $result; } } diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index d3e5a0062b0..a219da84bd4 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -1220,7 +1220,7 @@ if (empty($reshook)) $object->lines[] = $line; // insert new line in current object // Defined the new fk_parent_line - if ($result > 0 && $line->product_type == 9) { + if ($result > 0) { $fk_parent_line = $result; } } @@ -1666,7 +1666,7 @@ if (empty($reshook)) } // Defined the new fk_parent_line - if ($result > 0 && $lines[$i]->product_type == 9) { + if ($result > 0) { $fk_parent_line = $result; } } From 34d2e0b8b406a01c103df1498a3af995550931ec Mon Sep 17 00:00:00 2001 From: Adrien Raze Date: Tue, 15 Feb 2022 10:29:42 +0100 Subject: [PATCH 133/225] FIX : Fixed sub bom costs problems --- htdocs/bom/bom_card.php | 2 +- htdocs/bom/class/bom.class.php | 2 +- htdocs/bom/tpl/objectline_view.tpl.php | 22 ++++++++++++++-------- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/htdocs/bom/bom_card.php b/htdocs/bom/bom_card.php index cbd730e5d23..6f748df22e4 100644 --- a/htdocs/bom/bom_card.php +++ b/htdocs/bom/bom_card.php @@ -518,7 +518,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea // Common attributes $keyforbreak = 'duration'; include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_view.tpl.php'; - + $object->calculateCosts(); print ''; print ''; diff --git a/htdocs/bom/class/bom.class.php b/htdocs/bom/class/bom.class.php index 5f732c47300..4bdf349eae5 100644 --- a/htdocs/bom/class/bom.class.php +++ b/htdocs/bom/class/bom.class.php @@ -1085,7 +1085,7 @@ class BOM extends CommonObject $res = $bom_child->fetch($line->fk_bom_child); if ($res>0) { $bom_child->calculateCosts(); - $this->total_cost += $bom_child->total_cost; + $this->total_cost += $bom_child->total_cost * $line->qty; } else { $this->error = $bom_child->error; return -2; diff --git a/htdocs/bom/tpl/objectline_view.tpl.php b/htdocs/bom/tpl/objectline_view.tpl.php index b72ed043581..14cfd22c39e 100644 --- a/htdocs/bom/tpl/objectline_view.tpl.php +++ b/htdocs/bom/tpl/objectline_view.tpl.php @@ -180,6 +180,7 @@ if ($action == 'selectlines') { print ''; // Select of all the sub-BOM lines +// From this pont to the end of the file, we only take care of sub-BOM lines $sql = 'SELECT rowid, fk_bom_child, fk_product, qty FROM '.MAIN_DB_PREFIX.'bom_bomline AS bl'; $sql.= ' WHERE fk_bom ='. (int) $tmpbom->id; $resql = $object->db->query($sql); @@ -191,7 +192,9 @@ if ($resql) { $sub_bom_product->fetch($obj->fk_product); $sub_bom = new BOM($object->db); - $sub_bom->fetch($obj->fk_bom_child); + if(!empty($obj->fk_bom_child)){ + $sub_bom->fetch($obj->fk_bom_child); + } $sub_bom_line = new BOMLine($object->db); $sub_bom_line->fetch($obj->rowid); @@ -233,20 +236,23 @@ if ($resql) { // Efficiency print ''; - // Cost price if it's defined - if ($sub_bom_product->cost_price > 0) { - print ''; - $total_cost+= $sub_bom_product->cost_price * $line->qty; + if(!empty($sub_bom->id)){ + $sub_bom->calculateCosts(); + print ''; + $total_cost+= $sub_bom->total_cost * $sub_bom_line->qty * $line->qty; + } elseif ($sub_bom_product->cost_price > 0) { + print ''; + $total_cost+= $sub_bom_product->cost_price * $sub_bom_line->qty * $line->qty; } elseif ($sub_bom_product->pmp > 0) { // PMP if cost price isn't defined - print ''; - $total_cost.= $sub_bom_product->pmp * $line->qty; + print ''; + $total_cost.= $sub_bom_product->pmp * $sub_bom_line->qty * $line->qty; } else { // Minimum purchase price if cost price and PMP aren't defined $sql_supplier_price = 'SELECT MIN(price) AS min_price, quantity AS qty FROM '.MAIN_DB_PREFIX.'product_fournisseur_price'; $sql_supplier_price.= ' WHERE fk_product = '. (int) $sub_bom_product->id; $resql_supplier_price = $object->db->query($sql_supplier_price); if ($resql_supplier_price) { $obj = $object->db->fetch_object($resql_supplier_price); - $line_cost = $obj->min_price/$obj->qty * $sub_bom_line->qty; + $line_cost = $obj->min_price/$obj->qty * $sub_bom_line->qty * $line->qty; print ''; $total_cost+= $line_cost; From 01ef9b64eebecc2660495a48a74bb7fd5b369a55 Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Tue, 15 Feb 2022 10:34:10 +0100 Subject: [PATCH 134/225] fix parent line on create with no originid --- htdocs/commande/class/commande.class.php | 2 +- htdocs/compta/facture/class/facture.class.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 53bf6dd29f2..983e3ae8205 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -1054,7 +1054,7 @@ class Commande extends CommonOrder return -1; } // Defined the new fk_parent_line - if ($result > 0 && $line->product_type == 9) { + if ($result > 0) { $fk_parent_line = $result; } } diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 63a7b2f8e21..4caa61e1aad 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -790,7 +790,7 @@ class Facture extends CommonInvoice $result = $newinvoiceline->insert(); // Defined the new fk_parent_line - if ($result > 0 && $newinvoiceline->product_type == 9) { + if ($result > 0) { $fk_parent_line = $result; } } From 288c58e533fe10186c3a83d6ac89ab1d96d3370f Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Tue, 15 Feb 2022 10:41:21 +0100 Subject: [PATCH 135/225] fix parent line on propal --- 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 3766c7ba1a1..907236b8b9a 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -1213,7 +1213,7 @@ class Propal extends CommonObject break; } // Defined the new fk_parent_line - if ($result > 0 && $line->product_type == 9) { + if ($result > 0) { $fk_parent_line = $result; } } From 885d188be341e8187f626074b7f52535973f4847 Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Tue, 15 Feb 2022 10:41:55 +0100 Subject: [PATCH 136/225] use of require_once --- htdocs/knowledgemanagement/knowledgerecord_list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/knowledgemanagement/knowledgerecord_list.php b/htdocs/knowledgemanagement/knowledgerecord_list.php index 88d7e46506d..675f6e4397f 100644 --- a/htdocs/knowledgemanagement/knowledgerecord_list.php +++ b/htdocs/knowledgemanagement/knowledgerecord_list.php @@ -35,7 +35,7 @@ require_once DOL_DOCUMENT_ROOT.'/knowledgemanagement/class/knowledgerecord.class // for other modules if (!empty($conf->categorie->enabled)) { - dol_include_once('/categories/class/categorie.class.php'); + require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; } //dol_include_once('/othermodule/class/otherobject.class.php'); From c90f9b5681bf037fe55da449092fa8235bb77694 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 15 Feb 2022 10:51:06 +0100 Subject: [PATCH 137/225] add hook in order tooltip --- htdocs/commande/class/commande.class.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index c315a4fcd61..bcc25dbea6f 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -11,7 +11,7 @@ * Copyright (C) 2014-2015 Marcos García * Copyright (C) 2018 Nicolas ZABOURI * Copyright (C) 2016-2018 Ferran Marcet - * Copyright (C) 2021 Frédéric France + * Copyright (C) 2021-2022 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 @@ -3764,6 +3764,15 @@ class Commande extends CommonOrder } } + global $action; + $hookmanager->initHooks(array('orderdao')); + $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } From b2815c4973f7ace9403d7979a0aa84580096ae67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 15 Feb 2022 10:53:33 +0100 Subject: [PATCH 138/225] add hook in propal tooltip --- htdocs/comm/propal/class/propal.class.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 1c532e26147..7b35cbd1148 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -3690,6 +3690,15 @@ class Propal extends CommonObject } } + global $action; + $hookmanager->initHooks(array('propaldao')); + $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } From 11fc0da398b29bd2ce80e91957c6566f7ed8d1f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 15 Feb 2022 11:00:05 +0100 Subject: [PATCH 139/225] Update fournisseur.commande.class.php --- htdocs/fourn/class/fournisseur.commande.class.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 3ba9a23db08..f0e3a126cab 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -9,7 +9,7 @@ * Copyright (C) 2013 Florian Henry * Copyright (C) 2013 Cédric Salvador * Copyright (C) 2018 Nicolas ZABOURI - * Copyright (C) 2018-2020 Frédéric France + * Copyright (C) 2018-2022 Frédéric France * Copyright (C) 2018-2021 Ferran Marcet * Copyright (C) 2021 Josep Lluís Amador * @@ -873,6 +873,15 @@ class CommandeFournisseur extends CommonOrder } } + global $action; + $hookmanager->initHooks(array($this->element . 'dao')); + $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } From 09c9b28b572a0503dbc00a992e41e94f0f6018ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 15 Feb 2022 11:02:22 +0100 Subject: [PATCH 140/225] Update commande.class.php --- htdocs/commande/class/commande.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index bcc25dbea6f..46fdfb3f983 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -3765,7 +3765,7 @@ class Commande extends CommonOrder } global $action; - $hookmanager->initHooks(array('orderdao')); + $hookmanager->initHooks(array($this->element . 'dao')); $parameters = array('id'=>$this->id, 'getnomurl'=>$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { From 1b53ed09f99556696d29023fe5988a63c8ea9fb3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 15 Feb 2022 11:03:48 +0100 Subject: [PATCH 141/225] Work on custom report feature --- htdocs/api/class/api.class.php | 1 + htdocs/api/class/api_setup.class.php | 42 +++++++++--------- htdocs/contrat/class/contrat.class.php | 34 +++++++++++++++ htdocs/core/class/commonobject.class.php | 5 +++ htdocs/core/class/html.form.class.php | 51 +++++++++++++++++----- htdocs/core/class/html.formother.class.php | 20 +++++---- htdocs/core/customreports.php | 29 ++++++++---- htdocs/core/lib/functions.lib.php | 2 +- htdocs/langs/en_US/contracts.lang | 1 + htdocs/theme/eldy/global.inc.php | 38 ++++++++++++++-- htdocs/theme/md/style.css.php | 46 ++++++++++++++++++- 11 files changed, 211 insertions(+), 58 deletions(-) diff --git a/htdocs/api/class/api.class.php b/htdocs/api/class/api.class.php index 2a6b5f33a27..fa21c37649f 100644 --- a/htdocs/api/class/api.class.php +++ b/htdocs/api/class/api.class.php @@ -173,6 +173,7 @@ class DolibarrApi unset($object->stats_mrptoproduce); unset($object->element); + unset($object->element_for_permission); unset($object->fk_element); unset($object->table_element); unset($object->table_element_line); diff --git a/htdocs/api/class/api_setup.class.php b/htdocs/api/class/api_setup.class.php index 15a29c0e18b..c1735d56e50 100644 --- a/htdocs/api/class/api_setup.class.php +++ b/htdocs/api/class/api_setup.class.php @@ -209,7 +209,7 @@ class Setup extends DolibarrApi if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; + $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -272,7 +272,7 @@ class Setup extends DolibarrApi if ($sqlfilters) { $errormessage = ''; if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; @@ -373,7 +373,7 @@ class Setup extends DolibarrApi if ($sqlfilters) { $errormessage = ''; if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; @@ -665,7 +665,7 @@ class Setup extends DolibarrApi if ($sqlfilters) { $errormessage = ''; if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; @@ -729,7 +729,7 @@ class Setup extends DolibarrApi if ($sqlfilters) { $errormessage = ''; if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; @@ -797,7 +797,7 @@ class Setup extends DolibarrApi if ($sqlfilters) { $errormessage = ''; if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; @@ -860,7 +860,7 @@ class Setup extends DolibarrApi if ($sqlfilters) { $errormessage = ''; if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; @@ -933,7 +933,7 @@ class Setup extends DolibarrApi if ($sqlfilters) { $errormessage = ''; if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; @@ -1004,7 +1004,7 @@ class Setup extends DolibarrApi if ($sqlfilters) { $errormessage = ''; if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; @@ -1078,7 +1078,7 @@ class Setup extends DolibarrApi if ($sqlfilters) { $errormessage = ''; if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; @@ -1143,9 +1143,9 @@ class Setup extends DolibarrApi if ($sqlfilters) { $errormessage = ''; if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(400, 'error when validating parameter sqlfilters -> '.$errormessage); + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; + $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -1202,9 +1202,9 @@ class Setup extends DolibarrApi if ($sqlfilters) { $errormessage = ''; if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(400, 'error when validating parameter sqlfilters -> '.$errormessage); + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } - $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; + $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; } @@ -1261,7 +1261,7 @@ class Setup extends DolibarrApi if ($sqlfilters) { $errormessage = ''; if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; @@ -1324,7 +1324,7 @@ class Setup extends DolibarrApi if ($sqlfilters) { $errormessage = ''; if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; @@ -1383,7 +1383,7 @@ class Setup extends DolibarrApi if ($sqlfilters) { $errormessage = ''; if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; @@ -1449,7 +1449,7 @@ class Setup extends DolibarrApi if ($sqlfilters) { $errormessage = ''; if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; @@ -1508,7 +1508,7 @@ class Setup extends DolibarrApi if ($sqlfilters) { $errormessage = ''; if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; @@ -1567,7 +1567,7 @@ class Setup extends DolibarrApi if ($sqlfilters) { $errormessage = ''; if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage); } $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; @@ -1628,7 +1628,7 @@ class Setup extends DolibarrApi if ($sqlfilters) { $errormessage = ''; if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { - throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$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/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index b2c9543453b..fb064a317fd 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -2591,6 +2591,12 @@ class ContratLigne extends CommonObjectLine */ public $table_element = 'contratdet'; + + /** + * @var string Name to use for 'features' parameter to check module permissions with restrictedArea() + */ + public $element_for_permission = 'contrat'; + /** * @var int ID */ @@ -2723,6 +2729,34 @@ class ContratLigne extends CommonObjectLine const STATUS_CLOSED = 5; + // BEGIN MODULEBUILDER PROPERTIES + /** + * @var array Array with all fields and their property. Do not use it as a static var. It may be modified by constructor. + */ + public $fields = array( + 'rowid' =>array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>10), + 'entity' =>array('type'=>'integer', 'label'=>'Entity', 'default'=>1, 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'position'=>30, 'index'=>1), + 'tms' =>array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>35), + 'qty' =>array('type'=>'integer', 'label'=>'Quantity', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>35, 'isameasure'=>1), + 'total_ht' =>array('type'=>'integer', 'label'=>'AmountHT', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>36, 'isameasure'=>1), + 'total_tva' =>array('type'=>'integer', 'label'=>'AmountVAT', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>37, 'isameasure'=>1), + 'total_ttc' =>array('type'=>'integer', 'label'=>'AmountTTC', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>38, 'isameasure'=>1), + //'datec' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-1, 'position'=>40), + //'fk_soc' =>array('type'=>'integer:Societe:societe/class/societe.class.php', 'label'=>'ThirdParty', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>70), + 'fk_contrat' =>array('type'=>'integer:Contrat:contrat/class/contrat.class.php', 'label'=>'Contract', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>70), + 'fk_product' =>array('type'=>'integer:Product:product/class/product.class.php:1', 'label'=>'Product', 'enabled'=>1, 'visible'=>-1, 'position'=>75), + //'fk_user_author' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'Fk user author', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>90), + 'note_private' =>array('type'=>'text', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>105), + 'note_public' =>array('type'=>'text', 'label'=>'NotePrivate', 'enabled'=>1, 'visible'=>0, 'position'=>110), + //'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>1, 'visible'=>0, 'position'=>115), + //'import_key' =>array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>1, 'visible'=>-2, 'position'=>120), + //'extraparams' =>array('type'=>'varchar(255)', 'label'=>'Extraparams', 'enabled'=>1, 'visible'=>-1, 'position'=>125), + 'fk_user_ouverture' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserOpen', 'enabled'=>1, 'visible'=>-2, 'notnull'=>-1, 'position'=>135), + 'fk_user_cloture' =>array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserCloture', 'enabled'=>1, 'visible'=>-2, 'notnull'=>-1, 'position'=>135), + 'statut' =>array('type'=>'smallint(6)', 'label'=>'Statut', 'enabled'=>1, 'visible'=>-1, 'position'=>500, 'arrayofkeyval'=>array(0=>'Draft', 4=>'Open', 5=>'Closed')) + ); + // END MODULEBUILDER PROPERTIES + /** * Constructor diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 87f6ba693fc..ab4d40456b4 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -83,6 +83,11 @@ abstract class CommonObject */ public $element; + /** + * @var string Name to use for 'features' parameter to check module permissions with restrictedArea(). Undefined means same value than $element. + */ + public $element_for_permission; + /** * @var string Name of table without prefix where object is stored */ diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 09225f97158..70bf1eeb2df 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -9744,24 +9744,45 @@ class Form $ret = ''; - $ret .= '
    '; + $ret .= '
    '; //$ret .= ''; $ret .= ''; - $ret .= ''; - $ret .= $langs->trans("Filters"); + $ret .= ''; + //$ret .= $langs->trans("Filters"); $ret .= ''; - //$ret .= ''; - $ret .= '
    '; - $texttoshow = '
    '.$langs->trans("Search").'
    '; - $ret .= '
    '.$texttoshow.'
    '; - $ret .= '
    '; - $ret .= "\n"; - if (GETPOST('show_search_component_params_hidden', 'int')) { + $ret .= '
    '; + + // Show select fields as tags. + $ret .= '
    '; + + if ($search_component_params_hidden) { + if (!preg_match('/^\(.*\)$/', $search_component_params_hidden)) { // If $search_component_params_hidden does not start and end with () + $search_component_params_hidden .= '('.$search_component_params_hidden.')'; + } + $errormessage = ''; + if (!dolCheckFilters($search_component_params_hidden, $errormessage)) { + print 'ERROR in parsing search string'; + } + $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; + //var_dump($search_component_params_hidden); + $htmltags = preg_replace_callback('/'.$regexstring.'/', 'dolForgeCriteriaCallback', $search_component_params_hidden); + //var_dump($htmltags); + $ret .= 'x '.$htmltags.''; + } + + //$ret .= ''; + + //$ret .= search_component_params + //$texttoshow = '
    '.$langs->trans("Search").'
    '; + //$ret .= '
    '.$texttoshow.'
    '; + + $show_search_component_params_hidden = 1; + if ($show_search_component_params_hidden) { $ret .= ''; } - $ret .= ''; - + $ret .= ""; + $ret .= ''; // For compatibility with forms that show themself the search criteria in addition of this component, we output the fields foreach ($arrayofcriterias as $criterias) { foreach ($criterias as $criteriafamilykey => $criteriafamilyval) { @@ -9785,8 +9806,14 @@ class Form } } } + $ret .= '
    '; + $ret .= "\n"; + $ret .= ''; + + $ret .= '
    '; + $ret .= '
    '; return $ret; } diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php index 22cdde32b1b..ad0c74ab9a8 100644 --- a/htdocs/core/class/html.formother.class.php +++ b/htdocs/core/class/html.formother.class.php @@ -1479,9 +1479,10 @@ class FormOther * @param array $search_groupby Array of preselected fields * @param array $arrayofgroupby Array of groupby to fill * @param string $morecss More CSS + * @param string $showempty '1' or 'text' * @return string HTML string component */ - public function selectGroupByField($object, $search_groupby, &$arrayofgroupby, $morecss = 'minwidth200 maxwidth250') + public function selectGroupByField($object, $search_groupby, &$arrayofgroupby, $morecss = 'minwidth200 maxwidth250', $showempty = '1') { global $langs, $extrafields, $form; @@ -1493,7 +1494,7 @@ class FormOther $SS = substr($langs->trans("Second"), 0, 1).substr($langs->trans("Second"), 0, 1); foreach ($object->fields as $key => $val) { - if (!$val['measure']) { + if (!$val['isameasure']) { if (in_array($key, array( 'id', 'ref_int', 'ref_ext', 'rowid', 'entity', 'last_main_doc', 'logo', 'logo_squarred', 'extraparams', 'parent', 'photo', 'socialnetworks', 'webservices_url', 'webservices_key'))) { @@ -1541,7 +1542,7 @@ class FormOther foreach ($arrayofgroupby as $key => $val) { $arrayofgroupbylabel[$key] = $val['label']; } - $result = $form->selectarray('search_groupby', $arrayofgroupbylabel, $search_groupby, 1, 0, 0, '', 0, 0, 0, '', $morecss, 1); + $result = $form->selectarray('search_groupby', $arrayofgroupbylabel, $search_groupby, $showempty, 0, 0, '', 0, 0, 0, '', $morecss, 1); return $result; } @@ -1552,9 +1553,10 @@ class FormOther * @param mixed $object Object analyzed * @param array $search_xaxis Array of preselected fields * @param array $arrayofxaxis Array of groupby to fill - * @return string HTML string component + * @param string $showempty '1' or 'text' + * @return string HTML string component */ - public function selectXAxisField($object, $search_xaxis, &$arrayofxaxis) + public function selectXAxisField($object, $search_xaxis, &$arrayofxaxis, $showempty = '1') { global $langs, $extrafields, $form; @@ -1589,9 +1591,9 @@ class FormOther continue; } if (in_array($val['type'], array('timestamp', 'date', 'datetime'))) { - $arrayofxaxis['t.'.$key.'-year'] = array('label' => $langs->trans($val['label']).' ('.$YYYY.')', 'position' => $val['position'].'-y'); - $arrayofxaxis['t.'.$key.'-month'] = array('label' => $langs->trans($val['label']).' ('.$YYYY.'-'.$MM.')', 'position' => $val['position'].'-m'); - $arrayofxaxis['t.'.$key.'-day'] = array('label' => $langs->trans($val['label']).' ('.$YYYY.'-'.$MM.'-'.$DD.')', 'position' => $val['position'].'-d'); + $arrayofxaxis['t.'.$key.'-year'] = array('label' => $langs->trans($val['label']).' ('.$YYYY.')', 'position' => $val['position'].'-y'); + $arrayofxaxis['t.'.$key.'-month'] = array('label' => $langs->trans($val['label']).' ('.$YYYY.'-'.$MM.')', 'position' => $val['position'].'-m'); + $arrayofxaxis['t.'.$key.'-day'] = array('label' => $langs->trans($val['label']).' ('.$YYYY.'-'.$MM.'-'.$DD.')', 'position' => $val['position'].'-d'); } else { $arrayofxaxis['t.'.$key] = array('label' => $langs->trans($val['label']), 'position' => (int) $val['position']); } @@ -1617,7 +1619,7 @@ class FormOther foreach ($arrayofxaxis as $key => $val) { $arrayofxaxislabel[$key] = $val['label']; } - $result = $form->selectarray('search_xaxis', $arrayofxaxislabel, $search_xaxis, 1, 0, 0, '', 0, 0, 0, '', 'minwidth250', 1); + $result = $form->selectarray('search_xaxis', $arrayofxaxislabel, $search_xaxis, $showempty, 0, 0, '', 0, 0, 0, '', 'minwidth250', 1); return $result; } diff --git a/htdocs/core/customreports.php b/htdocs/core/customreports.php index fafd1c015e8..dcedf1405f8 100644 --- a/htdocs/core/customreports.php +++ b/htdocs/core/customreports.php @@ -99,7 +99,8 @@ $arrayoftype = array( 'order' => array('label' => 'Orders', 'ObjectClassName' => 'Commande', 'enabled' => $conf->commande->enabled, 'ClassPath' => "/commande/class/commande.class.php"), 'invoice' => array('label' => 'Invoices', 'ObjectClassName' => 'Facture', 'enabled' => $conf->facture->enabled, 'ClassPath' => "/compta/facture/class/facture.class.php"), 'invoice_template'=>array('label' => 'PredefinedInvoices', 'ObjectClassName' => 'FactureRec', 'enabled' => $conf->facture->enabled, 'ClassPath' => "/compta/class/facturerec.class.php", 'langs'=>'bills'), - 'contract' => array('label' => 'Contracts', 'ObjectClassName' => 'Contrat', 'enabled' => $conf->contrat->enabled, 'ClassPath' => "/contrat/class/contrat.class.php", 'langs'=>'contract'), + 'contract' => array('label' => 'Contracts', 'ObjectClassName' => 'Contrat', 'enabled' => $conf->contrat->enabled, 'ClassPath' => "/contrat/class/contrat.class.php", 'langs'=>'contracts'), + 'contractdet' => array('label' => 'ContractLines', 'ObjectClassName' => 'ContratLigne', 'enabled' => $conf->contrat->enabled, 'ClassPath' => "/contrat/class/contrat.class.php", 'langs'=>'contracts'), 'bom' => array('label' => 'BOM', 'ObjectClassName' => 'Bom', 'enabled' => $conf->bom->enabled), 'mo' => array('label' => 'MO', 'ObjectClassName' => 'Mo', 'enabled' => $conf->mrp->enabled, 'ClassPath' => "/mrp/class/mo.class.php"), 'ticket' => array('label' => 'Ticket', 'ObjectClassName' => 'Ticket', 'enabled' => $conf->ticket->enabled), @@ -159,6 +160,11 @@ $search_array_options = $extrafields->getOptionalsFromPost($object->table_elemen $search_component_params = array(''); $search_component_params_hidden = GETPOST('search_component_params_hidden', 'alphanohtml'); +// For the case we enter a criteria manually, the search_component_params_input will be defined and must be used in priority +if (GETPOST('search_component_params_input', 'alphanohtml')) { + $search_component_params_hidden = GETPOST('search_component_params_input', 'alphanohtml'); +} + $MAXUNIQUEVALFORGROUP = 20; $MAXMEASURESINBARGRAPH = 20; @@ -175,7 +181,12 @@ $arrayofgroupby = array(); $arrayofyaxis = array(); $arrayofvaluesforgroupby = array(); -restrictedArea($user, $object->element, 0, ''); +$features = $object->element; +if (!empty($object->element_for_permission)) { + $features = $object->element_for_permission; +} + +restrictedArea($user, $features, 0, ''); $error = 0; @@ -420,22 +431,22 @@ if ($object->isextrafieldmanaged) { } } } -print '
    '.$langs->trans("Measures").'
    '; -print $form->multiselectarray('search_measures', $arrayofmesures, $search_measures, 0, 0, 'minwidth400', 1); +print '
    '.$langs->trans("Measures").'
    '; +print $form->multiselectarray('search_measures', $arrayofmesures, $search_measures, 0, 0, 'minwidth400', 1); // Fill the array $arrayofmeasures with possible fields print '
    '; // XAxis print '
    '; -print '
    '.$langs->trans("XAxis").'
    '; -print $formother->selectXAxisField($object, $search_xaxis, $arrayofxaxis); +print '
    '; +print $formother->selectXAxisField($object, $search_xaxis, $arrayofxaxis, $langs->trans("XAxis")); // Fill the array $arrayofxaxis with possible fields print '
    '; // Group by print '
    '; -print '
    '.$langs->trans("GroupBy").'
    '; -print $formother->selectGroupByField($object, $search_groupby, $arrayofgroupby); +print '
    '; +print $formother->selectGroupByField($object, $search_groupby, $arrayofgroupby, 'minwidth200 maxwidth250', $langs->trans("GroupBy")); // Fill the array $arrayofgroupby with possible fields print '
    '; @@ -561,7 +572,7 @@ if (!empty($search_measures) && !empty($search_xaxis)) { $sql .= ' AND entity IN ('.getEntity($object->element).')'; } // Add the where here - $sqlfilters = GETPOST('search_component_params_hidden', 'alphanohtml'); + $sqlfilters = $search_component_params_hidden; if ($sqlfilters) { $errormessage = ''; if (dolCheckFilters($sqlfilters, $errormessage)) { diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index ea8c5f41f61..c1a4dbedc39 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -10801,7 +10801,7 @@ function dolForgeCriteriaCallback($matches) { global $db; - //dol_syslog("Convert matches ".$matches[1]); + dol_syslog("Convert matches ".$matches[1]); if (empty($matches[1])) { return ''; } diff --git a/htdocs/langs/en_US/contracts.lang b/htdocs/langs/en_US/contracts.lang index 937c5a7397b..746c7fdfeb6 100644 --- a/htdocs/langs/en_US/contracts.lang +++ b/htdocs/langs/en_US/contracts.lang @@ -20,6 +20,7 @@ ContractsSubscriptions=Contracts/Subscriptions ContractsAndLine=Contracts and line of contracts Contract=Contract ContractLine=Contract line +ContractLines=Contract lines Closing=Closing NoContracts=No contracts MenuServices=Services diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 3d750cbcc38..2890d29e0e8 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -189,7 +189,7 @@ input, input.flat, textarea, textarea.flat, form.flat select, select, select.fla borderglobal->THEME_SHOW_BORDER_ON_INPUT) ? '-bottom' : ''; ?>: solid 1px var(--inputbordercolor); /* padding: 5px; */ } -.pageplusone, +.pageplusone, .divadvancedsearchfieldcompinput, div.tabBar input, div.tabBar input.flat, div.tabBar textarea, div.tabBar textarea.flat, div.tabBar form.flat select, div.tabBar select, div.tabBar select.flat, div.tabBar .dataTables_length label select { borderglobal->THEME_SHOW_BORDER_ON_INPUT) ? '-bottom' : ''; ?>: solid 1px var(--inputbordercolor); @@ -202,6 +202,10 @@ div.tabBar input, div.tabBar input.flat, div.tabBar textarea, div.tabBar textare } ?> } +.divadvancedsearchfieldcompinput { + background: #fff; + border-bottom: solid 1px var(--inputbordercolor); +} input[name=duration_value], input[name=durationhour] { margin-right: 4px !important; @@ -269,7 +273,7 @@ section.setupsection { div.tabBar textarea:focus { border: 1px solid #aaa !important; } -input:focus:not(.button):not(.select2-search__field):not(#top-bookmark-search-input), select:focus, .select2-container--open .select2-selection--single { +input:focus:not(.button):not(.select2-search__field):not(#top-bookmark-search-input):not(.search_component_input), select:focus, .select2-container--open .select2-selection--single { /* div.tabBar input:focus, div.tabBar select:focus { */ border-bottom: 1px solid #666 !important; border-bottom-left-radius: 0 !important; @@ -1032,8 +1036,8 @@ div.divsearchfield { background: #fff; padding-top: 3px; padding-bottom: 3px; - padding-left: 10px; - padding-right: 10px; + padding-: 0; + padding-: 0; border-bottom: solid 1px var(--inputbordercolor); height: 24px; } @@ -1046,6 +1050,32 @@ div.divsearchfield { margin: 0 !important; padding: 3px; } +.tagsearch { + padding: 2px; + padding-right: 4px; + padding-bottom: 3px; + background: #ddd; + border-radius: 4px; +} +.tagsearchdelete { + color: #999; + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; + padding-left: 4px; +} + +.caretleftaxis { + margin-left: -13px; + margin-top: -1px; + position: absolute; +} +.caretdownaxis { + margin-left: -12px; + margin-top: 0; + position: absolute; +} .a-filter, .a-mesure { border-radius: 50px; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index cd6f04b43fb..7879368eee3 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -623,12 +623,12 @@ td.amount, span.amount, div.amount, b.amount { td.actionbuttons a { padding-left: 6px; } -select.flat, form.flat select, .pageplusone { +select.flat, form.flat select, .pageplusone, .divadvancedsearchfieldcompinput, { font-weight: normal; font-size: unset; height: 2em; } -input.pageplusone { +input.pageplusone, .divadvancedsearchfieldcompinput, { padding-bottom: 4px; padding-top: 4px; } @@ -1155,6 +1155,48 @@ div.divsearchfield { .divadvancedsearchfield span.select2.select2-container.select2-container--default { padding-bottom: 4px; } +.divadvancedsearchfieldcompinput { + background: #fff; + border-bottom: solid 1px var(--inputbordercolor); +} + +.search_component_params { + /*display: flex; */ + -webkit-flex-flow: row wrap; + flex-flow: row wrap; + background: #fff; + padding-top: 3px; + padding-bottom: 3px; + padding-: 0; + padding-: 0; + border-bottom: solid 1px var(--inputbordercolor); + height: 24px; +} +.search_component_searchtext { + padding-top: 2px; +} +.search_component_params_text, .search_component_params_text:focus { + border-bottom: none; + width: auto; + margin: 0 !important; + padding: 3px; +} +.tagsearch { + padding: 2px; + padding-right: 4px; + padding-bottom: 3px; + background: #ddd; + border-radius: 4px; +} +.tagsearchdelete { + color: #999; + cursor: pointer; + display: inline-block; + font-weight: bold; + margin-right: 2px; + padding-left: 4px; +} + browser->layout == 'phone') { From a6a1e3886aef9d067980f20d92d39981a91db46e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 15 Feb 2022 11:03:50 +0100 Subject: [PATCH 142/225] Update propal.class.php --- 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 7b35cbd1148..f634ac1991b 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -3691,7 +3691,7 @@ class Propal extends CommonObject } global $action; - $hookmanager->initHooks(array('propaldao')); + $hookmanager->initHooks(array($this->element . 'dao')); $parameters = array('id'=>$this->id, 'getnomurl'=>$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { From 71d2d6194f1289391abfd22ba0e02f6df340b00d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 15 Feb 2022 11:06:49 +0100 Subject: [PATCH 143/225] Update categorie.class.php --- htdocs/categories/class/categorie.class.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index 5ffed2e5e4b..4112f3661dc 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -10,7 +10,7 @@ * Copyright (C) 2015 Marcos García * Copyright (C) 2015 Raphaël Doursenaud * Copyright (C) 2016 Charlie Benke - * Copyright (C) 2018-2019 Frédéric France + * Copyright (C) 2018-2022 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 @@ -1640,6 +1640,15 @@ class Categorie extends CommonObject if ($withpicto != 2) { $result .= $link.dol_trunc(($this->ref ? $this->ref : $this->label), $maxlength).$linkend; } + global $action; + $hookmanager->initHooks(array($this->element . 'dao')); + $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } From 85d158d30282913c5ba1ef9c7a6e863298262c08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 15 Feb 2022 11:09:07 +0100 Subject: [PATCH 144/225] Update adherent.class.php --- htdocs/adherents/class/adherent.class.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 1d12ad16194..96ddc6284aa 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -7,7 +7,7 @@ * Copyright (C) 2009-2017 Regis Houssin * Copyright (C) 2014-2018 Alexandre Spangaro * Copyright (C) 2015 Marcos García - * Copyright (C) 2015-2020 Frédéric France + * Copyright (C) 2015-2022 Frédéric France * Copyright (C) 2015 Raphaël Doursenaud * Copyright (C) 2016 Juanjo Menent * Copyright (C) 2018-2019 Thibault FOUCART @@ -2282,7 +2282,15 @@ class Adherent extends CommonObject $result .= ''; } } - + global $action; + $hookmanager->initHooks(array($this->element . 'dao')); + $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } From ed4622790edc6cc0f9e1f82b9f26b44d1ddd5688 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 15 Feb 2022 11:10:02 +0100 Subject: [PATCH 145/225] Update asset.class.php --- htdocs/asset/class/asset.class.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/htdocs/asset/class/asset.class.php b/htdocs/asset/class/asset.class.php index e5ec21bfa6d..22570431b48 100644 --- a/htdocs/asset/class/asset.class.php +++ b/htdocs/asset/class/asset.class.php @@ -360,7 +360,15 @@ class Asset extends CommonObject } $result .= $linkend; //if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : ''); - + global $action; + $hookmanager->initHooks(array($this->element . 'dao')); + $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } From 0e664cc9694bd75af03641d148101e0d6ac011d0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 15 Feb 2022 11:12:08 +0100 Subject: [PATCH 146/225] Fix API call from ajax --- htdocs/api/index.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/htdocs/api/index.php b/htdocs/api/index.php index d19754f9c35..869dacc5cc0 100644 --- a/htdocs/api/index.php +++ b/htdocs/api/index.php @@ -55,12 +55,27 @@ if (!empty($_SERVER['HTTP_DOLAPIENTITY'])) { define("DOLENTITY", (int) $_SERVER['HTTP_DOLAPIENTITY']); } +// Response for preflight requests (used by browser when into a CORS context) +if (!empty($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'OPTIONS' && !empty($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) { + header('Access-Control-Allow-Origin: *'); + header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE'); + header('Access-Control-Allow-Headers: Content-Type, Authorization, api_key, DOLAPIKEY'); + http_response_code(204); + exit; +} + // When we request url to get the json file, we accept Cross site so we can include the descriptor into an external tool. if (preg_match('/\/explorer\/swagger\.json/', $_SERVER["PHP_SELF"])) { header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE'); header('Access-Control-Allow-Headers: Content-Type, Authorization, api_key, DOLAPIKEY'); } +// When we request url to get an API, we accept Cross site so we can make js API call inside another website +if (preg_match('/\/api\/index\.php/', $_SERVER["PHP_SELF"])) { + header('Access-Control-Allow-Origin: *'); + header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE'); + header('Access-Control-Allow-Headers: Content-Type, Authorization, api_key, DOLAPIKEY'); +} $res = 0; if (!$res && file_exists("../main.inc.php")) { @@ -304,7 +319,7 @@ if (!empty($reg[1]) && ($reg[1] != 'explorer' || ($reg[2] != '/swagger.json' && foreach ($listofendpoints as $endpointrule) { $tmparray = explode(':', $endpointrule); - if ($classfile == $tmparray[0] && $tmparray[1] == 1) { + if (($classfile == $tmparray[0] || $classfile.'api' == $tmparray[0]) && $tmparray[1] == 1) { $endpointisallowed = true; break; } From 710e97038981468bd537f2554cfaf1d4afe169bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 15 Feb 2022 11:13:22 +0100 Subject: [PATCH 147/225] Update facture-rec.class.php --- htdocs/compta/facture/class/facture-rec.class.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index 047a66a78b9..8263a0b15b2 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -1440,7 +1440,15 @@ class FactureRec extends CommonInvoice $result .= $this->ref; } $result .= $linkend; - + global $action; + $hookmanager->initHooks(array($this->element . 'dao')); + $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } From c474ee216fd67a43bd5d13c08bc3c4527adc8fbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 15 Feb 2022 11:15:34 +0100 Subject: [PATCH 148/225] Update expedition.class.php --- htdocs/expedition/class/expedition.class.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 837c82be361..ad6699eae66 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -11,7 +11,7 @@ * Copyright (C) 2015 Claudio Aschieri * Copyright (C) 2016-2021 Ferran Marcet * Copyright (C) 2018 Nicolas ZABOURI - * Copyright (C) 2018-2020 Frédéric France + * Copyright (C) 2018-2022 Frédéric France * Copyright (C) 2020 Lenin Rivas * * This program is free software; you can redistribute it and/or modify @@ -1824,7 +1824,15 @@ class Expedition extends CommonObject $result .= $this->ref; } $result .= $linkend; - + global $action; + $hookmanager->initHooks(array($this->element . 'dao')); + $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } From 0feb6e82755a71ae027648e72d4a5a5546a855d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 15 Feb 2022 11:18:14 +0100 Subject: [PATCH 149/225] Update fournisseur.facture.class.php --- htdocs/fourn/class/fournisseur.facture.class.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 1167453af44..29f5148d01a 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -2814,7 +2814,15 @@ class FactureFournisseur extends CommonInvoice $result .= ''; } } - + global $action; + $hookmanager->initHooks(array($this->element . 'dao')); + $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } From 502aa1b14b481395ab5fa24bc54870351c625e3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 15 Feb 2022 11:21:40 +0100 Subject: [PATCH 150/225] Update paiement.class.php --- htdocs/compta/paiement/class/paiement.class.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/paiement/class/paiement.class.php b/htdocs/compta/paiement/class/paiement.class.php index 2a8522ab05b..9459d55741f 100644 --- a/htdocs/compta/paiement/class/paiement.class.php +++ b/htdocs/compta/paiement/class/paiement.class.php @@ -1209,7 +1209,15 @@ class Paiement extends CommonObject $result .= ($this->ref ? $this->ref : $this->id); } $result .= $linkend; - + global $action; + $hookmanager->initHooks(array($this->element . 'dao')); + $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } From 82b3d89923f1a78605dad5e83b32eda66670808b Mon Sep 17 00:00:00 2001 From: Quentin VIAL-GOUTEYRON Date: Tue, 15 Feb 2022 11:31:09 +0100 Subject: [PATCH 151/225] FIX wieght is loose if it's comma on combinations --- htdocs/variants/combinations.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/variants/combinations.php b/htdocs/variants/combinations.php index 933d379e48a..0b08bd00758 100644 --- a/htdocs/variants/combinations.php +++ b/htdocs/variants/combinations.php @@ -235,7 +235,7 @@ if (($action == 'add' || $action == 'create') && empty($massaction) && !GETPOST( exit(); } - $prodcomb->variation_weight = $weight_impact; + $prodcomb->variation_weight = price2num($weight_impact); // for conf PRODUIT_MULTIPRICES if ($conf->global->PRODUIT_MULTIPRICES) { From 95c0e72956ef241d18d131b87205a05593c55aee Mon Sep 17 00:00:00 2001 From: Francis Appels Date: Tue, 15 Feb 2022 11:37:24 +0100 Subject: [PATCH 152/225] Fix barcode viewimage regression on yogosha8628 --- htdocs/viewimage.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/viewimage.php b/htdocs/viewimage.php index dee62999cf4..7f34bdb6a18 100644 --- a/htdocs/viewimage.php +++ b/htdocs/viewimage.php @@ -230,7 +230,7 @@ $original_file = str_replace('..\\', '/', $original_file); $refname = basename(dirname($original_file)."/"); // Check that file is allowed for view with viewimage.php -if (!dolIsAllowedForPreview($original_file)) { +if (!empty($original_file) && !dolIsAllowedForPreview($original_file)) { accessforbidden('This file is not qualified for preview', 0, 0, 1); } From ebada46a07c48705ffcc662a70758005561e2281 Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Tue, 15 Feb 2022 12:14:48 +0100 Subject: [PATCH 153/225] fix context for createfromclone --- htdocs/compta/facture/class/facture.class.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 4caa61e1aad..55471afeccf 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -755,6 +755,9 @@ class Facture extends CommonInvoice foreach ($this->lines as $i => $val) { $newinvoiceline = $this->lines[$i]; + + $newinvoiceline->context = $this->context; + $newinvoiceline->fk_facture = $this->id; $newinvoiceline->origin = $this->lines[$i]->element; From 50853205bb7c29ead426b49d8ec905447c9dad2c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 15 Feb 2022 16:43:47 +0100 Subject: [PATCH 154/225] Support placeholder on multiselect components --- htdocs/core/class/html.form.class.php | 11 +++++++++-- htdocs/core/customreports.php | 4 ++-- htdocs/theme/eldy/global.inc.php | 5 ++++- htdocs/theme/md/style.css.php | 18 ++++++++++++++++++ 4 files changed, 33 insertions(+), 5 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 70bf1eeb2df..32319e46cef 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -8126,8 +8126,15 @@ class Form } $out .= '};'."\n"; $out .= '$(document).ready(function () { - $(\'#'.$htmlname.'\').'.$tmpplugin.'({ - dir: \'ltr\', + $(\'#'.$htmlname.'\').'.$tmpplugin.'({'; + if ($placeholder) { + $out .= ' + placeholder: { + id: \'-1\', + text: \''.dol_escape_js($placeholder).'\' + },'; + } + $out .= ' dir: \'ltr\', // Specify format function for dropdown item formatResult: formatResult, templateResult: formatResult, /* For 4.0 */ diff --git a/htdocs/core/customreports.php b/htdocs/core/customreports.php index dcedf1405f8..3a4ab5d1a75 100644 --- a/htdocs/core/customreports.php +++ b/htdocs/core/customreports.php @@ -431,8 +431,8 @@ if ($object->isextrafieldmanaged) { } } } -print '
    '.$langs->trans("Measures").'
    '; -print $form->multiselectarray('search_measures', $arrayofmesures, $search_measures, 0, 0, 'minwidth400', 1); // Fill the array $arrayofmeasures with possible fields +print '
    '; +print $form->multiselectarray('search_measures', $arrayofmesures, $search_measures, 0, 0, 'minwidth400', 1, 0, '', '', $langs->trans("Measures")); // Fill the array $arrayofmeasures with possible fields print ''; diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 2890d29e0e8..7eb552517ee 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -5932,7 +5932,7 @@ input.select2-input { color: #FFF !important; } .select2-container .select2-selection--multiple { - min-height: 30px !important; + min-height: 28px !important; } .select2-container--default .select2-selection--multiple .select2-selection__choice { margin-top: 5px !important; @@ -6045,6 +6045,9 @@ input.select2-input { background-color: #ddd; margin-top: 4px !important; } +.select2-selection--multiple input.select2-search__field { + border-bottom: none !important; +} .select2-search__field { diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 7879368eee3..da706095e17 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1197,6 +1197,17 @@ div.divsearchfield { padding-left: 4px; } +.caretleftaxis { + margin-left: -13px; + margin-top: -1px; + position: absolute; +} +.caretdownaxis { + margin-left: -12px; + margin-top: 0; + position: absolute; +} + browser->layout == 'phone') { @@ -5843,6 +5854,10 @@ input.select2-input { color: #FFF !important; } +.select2-container .select2-selection--multiple { + min-height: 28px !important; +} + .select2-container--default .select2-selection--multiple .select2-selection__choice { border: 1px solid #e4e4e4; } @@ -5920,6 +5935,9 @@ input.select2-input { border-right: none; border-radius: 0 !important; } +.select2-selection--multiple input.select2-search__field { + border-bottom: none !important; +} .select2-search__field { outline: none; From 7341e7ed0768f7fa97bcf310475304673a87982a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 15 Feb 2022 17:06:04 +0100 Subject: [PATCH 155/225] Update don.class.php --- htdocs/don/class/don.class.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/htdocs/don/class/don.class.php b/htdocs/don/class/don.class.php index cbd5a386354..ecafc925f37 100644 --- a/htdocs/don/class/don.class.php +++ b/htdocs/don/class/don.class.php @@ -953,7 +953,15 @@ class Don extends CommonObject $result .= $this->ref; } $result .= $linkend; - + global $action; + $hookmanager->initHooks(array($this->element . 'dao')); + $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } From 9dc2cc82cb364efb4af3ab66b98913a262767df1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 15 Feb 2022 17:07:43 +0100 Subject: [PATCH 156/225] Update supplier_proposal.class.php --- .../class/supplier_proposal.class.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index 057b32e89ca..c852de8402e 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -13,7 +13,7 @@ * Copyright (C) 2014 Marcos García * Copyright (C) 2016 Ferran Marcet * Copyright (C) 2018 Nicolas ZABOURI - * Copyright (C) 2019-2021 Frédéric France + * Copyright (C) 2019-2022 Frédéric France * Copyright (C) 2020 Tobias Sekan * * This program is free software; you can redistribute it and/or modify @@ -2553,7 +2553,15 @@ class SupplierProposal extends CommonObject $result .= ''; } } - + global $action; + $hookmanager->initHooks(array($this->element . 'dao')); + $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } From ef04ce1e05b302379fbf09875ee7ac54f08c6cb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 15 Feb 2022 17:10:32 +0100 Subject: [PATCH 157/225] Update fichinterrec.class.php --- htdocs/fichinter/class/fichinterrec.class.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/htdocs/fichinter/class/fichinterrec.class.php b/htdocs/fichinter/class/fichinterrec.class.php index ee385cbc7a4..79207efdd8f 100644 --- a/htdocs/fichinter/class/fichinterrec.class.php +++ b/htdocs/fichinter/class/fichinterrec.class.php @@ -653,6 +653,15 @@ class FichinterRec extends Fichinter if ($withpicto != 2) { $result .= $link.$this->ref.$linkend; } + global $action; + $hookmanager->initHooks(array($this->element . 'dao')); + $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } From d546e11fbae549309311309dd8c4c2f1c3eb20a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 15 Feb 2022 17:13:08 +0100 Subject: [PATCH 158/225] Update chargesociales.class.php --- .../compta/sociales/class/chargesociales.class.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/sociales/class/chargesociales.class.php b/htdocs/compta/sociales/class/chargesociales.class.php index 431f0bcba72..79743b93056 100644 --- a/htdocs/compta/sociales/class/chargesociales.class.php +++ b/htdocs/compta/sociales/class/chargesociales.class.php @@ -1,7 +1,7 @@ * Copyright (C) 2004-2007 Laurent Destailleur - * Copyright (C) 2016-2020 Frédéric France + * Copyright (C) 2016-2022 Frédéric France * Copyright (C) 2017 Alexandre Spangaro * Copyright (C) 2021 Gauthier VERDOL * @@ -625,7 +625,15 @@ class ChargeSociales extends CommonObject $result .= $this->ref; } $result .= $linkend; - + global $action; + $hookmanager->initHooks(array($this->element . 'dao')); + $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } From 0ba912b1e50260fc3ed3d96bc201c98d1c0a22f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 15 Feb 2022 18:14:44 +0100 Subject: [PATCH 159/225] add missing global --- htdocs/adherents/class/adherent.class.php | 2 +- htdocs/asset/class/asset.class.php | 2 +- htdocs/categories/class/categorie.class.php | 2 +- htdocs/comm/propal/class/propal.class.php | 2 +- htdocs/commande/class/commande.class.php | 2 +- htdocs/compta/facture/class/facture-rec.class.php | 2 +- .../compta/sociales/class/chargesociales.class.php | 2 +- htdocs/don/class/don.class.php | 2 +- htdocs/expedition/class/expedition.class.php | 2 +- htdocs/fichinter/class/fichinterrec.class.php | 2 +- htdocs/fourn/class/fournisseur.commande.class.php | 2 +- htdocs/fourn/class/fournisseur.facture-rec.class.php | 12 ++++++++++-- htdocs/fourn/class/fournisseur.facture.class.php | 2 +- htdocs/holiday/class/holiday.class.php | 12 ++++++++++-- .../class/supplier_proposal.class.php | 2 +- 15 files changed, 33 insertions(+), 17 deletions(-) diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 96ddc6284aa..fd43660ab8a 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -2164,7 +2164,7 @@ class Adherent extends CommonObject */ public function getNomUrl($withpictoimg = 0, $maxlen = 0, $option = 'card', $mode = '', $morecss = '', $save_lastsearch_value = -1, $notooltip = 0, $addlinktonotes = 0) { - global $conf, $langs; + global $conf, $langs, $hookmanager; if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) && $withpictoimg) { $withpictoimg = 0; diff --git a/htdocs/asset/class/asset.class.php b/htdocs/asset/class/asset.class.php index 22570431b48..4c09f616f06 100644 --- a/htdocs/asset/class/asset.class.php +++ b/htdocs/asset/class/asset.class.php @@ -305,7 +305,7 @@ class Asset extends CommonObject */ public function getNomUrl($withpicto = 0, $option = '', $notooltip = 0, $morecss = '', $save_lastsearch_value = -1) { - global $db, $conf, $langs; + global $db, $conf, $langs, $hookmanager; global $dolibarr_main_authentication, $dolibarr_main_demo; global $menumanager; diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index 4112f3661dc..f6e9dcc73cf 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -1612,7 +1612,7 @@ class Categorie extends CommonObject */ public function getNomUrl($withpicto = 0, $option = '', $maxlength = 0, $moreparam = '') { - global $langs; + global $langs, $hookmanager; $result = ''; $label = $langs->trans("ShowCategory").': '.($this->ref ? $this->ref : $this->label); diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index f634ac1991b..025247417aa 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -3569,7 +3569,7 @@ class Propal extends CommonObject */ public function getNomUrl($withpicto = 0, $option = '', $get_params = '', $notooltip = 0, $save_lastsearch_value = -1, $addlinktonotes = -1) { - global $langs, $conf, $user; + global $langs, $conf, $user, $hookmanager; if (!empty($conf->dol_no_mouse_hover)) { $notooltip = 1; // Force disable tooltips diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 46fdfb3f983..f2efbac0b4e 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -3663,7 +3663,7 @@ class Commande extends CommonOrder */ public function getNomUrl($withpicto = 0, $option = '', $max = 0, $short = 0, $notooltip = 0, $save_lastsearch_value = -1, $addlinktonotes = 0) { - global $conf, $langs, $user; + global $conf, $langs, $user, $hookmanager; if (!empty($conf->dol_no_mouse_hover)) { $notooltip = 1; // Force disable tooltips diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index 8263a0b15b2..139f95c9463 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -1388,7 +1388,7 @@ class FactureRec extends CommonInvoice */ public function getNomUrl($withpicto = 0, $option = '', $max = 0, $short = 0, $moretitle = '', $notooltip = '', $save_lastsearch_value = -1) { - global $langs; + global $langs, $hookmanager; $result = ''; diff --git a/htdocs/compta/sociales/class/chargesociales.class.php b/htdocs/compta/sociales/class/chargesociales.class.php index 79743b93056..0c062f24e7a 100644 --- a/htdocs/compta/sociales/class/chargesociales.class.php +++ b/htdocs/compta/sociales/class/chargesociales.class.php @@ -560,7 +560,7 @@ class ChargeSociales extends CommonObject */ public function getNomUrl($withpicto = 0, $option = '', $notooltip = 0, $short = 0, $save_lastsearch_value = -1) { - global $langs, $conf, $user, $form; + global $langs, $conf, $user, $form, $hookmanager; if (!empty($conf->dol_no_mouse_hover)) { $notooltip = 1; // Force disable tooltips diff --git a/htdocs/don/class/don.class.php b/htdocs/don/class/don.class.php index ecafc925f37..c0f2f537135 100644 --- a/htdocs/don/class/don.class.php +++ b/htdocs/don/class/don.class.php @@ -913,7 +913,7 @@ class Don extends CommonObject */ public function getNomUrl($withpicto = 0, $notooltip = 0, $moretitle = '', $save_lastsearch_value = -1) { - global $conf, $langs; + global $conf, $langs, $hookmanager; if (!empty($conf->dol_no_mouse_hover)) { $notooltip = 1; // Force disable tooltips diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index ad6699eae66..037f0ea89de 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -1778,7 +1778,7 @@ class Expedition extends CommonObject */ public function getNomUrl($withpicto = 0, $option = '', $max = 0, $short = 0, $notooltip = 0, $save_lastsearch_value = -1) { - global $langs, $conf; + global $langs, $conf, $hookmanager; $result = ''; $label = ''.$langs->trans("Shipment").''; diff --git a/htdocs/fichinter/class/fichinterrec.class.php b/htdocs/fichinter/class/fichinterrec.class.php index 79207efdd8f..3653d84247d 100644 --- a/htdocs/fichinter/class/fichinterrec.class.php +++ b/htdocs/fichinter/class/fichinterrec.class.php @@ -628,7 +628,7 @@ class FichinterRec extends Fichinter */ public function getNomUrl($withpicto = 0, $option = '', $max = 0, $short = 0, $moretitle = '') { - global $langs; + global $langs, $hookmanager; $result = ''; $label = $langs->trans("ShowInterventionModel").': '.$this->ref; diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index f0e3a126cab..b346bcba5e1 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -791,7 +791,7 @@ class CommandeFournisseur extends CommonOrder */ public function getNomUrl($withpicto = 0, $option = '', $notooltip = 0, $save_lastsearch_value = -1, $addlinktonotes = 0) { - global $langs, $conf, $user; + global $langs, $conf, $user, $hookmanager; $result = ''; diff --git a/htdocs/fourn/class/fournisseur.facture-rec.class.php b/htdocs/fourn/class/fournisseur.facture-rec.class.php index 57717c6f186..45871da689f 100644 --- a/htdocs/fourn/class/fournisseur.facture-rec.class.php +++ b/htdocs/fourn/class/fournisseur.facture-rec.class.php @@ -1377,7 +1377,7 @@ class FactureFournisseurRec extends CommonInvoice */ public function getNomUrl($withpicto = 0, $option = '', $max = 0, $short = 0, $moretitle = '', $notooltip = '', $save_lastsearch_value = -1) { - global $langs; + global $langs, $hookmanager; $result = ''; @@ -1429,7 +1429,15 @@ class FactureFournisseurRec extends CommonInvoice $result .= $this->ref; } $result .= $linkend; - + global $action; + $hookmanager->initHooks(array($this->element . 'dao')); + $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 29f5148d01a..5cc2fc32f1f 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -2696,7 +2696,7 @@ class FactureFournisseur extends CommonInvoice */ public function getNomUrl($withpicto = 0, $option = '', $max = 0, $short = 0, $moretitle = '', $notooltip = 0, $save_lastsearch_value = -1, $addlinktonotes = 0) { - global $langs, $conf, $user; + global $langs, $conf, $user, $hookmanager; $result = ''; diff --git a/htdocs/holiday/class/holiday.class.php b/htdocs/holiday/class/holiday.class.php index 29e7c41bb5f..a65894542bd 100644 --- a/htdocs/holiday/class/holiday.class.php +++ b/htdocs/holiday/class/holiday.class.php @@ -1270,7 +1270,7 @@ class Holiday extends CommonObject */ public function getNomUrl($withpicto = 0, $save_lastsearch_value = -1, $notooltip = 0) { - global $langs; + global $langs, $hookmanager; $result = ''; @@ -1305,7 +1305,15 @@ class Holiday extends CommonObject $result .= $this->ref; } $result .= $linkend; - + global $action; + $hookmanager->initHooks(array($this->element . 'dao')); + $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { + $result = $hookmanager->resPrint; + } else { + $result .= $hookmanager->resPrint; + } return $result; } diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index c852de8402e..36bd0d3440c 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -2470,7 +2470,7 @@ class SupplierProposal extends CommonObject */ public function getNomUrl($withpicto = 0, $option = '', $get_params = '', $notooltip = 0, $save_lastsearch_value = -1, $addlinktonotes = 0) { - global $langs, $conf, $user; + global $langs, $conf, $user, $hookmanager; if (!empty($conf->dol_no_mouse_hover)) { $notooltip = 1; // Force disable tooltips From c8640f329e5e5741d9a79b523e84cdb4d141659c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 15 Feb 2022 18:31:05 +0100 Subject: [PATCH 160/225] add missing global --- htdocs/asset/class/asset.class.php | 2 +- htdocs/categories/class/categorie.class.php | 2 +- htdocs/comm/action/class/actioncomm.class.php | 2 +- htdocs/comm/mailing/class/mailing.class.php | 2 +- htdocs/comm/propal/class/propal.class.php | 2 +- htdocs/contact/class/contact.class.php | 2 +- htdocs/contrat/class/contrat.class.php | 2 +- htdocs/expedition/class/expedition.class.php | 2 +- htdocs/hrm/class/position.class.php | 2 +- htdocs/knowledgemanagement/class/knowledgerecord.class.php | 2 +- htdocs/modulebuilder/template/class/myobject.class.php | 2 +- htdocs/mrp/class/mo.class.php | 2 +- htdocs/product/class/product.class.php | 2 +- htdocs/product/class/productfournisseurprice.class.php | 2 +- htdocs/supplier_proposal/class/supplier_proposal.class.php | 2 +- htdocs/workstation/class/workstation.class.php | 2 +- htdocs/zapier/class/hook.class.php | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/htdocs/asset/class/asset.class.php b/htdocs/asset/class/asset.class.php index 4c09f616f06..916fb376526 100644 --- a/htdocs/asset/class/asset.class.php +++ b/htdocs/asset/class/asset.class.php @@ -362,7 +362,7 @@ class Asset extends CommonObject //if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : ''); global $action; $hookmanager->initHooks(array($this->element . 'dao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index f6e9dcc73cf..e85d9864407 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -1642,7 +1642,7 @@ class Categorie extends CommonObject } global $action; $hookmanager->initHooks(array($this->element . 'dao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index 19273648827..103fea28731 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -1669,7 +1669,7 @@ class ActionComm extends CommonObject global $action; $hookmanager->initHooks(array('actiondao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/comm/mailing/class/mailing.class.php b/htdocs/comm/mailing/class/mailing.class.php index 8050b85f180..588faa392e3 100644 --- a/htdocs/comm/mailing/class/mailing.class.php +++ b/htdocs/comm/mailing/class/mailing.class.php @@ -740,7 +740,7 @@ class Mailing extends CommonObject global $action; $hookmanager->initHooks(array('emailingdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 025247417aa..7db6fc034df 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -3692,7 +3692,7 @@ class Propal extends CommonObject global $action; $hookmanager->initHooks(array($this->element . 'dao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index bb3f2ae035d..589d09ce1e7 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -1488,7 +1488,7 @@ class Contact extends CommonObject global $action; $hookmanager->initHooks(array('contactdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index b2c9543453b..61ff119d0c2 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -2042,7 +2042,7 @@ class Contrat extends CommonObject global $action; $hookmanager->initHooks(array('contractdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 037f0ea89de..8490fa67753 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -1826,7 +1826,7 @@ class Expedition extends CommonObject $result .= $linkend; global $action; $hookmanager->initHooks(array($this->element . 'dao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/hrm/class/position.class.php b/htdocs/hrm/class/position.class.php index 2401791bb5f..8c51d667f9e 100644 --- a/htdocs/hrm/class/position.class.php +++ b/htdocs/hrm/class/position.class.php @@ -788,7 +788,7 @@ class Position extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('positiondao')); - $parameters = array('id' => $this->id, 'getnomurl' => $result); + $parameters = array('id' => $this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/knowledgemanagement/class/knowledgerecord.class.php b/htdocs/knowledgemanagement/class/knowledgerecord.class.php index 8b1635273cd..a2f03a64e41 100644 --- a/htdocs/knowledgemanagement/class/knowledgerecord.class.php +++ b/htdocs/knowledgemanagement/class/knowledgerecord.class.php @@ -791,7 +791,7 @@ class KnowledgeRecord extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('knowledgerecorddao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/modulebuilder/template/class/myobject.class.php b/htdocs/modulebuilder/template/class/myobject.class.php index ca9de1cc5ab..ac934439934 100644 --- a/htdocs/modulebuilder/template/class/myobject.class.php +++ b/htdocs/modulebuilder/template/class/myobject.class.php @@ -836,7 +836,7 @@ class MyObject extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('myobjectdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php index 29db4bcb669..2da1672e089 100644 --- a/htdocs/mrp/class/mo.class.php +++ b/htdocs/mrp/class/mo.class.php @@ -1072,7 +1072,7 @@ class Mo extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('modao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 562c622e214..8e61663d339 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -4943,7 +4943,7 @@ class Product extends CommonObject global $action; $hookmanager->initHooks(array('productdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/product/class/productfournisseurprice.class.php b/htdocs/product/class/productfournisseurprice.class.php index 54919ac0be6..ef9b2a49117 100644 --- a/htdocs/product/class/productfournisseurprice.class.php +++ b/htdocs/product/class/productfournisseurprice.class.php @@ -642,7 +642,7 @@ class ProductFournisseurPrice extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('productfournisseurpricedao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) $result = $hookmanager->resPrint; else $result .= $hookmanager->resPrint; diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index 36bd0d3440c..4a055b5afa4 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -2555,7 +2555,7 @@ class SupplierProposal extends CommonObject } global $action; $hookmanager->initHooks(array($this->element . 'dao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/workstation/class/workstation.class.php b/htdocs/workstation/class/workstation.class.php index 3fed177d95c..af622481e28 100644 --- a/htdocs/workstation/class/workstation.class.php +++ b/htdocs/workstation/class/workstation.class.php @@ -814,7 +814,7 @@ class Workstation extends CommonObject global $action, $hookmanager; $hookmanager->initHooks(array('workstationdao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/zapier/class/hook.class.php b/htdocs/zapier/class/hook.class.php index c3b9147a46d..e27658838bd 100644 --- a/htdocs/zapier/class/hook.class.php +++ b/htdocs/zapier/class/hook.class.php @@ -565,7 +565,7 @@ class Hook extends CommonObject $hookmanager->initHooks(array('hookdao')); $parameters = array( 'id' => $this->id, - 'getnomurl' => $result, + 'getnomurl' => &$result, ); // Note that $action and $object may have been modified by some hooks $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); From dad73b755eca9e5ebfd832fe9d517298346941d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 15 Feb 2022 18:46:41 +0100 Subject: [PATCH 161/225] fix merge --- htdocs/adherents/class/adherent.class.php | 2 +- htdocs/asset/class/asset.class.php | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index fd43660ab8a..b82ab4c428f 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -2284,7 +2284,7 @@ class Adherent extends CommonObject } global $action; $hookmanager->initHooks(array($this->element . 'dao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/asset/class/asset.class.php b/htdocs/asset/class/asset.class.php index 792bbaa4696..d07b785a474 100644 --- a/htdocs/asset/class/asset.class.php +++ b/htdocs/asset/class/asset.class.php @@ -360,14 +360,8 @@ class Asset extends CommonObject } $result .= $linkend; //if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : ''); -<<<<<<< HEAD global $action; $hookmanager->initHooks(array($this->element . 'dao')); -======= - - global $action; - $hookmanager->initHooks(array('assetdao')); ->>>>>>> hookgetnomurl $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { From 935482ee2228b54fd4d6bc7034fbe2b88fd1771e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 15 Feb 2022 19:04:18 +0100 Subject: [PATCH 162/225] uniformize --- htdocs/accountancy/class/accountingaccount.class.php | 2 +- htdocs/accountancy/class/bookkeeping.class.php | 2 +- htdocs/asset/class/asset.class.php | 2 +- htdocs/commande/class/commande.class.php | 2 +- htdocs/compta/facture/class/facture-rec.class.php | 2 +- htdocs/compta/paiement/class/paiement.class.php | 2 +- htdocs/compta/sociales/class/chargesociales.class.php | 2 +- htdocs/delivery/class/delivery.class.php | 2 +- htdocs/don/class/paymentdonation.class.php | 2 +- htdocs/ecm/class/ecmdirectory.class.php | 2 +- htdocs/ecm/class/ecmfiles.class.php | 2 +- htdocs/expensereport/class/expensereport.class.php | 2 +- htdocs/expensereport/class/paymentexpensereport.class.php | 2 +- htdocs/fichinter/class/fichinterrec.class.php | 2 +- htdocs/fourn/class/fournisseur.facture-rec.class.php | 2 +- htdocs/fourn/class/fournisseur.product.class.php | 2 +- htdocs/fourn/class/paiementfourn.class.php | 2 +- htdocs/loan/class/loan.class.php | 2 +- htdocs/loan/class/paymentloan.class.php | 2 +- htdocs/reception/class/reception.class.php | 2 +- htdocs/resource/class/dolresource.class.php | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/htdocs/accountancy/class/accountingaccount.class.php b/htdocs/accountancy/class/accountingaccount.class.php index e0d1ede11fd..ac943180b58 100644 --- a/htdocs/accountancy/class/accountingaccount.class.php +++ b/htdocs/accountancy/class/accountingaccount.class.php @@ -562,7 +562,7 @@ class AccountingAccount extends CommonObject $result .= $linkstart . $label_link . $linkend; } global $action; - $hookmanager->initHooks(array('accountingaccountdao')); + $hookmanager->initHooks(array($this->element . 'dao')); $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index 1d7ceeec860..58eeb2afd2b 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -513,7 +513,7 @@ class BookKeeping extends CommonObject //if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : ''); global $action; - $hookmanager->initHooks(array('bookkeepingdao')); + $hookmanager->initHooks(array($this->element . 'dao')); $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { diff --git a/htdocs/asset/class/asset.class.php b/htdocs/asset/class/asset.class.php index d07b785a474..916fb376526 100644 --- a/htdocs/asset/class/asset.class.php +++ b/htdocs/asset/class/asset.class.php @@ -307,7 +307,7 @@ class Asset extends CommonObject { global $db, $conf, $langs, $hookmanager; global $dolibarr_main_authentication, $dolibarr_main_demo; - global $menumanager, $hookmanager; + global $menumanager; if (!empty($conf->dol_no_mouse_hover)) { $notooltip = 1; // Force disable tooltips diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index f2efbac0b4e..6d05a052923 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -3766,7 +3766,7 @@ class Commande extends CommonOrder global $action; $hookmanager->initHooks(array($this->element . 'dao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/compta/facture/class/facture-rec.class.php b/htdocs/compta/facture/class/facture-rec.class.php index 139f95c9463..ae264f7a813 100644 --- a/htdocs/compta/facture/class/facture-rec.class.php +++ b/htdocs/compta/facture/class/facture-rec.class.php @@ -1442,7 +1442,7 @@ class FactureRec extends CommonInvoice $result .= $linkend; global $action; $hookmanager->initHooks(array($this->element . 'dao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/compta/paiement/class/paiement.class.php b/htdocs/compta/paiement/class/paiement.class.php index 9459d55741f..23230c4175d 100644 --- a/htdocs/compta/paiement/class/paiement.class.php +++ b/htdocs/compta/paiement/class/paiement.class.php @@ -1211,7 +1211,7 @@ class Paiement extends CommonObject $result .= $linkend; global $action; $hookmanager->initHooks(array($this->element . 'dao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/compta/sociales/class/chargesociales.class.php b/htdocs/compta/sociales/class/chargesociales.class.php index 0c062f24e7a..caa04146264 100644 --- a/htdocs/compta/sociales/class/chargesociales.class.php +++ b/htdocs/compta/sociales/class/chargesociales.class.php @@ -627,7 +627,7 @@ class ChargeSociales extends CommonObject $result .= $linkend; global $action; $hookmanager->initHooks(array($this->element . 'dao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/delivery/class/delivery.class.php b/htdocs/delivery/class/delivery.class.php index ccf197c7092..3241461ace1 100644 --- a/htdocs/delivery/class/delivery.class.php +++ b/htdocs/delivery/class/delivery.class.php @@ -759,7 +759,7 @@ class Delivery extends CommonObject $result .= $linkstart.$this->ref.$linkend; global $action; - $hookmanager->initHooks(array('deliverydao')); + $hookmanager->initHooks(array($this->element . 'dao')); $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { diff --git a/htdocs/don/class/paymentdonation.class.php b/htdocs/don/class/paymentdonation.class.php index f1028146397..0f8db03597d 100644 --- a/htdocs/don/class/paymentdonation.class.php +++ b/htdocs/don/class/paymentdonation.class.php @@ -685,7 +685,7 @@ class PaymentDonation extends CommonObject } global $action; - $hookmanager->initHooks(array('paymentdonationdao')); + $hookmanager->initHooks(array($this->element . 'dao')); $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { diff --git a/htdocs/ecm/class/ecmdirectory.class.php b/htdocs/ecm/class/ecmdirectory.class.php index 7381beb6fea..f99a567a314 100644 --- a/htdocs/ecm/class/ecmdirectory.class.php +++ b/htdocs/ecm/class/ecmdirectory.class.php @@ -507,7 +507,7 @@ class EcmDirectory extends CommonObject $result .= $linkend; global $action; - $hookmanager->initHooks(array('ecmdirectorydao')); + $hookmanager->initHooks(array($this->element . 'dao')); $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { diff --git a/htdocs/ecm/class/ecmfiles.class.php b/htdocs/ecm/class/ecmfiles.class.php index 9121ddacd0e..2f9bf4c41e5 100644 --- a/htdocs/ecm/class/ecmfiles.class.php +++ b/htdocs/ecm/class/ecmfiles.class.php @@ -870,7 +870,7 @@ class EcmFiles extends CommonObject $result .= $linkstart.$this->ref.$linkend; global $action; - $hookmanager->initHooks(array('ecmfilesdao')); + $hookmanager->initHooks(array($this->element . 'dao')); $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 18126980d1b..be49b0a8c0c 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -1710,7 +1710,7 @@ class ExpenseReport extends CommonObject $result .= $linkend; global $action; - $hookmanager->initHooks(array('expensereportdao')); + $hookmanager->initHooks(array($this->element . 'dao')); $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { diff --git a/htdocs/expensereport/class/paymentexpensereport.class.php b/htdocs/expensereport/class/paymentexpensereport.class.php index 2b17f4f8603..5f9e9f17e6f 100644 --- a/htdocs/expensereport/class/paymentexpensereport.class.php +++ b/htdocs/expensereport/class/paymentexpensereport.class.php @@ -661,7 +661,7 @@ class PaymentExpenseReport extends CommonObject } } global $action; - $hookmanager->initHooks(array('paymentexpensereportdao')); + $hookmanager->initHooks(array($this->element . 'dao')); $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { diff --git a/htdocs/fichinter/class/fichinterrec.class.php b/htdocs/fichinter/class/fichinterrec.class.php index 3653d84247d..fa97cf3e8a5 100644 --- a/htdocs/fichinter/class/fichinterrec.class.php +++ b/htdocs/fichinter/class/fichinterrec.class.php @@ -655,7 +655,7 @@ class FichinterRec extends Fichinter } global $action; $hookmanager->initHooks(array($this->element . 'dao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/fourn/class/fournisseur.facture-rec.class.php b/htdocs/fourn/class/fournisseur.facture-rec.class.php index 45871da689f..c8f0ad75536 100644 --- a/htdocs/fourn/class/fournisseur.facture-rec.class.php +++ b/htdocs/fourn/class/fournisseur.facture-rec.class.php @@ -1431,7 +1431,7 @@ class FactureFournisseurRec extends CommonInvoice $result .= $linkend; global $action; $hookmanager->initHooks(array($this->element . 'dao')); - $parameters = array('id'=>$this->id, 'getnomurl'=>$result); + $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { $result = $hookmanager->resPrint; diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index c289307c69f..cb9416e3da2 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -1228,7 +1228,7 @@ class ProductFournisseur extends Product //if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : ''); global $action; - $hookmanager->initHooks(array('supplierproductdao')); + $hookmanager->initHooks(array($this->element . 'dao')); $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { diff --git a/htdocs/fourn/class/paiementfourn.class.php b/htdocs/fourn/class/paiementfourn.class.php index 822ddf2cbe4..75984c94f99 100644 --- a/htdocs/fourn/class/paiementfourn.class.php +++ b/htdocs/fourn/class/paiementfourn.class.php @@ -640,7 +640,7 @@ class PaiementFourn extends Paiement $result .= $linkend; global $action; - $hookmanager->initHooks(array('supplierpaymentdao')); + $hookmanager->initHooks(array($this->element . 'dao')); $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { diff --git a/htdocs/loan/class/loan.class.php b/htdocs/loan/class/loan.class.php index 2530ffcecfe..7edaefb45b2 100644 --- a/htdocs/loan/class/loan.class.php +++ b/htdocs/loan/class/loan.class.php @@ -607,7 +607,7 @@ class Loan extends CommonObject $result .= $linkend; global $action; - $hookmanager->initHooks(array('loandao')); + $hookmanager->initHooks(array($this->element . 'dao')); $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { diff --git a/htdocs/loan/class/paymentloan.class.php b/htdocs/loan/class/paymentloan.class.php index f998b3f1077..ae31a8314aa 100644 --- a/htdocs/loan/class/paymentloan.class.php +++ b/htdocs/loan/class/paymentloan.class.php @@ -655,7 +655,7 @@ class PaymentLoan extends CommonObject $result .= $linkend; global $action; - $hookmanager->initHooks(array('loanpaymentdao')); + $hookmanager->initHooks(array($this->element . 'dao')); $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { diff --git a/htdocs/reception/class/reception.class.php b/htdocs/reception/class/reception.class.php index 46e89a5ac4c..741ba107e89 100644 --- a/htdocs/reception/class/reception.class.php +++ b/htdocs/reception/class/reception.class.php @@ -1150,7 +1150,7 @@ class Reception extends CommonObject $result .= $linkstart.$this->ref.$linkend; global $action; - $hookmanager->initHooks(array('receptiondao')); + $hookmanager->initHooks(array($this->element . 'dao')); $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { diff --git a/htdocs/resource/class/dolresource.class.php b/htdocs/resource/class/dolresource.class.php index b6c8586ac61..8ea35d43c33 100644 --- a/htdocs/resource/class/dolresource.class.php +++ b/htdocs/resource/class/dolresource.class.php @@ -987,7 +987,7 @@ class Dolresource extends CommonObject $result .= $linkend; global $action; - $hookmanager->initHooks(array('dolresourcedao')); + $hookmanager->initHooks(array($this->element . 'dao')); $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { From 453871bf38ef3cece0f9efa9c2ae25fae342240d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 15 Feb 2022 23:01:14 +0100 Subject: [PATCH 163/225] css --- htdocs/core/class/html.form.class.php | 4 ++-- htdocs/core/customreports.php | 6 +++--- htdocs/theme/eldy/global.inc.php | 2 ++ 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 32319e46cef..a590e786bc1 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -9753,8 +9753,8 @@ class Form $ret .= '
    '; //$ret .= ''; - $ret .= ''; - $ret .= ''; + $ret .= ''; + $ret .= ''; //$ret .= $langs->trans("Filters"); $ret .= ''; diff --git a/htdocs/core/customreports.php b/htdocs/core/customreports.php index 3a4ab5d1a75..f1616feb21b 100644 --- a/htdocs/core/customreports.php +++ b/htdocs/core/customreports.php @@ -431,21 +431,21 @@ if ($object->isextrafieldmanaged) { } } } -print '
    '; +print '
    '; print $form->multiselectarray('search_measures', $arrayofmesures, $search_measures, 0, 0, 'minwidth400', 1, 0, '', '', $langs->trans("Measures")); // Fill the array $arrayofmeasures with possible fields print '
    '; // XAxis print '
    '; -print '
    '; +print '
    '; print $formother->selectXAxisField($object, $search_xaxis, $arrayofxaxis, $langs->trans("XAxis")); // Fill the array $arrayofxaxis with possible fields print '
    '; // Group by print '
    '; -print '
    '; +print '
    '; print $formother->selectGroupByField($object, $search_groupby, $arrayofgroupby, 'minwidth200 maxwidth250', $langs->trans("GroupBy")); // Fill the array $arrayofgroupby with possible fields print '
    '; diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 7eb552517ee..5ce837e160c 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -205,6 +205,7 @@ div.tabBar input, div.tabBar input.flat, div.tabBar textarea, div.tabBar textare .divadvancedsearchfieldcompinput { background: #fff; border-bottom: solid 1px var(--inputbordercolor); + border-radius: 3px; } input[name=duration_value], input[name=durationhour] { @@ -1040,6 +1041,7 @@ div.divsearchfield { padding-: 0; border-bottom: solid 1px var(--inputbordercolor); height: 24px; + border-radius: 3px; } .search_component_searchtext { padding-top: 2px; From 8b0280a9d2e656549f4164d3b857b515b4956f33 Mon Sep 17 00:00:00 2001 From: Alexis LAURIER Date: Wed, 16 Feb 2022 10:26:44 +0100 Subject: [PATCH 164/225] add missing entity check on list of withdraws on index of paymentbybanktransfert --- htdocs/compta/paymentbybanktransfer/index.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/compta/paymentbybanktransfer/index.php b/htdocs/compta/paymentbybanktransfer/index.php index 78425398017..1cb47d1c1dc 100644 --- a/htdocs/compta/paymentbybanktransfer/index.php +++ b/htdocs/compta/paymentbybanktransfer/index.php @@ -182,6 +182,7 @@ $limit = 5; $sql = "SELECT p.rowid, p.ref, p.amount, p.datec, p.statut"; $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p"; $sql .= " WHERE p.type = 'bank-transfer'"; +$sql .= " AND p.entity IN (".getEntity('invoice').")"; $sql .= " ORDER BY datec DESC"; $sql .= $db->plimit($limit); From ff8dcdc4b7436d3ea206f471ab27aa9224462a67 Mon Sep 17 00:00:00 2001 From: Alexis LAURIER Date: Wed, 16 Feb 2022 10:52:20 +0100 Subject: [PATCH 165/225] manage details of prelevment line for bank transfer --- htdocs/compta/prelevement/line.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/prelevement/line.php b/htdocs/compta/prelevement/line.php index ccb60486c76..3e3ecb8e0ba 100644 --- a/htdocs/compta/prelevement/line.php +++ b/htdocs/compta/prelevement/line.php @@ -268,12 +268,20 @@ if ($id) $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p"; $sql .= " , ".MAIN_DB_PREFIX."prelevement_lignes as pl"; $sql .= " , ".MAIN_DB_PREFIX."prelevement_facture as pf"; - $sql .= " , ".MAIN_DB_PREFIX."facture as f"; + if ($type == 'bank-transfer') { + $sql .= " , ".MAIN_DB_PREFIX."facture_fourn as f"; + } else { + $sql .= " , ".MAIN_DB_PREFIX."facture as f"; + } $sql .= " , ".MAIN_DB_PREFIX."societe as s"; $sql .= " WHERE pf.fk_prelevement_lignes = pl.rowid"; $sql .= " AND pl.fk_prelevement_bons = p.rowid"; $sql .= " AND f.fk_soc = s.rowid"; - $sql .= " AND pf.fk_facture = f.rowid"; + if ($type == 'bank-transfer') { + $sql .= " AND pf.fk_facture_fourn = f.rowid"; + } else { + $sql .= " AND pf.fk_facture = f.rowid"; + } $sql .= " AND f.entity IN (".getEntity('invoice').")"; $sql .= " AND pl.rowid=".$id; if ($socid) $sql .= " AND s.rowid = ".$socid; From 7e17167fafbd87fa561150e1ba02038c7ac31228 Mon Sep 17 00:00:00 2001 From: lvessiller Date: Wed, 16 Feb 2022 11:45:29 +0100 Subject: [PATCH 166/225] NEW total mark rate in list --- htdocs/comm/propal/list.php | 19 +++++++++++++++++-- htdocs/commande/list.php | 17 ++++++++++++++++- htdocs/compta/facture/list.php | 17 ++++++++++++++++- 3 files changed, 49 insertions(+), 4 deletions(-) diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index e4cc6a37c1c..3e790bf6448 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -1486,8 +1486,11 @@ if ($resql) { ) { $with_margin_info = true; } + $total_ht = 0; + $total_margin = 0; - while ($i < min($num, $limit)) { + $last_num = min($num, $limit); + while ($i < $last_num) { $obj = $db->fetch_object($resql); $objectstatic->id = $obj->rowid; @@ -1541,6 +1544,8 @@ if ($resql) { if ($with_margin_info === true) { $objectstatic->fetch_lines(); $marginInfo = $formmargin->getMarginInfosArray($objectstatic); + $total_ht += $obj->total_ht; + $total_margin += $marginInfo['total_margin']; } print '
    '; @@ -1959,7 +1964,7 @@ if ($resql) { if (!$i) { $totalarray['pos'][$totalarray['nbfield']] = 'total_margin'; } - $totalarray['val']['total_margin'] += $marginInfo['total_margin']; + $totalarray['val']['total_margin'] = $total_margin; } // Total margin rate if (!empty($arrayfields['total_margin_rate']['checked'])) { @@ -1974,6 +1979,16 @@ if ($resql) { if (!$i) { $totalarray['nbfield']++; } + if (!$i) { + $totalarray['pos'][$totalarray['nbfield']] = 'total_mark_rate'; + } + if ($i >= $last_num - 1) { + if (!empty($total_ht)) { + $totalarray['val']['total_mark_rate'] = price2num($total_margin * 100 / $total_ht, 'MT'); + } else { + $totalarray['val']['total_mark_rate'] = ''; + } + } } // Extra fields diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 35abd34728a..27391d7a901 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -1463,8 +1463,11 @@ if ($resql) { ) { $with_margin_info = true; } + $total_ht = 0; + $total_margin = 0; - while ($i < min($num, $limit)) { + $last_num = min($num, $limit); + while ($i < $last_num) { $obj = $db->fetch_object($resql); $notshippable = 0; @@ -1510,6 +1513,8 @@ if ($resql) { if ($with_margin_info === true) { $generic_commande->fetch_lines(); $marginInfo = $formmargin->getMarginInfosArray($generic_commande); + $total_ht += $obj->total_ht; + $total_margin += $marginInfo['total_margin']; } print ''; @@ -1879,6 +1884,16 @@ if ($resql) { if (!$i) { $totalarray['nbfield']++; } + if (!$i) { + $totalarray['pos'][$totalarray['nbfield']] = 'total_mark_rate'; + } + if ($i >= $last_num - 1) { + if (!empty($total_ht)) { + $totalarray['val']['total_mark_rate'] = price2num($total_margin * 100 / $total_ht, 'MT'); + } else { + $totalarray['val']['total_mark_rate'] = ''; + } + } } // Extra fields diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 3e28fd05932..5914e37e425 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -1651,8 +1651,11 @@ if ($resql) { ) { $with_margin_info = true; } + $total_ht = 0; + $total_margin = 0; - while ($i < min($num, $limit)) { + $last_num = min($num, $limit); + while ($i < $last_num) { $obj = $db->fetch_object($resql); $datelimit = $db->jdate($obj->datelimite); @@ -1740,6 +1743,8 @@ if ($resql) { if ($with_margin_info === true) { $facturestatic->fetch_lines(); $marginInfo = $formmargin->getMarginInfosArray($facturestatic); + $total_ht += $obj->total_ht; + $total_margin += $marginInfo['total_margin']; } print '= $last_num - 1) { + if (!empty($total_ht)) { + $totalarray['val']['total_mark_rate'] = price2num($total_margin * 100 / $total_ht, 'MT'); + } else { + $totalarray['val']['total_mark_rate'] = ''; + } + } } // Extra fields From 60ada5fe7226a02692954c762114e33d4d509011 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 16 Feb 2022 14:06:16 +0100 Subject: [PATCH 167/225] Can filter on status purchase on list of products --- htdocs/core/class/html.form.class.php | 13 +++++++++---- htdocs/product/ajax/products.php | 5 +++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index a590e786bc1..23dd88d3151 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -2219,9 +2219,10 @@ class Form * 'warehouseinternal' = count products from warehouses for internal correct/transfer only * @param array $selected_combinations Selected combinations. Format: array([attrid] => attrval, [...]) * @param string $nooutput No print, return the output into a string + * @param int $status_purchase Purchase status -1=Return all products, 0=Products not on purchase, 1=Products on purchase * @return void|string */ - public function select_produits($selected = '', $htmlname = 'productid', $filtertype = '', $limit = 0, $price_level = 0, $status = 1, $finished = 2, $selected_input_value = '', $hidelabel = 0, $ajaxoptions = array(), $socid = 0, $showempty = '1', $forcecombo = 0, $morecss = '', $hidepriceinlabel = 0, $warehouseStatus = '', $selected_combinations = null, $nooutput = 0) + public function select_produits($selected = '', $htmlname = 'productid', $filtertype = '', $limit = 0, $price_level = 0, $status = 1, $finished = 2, $selected_input_value = '', $hidelabel = 0, $ajaxoptions = array(), $socid = 0, $showempty = '1', $forcecombo = 0, $morecss = '', $hidepriceinlabel = 0, $warehouseStatus = '', $selected_combinations = null, $nooutput = 0, $status_purchase = -1) { // phpcs:enable global $langs, $conf; @@ -2261,7 +2262,7 @@ class Form } } // mode=1 means customers products - $urloption = 'htmlname='.$htmlname.'&outjson=1&price_level='.$price_level.'&type='.$filtertype.'&mode=1&status='.$status.'&finished='.$finished.'&hidepriceinlabel='.$hidepriceinlabel.'&warehousestatus='.$warehouseStatus; + $urloption = 'htmlname='.$htmlname.'&outjson=1&price_level='.$price_level.'&type='.$filtertype.'&mode=1&status='.$status.'&status_purchase='.$status_purchase.'&finished='.$finished.'&hidepriceinlabel='.$hidepriceinlabel.'&warehousestatus='.$warehouseStatus; //Price by customer if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES) && !empty($socid)) { $urloption .= '&socid='.$socid; @@ -2357,7 +2358,7 @@ class Form $out .= img_picto($langs->trans("Search"), 'search'); } } else { - $out .= $this->select_produits_list($selected, $htmlname, $filtertype, $limit, $price_level, '', $status, $finished, 0, $socid, $showempty, $forcecombo, $morecss, $hidepriceinlabel, $warehouseStatus); + $out .= $this->select_produits_list($selected, $htmlname, $filtertype, $limit, $price_level, '', $status, $finished, 0, $socid, $showempty, $forcecombo, $morecss, $hidepriceinlabel, $warehouseStatus, $status_purchase); } if (empty($nooutput)) { @@ -2453,9 +2454,10 @@ class Form * 'warehouseopen' = count products from open warehouses, * 'warehouseclosed' = count products from closed warehouses, * 'warehouseinternal' = count products from warehouses for internal correct/transfer only + * @param int $status_purchase Purchase status -1=Return all products, 0=Products not on purchase, 1=Products on purchase * @return array Array of keys for json */ - public function select_produits_list($selected = '', $htmlname = 'productid', $filtertype = '', $limit = 20, $price_level = 0, $filterkey = '', $status = 1, $finished = 2, $outputmode = 0, $socid = 0, $showempty = '1', $forcecombo = 0, $morecss = '', $hidepriceinlabel = 0, $warehouseStatus = '') + public function select_produits_list($selected = '', $htmlname = 'productid', $filtertype = '', $limit = 20, $price_level = 0, $filterkey = '', $status = 1, $finished = 2, $outputmode = 0, $socid = 0, $showempty = '1', $forcecombo = 0, $morecss = '', $hidepriceinlabel = 0, $warehouseStatus = '', $status_purchase = -1) { // phpcs:enable global $langs, $conf; @@ -2593,6 +2595,9 @@ class Form } elseif ($status >= 0) { $sql .= " AND p.tosell = ".((int) $status); } + if ($status_purchase >= 0) { + $sql .= " AND p.tobuy = ".((int) $status_purchase); + } // Filter by product type if (strval($filtertype) != '') { $sql .= " AND p.fk_product_type = ".((int) $filtertype); diff --git a/htdocs/product/ajax/products.php b/htdocs/product/ajax/products.php index 32c4c83378c..74fa53dccb8 100644 --- a/htdocs/product/ajax/products.php +++ b/htdocs/product/ajax/products.php @@ -51,7 +51,8 @@ $htmlname = GETPOST('htmlname', 'aZ09'); $socid = GETPOST('socid', 'int'); $type = GETPOST('type', 'int'); $mode = GETPOST('mode', 'int'); -$status = ((GETPOST('status', 'int') >= 0) ? GETPOST('status', 'int') : - 1); +$status = ((GETPOST('status', 'int') >= 0) ? GETPOST('status', 'int') : - 1); // status buy when mode = customer , status purchase when mode = supplier +$status_purchase = ((GETPOST('status_purchase', 'int') >= 0) ? GETPOST('status_purchase', 'int') : - 1); // status purchase when mode = customer $outjson = (GETPOST('outjson', 'int') ? GETPOST('outjson', 'int') : 0); $price_level = GETPOST('price_level', 'int'); $action = GETPOST('action', 'aZ09'); @@ -260,7 +261,7 @@ if ($action == 'fetch' && !empty($id)) { } if (empty($mode) || $mode == 1) { // mode=1: customer - $arrayresult = $form->select_produits_list("", $htmlname, $type, 0, $price_level, $searchkey, $status, $finished, $outjson, $socid, '1', 0, '', $hidepriceinlabel, $warehouseStatus); + $arrayresult = $form->select_produits_list("", $htmlname, $type, 0, $price_level, $searchkey, $status, $finished, $outjson, $socid, '1', 0, '', $hidepriceinlabel, $warehouseStatus, $status_purchase); } elseif ($mode == 2) { // mode=2: supplier $arrayresult = $form->select_produits_fournisseurs_list($socid, "", $htmlname, $type, "", $searchkey, $status, $outjson, 0, $alsoproductwithnosupplierprice); } From 69266ae61fe22ab96a264e219812869d061bf97d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 16 Feb 2022 14:11:48 +0100 Subject: [PATCH 168/225] Fix text --- htdocs/modulebuilder/template/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/modulebuilder/template/README.md b/htdocs/modulebuilder/template/README.md index 45c5e4b51eb..03cf25d74f4 100644 --- a/htdocs/modulebuilder/template/README.md +++ b/htdocs/modulebuilder/template/README.md @@ -28,10 +28,10 @@ There is a [Transifex project](https://transifex.com/projects/p/dolibarr-module- ### From the ZIP file and GUI interface -- If you get the module in a zip file (like when downloading it from the market place [Dolistore](https://www.dolistore.com)), go into -menu ```Home - Setup - Modules - Deploy external module``` and upload the zip file. +If the module is a ready to deploy zip file, so with a name module_xxx-version.zip (like when downloading it from a market place like [Dolistore](https://www.dolistore.com)), +go into menu ```Home - Setup - Modules - Deploy external module``` and upload the zip file. -Note: If this screen tell you there is no custom directory, check your setup is correct: +Note: If this screen tell you that there is no "custom" directory, check that your setup is correct: - In your Dolibarr installation directory, edit the ```htdocs/conf/conf.php``` file and check that following lines are not commented: @@ -58,7 +58,7 @@ Note: If this screen tell you there is no custom directory, check your setup is ### From a GIT repository -- Clone the repository in ```$dolibarr_main_document_root_alt/mymodule``` +Clone the repository in ```$dolibarr_main_document_root_alt/mymodule``` ```sh cd ....../custom From 4a343247b0f328ca17401615847977376210d453 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 16 Feb 2022 14:34:32 +0100 Subject: [PATCH 169/225] Return a 404 http code when CSRF protection fails --- htdocs/main.inc.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 8dd5c45642f..303ed94576e 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -510,6 +510,7 @@ if ((!defined('NOCSRFCHECK') && empty($dolibarr_nocsrfcheck) && getDolGlobalInt( print $langs->trans("ErrorGoBackAndCorrectParameters"); die; } else { + http_response_code(403); if (defined('CSRFCHECK_WITH_TOKEN')) { dol_syslog("--- Access to ".(empty($_SERVER["REQUEST_METHOD"]) ? '' : $_SERVER["REQUEST_METHOD"].' ').$_SERVER["PHP_SELF"]." refused by CSRF protection (CSRFCHECK_WITH_TOKEN protection) in main.inc.php. Token not provided.", LOG_WARNING); print "Access to a page that needs a token (constant CSRFCHECK_WITH_TOKEN is defined) is refused by CSRF protection in main.inc.php. Token not provided.\n"; From 1a41232181e9d7802f0edabe4e9285fd9f2b6c07 Mon Sep 17 00:00:00 2001 From: Atm-Gregr Date: Wed, 16 Feb 2022 15:24:35 +0100 Subject: [PATCH 170/225] add vacant position option --- htdocs/hrm/class/position.class.php | 77 ++++++++++++++++++++++++++++- htdocs/hrm/position_list.php | 4 ++ htdocs/langs/fr_FR/hrm.lang | 2 + 3 files changed, 81 insertions(+), 2 deletions(-) diff --git a/htdocs/hrm/class/position.class.php b/htdocs/hrm/class/position.class.php index 2401791bb5f..f3cc82f92fe 100644 --- a/htdocs/hrm/class/position.class.php +++ b/htdocs/hrm/class/position.class.php @@ -109,7 +109,7 @@ class Position extends CommonObject 'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>'1', 'position'=>500, 'notnull'=>1, 'visible'=>-2,), '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'=>0, 'visible'=>1,), + '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'=>'Job', '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,), @@ -842,7 +842,80 @@ class Position extends CommonObject return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status], '', $statusType, $mode); } - /** + /** + * Return HTML string to put an input field into a page + * Code very similar with showInputField of extra fields + * + * @param array $val Array of properties for field to show + * @param string $key Key of attribute + * @param string $value Preselected value to show (for date type it must be in timestamp format, for amount or price it must be a php numeric value) + * @param string $moreparam To add more parameters on html input tag + * @param string $keysuffix Prefix string to add into name and id of field (can be used to avoid duplicate names) + * @param string $keyprefix Suffix string to add into name and id of field (can be used to avoid duplicate names) + * @param string|int $morecss Value for css to define style/length of field. May also be a numeric. + * @return string + */ + public function showInputField($val, $key, $value, $moreparam = '', $keysuffix = '', $keyprefix = '', $morecss = 0, $nonewbutton = 0) + { + global $langs; + + if($key == 'fk_user') + { + $vacantId = $keyprefix.$key.'vacant'.$keysuffix; + + $out = parent::showInputField($val, $key, $value, $moreparam, $keysuffix, $keyprefix, $morecss); + $out.= ''; + + ?> + + fk_user == 0) + { + return $langs->trans("VacantPosition"); + } + return parent::showOutputField($val, $key, $value, $moreparam, $keysuffix, $keyprefix, $morecss); + } + + + /** * Load the info information in the object * * @param int $id Id of object diff --git a/htdocs/hrm/position_list.php b/htdocs/hrm/position_list.php index d6ed72c2612..0e0f561ebb2 100644 --- a/htdocs/hrm/position_list.php +++ b/htdocs/hrm/position_list.php @@ -270,6 +270,10 @@ foreach ($search as $key => $val) { } } } +$vacant = GETPOST('vacant', 'alphanohtml') === 'on'; +if($vacant) { + $sql .= ' AND t.fk_user = 0'; +} if ($search_all) { $sql .= natural_search(array_keys($fieldstosearchall), $search_all); } diff --git a/htdocs/langs/fr_FR/hrm.lang b/htdocs/langs/fr_FR/hrm.lang index d47596fe95e..fd0bddcc2eb 100644 --- a/htdocs/langs/fr_FR/hrm.lang +++ b/htdocs/langs/fr_FR/hrm.lang @@ -79,3 +79,5 @@ NoEval=Aucune évaluation effectuée pour cet employé HowManyUserWithThisMaxNote=Nombre d'employés avec ce niveau HighestRank=Plus haut niveau SkillComparison=Comparaison des compétences +VacantPosition=Poste vacant +VacantCheckboxHelper=Cocher cette option affichera le(s) poste(s) comme non pourvu(s) From 7868aa305b8e0cea98f4dc01101f10107b9c5d57 Mon Sep 17 00:00:00 2001 From: Atm-Gregr Date: Wed, 16 Feb 2022 15:48:23 +0100 Subject: [PATCH 171/225] fix filter --- htdocs/hrm/position_list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/hrm/position_list.php b/htdocs/hrm/position_list.php index 0e0f561ebb2..11e6d3c9abf 100644 --- a/htdocs/hrm/position_list.php +++ b/htdocs/hrm/position_list.php @@ -270,7 +270,7 @@ foreach ($search as $key => $val) { } } } -$vacant = GETPOST('vacant', 'alphanohtml') === 'on'; +$vacant = GETPOST('search_fk_uservacant', 'alphanohtml') === 'on'; if($vacant) { $sql .= ' AND t.fk_user = 0'; } From dbcbda642a3531f3c115a8f0e26fef5aa725d658 Mon Sep 17 00:00:00 2001 From: Atm-Gregr Date: Wed, 16 Feb 2022 15:53:06 +0100 Subject: [PATCH 172/225] fix sticker 1 --- htdocs/hrm/class/position.class.php | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/htdocs/hrm/class/position.class.php b/htdocs/hrm/class/position.class.php index f3cc82f92fe..bc74f96cee9 100644 --- a/htdocs/hrm/class/position.class.php +++ b/htdocs/hrm/class/position.class.php @@ -855,22 +855,20 @@ class Position extends CommonObject * @param string|int $morecss Value for css to define style/length of field. May also be a numeric. * @return string */ - public function showInputField($val, $key, $value, $moreparam = '', $keysuffix = '', $keyprefix = '', $morecss = 0, $nonewbutton = 0) - { + public function showInputField($val, $key, $value, $moreparam = '', $keysuffix = '', $keyprefix = '', $morecss = 0, $nonewbutton = 0) { global $langs; - if($key == 'fk_user') - { + if($key == 'fk_user') { $vacantId = $keyprefix.$key.'vacant'.$keysuffix; $out = parent::showInputField($val, $key, $value, $moreparam, $keysuffix, $keyprefix, $morecss); - $out.= ''; + $out .= ''; ?> fk_user == 0) - { + if($key == 'fk_user' && $this->fk_user == 0) { return $langs->trans("VacantPosition"); } return parent::showOutputField($val, $key, $value, $moreparam, $keysuffix, $keyprefix, $morecss); From 98c50f531ce0e34e3b08cd467c8a9dcbc5ad1a24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9=20Cendrier?= Date: Wed, 16 Feb 2022 15:57:39 +0100 Subject: [PATCH 173/225] translation string instead of error message text --- htdocs/langs/en_US/productbatch.lang | 2 ++ htdocs/langs/fr_FR/productbatch.lang | 1 + htdocs/product/stock/class/mouvementstock.class.php | 6 ++++-- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/htdocs/langs/en_US/productbatch.lang b/htdocs/langs/en_US/productbatch.lang index 763af20c6b4..a4215a1d7d4 100644 --- a/htdocs/langs/en_US/productbatch.lang +++ b/htdocs/langs/en_US/productbatch.lang @@ -41,3 +41,5 @@ QCFrequency=Quality control frequency (in days) #Traceability - qc status OutOfOrder=Out of order InWorkingOrder=In working order + +CantMoveNonExistantSerial=Error. You ask a move on a record for a serial that does not exists anymore. May be you take the same serial on same warehouse several times in same shipment or it was used by another shipment. Remove this shipment and prepare another one. diff --git a/htdocs/langs/fr_FR/productbatch.lang b/htdocs/langs/fr_FR/productbatch.lang index 40c8b0be477..e0a0749e927 100644 --- a/htdocs/langs/fr_FR/productbatch.lang +++ b/htdocs/langs/fr_FR/productbatch.lang @@ -42,3 +42,4 @@ HideLots=Masquer les lots #Traceability - qc status OutOfOrder=Hors d'usage InWorkingOrder=En état de marche +CantMoveNonExistantSerial=Erreur : Vous avez demandé un mouvement sur un numéro de série qui n’existe plus. Peut-être avez-vous requis le même numéro de série plusieurs fois dans une même expédition, ou il a déjà servi dans une autre expédition. Supprimez cette expédition et préparez-en une autre. diff --git a/htdocs/product/stock/class/mouvementstock.class.php b/htdocs/product/stock/class/mouvementstock.class.php index 8a66e535ca2..4976530eb5e 100644 --- a/htdocs/product/stock/class/mouvementstock.class.php +++ b/htdocs/product/stock/class/mouvementstock.class.php @@ -842,7 +842,9 @@ class MouvementStock extends CommonObject */ private function createBatch($dluo, $qty) { - global $user; + global $user, $langs; + + $langs->load('productbatch'); $pdluo = new Productbatch($this->db); @@ -853,7 +855,7 @@ class MouvementStock extends CommonObject $result = $pdluo->fetch($dluo); if (empty($pdluo->id)) { // We didn't find the line. May be it was deleted before by a previous move in same transaction. - $this->error = 'Error. You ask a move on a record for a serial that does not exists anymore. May be you take the same serial on same warehouse several times in same shipment or it was used by another shipment. Remove this shipment and prepare another one.'; + $this->error = $langs->trans('CantMoveNonExistantSerial'); $this->errors[] = $this->error; $result = -2; } From 038298a638f88200d11688b1624cf987b5005de8 Mon Sep 17 00:00:00 2001 From: Atm-Gregr Date: Wed, 16 Feb 2022 16:10:48 +0100 Subject: [PATCH 174/225] change button and add title --- htdocs/hrm/job_agenda.php | 13 ++++--------- htdocs/langs/fr_FR/hrm.lang | 1 + 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/htdocs/hrm/job_agenda.php b/htdocs/hrm/job_agenda.php index 6bfafcc1269..0685ccdba9a 100644 --- a/htdocs/hrm/job_agenda.php +++ b/htdocs/hrm/job_agenda.php @@ -189,18 +189,13 @@ if ($object->id > 0) { } - print '
    '; - if (!empty($conf->agenda->enabled)) { if (!empty($user->rights->agenda->myactions->create) || !empty($user->rights->agenda->allactions->create)) { - print ''.$langs->trans("AddAction").''; - } else { - print ''.$langs->trans("AddAction").''; - } + $newcardbutton = ''; + $newcardbutton .= dolGetButtonTitle($langs->trans('AddAction'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/comm/action/card.php?action=create'.$out); + } } - print '
    '; - if (!empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { $param = '&id='.$object->id.'&socid='.$socid; if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) { @@ -211,7 +206,7 @@ if ($object->id > 0) { } - //print load_fiche_titre($langs->trans("ActionsOnJob"), '', ''); + print load_fiche_titre($langs->trans("ActionsOnJob"), $newcardbutton, ''); // List of all actions $filters = array(); diff --git a/htdocs/langs/fr_FR/hrm.lang b/htdocs/langs/fr_FR/hrm.lang index d47596fe95e..cab3c7c11af 100644 --- a/htdocs/langs/fr_FR/hrm.lang +++ b/htdocs/langs/fr_FR/hrm.lang @@ -79,3 +79,4 @@ NoEval=Aucune évaluation effectuée pour cet employé HowManyUserWithThisMaxNote=Nombre d'employés avec ce niveau HighestRank=Plus haut niveau SkillComparison=Comparaison des compétences +ActionsOnJob=Événements sur cet emploi \ No newline at end of file From 1f2659d4114e6c715aa6ec0450c482bf77f5319d Mon Sep 17 00:00:00 2001 From: Atm-Gregr Date: Wed, 16 Feb 2022 16:26:57 +0100 Subject: [PATCH 175/225] insert precommit --- htdocs/hrm/job_agenda.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/hrm/job_agenda.php b/htdocs/hrm/job_agenda.php index 0685ccdba9a..08da46fadf8 100644 --- a/htdocs/hrm/job_agenda.php +++ b/htdocs/hrm/job_agenda.php @@ -217,6 +217,6 @@ if ($object->id > 0) { } } -// End of page +//End of page llxFooter(); $db->close(); From 5f09ac61b2df1ac06111affeb5406ff79ae831ef Mon Sep 17 00:00:00 2001 From: Atm-Gregr Date: Wed, 16 Feb 2022 16:27:47 +0100 Subject: [PATCH 176/225] insert precommit1 --- htdocs/hrm/job_agenda.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/hrm/job_agenda.php b/htdocs/hrm/job_agenda.php index 08da46fadf8..0685ccdba9a 100644 --- a/htdocs/hrm/job_agenda.php +++ b/htdocs/hrm/job_agenda.php @@ -217,6 +217,6 @@ if ($object->id > 0) { } } -//End of page +// End of page llxFooter(); $db->close(); From 30d3a782dea288fe7dcc305e3e2cf49841e0fb64 Mon Sep 17 00:00:00 2001 From: Atm-Gregr Date: Wed, 16 Feb 2022 16:30:54 +0100 Subject: [PATCH 177/225] precommit stickler --- htdocs/hrm/class/position.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/hrm/class/position.class.php b/htdocs/hrm/class/position.class.php index bc74f96cee9..2bba18c131a 100644 --- a/htdocs/hrm/class/position.class.php +++ b/htdocs/hrm/class/position.class.php @@ -1141,7 +1141,7 @@ require_once DOL_DOCUMENT_ROOT . '/core/class/commonobjectline.class.php'; class PositionLine extends CommonObjectLine { // To complete with content of an object PositionLine - // We should have a field rowid, fk_position and position + // We should have a field rowid , fk_position and position /** * @var int Does object support extrafields ? 0=No, 1=Yes From a9496220b58d493ebdd14058cf5ece8ed7d4b4ca Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Wed, 16 Feb 2022 16:43:52 +0100 Subject: [PATCH 178/225] Fix : warnings php 8.0 --- htdocs/modulebuilder/index.php | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index 4e66e655f5e..60f23cbee1a 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -46,6 +46,9 @@ $action = GETPOST('action', 'aZ09'); $confirm = GETPOST('confirm', 'alpha'); $cancel = GETPOST('cancel', 'alpha'); +$sortfield=GETPOST('sortfield', 'alpha'); +$sortorder=GETPOST('sortorder', 'alpha'); + $module = GETPOST('module', 'alpha'); $tab = GETPOST('tab', 'aZ09'); $tabobj = GETPOST('tabobj', 'alpha'); @@ -2296,7 +2299,7 @@ if ($module == 'initmodule') { print_liste_field_titre("Condition", $_SERVER["PHP_SELF"], '', "", $param, '', $sortfield, $sortorder); print "
    \n"; - if (is_array($dicts) && is_array($dicts['tabname'])) { + if (!empty($dicts) && is_array($dicts) && !empty($dicts['tabname']) && is_array($dicts['tabname'])) { $i = 0; $maxi = count($dicts['tabname']); while ($i < $maxi) { @@ -2778,25 +2781,25 @@ if ($module == 'initmodule') { $propname = $propkey; $proplabel = $propval['label']; $proptype = $propval['type']; - $proparrayofkeyval = $propval['arrayofkeyval']; + $proparrayofkeyval = !empty($propval['arrayofkeyval'])?$propval['arrayofkeyval']:''; $propnotnull = $propval['notnull']; - $propdefault = $propval['default']; - $propindex = $propval['index']; - $propforeignkey = $propval['foreignkey']; + $propdefault = !empty($propval['default'])?$propval['default']:''; + $propindex = !empty($propval['index'])?$propval['index']:''; + $propforeignkey = !empty($propval['foreignkey'])?$propval['foreignkey']:''; $propposition = $propval['position']; $propenabled = $propval['enabled']; $propvisible = $propval['visible']; - $propnoteditable = $propval['noteditable']; - $propsearchall = $propval['searchall']; - $propisameasure = $propval['isameasure']; - $propcss = $propval['css']; - $propcssview = $propval['cssview']; - $propcsslist = $propval['csslist']; - $prophelp = $propval['help']; - $propshowoncombobox = $propval['showoncombobox']; + $propnoteditable = !empty($propval['noteditable'])?$propval['noteditable']:0; + $propsearchall = !empty($propval['searchall'])?$propval['searchall']:0; + $propisameasure = !empty($propval['isameasure'])?$propval['isameasure']:0; + $propcss = !empty($propval['css'])?$propval['css']:''; + $propcssview = !empty($propval['cssview'])?$propval['cssview']:''; + $propcsslist = !empty($propval['csslist'])?$propval['csslist']:''; + $prophelp = !empty($propval['help'])?$propval['help']:''; + $propshowoncombobox = !empty($propval['showoncombobox'])?$propval['showoncombobox']:0; //$propdisabled=$propval['disabled']; - $propvalidate = $propval['validate']; - $propcomment = $propval['comment']; + $propvalidate = !empty($propval['validate'])?$propval['validate']:0; + $propcomment = !empty($propval['comment'])?$propval['comment']:''; print ''; From 7ed6ca6ec629cea1e545d1cffb81c119a63753a0 Mon Sep 17 00:00:00 2001 From: Florian Date: Thu, 21 Oct 2021 23:28:58 +0200 Subject: [PATCH 179/225] FIX ISSUE DB_ERROR_SYNTAX-#18921 --- htdocs/ticket/list.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/ticket/list.php b/htdocs/ticket/list.php index 6991516ede8..0d0e97336cd 100644 --- a/htdocs/ticket/list.php +++ b/htdocs/ticket/list.php @@ -391,7 +391,7 @@ foreach ($search as $key => $val) { continue; } $mode_search = (($object->isInt($object->fields[$key]) || $object->isFloat($object->fields[$key])) ? 1 : 0); - if ($search[$key] != '') { + if ($search[$key] != '' && !empty($val)) { $sql .= natural_search($key, $search[$key], $mode_search); } } @@ -609,9 +609,9 @@ if ($limit > 0 && $limit != $conf->liste_limit) { $param .= '&limit='.urlencode($limit); } foreach ($search as $key => $val) { - if (is_array($search[$key]) && count($search[$key])) { - foreach ($search[$key] as $skey) { - $param .= '&search_'.$key.'[]='.urlencode($skey); + if (is_array($val) && count($val)) { + foreach ($val as $skey) { + $param .= (!empty($val)) ? '&search_'.$key.'[]='.urlencode($skey) : ""; } } else { $param .= '&search_'.$key.'='.urlencode($search[$key]); From aa2a57ff95404990a6494ed2f185352c91140030 Mon Sep 17 00:00:00 2001 From: Florian Date: Sun, 24 Oct 2021 00:26:28 +0200 Subject: [PATCH 180/225] Check that the value is not an array --- htdocs/ticket/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/ticket/list.php b/htdocs/ticket/list.php index 0d0e97336cd..4caffd173c3 100644 --- a/htdocs/ticket/list.php +++ b/htdocs/ticket/list.php @@ -391,7 +391,7 @@ foreach ($search as $key => $val) { continue; } $mode_search = (($object->isInt($object->fields[$key]) || $object->isFloat($object->fields[$key])) ? 1 : 0); - if ($search[$key] != '' && !empty($val)) { + if ($search[$key] != '' && !is_array($val)) { $sql .= natural_search($key, $search[$key], $mode_search); } } From 1ede8a30b2bc708caf3f1289cd3796b87d1cbf24 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 16 Feb 2022 17:49:05 +0100 Subject: [PATCH 181/225] Missing NOSESSION --- htdocs/modulebuilder/template/myobject_card.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/modulebuilder/template/myobject_card.php b/htdocs/modulebuilder/template/myobject_card.php index 180ece04fa8..bacb2f988dc 100644 --- a/htdocs/modulebuilder/template/myobject_card.php +++ b/htdocs/modulebuilder/template/myobject_card.php @@ -42,6 +42,7 @@ //if (! defined("FORCECSP")) define('FORCECSP', 'none'); // Disable all Content Security Policies //if (! defined('CSRFCHECK_WITH_TOKEN')) define('CSRFCHECK_WITH_TOKEN', '1'); // Force use of CSRF protection with tokens even for GET //if (! defined('NOBROWSERNOTIF')) define('NOBROWSERNOTIF', '1'); // Disable browser notification +//if (! defined('NOSESSION')) define('NOSESSION', '1'); // Disable session // Load Dolibarr environment $res = 0; From dfcc49d466cc69a357fe4f39c2dfa033d4f47497 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 16 Feb 2022 20:50:27 +0100 Subject: [PATCH 182/225] Doc --- htdocs/reception/class/reception.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/reception/class/reception.class.php b/htdocs/reception/class/reception.class.php index 0ba8fbbc769..6435acb2877 100644 --- a/htdocs/reception/class/reception.class.php +++ b/htdocs/reception/class/reception.class.php @@ -723,7 +723,7 @@ class Reception extends CommonObject /** * Get status from all dispatched lines * - * @return int <0 if KO, >0 if OK + * @return int <0 if KO, Status of reception if OK */ public function getStatusDispatch() { From 690a91d54666dcb1c7a99a224039b2c60e034af8 Mon Sep 17 00:00:00 2001 From: lvessiller Date: Mon, 14 Feb 2022 18:07:18 +0100 Subject: [PATCH 183/225] NEW automatically set totally received status in reception --- htdocs/reception/class/reception.class.php | 97 +++++++++++++++++++++- 1 file changed, 93 insertions(+), 4 deletions(-) diff --git a/htdocs/reception/class/reception.class.php b/htdocs/reception/class/reception.class.php index 382cc5be9b6..7efcb2360dc 100644 --- a/htdocs/reception/class/reception.class.php +++ b/htdocs/reception/class/reception.class.php @@ -635,11 +635,15 @@ class Reception extends CommonObject } } - // Change status of order to "reception in process" - $ret = $this->setStatut(4, $this->origin_id, 'commande_fournisseur'); - - if (!$ret) { + // Change status of order to "reception in process" or "totally received" + $status = $this->getStatusDispatch(); + if ($status < 0) { $error++; + } else { + $ret = $this->setStatut($status, $this->origin_id, 'commande_fournisseur'); + if (!$ret) { + $error++; + } } if (!$error && !$notrigger) { @@ -707,7 +711,92 @@ class Reception extends CommonObject } } + /** + * Get status from all dispatched lines + * + * @return int <0 if KO, >0 if OK + */ + public function getStatusDispatch() + { + global $conf; + require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; + require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.dispatch.class.php'; + + $status = CommandeFournisseur::STATUS_RECEIVED_PARTIALLY; + + if (!empty($this->origin) && $this->origin_id > 0 && ($this->origin == 'order_supplier' || $this->origin == 'commandeFournisseur')) { + if (empty($this->commandeFournisseur)) { + $this->commandeFournisseur = null; + $this->fetch_origin(); + if (empty($this->commandeFournisseur->lines)) { + $res = $this->commandeFournisseur->fetch_lines(); + if ($res < 0) return $res; + } + } + + $qty_received = array(); + $qty_wished = array(); + + $supplierorderdispatch = new CommandeFournisseurDispatch($this->db); + $filter = array('t.fk_commande'=>$this->origin_id); + if (!empty($conf->global->SUPPLIER_ORDER_USE_DISPATCH_STATUS)) { + $filter['t.status'] = 1; // Restrict to lines with status validated + } + + $ret = $supplierorderdispatch->fetchAll('', '', 0, 0, $filter); + if ($ret < 0) { + $this->error = $supplierorderdispatch->error; + $this->errors = $supplierorderdispatch->errors; + return $ret; + } else { + // build array with quantity received by product in all supplier orders (origin) + foreach ($supplierorderdispatch->lines as $dispatch_line) { + $qty_received[$dispatch_line->fk_product] += $dispatch_line->qty; + } + + // qty wished in order supplier (origin) + foreach ($this->commandeFournisseur->lines as $origin_line) { + // exclude lines not qualified for reception + if (empty($conf->global->STOCK_SUPPORTS_SERVICES) && $origin_line->product_type > 0) { + continue; + } + + $qty_wished[$origin_line->fk_product] += $origin_line->qty; + } + + // compare array + $diff_array = array_diff_assoc($qty_received, $qty_wished); // Warning: $diff_array is done only on common keys. + $keys_in_wished_not_in_received = array_diff(array_keys($qty_wished), array_keys($qty_received)); + $keys_in_received_not_in_wished = array_diff(array_keys($qty_received), array_keys($qty_wished)); + + if (count($diff_array) == 0 && count($keys_in_wished_not_in_received) == 0 && count($keys_in_received_not_in_wished) == 0) { // no diff => mean everything is received + $status = CommandeFournisseur::STATUS_RECEIVED_COMPLETELY; + } elseif (!empty($conf->global->SUPPLIER_ORDER_MORE_THAN_WISHED)) { + // set totally received if more products received than ordered + $close = 0; + + if (count($diff_array) > 0) { + // there are some difference between the two arrays + // scan the array of results + foreach ($diff_array as $key => $value) { + // if the quantity delivered is greater or equal to ordered quantity + if ($qty_received[$key] >= $qty_wished[$key]) { + $close++; + } + } + } + + if ($close == count($diff_array)) { + // all the products are received equal or more than the ordered quantity + $status = CommandeFournisseur::STATUS_RECEIVED_COMPLETELY; + } + } + } + } + + return $status; + } /** * Add an reception line. From 9b1d800311d3043552bedefbd3bc52186243e78a Mon Sep 17 00:00:00 2001 From: lvessiller Date: Tue, 15 Feb 2022 09:54:40 +0100 Subject: [PATCH 184/225] NEW add triiger and event on totally received status --- htdocs/reception/class/reception.class.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/htdocs/reception/class/reception.class.php b/htdocs/reception/class/reception.class.php index 7efcb2360dc..bb54a8164cd 100644 --- a/htdocs/reception/class/reception.class.php +++ b/htdocs/reception/class/reception.class.php @@ -640,9 +640,18 @@ class Reception extends CommonObject if ($status < 0) { $error++; } else { - $ret = $this->setStatut($status, $this->origin_id, 'commande_fournisseur'); - if (!$ret) { - $error++; + $trigger_key = ''; + if ($status == CommandeFournisseur::STATUS_RECEIVED_COMPLETELY) { + $ret = $this->commandeFournisseur->Livraison($user, dol_now(), 'tot', ''); + if ($ret < 0) { + $error++; + $this->errors = array_merge($this->errors, $this->commandeFournisseur->errors); + } + } else { + $ret = $this->setStatut($status, $this->origin_id, 'commande_fournisseur', $trigger_key); + if ($ret < 0) { + $error++; + } } } From 131ae92cc672c5ced53512477bd3b1267f976573 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 16 Feb 2022 21:05:23 +0100 Subject: [PATCH 185/225] FIX #20063 --- htdocs/core/class/html.form.class.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 23dd88d3151..811ad017c4d 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -7384,10 +7384,17 @@ class Form $objecttmp = null; + // Example of value for $objectdec: + // Bom:bom/class/bom.class.php:0:t.status=1 + // Bom:bom/class/bom.class.php:0:t.status=1:ref + // Bom:bom/class/bom.class.php:0:(t.status:=:1):ref $InfoFieldList = explode(":", $objectdesc, 4); $vartmp = $InfoFieldList[3]; - $InfoFieldList[4] = preg_replace('/^.*:(\w*)$/', '\1', $vartmp); // take the sort field - $InfoFieldList[3] = preg_replace('/:\w*$/', '', $vartmp); // take the filter field + $reg = array(); + if (preg_match('/^.*:(\w*)$/', $vartmp, $reg)) { + $InfoFieldList[4] = $reg[1]; // take the sort field + } + $InfoFieldList[3] = preg_replace('/:\w*$/', '', $vartmp); // take the filter field $classname = $InfoFieldList[0]; $classpath = $InfoFieldList[1]; From 1c8c98ac0f22b61ffcd05b4a672fa92d9329df2d Mon Sep 17 00:00:00 2001 From: Thomas Negre Date: Thu, 17 Feb 2022 09:53:36 +0100 Subject: [PATCH 186/225] fix ticket public interface: When sending an email to the customer, If a custom URL had been provided for ticket public interface, the link provided in the email did lead to the index of the public interface. We want it to lead to /view.php --- htdocs/public/ticket/create_ticket.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/public/ticket/create_ticket.php b/htdocs/public/ticket/create_ticket.php index 29ec7983930..31b44f39b18 100644 --- a/htdocs/public/ticket/create_ticket.php +++ b/htdocs/public/ticket/create_ticket.php @@ -211,7 +211,7 @@ if ($action == 'create_ticket' && GETPOST('add', 'alpha')) { $message .= ($conf->global->TICKET_MESSAGE_MAIL_NEW ? $conf->global->TICKET_MESSAGE_MAIL_NEW : $langs->transnoentities('TicketNewEmailBody'))."\n\n"; $message .= $langs->transnoentities('TicketNewEmailBodyInfosTicket')."\n"; - $url_public_ticket = ($conf->global->TICKET_URL_PUBLIC_INTERFACE ? $conf->global->TICKET_URL_PUBLIC_INTERFACE.'/' : dol_buildpath('/public/ticket/view.php', 2)).'?track_id='.$object->track_id; + $url_public_ticket = ($conf->global->TICKET_URL_PUBLIC_INTERFACE ? $conf->global->TICKET_URL_PUBLIC_INTERFACE : dol_buildpath('/public/ticket', 2)).'/view.php?track_id='.$object->track_id; $infos_new_ticket = $langs->transnoentities('TicketNewEmailBodyInfosTrackId', ''.$object->track_id.'')."\n"; $infos_new_ticket .= $langs->transnoentities('TicketNewEmailBodyInfosTrackUrl')."\n\n"; From aea9c2e4275de16ae066fd03ca77d16f7e65391a Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Thu, 17 Feb 2022 10:22:58 +0100 Subject: [PATCH 187/225] Fix : fix php 8.0 warnings --- htdocs/adherents/agenda.php | 3 +++ htdocs/adherents/card.php | 1 + htdocs/adherents/subscription.php | 2 ++ htdocs/core/tpl/login.tpl.php | 2 +- 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/htdocs/adherents/agenda.php b/htdocs/adherents/agenda.php index cb942ba3176..9132dae5802 100644 --- a/htdocs/adherents/agenda.php +++ b/htdocs/adherents/agenda.php @@ -65,6 +65,9 @@ if (GETPOST('actioncode', 'array')) { } $search_agenda_label = GETPOST('search_agenda_label'); +// Get object canvas (By default, this is not defined, so standard usage of dolibarr) +$objcanvas = null; + // Security check $result = restrictedArea($user, 'adherent', $id); diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php index a2e3779d52b..caf2bbe61d6 100644 --- a/htdocs/adherents/card.php +++ b/htdocs/adherents/card.php @@ -55,6 +55,7 @@ $id = GETPOST('id') ?GETPOST('id', 'int') : $rowid; $typeid = GETPOST('typeid', 'int'); $userid = GETPOST('userid', 'int'); $socid = GETPOST('socid', 'int'); +$ref = GETPOST('ref', 'alpha'); if (!empty($conf->mailmanspip->enabled)) { include_once DOL_DOCUMENT_ROOT.'/mailmanspip/class/mailmanspip.class.php'; diff --git a/htdocs/adherents/subscription.php b/htdocs/adherents/subscription.php index ac2555b4deb..5f578869e6e 100644 --- a/htdocs/adherents/subscription.php +++ b/htdocs/adherents/subscription.php @@ -40,6 +40,8 @@ require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingjournal.class.php'; $langs->loadLangs(array("companies", "bills", "members", "users", "mails", 'other')); +$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') + $action = GETPOST('action', 'aZ09'); $confirm = GETPOST('confirm', 'alpha'); $id = GETPOST('rowid', 'int') ?GETPOST('rowid', 'int') : GETPOST('id', 'int'); diff --git a/htdocs/core/tpl/login.tpl.php b/htdocs/core/tpl/login.tpl.php index c07e01570c2..70f4f51290c 100644 --- a/htdocs/core/tpl/login.tpl.php +++ b/htdocs/core/tpl/login.tpl.php @@ -31,7 +31,7 @@ if (empty($conf) || !is_object($conf)) { } // DDOS protection -$size = (int) $_SERVER['CONTENT_LENGTH']; +$size = (int) !empty($_SERVER['CONTENT_LENGTH'])?$_SERVER['CONTENT_LENGTH']:0; if ($size > 10000) { http_response_code(413); $langs->loadLangs(array("errors", "install")); From 13cfe858f23d5b132597206c5ca674f5fe27a8f4 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Thu, 17 Feb 2022 09:53:02 +0000 Subject: [PATCH 188/225] Fixing style errors. --- htdocs/bom/bom_card.php | 2 +- htdocs/bom/tpl/objectline_view.tpl.php | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/bom/bom_card.php b/htdocs/bom/bom_card.php index 6f748df22e4..f6e40b511f1 100644 --- a/htdocs/bom/bom_card.php +++ b/htdocs/bom/bom_card.php @@ -518,7 +518,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea // Common attributes $keyforbreak = 'duration'; include DOL_DOCUMENT_ROOT.'/core/tpl/commonfields_view.tpl.php'; - $object->calculateCosts(); + $object->calculateCosts(); print ''; print ''; diff --git a/htdocs/bom/tpl/objectline_view.tpl.php b/htdocs/bom/tpl/objectline_view.tpl.php index 14cfd22c39e..8040310ea53 100644 --- a/htdocs/bom/tpl/objectline_view.tpl.php +++ b/htdocs/bom/tpl/objectline_view.tpl.php @@ -192,9 +192,9 @@ if ($resql) { $sub_bom_product->fetch($obj->fk_product); $sub_bom = new BOM($object->db); - if(!empty($obj->fk_bom_child)){ + if (!empty($obj->fk_bom_child)) { $sub_bom->fetch($obj->fk_bom_child); - } + } $sub_bom_line = new BOMLine($object->db); $sub_bom_line->fetch($obj->rowid); @@ -236,11 +236,11 @@ if ($resql) { // Efficiency print ''; - if(!empty($sub_bom->id)){ - $sub_bom->calculateCosts(); - print ''; + if (!empty($sub_bom->id)) { + $sub_bom->calculateCosts(); + print ''; $total_cost+= $sub_bom->total_cost * $sub_bom_line->qty * $line->qty; - } elseif ($sub_bom_product->cost_price > 0) { + } elseif ($sub_bom_product->cost_price > 0) { print ''; $total_cost+= $sub_bom_product->cost_price * $sub_bom_line->qty * $line->qty; } elseif ($sub_bom_product->pmp > 0) { // PMP if cost price isn't defined From 1ad8700810096cb8b5964a7cdda14881f965ce45 Mon Sep 17 00:00:00 2001 From: Thomas Negre Date: Thu, 17 Feb 2022 11:08:23 +0100 Subject: [PATCH 189/225] empty commit to force travis try rebuild From 67cb2683248785499a3a4380cc13cc6f78cf918d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 17 Feb 2022 11:33:34 +0100 Subject: [PATCH 190/225] Update example conf file with force_install_lockinstall --- htdocs/conf/conf.php.example | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/htdocs/conf/conf.php.example b/htdocs/conf/conf.php.example index 6bf2873b50c..8cd46352ac9 100644 --- a/htdocs/conf/conf.php.example +++ b/htdocs/conf/conf.php.example @@ -321,6 +321,15 @@ $dolibarr_cron_allow_cli='0'; // // $php_session_save_handler=''; +// force_install_lockinstall +// If this value is set to a value, it forces the creation of a file install.lock once an upgrade process into a new version end. +// The value is the octal value of permission to set on created file. +// The file install.lock prevents the use of the migration process another time. You will have to delete it manually for +// next upgrade. +// Default value: '0' +// Example: '444'; +// $force_install_lockinstall='440'; + //################## From bb08341dc3a5029e8cc988b5962a90e47d7a67aa Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 17 Feb 2022 18:34:23 +0800 Subject: [PATCH 191/225] to disable the default pdf generation --- htdocs/fourn/class/fournisseur.commande.class.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index ed978010a33..8a0e0de299e 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -3132,18 +3132,19 @@ class CommandeFournisseur extends CommonOrder $outputlangs->load("products"); if (!dol_strlen($modele)) { - $modele = 'muscadet'; - + $modele = ''; if ($this->model_pdf) { $modele = $this->model_pdf; } elseif (!empty($conf->global->COMMANDE_SUPPLIER_ADDON_PDF)) { $modele = $conf->global->COMMANDE_SUPPLIER_ADDON_PDF; } } - - $modelpath = "core/modules/supplier_order/doc/"; - - return $this->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams); + if (empty($modele)) { + return 0; + } else { + $modelpath = "core/modules/supplier_order/doc/"; + return $this->commonGenerateDocument($modelpath, $modele, $outputlangs, $hidedetails, $hidedesc, $hideref, $moreparams); + } } /** From c529af90c66ae1271fda99c4c102c007db538b90 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 17 Feb 2022 12:06:48 +0100 Subject: [PATCH 192/225] Fix trans --- htdocs/admin/tools/dolibarr_export.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/admin/tools/dolibarr_export.php b/htdocs/admin/tools/dolibarr_export.php index 4f6977ffb41..092f3a57170 100644 --- a/htdocs/admin/tools/dolibarr_export.php +++ b/htdocs/admin/tools/dolibarr_export.php @@ -546,6 +546,7 @@ print ''; print ''; +$title = $langs->trans("BackupZipWizard"); print "
    \n"; print "\n"; @@ -564,7 +565,7 @@ print ''; print '
    '; -print load_fiche_titre($title ? $title : $langs->trans("BackupZipWizard")); +print load_fiche_titre($title); print '
    '; $prefix = 'documents'; From 85327f28b0ad0cb2c1e958f461ef0d41f462f479 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 17 Feb 2022 19:12:24 +0100 Subject: [PATCH 193/225] Update login.tpl.php --- htdocs/core/tpl/login.tpl.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/tpl/login.tpl.php b/htdocs/core/tpl/login.tpl.php index 70f4f51290c..27356c96795 100644 --- a/htdocs/core/tpl/login.tpl.php +++ b/htdocs/core/tpl/login.tpl.php @@ -31,7 +31,7 @@ if (empty($conf) || !is_object($conf)) { } // DDOS protection -$size = (int) !empty($_SERVER['CONTENT_LENGTH'])?$_SERVER['CONTENT_LENGTH']:0; +$size = (empty($_SERVER['CONTENT_LENGTH']) ? 0 : (int) $_SERVER['CONTENT_LENGTH']); if ($size > 10000) { http_response_code(413); $langs->loadLangs(array("errors", "install")); From 2e744a4517cf59fd939856ac1d97e7d054511c6d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 17 Feb 2022 19:18:22 +0100 Subject: [PATCH 194/225] Update create_ticket.php --- htdocs/public/ticket/create_ticket.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/public/ticket/create_ticket.php b/htdocs/public/ticket/create_ticket.php index 31b44f39b18..1c9ca3aafe0 100644 --- a/htdocs/public/ticket/create_ticket.php +++ b/htdocs/public/ticket/create_ticket.php @@ -211,7 +211,7 @@ if ($action == 'create_ticket' && GETPOST('add', 'alpha')) { $message .= ($conf->global->TICKET_MESSAGE_MAIL_NEW ? $conf->global->TICKET_MESSAGE_MAIL_NEW : $langs->transnoentities('TicketNewEmailBody'))."\n\n"; $message .= $langs->transnoentities('TicketNewEmailBodyInfosTicket')."\n"; - $url_public_ticket = ($conf->global->TICKET_URL_PUBLIC_INTERFACE ? $conf->global->TICKET_URL_PUBLIC_INTERFACE : dol_buildpath('/public/ticket', 2)).'/view.php?track_id='.$object->track_id; + $url_public_ticket = ($conf->global->TICKET_URL_PUBLIC_INTERFACE ? $conf->global->TICKET_URL_PUBLIC_INTERFACE.'/view.php' : dol_buildpath('/public/ticket/view.php', 2)).'?track_id='.$object->track_id; $infos_new_ticket = $langs->transnoentities('TicketNewEmailBodyInfosTrackId', ''.$object->track_id.'')."\n"; $infos_new_ticket .= $langs->transnoentities('TicketNewEmailBodyInfosTrackUrl')."\n\n"; From 68beafe599c0e91f5c8777d2e402eaf2a357e952 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 17 Feb 2022 19:24:44 +0100 Subject: [PATCH 195/225] Removed useless indexes --- htdocs/install/mysql/tables/llx_facture_fourn_rec.key.sql | 2 -- 1 file changed, 2 deletions(-) diff --git a/htdocs/install/mysql/tables/llx_facture_fourn_rec.key.sql b/htdocs/install/mysql/tables/llx_facture_fourn_rec.key.sql index b82e75d85d6..c5a451e030f 100644 --- a/htdocs/install/mysql/tables/llx_facture_fourn_rec.key.sql +++ b/htdocs/install/mysql/tables/llx_facture_fourn_rec.key.sql @@ -17,9 +17,7 @@ ALTER TABLE llx_facture_fourn_rec ADD UNIQUE INDEX uk_facture_fourn_rec_ref (titre, entity); -ALTER TABLE llx_facture_fourn_rec ADD UNIQUE INDEX uk_facture_fourn_rec_ref_supplier (ref_supplier, fk_soc, entity); -ALTER TABLE llx_facture_fourn_rec ADD INDEX idx_facture_fourn_rec_date_lim_reglement (date_lim_reglement); ALTER TABLE llx_facture_fourn_rec ADD INDEX idx_facture_fourn_rec_fk_soc (fk_soc); ALTER TABLE llx_facture_fourn_rec ADD INDEX idx_facture_fourn_rec_fk_user_author (fk_user_author); ALTER TABLE llx_facture_fourn_rec ADD INDEX idx_facture_fourn_rec_fk_projet (fk_projet); From c20d82499920c1c0028d681700e7b80770e884ac Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 17 Feb 2022 19:30:18 +0100 Subject: [PATCH 196/225] Tables of module ticket are create only when module is enabled. --- htdocs/core/modules/modTicket.class.php | 5 +++++ .../tables/{llx_ticket.key.sql => llx_ticket-ticket.key.sql} | 0 .../mysql/tables/{llx_ticket.sql => llx_ticket-ticket.sql} | 0 ...afields.key.sql => llx_ticket_extrafields-ticket.key.sql} | 0 ...ket_extrafields.sql => llx_ticket_extrafields-ticket.sql} | 0 5 files changed, 5 insertions(+) rename htdocs/install/mysql/tables/{llx_ticket.key.sql => llx_ticket-ticket.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_ticket.sql => llx_ticket-ticket.sql} (100%) rename htdocs/install/mysql/tables/{llx_ticket_extrafields.key.sql => llx_ticket_extrafields-ticket.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_ticket_extrafields.sql => llx_ticket_extrafields-ticket.sql} (100%) diff --git a/htdocs/core/modules/modTicket.class.php b/htdocs/core/modules/modTicket.class.php index 01561b40b01..50922ed884e 100644 --- a/htdocs/core/modules/modTicket.class.php +++ b/htdocs/core/modules/modTicket.class.php @@ -320,6 +320,11 @@ class modTicket extends DolibarrModules { global $conf, $langs; + $result = $this->_load_tables('/install/mysql/tables/', 'ticket'); + if ($result < 0) { + return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default') + } + // Permissions $this->remove($options); diff --git a/htdocs/install/mysql/tables/llx_ticket.key.sql b/htdocs/install/mysql/tables/llx_ticket-ticket.key.sql similarity index 100% rename from htdocs/install/mysql/tables/llx_ticket.key.sql rename to htdocs/install/mysql/tables/llx_ticket-ticket.key.sql diff --git a/htdocs/install/mysql/tables/llx_ticket.sql b/htdocs/install/mysql/tables/llx_ticket-ticket.sql similarity index 100% rename from htdocs/install/mysql/tables/llx_ticket.sql rename to htdocs/install/mysql/tables/llx_ticket-ticket.sql diff --git a/htdocs/install/mysql/tables/llx_ticket_extrafields.key.sql b/htdocs/install/mysql/tables/llx_ticket_extrafields-ticket.key.sql similarity index 100% rename from htdocs/install/mysql/tables/llx_ticket_extrafields.key.sql rename to htdocs/install/mysql/tables/llx_ticket_extrafields-ticket.key.sql diff --git a/htdocs/install/mysql/tables/llx_ticket_extrafields.sql b/htdocs/install/mysql/tables/llx_ticket_extrafields-ticket.sql similarity index 100% rename from htdocs/install/mysql/tables/llx_ticket_extrafields.sql rename to htdocs/install/mysql/tables/llx_ticket_extrafields-ticket.sql From b393a1277fbd4c7c8661ed43008d928a343bab4a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 17 Feb 2022 19:50:21 +0100 Subject: [PATCH 197/225] Update 14.0.0-15.0.0.sql --- htdocs/install/mysql/migration/14.0.0-15.0.0.sql | 4 ++-- 1 file changed, 2 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 69d7c93af5f..b57d995c251 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 @@ -507,8 +507,8 @@ INSERT INTO llx_c_action_trigger (code,label,description,elementtype,rang) value INSERT INTO llx_c_action_trigger (code,label,description,elementtype,rang) values ('HOLIDAY_CANCEL','Holiday canceled','Executed when a holiday is canceled','holiday',802); INSERT INTO llx_c_action_trigger (code,label,description,elementtype,rang) values ('HOLIDAY_DELETE','Holiday deleted','Executed when a holiday is deleted','holiday',804); --- Delete old mexican legal forms -DELETE FROM llx_c_forme_juridique WHERE code IN ('15401', '15402', '15403', '15404', '15405', '15406'); +-- We do not delete old mexican legal forms because they may have been used. User will have to insert the new one manually not inserted because of conflict if he need them. +--DELETE FROM llx_c_forme_juridique WHERE code IN ('15401', '15402', '15403', '15404', '15405', '15406'); INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15401', '601 - General de Ley Personas Morales', 1); INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15402', '603 - Personas Morales con Fines no Lucrativos', 1); From 39bb854ef877d29e814a42b73899841e90851c0b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 17 Feb 2022 19:57:45 +0100 Subject: [PATCH 198/225] Update ticket.php --- htdocs/admin/ticket.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/ticket.php b/htdocs/admin/ticket.php index e6a6208324e..fc8a5e8e0b9 100644 --- a/htdocs/admin/ticket.php +++ b/htdocs/admin/ticket.php @@ -478,7 +478,7 @@ if (!$conf->use_javascript_ajax) { print ''; } -print load_fiche_titre($langs->trans("Workflow"), '', ''); +print load_fiche_titre($langs->trans("Other"), '', ''); print '
    '.$langs->trans("TicketsAutoReadTicket").''; +if ($conf->use_javascript_ajax) { + print ajax_constantonoff('TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND'); +} else { + $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); + print $form->selectarray("TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND", $arrval, $conf->global->TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND); +} +print ''; +print $form->textwithpicto('', $langs->trans("TicketsAutoReadTicketHelp"), 1, 'help'); +print '
    '.$langs->trans("TicketsAutoAssignTicket").''; diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 2d850927782..2867c7b853b 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -517,6 +517,7 @@ or=or Other=Other Others=Others OtherInformations=Other information +Workflow=Workflow Quantity=Quantity Qty=Qty ChangedBy=Changed by diff --git a/htdocs/langs/en_US/ticket.lang b/htdocs/langs/en_US/ticket.lang index d38358eb74d..222efad8ba2 100644 --- a/htdocs/langs/en_US/ticket.lang +++ b/htdocs/langs/en_US/ticket.lang @@ -136,6 +136,9 @@ TicketsPublicNotificationNewMessage=Send email(s) when a new message/comment is TicketsPublicNotificationNewMessageHelp=Send email(s) when a new message is added from public interface (to assigned user or the notifications email to (update) and/or the notifications email to) TicketPublicNotificationNewMessageDefaultEmail=Notifications email to (update) TicketPublicNotificationNewMessageDefaultEmailHelp=Send an email to this address for each new message notifications if the ticket doesn't have a user assigned to it or if the user doesn't have any known email. +TicketsAutoReadTicket=Automatically mark the ticket as read +TicketsAutoReadTicketHelp=Automatically mark the ticket as read when created from backoffice. + # # Index & list page # diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang index 63c5192a01f..12778f337dd 100644 --- a/htdocs/langs/fr_FR/main.lang +++ b/htdocs/langs/fr_FR/main.lang @@ -517,6 +517,7 @@ or=ou Other=Autre Others=Autres OtherInformations=Autre information +Workflow=Processus de travail Quantity=Quantité Qty=Qté ChangedBy=Modifié par diff --git a/htdocs/langs/fr_FR/ticket.lang b/htdocs/langs/fr_FR/ticket.lang index 91850194533..bc51a7627fd 100644 --- a/htdocs/langs/fr_FR/ticket.lang +++ b/htdocs/langs/fr_FR/ticket.lang @@ -136,6 +136,9 @@ TicketsPublicNotificationNewMessage=Envoyer un ou des emails lorsqu’un nouveau TicketsPublicNotificationNewMessageHelp=Envoyer un (des) courriel(s) lorsqu’un nouveau message est ajouté à partir de l’interface publique (à l’utilisateur désigné ou au courriel de notification (mise à jour) et/ou au courriel de notification) TicketPublicNotificationNewMessageDefaultEmail=Emails de notifications à (mise à jour) TicketPublicNotificationNewMessageDefaultEmailHelp=Envoyez un email à cette adresse email pour chaque nouveau message de notifications si le ticket n'a pas d'utilisateur assigné ou si l'utilisateur n'a pas d'email connu. +TicketsAutoReadTicket=Automatiquement marquer le ticket comme lu +TicketsAutoReadTicketHelp=Automatiquement marquer le ticket comme lu s'il est créé depuis le backoffice. + # # Index & list page # From c5d1310373a4a7f41806a412c66986a6e3cc84b3 Mon Sep 17 00:00:00 2001 From: Thomas Negre Date: Thu, 3 Feb 2022 12:23:58 +0100 Subject: [PATCH 080/225] handle workflow constants in appropriate category --- htdocs/admin/ticket.php | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/htdocs/admin/ticket.php b/htdocs/admin/ticket.php index 1805f5de34d..e6a6208324e 100644 --- a/htdocs/admin/ticket.php +++ b/htdocs/admin/ticket.php @@ -143,6 +143,20 @@ if ($action == 'updateMask') { } } +if ($action == 'setvarworkflow') { + $param_auto_read = GETPOST('TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND', 'alpha'); + $res = dolibarr_set_const($db, 'TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND', $param_auto_read, 'chaine', 0, '', $conf->entity); + if (!($res > 0)) { + $error++; + } + + $param_auto_assign = GETPOST('TICKET_AUTO_ASSIGN_USER_CREATE', 'alpha'); + $res = dolibarr_set_const($db, 'TICKET_AUTO_ASSIGN_USER_CREATE', $param_auto_assign, 'chaine', 0, '', $conf->entity); + if (!($res > 0)) { + $error++; + } +} + if ($action == 'setvarother') { $param_must_exists = GETPOST('TICKET_EMAIL_MUST_EXISTS', 'alpha'); $res = dolibarr_set_const($db, 'TICKET_EMAIL_MUST_EXISTS', $param_must_exists, 'chaine', 0, '', $conf->entity); @@ -177,18 +191,6 @@ if ($action == 'setvarother') { if (!($res > 0)) { $error++; } - - $param_auto_assign = GETPOST('TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND', 'alpha'); - $res = dolibarr_set_const($db, 'TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND', $param_auto_assign, 'chaine', 0, '', $conf->entity); - if (!($res > 0)) { - $error++; - } - - $param_auto_read = GETPOST('TICKET_AUTO_ASSIGN_USER_CREATE', 'alpha'); - $res = dolibarr_set_const($db, 'TICKET_AUTO_ASSIGN_USER_CREATE', $param_auto_read, 'chaine', 0, '', $conf->entity); - if (!($res > 0)) { - $error++; - } } @@ -473,7 +475,7 @@ print '
    '; if (!$conf->use_javascript_ajax) { print '
    '; print ''; - print ''; + print ''; } print load_fiche_titre($langs->trans("Workflow"), '', ''); From 4c5ddcf0300a59b1b50f388299e73d3014ce3f88 Mon Sep 17 00:00:00 2001 From: Thomas Negre Date: Thu, 10 Feb 2022 17:57:28 +0100 Subject: [PATCH 081/225] ticket config: add constant TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND to admin panel --- htdocs/core/modules/modTicket.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/core/modules/modTicket.class.php b/htdocs/core/modules/modTicket.class.php index 01561b40b01..6091a245bfa 100644 --- a/htdocs/core/modules/modTicket.class.php +++ b/htdocs/core/modules/modTicket.class.php @@ -106,7 +106,8 @@ class modTicket extends DolibarrModules $this->const = array( 1 => array('TICKET_ENABLE_PUBLIC_INTERFACE', 'chaine', '0', 'Enable ticket public interface', 0), 2 => array('TICKET_ADDON', 'chaine', 'mod_ticket_simple', 'Ticket ref module', 0), - 3 => array('TICKET_ADDON_PDF_ODT_PATH', 'chaine', 'DOL_DATA_ROOT/doctemplates/tickets', 'Ticket templates ODT/ODS directory for templates', 0) + 3 => array('TICKET_ADDON_PDF_ODT_PATH', 'chaine', 'DOL_DATA_ROOT/doctemplates/tickets', 'Ticket templates ODT/ODS directory for templates', 0), + 4 => array('TICKET_AUTO_READ_WHEN_CREATED_FROM_BACKEND', 'chaine', 0, 'Automatically mark ticket as read when created from backend', 0) ); From 664860863ee4463327a146a9095f9fad5b9de5c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9=20Cendrier?= Date: Thu, 10 Feb 2022 17:59:12 +0100 Subject: [PATCH 082/225] correct warehouse document location --- htdocs/product/stock/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/stock/card.php b/htdocs/product/stock/card.php index 440e082e8ff..80be3c923ec 100644 --- a/htdocs/product/stock/card.php +++ b/htdocs/product/stock/card.php @@ -944,7 +944,7 @@ if ($action != 'create' && $action != 'edit' && $action != 'delete') { $delallowed = $usercancreate; $modulepart = 'stock'; - print $formfile->showdocuments($modulepart, $object->ref, $filedir, $urlsource, $genallowed, $delallowed, $object->model_pdf, 0, 0, 0, 28, 0, '', 0, '', $object->default_lang, '', $object); + print $formfile->showdocuments($modulepart, $objectref, $filedir, $urlsource, $genallowed, $delallowed, $object->model_pdf, 0, 0, 0, 28, 0, '', 0, '', $object->default_lang, '', $object); $somethingshown = $formfile->numoffiles; print '
    '; From 4da205602164d1b24d1e28e03530b979aca92fce Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 19:05:05 +0100 Subject: [PATCH 083/225] Doc --- htdocs/install/mysql/tables/llx_product_pricerules.key.sql | 3 +++ htdocs/install/mysql/tables/llx_product_pricerules.sql | 3 +++ 2 files changed, 6 insertions(+) diff --git a/htdocs/install/mysql/tables/llx_product_pricerules.key.sql b/htdocs/install/mysql/tables/llx_product_pricerules.key.sql index 25ad889d8d2..c31dfc5e240 100644 --- a/htdocs/install/mysql/tables/llx_product_pricerules.key.sql +++ b/htdocs/install/mysql/tables/llx_product_pricerules.key.sql @@ -16,4 +16,7 @@ -- -- =========================================================================== +-- Table used only when PRODUIT_MULTIPRICES is set (prices per level) + PRODUIT_MULTIPRICES_ALLOW_AUTOCALC_PRICELEVEL is set +-- A checkbox become available on product to allow to set price rules + ALTER TABLE llx_product_pricerules ADD CONSTRAINT unique_level UNIQUE (level); diff --git a/htdocs/install/mysql/tables/llx_product_pricerules.sql b/htdocs/install/mysql/tables/llx_product_pricerules.sql index 4089d2f3a60..4e02eb0808f 100644 --- a/htdocs/install/mysql/tables/llx_product_pricerules.sql +++ b/htdocs/install/mysql/tables/llx_product_pricerules.sql @@ -16,6 +16,9 @@ -- -- =========================================================================== +-- Table used only when PRODUIT_MULTIPRICES is set (prices per level) + PRODUIT_MULTIPRICES_ALLOW_AUTOCALC_PRICELEVEL is set +-- A checkbox become available on product to allow to set price rules + CREATE TABLE llx_product_pricerules ( rowid INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, From 3bc064ac55daae0b6fd76b6376d8ade0c25f744e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 19:08:35 +0100 Subject: [PATCH 084/225] Add status on tasks --- htdocs/install/mysql/migration/15.0.0-16.0.0.sql | 2 ++ htdocs/install/mysql/tables/llx_projet_task.sql | 3 ++- 2 files changed, 4 insertions(+), 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 9226326d7f0..c996b2c06e0 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 @@ -225,6 +225,8 @@ ALTER TABLE llx_facture_fourn ADD COLUMN fk_fac_rec_source integer; ALTER TABLE llx_mrp_mo ADD COLUMN fk_parent_line integer; +ALTER TABLE llx_projet_task ADD COLUMN status integer DEFAULT 1 NOT NULL; + ALTER TABLE llx_product_attribute_value MODIFY COLUMN ref VARCHAR(180) NOT NULL; ALTER TABLE llx_product_attribute_value MODIFY COLUMN value VARCHAR(255) NOT NULL; ALTER TABLE llx_product_attribute_value ADD COLUMN position INTEGER NOT NULL DEFAULT 0; diff --git a/htdocs/install/mysql/tables/llx_projet_task.sql b/htdocs/install/mysql/tables/llx_projet_task.sql index 721dbf8355f..4c2461f2ff0 100644 --- a/htdocs/install/mysql/tables/llx_projet_task.sql +++ b/htdocs/install/mysql/tables/llx_projet_task.sql @@ -44,5 +44,6 @@ create table llx_projet_task note_public text, rang integer DEFAULT 0, model_pdf varchar(255), - import_key varchar(14) -- Import key + import_key varchar(14), -- Import key + status integer DEFAULT 1 NOT NULL )ENGINE=innodb; From 52bacbd914ed3a1c22130181934e45eeb5b0bbc5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 19:21:15 +0100 Subject: [PATCH 085/225] Tables for emailing and asset modules are loaded on module activation --- htdocs/core/modules/modAsset.class.php | 5 +++++ htdocs/core/modules/modMailing.class.php | 5 +++++ .../install/mysql/migration/15.0.0-16.0.0.sql | 7 +++++++ ..._asset.key.sql => llx_asset-asset.key.sql} | 0 .../{llx_asset.sql => llx_asset-asset.sql} | 0 ...ql => llx_asset_extrafields-asset.key.sql} | 0 ...ds.sql => llx_asset_extrafields-asset.sql} | 0 ...e.key.sql => llx_asset_type-asset.key.sql} | 0 ...sset_type.sql => llx_asset_type-asset.sql} | 0 ... llx_asset_type_extrafields-asset.key.sql} | 0 ...l => llx_asset_type_extrafields-asset.sql} | 0 .../mysql/tables/llx_mailing-mailing.key.sql | 20 +++++++++++++++++++ ...lx_mailing.sql => llx_mailing-mailing.sql} | 0 ... => llx_mailing_advtarget-mailing.key.sql} | 2 +- ....sql => llx_mailing_advtarget-mailing.sql} | 2 +- ...sql => llx_mailing_cibles-mailing.key.sql} | 0 ...les.sql => llx_mailing_cibles-mailing.sql} | 0 17 files changed, 39 insertions(+), 2 deletions(-) rename htdocs/install/mysql/tables/{llx_asset.key.sql => llx_asset-asset.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_asset.sql => llx_asset-asset.sql} (100%) rename htdocs/install/mysql/tables/{llx_asset_extrafields.key.sql => llx_asset_extrafields-asset.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_asset_extrafields.sql => llx_asset_extrafields-asset.sql} (100%) rename htdocs/install/mysql/tables/{llx_asset_type.key.sql => llx_asset_type-asset.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_asset_type.sql => llx_asset_type-asset.sql} (100%) rename htdocs/install/mysql/tables/{llx_asset_type_extrafields.key.sql => llx_asset_type_extrafields-asset.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_asset_type_extrafields.sql => llx_asset_type_extrafields-asset.sql} (100%) create mode 100644 htdocs/install/mysql/tables/llx_mailing-mailing.key.sql rename htdocs/install/mysql/tables/{llx_mailing.sql => llx_mailing-mailing.sql} (100%) rename htdocs/install/mysql/tables/{llx_advtargetemailing.key.sql => llx_mailing_advtarget-mailing.key.sql} (92%) rename htdocs/install/mysql/tables/{llx_advtargetemailing.sql => llx_mailing_advtarget-mailing.sql} (97%) rename htdocs/install/mysql/tables/{llx_mailing_cibles.key.sql => llx_mailing_cibles-mailing.key.sql} (100%) rename htdocs/install/mysql/tables/{llx_mailing_cibles.sql => llx_mailing_cibles-mailing.sql} (100%) diff --git a/htdocs/core/modules/modAsset.class.php b/htdocs/core/modules/modAsset.class.php index 3a51a366970..b275f38debe 100644 --- a/htdocs/core/modules/modAsset.class.php +++ b/htdocs/core/modules/modAsset.class.php @@ -215,6 +215,11 @@ class modAsset extends DolibarrModules */ public function init($options = '') { + $result = $this->_load_tables('/install/mysql/tables/', 'asset'); + if ($result < 0) { + return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default') + } + // Permissions $this->remove($options); diff --git a/htdocs/core/modules/modMailing.class.php b/htdocs/core/modules/modMailing.class.php index dfd292aa847..1a31aad9c8b 100644 --- a/htdocs/core/modules/modMailing.class.php +++ b/htdocs/core/modules/modMailing.class.php @@ -159,6 +159,11 @@ class modMailing extends DolibarrModules */ public function init($options = '') { + $result = $this->_load_tables('/install/mysql/tables/', 'mailing'); + if ($result < 0) { + return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default') + } + // Permissions $this->remove($options); 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 c996b2c06e0..b78e53bd287 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 @@ -231,3 +231,10 @@ ALTER TABLE llx_product_attribute_value MODIFY COLUMN ref VARCHAR(180) NOT NULL; ALTER TABLE llx_product_attribute_value MODIFY COLUMN value VARCHAR(255) NOT NULL; ALTER TABLE llx_product_attribute_value ADD COLUMN position INTEGER NOT NULL DEFAULT 0; ALTER TABLE llx_product_attribute CHANGE rang position INTEGER DEFAULT 0 NOT NULL; + + +ALTER TABLE llx_advtargetemailing RENAME TO llx_mailing_advtarget; + +ALTER TABLE llx_mailing ADD UNIQUE uk_mailing(titre, entity); + + diff --git a/htdocs/install/mysql/tables/llx_asset.key.sql b/htdocs/install/mysql/tables/llx_asset-asset.key.sql similarity index 100% rename from htdocs/install/mysql/tables/llx_asset.key.sql rename to htdocs/install/mysql/tables/llx_asset-asset.key.sql diff --git a/htdocs/install/mysql/tables/llx_asset.sql b/htdocs/install/mysql/tables/llx_asset-asset.sql similarity index 100% rename from htdocs/install/mysql/tables/llx_asset.sql rename to htdocs/install/mysql/tables/llx_asset-asset.sql diff --git a/htdocs/install/mysql/tables/llx_asset_extrafields.key.sql b/htdocs/install/mysql/tables/llx_asset_extrafields-asset.key.sql similarity index 100% rename from htdocs/install/mysql/tables/llx_asset_extrafields.key.sql rename to htdocs/install/mysql/tables/llx_asset_extrafields-asset.key.sql diff --git a/htdocs/install/mysql/tables/llx_asset_extrafields.sql b/htdocs/install/mysql/tables/llx_asset_extrafields-asset.sql similarity index 100% rename from htdocs/install/mysql/tables/llx_asset_extrafields.sql rename to htdocs/install/mysql/tables/llx_asset_extrafields-asset.sql diff --git a/htdocs/install/mysql/tables/llx_asset_type.key.sql b/htdocs/install/mysql/tables/llx_asset_type-asset.key.sql similarity index 100% rename from htdocs/install/mysql/tables/llx_asset_type.key.sql rename to htdocs/install/mysql/tables/llx_asset_type-asset.key.sql diff --git a/htdocs/install/mysql/tables/llx_asset_type.sql b/htdocs/install/mysql/tables/llx_asset_type-asset.sql similarity index 100% rename from htdocs/install/mysql/tables/llx_asset_type.sql rename to htdocs/install/mysql/tables/llx_asset_type-asset.sql diff --git a/htdocs/install/mysql/tables/llx_asset_type_extrafields.key.sql b/htdocs/install/mysql/tables/llx_asset_type_extrafields-asset.key.sql similarity index 100% rename from htdocs/install/mysql/tables/llx_asset_type_extrafields.key.sql rename to htdocs/install/mysql/tables/llx_asset_type_extrafields-asset.key.sql diff --git a/htdocs/install/mysql/tables/llx_asset_type_extrafields.sql b/htdocs/install/mysql/tables/llx_asset_type_extrafields-asset.sql similarity index 100% rename from htdocs/install/mysql/tables/llx_asset_type_extrafields.sql rename to htdocs/install/mysql/tables/llx_asset_type_extrafields-asset.sql diff --git a/htdocs/install/mysql/tables/llx_mailing-mailing.key.sql b/htdocs/install/mysql/tables/llx_mailing-mailing.key.sql new file mode 100644 index 00000000000..0791c1f2c27 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_mailing-mailing.key.sql @@ -0,0 +1,20 @@ +-- =================================================================== +-- Copyright (C) 2018 Laurent Destailleur +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . +-- +-- =================================================================== + + +ALTER TABLE llx_mailing ADD UNIQUE uk_mailing(titre, entity); diff --git a/htdocs/install/mysql/tables/llx_mailing.sql b/htdocs/install/mysql/tables/llx_mailing-mailing.sql similarity index 100% rename from htdocs/install/mysql/tables/llx_mailing.sql rename to htdocs/install/mysql/tables/llx_mailing-mailing.sql diff --git a/htdocs/install/mysql/tables/llx_advtargetemailing.key.sql b/htdocs/install/mysql/tables/llx_mailing_advtarget-mailing.key.sql similarity index 92% rename from htdocs/install/mysql/tables/llx_advtargetemailing.key.sql rename to htdocs/install/mysql/tables/llx_mailing_advtarget-mailing.key.sql index 441dec301c2..12f9d4c6097 100644 --- a/htdocs/install/mysql/tables/llx_advtargetemailing.key.sql +++ b/htdocs/install/mysql/tables/llx_mailing_advtarget-mailing.key.sql @@ -14,4 +14,4 @@ -- You should have received a copy of the GNU General Public License -- along with this program. If not, see . -ALTER TABLE llx_advtargetemailing ADD UNIQUE INDEX uk_advtargetemailing_name (name); +ALTER TABLE llx_mailing_advtarget ADD UNIQUE INDEX uk_advtargetemailing_name (name); diff --git a/htdocs/install/mysql/tables/llx_advtargetemailing.sql b/htdocs/install/mysql/tables/llx_mailing_advtarget-mailing.sql similarity index 97% rename from htdocs/install/mysql/tables/llx_advtargetemailing.sql rename to htdocs/install/mysql/tables/llx_mailing_advtarget-mailing.sql index 34bd7eb53bf..a22ce23a955 100644 --- a/htdocs/install/mysql/tables/llx_advtargetemailing.sql +++ b/htdocs/install/mysql/tables/llx_mailing_advtarget-mailing.sql @@ -17,7 +17,7 @@ -- Table to setup advanced targeting for emailing -- ============================================================================ -CREATE TABLE llx_advtargetemailing +CREATE TABLE llx_mailing_advtarget ( rowid integer NOT NULL auto_increment PRIMARY KEY, name varchar(180) NOT NULL, diff --git a/htdocs/install/mysql/tables/llx_mailing_cibles.key.sql b/htdocs/install/mysql/tables/llx_mailing_cibles-mailing.key.sql similarity index 100% rename from htdocs/install/mysql/tables/llx_mailing_cibles.key.sql rename to htdocs/install/mysql/tables/llx_mailing_cibles-mailing.key.sql diff --git a/htdocs/install/mysql/tables/llx_mailing_cibles.sql b/htdocs/install/mysql/tables/llx_mailing_cibles-mailing.sql similarity index 100% rename from htdocs/install/mysql/tables/llx_mailing_cibles.sql rename to htdocs/install/mysql/tables/llx_mailing_cibles-mailing.sql From 9ba998e3bac24665e78d00d3941938abf1f9b59e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 19:36:33 +0100 Subject: [PATCH 086/225] Fix some regressions --- .../fourn/class/fournisseur.commande.class.php | 8 ++------ htdocs/fourn/class/fournisseur.facture.class.php | 16 ++++++---------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 29aa42915f5..3ba9a23db08 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -3018,16 +3018,12 @@ class CommandeFournisseur extends CommonOrder // phpcs:enable global $conf, $langs; - $clause = " WHERE"; - $sql = "SELECT c.rowid, c.date_creation as datec, c.date_commande, c.fk_statut, c.date_livraison as delivery_date, c.total_ht"; $sql .= " FROM ".MAIN_DB_PREFIX."commande_fournisseur as c"; if (empty($user->rights->societe->client->voir) && !$user->socid) { - $sql .= " JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON c.fk_soc = sc.fk_soc"; - $sql .= " WHERE sc.fk_user = ".((int) $user->id); - $clause = " AND"; + $sql .= " JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON c.fk_soc = sc.fk_soc AND sc.fk_user = ".((int) $user->id); } - $sql .= $clause." c.entity = ".$conf->entity; + $sql .= " WHERE c.entity = ".$conf->entity; if ($mode === 'awaiting') { $sql .= " AND c.fk_statut IN (".self::STATUS_ORDERSENT.", ".self::STATUS_RECEIVED_PARTIALLY.")"; } else { diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 656d9468327..1167453af44 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -2631,17 +2631,13 @@ class FactureFournisseur extends CommonInvoice // phpcs:enable global $conf, $langs; - $clause = " WHERE"; - - $sql = 'SELECT ff.rowid, ff.date_lim_reglement as datefin, ff.fk_statut, ff.total_ht'; + $sql = 'SELECT ff.rowid, ff.date_lim_reglement as datefin, ff.fk_statut'; $sql .= ' FROM '.MAIN_DB_PREFIX.'facture_fourn as ff'; if (empty($user->rights->societe->client->voir) && !$user->socid) { - $sql .= " JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON ff.fk_soc = sc.fk_soc"; - $sql .= " WHERE sc.fk_user = ".((int) $user->id); - $clause = " AND"; + $sql .= " JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON ff.fk_soc = sc.fk_soc AND sc.fk_user = ".((int) $user->id); } - $sql .= $clause.' ff.paye=0'; - $sql .= ' AND ff.fk_statut = '.self::STATUS_VALIDATED; + $sql .= ' WHERE ff.paye = 0'; + $sql .= ' AND ff.fk_statut > 0'; $sql .= " AND ff.entity = ".$conf->entity; if ($user->socid) { $sql .= ' AND ff.fk_soc = '.((int) $user->socid); @@ -3625,8 +3621,8 @@ class SupplierInvoiceLine extends CommonObjectLine $this->db->begin(); $sql = "UPDATE ".MAIN_DB_PREFIX."facture_fourn_det SET"; - $sql .= ' description ="'.$this->db->escape($this->description).'"'; - $sql .= ", ref ='".$this->db->escape($this->ref_supplier ? $this->ref_supplier : $this->ref)."'"; + $sql .= " description = '".$this->db->escape($this->description)."'"; + $sql .= ", ref = '".$this->db->escape($this->ref_supplier ? $this->ref_supplier : $this->ref)."'"; $sql .= ", date_start = ".($this->date_start != '' ? "'".$this->db->idate($this->date_start)."'" : "null"); $sql .= ", date_end = ".($this->date_end != '' ? "'".$this->db->idate($this->date_end)."'" : "null"); $sql .= ", pu_ht = ".price2num($this->pu_ht); From 30d7f807e49a553673d3053b16ae759963129a2e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Feb 2022 21:03:10 +0100 Subject: [PATCH 087/225] Fix url --- htdocs/comm/propal/card.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php index 746075ab51e..45a4d2fdb57 100644 --- a/htdocs/comm/propal/card.php +++ b/htdocs/comm/propal/card.php @@ -2543,7 +2543,7 @@ if ($action == 'create') { if (($object->statut == Propal::STATUS_DRAFT && $object->total_ttc >= 0 && count($object->lines) > 0) || ($object->statut == Propal::STATUS_DRAFT && !empty($conf->global->PROPAL_ENABLE_NEGATIVE) && count($object->lines) > 0)) { if ($usercanvalidate) { - print ''.$langs->trans('Validate').''; + print ''.$langs->trans('Validate').''; } else { print ''.$langs->trans('Validate').''; } @@ -2555,7 +2555,7 @@ if ($action == 'create') { }*/ // Edit if ($object->statut == Propal::STATUS_VALIDATED && $usercancreate) { - print ''.$langs->trans('Modify').''; + print ''.$langs->trans('Modify').''; } // ReOpen @@ -2578,7 +2578,7 @@ if ($action == 'create') { // Create a sale order if (!empty($conf->commande->enabled) && $object->statut == Propal::STATUS_SIGNED) { if ($usercancreateorder) { - print ''.$langs->trans("AddOrder").''; + print ''.$langs->trans("AddOrder").''; } } @@ -2586,7 +2586,7 @@ if ($action == 'create') { if (!empty($conf->global->WORKFLOW_CAN_CREATE_PURCHASE_ORDER_FROM_PROPOSAL)) { if ($object->statut == Propal::STATUS_SIGNED && ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled))) { if ($usercancreatepurchaseorder) { - print ''.$langs->trans("AddPurchaseOrder").''; + print ''.$langs->trans("AddPurchaseOrder").''; } } } @@ -2595,7 +2595,7 @@ if ($action == 'create') { if (!empty($conf->service->enabled) && !empty($conf->ficheinter->enabled) && $object->statut == Propal::STATUS_SIGNED) { if ($usercancreateintervention) { $langs->load("interventions"); - print ''.$langs->trans("AddIntervention").''; + print ''.$langs->trans("AddIntervention").''; } } @@ -2604,14 +2604,14 @@ if ($action == 'create') { $langs->load("contracts"); if ($usercancreatecontract) { - print ''.$langs->trans('AddContract').''; + print ''.$langs->trans('AddContract').''; } } // Create an invoice and classify billed if ($object->statut == Propal::STATUS_SIGNED && empty($conf->global->PROPOSAL_ARE_NOT_BILLABLE)) { if (!empty($conf->facture->enabled) && $usercancreateinvoice) { - print ''.$langs->trans("CreateBill").''; + print ''.$langs->trans("CreateBill").''; } $arrayofinvoiceforpropal = $object->getInvoiceArrayList(); From 88a33c730a6a977d2310a32e8c2ec2297da9a28e Mon Sep 17 00:00:00 2001 From: Alfredo Altamirano Date: Fri, 11 Feb 2022 02:01:25 -0600 Subject: [PATCH 088/225] FIX #20042 Update Mexican legal entities --- .../mysql/data/llx_c_forme_juridique.sql | 25 ++++++++++++++----- .../install/mysql/migration/14.0.0-15.0.0.sql | 23 +++++++++++++++++ 2 files changed, 42 insertions(+), 6 deletions(-) diff --git a/htdocs/install/mysql/data/llx_c_forme_juridique.sql b/htdocs/install/mysql/data/llx_c_forme_juridique.sql index 7af5d28df8c..a1293084a52 100644 --- a/htdocs/install/mysql/data/llx_c_forme_juridique.sql +++ b/htdocs/install/mysql/data/llx_c_forme_juridique.sql @@ -302,12 +302,25 @@ INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (152, INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (152, '15210', 'Mauritius Trusts', 1); -- Mexique -INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15401', 'Sociedad en nombre colectivo', 1); -INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15402', 'Sociedad en comandita simple', 1); -INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15403', 'Sociedad de responsabilidad limitada', 1); -INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15404', 'Sociedad anónima', 1); -INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15405', 'Sociedad en comandita por acciones', 1); -INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15406', 'Sociedad cooperativa', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15401', '601 - General de Ley Personas Morales', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15402', '603 - Personas Morales con Fines no Lucrativos', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15403', '605 - Sueldos y Salarios e Ingresos Asimilados a Salarios', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15404', '606 - Arrendamiento', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15405', '607 - Régimen de Enajenación o Adquisición de Bienes', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15406', '608 - Demás ingresos', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15407', '610 - Residentes en el Extranjero sin Establecimiento Permanente en México', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15408', '611 - Ingresos por Dividendos (socios y accionistas)', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15409', '612 - Personas Físicas con Actividades Empresariales y Profesionales', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15410', '614 - Ingresos por intereses', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15411', '615 - Régimen de los ingresos por obtención de premios', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15412', '616 - Sin obligaciones fiscales', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15413', '620 - Sociedades Cooperativas de Producción que optan por diferir sus ingresos', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15414', '621 - Incorporación Fiscal', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15415', '622 - Actividades Agrícolas, Ganaderas, Silvícolas y Pesqueras', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15416', '623 - Opcional para Grupos de Sociedades', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15417', '624 - Coordinados', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15418', '625 - Régimen de las Actividades Empresariales con ingresos a través de Plataformas Tecnológicas', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15419', '626 - Régimen Simplificado de Confianza', 1); -- Luxembourg INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (140, '14001', 'Entreprise individuelle', 1); 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 7be62695d50..69d7c93af5f 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 @@ -506,3 +506,26 @@ INSERT INTO llx_c_action_trigger (code,label,description,elementtype,rang) value INSERT INTO llx_c_action_trigger (code,label,description,elementtype,rang) values ('HOLIDAY_APPROVE','Holiday aprouved','Executed when a holiday is aprouved','holiday',803); INSERT INTO llx_c_action_trigger (code,label,description,elementtype,rang) values ('HOLIDAY_CANCEL','Holiday canceled','Executed when a holiday is canceled','holiday',802); INSERT INTO llx_c_action_trigger (code,label,description,elementtype,rang) values ('HOLIDAY_DELETE','Holiday deleted','Executed when a holiday is deleted','holiday',804); + +-- Delete old mexican legal forms +DELETE FROM llx_c_forme_juridique WHERE code IN ('15401', '15402', '15403', '15404', '15405', '15406'); + +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15401', '601 - General de Ley Personas Morales', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15402', '603 - Personas Morales con Fines no Lucrativos', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15403', '605 - Sueldos y Salarios e Ingresos Asimilados a Salarios', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15404', '606 - Arrendamiento', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15405', '607 - Régimen de Enajenación o Adquisición de Bienes', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15406', '608 - Demás ingresos', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15407', '610 - Residentes en el Extranjero sin Establecimiento Permanente en México', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15408', '611 - Ingresos por Dividendos (socios y accionistas)', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15409', '612 - Personas Físicas con Actividades Empresariales y Profesionales', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15410', '614 - Ingresos por intereses', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15411', '615 - Régimen de los ingresos por obtención de premios', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15412', '616 - Sin obligaciones fiscales', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15413', '620 - Sociedades Cooperativas de Producción que optan por diferir sus ingresos', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15414', '621 - Incorporación Fiscal', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15415', '622 - Actividades Agrícolas, Ganaderas, Silvícolas y Pesqueras', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15416', '623 - Opcional para Grupos de Sociedades', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15417', '624 - Coordinados', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15418', '625 - Régimen de las Actividades Empresariales con ingresos a través de Plataformas Tecnológicas', 1); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle, active) VALUES (154, '15419', '626 - Régimen Simplificado de Confianza', 1); From 27df3cc02c39de48dfa9be5ac505f38696712cab Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 11 Feb 2022 11:20:36 +0100 Subject: [PATCH 089/225] FIX events on several days may missing the last day in calendar view. FIX the drag and drop was not available on some events --- htdocs/comm/action/index.php | 55 ++++++++++++++++++++++++------- htdocs/core/db/DoliDB.class.php | 4 +-- htdocs/core/js/dst.js | 3 +- htdocs/core/lib/functions.lib.php | 2 +- htdocs/core/tpl/login.tpl.php | 2 +- 5 files changed, 49 insertions(+), 17 deletions(-) diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php index 4d6a032492f..72e50d9292d 100644 --- a/htdocs/comm/action/index.php +++ b/htdocs/comm/action/index.php @@ -808,8 +808,18 @@ if ($resql) { $event->id = $obj->id; $event->ref = $event->id; - $event->datep = $db->jdate($obj->datep); // datep and datef are GMT date. Example: 1970-01-01 01:00:00, jdate will return 0 if TZ of PHP server is Europe/Berlin - $event->datef = $db->jdate($obj->datep2); + $event->fulldayevent = $obj->fulldayevent; + + // event->datep and event->datef must be GMT date. + if ($event->fulldayevent) { + // TODO... + $event->datep = $db->jdate($obj->datep); + $event->datef = $db->jdate($obj->datep2); + } else { + // Example: $obj->datep = '1970-01-01 01:00:00', jdate will return 0 if TZ of PHP server is Europe/Berlin (+1) + $event->datep = $db->jdate($obj->datep); + $event->datef = $db->jdate($obj->datep2); + } //$event->datep_formated_gmt = dol_print_date($event->datep, 'dayhour', 'gmt'); //var_dump($obj->datep); //var_dump($event->datep); @@ -829,7 +839,6 @@ if ($resql) { $event->fetch_userassigned(); // This load $event->userassigned $event->priority = $obj->priority; - $event->fulldayevent = $obj->fulldayevent; $event->location = $obj->location; $event->transparency = $obj->transparency; $event->fk_element = $obj->fk_element; @@ -869,25 +878,43 @@ if ($resql) { $annee = dol_print_date($daycursor, '%Y', 'tzuserrel'); $mois = dol_print_date($daycursor, '%m', 'tzuserrel'); $jour = dol_print_date($daycursor, '%d', 'tzuserrel'); + + $daycursorend = $event->date_end_in_calendar; + $anneeend = dol_print_date($daycursorend, '%Y', 'tzuserrel'); + $moisend = dol_print_date($daycursorend, '%m', 'tzuserrel'); + $jourend = dol_print_date($daycursorend, '%d', 'tzuserrel'); + //var_dump(dol_print_date($event->date_start_in_calendar, 'dayhour', 'gmt')); // Hour at greenwich //var_dump($annee.'-'.$mois.'-'.$jour); + //print 'annee='.$annee.' mois='.$mois.' jour='.$jour.'
    '; // Loop on each day covered by action to prepare an index to show on calendar $loop = true; $j = 0; - $daykey = dol_mktime(0, 0, 0, $mois, $jour, $annee, 'gmt'); + $daykey = dol_mktime(0, 0, 0, $mois, $jour, $annee, 'gmt'); // $mois, $jour, $annee has been set for user tz + $daykeyend = dol_mktime(0, 0, 0, $moisend, $jourend, $anneeend, 'gmt'); // $moisend, $jourend, $anneeend has been set for user tz + /* + print 'GMT '.$event->date_start_in_calendar.' '.dol_print_date($event->date_start_in_calendar, 'dayhour', 'gmt').'
    '; + print 'TZSERVER '.$event->date_start_in_calendar.' '.dol_print_date($event->date_start_in_calendar, 'dayhour', 'tzserver').'
    '; + print 'TZUSERREL '.$event->date_start_in_calendar.' '.dol_print_date($event->date_start_in_calendar, 'dayhour', 'tzuserrel').'
    '; + print 'GMT '.$event->date_end_in_calendar.' '.dol_print_date($event->date_end_in_calendar, 'dayhour', 'gmt').'
    '; + print 'TZSERVER '.$event->date_end_in_calendar.' '.dol_print_date($event->date_end_in_calendar, 'dayhour', 'tzserver').'
    '; + print 'TZUSER '.$event->date_end_in_calendar.' '.dol_print_date($event->date_end_in_calendar, 'dayhour', 'tzuserrel').'
    '; + */ do { //if ($event->id==408) - //print 'daykey='.$daykey.' '.dol_print_date($daykey, 'dayhour', 'gmt').' '.$event->datep.' '.$event->datef.'
    '; + //print 'daykey='.$daykey.' daykeyend='.$daykeyend.' '.dol_print_date($daykey, 'dayhour', 'gmt').' - '.dol_print_date($event->datep, 'dayhour', 'gmt').' '.dol_print_date($event->datef, 'dayhour', 'gmt').'
    '; + //print 'daykey='.$daykey.' daykeyend='.$daykeyend.' '.dol_print_date($daykey, 'dayhour', 'tzuserrel').' - '.dol_print_date($event->datep, 'dayhour', 'tzuserrel').' '.dol_print_date($event->datef, 'dayhour', 'tzuserrel').'
    '; $eventarray[$daykey][] = $event; $j++; $daykey += 60 * 60 * 24; - if ($daykey > $event->date_end_in_calendar) { + //if ($daykey > $event->date_end_in_calendar) { + if ($daykey > $daykeyend) { $loop = false; } } while ($loop); - + //var_dump($eventarray); //print 'Event '.$i.' id='.$event->id.' (start='.dol_print_date($event->datep).'-end='.dol_print_date($event->datef); //print ' startincalendar='.dol_print_date($event->date_start_in_calendar).'-endincalendar='.dol_print_date($event->date_end_in_calendar).') was added in '.$j.' different index key of array
    '; } @@ -1816,12 +1843,16 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa $cssclass .= " unmovable"; } elseif ($event->type_code == 'ICALEVENT') { $cssclass .= " unmovable"; - } elseif ($event->date_end_in_calendar && date('Ymd', $event->date_start_in_calendar) != date('Ymd', $event->date_end_in_calendar)) { - $tmpyearend = date('Y', $event->date_end_in_calendar); - $tmpmonthend = date('m', $event->date_end_in_calendar); - $tmpdayend = date('d', $event->date_end_in_calendar); + } elseif ($event->date_start_in_calendar && $event->date_end_in_calendar && date('Ymd', $event->date_start_in_calendar) != date('Ymd', $event->date_end_in_calendar)) { + // If the event is on several days + $tmpyearend = dol_print_date($event->date_start_in_calendar, '%Y', 'tzuserrel'); + $tmpmonthend = dol_print_date($event->date_start_in_calendar, '%m', 'tzuserrel'); + $tmpdayend = dol_print_date($event->date_start_in_calendar, '%d', 'tzuserrel'); + //var_dump($tmpyearend.' '.$tmpmonthend.' '.$tmpdayend); if ($tmpyearend != $annee || $tmpmonthend != $mois || $tmpdayend != $jour) { - $cssclass .= " unmovable"; + $cssclass .= " unmovable unmovable-mustusefirstdaytodrag"; + } else { + $cssclass .= ' movable cursormove'; } } else { if ($user->rights->agenda->allactions->create || diff --git a/htdocs/core/db/DoliDB.class.php b/htdocs/core/db/DoliDB.class.php index 4476228d509..f23a66bbee4 100644 --- a/htdocs/core/db/DoliDB.class.php +++ b/htdocs/core/db/DoliDB.class.php @@ -302,8 +302,8 @@ abstract class DoliDB implements Database /** * Convert (by PHP) a PHP server TZ string date into a Timestamps date (GMT if gm=true) - * 19700101020000 -> 3600 with TZ+1 and gmt=0 - * 19700101020000 -> 7200 whaterver is TZ if gmt=1 + * 19700101020000 -> 3600 with server TZ = +1 and $gm='tzserver' + * 19700101020000 -> 7200 whaterver is server TZ if $gm='gmt' * * @param string $string Date in a string (YYYYMMDDHHMMSS, YYYYMMDD, YYYY-MM-DD HH:MM:SS) * @param mixed $gm 'gmt'=Input informations are GMT values, 'tzserver'=Local to server TZ diff --git a/htdocs/core/js/dst.js b/htdocs/core/js/dst.js index 83d4abd5f08..8433ada72a9 100644 --- a/htdocs/core/js/dst.js +++ b/htdocs/core/js/dst.js @@ -26,7 +26,8 @@ $(document).ready(function () { var timezone = jstz.determine(); - + console.log("Timezone detected for user: "+timezone.name()); + // Detect and save TZ and DST var rightNow = new Date(); var jan1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0); diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index d89fd437a2d..fc163933b47 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2560,11 +2560,11 @@ function dol_mktime($hour, $minute, $second, $month, $day, $year, $gm = 'auto', { global $conf; //print "- ".$hour.",".$minute.",".$second.",".$month.",".$day.",".$year.",".$_SERVER["WINDIR"]." -"; - //print 'gm:'.$gm.' gm==auto:'.($gm == 'auto').'
    '; if ($gm === 'auto') { $gm = (empty($conf) ? 'tzserver' : $conf->tzuserinputkey); } + //print 'gm:'.$gm.' gm === auto:'.($gm === 'auto').'
    ';exit; // Clean parameters if ($hour == -1 || empty($hour)) { diff --git a/htdocs/core/tpl/login.tpl.php b/htdocs/core/tpl/login.tpl.php index 338d2bd1a19..a4d38166112 100644 --- a/htdocs/core/tpl/login.tpl.php +++ b/htdocs/core/tpl/login.tpl.php @@ -127,7 +127,7 @@ $(document).ready(function () { - + From 455247565d68132add664def71a36fc19f418024 Mon Sep 17 00:00:00 2001 From: atm-arnaud Date: Fri, 11 Feb 2022 11:40:45 +0100 Subject: [PATCH 090/225] FIX wrong user author --- 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 c8b381280b1..3d1637019e9 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -875,8 +875,8 @@ class Societe extends CommonObject $sql .= ", name_alias"; $sql .= ", entity"; $sql .= ", datec"; - $sql .= ", fk_typent"; $sql .= ", fk_user_creat"; + $sql .= ", fk_typent"; $sql .= ", canvas"; $sql .= ", status"; $sql .= ", ref_ext"; From b84fd3ec3df42e8df698797431d03c173aa148c2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 11 Feb 2022 12:46:45 +0100 Subject: [PATCH 091/225] Clean code --- htdocs/admin/agenda_xcal.php | 9 ++++++++ htdocs/comm/action/class/actioncomm.class.php | 6 ++--- htdocs/core/lib/xcal.lib.php | 22 +++++++++---------- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/htdocs/admin/agenda_xcal.php b/htdocs/admin/agenda_xcal.php index 0166769660a..ce36d97d06a 100644 --- a/htdocs/admin/agenda_xcal.php +++ b/htdocs/admin/agenda_xcal.php @@ -164,6 +164,9 @@ $urlvcal .= $urlwithroot.'/public/agenda/agendaexport.php?format=vcal'.$getentit $message .= img_picto('', 'globe').' '.str_replace('{url}', $urlvcal, ''.$langs->trans("WebCalUrlForVCalExport", 'vcal', '').''); $message .= ''; $message .= ajax_autoselect('onlinepaymenturl1'); $message .= '
    '; @@ -173,6 +176,9 @@ $urlical .= $urlwithroot.'/public/agenda/agendaexport.php?format=ical&type=event $message .= img_picto('', 'globe').' '.str_replace('{url}', $urlical, ''.$langs->trans("WebCalUrlForVCalExport", 'ical/ics', '').''); $message .= ''; $message .= ajax_autoselect('onlinepaymenturl2'); $message .= '
    '; @@ -182,6 +188,9 @@ $urlrss .= $urlwithroot.'/public/agenda/agendaexport.php?format=rss'.$getentity. $message .= img_picto('', 'globe').' '.str_replace('{url}', $urlrss, ''.$langs->trans("WebCalUrlForVCalExport", 'rss', '').''); $message .= ''; $message .= ajax_autoselect('onlinepaymenturl3'); $message .= '
    '; diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index 8dd0d9febbe..1e640f7afbe 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -1952,14 +1952,14 @@ class ActionComm extends CommonObject $event = array(); $event['uid'] = 'dolibarragenda-'.$this->db->database_name.'-'.$obj->id."@".$_SERVER["SERVER_NAME"]; $event['type'] = $type; + $datestart = $this->db->jdate($obj->datep) - (empty($conf->global->AGENDA_EXPORT_FIX_TZ) ? 0 : ($conf->global->AGENDA_EXPORT_FIX_TZ * 3600)); // fix for -> Warning: A non-numeric value encountered if (is_numeric($this->db->jdate($obj->datep2))) { - $dateend = $this->db->jdate($obj->datep2) - - (empty($conf->global->AGENDA_EXPORT_FIX_TZ) ? 0 : ($conf->global->AGENDA_EXPORT_FIX_TZ * 3600)); + $dateend = $this->db->jdate($obj->datep2) - (empty($conf->global->AGENDA_EXPORT_FIX_TZ) ? 0 : ($conf->global->AGENDA_EXPORT_FIX_TZ * 3600)); } else { - // use start date as fall-back to avoid import erros on empty end date + // use start date as fall-back to avoid pb with empty end date on ICS readers $dateend = $datestart; } diff --git a/htdocs/core/lib/xcal.lib.php b/htdocs/core/lib/xcal.lib.php index fcd1660985b..74b5f711da9 100644 --- a/htdocs/core/lib/xcal.lib.php +++ b/htdocs/core/lib/xcal.lib.php @@ -100,6 +100,7 @@ function build_calfile($format, $title, $desc, $events_array, $outputfile) $created = $event["created"]; $modified = $event["modified"]; $assignedUsers = $event["assignedUsers"]; + //print $fulldayevent.' '.dol_print_date($startdate, 'dayhour', 'gmt'); // Format $summary = format_cal($format, $summary); @@ -191,16 +192,16 @@ function build_calfile($format, $title, $desc, $events_array, $outputfile) // Date must be GMT dates // Current date - fwrite($calfileh, "DTSTAMP:".dol_print_date($now, "dayhourxcard", true)."\n"); + fwrite($calfileh, "DTSTAMP:".dol_print_date($now, "dayhourxcard", 'gmt')."\n"); // Start date $prefix = ""; - $startdatef = dol_print_date($startdate, "dayhourxcard", true); + $startdatef = dol_print_date($startdate, "dayhourxcard", 'gmt'); if ($fulldayevent) { // Local time $prefix = ";VALUE=DATE"; - $startdatef = dol_print_date($startdate, "dayxcard", false); + $startdatef = dol_print_date($startdate, "dayxcard", 'gmt'); } fwrite($calfileh, "DTSTART".$prefix.":".$startdatef."\n"); @@ -208,7 +209,7 @@ function build_calfile($format, $title, $desc, $events_array, $outputfile) // End date if ($fulldayevent) { if (empty($enddate)) { - $enddate = dol_time_plus_duree($startdate, 1, "d"); + $enddate = dol_time_plus_duree($startdate, 1, "d"); // We add 1 day needed for full day event (DTEND must be next day after event) } } else { if (empty($enddate)) { @@ -217,14 +218,11 @@ function build_calfile($format, $title, $desc, $events_array, $outputfile) } $prefix = ""; - $enddatef = dol_print_date($enddate, "dayhourxcard", true); + $enddatef = dol_print_date($enddate, "dayhourxcard", 'gmt'); if ($fulldayevent) { $prefix = ";VALUE=DATE"; - $enddatef = dol_print_date($enddate + 1, "dayxcard", false); - - // Local time - //$enddatef .= dol_print_date($enddate+1,"dayhourxcard",false); + $enddatef = dol_print_date($enddate + 1, "dayxcard", 'gmt'); // We add 1 second so we reach the +1 day needed for full day event (DTEND must be next day after event) } fwrite($calfileh, "DTEND".$prefix.":".$enddatef."\n"); @@ -256,11 +254,11 @@ function build_calfile($format, $title, $desc, $events_array, $outputfile) } if ($created) { - fwrite($calfileh, "CREATED:".dol_print_date($created, "dayhourxcard", true)."\n"); + fwrite($calfileh, "CREATED:".dol_print_date($created, "dayhourxcard", 'gmt')."\n"); } if ($modified) { - fwrite($calfileh, "LAST-MODIFIED:".dol_print_date($modified, "dayhourxcard", true)."\n"); + fwrite($calfileh, "LAST-MODIFIED:".dol_print_date($modified, "dayhourxcard", 'gmt')."\n"); } fwrite($calfileh, "SUMMARY:".$encoding.$summary."\n"); @@ -270,7 +268,7 @@ function build_calfile($format, $title, $desc, $events_array, $outputfile) fwrite($calfileh, "LOCATION:".$location."\n"); fwrite($calfileh, "TRANSP:OPAQUE\n"); fwrite($calfileh, "CLASS:CONFIDENTIAL\n"); - fwrite($calfileh, "DTSTAMP:".dol_print_date($startdatef, "dayhourxcard", true)."\n"); + fwrite($calfileh, "DTSTAMP:".dol_print_date($startdatef, "dayhourxcard", 'gmt')."\n"); fwrite($calfileh, "END:VJOURNAL\n"); } From 32af067e1e48bd94d5aaff32d1254cde44567213 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 11 Feb 2022 13:01:29 +0100 Subject: [PATCH 092/225] Code comment --- htdocs/core/lib/xcal.lib.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/xcal.lib.php b/htdocs/core/lib/xcal.lib.php index 74b5f711da9..97ada3e3d4f 100644 --- a/htdocs/core/lib/xcal.lib.php +++ b/htdocs/core/lib/xcal.lib.php @@ -209,7 +209,10 @@ function build_calfile($format, $title, $desc, $events_array, $outputfile) // End date if ($fulldayevent) { if (empty($enddate)) { - $enddate = dol_time_plus_duree($startdate, 1, "d"); // We add 1 day needed for full day event (DTEND must be next day after event) + // We add 1 day needed for full day event (DTEND must be next day after event). + // This is mention in https://datatracker.ietf.org/doc/html/rfc5545: + // "The "DTEND" property for a "VEVENT" calendar component specifies the non-inclusive end of the event." + $enddate = dol_time_plus_duree($startdate, 1, "d"); } } else { if (empty($enddate)) { @@ -222,7 +225,10 @@ function build_calfile($format, $title, $desc, $events_array, $outputfile) if ($fulldayevent) { $prefix = ";VALUE=DATE"; - $enddatef = dol_print_date($enddate + 1, "dayxcard", 'gmt'); // We add 1 second so we reach the +1 day needed for full day event (DTEND must be next day after event) + // We add 1 second so we reach the +1 day needed for full day event (DTEND must be next day after event) + // This is mention in https://datatracker.ietf.org/doc/html/rfc5545: + // "The "DTEND" property for a "VEVENT" calendar component specifies the non-inclusive end of the event." + $enddatef = dol_print_date($enddate + 1, "dayxcard", 'gmt'); } fwrite($calfileh, "DTEND".$prefix.":".$enddatef."\n"); From 89ffe5baba701eecdc592e67f96935768faefdc9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 11 Feb 2022 14:07:10 +0100 Subject: [PATCH 093/225] Clean code for param of dol_stringtotime() --- htdocs/core/lib/date.lib.php | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php index d4028e2196b..237adc9447a 100644 --- a/htdocs/core/lib/date.lib.php +++ b/htdocs/core/lib/date.lib.php @@ -357,18 +357,18 @@ function dolSqlDateFilter($datefield, $day_date, $month_date, $year_date, $exclu * Convert a string date into a GM Timestamps date * Warning: YYYY-MM-DDTHH:MM:SS+02:00 (RFC3339) is not supported. If parameter gm is 1, we will use no TZ, if not we will use TZ of server, not the one inside string. * - * @param string $string Date in a string - * YYYYMMDD - * YYYYMMDDHHMMSS - * YYYYMMDDTHHMMSSZ - * YYYY-MM-DDTHH:MM:SSZ (RFC3339) - * DD/MM/YY or DD/MM/YYYY (deprecated) - * DD/MM/YY HH:MM:SS or DD/MM/YYYY HH:MM:SS (deprecated) - * @param int $gm 1 =Input date is GM date, - * 0 =Input date is local date using PHP server timezone - * @return int Date as a timestamp - * 19700101020000 -> 7200 with gm=1 - * 19700101000000 -> 0 with gm=1 + * @param string $string Date in a string + * YYYYMMDD + * YYYYMMDDHHMMSS + * YYYYMMDDTHHMMSSZ + * YYYY-MM-DDTHH:MM:SSZ (RFC3339) + * DD/MM/YY or DD/MM/YYYY (deprecated) + * DD/MM/YY HH:MM:SS or DD/MM/YYYY HH:MM:SS (deprecated) + * @param int|string $gm 'gmt' or 1 =Input date is GM date, + * 'tzserver' or 0 =Input date is date using PHP server timezone + * @return int Date as a timestamp + * 19700101020000 -> 7200 with gm=1 + * 19700101000000 -> 0 with gm=1 * * @see dol_print_date(), dol_mktime(), dol_getdate() */ @@ -408,7 +408,14 @@ function dol_stringtotime($string, $gm = 1) $string = preg_replace('/([^0-9])/i', '', $string); $tmp = $string.'000000'; - $date = dol_mktime(substr($tmp, 8, 2), substr($tmp, 10, 2), substr($tmp, 12, 2), substr($tmp, 4, 2), substr($tmp, 6, 2), substr($tmp, 0, 4), ($gm ? 1 : 0)); + // Clean $gm + if ($gm === 1) { + $gm = 'gmt'; + } elseif (empty($gm) || $gm === 'tzserver') { + $gm = 'tzserver'; + } + + $date = dol_mktime(substr($tmp, 8, 2), substr($tmp, 10, 2), substr($tmp, 12, 2), substr($tmp, 4, 2), substr($tmp, 6, 2), substr($tmp, 0, 4), $gm); return $date; } From 271e9da425bfa0b4c0d731339d12b3dd1b60ac72 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 11 Feb 2022 15:15:50 +0100 Subject: [PATCH 094/225] Add option MAIN_STORE_FULL_EVENT_IN_GMT to fix TZ pb with full day event --- htdocs/comm/action/card.php | 65 ++++++++++++++++++---------- htdocs/comm/action/document.php | 6 ++- htdocs/comm/action/index.php | 17 ++++---- htdocs/comm/action/list.php | 16 +++++-- htdocs/resource/element_resource.php | 6 ++- 5 files changed, 73 insertions(+), 37 deletions(-) diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index 627c2f0ce51..4a00894d26b 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -76,11 +76,14 @@ if ($complete == 'na' || $complete == -2) { } if ($fulldayevent) { - $datep = dol_mktime('00', '00', 0, GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int')); - $datef = dol_mktime('23', '59', '59', GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int')); + $tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT'); + // For "full day" events, we must store date in GMT (It must be viewed as same moment everywhere) + $datep = dol_mktime('00', '00', 0, GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'), $tzforfullday ? $tzforfullday : 'tzuserrel'); + $datef = dol_mktime('23', '59', '59', GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'), $tzforfullday ? $tzforfullday : 'tzuserrel'); + //print $db->idate($datep); exit; } else { - $datep = dol_mktime($aphour, $apmin, 0, GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int')); - $datef = dol_mktime($p2hour, $p2min, '59', GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int')); + $datep = dol_mktime($aphour, $apmin, 0, GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'), 'tzuserrel'); + $datef = dol_mktime($p2hour, $p2min, '59', GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'), 'tzuserrel'); } // Security check @@ -252,8 +255,15 @@ if (empty($reshook) && $action == 'add') { $percentage = in_array(GETPOST('status'), array(-1, 100)) ? GETPOST('status') : (in_array($complete, array(-1, 100)) ? $complete : GETPOST("percentage", 'int')); // If status is -1 or 100, percentage is not defined and we must use status // Clean parameters - $datep = dol_mktime($fulldayevent ? '00' : GETPOST("aphour", 'int'), $fulldayevent ? '00' : GETPOST("apmin", 'int'), $fulldayevent ? '00' : GETPOST("apsec", 'int'), GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'), 'tzuser'); - $datef = dol_mktime($fulldayevent ? '23' : GETPOST("p2hour", 'int'), $fulldayevent ? '59' : GETPOST("p2min", 'int'), $fulldayevent ? '59' : GETPOST("apsec", 'int'), GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'), 'tzuser'); + if ($fulldayevent) { + $tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT'); + // For "full day" events, we must store date in GMT (It must be viewed as same moment everywhere) + $datep = dol_mktime($fulldayevent ? '00' : GETPOST("aphour", 'int'), $fulldayevent ? '00' : GETPOST("apmin", 'int'), $fulldayevent ? '00' : GETPOST("apsec", 'int'), GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'), $tzforfullday ? $tzforfullday : 'tzuser'); + $datef = dol_mktime($fulldayevent ? '23' : GETPOST("p2hour", 'int'), $fulldayevent ? '59' : GETPOST("p2min", 'int'), $fulldayevent ? '59' : GETPOST("apsec", 'int'), GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'), $tzforfullday ? $tzforfullday : 'tzuser'); + } else { + $datep = dol_mktime($fulldayevent ? '00' : GETPOST("aphour", 'int'), $fulldayevent ? '00' : GETPOST("apmin", 'int'), $fulldayevent ? '00' : GETPOST("apsec", 'int'), GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'), 'tzuser'); + $datef = dol_mktime($fulldayevent ? '23' : GETPOST("p2hour", 'int'), $fulldayevent ? '59' : GETPOST("p2min", 'int'), $fulldayevent ? '59' : GETPOST("apsec", 'int'), GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'), 'tzuser'); + } // Check parameters if (!$datef && $percentage == 100) { @@ -513,8 +523,16 @@ if (empty($reshook) && $action == 'update') { $object->fetch_userassigned(); $object->oldcopy = clone $object; - $datep = dol_mktime($fulldayevent ? '00' : $aphour, $fulldayevent ? '00' : $apmin, 0, GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'), 'tzuser'); - $datef = dol_mktime($fulldayevent ? '23' : $p2hour, $fulldayevent ? '59' : $p2min, $fulldayevent ? '59' : '0', GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'), 'tzuser'); + // Clean parameters + if ($fulldayevent) { + $tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT'); + // For "full day" events, we must store date in GMT (It must be viewed as same moment everywhere) + $datep = dol_mktime($fulldayevent ? '00' : GETPOST("aphour", 'int'), $fulldayevent ? '00' : GETPOST("apmin", 'int'), $fulldayevent ? '00' : GETPOST("apsec", 'int'), GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'), $tzforfullday ? $tzforfullday : 'tzuser'); + $datef = dol_mktime($fulldayevent ? '23' : GETPOST("p2hour", 'int'), $fulldayevent ? '59' : GETPOST("p2min", 'int'), $fulldayevent ? '59' : GETPOST("apsec", 'int'), GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'), $tzforfullday ? $tzforfullday : 'tzuser'); + } else { + $datep = dol_mktime($fulldayevent ? '00' : GETPOST("aphour", 'int'), $fulldayevent ? '00' : GETPOST("apmin", 'int'), $fulldayevent ? '00' : GETPOST("apsec", 'int'), GETPOST("apmonth", 'int'), GETPOST("apday", 'int'), GETPOST("apyear", 'int'), 'tzuser'); + $datef = dol_mktime($fulldayevent ? '23' : GETPOST("p2hour", 'int'), $fulldayevent ? '59' : GETPOST("p2min", 'int'), $fulldayevent ? '59' : GETPOST("apsec", 'int'), GETPOST("p2month", 'int'), GETPOST("p2day", 'int'), GETPOST("p2year", 'int'), 'tzuser'); + } $object->type_id = dol_getIdFromCode($db, GETPOST("actioncode", 'aZ09'), 'c_actioncomm'); $object->label = GETPOST("label", "alphanohtml"); @@ -1005,11 +1023,11 @@ if ($action == 'create') { $datep = ($datep ? $datep : (is_null($object->datep) ? '' : $object->datep)); if (GETPOST('datep', 'int', 1)) { - $datep = dol_stringtotime(GETPOST('datep', 'int', 1), 0); + $datep = dol_stringtotime(GETPOST('datep', 'int', 1), 'tzuser'); } $datef = ($datef ? $datef : $object->datef); if (GETPOST('datef', 'int', 1)) { - $datef = dol_stringtotime(GETPOST('datef', 'int', 1), 0); + $datef = dol_stringtotime(GETPOST('datef', 'int', 1), 'tzuser'); } if (empty($datef) && !empty($datep)) { if (GETPOST("actioncode", 'aZ09') == 'AC_RDV' || empty($conf->global->AGENDA_USE_EVENT_TYPE_DEFAULT)) { @@ -1024,16 +1042,16 @@ if ($action == 'create') { print ''.$langs->trans("DateActionEnd").''; print '
    '; if (GETPOST("afaire") == 1) { - print $form->selectDate($datep, 'ap', 1, 1, 0, "action", 1, 2, 0, 'fulldaystart'); // Empty value not allowed for start date and hours if "todo" + print $form->selectDate($datep, 'ap', 1, 1, 0, "action", 1, 2, 0, 'fulldaystart', '', '', '', 1, '', '', 'tzuserrel'); // Empty value not allowed for start date and hours if "todo" } else { - print $form->selectDate($datep, 'ap', 1, 1, 1, "action", 1, 2, 0, 'fulldaystart'); + print $form->selectDate($datep, 'ap', 1, 1, 1, "action", 1, 2, 0, 'fulldaystart', '', '', '', 1, '', '', 'tzuserrel'); } print '     -     '; //print ' - '; if (GETPOST("afaire") == 1) { - print $form->selectDate($datef, 'p2', 1, 1, 1, "action", 1, 0, 0, 'fulldayend'); + print $form->selectDate($datef, 'p2', 1, 1, 1, "action", 1, 0, 0, 'fulldayend', '', '', '', 1, '', '', 'tzuserrel'); } else { - print $form->selectDate($datef, 'p2', 1, 1, 1, "action", 1, 0, 0, 'fulldayend'); + print $form->selectDate($datef, 'p2', 1, 1, 1, "action", 1, 0, 0, 'fulldayend', '', '', '', 1, '', '', 'tzuserrel'); } print '
    '.$langs->trans("DateActionStart").' - '.$langs->trans("DateActionEnd").''; + $tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT'); if (GETPOST("afaire") == 1) { - print $form->selectDate($datep ? $datep : $object->datep, 'ap', 1, 1, 0, "action", 1, 1, 0, 'fulldaystart', '', '', '', 1, '', '', 'tzuser'); + print $form->selectDate($datep ? $datep : $object->datep, 'ap', 1, 1, 0, "action", 1, 1, 0, 'fulldaystart', '', '', '', 1, '', '', $object->fulldayevent ? ($tzforfullday ? $tzforfullday : 'tzuser') : 'tzuser'); } elseif (GETPOST("afaire") == 2) { - print $form->selectDate($datep ? $datep : $object->datep, 'ap', 1, 1, 1, "action", 1, 1, 0, 'fulldaystart', '', '', '', 1, '', '', 'tzuser'); + print $form->selectDate($datep ? $datep : $object->datep, 'ap', 1, 1, 1, "action", 1, 1, 0, 'fulldaystart', '', '', '', 1, '', '', $object->fulldayevent ? ($tzforfullday ? $tzforfullday : 'tzuser') : 'tzuser'); } else { - print $form->selectDate($datep ? $datep : $object->datep, 'ap', 1, 1, 1, "action", 1, 1, 0, 'fulldaystart', '', '', '', 1, '', '', 'tzuser'); + print $form->selectDate($datep ? $datep : $object->datep, 'ap', 1, 1, 1, "action", 1, 1, 0, 'fulldaystart', '', '', '', 1, '', '', $object->fulldayevent ? ($tzforfullday ? $tzforfullday : 'tzuser') : 'tzuser'); } print ' - '; if (GETPOST("afaire") == 1) { - print $form->selectDate($datef ? $datef : $object->datef, 'p2', 1, 1, 1, "action", 1, 1, 0, 'fulldayend', '', '', '', 1, '', '', 'tzuser'); + print $form->selectDate($datef ? $datef : $object->datef, 'p2', 1, 1, 1, "action", 1, 1, 0, 'fulldayend', '', '', '', 1, '', '', $object->fulldayevent ? ($tzforfullday ? $tzforfullday : 'tzuser') : 'tzuser'); } elseif (GETPOST("afaire") == 2) { - print $form->selectDate($datef ? $datef : $object->datef, 'p2', 1, 1, 1, "action", 1, 1, 0, 'fulldayend', '', '', '', 1, '', '', 'tzuser'); + print $form->selectDate($datef ? $datef : $object->datef, 'p2', 1, 1, 1, "action", 1, 1, 0, 'fulldayend', '', '', '', 1, '', '', $object->fulldayevent ? ($tzforfullday ? $tzforfullday : 'tzuser') : 'tzuser'); } else { - print $form->selectDate($datef ? $datef : $object->datef, 'p2', 1, 1, 1, "action", 1, 1, 0, 'fulldayend', '', '', '', 1, '', '', 'tzuser'); + print $form->selectDate($datef ? $datef : $object->datef, 'p2', 1, 1, 1, "action", 1, 1, 0, 'fulldayend', '', '', '', 1, '', '', $object->fulldayevent ? ($tzforfullday ? $tzforfullday : 'tzuser') : 'tzuser'); } print '
    '; - print dol_print_date($db->jdate($obj->dp), $formatToUse, 'tzuser'); + if (empty($obj->fulldayevent)) { + print dol_print_date($db->jdate($obj->dp), $formatToUse, 'tzuser'); + } else { + $tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT'); + print dol_print_date($db->jdate($obj->dp), $formatToUse, ($tzforfullday ? $tzforfullday : 'tzuser')); + } $late = 0; if ($actionstatic->hasDelay() && $actionstatic->percentage >= 0 && $actionstatic->percentage < 100 ) { $late = 1; @@ -967,7 +972,12 @@ while ($i < min($num, $limit)) { // End date if (!empty($arrayfields['a.datep2']['checked'])) { print ''; - print dol_print_date($db->jdate($obj->dp2), $formatToUse, 'tzuser'); + if (empty($obj->fulldayevent)) { + print dol_print_date($db->jdate($obj->dp2), $formatToUse, 'tzuser'); + } else { + $tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT'); + print dol_print_date($db->jdate($obj->dp2), $formatToUse, ($tzforfullday ? $tzforfullday : 'tzuser')); + } print ''.$langs->trans("SendingsAbility").''; print ''; -print $langs->trans("Required"); +print ''.img_picto($langs->trans("Required"), 'switch_on').''; /*if (empty($conf->global->MAIN_SUBMODULE_EXPEDITION)) { print ''.img_picto($langs->trans("Disabled"),'switch_off').''; From eff2fc1e9ef9a409022145f146e1128e4c4ad14f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 11 Feb 2022 18:19:50 +0100 Subject: [PATCH 098/225] Complete option MAIN_FREE_PRODUCT_CHECKED_BY_DEFAULT --- htdocs/core/class/html.form.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 1e3e878dad5..692cf35c3b1 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -1106,13 +1106,13 @@ class Form } print '
    '.$langcode.''.$key.''; + $titleforvalue = $langs->trans("Translation").' en_US for key '.$key.':
    '.($langsenfileonly->tab_translate[$key] ? $langsenfileonly->trans($key) : ''.$langs->trans("None").''); + print ''; print dol_escape_htmltag($val); - print '
    '; + print ''; + print ''; if (!empty($newlangfileonly->tab_translate[$key])) { if ($val != $newlangfileonly->tab_translate[$key]) { // retrieve rowid From 1097111706fda094e6ee4adffb7f9cb509245d0a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 13 Feb 2022 16:37:08 +0100 Subject: [PATCH 108/225] Fix autofocus --- htdocs/admin/accountant.php | 2 +- htdocs/admin/openinghours.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/accountant.php b/htdocs/admin/accountant.php index e0e01cab328..693170862e9 100644 --- a/htdocs/admin/accountant.php +++ b/htdocs/admin/accountant.php @@ -119,7 +119,7 @@ print '
    '.$langs-> // Name print '
    '; -print 'global->MAIN_OPTIMIZEFORTEXTBROWSER) ? '' : ' autofocus="autofocus"').'>
    '; diff --git a/htdocs/admin/openinghours.php b/htdocs/admin/openinghours.php index a0f02fe99ac..b18ebd0c05f 100644 --- a/htdocs/admin/openinghours.php +++ b/htdocs/admin/openinghours.php @@ -97,7 +97,7 @@ if (empty($action) || $action == 'edit' || $action == 'updateedit') { print '
    '; print $form->textwithpicto($langs->trans("Monday"), $langs->trans("OpeningHoursFormatDesc")); print ''; - print 'global->MAIN_OPTIMIZEFORTEXTBROWSER) ? '' : ' autofocus="autofocus"').'>
    '; print $form->textwithpicto($langs->trans("Tuesday"), $langs->trans("OpeningHoursFormatDesc")); From d5e5e8d4363c0fb7bcfbaaac134e5ee098cc0f11 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 13 Feb 2022 16:49:41 +0100 Subject: [PATCH 109/225] Debug v15 --- htdocs/admin/delais.php | 20 ++++++++++--------- htdocs/admin/pdf.php | 2 +- htdocs/admin/pdf_other.php | 2 +- htdocs/core/boxes/box_members_by_type.php | 1 + .../box_members_subscriptions_by_year.php | 1 + htdocs/langs/en_US/admin.lang | 5 +++-- htdocs/langs/en_US/boxes.lang | 2 +- htdocs/theme/eldy/global.inc.php | 1 + htdocs/theme/md/style.css.php | 4 ++++ 9 files changed, 24 insertions(+), 14 deletions(-) diff --git a/htdocs/admin/delais.php b/htdocs/admin/delais.php index 229fb3e2291..2ae77b03d07 100644 --- a/htdocs/admin/delais.php +++ b/htdocs/admin/delais.php @@ -222,7 +222,8 @@ if ($action == 'edit') { print ''; print ''; - print ''; + print ''; + print ''; foreach ($modules as $module => $delays) { if (!empty($conf->$module->enabled)) { @@ -230,7 +231,7 @@ if ($action == 'edit') { $value = (!empty($conf->global->{$delay['code']}) ? $conf->global->{$delay['code']}:0); print ''; print ''; - print ''; } } @@ -242,10 +243,10 @@ if ($action == 'edit') { // Show if meteo is enabled print '
    '.$langs->trans("DelaysOfToleranceBeforeWarning").''.$langs->trans("Value").'
    '.$langs->trans("DelaysOfToleranceBeforeWarning").''.$langs->trans("LateWarningAfter").'
    '.img_object('', $delay['img']).''.$langs->trans('Delays_'.$delay['code']).''; + print ''.$langs->trans('Delays_'.$delay['code']).''; print ' '.$langs->trans("days").'
    '; - print ''; + print ''; print ''; - print ''; @@ -256,7 +257,7 @@ if ($action == 'edit') { */ print '
    '.$langs->trans("Parameter").''.$langs->trans("Value").'
    '.$langs->trans("Option").''.$langs->trans("Value").'
    '.$langs->trans("MAIN_DISABLE_METEO").''; + print ''.$langs->trans("MAIN_DISABLE_METEO").''; print $form->selectarray('MAIN_DISABLE_METEO', $labelmeteo, (empty($conf->global->MAIN_DISABLE_METEO) ? 0 : $conf->global->MAIN_DISABLE_METEO)); print '
    '; - print ''; + print ''; foreach ($modules as $module => $delays) { if (!empty($conf->$module->enabled)) { @@ -276,7 +277,7 @@ if ($action == 'edit') { // Show if meteo is enabled print '
    '.$langs->trans("DelaysOfToleranceBeforeWarning").''.$langs->trans("Value").'
    '.$langs->trans("DelaysOfToleranceBeforeWarning").''.$langs->trans("Value").'
    '; - print ''; + print ''; print ''; print ''; - print ''; + print ''; print ''; @@ -665,7 +665,7 @@ if ($result) { print ''; // VAT Num - print ''; + print ''; // Found accounts print ''; - print ''; + print ''; + print ''; // Found accounts print ''; - print ''; + print ''; print ''; // VAT Num - print ''; + print ''; // Found accounts print ''; - print ''; print ''; // VAT Num - print ''; + print ''; // Found accounts print ''; print ''; // Currency @@ -471,7 +471,7 @@ if ($action == 'create') { print '
    '.$langs->trans("Parameter").''.$langs->trans("Value").'
    '.$langs->trans("Option").''.$langs->trans("Value").'
    '.$langs->trans("MAIN_DISABLE_METEO").''; @@ -301,7 +302,7 @@ if (empty($conf->global->MAIN_DISABLE_METEO) || $conf->global->MAIN_DISABLE_METE } else { $str_mode_enabled = $str_mode_percentage; } - print ''.$str_mode_enabled.''; + print '
    '.$str_mode_enabled.''; print ''; print '

    '; @@ -451,8 +452,9 @@ if ($action == 'edit') { print $form->buttonsSaveCancel("Save", ''); print ''; } else { - print '
    '; + print '

    '; + print ''.$langs->trans("Modify").''; + print '
    '; } // End of page diff --git a/htdocs/admin/pdf.php b/htdocs/admin/pdf.php index 18a4ca0825f..33f8f5b87f2 100644 --- a/htdocs/admin/pdf.php +++ b/htdocs/admin/pdf.php @@ -249,7 +249,7 @@ print load_fiche_titre($langs->trans("PDF"), '', 'title_setup'); $head = pdf_admin_prepare_head(); -print dol_get_fiche_head($head, 'general', $langs->trans("PDF"), -1, 'pdf'); +print dol_get_fiche_head($head, 'general', '', -1, ''); print ''.$form->textwithpicto($langs->trans("PDFDesc"), $s)."
    \n"; print "
    \n"; diff --git a/htdocs/admin/pdf_other.php b/htdocs/admin/pdf_other.php index f42c49a4bfe..72acf7fbf4f 100644 --- a/htdocs/admin/pdf_other.php +++ b/htdocs/admin/pdf_other.php @@ -84,7 +84,7 @@ print load_fiche_titre($langs->trans("PDF"), '', 'title_setup'); $head = pdf_admin_prepare_head(); -print dol_get_fiche_head($head, 'other', $langs->trans("other"), -1, 'pdf'); +print dol_get_fiche_head($head, 'other', '', -1, ''); $tooltiptext = ''; print ''.$form->textwithpicto($langs->trans("PDFOtherDesc"), $tooltiptext)."
    \n"; diff --git a/htdocs/core/boxes/box_members_by_type.php b/htdocs/core/boxes/box_members_by_type.php index 0a5e4548e3f..d7ab444f2da 100644 --- a/htdocs/core/boxes/box_members_by_type.php +++ b/htdocs/core/boxes/box_members_by_type.php @@ -244,6 +244,7 @@ class box_members_by_type extends ModeleBoxes ); } else { $this->info_box_contents[$line][] = array( + 'tr' => 'class="liste_total"', 'td' => 'class="liste_total"', 'text' => $langs->trans("Total") ); diff --git a/htdocs/core/boxes/box_members_subscriptions_by_year.php b/htdocs/core/boxes/box_members_subscriptions_by_year.php index e7bf916d236..479d2424f09 100644 --- a/htdocs/core/boxes/box_members_subscriptions_by_year.php +++ b/htdocs/core/boxes/box_members_subscriptions_by_year.php @@ -196,6 +196,7 @@ class box_members_subscriptions_by_year extends ModeleBoxes ); } else { $this->info_box_contents[$line][] = array( + 'tr' => 'class="liste_total"', 'td' => 'class="liste_total"', 'text' => $langs->trans("Total"), ); diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 80e40c12a1b..3506f024eea 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1187,7 +1187,7 @@ BankModuleNotActive=Bank accounts module not enabled ShowBugTrackLink=Show the link "%s" ShowBugTrackLinkDesc=Keep empty to not display this link, use value 'github' for the link to the Dolibarr project or define directly an url 'https://...' Alerts=Alerts -DelaysOfToleranceBeforeWarning=Delay before displaying a warning alert for: +DelaysOfToleranceBeforeWarning=Displaying a warning alert for... DelaysOfToleranceDesc=Set the delay before an alert icon %s is shown onscreen for the late element. Delays_MAIN_DELAY_ACTIONS_TODO=Planned events (agenda events) not completed Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Project not closed in time @@ -2217,4 +2217,5 @@ NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search c API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first -PreviousHash=Previous hash \ No newline at end of file +PreviousHash=Previous hash +LateWarningAfter="Late" warning after \ No newline at end of file diff --git a/htdocs/langs/en_US/boxes.lang b/htdocs/langs/en_US/boxes.lang index 710d49bfab6..2ace1eb97e1 100644 --- a/htdocs/langs/en_US/boxes.lang +++ b/htdocs/langs/en_US/boxes.lang @@ -23,7 +23,7 @@ BoxLastMembersSubscriptions=Latest member subscriptions BoxFicheInter=Latest interventions BoxCurrentAccounts=Open accounts balance BoxTitleMemberNextBirthdays=Birthdays of this month (members) -BoxTitleMembersByType=Members by type +BoxTitleMembersByType=Members by type and status BoxTitleMembersSubscriptionsByYear=Members Subscriptions by year BoxTitleLastRssInfos=Latest %s news from %s BoxTitleLastProducts=Products/Services: last %s modified diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 147cd2fe8f9..b7d12216c6a 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -5886,6 +5886,7 @@ span#select2-taskid-container[title^='--'] { } span.select2.select2-container.select2-container--default { + text-align: initial; global->THEME_SHOW_BORDER_ON_INPUT)) { ?> border-left: none; border-top: none; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index a207e128cc1..37864c1562c 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -6039,6 +6039,10 @@ span#select2-boxbookmark-container, span#select2-boxcombo-container { overflow: hidden; } +span.select2.select2-container.select2-container--default { + text-align: initial; +} + /* ============================================================================== */ /* For categories */ From a52f1d10940ceb074f4946c1b93e97a1ec28eb3a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 13 Feb 2022 17:33:45 +0100 Subject: [PATCH 110/225] Reponsive --- htdocs/accountancy/customer/lines.php | 2 +- htdocs/accountancy/customer/list.php | 4 ++-- htdocs/accountancy/supplier/lines.php | 2 +- htdocs/accountancy/supplier/list.php | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/accountancy/customer/lines.php b/htdocs/accountancy/customer/lines.php index 7f09e111a23..92997b7a0e6 100644 --- a/htdocs/accountancy/customer/lines.php +++ b/htdocs/accountancy/customer/lines.php @@ -516,7 +516,7 @@ if ($result) { } print '
    '.$objp->tva_intra.''.dol_escape_htmltag($objp->tva_intra).''; print $accountingaccountstatic->getNomUrl(0, 1, 1, '', 1); diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php index 56f904e79ef..ee591df5413 100644 --- a/htdocs/accountancy/customer/list.php +++ b/htdocs/accountancy/customer/list.php @@ -631,7 +631,7 @@ if ($result) { print $product_static->getNomUrl(1); } if ($product_static->label) { - print '
    '.$product_static->label.''; + print '
    '.dol_escape_htmltag($product_static->label).''; } print '
    '.dol_escape_htmltag($objp->tva_intra).''.dol_escape_htmltag($objp->tva_intra).''; diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php index b7d0a0423f3..ff52fd77bd6 100644 --- a/htdocs/accountancy/supplier/lines.php +++ b/htdocs/accountancy/supplier/lines.php @@ -521,7 +521,7 @@ if ($result) { } print ''.$objp->tva_intra.''.dol_escape_htmltag($objp->tva_intra).''.dol_escape_htmltag($objp->tva_intra).''; From a1f88c1186c273d0cbe1c4bfd809b32b550ad99d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 13 Feb 2022 18:03:29 +0100 Subject: [PATCH 111/225] Fix reponsive --- htdocs/accountancy/customer/lines.php | 2 +- htdocs/accountancy/customer/list.php | 2 +- htdocs/accountancy/supplier/lines.php | 2 +- htdocs/accountancy/supplier/list.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/accountancy/customer/lines.php b/htdocs/accountancy/customer/lines.php index 92997b7a0e6..931b5e6420c 100644 --- a/htdocs/accountancy/customer/lines.php +++ b/htdocs/accountancy/customer/lines.php @@ -516,7 +516,7 @@ if ($result) { } print ''.dol_escape_htmltag($objp->tva_intra).''.dol_escape_htmltag($objp->tva_intra).''; print $accountingaccountstatic->getNomUrl(0, 1, 1, '', 1); diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php index ee591df5413..80b7bdf2217 100644 --- a/htdocs/accountancy/customer/list.php +++ b/htdocs/accountancy/customer/list.php @@ -665,7 +665,7 @@ if ($result) { print ''.dol_escape_htmltag($objp->tva_intra).''.dol_escape_htmltag($objp->tva_intra).''; diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php index ff52fd77bd6..9f769ae13b4 100644 --- a/htdocs/accountancy/supplier/lines.php +++ b/htdocs/accountancy/supplier/lines.php @@ -521,7 +521,7 @@ if ($result) { } print ''.dol_escape_htmltag($objp->tva_intra).''; print $accountingaccountstatic->getNomUrl(0, 1, 1, '', 1); diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php index 9faac9ee1c7..24d0ed08a0a 100644 --- a/htdocs/accountancy/supplier/list.php +++ b/htdocs/accountancy/supplier/list.php @@ -672,7 +672,7 @@ if ($result) { print ''.dol_escape_htmltag($objp->tva_intra).''.dol_escape_htmltag($objp->tva_intra).''; From 27b94ceea175aff8dabe02728d7d50ae3ff1afc5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 13 Feb 2022 19:26:16 +0100 Subject: [PATCH 112/225] Debug v15 --- htdocs/core/lib/company.lib.php | 2 +- htdocs/core/lib/functions.lib.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 2d46ee2a239..4bf8a0e7219 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -199,7 +199,7 @@ function societe_prepare_head(Societe $object) if (empty($conf->global->SOCIETE_DISABLE_BANKACCOUNT)) { $nbBankAccount = 0; $foundonexternalonlinesystem = 0; - $langs->load("banks"); + $langs->load("bills"); $title = $langs->trans("PaymentModes"); diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 0c7bb3f08dc..ea8c5f41f61 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3723,7 +3723,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ if (empty($srconly) && in_array($pictowithouttext, array( '1downarrow', '1uparrow', '1leftarrow', '1rightarrow', '1uparrow_selected', '1downarrow_selected', '1leftarrow_selected', '1rightarrow_selected', 'accountancy', 'accounting_account', 'account', 'accountline', 'action', 'add', 'address', 'angle-double-down', 'angle-double-up', 'asset', - 'bank_account', 'barcode', 'bank', 'bell', 'bill', 'billa', 'billr', 'billd', 'bookmark', 'bom', 'bug', 'building', + 'bank_account', 'barcode', 'bank', 'bell', 'bill', 'billa', 'billr', 'billd', 'bookmark', 'bom', 'briefcase-medical', 'bug', 'building', 'card', 'calendar', 'calendarmonth', 'calendarweek', 'calendarday', 'calendarperuser', 'calendarpertype', 'cash-register', 'category', 'chart', 'check', 'clock', 'close_title', 'cog', 'collab', 'company', 'contact', 'country', 'contract', 'conversation', 'cron', 'cubes', 'multicurrency', @@ -3749,7 +3749,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'recent', 'reception', 'recruitmentcandidature', 'recruitmentjobposition', 'resource', 'recurring', 'shapes', 'square', 'stop-circle', 'supplier', 'supplier_proposal', 'supplier_order', 'supplier_invoice', 'timespent', 'title_setup', 'title_accountancy', 'title_bank', 'title_hrm', 'title_agenda', - 'uncheck', 'user-cog', 'vat', 'website', 'workstation', + 'uncheck', 'user-cog', 'user-injured', 'user-md', 'vat', 'website', 'workstation', 'conferenceorbooth', 'eventorganization' ))) { $fakey = $pictowithouttext; From 9349e2df7cffc0fb631651655f44f8c36a57bb89 Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sun, 13 Feb 2022 21:11:45 +0100 Subject: [PATCH 113/225] FIX Accountancy - Order by accounting account on summary page --- htdocs/accountancy/customer/index.php | 1 + htdocs/accountancy/expensereport/index.php | 1 + htdocs/accountancy/supplier/index.php | 1 + 3 files changed, 3 insertions(+) diff --git a/htdocs/accountancy/customer/index.php b/htdocs/accountancy/customer/index.php index a88524ec5d4..c233134f562 100644 --- a/htdocs/accountancy/customer/index.php +++ b/htdocs/accountancy/customer/index.php @@ -403,6 +403,7 @@ if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) { } $sql .= " AND aa.account_number IS NOT NULL"; $sql .= " GROUP BY fd.fk_code_ventilation,aa.account_number,aa.label"; +$sql .= ' ORDER BY aa.account_number'; dol_syslog('htdocs/accountancy/customer/index.php'); $resql = $db->query($sql); diff --git a/htdocs/accountancy/expensereport/index.php b/htdocs/accountancy/expensereport/index.php index 0e3bda39521..2d9c8ac4f1c 100644 --- a/htdocs/accountancy/expensereport/index.php +++ b/htdocs/accountancy/expensereport/index.php @@ -188,6 +188,7 @@ $sql .= " AND er.fk_statut IN (".ExpenseReport::STATUS_APPROVED.", ".ExpenseRepo $sql .= " AND er.entity IN (".getEntity('expensereport', 0).")"; // We don't share object for accountancy $sql .= " AND aa.account_number IS NULL"; $sql .= " GROUP BY erd.fk_code_ventilation,aa.account_number,aa.label"; +$sql .= ' ORDER BY aa.account_number'; dol_syslog('/accountancy/expensereport/index.php:: sql='.$sql); $resql = $db->query($sql); diff --git a/htdocs/accountancy/supplier/index.php b/htdocs/accountancy/supplier/index.php index 585121f7c36..9ea8fd0a307 100644 --- a/htdocs/accountancy/supplier/index.php +++ b/htdocs/accountancy/supplier/index.php @@ -300,6 +300,7 @@ $sql .= " AND ffd.product_type <= 2"; $sql .= " AND ff.entity IN (".getEntity('facture_fourn', 0).")"; // We don't share object for accountancy $sql .= " AND aa.account_number IS NULL"; $sql .= " GROUP BY ffd.fk_code_ventilation,aa.account_number,aa.label"; +$sql .= ' ORDER BY aa.account_number'; dol_syslog('htdocs/accountancy/supplier/index.php'); $resql = $db->query($sql); From 15b7f37027c0591a18b5c223abe8173de8ee1524 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Mon, 14 Feb 2022 09:08:58 +0100 Subject: [PATCH 114/225] FIX missing default or current value --- htdocs/compta/bank/card.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/htdocs/compta/bank/card.php b/htdocs/compta/bank/card.php index 73edd31755d..62b97f6d100 100644 --- a/htdocs/compta/bank/card.php +++ b/htdocs/compta/bank/card.php @@ -358,7 +358,7 @@ if ($action == 'create') { // Type print '
    '.$langs->trans("AccountType").''; - $formbank->selectTypeOfBankAccount(GETPOSTISSET("type") ? GETPOST('type', 'alpha') : Account::TYPE_CURRENT, 'type'); + $formbank->selectTypeOfBankAccount(GETPOSTISSET("type") ? GETPOST('type', 'int') : Account::TYPE_CURRENT, 'type'); print '
    '; print '
    '; - $type = GETPOST('type'); + $type = (GETPOSTISSET("type") ? GETPOST('type', 'int') : Account::TYPE_CURRENT); // add default value if ($type == Account::TYPE_SAVINGS || $type == Account::TYPE_CURRENT) { print ''; @@ -857,7 +857,7 @@ if ($action == 'create') { // Type print ''; print ''; // Currency @@ -1002,7 +1002,8 @@ if ($action == 'create') { print '
    '.$langs->trans("AccountType").''; - $formbank->selectTypeOfBankAccount((GETPOSTISSET('type') ? GETPOST('type', 'alpha') : $object->type), 'type'); + $formbank->selectTypeOfBankAccount((GETPOSTISSET('type') ? GETPOST('type', 'int') : $object->type), 'type'); print '
    '; - if (GETPOST("type") == Account::TYPE_SAVINGS || GETPOST("type") == Account::TYPE_CURRENT) { + $type = (GETPOSTISSET('type') ? GETPOST('type', 'int') : $object->type); // add default current value + if ($type == Account::TYPE_SAVINGS || $type == Account::TYPE_CURRENT) { print '
    '; //print '
    '; From a3c1c707a438bdfac186f2317e514cdab9fe0e06 Mon Sep 17 00:00:00 2001 From: lmarcouiller Date: Mon, 14 Feb 2022 12:09:57 +0100 Subject: [PATCH 115/225] Close #19930 : tag management in KM list --- htdocs/categories/class/categorie.class.php | 3 +- .../knowledgerecord_list.php | 63 ++++++++++++++++++- 2 files changed, 64 insertions(+), 2 deletions(-) diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index 5ffed2e5e4b..c5da89a2c49 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -185,7 +185,8 @@ class Categorie extends CommonObject 'contact' => 'socpeople', 'account' => 'bank_account', // old for bank account 'project' => 'projet', - 'warehouse'=> 'entrepot' + 'warehouse'=> 'entrepot', + 'knowledgemanagement' => 'knowledgemanagement_knowledgerecord' ); /** diff --git a/htdocs/knowledgemanagement/knowledgerecord_list.php b/htdocs/knowledgemanagement/knowledgerecord_list.php index aed45b1db26..88d7e46506d 100644 --- a/htdocs/knowledgemanagement/knowledgerecord_list.php +++ b/htdocs/knowledgemanagement/knowledgerecord_list.php @@ -34,6 +34,9 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/knowledgemanagement/class/knowledgerecord.class.php'; // for other modules +if (!empty($conf->categorie->enabled)) { + dol_include_once('/categories/class/categorie.class.php'); +} //dol_include_once('/othermodule/class/otherobject.class.php'); // Load translation files required by the page @@ -51,6 +54,13 @@ $optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' $id = GETPOST('id', 'int'); +$searchCategoryKnowledgemanagementList = GETPOST('search_category_knowledgemanagement_list', 'array'); +$searchCategoryKnowledgemanagementOperator = 0; +if (GETPOSTISSET('formfilteraction')) { + $searchCategoryKnowledgemanagementOperator = GETPOST('search_category_knowledgemanagement_operator', 'int'); +} elseif (!empty($conf->global->MAIN_SEARCH_CAT_OR_BY_DEFAULT)) { + $searchCategoryKnowledgemanagementOperator = $conf->global->MAIN_SEARCH_CAT_OR_BY_DEFAULT; +} // Load variable for pagination $limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'aZ09comma'); @@ -186,6 +196,10 @@ if (empty($reshook)) { || GETPOST('button_search_x', 'alpha') || GETPOST('button_search.x', 'alpha') || GETPOST('button_search', 'alpha')) { $massaction = ''; // Protection to avoid mass action if we force a new search during a mass action confirmation } + if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { + $searchCategoryKnowledgemanagementOperator = 0; + $searchCategoryKnowledgemanagementList = array(); + } // Mass actions $objectclass = 'KnowledgeRecord'; @@ -229,9 +243,12 @@ $reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters, $obje $sql .= preg_replace('/^,/', ',', $hookmanager->resPrint); $sql = preg_replace('/,\s*$/', '', $sql); $sql .= " FROM ".MAIN_DB_PREFIX.$object->table_element." as t"; -if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) { +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 (t.rowid = ef.fk_object)"; } +if (!empty($searchCategoryKnowledgemanagementList) || !empty($catid)) { + $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX."categorie_knowledgemanagement as ck ON t.rowid = ck.fk_knowledgemanagement"; // We'll need this table joined to the select in order to filter by categ +} // Add table from hooks $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldListFrom', $parameters, $object); // Note that $action and $object may have been modified by hook @@ -270,6 +287,32 @@ foreach ($search as $key => $val) { } } } +//Search for tag/category +$searchCategoryKnowledgemanagementSqlList = array(); +if ($searchCategoryKnowledgemanagementOperator == 1) { + foreach ($searchCategoryKnowledgemanagementList as $searchCategoryKnowledgemanagement) { + if (intval($searchCategoryKnowledgemanagement) == -2) { + $searchCategoryKnowledgemanagementSqlList[] = "ck.fk_categorie IS NULL"; + } elseif (intval($searchCategoryKnowledgemanagement) > 0) { + $searchCategoryKnowledgemanagementSqlList[] = "ck.fk_categorie = ".$db->escape($searchCategoryKnowledgemanagement); + } + } + if (!empty($searchCategoryKnowledgemanagementSqlList)) { + $sql .= " AND (".implode(' OR ', $searchCategoryKnowledgemanagementSqlList).")"; + } +} else { + foreach ($searchCategoryKnowledgemanagementList as $searchCategoryKnowledgemanagement) { + if (intval($searchCategoryKnowledgemanagement) == -2) { + $searchCategoryKnowledgemanagementSqlList[] = "ck.fk_categorie IS NULL"; + } elseif (intval($searchCategoryKnowledgemanagement) > 0) { + $searchCategoryKnowledgemanagementSqlList[] = "t.rowid IN (SELECT fk_knowledgemanagement FROM ".MAIN_DB_PREFIX."categorie_knowledgemanagement WHERE fk_categorie = ".((int) $searchCategoryKnowledgemanagement).")"; + } + } + if (!empty($searchCategoryKnowledgemanagementSqlList)) { + $sql .= " AND (".implode(' AND ', $searchCategoryKnowledgemanagementSqlList).")"; + } +} + if ($search_all) { $sql .= natural_search(array_keys($fieldstosearchall), $search_all); } @@ -379,6 +422,11 @@ $arrayofmassactions = array( if ($permissiontodelete) { $arrayofmassactions['predelete'] = img_picto('', 'delete', 'class="pictofixedwidth"').$langs->trans("Delete"); } + +if ($user->rights->knowledgemanagement->knowledgerecord->write) { + $arrayofmassactions['preaffecttag'] = img_picto('', 'category', 'class="pictofixedwidth"').$langs->trans("AffectTag"); +} + if (GETPOST('nomassaction', 'int') || in_array($massaction, array('presend', 'predelete'))) { $arrayofmassactions = array(); } @@ -418,6 +466,18 @@ $moreforfilter = ''; $moreforfilter.= $langs->trans('MyFilter') . ': '; $moreforfilter.= '';*/ +// Filter on categories +$moreforfilter = ''; +if (!empty($conf->categorie->enabled) && $user->rights->categorie->lire) { + $moreforfilter .= '
    '; + $moreforfilter .= img_picto($langs->trans('Categories'), 'category', 'class="pictofixedwidth"'); + $categoriesKnowledgeArr = $form->select_all_categories(Categorie::TYPE_KNOWLEDGEMANAGEMENT, '', '', 64, 0, 1); + $categoriesKnowledgeArr[-2] = '- '.$langs->trans('NotCategorized').' -'; + $moreforfilter .= Form::multiselectarray('search_category_knowledgemanagement_list', $categoriesKnowledgeArr, $searchCategoryKnowledgemanagementList, 0, 0, 'minwidth300'); + $moreforfilter .= ' '; + $moreforfilter .= '
    '; +} + $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook if (empty($reshook)) { @@ -547,6 +607,7 @@ while ($i < ($limit ? min($num, $limit) : $num)) { // Show here line of result print '
    '.$objp->tva_intra.''.dol_escape_htmltag($objp->tva_intra).''; print $accountingaccountstatic->getNomUrl(0, 1, 1, '', 1); diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php index 56f904e79ef..ee591df5413 100644 --- a/htdocs/accountancy/customer/list.php +++ b/htdocs/accountancy/customer/list.php @@ -631,7 +631,7 @@ if ($result) { print $product_static->getNomUrl(1); } if ($product_static->label) { - print '
    '.$product_static->label.''; + print '
    '.dol_escape_htmltag($product_static->label).''; } print '
    '.dol_escape_htmltag($objp->tva_intra).''.dol_escape_htmltag($objp->tva_intra).''; diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php index b7d0a0423f3..ff52fd77bd6 100644 --- a/htdocs/accountancy/supplier/lines.php +++ b/htdocs/accountancy/supplier/lines.php @@ -521,7 +521,7 @@ if ($result) { } print ''.$objp->tva_intra.''.dol_escape_htmltag($objp->tva_intra).''.dol_escape_htmltag($objp->tva_intra).''; From ff17fe5ae73ca79c641fe2988c919bb68e4e2744 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 13 Feb 2022 18:03:29 +0100 Subject: [PATCH 119/225] Fix reponsive --- htdocs/accountancy/customer/lines.php | 2 +- htdocs/accountancy/customer/list.php | 2 +- htdocs/accountancy/supplier/lines.php | 2 +- htdocs/accountancy/supplier/list.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/accountancy/customer/lines.php b/htdocs/accountancy/customer/lines.php index 92997b7a0e6..931b5e6420c 100644 --- a/htdocs/accountancy/customer/lines.php +++ b/htdocs/accountancy/customer/lines.php @@ -516,7 +516,7 @@ if ($result) { } print ''.dol_escape_htmltag($objp->tva_intra).''.dol_escape_htmltag($objp->tva_intra).''; print $accountingaccountstatic->getNomUrl(0, 1, 1, '', 1); diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php index ee591df5413..80b7bdf2217 100644 --- a/htdocs/accountancy/customer/list.php +++ b/htdocs/accountancy/customer/list.php @@ -665,7 +665,7 @@ if ($result) { print ''.dol_escape_htmltag($objp->tva_intra).''.dol_escape_htmltag($objp->tva_intra).''; diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php index ff52fd77bd6..9f769ae13b4 100644 --- a/htdocs/accountancy/supplier/lines.php +++ b/htdocs/accountancy/supplier/lines.php @@ -521,7 +521,7 @@ if ($result) { } print ''.dol_escape_htmltag($objp->tva_intra).''; print $accountingaccountstatic->getNomUrl(0, 1, 1, '', 1); diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php index 9faac9ee1c7..24d0ed08a0a 100644 --- a/htdocs/accountancy/supplier/list.php +++ b/htdocs/accountancy/supplier/list.php @@ -672,7 +672,7 @@ if ($result) { print ''.dol_escape_htmltag($objp->tva_intra).''.dol_escape_htmltag($objp->tva_intra).''; From 05bd37a9216688dc2d09830d00b006a83879a897 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 11 Feb 2022 15:30:45 +0100 Subject: [PATCH 120/225] Fix menu "New" when using paranoiac MAIN_SECURITY_CSRF_WITH_TOKEN = 3 --- htdocs/barcode/printsheet.php | 10 +++++----- htdocs/main.inc.php | 4 +++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/htdocs/barcode/printsheet.php b/htdocs/barcode/printsheet.php index 5128cd56164..8663d50e66a 100644 --- a/htdocs/barcode/printsheet.php +++ b/htdocs/barcode/printsheet.php @@ -374,24 +374,24 @@ jQuery(document).ready(function() { '; // Checkbox to select from free text -print ' '.$langs->trans("FillBarCodeTypeAndValueManually").'   '; +print ''; print '
    '; if (!empty($user->rights->produit->lire) || !empty($user->rights->service->lire)) { - print ' '.$langs->trans("FillBarCodeTypeAndValueFromProduct").'   '; + print ''; print '
    '; print '
    '; $form->select_produits(GETPOST('productid', 'int'), 'productid', '', '', 0, -1, 2, '', 0, array(), 0, '1', 0, 'minwidth400imp', 1); - print '   '; + print '   '; print '
    '; } if (!empty($user->rights->societe->lire)) { - print ' '.$langs->trans("FillBarCodeTypeAndValueFromThirdParty").'   '; + print ''; print '
    '; print '
    '; print $form->select_company(GETPOST('socid', 'int'), 'socid', '', 'SelectThirdParty', 0, 0, array(), 0, 'minwidth300'); - print '   '; + print '   '; print '
    '; } diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index d3d18a3e1c1..287185515e2 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -475,7 +475,9 @@ if ((!defined('NOCSRFCHECK') && empty($dolibarr_nocsrfcheck) && getDolGlobalInt( $sensitiveget = false; if ((GETPOSTISSET('massaction') || GETPOST('action', 'aZ09')) && getDolGlobalInt('MAIN_SECURITY_CSRF_WITH_TOKEN') >= 3) { // All GET actions and mass actions are processed as sensitive. - $sensitiveget = true; + if (GETPOSTISSET('massaction') || !in_array(GETPOST('action', 'aZ09'), array('create', 'file_manager'))) { // We exclude the case action='create' and action='file_manager' that are legitimate + $sensitiveget = true; + } } elseif (getDolGlobalInt('MAIN_SECURITY_CSRF_WITH_TOKEN') >= 2) { // Few GET actions coded with a &token into url are processed as sensitive. $arrayofactiontoforcetokencheck = array( From 562c3cf9585bae4489730d9c753caad607c4c3bc Mon Sep 17 00:00:00 2001 From: Adrien Raze Date: Mon, 14 Feb 2022 14:15:38 +0100 Subject: [PATCH 121/225] FIX : There's no field "ref" in llx_facture_fourn_rec table --- htdocs/install/mysql/tables/llx_facture_fourn_rec.key.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/tables/llx_facture_fourn_rec.key.sql b/htdocs/install/mysql/tables/llx_facture_fourn_rec.key.sql index b3065fdb5d6..b82e75d85d6 100644 --- a/htdocs/install/mysql/tables/llx_facture_fourn_rec.key.sql +++ b/htdocs/install/mysql/tables/llx_facture_fourn_rec.key.sql @@ -16,7 +16,7 @@ -- ============================================================================ -ALTER TABLE llx_facture_fourn_rec ADD UNIQUE INDEX uk_facture_fourn_rec_ref (ref, entity); +ALTER TABLE llx_facture_fourn_rec ADD UNIQUE INDEX uk_facture_fourn_rec_ref (titre, entity); ALTER TABLE llx_facture_fourn_rec ADD UNIQUE INDEX uk_facture_fourn_rec_ref_supplier (ref_supplier, fk_soc, entity); ALTER TABLE llx_facture_fourn_rec ADD INDEX idx_facture_fourn_rec_date_lim_reglement (date_lim_reglement); From 3305965c854cda61e9742e9b5ede6b7002c6d4d9 Mon Sep 17 00:00:00 2001 From: Adrien Raze Date: Mon, 14 Feb 2022 15:04:12 +0100 Subject: [PATCH 122/225] FIX : Error with selectForForms function --- htdocs/core/class/html.form.class.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 09225f97158..b29093d7176 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -7379,10 +7379,7 @@ class Form $objecttmp = null; - $InfoFieldList = explode(":", $objectdesc, 4); - $vartmp = $InfoFieldList[3]; - $InfoFieldList[4] = preg_replace('/^.*:(\w*)$/', '\1', $vartmp); // take the sort field - $InfoFieldList[3] = preg_replace('/:\w*$/', '', $vartmp); // take the filter field + $InfoFieldList = explode(":", $objectdesc); $classname = $InfoFieldList[0]; $classpath = $InfoFieldList[1]; From 3ebdb891339540d496498fb33a5d8c084df1d656 Mon Sep 17 00:00:00 2001 From: atm-greg Date: Mon, 14 Feb 2022 15:11:26 +0100 Subject: [PATCH 123/225] fix pdf_mucadet --- .../doc/pdf_muscadet.modules.php | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/htdocs/core/modules/supplier_order/doc/pdf_muscadet.modules.php b/htdocs/core/modules/supplier_order/doc/pdf_muscadet.modules.php index 4a27b58f8ae..45df637fc51 100644 --- a/htdocs/core/modules/supplier_order/doc/pdf_muscadet.modules.php +++ b/htdocs/core/modules/supplier_order/doc/pdf_muscadet.modules.php @@ -1151,26 +1151,28 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $pdf->SetXY($this->marge_gauche, $posy); // Logo - $logo = $conf->mycompany->dir_output.'/logos/'.$this->emetteur->logo; - if ($this->emetteur->logo) - { - if (is_readable($logo)) - { - $height = pdf_getHeightForLogo($logo); - $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) + if (empty($conf->global->PDF_DISABLE_MYCOMPANY_LOGO)) { + if ($this->emetteur->logo) { + $logodir = $conf->mycompany->dir_output; + if (!empty($conf->mycompany->multidir_output[$object->entity])) $logodir = $conf->mycompany->multidir_output[$object->entity]; + if (empty($conf->global->MAIN_PDF_USE_LARGE_LOGO)) { + $logo = $logodir . '/logos/thumbs/' . $this->emetteur->logo_small; + } else { + $logo = $logodir . '/logos/' . $this->emetteur->logo; + } + if (is_readable($logo)) { + $height = pdf_getHeightForLogo($logo); + $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) + } else { + $pdf->SetTextColor(200, 0, 0); + $pdf->SetFont('', 'B', $default_font_size - 2); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToModuleSetup"), 0, 'L'); + } + } else { + $text = $this->emetteur->name; + $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } - else - { - $pdf->SetTextColor(200, 0, 0); - $pdf->SetFont('', 'B', $default_font_size - 2); - $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); - $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToModuleSetup"), 0, 'L'); - } - } - else - { - $text = $this->emetteur->name; - $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } $pdf->SetFont('', 'B', $default_font_size + 3); From 96c7a9f77c912d493df09d0dd4f52070e4240521 Mon Sep 17 00:00:00 2001 From: atm-greg Date: Mon, 14 Feb 2022 15:16:36 +0100 Subject: [PATCH 124/225] fix pdf_cornas --- .../supplier_order/doc/pdf_cornas.modules.php | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php b/htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php index 657160a9a1b..b63708dfa40 100644 --- a/htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php +++ b/htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php @@ -1235,26 +1235,30 @@ class pdf_cornas extends ModelePDFSuppliersOrders $pdf->SetXY($this->marge_gauche, $posy); // Logo - $logo = $conf->mycompany->dir_output.'/logos/'.$this->emetteur->logo; - if ($this->emetteur->logo) - { - if (is_readable($logo)) - { - $height = pdf_getHeightForLogo($logo); - $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) + if (empty($conf->global->PDF_DISABLE_MYCOMPANY_LOGO)) { + if ($this->emetteur->logo) { + $logodir = $conf->mycompany->dir_output; + if (!empty($conf->mycompany->multidir_output[$object->entity])) $logodir = $conf->mycompany->multidir_output[$object->entity]; + if (empty($conf->global->MAIN_PDF_USE_LARGE_LOGO)) + { + $logo = $logodir.'/logos/thumbs/'.$this->emetteur->logo_small; + } + else { + $logo = $logodir.'/logos/'.$this->emetteur->logo; + } + if (is_readable($logo)) { + $height = pdf_getHeightForLogo($logo); + $pdf->Image($logo, $this->marge_gauche, $posy, 0, $height); // width=0 (auto) + } else { + $pdf->SetTextColor(200, 0, 0); + $pdf->SetFont('', 'B', $default_font_size - 2); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); + $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToModuleSetup"), 0, 'L'); + } + } else { + $text = $this->emetteur->name; + $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } - else - { - $pdf->SetTextColor(200, 0, 0); - $pdf->SetFont('', 'B', $default_font_size - 2); - $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); - $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToModuleSetup"), 0, 'L'); - } - } - else - { - $text = $this->emetteur->name; - $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); } $pdf->SetFont('', 'B', $default_font_size + 3); From 384e1d515b5b15323a280b85002f86c5c6e16ac7 Mon Sep 17 00:00:00 2001 From: lvessiller Date: Mon, 14 Feb 2022 18:07:18 +0100 Subject: [PATCH 125/225] NEW automatically set totally received status in reception --- htdocs/reception/class/reception.class.php | 97 +++++++++++++++++++++- 1 file changed, 93 insertions(+), 4 deletions(-) diff --git a/htdocs/reception/class/reception.class.php b/htdocs/reception/class/reception.class.php index 382cc5be9b6..7efcb2360dc 100644 --- a/htdocs/reception/class/reception.class.php +++ b/htdocs/reception/class/reception.class.php @@ -635,11 +635,15 @@ class Reception extends CommonObject } } - // Change status of order to "reception in process" - $ret = $this->setStatut(4, $this->origin_id, 'commande_fournisseur'); - - if (!$ret) { + // Change status of order to "reception in process" or "totally received" + $status = $this->getStatusDispatch(); + if ($status < 0) { $error++; + } else { + $ret = $this->setStatut($status, $this->origin_id, 'commande_fournisseur'); + if (!$ret) { + $error++; + } } if (!$error && !$notrigger) { @@ -707,7 +711,92 @@ class Reception extends CommonObject } } + /** + * Get status from all dispatched lines + * + * @return int <0 if KO, >0 if OK + */ + public function getStatusDispatch() + { + global $conf; + require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; + require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.dispatch.class.php'; + + $status = CommandeFournisseur::STATUS_RECEIVED_PARTIALLY; + + if (!empty($this->origin) && $this->origin_id > 0 && ($this->origin == 'order_supplier' || $this->origin == 'commandeFournisseur')) { + if (empty($this->commandeFournisseur)) { + $this->commandeFournisseur = null; + $this->fetch_origin(); + if (empty($this->commandeFournisseur->lines)) { + $res = $this->commandeFournisseur->fetch_lines(); + if ($res < 0) return $res; + } + } + + $qty_received = array(); + $qty_wished = array(); + + $supplierorderdispatch = new CommandeFournisseurDispatch($this->db); + $filter = array('t.fk_commande'=>$this->origin_id); + if (!empty($conf->global->SUPPLIER_ORDER_USE_DISPATCH_STATUS)) { + $filter['t.status'] = 1; // Restrict to lines with status validated + } + + $ret = $supplierorderdispatch->fetchAll('', '', 0, 0, $filter); + if ($ret < 0) { + $this->error = $supplierorderdispatch->error; + $this->errors = $supplierorderdispatch->errors; + return $ret; + } else { + // build array with quantity received by product in all supplier orders (origin) + foreach ($supplierorderdispatch->lines as $dispatch_line) { + $qty_received[$dispatch_line->fk_product] += $dispatch_line->qty; + } + + // qty wished in order supplier (origin) + foreach ($this->commandeFournisseur->lines as $origin_line) { + // exclude lines not qualified for reception + if (empty($conf->global->STOCK_SUPPORTS_SERVICES) && $origin_line->product_type > 0) { + continue; + } + + $qty_wished[$origin_line->fk_product] += $origin_line->qty; + } + + // compare array + $diff_array = array_diff_assoc($qty_received, $qty_wished); // Warning: $diff_array is done only on common keys. + $keys_in_wished_not_in_received = array_diff(array_keys($qty_wished), array_keys($qty_received)); + $keys_in_received_not_in_wished = array_diff(array_keys($qty_received), array_keys($qty_wished)); + + if (count($diff_array) == 0 && count($keys_in_wished_not_in_received) == 0 && count($keys_in_received_not_in_wished) == 0) { // no diff => mean everything is received + $status = CommandeFournisseur::STATUS_RECEIVED_COMPLETELY; + } elseif (!empty($conf->global->SUPPLIER_ORDER_MORE_THAN_WISHED)) { + // set totally received if more products received than ordered + $close = 0; + + if (count($diff_array) > 0) { + // there are some difference between the two arrays + // scan the array of results + foreach ($diff_array as $key => $value) { + // if the quantity delivered is greater or equal to ordered quantity + if ($qty_received[$key] >= $qty_wished[$key]) { + $close++; + } + } + } + + if ($close == count($diff_array)) { + // all the products are received equal or more than the ordered quantity + $status = CommandeFournisseur::STATUS_RECEIVED_COMPLETELY; + } + } + } + } + + return $status; + } /** * Add an reception line. From 81c2631b00c2aeef1e1318917900f80a7ba33734 Mon Sep 17 00:00:00 2001 From: javieralapps4up Date: Mon, 14 Feb 2022 20:06:42 +0100 Subject: [PATCH 126/225] FIX Andorra needs Code Banque --- htdocs/compta/bank/class/account.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index a852e351f22..fe7c32d09f8 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -1503,10 +1503,10 @@ class Account extends CommonObject { $country_code = $this->getCountryCode(); - if (in_array($country_code, array('AD', 'FR', 'ES', 'GA', 'IT', 'NC'))) { + if (in_array($country_code, array('FR', 'ES', 'GA', 'IT', 'NC'))) { return 1; // France, Spain, Gabon, ... - Not valid for CH } - if (in_array($country_code, array('AU', 'BE', 'CA', 'DE', 'DK', 'GR', 'GB', 'ID', 'IE', 'IR', 'KR', 'NL', 'NZ', 'UK', 'US'))) { + if (in_array($country_code, array('AD', 'AU', 'BE', 'CA', 'DE', 'DK', 'GR', 'GB', 'ID', 'IE', 'IR', 'KR', 'NL', 'NZ', 'UK', 'US'))) { return 2; // Australia, England... } return 0; From b6879d795325848876a61c8c8975ba142b9af77a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 14 Feb 2022 22:38:45 +0100 Subject: [PATCH 127/225] css --- htdocs/accountancy/index.php | 2 +- htdocs/accountancy/journal/bankjournal.php | 2 +- .../accountancy/journal/expensereportsjournal.php | 2 +- htdocs/accountancy/journal/purchasesjournal.php | 2 +- htdocs/accountancy/journal/sellsjournal.php | 2 +- htdocs/langs/en_US/accountancy.lang | 14 +++++++------- htdocs/theme/eldy/global.inc.php | 3 +++ htdocs/theme/md/style.css.php | 3 +++ 8 files changed, 18 insertions(+), 12 deletions(-) diff --git a/htdocs/accountancy/index.php b/htdocs/accountancy/index.php index 02c4d210496..925ab8c9ae3 100644 --- a/htdocs/accountancy/index.php +++ b/htdocs/accountancy/index.php @@ -171,7 +171,7 @@ if (!empty($conf->global->INVOICE_USE_SITUATION) && $conf->global->INVOICE_USE_S print $s; print "
    \n"; } - if (!empty($conf->expensereport->enabled)) { // TODO Move this in the default account page because this is only one accounting account per purpose, not several. + if (!empty($conf->expensereport->enabled)) { $step++; $s = img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescExpenseReport", $step, '{s}'); $s = str_replace('{s}', ''.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("MenuExpenseReportAccounts").'', $s); diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index 49d379802fb..2530454d056 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -1057,7 +1057,7 @@ if (empty($action) || $action == 'view') { } - print '
    '; + print '
    '; if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL) && $in_bookkeeping == 'notyet') { print ''; diff --git a/htdocs/accountancy/journal/expensereportsjournal.php b/htdocs/accountancy/journal/expensereportsjournal.php index 96ab150dd24..c80586fa3d0 100644 --- a/htdocs/accountancy/journal/expensereportsjournal.php +++ b/htdocs/accountancy/journal/expensereportsjournal.php @@ -521,7 +521,7 @@ if (empty($action) || $action == 'view') { print $desc; print '
    '; } - print '
    '; + print '
    '; if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL) && $in_bookkeeping == 'notyet') { print ''; diff --git a/htdocs/accountancy/journal/purchasesjournal.php b/htdocs/accountancy/journal/purchasesjournal.php index 34ba4ae6337..8b1ac0d3de3 100644 --- a/htdocs/accountancy/journal/purchasesjournal.php +++ b/htdocs/accountancy/journal/purchasesjournal.php @@ -774,7 +774,7 @@ if (empty($action) || $action == 'view') { print $desc; print '
    '; } - print '
    '; + print '
    '; if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL) && $in_bookkeeping == 'notyet') { print ''; } diff --git a/htdocs/accountancy/journal/sellsjournal.php b/htdocs/accountancy/journal/sellsjournal.php index ad1b7501a91..884c56ee6f2 100644 --- a/htdocs/accountancy/journal/sellsjournal.php +++ b/htdocs/accountancy/journal/sellsjournal.php @@ -716,7 +716,7 @@ if (empty($action) || $action == 'view') { print $desc; print '
    '; } - print '
    '; + print '
    '; if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL) && $in_bookkeeping == 'notyet') { print ''; } diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index 8bc4b54a090..893f448bbf8 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -62,24 +62,24 @@ MainAccountForSubscriptionPaymentNotDefined=Main accounting account for subscrip AccountancyArea=Accounting area AccountancyAreaDescIntro=Usage of the accountancy module is done in several step: AccountancyAreaDescActionOnce=The following actions are usually executed one time only, or once per year... -AccountancyAreaDescActionOnceBis=Next steps should be done to save you time in future by suggesting you the correct default accounting account when making the journalization (writing record in Journals and General ledger) +AccountancyAreaDescActionOnceBis=Next steps should be done to save you time in future by suggesting you automaticaly the correct default accounting account when transferring data in accounting AccountancyAreaDescActionFreq=The following actions are usually executed every month, week or day for very large companies... -AccountancyAreaDescJournalSetup=STEP %s: Create or check content of your journal list from menu %s +AccountancyAreaDescJournalSetup=STEP %s: Check content of your journal list from menu %s AccountancyAreaDescChartModel=STEP %s: Check that a model of chart of account exists or create one from menu %s AccountancyAreaDescChart=STEP %s: Select and|or complete your chart of account from menu %s AccountancyAreaDescVat=STEP %s: Define accounting accounts for each VAT Rates. For this, use the menu entry %s. AccountancyAreaDescDefault=STEP %s: Define default accounting accounts. For this, use the menu entry %s. -AccountancyAreaDescExpenseReport=STEP %s: Define default accounting accounts for each type of expense report. For this, use the menu entry %s. +AccountancyAreaDescExpenseReport=STEP %s: Define default accounting accounts for each type of Expense report. For this, use the menu entry %s. AccountancyAreaDescSal=STEP %s: Define default accounting accounts for payment of salaries. For this, use the menu entry %s. -AccountancyAreaDescContrib=STEP %s: Define default accounting accounts for special expenses (miscellaneous taxes). For this, use the menu entry %s. +AccountancyAreaDescContrib=STEP %s: Define default accounting accounts for Taxes (special expenses). For this, use the menu entry %s. AccountancyAreaDescDonation=STEP %s: Define default accounting accounts for donation. For this, use the menu entry %s. AccountancyAreaDescSubscription=STEP %s: Define default accounting accounts for member subscription. For this, use the menu entry %s. AccountancyAreaDescMisc=STEP %s: Define mandatory default account and default accounting accounts for miscellaneous transactions. For this, use the menu entry %s. AccountancyAreaDescLoan=STEP %s: Define default accounting accounts for loans. For this, use the menu entry %s. AccountancyAreaDescBank=STEP %s: Define accounting accounts and journal code for each bank and financial accounts. For this, use the menu entry %s. -AccountancyAreaDescProd=STEP %s: Define accounting accounts on your products/services. For this, use the menu entry %s. +AccountancyAreaDescProd=STEP %s: Define accounting accounts on your Products/Services. For this, use the menu entry %s. AccountancyAreaDescBind=STEP %s: Check the binding between existing %s lines and accounting account is done, so application will be able to journalize transactions in Ledger in one click. Complete missing bindings. For this, use the menu entry %s. AccountancyAreaDescWriteRecords=STEP %s: Write transactions into the Ledger. For this, go into menu %s, and click into button %s. @@ -112,7 +112,7 @@ MenuAccountancyClosure=Closure MenuAccountancyValidationMovements=Validate movements ProductsBinding=Products accounts TransferInAccounting=Transfer in accounting -RegistrationInAccounting=Registration in accounting +RegistrationInAccounting=Recording in accounting Binding=Binding to accounts CustomersVentilation=Customer invoice binding SuppliersVentilation=Vendor invoice binding @@ -120,7 +120,7 @@ ExpenseReportsVentilation=Expense report binding CreateMvts=Create new transaction UpdateMvts=Modification of a transaction ValidTransaction=Validate transaction -WriteBookKeeping=Register transactions in accounting +WriteBookKeeping=Record transactions in accounting Bookkeeping=Ledger BookkeepingSubAccount=Subledger AccountBalance=Account balance diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index b7d12216c6a..7f4a12c888d 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -724,6 +724,9 @@ textarea.centpercent { text-align: center; margin: 0px auto; } +.centerimp { + text-align: center !important; +} .alignstart { text-align: start; } diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 37864c1562c..fa7676e8573 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -874,6 +874,9 @@ textarea.centpercent { text-align: center; margin: 0px auto; } +.centerimp { + text-align: center !important; +} .alignstart { text-align: start; } From 54bf8ed1edd1c66f0eba7f5a72ce92fa522ebb04 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 14 Feb 2022 22:53:24 +0100 Subject: [PATCH 128/225] Fix link --- htdocs/accountancy/expensereport/index.php | 20 +++++++++++++++++++- htdocs/langs/en_US/accountancy.lang | 2 +- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/htdocs/accountancy/expensereport/index.php b/htdocs/accountancy/expensereport/index.php index 37abd56a21d..93419ce3cc4 100644 --- a/htdocs/accountancy/expensereport/index.php +++ b/htdocs/accountancy/expensereport/index.php @@ -199,7 +199,25 @@ for ($i = 1; $i <= 12; $i++) { if ($j > 12) { $j -= 12; } - print '
    '.$langs->trans('MonthShort'.str_pad($j, 2, '0', STR_PAD_LEFT)).''; + if (!empty($tmp['mday'])) { + $param = 'search_date_startday=1&search_date_startmonth='.$cursormonth.'&search_date_startyear='.$cursoryear; + $param .= '&search_date_endday='.$tmp['mday'].'&search_date_endmonth='.$tmp['mon'].'&search_date_endyear='.$tmp['year']; + $param .= '&search_month='.$tmp['mon'].'&search_year='.$tmp['year']; + print ''; + } + print $langs->trans('MonthShort'.str_pad($j, 2, '0', STR_PAD_LEFT)); + if (!empty($tmp['mday'])) { + print ''; + } + print ''.$langs->trans("Total").'
    '.$form->textwithpicto($langs->trans("TotalCost"), $langs->trans("BOMTotalCost")).''.price($object->total_cost).'
    '.$langs->trans("UnitCost").''.price($object->unit_cost).'
    '.$sub_bom_line->efficiency.''.price($sub_bom_product->cost_price * $line->qty).''.price($sub_bom->total_cost * $sub_bom_line->qty * $line->qty).''.price($sub_bom_product->cost_price * $sub_bom_line->qty * $line->qty).''.price($sub_bom_product->pmp * $line->qty).''.price($sub_bom_product->pmp * $sub_bom_line->qty * $line->qty).''.price($line_cost).'
    '.$form->textwithpicto($langs->trans("TotalCost"), $langs->trans("BOMTotalCost")).''.price($object->total_cost).'
    '.$langs->trans("UnitCost").''.price($object->unit_cost).'
    '.$sub_bom_line->efficiency.''.price($sub_bom->total_cost * $sub_bom_line->qty * $line->qty).''.price($sub_bom->total_cost * $sub_bom_line->qty * $line->qty).''.price($sub_bom_product->cost_price * $sub_bom_line->qty * $line->qty).'
    '; print ''; From 21ebedc755df6fe81534bbde73d6d7ef49911e6c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 17 Feb 2022 20:10:09 +0100 Subject: [PATCH 199/225] Fix trans --- htdocs/langs/en_US/ticket.lang | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/langs/en_US/ticket.lang b/htdocs/langs/en_US/ticket.lang index 222efad8ba2..38b199f7260 100644 --- a/htdocs/langs/en_US/ticket.lang +++ b/htdocs/langs/en_US/ticket.lang @@ -136,8 +136,8 @@ TicketsPublicNotificationNewMessage=Send email(s) when a new message/comment is TicketsPublicNotificationNewMessageHelp=Send email(s) when a new message is added from public interface (to assigned user or the notifications email to (update) and/or the notifications email to) TicketPublicNotificationNewMessageDefaultEmail=Notifications email to (update) TicketPublicNotificationNewMessageDefaultEmailHelp=Send an email to this address for each new message notifications if the ticket doesn't have a user assigned to it or if the user doesn't have any known email. -TicketsAutoReadTicket=Automatically mark the ticket as read -TicketsAutoReadTicketHelp=Automatically mark the ticket as read when created from backoffice. +TicketsAutoReadTicket=Automatically mark the ticket as read (when created from backoffice) +TicketsAutoReadTicketHelp=Automatically mark the ticket as read when created from backoffice. When ticket is create from the public interface, ticket remains with the status "Not Read". # # Index & list page From 4fb651817ed2d8429f5c4b9711de253b4c6d40c9 Mon Sep 17 00:00:00 2001 From: UT from dolibit <45215329+dolibit-ut@users.noreply.github.com> Date: Thu, 17 Feb 2022 20:27:19 +0100 Subject: [PATCH 200/225] Update README http://pad.asp-software.org/padgen.php --- build/pad/README | 1 + 1 file changed, 1 insertion(+) diff --git a/build/pad/README b/build/pad/README index 3cbc171686c..241d27d01c2 100644 --- a/build/pad/README +++ b/build/pad/README @@ -1,6 +1,7 @@ README (English) ################################################## Building PAD files +http://pad.asp-software.org/padgen.php ################################################## This directory contains files and docs used to build From 3ad95d55a5beb4718afa5d0471f31c64e773fa8d Mon Sep 17 00:00:00 2001 From: UT from dolibit <45215329+dolibit-ut@users.noreply.github.com> Date: Thu, 17 Feb 2022 20:36:07 +0100 Subject: [PATCH 201/225] Update dolibarr.pl return ( "14.0.5", "13.0.5", "12.0.5", "11.0.5", "10.0.7", "9.0.4", "8.0.6", "7.0.5" ); $ver >= 14.0 ? "dolibarr\\-(12\\.0\\.[0-9\\.]+)\\.tgz" : $ver >= 13.0 ? "dolibarr\\-(12\\.0\\.[0-9\\.]+)\\.tgz" : --- build/perl/virtualmin/dolibarr.pl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build/perl/virtualmin/dolibarr.pl b/build/perl/virtualmin/dolibarr.pl index 8b6a9888db0..b5bacf59356 100644 --- a/build/perl/virtualmin/dolibarr.pl +++ b/build/perl/virtualmin/dolibarr.pl @@ -30,7 +30,7 @@ return "Regis Houssin"; # script_dolibarr_versions() sub script_dolibarr_versions { -return ( "12.0.3", "11.0.5", "10.0.7", "9.0.4", "8.0.6", "7.0.5" ); +return ( "14.0.5", "13.0.5", "12.0.5", "11.0.5", "10.0.7", "9.0.4", "8.0.6", "7.0.5" ); } sub script_dolibarr_release @@ -400,6 +400,8 @@ sub script_dolibarr_check_latest { local ($ver) = @_; local @vers = &osdn_package_versions("dolibarr", + $ver >= 14.0 ? "dolibarr\\-(12\\.0\\.[0-9\\.]+)\\.tgz" : + $ver >= 13.0 ? "dolibarr\\-(12\\.0\\.[0-9\\.]+)\\.tgz" : $ver >= 12.0 ? "dolibarr\\-(12\\.0\\.[0-9\\.]+)\\.tgz" : $ver >= 11.0 ? "dolibarr\\-(11\\.0\\.[0-9\\.]+)\\.tgz" : $ver >= 10.0 ? "dolibarr\\-(10\\.0\\.[0-9\\.]+)\\.tgz" : From b013c9a15f7d6e2266fc41d2c542b421e2830aba Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 17 Feb 2022 20:37:39 +0100 Subject: [PATCH 202/225] Fix duplicate div --- htdocs/core/lib/functions.lib.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 9fed70a1fe1..7be3f5e3351 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2011,7 +2011,6 @@ function dol_banner_tab($object, $paramid, $morehtml = '', $shownav = 1, $fieldi } if (empty($phototoshow)) { // Show No photo link (picto of object) - $morehtmlleft .= '
    '; if ($object->element == 'action') { $width = 80; $cssclass = 'photorefcenter'; @@ -2029,8 +2028,6 @@ function dol_banner_tab($object, $paramid, $morehtml = '', $shownav = 1, $fieldi $morehtmlleft .= '
    '; $morehtmlleft .= $nophoto; $morehtmlleft .= '
    '; - - $morehtmlleft .= '
    '; } } } From 9fd34b264fd20808ed136e11e2b96b8a5e9709e1 Mon Sep 17 00:00:00 2001 From: UT from dolibit <45215329+dolibit-ut@users.noreply.github.com> Date: Thu, 17 Feb 2022 21:05:23 +0100 Subject: [PATCH 203/225] Update README https://doxygen.dolibarr.org/ --- dev/examples/code/README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/examples/code/README b/dev/examples/code/README index b7c31558de5..bf3dd3f4969 100644 --- a/dev/examples/code/README +++ b/dev/examples/code/README @@ -5,4 +5,4 @@ This directory contains samples of code to use Dolibarr business classes to buil external interfaces that need to read/update data from/into Dolibarr. You can also have a look at the Dolibarr doxygen doc that describes all files and classes: -http://www.dolibarr.org/html_doxygen/index.html +https://doxygen.dolibarr.org/ From b01fbba039311d15eeca3e961bf0d5bbfc724a7c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 17 Feb 2022 23:41:31 +0100 Subject: [PATCH 204/225] Fix packages --- build/rpm/dolibarr_fedora.spec | 1 - build/rpm/dolibarr_generic.spec | 1 - build/rpm/dolibarr_mandriva.spec | 1 - build/rpm/dolibarr_opensuse.spec | 1 - 4 files changed, 4 deletions(-) diff --git a/build/rpm/dolibarr_fedora.spec b/build/rpm/dolibarr_fedora.spec index dc23cff5486..27130244d00 100755 --- a/build/rpm/dolibarr_fedora.spec +++ b/build/rpm/dolibarr_fedora.spec @@ -166,7 +166,6 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/blockedlog %_datadir/dolibarr/htdocs/bookmarks %_datadir/dolibarr/htdocs/bom -%_datadir/dolibarr/htdocs/cashdesk %_datadir/dolibarr/htdocs/categories %_datadir/dolibarr/htdocs/collab %_datadir/dolibarr/htdocs/comm diff --git a/build/rpm/dolibarr_generic.spec b/build/rpm/dolibarr_generic.spec index a446a7bd5d6..aeddd5526f8 100755 --- a/build/rpm/dolibarr_generic.spec +++ b/build/rpm/dolibarr_generic.spec @@ -247,7 +247,6 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/blockedlog %_datadir/dolibarr/htdocs/bookmarks %_datadir/dolibarr/htdocs/bom -%_datadir/dolibarr/htdocs/cashdesk %_datadir/dolibarr/htdocs/categories %_datadir/dolibarr/htdocs/collab %_datadir/dolibarr/htdocs/comm diff --git a/build/rpm/dolibarr_mandriva.spec b/build/rpm/dolibarr_mandriva.spec index 78d90080258..a1e4dffc781 100755 --- a/build/rpm/dolibarr_mandriva.spec +++ b/build/rpm/dolibarr_mandriva.spec @@ -163,7 +163,6 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/blockedlog %_datadir/dolibarr/htdocs/bookmarks %_datadir/dolibarr/htdocs/bom -%_datadir/dolibarr/htdocs/cashdesk %_datadir/dolibarr/htdocs/categories %_datadir/dolibarr/htdocs/collab %_datadir/dolibarr/htdocs/comm diff --git a/build/rpm/dolibarr_opensuse.spec b/build/rpm/dolibarr_opensuse.spec index edae0126653..aed2d76ed29 100755 --- a/build/rpm/dolibarr_opensuse.spec +++ b/build/rpm/dolibarr_opensuse.spec @@ -174,7 +174,6 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/blockedlog %_datadir/dolibarr/htdocs/bookmarks %_datadir/dolibarr/htdocs/bom -%_datadir/dolibarr/htdocs/cashdesk %_datadir/dolibarr/htdocs/categories %_datadir/dolibarr/htdocs/collab %_datadir/dolibarr/htdocs/comm From c32cc660a364617c2cac6412e270d70d80952530 Mon Sep 17 00:00:00 2001 From: Henry Date: Fri, 18 Feb 2022 08:16:56 +0800 Subject: [PATCH 205/225] Update list.php --- htdocs/fourn/commande/list.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index eb13ead4fbd..72fc7a7439c 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -1274,9 +1274,7 @@ if ($resql) { $projectstatic = new Project($db); $i = 0; - $totalarray = array(); - $totalarray['nbfield'] = 0; - $totalarray['val'] = array(); + $totalarray = array('nbfield' => 0, 'val' => array(), 'pos' => array()); $totalarray['val']['cf.total_ht'] = 0; $totalarray['val']['cf.total_ttc'] = 0; while ($i < min($num, $limit)) { From 7a457478d5fe213596bdd784d0c936a785abd82b Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Fri, 18 Feb 2022 08:23:12 +0100 Subject: [PATCH 206/225] Fix : add missing formobjectoptions hook on 3 cards --- htdocs/compta/prelevement/card.php | 9 ++++++++- htdocs/loan/card.php | 5 +++++ htdocs/opensurvey/card.php | 8 ++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/prelevement/card.php b/htdocs/compta/prelevement/card.php index d4311abe112..a076299b4cd 100644 --- a/htdocs/compta/prelevement/card.php +++ b/htdocs/compta/prelevement/card.php @@ -238,7 +238,14 @@ if ($id > 0 || $ref) { $modulepart = 'paymentbybanktransfer'; } print ''.$relativepath.''; - print '
    '; + print ''; + + // Other attributes + $parameters = array(); + $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + + print ''; print '
    '; diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index 88701e35166..4bc539c1ff0 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -618,6 +618,11 @@ if ($id > 0) { } print ''; + // Other attributes + $parameters = array(); + $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print ''; print '
    '; diff --git a/htdocs/opensurvey/card.php b/htdocs/opensurvey/card.php index 773571b7b1c..3f822679350 100644 --- a/htdocs/opensurvey/card.php +++ b/htdocs/opensurvey/card.php @@ -54,6 +54,9 @@ if ($result <= 0) { exit; } +// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context +$hookmanager->initHooks(array('surveycard', 'globalcard')); + $expiredate = dol_mktime(0, 0, 0, GETPOST('expiremonth'), GETPOST('expireday'), GETPOST('expireyear')); @@ -338,6 +341,11 @@ if ($action != 'edit') { print ''; +// Other attributes +$parameters = array(); +$reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook +print $hookmanager->resPrint; + print ''; print '
    '; From 3f109aa911e50c9f2f0257fc02131ed3d773863a Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Fri, 18 Feb 2022 09:24:12 +0100 Subject: [PATCH 207/225] FIX Accountancy - On manual transaction with multicompany - Function transformTransaction can validate & delete transaction of an other entity --- .../accountancy/class/bookkeeping.class.php | 44 ++++++++++--------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index 43dcce8c646..5635df3c8e7 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -331,7 +331,7 @@ class BookKeeping extends CommonObject if (empty($this->piece_num)) { $sqlnum = "SELECT MAX(piece_num)+1 as maxpiecenum"; $sqlnum .= " FROM ".MAIN_DB_PREFIX.$this->table_element; - $sqlnum .= " WHERE entity = ".$conf->entity; // Do not use getEntity for accounting features + $sqlnum .= " WHERE entity = " . ((int) $conf->entity); // Do not use getEntity for accounting features $resqlnum = $this->db->query($sqlnum); if ($resqlnum) { @@ -736,7 +736,7 @@ class BookKeeping extends CommonObject $sql .= " t.date_validated as date_validation"; $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.$mode.' as t'; $sql .= ' WHERE 1 = 1'; - $sql .= " AND entity IN (".getEntity('accountancy').")"; + $sql .= " AND entity = " . ((int) $conf->entity); // Do not use getEntity for accounting features if (null !== $ref) { $sql .= " AND t.ref = '".$this->db->escape($ref)."'"; } else { @@ -881,7 +881,7 @@ class BookKeeping extends CommonObject } $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t'; $sql .= ' WHERE 1 = 1'; - $sql .= " AND entity IN (".getEntity('accountancy').")"; + $sql .= " AND entity = " . ((int) $conf->entity); // Do not use getEntity for accounting features if (count($sqlwhere) > 0) { $sql .= ' AND '.implode(' '.$filtermode.' ', $sqlwhere); } @@ -1037,7 +1037,7 @@ class BookKeeping extends CommonObject } } } - $sql .= ' WHERE t.entity IN ('.getEntity('accountancy').')'; + $sql .= ' WHERE t.entity = ' . ((int) $conf->entity); // Do not use getEntity for accounting features if ($showAlreadyExportMovements == 0) { $sql .= " AND t.date_export IS NULL"; } @@ -1157,7 +1157,7 @@ class BookKeeping extends CommonObject } } } - $sql .= ' WHERE entity IN ('.getEntity('accountancy').')'; + $sql .= ' WHERE entity = ' . ((int) $conf->entity); // Do not use getEntity for accounting features if (count($sqlwhere) > 0) { $sql .= ' AND '.implode(' '.$filtermode.' ', $sqlwhere); } @@ -1454,7 +1454,7 @@ class BookKeeping extends CommonObject */ public function deleteByYearAndJournal($delyear = 0, $journal = '', $mode = '', $delmonth = 0) { - global $langs; + global $conf, $langs; if (empty($delyear) && empty($journal)) { $this->error = 'ErrorOneFieldRequired'; @@ -1475,7 +1475,7 @@ class BookKeeping extends CommonObject if (!empty($journal)) { $sql .= " AND code_journal = '".$this->db->escape($journal)."'"; } - $sql .= " AND entity IN (".getEntity('accountancy').")"; + $sql .= " AND entity = " . ((int) $conf->entity); // Do not use getEntity for accounting features // Exclusion of validated entries at the time of deletion $sql .= " AND date_validated IS NULL"; @@ -1514,7 +1514,7 @@ class BookKeeping extends CommonObject $sql .= " FROM ".MAIN_DB_PREFIX.$this->table_element; $sql .= " WHERE piece_num = ".(int) $piecenum; $sql .= " AND date_validated IS NULL"; // For security, exclusion of validated entries at the time of deletion - $sql .= " AND entity IN (".getEntity('accountancy').")"; + $sql .= " AND entity = " . ((int) $conf->entity); // Do not use getEntity for accounting features $resql = $this->db->query($sql); @@ -1636,7 +1636,7 @@ class BookKeeping extends CommonObject } $sql .= " FROM ".MAIN_DB_PREFIX.$this->table_element.$mode; $sql .= " WHERE piece_num = ".$piecenum; - $sql .= " AND entity IN (".getEntity('accountancy').")"; + $sql .= " AND entity = " . ((int) $conf->entity); // Do not use getEntity for accounting features dol_syslog(__METHOD__, LOG_DEBUG); $result = $this->db->query($sql); @@ -1674,9 +1674,9 @@ class BookKeeping extends CommonObject global $conf; $sql = "SELECT MAX(piece_num)+1 as max FROM ".MAIN_DB_PREFIX.$this->table_element.$mode; - $sql .= " WHERE entity IN (".getEntity('accountancy').")"; + $sql .= " WHERE entity = " . ((int) $conf->entity); // Do not use getEntity for accounting features - dol_syslog(get_class($this)."getNextNumMvt sql=".$sql, LOG_DEBUG); + dol_syslog(get_class($this)."::getNextNumMvt sql=".$sql, LOG_DEBUG); $result = $this->db->query($sql); if ($result) { @@ -1717,7 +1717,7 @@ class BookKeeping extends CommonObject } $sql .= " FROM ".MAIN_DB_PREFIX.$this->table_element.$mode; $sql .= " WHERE piece_num = ".$piecenum; - $sql .= " AND entity IN (".getEntity('accountancy').")"; + $sql .= " AND entity = " . ((int) $conf->entity); // Do not use getEntity for accounting features dol_syslog(__METHOD__, LOG_DEBUG); $result = $this->db->query($sql); @@ -1780,7 +1780,7 @@ class BookKeeping extends CommonObject $sql .= " montant as amount, sens, fk_user_author, import_key, code_journal, piece_num,"; $sql .= " date_validated as date_validation"; $sql .= " FROM ".MAIN_DB_PREFIX.$this->table_element; - $sql .= " WHERE entity IN (".getEntity('accountancy').")"; + $sql .= " WHERE entity = " . ((int) $conf->entity); // Do not use getEntity for accounting features dol_syslog(get_class($this)."::export_bookkeeping", LOG_DEBUG); @@ -1836,6 +1836,8 @@ class BookKeeping extends CommonObject */ public function transformTransaction($direction = 0, $piece_num = '') { + global $conf; + $error = 0; $this->db->begin(); @@ -1855,14 +1857,14 @@ class BookKeeping extends CommonObject $sql .= ' doc_ref, fk_doc, fk_docdet, entity, thirdparty_code, subledger_account, subledger_label,'; $sql .= ' numero_compte, label_compte, label_operation, debit, credit,'; $sql .= ' montant, sens, fk_user_author, import_key, code_journal, journal_label, '.$next_piecenum.", '".$this->db->idate($now)."'"; - $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num); + $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); $resql = $this->db->query($sql); if (!$resql) { $error++; $this->errors[] = 'Error '.$this->db->lasterror(); dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR); } - $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num); + $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); $resql = $this->db->query($sql); if (!$resql) { $error++; @@ -1870,7 +1872,7 @@ class BookKeeping extends CommonObject dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR); } } elseif ($direction == 1) { - $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num); + $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); $resql = $this->db->query($sql); if (!$resql) { $error++; @@ -1885,14 +1887,14 @@ class BookKeeping extends CommonObject $sql .= ' doc_ref, fk_doc, fk_docdet, thirdparty_code, subledger_account, subledger_label,'; $sql .= ' numero_compte, label_compte, label_operation, debit, credit,'; $sql .= ' montant, sens, fk_user_author, import_key, code_journal, journal_label, piece_num'; - $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' WHERE piece_num = '.((int) $piece_num); + $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); $resql = $this->db->query($sql); if (!$resql) { $error++; $this->errors[] = 'Error '.$this->db->lasterror(); dol_syslog(__METHOD__.' '.join(',', $this->errors), LOG_ERR); } - $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num); + $sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.'_tmp WHERE piece_num = '.((int) $piece_num).' AND entity = ' .((int) $conf->entity); $resql = $this->db->query($sql); if (!$resql) { $error++; @@ -1947,7 +1949,7 @@ class BookKeeping extends CommonObject $sql .= " AND aa.active = 1"; $sql .= " INNER JOIN ".MAIN_DB_PREFIX."accounting_system as asy ON aa.fk_pcg_version = asy.pcg_version"; $sql .= " AND asy.rowid = ".((int) $pcgver); - $sql .= " AND ab.entity IN (".getEntity('accountancy').")"; + $sql .= " AND ab.entity = " . ((int) $conf->entity); // Do not use getEntity for accounting features $sql .= " ORDER BY account_number ASC"; dol_syslog(get_class($this)."::select_account", LOG_DEBUG); @@ -2011,7 +2013,7 @@ class BookKeeping extends CommonObject $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as parent ON aa.account_parent = parent.rowid AND parent.active = 1"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as root ON parent.account_parent = root.rowid AND root.active = 1"; $sql .= " WHERE aa.account_number = '".$this->db->escape($account)."'"; - $sql .= " AND aa.entity IN (".getEntity('accountancy').")"; + $sql .= " AND aa.entity = " . ((int) $conf->entity); // Do not use getEntity for accounting features dol_syslog(get_class($this)."::select_account sql=".$sql, LOG_DEBUG); $resql = $this->db->query($sql); @@ -2051,7 +2053,7 @@ class BookKeeping extends CommonObject $sql .= " AND asy.rowid = ".((int) $pcgver); $sql .= " AND aa.active = 1"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_accounting_category as cat ON aa.fk_accounting_category = cat.rowid"; - $sql .= " WHERE aa.entity IN (".getEntity('accountancy').")"; + $sql .= " WHERE aa.entity = " . ((int) $conf->entity); // Do not use getEntity for accounting features dol_syslog(get_class($this)."::select_account sql=".$sql, LOG_DEBUG); $resql = $this->db->query($sql); From 12c825ba84e4402b0ae329064db182423ed2cadc Mon Sep 17 00:00:00 2001 From: atm-greg Date: Fri, 18 Feb 2022 10:50:00 +0100 Subject: [PATCH 208/225] fix rounding for price and display currency --- htdocs/core/class/extrafields.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index f8e5726d344..c0dc9c6a96f 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -1679,7 +1679,8 @@ class ExtraFields } elseif ($type == 'price') { //$value = price($value, 0, $langs, 0, 0, -1, $conf->currency); if ($value || $value == '0') { - $value = price($value, 0, $langs, 0, 0, -1); + $value = price($value, 0, $langs, 0, $conf->global->MAIN_MAX_DECIMALS_TOT, -1).' '.$langs->getCurrencySymbol($conf->currency); + } } elseif ($type == 'select') { $valstr = (!empty($param['options'][$value]) ? $param['options'][$value] : ''); From b5afa2777422e3ee8b207b79f9592925f9d89ce4 Mon Sep 17 00:00:00 2001 From: stickler-ci Date: Fri, 18 Feb 2022 10:09:38 +0000 Subject: [PATCH 209/225] Fixing style errors. --- htdocs/core/class/extrafields.class.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index c0dc9c6a96f..7a449f3e7ea 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -1680,7 +1680,6 @@ class ExtraFields //$value = price($value, 0, $langs, 0, 0, -1, $conf->currency); if ($value || $value == '0') { $value = price($value, 0, $langs, 0, $conf->global->MAIN_MAX_DECIMALS_TOT, -1).' '.$langs->getCurrencySymbol($conf->currency); - } } elseif ($type == 'select') { $valstr = (!empty($param['options'][$value]) ? $param['options'][$value] : ''); From aec2579c41b23213ed427fb99188fb695e771df3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 18 Feb 2022 12:22:53 +0100 Subject: [PATCH 210/225] Clean code --- htdocs/projet/admin/website.php | 27 ------------- htdocs/recruitment/admin/public_interface.php | 38 ------------------- 2 files changed, 65 deletions(-) diff --git a/htdocs/projet/admin/website.php b/htdocs/projet/admin/website.php index 1af6b72c196..25497fef436 100644 --- a/htdocs/projet/admin/website.php +++ b/htdocs/projet/admin/website.php @@ -111,33 +111,6 @@ if (empty($conf->global->PROJECT_ENABLE_PUBLIC)) { print $enabledisablehtml; print ''; -/* -print '
    '; - -if (!empty($conf->global->PROJECT_ENABLE_PUBLIC)) { - print '
    '; - - print ''; - - print ''; - print ''; - print ''; - print "\n"; - - // param - print '\n"; - - print '
    '.$langs->trans("Parameter").''.$langs->trans("Value").'
    '; - print $langs->trans("CanEditAmount"); - print ''; - print $form->selectyesno("MEMBER_NEWFORM_EDITAMOUNT", (!empty($conf->global->MEMBER_NEWFORM_EDITAMOUNT) ? $conf->global->MEMBER_NEWFORM_EDITAMOUNT : 0), 1); - print "
    '; - - print '
    '; - print ''; - print '
    '; -} -*/ print dol_get_fiche_end(); diff --git a/htdocs/recruitment/admin/public_interface.php b/htdocs/recruitment/admin/public_interface.php index 3d431d026bc..b091cdea7a0 100644 --- a/htdocs/recruitment/admin/public_interface.php +++ b/htdocs/recruitment/admin/public_interface.php @@ -126,44 +126,6 @@ if (!empty($conf->global->RECRUITMENT_ENABLE_PUBLIC_INTERFACE)) { print ''.$langs->trans("Value").''; print "\n"; - // Force Type - $adht = new AdherentType($db); - print ''; - print $langs->trans("ForceMemberType"); - print ''; - $listofval = array(); - $listofval += $adht->liste_array(); - $forcetype = $conf->global->MEMBER_NEWFORM_FORCETYPE ?: -1; - print $form->selectarray("MEMBER_NEWFORM_FORCETYPE", $listofval, $forcetype, count($listofval) > 1 ? 1 : 0); - print "\n"; - - // Amount - print ''; - print $langs->trans("DefaultAmount"); - print ''; - print ''; - print "\n"; - - // Can edit - print ''; - print $langs->trans("CanEditAmount"); - print ''; - print $form->selectyesno("MEMBER_NEWFORM_EDITAMOUNT", (!empty($conf->global->MEMBER_NEWFORM_EDITAMOUNT) ? $conf->global->MEMBER_NEWFORM_EDITAMOUNT : 0), 1); - print "\n"; - - // Jump to an online payment page - print ''; - print $langs->trans("MEMBER_NEWFORM_PAYONLINE"); - print ''; - $listofval = array(); - $listofval['-1'] = $langs->trans('No'); - $listofval['all'] = $langs->trans('Yes').' ('.$langs->trans("VisitorCanChooseItsPaymentMode").')'; - if (!empty($conf->paybox->enabled)) $listofval['paybox'] = 'Paybox'; - if (!empty($conf->paypal->enabled)) $listofval['paypal'] = 'PayPal'; - if (!empty($conf->stripe->enabled)) $listofval['stripe'] = 'Stripe'; - print $form->selectarray("MEMBER_NEWFORM_PAYONLINE", $listofval, (!empty($conf->global->MEMBER_NEWFORM_PAYONLINE) ? $conf->global->MEMBER_NEWFORM_PAYONLINE : ''), 0); - print "\n"; - print ''; print '
    '; From 3ab2308124757a12ef70f459e7d723708baefc86 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 18 Feb 2022 12:36:05 +0100 Subject: [PATCH 211/225] Clean code --- htdocs/public/eventorganization/attendee_new.php | 10 ---------- htdocs/public/members/new.php | 1 + htdocs/public/payment/newpayment.php | 8 ++++---- htdocs/public/payment/paymentok.php | 13 ++++++++++++- htdocs/public/project/suggestbooth.php | 10 ---------- htdocs/public/project/suggestconference.php | 10 ---------- 6 files changed, 17 insertions(+), 35 deletions(-) diff --git a/htdocs/public/eventorganization/attendee_new.php b/htdocs/public/eventorganization/attendee_new.php index b350ece39f4..55303bcb00e 100644 --- a/htdocs/public/eventorganization/attendee_new.php +++ b/htdocs/public/eventorganization/attendee_new.php @@ -19,16 +19,6 @@ * \file htdocs/public/eventorganization/attendee_new.php * \ingroup project * \brief Example of form to subscribe to an event - * - * 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_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_NEWFORM_FORCETYPE Force type of member - * MEMBER_NEWFORM_FORCEMORPHY Force nature of member (mor/phy) - * MEMBER_NEWFORM_FORCECOUNTRYCODE Force country */ if (!defined('NOLOGIN')) { diff --git a/htdocs/public/members/new.php b/htdocs/public/members/new.php index 6589f2a17d0..055ffec56f9 100644 --- a/htdocs/public/members/new.php +++ b/htdocs/public/members/new.php @@ -30,6 +30,7 @@ * 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) * MEMBER_URL_REDIRECT_SUBSCRIPTION Url to redirect once subscribe submitted diff --git a/htdocs/public/payment/newpayment.php b/htdocs/public/payment/newpayment.php index 5158e294fb2..d25e14288f8 100644 --- a/htdocs/public/payment/newpayment.php +++ b/htdocs/public/payment/newpayment.php @@ -481,7 +481,7 @@ if ($action == 'dopayment') { // Called when choosing Stripe mode. -// When using the Charge API architecture, this code is called after clicking the 'dopayment' with the Charge API architecture. +// When using the old Charge API architecture, this code is called after clicking the 'dopayment' with the Charge API architecture. // When using the PaymentIntent API architecture, the Stripe customer was already created when creating PaymentIntent when showing payment page, and the payment is already ok when action=charge. if ($action == 'charge' && !empty($conf->stripe->enabled)) { $amountstripe = $amount; @@ -728,7 +728,7 @@ if ($action == 'charge' && !empty($conf->stripe->enabled)) { } } - // When using the PaymentIntent API architecture + // When using the PaymentIntent API architecture (mode set on by default into conf.class.php) if (!empty($conf->global->STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION)) { $service = 'StripeTest'; $servicestatus = 0; @@ -793,8 +793,8 @@ if ($action == 'charge' && !empty($conf->stripe->enabled)) { $remoteip = getUserRemoteIP(); $_SESSION["onlinetoken"] = $stripeToken; - $_SESSION["FinalPaymentAmt"] = $amount; - $_SESSION["currencyCodeType"] = $currency; + $_SESSION["FinalPaymentAmt"] = $amount; // amount really paid (coming from Stripe). Will be used for check in paymentok.php. + $_SESSION["currencyCodeType"] = $currency; // currency really used for payment (coming from Stripe). Will be used for check in paymentok.php. $_SESSION["paymentType"] = ''; $_SESSION['ipaddress'] = ($remoteip ? $remoteip : 'unknown'); // Payer ip $_SESSION['payerID'] = is_object($customer) ? $customer->id : ''; diff --git a/htdocs/public/payment/paymentok.php b/htdocs/public/payment/paymentok.php index c822bfcdf96..ea86f28a894 100644 --- a/htdocs/public/payment/paymentok.php +++ b/htdocs/public/payment/paymentok.php @@ -417,7 +417,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 (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 ($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; @@ -440,6 +440,17 @@ if ($ispaymentok) { } } + // Security protection: + if (!empty($conf->global->MEMBER_MIN_AMOUNT)) { + if ($FinalPaymentAmt < $conf->global->MEMBER_MIN_AMOUNT) { + $error++; + $errmsg = 'Value of FinalPayment ('.$FinalPaymentAmt.') is lower than the minimum allowed ('.$conf->global->MEMBER_MIN_AMOUNT.'). May be a hack to try to pay a different amount ?'; + $postactionmessages[] = $errmsg; + $ispostactionok = -1; + dol_syslog("Failed to validate member (amount lower than minimum): ".$errmsg, LOG_ERR, 0, '_payment'); + } + } + // Security protection: if ($currencyCodeType && $currencyCodeType != $conf->currency) { // Check that currency is the good one $error++; diff --git a/htdocs/public/project/suggestbooth.php b/htdocs/public/project/suggestbooth.php index c0bcdc751c6..39c2a57700e 100644 --- a/htdocs/public/project/suggestbooth.php +++ b/htdocs/public/project/suggestbooth.php @@ -19,16 +19,6 @@ * \file htdocs/public/project/suggestbooth.php * \ingroup member * \brief Example of form to suggest a booth - * - * 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_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_NEWFORM_FORCETYPE Force type of member - * MEMBER_NEWFORM_FORCEMORPHY Force nature of member (mor/phy) - * MEMBER_NEWFORM_FORCECOUNTRYCODE Force country */ if (!defined('NOLOGIN')) { diff --git a/htdocs/public/project/suggestconference.php b/htdocs/public/project/suggestconference.php index f2a919c0aa2..b97777c3a9a 100644 --- a/htdocs/public/project/suggestconference.php +++ b/htdocs/public/project/suggestconference.php @@ -19,16 +19,6 @@ * \file htdocs/public/project/suggestconference.php * \ingroup member * \brief Example of form to suggest a conference - * - * 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_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_NEWFORM_FORCETYPE Force type of member - * MEMBER_NEWFORM_FORCEMORPHY Force nature of member (mor/phy) - * MEMBER_NEWFORM_FORCECOUNTRYCODE Force country */ if (!defined('NOLOGIN')) { From 8a0ee772d3d722f446f9fa253805934426b638c3 Mon Sep 17 00:00:00 2001 From: UT from dolibit <45215329+dolibit-ut@users.noreply.github.com> Date: Fri, 18 Feb 2022 13:10:38 +0100 Subject: [PATCH 212/225] add GitHub INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'github', 'GitHub', 'https://www.github.com/{socialid}', '', 0); --- htdocs/install/mysql/data/llx_c_socialnetworks.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/install/mysql/data/llx_c_socialnetworks.sql b/htdocs/install/mysql/data/llx_c_socialnetworks.sql index 5bfbcf090d9..468086291fc 100644 --- a/htdocs/install/mysql/data/llx_c_socialnetworks.sql +++ b/htdocs/install/mysql/data/llx_c_socialnetworks.sql @@ -36,6 +36,7 @@ INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'flickr', 'Flickr', '{socialid}', 'fa-flickr', 0); INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'gifycat', 'Gificat', '{socialid}', '', 0); INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'giphy', 'Giphy', '{socialid}', '', 0); +INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'github', 'GitHub', 'https://www.github.com/{socialid}', '', 0); INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'googleplus', 'GooglePlus', 'https://www.googleplus.com/{socialid}', 'fa-google-plus-g', 0); INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'instagram', 'Instagram', 'https://www.instagram.com/{socialid}', 'fa-instagram', 1); INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'linkedin', 'LinkedIn', 'https://www.linkedin.com/{socialid}', 'fa-linkedin', 1); From dee5d8f9e865a051617c23162b75bd6174fad059 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 18 Feb 2022 13:45:28 +0100 Subject: [PATCH 213/225] Standardize name of button --- .../core/modules/barcode/mod_barcode_product_standard.php | 2 +- htdocs/core/modules/bom/doc/doc_generic_bom_odt.modules.php | 2 +- .../modules/commande/doc/doc_generic_order_odt.modules.php | 2 +- .../expedition/doc/doc_generic_shipment_odt.modules.php | 2 +- .../modules/facture/doc/doc_generic_invoice_odt.modules.php | 2 +- .../modules/member/doc/doc_generic_member_odt.class.php | 2 +- htdocs/core/modules/mrp/doc/doc_generic_mo_odt.modules.php | 2 +- .../modules/product/doc/doc_generic_product_odt.modules.php | 2 +- htdocs/core/modules/product/mod_codeproduct_elephant.php | 2 +- .../modules/project/doc/doc_generic_project_odt.modules.php | 2 +- .../project/task/doc/doc_generic_task_odt.modules.php | 2 +- .../propale/doc/doc_generic_proposal_odt.modules.php | 2 +- .../reception/doc/doc_generic_reception_odt.modules.php | 2 +- htdocs/core/modules/societe/doc/doc_generic_odt.modules.php | 2 +- htdocs/core/modules/societe/mod_codeclient_elephant.php | 2 +- htdocs/core/modules/societe/mod_codecompta_aquarium.php | 2 +- htdocs/core/modules/societe/mod_codecompta_digitaria.php | 2 +- .../modules/stock/doc/doc_generic_stock_odt.modules.php | 2 +- .../doc/doc_generic_supplier_order_odt.modules.php | 2 +- .../doc/doc_generic_supplier_proposal_odt.modules.php | 2 +- .../modules/ticket/doc/doc_generic_ticket_odt.modules.php | 2 +- .../core/modules/user/doc/doc_generic_user_odt.modules.php | 2 +- .../usergroup/doc/doc_generic_usergroup_odt.modules.php | 2 +- .../mymodule/doc/doc_generic_myobject_odt.modules.php | 2 +- .../doc/doc_generic_recruitmentjobposition_odt.modules.php | 2 +- htdocs/societe/admin/societe.php | 6 +++--- 26 files changed, 28 insertions(+), 28 deletions(-) diff --git a/htdocs/core/modules/barcode/mod_barcode_product_standard.php b/htdocs/core/modules/barcode/mod_barcode_product_standard.php index a0197f18cd3..c101001af4c 100644 --- a/htdocs/core/modules/barcode/mod_barcode_product_standard.php +++ b/htdocs/core/modules/barcode/mod_barcode_product_standard.php @@ -109,7 +109,7 @@ class mod_barcode_product_standard extends ModeleNumRefBarCode //$texte.= ''.$langs->trans("Mask").' ('.$langs->trans("BarCodeModel").'):'; $texte .= ''.$langs->trans("Mask").':'; $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; - $texte .= '  '; + $texte .= '  '; $texte .= ''; $texte .= ''; diff --git a/htdocs/core/modules/bom/doc/doc_generic_bom_odt.modules.php b/htdocs/core/modules/bom/doc/doc_generic_bom_odt.modules.php index 463cbc46a24..761aae99142 100644 --- a/htdocs/core/modules/bom/doc/doc_generic_bom_odt.modules.php +++ b/htdocs/core/modules/bom/doc/doc_generic_bom_odt.modules.php @@ -152,7 +152,7 @@ class doc_generic_bom_odt extends ModelePDFBom $texte .= $conf->global->BOM_ADDON_PDF_ODT_PATH; $texte .= ''; $texte .= '
    '; - $texte .= ''; + $texte .= ''; $texte .= '
    '; // Scan directories diff --git a/htdocs/core/modules/commande/doc/doc_generic_order_odt.modules.php b/htdocs/core/modules/commande/doc/doc_generic_order_odt.modules.php index b98d403d8f7..c59d1c40ee9 100644 --- a/htdocs/core/modules/commande/doc/doc_generic_order_odt.modules.php +++ b/htdocs/core/modules/commande/doc/doc_generic_order_odt.modules.php @@ -160,7 +160,7 @@ class doc_generic_order_odt extends ModelePDFCommandes $texte .= $conf->global->COMMANDE_ADDON_PDF_ODT_PATH; $texte .= ''; $texte .= '
    '; - $texte .= ''; + $texte .= ''; $texte .= '
    '; // Scan directories diff --git a/htdocs/core/modules/expedition/doc/doc_generic_shipment_odt.modules.php b/htdocs/core/modules/expedition/doc/doc_generic_shipment_odt.modules.php index 2dd33bab141..a916bcc534f 100644 --- a/htdocs/core/modules/expedition/doc/doc_generic_shipment_odt.modules.php +++ b/htdocs/core/modules/expedition/doc/doc_generic_shipment_odt.modules.php @@ -160,7 +160,7 @@ class doc_generic_shipment_odt extends ModelePdfExpedition $texte .= $conf->global->EXPEDITION_ADDON_PDF_ODT_PATH; $texte .= ''; $texte .= '
    '; - $texte .= ''; + $texte .= ''; $texte .= '
    '; // Scan directories diff --git a/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php b/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php index b8bfcdc16ac..9c0088bd398 100644 --- a/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php +++ b/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php @@ -159,7 +159,7 @@ class doc_generic_invoice_odt extends ModelePDFFactures $texte .= $conf->global->FACTURE_ADDON_PDF_ODT_PATH; $texte .= ''; $texte .= '
    '; - $texte .= ''; + $texte .= ''; $texte .= '
    '; // Scan directories diff --git a/htdocs/core/modules/member/doc/doc_generic_member_odt.class.php b/htdocs/core/modules/member/doc/doc_generic_member_odt.class.php index 4f1c20a464e..91d2248fb48 100644 --- a/htdocs/core/modules/member/doc/doc_generic_member_odt.class.php +++ b/htdocs/core/modules/member/doc/doc_generic_member_odt.class.php @@ -155,7 +155,7 @@ class doc_generic_member_odt extends ModelePDFMember $texte .= $conf->global->MEMBER_ADDON_PDF_ODT_PATH; $texte .= ''; $texte .= '
    '; - $texte .= ''; + $texte .= ''; $texte .= '
    '; // Scan directories diff --git a/htdocs/core/modules/mrp/doc/doc_generic_mo_odt.modules.php b/htdocs/core/modules/mrp/doc/doc_generic_mo_odt.modules.php index 07f5d5d1890..1df69d7ae53 100644 --- a/htdocs/core/modules/mrp/doc/doc_generic_mo_odt.modules.php +++ b/htdocs/core/modules/mrp/doc/doc_generic_mo_odt.modules.php @@ -159,7 +159,7 @@ class doc_generic_mo_odt extends ModelePDFMo $texte .= $conf->global->MRP_MO_ADDON_PDF_ODT_PATH; $texte .= ''; $texte .= '
    '; - $texte .= ''; + $texte .= ''; $texte .= '
    '; // Scan directories diff --git a/htdocs/core/modules/product/doc/doc_generic_product_odt.modules.php b/htdocs/core/modules/product/doc/doc_generic_product_odt.modules.php index 7fff122ec57..c1f6769579a 100644 --- a/htdocs/core/modules/product/doc/doc_generic_product_odt.modules.php +++ b/htdocs/core/modules/product/doc/doc_generic_product_odt.modules.php @@ -157,7 +157,7 @@ class doc_generic_product_odt extends ModelePDFProduct $texte .= $conf->global->PRODUCT_ADDON_PDF_ODT_PATH; $texte .= ''; $texte .= '
    '; - $texte .= ''; + $texte .= ''; $texte .= '
    '; // Scan directories diff --git a/htdocs/core/modules/product/mod_codeproduct_elephant.php b/htdocs/core/modules/product/mod_codeproduct_elephant.php index 40b1f324cdd..ff724ab209d 100644 --- a/htdocs/core/modules/product/mod_codeproduct_elephant.php +++ b/htdocs/core/modules/product/mod_codeproduct_elephant.php @@ -119,7 +119,7 @@ class mod_codeproduct_elephant extends ModeleProductCode $texte .= ''.$langs->trans("Mask").' ('.$langs->trans("ProductCodeModel").'):'; $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; - $texte .= '  '; + $texte .= '  '; $texte .= ''; diff --git a/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php b/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php index bad6a369ba6..d653ed760a6 100644 --- a/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php +++ b/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php @@ -450,7 +450,7 @@ class doc_generic_project_odt extends ModelePDFProjects $texte .= $conf->global->PROJECT_ADDON_PDF_ODT_PATH; $texte .= ''; $texte .= '
    '; - $texte .= ''; + $texte .= ''; $texte .= '
    '; // Scan directories diff --git a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php index 1fd0f9c23ee..7849e46edbe 100644 --- a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php +++ b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php @@ -417,7 +417,7 @@ class doc_generic_task_odt extends ModelePDFTask $texte .= $conf->global->PROJECT_TASK_ADDON_PDF_ODT_PATH; $texte .= ''; $texte .= '
    '; - $texte .= ''; + $texte .= ''; $texte .= '
    '; // Scan directories 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 e636645f6c8..e2e3ffd2a21 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 @@ -161,7 +161,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales $texte .= $conf->global->PROPALE_ADDON_PDF_ODT_PATH; $texte .= ''; $texte .= '
    '; - $texte .= ''; + $texte .= ''; $texte .= '
    '; // Scan directories diff --git a/htdocs/core/modules/reception/doc/doc_generic_reception_odt.modules.php b/htdocs/core/modules/reception/doc/doc_generic_reception_odt.modules.php index 7fde8e26c82..f8fd829591d 100644 --- a/htdocs/core/modules/reception/doc/doc_generic_reception_odt.modules.php +++ b/htdocs/core/modules/reception/doc/doc_generic_reception_odt.modules.php @@ -153,7 +153,7 @@ class doc_generic_reception_odt extends ModelePdfReception $texte .= $conf->global->RECEPTION_ADDON_PDF_ODT_PATH; $texte .= ''; $texte .= '
    '; - $texte .= ''; + $texte .= ''; $texte .= '
    '; // Scan directories diff --git a/htdocs/core/modules/societe/doc/doc_generic_odt.modules.php b/htdocs/core/modules/societe/doc/doc_generic_odt.modules.php index aaa9c03c6e7..3a62eb22937 100644 --- a/htdocs/core/modules/societe/doc/doc_generic_odt.modules.php +++ b/htdocs/core/modules/societe/doc/doc_generic_odt.modules.php @@ -143,7 +143,7 @@ class doc_generic_odt extends ModeleThirdPartyDoc $texte .= ''; $texte .= ''; $texte .= '  '; - $texte .= ''; + $texte .= ''; $texte .= ''; $texte .= ''; $texte .= ''; diff --git a/htdocs/core/modules/societe/mod_codeclient_elephant.php b/htdocs/core/modules/societe/mod_codeclient_elephant.php index 6079120a305..0142457cd40 100644 --- a/htdocs/core/modules/societe/mod_codeclient_elephant.php +++ b/htdocs/core/modules/societe/mod_codeclient_elephant.php @@ -135,7 +135,7 @@ class mod_codeclient_elephant extends ModeleThirdPartyCode $texte .= ''.$langs->trans("Mask").' ('.$langs->trans("CustomerCodeModel").'):'; $texte .= ''.$form->textwithpicto('', $tooltip, 1, 1).''; - $texte .= '  '; + $texte .= '  '; $texte .= ''; diff --git a/htdocs/core/modules/societe/mod_codecompta_aquarium.php b/htdocs/core/modules/societe/mod_codecompta_aquarium.php index ff5d737872a..4d1d01db682 100644 --- a/htdocs/core/modules/societe/mod_codecompta_aquarium.php +++ b/htdocs/core/modules/societe/mod_codecompta_aquarium.php @@ -103,7 +103,7 @@ class mod_codecompta_aquarium extends ModeleAccountancyCode $texte .= $langs->trans('COMPANY_AQUARIUM_CLEAN_REGEX').' = '.$conf->global->COMPANY_AQUARIUM_CLEAN_REGEX."
    \n"; } $texte .= ''; - $texte .= ''; + $texte .= ''; $texte .= ''; $texte .= ''; diff --git a/htdocs/core/modules/societe/mod_codecompta_digitaria.php b/htdocs/core/modules/societe/mod_codecompta_digitaria.php index 217e027d152..dddd01a602d 100644 --- a/htdocs/core/modules/societe/mod_codecompta_digitaria.php +++ b/htdocs/core/modules/societe/mod_codecompta_digitaria.php @@ -126,7 +126,7 @@ class mod_codecompta_digitaria extends ModeleAccountancyCode $texte .= $langs->trans('COMPANY_DIGITARIA_UNIQUE_CODE').' = '.yn(1)."
    \n"; } $texte .= ''; - $texte .= ''; + $texte .= ''; $texte .= ''; $texte .= ''; diff --git a/htdocs/core/modules/stock/doc/doc_generic_stock_odt.modules.php b/htdocs/core/modules/stock/doc/doc_generic_stock_odt.modules.php index c3e26e591c7..1fb120d4d29 100644 --- a/htdocs/core/modules/stock/doc/doc_generic_stock_odt.modules.php +++ b/htdocs/core/modules/stock/doc/doc_generic_stock_odt.modules.php @@ -156,7 +156,7 @@ class doc_generic_stock_odt extends ModelePDFStock $texte .= $conf->global->STOCK_ADDON_PDF_ODT_PATH; $texte .= ''; $texte .= '
    '; - $texte .= ''; + $texte .= ''; $texte .= '
    '; // Scan directories diff --git a/htdocs/core/modules/supplier_order/doc/doc_generic_supplier_order_odt.modules.php b/htdocs/core/modules/supplier_order/doc/doc_generic_supplier_order_odt.modules.php index 436622d6451..68caf286682 100644 --- a/htdocs/core/modules/supplier_order/doc/doc_generic_supplier_order_odt.modules.php +++ b/htdocs/core/modules/supplier_order/doc/doc_generic_supplier_order_odt.modules.php @@ -160,7 +160,7 @@ class doc_generic_supplier_order_odt extends ModelePDFSuppliersOrders $texte .= $conf->global->SUPPLIER_ORDER_ADDON_PDF_ODT_PATH; $texte .= ''; $texte .= '
    '; - $texte .= ''; + $texte .= ''; $texte .= '
    '; // Scan directories 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..c79ee188213 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 @@ -163,7 +163,7 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal $texte .= $conf->global->SUPPLIER_PROPOSAL_ADDON_PDF_ODT_PATH; $texte .= ''; $texte .= '
    '; - $texte .= ''; + $texte .= ''; $texte .= '
    '; // Scan directories diff --git a/htdocs/core/modules/ticket/doc/doc_generic_ticket_odt.modules.php b/htdocs/core/modules/ticket/doc/doc_generic_ticket_odt.modules.php index 86b9d44ad9b..d69da78aacc 100644 --- a/htdocs/core/modules/ticket/doc/doc_generic_ticket_odt.modules.php +++ b/htdocs/core/modules/ticket/doc/doc_generic_ticket_odt.modules.php @@ -151,7 +151,7 @@ class doc_generic_ticket_odt extends ModelePDFTicket $texte .= $conf->global->TICKET_ADDON_PDF_ODT_PATH; $texte .= ''; $texte .= '
    '; - $texte .= ''; + $texte .= ''; $texte .= '
    '; // Scan directories 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..353d35fc182 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 @@ -160,7 +160,7 @@ class doc_generic_user_odt extends ModelePDFUser $texte .= $conf->global->USER_ADDON_PDF_ODT_PATH; $texte .= ''; $texte .= '
    '; - $texte .= ''; + $texte .= ''; $texte .= '
    '; // Scan directories 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..7ba82f5825e 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 @@ -163,7 +163,7 @@ class doc_generic_usergroup_odt extends ModelePDFUserGroup $texte .= $conf->global->USERGROUP_ADDON_PDF_ODT_PATH; $texte .= ''; $texte .= '
    '; - $texte .= ''; + $texte .= ''; $texte .= '
    '; // Scan directories diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/doc/doc_generic_myobject_odt.modules.php b/htdocs/modulebuilder/template/core/modules/mymodule/doc/doc_generic_myobject_odt.modules.php index 8040c13d606..689503f0dee 100644 --- a/htdocs/modulebuilder/template/core/modules/mymodule/doc/doc_generic_myobject_odt.modules.php +++ b/htdocs/modulebuilder/template/core/modules/mymodule/doc/doc_generic_myobject_odt.modules.php @@ -159,7 +159,7 @@ class doc_generic_myobject_odt extends ModelePDFMyObject $texte .= $conf->global->MYMODULE_MYOBJECT_ADDON_PDF_ODT_PATH; $texte .= ''; $texte .= '
    '; - $texte .= ''; + $texte .= ''; $texte .= '
    '; // Scan directories diff --git a/htdocs/recruitment/core/modules/recruitment/doc/doc_generic_recruitmentjobposition_odt.modules.php b/htdocs/recruitment/core/modules/recruitment/doc/doc_generic_recruitmentjobposition_odt.modules.php index e818a0816a9..e2b7c545aa9 100644 --- a/htdocs/recruitment/core/modules/recruitment/doc/doc_generic_recruitmentjobposition_odt.modules.php +++ b/htdocs/recruitment/core/modules/recruitment/doc/doc_generic_recruitmentjobposition_odt.modules.php @@ -158,7 +158,7 @@ class doc_generic_recruitmentjobposition_odt extends ModelePDFRecruitmentJobPosi $texte .= $conf->global->RECRUITMENT_RECRUITMENTJOBPOSITION_ADDON_PDF_ODT_PATH; $texte .= ''; $texte .= '
    '; - $texte .= ''; + $texte .= ''; $texte .= '
    '; // Scan directories diff --git a/htdocs/societe/admin/societe.php b/htdocs/societe/admin/societe.php index 193dfc43cad..236551c1c2e 100644 --- a/htdocs/societe/admin/societe.php +++ b/htdocs/societe/admin/societe.php @@ -780,7 +780,7 @@ if (!$conf->use_javascript_ajax) { ); print $form->selectarray("activate_COMPANY_USE_SEARCH_TO_SELECT", $arrval, (property_exists($conf->global, 'COMPANY_USE_SEARCH_TO_SELECT')?$conf->global->COMPANY_USE_SEARCH_TO_SELECT:''), 0, 0, 0, '', 0, 0, 0, '', 'minwidth75imp'); print ''; - print ''; + print ''; print ""; } print ''; @@ -801,7 +801,7 @@ if (!$conf->use_javascript_ajax) { ); print $form->selectarray("activate_CONTACT_USE_SEARCH_TO_SELECT", $arrval, (property_exists($conf->global, 'CONTACT_USE_SEARCH_TO_SELECT')?$conf->global->CONTACT_USE_SEARCH_TO_SELECT:''), 0, 0, 0, '', 0, 0, 0, '', 'minwidth75imp'); print ''; - print ''; + print ''; print ""; } print ''; @@ -905,7 +905,7 @@ if (empty($conf->global->SOCIETE_DISABLE_PROSPECTSCUSTOMERS)) { print $formcompany->selectProspectCustomerType((property_exists($conf->global, 'THIRDPARTY_CUSTOMERTYPE_BY_DEFAULT')?$conf->global->THIRDPARTY_CUSTOMERTYPE_BY_DEFAULT:''), 'defaultcustomertype', 'defaultcustomertype', 'admin'); print ''; print ''; - print ''; + print ''; print ''; print ''; } From 694ea8830bb6744e0f1be81c870a8d2d5b29e28d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 18 Feb 2022 13:46:12 +0100 Subject: [PATCH 214/225] Fix missing name and type into template --- htdocs/adherents/admin/member.php | 86 ++++++++++--------- .../modules/member/doc/pdf_standard.class.php | 26 ++++++ 2 files changed, 73 insertions(+), 39 deletions(-) diff --git a/htdocs/adherents/admin/member.php b/htdocs/adherents/admin/member.php index 39587521c4d..2b6a0838fe1 100644 --- a/htdocs/adherents/admin/member.php +++ b/htdocs/adherents/admin/member.php @@ -196,6 +196,9 @@ print '
    '; print ''; print ''; + +// Mains options + print load_fiche_titre($langs->trans("MemberMainOptions"), '', ''); print '
    '; @@ -286,51 +289,15 @@ print '
    '; print '
    '; -print '
    '; - - -/* - * Edit info of model document - */ -$constantes = array( - 'ADHERENT_CARD_TYPE', - //'ADHERENT_CARD_BACKGROUND', - 'ADHERENT_CARD_HEADER_TEXT', - 'ADHERENT_CARD_TEXT', - 'ADHERENT_CARD_TEXT_RIGHT', - 'ADHERENT_CARD_FOOTER_TEXT' -); - -print load_fiche_titre($langs->trans("MembersCards"), '', ''); - -$helptext = '*'.$langs->trans("FollowingConstantsWillBeSubstituted").'
    '; -$helptext .= '__DOL_MAIN_URL_ROOT__, __ID__, __FIRSTNAME__, __LASTNAME__, __FULLNAME__, __LOGIN__, __PASSWORD__, '; -$helptext .= '__COMPANY__, __ADDRESS__, __ZIP__, __TOWN__, __COUNTRY__, __EMAIL__, __BIRTH__, __PHOTO__, __TYPE__, '; -$helptext .= '__YEAR__, __MONTH__, __DAY__'; - -form_constantes($constantes, 0, $helptext); print '
    '; -/* - * Edit info of model document - */ -$constantes = array('ADHERENT_ETIQUETTE_TYPE', 'ADHERENT_ETIQUETTE_TEXT'); - -print load_fiche_titre($langs->trans("MembersTickets"), '', ''); - -$helptext = '*'.$langs->trans("FollowingConstantsWillBeSubstituted").'
    '; -$helptext .= '__DOL_MAIN_URL_ROOT__, __ID__, __FIRSTNAME__, __LASTNAME__, __FULLNAME__, __LOGIN__, __PASSWORD__, '; -$helptext .= '__COMPANY__, __ADDRESS__, __ZIP__, __TOWN__, __COUNTRY__, __EMAIL__, __BIRTH__, __PHOTO__, __TYPE__, '; -$helptext .= '__YEAR__, __MONTH__, __DAY__'; - -form_constantes($constantes, 0, $helptext); $dirmodels = array_merge(array('/'), (array) $conf->modules_parts['models']); // Defined model definition table $def = array(); -$sql = "SELECT nom"; +$sql = "SELECT nom as name"; $sql .= " FROM ".MAIN_DB_PREFIX."document_model"; $sql .= " WHERE type = '".$db->escape($type)."'"; $sql .= " AND entity = ".$conf->entity; @@ -339,14 +306,15 @@ if ($resql) { $i = 0; $num_rows = $db->num_rows($resql); while ($i < $num_rows) { - $array = $db->fetch_array($resql); - array_push($def, $array[0]); + $obj = $db->fetch_object($resql); + array_push($def, $obj->name); $i++; } } else { dol_print_error($db); } + print load_fiche_titre($langs->trans("MembersDocModules"), '', ''); print '
    '; @@ -460,6 +428,46 @@ foreach ($dirmodels as $reldir) { print ''; print '
    '; + +/* + * Edit info of model document + */ +$constantes = array( + 'ADHERENT_CARD_TYPE', + //'ADHERENT_CARD_BACKGROUND', + 'ADHERENT_CARD_HEADER_TEXT', + 'ADHERENT_CARD_TEXT', + 'ADHERENT_CARD_TEXT_RIGHT', + 'ADHERENT_CARD_FOOTER_TEXT' +); + +print load_fiche_titre($langs->trans("MembersCards"), '', ''); + +$helptext = '*'.$langs->trans("FollowingConstantsWillBeSubstituted").'
    '; +$helptext .= '__DOL_MAIN_URL_ROOT__, __ID__, __FIRSTNAME__, __LASTNAME__, __FULLNAME__, __LOGIN__, __PASSWORD__, '; +$helptext .= '__COMPANY__, __ADDRESS__, __ZIP__, __TOWN__, __COUNTRY__, __EMAIL__, __BIRTH__, __PHOTO__, __TYPE__, '; +$helptext .= '__YEAR__, __MONTH__, __DAY__'; + +form_constantes($constantes, 0, $helptext); + +print '
    '; + + +/* + * Edit info of model document + */ +$constantes = array('ADHERENT_ETIQUETTE_TYPE', 'ADHERENT_ETIQUETTE_TEXT'); + +print load_fiche_titre($langs->trans("MembersTickets"), '', ''); + +$helptext = '*'.$langs->trans("FollowingConstantsWillBeSubstituted").'
    '; +$helptext .= '__DOL_MAIN_URL_ROOT__, __ID__, __FIRSTNAME__, __LASTNAME__, __FULLNAME__, __LOGIN__, __PASSWORD__, '; +$helptext .= '__COMPANY__, __ADDRESS__, __ZIP__, __TOWN__, __COUNTRY__, __EMAIL__, __BIRTH__, __PHOTO__, __TYPE__, '; +$helptext .= '__YEAR__, __MONTH__, __DAY__'; + +form_constantes($constantes, 0, $helptext); + + print "
    "; print dol_get_fiche_end(); diff --git a/htdocs/core/modules/member/doc/pdf_standard.class.php b/htdocs/core/modules/member/doc/pdf_standard.class.php index 15f3260c4d2..d39afdd9420 100644 --- a/htdocs/core/modules/member/doc/pdf_standard.class.php +++ b/htdocs/core/modules/member/doc/pdf_standard.class.php @@ -33,6 +33,32 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/commonstickergenerator.class.php'; */ class pdf_standard extends CommonStickerGenerator { + /** + * Dolibarr version of the loaded document + * @var string + */ + public $version = 'dolibarr'; + + + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + public function __construct($db) + { + global $conf, $langs, $mysoc; + + // Translations + $langs->loadLangs(array("main", "bills")); + + $this->db = $db; + $this->name = "standard"; + $this->description = $langs->trans('PDFStandard'); + //$this->update_main_doc_field = 1; // Save the name of generated file as the main doc when generating a doc with this template + + $this->type = 'html'; + } /** * Output a sticker on page at position _COUNTX, _COUNTY (_COUNTX and _COUNTY start from 0) From 61e91656e0073a31296c2961692d9cae06d09f76 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 18 Feb 2022 14:14:34 +0100 Subject: [PATCH 215/225] FIX setup of member module FIX generation of business cards --- htdocs/adherents/admin/member.php | 9 +++++++++ htdocs/core/class/commonobject.class.php | 3 +-- htdocs/core/lib/admin.lib.php | 5 +++-- htdocs/core/modules/member/doc/pdf_standard.class.php | 6 +++--- htdocs/langs/en_US/admin.lang | 3 ++- 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/htdocs/adherents/admin/member.php b/htdocs/adherents/admin/member.php index 2b6a0838fe1..d51dd8ef730 100644 --- a/htdocs/adherents/admin/member.php +++ b/htdocs/adherents/admin/member.php @@ -429,6 +429,14 @@ print ''; print ''; + +/* +TODO Use a global form instead of embeded form into table +print '
    '; +print ''; +print ''; +*/ + /* * Edit info of model document */ @@ -467,6 +475,7 @@ $helptext .= '__YEAR__, __MONTH__, __DAY__'; form_constantes($constantes, 0, $helptext); +//print '
    '; print "
    "; diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 8ab59689976..8dabc902e5c 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -5292,8 +5292,7 @@ abstract class CommonObject $sav_charset_output = $outputlangs->charset_output; if (in_array(get_class($this), array('Adherent'))) { - $arrayofrecords = array(); // The write_file of templates of adherent class need this var - $resultwritefile = $obj->write_file($this, $outputlangs, $srctemplatepath, 'member', 1, $moreparams); + $resultwritefile = $obj->write_file($this, $outputlangs, $srctemplatepath, 'member', 1, 'tmp_cards', $moreparams); } else { $resultwritefile = $obj->write_file($this, $outputlangs, $srctemplatepath, $hidedetails, $hidedesc, $hideref, $moreparams); } diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index 448677002df..a068f5fb5f5 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -1627,6 +1627,7 @@ function form_constantes($tableau, $strictw3c = 0, $helptext = '', $text = 'Valu if (empty($strictw3c)) { print "\n".'
    '; print ''; + print ''; } print ''; @@ -1733,7 +1734,7 @@ function form_constantes($tableau, $strictw3c = 0, $helptext = '', $text = 'Valu // Submit if (empty($strictw3c)) { print ''; - print ''; + print ''; print ""; } @@ -1748,7 +1749,7 @@ function form_constantes($tableau, $strictw3c = 0, $helptext = '', $text = 'Valu print ''; if (!empty($strictw3c) && $strictw3c == 1) { - print '
    '; + print '
    '; print "
    \n"; } } diff --git a/htdocs/core/modules/member/doc/pdf_standard.class.php b/htdocs/core/modules/member/doc/pdf_standard.class.php index d39afdd9420..0fc13cbe134 100644 --- a/htdocs/core/modules/member/doc/pdf_standard.class.php +++ b/htdocs/core/modules/member/doc/pdf_standard.class.php @@ -50,14 +50,14 @@ class pdf_standard extends CommonStickerGenerator global $conf, $langs, $mysoc; // Translations - $langs->loadLangs(array("main", "bills")); + $langs->loadLangs(array("main", "admin")); $this->db = $db; $this->name = "standard"; - $this->description = $langs->trans('PDFStandard'); + $this->description = $langs->trans('TemplateforBusinessCards'); //$this->update_main_doc_field = 1; // Save the name of generated file as the main doc when generating a doc with this template - $this->type = 'html'; + $this->type = 'pdf-various-sizes'; } /** diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 3506f024eea..5af3fe19592 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -2218,4 +2218,5 @@ API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first PreviousHash=Previous hash -LateWarningAfter="Late" warning after \ No newline at end of file +LateWarningAfter="Late" warning after +TemplateforBusinessCards=Template for a business card in different size \ No newline at end of file From 30cde100ffd55c0f513434cb06f79c515cd18a0b Mon Sep 17 00:00:00 2001 From: Atm-Gregr Date: Fri, 18 Feb 2022 14:41:29 +0100 Subject: [PATCH 216/225] trad us --- htdocs/langs/en_US/hrm.lang | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/langs/en_US/hrm.lang b/htdocs/langs/en_US/hrm.lang index c571ec6ca8a..ab3628026c5 100644 --- a/htdocs/langs/en_US/hrm.lang +++ b/htdocs/langs/en_US/hrm.lang @@ -79,3 +79,6 @@ NoEval=No evaluation done for this employee HowManyUserWithThisMaxNote=Number of users with this rank HighestRank=Highest rank SkillComparison=Skill comparison +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) From e41e0f069a5d2be4041e7df58a769c2d47b3e14f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 18 Feb 2022 15:09:52 +0100 Subject: [PATCH 217/225] Fix creator in PDF. Add log to help to find strange bug --- htdocs/core/modules/facture/doc/pdf_crabe.modules.php | 9 +++++++-- htdocs/core/modules/facture/doc/pdf_sponge.modules.php | 8 ++++++-- htdocs/langs/en_US/members.lang | 2 +- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index b9ceb3e346b..0760b85c65c 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -366,7 +366,7 @@ class pdf_crabe extends ModelePDFFactures $pdf->SetTitle($outputlangs->convToOutputCharset($object->ref)); $pdf->SetSubject($outputlangs->transnoentities("PdfInvoiceTitle")); $pdf->SetCreator("Dolibarr ".DOL_VERSION); - $pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs))); + $pdf->SetAuthor($mysoc->name.($user->id > 0 ? ' - '.$outputlangs->convToOutputCharset($user->getFullName($outputlangs)) : '')); $pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("PdfInvoiceTitle")." ".$outputlangs->convToOutputCharset($object->thirdparty->name)); if (!empty($conf->global->MAIN_DISABLE_PDF_COMPRESSION)) { $pdf->SetCompression(false); @@ -374,10 +374,14 @@ class pdf_crabe extends ModelePDFFactures // Set certificate $cert = empty($user->conf->CERTIFICATE_CRT) ? '' : $user->conf->CERTIFICATE_CRT; + $certprivate = empty($user->conf->CERTIFICATE_CRT_PRIVATE) ? '' : $user->conf->CERTIFICATE_CRT_PRIVATE; // If user has no certificate, we try to take the company one if (!$cert) { $cert = empty($conf->global->CERTIFICATE_CRT) ? '' : $conf->global->CERTIFICATE_CRT; } + if (!$certprivate) { + $certprivate = empty($conf->global->CERTIFICATE_CRT_PRIVATE) ? '' : $conf->global->CERTIFICATE_CRT_PRIVATE; + } // If a certificate is found if ($cert) { $info = array( @@ -386,7 +390,7 @@ class pdf_crabe extends ModelePDFFactures 'Reason' => 'INVOICE', 'ContactInfo' => $this->emetteur->email ); - $pdf->setSignature($cert, $cert, $this->emetteur->name, '', 2, $info); + $pdf->setSignature($cert, $certprivate, $this->emetteur->name, '', 2, $info); } $pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right @@ -814,6 +818,7 @@ class pdf_crabe extends ModelePDFFactures $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0, $object->multicurrency_code); $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } + dol_syslog("bottomlasttab=".$bottomlasttab." this->page_hauteur=".$this->page_hauteur." heightforinfotot=".$heightforinfotot." heightforfreetext=".$heightforfreetext." heightforfooter=".$heightforfooter); // Display info area $posy = $this->_tableau_info($pdf, $object, $bottomlasttab, $outputlangs, $outputlangsbis); diff --git a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php index c1666545891..910790db51f 100644 --- a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php @@ -367,7 +367,7 @@ class pdf_sponge extends ModelePDFFactures $pdf->SetTitle($outputlangs->convToOutputCharset($object->ref)); $pdf->SetSubject($outputlangs->transnoentities("PdfInvoiceTitle")); $pdf->SetCreator("Dolibarr ".DOL_VERSION); - $pdf->SetAuthor($outputlangs->convToOutputCharset($user->getFullName($outputlangs))); + $pdf->SetAuthor($mysoc->name.($user->id > 0 ? ' - '.$outputlangs->convToOutputCharset($user->getFullName($outputlangs)) : '')); $pdf->SetKeyWords($outputlangs->convToOutputCharset($object->ref)." ".$outputlangs->transnoentities("PdfInvoiceTitle")." ".$outputlangs->convToOutputCharset($object->thirdparty->name)); if (!empty($conf->global->MAIN_DISABLE_PDF_COMPRESSION)) { $pdf->SetCompression(false); @@ -375,10 +375,14 @@ class pdf_sponge extends ModelePDFFactures // Set certificate $cert = empty($user->conf->CERTIFICATE_CRT) ? '' : $user->conf->CERTIFICATE_CRT; + $certprivate = empty($user->conf->CERTIFICATE_CRT_PRIVATE) ? '' : $user->conf->CERTIFICATE_CRT_PRIVATE; // If user has no certificate, we try to take the company one if (!$cert) { $cert = empty($conf->global->CERTIFICATE_CRT) ? '' : $conf->global->CERTIFICATE_CRT; } + if (!$certprivate) { + $certprivate = empty($conf->global->CERTIFICATE_CRT_PRIVATE) ? '' : $conf->global->CERTIFICATE_CRT_PRIVATE; + } // If a certificate is found if ($cert) { $info = array( @@ -387,7 +391,7 @@ class pdf_sponge extends ModelePDFFactures 'Reason' => 'INVOICE', 'ContactInfo' => $this->emetteur->email ); - $pdf->setSignature($cert, $cert, $this->emetteur->name, '', 2, $info); + $pdf->setSignature($cert, $certprivate, $this->emetteur->name, '', 2, $info); } $pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang index 9605e7a8df7..8646c40b98f 100644 --- a/htdocs/langs/en_US/members.lang +++ b/htdocs/langs/en_US/members.lang @@ -159,7 +159,7 @@ HTPasswordExport=htpassword file generation NoThirdPartyAssociatedToMember=No third party associated with this member MembersAndSubscriptions=Members and Contributions MoreActions=Complementary action on recording -MoreActionsOnSubscription=Complementary action, suggested by default when recording a contribution +MoreActionsOnSubscription=Complementary action suggested by default when recording a contribution, also done automatially on online payment of a contribution MoreActionBankDirect=Create a direct entry on bank account MoreActionBankViaInvoice=Create an invoice, and a payment on bank account MoreActionInvoiceOnly=Create an invoice with no payment From 87a5defbd32d655aa211a7b053d0cade849192ad Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 18 Feb 2022 15:11:54 +0100 Subject: [PATCH 218/225] Comment --- 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 a0793e914e9..8a5f8166106 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -2329,7 +2329,7 @@ class Societe extends CommonObject /** * Return array of sales representatives * - * @param User $user Object user + * @param User $user Object user (not used) * @param int $mode 0=Array with properties, 1=Array of id. * @param string $sortfield List of sort fields, separated by comma. Example: 't1.fielda,t2.fieldb' * @param string $sortorder Sort order, separated by comma. Example: 'ASC,DESC'; From f4f03d03f22c28b258efe855014006353ec2b1ab Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 18 Feb 2022 15:23:13 +0100 Subject: [PATCH 219/225] Fix link --- htdocs/core/boxes/box_members_last_subscriptions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/boxes/box_members_last_subscriptions.php b/htdocs/core/boxes/box_members_last_subscriptions.php index 930b4d3a874..39ae0140ca4 100644 --- a/htdocs/core/boxes/box_members_last_subscriptions.php +++ b/htdocs/core/boxes/box_members_last_subscriptions.php @@ -142,7 +142,7 @@ class box_members_last_subscriptions extends ModeleBoxes $this->info_box_contents[$line][] = array( 'td' => 'class="tdoverflowmax150 maxwidth150onsmartphone"', - 'text' => $staticmember->getNomUrl(-1, 32, 'subscription'), + 'text' => $staticmember->getNomUrl(-1, 32, 'card'), 'asis' => 1, ); From cd9c1acafece00cdc1098c310a3395fcfaf6a01e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 18 Feb 2022 16:09:23 +0100 Subject: [PATCH 220/225] Fix missing token --- htdocs/main.inc.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 287185515e2..3f8da14338b 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -3213,6 +3213,7 @@ if (!function_exists("llxFooter")) { id:id; ?> , element:'element ?>' , action:'DOC_PREVIEW' + , token: '' } ); }); @@ -3222,6 +3223,7 @@ if (!function_exists("llxFooter")) { id:id; ?> , element:'element ?>' , action:'DOC_DOWNLOAD' + , token: '' } ); }); From 3d9cdbf13693e683bc847d9aec7666e00dec41d6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 18 Feb 2022 16:24:11 +0100 Subject: [PATCH 221/225] FIX Debug v15 --- htdocs/adherents/class/adherent.class.php | 1 + htdocs/compta/paiement/class/paiement.class.php | 2 +- htdocs/core/lib/functions.lib.php | 1 + htdocs/core/modules/facture/doc/pdf_crabe.modules.php | 4 ++-- htdocs/core/modules/facture/doc/pdf_sponge.modules.php | 4 ++-- htdocs/public/payment/paymentok.php | 2 +- 6 files changed, 8 insertions(+), 6 deletions(-) diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 1d12ad16194..1faa9271623 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -1805,6 +1805,7 @@ class Adherent extends CommonObject $paiement = new Paiement($this->db); $paiement->datepaye = $paymentdate; $paiement->amounts = $amounts; + $paiement->paiementcode = $operation; $paiement->paiementid = dol_getIdFromCode($this->db, $operation, 'c_paiement', 'code', 'id', 1); $paiement->num_payment = $num_chq; $paiement->note_public = $label; diff --git a/htdocs/compta/paiement/class/paiement.class.php b/htdocs/compta/paiement/class/paiement.class.php index 2a8522ab05b..ab68ac7f9b1 100644 --- a/htdocs/compta/paiement/class/paiement.class.php +++ b/htdocs/compta/paiement/class/paiement.class.php @@ -613,7 +613,7 @@ class Paiement extends CommonObject // Insert payment into llx_bank $bank_line_id = $acc->addline( $this->datepaye, - $this->paiementid, // Payment mode id or code ("CHQ or VIR for example") + $this->paiementcode ? $this->paiementcode : $this->paiementid, // Payment mode code ('CB', 'CHQ' or 'VIR' for example). Use payment id if not defined for backward compatibility. $label, $totalamount, // Sign must be positive when we receive money (customer payment), negative when you give money (supplier invoice or credit note) $this->num_payment, diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 7be3f5e3351..7668489c8ea 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -10373,6 +10373,7 @@ function newToken() /** * Return the value of token currently saved into session with name 'token'. + * For ajax call, you must use this token as a parameter of the call into the js calling script (the called ajax php page must also set constant NOTOKENRENEWAL). * * @return string */ diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index 0760b85c65c..63a68f7b802 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -1181,9 +1181,9 @@ class pdf_crabe extends ModelePDFFactures $pdf->SetXY($this->marge_gauche, $posy); $pdf->writeHTMLCell(80, 5, '', '', dol_htmlentitiesbr($linktopay), 0, 1); - } - $posy = $pdf->GetY() + 1; + $posy = $pdf->GetY() + 1; + } } // Show payment mode CHQ diff --git a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php index 910790db51f..7f3b543ebba 100644 --- a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php @@ -1259,9 +1259,9 @@ class pdf_sponge extends ModelePDFFactures $pdf->SetXY($this->marge_gauche, $posy); $pdf->writeHTMLCell(80, 5, '', '', dol_htmlentitiesbr($linktopay), 0, 1); - } - $posy = $pdf->GetY() + 1; + $posy = $pdf->GetY() + 1; + } } // Show payment mode CHQ diff --git a/htdocs/public/payment/paymentok.php b/htdocs/public/payment/paymentok.php index ea86f28a894..499ff2c4e31 100644 --- a/htdocs/public/payment/paymentok.php +++ b/htdocs/public/payment/paymentok.php @@ -412,7 +412,7 @@ if ($ispaymentok) { $paymentTypeId = dol_getIdFromCode($db, $paymentType, 'c_paiement', 'code', 'id', 1); } - dol_syslog("FinalPaymentAmt=".$FinalPaymentAmt." paymentTypeId=".$paymentTypeId." currencyCodeType=".$currencyCodeType, LOG_DEBUG, 0, '_payment'); + dol_syslog("FinalPaymentAmt=".$FinalPaymentAmt." paymentTypeId=".$paymentTypeId." paymentType=".$paymentType." currencyCodeType=".$currencyCodeType, LOG_DEBUG, 0, '_payment'); // 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) { From 1107a60b58eb690902ebd14b4f52597ae051c077 Mon Sep 17 00:00:00 2001 From: lvessiller Date: Fri, 18 Feb 2022 16:53:55 +0100 Subject: [PATCH 222/225] FIX compute rule in FEC import --- .../class/accountancyimport.class.php | 6 ++--- .../modules/import/import_csv.modules.php | 23 +++++++++++++++++++ .../modules/import/import_xlsx.modules.php | 23 +++++++++++++++++++ htdocs/imports/import.php | 7 +++--- 4 files changed, 53 insertions(+), 6 deletions(-) diff --git a/htdocs/accountancy/class/accountancyimport.class.php b/htdocs/accountancy/class/accountancyimport.class.php index ece843515e2..ea88534b6ed 100644 --- a/htdocs/accountancy/class/accountancyimport.class.php +++ b/htdocs/accountancy/class/accountancyimport.class.php @@ -55,8 +55,8 @@ class AccountancyImport $fieldname = $fieldArr[1]; } - $debit = trim($arrayrecord[11]['val']); - $credit = trim($arrayrecord[12]['val']); + $debit = floatval(trim($arrayrecord[11]['val'])); + $credit = floatval(trim($arrayrecord[12]['val'])); if (!empty($debit)) { $amount = $debit; } else { @@ -86,7 +86,7 @@ class AccountancyImport $fieldname = $fieldArr[1]; } - $debit = trim($arrayrecord[11]['val']); + $debit = floatval(trim($arrayrecord[11]['val'])); if (!empty($debit)) { $sens = 'D'; } else { diff --git a/htdocs/core/modules/import/import_csv.modules.php b/htdocs/core/modules/import/import_csv.modules.php index 35f0e4bc2f9..78c8f5e104f 100644 --- a/htdocs/core/modules/import/import_csv.modules.php +++ b/htdocs/core/modules/import/import_csv.modules.php @@ -736,6 +736,29 @@ class ImportCsv extends ModeleImports $tmp = explode('-', $val, 2); $listfields[] = preg_replace('/^'.preg_quote($alias, '/').'\./', '', $key); $listvalues[] = "'".$tmp[1]."'"; + } elseif (preg_match('/^rule-/', $val)) { + $fieldname = $key; + if (!empty($objimport->array_import_convertvalue[0][$fieldname])) { + if ($objimport->array_import_convertvalue[0][$fieldname]['rule'] == 'compute') { + $file = (empty($objimport->array_import_convertvalue[0][$fieldname]['classfile']) ? $objimport->array_import_convertvalue[0][$fieldname]['file'] : $objimport->array_import_convertvalue[0][$fieldname]['classfile']); + $class = $objimport->array_import_convertvalue[0][$fieldname]['class']; + $method = $objimport->array_import_convertvalue[0][$fieldname]['method']; + $resultload = dol_include_once($file); + if (empty($resultload)) { + dol_print_error('', 'Error trying to call file=' . $file . ', class=' . $class . ', method=' . $method); + break; + } + $classinstance = new $class($this->db); + $res = call_user_func_array(array($classinstance, $method), array(&$arrayrecord, $fieldname, &$listfields, &$listvalues)); + if ($res < 0) { + if (!empty($objimport->array_import_convertvalue[0][$fieldname]['dict'])) $this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', $key, end($listvalues), 'code', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$fieldname]['dict'])); + else $this->errors[$error]['lib'] = 'ErrorFieldValueNotIn'; + $this->errors[$error]['type'] = 'FOREIGNKEY'; + $errorforthistable++; + $error++; + } + } + } } else { $this->errors[$error]['lib'] = 'Bad value of profile setup '.$val.' for array_import_fieldshidden'; $this->errors[$error]['type'] = 'Import profile setup'; diff --git a/htdocs/core/modules/import/import_xlsx.modules.php b/htdocs/core/modules/import/import_xlsx.modules.php index ed14ae31ebb..38c9cd8c56a 100644 --- a/htdocs/core/modules/import/import_xlsx.modules.php +++ b/htdocs/core/modules/import/import_xlsx.modules.php @@ -777,6 +777,29 @@ class ImportXlsx extends ModeleImports $tmp = explode('-', $val, 2); $listfields[] = preg_replace('/^' . preg_quote($alias, '/') . '\./', '', $key); $listvalues[] = "'" . $tmp[1] . "'"; + } elseif (preg_match('/^rule-/', $val)) { + $fieldname = $key; + if (!empty($objimport->array_import_convertvalue[0][$fieldname])) { + if ($objimport->array_import_convertvalue[0][$fieldname]['rule'] == 'compute') { + $file = (empty($objimport->array_import_convertvalue[0][$fieldname]['classfile']) ? $objimport->array_import_convertvalue[0][$fieldname]['file'] : $objimport->array_import_convertvalue[0][$fieldname]['classfile']); + $class = $objimport->array_import_convertvalue[0][$fieldname]['class']; + $method = $objimport->array_import_convertvalue[0][$fieldname]['method']; + $resultload = dol_include_once($file); + if (empty($resultload)) { + dol_print_error('', 'Error trying to call file=' . $file . ', class=' . $class . ', method=' . $method); + break; + } + $classinstance = new $class($this->db); + $res = call_user_func_array(array($classinstance, $method), array(&$arrayrecord, $fieldname, &$listfields, &$listvalues)); + if ($res < 0) { + if (!empty($objimport->array_import_convertvalue[0][$fieldname]['dict'])) $this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', $key, end($listvalues), 'code', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$fieldname]['dict'])); + else $this->errors[$error]['lib'] = 'ErrorFieldValueNotIn'; + $this->errors[$error]['type'] = 'FOREIGNKEY'; + $errorforthistable++; + $error++; + } + } + } } else { $this->errors[$error]['lib'] = 'Bad value of profile setup ' . $val . ' for array_import_fieldshidden'; $this->errors[$error]['type'] = 'Import profile setup'; diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index ff9b839d1d5..c477df5eb77 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -141,6 +141,7 @@ $endatlinenb = (GETPOST('endatlinenb') ? GETPOST('endatlinenb') : ''); $updatekeys = (GETPOST('updatekeys', 'array') ? GETPOST('updatekeys', 'array') : array()); $separator = (GETPOST('separator', 'nohtml') ? GETPOST('separator', 'nohtml') : (!empty($conf->global->IMPORT_CSV_SEPARATOR_TO_USE) ? $conf->global->IMPORT_CSV_SEPARATOR_TO_USE : ',')); $enclosure = (GETPOST('enclosure', 'nohtml') ? GETPOST('enclosure', 'nohtml') : '"'); +$separator_used = str_replace('\t', "\t", $separator); $objimport = new Import($db); $objimport->load_arrays($user, ($step == 1 ? '' : $datatoimport)); @@ -773,7 +774,7 @@ if ($step == 4 && $datatoimport) { require_once $dir.$file; $obj = new $classname($db, $datatoimport); if ($model == 'csv') { - $obj->separator = $separator; + $obj->separator = $separator_used; $obj->enclosure = $enclosure; } if ($model == 'xlsx') { @@ -1334,7 +1335,7 @@ if ($step == 5 && $datatoimport) { require_once $dir.$file; $obj = new $classname($db, $datatoimport); if ($model == 'csv') { - $obj->separator = $separator; + $obj->separator = $separator_used; $obj->enclosure = $enclosure; } @@ -1783,7 +1784,7 @@ if ($step == 6 && $datatoimport) { require_once $dir.$file; $obj = new $classname($db, $datatoimport); if ($model == 'csv') { - $obj->separator = $separator; + $obj->separator = $separator_used; $obj->enclosure = $enclosure; } From 0517e2e2d33699d3fd2088dd0d51429f8f75108f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 18 Feb 2022 18:35:21 +0100 Subject: [PATCH 223/225] Fix error --- htdocs/compta/paiement/class/paiement.class.php | 2 +- htdocs/hrm/class/skill.class.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/paiement/class/paiement.class.php b/htdocs/compta/paiement/class/paiement.class.php index a59998f0165..84d1b007e09 100644 --- a/htdocs/compta/paiement/class/paiement.class.php +++ b/htdocs/compta/paiement/class/paiement.class.php @@ -1151,7 +1151,7 @@ class Paiement extends CommonObject */ public function getNomUrl($withpicto = 0, $option = '', $mode = 'withlistofinvoices', $notooltip = 0, $morecss = '') { - global $conf, $langs; + global $conf, $langs, $hookmanager; if (!empty($conf->dol_no_mouse_hover)) { $notooltip = 1; // Force disable tooltips diff --git a/htdocs/hrm/class/skill.class.php b/htdocs/hrm/class/skill.class.php index 448538c39a8..724c14b93c0 100644 --- a/htdocs/hrm/class/skill.class.php +++ b/htdocs/hrm/class/skill.class.php @@ -853,7 +853,7 @@ class Skill extends CommonObject //if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : ''); global $action, $hookmanager; - $hookmanager->initHooks(array('jobdao')); + $hookmanager->initHooks(array('skilldao')); $parameters = array('id'=>$this->id, 'getnomurl' => &$result); $reshook = $hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks if ($reshook > 0) { From 5eb4d3408c3c4fd3303002efe6a71e8032ddbc94 Mon Sep 17 00:00:00 2001 From: Romain DESCHAMPS Date: Fri, 18 Feb 2022 19:31:42 +0100 Subject: [PATCH 224/225] Update param_ihm.php --- htdocs/user/param_ihm.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/user/param_ihm.php b/htdocs/user/param_ihm.php index 72f9b075be9..0d2729d904f 100644 --- a/htdocs/user/param_ihm.php +++ b/htdocs/user/param_ihm.php @@ -207,6 +207,9 @@ if (!empty($conf->adherent->enabled)) { if (!empty($conf->agenda->enabled)) { $tmparray['comm/action/index.php?mainmenu=agenda&leftmenu='] = 'Agenda'; } +if (!empty($conf->ticket->enabled)) { + $tmparray['ticket/list.php?mainmenu=ticket&leftmenu='] = 'Tickets'; +} $head = user_prepare_head($object); From 05f0f1733d275a393d5aa5192eb8ec53f7485d09 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 18 Feb 2022 21:52:33 +0100 Subject: [PATCH 225/225] Merge branch '15.0' of git@github.com:Dolibarr/dolibarr.git into 15.0 --- htdocs/hrm/class/position.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/hrm/class/position.class.php b/htdocs/hrm/class/position.class.php index d9df0624b0b..ada58998238 100644 --- a/htdocs/hrm/class/position.class.php +++ b/htdocs/hrm/class/position.class.php @@ -853,6 +853,7 @@ class Position extends CommonObject * @param string $keysuffix Prefix string to add into name and id of field (can be used to avoid duplicate names) * @param string $keyprefix Suffix string to add into name and id of field (can be used to avoid duplicate names) * @param string|int $morecss Value for css to define style/length of field. May also be a numeric. + * @param int $nonewbutton Do not show new button * @return string */ public function showInputField($val, $key, $value, $moreparam = '', $keysuffix = '', $keyprefix = '', $morecss = 0, $nonewbutton = 0)

    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 DS8|2j diff --git a/doc/images/dolibarr_screenshot2_1280x800.jpg b/doc/images/dolibarr_screenshot2_1280x800.jpg index 1f3231f82a4a255f34701849ffa50498a35bcc4d..2956a55d36aa8b86d46eae11e987f1c88c4c77e3 100644 GIT binary patch literal 159669 zcmd?Q1z26nk}$e)_uv{lxJ%IB1PB3wy9al72<{ME6N3B3HMl#$HMqO$+i>KbxpU^s zf8RfIX1@2j`deMCtGc?os=8ON$LYsq0P0&YNihHz7ytkU0>I-OKo|f4{^XvX5FiH$ z4f*6?p`oFm;b7t6;b7t5;1N*};SrD#;NXzZkdRSOQPEK05z#TwQ87R`>Qf_NPc5$>Kte&ofP=w; za`8YJ&+fN8P_MwB@*igbh!CKfs1T^2qzy{_T^H*|fU6VpP=JDJXT4EenjSRJey}jT zR$@DrzPf)HUn>uBAyI6ipbv|%FwE$Re+OU7m@}>UZp1;7Tis(MCt$s3yCh?vqLlIx zP_%_SBNcxQ*!44-WpxSq!C^L2uRXIoVxPD%)Y-j$VqQN~xunxo8QmD+&&Vf*NvIaj z$lx zM?glY+4NM}p~!-(zC(+Cqs{iWh`UFC>OOI7iA%lS`OKF?PVF)6SdMhN13z9u`Ux>oY_~V_Px_nc9y&JeluA=_s9ozEkh)_{@2c3SRO7Z&-7-(>tBDVX zqHnBDsl?iAJynnRx2wbk;RxLM*|@?yL^N@8&O@zCA-gI_cM z>`rCNHp5I#tD?^5_Qc}dLh(7x1H)4C%|_r2*>`^NuZ{-}3{%;c``Cf+;Q1O^xIGl+ z8!*kKC5hH^hAsCardB#bOb?P48h7}w=MwXm=j`%}W#cFEWhDkTDtpb`TXkOc4{heS zjT<%;sD^OUX)nn5YLK&RRBh{VX1E4)hD>A^*Ch^^I?BYP!{bESjOP?bAd1)K$91wT z(0yF8?O*;DsbHNSaLnMP-0;4~_#8i=_tSBBBtB8yp-j$XA(l3u=&GHSnU~9aNfX;^ z%SHQJw2JMiS4zh8`K}!En9igx^M2(CO6IQ!;FmcAzFsk_9T|IOt!~Kqy@T)?!0)5* z^6k*F|IW*5Gp0Bsu%wK1Cug{%rjQnvoP{M_=$ zf1CH#^Zt!b?&Vr7zv3^LFA8>`0P&2`Wr!oc<^N>}4r>&_-g`((Xep_H36yID_XZV* zqBCkexTsK* zO={?)U8VHW^$y-yha65qhmMWLV0m{>jIUt&4ORr);r~Q4G=!&u4yI%H^zj})GG^ACf0Qg z`Ze6pve-Gu_<+r;i1ET&EoGP81Ieh)ZL49d`k~v^XnQS=@eh&lHHRvDL16il^9vfK ze02@Tum8vf-zFbT9c2~FNhpVZMj&lr`Z4zaqS=S9OqF|!I^BB7u-Vt&hfmF4yXGC__XhcC<8EDKGZFbliA(I*26V2DnC&g4c{VbyoR&=vY07PQm-GhplwHqE)5G(%Ryo<5a z4#WmRQMPRd`20xPW>~0=p0a5sSiGT@~Ua*LqhewPX7U69#_Z2>J%-PCkXmO z>c21dU!Nky1b`(;Z`AWxn+S_Wxu{Os8DN zdy^w|I&yNx+l0a>+&^+nXPxkeuK%YfNJswaAl5@JplB;Yzw=)sadI+fZX18LM=Tuv z@^+u}fR;9^u3xP>eCOIju5@vAw?RM3O0#j!V-P-&;Wo~KC|8#M5#SbKRrmuYW%suR z|1`web`i_n?cTa+#Qu4MImo8*U1)6moMKPG)46V(aL@Usto-D(2AtPY{WSW94P>k! zN^dSex0Pm>fxTt;8s8eO@vJGHh7Cm6VTP8B0@=HBS-ausjCCvjQY{a7WfN?j^dvK4 zBGJUvbIXF;G|b#%n(i=Pi_L8yd-=0(?3SJVk?ubIXciRW53C!aaKdKlS%zl>q$&zJ4QPVmr^Y?^QSlFVUM~{oo|kS(j2qP zhfb$60y@P4^9F9lcNum!sP1W39Ya?ASbqbZERQTg4|?@lfraP z!aEbx;2(HRv4?;Eo$bn9lVJhPt){kjX!-a z0DwqfjQ0qb9nP0$m2o3A!0{4O4Z1MIG2Liu9WqqAuk0(6D`{(+3J+Er^v)F2J+(tp z-Z-wR5@1!g6As#!t^hElDouI2otsWEGeFhn`UnT~~V|Lvi!~DK`R`pda>UqtlEg z%tkZUO>r3=w&t7&x7|#(RiMKLBU|Z@*`c_4Z_xC6;txuOs1ey~As{VXNIxmCr|3UG z1V|f{W=ut+Rh21~6f3br^?FqelvFX}MGd2WN7PgSm~kxrpcEsFHi_7sUNc?^chzqa zKw7>&Wyx2nD?fiPs%k99p+rT9|C(1ZDK2L6pBnnT7^p?So6tVp<6;G7ai#6y%#l&M z>ir4(#sEuolTG~Sa_?vMfJBiuk`q$X2={y%^78K-gXpfbK@`|>@btJ`>b=h8Tg1@d zu$-QBF4o#g@SC~^M5zA=7ySHO96~gIRQ}`T~ zzmoxg1q4_+5TZ=-)3OwK!fRIfRj9H{={)5>trdvPQFOV#1Z}kSoIMARl~z!xrZMub zmVpMdD$2#DepzFHfc+c>thu?z5H5MM%x@w^1Tc(y#R&L@69k^h@RB1^rT zWZX!vXs$O7)%AK);Y`(hl;ErT2#~Ca;5#g3Egh`$yjXO(2wj|B;v5kWj{RhokrUTZ zo{*l0Bx9721%RG4W_I$!3#`M{3E5ZT<6y#tem(rD&9;3FAPWY zmq?1;z{btQqOI(*45jbQ*wDQpLLF0W3bvc{B<)KH$%u>AL^6LP4FCpZ#??44*4cf8 z&9^ZOQJU+}cSJWjJuhDKEN-5M005nY+fY?1)-`38q99wJg7cdU5~mtiSvzbTNLKR&O5sU!>Xxao7}Sc&N4~6$2x?)phMP)enw^6X^?6iXFNIY5j4+b4HkN^@gaC*$jghpx{TB!J%yT((ZK_XSL93%#7VbA*{~v`~_W*z&W}MN3LCpfw zd5?)xGAD1pWB*>vgJ;7O)uIcMXU!?zy7ueHzL^8(OIr*<0N}~$LkavL^x>~Sm{_lk zdC#|86;6zY9yRXI0J~y@4Kc^|TP-&$nyM6Gd=F+hKH-aOOD_@j3baA9B^D`;SNtAj z&$0vtZ?8T$V%${(xAsn3ywi#Y^%v3g%mWgp>$*V7*_yPb+}ZG??3n~J6D?Y2Q#ZZm zozwH)LB3%~ZuHCM+0eI*x?-7_P5RT6aXMSggNo%}xCjtUDb(2H(b~}Oc-^etO#A-3 zI(xHm6Zx$Z#9_#@elQ3qAeb9O=zN^2)oO#Me9uxPf8K+ zWB`L5-2}b;OOV=Zi99)3SDMe}O#RW80O;D`X`$}W;}fM( z3>GomhW&69X4MxjWEA?yb(@~*>k9YWkiMQ-@B~vgmw)CBy{bswr@w@zbe}@4 zLV{|3`D-I}Tm=#Xo9bgngVGgSW|UIby*l>*6ndjy`?PkiFHClA8{kl`%jz7FdKsPe zOv>{E5{Gw{Gj02Rthu5CsA<`i`tDHM=(uUq?3W@>D+es1XY2E7R^=>~J(ds4A%j@XAAe+>%Z-b?`wV6)itm0FyK=^Wm|b5~1k+UQ0+ zN}CzFq4<4qLHvZ~p=MSp4k0>#M^_gkn^crjZ01$@r&%l|))TuY3}Z$fnYb5IUb`Qr z!*T)VlUv1gwwaRtW~eWCXY-$i4K$T?&NT}ob{wg2^BHYy!!U>K1H&}5+D2IeeBu%It#6DohKuuR$AX6-2R#r4r{ zdU$je@ABzclFgFp=mU98ha9E|R2wf6UHJKVY;p5mx`wYevI=@16U`pD_AJZB%)+*89f2c8e734^L#P{7W$_f=;J^T!ivD=K7(ed`I=h^Oov|)cK9%NQ*i~;?wCs?CV)E z|J;j7hwg31iDB3+{05iR5yt?B_7g(y)K&R|u-$-t(9Yr*K{GDRhPPB%a$eRcJdG?~rwhSLQE z0m<*&XY&j9ov)OgJq>2Y>$x5QI?tNmX}A!PWU}!#n|zGms|Pfdf3dLs(4A)#_Ma1e ziGxe5@p;2CUqjkCNhmX4kN1ArJk8#85I>Osywyw5k*pVupvO`47$fe5LmmWL*COCUfP#njC*(!#x?||3nm6 z2MfNa0%mlT5$^#G-F^%dSkKKy9F9sg&B=jXEB_IOBw5r2fF$A#-k-we$g|PcAY~<$ z-(Ab#;9NbLV|eO6Nir8*_+x%H`5S&Lr%b;wmRYUlF+*(KtqMHo{m@Ni-v1y2>>udA z!6XR+%fO&%X^U3XhEChh9}@2g!+%~$FO6_#4Au;<_&$?3jVF-U(&D=Q$C+o~8-c8KNB{u!_hz1G z1aM!b2ZS^5{WPizTpZgzuZjB@e+jO0>g)YnjH&KRWDo2Ui~h{X7srcLII$Efzf7hC z*BCQP-cuLagey7Bp2(RV4e5EC3D{`h=-J#_PrvcC56~|S0|3Bb*U-NG84!8=y21X# z9{KmJ?Z1koOoRW&yYs);xc^hulPqDzbxoYwBuvpMZQNCIGOZs%pl~zUY?e{>oH#ob zcZy$?D{WR7I(rz*JHQ+K36j{)_T!&%>#x$lz#{grOmdc@rs2V z%&>}v%80RbK$V{whFv?-!C+5Rfc-B3ohiCD{c$th(+PM3p~Qa$groCatPn>?a%~7) zJuA86IZKN+j?daoX*H1ul&uygy7$i&Q$t^l%X|O2Yw!LJjW4)VyHPRGY#YfvrQnw| zGrwqMmmxQ1ypCU$@)1<-HwWfDyu&h|k|N~rUBk_0(oU7%E@-HM_hx7?54C-RouY4d z@s(7wu7{ZuPZwFDC2fNNJ7Il`FBlh&d9S?y&$)fbp8O;NjG6dQeTh_@gQj7Y74LVv zh0XOxfKz&fzVa-}Yq8TDebqhBw1`Pp;}S1d%~?yii=l9iv^dQll+ooYY*mZ*CS2or zGc8-AlV$V$e45JI{U=3>HIZYqR(uGDO553g1RXSw=@eg#W5j<(h;!p*Va> zO&0iU_R_lUoxp}Gnn$fbL>N48N}kOD=gZ}GBm*cO@83H7hY*wA-wo<`uZ&Et)hbGA zsL%lc%l6~VKp=nQ7rpGl8u^C2(`}r)=bHKE0FVb@(m%y;t}Q?T)DCC-(I7Z@rK;(5 zNDpsY{IkXN`v?S}#eEg*b(2=0DN>+emd@*B$$HTj_P-Rxbaf${eoxZ5j(%*xdbaYN zckMQL)n{?PHxtxdkb5$$+;5Kp6V4H36LKnw&ON-wQweyWw5<@9XkFKvy`0>y=U!Kt z?|&ZD$WJ^zTjAL(rOd5WY}a=SD6Y^ypj~x@WoK5^CZ^0>sflmrcG8o1Qf`Pt88-3@A6e2lkYNH*+Gi?G`YN>P-7s_byr28_tTG5LzkFB7t5sb_-aUMn28J+J3v}h`rO>rH_|13VOi)>b2eI#@vI9o$|XJQ({+0 z4wHC}T2_a;Y7LQkPcx(I#*gn(w0Xvk7dY_KWV3f~p&&D#YzKZ~MgKTmLlspetS7`M zqkLoGAJN~_|28C>9Ds@zLx%omz{PS@-Ni;r6>&OItwc*01Ofw z91H>ydelif1{*0P!o4X#7C%hJfj$W zPg7tpPvimiRrq{WgS2`lY5LeHn~EsTj&wYb2$6S{emI*LXZ3>VnwYpGpEz3_y`kPB z;l|Ak0ohVLuG{%jx+w7@AawK9()Pgg`+Kf)+QXtcW8`iklx!;EvhNfbsLh2o-p<2k ztBnkb^V$y_6&=|6^nKq}Pp#69v0u%Dpy3@ z$lE0EN)QA9F*Py{7aW0fSIq=p;IWB=BbA9i%qw-)W{s`c&_0zB4>eBb=u?%G3%*Dlw-LlM@(cw=8Fh+L^;|*3- zXL1$Zb4|#!kZLI}odkeh0)%J1#Vx#lQxpWavB9xHkRy5_PqvD~vYh$ZJY*4HykDJE z6eSmJg`vjb`;9*=3!g}lZ(sv5h-Zf$ZlS`=bzZ0@ zn$h?wJpyv$=`bGwH^Ew5lV9^gcEBfL=8}C?R5=old|ML3$IKDN0>gpmYmF|^crT+m z)|8fWs@J`X55MH{c#?p}XOO^NV8Y>u1vUHpbt2i5rc5%4DZC)LokJg_Rm((COz zZQVC7+*ewd_ylG|HX1_+Ojy1RaDJ284Px%@DTN~D?g!>w8zvA#88cND_+ccdw&k3K z_gQ@@OC66%pkg*iQda3Jj6S*M5@$9@8Dk`^{)7^*mCM6mTeQacqWyY`MxHx^;xo$I z5VGQ-_~J)g|@M zyvTqa#xsh8#reCZ>8IP+sk5D>k;D6XujJuaWG_dJ8GSlQgt^x5$!!Q}_^fCj0rG}S zvG~1R+;#QAKD|{%?hS?2Dk0TcRcA*Zl+i3K{S>YF6>2c^99@A zR#Wk;NluVOiFeQ+0Y6-rq0kh|L_Wj5mqC~j?2v*jTfK2Zlks67)YY23SzK6ML$76w zO+1J@>v8TV>xPY5c!8Dy516Le5{xp}ht3%f9`MGA&W0u07+pRVwtp|?P7Ps1qu&74 z&h)m6`2=TP8X~jhh0D=bumTR!TCgBQ-4UHC9M^C;pW89VR7?F2PFF^LuIQr>>Ud?1&5*iP$$x0h2#b;l27^s_NMvZQN9>P+~*$$A57t?h~mQyX%na5+`c z9V4XF*GBQ^9Zi-PB$LWRM_M$^2>-v& zQgz1;W%NBZJkp{AaU-GC8F56;#mm}%y3`+`%w0K z-j8L|%Jn#@OCw!O^RD7|MA>&r^8AIbzswjDhNHgrXNokU=%a2ku{5IW<5%b1xB8K- zBcJ-Fg{_y&sgaWCl`Tt_M3fv}$37+NB9_+$=8yLaC*!H9N|5}TZss}a>I-qiH+4!E4b%>Wd@iK(#4&N!N2`%pTh*%^=>Mg?8j7}LeP0aXVs4A<n!R7pSc%?yTZUyoH0Q>tG*&d zK{d1x?^Ol;ezDqZ{@9vz9hO*bVDEm=7h5e!21NYpAICnuE|4ozwmjUN8O98kE9;o4 zeq8LuQ!i;4nagjAw8Rb69|1s+uBlzarpT*Wi@&feaAHkL_O>m|CtKmaWWUoU4|x3` z#Q=<#WvtPw7`74YLXGSW-F*a{^SM|(0umEG-b8SceO6amiRqia$e6B=`d1*OVoYH9 zoR%Xf^&Phq7SqoT12E=+5}d^z2ulw?>q%kQiao#8J^Z|%=05y5i%aH=w$x-859u5= zOsebK8TbBH!g%vZKOLMSRXYj`f+MgsWrfGX88(F#Q9FC`E_9)l(610&2)?> zBMfHo&xwIBc-WRGB4$|D<~GG{io7dLt~covT3gzXJE{TskOS~@lS04f5_YlNKt{@4GGcQ^jYJ;^x-=Q8E>+j6ZnAKlJ+Im|oBWID zc1eE|*#n9saim0iG(D-BNM*1I`WVGGspqKNBY^mx81yQM2meK;#^m22r2ek9iGbAmr4S5kqcMU|opsh_TwW{0JIDmvOq=x~vIE>u=9cQ`dGk&I>cdS66tdat z>>M@amUZ|i{2Fs5f;2$~NxFl4jN0Zjk!PK8(ZkANf4rcL{I$~yAr%3oc}ywqUU zY32`q$dGshjD!JtG1Mm6A_ZqDbI0{O3 zzk=6RI-bqZaz#s|-rAz&+GDKkdSRnvXIdy3qLKL~6i?8w`#gnqMg)x`bPRG&miPpu zT4Dsg7~h{_WgkFNtF*)TOR5@TMYM5esA7>PdK}+%dDxhvl1Y7%2H>ow22>M@gO`{MzneDy_M(3FCCBFyPMdh&(I4z`qn9s~Au=TLPgtPc9JpewsQAB`ezEK%I*2zq=M zzK>)xwlqCpey-hqYxawiP(}Fc=P5}nmZhPpuiM7FCZV_n3O(Y0oUiCV;`V)sXj9z( z@QQhVcYT0jkJ>8SO_`Bm4fCb(L>B6(3zSF)k?=cRqBAJ}=dprX(>}$`Gb^Bw&sgF} z7YBxFvgku8>KJ?QCPi`-kLZ9VZ%wpUi&)ghQBvD}+;RNDu;R7U57Xc4TRoM@h4`u( zZ91yzU^c9x)o-oI5;wh!vfY{IF}enf(Y_l2-}y!%sYV!%lOh4_eTiqx5gTc0}>a zCC_mma1xYNaqG`Xe(LK-2~I(mHeu%gu1FUGW09?hV|L+HY)Mh8u#n4A~|f_O1PJ8XxEp+Wx&@p`px zligr>Egd}1smKO!4DGG0Wt(I%9tv3507%jY<}khPV_soOuhwF&tvv&GzGrx!Xxu&p zf(gaH#-Jbpdp!YfWI%I8}eD|2mb&(N+XEB~bPccte+A?_x=d2uCF9?HN< z*%|$wtgdqKaxV)xY!uQPgXJa9chnYriA1`xjCCbuzB`!r^AZIq-LkJ8G)-tFZ=T4? zn%h_mt7qBj&tmvP&>Mbab+r)tjeRh60cg~xBkcsvU6f2dv%ziHH((fiz`)9u)Jw%( zH?WvEv(}%YBM0fIo&xyfjLVz6p2F>aF6R~~#hl&`(=;2Xv!0#^a%d~6` zihgEeG3Ns*Jj5I}b7*QhGpvyyiF%@8doa{+FA3Vvh4wuwSUmOTo#h&Xb^? zZ)i4PSJu9od%jAaERKxlY;8O95_GoiEapRajE;9*99NAg1Fm^ZyM_kh?!J8sPFKbh zSue|uA*K#xK5q;Wd*$D&VHRN9ckfVLTRwc;eMfvoUnKvoh~0@SO`IWMVDfB)VyaQY zbF?_8l-)Y}ST)86A`*`+-sUNC&y9wz57Y^Ha8lS z;?j1#J&yUGMsjr0n^}~@;#Mh~d$sOcaVlOdtpUv6Xzb9vL6eU3rh} zG}|j-y2zEtUfrG~L+jTov9awF=msvMGzUo*8H-h)CD@~j5A@$i*o(H z)WqW8!s1PTBS?zQjxdL9@7U*Fby6{*qts1IK|$r4fb$Qzwg@HKVO@5C>3?A}G{ylP z9(UY^bKDfsW4$VEK3-NM0LIC7wk@ z?Zv z!HahF{HH~uG|x_4QXrm&WY~i^1LA zLsctKbo*fD_D9~?QgjDjH0|LNyeZE(yf7$geJcj(b-0BKF0cjtkR!5-?|PF>6*b-g zEBy-G-$7H)YY*LIUkhU*HGY&Qo=GHnx$o33pwHXIvCG%_Bj2bKUe?5wnKLr3!;8G?2n;O| zMP|E=(t~YRSU*-}(ibTm(uQ<_#APxNkE9gY2bwu2mf=PItefF5gTK}H9tT~G^?~f| z=-CY3LrN4so+Di|kEOm&VtJ7o1M~EA1>%gyDPE*R=4t;n3y3K}d%Z+Z8 zsP~vi)fz{4O)!@=2jz-(v0E{9*@||hgTTeUE%^bZ#g1xqY5Hq>BwTt$rf4}L4jQfg zvqpV@9t}@2__%7P?~^A->N8MMiq`{?TJ{pBLK|%QBAQpfo4^S91+zX0UZ5BgKJ#h= ziXZGJoh~-6Xc4g~+cpzMiwLJ!DPmnHLy>SL9~CjfIK*Esyl z>L3S1LcLtYZO~P*zDKHP3g&-XL$@TiO+iqd7;`b7oDp*Gf${I7!e=$^%dlw=)-fd> zJ+=Lxf-bv^>M8AUJv_Ep_OqF6U#@ophkAXt@0G>f%H>i%x_ly%yI}^&yb}F*jblxF zI`xFP`XMPM1drUC-kvwJ(s2yUGpGGG*IleZcS>}24Z*?#k_4u>VV2CWCkUOSSPEQs z%mMX9iXkYN!DS zA-9R-V34r7)oJSgek&VExFzeyXFD&=2TxQ=TR)AFlOD%%^*$OOWP__HGO^}@`0ySY zLCTXnsLJ4;{EfKO;Rp=KHT(9EMdA07b}qc8{rRaO=@7#`G-T4{wIv1b);{d}W0^~q zYxl26q@_zK5W}otqUBUXeL%OfG}EHK1BPgQv=nz!;#Uw6YxpeB!S|iIuq2c$UJuDR zXdGcG3NtY7kYYNKL+K@)kxB>R9ImgS-=>=x3>G_5SZs^UhKdjyha^TWmQ?m83uRv= z#*#rlTwR(v&4-!KmUac}1F4Y=c3J&N`q8gHZ1#6-mq6lDCeXa0l1P+-3lDNpQd{q< z?#LRfw1hM{kpj1GA2=)3XI7@x=VVxECkVFhOddjMu>mcnrZO{~$<|^&b?9m&bG&Kx zzlydeAA+`^ezyeF@}eH-@jdTZrCf;WcV5h(u0t=c8!FaR7%Hx&VO6hPmE@|xWbNo5fWOi8*QQ6ha}SsPBYiV z-<;fm_EAR~8{eI_j*a6-g{IDq8%+zA@5~YSWfXr_1R5&)(P~o^DGDIJH0a1Z_wb`7=e723))bBCNd$ctbqGhRM819QmOaGM!JB z?j>wi2ok-6$@d13y*DFEB6o~#VA6IO-L%;lekfq3uhdl>u8vpDZf-g~QC|2rM0KZ~ z=18TTb;-BhoL|Z{^}P~9D+{CLgCOP2*aRIom-Fz`7saudZ)i#-X%jhk12O7G3yDLM z-qlo?^K&0&Nj$U$vM)Jm%p2ck7lF+x+2nWDm*uS!jD5uK=N8q_SJjkPA6Vm!Pc?SP zZo8Rw&Vm*;3@8SZ+ZX;$a(P~;?BoyGF>{zy{cJlh;&n9}suyX5WNT%eP%Vl}R zNl6sMRpvGQaCzM~KO0T!j%%&(f?te~O87)DiwA5*j@KTpq&mk3tfYF1C>$NIk|L%P zc4e2D>m=RTfP`78s3xYp;;8c95U8A-6OaH!)bfsr`VxzA^7WDQJ`v&px#v~5=$*!w zXrXh%Y+1h1@k-DI%wT55xW5mUC~OCPHtrG-bT`FW@69v_!w3_eKqqjPquExK%Q!d& z(Vv%%2;^hATW*dqL}oxmenocg%$rPbjpIUf6R$*;CJ=L+n~hpt z(*vq{V{OET^ZX*%0)3XEQtD&;DE(J;k?Ox8N-*V7Lq(?+PjCc!1Y*wWV9POC{pkbpk0tVXE_6v`f_ zsC-LP6$m8~NiLx{n_2sbo`$?rTa9}9hLxHBRkc|@!zT6FR8^f9`VjroA;m+_M%Dh= zu~owUB9U@ZF;Xpdo$JkLKrhF`0`P#Un(dm^Pl{!21l%k&>=955E;5WP%m0qfe61rv zm1tn(ss<*$UqyQX)QP{<`rWxvu{CVVyRfpLWvfn%)E15r>&fp3Wj4YPL_g#kLNY!A$m+lhKS*{CMiRtoTF!;wjQwnQGWL}=ynbvNR4uz? zdq_iYLrP-cwXmqJO|82358tcnNz=#Lz1m`yxOR!A9%;ElCH}&o1Qrwx)ZSD3R0U^> z{(~Y<>V5nddZE7~ie%>H3i>$nv18gpRe1#PsZy)*PajVG2V%w0xK2%9B|?%PFhX z(s+-J^hP{?#=j|79IN2K-kO-hQe2{JaEDW>=-pdUNvhE>N6&f80yb}G6tusM#OdF0gF6liiNcm0;_Ww@-?%|Khs{{@xgS?K;SDN_S z3g43-yo{fTH65mu@XX5<;|_bR8lHql7Xtj@9S!;!UZlz?mO{$M z{`zHZV~G!ZD#_PXwy`|n+o`OV`K0e9%xUV!Ri%B99nu{9h3_kq^HFLsb(8StFfi|o zVLG)z8&0C^@=`d@3p9V@oyIo&D08#59^DopBN2Clie+C~WN@g9D*cz{W~;q6Ep7E} z5EPk1!Q@M;EC6o7Z~`>2=X0sTbkON~PprN==IMr>^*41?OJKPfw3#0f#@avzUCf}a zB>8^C98a)J2BpMmyk^j#k_pN^E{htXI6@9r)3PEs0_jM*zp4vfGkr1nM_{n9)=7HE zLo=LWX4e)*W(UfvG+!gd^BkH?vCnvcVPVvd0EMCwV13^%?cWgOeRttD(8ZY4=s6N$ zHTZOo1DY!n(H$&(c_qnWLX_qy;AD7jdnk0wR=@^}KXp<5kdqaC zq6`8@_%2wkW(?9cFJ8kZqK7IX_Dh^?6kwV8D?&oXb`=;73J~VTl9#O#y>UM0&e62l z)A-!T*M(_7oYQ_UcM>9>vTyR~#ADb_W%fZ>&ghH`cJCHZ$y<(_U3y!fN4^Z)r^nR1 zFS`#CXX)_rMO%b`suI%|?7dh11YYJ=%?flC= z-wmUm_OH8ti%IowY`5|ZMqoWfQx$_bxzW#4^95|oPKVqd4CZq$Cn=!Cz57=U9T6`2 zLAz===(j zD%&KX808LG|rI)JhFLDKcLpoDwH5r0Kc%x0%`o zRzFKik*u4HMFv_XCj*Lzhl!88bo*04I!F&y2-<_8V*X8j3+{evS(TzO!j}%)0i1Vq z5=@yW`$J57!UcsT{WQDKPKuMfLa5#X6~Z`a-PH=d_080JZGn(pZ6J*oD5s!t{NsZ^ zIwI*R02=A6e%QJPRg@g_h%|=J!Ce|YITO)cBD?1k6UvA#?EB?6Sj*Mx9jF2rsn#NeV_phSZq|+a z=1W_#mujlL?y40V@77RX;@BE_5R+E`i3nZDSOp}yKB{r>yJ&Tx#qrvDYkZR_u&&M1 z!a0-M4OU~2(UX!tMZlhts9qP039))&lKrbyOr_=$=9;dX$H?C-%k^@O7}yAnS_<%XFstfDmt5c-oa z7eZlq?Ye#JpA*xXWw{tls19qYG~CZ(w7~sel$gjIc@V0s3U!^G+jFX}v4@qDcg61D z?#tiY7?Yx|(d(53I+6AQ{>=s=$P!ht)4V*P-LSc`E$+nfw9G%o6U{c@n4NFQkHnfq zTkbC}Ep08PB@??Wwy&M{MVwQfW3HA>LHs!X6^LfWjffA<($yG~W~ebTt|{33so(Ug z;S}3mB>!S_E&2M$S7jq}UNOvU-PL#NFBFdn4K;d+#9pI#FI*XH5Q zAPjBeXQ)Zy`G6v4K}#7UQ}uzR2Ur?pKI9+Z;TX#>Sgfy`yqLq(+fxAZQA&`&dXG%H zRDW8`BhpQ*Z%D)?x1u2qOC#dF^fEL-l$Rc8L)N;VIXAmxMA(oyqtpwY04}0Z7vemU zrcS$)8X)-978=}LM>MaRUh`en3Fn(jAnC;X+oSi%W{j2bC#^EU4*r4OYgaT_{X;*05&EhwvYy4m`ie$WhJmGiQka14&X1 z%0p=k5-Z^GW@&L8*{VJTr|1Vc)mRsoLzcZe(1cIn?~^g~UQ-xnQnDY-Zgawi(^IjD zd;}!mAS5r}$M`q1D^Vm?kS9|_eI5D&Wne5+{6MI$)>Rd5hBwJxWTrA%Ui?>4yvZAo z7OxLBWR4AkoXbMPx^Fd}>M^RH{x&=*aO>s6(oC|6PN3I&ZZB~Vce58rU^`;AA|7|~ zHVij-!PW#DBF$}9=^0heM0Rn?gz_NDM^MEIt+U~gYGGjGG)Q{ zSQVSAfenqXdg1-WOTAw4PuDUs@h_%@Fh9dTz^OwHE;}GX4xinm>&rf5e2`#^z?P-O zWJk=0F1|@P>AoY%IQZLb<@fP;laBz4=43Q=(7x(o zX00~QUQ1(_(k57e+~%j@0r6bdQi;QTbaPEFIqS3^c@KZr!x?D*usNJY=ZI^`>0&>U!Be6jMnh5qW>3 z^H;oi9T`WWrM28R%iYqWqz{gfWlm^VSvG-OrQga<3kumaCCV-$_alY5frewU%n02S z98BOnEw}g=7os!R2Aa{1|5>1Nat2Zcl2|S1k*Wss0Xc%LEJJ*@ z;f#x~2{S`zd5$kw~E223)fqC>jIdYu=P^-1)6m89tH19Rjgk7A|ud-bimyvR*Y zp%3qDzBhriv(IkdR9q>omQrJ}i`q%my4in!G^eI}zdG%#zE4ZfryTUBLdIyq5XsIF99{5M3yK%YhQV`8zZ{IdQY(&>!ud8051qcsSZGoQ*H#B4~y}mb| z`<`wSrH^rsrw#?0}mZE*x#WZAl4B!d;{r+)Q*!FM;|b?bT?6Lpvq6Xvet8onE2 zD_vZ47L1UmGxPp24Erz^;BB)VccKBqxENZk_X$=b8zKF}9B}56(p3ZtexxxO= zB=sNUctBNiH0XpW$Llm)RxQ1X&(!tDdH$}#WNz_)fAp+tz4q*XtL5~YF~_7&dihB*)R`elr@oiSh5dAiD zghNj`VrqX>mmh70Dl%k=gY)Z~Ym_9ItEVx-(vUb^+4OA>A!2V`>F`7OG|?G;gjduh z08zj@8zS*}^s99cD&{5_q$}8wnwLccE&}s#`|g1B(Q7Xgs(`j=B1G!*vPVG3Z#R>L zyw+U*?FGDlx{vq&rRZBSyrt?cEgj__GwNv~Yiy^n*X+7qnjf-bQ{2e5Db`N#t)*_F zh6wK^jX7f!dt0xubZzuc)SUA#Gp?p{Qab0myjK}YIMpE8rtxEd=s4(;fi~OIGA?FEVJod?+lgaRyIoLD=FJ^ zo82oEWfjzgW_ zkvEG=Avbc^4856|jOSG?+eEoV%1$C_=4&~|oy@xYSza2O82d%mfI(DFfV8}ntHU~j z*x(jLPgljFihVzaygMF_X=SlvfOUGR6V2-DYY+EPm9__jM23od)cqnl+4pYhiPl-l z-AeJQ-Wh#aZ^GtiHUmfIeOqk(O$Z_k<7`NMMO=j59d@yI9v2;(DW|rt*^kq*8V%?3 z+f{tzQ3IC6F8i0%KpQsO`I&6%+Bl(iRx_)qXoP(AG|=q)SVZ-j_2CP|Jc~KYE6yWT zOqPSD^2V8E{I|W}?BVVPJg>(-J60K??iGd;aG;Xs%vStA?7anWn@yA@YK|dJ%#N8! z#+VspW{{bgnPW&CJ2A7&%$Cf|j+vQaj+yPm6mwSjXSQDL?#!#2s@>Ur^|qvHNv-ee zzG^kxzJ2bwykdPMzyGy4s`|?t;_W9_8P!T0(@>NO_iD3v%+Uza>S6!^QK+GH6OJ|^ zSC4P0Ocg}WT#1iQgoi$9Hc^mlo?F$KrhQLR#fasiDt#0{jm=Aot;6RYNs-1?9m<1G zDn)N|MF!z7G<6sdJ&2W$Gxor{x<1#v4gZEMqN8 zhm%&m3g#s9k`-Ciu$@T`>04E?J$;A!O(##W7WYKUqdJz5VBIBT@r9Z6w)EXu-! zhQNDy$>cOJqWcTqs-P)!OT4*8I3g>g0~A~Lk@H!mdwsO4;;ZeLLhm~dYW&T=yE3r{ z(PcN9shH&s07x^f#!33724yS-6o= z^WK`(EU|&S>#7Y=eKp*i*YL`0WDRmr~>=2``Nu zuA^SzMLnq~;(_r~C< zBc_Fy5oNfJGTZ`L7fAK;mBtw}626WlocdjlHa2Q-@8(~O7S|D51I`#Rt*wO^#p_g@ zoIVsEGJb3To6-C0MPF{gcRwvhcN%XASa&oEtUBDzFg+3by-A`O*Su?L$ngW$S~ubG_7eUSiUWGK za-Sw|#t!uRVtqCuydxVb5H!s2R&W_I-xfxdsERt4qo(}>w^vh*A5N|Hh6H}7071)G z1cx?v`hU#Ya#^L^jv@t`g+2T|UMmTn%Dla#xI?>&!VOnWk97Y4rQeqAKy2xcxqTX1ZvYl!>WpU}X8c+|h^-{Fvu3;TY0=7%Z0r=lbd#pJ_|C{8-P73CQI#oshwl7tVRHCNa4V+=RmWYtxin6|;p zJF>hJx#}@&EHeQq9#T<^r>2oKaknO^X7Oid(l%t=V&5vpsBt0QrnO1^eMVnS&g$~7 z;R%Zq#i6cD{qmbAb#g~dU`2y{RYikyu;e96 zQf!6hH#u-h3}_)GX6nkF;tmCSQ=&TC7I15*XG-94!K~H0g0Ixt5T<8g=gpU~lQ7cw z(Af3SP`3?}HKxAe)Y2evb}G@pn#h@D)rHuFnqU5d?>v)XidJNwN?mhaO%u%DtV!(0 z^IJQL^=(>jn8lkb9$q0X(tey`=lUL(|4fMb$vyKuiG;?Y{B|-fHj{$_*RgPn`D>Gl*E~X8DxV9O7zjpAu?&wvae+B{fWE@#>KAX}HXLf4TlcFaTpB5QA5e zDPeiY4;}K(=a#a!o}Xu`)xk}PDDJe^Mk`7rDvfwNWlD# z^-P~gS@`jr?zPl8QXxt2m_If=R2nNR*SV6Y-k)x|%eH^Z9E;jmFh6pfz=v_7EJBS0 zK)r|20}LTT1EPoUo6%@Te+nv729s*102n`^%7x^|6hm+=U3AJUeP~*x7_;AnrJOv# zJ%~5BCSX)oyw(yrwm9fPkbKW`0 zIpFRk@IteR5WFp4Rz~dC4hO$2u0=MGfymNhzmKa z>uZ1a`x%fl0VM_JRelOoP8yGq5zpuZ*YyAX8ITZ;UYW6B>FCUw(ZoD8qmNVB%Ivk5 zfsHuKxzhvA6GFmaJG_l?JRYtl9W~WN8VRYxr6iWpX8VXB0f%6k269otkIy928R39z zfD$T8j{g2`(hxE|GC5_FN6|f>vrCesqR4R+%7TYV-Z6L z=~EGOjusK+D91(DGM_+-1y#mn=K_km+>47B@jHYl-RX6W@c@fJY= zJi^v*o1|mAfI)JoLp zbab-BV}f=v#>R*e8rcK#%jKp!FhNB*%;~6;R0@T*)4k>9>{Cmg#>C8)Y_aTSrmhY2 z#i|ZG>#5WE)LwRRvf3(i|E^iL=OGqTcfTO5@+*&@{}4~$&F^5khTk`(86z#6)rQk7 z5|HIuNtWJGa=V~&%tSlh{p%4O$o=-RAA6i*OTMvkZU%fS&ru?dC7sc-o7ynEE~DkJ znE_T6dMC)=GBlpV{`i+vFy(U*4d2EZ3Eju_d8+h`ciQ6%!OnKOHy(wI(IU1cJexW! zc)E>&6Mx`9jm=L~F`66A+G42dfX8~W)?g)esnunjDhad%ttULXE%*GaxTnC}bpf08 z#A*-*e_+?k6V?Zwx}t)lMw9p}NlPj(=ka@1@I#Q=f-!hIG#!n{@m`#pQkyuEtLoZI z2O^Z9n=xQoD|<#=We~v6s|ep-e+)%7Sx@YI;$NOXc+N(vGo<`>9)!PtXb8Xl2hK1q z<8vk+?bffW{q%fCgB6NgZXccXv`gJGqta!3!+`0Y=_Ktb@az1yIxIYxheo0wClLVK zwW8!372S;ZQe~2?1mc}OyU=y>(N3YxJfOUWiczYLEQr_=*LKU33z%{pHPkm&w_l-+WDCK-pgvuE zW{?T0$fuz)Nyk*RD{&H0PGw`ivev0?nvAF{c96f#Ohk&L4|@)VPcRg4srJoc zHi(p2wcv?{xt;Iw?vXShp1yWek)XmI^t?IXbfVja(`p34q}AuIl=6>LCXeSfB5FOs zTRY+T@PSJ3d;$&TlM#K7BJp^~Y1a%~;{5~XIBhQN_##Jc1u3UbBhef=d402-sZI1y z<~Py3!_B$9e2s4$D6;a)ISD}>>`PzG((5N?-3zP7X_Lqe^xW#E%VQX~rm7fJD4I42 zweM=L!|+jVPv}+$-vsG@YtW@MDYa`fOB3%HauDN}uIo%D9dueFp22a}U-}sKeeZ!pi_SW*s zLubF*2HO35KuqA|b&@e3-`hkj!-EQwwKVCnk7^#7eKA?nX|L=DK|u<8 zUXOR8iUfx>R-nDr9}T@Yknhd*n^3}|8m}l%-DdNl_ki|2k};PX(Y0vYtK7FwzrA2R zX@Lw41(H~;)aas2uga&(W0vY94j+z?mnq_`rW`TQ(iDJ)YxB2nP9>;P+W!cA^l;ZE;ZFET&XR<*xJ1CvXfBypxRe!y3)8d#boTgJ@!=p9Q^IQP7e8pHfRYr z`va78@ntf=%giQ;aN)?}wJN+S^M%Pig}VLRREt&6;~zK&NqtH+(}jm1^$!d~(*X+u zmCnI?Kf`XcysO6yxQtexS68b0K{{VgKe7^_s+hUxFsHDBxbL9tEU#EX2ddf#9{On4 zR(U*F7hC=L@|o<<(&y89oyhHP;t`-bf!GCzA&W_$F2-^XlVpfc*`6> zdPwb|AGl-8$1dACKIvq|XYg$0N?=~8nLfHtsEpnERS6Vw+kn=WT%@wyeR35xYhZ;F z*e|Ez+hkf7-Txf}2ck)`WFZX+29dMoJwZ0-*JyF2d9OAHxIt?nLJs&e_`ySa;%-8n zT$*(YUq_>^U|l&l)CH{7rckvjfa2O{sGjX}skCL^QYd(_6m_|ssl7I@>Ax!ag{jeL zLYl9#{*V&3eu+DYQ}cM+ce+34c9+bgNgS{;<2W+VJ&7Q=!~18rUzS_v%XAC|;0HT9 zT;AcAY0X_WM%Yx0EL{FaY%?yJ6`FtrX#}R;ujlHM&=_JTv|T)iWD6B>w!lY8;i%dJcIY&6?doiF8tsTEXFS zf2d)<2|2{!53O7oD$#**5qIVp;lU4K<1YVLw1y| z=c(t`S9@ho2}Z`I#=~QgD5A_;@Gc1l%Bx@P%7xVB9!X5i+Ub$UuElID9Pc66@Ydc{ zTKv)<+HQ;+aG;1>6vM9wV%B}q{etv9tt(s-ytSDcIJBjPh6@j{INK)dgayV&GXgT0RHDl=M^WZ^t z=xIX`!n_sxOxgYV=FYG<@Sd7_d|5ap)7tF^yh+%o5<0k?gL1>7FM|w!kotswi2F3c zf_uc|i~kezEhsUkcR0JXPH9n0#{3T)nn{>hMc{X*(iQ#q>9~ZCGUx;~u$prN=J_ z>K^F{8tj|KY9agG145IucMYuGn#6eojduq`It_4`!&b&DC}lLsZp3u3qIq1nHnM&T z_MLJ8+|3b0sQR&E`~nhcNyG{-WHyhLq1wIA*gA_CK-#2}aN*?wv`AGkPOX%DR5-NZZ zp>6!^CYuS~b@9~`O^P4QCe7>-Y27#@NM%61hOdABa6Fb)@;#khKh{-AAq8Cr936A4hYxH~HOd%!>9WihT@x^pQ^qKwxcg+6G z9Na!!m~f~k^WCZ5mLg?USx&0ZGoVCAx@3Y>Hhb7p<;$xV8|;V7b<00+7}WZwwLCpWR0T+YC#qkjGRC1Iw{h$(|eohrEQnqsE^%H(t% zHAsaa;}4wGp;%$WejUY8HesQdUZNvKS3n+JDAJvP{PJQh z6F916KtYw9jfi&3|EYT_6%V;-sc-x@{VJ}Gul%{>jP6^XCdl=w$gf775FtEWhZ~O{ z5s7a|_dq^xh7F)DLT zy!{nS-6r_ZUpe;v{X3U@%h!QPm#g(oaR~%ufDQ`UjSA<>SUFuJ?>l!Xs8@hkqa&On z;>Y_^J~^z2ockR>hX4a6eagPA(<-aIweDB6b@ zoEsUeJ<~mjhsn6P-&CsHnIrpc$ez+}$R&=o%mDu@*ILZSUS1Nwi&SS&b@RPHO{SGg zb)8o|zCZ7hO95}2gFVT#q=lB_>fk~1dztbzHv+WYPpIT%0l23TPIo(`0 zyVDX*j$HXXcMhGe!e!j~k>7!K)UuJ5uVcX7bFD&-pqKDfqppa>Ou*CNJ;}_vc41)7 zR+F$`6Jwo_?~$x$n1~N)U_g+>KmAa~x@y1RJ9JAq1J>HCFDHJ`R%ku%%ISVs*V!OE zl^_X&m3~#cx9zX=pSn6uCgy~QM!A-&x@0wNqg6ba%>Xz;r*JmX!!%XOXoaDJDS_+#NlH3s8;s+qeE) zCI-c3s|Tn#Rf)VhF0??sn>s0AvIGi@HBx!m;F-VFDYAQpc;~R2$3+5Tamsx&S{r>G z^AFrq>H51lpEshpl>0~AjbaswwKw}EXw`F%n*OzI{Iawx`0c5k)!fb(KVsZ=A??p| zu~D8$Up`Tu>Q0_>ZJ`>F?DPg)oJnr!R8;A;zW&nr+aK`&BhRyYfa54Y5@w3`LC0fM z%a;uMH(q3GL>Zyqu9Qz?U<2FxM_3-&Q)|9cu*4i8&L*zvmlE5$+i$`59|t?; zzpIdUq6SJC|;N?YfcT}eJ2F#tYJpN^;y5IA?LpfMe&>PPb?pM>=5h!c1@#> zl!w*fvgO}D53UQdBCulWyO(m2m$ln}yP9O!KU_!-e!3U{>wefWhg^uhbX;M0m{{pO zSre=^?=!#x{n&mFj8-9^sZpS2nPjb1P6C+$rN8dckI3{FK%r9O?^bS+H+2OUl|WLmoT($x_|dbN!{+3Z;G!CCpyZ4c-D)T`517&I2V|H z4x6s#5is0t_Os4tiUL#HC5lI$~s=|4l#!7yRW-8oKe zISRRWxW}O^bh-)VELk>4Ij+TEKCQw&_g1ZMKgO(klFfEeZc#z}=J!ZQWRe2wm!j%u zGxVYwyfk(hP>}D{I51q(aX-_#>FQxoExuPWFbTg?bObRNlg&``G;MSHT&jbyA+k#Z zhRIUJUzfmesLvo+x_#Lb@=-+yK;YFz!D375bpqq{f&p5mfylSJ_D-!E8y_%|qo?;Bewf8mzUSgp0%LZgdz2X> zYj)pQ?wcKJr@{udX2fl55es~axWw+bT&m5@Q*3JNZn=f0nT?QT#-#c;a{cju?~u@) zLVI2s)0|BnL)+(<`+;8uV!3rT1~S37Fbl?A&iNK-0Apx%Fbqjadt1HsSDkHnO_KJT z07Cwsjp*l>w<SnxE)W7rE^(s45ttPNFSd7~viJ;Kx z<*tntpjEC>tN{Lxy_9~Z2C~*0`27^`$@pgldo3dHVGv(S|E4WBoaHilgDX z%7v6kub?0?R~`STw_fOScmF{4rd4So0ZHQDb@aVXWVMqb;82z>2DHV$lB=6UeL zTV?**>Xc+snxI_Q@*%pgLEkWk+gKmp*F*M!`@*2!Y|kcpIucch>A=nrW2vJmx(SAX?tIJhf&;QZzfi z!^S|aLT-9HTK!gwW$VRox+b!R&vId-^JrEaUT(H(L#j@#iX8g3JC_FrB~Jgl7uJF? zKEnc*BcZ`|!$`<~NuOct&u~cC$T(E*aXGmX@Tj>Z)Xfs}XRv5^+&(20ZsAjkOKP~! zqR?`vnb(?z6!b{BCfEHW(DbCU@aP5B^ZvU0S4wCUF@!&G$!N^93wz@cUJ`;Jv->ZV z1mr1piC*L`(V>NDH-1XAbjo{9vNMFPz5)e z2wnGWK0tVpo`+@?!$e_2|L*c^zToFVQC8PJ@@|0q2m;gW<$`T^_WQit=Q4*-_Ln|| z9kUZgqOG*ljAYIhb`CFvYxd;yl+sL0Do8=)tNFBwK;?hWMpDG!Ugnfj6Io_*)yo+esU&A8hCj0DHEK*)Ye+ilDLnouR}M9C(l@(!JbT! z^<3oCEdSmPPg<%G?m5$;=tqJfEwFO)ik@8EU*8Bm1O|%Ro(|CFPCQ)u5q!H8(`p7x zj7$TtCoHFwtXdifWm$qM{MBQ7`>vvF>*U7lw~H4BbJXJrJ?*5q0G3Rc%3~9_73qdr z+yjK8JMP3{++aG+A_M_?)%@puY-Jj0j**7o(7~uZrX5%uZeT)(o2Ke*2#;SC!Pfyi zQR*-ez236>40*tg? z^=o3&nq0hTrR}ZjVU=hEtY4}q2XebtgNac{)VeNYnhoi4CaRfzh_UO6lywS818W5= zre3D8_?L1~!b47O^ouz2S2$yMXOiN6u$5C*A!e_cuQcfCXarK?X5R`DsW2iUq+$Otj(`=r0`t%7Z> z(2bB6)vaS5kF|_VC2l43al@D3v$YpikIyr1_{&h!7=)EZ8jAA9iV!~tQr}Z#7`!`J zadZwZEJG_g86afL5fJ+hqaed+=WPJtLl%pTruT|%UdEFf2Rh=A2DVzjom$k@J}JF_ z;I?xAz!k{_Uj{$FVWoIc%-tL&rHk+hLk7WLwncWY)Z|^9USyU&nVXUPfolzJz)Xug zN^Tz*oLwj)uEY{_JurdsM&)xi$XpW(tt_=H*-gncHz-f6%j`Aab-sM)zSwKfbCO40 z(^4$<^3u$q)Bh231W)jjc82?7*2sW#g}$LGR}X1^#Z1QH#goOX2I zT&c_ozBsTgeK%sS9z0^e-7wh}Yd18BL$4!ft}4%DN|3xJ%WYQ?krG$zZ`QBc-=(Om z>l2<>6grCu8qm@gFQ^yN0{(%!V-HGepiko?GP4d1H?)#4B+1MDK>E}zr%&!I-Qm_J ze|ZvOK3Q*&KK)~EUzhrZPHY47x5BR$1z;zjOLfgA*NWLs4O5+P5r#i5W7*%^>ov7E z-H8Hme*-fnd`p?ln4aB_Q_!)SQDuo<>u5Kmnr5D~1;)iCfcz2!^0}M1p=K40$qp=4 zTT6o#N{Yc}f)cI4xys5pPI*lfX{kNvj3=oE_yhh_%4AmvsSa{_9Nu|1*D77Xw_i$$ ziCt^TgDekTrd1iM-_SCpz+gZj%wECk!DE;${VjlJlHNDJQW_sXf)8~eSL6IAKAzF= ze&0I5L29Zj{q4ichuJcbkY!IcGR0(~rkVIAFb{CyrdPC*JVyJNjH6mQpo7~nznLfi zSNw%cGAxp$QlgT3UD5K4;fPG{rMkDQMN= z>BcuZeh{!)N$X-$Z!b&Mr&H%p@wJyUFdCR}2Oj7$p$%3Nr4pCqm^ExS8s|Rg+AaGu zTzWA1rHU;FR4FW9`O|0XCmP~cU4O3I+dm%@@c(IuKP7Bu!q_%r#9`3ei9w!x$NG{c zpDANz?1pm8ip_EBr>&u&4+2KsqPqo`dv@Sjtp3RohfB zw<$DwyLs>1wyb3uO_&rE^xrhi1a8FX$kw52vC3XsHugixj}2$pVXRZbyB$gHyKLaS zS@bH=fv=WytErTp;b0~0GU!=IEwQtaE)_>dL35ej)xDmxaiBEafJ8ShvlroFwi?o2 zG03($F8wt@^5Mznw15l#EhcQw>ZH)ovW?;eNs?jt>2ku1+6wQiKX7Ykz|L13zl_~_ zHRz5^7{?Svzc&$4k2Q53Cyc`2IK>Xvy@~rR_n1@s2f2sSi}Gr8;1Z!Xt;iBl^& znVwqm+~Q#64UqAYw*k6J~X`1@WTY_B1|YZ{)(kO88s^3?xE;|)qC20(qRmcpSKCH#_qtH;~j z-!M%@hMjA-7tVRWOw0^B#6;~1c0VRh;;gQ}-% zgqKoP8UeM%Bp@Ck1_S4`n8=hzLfHT5<5`bTXq0DSSyu~HdWyOFGY-yJL#mp_3#qZK zGE#EIG&R(PDCWkzJWLF|zcZf`MY&NwkDkAvh_s^mv}0|@LP40Y45T_*6DDLcK02W< z4>Kd`BljItiZyU+B89L;Hv0L2-6Kd?hpc;ztrV4_n+F6vuswj__zCu==JV1uJOzdq zFF!mJ75cCRV^+IOz}>EQKvHgwZbfs_Q2T1 zn?#5_P@#&*%Vsx`VN^#(8K-5XR_AT3iT}l84{>ylZMsvR;?bZc@VE!3mc@H{Rv}A%4z$}A{?1mg`k2V z&dT|@a3}B_V5TInwb+n2X!{3_P;y|bFhL<<)ZT|pbFZDeY- zb;C=}UD}Ta{V^q5kWzw+gGCB)m%M;GR@c?5fgf9g%tH#T6}gPgSK^?SmJp8`=<^Tx zYu{>I%2YgAy#|nB-b$r2PPE^=G@jjTKh`Dkz99i|hEXK9&IB^i;LUpp=_4g5+-l^# zoe9C0BWiU#X@~Hg$_1P&Y70N0G|;cH*2GAtBZCLUb52eLp*-fg9TJ|tGkE?57Imjc z%MR3E5J#M~wtU@}BsV_YGz}>$XCT2-LeE`@rPv_Y24K2M>sK&#WhrAoI`rqlYnFM- zg4|Y;#_93wK!Ogh1vuwBdYRdYaFva4h^-VDh~DoX#t{9=avS{=d^<-6+tM{BP9*<0 zO>+5~eI@n5Ru1|>xVwS2(`Yt{IFNO>6>O*QfoqaH1uk9MLM~FFtPB=Od*(}(?mdZZ z%BKo@r~0E8>}Xh!b$8@_O+fV!FpfNJ=yaSB32;8|o% zI1hF`*e^}ko>7E+jtK#bg;e5WP3wmUP2g__)m5ADM zq}n-m+FN{IDClNy*V^wkb0*$Zqwj^fs@dY5S|+Va2%_m82Z*cOyo@eIot*`ByS%X3 zScMI!rJ*2M3Us^nl*u;X=L_SHilJOXO7%DUB6s|HnkS6M7F=Mw|1sNN7dTNT{oYhd zHs+JzSTQ9?y^5cTx*-|oq?GUK^s1LE*^6C~cvGcpwi$-w2hS9d&cxPI>0~Y-b8+}Y zcYiJpoOAsHhYi-ojQ8v(UBY9*SlTTx;M%--wS(AaLlJad1s(vnT++7lLd#H-6=v+t zbQyA8vs`Pb=^)jKc?!(ZN>tp=Y3l|fk|X|RpyjV`ZZUkp4j6&GfCJE_nlblwnFDOi z(=xWV`=L)cudIo*A9__9!dOa@?xAvXnE?Y@>~{%nw3MQHG<4#0 z4l@EFA<2Iw=lGG$wjrrMSAe>j6(F}*RJL7^cr&04Kq_b`!It*DasH`jGva*qS3=y9D$Z3*|nFS&g$Z>cwpAfPGR8>5j;v z*6ShC;qoucyM)}uzD!;Yk(!J$+Exqj11JwOROEU?3q1-{b_C`BRlLYgjFn8GMz54K z^9h#;k>@0akl3=exW7mP+rWlNBR#WrXZTF+59{lsB%uNYPlPGwhsb)(snX>`#_SNh z@#OFn2y_a=6Ud zC;en2rsdDRBk)i-6HGLnX`u{gG#Z&|_FKSIR*BZSXCLbU!Bg6zK$LR?Xyfwf^p z4d_=GI<>sL(@?xiO?+->@$U+|_V<_lJB6PAZHA$LnnCEFX87mg|4=jhuPgaKB*y=} z`2UEG{2w1r&@-nO*bX-7>;?G9QE_^L^ZUlLigGEy-&yLVNZ4Y|o#KXShdeX>4_x`% zch_rQpXGdqN_NGLr3OX#U@UkV#FZnwl?2Z8al4Q@G<8*F1QMLG3GTUI~w`|zUViK`0mw{QkXkp(*52QfYvE^wzlzH zw}V;BWDmF+p-x*cVB|H_0%82pO5MZlB5Ypng{`QKrhK5Ra;60qJzk(vmHT0$K#YDO z^+}_!-!O0Pb@_KCdMK`PQhwvO~&eYF{5)pzJqfq5L;mYo1j*5cy=+TY6))M zVFYf}RGj2MjBVR|p|{(r`D@gTIXA7r;)xi-;oK~-b5&Nb`NV?d#;Y8!wi!}&U;*31 zw`Fabvo4SN3|?Yiu%u2DNa;k0S*68(oXC$hXKR4|xblo(@&U)=k$SAJs7G3Eg?yyO?KB?oTtm@dr9_sI zuh~|UI4UNYfz6}@VVvF4l_0;%C}Q;qOlyp=?tGyww+>h1Fy@5of)&=c@M+GI({?yT zNKr)qFPu1Q)>b>~Vi_5k9k%j~*>pFZH_o0>YVYi|9PgRF6vy72G2vhVARd}{QRaS& zbm$tBfmRuKlCwm=oR^?6xPwjh!lzv^5;I_55_P&A)?URi9|(e572J(=0|WPTixV$i z<+c-l-;7*+rWNg|wW}egSB<+_5w^bRr@^5%+D$!rTJ?Ro@dFa~?Upb_@FRG#cn-5g zF1(1bg;g_no_9?lLWv_Xo2lqs!|930rynZIZ zYzzgE{S7X$&D#kTz1|R?%ruE@nz2I?Q8uO?n29AE{GK_tm74KI}&RYrIa37Lex%bn68S%jaSS zBoY)B%^?srR33OKraO4E%uO$ka5-eZ`*zMt9a&TyD_|P&RVgm?(qx5zE!c+$k7KDGF+hr6Cp)tth%FKN}qd~Qaw8-GP{4O{CG;oouvL5=U}Y2 z%V&AaIZl`jbNdZ*;xBb-W94#sNq=+Ov{&SIgUf2z9i^USMp{w&kl~3y8m@833OV_T zbS5_}V7!t64PQyn*CH*vDjtB%LbC3nRnDBhM*J3%3dc#g!VFH#&RK-!5BE#T>lUHM z!?gU2D%Sj6yq7ZkBifhgkCx?z93go7`cgrg7dNb`FEqI;bS3F_q@JI?WZ>x2T^7*! z*G4Qe9ogwHEKl3wLx*RM6ppo9iU}A_+jXtj^ChANVFd*_*a_0-w!Ty4Nda?&$wuaG%QeFl_oerG`~3@XnG{P*S%!{tT=0!@ zT$uLznv}G{`r#-5UzM-0RErw}B=gBY;i}XSmyY8XdhwbfZHVQ9t(_9p7KmN6toRRH z&hVB=pyWXvQbQ~bUm1D}5?s?&zN@pA4!&H+YE|=qgh5zE#NOLsle1lOGi!P)YpavO zv=pI|@YYg60I*);O0z_qMbB#6pVkN zO{77WC0nAr>=%-u^Lj>p3D0@H=J2q{cF@|cZmU?74ZZ-YrFHIg9{m?@KjiYNcdzX< zfw1ybe2G#@=&zlK_~+}|_YJ5g)J33}iV7>*QG$q^wx8z9sH}-JE~?naupt--->57+ z)j>M`m1ZZTq2m-?CBHNkAd32n>3zce8EIkG(OK*K0D#+wn#k!;)XHWuXH($P7LA0XygL1LiPei1)A+k816v<*7)aG z^>W8{TIDKH4W&HPdgXo*tv*(A!}JColk+!_hJvL9gw0v)aKCKCNcIKex5p3`K9=Ei zr+jg|L*PT0&A8x+Igrk;7)YzGUt(J;*mtGr@n)(q-`{KrE4y_%O`Q+8<+dij-%~2S zgi*j3+#p1Iz56uY9%GALnp@UHF}EJAte~tirBtzknmO673B)g(L#HEzpiE@??MSqh z-5m3W3Xs8usWtt9iM!*fXAU2(96fOnAR?qssoP#(g@lWg)>!9h@3BF}p4vZ=Zh<15 z?_Gx8fa?Tawwp|rqo5$u+h&%l{?*B(W>P>Npc3>7LgGu2N&lUimu_OTVT8b*=}b4N z-XJZ*JQ?I<#D2Wg#zr@b8IeE<| z)LTj_L&~6MHe|nQsRuDL_Bwc|SlM;9OSeqNt0o97>psKfJZ0&Vdz!+)M=Yp2xHb#L zD;S@Ee&yhj<|$I%y`H`S-InhSbXCb|cF+wEEM$k8ITZ`FA?#Y=<++*LO|I z80-jQTE3dUwA*LnW9kGWVfF|qnKuQE3%VN9FePtA-HYAgrYpN zFVpUt!JReYA3xqeIurnEUry`HlOt|REm7>2^YL}GXEl7obt1#ts3b}N*>1M_1d*b2 zJO$W9Uk8?KQCkvYNuM^SNS-2YO`pPEHjVxc+1$TcbB_LOr}_xlhUokM6$uAJ4_N_v ziN(SaX~O!>&cB=B$;)~rc#!8By36{+MgQOA|1WL8x-TcjBer_nX4;^Rto2caI0>P$ zTmag?PHM_KBlEMoq)uY}6$!{Orjd5B7r$3Zgc$P%@4(oWn@KNJd$uH16X|I3z1_fT zfNhpmg%Sp(t{Ce(Dg=XY}#sanP@QsZUvk-^v|X>?dhi^tWsA@Z_X=QjOX zFE84E;HZO#ZHP(7L6q3nwn!vu+pJoU7~JH`!)$i|=!>e+?ml93JEYlD*LOqz zS-J0;q)ti`V6%Y6jm)sm|NB$?p?mjpaDp)O_|k%SlzR3lZh1=XUt5 z-qmGs3jLjVD{Ys`tcwP=fGt94s#Rb%JxMBa98I63V;erzNCYyEQ!}?0Rk6+=I0Dk_ zETKxiEa8>r_kbPvV#;*q?X@T4GG{H~3>dWr7{3J3Fh;aj zn;L1H*fSp&+{U0!)C{(&ieqT3$i`j>?K{eJ+~a+I#zHXXA8s|rBxxk46omiDj#_Y{|+cR3Geop1) zdQE^THTSYP44ZQIOmq@NTu)PHMl14&Bh-V=1TF_VXS^Oo79lNccB-sE7j~fEw?fau z&>KI^h289%x6dOO@9p)6#OUkNMnlUYXD<|NLgk)G>>KUmIu0Y{M5(KJOi*j)rE#t= z0W(~q=;O{SBy9HkNeVmil5avmam(dPneu+t*#W2vz7Ug0=p4cBw2`;ba(;_m1i(|e zwx`O@_rntV@e;cB>od2cD-X=v^X78*mc?sT0joAH1YU`dBnK_XZo(roGyPBgD>mvD zgq9F$3*+#H(^N9NY^EEa%|$hlK*88{0mU2h%j>Nd>>4aO1ltzx*BR5QuT#YA$T{ps zGOy4%&%UJBRH2qDXr*+jJ2eUfE)_{6T9y#Oy`N>}AI4DeZLo4OaMqY6i54W3Ch^sg z%k|=DU&5`Qs~6;cnkqn;STz}IbS6iC+T^9R9 zNYSrJ9a*L&Qis&1G{yFmH`Cn@aXeyAH!WM%(0|2s=?EuHRgmE>n0=nf^Ad)mr4 zEa;SXYB6D2TbJkKhkqFe3|08t6Er@ZwLmY*!$vmSt5NXrB`pJVG^d)no?}>W*&2mM zIus61LJ1o;gJ07fXZ!cdHg{_CH5S8h8fK*=(#VPUY0|y&@;{%$?67EHjNT zCJ6CJp?soLTVnWOaoY%_#8cjd%Pt*coZ>lj6h_Gw0J|{bs6t&Y8z3eG(?>$IKNGXX ze-N_(@MuOqsvH)`>1Cj}`a{F)%X*8>;9bFte{e5rv;F8%SYijcYe>`!NG@o~dDKOU zOBsNT&7{f3S!r%+bvgsgZ~AL+`Tx~*o zWtAcITF8cO+4@>}rcYY@iANezT1C6T1SeI04+CVZ9rua3%)>~Ym22|(m7y|{T2iXV zDqfdKR{A*Vwhgg}R<*9oz7g6*4ztjyn~C2O@J$195$-@aYc(sIy*ndc=K9x$&gQwF z0%9kX$p&?iT}Q!rC9Z4pts8bfq!5Y$QK|FZPP%?)Smn0MB!fnBStoF3y%^hJo{5n; z-ApZsu-jcT3(wX-rGj3;_^=5PbmND+gk-rdP^rSMxSh=u?dE_-H}zoV3=>Ben;TfA zmQxMz?+D}L_91=^TUOj9c-Xe=-~o9%mdlzYq2V>Eg0_@sz7c+jDCS1;;&mFxi|~UP6{J-ki!hBeBvLth)NXR<466jY)fhFV!=#{Hl$`_&V73g4Sa%bp8Y^7e&|Q zmcYxS4+i2(k{W|050E3#SA6X*1ErruZKEo}Z< zQpcccedm!CTTrqUz13=}FXMjNdrls$?i_VHxnbVCVTG0kjsL>ldj>W2cKyPrfOH`= zDHf0f2pvKdRFEKq&=X2%f`Eh`iUJBMolvBOUIU>d5)=Z4D$=AYp-GkARjLj3e{$bv z&hz2SoO#d8`{|zN%nUms!`k)~_tfUW|ja+)PyuZs0n|XbQ<`xxIDN1$@E8 zFYWC^@Kv`dNMNs6tX9;f8`2{pRQjgZ8uzxo^t>6LH7mQ3MbR)(aHK^HO=FTSz22zI zelW-Kyp675~~NcP78lDMQGhGmpAH z0jmVne1Fw_IiX4BhT#&tDW&$5n1Ek&6y4t&%B+(SQ=CJWK5<83SP5^v9S$5^gN5=V z${tJ_T*5d3&3(}{s)DM^oEmB@&zji}VKJgylk#hkeWp&0UjMh6KBC(iIcf&m44`}T z-W@!04YSK*7BGJ%VpU`v1K5#6$bU$;Ztg8pJ|5aAQ#N6dAq5yjr~Q;3ZU0cGQS2L* z^YxaPmWlX9qT}_(ou5yh&;74ero_TUOvedv62||!K=4fDHqer1#gng>&m5dm_Ve9DwSBo5zc0EO?#fd?&tDfUKY2ytVczl{wEzpN| zHIq2&Wagt~EHy~lzGJE*RtL0aA-XCO~=sF`0!Pk9Dwc8)+ z(!AfTz_MP#(RMBSvGV@^7BZIIxw!sqgI=+P*-WmPIY>^}8k*VQbev#DTH}5;>h@N! z@N`R%Tw=TgQn(}G>;Opop||}X^V9kUJ&7*1Y+N~BoXifN)S_L!t5 zX_gs7)&`E3YSeBa+owm)%b%{r(Zn+=PKe}K2nMHI33-BAajuYO5!XKQ)Lqq&RX411ZV`5+JA^W(_Pc|YG$7y4OX&6fSL?tmJn?YMIu zR1O4bk-`>#v^#}4M;G{}Yw_1gj{z(>*hRGh*zV$b?30_aHsHo~0MOa-tT(FQQ+Uq# zbLL7~=7*@eq^Ki;_yg;R5pLyGz1b}@#;g1_e?@JI)8B$T$jz~#G1dHo2jb=tFHcJ3 z4@79YcdQH${J$rvwBh^PeLcdtLYS7BNmgBfo#Q&9h=GSSnF`19y2(TUh+u54oR;fP zIB~KY%`L19ygG#!N215Gj7YpMWK`s+D|g%6gk6&|tcqWTvySAVk#H8k=8Ew^!byep zk5NYwtEESBtV(8x>pJ(fsyY+dT*`f(l7p5Ih;F_UJ%Bv>U*;#j-+Zf3_oV1o zAv<)C8}aTHBI-;OQ6sA&vF(Nx86cFYs)=tsk1n5ZQkJ;LSU=g=f<(Yw2+WtpMTiTE zRmqT}e!YWyY>I_ty82(U@4uRI=-h{|rvkD`XTy5c-8Ur`a+LpJNa$Mse97^Hw2Vwx ze6bossK^N$lBX-k!m=hKc$1U5*WfwLVB;tokl#WmpJ!SCJU2Cdx!U&|uK`X9VRaB5 zzwGBJoyjWCEKtJG5`}_7uU8{$H4iJdOs>nx)R(ITbxBd#Z^nx%fKvlrp!NndGBeC> z&>%ov3*l;ho0O=HtdvVBG7`~1*|#DFv70PWC!MGR#Y!35usl0eH9{q`L%xxE@_U)V zR5k};8{pQ)>AC+^;z)wgYVh-;#)icHoQ`4m?RC3(IVRO7O=Ys=g=5 zJAGv?^2P}ZtQ{eI~ysCj64>KL&ZY)x|@qt8ed~9BR}&i*_`L#C9+mh zH;xppuD&3Jr&X--nc;AV&Ri=dRgVVQ*N%*18Vog1;`(z{mqm`rcO6Mt zIhQqdqi_eNvG`5i4K<%`BgOh~rN|(7r0*;aX@rhfb&U*|D_2nNd}gC6a`JbZtEuVQ zeT}#_t}*mmPVPUmt53LMh_WcNQIx_U2Q9$GhY5e%&5Eg40EYy2rOS^ro@&u4%4hT# zLB}a=xzdR2EC)d*;_Ym=flv8%L6^K2)D7B>-^vI)`OKN4&{h2wvMS{%QHpSoiM6-` zOwtQo=k};9$q4{b5)sUa0y*_<)RQ}(&vM|)W(E15S_#+X^KEZK6F&n>R5f~jvVu}S zfb1`W*~+6Ik@5uO_#;}Ye=ln-s#Y)X)dg!E8XvGtdAJK4`t(*n9S^*Q2VWLS#;L0V zElstO?iLSz$h??Vkey{W>0wS-Jfj5YfW=hiROd~-?B-%=A~)V7SjY-V9`NnP`%J&6 zT*CqRvx4UVNNq)tW@gc2r|LX)S)mkZ#T2@ZLNb`H0N}A7dMGQ%;X1LL(sA|2HRal2 z4KAH9%g=oA5F!CgZ0`28G3S2LIevvMSZWm4=dN?G5{xPdu?AhVYxHF83~->5P(W$k z)e7t57>R{DsGZx}ihpAut9`AuA%~E&LE~V84)FnpE4~yM0#A>@#Cu`Yu5$bEdNWbYcix zVfJ3e3yNlF`jK(qnF!Z;yzhCuxAy+aI(W9tvqfMCBC2CsYr~@N^&sS#wQhWD6%Wro zAKt0Eybyg}Q$a^lUOtz)E2oh#7gM+!Yb7yY`Q|PiJjO*h>7V=w{?}IVWMIt4d^87} zTdQ5J2#;!E)m6Q$_$!;AF&z;UBba}lN1!@JwNGm9){Tm){YjBCd`L@_q}D$S9EP1n zy8fJ2z<(Id?WgBjCt9WS*50GtWZ%4;{=-@0_<7gQE=qQd1Cp5f{KD7&ioL6d6ddJ% z_A0Bc@=O2MQf#=nAbMJkj{k=tRpX1z@2u2_vG*;!^bL^2$Z_>#3qj^P?J`A{^<0ii zqI$|MZDZWSsHPW%42r9G=9Y0cZyDsp6aWp-C3umFbv{g%9_KpwnYxYU_uq2GO11OH zr@Go08Tdyfx4yt$S~JF06^B)rY+uUuy`>-fO+T}Qhp>Y`=`8P&2ws&+;h|Rs=05G- zqE~6#0I%+RsQ(?r*qG98-4F7Ikn*dFxZs#r&+6CK0$~f%)q||KcL>e^v-S}#yNsy- zYVyUVbq}6PbT8lX;2x#Xb|o$AQf2JKYAtih&_^+MqGs^XpS*u>44&}lIO%1DCNgZ1 z9%>7``FsJURq=FR#{Hp|EMzxG1@MI;EP)}ws)OY$EJd=HyfQcjs9ov8^64g)?T?3& zHRY5v)s@Fym$&TZ*G%fe!>2Fix_bC|-HTyPG3kaS99bqB3QW>4Q0dSb&109GkfLAx39|h{fus9%05W4Jzqpg zcYnK|%MIdjWD>s1WrNiS4({3fYPf23A*+)s70YIuVNLy?H)NVSOI}MMelh(2_=z!n zzQ6W{Szh%76$xfr<{B2`Q7=2IyG!iuE)!Vf?kEf=s2k+Y!KK4^0;5(^#|^-DLIl~! zN(!aiR5!iH;p=-bD{@tgw{el6}k8pkHb&kRt!AtnY1n}S@AJ}h5HZ9BZR zkqvxiK&Tsg7Ur)>x0y<0Inu8QvqyZ(Fo;hy0X_H3A<;E(4zZ2QMmu88Q!sfnCwR!B z3TJLgm-zAre$yK}I1}d@3XJ$#5#i){e)f@p z9#|t~PvD%cN^oquFfrCEjW|q;J=WJsL89O9#xpv%j1O6fP`^g$=C#aFQ>*7UVL_*2 z=Z!Ld`LygBf^V8#C-^53-+X0wEC%T$R@-P$kE}KsXEY-W6L4tw%9repyLLl(>i16A zr^)6NE$L;p+BXLMU#sW)I;ftZdY*aLSJag@yE;C)WYIix#XIv`_3@RD|MpA!@otc% z*c^Iwyx*VYpM*uAw=3CplZU8xDFf!#>BpJxsf-z2%NifqaGtq%d2UM=pvDel>E-Iu ztjygNJeY0ODY!4I4>aiaUelLxC^==9idV3Z*U|YPCqbEtS+ontr{?oMl&MJxf>~!J z>3M}T$8~}@v-2QcTcyNGHZYMi?w}=3pWoI1624j}ZH?k%lC&o2!h~1jG$kPC?wg5r zlM6&IF$6z#RmTaYz?*jsT>yGvO`je`qaA#?pAtdHDnz^WL)_u zu(qPvM9oaS5v^i@KdEGg_KBWNFUZ2QfMYtvk%B-d6!G;h9ofCP2AR)Y1u^&K`}Fu${g7#2}00C6#p}m{@niLVNBPKYF`7 z*DWUd`z5bxBe+dUUlsO@!0rK3&EN26gDN)Ee#zzqSPrTU>1UMm~iOL498sH|S}xS4~IF?E%Z zW@qd%`~kg2v@>j0~)_=)sqWh)* z*I+grJeqG3KCPL_3-wLDdC;NM=)X{x>}&tsdsW2x&+L!?7yQ3}Ae$^U6OhBt|L@uT z|N3q&2gF9)HhZo9lXr)sekL={6kIB`wT1YH0m3RJ1t$2B(cixD03}6SeaOZm7sVkv zC-)GwibRQkL>qk9ATBD$KqlhgV>smiuV5*yxc)%yH(`Wo#va&APo>4ZhqJ0?Ar+FXyKwo9-5VL*LbFDaPcTXaNE@XYRl5k)_w`+xVFFMmxTCF2v%Qy{f=6B z#4-YEPqK^=sTbR6=qTdrVj z?kM+KNMrRIG6EZd2oPF_+)LK5Gb+fo8u<1&rckDc6z>1II=mD$6(<% zb#bx8zn}=sWD>{uR&TIcHA&O=p~NNEvA3*oiH)9Q=~YWGfhSySIs@aUyqJZvgH%U~ zbtmhf87Jl!x;QU|#20+8QMr6#?fft55W85@6zl3?9oZ z;xYK$Io4hqNX%%@c7(qi=Jd^JR%=H*?V68!REG>i?XAriT@sV7i{6z?f6T(Ewk6x>7p|evCMExdf}Z5 zaFzkIu{NtWX)ONE9KYXUw|s6!+N&yuu)G{dkbri-*o$hS+?SX7Tc|31Rq^^mj(A$; z8Hm~WJhXZ0mnwLdfIzMA zPb|eN?7roEX29AtWoGjFZ#O+0{1Pil?~4T;^^}~U`S_ZZf88vv-a6XY+NscXZeaX{ z(mwyaoee;~_r&;p#Z=YeC}=*7QsI2}SxX~O-j~9Zs*#Rqi7;}mztPjy>etlGHu&km z`na}Nu7avqY_XdIB11yS>E3O8Z-El1q#bU2J#;s*c90P9Qf@|yxDC_F^u*Qrxjgw* zr?>ym{P=-!HDbd_o=34;dG(I$B*p;O=1CQ-Ba1HCKu{czFvrb*7(y-bb92zKIVNYc zX8<-cw)u{lt>awC*9?(*U>igkL*H-5y`JiF7<^uy zdV0CVh8|M?+pSjbemG@tW^{14u;*L;K}IYRa9Enkj?=M_)C!LHE+=qF1v(N(O|U)T z{Caff^EqE*L{*8;$JGm$xJAr7h?~3#e~Q%Ade%M+vp@69G-1O8sD1Uw+TbU14>?>( zR+}-Y6H-H2+RtT+Wc zZNB-_zUrDCI+Vx5hZlD%@t|Kdhh^gO^q}hb#={id&yUN^A300?_X}wB7d!sH4sUpE|(?{kVwx&w(Z;maiozA8`Ns&nv8u9)+k<|mu$TS zv`)0GOFM=-3X$C7^h@sk(ySrA34NwLb2Xi-Ud(cb7%biyFr9#$o#*x`1XhN!fxCIR zMiyDqX{vaiLdz??y3lU&nQx-Eec$Q<;5flz&P2(?Nxw!3&*M-zMJ-2X*MAtq8l7pT zS;Sel)q0j$NtXLb;X4Z*9ld>7iBtF4rgRGmeZPfjliX(599wPpz=G&eqsc3G24}|E z6|;ArZy&Rl^9W8F)~%B)Dlsx{e*_gXhf$A#1GQ}PtreD5G`B`k>0-r?DaBuMC7Hg9 z2;>-6XR71;Hri}4w6xHfz$x6LmheD z6WZQ7yL*d@ZC5he)}mjZk8L7>H-hgdSHWa$GvD5)bbm1#QI|EtOv7Tdw1j{*#a|J2 zZ}e^A10LSU9{v0NlKKf+8g}w-uRkkIYSeDSN~-zhEhb~S-3x9rNi*+fp4y8kn(s@y zjl?Pcq`{~pJyE|Zf%brbk>+j(T>biF)kx!&j!ofh*Cf+I*Gan>%){GmXVf2k!EItr zPCB#3jAK67acXsEGWb!qtBF7J0ge(5Ll=c!CpOnqiQ=eZi+*m3qP7ZcqB|w|BmvPE ztA@M!tKXjmDyY662Uva^`BY|GP=dBtNXyXNNc&Y2j!T?%rjGz^+qXXqbi#n zksZl4u)oa2J=`^rNbz#s;A zJ1!z~b3I{3@YpIojqf!h0F`Lv)6wA}ssShjAi-8C`e6(d_I+t^f z%9PM=W9TH zUo9)XPh7IG#8Wc+HN~go8tWv~bXj1<^_!1z&GGywsKYZwv(L^;f8QI6i4QYXK7998 zJT?2bQJX(=^4|9zwr~8m*}m&%HpsK6t>+$6Dk#P+Ar3bO%Q@5~h!?Wz^83DodB}`R z0&0|$V*%@=|EY{l+0be=tQIkoPl75fvbabbT-Q~OFY@;vq zN_O0Bqdr00>Ex~FntR_bFu#aCQ63X!$F|UH|K?%&q%iaB8NV!QbgYi~*?Q%jl)IOG zH9D%VE{!;9IT;)WAtaYnu*NKjivaEJVt`CPPMz>P_9l>|tG7od$=CD3JF!^RDH{nP##c3)YD$ z!ODv1z{VP6^4ZenMUGp;bI0+VZ?oK4C(6hvV5g2;J%cE`x&=BT_;!k2*KnC;9=p+> zvSyD)5k9`ZtnXi6lUI?yYj({r&Z&Ns+2T|U*>}dDUBAB?e@r`*H^cgH&YxQlrKfvh zEtRNm7>G$^eXwz9R*O?yD15r)^A{8NrM^5S75NxLfh!q>nKmLesAYyk0^evBa-L%A zsxh) zEq^ok_rfX3E(UvHt5&!_DA6{Ww_)$gwl7`}OE7j)yIkEM;F!k>5=}#|Nfrd@8NAs~ zOZWWrf>dY{o2ejW(l2!`rPcl`01GI^d1`=N8xvbCDhZLP>3K_E)C^Jg@OU2asYIwl zP0G~`IxkejPD0tS7{}baX_%e+Si%zJ6*j}ebG9SPN>^*DBuM^8o(wDi#3~75Kr&=x z1!NZHaHYm1Nw7*_Q6Z*|#nR3`TQIP(gH=*Ck30?X5pT5Zv5$(LCeNFBHZKUwS=NA+ zEfFq5Tc|s1QLySpyyan#oXa;L5ZUMM!R%0Aq&_@9cyKK$hZ#2zu8Ci4Dv7+c0l)xt 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 O{@DZ9C;ia>e-i*~FhZ{Y literal 167850 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